From 767b329d5c7a21a00e8d3eed06ff0ddabde344e3 Mon Sep 17 00:00:00 2001 From: ShaneBee Date: Tue, 14 Apr 2026 12:45:19 -0700 Subject: [PATCH 1/3] build.gradle.kts - switch to pre-release --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index e5a691e..73cb8b4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,7 +9,7 @@ java.sourceCompatibility = JavaVersion.VERSION_25 group = "com.github.SkriptDev" val projectVersion = "1.6.0" -val hytaleVersion = "2026.03.26-89796e57b" +val hytaleVersion = "2026.04.09-7243e82f8" // You can find Hytale versions on their maven repo: // https://maven.hytale.com/release/com/hypixel/hytale/Server/maven-metadata.xml // https://maven.hytale.com/pre-release/com/hypixel/hytale/Server/maven-metadata.xml From 529362ea632d298d497795a4ea4eb009c7d510f6 Mon Sep 17 00:00:00 2001 From: ShaneBee Date: Tue, 14 Apr 2026 12:47:23 -0700 Subject: [PATCH 2/3] Start work on prepping for Hytale's Update 5 --- .../skript/api/hytale/objects/Block.java | 58 ++++++++-------- .../skript/api/hytale/objects/Direction.java | 6 +- .../hytale/objects/UserMapMarkerOverride.java | 6 +- .../hytale/utils/EntityReferenceUtils.java | 2 +- .../skript/api/hytale/utils/EntityUtils.java | 9 +-- .../api/hytale/utils/LocationUtils.java | 3 +- .../skript/api/hytale/utils/PlayerUtils.java | 12 +++- .../api/skript/event/PlayerContext.java | 6 ++ .../skript/api/skript/testing/TestRunner.java | 9 +-- .../api/skript/testing/elements/EvtTest.java | 7 +- .../skript/api/utils/VectorUtils.java | 20 ++++++ .../elements/command/ScriptCommand.java | 3 +- .../player/CondPlayerHasPermission.java | 5 +- .../conditions/world/CondChunkIsLoaded.java | 8 +-- .../elements/effects/entity/EffDropItem.java | 7 +- .../effects/entity/EffInteraction.java | 7 +- .../elements/effects/entity/EffRide.java | 12 ++-- .../elements/effects/entity/EffShoot.java | 6 +- .../effects/entity/EffSpawnEntity.java | 8 +-- .../effects/other/EffSendMessage.java | 2 +- .../effects/world/EffChunkLoadAsync.java | 9 +-- .../elements/effects/world/EffParticle.java | 14 ++-- .../elements/events/entity/EvtTeleport.java | 6 +- .../events/player/EvtPlayerBreakBlock.java | 2 +- .../events/player/EvtPlayerDamageBlock.java | 2 +- .../events/player/EvtPlayerMouseClick.java | 6 +- .../events/player/EvtPlayerMouseMove.java | 6 +- .../events/player/EvtPlayerPlaceBlock.java | 2 +- .../expressions/block/ExprBlockAt.java | 7 +- .../expressions/block/ExprBlockIterator.java | 19 +++--- .../expressions/block/ExprBlockRotation.java | 2 +- .../expressions/block/ExprBlockSphere.java | 7 +- .../block/ExprBlockTypeAtLocation.java | 11 ++-- .../expressions/block/ExprHighestBlock.java | 11 ++-- .../block/ExprTargetBlockOfPlayer.java | 2 +- .../entity/ExprEntitiesInRadius.java | 10 ++- .../entity/ExprEntityHeadRotation.java | 5 +- .../entity/ExprEntityVelocity.java | 5 +- .../elements/expressions/entity/ExprName.java | 3 +- .../expressions/other/ExprCoordinates.java | 66 ++++++++----------- .../expressions/other/ExprDistance.java | 2 +- .../expressions/other/ExprLocationOf.java | 9 ++- .../expressions/other/ExprLocationOffset.java | 6 +- .../other/ExprLocationRotation.java | 7 +- .../expressions/other/ExprVector3d.java | 2 +- .../expressions/other/ExprVector3f.java | 2 +- .../expressions/other/ExprVector3i.java | 2 +- .../player/ExprPlayerRespawnLocations.java | 2 +- .../ref/ExprComponentsInRadius.java | 9 ++- .../expressions/ref/ExprRefInRadius.java | 9 ++- .../world/ExprChunkAtLocation.java | 7 +- .../world/ExprEnvironmentAtLocation.java | 45 ++++++------- .../world/ExprRelativePositionResolve.java | 14 ++-- .../expressions/world/ExprWorldSpawn.java | 13 ++-- .../elements/functions/DefaultFunctions.java | 6 +- .../elements/sections/entity/SecDropItem.java | 7 +- .../elements/sections/entity/SecSpawnNPC.java | 9 +-- .../sections/player/SecPlaySound.java | 6 +- .../elements/sections/world/SecParticle.java | 18 ++--- .../elements/types/DefaultConverters.java | 8 +-- .../plugin/elements/types/TypesPlayer.java | 3 +- .../plugin/elements/types/TypesServer.java | 35 +++++----- 62 files changed, 341 insertions(+), 271 deletions(-) create mode 100644 src/main/java/com/github/skriptdev/skript/api/utils/VectorUtils.java diff --git a/src/main/java/com/github/skriptdev/skript/api/hytale/objects/Block.java b/src/main/java/com/github/skriptdev/skript/api/hytale/objects/Block.java index 625d694..8a0ae3e 100644 --- a/src/main/java/com/github/skriptdev/skript/api/hytale/objects/Block.java +++ b/src/main/java/com/github/skriptdev/skript/api/hytale/objects/Block.java @@ -6,7 +6,6 @@ import com.hypixel.hytale.component.Store; import com.hypixel.hytale.math.util.ChunkUtil; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3i; import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType; import com.hypixel.hytale.server.core.asset.type.blocktype.config.Rotation; import com.hypixel.hytale.server.core.asset.type.blocktype.config.RotationTuple; @@ -29,6 +28,8 @@ import io.github.syst3ms.skriptparser.util.color.Color; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.joml.RoundingMode; +import org.joml.Vector3i; import java.util.Map; import java.util.function.Predicate; @@ -55,11 +56,11 @@ public Block(@NotNull Location location) { if (world == null) { throw new IllegalArgumentException("World '" + location.getWorld() + "' not found."); } - this(world, location.getPosition().toVector3i()); + this(world, new Vector3i(location.getPosition(), RoundingMode.FLOOR)); } public long getChunkIndex() { - return ChunkUtil.indexChunkFromBlock(this.pos.getX(), this.pos.getZ()); + return ChunkUtil.indexChunkFromBlock(this.pos.x(), this.pos.z()); } public WorldChunk getChunk() { @@ -72,7 +73,7 @@ public WorldChunk getChunk() { } public void setType(@NotNull BlockType type, int settings) { - Runnable r = () -> Block.this.world.setBlock(Block.this.pos.getX(), Block.this.pos.getY(), Block.this.pos.getZ(), type.getId(), settings); + Runnable r = () -> Block.this.world.setBlock(Block.this.pos.x(), Block.this.pos.y(), Block.this.pos.z(), type.getId(), settings); if (this.world.isInThread()) { r.run(); } else { @@ -95,11 +96,11 @@ public void setRotation(Vector3i rotation) { BlockChunk blockChunk = chunk.getBlockChunk(); if (blockChunk == null) return; - Rotation pitch = getRotationFromInt(rotation.getX()); - Rotation yaw = getRotationFromInt(rotation.getY()); - Rotation roll = getRotationFromInt(rotation.getZ()); + Rotation pitch = getRotationFromInt(rotation.x()); + Rotation yaw = getRotationFromInt(rotation.y()); + Rotation roll = getRotationFromInt(rotation.z()); int rotationIndex = RotationTuple.of(yaw, pitch, roll).index(); - blockChunk.setBlock(this.pos.getX(), this.pos.getY(), this.pos.getZ(), + blockChunk.setBlock(this.pos.x(), this.pos.y(), this.pos.z(), blockId, rotationIndex, 0); } @@ -109,7 +110,7 @@ public void setRotation(Vector3i rotation) { * @return Rotation of block represented as a Vector3i(yaw, pitch, roll). */ public Vector3i getRotation() { - int blockRotationIndex = getWorld().getBlockRotationIndex(this.pos.getX(), this.pos.getY(), this.pos.getZ()); + int blockRotationIndex = getWorld().getBlockRotationIndex(this.pos.x(), this.pos.y(), this.pos.z()); RotationTuple rotationTuple = RotationTuple.get(blockRotationIndex); int yaw = getIntFromRotation(rotationTuple.yaw()); @@ -138,8 +139,8 @@ public Color getTint() { BlockChunk blockChunk = getChunk().getBlockChunk(); if (blockChunk == null) return null; - int x = this.pos.getX() % 32; - int z = this.pos.getZ() % 32; + int x = this.pos.x() % 32; + int z = this.pos.z() % 32; int tintInt = blockChunk.getTint(x, z); return Color.of(tintInt); } @@ -152,8 +153,8 @@ public void setTint(Color color, boolean updateChunk) { BlockChunk blockChunk = getChunk().getBlockChunk(); if (blockChunk == null) return; - int x = this.pos.getX() % 32; - int z = this.pos.getZ() % 32; + int x = this.pos.x() % 32; + int z = this.pos.z() % 32; blockChunk.setTint(x, z, color.toJavaColor().getRGB()); if (updateChunk) { updateChunk(); @@ -169,14 +170,14 @@ public byte getFluidLevel() { ChunkColumn column = store.getComponent(columnRef, ChunkColumn.getComponentType()); if (column == null) return 0; - Ref section = column.getSection(ChunkUtil.chunkCoordinate(this.pos.getY())); + Ref section = column.getSection(ChunkUtil.chunkCoordinate(this.pos.y())); if (section == null) { return 0; } else { FluidSection fluidSection = store.getComponent(section, FluidSection.getComponentType()); if (fluidSection == null) return 0; - return fluidSection.getFluidLevel(this.pos.getX(), this.pos.getY(), this.pos.getZ()); + return fluidSection.getFluidLevel(this.pos.x(), this.pos.y(), this.pos.z()); } } @@ -187,7 +188,7 @@ public void setFluidLevel(byte level) { ChunkColumn column = store.getComponent(columnRef, ChunkColumn.getComponentType()); if (column == null) return null; - Ref section = column.getSection(ChunkUtil.chunkCoordinate(this.pos.getY())); + Ref section = column.getSection(ChunkUtil.chunkCoordinate(this.pos.y())); if (section == null) { return null; } else { @@ -196,17 +197,17 @@ public void setFluidLevel(byte level) { return null; } - Fluid fluid = fluidSection.getFluid(this.pos.getX(), this.pos.getY(), this.pos.getZ()); + Fluid fluid = fluidSection.getFluid(this.pos.x(), this.pos.y(), this.pos.z()); if (fluid == null) return null; byte fluidLevel = (byte) Math.clamp((int) level, 0, fluid.getMaxFluidLevel()); - fluidSection.setFluid(this.pos.getX(), this.pos.getY(), this.pos.getZ(), fluid, fluidLevel); + fluidSection.setFluid(this.pos.x(), this.pos.y(), this.pos.z(), fluid, fluidLevel); } return chunk; }); } public Fluid getFluid() { - int fluidId = this.world.getFluidId(this.pos.getX(), this.pos.getY(), this.pos.getZ()); + int fluidId = this.world.getFluidId(this.pos.x(), this.pos.y(), this.pos.z()); if (fluidId == -1) { return null; } @@ -220,7 +221,7 @@ public void setFluid(@NotNull Fluid fluid, @Nullable Integer level) { ChunkColumn column = store.getComponent(columnRef, ChunkColumn.getComponentType()); if (column == null) return null; - Ref section = column.getSection(ChunkUtil.chunkCoordinate(this.pos.getY())); + Ref section = column.getSection(ChunkUtil.chunkCoordinate(this.pos.y())); if (section == null) { return null; } else { @@ -234,18 +235,18 @@ public void setFluid(@NotNull Fluid fluid, @Nullable Integer level) { if (level != null) { fluidLevel = level.byteValue(); } else { - fluidLevel = fluidSection.getFluidLevel(this.pos.getX(), this.pos.getY(), this.pos.getZ()); + fluidLevel = fluidSection.getFluidLevel(this.pos.x(), this.pos.y(), this.pos.z()); if (fluidLevel <= 0) fluidLevel = (byte) fluid.getMaxFluidLevel(); } fluidLevel = (byte) Math.clamp((int) fluidLevel, 0, fluid.getMaxFluidLevel()); - fluidSection.setFluid(this.pos.getX(), this.pos.getY(), this.pos.getZ(), fluid, fluidLevel); + fluidSection.setFluid(this.pos.x(), this.pos.y(), this.pos.z(), fluid, fluidLevel); } return chunk; }); } public void breakBlock(int settings) { - this.world.breakBlock(this.pos.getX(), this.pos.getY(), this.pos.getZ(), settings); + this.world.breakBlock(this.pos.x(), this.pos.y(), this.pos.z(), settings); } public void damage(@Nullable LivingEntity performer, @Nullable ItemStack itemStack, float damage) { @@ -268,7 +269,6 @@ public void damage(@Nullable LivingEntity performer, @Nullable ItemStack itemSta chunkStore); } else { BlockHarvestUtils.performBlockDamage( - performer, performer.getReference(), this.pos, itemStack, @@ -312,8 +312,8 @@ public void setBlockHealth(float health) { if (!blockHealth.isDestroyed()) { Predicate filter = (player) -> true; - world.getNotificationHandler().updateBlockDamage(this.pos.getX(), this.pos.getY(), - this.pos.getZ(), blockHealth.getHealth(), health, filter); + world.getNotificationHandler().updateBlockDamage(this.pos.x(), this.pos.y(), + this.pos.z(), blockHealth.getHealth(), health, filter); } } @@ -326,16 +326,16 @@ public void setBlockHealth(float health) { } public @NotNull Location getLocation() { - return new Location(this.world.getName(), this.pos.getX(), this.pos.getY(), this.pos.getZ()); + return new Location(this.world.getName(), this.pos.x(), this.pos.y(), this.pos.z()); } public String toTypeString() { return String.format("[%s] block at (%s,%s,%s) in '%s'", - this.getType().getId(), this.pos.getX(), this.pos.getY(), this.pos.getZ(), this.world.getName()); + this.getType().getId(), this.pos.x(), this.pos.y(), this.pos.z(), this.world.getName()); } public String toVariableNameString() { - return String.format("%s_%s_%s_%s_%s", this.world.getName(), this.getType().getId(), this.pos.getX(), this.pos.getY(), this.pos.getZ()); + return String.format("%s_%s_%s_%s_%s", this.world.getName(), this.getType().getId(), this.pos.x(), this.pos.y(), this.pos.z()); } @Override diff --git a/src/main/java/com/github/skriptdev/skript/api/hytale/objects/Direction.java b/src/main/java/com/github/skriptdev/skript/api/hytale/objects/Direction.java index 9e63fc3..cbfb895 100644 --- a/src/main/java/com/github/skriptdev/skript/api/hytale/objects/Direction.java +++ b/src/main/java/com/github/skriptdev/skript/api/hytale/objects/Direction.java @@ -2,7 +2,7 @@ import com.github.skriptdev.skript.api.hytale.utils.LocationUtils; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3d; +import org.joml.Vector3d; import java.util.ArrayList; import java.util.Arrays; @@ -53,7 +53,9 @@ public String getVariableName() { private static Location create(Location location, Number offset, int x, int y, int z) { double value = offset.doubleValue(); - Vector3d add = location.getPosition().clone().add(x * value, y * value, z * value); + + Vector3d position = new Vector3d(location.getPosition()); + Vector3d add = position.add(x * value, y * value, z * value); return new Location(location.getWorld(), add); } diff --git a/src/main/java/com/github/skriptdev/skript/api/hytale/objects/UserMapMarkerOverride.java b/src/main/java/com/github/skriptdev/skript/api/hytale/objects/UserMapMarkerOverride.java index c5e870c..2caab6b 100644 --- a/src/main/java/com/github/skriptdev/skript/api/hytale/objects/UserMapMarkerOverride.java +++ b/src/main/java/com/github/skriptdev/skript/api/hytale/objects/UserMapMarkerOverride.java @@ -1,9 +1,9 @@ package com.github.skriptdev.skript.api.hytale.objects; -import com.hypixel.hytale.math.vector.Vector3d; import com.hypixel.hytale.protocol.packets.worldmap.ContextMenuItem; import com.hypixel.hytale.protocol.packets.worldmap.MapMarker; import com.hypixel.hytale.server.core.universe.world.worldmap.markers.user.UserMapMarker; +import org.joml.Vector3d; import java.util.ArrayList; import java.util.List; @@ -20,8 +20,8 @@ public class UserMapMarkerOverride extends UserMapMarker { private final List contextMenuItems = new ArrayList<>(); public void setPosition(Vector3d pos) { - this.blockY = (float) pos.getY(); - super.setPosition((float) pos.getX(), (float) pos.getZ()); + this.blockY = (float) pos.y(); + super.setPosition((float) pos.x(), (float) pos.z()); } public void addContextMenuItem(ContextMenuItem contextMenuItem) { diff --git a/src/main/java/com/github/skriptdev/skript/api/hytale/utils/EntityReferenceUtils.java b/src/main/java/com/github/skriptdev/skript/api/hytale/utils/EntityReferenceUtils.java index 7c42afa..1024d0c 100644 --- a/src/main/java/com/github/skriptdev/skript/api/hytale/utils/EntityReferenceUtils.java +++ b/src/main/java/com/github/skriptdev/skript/api/hytale/utils/EntityReferenceUtils.java @@ -5,7 +5,6 @@ import com.hypixel.hytale.component.Ref; import com.hypixel.hytale.component.Store; import com.hypixel.hytale.component.spatial.SpatialResource; -import com.hypixel.hytale.math.vector.Vector3d; import com.hypixel.hytale.server.core.entity.Entity; import com.hypixel.hytale.server.core.entity.entities.Player; import com.hypixel.hytale.server.core.modules.entity.EntityModule; @@ -14,6 +13,7 @@ import com.hypixel.hytale.server.npc.entities.NPCEntity; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.joml.Vector3d; import javax.annotation.Nonnull; import java.util.ArrayList; diff --git a/src/main/java/com/github/skriptdev/skript/api/hytale/utils/EntityUtils.java b/src/main/java/com/github/skriptdev/skript/api/hytale/utils/EntityUtils.java index 04ef05e..1ace595 100644 --- a/src/main/java/com/github/skriptdev/skript/api/hytale/utils/EntityUtils.java +++ b/src/main/java/com/github/skriptdev/skript/api/hytale/utils/EntityUtils.java @@ -8,8 +8,7 @@ import com.hypixel.hytale.component.Ref; import com.hypixel.hytale.component.Store; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3d; -import com.hypixel.hytale.math.vector.Vector3f; +import com.hypixel.hytale.math.vector.Rotation3f; import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType; import com.hypixel.hytale.server.core.asset.type.item.config.Item; import com.hypixel.hytale.server.core.asset.type.model.config.Model; @@ -43,6 +42,8 @@ import io.github.syst3ms.skriptparser.util.Pair; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.joml.Vector3d; +import org.joml.Vector3f; import javax.annotation.Nonnull; import java.util.UUID; @@ -249,10 +250,10 @@ public static > void tryRemoveComponent(Entity ent } Vector3d position = location.getPosition(); - Vector3f rotation = location.getRotation(); + Rotation3f rotation = location.getRotation(); Holder itemEntityHolder = ItemComponent.generateItemDrop(store, itemStack, position, rotation, - velocity.getX(), velocity.getY(), velocity.getZ()); + velocity.x(), velocity.y(), velocity.z()); if (itemEntityHolder == null) { return new Pair<>(null, null); } diff --git a/src/main/java/com/github/skriptdev/skript/api/hytale/utils/LocationUtils.java b/src/main/java/com/github/skriptdev/skript/api/hytale/utils/LocationUtils.java index 267fb43..b32eedc 100644 --- a/src/main/java/com/github/skriptdev/skript/api/hytale/utils/LocationUtils.java +++ b/src/main/java/com/github/skriptdev/skript/api/hytale/utils/LocationUtils.java @@ -1,6 +1,7 @@ package com.github.skriptdev.skript.api.hytale.utils; import com.hypixel.hytale.math.vector.Location; +import org.joml.Vector3d; /** * Untilities for {@link Location Locations} @@ -16,7 +17,7 @@ public class LocationUtils { */ public static Location clone(Location location) { return new Location(location.getWorld(), - location.getPosition().clone(), + new Vector3d(location.getPosition()), location.getRotation().clone()); } diff --git a/src/main/java/com/github/skriptdev/skript/api/hytale/utils/PlayerUtils.java b/src/main/java/com/github/skriptdev/skript/api/hytale/utils/PlayerUtils.java index 5453f58..9b87fa8 100644 --- a/src/main/java/com/github/skriptdev/skript/api/hytale/utils/PlayerUtils.java +++ b/src/main/java/com/github/skriptdev/skript/api/hytale/utils/PlayerUtils.java @@ -4,7 +4,6 @@ import com.hypixel.hytale.component.Store; import com.hypixel.hytale.component.spatial.SpatialResource; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3d; import com.hypixel.hytale.server.core.NameMatching; import com.hypixel.hytale.server.core.entity.entities.Player; import com.hypixel.hytale.server.core.modules.entity.EntityModule; @@ -14,6 +13,7 @@ import com.hypixel.hytale.server.core.universe.world.storage.EntityStore; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.joml.Vector3d; import java.util.ArrayList; import java.util.List; @@ -147,8 +147,8 @@ public static List getPlayerRefs(@Nullable World world) { Store store = world.getEntityStore().getStore(); if (store == null) return List.of(); - Vector3d min = Vector3d.min(loc1.getPosition(), loc2.getPosition()); - Vector3d max = Vector3d.max(loc1.getPosition(), loc2.getPosition()); + Vector3d min = loc1.getPosition().min(loc2.getPosition()); + Vector3d max = loc1.getPosition().max(loc2.getPosition()); List> results = SpatialResource.getThreadLocalReferenceList(); SpatialResource, EntityStore> playerSpatialResource = store.getResource(EntityModule.get() @@ -163,4 +163,10 @@ public static List getPlayerRefs(@Nullable World world) { return players; } + public static String getUsername(Player player) { + PlayerRef playerRef = getPlayerRef(player); + assert playerRef != null; + return playerRef.getUsername(); + } + } diff --git a/src/main/java/com/github/skriptdev/skript/api/skript/event/PlayerContext.java b/src/main/java/com/github/skriptdev/skript/api/skript/event/PlayerContext.java index c098ee6..5da9c74 100644 --- a/src/main/java/com/github/skriptdev/skript/api/skript/event/PlayerContext.java +++ b/src/main/java/com/github/skriptdev/skript/api/skript/event/PlayerContext.java @@ -1,6 +1,8 @@ package com.github.skriptdev.skript.api.skript.event; +import com.github.skriptdev.skript.api.hytale.utils.PlayerUtils; import com.hypixel.hytale.server.core.entity.entities.Player; +import com.hypixel.hytale.server.core.universe.PlayerRef; import io.github.syst3ms.skriptparser.lang.TriggerContext; /** @@ -10,4 +12,8 @@ public interface PlayerContext extends TriggerContext { Player getPlayer(); + default PlayerRef getPlayerRef() { + return PlayerUtils.getPlayerRef(getPlayer()); + } + } diff --git a/src/main/java/com/github/skriptdev/skript/api/skript/testing/TestRunner.java b/src/main/java/com/github/skriptdev/skript/api/skript/testing/TestRunner.java index 27287b2..a57f92e 100644 --- a/src/main/java/com/github/skriptdev/skript/api/skript/testing/TestRunner.java +++ b/src/main/java/com/github/skriptdev/skript/api/skript/testing/TestRunner.java @@ -4,7 +4,6 @@ import com.github.skriptdev.skript.api.utils.Utils; import com.hypixel.hytale.math.util.ChunkUtil; import com.hypixel.hytale.math.vector.Transform; -import com.hypixel.hytale.math.vector.Vector3i; import com.hypixel.hytale.server.core.HytaleServer; import com.hypixel.hytale.server.core.Message; import com.hypixel.hytale.server.core.command.system.CommandManager; @@ -23,6 +22,8 @@ import io.github.syst3ms.skriptparser.parsing.ScriptLoader; import io.github.syst3ms.skriptparser.registration.SkriptAddon; import io.github.syst3ms.skriptparser.variables.Variables; +import org.joml.RoundingMode; +import org.joml.Vector3i; import java.io.File; import java.nio.file.Path; @@ -63,11 +64,11 @@ public void start() { this.world.execute(() -> { ISpawnProvider spawnProvider = this.world.getWorldConfig().getSpawnProvider(); Transform spawnPoint = spawnProvider.getSpawnPoint(this.world, UUID.randomUUID()); - Vector3i pos = spawnPoint.getPosition().toVector3i(); + Vector3i pos = new Vector3i(spawnPoint.getPosition(), RoundingMode.FLOOR); - for (int x = pos.getX() - 64; x < pos.getX() + 64; x += 32) { - for (int z = pos.getZ() - 64; z < pos.getZ() + 64; z += 32) { + for (int x = pos.x() - 64; x < pos.x() + 64; x += 32) { + for (int z = pos.z() - 64; z < pos.z() + 64; z += 32) { long index = ChunkUtil.indexChunkFromBlock(x, z); WorldChunk chunk = this.world.getChunk(index); chunk.addKeepLoaded(); diff --git a/src/main/java/com/github/skriptdev/skript/api/skript/testing/elements/EvtTest.java b/src/main/java/com/github/skriptdev/skript/api/skript/testing/elements/EvtTest.java index 69566f3..feaa761 100644 --- a/src/main/java/com/github/skriptdev/skript/api/skript/testing/elements/EvtTest.java +++ b/src/main/java/com/github/skriptdev/skript/api/skript/testing/elements/EvtTest.java @@ -5,8 +5,7 @@ import com.github.skriptdev.skript.api.skript.testing.TestResults; import com.github.skriptdev.skript.api.utils.Utils; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3f; -import com.hypixel.hytale.math.vector.Vector3i; +import com.hypixel.hytale.math.vector.Rotation3f; import com.hypixel.hytale.server.core.universe.world.World; import io.github.syst3ms.skriptparser.lang.Expression; import io.github.syst3ms.skriptparser.lang.TriggerContext; @@ -14,6 +13,8 @@ import io.github.syst3ms.skriptparser.lang.event.SkriptEvent; import io.github.syst3ms.skriptparser.parsing.ParseContext; import org.jetbrains.annotations.NotNull; +import org.joml.Vector3d; +import org.joml.Vector3i; public class EvtTest extends SkriptEvent { @@ -58,7 +59,7 @@ public static final class TestContext implements WorldContext { public TestContext(TestResults testResults, World world, Vector3i pos) { this.testResults = testResults; this.world = world; - this.location = new Location(world.getName(), pos.toVector3d(), Vector3f.ZERO); + this.location = new Location(world.getName(), new Vector3d(pos), (Rotation3f) Rotation3f.ZERO); } public void setTestSubject(String testSubject) { diff --git a/src/main/java/com/github/skriptdev/skript/api/utils/VectorUtils.java b/src/main/java/com/github/skriptdev/skript/api/utils/VectorUtils.java new file mode 100644 index 0000000..57e6992 --- /dev/null +++ b/src/main/java/com/github/skriptdev/skript/api/utils/VectorUtils.java @@ -0,0 +1,20 @@ +package com.github.skriptdev.skript.api.utils; + +import com.hypixel.hytale.math.vector.Rotation3f; +import org.joml.Vector3d; +import org.joml.Vector3f; + +public class VectorUtils { + + public static final Vector3f ZERO_3f = new Vector3f(0, 0, 0); + public static final Vector3d ZERO_3d = new Vector3d(0, 0, 0); + + public static Rotation3f rotFromVec3f(Vector3f vector3f) { + return new Rotation3f(vector3f.x(), vector3f.y(), vector3f.z()); + } + + public static Vector3f vecFromRot3f(Rotation3f rotation3f) { + return new Vector3f(rotation3f.x(), rotation3f.y(), rotation3f.z()); + } + +} diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/command/ScriptCommand.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/command/ScriptCommand.java index 1f81203..468bbcf 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/command/ScriptCommand.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/command/ScriptCommand.java @@ -1,5 +1,6 @@ package com.github.skriptdev.skript.plugin.elements.command; +import com.github.skriptdev.skript.api.hytale.utils.PlayerUtils; import com.github.skriptdev.skript.api.skript.command.ScriptCommandBuilder; import com.github.skriptdev.skript.api.skript.command.ScriptCommandParent; import com.github.skriptdev.skript.api.skript.event.PlayerContext; @@ -57,7 +58,7 @@ public static class PlayerScriptCommandContext extends ScriptCommandContext impl private final Player player; public PlayerScriptCommandContext(String command, Player player) { - super(command, player); + super(command, PlayerUtils.getPlayerRef(player)); this.player = player; } diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/conditions/player/CondPlayerHasPermission.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/conditions/player/CondPlayerHasPermission.java index f1b1c9e..51db7ab 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/conditions/player/CondPlayerHasPermission.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/conditions/player/CondPlayerHasPermission.java @@ -1,5 +1,6 @@ package com.github.skriptdev.skript.plugin.elements.conditions.player; +import com.github.skriptdev.skript.api.hytale.utils.PlayerUtils; import com.hypixel.hytale.server.core.entity.entities.Player; import com.hypixel.hytale.server.core.permissions.PermissionsModule; import com.hypixel.hytale.server.core.universe.PlayerRef; @@ -43,7 +44,9 @@ public boolean check(@NotNull TriggerContext ctx) { this.permission.check(ctx, string -> { this.players.check(ctx, p -> { if (p instanceof Player player) { - return player.hasPermission(string); + PlayerRef playerRef = PlayerUtils.getPlayerRef(player); + assert playerRef != null; + return permissionsModule.hasPermission(playerRef.getUuid(), string); } else if (p instanceof PlayerRef playerRef) { return permissionsModule.hasPermission(playerRef.getUuid(), string); } else if (p instanceof UUID uuid) { diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/conditions/world/CondChunkIsLoaded.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/conditions/world/CondChunkIsLoaded.java index d0f0fc6..41e14af 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/conditions/world/CondChunkIsLoaded.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/conditions/world/CondChunkIsLoaded.java @@ -4,7 +4,6 @@ import com.hypixel.hytale.component.Ref; import com.hypixel.hytale.math.util.ChunkUtil; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3i; import com.hypixel.hytale.server.core.universe.Universe; import com.hypixel.hytale.server.core.universe.world.World; import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore; @@ -13,6 +12,7 @@ import io.github.syst3ms.skriptparser.lang.base.ConditionalExpression; import io.github.syst3ms.skriptparser.parsing.ParseContext; import org.jetbrains.annotations.NotNull; +import org.joml.Vector3d; public class CondChunkIsLoaded extends ConditionalExpression { @@ -43,9 +43,9 @@ public boolean check(@NotNull TriggerContext ctx) { return this.location.check(ctx, location -> { World world = Universe.get().getWorld(location.getWorld()); if (world != null) { - Vector3i pos = location.getPosition().toVector3i(); - int x = pos.getX(); - int z = pos.getZ(); + Vector3d pos = location.getPosition(); + int x = (int) Math.floor(pos.x()); + int z = (int) Math.floor(pos.y()); long index = ChunkUtil.indexChunkFromBlock(x, z); Ref chunkReference = world.getChunkStore().getChunkReference(index); if (isNegated()) { diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/entity/EffDropItem.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/entity/EffDropItem.java index e1d2235..7b7a2dd 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/entity/EffDropItem.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/entity/EffDropItem.java @@ -2,9 +2,9 @@ import com.github.skriptdev.skript.api.hytale.utils.EntityUtils; import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration; +import com.github.skriptdev.skript.api.utils.VectorUtils; import com.hypixel.hytale.component.Store; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3f; import com.hypixel.hytale.server.core.asset.type.item.config.Item; import com.hypixel.hytale.server.core.inventory.ItemStack; import com.hypixel.hytale.server.core.universe.Universe; @@ -15,6 +15,7 @@ import io.github.syst3ms.skriptparser.lang.TriggerContext; import io.github.syst3ms.skriptparser.parsing.ParseContext; import org.jetbrains.annotations.NotNull; +import org.joml.Vector3f; import java.time.Duration; import java.util.ArrayList; @@ -86,10 +87,10 @@ protected void execute(@NotNull TriggerContext ctx) { if (single.isPresent()) { velocity = single.get(); } else { - velocity = Vector3f.ZERO; + velocity = VectorUtils.ZERO_3f; } } else { - velocity = Vector3f.ZERO; + velocity = VectorUtils.ZERO_3f; } float pickupDelay; diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/entity/EffInteraction.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/entity/EffInteraction.java index 1ec0c10..5d81127 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/entity/EffInteraction.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/entity/EffInteraction.java @@ -5,7 +5,6 @@ import com.hypixel.hytale.component.Ref; import com.hypixel.hytale.component.Store; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3i; import com.hypixel.hytale.protocol.BlockPosition; import com.hypixel.hytale.protocol.InteractionType; import com.hypixel.hytale.server.core.entity.Entity; @@ -21,6 +20,8 @@ import io.github.syst3ms.skriptparser.lang.TriggerContext; import io.github.syst3ms.skriptparser.parsing.ParseContext; import org.jetbrains.annotations.NotNull; +import org.joml.RoundingMode; +import org.joml.Vector3i; import java.util.Objects; @@ -91,8 +92,8 @@ protected void execute(@NotNull TriggerContext ctx) { if (this.location != null) { Location location = this.location.getSingle(ctx).orElse(null); if (location != null) { - Vector3i position = location.getPosition().toVector3i(); - blockPosition = new BlockPosition(position.getX(), position.getY(), position.getZ()); + Vector3i position = new Vector3i(location.getPosition(), RoundingMode.FLOOR); + blockPosition = new BlockPosition(position.x(), position.y(), position.z()); } else { blockPosition = null; } diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/entity/EffRide.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/entity/EffRide.java index 3db60c9..c7d1b0b 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/entity/EffRide.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/entity/EffRide.java @@ -4,12 +4,11 @@ import com.github.skriptdev.skript.api.hytale.utils.EntityUtils; import com.github.skriptdev.skript.api.hytale.utils.StoreUtils; import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration; +import com.github.skriptdev.skript.api.utils.VectorUtils; import com.hypixel.hytale.builtin.mounts.MountedComponent; import com.hypixel.hytale.component.CommandBuffer; import com.hypixel.hytale.component.Ref; import com.hypixel.hytale.component.Store; -import com.hypixel.hytale.math.vector.Vector3f; -import com.hypixel.hytale.math.vector.Vector3i; import com.hypixel.hytale.protocol.MountController; import com.hypixel.hytale.server.core.entity.Entity; import com.hypixel.hytale.server.core.entity.LivingEntity; @@ -19,6 +18,8 @@ import io.github.syst3ms.skriptparser.lang.TriggerContext; import io.github.syst3ms.skriptparser.parsing.ParseContext; import org.jetbrains.annotations.NotNull; +import org.joml.Vector3f; +import org.joml.Vector3i; public class EffRide extends Effect { @@ -70,7 +71,7 @@ protected void execute(@NotNull TriggerContext ctx) { // Already mounted if (component != null) return; - Vector3f offset = Vector3f.ZERO; + Vector3f offset = VectorUtils.ZERO_3f; if (this.offset != null) { Vector3f vector3f = this.offset.getSingle(ctx).orElse(null); if (vector3f != null) offset = vector3f; @@ -79,7 +80,8 @@ protected void execute(@NotNull TriggerContext ctx) { if (vehicle instanceof Entity entity) { Ref vehicleRef = entity.getReference(); - MountedComponent comp = new MountedComponent(vehicleRef, offset, MountController.Minecart); + MountedComponent comp = new MountedComponent(vehicleRef, + VectorUtils.rotFromVec3f(offset), MountController.Minecart); EntityUtils.addComponent(passenger, MountedComponent.getComponentType(), comp); } else if (vehicle instanceof Block block) { @@ -90,9 +92,9 @@ protected void execute(@NotNull TriggerContext ctx) { CommandBuffer commandBuffer = StoreUtils.getCommandBuffer(store); Vector3i pos = block.getPos(); - Vector3f add = pos.toVector3f().add(offset); // TODO broken, figure this out + //Vector3f add = pos.toVector3f().add(offset); //BlockMountAPI.mountOnBlock(passengerRef, commandBuffer, pos, add); } } diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/entity/EffShoot.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/entity/EffShoot.java index 645bf6a..d735cb5 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/entity/EffShoot.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/entity/EffShoot.java @@ -6,7 +6,6 @@ import com.hypixel.hytale.component.CommandBuffer; import com.hypixel.hytale.component.Ref; import com.hypixel.hytale.component.Store; -import com.hypixel.hytale.math.vector.Vector3d; import com.hypixel.hytale.server.core.entity.LivingEntity; import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent; import com.hypixel.hytale.server.core.modules.projectile.ProjectileModule; @@ -17,6 +16,7 @@ import io.github.syst3ms.skriptparser.lang.TriggerContext; import io.github.syst3ms.skriptparser.parsing.ParseContext; import org.jetbrains.annotations.NotNull; +import org.joml.Vector3d; public class EffShoot extends Effect { @@ -59,8 +59,8 @@ protected void execute(@NotNull TriggerContext ctx) { TransformComponent component = EntityUtils.getComponent(entity, TransformComponent.getComponentType()); if (component == null) return; - Vector3d pos = component.getTransform().getPosition().clone(); - Vector3d dir = component.getTransform().getDirection().clone(); + Vector3d pos = new Vector3d(component.getTransform().getPosition()); + Vector3d dir = new Vector3d(component.getTransform().getDirection()); if (this.direction != null) { Vector3d vector3d = this.direction.getSingle(ctx).orElse(null); diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/entity/EffSpawnEntity.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/entity/EffSpawnEntity.java index b06d247..43f7097 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/entity/EffSpawnEntity.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/entity/EffSpawnEntity.java @@ -3,7 +3,7 @@ import com.github.skriptdev.skript.api.skript.registration.NPCRegistry.NPCRole; import com.hypixel.hytale.component.Store; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3f; +import com.hypixel.hytale.math.vector.Rotation3f; import com.hypixel.hytale.server.core.universe.Universe; import com.hypixel.hytale.server.core.universe.world.World; import com.hypixel.hytale.server.core.universe.world.storage.EntityStore; @@ -56,10 +56,10 @@ protected void execute(@NotNull TriggerContext ctx) { Store store = world.getEntityStore().getStore(); - Vector3f rotation = location.getRotation().clone(); - if (Float.isNaN(rotation.getX())) rotation = Vector3f.ZERO; + Rotation3f rotation = location.getRotation(); + if (Float.isNaN(rotation.x())) rotation = (Rotation3f) Rotation3f.ZERO; - NPCPlugin.get().spawnEntity(store, roleSingle.get().index(), location.getPosition().clone(), rotation, null, null, null); + NPCPlugin.get().spawnEntity(store, roleSingle.get().index(), location.getPosition(), rotation, null, null, null); } @Override diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/other/EffSendMessage.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/other/EffSendMessage.java index e2e737e..4079fde 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/other/EffSendMessage.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/other/EffSendMessage.java @@ -57,7 +57,7 @@ protected void execute(@NotNull TriggerContext ctx) { } } else { if (ctx instanceof PlayerContext playerContext) { - sendMessage(playerContext.getPlayer(), messages); + sendMessage(playerContext.getPlayerRef(), messages); } else if (ctx instanceof ScriptCommandContext commandContext) { sendMessage(commandContext.getSender(), messages); } else { diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/world/EffChunkLoadAsync.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/world/EffChunkLoadAsync.java index d0af737..bdbaefa 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/world/EffChunkLoadAsync.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/world/EffChunkLoadAsync.java @@ -3,7 +3,6 @@ import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration; import com.hypixel.hytale.math.util.ChunkUtil; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3i; import com.hypixel.hytale.server.core.universe.Universe; import com.hypixel.hytale.server.core.universe.world.World; import io.github.syst3ms.skriptparser.lang.Effect; @@ -14,6 +13,8 @@ import io.github.syst3ms.skriptparser.variables.VariableMap; import io.github.syst3ms.skriptparser.variables.Variables; import org.jetbrains.annotations.NotNull; +import org.joml.RoundingMode; +import org.joml.Vector3i; import java.util.Optional; @@ -53,9 +54,9 @@ public Optional walk(@NotNull TriggerContext ctx) { World world = Universe.get().getWorld(loc.getWorld()); if (world == null) return nextStatement; - Vector3i pos = loc.getPosition().toVector3i(); - int x = pos.getX(); - int z = pos.getZ(); + Vector3i pos = new Vector3i(loc.getPosition(), RoundingMode.FLOOR); + int x = pos.x(); + int z = pos.z(); // Save variables for later VariableMap variableMap = Variables.copyLocalVariables(ctx); diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/world/EffParticle.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/world/EffParticle.java index 4b945be..e37ab34 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/world/EffParticle.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/effects/world/EffParticle.java @@ -5,8 +5,7 @@ import com.hypixel.hytale.component.Store; import com.hypixel.hytale.component.spatial.SpatialResource; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3d; -import com.hypixel.hytale.math.vector.Vector3f; +import com.hypixel.hytale.math.vector.Rotation3f; import com.hypixel.hytale.server.core.asset.type.particle.config.ParticleSystem; import com.hypixel.hytale.server.core.entity.entities.Player; import com.hypixel.hytale.server.core.modules.entity.EntityModule; @@ -20,6 +19,7 @@ import io.github.syst3ms.skriptparser.lang.TriggerContext; import io.github.syst3ms.skriptparser.parsing.ParseContext; import org.jetbrains.annotations.NotNull; +import org.joml.Vector3d; import java.util.ArrayList; import java.util.List; @@ -67,10 +67,10 @@ protected void execute(@NotNull TriggerContext ctx) { } Vector3d pos = location.getPosition(); - Vector3f rotation = location.getRotation(); - float yaw = rotation.getYaw(); - float pitch = rotation.getPitch(); - float roll = rotation.getRoll(); + Rotation3f rotation = location.getRotation(); + float yaw = rotation.yaw(); + float pitch = rotation.pitch(); + float roll = rotation.roll(); if (Float.isNaN(yaw)) yaw = 0; if (Float.isNaN(pitch)) pitch = 0; if (Float.isNaN(roll)) roll = 0; @@ -101,7 +101,7 @@ protected void execute(@NotNull TriggerContext ctx) { } ParticleUtil.spawnParticleEffect(particleId, - pos.getX(), pos.getY(), pos.getZ(), + pos.x(), pos.y(), pos.z(), yaw, pitch, roll, 1.0f, null, diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/events/entity/EvtTeleport.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/events/entity/EvtTeleport.java index c7526fa..c194fd2 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/events/entity/EvtTeleport.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/events/entity/EvtTeleport.java @@ -14,8 +14,7 @@ import com.hypixel.hytale.component.query.Query; import com.hypixel.hytale.component.system.RefChangeSystem; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3d; -import com.hypixel.hytale.math.vector.Vector3f; +import com.hypixel.hytale.math.vector.Rotation3f; import com.hypixel.hytale.server.core.entity.Entity; import com.hypixel.hytale.server.core.entity.entities.Player; import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent; @@ -30,6 +29,7 @@ import io.github.syst3ms.skriptparser.registration.context.ContextValue; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.joml.Vector3d; import java.util.Collections; import java.util.Set; @@ -139,7 +139,7 @@ public Location getPastLocation() { TransformComponent component = EntityUtils.getComponent(this.entity, TransformComponent.getComponentType()); assert component != null; Vector3d position = component.getPosition(); - Vector3f rotation = component.getRotation(); + Rotation3f rotation = component.getRotation(); return new Location(world.getName(), position, rotation); } diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/events/player/EvtPlayerBreakBlock.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/events/player/EvtPlayerBreakBlock.java index 66ab29b..c3afb0d 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/events/player/EvtPlayerBreakBlock.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/events/player/EvtPlayerBreakBlock.java @@ -12,7 +12,6 @@ import com.hypixel.hytale.component.Store; import com.hypixel.hytale.component.query.Query; import com.hypixel.hytale.component.system.EntityEventSystem; -import com.hypixel.hytale.math.vector.Vector3i; import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType; import com.hypixel.hytale.server.core.asset.type.item.config.Item; import com.hypixel.hytale.server.core.entity.entities.Player; @@ -27,6 +26,7 @@ import io.github.syst3ms.skriptparser.parsing.ParseContext; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.joml.Vector3i; public class EvtPlayerBreakBlock extends SystemEvent> { diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/events/player/EvtPlayerDamageBlock.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/events/player/EvtPlayerDamageBlock.java index aec9bd2..8016985 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/events/player/EvtPlayerDamageBlock.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/events/player/EvtPlayerDamageBlock.java @@ -12,7 +12,6 @@ import com.hypixel.hytale.component.Store; import com.hypixel.hytale.component.query.Query; import com.hypixel.hytale.component.system.EntityEventSystem; -import com.hypixel.hytale.math.vector.Vector3i; import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType; import com.hypixel.hytale.server.core.entity.entities.Player; import com.hypixel.hytale.server.core.event.events.ecs.DamageBlockEvent; @@ -25,6 +24,7 @@ import io.github.syst3ms.skriptparser.parsing.ParseContext; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.joml.Vector3i; public class EvtPlayerDamageBlock extends SystemEvent> { diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/events/player/EvtPlayerMouseClick.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/events/player/EvtPlayerMouseClick.java index 9479539..02d4713 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/events/player/EvtPlayerMouseClick.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/events/player/EvtPlayerMouseClick.java @@ -5,9 +5,7 @@ import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration; import com.github.skriptdev.skript.plugin.HySk; import com.hypixel.hytale.event.EventRegistration; -import com.hypixel.hytale.math.vector.Vector3i; import com.hypixel.hytale.protocol.MouseButtonEvent; -import com.hypixel.hytale.protocol.Vector2f; import com.hypixel.hytale.server.core.asset.type.item.config.Item; import com.hypixel.hytale.server.core.entity.Entity; import com.hypixel.hytale.server.core.entity.entities.Player; @@ -18,6 +16,8 @@ import io.github.syst3ms.skriptparser.lang.event.SkriptEvent; import io.github.syst3ms.skriptparser.parsing.ParseContext; import org.jetbrains.annotations.NotNull; +import org.joml.Vector2f; +import org.joml.Vector3i; public class EvtPlayerMouseClick extends SkriptEvent { @@ -79,7 +79,7 @@ private Vector3i getTargetBlock() { } private Vector2f getScreenPoint() { - return this.event.getScreenPoint(); + return (Vector2f) this.event.getScreenPoint(); } private MouseButtonEvent getMouseButton() { diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/events/player/EvtPlayerMouseMove.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/events/player/EvtPlayerMouseMove.java index 32d5b94..3757684 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/events/player/EvtPlayerMouseMove.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/events/player/EvtPlayerMouseMove.java @@ -5,9 +5,7 @@ import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration; import com.github.skriptdev.skript.plugin.HySk; import com.hypixel.hytale.event.EventRegistration; -import com.hypixel.hytale.math.vector.Vector3i; import com.hypixel.hytale.protocol.MouseMotionEvent; -import com.hypixel.hytale.protocol.Vector2f; import com.hypixel.hytale.server.core.asset.type.item.config.Item; import com.hypixel.hytale.server.core.entity.Entity; import com.hypixel.hytale.server.core.entity.entities.Player; @@ -18,6 +16,8 @@ import io.github.syst3ms.skriptparser.lang.event.SkriptEvent; import io.github.syst3ms.skriptparser.parsing.ParseContext; import org.jetbrains.annotations.NotNull; +import org.joml.Vector2f; +import org.joml.Vector3i; public class EvtPlayerMouseMove extends SkriptEvent { @@ -79,7 +79,7 @@ private Vector3i getTargetBlock() { } private Vector2f getScreenPoint() { - return this.event.getScreenPoint(); + return (Vector2f) this.event.getScreenPoint(); } private MouseMotionEvent getMouseMotion() { diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/events/player/EvtPlayerPlaceBlock.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/events/player/EvtPlayerPlaceBlock.java index 4c43091..b10605e 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/events/player/EvtPlayerPlaceBlock.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/events/player/EvtPlayerPlaceBlock.java @@ -14,7 +14,6 @@ import com.hypixel.hytale.component.Store; import com.hypixel.hytale.component.query.Query; import com.hypixel.hytale.component.system.EntityEventSystem; -import com.hypixel.hytale.math.vector.Vector3i; import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType; import com.hypixel.hytale.server.core.asset.type.item.config.Item; import com.hypixel.hytale.server.core.entity.entities.Player; @@ -29,6 +28,7 @@ import io.github.syst3ms.skriptparser.registration.context.ContextValue; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.joml.Vector3i; public class EvtPlayerPlaceBlock extends SystemEvent> { diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/block/ExprBlockAt.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/block/ExprBlockAt.java index ea0b247..a11d1a3 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/block/ExprBlockAt.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/block/ExprBlockAt.java @@ -3,13 +3,14 @@ import com.github.skriptdev.skript.api.hytale.objects.Block; import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3i; import com.hypixel.hytale.server.core.universe.Universe; import com.hypixel.hytale.server.core.universe.world.World; import io.github.syst3ms.skriptparser.lang.Expression; import io.github.syst3ms.skriptparser.lang.TriggerContext; import io.github.syst3ms.skriptparser.parsing.ParseContext; import org.jetbrains.annotations.NotNull; +import org.joml.RoundingMode; +import org.joml.Vector3i; import java.util.ArrayList; import java.util.List; @@ -18,7 +19,7 @@ public class ExprBlockAt implements Expression { public static void register(SkriptRegistration reg) { reg.newExpression(ExprBlockAt.class, Block.class, true, - "block[s] at %locations%") + "block[s] at %locations%") .name("Block At") .description("Returns the block at a location.") .examples("set {_block} to block at player's location") @@ -45,7 +46,7 @@ public Block[] getValues(@NotNull TriggerContext ctx) { World world = Universe.get().getWorld(worldName); if (world == null) continue; - Vector3i pos = location.getPosition().toVector3i(); + Vector3i pos = new Vector3i(location.getPosition(), RoundingMode.FLOOR); Block block = new Block(world, pos); blocks.add(block); diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/block/ExprBlockIterator.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/block/ExprBlockIterator.java index 8090230..134e562 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/block/ExprBlockIterator.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/block/ExprBlockIterator.java @@ -4,13 +4,14 @@ import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration; import com.hypixel.hytale.math.iterator.LineIterator; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3i; import com.hypixel.hytale.server.core.universe.Universe; import com.hypixel.hytale.server.core.universe.world.World; import io.github.syst3ms.skriptparser.lang.Expression; import io.github.syst3ms.skriptparser.lang.TriggerContext; import io.github.syst3ms.skriptparser.parsing.ParseContext; import org.jetbrains.annotations.NotNull; +import org.joml.RoundingMode; +import org.joml.Vector3i; import java.util.ArrayList; import java.util.Iterator; @@ -64,15 +65,15 @@ public Iterator iterator(@NotNull TriggerContext ctx) { World world = Universe.get().getWorld(worldString); if (world == null) return blocks.iterator(); - Vector3i pos1 = loc1.getPosition().toVector3i(); - Vector3i pos2 = loc2.getPosition().toVector3i(); + Vector3i pos1 = new Vector3i(loc1.getPosition(), RoundingMode.FLOOR); + Vector3i pos2 = new Vector3i(loc2.getPosition(), RoundingMode.FLOOR); if (this.within) { - Vector3i min = Vector3i.min(pos1, pos2); - Vector3i max = Vector3i.max(pos1, pos2); - for (int x = min.getX(); x <= max.getX(); x++) { - for (int y = min.getY(); y <= max.getY(); y++) { - for (int z = min.getZ(); z <= max.getZ(); z++) { + Vector3i min = pos1.min(pos2); + Vector3i max = pos1.max(pos2); + for (int x = min.x(); x <= max.x(); x++) { + for (int y = min.y(); y <= max.y(); y++) { + for (int z = min.z(); z <= max.z(); z++) { Block block = new Block(world, new Vector3i(x, y, z)); blocks.add(block); } @@ -97,7 +98,7 @@ private static class BlockLineIterator implements Iterator { public BlockLineIterator(World world, Vector3i pos1, Vector3i pos2) { this.world = world; - this.lineIterator = new LineIterator(pos1.getX(), pos1.getY(), pos1.getZ(), pos2.getX(), pos2.getY(), pos2.getZ()); + this.lineIterator = new LineIterator(pos1.x(), pos1.y(), pos1.z(), pos2.x(), pos2.y(), pos2.z()); } @Override diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/block/ExprBlockRotation.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/block/ExprBlockRotation.java index fe66536..59b6232 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/block/ExprBlockRotation.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/block/ExprBlockRotation.java @@ -2,13 +2,13 @@ import com.github.skriptdev.skript.api.hytale.objects.Block; import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration; -import com.hypixel.hytale.math.vector.Vector3i; import io.github.syst3ms.skriptparser.lang.Expression; import io.github.syst3ms.skriptparser.lang.TriggerContext; import io.github.syst3ms.skriptparser.parsing.ParseContext; import io.github.syst3ms.skriptparser.types.changers.ChangeMode; import io.github.syst3ms.skriptparser.util.CollectionUtils; import org.jetbrains.annotations.NotNull; +import org.joml.Vector3i; import java.util.Optional; diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/block/ExprBlockSphere.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/block/ExprBlockSphere.java index efcd724..20dacfe 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/block/ExprBlockSphere.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/block/ExprBlockSphere.java @@ -4,13 +4,14 @@ import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration; import com.hypixel.hytale.math.block.BlockSphereUtil; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3i; import com.hypixel.hytale.server.core.universe.Universe; import com.hypixel.hytale.server.core.universe.world.World; import io.github.syst3ms.skriptparser.lang.Expression; import io.github.syst3ms.skriptparser.lang.TriggerContext; import io.github.syst3ms.skriptparser.parsing.ParseContext; import org.jetbrains.annotations.NotNull; +import org.joml.RoundingMode; +import org.joml.Vector3i; import java.util.ArrayList; import java.util.Iterator; @@ -68,9 +69,9 @@ public Iterator iterator(TriggerContext ctx) { World world = Universe.get().getWorld(worldName); if (world == null) return blocks.iterator(); - Vector3i pos = location.getPosition().toVector3i(); + Vector3i pos = new Vector3i(location.getPosition(), RoundingMode.FLOOR); - BlockSphereUtil.forEachBlock(pos.getX(), pos.getY(), pos.getZ(), + BlockSphereUtil.forEachBlock(pos.x(), pos.y(), pos.z(), radius, blocks, (i, i1, i2, blocks1) -> { blocks1.add(new Block(world, new Vector3i(i, i1, i2))); return true; diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/block/ExprBlockTypeAtLocation.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/block/ExprBlockTypeAtLocation.java index 4aacd14..6865a75 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/block/ExprBlockTypeAtLocation.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/block/ExprBlockTypeAtLocation.java @@ -1,7 +1,6 @@ package com.github.skriptdev.skript.plugin.elements.expressions.block; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3i; import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType; import com.hypixel.hytale.server.core.universe.Universe; import com.hypixel.hytale.server.core.universe.world.World; @@ -11,6 +10,8 @@ import io.github.syst3ms.skriptparser.registration.SkriptRegistration; import io.github.syst3ms.skriptparser.types.changers.ChangeMode; import org.jetbrains.annotations.NotNull; +import org.joml.RoundingMode; +import org.joml.Vector3i; import java.util.Optional; @@ -57,7 +58,7 @@ public BlockType[] getValues(@NotNull TriggerContext ctx) { Location location = this.loc.getSingle(ctx).orElse(null); if (location != null) { World world = Universe.get().getWorld(location.getWorld()); - Vector3i vector3i = location.getPosition().toVector3i(); + Vector3i vector3i = new Vector3i(location.getPosition(), RoundingMode.FLOOR); if (world != null) return new BlockType[]{world.getBlockType(vector3i)}; } @@ -84,15 +85,15 @@ public void change(@NotNull TriggerContext ctx, @NotNull ChangeMode changeMode, Location location = this.loc.getSingle(ctx).orElse(null); if (location == null) return; World world = Universe.get().getWorld(location.getWorld()); - Vector3i vector3i = location.getPosition().toVector3i(); + Vector3i vector3i = new Vector3i(location.getPosition(), RoundingMode.FLOOR); if (world != null) - world.setBlock(vector3i.getX(), vector3i.getY(), vector3i.getZ(), type.getId()); + world.setBlock(vector3i.x(), vector3i.y(), vector3i.z(), type.getId()); } else if (this.pos != null && this.world != null) { Vector3i pos = this.pos.getSingle(ctx).orElse(null); World world = this.world.getSingle(ctx).orElse(null); if (pos == null || world == null) return; - world.setBlock(pos.getX(), pos.getY(), pos.getZ(), type.getId()); + world.setBlock(pos.x(), pos.y(), pos.z(), type.getId()); } } diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/block/ExprHighestBlock.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/block/ExprHighestBlock.java index cf41633..fbd6743 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/block/ExprHighestBlock.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/block/ExprHighestBlock.java @@ -4,7 +4,6 @@ import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration; import com.hypixel.hytale.math.util.ChunkUtil; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3i; import com.hypixel.hytale.server.core.universe.Universe; import com.hypixel.hytale.server.core.universe.world.World; import com.hypixel.hytale.server.core.universe.world.chunk.WorldChunk; @@ -12,6 +11,8 @@ import io.github.syst3ms.skriptparser.lang.TriggerContext; import io.github.syst3ms.skriptparser.parsing.ParseContext; import org.jetbrains.annotations.NotNull; +import org.joml.RoundingMode; +import org.joml.Vector3i; public class ExprHighestBlock implements Expression { @@ -48,14 +49,14 @@ public Object[] getValues(@NotNull TriggerContext ctx) { World world = Universe.get().getWorld(worldName); if (world == null) return null; - Vector3i pos = location.getPosition().toVector3i().clone(); - int x = pos.getX(); - int z = pos.getZ(); + Vector3i pos = new Vector3i(location.getPosition(), RoundingMode.FLOOR); + int x = pos.x(); + int z = pos.z(); WorldChunk chunk = world.getChunk(ChunkUtil.indexChunkFromBlock(x, z)); if (chunk == null) return null; short height = chunk.getHeight(x, z); - pos.setY(height); + pos.setComponent(1, height); if (this.pattern == 1) { return new Number[]{height}; } else if (this.pattern == 2) { diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/block/ExprTargetBlockOfPlayer.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/block/ExprTargetBlockOfPlayer.java index 43f3bda..f75869c 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/block/ExprTargetBlockOfPlayer.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/block/ExprTargetBlockOfPlayer.java @@ -6,7 +6,6 @@ import com.github.skriptdev.skript.api.utils.Utils; import com.hypixel.hytale.component.Ref; import com.hypixel.hytale.component.Store; -import com.hypixel.hytale.math.vector.Vector3i; import com.hypixel.hytale.server.core.entity.entities.Player; import com.hypixel.hytale.server.core.universe.world.World; import com.hypixel.hytale.server.core.universe.world.storage.EntityStore; @@ -15,6 +14,7 @@ import io.github.syst3ms.skriptparser.lang.TriggerContext; import io.github.syst3ms.skriptparser.parsing.ParseContext; import org.jetbrains.annotations.NotNull; +import org.joml.Vector3i; import java.util.Optional; diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/entity/ExprEntitiesInRadius.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/entity/ExprEntitiesInRadius.java index 2010bbc..313a004 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/entity/ExprEntitiesInRadius.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/entity/ExprEntitiesInRadius.java @@ -1,12 +1,12 @@ package com.github.skriptdev.skript.plugin.elements.expressions.entity; +import com.github.skriptdev.skript.api.hytale.utils.LocationUtils; import com.github.skriptdev.skript.api.hytale.utils.PlayerUtils; import com.github.skriptdev.skript.api.skript.registration.NPCRegistry; import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration; import com.hypixel.hytale.component.Ref; import com.hypixel.hytale.component.Store; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3d; import com.hypixel.hytale.server.core.entity.Entity; import com.hypixel.hytale.server.core.entity.EntityUtils; import com.hypixel.hytale.server.core.entity.entities.Player; @@ -19,6 +19,7 @@ import io.github.syst3ms.skriptparser.lang.TriggerContext; import io.github.syst3ms.skriptparser.parsing.ParseContext; import org.jetbrains.annotations.NotNull; +import org.joml.Vector3d; import java.util.ArrayList; import java.util.Arrays; @@ -142,8 +143,11 @@ public Entity[] getValues(@NotNull TriggerContext ctx) { return PlayerUtils.getPlayersInCuboid(loc1, loc2).toArray(Player[]::new); } - Vector3d min = Vector3d.min(loc1.getPosition(), loc2.getPosition()); - Vector3d max = Vector3d.max(loc1.getPosition(), loc2.getPosition()); + loc1 = LocationUtils.clone(loc1); + loc2 = LocationUtils.clone(loc2); + + Vector3d min = loc1.getPosition().min(loc2.getPosition()); + Vector3d max = loc1.getPosition().max(loc2.getPosition()); for (Ref allEntitiesInBox : TargetUtil.getAllEntitiesInBox(min, max, store)) { Entity entity = EntityUtils.getEntity(allEntitiesInBox, store); diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/entity/ExprEntityHeadRotation.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/entity/ExprEntityHeadRotation.java index 0188a81..0ee97da 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/entity/ExprEntityHeadRotation.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/entity/ExprEntityHeadRotation.java @@ -2,12 +2,13 @@ import com.github.skriptdev.skript.api.hytale.utils.EntityUtils; import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration; -import com.hypixel.hytale.math.vector.Vector3f; +import com.github.skriptdev.skript.api.utils.VectorUtils; import com.hypixel.hytale.server.core.entity.Entity; import com.hypixel.hytale.server.core.modules.entity.component.HeadRotation; import io.github.syst3ms.skriptparser.lang.properties.PropertyExpression; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.joml.Vector3f; public class ExprEntityHeadRotation extends PropertyExpression { @@ -26,7 +27,7 @@ public static void register(SkriptRegistration reg) { HeadRotation component = EntityUtils.getComponent(entity, HeadRotation.getComponentType()); if (component == null) return null; - return component.getRotation(); + return VectorUtils.vecFromRot3f(component.getRotation()); } } diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/entity/ExprEntityVelocity.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/entity/ExprEntityVelocity.java index 1bda4c4..2ec3c7e 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/entity/ExprEntityVelocity.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/entity/ExprEntityVelocity.java @@ -2,7 +2,7 @@ import com.github.skriptdev.skript.api.hytale.utils.EntityUtils; import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration; -import com.hypixel.hytale.math.vector.Vector3d; +import com.github.skriptdev.skript.api.utils.VectorUtils; import com.hypixel.hytale.protocol.ChangeVelocityType; import com.hypixel.hytale.server.core.entity.Entity; import com.hypixel.hytale.server.core.modules.physics.component.Velocity; @@ -12,6 +12,7 @@ import io.github.syst3ms.skriptparser.parsing.ParseContext; import io.github.syst3ms.skriptparser.types.changers.ChangeMode; import org.jetbrains.annotations.NotNull; +import org.joml.Vector3d; import java.util.Optional; @@ -61,7 +62,7 @@ public Optional[]> acceptsChange(@NotNull ChangeMode mode) { @SuppressWarnings("ConstantValue") @Override public void change(@NotNull TriggerContext ctx, @NotNull ChangeMode changeMode, Object @NotNull [] changeWith) { - Vector3d velocity = Vector3d.ZERO; + Vector3d velocity = VectorUtils.ZERO_3d; if (changeWith != null && changeWith[0] instanceof Vector3d vec) { velocity = vec; } diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/entity/ExprName.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/entity/ExprName.java index 361877b..3e117da 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/entity/ExprName.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/entity/ExprName.java @@ -1,6 +1,7 @@ package com.github.skriptdev.skript.plugin.elements.expressions.entity; import com.github.skriptdev.skript.api.hytale.utils.EntityUtils; +import com.github.skriptdev.skript.api.hytale.utils.PlayerUtils; import com.hypixel.hytale.component.Ref; import com.hypixel.hytale.component.Store; import com.hypixel.hytale.server.core.entity.Entity; @@ -50,7 +51,7 @@ public boolean init(Expression @NotNull [] expressions, int matchedPattern, P public @Nullable String getProperty(Object object) { return switch (object) { case PlayerRef playerRef -> playerRef.getUsername(); - case Player player -> this.display ? EntityUtils.getName(player) : player.getDisplayName(); + case Player player -> this.display ? EntityUtils.getName(player) : PlayerUtils.getUsername(player); case Entity entity -> EntityUtils.getName(entity); case Ref ref -> { Ref reference = (Ref) ref; diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprCoordinates.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprCoordinates.java index e9949de..0ee89bf 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprCoordinates.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprCoordinates.java @@ -2,9 +2,6 @@ import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3d; -import com.hypixel.hytale.math.vector.Vector3f; -import com.hypixel.hytale.math.vector.Vector3i; import io.github.syst3ms.skriptparser.lang.Expression; import io.github.syst3ms.skriptparser.lang.TriggerContext; import io.github.syst3ms.skriptparser.lang.properties.PropertyExpression; @@ -12,6 +9,9 @@ import io.github.syst3ms.skriptparser.types.changers.ChangeMode; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.joml.Vector3d; +import org.joml.Vector3f; +import org.joml.Vector3i; import java.util.Optional; @@ -44,30 +44,30 @@ public boolean init(Expression @NotNull [] expressions, int matchedPattern, P case Location location -> { Vector3d position = location.getPosition(); return switch (this.pattern) { - case 1 -> position.getY(); - case 2 -> position.getZ(); - default -> position.getX(); + case 1 -> position.y(); + case 2 -> position.z(); + default -> position.x(); }; } case Vector3i position -> { return switch (this.pattern) { - case 1 -> position.getY(); - case 2 -> position.getZ(); - default -> position.getX(); + case 1 -> position.y(); + case 2 -> position.z(); + default -> position.x(); }; } case Vector3d position -> { return switch (this.pattern) { - case 1 -> position.getY(); - case 2 -> position.getZ(); - default -> position.getX(); + case 1 -> position.y(); + case 2 -> position.z(); + default -> position.x(); }; } case Vector3f position -> { return switch (this.pattern) { - case 1 -> position.getY(); - case 2 -> position.getZ(); - default -> position.getX(); + case 1 -> position.y(); + case 2 -> position.z(); + default -> position.x(); }; } default -> { @@ -107,9 +107,9 @@ public void change(@NotNull TriggerContext ctx, @NotNull ChangeMode changeMode, private void changeVec3d(Vector3d pos, ChangeMode mode, Number number) { double oldValue = switch (this.pattern) { - case 1 -> pos.getY(); - case 2 -> pos.getZ(); - default -> pos.getX(); + case 1 -> pos.y(); + case 2 -> pos.z(); + default -> pos.x(); }; double changeValue = number.doubleValue(); @@ -120,18 +120,14 @@ private void changeVec3d(Vector3d pos, ChangeMode mode, Number number) { newValue = oldValue - changeValue; } - switch (this.pattern) { - case 1 -> pos.setY(newValue); - case 2 -> pos.setZ(newValue); - default -> pos.setX(newValue); - } + pos.setComponent(this.pattern, newValue); } private void changeVec3f(Vector3f pos, ChangeMode mode, Number number) { float oldValue = switch (this.pattern) { - case 1 -> pos.getY(); - case 2 -> pos.getZ(); - default -> pos.getX(); + case 1 -> pos.y(); + case 2 -> pos.z(); + default -> pos.x(); }; float changeValue = number.floatValue(); @@ -142,18 +138,14 @@ private void changeVec3f(Vector3f pos, ChangeMode mode, Number number) { newValue = oldValue - changeValue; } - switch (this.pattern) { - case 1 -> pos.setY(newValue); - case 2 -> pos.setZ(newValue); - default -> pos.setX(newValue); - } + pos.setComponent(this.pattern, newValue); } private void changeVec3i(Vector3i pos, ChangeMode mode, Number number) { int oldValue = switch (this.pattern) { - case 1 -> pos.getY(); - case 2 -> pos.getZ(); - default -> pos.getX(); + case 1 -> pos.y(); + case 2 -> pos.z(); + default -> pos.x(); }; int changeValue = number.intValue(); @@ -164,11 +156,7 @@ private void changeVec3i(Vector3i pos, ChangeMode mode, Number number) { newValue = oldValue - changeValue; } - switch (this.pattern) { - case 1 -> pos.setY(newValue); - case 2 -> pos.setZ(newValue); - default -> pos.setX(newValue); - } + pos.setComponent(this.pattern, newValue); } } diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprDistance.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprDistance.java index 982bd72..e444dc4 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprDistance.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprDistance.java @@ -38,7 +38,7 @@ public Number[] getValues(@NotNull TriggerContext ctx) { if (single.isEmpty() || single2.isEmpty()) return null; Location loc1 = single.get(); Location loc2 = single2.get(); - return new Number[]{loc1.getPosition().distanceTo(loc2.getPosition())}; + return new Number[]{loc1.getPosition().distance(loc2.getPosition())}; } @Override diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprLocationOf.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprLocationOf.java index 736d22a..ca9320f 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprLocationOf.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprLocationOf.java @@ -1,6 +1,7 @@ package com.github.skriptdev.skript.plugin.elements.expressions.other; import com.github.skriptdev.skript.api.hytale.objects.Block; +import com.github.skriptdev.skript.api.hytale.utils.EntityUtils; import com.hypixel.hytale.math.vector.Location; import com.hypixel.hytale.server.core.entity.Entity; import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent; @@ -9,6 +10,7 @@ import io.github.syst3ms.skriptparser.registration.SkriptRegistration; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.joml.Vector3d; public class ExprLocationOf extends PropertyExpression { @@ -22,14 +24,15 @@ public static void register(SkriptRegistration registration) { .register(); } - @SuppressWarnings("removal") @Override public @Nullable Location getProperty(@NotNull Object owner) { if (owner instanceof Entity entity) { World world = entity.getWorld(); assert world != null; - TransformComponent transform = entity.getTransformComponent(); - return new Location(world.getName(), transform.getPosition().clone(), transform.getRotation().clone()); + TransformComponent transform = EntityUtils.getComponent(entity, TransformComponent.getComponentType()); + if (transform == null) return null; + + return new Location(world.getName(), new Vector3d(transform.getPosition()), transform.getRotation().clone()); } else if (owner instanceof Block block) { return block.getLocation(); } diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprLocationOffset.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprLocationOffset.java index 05b462e..bae57d9 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprLocationOffset.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprLocationOffset.java @@ -3,12 +3,12 @@ import com.github.skriptdev.skript.api.hytale.utils.LocationUtils; import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3d; -import com.hypixel.hytale.math.vector.Vector3i; import io.github.syst3ms.skriptparser.lang.Expression; import io.github.syst3ms.skriptparser.lang.TriggerContext; import io.github.syst3ms.skriptparser.parsing.ParseContext; import org.jetbrains.annotations.NotNull; +import org.joml.Vector3d; +import org.joml.Vector3i; public class ExprLocationOffset implements Expression { @@ -44,7 +44,7 @@ public Location[] getValues(@NotNull TriggerContext ctx) { Vector3d offset; Object o = this.vector.getSingle(ctx).orElse(null); if (o instanceof Vector3i vector3i) { - offset = vector3i.toVector3d(); + offset = new Vector3d(vector3i); } else if (o instanceof Vector3d vector3d) { offset = vector3d; } else { diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprLocationRotation.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprLocationRotation.java index cc95858..a9ce9be 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprLocationRotation.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprLocationRotation.java @@ -1,13 +1,14 @@ package com.github.skriptdev.skript.plugin.elements.expressions.other; import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration; +import com.github.skriptdev.skript.api.utils.VectorUtils; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3f; import io.github.syst3ms.skriptparser.lang.Expression; import io.github.syst3ms.skriptparser.lang.TriggerContext; import io.github.syst3ms.skriptparser.parsing.ParseContext; import io.github.syst3ms.skriptparser.types.changers.ChangeMode; import org.jetbrains.annotations.NotNull; +import org.joml.Vector3f; import java.util.Optional; @@ -39,7 +40,7 @@ public Vector3f[] getValues(@NotNull TriggerContext ctx) { Location location = this.location.getSingle(ctx).orElse(null); if (location == null) return null; - return new Vector3f[]{location.getRotation()}; + return new Vector3f[]{VectorUtils.vecFromRot3f(location.getRotation())}; } @Override @@ -57,7 +58,7 @@ public void change(@NotNull TriggerContext ctx, @NotNull ChangeMode changeMode, return; } - this.location.getSingle(ctx).ifPresent(loc -> loc.setRotation(vector3f)); + this.location.getSingle(ctx).ifPresent(loc -> loc.setRotation(VectorUtils.rotFromVec3f(vector3f))); } @Override diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprVector3d.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprVector3d.java index e636266..95ec99f 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprVector3d.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprVector3d.java @@ -1,11 +1,11 @@ package com.github.skriptdev.skript.plugin.elements.expressions.other; -import com.hypixel.hytale.math.vector.Vector3d; import io.github.syst3ms.skriptparser.lang.Expression; import io.github.syst3ms.skriptparser.lang.TriggerContext; import io.github.syst3ms.skriptparser.parsing.ParseContext; import io.github.syst3ms.skriptparser.registration.SkriptRegistration; import org.jetbrains.annotations.NotNull; +import org.joml.Vector3d; public class ExprVector3d implements Expression { diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprVector3f.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprVector3f.java index 608f877..1782242 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprVector3f.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprVector3f.java @@ -1,11 +1,11 @@ package com.github.skriptdev.skript.plugin.elements.expressions.other; -import com.hypixel.hytale.math.vector.Vector3f; import io.github.syst3ms.skriptparser.lang.Expression; import io.github.syst3ms.skriptparser.lang.TriggerContext; import io.github.syst3ms.skriptparser.parsing.ParseContext; import io.github.syst3ms.skriptparser.registration.SkriptRegistration; import org.jetbrains.annotations.NotNull; +import org.joml.Vector3f; public class ExprVector3f implements Expression { diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprVector3i.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprVector3i.java index 7b0f3df..fb7945d 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprVector3i.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprVector3i.java @@ -1,11 +1,11 @@ package com.github.skriptdev.skript.plugin.elements.expressions.other; -import com.hypixel.hytale.math.vector.Vector3i; import io.github.syst3ms.skriptparser.lang.Expression; import io.github.syst3ms.skriptparser.lang.TriggerContext; import io.github.syst3ms.skriptparser.parsing.ParseContext; import io.github.syst3ms.skriptparser.registration.SkriptRegistration; import org.jetbrains.annotations.NotNull; +import org.joml.Vector3i; public class ExprVector3i implements Expression { diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/player/ExprPlayerRespawnLocations.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/player/ExprPlayerRespawnLocations.java index dfd81ef..2ce0b61 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/player/ExprPlayerRespawnLocations.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/player/ExprPlayerRespawnLocations.java @@ -2,7 +2,6 @@ import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3d; import com.hypixel.hytale.server.core.entity.entities.Player; import com.hypixel.hytale.server.core.entity.entities.player.data.PlayerConfigData; import com.hypixel.hytale.server.core.entity.entities.player.data.PlayerRespawnPointData; @@ -13,6 +12,7 @@ import io.github.syst3ms.skriptparser.lang.TriggerContext; import io.github.syst3ms.skriptparser.parsing.ParseContext; import org.jetbrains.annotations.NotNull; +import org.joml.Vector3d; import java.util.ArrayList; import java.util.Collections; diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/ref/ExprComponentsInRadius.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/ref/ExprComponentsInRadius.java index c549bbf..e585e4c 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/ref/ExprComponentsInRadius.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/ref/ExprComponentsInRadius.java @@ -2,12 +2,12 @@ import com.github.skriptdev.skript.api.hytale.utils.EntityReferenceUtils; import com.github.skriptdev.skript.api.hytale.utils.EntityReferenceUtils.ReferenceType; +import com.github.skriptdev.skript.api.hytale.utils.LocationUtils; import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration; import com.hypixel.hytale.component.Component; import com.hypixel.hytale.component.Ref; import com.hypixel.hytale.component.Store; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3d; import com.hypixel.hytale.server.core.universe.Universe; import com.hypixel.hytale.server.core.universe.world.World; import com.hypixel.hytale.server.core.universe.world.storage.EntityStore; @@ -19,6 +19,7 @@ import io.github.syst3ms.skriptparser.types.Type; import io.github.syst3ms.skriptparser.types.TypeManager; import org.jetbrains.annotations.NotNull; +import org.joml.Vector3d; import java.util.ArrayList; import java.util.List; @@ -125,8 +126,10 @@ public Object[] getValues(@NotNull TriggerContext ctx) { if (world == null) return null; Store store = world.getEntityStore().getStore(); - Vector3d min = Vector3d.min(loc1.getPosition(), loc2.getPosition()); - Vector3d max = Vector3d.max(loc1.getPosition(), loc2.getPosition()); + loc1 = LocationUtils.clone(loc1); + loc2 = LocationUtils.clone(loc2); + Vector3d min = loc1.getPosition().min(loc2.getPosition()); + Vector3d max = loc1.getPosition().max(loc2.getPosition()); List> refsInBox = EntityReferenceUtils.getRefsInBox(min, max, store); for (Ref inBox : refsInBox) { diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/ref/ExprRefInRadius.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/ref/ExprRefInRadius.java index 4b85d4c..913f77b 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/ref/ExprRefInRadius.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/ref/ExprRefInRadius.java @@ -1,11 +1,11 @@ package com.github.skriptdev.skript.plugin.elements.expressions.ref; import com.github.skriptdev.skript.api.hytale.utils.EntityReferenceUtils; +import com.github.skriptdev.skript.api.hytale.utils.LocationUtils; import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration; import com.hypixel.hytale.component.Ref; import com.hypixel.hytale.component.Store; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3d; import com.hypixel.hytale.server.core.universe.Universe; import com.hypixel.hytale.server.core.universe.world.World; import com.hypixel.hytale.server.core.universe.world.storage.EntityStore; @@ -13,6 +13,7 @@ import io.github.syst3ms.skriptparser.lang.TriggerContext; import io.github.syst3ms.skriptparser.parsing.ParseContext; import org.jetbrains.annotations.NotNull; +import org.joml.Vector3d; import java.util.ArrayList; import java.util.List; @@ -86,8 +87,10 @@ public Ref[] getValues(@NotNull TriggerContext ctx) { if (world == null) return null; Store store = world.getEntityStore().getStore(); - Vector3d min = Vector3d.min(loc1.getPosition(), loc2.getPosition()); - Vector3d max = Vector3d.max(loc1.getPosition(), loc2.getPosition()); + loc1 = LocationUtils.clone(loc1); + loc2 = LocationUtils.clone(loc2); + Vector3d min = loc1.getPosition().min(loc2.getPosition()); + Vector3d max = loc1.getPosition().max(loc2.getPosition()); List> refsInBox = EntityReferenceUtils.getRefsInBox(min, max, store); refs.addAll(refsInBox); diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/world/ExprChunkAtLocation.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/world/ExprChunkAtLocation.java index 89138be..cab980f 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/world/ExprChunkAtLocation.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/world/ExprChunkAtLocation.java @@ -3,7 +3,6 @@ import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration; import com.hypixel.hytale.math.util.ChunkUtil; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3i; import com.hypixel.hytale.server.core.universe.Universe; import com.hypixel.hytale.server.core.universe.world.World; import com.hypixel.hytale.server.core.universe.world.chunk.WorldChunk; @@ -11,6 +10,8 @@ import io.github.syst3ms.skriptparser.lang.TriggerContext; import io.github.syst3ms.skriptparser.parsing.ParseContext; import org.jetbrains.annotations.NotNull; +import org.joml.RoundingMode; +import org.joml.Vector3i; public class ExprChunkAtLocation implements Expression { @@ -47,9 +48,9 @@ public WorldChunk[] getValues(@NotNull TriggerContext ctx) { World world = Universe.get().getWorld(worldName); if (world == null) continue; - Vector3i pos = location.getPosition().toVector3i(); + Vector3i pos = new Vector3i(location.getPosition(), RoundingMode.FLOOR); - long index = ChunkUtil.indexChunkFromBlock(pos.getX(), pos.getZ()); + long index = ChunkUtil.indexChunkFromBlock(pos.x(), pos.z()); chunks[i] = world.getChunk(index); } diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/world/ExprEnvironmentAtLocation.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/world/ExprEnvironmentAtLocation.java index a56de8c..a82fca6 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/world/ExprEnvironmentAtLocation.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/world/ExprEnvironmentAtLocation.java @@ -4,7 +4,6 @@ import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration; import com.hypixel.hytale.math.util.ChunkUtil; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3i; import com.hypixel.hytale.server.core.asset.type.environment.config.Environment; import com.hypixel.hytale.server.core.universe.Universe; import com.hypixel.hytale.server.core.universe.world.World; @@ -15,6 +14,8 @@ import io.github.syst3ms.skriptparser.parsing.ParseContext; import io.github.syst3ms.skriptparser.types.changers.ChangeMode; import org.jetbrains.annotations.NotNull; +import org.joml.RoundingMode; +import org.joml.Vector3i; import java.util.ArrayList; import java.util.List; @@ -58,18 +59,18 @@ public Environment[] getValues(@NotNull TriggerContext ctx) { Location loc2 = this.loc2.getSingle(ctx).orElse(null); if (loc2 == null) return null; - Vector3i pos1 = loc1.getPosition().toVector3i(); - Vector3i pos2 = loc2.getPosition().toVector3i(); + Vector3i pos1 = new Vector3i(loc1.getPosition(), RoundingMode.FLOOR); + Vector3i pos2 = new Vector3i(loc2.getPosition(), RoundingMode.FLOOR); - Vector3i posLow = Vector3i.min(pos1, pos2); - Vector3i posHigh = Vector3i.max(pos1, pos2); + Vector3i posLow = pos1.min(pos2); + Vector3i posHigh = pos1.max(pos2); List environments = new ArrayList<>(); - for (int x = posLow.getX(); x < posHigh.getX(); x++) { - for (int z = posLow.getZ(); x < posHigh.getZ(); x++) { + for (int x = posLow.x(); x < posHigh.x(); x++) { + for (int z = posLow.z(); x < posHigh.z(); x++) { long chunkIndex = ChunkUtil.indexChunk(x, z); - for (int y = posLow.getY(); x < posHigh.getY(); x++) { + for (int y = posLow.y(); x < posHigh.y(); x++) { WorldChunk chunk = world.getChunk(chunkIndex); if (chunk == null) continue; @@ -88,7 +89,7 @@ public Environment[] getValues(@NotNull TriggerContext ctx) { BlockChunk blockChunk = getBlockChunk(loc1); if (blockChunk == null) return null; - Vector3i position = loc1.getPosition().toVector3i(); + Vector3i position = new Vector3i(loc1.getPosition(), RoundingMode.FLOOR); int id = blockChunk.getEnvironment(position); return new Environment[]{AssetStoreUtils.getEnvironment(id)}; } @@ -118,20 +119,20 @@ public void change(@NotNull TriggerContext ctx, @NotNull ChangeMode changeMode, Location loc2 = this.loc2.getSingle(ctx).orElse(null); if (loc2 == null) return; - Vector3i pos1 = loc1.getPosition().toVector3i(); - Vector3i pos2 = loc2.getPosition().toVector3i(); + Vector3i pos1 = new Vector3i(loc1.getPosition(), RoundingMode.FLOOR); + Vector3i pos2 = new Vector3i(loc2.getPosition(), RoundingMode.FLOOR); - Vector3i posLow = Vector3i.min(pos1, pos2); - Vector3i posHigh = Vector3i.max(pos1, pos2); + Vector3i posLow = pos1.min(pos2); + Vector3i posHigh = pos1.max(pos2); List chunkIndexes = new ArrayList<>(); - for (int x = posLow.getX(); x < posHigh.getX(); x++) { - for (int z = posLow.getZ(); z < posHigh.getZ(); z++) { + for (int x = posLow.x(); x < posHigh.x(); x++) { + for (int z = posLow.z(); z < posHigh.z(); z++) { long chunkIndex = ChunkUtil.indexChunk(x, z); if (!chunkIndexes.contains(chunkIndex)) { chunkIndexes.add(chunkIndex); } - for (int y = posLow.getY(); y < posHigh.getY(); y++) { + for (int y = posLow.y(); y < posHigh.y(); y++) { WorldChunk chunk = world.getChunk(chunkIndex); if (chunk == null) continue; @@ -150,11 +151,11 @@ public void change(@NotNull TriggerContext ctx, @NotNull ChangeMode changeMode, BlockChunk blockChunk = getBlockChunk(loc1); if (blockChunk == null) return; - Vector3i position = loc1.getPosition().toVector3i(); + Vector3i position = new Vector3i(loc1.getPosition(), RoundingMode.FLOOR); - int x = position.getX(); - int y = position.getY(); - int z = position.getZ(); + int x = position.x(); + int y = position.y(); + int z = position.z(); blockChunk.setEnvironment(x, y, z, index); @@ -168,9 +169,9 @@ private BlockChunk getBlockChunk(Location location) { World world = Universe.get().getWorld(worldName); if (world == null) return null; - Vector3i position = location.getPosition().toVector3i(); + Vector3i position = new Vector3i(location.getPosition(), RoundingMode.FLOOR); - WorldChunk chunk = world.getChunk(ChunkUtil.indexChunkFromBlock(position.getX(), position.getZ())); + WorldChunk chunk = world.getChunk(ChunkUtil.indexChunkFromBlock(position.x(), position.z())); if (chunk == null) return null; return chunk.getBlockChunk(); diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/world/ExprRelativePositionResolve.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/world/ExprRelativePositionResolve.java index 80ebbfd..3c29735 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/world/ExprRelativePositionResolve.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/world/ExprRelativePositionResolve.java @@ -2,9 +2,7 @@ import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3d; -import com.hypixel.hytale.math.vector.Vector3f; -import com.hypixel.hytale.math.vector.Vector3i; +import com.hypixel.hytale.math.vector.Rotation3f; import com.hypixel.hytale.server.core.command.system.arguments.types.RelativeDoublePosition; import com.hypixel.hytale.server.core.command.system.arguments.types.RelativeIntPosition; import com.hypixel.hytale.server.core.universe.Universe; @@ -13,6 +11,8 @@ import io.github.syst3ms.skriptparser.lang.TriggerContext; import io.github.syst3ms.skriptparser.parsing.ParseContext; import org.jetbrains.annotations.NotNull; +import org.joml.Vector3d; +import org.joml.Vector3i; public class ExprRelativePositionResolve implements Expression { @@ -50,14 +50,14 @@ public Location[] getValues(@NotNull TriggerContext ctx) { World world = Universe.get().getWorld(location.getWorld()); if (world == null) return null; - Vector3f rotation = location.getRotation().clone(); + Rotation3f rotation = location.getRotation(); Location relativeLocation; if (o instanceof RelativeDoublePosition d) { - Vector3d pos = d.getRelativePosition(location.getPosition().clone(), world); + Vector3d pos = d.getRelativePosition(location.getPosition(), world); relativeLocation = new Location(location.getWorld(), pos, rotation); } else if (o instanceof RelativeIntPosition i) { - Vector3i pos = i.getBlockPosition(location.getPosition().clone(), world.getChunkStore()); - relativeLocation = new Location(location.getWorld(), pos.toVector3d(), rotation); + Vector3i pos = i.getBlockPosition(location.getPosition(), world.getChunkStore()); + relativeLocation = new Location(location.getWorld(), new Vector3d(pos), rotation); } else { return null; } diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/world/ExprWorldSpawn.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/world/ExprWorldSpawn.java index 04886dd..aaa44a6 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/world/ExprWorldSpawn.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/world/ExprWorldSpawn.java @@ -1,10 +1,8 @@ package com.github.skriptdev.skript.plugin.elements.expressions.world; import com.hypixel.hytale.math.vector.Location; +import com.hypixel.hytale.math.vector.Rotation3f; import com.hypixel.hytale.math.vector.Transform; -import com.hypixel.hytale.math.vector.Vector3d; -import com.hypixel.hytale.math.vector.Vector3f; -import com.hypixel.hytale.math.vector.Vector3i; import com.hypixel.hytale.server.core.universe.world.World; import com.hypixel.hytale.server.core.universe.world.WorldConfig; import com.hypixel.hytale.server.core.universe.world.spawn.GlobalSpawnProvider; @@ -15,6 +13,9 @@ import io.github.syst3ms.skriptparser.types.changers.ChangeMode; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.joml.Vector3d; +import org.joml.Vector3f; +import org.joml.Vector3i; import java.util.Optional; import java.util.UUID; @@ -60,9 +61,9 @@ public void change(@NotNull TriggerContext ctx, @NotNull ChangeMode changeMode, Object object = changeWith[0]; Transform transform = switch (object) { case Location location -> location.toTransform(); - case Vector3i vector3i -> new Transform(vector3i.toVector3d(), Vector3f.ZERO); - case Vector3d vector3d -> new Transform(vector3d, Vector3f.ZERO); - case Vector3f vector3f -> new Transform(vector3f.toVector3d(), Vector3f.ZERO); + case Vector3i vector3i -> new Transform(new Vector3d(vector3i), (Rotation3f) Rotation3f.ZERO); + case Vector3d vector3d -> new Transform(vector3d, (Rotation3f) Rotation3f.ZERO); + case Vector3f vector3f -> new Transform(new Vector3d(vector3f), (Rotation3f) Rotation3f.ZERO); case null, default -> null; }; if (transform == null) return; diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/functions/DefaultFunctions.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/functions/DefaultFunctions.java index d955313..b01d4da 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/functions/DefaultFunctions.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/functions/DefaultFunctions.java @@ -4,9 +4,6 @@ import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration; import com.hypixel.hytale.math.shape.Box; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3d; -import com.hypixel.hytale.math.vector.Vector3f; -import com.hypixel.hytale.math.vector.Vector3i; import com.hypixel.hytale.protocol.packets.worldmap.ContextMenuItem; import com.hypixel.hytale.server.core.asset.type.item.config.Item; import com.hypixel.hytale.server.core.entity.entities.Player; @@ -19,6 +16,9 @@ import io.github.syst3ms.skriptparser.util.SkriptDate; import io.github.syst3ms.skriptparser.util.Time; import org.bson.BsonDocument; +import org.joml.Vector3d; +import org.joml.Vector3f; +import org.joml.Vector3i; import java.time.LocalDateTime; import java.time.ZoneOffset; diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/sections/entity/SecDropItem.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/sections/entity/SecDropItem.java index 2bbb412..fe29d26 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/sections/entity/SecDropItem.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/sections/entity/SecDropItem.java @@ -3,10 +3,10 @@ import com.github.skriptdev.skript.api.hytale.utils.EntityUtils; import com.github.skriptdev.skript.api.skript.event.RefContext; import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration; +import com.github.skriptdev.skript.api.utils.VectorUtils; import com.hypixel.hytale.component.Ref; import com.hypixel.hytale.component.Store; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3f; import com.hypixel.hytale.server.core.asset.type.item.config.Item; import com.hypixel.hytale.server.core.inventory.ItemStack; import com.hypixel.hytale.server.core.modules.entity.item.ItemComponent; @@ -22,6 +22,7 @@ import io.github.syst3ms.skriptparser.util.Pair; import io.github.syst3ms.skriptparser.variables.Variables; import org.jetbrains.annotations.NotNull; +import org.joml.Vector3f; import java.time.Duration; import java.util.ArrayList; @@ -105,10 +106,10 @@ public Optional walk(@NotNull TriggerContext ctx) { if (single.isPresent()) { velocity = single.get(); } else { - velocity = Vector3f.ZERO; + velocity = VectorUtils.ZERO_3f; } } else { - velocity = Vector3f.ZERO; + velocity = VectorUtils.ZERO_3f; } float pickupDelay; diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/sections/entity/SecSpawnNPC.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/sections/entity/SecSpawnNPC.java index d74df38..233c1c4 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/sections/entity/SecSpawnNPC.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/sections/entity/SecSpawnNPC.java @@ -3,7 +3,7 @@ import com.github.skriptdev.skript.api.skript.registration.NPCRegistry; import com.hypixel.hytale.component.Store; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3f; +import com.hypixel.hytale.math.vector.Rotation3f; import com.hypixel.hytale.server.core.entity.Entity; import com.hypixel.hytale.server.core.universe.Universe; import com.hypixel.hytale.server.core.universe.world.World; @@ -20,6 +20,7 @@ import io.github.syst3ms.skriptparser.variables.VariableMap; import io.github.syst3ms.skriptparser.variables.Variables; import org.jetbrains.annotations.NotNull; +import org.joml.Vector3d; import java.util.ArrayList; import java.util.HashSet; @@ -94,15 +95,15 @@ public Optional walk(@NotNull TriggerContext ctx) { Optional firstStatement = getFirst(); - Vector3f rotation = location.getRotation().clone(); - if (Float.isNaN(rotation.getX())) rotation = Vector3f.ZERO; + Rotation3f rotation = location.getRotation().clone(); + if (Float.isNaN(rotation.x())) rotation = (Rotation3f) Rotation3f.ZERO; AtomicReference vars = new AtomicReference<>(); VariableMap variableMap = Variables.copyLocalVariables(ctx); vars.set(variableMap); Variables.clearLocalVariables(ctx); - NPCPlugin.get().spawnEntity(store, roleSingle.get().index(), location.getPosition().clone(), rotation, null, null, + NPCPlugin.get().spawnEntity(store, roleSingle.get().index(), new Vector3d(location.getPosition()), rotation, null, null, (npcEntity, entityStoreRef, entityStoreStore) -> { SpawnMobContext spawnMobContext = new SpawnMobContext(npcEntity); setNext(null); diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/sections/player/SecPlaySound.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/sections/player/SecPlaySound.java index 22abdfb..1371ab7 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/sections/player/SecPlaySound.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/sections/player/SecPlaySound.java @@ -5,7 +5,6 @@ import com.hypixel.hytale.component.Ref; import com.hypixel.hytale.component.Store; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3d; import com.hypixel.hytale.protocol.SoundCategory; import com.hypixel.hytale.server.core.asset.type.soundevent.config.SoundEvent; import com.hypixel.hytale.server.core.entity.entities.Player; @@ -25,6 +24,7 @@ import io.github.syst3ms.skriptparser.parsing.ParserState; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.joml.Vector3d; import java.util.Optional; @@ -135,7 +135,7 @@ public void playSoundToPlayer(@NotNull Object[] players, @Nullable Location loca Store store = reference.getStore(); SoundUtil.playSoundEvent3dToPlayer(reference, soundEvent, category, - pos.getX(), pos.getY(), pos.getZ(), volume, pitch, store); + pos.x(), pos.y(), pos.z(), volume, pitch, store); } else { SoundUtil.playSoundEvent2dToPlayer(playerRef, soundEvent, category, volume, pitch); } @@ -153,7 +153,7 @@ public void playSoundAtLocation(@NotNull Location location, int soundEvent, Soun Store store = world.getEntityStore().getStore(); if (is3d) { Vector3d pos = location.getPosition(); - SoundUtil.playSoundEvent3d(soundEvent, category, pos.getX(), pos.getY(), pos.getZ(), volume, pitch, store); + SoundUtil.playSoundEvent3d(soundEvent, category, pos.x(), pos.y(), pos.z(), volume, pitch, store); } else { SoundUtil.playSoundEvent2d(soundEvent, category, volume, pitch, store); } diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/sections/world/SecParticle.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/sections/world/SecParticle.java index 10bdb22..41e75b8 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/sections/world/SecParticle.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/sections/world/SecParticle.java @@ -1,12 +1,12 @@ package com.github.skriptdev.skript.plugin.elements.sections.world; import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration; +import com.github.skriptdev.skript.api.utils.VectorUtils; import com.hypixel.hytale.component.Ref; import com.hypixel.hytale.component.Store; import com.hypixel.hytale.component.spatial.SpatialResource; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3d; -import com.hypixel.hytale.math.vector.Vector3f; +import com.hypixel.hytale.math.vector.Rotation3f; import com.hypixel.hytale.server.core.asset.type.particle.config.ParticleSystem; import com.hypixel.hytale.server.core.entity.Entity; import com.hypixel.hytale.server.core.entity.entities.Player; @@ -28,6 +28,8 @@ import io.github.syst3ms.skriptparser.util.color.Color; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.joml.Vector3d; +import org.joml.Vector3f; import java.util.ArrayList; import java.util.List; @@ -95,12 +97,12 @@ public Optional walk(@NotNull TriggerContext ctx) { } Vector3d pos = location.getPosition(); - Vector3f rotation = location.getRotation(); + Rotation3f rotation = location.getRotation(); Expression vecExpr = this.config.getExpression("rotation", Vector3f.class).orElse(null); if (vecExpr != null) { Vector3f vec = vecExpr.getSingle(ctx).orElse(null); - if (vec != null) rotation = vec; + if (vec != null) rotation = VectorUtils.rotFromVec3f(vec); } float scale = 1.0f; @@ -154,15 +156,15 @@ public Optional walk(@NotNull TriggerContext ctx) { receivers.addAll(playerRefs); } - float yaw = rotation.getYaw(); - float pitch = rotation.getPitch(); - float roll = rotation.getRoll(); + float yaw = rotation.yaw(); + float pitch = rotation.pitch(); + float roll = rotation.roll(); if (Float.isNaN(yaw)) yaw = 0; if (Float.isNaN(pitch)) pitch = 0; if (Float.isNaN(roll)) roll = 0; ParticleUtil.spawnParticleEffect(particleId, - pos.getX(), pos.getY(), pos.getZ(), + pos.x(), pos.y(), pos.z(), yaw, pitch, roll, scale, getHytaleColor(color), diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/types/DefaultConverters.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/types/DefaultConverters.java index bcdacc0..252dfc6 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/types/DefaultConverters.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/types/DefaultConverters.java @@ -3,8 +3,7 @@ import com.github.skriptdev.skript.api.hytale.utils.EntityUtils; import com.github.skriptdev.skript.api.skript.registration.NPCRegistry; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3d; -import com.hypixel.hytale.math.vector.Vector3f; +import com.hypixel.hytale.math.vector.Rotation3f; import com.hypixel.hytale.server.core.Message; import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType; import com.hypixel.hytale.server.core.asset.type.item.config.Item; @@ -16,6 +15,7 @@ import com.hypixel.hytale.server.core.universe.world.World; import com.hypixel.hytale.server.core.util.MessageUtil; import io.github.syst3ms.skriptparser.types.conversions.Converters; +import org.joml.Vector3d; import java.util.Optional; @@ -50,7 +50,7 @@ private static void entity() { if (component == null) return Optional.empty(); Vector3d pos = component.getPosition(); - Vector3f rotation = component.getRotation(); + Rotation3f rotation = component.getRotation(); Location location = new Location(world.getName(), pos, rotation); return Optional.of(location); }); @@ -64,7 +64,7 @@ private static void entity() { if (component == null) return Optional.empty(); Vector3d pos = component.getPosition(); - Vector3f rotation = component.getRotation(); + Rotation3f rotation = component.getRotation(); Location location = new Location(world.getName(), pos, rotation); return Optional.of(location); }); diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/types/TypesPlayer.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/types/TypesPlayer.java index 2306536..5611b94 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/types/TypesPlayer.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/types/TypesPlayer.java @@ -1,6 +1,7 @@ package com.github.skriptdev.skript.plugin.elements.types; import com.github.skriptdev.skript.api.hytale.utils.EntityUtils; +import com.github.skriptdev.skript.api.hytale.utils.PlayerUtils; import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration; import com.hypixel.hytale.protocol.GameMode; import com.hypixel.hytale.server.core.entity.entities.Player; @@ -21,7 +22,7 @@ public static void register(SkriptRegistration reg) { .name("Player") .description("Represents a player in the game.") .since("1.0.0") - .toStringFunction(Player::getDisplayName) + .toStringFunction(PlayerUtils::getUsername) .toVariableNameFunction(player -> { UUID uuid = EntityUtils.getUUID(player); assert uuid != null; // A player's UUID should never be null diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/types/TypesServer.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/types/TypesServer.java index a2f9e13..adb3409 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/types/TypesServer.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/types/TypesServer.java @@ -7,10 +7,10 @@ import com.hypixel.hytale.codec.ExtraInfo; import com.hypixel.hytale.math.shape.Box; import com.hypixel.hytale.math.vector.Location; -import com.hypixel.hytale.math.vector.Vector3d; -import com.hypixel.hytale.math.vector.Vector3f; -import com.hypixel.hytale.math.vector.Vector3i; -import com.hypixel.hytale.protocol.Vector2f; +import com.hypixel.hytale.math.vector.Rotation3f; +import com.hypixel.hytale.math.vector.Vector3dUtil; +import com.hypixel.hytale.math.vector.Vector3fUtil; +import com.hypixel.hytale.math.vector.Vector3iUtil; import com.hypixel.hytale.protocol.packets.interface_.NotificationStyle; import com.hypixel.hytale.protocol.packets.worldmap.ContextMenuItem; import com.hypixel.hytale.server.core.HytaleServer; @@ -26,6 +26,10 @@ import org.bson.BsonString; import org.bson.BsonValue; import org.jetbrains.annotations.NotNull; +import org.joml.Vector2f; +import org.joml.Vector3d; +import org.joml.Vector3f; +import org.joml.Vector3i; public class TypesServer { @@ -50,7 +54,7 @@ static void register(SkriptRegistration registration) { .name("Command Sender") .description("Represents a command sender such as a player or the console.") .since("1.0.0") - .toStringFunction(CommandSender::getDisplayName) + .toStringFunction(CommandSender::getUsername) .register(); registration.newType(ContextMenuItem.class, "contextmenuitem", "contextMenuItem@s") .name("Context Menu Item") @@ -115,14 +119,15 @@ public Message deserialize(@NotNull Gson gson, @NotNull JsonElement element) { .serializer(new TypeSerializer<>() { @Override public JsonElement serialize(@NotNull Gson gson, @NotNull Vector3f value) { - BsonDocument encode = Vector3f.CODEC.encode(value, new ExtraInfo()); + + BsonDocument encode = Vector3fUtil.CODEC.encode(value, new ExtraInfo()); return gson.fromJson(encode.toJson(), JsonElement.class); } @Override public Vector3f deserialize(@NotNull Gson gson, @NotNull JsonElement element) { BsonDocument decode = BsonDocument.parse(element.toString()); - return Vector3f.CODEC.decode(decode, new ExtraInfo()); + return Vector3fUtil.CODEC.decode(decode, new ExtraInfo()); } }) .register(); @@ -134,14 +139,14 @@ public Vector3f deserialize(@NotNull Gson gson, @NotNull JsonElement element) { .serializer(new TypeSerializer<>() { @Override public JsonElement serialize(@NotNull Gson gson, @NotNull Vector3d value) { - BsonDocument encode = Vector3d.CODEC.encode(value, new ExtraInfo()); + BsonDocument encode = Vector3dUtil.CODEC.encode(value, new ExtraInfo()); return gson.fromJson(encode.toJson(), JsonElement.class); } @Override public Vector3d deserialize(@NotNull Gson gson, @NotNull JsonElement element) { BsonDocument decode = BsonDocument.parse(element.toString()); - return Vector3d.CODEC.decode(decode, new ExtraInfo()); + return Vector3dUtil.CODEC.decode(decode, new ExtraInfo()); } }) .register(); @@ -153,14 +158,14 @@ public Vector3d deserialize(@NotNull Gson gson, @NotNull JsonElement element) { .serializer(new TypeSerializer<>() { @Override public JsonElement serialize(@NotNull Gson gson, @NotNull Vector3i value) { - BsonDocument encode = Vector3i.CODEC.encode(value, new ExtraInfo()); + BsonDocument encode = Vector3iUtil.CODEC.encode(value, new ExtraInfo()); return gson.fromJson(encode.toJson(), JsonElement.class); } @Override public Vector3i deserialize(@NotNull Gson gson, @NotNull JsonElement element) { BsonDocument decode = BsonDocument.parse(element.toString()); - return Vector3i.CODEC.decode(decode, new ExtraInfo()); + return Vector3iUtil.CODEC.decode(decode, new ExtraInfo()); } }) .register(); @@ -177,8 +182,8 @@ public JsonElement serialize(@NotNull Gson gson, @NotNull Location location) { // This shouldn't be null, but let's be safe bsonDocument.put("world", new BsonString(world)); } - bsonDocument.put("position", Vector3d.CODEC.encode(location.getPosition(), new ExtraInfo())); - bsonDocument.put("rotation", Vector3f.CODEC.encode(location.getRotation(), new ExtraInfo())); + bsonDocument.put("position", Vector3dUtil.CODEC.encode(location.getPosition(), new ExtraInfo())); + bsonDocument.put("rotation", Rotation3f.CODEC.encode(location.getRotation(), new ExtraInfo())); return gson.fromJson(bsonDocument.toJson(), JsonElement.class); } @@ -186,8 +191,8 @@ public JsonElement serialize(@NotNull Gson gson, @NotNull Location location) { @Override public Location deserialize(@NotNull Gson gson, @NotNull JsonElement element) { BsonDocument decode = BsonDocument.parse(element.toString()); - Vector3d position = Vector3d.CODEC.decode(decode.get("position"), new ExtraInfo()); - Vector3f rotation = Vector3f.CODEC.decode(decode.get("rotation"), new ExtraInfo()); + Vector3d position = Vector3dUtil.CODEC.decode(decode.get("position"), new ExtraInfo()); + Rotation3f rotation = Rotation3f.CODEC.decode(decode.get("rotation"), new ExtraInfo()); String world = null; if (decode.containsKey("world")) { From 33d1a52026dd79b43f94165fee533664468d482a Mon Sep 17 00:00:00 2001 From: ShaneBeee Date: Thu, 16 Apr 2026 10:42:42 -0700 Subject: [PATCH 3/3] more updates for update 5 --- build.gradle.kts | 2 +- .../events/player/EvtPlayerMouseClick.java | 9 +++++---- .../events/player/EvtPlayerMouseMove.java | 9 +++++---- .../expressions/entity/ExprActiveSlot.java | 1 - .../other/ExprMessageProperties.java | 19 +++++-------------- 5 files changed, 16 insertions(+), 24 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 73cb8b4..f56600e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,7 +9,7 @@ java.sourceCompatibility = JavaVersion.VERSION_25 group = "com.github.SkriptDev" val projectVersion = "1.6.0" -val hytaleVersion = "2026.04.09-7243e82f8" +val hytaleVersion = "2026.04.16-5cbd1e160" // You can find Hytale versions on their maven repo: // https://maven.hytale.com/release/com/hypixel/hytale/Server/maven-metadata.xml // https://maven.hytale.com/pre-release/com/hypixel/hytale/Server/maven-metadata.xml diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/events/player/EvtPlayerMouseClick.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/events/player/EvtPlayerMouseClick.java index 02d4713..291c768 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/events/player/EvtPlayerMouseClick.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/events/player/EvtPlayerMouseClick.java @@ -4,12 +4,13 @@ import com.github.skriptdev.skript.api.skript.event.PlayerContext; import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration; import com.github.skriptdev.skript.plugin.HySk; +import com.hypixel.hytale.component.Ref; import com.hypixel.hytale.event.EventRegistration; import com.hypixel.hytale.protocol.MouseButtonEvent; import com.hypixel.hytale.server.core.asset.type.item.config.Item; -import com.hypixel.hytale.server.core.entity.Entity; import com.hypixel.hytale.server.core.entity.entities.Player; import com.hypixel.hytale.server.core.event.events.player.PlayerMouseButtonEvent; +import com.hypixel.hytale.server.core.universe.world.storage.EntityStore; import io.github.syst3ms.skriptparser.lang.Expression; import io.github.syst3ms.skriptparser.lang.TriggerContext; import io.github.syst3ms.skriptparser.lang.TriggerMap; @@ -31,7 +32,7 @@ public static void register(SkriptRegistration reg) { .register(); reg.addSingleContextValue(MouseClickContext.class, Item.class, "item", MouseClickContext::getItemInHand); - reg.addSingleContextValue(MouseClickContext.class, Entity.class, "target-entity", MouseClickContext::getTargetEntity); + reg.addSingleContextValue(MouseClickContext.class, Ref.class, "target-entity-ref", MouseClickContext::getTargetEntity); reg.addSingleContextValue(MouseClickContext.class, Vector3i.class, "target-block", MouseClickContext::getTargetBlock); reg.addSingleContextValue(MouseClickContext.class, Vector2f.class, "screen-point", MouseClickContext::getScreenPoint); //reg.addSingleContextValue(MouseClickContext.class, MouseButtonEvent.class, "mouse-button", MouseClickContext::getMouseButton); @@ -70,8 +71,8 @@ private Item getItemInHand() { return this.event.getItemInHand(); } - private Entity getTargetEntity() { - return this.event.getTargetEntity(); + private Ref getTargetEntity() { + return this.event.getTargetEntityRef(); } private Vector3i getTargetBlock() { diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/events/player/EvtPlayerMouseMove.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/events/player/EvtPlayerMouseMove.java index 3757684..1bd3721 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/events/player/EvtPlayerMouseMove.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/events/player/EvtPlayerMouseMove.java @@ -4,12 +4,13 @@ import com.github.skriptdev.skript.api.skript.event.PlayerContext; import com.github.skriptdev.skript.api.skript.registration.SkriptRegistration; import com.github.skriptdev.skript.plugin.HySk; +import com.hypixel.hytale.component.Ref; import com.hypixel.hytale.event.EventRegistration; import com.hypixel.hytale.protocol.MouseMotionEvent; import com.hypixel.hytale.server.core.asset.type.item.config.Item; -import com.hypixel.hytale.server.core.entity.Entity; import com.hypixel.hytale.server.core.entity.entities.Player; import com.hypixel.hytale.server.core.event.events.player.PlayerMouseMotionEvent; +import com.hypixel.hytale.server.core.universe.world.storage.EntityStore; import io.github.syst3ms.skriptparser.lang.Expression; import io.github.syst3ms.skriptparser.lang.TriggerContext; import io.github.syst3ms.skriptparser.lang.TriggerMap; @@ -31,7 +32,7 @@ public static void register(SkriptRegistration reg) { .register(); reg.addSingleContextValue(MouseMoveContext.class, Item.class, "item", MouseMoveContext::getItemInHand); - reg.addSingleContextValue(MouseMoveContext.class, Entity.class, "target-entity", MouseMoveContext::getTargetEntity); + reg.addSingleContextValue(MouseMoveContext.class, Ref.class, "target-entity-ref", MouseMoveContext::getTargetEntity); reg.addSingleContextValue(MouseMoveContext.class, Vector3i.class, "target-block", MouseMoveContext::getTargetBlock); reg.addSingleContextValue(MouseMoveContext.class, Vector2f.class, "screen-point", MouseMoveContext::getScreenPoint); //reg.addSingleContextValue(MouseMoveContext.class, MouseMotionEvent.class, "mouse-motion", MouseMoveContext::getMouseMotion); @@ -70,8 +71,8 @@ private Item getItemInHand() { return this.event.getItemInHand(); } - private Entity getTargetEntity() { - return this.event.getTargetEntity(); + private Ref getTargetEntity() { + return this.event.getTargetEntityRef(); } private Vector3i getTargetBlock() { diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/entity/ExprActiveSlot.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/entity/ExprActiveSlot.java index 2af45d2..b62ba37 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/entity/ExprActiveSlot.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/entity/ExprActiveSlot.java @@ -110,7 +110,6 @@ public void change(@NotNull TriggerContext ctx, @NotNull ChangeMode changeMode, component.markDirty(); } } - entity.invalidateEquipmentNetwork(); } } diff --git a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprMessageProperties.java b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprMessageProperties.java index 10b35d8..3f559be 100644 --- a/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprMessageProperties.java +++ b/src/main/java/com/github/skriptdev/skript/plugin/elements/expressions/other/ExprMessageProperties.java @@ -1,6 +1,5 @@ package com.github.skriptdev.skript.plugin.elements.expressions.other; -import com.hypixel.hytale.protocol.MaybeBool; import com.hypixel.hytale.server.core.Message; import io.github.syst3ms.skriptparser.lang.Expression; import io.github.syst3ms.skriptparser.lang.TriggerContext; @@ -46,10 +45,10 @@ public Boolean[] getValues(@NotNull TriggerContext ctx) { Message message = messageSingle.get(); Boolean value = switch (this.pattern) { - case 0 -> translateMaybeBool(message.getFormattedMessage().bold); - case 1 -> translateMaybeBool(message.getFormattedMessage().italic); - case 2 -> translateMaybeBool(message.getFormattedMessage().monospace); - case 3 -> translateMaybeBool(message.getFormattedMessage().underlined); + case 0 -> message.getFormattedMessage().bold; + case 1 -> message.getFormattedMessage().italic; + case 2 -> message.getFormattedMessage().monospace; + case 3 -> message.getFormattedMessage().underlined; case 4 -> message.getFormattedMessage().markupEnabled; default -> null; }; @@ -72,7 +71,7 @@ public void change(@NotNull TriggerContext ctx, @NotNull ChangeMode changeMode, case 0 -> message.bold(bool); case 1 -> message.italic(bool); case 2 -> message.monospace(bool); - case 3 -> message.getFormattedMessage().underlined = bool ? MaybeBool.True : MaybeBool.False; + case 3 -> message.getFormattedMessage().underlined = bool; case 4 -> message.getFormattedMessage().markupEnabled = bool; } }); @@ -89,12 +88,4 @@ public String toString(@NotNull TriggerContext ctx, boolean debug) { return s + " message property of " + this.message.toString(ctx, debug); } - private Boolean translateMaybeBool(MaybeBool bool) { - return switch (bool) { - case Null -> null; - case True -> true; - case False -> false; - }; - } - }