diff --git a/.github/workflows/close_invalid_prs.yml b/.github/workflows/close_invalid_prs.yml index 6576bc285..44c763b6d 100644 --- a/.github/workflows/close_invalid_prs.yml +++ b/.github/workflows/close_invalid_prs.yml @@ -1,4 +1,4 @@ -# Thanks paper: https://github.com/lynxplay/paper/blob/master/.github/workflows/close_invalid_prs.yml +# Thanks paper: https://github.com/papermc/paper/blob/master/.github/workflows/close_invalid_prs.yml name: Close invalid PRs on: diff --git a/demo/src/main/java/net/minestom/demo/Main.java b/demo/src/main/java/net/minestom/demo/Main.java index 4b48c7249..f8ddbe0b6 100644 --- a/demo/src/main/java/net/minestom/demo/Main.java +++ b/demo/src/main/java/net/minestom/demo/Main.java @@ -75,6 +75,7 @@ public class Main { commandManager.register(new SetEntityType()); commandManager.register(new RelightCommand()); commandManager.register(new KillCommand()); + commandManager.register(new WeatherCommand()); commandManager.setUnknownCommandCallback((sender, command) -> sender.sendMessage(Component.text("Unknown command", NamedTextColor.RED))); diff --git a/demo/src/main/java/net/minestom/demo/PlayerInit.java b/demo/src/main/java/net/minestom/demo/PlayerInit.java index afb6ab257..4692910c0 100644 --- a/demo/src/main/java/net/minestom/demo/PlayerInit.java +++ b/demo/src/main/java/net/minestom/demo/PlayerInit.java @@ -170,7 +170,7 @@ public class PlayerInit { }); instanceContainer.setChunkSupplier(LightingChunk::new); instanceContainer.setTimeRate(0); - instanceContainer.setTime(18000); + instanceContainer.setTime(12000); // var i2 = new InstanceContainer(UUID.randomUUID(), DimensionType.OVERWORLD, null, NamespaceID.from("minestom:demo")); // instanceManager.registerInstance(i2); diff --git a/demo/src/main/java/net/minestom/demo/commands/WeatherCommand.java b/demo/src/main/java/net/minestom/demo/commands/WeatherCommand.java new file mode 100644 index 000000000..36ace5437 --- /dev/null +++ b/demo/src/main/java/net/minestom/demo/commands/WeatherCommand.java @@ -0,0 +1,29 @@ +package net.minestom.demo.commands; + +import net.minestom.server.command.CommandSender; +import net.minestom.server.command.builder.Command; +import net.minestom.server.command.builder.CommandContext; +import net.minestom.server.command.builder.arguments.ArgumentType; +import net.minestom.server.entity.Player; +import net.minestom.server.instance.Weather; + +public class WeatherCommand extends Command { + public WeatherCommand() { + super("weather"); + + var isRaining = ArgumentType.Boolean("isRaining").setDefaultValue(false); + var rainLevel = ArgumentType.Float("rainLevel").setDefaultValue(0.0f); + var thunderLevel = ArgumentType.Float("thunderLevel").setDefaultValue(0.0f); + var transitionTicks = ArgumentType.Integer("transition").setDefaultValue(0); + addSyntax(this::handleWeather, isRaining, rainLevel, thunderLevel, transitionTicks); + } + + private void handleWeather(CommandSender source, CommandContext context) { + Player player = (Player) source; + boolean isRaining = context.get("isRaining"); + float rainLevel = context.get("rainLevel"); + float thunderLevel = context.get("thunderLevel"); + int transitionTicks = context.get("transition"); + player.getInstance().setWeather(new Weather(isRaining, rainLevel, thunderLevel), transitionTicks); + } +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 64a61ce70..fb1a5af9d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ metadata.format.version = "1.1" [versions] # Important dependencies -data = "1.20.4-rv3" +data = "1.20.4-rv4" adventure = "4.15.0" kotlin = "1.7.22" dependencyGetter = "v1.0.1" diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 41d9927a4..d64cd4917 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index fae08049a..a80b22ce5 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 1b6c78733..1aa94a426 100755 --- a/gradlew +++ b/gradlew @@ -55,7 +55,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -80,13 +80,11 @@ do esac done -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" +# This is normally unused +# shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -133,22 +131,29 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case $MAX_FD in #( '' | soft) :;; #( *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -193,11 +198,15 @@ if "$cygwin" || "$msys" ; then done fi -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ @@ -205,6 +214,12 @@ set -- \ org.gradle.wrapper.GradleWrapperMain \ "$@" +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + # Use "xargs" to parse quoted args. # # With -n1 it outputs one arg per line, with the quotes and backslashes removed. diff --git a/gradlew.bat b/gradlew.bat index 107acd32c..25da30dbd 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -14,7 +14,7 @@ @rem limitations under the License. @rem -@if "%DEBUG%" == "" @echo off +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -25,7 +25,8 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @@ -40,13 +41,13 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute +if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -56,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -75,13 +76,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/src/main/java/net/minestom/server/ServerFlag.java b/src/main/java/net/minestom/server/ServerFlag.java index ea6186905..da00eeb0c 100644 --- a/src/main/java/net/minestom/server/ServerFlag.java +++ b/src/main/java/net/minestom/server/ServerFlag.java @@ -15,6 +15,7 @@ public final class ServerFlag { public static final int SERVER_TICKS_PER_SECOND = Integer.getInteger("minestom.tps", 20); public static final int CHUNK_VIEW_DISTANCE = Integer.getInteger("minestom.chunk-view-distance", 8); public static final int ENTITY_VIEW_DISTANCE = Integer.getInteger("minestom.entity-view-distance", 5); + public static final int ENTITY_SYNCHRONIZATION_TICKS = Integer.getInteger("minestom.entity-synchronization-ticks", 20); public static final int WORKER_COUNT = Integer.getInteger("minestom.workers", Runtime.getRuntime().availableProcessors()); public static final int MAX_PACKET_SIZE = Integer.getInteger("minestom.max-packet-size", 2_097_151); // 3 bytes var-int public static final int SOCKET_SEND_BUFFER_SIZE = Integer.getInteger("minestom.send-buffer-size", 262_143); @@ -22,6 +23,7 @@ public final class ServerFlag { public static final int POOLED_BUFFER_SIZE = Integer.getInteger("minestom.pooled-buffer-size", 262_143); public static final int PLAYER_PACKET_PER_TICK = Integer.getInteger("minestom.packet-per-tick", 20); public static final int PLAYER_PACKET_QUEUE_SIZE = Integer.getInteger("minestom.packet-queue-size", 1000); + public static final int SEND_LIGHT_AFTER_BLOCK_PLACEMENT_DELAY = Integer.getInteger("minestom.send-light-after-block-placement-delay", 100); // Packet sending optimizations public static final boolean GROUPED_PACKET = PropertyUtils.getBoolean("minestom.grouped-packet", true); diff --git a/src/main/java/net/minestom/server/collision/BoundingBox.java b/src/main/java/net/minestom/server/collision/BoundingBox.java index fc730d690..a163ccae8 100644 --- a/src/main/java/net/minestom/server/collision/BoundingBox.java +++ b/src/main/java/net/minestom/server/collision/BoundingBox.java @@ -63,17 +63,6 @@ public final class BoundingBox implements Shape { return false; } - /** - * Used to know if this {@link BoundingBox} intersects with the bounding box of an entity. - * - * @param entity the entity to check the bounding box - * @return true if this bounding box intersects with the entity, false otherwise - */ - @ApiStatus.Experimental - public boolean intersectEntity(@NotNull Point src, @NotNull Entity entity) { - return intersectBox(src.sub(entity.getPosition()), entity.getBoundingBox()); - } - @ApiStatus.Experimental public boolean boundingBoxRayIntersectionCheck(Vec start, Vec direction, Pos position) { return RayUtils.BoundingBoxRayIntersectionCheck(start, direction, this, position); diff --git a/src/main/java/net/minestom/server/collision/Shape.java b/src/main/java/net/minestom/server/collision/Shape.java index 232b637d4..c6238de83 100644 --- a/src/main/java/net/minestom/server/collision/Shape.java +++ b/src/main/java/net/minestom/server/collision/Shape.java @@ -1,6 +1,7 @@ package net.minestom.server.collision; import net.minestom.server.coordinate.Point; +import net.minestom.server.entity.Entity; import net.minestom.server.instance.block.BlockFace; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; @@ -39,6 +40,18 @@ public interface Shape { boolean intersectBoxSwept(@NotNull Point rayStart, @NotNull Point rayDirection, @NotNull Point shapePos, @NotNull BoundingBox moving, @NotNull SweepResult finalResult); + + /** + * Used to know if this {@link BoundingBox} intersects with the bounding box of an entity. + * + * @param entity the entity to check the bounding box + * @return true if this bounding box intersects with the entity, false otherwise + */ + @ApiStatus.Experimental + default boolean intersectEntity(@NotNull Point src, @NotNull Entity entity) { + return intersectBox(src.sub(entity.getPosition()), entity.getBoundingBox()); + } + /** * Relative Start * diff --git a/src/main/java/net/minestom/server/collision/ShapeImpl.java b/src/main/java/net/minestom/server/collision/ShapeImpl.java index 83b2e3b28..d90609092 100644 --- a/src/main/java/net/minestom/server/collision/ShapeImpl.java +++ b/src/main/java/net/minestom/server/collision/ShapeImpl.java @@ -18,6 +18,7 @@ public final class ShapeImpl implements Shape { private static final Pattern PATTERN = Pattern.compile("\\d.\\d+", Pattern.MULTILINE); private final BoundingBox[] collisionBoundingBoxes; private final Point relativeStart, relativeEnd; + private final byte fullFaces; private final BoundingBox[] occlusionBoundingBoxes; private final byte blockOcclusion; @@ -32,7 +33,7 @@ public final class ShapeImpl implements Shape { this.blockEntry = blockEntry; // Find bounds of collision - { + if (collisionBoundingBoxes.length > 0) { double minX = 1, minY = 1, minZ = 1; double maxX = 0, maxY = 0, maxZ = 0; for (BoundingBox blockSection : collisionBoundingBoxes) { @@ -47,12 +48,22 @@ public final class ShapeImpl implements Shape { } this.relativeStart = new Vec(minX, minY, minZ); this.relativeEnd = new Vec(maxX, maxY, maxZ); + } else { + this.relativeStart = Vec.ZERO; + this.relativeEnd = Vec.ZERO; } + byte fullCollisionFaces = 0; + for (BlockFace f : BlockFace.values()) { + final byte res = isFaceCovered(computeOcclusionSet(f, collisionBoundingBoxes)); + fullCollisionFaces |= ((res == 2) ? 0b1 : 0b0) << (byte) f.ordinal(); + } + this.fullFaces = fullCollisionFaces; + byte airFaces = 0; byte fullFaces = 0; for (BlockFace f : BlockFace.values()) { - final byte res = isFaceCovered(computeOcclusionSet(f)); + final byte res = isFaceCovered(computeOcclusionSet(f, occlusionBoundingBoxes)); airFaces |= ((res == 0) ? 0b1 : 0b0) << (byte) f.ordinal(); fullFaces |= ((res == 2) ? 0b1 : 0b0) << (byte) f.ordinal(); } @@ -145,14 +156,14 @@ public final class ShapeImpl implements Shape { if (hasAirOcclusion || hasAirOcclusionOther) return false; // Comparing two partial faces. Computation needed - List allRectangles = shapeImpl.computeOcclusionSet(face.getOppositeFace()); - allRectangles.addAll(computeOcclusionSet(face)); + List allRectangles = computeOcclusionSet(face.getOppositeFace(), shapeImpl.occlusionBoundingBoxes); + allRectangles.addAll(computeOcclusionSet(face, occlusionBoundingBoxes)); return isFaceCovered(allRectangles) == 2; } @Override public boolean isFaceFull(@NotNull BlockFace face) { - return (((blockOcclusion >> face.ordinal()) & 1) == 1); + return (((fullFaces >> face.ordinal()) & 1) == 1); } @Override @@ -187,9 +198,9 @@ public final class ShapeImpl implements Shape { return block; } - private List computeOcclusionSet(BlockFace face) { + private static @NotNull List computeOcclusionSet(BlockFace face, BoundingBox[] boundingBoxes) { List rSet = new ArrayList<>(); - for (BoundingBox boundingBox : this.occlusionBoundingBoxes) { + for (BoundingBox boundingBox : boundingBoxes) { switch (face) { case NORTH -> // negative Z { diff --git a/src/main/java/net/minestom/server/entity/Entity.java b/src/main/java/net/minestom/server/entity/Entity.java index 6f17764fc..ef4f5096e 100644 --- a/src/main/java/net/minestom/server/entity/Entity.java +++ b/src/main/java/net/minestom/server/entity/Entity.java @@ -5,10 +5,7 @@ import net.kyori.adventure.text.Component; import net.kyori.adventure.text.event.HoverEvent; import net.kyori.adventure.text.event.HoverEvent.ShowEntity; import net.kyori.adventure.text.event.HoverEventSource; -import net.minestom.server.MinecraftServer; -import net.minestom.server.ServerProcess; -import net.minestom.server.Tickable; -import net.minestom.server.Viewable; +import net.minestom.server.*; import net.minestom.server.collision.*; import net.minestom.server.coordinate.Point; import net.minestom.server.coordinate.Pos; @@ -31,8 +28,6 @@ import net.minestom.server.instance.block.Block; import net.minestom.server.instance.block.BlockFace; import net.minestom.server.instance.block.BlockHandler; import net.minestom.server.network.packet.server.CachedPacket; -import net.minestom.server.network.packet.server.LazyPacket; -import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.play.*; import net.minestom.server.permission.Permission; import net.minestom.server.permission.PermissionHandler; @@ -56,7 +51,6 @@ import net.minestom.server.utils.block.BlockIterator; import net.minestom.server.utils.chunk.ChunkCache; import net.minestom.server.utils.chunk.ChunkUtils; import net.minestom.server.utils.player.PlayerUtils; -import net.minestom.server.utils.time.Cooldown; import net.minestom.server.utils.time.TimeUnit; import net.minestom.server.utils.validate.Check; import org.jetbrains.annotations.ApiStatus; @@ -162,12 +156,15 @@ public class Entity implements Viewable, Tickable, Schedulable, Snapshotable, Ev protected boolean removed; private final Set passengers = new CopyOnWriteArraySet<>(); + + private final Set leashedEntities = new CopyOnWriteArraySet<>(); + private Entity leashHolder; + protected EntityType entityType; // UNSAFE to change, modify at your own risk - // Network synchronization, send the absolute position of the entity each X milliseconds - private static final Duration SYNCHRONIZATION_COOLDOWN = Duration.of(1, TimeUnit.MINUTE); - private Duration customSynchronizationCooldown; - private long lastAbsoluteSynchronizationTime; + // Network synchronization, send the absolute position of the entity every n ticks + private long synchronizationTicks = ServerFlag.ENTITY_SYNCHRONIZATION_TICKS; + private long nextSynchronizationTick = synchronizationTicks; protected Metadata metadata = new Metadata(this); protected EntityMeta entityMeta; @@ -322,7 +319,7 @@ public class Entity implements Viewable, Tickable, Schedulable, Snapshotable, Ev this.position = position; refreshCoordinate(position); synchronizePosition(true); - setView(position.yaw(), position.pitch()); + sendPacketToViewers(new EntityHeadLookPacket(getEntityId(), position.yaw())); }; if (chunks != null && chunks.length > 0) { @@ -464,7 +461,7 @@ public class Entity implements Viewable, Tickable, Schedulable, Snapshotable, Ev public void updateNewViewer(@NotNull Player player) { player.sendPacket(getEntityType().registry().spawnType().getSpawnPacket(this)); if (hasVelocity()) player.sendPacket(getVelocityPacket()); - player.sendPacket(new LazyPacket(this::getMetadataPacket)); + player.sendPacket(getMetadataPacket()); // Passengers final Set passengers = this.passengers; if (!passengers.isEmpty()) { @@ -473,6 +470,15 @@ public class Entity implements Viewable, Tickable, Schedulable, Snapshotable, Ev } player.sendPacket(getPassengersPacket()); } + // Leashes + if (leashHolder != null && (player.equals(leashHolder) || leashHolder.isViewer(player))) { + player.sendPacket(getAttachEntityPacket()); + } + for (Entity entity : leashedEntities) { + if (entity.isViewer(player)) { + player.sendPacket(entity.getAttachEntityPacket()); + } + }; // Head position player.sendPacket(new EntityHeadLookPacket(getEntityId(), position.yaw())); } @@ -491,6 +497,7 @@ public class Entity implements Viewable, Tickable, Schedulable, Snapshotable, Ev if (passenger != player) passenger.updateOldViewer(player); } } + leashedEntities.forEach(entity -> player.sendPacket(new AttachEntityPacket(entity, null))); player.sendPacket(destroyPacketCache); } @@ -567,7 +574,7 @@ public class Entity implements Viewable, Tickable, Schedulable, Snapshotable, Ev effectTick(time); } // Scheduled synchronization - if (!Cooldown.hasCooldown(time, lastAbsoluteSynchronizationTime, getSynchronizationCooldown())) { + if (ticks >= nextSynchronizationTick) { synchronizePosition(false); } } @@ -890,6 +897,7 @@ public class Entity implements Viewable, Tickable, Schedulable, Snapshotable, Ev if (this instanceof Player player) { instance.getWorldBorder().init(player); player.sendPacket(instance.createTimePacket()); + player.sendPackets(instance.getWeather().createWeatherPackets()); } instance.getEntityTracker().register(this, spawnPosition, trackingTarget, trackingUpdate); spawn(); @@ -1098,6 +1106,40 @@ public class Entity implements Viewable, Tickable, Schedulable, Snapshotable, Ev return new SetPassengersPacket(getEntityId(), passengers.stream().map(Entity::getEntityId).toList()); } + /** + * Gets the entities that this entity is leashing. + * + * @return an unmodifiable list containing all the leashed entities + */ + public @NotNull Set getLeashedEntities() { + return Collections.unmodifiableSet(leashedEntities); + } + + /** + * Gets the current leash holder. + * + * @return the entity leashing this entity, null if no leash holder + */ + public @Nullable Entity getLeashHolder() { + return leashHolder; + } + + /** + * Sets the leash holder to this entity. + * + * @param entity the new leash holder + */ + public void setLeashHolder(@Nullable Entity entity) { + if (leashHolder != null) leashHolder.leashedEntities.remove(this); + if (entity != null) entity.leashedEntities.add(this); + this.leashHolder = entity; + sendPacketToViewersAndSelf(getAttachEntityPacket()); + } + + protected @NotNull AttachEntityPacket getAttachEntityPacket() { + return new AttachEntityPacket(this, leashHolder); + } + /** * Entity statuses can be found here. * @@ -1321,6 +1363,11 @@ public class Entity implements Viewable, Tickable, Schedulable, Snapshotable, Ev this.position = position; this.previousPosition = previousPosition; if (!position.samePoint(previousPosition)) refreshCoordinate(position); + if (nextSynchronizationTick <= ticks + 1) { + // The entity will be synchronized at the end of its tick + // not returning here will duplicate position packets + return; + } // Update viewers final boolean viewChange = !position.sameView(lastSyncedPosition); final double distanceX = Math.abs(position.x() - lastSyncedPosition.x()); @@ -1331,7 +1378,7 @@ public class Entity implements Viewable, Tickable, Schedulable, Snapshotable, Ev final Chunk chunk = getChunk(); if (distanceX > 8 || distanceY > 8 || distanceZ > 8) { PacketUtils.prepareViewablePacket(chunk, new EntityTeleportPacket(getEntityId(), position, isOnGround()), this); - this.lastAbsoluteSynchronizationTime = System.currentTimeMillis(); + nextSynchronizationTick = synchronizationTicks + 1; } else if (positionChange && viewChange) { PacketUtils.prepareViewablePacket(chunk, EntityPositionAndRotationPacket.getPacket(getEntityId(), position, lastSyncedPosition, isOnGround()), this); @@ -1543,6 +1590,9 @@ public class Entity implements Viewable, Tickable, Schedulable, Snapshotable, Ev final Entity vehicle = this.vehicle; if (vehicle != null) vehicle.removePassenger(this); + Set leashedEntities = getLeashedEntities(); + leashedEntities.forEach(entity -> entity.setLeashHolder(null)); + MinecraftServer.process().dispatcher().removeElement(this); this.removed = true; if (permanent) { @@ -1628,9 +1678,11 @@ public class Entity implements Viewable, Tickable, Schedulable, Snapshotable, Ev @ApiStatus.Internal protected void synchronizePosition(boolean includeSelf) { final Pos posCache = this.position; - final ServerPacket packet = new EntityTeleportPacket(getEntityId(), posCache, isOnGround()); - PacketUtils.prepareViewablePacket(currentChunk, packet, this); - this.lastAbsoluteSynchronizationTime = System.currentTimeMillis(); + PacketUtils.prepareViewablePacket(currentChunk, new EntityTeleportPacket(getEntityId(), posCache, isOnGround()), this); + if (posCache.yaw() != lastSyncedPosition.yaw()) { + PacketUtils.prepareViewablePacket(currentChunk, new EntityHeadLookPacket(getEntityId(), position.yaw()), this); + } + nextSynchronizationTick = ticks + synchronizationTicks; this.lastSyncedPosition = posCache; } @@ -1640,28 +1692,34 @@ public class Entity implements Viewable, Tickable, Schedulable, Snapshotable, Ev } /** - * Asks for a synchronization (position) to happen during next entity tick. + * Asks for a position synchronization to happen during next entity tick. */ - public void askSynchronization() { - this.lastAbsoluteSynchronizationTime = 0; + public void synchronizeNextTick() { + this.nextSynchronizationTick = 0; } /** - * Set custom cooldown for position synchronization. + * Returns the current synchronization interval. The default value is {@link ServerFlag#ENTITY_SYNCHRONIZATION_TICKS} + * but can be overridden per entity with {@link #setSynchronizationTicks(long)}. * - * @param cooldown custom cooldown for position synchronization. + * @return The current synchronization ticks */ - public void setCustomSynchronizationCooldown(@Nullable Duration cooldown) { - this.customSynchronizationCooldown = cooldown; + public long getSynchronizationTicks() { + return this.synchronizationTicks; + } + + /** + * Set the tick period until this entity's position is synchronized. + * + * @param ticks the new synchronization tick period + */ + public void setSynchronizationTicks(long ticks) { + this.synchronizationTicks = ticks; } @Override public @NotNull HoverEvent asHoverEvent(@NotNull UnaryOperator op) { - return HoverEvent.showEntity(ShowEntity.of(this.entityType, this.uuid)); - } - - private Duration getSynchronizationCooldown() { - return Objects.requireNonNullElse(this.customSynchronizationCooldown, SYNCHRONIZATION_COOLDOWN); + return HoverEvent.showEntity(ShowEntity.showEntity(this.entityType, this.uuid)); } @ApiStatus.Experimental diff --git a/src/main/java/net/minestom/server/entity/Metadata.java b/src/main/java/net/minestom/server/entity/Metadata.java index cead98da3..a7993cb46 100644 --- a/src/main/java/net/minestom/server/entity/Metadata.java +++ b/src/main/java/net/minestom/server/entity/Metadata.java @@ -5,6 +5,7 @@ import net.minestom.server.coordinate.Point; import net.minestom.server.entity.metadata.animal.FrogMeta; import net.minestom.server.entity.metadata.animal.SnifferMeta; import net.minestom.server.entity.metadata.animal.tameable.CatMeta; +import net.minestom.server.entity.metadata.other.PaintingMeta; import net.minestom.server.item.ItemStack; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.play.EntityMetaDataPacket; @@ -115,6 +116,10 @@ public final class Metadata { return new MetadataImpl.EntryImpl<>(TYPE_FROG_VARIANT, value, NetworkBuffer.FROG_VARIANT); } + public static Entry PaintingVariant(@NotNull PaintingMeta.Variant value) { + return new MetadataImpl.EntryImpl<>(TYPE_PAINTINGVARIANT, value, NetworkBuffer.PAINTING_VARIANT); + } + public static Entry SnifferState(@NotNull SnifferMeta.State value) { return new MetadataImpl.EntryImpl<>(TYPE_SNIFFER_STATE, value, NetworkBuffer.SNIFFER_STATE); } diff --git a/src/main/java/net/minestom/server/entity/MetadataImpl.java b/src/main/java/net/minestom/server/entity/MetadataImpl.java index c2777eee2..d2d89cb92 100644 --- a/src/main/java/net/minestom/server/entity/MetadataImpl.java +++ b/src/main/java/net/minestom/server/entity/MetadataImpl.java @@ -5,6 +5,7 @@ import net.minestom.server.coordinate.Vec; import net.minestom.server.entity.metadata.animal.FrogMeta; import net.minestom.server.entity.metadata.animal.SnifferMeta; import net.minestom.server.entity.metadata.animal.tameable.CatMeta; +import net.minestom.server.entity.metadata.other.PaintingMeta; import net.minestom.server.instance.block.Block; import net.minestom.server.item.ItemStack; import net.minestom.server.network.NetworkBuffer; @@ -45,7 +46,7 @@ final class MetadataImpl { EMPTY_VALUES.set(TYPE_CAT_VARIANT, CatVariant(CatMeta.Variant.TABBY)); EMPTY_VALUES.set(TYPE_FROG_VARIANT, FrogVariant(FrogMeta.Variant.TEMPERATE)); // OptGlobalPos - // PaintingVariant + EMPTY_VALUES.set(TYPE_PAINTINGVARIANT, PaintingVariant(PaintingMeta.Variant.KEBAB)); EMPTY_VALUES.set(TYPE_SNIFFER_STATE, SnifferState(SnifferMeta.State.IDLING)); EMPTY_VALUES.set(TYPE_VECTOR3, Vector3(Vec.ZERO)); EMPTY_VALUES.set(TYPE_QUATERNION, Quaternion(new float[]{0, 0, 0, 0})); diff --git a/src/main/java/net/minestom/server/entity/metadata/other/PaintingMeta.java b/src/main/java/net/minestom/server/entity/metadata/other/PaintingMeta.java index 5aefa3fea..06b0ec616 100644 --- a/src/main/java/net/minestom/server/entity/metadata/other/PaintingMeta.java +++ b/src/main/java/net/minestom/server/entity/metadata/other/PaintingMeta.java @@ -3,128 +3,159 @@ package net.minestom.server.entity.metadata.other; import net.minestom.server.entity.Entity; import net.minestom.server.entity.Metadata; import net.minestom.server.entity.metadata.EntityMeta; -import net.minestom.server.utils.Direction; +import net.minestom.server.entity.metadata.ObjectDataProvider; +import net.minestom.server.registry.StaticProtocolObject; +import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.validate.Check; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.Locale; -public class PaintingMeta extends EntityMeta { +public class PaintingMeta extends EntityMeta implements ObjectDataProvider { public static final byte OFFSET = EntityMeta.MAX_OFFSET; - public static final byte MAX_OFFSET = OFFSET + 0; + public static final byte MAX_OFFSET = OFFSET + 1; - private Motive motive = Motive.KEBAB; - private Direction direction = Direction.SOUTH; + private Orientation orientation = null; public PaintingMeta(@NotNull Entity entity, @NotNull Metadata metadata) { super(entity, metadata); } - @NotNull - public Motive getMotive() { - return motive; + public @NotNull Variant getVariant() { + return super.metadata.getIndex(OFFSET, Variant.KEBAB); } - /** - * Sets motive of a painting. - * This is possible only before spawn packet is sent. - * - * @param motive motive of a painting. - */ - public void setMotive(@NotNull Motive motive) { - this.motive = motive; + public void setVariant(@NotNull Variant value) { + super.metadata.setIndex(OFFSET, Metadata.PaintingVariant(value)); } @NotNull - public Direction getDirection() { - return direction; + public Orientation getOrientation() { + return this.orientation; } /** - * Sets direction of a painting. + * Sets orientation of the painting. * This is possible only before spawn packet is sent. * - * @param direction direction of a painting. + * @param orientation the orientation of the painting. */ - public void setDirection(@NotNull Direction direction) { - Check.argCondition(direction == Direction.UP || direction == Direction.DOWN, "Painting can't look up or down!"); - this.direction = direction; + public void setOrientation(@NotNull Orientation orientation) { + this.orientation = orientation; } - /* - TODO: write a parser? - Currently none of existing ones support it. - */ - public enum Motive { - KEBAB(0, 0, 16, 16), - AZTEC(16, 0, 16, 16), - ALBAN(32, 0, 16, 16), - AZTEC2(48, 0, 16, 16), - BOMB(64, 0, 16, 16), - PLANT(80, 0, 16, 16), - WASTELAND(96, 0, 16, 16), - POOL(0, 32, 32, 16), - COURBET(32, 32, 32, 16), - SEA(64, 32, 32, 16), - SUNSET(96, 32, 32, 16), - CREEBET(128, 32, 32, 16), - WANDERER(0, 64, 16, 32), - GRAHAM(16, 64, 16, 32), - MATCH(0, 128, 32, 32), - BUST(32, 128, 32, 32), - STAGE(64, 128, 32, 32), - VOID(96, 128, 32, 32), - SKULL_AND_ROSES("skull_and_roses", 128, 128, 32, 32), - WITHER(160, 128, 32, 32), - FIGHTERS(0, 96, 64, 32), - POINTER(0, 192, 64, 64), - PIGSCENE(64, 192, 64, 64), - BURNING_SKULL(128, 192, 64, 64), - SKELETON(192, 64, 64, 48), - DONKEY_KONG(192, 112, 64, 48); + @Override + public int getObjectData() { + Check.stateCondition(this.orientation == null, "Painting orientation must be set before spawn"); + return this.orientation.id(); + } - private final String name; - private final int x; - private final int y; + @Override + public boolean requiresVelocityPacketAtSpawn() { + return false; + } + + public enum Orientation { + NORTH(2), + SOUTH(3), + WEST(4), + EAST(5); + + private final int id; + + Orientation(int id) { + this.id = id; + } + + public int id() { + return id; + } + } + + public enum Variant implements StaticProtocolObject { + KEBAB(16, 16), + AZTEC(16, 16), + ALBAN(16, 16), + AZTEC2(16, 16), + BOMB(16, 16), + PLANT(16, 16), + WASTELAND(16, 16), + POOL(32, 16), + COURBET(32, 16), + SEA(32, 16), + SUNSET(32, 16), + CREEBET(32, 16), + WANDERER(16, 32), + GRAHAM(16, 32), + MATCH(32, 32), + BUST(32, 32), + STAGE(32, 32), + VOID(32, 32), + SKULL_AND_ROSES(32, 32), + WITHER(32, 32), + FIGHTERS(64, 32), + POINTER(64, 64), + PIGSCENE(64, 64), + BURNING_SKULL(64, 64), + SKELETON(64, 48), + EARTH(32, 32), + WIND(32, 32), + WATER(32, 32), + FIRE(32, 32), + DONKEY_KONG(64, 48); + + private static final Variant[] VALUES = values(); + + public static @Nullable Variant fromId(int id) { + if (id < 0 || id >= VALUES.length) { + return null; + } + return VALUES[id]; + } + + public static @Nullable Variant fromNamespaceId(@Nullable String namespaceId) { + if (namespaceId == null) return null; + return fromNamespaceId(NamespaceID.from(namespaceId)); + } + + public static @Nullable Variant fromNamespaceId(@Nullable NamespaceID namespaceId) { + if (namespaceId == null) return null; + for (Variant value : VALUES) { + if (value.namespace().equals(namespaceId)) { + return value; + } + } + return null; + } + + private final NamespaceID namespace; private final int width; private final int height; - Motive(String name, int x, int y, int width, int height) { - this.name = name; - this.x = x; - this.y = y; + Variant(int width, int height) { + this.namespace = NamespaceID.from("minecraft", name().toLowerCase(Locale.ROOT)); this.width = width; this.height = height; } - Motive(int x, int y, int width, int height) { - this.name = "minecraft:" + name().toLowerCase(Locale.ROOT); - this.x = x; - this.y = y; - this.width = width; - this.height = height; + @Override + public int id() { + return ordinal(); } - public String getName() { - return this.name; + public int width() { + return width; } - public int getX() { - return this.x; + public int height() { + return height; } - public int getY() { - return this.y; + @Override + public @NotNull NamespaceID namespace() { + return namespace; } - - public int getWidth() { - return this.width; - } - - public int getHeight() { - return this.height; - } - } } diff --git a/src/main/java/net/minestom/server/instance/Chunk.java b/src/main/java/net/minestom/server/instance/Chunk.java index f2b05af7e..aeec19f20 100644 --- a/src/main/java/net/minestom/server/instance/Chunk.java +++ b/src/main/java/net/minestom/server/instance/Chunk.java @@ -271,6 +271,11 @@ public abstract class Chunk implements Block.Getter, Block.Setter, Biome.Getter, */ protected void onLoad() {} + /** + * Called when the chunk generator has finished generating the chunk. + */ + public void onGenerate() {} + @Override public String toString() { return getClass().getSimpleName() + "[" + chunkX + ":" + chunkZ + "]"; diff --git a/src/main/java/net/minestom/server/instance/Instance.java b/src/main/java/net/minestom/server/instance/Instance.java index 7b53f2e6e..15b3ccd05 100644 --- a/src/main/java/net/minestom/server/instance/Instance.java +++ b/src/main/java/net/minestom/server/instance/Instance.java @@ -82,6 +82,11 @@ public abstract class Instance implements Block.Getter, Block.Setter, private Duration timeUpdate = Duration.of(1, TimeUnit.SECOND); private long lastTimeUpdate; + // Weather of the instance + private Weather targetWeather = new Weather(false, 0, 0); + private Weather currentWeather = new Weather(false, 0, 0); + private int remainingWeatherTransitionTicks; + // Field for tick events private long lastTickAge = System.currentTimeMillis(); @@ -664,6 +669,13 @@ public abstract class Instance implements Block.Getter, Block.Setter, } } + // Weather + if (remainingWeatherTransitionTicks > 0) { + Weather previousWeather = currentWeather; + currentWeather = transitionWeather(remainingWeatherTransitionTicks); + sendWeatherPackets(previousWeather); + remainingWeatherTransitionTicks--; + } // Tick event { // Process tick events @@ -674,6 +686,45 @@ public abstract class Instance implements Block.Getter, Block.Setter, this.worldBorder.update(); } + /** + * Gets the current weather on this instance + * + * @return the current weather + */ + public @NotNull Weather getWeather() { + return currentWeather; + } + + /** + * Sets the weather on this instance, transitions over time + * + * @param weather the new weather + * @param transitionTicks the ticks to transition to new weather + */ + public void setWeather(@NotNull Weather weather, int transitionTicks) { + Check.stateCondition(transitionTicks < 1, "Transition ticks cannot be lower than 1"); + targetWeather = weather; + remainingWeatherTransitionTicks = transitionTicks; + } + + private void sendWeatherPackets(@NotNull Weather previousWeather) { + if (currentWeather.isRaining() != previousWeather.isRaining()) sendGroupedPacket(currentWeather.createIsRainingPacket()); + if (currentWeather.rainLevel() != previousWeather.rainLevel()) sendGroupedPacket(currentWeather.createRainLevelPacket()); + if (currentWeather.thunderLevel() != previousWeather.thunderLevel()) sendGroupedPacket(currentWeather.createThunderLevelPacket()); + } + + private @NotNull Weather transitionWeather(int remainingTicks) { + Weather target = targetWeather; + Weather current = currentWeather; + if (remainingTicks <= 1) { + return new Weather(target.isRaining(), target.isRaining() ? target.rainLevel() : 0, + target.isRaining() ? target.thunderLevel() : 0); + } + float rainLevel = current.rainLevel() + (target.rainLevel() - current.rainLevel()) * (1 / (float)remainingTicks); + float thunderLevel = current.thunderLevel() + (target.thunderLevel() - current.thunderLevel()) * (1 / (float)remainingTicks); + return new Weather(rainLevel > 0, rainLevel, thunderLevel); + } + @Override public @NotNull TagHandler tagHandler() { return tagHandler; diff --git a/src/main/java/net/minestom/server/instance/InstanceContainer.java b/src/main/java/net/minestom/server/instance/InstanceContainer.java index bb3569025..f9fed417a 100644 --- a/src/main/java/net/minestom/server/instance/InstanceContainer.java +++ b/src/main/java/net/minestom/server/instance/InstanceContainer.java @@ -298,7 +298,7 @@ public class InstanceContainer extends Instance { return CompletableFuture.completedFuture(chunk); } else { // Loader couldn't load the chunk, generate it - return createChunk(chunkX, chunkZ); + return createChunk(chunkX, chunkZ).whenComplete((c, a) -> c.onGenerate()); } }) // cache the retrieved chunk diff --git a/src/main/java/net/minestom/server/instance/LightingChunk.java b/src/main/java/net/minestom/server/instance/LightingChunk.java index cde5b9c8e..4bbd33c83 100644 --- a/src/main/java/net/minestom/server/instance/LightingChunk.java +++ b/src/main/java/net/minestom/server/instance/LightingChunk.java @@ -1,6 +1,7 @@ package net.minestom.server.instance; import net.minestom.server.MinecraftServer; +import net.minestom.server.ServerFlag; import net.minestom.server.collision.Shape; import net.minestom.server.coordinate.Point; import net.minestom.server.coordinate.Vec; @@ -8,10 +9,7 @@ import net.minestom.server.instance.block.Block; import net.minestom.server.instance.block.BlockFace; import net.minestom.server.instance.block.BlockHandler; import net.minestom.server.instance.light.Light; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.packet.server.CachedPacket; -import net.minestom.server.network.packet.server.ServerPacket; -import net.minestom.server.network.packet.server.play.UpdateLightPacket; import net.minestom.server.network.packet.server.play.data.LightData; import net.minestom.server.utils.MathUtils; import net.minestom.server.utils.NamespaceID; @@ -26,6 +24,8 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.locks.ReentrantLock; import static net.minestom.server.instance.light.LightCompute.emptyContent; @@ -41,9 +41,16 @@ public class LightingChunk extends DynamicChunk { private int[] heightmap; final CachedPacket lightCache = new CachedPacket(this::createLightPacket); + private LightData lightData; + boolean chunkLoaded = false; private int highestBlock; - private boolean initialLightingSent = false; + + private final ReentrantLock packetGenerationLock = new ReentrantLock(); + private final AtomicInteger resendTimer = new AtomicInteger(-1); + private final int resendDelay = ServerFlag.SEND_LIGHT_AFTER_BLOCK_PLACEMENT_DELAY; + + private boolean doneInit = false; enum LightType { SKY, @@ -67,6 +74,7 @@ public class LightingChunk extends DynamicChunk { Block.DARK_OAK_LEAVES.namespace(), Block.FLOWERING_AZALEA_LEAVES.namespace(), Block.JUNGLE_LEAVES.namespace(), + Block.CHERRY_LEAVES.namespace(), Block.OAK_LEAVES.namespace(), Block.SPRUCE_LEAVES.namespace(), Block.SPAWNER.namespace(), @@ -83,6 +91,7 @@ public class LightingChunk extends DynamicChunk { public void invalidate() { this.lightCache.invalidate(); this.chunkCache.invalidate(); + this.lightData = null; } public LightingChunk(@NotNull Instance instance, int chunkX, int chunkZ) { @@ -107,8 +116,7 @@ public class LightingChunk extends DynamicChunk { if (neighborChunk == null) continue; if (neighborChunk instanceof LightingChunk light) { - light.lightCache.invalidate(); - light.chunkCache.invalidate(); + light.invalidate(); } for (int k = -1; k <= 1; k++) { @@ -132,6 +140,19 @@ public class LightingChunk extends DynamicChunk { if (chunkLoaded) { invalidateSection(coordinate); this.lightCache.invalidate(); + + if (doneInit) { + for (int i = -1; i <= 1; i++) { + for (int j = -1; j <= 1; j++) { + Chunk neighborChunk = instance.getChunk(chunkX + i, chunkZ + j); + if (neighborChunk == null) continue; + + if (neighborChunk instanceof LightingChunk light) { + light.resendTimer.set(resendDelay); + } + } + } + } } } @@ -143,10 +164,41 @@ public class LightingChunk extends DynamicChunk { @Override protected void onLoad() { chunkLoaded = true; + doneInit = true; } - public boolean isLightingCalculated() { - return initialLightingSent; + @Override + public void onGenerate() { + super.onGenerate(); + + for (int section = minSection; section < maxSection; section++) { + getSection(section).blockLight().invalidate(); + getSection(section).skyLight().invalidate(); + } + + invalidate(); + + MinecraftServer.getSchedulerManager().scheduleNextTick(() -> { + for (int i = -1; i <= 1; i++) { + for (int j = -1; j <= 1; j++) { + Chunk neighborChunk = instance.getChunk(chunkX + i, chunkZ + j); + if (neighborChunk == null) continue; + + if (neighborChunk instanceof LightingChunk light) { + for (int section = light.minSection; section < light.maxSection; section++) { + light.getSection(section).blockLight().invalidate(); + light.getSection(section).skyLight().invalidate(); + } + + light.invalidate(); + + light.resendTimer.set(20); + } + } + } + }); + + doneInit = true; } @Override @@ -175,11 +227,11 @@ public class LightingChunk extends DynamicChunk { int height = maxY; while (height > minY) { Block block = getBlock(x, height, z, Condition.TYPE); + if (block != Block.AIR) highestBlock = Math.max(highestBlock, height); if (checkSkyOcclusion(block)) break; height--; } heightmap[z << 4 | x] = (height + 1); - if (height > highestBlock) highestBlock = height; } } } @@ -190,93 +242,95 @@ public class LightingChunk extends DynamicChunk { @Override protected LightData createLightData() { - if (lightCache.isValid()) { - ServerPacket packet = lightCache.packet(ConnectionState.PLAY); - return ((UpdateLightPacket) packet).lightData(); + packetGenerationLock.lock(); + if (lightData != null) { + packetGenerationLock.unlock(); + return lightData; } - synchronized (lightCache) { - BitSet skyMask = new BitSet(); - BitSet blockMask = new BitSet(); - BitSet emptySkyMask = new BitSet(); - BitSet emptyBlockMask = new BitSet(); - List skyLights = new ArrayList<>(); - List blockLights = new ArrayList<>(); + BitSet skyMask = new BitSet(); + BitSet blockMask = new BitSet(); + BitSet emptySkyMask = new BitSet(); + BitSet emptyBlockMask = new BitSet(); + List skyLights = new ArrayList<>(); + List blockLights = new ArrayList<>(); - Set combined = new HashSet<>(); - int chunkMin = instance.getDimensionType().getMinY(); + int chunkMin = instance.getDimensionType().getMinY(); - int index = 0; - for (Section section : sections) { - boolean wasUpdatedBlock = false; - boolean wasUpdatedSky = false; + int highestNeighborBlock = instance.getDimensionType().getMinY(); + for (int i = -1; i <= 1; i++) { + for (int j = -1; j <= 1; j++) { + Chunk neighborChunk = instance.getChunk(chunkX + i, chunkZ + j); + if (neighborChunk == null) continue; - if (section.blockLight().requiresUpdate()) { - var needsSend = relightSection(instance, this.chunkX, index + minSection, chunkZ, LightType.BLOCK); - combined.addAll(needsSend); - wasUpdatedBlock = true; - } else if (section.blockLight().requiresSend()) { - wasUpdatedBlock = true; + if (neighborChunk instanceof LightingChunk light) { + light.getHeightmap(); + highestNeighborBlock = Math.max(highestNeighborBlock, light.highestBlock); } + } + } - if (section.skyLight().requiresUpdate()) { - var needsSend = relightSection(instance, this.chunkX, index + minSection, chunkZ, LightType.SKY); - combined.addAll(needsSend); - wasUpdatedSky = true; - } else if (section.skyLight().requiresSend()) { - wasUpdatedSky = true; - } + int index = 0; + for (Section section : sections) { + boolean wasUpdatedBlock = false; + boolean wasUpdatedSky = false; - index++; + if (section.blockLight().requiresUpdate()) { + relightSection(instance, this.chunkX, index + minSection, chunkZ, LightType.BLOCK); + wasUpdatedBlock = true; + } else if (section.blockLight().requiresSend()) { + wasUpdatedBlock = true; + } - final byte[] skyLight = section.skyLight().array(); - final byte[] blockLight = section.blockLight().array(); - final int sectionMaxY = index * 16 + chunkMin; + if (section.skyLight().requiresUpdate()) { + relightSection(instance, this.chunkX, index + minSection, chunkZ, LightType.SKY); + wasUpdatedSky = true; + } else if (section.skyLight().requiresSend()) { + wasUpdatedSky = true; + } - if ((wasUpdatedSky) && this.instance.getDimensionType().isSkylightEnabled() && sectionMaxY <= (highestBlock + 16)) { - if (skyLight.length != 0 && skyLight != emptyContent) { - skyLights.add(skyLight); - skyMask.set(index); - } else { - emptySkyMask.set(index); - } - } + index++; - if (wasUpdatedBlock) { - if (blockLight.length != 0 && blockLight != emptyContent) { - blockLights.add(blockLight); - blockMask.set(index); - } else { - emptyBlockMask.set(index); - } + final byte[] skyLight = section.skyLight().array(); + final byte[] blockLight = section.blockLight().array(); + final int sectionMaxY = index * 16 + chunkMin; + + if ((wasUpdatedSky) && this.instance.getDimensionType().isSkylightEnabled() && sectionMaxY <= (highestNeighborBlock + 16)) { + if (skyLight.length != 0 && skyLight != emptyContent) { + skyLights.add(skyLight); + skyMask.set(index); + } else { + emptySkyMask.set(index); } } - MinecraftServer.getSchedulerManager().scheduleNextTick(() -> { - for (Chunk chunk : combined) { - if (chunk instanceof LightingChunk light) { - if (light.initialLightingSent) { - light.lightCache.invalidate(); - light.chunkCache.invalidate(); - - // Compute Lighting. This will ensure lighting is computed even with no players - lightCache.body(ConnectionState.PLAY); - light.sendLighting(); - - light.sections.forEach(s -> { - s.blockLight().setRequiresSend(true); - s.skyLight().setRequiresSend(true); - }); - } - } + if (wasUpdatedBlock) { + if (blockLight.length != 0 && blockLight != emptyContent) { + blockLights.add(blockLight); + blockMask.set(index); + } else { + emptyBlockMask.set(index); } + } + } - this.initialLightingSent = true; - }); + this.lightData = new LightData(skyMask, blockMask, + emptySkyMask, emptyBlockMask, + skyLights, blockLights); - return new LightData(skyMask, blockMask, - emptySkyMask, emptyBlockMask, - skyLights, blockLights); + packetGenerationLock.unlock(); + + return this.lightData; + } + + @Override + public void tick(long time) { + super.tick(time); + + if (doneInit && resendTimer.get() > 0) { + if (resendTimer.decrementAndGet() == 0) { + sendLighting(); + } } } @@ -344,8 +398,7 @@ public class LightingChunk extends DynamicChunk { sections.add(new Vec(chunk.getChunkX(), section, chunk.getChunkZ())); } - lighting.lightCache.invalidate(); - lighting.chunkCache.invalidate(); + lighting.invalidate(); } } diff --git a/src/main/java/net/minestom/server/instance/Weather.java b/src/main/java/net/minestom/server/instance/Weather.java new file mode 100644 index 000000000..0056347a4 --- /dev/null +++ b/src/main/java/net/minestom/server/instance/Weather.java @@ -0,0 +1,75 @@ +package net.minestom.server.instance; + +import it.unimi.dsi.fastutil.floats.FloatUnaryOperator; +import net.minestom.server.network.packet.server.SendablePacket; +import net.minestom.server.network.packet.server.play.ChangeGameStatePacket; +import net.minestom.server.utils.MathUtils; +import net.minestom.server.utils.validate.Check; +import org.jetbrains.annotations.Contract; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; +import java.util.List; + +/** + * Represents the possible weather properties of an instance + * + * @param isRaining true if the instance is raining, otherwise false + * @param rainLevel a percentage between 0 and 1 + * used to change how heavy the rain is + * higher values darken the sky and increase rain opacity + * @param thunderLevel a percentage between 0 and 1 + * used to change how heavy the thunder is + * higher values further darken the sky + */ +public record Weather(boolean isRaining, float rainLevel, float thunderLevel) { + /** + * @throws IllegalArgumentException if {@code rainLevel} is not between 0 and 1 + * @throws IllegalArgumentException if {@code thunderLevel} is not between 0 and 1 + */ + public Weather { + Check.argCondition(!MathUtils.isBetween(rainLevel, 0, 1), "Rain level should be between 0 and 1"); + Check.argCondition(!MathUtils.isBetween(thunderLevel, 0, 1), "Thunder level should be between 0 and 1"); + } + + @Contract(pure = true) + public @NotNull Weather withRain(boolean isRaining) { + return new Weather(isRaining, rainLevel, thunderLevel); + } + + @Contract(pure = true) + public @NotNull Weather withRainLevel(float rainLevel) { + return new Weather(isRaining, rainLevel, thunderLevel); + } + + @Contract(pure = true) + public @NotNull Weather withRainLevel(@NotNull FloatUnaryOperator operator) { + return withRainLevel(operator.apply(rainLevel)); + } + + @Contract(pure = true) + public @NotNull Weather withThunderLevel(float thunderLevel) { + return new Weather(isRaining, rainLevel, thunderLevel); + } + + @Contract(pure = true) + public @NotNull Weather withThunderLevel(@NotNull FloatUnaryOperator operator) { + return withRainLevel(operator.apply(thunderLevel)); + } + + public ChangeGameStatePacket createIsRainingPacket() { + return new ChangeGameStatePacket(isRaining ? ChangeGameStatePacket.Reason.BEGIN_RAINING : ChangeGameStatePacket.Reason.END_RAINING, 0); + } + + public ChangeGameStatePacket createRainLevelPacket() { + return new ChangeGameStatePacket(ChangeGameStatePacket.Reason.RAIN_LEVEL_CHANGE, rainLevel); + } + + public ChangeGameStatePacket createThunderLevelPacket() { + return new ChangeGameStatePacket(ChangeGameStatePacket.Reason.THUNDER_LEVEL_CHANGE, thunderLevel); + } + + public @NotNull Collection createWeatherPackets() { + return List.of(createIsRainingPacket(), createRainLevelPacket(), createThunderLevelPacket()); + } +} diff --git a/src/main/java/net/minestom/server/instance/light/BlockLight.java b/src/main/java/net/minestom/server/instance/light/BlockLight.java index 8a1c6ec4a..b87fb1c51 100644 --- a/src/main/java/net/minestom/server/instance/light/BlockLight.java +++ b/src/main/java/net/minestom/server/instance/light/BlockLight.java @@ -24,7 +24,7 @@ final class BlockLight implements Light { private byte[] contentPropagation; private byte[] contentPropagationSwap; - private boolean isValidBorders = false; + private boolean isValidBorders = true; private boolean needsSend = true; private Set toUpdateSet = new HashSet<>(); @@ -34,27 +34,6 @@ final class BlockLight implements Light { this.blockPalette = blockPalette; } - @ApiStatus.Internal - public void setInternalLighting(byte[] content) { - this.content = content; - this.isValidBorders = true; - } - - @ApiStatus.Internal - public void setExternalLighting(byte[] content) { - this.contentPropagation = content; - } - - @ApiStatus.Internal - public byte[] getInternalLighting() { - return content; - } - - @ApiStatus.Internal - public byte[] getExternalLighting() { - return contentPropagation; - } - @Override public Set flip() { if (this.contentPropagationSwap != null) @@ -164,12 +143,6 @@ final class BlockLight implements Light { return lightSources; } - @Override - public void copyFrom(byte @NotNull [] array) { - if (array.length == 0) this.content = null; - else this.content = array.clone(); - } - @Override public Light calculateInternal(Instance instance, int chunkX, int sectionY, int chunkZ) { Chunk chunk = instance.getChunk(chunkX, chunkZ); @@ -223,7 +196,13 @@ final class BlockLight implements Light { @Override public void set(byte[] copyArray) { - this.content = copyArray.clone(); + if (copyArray.length == 0) { + this.content = emptyContent; + this.contentPropagation = emptyContent; + } else { + this.content = copyArray.clone(); + this.contentPropagation = this.content; + } } @Override @@ -233,11 +212,6 @@ final class BlockLight implements Light { return res; } - @Override - public void setRequiresSend(boolean b) { - this.needsSend = b; - } - private void clearCache() { this.contentPropagation = null; isValidBorders = true; diff --git a/src/main/java/net/minestom/server/instance/light/Light.java b/src/main/java/net/minestom/server/instance/light/Light.java index fa4de8c84..540aa7ca0 100644 --- a/src/main/java/net/minestom/server/instance/light/Light.java +++ b/src/main/java/net/minestom/server/instance/light/Light.java @@ -27,15 +27,12 @@ public interface Light { } boolean requiresSend(); - void setRequiresSend(boolean b); @ApiStatus.Internal byte[] array(); Set flip(); - void copyFrom(byte @NotNull [] array); - @ApiStatus.Internal Light calculateExternal(Instance instance, Chunk chunk, int sectionY); diff --git a/src/main/java/net/minestom/server/instance/light/SkyLight.java b/src/main/java/net/minestom/server/instance/light/SkyLight.java index 931bc8742..6bb15da17 100644 --- a/src/main/java/net/minestom/server/instance/light/SkyLight.java +++ b/src/main/java/net/minestom/server/instance/light/SkyLight.java @@ -25,7 +25,7 @@ final class SkyLight implements Light { private byte[] contentPropagation; private byte[] contentPropagationSwap; - private boolean isValidBorders = false; + private boolean isValidBorders = true; private boolean needsSend = true; private Set toUpdateSet = new HashSet<>(); @@ -160,12 +160,6 @@ final class SkyLight implements Light { return lightSources; } - @Override - public void copyFrom(byte @NotNull [] array) { - if (array.length == 0) this.content = null; - else this.content = array.clone(); - } - @Override public Light calculateInternal(Instance instance, int chunkX, int sectionY, int chunkZ) { Chunk chunk = instance.getChunk(chunkX, chunkZ); @@ -228,7 +222,13 @@ final class SkyLight implements Light { @Override public void set(byte[] copyArray) { - this.content = copyArray.clone(); + if (copyArray.length == 0) { + this.content = emptyContent; + this.contentPropagation = emptyContent; + } else { + this.content = copyArray.clone(); + this.contentPropagation = this.content; + } } @Override @@ -238,11 +238,6 @@ final class SkyLight implements Light { return res; } - @Override - public void setRequiresSend(boolean b) { - this.needsSend = b; - } - private void clearCache() { this.contentPropagation = null; isValidBorders = true; diff --git a/src/main/java/net/minestom/server/listener/CreativeInventoryActionListener.java b/src/main/java/net/minestom/server/listener/CreativeInventoryActionListener.java index b03e4f506..1554fd5bf 100644 --- a/src/main/java/net/minestom/server/listener/CreativeInventoryActionListener.java +++ b/src/main/java/net/minestom/server/listener/CreativeInventoryActionListener.java @@ -18,6 +18,11 @@ public final class CreativeInventoryActionListener { player.dropItem(item); return; } + // Bounds check + // 0 is crafting result inventory slot, ignore attempts to place into it + if (slot < 1 || slot > PlayerInventoryUtils.OFFHAND_SLOT) { + return; + } // Set item slot = (short) PlayerInventoryUtils.convertPlayerInventorySlot(slot, PlayerInventoryUtils.OFFSET); PlayerInventory inventory = player.getInventory(); diff --git a/src/main/java/net/minestom/server/network/NetworkBuffer.java b/src/main/java/net/minestom/server/network/NetworkBuffer.java index c470bccb9..60b1322cb 100644 --- a/src/main/java/net/minestom/server/network/NetworkBuffer.java +++ b/src/main/java/net/minestom/server/network/NetworkBuffer.java @@ -1,19 +1,12 @@ package net.minestom.server.network; -import java.util.BitSet; -import java.util.Collection; - -import java.util.EnumSet; -import java.util.List; - -import java.util.UUID; - import net.kyori.adventure.text.Component; import net.minestom.server.coordinate.Point; import net.minestom.server.entity.Entity; import net.minestom.server.entity.metadata.animal.FrogMeta; import net.minestom.server.entity.metadata.animal.SnifferMeta; import net.minestom.server.entity.metadata.animal.tameable.CatMeta; +import net.minestom.server.entity.metadata.other.PaintingMeta; import net.minestom.server.item.ItemStack; import net.minestom.server.network.packet.server.play.data.DeathLocation; import net.minestom.server.particle.Particle; @@ -29,6 +22,7 @@ import org.jglrxavpok.hephaistos.nbt.NBTWriter; import java.nio.ByteBuffer; import java.nio.ByteOrder; +import java.util.*; import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.function.Function; @@ -73,6 +67,7 @@ public final class NetworkBuffer { public static final Type DEATH_LOCATION = NetworkBufferTypes.DEATH_LOCATION; public static final Type CAT_VARIANT = NetworkBufferTypes.CAT_VARIANT; public static final Type FROG_VARIANT = NetworkBufferTypes.FROG_VARIANT; + public static final Type PAINTING_VARIANT = NetworkBufferTypes.PAINTING_VARIANT; public static final Type SNIFFER_STATE = NetworkBufferTypes.SNIFFER_STATE; public static final Type VECTOR3 = NetworkBufferTypes.VECTOR3; public static final Type VECTOR3D = NetworkBufferTypes.VECTOR3D; diff --git a/src/main/java/net/minestom/server/network/NetworkBufferTypes.java b/src/main/java/net/minestom/server/network/NetworkBufferTypes.java index bbaaeadaa..1c1a77578 100644 --- a/src/main/java/net/minestom/server/network/NetworkBufferTypes.java +++ b/src/main/java/net/minestom/server/network/NetworkBufferTypes.java @@ -9,6 +9,7 @@ import net.minestom.server.entity.Entity; import net.minestom.server.entity.metadata.animal.FrogMeta; import net.minestom.server.entity.metadata.animal.SnifferMeta; import net.minestom.server.entity.metadata.animal.tameable.CatMeta; +import net.minestom.server.entity.metadata.other.PaintingMeta; import net.minestom.server.item.ItemStack; import net.minestom.server.item.Material; import net.minestom.server.network.packet.server.play.data.DeathLocation; @@ -578,6 +579,15 @@ final class NetworkBufferTypes { final int ordinal = buffer.read(VAR_INT); return FrogMeta.Variant.values()[ordinal]; }); + static final TypeImpl PAINTING_VARIANT = new TypeImpl<>(PaintingMeta.Variant.class, + (buffer, value) -> { + buffer.write(VAR_INT, value.ordinal()); + return -1; + }, + buffer -> { + final int ordinal = buffer.read(VAR_INT); + return PaintingMeta.Variant.values()[ordinal]; + }); static final TypeImpl SNIFFER_STATE = new TypeImpl<>(SnifferMeta.State.class, (buffer, value) -> { buffer.write(VAR_INT, value.ordinal()); diff --git a/src/main/java/net/minestom/server/network/packet/client/ClientPacket.java b/src/main/java/net/minestom/server/network/packet/client/ClientPacket.java index bcedeff14..be55d454e 100644 --- a/src/main/java/net/minestom/server/network/packet/client/ClientPacket.java +++ b/src/main/java/net/minestom/server/network/packet/client/ClientPacket.java @@ -1,8 +1,6 @@ package net.minestom.server.network.packet.client; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; -import org.jetbrains.annotations.Nullable; /** * Represents a packet received from a client. @@ -10,8 +8,4 @@ import org.jetbrains.annotations.Nullable; * Packets are value-based, and should therefore not be reliant on identity. */ public interface ClientPacket extends NetworkBuffer.Writer { - - default @Nullable ConnectionState nextState() { - return null; - } } diff --git a/src/main/java/net/minestom/server/network/packet/client/play/ClientConfigurationAckPacket.java b/src/main/java/net/minestom/server/network/packet/client/play/ClientConfigurationAckPacket.java index 370b2513a..853593402 100644 --- a/src/main/java/net/minestom/server/network/packet/client/play/ClientConfigurationAckPacket.java +++ b/src/main/java/net/minestom/server/network/packet/client/play/ClientConfigurationAckPacket.java @@ -1,12 +1,10 @@ package net.minestom.server.network.packet.client.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.client.ClientPacket; import org.jetbrains.annotations.NotNull; public record ClientConfigurationAckPacket() implements ClientPacket { - public ClientConfigurationAckPacket(@NotNull NetworkBuffer buffer) { this(); } @@ -14,9 +12,4 @@ public record ClientConfigurationAckPacket() implements ClientPacket { @Override public void write(@NotNull NetworkBuffer writer) { } - - @Override - public @NotNull ConnectionState nextState() { - return ConnectionState.CONFIGURATION; - } } diff --git a/src/main/java/net/minestom/server/network/packet/server/ComponentHoldingServerPacket.java b/src/main/java/net/minestom/server/network/packet/server/ComponentHoldingServerPacket.java deleted file mode 100644 index 7c2d96ff0..000000000 --- a/src/main/java/net/minestom/server/network/packet/server/ComponentHoldingServerPacket.java +++ /dev/null @@ -1,8 +0,0 @@ -package net.minestom.server.network.packet.server; - -import net.minestom.server.adventure.ComponentHolder; - -/** - * A server packet that can hold components. - */ -public interface ComponentHoldingServerPacket extends ServerPacket, ComponentHolder { } diff --git a/src/main/java/net/minestom/server/network/packet/server/ServerPacket.java b/src/main/java/net/minestom/server/network/packet/server/ServerPacket.java index db273139e..37384bc20 100644 --- a/src/main/java/net/minestom/server/network/packet/server/ServerPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/ServerPacket.java @@ -1,17 +1,22 @@ package net.minestom.server.network.packet.server; +import net.minestom.server.adventure.ComponentHolder; import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.player.PlayerConnection; +import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.List; /** * Represents a packet which can be sent to a player using {@link PlayerConnection#sendPacket(SendablePacket)}. *

* Packets are value-based, and should therefore not be reliant on identity. */ -public non-sealed interface ServerPacket extends NetworkBuffer.Writer, SendablePacket { +public sealed interface ServerPacket extends NetworkBuffer.Writer, SendablePacket permits + ServerPacket.Configuration, ServerPacket.Status, ServerPacket.Login, ServerPacket.Play { /** * Gets the id of this packet. @@ -20,6 +25,40 @@ public non-sealed interface ServerPacket extends NetworkBuffer.Writer, SendableP * * @return the id of this packet */ - int getId(@NotNull ConnectionState state); + default int getId(@NotNull ConnectionState state) { + final int id = switch (state) { + case HANDSHAKE -> -1; + case CONFIGURATION -> this instanceof Configuration configuration ? configuration.configurationId() : -1; + case STATUS -> this instanceof Status status ? status.statusId() : -1; + case LOGIN -> this instanceof Login login ? login.loginId() : -1; + case PLAY -> this instanceof Play play ? play.playId() : -1; + }; + if (id != -1) return id; + // Invalid state, generate error + List validStates = new ArrayList<>(); + if (this instanceof Configuration) validStates.add(ConnectionState.CONFIGURATION); + if (this instanceof Status) validStates.add(ConnectionState.STATUS); + if (this instanceof Login) validStates.add(ConnectionState.LOGIN); + if (this instanceof Play) validStates.add(ConnectionState.PLAY); + return PacketUtils.invalidPacketState(getClass(), state, validStates.toArray(ConnectionState[]::new)); + } + non-sealed interface Configuration extends ServerPacket { + int configurationId(); + } + + non-sealed interface Status extends ServerPacket { + int statusId(); + } + + non-sealed interface Login extends ServerPacket { + int loginId(); + } + + non-sealed interface Play extends ServerPacket { + int playId(); + } + + interface ComponentHolding extends ComponentHolder { + } } diff --git a/src/main/java/net/minestom/server/network/packet/server/common/DisconnectPacket.java b/src/main/java/net/minestom/server/network/packet/server/common/DisconnectPacket.java index 1d89997ab..494a463f2 100644 --- a/src/main/java/net/minestom/server/network/packet/server/common/DisconnectPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/common/DisconnectPacket.java @@ -1,12 +1,9 @@ package net.minestom.server.network.packet.server.common; import net.kyori.adventure.text.Component; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; -import net.minestom.server.network.packet.server.ComponentHoldingServerPacket; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import java.util.Collection; @@ -15,7 +12,8 @@ import java.util.function.UnaryOperator; import static net.minestom.server.network.NetworkBuffer.COMPONENT; -public record DisconnectPacket(@NotNull Component message) implements ComponentHoldingServerPacket { +public record DisconnectPacket(@NotNull Component message) implements ServerPacket.Configuration, ServerPacket.Play, + ServerPacket.ComponentHolding { public DisconnectPacket(@NotNull NetworkBuffer reader) { this(reader.read(COMPONENT)); } @@ -26,12 +24,13 @@ public record DisconnectPacket(@NotNull Component message) implements ComponentH } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case CONFIGURATION -> ServerPacketIdentifier.CONFIGURATION_DISCONNECT; - case PLAY -> ServerPacketIdentifier.DISCONNECT; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.CONFIGURATION, ConnectionState.PLAY); - }; + public int configurationId() { + return ServerPacketIdentifier.CONFIGURATION_DISCONNECT; + } + + @Override + public int playId() { + return ServerPacketIdentifier.DISCONNECT; } @Override diff --git a/src/main/java/net/minestom/server/network/packet/server/common/KeepAlivePacket.java b/src/main/java/net/minestom/server/network/packet/server/common/KeepAlivePacket.java index 655d277a4..fd70b8cb1 100644 --- a/src/main/java/net/minestom/server/network/packet/server/common/KeepAlivePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/common/KeepAlivePacket.java @@ -1,15 +1,13 @@ package net.minestom.server.network.packet.server.common; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.LONG; -public record KeepAlivePacket(long id) implements ServerPacket { +public record KeepAlivePacket(long id) implements ServerPacket.Configuration, ServerPacket.Play { public KeepAlivePacket(@NotNull NetworkBuffer reader) { this(reader.read(LONG)); } @@ -20,11 +18,12 @@ public record KeepAlivePacket(long id) implements ServerPacket { } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case CONFIGURATION -> ServerPacketIdentifier.CONFIGURATION_KEEP_ALIVE; - case PLAY -> ServerPacketIdentifier.KEEP_ALIVE; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.CONFIGURATION, ConnectionState.PLAY); - }; + public int configurationId() { + return ServerPacketIdentifier.CONFIGURATION_KEEP_ALIVE; + } + + @Override + public int playId() { + return ServerPacketIdentifier.KEEP_ALIVE; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/common/PingPacket.java b/src/main/java/net/minestom/server/network/packet/server/common/PingPacket.java index d25c8d43a..085355e90 100644 --- a/src/main/java/net/minestom/server/network/packet/server/common/PingPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/common/PingPacket.java @@ -1,15 +1,13 @@ package net.minestom.server.network.packet.server.common; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.INT; -public record PingPacket(int id) implements ServerPacket { +public record PingPacket(int id) implements ServerPacket.Configuration, ServerPacket.Play { public PingPacket(@NotNull NetworkBuffer reader) { this(reader.read(INT)); } @@ -20,11 +18,12 @@ public record PingPacket(int id) implements ServerPacket { } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case CONFIGURATION -> ServerPacketIdentifier.CONFIGURATION_PING; - case PLAY -> ServerPacketIdentifier.PING; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.CONFIGURATION, ConnectionState.PLAY); - }; + public int configurationId() { + return ServerPacketIdentifier.CONFIGURATION_PING; + } + + @Override + public int playId() { + return ServerPacketIdentifier.PING; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/common/PingResponsePacket.java b/src/main/java/net/minestom/server/network/packet/server/common/PingResponsePacket.java index 5c0305bf5..ad8a2c20a 100644 --- a/src/main/java/net/minestom/server/network/packet/server/common/PingResponsePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/common/PingResponsePacket.java @@ -1,15 +1,13 @@ package net.minestom.server.network.packet.server.common; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.LONG; -public record PingResponsePacket(long number) implements ServerPacket { +public record PingResponsePacket(long number) implements ServerPacket.Status, ServerPacket.Play { public PingResponsePacket(@NotNull NetworkBuffer reader) { this(reader.read(LONG)); } @@ -20,11 +18,12 @@ public record PingResponsePacket(long number) implements ServerPacket { } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case STATUS -> ServerPacketIdentifier.STATUS_PING_RESPONSE; - case PLAY -> ServerPacketIdentifier.PING_RESPONSE; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.STATUS); - }; + public int statusId() { + return ServerPacketIdentifier.STATUS_PING_RESPONSE; + } + + @Override + public int playId() { + return ServerPacketIdentifier.PING_RESPONSE; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/common/PluginMessagePacket.java b/src/main/java/net/minestom/server/network/packet/server/common/PluginMessagePacket.java index 3edcda88b..ede91dd39 100644 --- a/src/main/java/net/minestom/server/network/packet/server/common/PluginMessagePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/common/PluginMessagePacket.java @@ -1,17 +1,16 @@ package net.minestom.server.network.packet.server.common; import net.minestom.server.MinecraftServer; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.RAW_BYTES; import static net.minestom.server.network.NetworkBuffer.STRING; -public record PluginMessagePacket(String channel, byte[] data) implements ServerPacket { +public record PluginMessagePacket(String channel, + byte[] data) implements ServerPacket.Configuration, ServerPacket.Play { public PluginMessagePacket(@NotNull NetworkBuffer reader) { this(reader.read(STRING), reader.read(RAW_BYTES)); } @@ -23,12 +22,13 @@ public record PluginMessagePacket(String channel, byte[] data) implements Server } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case CONFIGURATION -> ServerPacketIdentifier.CONFIGURATION_PLUGIN_MESSAGE; - case PLAY -> ServerPacketIdentifier.PLUGIN_MESSAGE; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.CONFIGURATION, ConnectionState.PLAY); - }; + public int configurationId() { + return ServerPacketIdentifier.CONFIGURATION_PLUGIN_MESSAGE; + } + + @Override + public int playId() { + return ServerPacketIdentifier.PLUGIN_MESSAGE; } /** diff --git a/src/main/java/net/minestom/server/network/packet/server/common/ResourcePackPopPacket.java b/src/main/java/net/minestom/server/network/packet/server/common/ResourcePackPopPacket.java index d1e27f422..a6774a3d7 100644 --- a/src/main/java/net/minestom/server/network/packet/server/common/ResourcePackPopPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/common/ResourcePackPopPacket.java @@ -1,17 +1,14 @@ package net.minestom.server.network.packet.server.common; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.UUID; -public record ResourcePackPopPacket(@Nullable UUID id) implements ServerPacket { - +public record ResourcePackPopPacket(@Nullable UUID id) implements ServerPacket.Configuration, ServerPacket.Play { public ResourcePackPopPacket(@NotNull NetworkBuffer reader) { this(reader.readOptional(NetworkBuffer.UUID)); } @@ -22,11 +19,12 @@ public record ResourcePackPopPacket(@Nullable UUID id) implements ServerPacket { } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case CONFIGURATION -> ServerPacketIdentifier.CONFIGURATION_RESOURCE_PACK_POP_PACKET; - case PLAY -> ServerPacketIdentifier.RESOURCE_PACK_POP; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.CONFIGURATION, ConnectionState.PLAY); - }; + public int configurationId() { + return ServerPacketIdentifier.CONFIGURATION_RESOURCE_PACK_POP_PACKET; + } + + @Override + public int playId() { + return ServerPacketIdentifier.RESOURCE_PACK_POP; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/common/ResourcePackPushPacket.java b/src/main/java/net/minestom/server/network/packet/server/common/ResourcePackPushPacket.java index d31d1883e..a2b2f5e80 100644 --- a/src/main/java/net/minestom/server/network/packet/server/common/ResourcePackPushPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/common/ResourcePackPushPacket.java @@ -2,12 +2,9 @@ package net.minestom.server.network.packet.server.common; import net.kyori.adventure.resource.ResourcePackInfo; import net.kyori.adventure.text.Component; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; -import net.minestom.server.network.packet.server.ComponentHoldingServerPacket; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -24,7 +21,7 @@ public record ResourcePackPushPacket( @NotNull String hash, boolean forced, @Nullable Component prompt -) implements ComponentHoldingServerPacket { +) implements ServerPacket.Configuration, ServerPacket.Play, ServerPacket.ComponentHolding { public ResourcePackPushPacket(@NotNull NetworkBuffer reader) { this(reader.read(UUID), reader.read(STRING), reader.read(STRING), reader.read(BOOLEAN), reader.readOptional(COMPONENT)); @@ -44,12 +41,13 @@ public record ResourcePackPushPacket( } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case CONFIGURATION -> ServerPacketIdentifier.CONFIGURATION_RESOURCE_PACK_PUSH_PACKET; - case PLAY -> ServerPacketIdentifier.RESOURCE_PACK_PUSH; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.CONFIGURATION, ConnectionState.PLAY); - }; + public int configurationId() { + return ServerPacketIdentifier.CONFIGURATION_RESOURCE_PACK_PUSH_PACKET; + } + + @Override + public int playId() { + return ServerPacketIdentifier.RESOURCE_PACK_PUSH; } @Override diff --git a/src/main/java/net/minestom/server/network/packet/server/common/TagsPacket.java b/src/main/java/net/minestom/server/network/packet/server/common/TagsPacket.java index 5906ad48a..daa06217c 100644 --- a/src/main/java/net/minestom/server/network/packet/server/common/TagsPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/common/TagsPacket.java @@ -2,12 +2,10 @@ package net.minestom.server.network.packet.server.common; import net.minestom.server.MinecraftServer; import net.minestom.server.gamedata.tags.Tag; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.CachedPacket; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; @@ -17,7 +15,8 @@ import java.util.Map; import static net.minestom.server.network.NetworkBuffer.*; -public record TagsPacket(@NotNull Map> tagsMap) implements ServerPacket { +public record TagsPacket( + @NotNull Map> tagsMap) implements ServerPacket.Configuration, ServerPacket.Play { @ApiStatus.Internal public static final CachedPacket DEFAULT_TAGS = new CachedPacket(new TagsPacket(MinecraftServer.getTagManager().getTagMap())); @@ -49,12 +48,13 @@ public record TagsPacket(@NotNull Map> tagsMap) impleme } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case CONFIGURATION -> ServerPacketIdentifier.CONFIGURATION_TAGS; - case PLAY -> ServerPacketIdentifier.TAGS; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.CONFIGURATION, ConnectionState.PLAY); - }; + public int configurationId() { + return ServerPacketIdentifier.CONFIGURATION_TAGS; + } + + @Override + public int playId() { + return ServerPacketIdentifier.TAGS; } private static Map> readTagsMap(@NotNull NetworkBuffer reader) { diff --git a/src/main/java/net/minestom/server/network/packet/server/configuration/FinishConfigurationPacket.java b/src/main/java/net/minestom/server/network/packet/server/configuration/FinishConfigurationPacket.java index c62a4be2b..cecb189ff 100644 --- a/src/main/java/net/minestom/server/network/packet/server/configuration/FinishConfigurationPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/configuration/FinishConfigurationPacket.java @@ -1,14 +1,11 @@ package net.minestom.server.network.packet.server.configuration; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; -public record FinishConfigurationPacket() implements ServerPacket { - +public record FinishConfigurationPacket() implements ServerPacket.Configuration { public FinishConfigurationPacket(@NotNull NetworkBuffer buffer) { this(); } @@ -18,10 +15,7 @@ public record FinishConfigurationPacket() implements ServerPacket { } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case CONFIGURATION -> ServerPacketIdentifier.CONFIGURATION_FINISH_CONFIGURATION; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.CONFIGURATION); - }; + public int configurationId() { + return ServerPacketIdentifier.CONFIGURATION_FINISH_CONFIGURATION; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/configuration/RegistryDataPacket.java b/src/main/java/net/minestom/server/network/packet/server/configuration/RegistryDataPacket.java index 0fb4824a9..2b0d4d2ca 100644 --- a/src/main/java/net/minestom/server/network/packet/server/configuration/RegistryDataPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/configuration/RegistryDataPacket.java @@ -1,17 +1,14 @@ package net.minestom.server.network.packet.server.configuration; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import org.jglrxavpok.hephaistos.nbt.NBTCompound; import static net.minestom.server.network.NetworkBuffer.NBT; -public record RegistryDataPacket(@NotNull NBTCompound data) implements ServerPacket { - +public record RegistryDataPacket(@NotNull NBTCompound data) implements ServerPacket.Configuration { public RegistryDataPacket(@NotNull NetworkBuffer buffer) { this((NBTCompound) buffer.read(NBT)); } @@ -22,10 +19,7 @@ public record RegistryDataPacket(@NotNull NBTCompound data) implements ServerPac } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case CONFIGURATION -> ServerPacketIdentifier.CONFIGURATION_REGISTRY_DATA; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.CONFIGURATION); - }; + public int configurationId() { + return ServerPacketIdentifier.CONFIGURATION_REGISTRY_DATA; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/configuration/UpdateEnabledFeaturesPacket.java b/src/main/java/net/minestom/server/network/packet/server/configuration/UpdateEnabledFeaturesPacket.java index 44c059061..7bba65a9b 100644 --- a/src/main/java/net/minestom/server/network/packet/server/configuration/UpdateEnabledFeaturesPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/configuration/UpdateEnabledFeaturesPacket.java @@ -1,18 +1,16 @@ package net.minestom.server.network.packet.server.configuration; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; import net.minestom.server.utils.NamespaceID; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import java.util.Set; import static net.minestom.server.network.NetworkBuffer.STRING; -public record UpdateEnabledFeaturesPacket(@NotNull Set features) implements ServerPacket { +public record UpdateEnabledFeaturesPacket(@NotNull Set features) implements ServerPacket.Configuration { public static final int MAX_FEATURES = 1024; public UpdateEnabledFeaturesPacket(@NotNull NetworkBuffer buffer) { @@ -25,11 +23,7 @@ public record UpdateEnabledFeaturesPacket(@NotNull Set features) im } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case CONFIGURATION -> ServerPacketIdentifier.CONFIGURATION_UPDATE_ENABLED_FEATURES; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.CONFIGURATION); - }; + public int configurationId() { + return ServerPacketIdentifier.CONFIGURATION_UPDATE_ENABLED_FEATURES; } - } diff --git a/src/main/java/net/minestom/server/network/packet/server/login/EncryptionRequestPacket.java b/src/main/java/net/minestom/server/network/packet/server/login/EncryptionRequestPacket.java index b9996c341..3a52c731f 100644 --- a/src/main/java/net/minestom/server/network/packet/server/login/EncryptionRequestPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/login/EncryptionRequestPacket.java @@ -1,10 +1,8 @@ package net.minestom.server.network.packet.server.login; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.BYTE_ARRAY; @@ -12,7 +10,7 @@ import static net.minestom.server.network.NetworkBuffer.STRING; public record EncryptionRequestPacket(@NotNull String serverId, byte @NotNull [] publicKey, - byte @NotNull [] verifyToken) implements ServerPacket { + byte @NotNull [] verifyToken) implements ServerPacket.Login { public EncryptionRequestPacket(@NotNull NetworkBuffer reader) { this(reader.read(STRING), reader.read(BYTE_ARRAY), @@ -27,10 +25,7 @@ public record EncryptionRequestPacket(@NotNull String serverId, } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case LOGIN -> ServerPacketIdentifier.LOGIN_ENCRYPTION_REQUEST; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.LOGIN); - }; + public int loginId() { + return ServerPacketIdentifier.LOGIN_ENCRYPTION_REQUEST; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/login/LoginDisconnectPacket.java b/src/main/java/net/minestom/server/network/packet/server/login/LoginDisconnectPacket.java index 859265b51..87ad70bef 100644 --- a/src/main/java/net/minestom/server/network/packet/server/login/LoginDisconnectPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/login/LoginDisconnectPacket.java @@ -1,11 +1,9 @@ package net.minestom.server.network.packet.server.login; import net.kyori.adventure.text.Component; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; -import net.minestom.server.network.packet.server.ComponentHoldingServerPacket; +import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import java.util.Collection; @@ -14,7 +12,8 @@ import java.util.function.UnaryOperator; import static net.minestom.server.network.NetworkBuffer.JSON_COMPONENT; -public record LoginDisconnectPacket(@NotNull Component kickMessage) implements ComponentHoldingServerPacket { +public record LoginDisconnectPacket(@NotNull Component kickMessage) implements ServerPacket.Login, + ServerPacket.ComponentHolding { public LoginDisconnectPacket(@NotNull NetworkBuffer reader) { this(reader.read(JSON_COMPONENT)); } @@ -25,11 +24,8 @@ public record LoginDisconnectPacket(@NotNull Component kickMessage) implements C } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case LOGIN -> ServerPacketIdentifier.LOGIN_DISCONNECT; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.LOGIN); - }; + public int loginId() { + return ServerPacketIdentifier.LOGIN_DISCONNECT; } @Override diff --git a/src/main/java/net/minestom/server/network/packet/server/login/LoginPluginRequestPacket.java b/src/main/java/net/minestom/server/network/packet/server/login/LoginPluginRequestPacket.java index 16e2291cd..2228a80e4 100644 --- a/src/main/java/net/minestom/server/network/packet/server/login/LoginPluginRequestPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/login/LoginPluginRequestPacket.java @@ -1,17 +1,15 @@ package net.minestom.server.network.packet.server.login; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import static net.minestom.server.network.NetworkBuffer.*; public record LoginPluginRequestPacket(int messageId, @NotNull String channel, - byte @Nullable [] data) implements ServerPacket { + byte @Nullable [] data) implements ServerPacket.Login { public LoginPluginRequestPacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT), reader.read(STRING), reader.read(RAW_BYTES)); @@ -27,10 +25,7 @@ public record LoginPluginRequestPacket(int messageId, @NotNull String channel, } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case LOGIN -> ServerPacketIdentifier.LOGIN_PLUGIN_REQUEST; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.LOGIN); - }; + public int loginId() { + return ServerPacketIdentifier.LOGIN_PLUGIN_REQUEST; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/login/LoginSuccessPacket.java b/src/main/java/net/minestom/server/network/packet/server/login/LoginSuccessPacket.java index 8d8604fcb..d369c7507 100644 --- a/src/main/java/net/minestom/server/network/packet/server/login/LoginSuccessPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/login/LoginSuccessPacket.java @@ -1,10 +1,8 @@ package net.minestom.server.network.packet.server.login; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import java.util.UUID; @@ -12,7 +10,8 @@ import java.util.UUID; import static net.minestom.server.network.NetworkBuffer.STRING; import static net.minestom.server.network.NetworkBuffer.VAR_INT; -public record LoginSuccessPacket(@NotNull UUID uuid, @NotNull String username, int properties) implements ServerPacket { +public record LoginSuccessPacket(@NotNull UUID uuid, @NotNull String username, + int properties) implements ServerPacket.Login { public LoginSuccessPacket(@NotNull NetworkBuffer reader) { this(reader.read(NetworkBuffer.UUID), reader.read(STRING), reader.read(VAR_INT)); } @@ -25,10 +24,7 @@ public record LoginSuccessPacket(@NotNull UUID uuid, @NotNull String username, i } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case LOGIN -> ServerPacketIdentifier.LOGIN_SUCCESS; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.LOGIN); - }; + public int loginId() { + return ServerPacketIdentifier.LOGIN_SUCCESS; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/login/SetCompressionPacket.java b/src/main/java/net/minestom/server/network/packet/server/login/SetCompressionPacket.java index f43b06ad9..11ac1eb0d 100644 --- a/src/main/java/net/minestom/server/network/packet/server/login/SetCompressionPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/login/SetCompressionPacket.java @@ -1,15 +1,13 @@ package net.minestom.server.network.packet.server.login; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.VAR_INT; -public record SetCompressionPacket(int threshold) implements ServerPacket { +public record SetCompressionPacket(int threshold) implements ServerPacket.Login { public SetCompressionPacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT)); } @@ -20,10 +18,7 @@ public record SetCompressionPacket(int threshold) implements ServerPacket { } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case LOGIN -> ServerPacketIdentifier.LOGIN_SET_COMPRESSION; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.LOGIN); - }; + public int loginId() { + return ServerPacketIdentifier.LOGIN_SET_COMPRESSION; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/AcknowledgeBlockChangePacket.java b/src/main/java/net/minestom/server/network/packet/server/play/AcknowledgeBlockChangePacket.java index d5e503581..66c226b8e 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/AcknowledgeBlockChangePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/AcknowledgeBlockChangePacket.java @@ -1,15 +1,13 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.VAR_INT; -public record AcknowledgeBlockChangePacket(int sequence) implements ServerPacket { +public record AcknowledgeBlockChangePacket(int sequence) implements ServerPacket.Play { public AcknowledgeBlockChangePacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT)); } @@ -20,10 +18,7 @@ public record AcknowledgeBlockChangePacket(int sequence) implements ServerPacket } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.ACKNOWLEDGE_BLOCK_CHANGE; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.ACKNOWLEDGE_BLOCK_CHANGE; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/ActionBarPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/ActionBarPacket.java index a92442161..72923a0ae 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/ActionBarPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/ActionBarPacket.java @@ -1,12 +1,9 @@ package net.minestom.server.network.packet.server.play; import net.kyori.adventure.text.Component; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; -import net.minestom.server.network.packet.server.ComponentHoldingServerPacket; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import java.util.Collection; @@ -15,7 +12,7 @@ import java.util.function.UnaryOperator; import static net.minestom.server.network.NetworkBuffer.COMPONENT; -public record ActionBarPacket(@NotNull Component text) implements ComponentHoldingServerPacket { +public record ActionBarPacket(@NotNull Component text) implements ServerPacket.Play, ServerPacket.ComponentHolding { public ActionBarPacket(@NotNull NetworkBuffer reader) { this(reader.read(COMPONENT)); } @@ -26,11 +23,8 @@ public record ActionBarPacket(@NotNull Component text) implements ComponentHoldi } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.ACTION_BAR; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.ACTION_BAR; } @Override diff --git a/src/main/java/net/minestom/server/network/packet/server/play/AdvancementsPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/AdvancementsPacket.java index 1d025c99b..e8b4870ae 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/AdvancementsPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/AdvancementsPacket.java @@ -4,12 +4,10 @@ import net.kyori.adventure.text.Component; import net.minestom.server.advancements.FrameType; import net.minestom.server.adventure.ComponentHolder; import net.minestom.server.item.ItemStack; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; -import net.minestom.server.network.packet.server.ComponentHoldingServerPacket; +import net.minestom.server.network.packet.server.ServerPacket.ComponentHolding; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -23,7 +21,7 @@ import static net.minestom.server.network.NetworkBuffer.*; public record AdvancementsPacket(boolean reset, @NotNull List advancementMappings, @NotNull List identifiersToRemove, - @NotNull List progressMappings) implements ComponentHoldingServerPacket { + @NotNull List progressMappings) implements ServerPacket.Play, ServerPacket.ComponentHolding { public static final int MAX_ADVANCEMENTS = Short.MAX_VALUE; public AdvancementsPacket { @@ -47,11 +45,8 @@ public record AdvancementsPacket(boolean reset, @NotNull List ServerPacketIdentifier.ADVANCEMENTS; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.ADVANCEMENTS; } // TODO is the display-item needed to be updated? diff --git a/src/main/java/net/minestom/server/network/packet/server/play/AttachEntityPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/AttachEntityPacket.java index 4d39e6a83..66878a864 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/AttachEntityPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/AttachEntityPacket.java @@ -1,17 +1,15 @@ package net.minestom.server.network.packet.server.play; import net.minestom.server.entity.Entity; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import static net.minestom.server.network.NetworkBuffer.INT; -public record AttachEntityPacket(int attachedEntityId, int holdingEntityId) implements ServerPacket { +public record AttachEntityPacket(int attachedEntityId, int holdingEntityId) implements ServerPacket.Play { public AttachEntityPacket(@NotNull Entity attachedEntity, @Nullable Entity holdingEntity) { this(attachedEntity.getEntityId(), holdingEntity != null ? holdingEntity.getEntityId() : -1); } @@ -27,10 +25,7 @@ public record AttachEntityPacket(int attachedEntityId, int holdingEntityId) impl } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.ATTACH_ENTITY; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.ATTACH_ENTITY; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/BlockActionPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/BlockActionPacket.java index 61131c3c5..947709d75 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/BlockActionPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/BlockActionPacket.java @@ -2,17 +2,15 @@ package net.minestom.server.network.packet.server.play; import net.minestom.server.coordinate.Point; import net.minestom.server.instance.block.Block; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.*; public record BlockActionPacket(@NotNull Point blockPosition, byte actionId, - byte actionParam, int blockId) implements ServerPacket { + byte actionParam, int blockId) implements ServerPacket.Play { public BlockActionPacket(Point blockPosition, byte actionId, byte actionParam, Block block) { this(blockPosition, actionId, actionParam, block.id()); } @@ -31,10 +29,7 @@ public record BlockActionPacket(@NotNull Point blockPosition, byte actionId, } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.BLOCK_ACTION; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.BLOCK_ACTION; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/BlockBreakAnimationPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/BlockBreakAnimationPacket.java index 1d6ad250d..a1adbc383 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/BlockBreakAnimationPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/BlockBreakAnimationPacket.java @@ -1,17 +1,15 @@ package net.minestom.server.network.packet.server.play; import net.minestom.server.coordinate.Point; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.*; public record BlockBreakAnimationPacket(int entityId, @NotNull Point blockPosition, - byte destroyStage) implements ServerPacket { + byte destroyStage) implements ServerPacket.Play { public BlockBreakAnimationPacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT), reader.read(BLOCK_POSITION), reader.read(BYTE)); } @@ -24,10 +22,7 @@ public record BlockBreakAnimationPacket(int entityId, @NotNull Point blockPositi } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.BLOCK_BREAK_ANIMATION; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.BLOCK_BREAK_ANIMATION; } } \ No newline at end of file diff --git a/src/main/java/net/minestom/server/network/packet/server/play/BlockChangePacket.java b/src/main/java/net/minestom/server/network/packet/server/play/BlockChangePacket.java index f99e66e40..40ff8820b 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/BlockChangePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/BlockChangePacket.java @@ -2,17 +2,15 @@ package net.minestom.server.network.packet.server.play; import net.minestom.server.coordinate.Point; import net.minestom.server.instance.block.Block; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.BLOCK_POSITION; import static net.minestom.server.network.NetworkBuffer.VAR_INT; -public record BlockChangePacket(@NotNull Point blockPosition, int blockStateId) implements ServerPacket { +public record BlockChangePacket(@NotNull Point blockPosition, int blockStateId) implements ServerPacket.Play { public BlockChangePacket(@NotNull Point blockPosition, @NotNull Block block) { this(blockPosition, block.stateId()); } @@ -28,10 +26,7 @@ public record BlockChangePacket(@NotNull Point blockPosition, int blockStateId) } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.BLOCK_CHANGE; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.BLOCK_CHANGE; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/BlockEntityDataPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/BlockEntityDataPacket.java index 51f7b8e05..f878bfbeb 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/BlockEntityDataPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/BlockEntityDataPacket.java @@ -1,11 +1,9 @@ package net.minestom.server.network.packet.server.play; import net.minestom.server.coordinate.Point; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jglrxavpok.hephaistos.nbt.NBTCompound; @@ -13,7 +11,7 @@ import org.jglrxavpok.hephaistos.nbt.NBTCompound; import static net.minestom.server.network.NetworkBuffer.*; public record BlockEntityDataPacket(@NotNull Point blockPosition, int action, - @Nullable NBTCompound data) implements ServerPacket { + @Nullable NBTCompound data) implements ServerPacket.Play { public BlockEntityDataPacket(@NotNull NetworkBuffer reader) { this(reader.read(BLOCK_POSITION), reader.read(VAR_INT), (NBTCompound) reader.read(NBT)); } @@ -31,10 +29,7 @@ public record BlockEntityDataPacket(@NotNull Point blockPosition, int action, } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.BLOCK_ENTITY_DATA; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.BLOCK_ENTITY_DATA; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/BossBarPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/BossBarPacket.java index 92f76d7c4..cd2fc9f11 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/BossBarPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/BossBarPacket.java @@ -4,12 +4,10 @@ import net.kyori.adventure.bossbar.BossBar; import net.kyori.adventure.text.Component; import net.minestom.server.adventure.AdventurePacketConvertor; import net.minestom.server.adventure.ComponentHolder; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; -import net.minestom.server.network.packet.server.ComponentHoldingServerPacket; +import net.minestom.server.network.packet.server.ServerPacket.ComponentHolding; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import java.util.Collection; @@ -19,7 +17,7 @@ import java.util.function.UnaryOperator; import static net.minestom.server.network.NetworkBuffer.*; -public record BossBarPacket(@NotNull UUID uuid, @NotNull Action action) implements ComponentHoldingServerPacket { +public record BossBarPacket(@NotNull UUID uuid, @NotNull Action action) implements ServerPacket.Play, ServerPacket.ComponentHolding { public BossBarPacket(@NotNull NetworkBuffer reader) { this(reader.read(NetworkBuffer.UUID), switch (reader.read(VAR_INT)) { case 0 -> new AddAction(reader); @@ -201,10 +199,7 @@ public record BossBarPacket(@NotNull UUID uuid, @NotNull Action action) implemen } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.BOSS_BAR; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.BOSS_BAR; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/BundlePacket.java b/src/main/java/net/minestom/server/network/packet/server/play/BundlePacket.java index 6c4faf941..2d0cdc08f 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/BundlePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/BundlePacket.java @@ -1,13 +1,11 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; -public record BundlePacket() implements ServerPacket { +public record BundlePacket() implements ServerPacket.Play { public BundlePacket(@NotNull NetworkBuffer reader) { this(); } @@ -17,10 +15,7 @@ public record BundlePacket() implements ServerPacket { } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.BUNDLE; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.BUNDLE; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/CameraPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/CameraPacket.java index 3d323786b..a3656adf8 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/CameraPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/CameraPacket.java @@ -1,16 +1,14 @@ package net.minestom.server.network.packet.server.play; import net.minestom.server.entity.Entity; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.VAR_INT; -public record CameraPacket(int cameraId) implements ServerPacket { +public record CameraPacket(int cameraId) implements ServerPacket.Play { public CameraPacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT)); } @@ -25,10 +23,7 @@ public record CameraPacket(int cameraId) implements ServerPacket { } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.CAMERA; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.CAMERA; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/ChangeGameStatePacket.java b/src/main/java/net/minestom/server/network/packet/server/play/ChangeGameStatePacket.java index c4a398961..3f7e29886 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/ChangeGameStatePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/ChangeGameStatePacket.java @@ -1,16 +1,14 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.BYTE; import static net.minestom.server.network.NetworkBuffer.FLOAT; -public record ChangeGameStatePacket(@NotNull Reason reason, float value) implements ServerPacket { +public record ChangeGameStatePacket(@NotNull Reason reason, float value) implements ServerPacket.Play { public ChangeGameStatePacket(@NotNull NetworkBuffer reader) { this(Reason.values()[reader.read(BYTE)], reader.read(FLOAT)); } @@ -22,11 +20,8 @@ public record ChangeGameStatePacket(@NotNull Reason reason, float value) impleme } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.CHANGE_GAME_STATE; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.CHANGE_GAME_STATE; } public enum Reason { diff --git a/src/main/java/net/minestom/server/network/packet/server/play/ChunkBatchFinishedPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/ChunkBatchFinishedPacket.java index f3cf6b545..e6399e600 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/ChunkBatchFinishedPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/ChunkBatchFinishedPacket.java @@ -1,16 +1,13 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.VAR_INT; -public record ChunkBatchFinishedPacket(int batchSize) implements ServerPacket { - +public record ChunkBatchFinishedPacket(int batchSize) implements ServerPacket.Play { public ChunkBatchFinishedPacket(@NotNull NetworkBuffer buffer) { this(buffer.read(VAR_INT)); } @@ -21,10 +18,7 @@ public record ChunkBatchFinishedPacket(int batchSize) implements ServerPacket { } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.CHUNK_BATCH_FINISHED; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.CHUNK_BATCH_FINISHED; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/ChunkBatchStartPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/ChunkBatchStartPacket.java index 11f7fb4db..b77ef15b6 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/ChunkBatchStartPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/ChunkBatchStartPacket.java @@ -1,14 +1,11 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; -public record ChunkBatchStartPacket() implements ServerPacket { - +public record ChunkBatchStartPacket() implements ServerPacket.Play { public ChunkBatchStartPacket(@NotNull NetworkBuffer buffer) { this(); } @@ -18,10 +15,7 @@ public record ChunkBatchStartPacket() implements ServerPacket { } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.CHUNK_BATCH_START; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.CHUNK_BATCH_START; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/ChunkDataPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/ChunkDataPacket.java index abf7bbfa3..30a2f1e91 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/ChunkDataPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/ChunkDataPacket.java @@ -1,19 +1,17 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; import net.minestom.server.network.packet.server.play.data.ChunkData; import net.minestom.server.network.packet.server.play.data.LightData; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.INT; public record ChunkDataPacket(int chunkX, int chunkZ, @NotNull ChunkData chunkData, - @NotNull LightData lightData) implements ServerPacket { + @NotNull LightData lightData) implements ServerPacket.Play { public ChunkDataPacket(@NotNull NetworkBuffer reader) { this(reader.read(INT), reader.read(INT), new ChunkData(reader), @@ -29,10 +27,7 @@ public record ChunkDataPacket(int chunkX, int chunkZ, } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.CHUNK_DATA; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.CHUNK_DATA; } } \ No newline at end of file diff --git a/src/main/java/net/minestom/server/network/packet/server/play/ClearTitlesPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/ClearTitlesPacket.java index b73d5ab2b..36e3f15a7 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/ClearTitlesPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/ClearTitlesPacket.java @@ -1,15 +1,13 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.BOOLEAN; -public record ClearTitlesPacket(boolean reset) implements ServerPacket { +public record ClearTitlesPacket(boolean reset) implements ServerPacket.Play { public ClearTitlesPacket(@NotNull NetworkBuffer reader) { this(reader.read(BOOLEAN)); } @@ -20,10 +18,7 @@ public record ClearTitlesPacket(boolean reset) implements ServerPacket { } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.CLEAR_TITLES; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.CLEAR_TITLES; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/CloseWindowPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/CloseWindowPacket.java index 2819e098f..b7b458181 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/CloseWindowPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/CloseWindowPacket.java @@ -1,15 +1,13 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.BYTE; -public record CloseWindowPacket(byte windowId) implements ServerPacket { +public record CloseWindowPacket(byte windowId) implements ServerPacket.Play { public CloseWindowPacket(@NotNull NetworkBuffer reader) { this(reader.read(BYTE)); } @@ -20,10 +18,7 @@ public record CloseWindowPacket(byte windowId) implements ServerPacket { } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.CLOSE_WINDOW; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.CLOSE_WINDOW; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/CollectItemPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/CollectItemPacket.java index 3880910c2..67213c8f8 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/CollectItemPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/CollectItemPacket.java @@ -1,16 +1,14 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.VAR_INT; public record CollectItemPacket(int collectedEntityId, int collectorEntityId, int pickupItemCount) - implements ServerPacket { + implements ServerPacket.Play { public CollectItemPacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT), reader.read(VAR_INT), reader.read(VAR_INT)); } @@ -23,10 +21,7 @@ public record CollectItemPacket(int collectedEntityId, int collectorEntityId, in } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.COLLECT_ITEM; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.COLLECT_ITEM; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/CraftRecipeResponse.java b/src/main/java/net/minestom/server/network/packet/server/play/CraftRecipeResponse.java index af14516a9..a65cb3749 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/CraftRecipeResponse.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/CraftRecipeResponse.java @@ -1,16 +1,14 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.BYTE; import static net.minestom.server.network.NetworkBuffer.STRING; -public record CraftRecipeResponse(byte windowId, String recipe) implements ServerPacket { +public record CraftRecipeResponse(byte windowId, String recipe) implements ServerPacket.Play { public CraftRecipeResponse(@NotNull NetworkBuffer reader) { this(reader.read(BYTE), reader.read(STRING)); } @@ -22,10 +20,7 @@ public record CraftRecipeResponse(byte windowId, String recipe) implements Serve } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.CRAFT_RECIPE_RESPONSE; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.CRAFT_RECIPE_RESPONSE; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/CustomChatCompletionPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/CustomChatCompletionPacket.java index 859067f5c..9f6504ece 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/CustomChatCompletionPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/CustomChatCompletionPacket.java @@ -1,10 +1,8 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import java.util.List; @@ -12,7 +10,7 @@ import java.util.List; import static net.minestom.server.network.NetworkBuffer.STRING; public record CustomChatCompletionPacket(@NotNull Action action, - @NotNull List<@NotNull String> entries) implements ServerPacket { + @NotNull List<@NotNull String> entries) implements ServerPacket.Play { public static final int MAX_ENTRIES = Short.MAX_VALUE; public CustomChatCompletionPacket { @@ -30,11 +28,8 @@ public record CustomChatCompletionPacket(@NotNull Action action, } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.CUSTOM_CHAT_COMPLETIONS; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.CUSTOM_CHAT_COMPLETIONS; } public enum Action { diff --git a/src/main/java/net/minestom/server/network/packet/server/play/DamageEventPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/DamageEventPacket.java index 034389873..da5bace3d 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/DamageEventPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/DamageEventPacket.java @@ -1,15 +1,14 @@ package net.minestom.server.network.packet.server.play; import net.minestom.server.coordinate.Point; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import static net.minestom.server.network.NetworkBuffer.*; +import static net.minestom.server.network.NetworkBuffer.VAR_INT; +import static net.minestom.server.network.NetworkBuffer.VECTOR3D; /** * See https://wiki.vg/Protocol#Damage_Event for more info. @@ -20,18 +19,16 @@ import static net.minestom.server.network.NetworkBuffer.*; * @param sourceDirectId 0 if there is no direct source. For direct attacks (e.g. melee), this is the same as sourceEntityId. For indirect attacks (e.g. projectiles), this is the projectile entity id + 1 * @param sourcePos null if there is no source position, otherwise the position of the source */ -public record DamageEventPacket(int targetEntityId, int damageTypeId, int sourceEntityId, int sourceDirectId, @Nullable Point sourcePos) implements ServerPacket { +public record DamageEventPacket(int targetEntityId, int damageTypeId, int sourceEntityId, int sourceDirectId, + @Nullable Point sourcePos) implements ServerPacket.Play { public DamageEventPacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT), reader.read(VAR_INT), reader.read(VAR_INT), reader.read(VAR_INT), reader.readOptional(VECTOR3D)); } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.DAMAGE_EVENT; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.DAMAGE_EVENT; } @Override diff --git a/src/main/java/net/minestom/server/network/packet/server/play/DeathCombatEventPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/DeathCombatEventPacket.java index 4d6556b58..18fc906c5 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/DeathCombatEventPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/DeathCombatEventPacket.java @@ -1,12 +1,10 @@ package net.minestom.server.network.packet.server.play; import net.kyori.adventure.text.Component; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; -import net.minestom.server.network.packet.server.ComponentHoldingServerPacket; +import net.minestom.server.network.packet.server.ServerPacket.ComponentHolding; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import java.util.Collection; @@ -15,7 +13,7 @@ import java.util.function.UnaryOperator; import static net.minestom.server.network.NetworkBuffer.*; -public record DeathCombatEventPacket(int playerId, @NotNull Component message) implements ComponentHoldingServerPacket { +public record DeathCombatEventPacket(int playerId, @NotNull Component message) implements ServerPacket.Play, ServerPacket.ComponentHolding { public DeathCombatEventPacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT), reader.read(COMPONENT)); } @@ -27,11 +25,8 @@ public record DeathCombatEventPacket(int playerId, @NotNull Component message) i } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.DEATH_COMBAT_EVENT; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.DEATH_COMBAT_EVENT; } @Override diff --git a/src/main/java/net/minestom/server/network/packet/server/play/DeclareCommandsPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/DeclareCommandsPacket.java index 20bb215f8..6ded2f005 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/DeclareCommandsPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/DeclareCommandsPacket.java @@ -1,12 +1,10 @@ package net.minestom.server.network.packet.server.play; import net.minestom.server.command.builder.arguments.Argument; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; import net.minestom.server.registry.StaticProtocolObject; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import java.util.List; @@ -15,7 +13,7 @@ import java.util.function.Function; import static net.minestom.server.network.NetworkBuffer.*; public record DeclareCommandsPacket(@NotNull List nodes, - int rootIndex) implements ServerPacket { + int rootIndex) implements ServerPacket.Play { public static final int MAX_NODES = Short.MAX_VALUE; public DeclareCommandsPacket { @@ -37,11 +35,8 @@ public record DeclareCommandsPacket(@NotNull List nodes, } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.DECLARE_COMMANDS; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.DECLARE_COMMANDS; } public static final class Node implements NetworkBuffer.Writer { diff --git a/src/main/java/net/minestom/server/network/packet/server/play/DeclareRecipesPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/DeclareRecipesPacket.java index 3c246e20a..d239800df 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/DeclareRecipesPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/DeclareRecipesPacket.java @@ -1,12 +1,10 @@ package net.minestom.server.network.packet.server.play; import net.minestom.server.item.ItemStack; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; import net.minestom.server.recipe.RecipeCategory; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -15,7 +13,7 @@ import java.util.List; import static net.minestom.server.network.NetworkBuffer.*; -public record DeclareRecipesPacket(@NotNull List recipes) implements ServerPacket { +public record DeclareRecipesPacket(@NotNull List recipes) implements ServerPacket.Play { public static final int MAX_RECIPES = Short.MAX_VALUE; public static final int MAX_INGREDIENTS = 128; @@ -51,11 +49,8 @@ public record DeclareRecipesPacket(@NotNull List recipes) implem } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.DECLARE_RECIPES; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.DECLARE_RECIPES; } public sealed interface DeclaredRecipe extends NetworkBuffer.Writer diff --git a/src/main/java/net/minestom/server/network/packet/server/play/DeleteChatPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/DeleteChatPacket.java index bd9f040ae..692420de1 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/DeleteChatPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/DeleteChatPacket.java @@ -1,14 +1,12 @@ package net.minestom.server.network.packet.server.play; import net.minestom.server.crypto.MessageSignature; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; -public record DeleteChatPacket(@NotNull MessageSignature signature) implements ServerPacket { +public record DeleteChatPacket(@NotNull MessageSignature signature) implements ServerPacket.Play { public DeleteChatPacket(@NotNull NetworkBuffer reader) { this(new MessageSignature(reader)); } @@ -19,10 +17,7 @@ public record DeleteChatPacket(@NotNull MessageSignature signature) implements S } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.DELETE_CHAT_MESSAGE; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.DELETE_CHAT_MESSAGE; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/DestroyEntitiesPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/DestroyEntitiesPacket.java index bb26f0b36..322b88704 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/DestroyEntitiesPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/DestroyEntitiesPacket.java @@ -1,17 +1,15 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import java.util.List; import static net.minestom.server.network.NetworkBuffer.VAR_INT; -public record DestroyEntitiesPacket(@NotNull List entityIds) implements ServerPacket { +public record DestroyEntitiesPacket(@NotNull List entityIds) implements ServerPacket.Play { public static final int MAX_ENTRIES = Short.MAX_VALUE; public DestroyEntitiesPacket { @@ -32,10 +30,7 @@ public record DestroyEntitiesPacket(@NotNull List entityIds) implements } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.DESTROY_ENTITIES; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.DESTROY_ENTITIES; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/DisplayScoreboardPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/DisplayScoreboardPacket.java index 6b746970c..e90c8f5fa 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/DisplayScoreboardPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/DisplayScoreboardPacket.java @@ -1,16 +1,14 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.BYTE; import static net.minestom.server.network.NetworkBuffer.STRING; -public record DisplayScoreboardPacket(byte position, String scoreName) implements ServerPacket { +public record DisplayScoreboardPacket(byte position, String scoreName) implements ServerPacket.Play { public DisplayScoreboardPacket(@NotNull NetworkBuffer reader) { this(reader.read(BYTE), reader.read(STRING)); } @@ -22,10 +20,7 @@ public record DisplayScoreboardPacket(byte position, String scoreName) implement } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.DISPLAY_SCOREBOARD; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.DISPLAY_SCOREBOARD; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/EffectPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/EffectPacket.java index 18fb7ebc4..c4c912912 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/EffectPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/EffectPacket.java @@ -1,17 +1,15 @@ package net.minestom.server.network.packet.server.play; import net.minestom.server.coordinate.Point; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.*; public record EffectPacket(int effectId, Point position, int data, - boolean disableRelativeVolume) implements ServerPacket { + boolean disableRelativeVolume) implements ServerPacket.Play { public EffectPacket(@NotNull NetworkBuffer reader) { this(reader.read(INT), reader.read(BLOCK_POSITION), reader.read(INT), reader.read(BOOLEAN)); } @@ -25,10 +23,7 @@ public record EffectPacket(int effectId, Point position, int data, } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.EFFECT; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.EFFECT; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/EndCombatEventPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/EndCombatEventPacket.java index a3672c2fd..b56dd5a59 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/EndCombatEventPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/EndCombatEventPacket.java @@ -1,15 +1,13 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.VAR_INT; -public record EndCombatEventPacket(int duration) implements ServerPacket { +public record EndCombatEventPacket(int duration) implements ServerPacket.Play { public EndCombatEventPacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT)); } @@ -20,10 +18,7 @@ public record EndCombatEventPacket(int duration) implements ServerPacket { } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.END_COMBAT_EVENT; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.END_COMBAT_EVENT; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/EnterCombatEventPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/EnterCombatEventPacket.java index 28edc98cb..652247fcc 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/EnterCombatEventPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/EnterCombatEventPacket.java @@ -1,13 +1,11 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; -public record EnterCombatEventPacket() implements ServerPacket { +public record EnterCombatEventPacket() implements ServerPacket.Play { public EnterCombatEventPacket(@NotNull NetworkBuffer reader) { this(); } @@ -18,10 +16,7 @@ public record EnterCombatEventPacket() implements ServerPacket { } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.ENTER_COMBAT_EVENT; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.ENTER_COMBAT_EVENT; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/EntityAnimationPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/EntityAnimationPacket.java index c46201a03..7949fa04b 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/EntityAnimationPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/EntityAnimationPacket.java @@ -1,16 +1,14 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.BYTE; import static net.minestom.server.network.NetworkBuffer.VAR_INT; -public record EntityAnimationPacket(int entityId, @NotNull Animation animation) implements ServerPacket { +public record EntityAnimationPacket(int entityId, @NotNull Animation animation) implements ServerPacket.Play { public EntityAnimationPacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT), Animation.values()[reader.read(BYTE)]); } @@ -22,11 +20,8 @@ public record EntityAnimationPacket(int entityId, @NotNull Animation animation) } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.ENTITY_ANIMATION; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.ENTITY_ANIMATION; } public enum Animation { diff --git a/src/main/java/net/minestom/server/network/packet/server/play/EntityEffectPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/EntityEffectPacket.java index 642c1e775..0e0b02bf5 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/EntityEffectPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/EntityEffectPacket.java @@ -1,11 +1,9 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; import net.minestom.server.potion.Potion; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jglrxavpok.hephaistos.nbt.NBTCompound; @@ -13,7 +11,7 @@ import org.jglrxavpok.hephaistos.nbt.NBTCompound; import static net.minestom.server.network.NetworkBuffer.*; public record EntityEffectPacket(int entityId, @NotNull Potion potion, - @Nullable NBTCompound factorCodec) implements ServerPacket { + @Nullable NBTCompound factorCodec) implements ServerPacket.Play { public EntityEffectPacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT), new Potion(reader), reader.read(BOOLEAN) ? (NBTCompound) reader.read(NBT) : null); @@ -27,10 +25,7 @@ public record EntityEffectPacket(int entityId, @NotNull Potion potion, } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.ENTITY_EFFECT; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.ENTITY_EFFECT; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/EntityEquipmentPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/EntityEquipmentPacket.java index 958e53009..9715976bf 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/EntityEquipmentPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/EntityEquipmentPacket.java @@ -3,12 +3,10 @@ package net.minestom.server.network.packet.server.play; import net.kyori.adventure.text.Component; import net.minestom.server.entity.EquipmentSlot; import net.minestom.server.item.ItemStack; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; -import net.minestom.server.network.packet.server.ComponentHoldingServerPacket; +import net.minestom.server.network.packet.server.ServerPacket.ComponentHolding; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import java.util.Collection; @@ -21,7 +19,7 @@ import java.util.stream.Collectors; import static net.minestom.server.network.NetworkBuffer.*; public record EntityEquipmentPacket(int entityId, - @NotNull Map equipments) implements ComponentHoldingServerPacket { + @NotNull Map equipments) implements ServerPacket.Play, ServerPacket.ComponentHolding { public EntityEquipmentPacket { equipments = Map.copyOf(equipments); if (equipments.isEmpty()) @@ -46,11 +44,8 @@ public record EntityEquipmentPacket(int entityId, } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.ENTITY_EQUIPMENT; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.ENTITY_EQUIPMENT; } @Override diff --git a/src/main/java/net/minestom/server/network/packet/server/play/EntityHeadLookPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/EntityHeadLookPacket.java index d340623b2..6e0ec3f52 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/EntityHeadLookPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/EntityHeadLookPacket.java @@ -1,16 +1,14 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.BYTE; import static net.minestom.server.network.NetworkBuffer.VAR_INT; -public record EntityHeadLookPacket(int entityId, float yaw) implements ServerPacket { +public record EntityHeadLookPacket(int entityId, float yaw) implements ServerPacket.Play { public EntityHeadLookPacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT), (reader.read(BYTE) * 360f) / 256f); } @@ -22,10 +20,7 @@ public record EntityHeadLookPacket(int entityId, float yaw) implements ServerPac } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.ENTITY_HEAD_LOOK; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.ENTITY_HEAD_LOOK; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/EntityMetaDataPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/EntityMetaDataPacket.java index 31c0347cb..900785f41 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/EntityMetaDataPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/EntityMetaDataPacket.java @@ -2,12 +2,10 @@ package net.minestom.server.network.packet.server.play; import net.kyori.adventure.text.Component; import net.minestom.server.entity.Metadata; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; -import net.minestom.server.network.packet.server.ComponentHoldingServerPacket; +import net.minestom.server.network.packet.server.ServerPacket.ComponentHolding; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import java.util.Collection; @@ -18,7 +16,7 @@ import java.util.function.UnaryOperator; import static net.minestom.server.network.NetworkBuffer.*; public record EntityMetaDataPacket(int entityId, - @NotNull Map> entries) implements ComponentHoldingServerPacket { + @NotNull Map> entries) implements ServerPacket.Play, ServerPacket.ComponentHolding { public EntityMetaDataPacket { entries = Map.copyOf(entries); } @@ -51,11 +49,8 @@ public record EntityMetaDataPacket(int entityId, } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.ENTITY_METADATA; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.ENTITY_METADATA; } @Override diff --git a/src/main/java/net/minestom/server/network/packet/server/play/EntityPositionAndRotationPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/EntityPositionAndRotationPacket.java index 264ee4ba5..87858321e 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/EntityPositionAndRotationPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/EntityPositionAndRotationPacket.java @@ -1,17 +1,15 @@ package net.minestom.server.network.packet.server.play; import net.minestom.server.coordinate.Pos; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.*; public record EntityPositionAndRotationPacket(int entityId, short deltaX, short deltaY, short deltaZ, - float yaw, float pitch, boolean onGround) implements ServerPacket { + float yaw, float pitch, boolean onGround) implements ServerPacket.Play { public EntityPositionAndRotationPacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT), reader.read(SHORT), reader.read(SHORT), reader.read(SHORT), reader.read(BYTE) * 360f / 256f, reader.read(BYTE) * 360f / 256f, reader.read(BOOLEAN)); @@ -29,11 +27,8 @@ public record EntityPositionAndRotationPacket(int entityId, short deltaX, short } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.ENTITY_POSITION_AND_ROTATION; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.ENTITY_POSITION_AND_ROTATION; } public static EntityPositionAndRotationPacket getPacket(int entityId, diff --git a/src/main/java/net/minestom/server/network/packet/server/play/EntityPositionPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/EntityPositionPacket.java index b08a410ce..ff3e63003 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/EntityPositionPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/EntityPositionPacket.java @@ -1,17 +1,15 @@ package net.minestom.server.network.packet.server.play; import net.minestom.server.coordinate.Pos; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.*; public record EntityPositionPacket(int entityId, short deltaX, short deltaY, short deltaZ, boolean onGround) - implements ServerPacket { + implements ServerPacket.Play { public EntityPositionPacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT), reader.read(SHORT), reader.read(SHORT), reader.read(SHORT), reader.read(BOOLEAN)); @@ -27,11 +25,8 @@ public record EntityPositionPacket(int entityId, short deltaX, short deltaY, sho } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.ENTITY_POSITION; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.ENTITY_POSITION; } @NotNull diff --git a/src/main/java/net/minestom/server/network/packet/server/play/EntityPropertiesPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/EntityPropertiesPacket.java index 24673a3f0..32b786eb1 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/EntityPropertiesPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/EntityPropertiesPacket.java @@ -4,11 +4,9 @@ import net.minestom.server.attribute.Attribute; import net.minestom.server.attribute.AttributeInstance; import net.minestom.server.attribute.AttributeModifier; import net.minestom.server.attribute.AttributeOperation; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import java.util.Collection; @@ -16,7 +14,7 @@ import java.util.List; import static net.minestom.server.network.NetworkBuffer.*; -public record EntityPropertiesPacket(int entityId, List properties) implements ServerPacket { +public record EntityPropertiesPacket(int entityId, List properties) implements ServerPacket.Play { public static final int MAX_ENTRIES = 1024; public EntityPropertiesPacket { @@ -61,10 +59,7 @@ public record EntityPropertiesPacket(int entityId, List prope } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.ENTITY_PROPERTIES; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.ENTITY_PROPERTIES; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/EntityRotationPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/EntityRotationPacket.java index 1bd84bfc9..c4cb98a1f 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/EntityRotationPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/EntityRotationPacket.java @@ -1,15 +1,13 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.*; -public record EntityRotationPacket(int entityId, float yaw, float pitch, boolean onGround) implements ServerPacket { +public record EntityRotationPacket(int entityId, float yaw, float pitch, boolean onGround) implements ServerPacket.Play { public EntityRotationPacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT), reader.read(BYTE) * 360f / 256f, reader.read(BYTE) * 360f / 256f, reader.read(BOOLEAN)); } @@ -23,10 +21,7 @@ public record EntityRotationPacket(int entityId, float yaw, float pitch, boolean } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.ENTITY_ROTATION; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.ENTITY_ROTATION; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/EntitySoundEffectPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/EntitySoundEffectPacket.java index 27802348e..259787148 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/EntitySoundEffectPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/EntitySoundEffectPacket.java @@ -2,12 +2,10 @@ package net.minestom.server.network.packet.server.play; import net.kyori.adventure.sound.Sound; import net.minestom.server.adventure.AdventurePacketConvertor; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; import net.minestom.server.sound.SoundEvent; -import net.minestom.server.utils.PacketUtils; import net.minestom.server.utils.validate.Check; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -24,7 +22,7 @@ public record EntitySoundEffectPacket( float volume, float pitch, long seed -) implements ServerPacket { +) implements ServerPacket.Play { public EntitySoundEffectPacket { Check.argCondition(soundEvent == null && soundName == null, "soundEvent and soundName cannot both be null"); @@ -92,10 +90,7 @@ public record EntitySoundEffectPacket( } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.ENTITY_SOUND_EFFECT; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.ENTITY_SOUND_EFFECT; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/EntityStatusPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/EntityStatusPacket.java index 19cdfaab6..f1ea56491 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/EntityStatusPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/EntityStatusPacket.java @@ -1,16 +1,14 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.BYTE; import static net.minestom.server.network.NetworkBuffer.INT; -public record EntityStatusPacket(int entityId, byte status) implements ServerPacket { +public record EntityStatusPacket(int entityId, byte status) implements ServerPacket.Play { public EntityStatusPacket(@NotNull NetworkBuffer reader) { this(reader.read(INT), reader.read(BYTE)); } @@ -22,10 +20,7 @@ public record EntityStatusPacket(int entityId, byte status) implements ServerPac } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.ENTITY_STATUS; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.ENTITY_STATUS; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/EntityTeleportPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/EntityTeleportPacket.java index bca9879a2..c22e323f6 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/EntityTeleportPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/EntityTeleportPacket.java @@ -1,16 +1,14 @@ package net.minestom.server.network.packet.server.play; import net.minestom.server.coordinate.Pos; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.*; -public record EntityTeleportPacket(int entityId, Pos position, boolean onGround) implements ServerPacket { +public record EntityTeleportPacket(int entityId, Pos position, boolean onGround) implements ServerPacket.Play { public EntityTeleportPacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT), new Pos(reader.read(DOUBLE), reader.read(DOUBLE), reader.read(DOUBLE), reader.read(BYTE) * 360f / 256f, reader.read(BYTE) * 360f / 256f), @@ -29,10 +27,7 @@ public record EntityTeleportPacket(int entityId, Pos position, boolean onGround) } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.ENTITY_TELEPORT; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.ENTITY_TELEPORT; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/EntityVelocityPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/EntityVelocityPacket.java index 394fd738d..1590d1046 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/EntityVelocityPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/EntityVelocityPacket.java @@ -1,19 +1,17 @@ package net.minestom.server.network.packet.server.play; import net.minestom.server.coordinate.Point; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; import net.minestom.server.utils.MathUtils; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.SHORT; import static net.minestom.server.network.NetworkBuffer.VAR_INT; public record EntityVelocityPacket(int entityId, short velocityX, short velocityY, - short velocityZ) implements ServerPacket { + short velocityZ) implements ServerPacket.Play { public EntityVelocityPacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT), reader.read(SHORT), reader.read(SHORT), reader.read(SHORT)); } @@ -36,10 +34,7 @@ public record EntityVelocityPacket(int entityId, short velocityX, short velocity } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.ENTITY_VELOCITY; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.ENTITY_VELOCITY; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/ExplosionPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/ExplosionPacket.java index bb60bebdf..70c15f6d8 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/ExplosionPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/ExplosionPacket.java @@ -1,12 +1,10 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; import net.minestom.server.particle.Particle; import net.minestom.server.sound.SoundEvent; -import net.minestom.server.utils.PacketUtils; import net.minestom.server.utils.binary.BinaryWriter; import org.jetbrains.annotations.NotNull; @@ -18,7 +16,7 @@ public record ExplosionPacket(double x, double y, double z, float radius, @NotNull BlockInteraction blockInteraction, int smallParticleId, byte @NotNull [] smallParticleData, int largeParticleId, byte @NotNull [] largeParticleData, - @NotNull String soundName, boolean hasFixedSoundRange, float soundRange) implements ServerPacket { + @NotNull String soundName, boolean hasFixedSoundRange, float soundRange) implements ServerPacket.Play { private static @NotNull ExplosionPacket fromReader(@NotNull NetworkBuffer reader) { double x = reader.read(DOUBLE), y = reader.read(DOUBLE), z = reader.read(DOUBLE); float radius = reader.read(FLOAT); @@ -107,11 +105,8 @@ public record ExplosionPacket(double x, double y, double z, float radius, } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.EXPLOSION; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.EXPLOSION; } public enum BlockInteraction { diff --git a/src/main/java/net/minestom/server/network/packet/server/play/FacePlayerPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/FacePlayerPacket.java index 1225194ba..edc478175 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/FacePlayerPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/FacePlayerPacket.java @@ -2,17 +2,15 @@ package net.minestom.server.network.packet.server.play; import net.minestom.server.coordinate.Point; import net.minestom.server.coordinate.Vec; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.*; public record FacePlayerPacket(FacePosition facePosition, - Point target, int entityId, FacePosition entityFacePosition) implements ServerPacket { + Point target, int entityId, FacePosition entityFacePosition) implements ServerPacket.Play { public FacePlayerPacket(@NotNull NetworkBuffer reader) { this(FacePosition.values()[reader.read(VAR_INT)], new Vec(reader.read(DOUBLE), reader.read(DOUBLE), reader.read(DOUBLE)), @@ -35,11 +33,8 @@ public record FacePlayerPacket(FacePosition facePosition, } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.FACE_PLAYER; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.FACE_PLAYER; } public enum FacePosition { diff --git a/src/main/java/net/minestom/server/network/packet/server/play/HeldItemChangePacket.java b/src/main/java/net/minestom/server/network/packet/server/play/HeldItemChangePacket.java index 4740ee7da..39217b309 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/HeldItemChangePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/HeldItemChangePacket.java @@ -1,15 +1,13 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.BYTE; -public record HeldItemChangePacket(byte slot) implements ServerPacket { +public record HeldItemChangePacket(byte slot) implements ServerPacket.Play { public HeldItemChangePacket(@NotNull NetworkBuffer reader) { this(reader.read(BYTE)); } @@ -20,10 +18,7 @@ public record HeldItemChangePacket(byte slot) implements ServerPacket { } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.HELD_ITEM_CHANGE; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.HELD_ITEM_CHANGE; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/HitAnimationPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/HitAnimationPacket.java index 3e8b61488..bb1bcd92c 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/HitAnimationPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/HitAnimationPacket.java @@ -1,16 +1,14 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.FLOAT; import static net.minestom.server.network.NetworkBuffer.VAR_INT; -public record HitAnimationPacket(int entityId, float yaw) implements ServerPacket { +public record HitAnimationPacket(int entityId, float yaw) implements ServerPacket.Play { public HitAnimationPacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT), reader.read(FLOAT)); @@ -23,10 +21,7 @@ public record HitAnimationPacket(int entityId, float yaw) implements ServerPacke } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.HIT_ANIMATION; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.HIT_ANIMATION; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/InitializeWorldBorderPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/InitializeWorldBorderPacket.java index 4c6e401bd..51754412b 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/InitializeWorldBorderPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/InitializeWorldBorderPacket.java @@ -1,10 +1,8 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.*; @@ -12,7 +10,7 @@ import static net.minestom.server.network.NetworkBuffer.*; public record InitializeWorldBorderPacket(double x, double z, double oldDiameter, double newDiameter, long speed, int portalTeleportBoundary, int warningTime, - int warningBlocks) implements ServerPacket { + int warningBlocks) implements ServerPacket.Play { public InitializeWorldBorderPacket(@NotNull NetworkBuffer reader) { this(reader.read(DOUBLE), reader.read(DOUBLE), reader.read(DOUBLE), reader.read(DOUBLE), @@ -32,10 +30,7 @@ public record InitializeWorldBorderPacket(double x, double z, } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.INITIALIZE_WORLD_BORDER; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.INITIALIZE_WORLD_BORDER; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/JoinGamePacket.java b/src/main/java/net/minestom/server/network/packet/server/play/JoinGamePacket.java index 074b76c19..9adfcec86 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/JoinGamePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/JoinGamePacket.java @@ -1,12 +1,10 @@ package net.minestom.server.network.packet.server.play; import net.minestom.server.entity.GameMode; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; import net.minestom.server.network.packet.server.play.data.DeathLocation; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -20,7 +18,7 @@ public record JoinGamePacket( boolean doLimitedCrafting, String dimensionType, String world, long hashedSeed, GameMode gameMode, GameMode previousGameMode, boolean isDebug, boolean isFlat, DeathLocation deathLocation, int portalCooldown -) implements ServerPacket { +) implements ServerPacket.Play { public static final int MAX_WORLDS = Short.MAX_VALUE; public JoinGamePacket { @@ -79,11 +77,8 @@ public record JoinGamePacket( } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.JOIN_GAME; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.JOIN_GAME; } /** diff --git a/src/main/java/net/minestom/server/network/packet/server/play/MapDataPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/MapDataPacket.java index 123cf69ef..1cc52751e 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/MapDataPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/MapDataPacket.java @@ -1,11 +1,9 @@ package net.minestom.server.network.packet.server.play; import net.kyori.adventure.text.Component; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -15,7 +13,7 @@ import static net.minestom.server.network.NetworkBuffer.*; public record MapDataPacket(int mapId, byte scale, boolean locked, boolean trackingPosition, @NotNull List icons, - @Nullable MapDataPacket.ColorContent colorContent) implements ServerPacket { + @Nullable MapDataPacket.ColorContent colorContent) implements ServerPacket.Play { public static final int MAX_ICONS = 1024; public MapDataPacket { @@ -65,11 +63,8 @@ public record MapDataPacket(int mapId, byte scale, boolean locked, } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.MAP_DATA; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.MAP_DATA; } public record Icon(int type, byte x, byte z, byte direction, diff --git a/src/main/java/net/minestom/server/network/packet/server/play/MultiBlockChangePacket.java b/src/main/java/net/minestom/server/network/packet/server/play/MultiBlockChangePacket.java index 6bca0c7b9..5e3d4f327 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/MultiBlockChangePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/MultiBlockChangePacket.java @@ -1,15 +1,13 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.*; -public record MultiBlockChangePacket(long chunkSectionPosition, long[] blocks) implements ServerPacket { +public record MultiBlockChangePacket(long chunkSectionPosition, long[] blocks) implements ServerPacket.Play { public MultiBlockChangePacket(int chunkX, int section, int chunkZ, long[] blocks) { this(((long) (chunkX & 0x3FFFFF) << 42) | (section & 0xFFFFF) | ((long) (chunkZ & 0x3FFFFF) << 20), blocks); @@ -26,10 +24,7 @@ public record MultiBlockChangePacket(long chunkSectionPosition, long[] blocks) i } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.MULTI_BLOCK_CHANGE; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.MULTI_BLOCK_CHANGE; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/NbtQueryResponsePacket.java b/src/main/java/net/minestom/server/network/packet/server/play/NbtQueryResponsePacket.java index 45bdd1465..904009817 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/NbtQueryResponsePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/NbtQueryResponsePacket.java @@ -1,16 +1,14 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import org.jglrxavpok.hephaistos.nbt.NBTCompound; import static net.minestom.server.network.NetworkBuffer.*; -public record NbtQueryResponsePacket(int transactionId, NBTCompound data) implements ServerPacket { +public record NbtQueryResponsePacket(int transactionId, NBTCompound data) implements ServerPacket.Play { public NbtQueryResponsePacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT), (NBTCompound) reader.read(NBT)); } @@ -27,10 +25,7 @@ public record NbtQueryResponsePacket(int transactionId, NBTCompound data) implem } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.NBT_QUERY_RESPONSE; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.NBT_QUERY_RESPONSE; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/OpenBookPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/OpenBookPacket.java index 64b698a9e..5a63eb8b7 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/OpenBookPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/OpenBookPacket.java @@ -1,14 +1,12 @@ package net.minestom.server.network.packet.server.play; import net.minestom.server.entity.Player; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; -public record OpenBookPacket(@NotNull Player.Hand hand) implements ServerPacket { +public record OpenBookPacket(@NotNull Player.Hand hand) implements ServerPacket.Play { public OpenBookPacket(@NotNull NetworkBuffer reader) { this(reader.readEnum(Player.Hand.class)); } @@ -19,10 +17,7 @@ public record OpenBookPacket(@NotNull Player.Hand hand) implements ServerPacket } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.OPEN_BOOK; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.OPEN_BOOK; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/OpenHorseWindowPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/OpenHorseWindowPacket.java index b86bc3d9f..2b524a991 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/OpenHorseWindowPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/OpenHorseWindowPacket.java @@ -1,15 +1,13 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.*; -public record OpenHorseWindowPacket(byte windowId, int slotCount, int entityId) implements ServerPacket { +public record OpenHorseWindowPacket(byte windowId, int slotCount, int entityId) implements ServerPacket.Play { public OpenHorseWindowPacket(@NotNull NetworkBuffer reader) { this(reader.read(BYTE), reader.read(VAR_INT), reader.read(INT)); } @@ -22,10 +20,7 @@ public record OpenHorseWindowPacket(byte windowId, int slotCount, int entityId) } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.OPEN_HORSE_WINDOW; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.OPEN_HORSE_WINDOW; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/OpenSignEditorPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/OpenSignEditorPacket.java index 316879acd..7fdd341d0 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/OpenSignEditorPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/OpenSignEditorPacket.java @@ -1,17 +1,15 @@ package net.minestom.server.network.packet.server.play; import net.minestom.server.coordinate.Point; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.BLOCK_POSITION; import static net.minestom.server.network.NetworkBuffer.BOOLEAN; -public record OpenSignEditorPacket(@NotNull Point position, boolean isFrontText) implements ServerPacket { +public record OpenSignEditorPacket(@NotNull Point position, boolean isFrontText) implements ServerPacket.Play { public OpenSignEditorPacket(@NotNull NetworkBuffer reader) { this(reader.read(BLOCK_POSITION), reader.read(BOOLEAN)); } @@ -23,10 +21,7 @@ public record OpenSignEditorPacket(@NotNull Point position, boolean isFrontText) } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.OPEN_SIGN_EDITOR; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.OPEN_SIGN_EDITOR; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/OpenWindowPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/OpenWindowPacket.java index d49daceac..dcada15dd 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/OpenWindowPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/OpenWindowPacket.java @@ -1,12 +1,10 @@ package net.minestom.server.network.packet.server.play; import net.kyori.adventure.text.Component; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; -import net.minestom.server.network.packet.server.ComponentHoldingServerPacket; +import net.minestom.server.network.packet.server.ServerPacket.ComponentHolding; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import java.util.Collection; @@ -17,7 +15,7 @@ import static net.minestom.server.network.NetworkBuffer.COMPONENT; import static net.minestom.server.network.NetworkBuffer.VAR_INT; public record OpenWindowPacket(int windowId, int windowType, - @NotNull Component title) implements ComponentHoldingServerPacket { + @NotNull Component title) implements ServerPacket.Play, ServerPacket.ComponentHolding { public OpenWindowPacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT), reader.read(VAR_INT), reader.read(COMPONENT)); } @@ -30,11 +28,8 @@ public record OpenWindowPacket(int windowId, int windowType, } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.OPEN_WINDOW; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.OPEN_WINDOW; } @Override diff --git a/src/main/java/net/minestom/server/network/packet/server/play/ParticlePacket.java b/src/main/java/net/minestom/server/network/packet/server/play/ParticlePacket.java index 194ab5240..c3be1a7ec 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/ParticlePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/ParticlePacket.java @@ -1,19 +1,17 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; import net.minestom.server.particle.Particle; import net.minestom.server.particle.data.ParticleData; -import net.minestom.server.utils.PacketUtils; import net.minestom.server.utils.validate.Check; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import static net.minestom.server.network.NetworkBuffer.*; -public record ParticlePacket(int particleId, boolean longDistance, double x, double y, double z, float offsetX, float offsetY, float offsetZ, float maxSpeed, int particleCount, @Nullable ParticleData data) implements ServerPacket { +public record ParticlePacket(int particleId, boolean longDistance, double x, double y, double z, float offsetX, float offsetY, float offsetZ, float maxSpeed, int particleCount, @Nullable ParticleData data) implements ServerPacket.Play { private ParticlePacket(ParticlePacket copy) { this(copy.particleId, copy.longDistance, copy.x, copy.y, copy.z, copy.offsetX, copy.offsetY, copy.offsetZ, copy.maxSpeed, copy.particleCount, copy.data); } @@ -22,11 +20,11 @@ public record ParticlePacket(int particleId, boolean longDistance, double x, dou this(readPacket(reader)); } - public ParticlePacket(@NotNull Particle particle, boolean longDistance, double x, double y, double z, float offsetX, float offsetY, float offsetZ, int maxSpeed, int particleCount) { + public ParticlePacket(@NotNull Particle particle, boolean longDistance, double x, double y, double z, float offsetX, float offsetY, float offsetZ, float maxSpeed, int particleCount) { this(particle.id(), longDistance, x, y, z, offsetX, offsetY, offsetZ, maxSpeed, particleCount, particle.data()); } - public ParticlePacket(@NotNull Particle particle, double x, double y, double z, float offsetX, float offsetY, float offsetZ, int maxSpeed, int particleCount) { + public ParticlePacket(@NotNull Particle particle, double x, double y, double z, float offsetX, float offsetY, float offsetZ, float maxSpeed, int particleCount) { this(particle.id(), false, x, y, z, offsetX, offsetY, offsetZ, maxSpeed, particleCount, particle.data()); } @@ -66,10 +64,7 @@ public record ParticlePacket(int particleId, boolean longDistance, double x, dou } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.PARTICLE; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.PARTICLE; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/PlayerAbilitiesPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/PlayerAbilitiesPacket.java index 08de4b410..6ec615185 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/PlayerAbilitiesPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/PlayerAbilitiesPacket.java @@ -1,16 +1,14 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.BYTE; import static net.minestom.server.network.NetworkBuffer.FLOAT; -public record PlayerAbilitiesPacket(byte flags, float flyingSpeed, float walkingSpeed) implements ServerPacket { +public record PlayerAbilitiesPacket(byte flags, float flyingSpeed, float walkingSpeed) implements ServerPacket.Play { public static final byte FLAG_INVULNERABLE = 0x01; public static final byte FLAG_FLYING = 0x02; public static final byte FLAG_ALLOW_FLYING = 0x04; @@ -28,10 +26,7 @@ public record PlayerAbilitiesPacket(byte flags, float flyingSpeed, float walking } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.PLAYER_ABILITIES; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.PLAYER_ABILITIES; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/PlayerChatMessagePacket.java b/src/main/java/net/minestom/server/network/packet/server/play/PlayerChatMessagePacket.java index c51b4f59e..d193e4db4 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/PlayerChatMessagePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/PlayerChatMessagePacket.java @@ -3,12 +3,10 @@ package net.minestom.server.network.packet.server.play; import net.kyori.adventure.text.Component; import net.minestom.server.crypto.FilterMask; import net.minestom.server.crypto.SignedMessageBody; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; -import net.minestom.server.network.packet.server.ComponentHoldingServerPacket; +import net.minestom.server.network.packet.server.ServerPacket.ComponentHolding; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -27,7 +25,7 @@ public record PlayerChatMessagePacket(UUID sender, int index, byte @Nullable [] SignedMessageBody.@NotNull Packed messageBody, @Nullable Component unsignedContent, FilterMask filterMask, int msgTypeId, Component msgTypeName, - @Nullable Component msgTypeTarget) implements ComponentHoldingServerPacket { + @Nullable Component msgTypeTarget) implements ServerPacket.Play, ServerPacket.ComponentHolding { public PlayerChatMessagePacket(@NotNull NetworkBuffer reader) { this(reader.read(UUID), reader.read(VAR_INT), reader.readOptional(r -> r.readBytes(256)), new SignedMessageBody.Packed(reader), @@ -50,11 +48,8 @@ public record PlayerChatMessagePacket(UUID sender, int index, byte @Nullable [] } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.PLAYER_CHAT; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.PLAYER_CHAT; } @Override diff --git a/src/main/java/net/minestom/server/network/packet/server/play/PlayerInfoRemovePacket.java b/src/main/java/net/minestom/server/network/packet/server/play/PlayerInfoRemovePacket.java index 44fd52ce0..61a7246d8 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/PlayerInfoRemovePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/PlayerInfoRemovePacket.java @@ -1,16 +1,14 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import java.util.List; import java.util.UUID; -public record PlayerInfoRemovePacket(@NotNull List<@NotNull UUID> uuids) implements ServerPacket { +public record PlayerInfoRemovePacket(@NotNull List<@NotNull UUID> uuids) implements ServerPacket.Play { public static final int MAX_ENTRIES = 1024; public PlayerInfoRemovePacket(@NotNull UUID uuid) { @@ -31,10 +29,7 @@ public record PlayerInfoRemovePacket(@NotNull List<@NotNull UUID> uuids) impleme } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.PLAYER_INFO_REMOVE; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.PLAYER_INFO_REMOVE; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/PlayerInfoUpdatePacket.java b/src/main/java/net/minestom/server/network/packet/server/play/PlayerInfoUpdatePacket.java index 9c3480cc8..7b8132a96 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/PlayerInfoUpdatePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/PlayerInfoUpdatePacket.java @@ -3,12 +3,10 @@ package net.minestom.server.network.packet.server.play; import net.kyori.adventure.text.Component; import net.minestom.server.crypto.ChatSession; import net.minestom.server.entity.GameMode; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; import net.minestom.server.network.player.GameProfile; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -19,7 +17,7 @@ import java.util.UUID; import static net.minestom.server.network.NetworkBuffer.*; -public final class PlayerInfoUpdatePacket implements ServerPacket { +public final class PlayerInfoUpdatePacket implements ServerPacket.Play { public static final int MAX_ENTRIES = 1024; private final @NotNull EnumSet<@NotNull Action> actions; @@ -75,11 +73,8 @@ public final class PlayerInfoUpdatePacket implements ServerPacket { } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.PLAYER_INFO_UPDATE; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.PLAYER_INFO_UPDATE; } public @NotNull EnumSet actions() { diff --git a/src/main/java/net/minestom/server/network/packet/server/play/PlayerListHeaderAndFooterPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/PlayerListHeaderAndFooterPacket.java index 10208ab6b..298ace319 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/PlayerListHeaderAndFooterPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/PlayerListHeaderAndFooterPacket.java @@ -1,12 +1,10 @@ package net.minestom.server.network.packet.server.play; import net.kyori.adventure.text.Component; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; -import net.minestom.server.network.packet.server.ComponentHoldingServerPacket; +import net.minestom.server.network.packet.server.ServerPacket.ComponentHolding; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import java.util.Collection; @@ -16,7 +14,7 @@ import java.util.function.UnaryOperator; import static net.minestom.server.network.NetworkBuffer.COMPONENT; public record PlayerListHeaderAndFooterPacket(@NotNull Component header, - @NotNull Component footer) implements ComponentHoldingServerPacket { + @NotNull Component footer) implements ServerPacket.Play, ServerPacket.ComponentHolding { public PlayerListHeaderAndFooterPacket(@NotNull NetworkBuffer reader) { this(reader.read(COMPONENT), reader.read(COMPONENT)); } @@ -38,10 +36,7 @@ public record PlayerListHeaderAndFooterPacket(@NotNull Component header, } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.PLAYER_LIST_HEADER_AND_FOOTER; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.PLAYER_LIST_HEADER_AND_FOOTER; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/PlayerPositionAndLookPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/PlayerPositionAndLookPacket.java index 2d84871b9..616ccf927 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/PlayerPositionAndLookPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/PlayerPositionAndLookPacket.java @@ -1,16 +1,14 @@ package net.minestom.server.network.packet.server.play; import net.minestom.server.coordinate.Pos; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.*; -public record PlayerPositionAndLookPacket(Pos position, byte flags, int teleportId) implements ServerPacket { +public record PlayerPositionAndLookPacket(Pos position, byte flags, int teleportId) implements ServerPacket.Play { public PlayerPositionAndLookPacket(@NotNull NetworkBuffer reader) { this(new Pos(reader.read(DOUBLE), reader.read(DOUBLE), reader.read(DOUBLE), reader.read(FLOAT), reader.read(FLOAT)), reader.read(BYTE), reader.read(VAR_INT)); @@ -30,10 +28,7 @@ public record PlayerPositionAndLookPacket(Pos position, byte flags, int teleport } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.PLAYER_POSITION_AND_LOOK; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.PLAYER_POSITION_AND_LOOK; } } \ No newline at end of file diff --git a/src/main/java/net/minestom/server/network/packet/server/play/RemoveEntityEffectPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/RemoveEntityEffectPacket.java index a9b4f1e62..f95257b28 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/RemoveEntityEffectPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/RemoveEntityEffectPacket.java @@ -1,18 +1,16 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; import net.minestom.server.potion.PotionEffect; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import java.util.Objects; import static net.minestom.server.network.NetworkBuffer.VAR_INT; -public record RemoveEntityEffectPacket(int entityId, @NotNull PotionEffect potionEffect) implements ServerPacket { +public record RemoveEntityEffectPacket(int entityId, @NotNull PotionEffect potionEffect) implements ServerPacket.Play { public RemoveEntityEffectPacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT), Objects.requireNonNull(PotionEffect.fromId(reader.read(VAR_INT)))); } @@ -24,10 +22,7 @@ public record RemoveEntityEffectPacket(int entityId, @NotNull PotionEffect potio } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.REMOVE_ENTITY_EFFECT; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.REMOVE_ENTITY_EFFECT; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/ResetScorePacket.java b/src/main/java/net/minestom/server/network/packet/server/play/ResetScorePacket.java index b56fbaa82..718930042 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/ResetScorePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/ResetScorePacket.java @@ -1,16 +1,14 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import static net.minestom.server.network.NetworkBuffer.STRING; -public record ResetScorePacket(@NotNull String owner, @Nullable String objective) implements ServerPacket { +public record ResetScorePacket(@NotNull String owner, @Nullable String objective) implements ServerPacket.Play { public ResetScorePacket(@NotNull NetworkBuffer reader) { this(reader.read(STRING), reader.readOptional(STRING)); @@ -23,10 +21,7 @@ public record ResetScorePacket(@NotNull String owner, @Nullable String objective } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.RESET_SCORE; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.RESET_SCORE; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/RespawnPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/RespawnPacket.java index b549e65f3..1a66bdf66 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/RespawnPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/RespawnPacket.java @@ -1,12 +1,10 @@ package net.minestom.server.network.packet.server.play; import net.minestom.server.entity.GameMode; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; import net.minestom.server.network.packet.server.play.data.DeathLocation; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.*; @@ -16,7 +14,7 @@ public record RespawnPacket( long hashedSeed, GameMode gameMode, GameMode previousGameMode, boolean isDebug, boolean isFlat, DeathLocation deathLocation, int portalCooldown, int copyData -) implements ServerPacket { +) implements ServerPacket.Play { public static final int COPY_NONE = 0x0; public static final int COPY_ATTRIBUTES = 0x1; public static final int COPY_METADATA = 0x2; @@ -46,10 +44,7 @@ public record RespawnPacket( } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.RESPAWN; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.RESPAWN; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/ScoreboardObjectivePacket.java b/src/main/java/net/minestom/server/network/packet/server/play/ScoreboardObjectivePacket.java index 7dbd48ac6..18e8289b1 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/ScoreboardObjectivePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/ScoreboardObjectivePacket.java @@ -1,13 +1,11 @@ package net.minestom.server.network.packet.server.play; import net.kyori.adventure.text.Component; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; -import net.minestom.server.network.packet.server.ComponentHoldingServerPacket; +import net.minestom.server.network.packet.server.ServerPacket.ComponentHolding; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; import net.minestom.server.scoreboard.Sidebar; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -20,7 +18,7 @@ import static net.minestom.server.network.NetworkBuffer.*; public record ScoreboardObjectivePacket(@NotNull String objectiveName, byte mode, @Nullable Component objectiveValue, @Nullable Type type, - @Nullable Sidebar.NumberFormat numberFormat) implements ComponentHoldingServerPacket { + @Nullable Sidebar.NumberFormat numberFormat) implements ServerPacket.Play, ServerPacket.ComponentHolding { public ScoreboardObjectivePacket(@NotNull NetworkBuffer reader) { this(read(reader)); } @@ -57,11 +55,8 @@ public record ScoreboardObjectivePacket(@NotNull String objectiveName, byte mode } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.SCOREBOARD_OBJECTIVE; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.SCOREBOARD_OBJECTIVE; } @Override diff --git a/src/main/java/net/minestom/server/network/packet/server/play/SelectAdvancementTabPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/SelectAdvancementTabPacket.java index a97b4598c..747c792b8 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/SelectAdvancementTabPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/SelectAdvancementTabPacket.java @@ -1,16 +1,14 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import static net.minestom.server.network.NetworkBuffer.STRING; -public record SelectAdvancementTabPacket(@Nullable String identifier) implements ServerPacket { +public record SelectAdvancementTabPacket(@Nullable String identifier) implements ServerPacket.Play { public SelectAdvancementTabPacket(@NotNull NetworkBuffer reader) { this(reader.readOptional(STRING)); } @@ -21,10 +19,7 @@ public record SelectAdvancementTabPacket(@Nullable String identifier) implements } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.SELECT_ADVANCEMENT_TAB; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.SELECT_ADVANCEMENT_TAB; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/ServerDataPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/ServerDataPacket.java index 299c47d40..3f9db24ca 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/ServerDataPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/ServerDataPacket.java @@ -1,18 +1,16 @@ package net.minestom.server.network.packet.server.play; import net.kyori.adventure.text.Component; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import static net.minestom.server.network.NetworkBuffer.*; public record ServerDataPacket(@Nullable Component motd, byte @Nullable [] iconBase64, - boolean enforcesSecureChat) implements ServerPacket { + boolean enforcesSecureChat) implements ServerPacket.Play { public ServerDataPacket(@NotNull NetworkBuffer reader) { this(reader.read(COMPONENT), reader.readOptional(BYTE_ARRAY), reader.read(BOOLEAN)); @@ -26,10 +24,7 @@ public record ServerDataPacket(@Nullable Component motd, byte @Nullable [] iconB } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.SERVER_DATA; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.SERVER_DATA; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/ServerDifficultyPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/ServerDifficultyPacket.java index 712dcf418..194995b63 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/ServerDifficultyPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/ServerDifficultyPacket.java @@ -1,16 +1,14 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import net.minestom.server.world.Difficulty; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.BOOLEAN; -public record ServerDifficultyPacket(@NotNull Difficulty difficulty, boolean locked) implements ServerPacket { +public record ServerDifficultyPacket(@NotNull Difficulty difficulty, boolean locked) implements ServerPacket.Play { public ServerDifficultyPacket(@NotNull NetworkBuffer reader) { this(reader.readEnum(Difficulty.class), reader.read(BOOLEAN)); } @@ -22,10 +20,7 @@ public record ServerDifficultyPacket(@NotNull Difficulty difficulty, boolean loc } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.SERVER_DIFFICULTY; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.SERVER_DIFFICULTY; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/SetCooldownPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/SetCooldownPacket.java index 70b3b9424..ca88551cf 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/SetCooldownPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/SetCooldownPacket.java @@ -1,15 +1,13 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.VAR_INT; -public record SetCooldownPacket(int itemId, int cooldownTicks) implements ServerPacket { +public record SetCooldownPacket(int itemId, int cooldownTicks) implements ServerPacket.Play { public SetCooldownPacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT), reader.read(VAR_INT)); } @@ -21,10 +19,7 @@ public record SetCooldownPacket(int itemId, int cooldownTicks) implements Server } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.SET_COOLDOWN; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.SET_COOLDOWN; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/SetExperiencePacket.java b/src/main/java/net/minestom/server/network/packet/server/play/SetExperiencePacket.java index e8ac670ea..8cd7c3dd2 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/SetExperiencePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/SetExperiencePacket.java @@ -1,16 +1,14 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.FLOAT; import static net.minestom.server.network.NetworkBuffer.VAR_INT; -public record SetExperiencePacket(float percentage, int level, int totalExperience) implements ServerPacket { +public record SetExperiencePacket(float percentage, int level, int totalExperience) implements ServerPacket.Play { public SetExperiencePacket(@NotNull NetworkBuffer reader) { this(reader.read(FLOAT), reader.read(VAR_INT), reader.read(VAR_INT)); } @@ -23,10 +21,7 @@ public record SetExperiencePacket(float percentage, int level, int totalExperien } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.SET_EXPERIENCE; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.SET_EXPERIENCE; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/SetPassengersPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/SetPassengersPacket.java index 052e27157..f95a973bd 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/SetPassengersPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/SetPassengersPacket.java @@ -1,10 +1,8 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import java.util.List; @@ -12,7 +10,7 @@ import java.util.List; import static net.minestom.server.network.NetworkBuffer.VAR_INT; public record SetPassengersPacket(int vehicleEntityId, - @NotNull List passengersId) implements ServerPacket { + @NotNull List passengersId) implements ServerPacket.Play { public static final int MAX_PASSENGERS = 16384; public SetPassengersPacket { @@ -30,10 +28,7 @@ public record SetPassengersPacket(int vehicleEntityId, } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.SET_PASSENGERS; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.SET_PASSENGERS; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/SetSlotPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/SetSlotPacket.java index 64aecebf4..1be1adafa 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/SetSlotPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/SetSlotPacket.java @@ -2,12 +2,10 @@ package net.minestom.server.network.packet.server.play; import net.kyori.adventure.text.Component; import net.minestom.server.item.ItemStack; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; -import net.minestom.server.network.packet.server.ComponentHoldingServerPacket; +import net.minestom.server.network.packet.server.ServerPacket.ComponentHolding; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -18,7 +16,7 @@ import java.util.function.UnaryOperator; import static net.minestom.server.network.NetworkBuffer.*; public record SetSlotPacket(byte windowId, int stateId, short slot, - @NotNull ItemStack itemStack) implements ComponentHoldingServerPacket { + @NotNull ItemStack itemStack) implements ServerPacket.Play, ServerPacket.ComponentHolding { public SetSlotPacket(@NotNull NetworkBuffer reader) { this(reader.read(BYTE), reader.read(VAR_INT), reader.read(SHORT), reader.read(ITEM)); @@ -33,11 +31,8 @@ public record SetSlotPacket(byte windowId, int stateId, short slot, } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.SET_SLOT; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.SET_SLOT; } @Override diff --git a/src/main/java/net/minestom/server/network/packet/server/play/SetTickStatePacket.java b/src/main/java/net/minestom/server/network/packet/server/play/SetTickStatePacket.java index 7b398422b..b080b61c4 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/SetTickStatePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/SetTickStatePacket.java @@ -1,15 +1,13 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.*; -public record SetTickStatePacket(float tickRate, boolean isFrozen) implements ServerPacket { +public record SetTickStatePacket(float tickRate, boolean isFrozen) implements ServerPacket.Play { public SetTickStatePacket(@NotNull NetworkBuffer reader) { this(reader.read(FLOAT), reader.read(BOOLEAN)); @@ -22,10 +20,7 @@ public record SetTickStatePacket(float tickRate, boolean isFrozen) implements Se } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.TICK_STATE; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.TICK_STATE; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/SetTitleSubTitlePacket.java b/src/main/java/net/minestom/server/network/packet/server/play/SetTitleSubTitlePacket.java index fbe13e32d..5657f37e0 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/SetTitleSubTitlePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/SetTitleSubTitlePacket.java @@ -1,12 +1,10 @@ package net.minestom.server.network.packet.server.play; import net.kyori.adventure.text.Component; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; -import net.minestom.server.network.packet.server.ComponentHoldingServerPacket; +import net.minestom.server.network.packet.server.ServerPacket.ComponentHolding; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import java.util.Collection; @@ -15,7 +13,7 @@ import java.util.function.UnaryOperator; import static net.minestom.server.network.NetworkBuffer.COMPONENT; -public record SetTitleSubTitlePacket(@NotNull Component subtitle) implements ComponentHoldingServerPacket { +public record SetTitleSubTitlePacket(@NotNull Component subtitle) implements ServerPacket.Play, ServerPacket.ComponentHolding { public SetTitleSubTitlePacket(@NotNull NetworkBuffer reader) { this(reader.read(COMPONENT)); } @@ -26,11 +24,8 @@ public record SetTitleSubTitlePacket(@NotNull Component subtitle) implements Com } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.SET_TITLE_SUBTITLE; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.SET_TITLE_SUBTITLE; } @Override diff --git a/src/main/java/net/minestom/server/network/packet/server/play/SetTitleTextPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/SetTitleTextPacket.java index e4f8e62a8..fcd312794 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/SetTitleTextPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/SetTitleTextPacket.java @@ -1,12 +1,10 @@ package net.minestom.server.network.packet.server.play; import net.kyori.adventure.text.Component; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; -import net.minestom.server.network.packet.server.ComponentHoldingServerPacket; +import net.minestom.server.network.packet.server.ServerPacket.ComponentHolding; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import java.util.Collection; @@ -15,7 +13,7 @@ import java.util.function.UnaryOperator; import static net.minestom.server.network.NetworkBuffer.COMPONENT; -public record SetTitleTextPacket(@NotNull Component title) implements ComponentHoldingServerPacket { +public record SetTitleTextPacket(@NotNull Component title) implements ServerPacket.Play, ServerPacket.ComponentHolding { public SetTitleTextPacket(@NotNull NetworkBuffer reader) { this(reader.read(COMPONENT)); } @@ -26,11 +24,8 @@ public record SetTitleTextPacket(@NotNull Component title) implements ComponentH } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.SET_TITLE_TEXT; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.SET_TITLE_TEXT; } @Override diff --git a/src/main/java/net/minestom/server/network/packet/server/play/SetTitleTimePacket.java b/src/main/java/net/minestom/server/network/packet/server/play/SetTitleTimePacket.java index 030ed978f..c9eacdd00 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/SetTitleTimePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/SetTitleTimePacket.java @@ -1,15 +1,13 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.INT; -public record SetTitleTimePacket(int fadeIn, int stay, int fadeOut) implements ServerPacket { +public record SetTitleTimePacket(int fadeIn, int stay, int fadeOut) implements ServerPacket.Play { public SetTitleTimePacket(@NotNull NetworkBuffer reader) { this(reader.read(INT), reader.read(INT), reader.read(INT)); } @@ -22,10 +20,7 @@ public record SetTitleTimePacket(int fadeIn, int stay, int fadeOut) implements S } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.SET_TITLE_TIME; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.SET_TITLE_TIME; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/SoundEffectPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/SoundEffectPacket.java index 463a705cb..831c157a4 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/SoundEffectPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/SoundEffectPacket.java @@ -3,12 +3,10 @@ package net.minestom.server.network.packet.server.play; import net.kyori.adventure.sound.Sound.Source; import net.minestom.server.adventure.AdventurePacketConvertor; import net.minestom.server.coordinate.Point; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; import net.minestom.server.sound.SoundEvent; -import net.minestom.server.utils.PacketUtils; import net.minestom.server.utils.validate.Check; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -27,7 +25,7 @@ public record SoundEffectPacket( float volume, float pitch, long seed -) implements ServerPacket { +) implements ServerPacket.Play { public SoundEffectPacket { Check.argCondition(soundEvent == null && soundName == null, "soundEvent and soundName cannot both be null"); @@ -100,10 +98,7 @@ public record SoundEffectPacket( } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.SOUND_EFFECT; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.SOUND_EFFECT; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/SpawnEntityPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/SpawnEntityPacket.java index 270219a98..ac70d9d48 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/SpawnEntityPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/SpawnEntityPacket.java @@ -1,11 +1,9 @@ package net.minestom.server.network.packet.server.play; import net.minestom.server.coordinate.Pos; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import java.util.UUID; @@ -14,7 +12,7 @@ import static net.minestom.server.network.NetworkBuffer.*; public record SpawnEntityPacket(int entityId, @NotNull UUID uuid, int type, @NotNull Pos position, float headRot, int data, - short velocityX, short velocityY, short velocityZ) implements ServerPacket { + short velocityX, short velocityY, short velocityZ) implements ServerPacket.Play { public SpawnEntityPacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT), reader.read(UUID), reader.read(VAR_INT), new Pos(reader.read(DOUBLE), reader.read(DOUBLE), reader.read(DOUBLE), @@ -44,10 +42,7 @@ public record SpawnEntityPacket(int entityId, @NotNull UUID uuid, int type, } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.SPAWN_ENTITY; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.SPAWN_ENTITY; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/SpawnExperienceOrbPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/SpawnExperienceOrbPacket.java index 381b7cd46..764b12a5e 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/SpawnExperienceOrbPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/SpawnExperienceOrbPacket.java @@ -1,17 +1,15 @@ package net.minestom.server.network.packet.server.play; import net.minestom.server.coordinate.Pos; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.*; public record SpawnExperienceOrbPacket(int entityId, - @NotNull Pos position, short expCount) implements ServerPacket { + @NotNull Pos position, short expCount) implements ServerPacket.Play { public SpawnExperienceOrbPacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT), new Pos(reader.read(DOUBLE), reader.read(DOUBLE), reader.read(DOUBLE)), reader.read(SHORT)); @@ -27,10 +25,7 @@ public record SpawnExperienceOrbPacket(int entityId, } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.SPAWN_EXPERIENCE_ORB; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.SPAWN_EXPERIENCE_ORB; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/SpawnPositionPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/SpawnPositionPacket.java index e0612ca6f..119463f59 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/SpawnPositionPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/SpawnPositionPacket.java @@ -1,17 +1,15 @@ package net.minestom.server.network.packet.server.play; import net.minestom.server.coordinate.Point; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.BLOCK_POSITION; import static net.minestom.server.network.NetworkBuffer.FLOAT; -public record SpawnPositionPacket(@NotNull Point position, float angle) implements ServerPacket { +public record SpawnPositionPacket(@NotNull Point position, float angle) implements ServerPacket.Play { public SpawnPositionPacket(@NotNull NetworkBuffer reader) { this(reader.read(BLOCK_POSITION), reader.read(FLOAT)); } @@ -23,10 +21,7 @@ public record SpawnPositionPacket(@NotNull Point position, float angle) implemen } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.SPAWN_POSITION; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.SPAWN_POSITION; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/StartConfigurationPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/StartConfigurationPacket.java index 9e756cdc5..60c4928a1 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/StartConfigurationPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/StartConfigurationPacket.java @@ -1,25 +1,20 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public record StartConfigurationPacket() implements ServerPacket { +public record StartConfigurationPacket() implements ServerPacket.Play { @Override public void write(@NotNull NetworkBuffer writer) { } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.START_CONFIGURATION_PACKET; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.START_CONFIGURATION_PACKET; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/StatisticsPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/StatisticsPacket.java index 8f41efd87..1a34e326a 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/StatisticsPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/StatisticsPacket.java @@ -1,18 +1,16 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; import net.minestom.server.statistic.StatisticCategory; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import java.util.List; import static net.minestom.server.network.NetworkBuffer.VAR_INT; -public record StatisticsPacket(@NotNull List statistics) implements ServerPacket { +public record StatisticsPacket(@NotNull List statistics) implements ServerPacket.Play { public static final int MAX_ENTRIES = 16384; public StatisticsPacket { @@ -29,11 +27,8 @@ public record StatisticsPacket(@NotNull List statistics) implements S } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.STATISTICS; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.STATISTICS; } public record Statistic(@NotNull StatisticCategory category, diff --git a/src/main/java/net/minestom/server/network/packet/server/play/StopSoundPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/StopSoundPacket.java index e8fa7e7b9..b4c219645 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/StopSoundPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/StopSoundPacket.java @@ -2,18 +2,16 @@ package net.minestom.server.network.packet.server.play; import net.kyori.adventure.sound.Sound; import net.minestom.server.adventure.AdventurePacketConvertor; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import static net.minestom.server.network.NetworkBuffer.*; public record StopSoundPacket(byte flags, @Nullable Sound.Source source, - @Nullable String sound) implements ServerPacket { + @Nullable String sound) implements ServerPacket.Play { public StopSoundPacket(@NotNull NetworkBuffer reader) { this(read(reader)); } @@ -43,10 +41,7 @@ public record StopSoundPacket(byte flags, @Nullable Sound.Source source, } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.STOP_SOUND; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.STOP_SOUND; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/SystemChatPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/SystemChatPacket.java index bb46260b8..6a86a3f9a 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/SystemChatPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/SystemChatPacket.java @@ -1,12 +1,10 @@ package net.minestom.server.network.packet.server.play; import net.kyori.adventure.text.Component; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; -import net.minestom.server.network.packet.server.ComponentHoldingServerPacket; +import net.minestom.server.network.packet.server.ServerPacket.ComponentHolding; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import java.util.Collection; @@ -16,7 +14,7 @@ import java.util.function.UnaryOperator; import static net.minestom.server.network.NetworkBuffer.BOOLEAN; import static net.minestom.server.network.NetworkBuffer.COMPONENT; -public record SystemChatPacket(@NotNull Component message, boolean overlay) implements ComponentHoldingServerPacket { +public record SystemChatPacket(@NotNull Component message, boolean overlay) implements ServerPacket.Play, ServerPacket.ComponentHolding { public SystemChatPacket(@NotNull NetworkBuffer reader) { this(reader.read(COMPONENT), reader.read(BOOLEAN)); } @@ -28,11 +26,8 @@ public record SystemChatPacket(@NotNull Component message, boolean overlay) impl } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.SYSTEM_CHAT; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.SYSTEM_CHAT; } @Override diff --git a/src/main/java/net/minestom/server/network/packet/server/play/TabCompletePacket.java b/src/main/java/net/minestom/server/network/packet/server/play/TabCompletePacket.java index 01637de7c..39b2e1569 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/TabCompletePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/TabCompletePacket.java @@ -2,12 +2,10 @@ package net.minestom.server.network.packet.server.play; import net.kyori.adventure.text.Component; import net.minestom.server.adventure.ComponentHolder; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; -import net.minestom.server.network.packet.server.ComponentHoldingServerPacket; +import net.minestom.server.network.packet.server.ServerPacket.ComponentHolding; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -19,7 +17,7 @@ import java.util.function.UnaryOperator; import static net.minestom.server.network.NetworkBuffer.*; public record TabCompletePacket(int transactionId, int start, int length, - @NotNull List matches) implements ComponentHoldingServerPacket { + @NotNull List matches) implements ServerPacket.Play, ServerPacket.ComponentHolding { public static final int MAX_ENTRIES = Short.MAX_VALUE; public TabCompletePacket { @@ -39,11 +37,8 @@ public record TabCompletePacket(int transactionId, int start, int length, } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.TAB_COMPLETE; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.TAB_COMPLETE; } @Override diff --git a/src/main/java/net/minestom/server/network/packet/server/play/TeamsPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/TeamsPacket.java index 3c4641012..005655261 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/TeamsPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/TeamsPacket.java @@ -4,12 +4,10 @@ import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import net.minestom.server.adventure.AdventurePacketConvertor; import net.minestom.server.adventure.ComponentHolder; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; -import net.minestom.server.network.packet.server.ComponentHoldingServerPacket; +import net.minestom.server.network.packet.server.ServerPacket.ComponentHolding; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import net.minestom.server.utils.validate.Check; import org.jetbrains.annotations.NotNull; @@ -22,7 +20,7 @@ import static net.minestom.server.network.NetworkBuffer.*; /** * The packet creates or updates teams */ -public record TeamsPacket(String teamName, Action action) implements ComponentHoldingServerPacket { +public record TeamsPacket(String teamName, Action action) implements ServerPacket.Play, ServerPacket.ComponentHolding { public static final int MAX_MEMBERS = 16384; public TeamsPacket(@NotNull NetworkBuffer reader) { @@ -220,11 +218,8 @@ public record TeamsPacket(String teamName, Action action) implements ComponentHo * @return the identifier */ @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.TEAMS; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.TEAMS; } /** diff --git a/src/main/java/net/minestom/server/network/packet/server/play/TickStepPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/TickStepPacket.java index 597709473..7c654aebb 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/TickStepPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/TickStepPacket.java @@ -1,15 +1,13 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.VAR_INT; -public record TickStepPacket(int steps) implements ServerPacket { +public record TickStepPacket(int steps) implements ServerPacket.Play { public TickStepPacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT)); @@ -21,10 +19,7 @@ public record TickStepPacket(int steps) implements ServerPacket { } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.TICK_STEP; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.TICK_STEP; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/TimeUpdatePacket.java b/src/main/java/net/minestom/server/network/packet/server/play/TimeUpdatePacket.java index e38763588..5a77d69f7 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/TimeUpdatePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/TimeUpdatePacket.java @@ -1,15 +1,13 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.LONG; -public record TimeUpdatePacket(long worldAge, long timeOfDay) implements ServerPacket { +public record TimeUpdatePacket(long worldAge, long timeOfDay) implements ServerPacket.Play { public TimeUpdatePacket(@NotNull NetworkBuffer reader) { this(reader.read(LONG), reader.read(LONG)); } @@ -21,10 +19,7 @@ public record TimeUpdatePacket(long worldAge, long timeOfDay) implements ServerP } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.TIME_UPDATE; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.TIME_UPDATE; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/TradeListPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/TradeListPacket.java index 218b7d83c..baffa039a 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/TradeListPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/TradeListPacket.java @@ -1,11 +1,9 @@ package net.minestom.server.network.packet.server.play; import net.minestom.server.item.ItemStack; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import java.util.List; @@ -14,7 +12,7 @@ import static net.minestom.server.network.NetworkBuffer.*; public record TradeListPacket(int windowId, @NotNull List trades, int villagerLevel, int experience, - boolean regularVillager, boolean canRestock) implements ServerPacket { + boolean regularVillager, boolean canRestock) implements ServerPacket.Play { public static final int MAX_TRADES = Short.MAX_VALUE; public TradeListPacket { @@ -38,11 +36,8 @@ public record TradeListPacket(int windowId, @NotNull List trades, } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.TRADE_LIST; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.TRADE_LIST; } public record Trade(ItemStack inputItem1, ItemStack result, diff --git a/src/main/java/net/minestom/server/network/packet/server/play/UnloadChunkPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/UnloadChunkPacket.java index 0ad8435f7..aa7aa2f3c 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/UnloadChunkPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/UnloadChunkPacket.java @@ -1,15 +1,13 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.INT; -public record UnloadChunkPacket(int chunkX, int chunkZ) implements ServerPacket { +public record UnloadChunkPacket(int chunkX, int chunkZ) implements ServerPacket.Play { public UnloadChunkPacket(@NotNull NetworkBuffer reader) { this(read(reader)); } @@ -26,11 +24,8 @@ public record UnloadChunkPacket(int chunkX, int chunkZ) implements ServerPacket } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.UNLOAD_CHUNK; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.UNLOAD_CHUNK; } private static UnloadChunkPacket read(@NotNull NetworkBuffer reader) { diff --git a/src/main/java/net/minestom/server/network/packet/server/play/UnlockRecipesPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/UnlockRecipesPacket.java index 411999825..9a567a2cc 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/UnlockRecipesPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/UnlockRecipesPacket.java @@ -1,10 +1,8 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.UnknownNullability; @@ -18,7 +16,7 @@ public record UnlockRecipesPacket(int mode, boolean blastFurnaceRecipeBookOpen, boolean blastFurnaceRecipeBookFilterActive, boolean smokerRecipeBookOpen, boolean smokerRecipeBookFilterActive, @NotNull List recipeIds, - @UnknownNullability List initRecipeIds) implements ServerPacket { + @UnknownNullability List initRecipeIds) implements ServerPacket.Play { public UnlockRecipesPacket { recipeIds = List.copyOf(recipeIds); if (initRecipeIds != null) { @@ -78,10 +76,7 @@ public record UnlockRecipesPacket(int mode, } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.UNLOCK_RECIPES; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.UNLOCK_RECIPES; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/UpdateHealthPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/UpdateHealthPacket.java index 7c27bad17..cc994074e 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/UpdateHealthPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/UpdateHealthPacket.java @@ -1,16 +1,14 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.FLOAT; import static net.minestom.server.network.NetworkBuffer.VAR_INT; -public record UpdateHealthPacket(float health, int food, float foodSaturation) implements ServerPacket { +public record UpdateHealthPacket(float health, int food, float foodSaturation) implements ServerPacket.Play { public UpdateHealthPacket(@NotNull NetworkBuffer reader) { this(reader.read(FLOAT), reader.read(VAR_INT), reader.read(FLOAT)); } @@ -23,10 +21,7 @@ public record UpdateHealthPacket(float health, int food, float foodSaturation) i } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.UPDATE_HEALTH; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.UPDATE_HEALTH; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/UpdateLightPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/UpdateLightPacket.java index 316c6dcce..3fe41b57e 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/UpdateLightPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/UpdateLightPacket.java @@ -1,17 +1,15 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; import net.minestom.server.network.packet.server.play.data.LightData; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.VAR_INT; public record UpdateLightPacket(int chunkX, int chunkZ, - @NotNull LightData lightData) implements ServerPacket { + @NotNull LightData lightData) implements ServerPacket.Play { public UpdateLightPacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT), reader.read(VAR_INT), new LightData(reader)); } @@ -24,10 +22,7 @@ public record UpdateLightPacket(int chunkX, int chunkZ, } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.UPDATE_LIGHT; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.UPDATE_LIGHT; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/UpdateScorePacket.java b/src/main/java/net/minestom/server/network/packet/server/play/UpdateScorePacket.java index 7b0a23593..00e9f4ea3 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/UpdateScorePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/UpdateScorePacket.java @@ -1,12 +1,10 @@ package net.minestom.server.network.packet.server.play; import net.kyori.adventure.text.Component; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; import net.minestom.server.scoreboard.Sidebar; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -22,7 +20,7 @@ public record UpdateScorePacket( int score, @Nullable Component displayName, @Nullable Sidebar.NumberFormat numberFormat -) implements ServerPacket { +) implements ServerPacket.Play { public UpdateScorePacket(@NotNull NetworkBuffer reader) { this(reader.read(STRING), reader.read(STRING), reader.read(VAR_INT), reader.readOptional(COMPONENT), reader.readOptional(Sidebar.NumberFormat::new)); @@ -38,10 +36,7 @@ public record UpdateScorePacket( } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.UPDATE_SCORE; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.UPDATE_SCORE; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/UpdateSimulationDistancePacket.java b/src/main/java/net/minestom/server/network/packet/server/play/UpdateSimulationDistancePacket.java index 890e751cc..1bfe3408d 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/UpdateSimulationDistancePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/UpdateSimulationDistancePacket.java @@ -1,15 +1,13 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.VAR_INT; -public record UpdateSimulationDistancePacket(int simulationDistance) implements ServerPacket { +public record UpdateSimulationDistancePacket(int simulationDistance) implements ServerPacket.Play { public UpdateSimulationDistancePacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT)); } @@ -20,10 +18,7 @@ public record UpdateSimulationDistancePacket(int simulationDistance) implements } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.SET_SIMULATION_DISTANCE; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.SET_SIMULATION_DISTANCE; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/UpdateViewDistancePacket.java b/src/main/java/net/minestom/server/network/packet/server/play/UpdateViewDistancePacket.java index 8abd274f1..08f4f7104 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/UpdateViewDistancePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/UpdateViewDistancePacket.java @@ -1,15 +1,13 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.VAR_INT; -public record UpdateViewDistancePacket(int viewDistance) implements ServerPacket { +public record UpdateViewDistancePacket(int viewDistance) implements ServerPacket.Play { public UpdateViewDistancePacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT)); } @@ -20,10 +18,7 @@ public record UpdateViewDistancePacket(int viewDistance) implements ServerPacket } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.UPDATE_VIEW_DISTANCE; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.UPDATE_VIEW_DISTANCE; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/UpdateViewPositionPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/UpdateViewPositionPacket.java index 664bbe674..3c3d5f7fc 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/UpdateViewPositionPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/UpdateViewPositionPacket.java @@ -1,15 +1,13 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.VAR_INT; -public record UpdateViewPositionPacket(int chunkX, int chunkZ) implements ServerPacket { +public record UpdateViewPositionPacket(int chunkX, int chunkZ) implements ServerPacket.Play { public UpdateViewPositionPacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT), reader.read(VAR_INT)); } @@ -21,10 +19,7 @@ public record UpdateViewPositionPacket(int chunkX, int chunkZ) implements Server } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.UPDATE_VIEW_POSITION; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.UPDATE_VIEW_POSITION; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/VehicleMovePacket.java b/src/main/java/net/minestom/server/network/packet/server/play/VehicleMovePacket.java index cbfb2f72f..1d7b80dbf 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/VehicleMovePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/VehicleMovePacket.java @@ -1,17 +1,15 @@ package net.minestom.server.network.packet.server.play; import net.minestom.server.coordinate.Pos; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.DOUBLE; import static net.minestom.server.network.NetworkBuffer.FLOAT; -public record VehicleMovePacket(@NotNull Pos position) implements ServerPacket { +public record VehicleMovePacket(@NotNull Pos position) implements ServerPacket.Play { public VehicleMovePacket(@NotNull NetworkBuffer reader) { this(new Pos(reader.read(DOUBLE), reader.read(DOUBLE), reader.read(DOUBLE), reader.read(FLOAT), reader.read(FLOAT))); @@ -27,10 +25,7 @@ public record VehicleMovePacket(@NotNull Pos position) implements ServerPacket { } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.VEHICLE_MOVE; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.VEHICLE_MOVE; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/WindowItemsPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/WindowItemsPacket.java index 38b3b7cd1..21073cbfd 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/WindowItemsPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/WindowItemsPacket.java @@ -2,12 +2,10 @@ package net.minestom.server.network.packet.server.play; import net.kyori.adventure.text.Component; import net.minestom.server.item.ItemStack; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; -import net.minestom.server.network.packet.server.ComponentHoldingServerPacket; +import net.minestom.server.network.packet.server.ServerPacket.ComponentHolding; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -18,7 +16,7 @@ import java.util.function.UnaryOperator; import static net.minestom.server.network.NetworkBuffer.*; public record WindowItemsPacket(byte windowId, int stateId, @NotNull List items, - @NotNull ItemStack carriedItem) implements ComponentHoldingServerPacket { + @NotNull ItemStack carriedItem) implements ServerPacket.Play, ServerPacket.ComponentHolding { public static final int MAX_ENTRIES = 128; public WindowItemsPacket { @@ -39,11 +37,8 @@ public record WindowItemsPacket(byte windowId, int stateId, @NotNull List ServerPacketIdentifier.WINDOW_ITEMS; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.WINDOW_ITEMS; } @Override diff --git a/src/main/java/net/minestom/server/network/packet/server/play/WindowPropertyPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/WindowPropertyPacket.java index 00b64e892..604c06350 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/WindowPropertyPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/WindowPropertyPacket.java @@ -1,16 +1,14 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.BYTE; import static net.minestom.server.network.NetworkBuffer.SHORT; -public record WindowPropertyPacket(byte windowId, short property, short value) implements ServerPacket { +public record WindowPropertyPacket(byte windowId, short property, short value) implements ServerPacket.Play { public WindowPropertyPacket(@NotNull NetworkBuffer reader) { this(reader.read(BYTE), reader.read(SHORT), reader.read(SHORT)); } @@ -23,10 +21,7 @@ public record WindowPropertyPacket(byte windowId, short property, short value) i } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.WINDOW_PROPERTY; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.WINDOW_PROPERTY; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/WorldBorderCenterPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/WorldBorderCenterPacket.java index dce86cac5..29a197ae1 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/WorldBorderCenterPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/WorldBorderCenterPacket.java @@ -1,15 +1,13 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.DOUBLE; -public record WorldBorderCenterPacket(double x, double z) implements ServerPacket { +public record WorldBorderCenterPacket(double x, double z) implements ServerPacket.Play { public WorldBorderCenterPacket(@NotNull NetworkBuffer reader) { this(reader.read(DOUBLE), reader.read(DOUBLE)); } @@ -21,10 +19,7 @@ public record WorldBorderCenterPacket(double x, double z) implements ServerPacke } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.WORLD_BORDER_CENTER; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.WORLD_BORDER_CENTER; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/WorldBorderLerpSizePacket.java b/src/main/java/net/minestom/server/network/packet/server/play/WorldBorderLerpSizePacket.java index 721358df0..776d08ea4 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/WorldBorderLerpSizePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/WorldBorderLerpSizePacket.java @@ -1,16 +1,14 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.DOUBLE; import static net.minestom.server.network.NetworkBuffer.VAR_LONG; -public record WorldBorderLerpSizePacket(double oldDiameter, double newDiameter, long speed) implements ServerPacket { +public record WorldBorderLerpSizePacket(double oldDiameter, double newDiameter, long speed) implements ServerPacket.Play { public WorldBorderLerpSizePacket(@NotNull NetworkBuffer reader) { this(reader.read(DOUBLE), reader.read(DOUBLE), reader.read(VAR_LONG)); } @@ -23,10 +21,7 @@ public record WorldBorderLerpSizePacket(double oldDiameter, double newDiameter, } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.WORLD_BORDER_LERP_SIZE; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.WORLD_BORDER_LERP_SIZE; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/WorldBorderSizePacket.java b/src/main/java/net/minestom/server/network/packet/server/play/WorldBorderSizePacket.java index cf93c4b19..56a12d34a 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/WorldBorderSizePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/WorldBorderSizePacket.java @@ -1,15 +1,13 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.DOUBLE; -public record WorldBorderSizePacket(double diameter) implements ServerPacket { +public record WorldBorderSizePacket(double diameter) implements ServerPacket.Play { public WorldBorderSizePacket(@NotNull NetworkBuffer reader) { this(reader.read(DOUBLE)); } @@ -20,10 +18,7 @@ public record WorldBorderSizePacket(double diameter) implements ServerPacket { } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.WORLD_BORDER_SIZE; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.WORLD_BORDER_SIZE; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/WorldBorderWarningDelayPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/WorldBorderWarningDelayPacket.java index f76a1af59..ba2f5cd7f 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/WorldBorderWarningDelayPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/WorldBorderWarningDelayPacket.java @@ -1,15 +1,13 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.VAR_INT; -public record WorldBorderWarningDelayPacket(int warningTime) implements ServerPacket { +public record WorldBorderWarningDelayPacket(int warningTime) implements ServerPacket.Play { public WorldBorderWarningDelayPacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT)); } @@ -20,10 +18,7 @@ public record WorldBorderWarningDelayPacket(int warningTime) implements ServerPa } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.WORLD_BORDER_WARNING_DELAY; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.WORLD_BORDER_WARNING_DELAY; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/play/WorldBorderWarningReachPacket.java b/src/main/java/net/minestom/server/network/packet/server/play/WorldBorderWarningReachPacket.java index 9851f3500..242d8ef4a 100644 --- a/src/main/java/net/minestom/server/network/packet/server/play/WorldBorderWarningReachPacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/play/WorldBorderWarningReachPacket.java @@ -1,15 +1,13 @@ package net.minestom.server.network.packet.server.play; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.VAR_INT; -public record WorldBorderWarningReachPacket(int warningBlocks) implements ServerPacket { +public record WorldBorderWarningReachPacket(int warningBlocks) implements ServerPacket.Play { public WorldBorderWarningReachPacket(@NotNull NetworkBuffer reader) { this(reader.read(VAR_INT)); } @@ -20,10 +18,7 @@ public record WorldBorderWarningReachPacket(int warningBlocks) implements Server } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case PLAY -> ServerPacketIdentifier.WORLD_BORDER_WARNING_REACH; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.PLAY); - }; + public int playId() { + return ServerPacketIdentifier.WORLD_BORDER_WARNING_REACH; } } diff --git a/src/main/java/net/minestom/server/network/packet/server/status/ResponsePacket.java b/src/main/java/net/minestom/server/network/packet/server/status/ResponsePacket.java index 098e4c36b..93b2a3e82 100644 --- a/src/main/java/net/minestom/server/network/packet/server/status/ResponsePacket.java +++ b/src/main/java/net/minestom/server/network/packet/server/status/ResponsePacket.java @@ -1,15 +1,13 @@ package net.minestom.server.network.packet.server.status; -import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.packet.server.ServerPacketIdentifier; -import net.minestom.server.utils.PacketUtils; import org.jetbrains.annotations.NotNull; import static net.minestom.server.network.NetworkBuffer.STRING; -public record ResponsePacket(@NotNull String jsonResponse) implements ServerPacket { +public record ResponsePacket(@NotNull String jsonResponse) implements ServerPacket.Status { public ResponsePacket(@NotNull NetworkBuffer reader) { this(reader.read(STRING)); } @@ -20,10 +18,7 @@ public record ResponsePacket(@NotNull String jsonResponse) implements ServerPack } @Override - public int getId(@NotNull ConnectionState state) { - return switch (state) { - case STATUS -> ServerPacketIdentifier.STATUS_RESPONSE; - default -> PacketUtils.invalidPacketState(getClass(), state, ConnectionState.STATUS); - }; + public int statusId() { + return ServerPacketIdentifier.STATUS_RESPONSE; } } diff --git a/src/main/java/net/minestom/server/network/player/PlayerSocketConnection.java b/src/main/java/net/minestom/server/network/player/PlayerSocketConnection.java index 1ff4ee9b4..3a30f1a3f 100644 --- a/src/main/java/net/minestom/server/network/player/PlayerSocketConnection.java +++ b/src/main/java/net/minestom/server/network/player/PlayerSocketConnection.java @@ -363,8 +363,8 @@ public class PlayerSocketConnection extends PlayerConnection { private void writeServerPacketSync(ServerPacket serverPacket, boolean compressed) { final Player player = getPlayer(); if (player != null) { - if (MinestomAdventure.AUTOMATIC_COMPONENT_TRANSLATION && serverPacket instanceof ComponentHoldingServerPacket) { - serverPacket = ((ComponentHoldingServerPacket) serverPacket).copyWithOperator(component -> + if (MinestomAdventure.AUTOMATIC_COMPONENT_TRANSLATION && serverPacket instanceof ServerPacket.ComponentHolding) { + serverPacket = ((ServerPacket.ComponentHolding) serverPacket).copyWithOperator(component -> MinestomAdventure.COMPONENT_TRANSLATOR.apply(component, Objects.requireNonNullElseGet(player.getLocale(), MinestomAdventure::getDefaultLocale))); } } diff --git a/src/main/java/net/minestom/server/registry/Registry.java b/src/main/java/net/minestom/server/registry/Registry.java index aa3960ee2..93c247089 100644 --- a/src/main/java/net/minestom/server/registry/Registry.java +++ b/src/main/java/net/minestom/server/registry/Registry.java @@ -9,6 +9,7 @@ import net.minestom.server.collision.BoundingBox; import net.minestom.server.collision.CollisionUtils; import net.minestom.server.collision.Shape; import net.minestom.server.entity.EntitySpawnType; +import net.minestom.server.entity.EntityType; import net.minestom.server.entity.EquipmentSlot; import net.minestom.server.instance.block.Block; import net.minestom.server.item.Material; @@ -251,6 +252,8 @@ public final class Registry { private final int blockEntityId; private final Supplier materialSupplier; private final Shape shape; + private final boolean redstoneConductor; + private final boolean signalSource; private final Properties custom; private BlockEntry(String namespace, Properties main, Properties custom) { @@ -289,6 +292,8 @@ public final class Registry { final String occlusion = main.getString("occlusionShape"); this.shape = CollisionUtils.parseBlockShape(collision, occlusion, this); } + this.redstoneConductor = main.getBoolean("redstoneConductor"); + this.signalSource = main.getBoolean("signalSource", false); } public @NotNull NamespaceID namespace() { @@ -367,6 +372,14 @@ public final class Registry { return materialSupplier.get(); } + public boolean isRedstoneConductor() { + return redstoneConductor; + } + + public boolean isSignalSource() { + return signalSource; + } + public Shape collisionShape() { return shape; } @@ -461,6 +474,7 @@ public final class Registry { private final boolean isFood; private final Supplier blockSupplier; private final EquipmentSlot equipmentSlot; + private final EntityType entityType; private final Properties custom; private MaterialEntry(String namespace, Properties main, Properties custom) { @@ -489,6 +503,14 @@ public final class Registry { this.equipmentSlot = null; } } + { + final Properties spawnEggProperties = main.section("spawnEggProperties"); + if (spawnEggProperties != null) { + this.entityType = EntityType.fromNamespaceId(spawnEggProperties.getString("entityType")); + } else { + this.entityType = null; + } + } } public @NotNull NamespaceID namespace() { @@ -527,6 +549,14 @@ public final class Registry { return equipmentSlot; } + /** + * Gets the entity type this item can spawn. Only present for spawn eggs (e.g. wolf spawn egg, skeleton spawn egg) + * @return The entity type it can spawn, or null if it is not a spawn egg + */ + public @Nullable EntityType spawnEntityType() { + return entityType; + } + @Override public Properties custom() { return custom; diff --git a/src/main/java/net/minestom/server/thread/Acquirable.java b/src/main/java/net/minestom/server/thread/Acquirable.java index 473000641..ab56f33af 100644 --- a/src/main/java/net/minestom/server/thread/Acquirable.java +++ b/src/main/java/net/minestom/server/thread/Acquirable.java @@ -102,8 +102,11 @@ public sealed interface Acquirable permits AcquirableImpl { */ default void sync(@NotNull Consumer consumer) { Acquired acquired = lock(); - consumer.accept(acquired.get()); - acquired.unlock(); + try { + consumer.accept(acquired.get()); + } finally { + acquired.unlock(); + } } /** diff --git a/src/main/java/net/minestom/server/timer/Scheduler.java b/src/main/java/net/minestom/server/timer/Scheduler.java index bd5eee9e2..d28e12466 100644 --- a/src/main/java/net/minestom/server/timer/Scheduler.java +++ b/src/main/java/net/minestom/server/timer/Scheduler.java @@ -2,6 +2,7 @@ package net.minestom.server.timer; import org.jetbrains.annotations.NotNull; +import java.util.concurrent.Executor; import java.util.function.Supplier; /** @@ -10,7 +11,7 @@ import java.util.function.Supplier; *

* Tasks are by default executed in the caller thread. */ -public sealed interface Scheduler permits SchedulerImpl, SchedulerManager { +public sealed interface Scheduler extends Executor permits SchedulerImpl, SchedulerManager { static @NotNull Scheduler newScheduler() { return new SchedulerImpl(); } @@ -75,4 +76,13 @@ public sealed interface Scheduler permits SchedulerImpl, SchedulerManager { default @NotNull Task scheduleNextProcess(@NotNull Runnable task) { return scheduleNextProcess(task, ExecutionType.SYNC); } + + /** + * Implementation of {@link Executor}, proxies to {@link #scheduleNextTick(Runnable)}. + * @param command the task to execute on the next tick + */ + @Override + default void execute(@NotNull Runnable command) { + scheduleNextTick(command); + } } diff --git a/src/main/java/net/minestom/server/timer/SchedulerImpl.java b/src/main/java/net/minestom/server/timer/SchedulerImpl.java index 145870f52..76b47a0d4 100644 --- a/src/main/java/net/minestom/server/timer/SchedulerImpl.java +++ b/src/main/java/net/minestom/server/timer/SchedulerImpl.java @@ -1,6 +1,7 @@ package net.minestom.server.timer; import it.unimi.dsi.fastutil.ints.Int2ObjectAVLTreeMap; +import net.minestom.server.MinecraftServer; import org.jctools.queues.MpscUnboundedArrayQueue; import org.jetbrains.annotations.NotNull; @@ -89,7 +90,14 @@ final class SchedulerImpl implements Scheduler { } private void handleTask(TaskImpl task) { - final TaskSchedule schedule = task.task().get(); + TaskSchedule schedule; + try { + schedule = task.task().get(); + } catch (Throwable t) { + MinecraftServer.getExceptionManager().handleException(new RuntimeException("Exception in scheduled task", t)); + schedule = TaskSchedule.stop(); + } + if (schedule instanceof TaskScheduleImpl.DurationSchedule durationSchedule) { final Duration duration = durationSchedule.duration(); SCHEDULER.schedule(() -> safeExecute(task), duration.toMillis(), TimeUnit.MILLISECONDS); diff --git a/src/main/java/net/minestom/server/utils/PacketUtils.java b/src/main/java/net/minestom/server/utils/PacketUtils.java index 27e4aceb2..49565b009 100644 --- a/src/main/java/net/minestom/server/utils/PacketUtils.java +++ b/src/main/java/net/minestom/server/utils/PacketUtils.java @@ -20,7 +20,10 @@ import net.minestom.server.entity.Entity; import net.minestom.server.entity.Player; import net.minestom.server.network.ConnectionState; import net.minestom.server.network.NetworkBuffer; -import net.minestom.server.network.packet.server.*; +import net.minestom.server.network.packet.server.CachedPacket; +import net.minestom.server.network.packet.server.FramedPacket; +import net.minestom.server.network.packet.server.SendablePacket; +import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.player.PlayerConnection; import net.minestom.server.network.player.PlayerSocketConnection; import net.minestom.server.utils.binary.BinaryBuffer; @@ -108,14 +111,14 @@ public final class PacketUtils { /** * Checks if the {@link ServerPacket} is suitable to be wrapped into a {@link CachedPacket}. - * Note: {@link ComponentHoldingServerPacket}s are not translated inside a {@link CachedPacket}. + * Note: {@link ServerPacket.ComponentHolding}s are not translated inside a {@link CachedPacket}. * * @see CachedPacket#body(ConnectionState) * @see PlayerSocketConnection#writePacketSync(SendablePacket, boolean) */ static boolean shouldUseCachePacket(final @NotNull ServerPacket packet) { if (!MinestomAdventure.AUTOMATIC_COMPONENT_TRANSLATION) return ServerFlag.GROUPED_PACKET; - if (!(packet instanceof ComponentHoldingServerPacket holder)) return ServerFlag.GROUPED_PACKET; + if (!(packet instanceof ServerPacket.ComponentHolding holder)) return ServerFlag.GROUPED_PACKET; return !containsTranslatableComponents(holder); } @@ -227,7 +230,7 @@ public final class PacketUtils { try { payloadConsumer.accept(packetId, payload); } catch (Exception e) { - // Empty + throw new RuntimeException(e); } // Position buffer to read the next packet readBuffer.readerOffset(readerStart + packetLength); @@ -386,6 +389,7 @@ public final class PacketUtils { @ApiStatus.Internal public static int invalidPacketState(@NotNull Class packetClass, @NotNull ConnectionState state, @NotNull ConnectionState... expected) { + assert expected.length > 0 : "Expected states cannot be empty: " + packetClass; StringBuilder expectedStr = new StringBuilder(); for (ConnectionState connectionState : expected) { expectedStr.append(connectionState).append(", "); diff --git a/src/main/java/net/minestom/server/utils/binary/BinaryBuffer.java b/src/main/java/net/minestom/server/utils/binary/BinaryBuffer.java index 4c0db568b..c4f607628 100644 --- a/src/main/java/net/minestom/server/utils/binary/BinaryBuffer.java +++ b/src/main/java/net/minestom/server/utils/binary/BinaryBuffer.java @@ -113,6 +113,10 @@ public final class BinaryBuffer { return writerOffset; } + public void writerOffset(int offset) { + this.writerOffset = offset; + } + public int readableBytes() { return writerOffset - readerOffset; } diff --git a/src/main/java/net/minestom/server/utils/mojang/MojangUtils.java b/src/main/java/net/minestom/server/utils/mojang/MojangUtils.java index f99a65f2c..2bf3e9f16 100644 --- a/src/main/java/net/minestom/server/utils/mojang/MojangUtils.java +++ b/src/main/java/net/minestom/server/utils/mojang/MojangUtils.java @@ -11,6 +11,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.io.IOException; +import java.util.UUID; import java.util.concurrent.TimeUnit; /** @@ -24,36 +25,107 @@ public final class MojangUtils { .softValues() .build(); + /** + * Gets a player's UUID from their username + * @param username The players username + * @return The {@link UUID} + * @throws IOException with text detailing the exception + */ + @Blocking + public static @NotNull UUID getUUID(String username) throws IOException { + // Thanks stackoverflow: https://stackoverflow.com/a/19399768/13247146 + return UUID.fromString( + retrieve(String.format(FROM_USERNAME_URL, username)).get("id") + .getAsString() + .replaceFirst( + "(\\p{XDigit}{8})(\\p{XDigit}{4})(\\p{XDigit}{4})(\\p{XDigit}{4})(\\p{XDigit}+)", + "$1-$2-$3-$4-$5" + ) + ); + } + + /** + * Gets a player's username from their UUID + * @param playerUUID The {@link UUID} of the player + * @return The player's username + * @throws IOException with text detailing the exception + */ + @Blocking + public static @NotNull String getUsername(UUID playerUUID) throws IOException { + return retrieve(String.format(FROM_UUID_URL, playerUUID)).get("name").getAsString(); + } + + /** + * Gets a {@link JsonObject} with the response from the mojang API + * @param uuid The UUID as a {@link UUID} + * @return The {@link JsonObject} or {@code null} if the mojang API is down or the UUID is invalid + */ + @Blocking + public static @Nullable JsonObject fromUuid(@NotNull UUID uuid) { + return fromUuid(uuid.toString()); + } + + /** + * Gets a {@link JsonObject} with the response from the mojang API + * @param uuid The UUID as a {@link String} + * @return The {@link JsonObject} or {@code null} if the mojang API is down or the UUID is invalid + */ @Blocking public static @Nullable JsonObject fromUuid(@NotNull String uuid) { - return retrieve(String.format(FROM_UUID_URL, uuid)); + try { + return retrieve(String.format(FROM_UUID_URL, uuid)); + } catch (IOException e) { + return null; + } } + /** + * Gets a {@link JsonObject} with the response from the mojang API + * @param username The username as a {@link String} + * @return The {@link JsonObject} or {@code null} if the mojang API is down or the username is invalid + */ @Blocking public static @Nullable JsonObject fromUsername(@NotNull String username) { - return retrieve(String.format(FROM_USERNAME_URL, username)); + try { + return retrieve(String.format(FROM_USERNAME_URL, username)); + } catch (IOException e) { + return null; + } } - private static @Nullable JsonObject retrieve(@NotNull String url) { - return URL_CACHE.get(url, s -> { - try { - // Retrieve from the rate-limited Mojang API - final String response = URLUtils.getText(url); - // If our response is "", that means the url did not get a proper object from the url - // So the username or UUID was invalid, and therefore we return null - if (response.isEmpty()) { - return null; - } + /** + * Gets the JsonObject from a URL, expects a mojang player URL so the errors might not make sense if it is not + * @param url The url to retrieve + * @return The {@link JsonObject} of the result + * @throws IOException with the text detailing the exception + */ + private static @NotNull JsonObject retrieve(@NotNull String url) throws IOException { + @Nullable final var cacheResult = URL_CACHE.getIfPresent(url); - JsonObject jsonObject = JsonParser.parseString(response).getAsJsonObject(); - if (jsonObject.has("errorMessage")) { - return null; - } - return jsonObject; - } catch (IOException e) { - MinecraftServer.getExceptionManager().handleException(e); - throw new RuntimeException(e); - } - }); + if (cacheResult != null) { + return cacheResult; + } + + final String response; + try { + // Retrieve from the rate-limited Mojang API + response = URLUtils.getText(url); + } catch (IOException e) { + MinecraftServer.getExceptionManager().handleException(e); + throw new RuntimeException(e); + } + + // If our response is "", that means the url did not get a proper object from the url + // So the username or UUID was invalid, and therefore we return null + if (response.isEmpty()) { + throw new IOException("The Mojang API is down"); + } + + JsonObject jsonObject = JsonParser.parseString(response).getAsJsonObject(); + if (jsonObject.has("errorMessage")) { + throw new IOException(jsonObject.get("errorMessage").getAsString()); + } + URL_CACHE.put(url, jsonObject); + return jsonObject; } } diff --git a/src/test/java/net/minestom/server/collision/TestShape.java b/src/test/java/net/minestom/server/collision/TestShape.java index 080d0d0e7..8ccc65d5a 100644 --- a/src/test/java/net/minestom/server/collision/TestShape.java +++ b/src/test/java/net/minestom/server/collision/TestShape.java @@ -20,7 +20,11 @@ public class TestShape { Arguments.of(Block.ENCHANTING_TABLE, BlockFace.TOP, false), Arguments.of(Block.ENCHANTING_TABLE, BlockFace.NORTH, false), Arguments.of(Block.ACACIA_FENCE, BlockFace.TOP, false), - Arguments.of(Block.IRON_BARS, BlockFace.TOP, false) + Arguments.of(Block.IRON_BARS, BlockFace.TOP, false), + // We are testing collision faces here, so this should be true even though it doesnt occlude light + Arguments.of(Block.GLASS, BlockFace.TOP, true), + Arguments.of(Block.DARK_OAK_DOOR, BlockFace.NORTH, false), + Arguments.of(Block.DARK_OAK_DOOR, BlockFace.SOUTH, true) ); } diff --git a/src/test/java/net/minestom/server/entity/EntityTeleportIntegrationTest.java b/src/test/java/net/minestom/server/entity/EntityTeleportIntegrationTest.java index 22b32a5d5..3bb347541 100644 --- a/src/test/java/net/minestom/server/entity/EntityTeleportIntegrationTest.java +++ b/src/test/java/net/minestom/server/entity/EntityTeleportIntegrationTest.java @@ -1,5 +1,6 @@ package net.minestom.server.entity; +import net.minestom.server.network.packet.server.play.EntityHeadLookPacket; import net.minestom.testing.Env; import net.minestom.testing.EnvTest; import net.minestom.server.coordinate.Pos; @@ -8,6 +9,8 @@ import net.minestom.server.network.packet.server.play.EntityTeleportPacket; import net.minestom.server.network.packet.server.play.PlayerPositionAndLookPacket; import org.junit.jupiter.api.Test; +import java.util.List; + import static org.junit.jupiter.api.Assertions.assertEquals; @EnvTest @@ -58,10 +61,16 @@ public class EntityTeleportIntegrationTest { tracker.assertSingle(PlayerPositionAndLookPacket.class, packet -> assertEquals(teleportPosition, packet.position())); // Verify broadcast packet(s) - viewerTracker.assertSingle(EntityTeleportPacket.class, packet -> { - assertEquals(player.getEntityId(), packet.entityId()); - assertEquals(teleportPosition, packet.position()); - }); + + viewerTracker.assertCount(2); + List packets = viewerTracker.collect(); + var teleportPacket = (EntityTeleportPacket) packets.get(0); + assertEquals(player.getEntityId(), teleportPacket.entityId()); + assertEquals(teleportPosition, teleportPacket.position()); + + var headLookPacket = (EntityHeadLookPacket) packets.get(1); + assertEquals(player.getEntityId(), headLookPacket.entityId()); + assertEquals(teleportPosition.yaw(), headLookPacket.yaw()); } @Test diff --git a/src/test/java/net/minestom/server/entity/PlayerSkinTest.java b/src/test/java/net/minestom/server/entity/PlayerSkinTest.java index 771bdca2a..6446903da 100644 --- a/src/test/java/net/minestom/server/entity/PlayerSkinTest.java +++ b/src/test/java/net/minestom/server/entity/PlayerSkinTest.java @@ -1,5 +1,6 @@ package net.minestom.server.entity; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -7,12 +8,14 @@ import static org.junit.jupiter.api.Assertions.assertNull; public class PlayerSkinTest { + @Disabled @Test public void validName() { var skin = PlayerSkin.fromUsername("jeb_"); assertNotNull(skin); } + @Disabled @Test public void invalidName() { var skin = PlayerSkin.fromUsername("jfdsa84vvcxadubasdfcvn"); diff --git a/src/test/java/net/minestom/server/instance/BlockLightMergeIntegrationTest.java b/src/test/java/net/minestom/server/instance/BlockLightMergeIntegrationTest.java index 82c6e821f..522beecc6 100644 --- a/src/test/java/net/minestom/server/instance/BlockLightMergeIntegrationTest.java +++ b/src/test/java/net/minestom/server/instance/BlockLightMergeIntegrationTest.java @@ -414,6 +414,25 @@ public class BlockLightMergeIntegrationTest { assertEquals(14, val); } + + @Test + public void skylightShortGrass(Env env) { + Instance instance = env.createFlatInstance(); + instance.setChunkSupplier(LightingChunk::new); + for (int x = 4; x <= 7; x++) { + for (int z = 6; z <= 8; z++) { + instance.loadChunk(x, z).join(); + } + } + + instance.setBlock(94, 50, 128, Block.SHORT_GRASS); + + LightingChunk.relight(instance, instance.getChunks()); + + var val = lightValSky(instance, new Vec(94, 50, 128)); + assertEquals(15, val); + } + @Test public void skylightContained(Env env) { Instance instance = env.createFlatInstance(); diff --git a/src/test/java/net/minestom/server/instance/WeatherTest.java b/src/test/java/net/minestom/server/instance/WeatherTest.java new file mode 100644 index 000000000..17a1c6239 --- /dev/null +++ b/src/test/java/net/minestom/server/instance/WeatherTest.java @@ -0,0 +1,54 @@ +package net.minestom.server.instance; + +import net.minestom.server.coordinate.Pos; +import net.minestom.server.network.packet.server.play.ChangeGameStatePacket; +import net.minestom.testing.Env; +import net.minestom.testing.EnvTest; +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; + +@EnvTest +public class WeatherTest { + @Test + public void weatherTest(Env env) { + var instance = env.createFlatInstance(); + + // Defaults + Weather weather = instance.getWeather(); + assertFalse(weather.isRaining()); + assertEquals(0, weather.rainLevel()); + assertEquals(0, weather.thunderLevel()); + + instance.setWeather(new Weather(true, 1, 0.5f), 1); + instance.tick(0); + + // Weather sent on instance join + var connection = env.createConnection(); + var tracker = connection.trackIncoming(ChangeGameStatePacket.class); + connection.connect(instance, new Pos(0, 0, 0)).join(); + tracker.assertCount(4); + List packets = tracker.collect(); + var state = packets.get(0); + assertEquals(ChangeGameStatePacket.Reason.BEGIN_RAINING, state.reason()); + + state = packets.get(1); + assertEquals(ChangeGameStatePacket.Reason.RAIN_LEVEL_CHANGE, state.reason()); + assertEquals(1, state.value()); + + state = packets.get(2); + assertEquals(ChangeGameStatePacket.Reason.THUNDER_LEVEL_CHANGE, state.reason()); + assertEquals(0.5f, state.value()); + + // Weather change while inside instance + var tracker2 = connection.trackIncoming(ChangeGameStatePacket.class); + instance.setWeather(new Weather(false, 0, 0), 2); + instance.tick(0); + state = tracker2.collect().get(0); + assertEquals(ChangeGameStatePacket.Reason.RAIN_LEVEL_CHANGE, state.reason()); + assertEquals(0.5f, state.value()); + } +} diff --git a/src/test/java/net/minestom/server/instance/light/LightParityIntegrationTest.java b/src/test/java/net/minestom/server/instance/light/LightParityIntegrationTest.java index cae1ba4c6..c9741e2fc 100644 --- a/src/test/java/net/minestom/server/instance/light/LightParityIntegrationTest.java +++ b/src/test/java/net/minestom/server/instance/light/LightParityIntegrationTest.java @@ -159,8 +159,6 @@ public class LightParityIntegrationTest { for (int y = 0; y < Chunk.CHUNK_SECTION_SIZE; y++) { final BlockState blockState = section.get(x, y, z); String blockName = blockState.getName(); - if (blockName.equals("minecraft:grass")) - blockName = "minecraft:short_grass"; Block block = Objects.requireNonNull(Block.fromNamespaceId(blockName), blockName) .withProperties(blockState.getProperties()); palette.set(x, y, z, block.stateId()); diff --git a/src/test/java/net/minestom/server/inventory/PlayerCreativeSlotTest.java b/src/test/java/net/minestom/server/inventory/PlayerCreativeSlotTest.java new file mode 100644 index 000000000..a18215deb --- /dev/null +++ b/src/test/java/net/minestom/server/inventory/PlayerCreativeSlotTest.java @@ -0,0 +1,42 @@ +package net.minestom.server.inventory; + +import net.minestom.server.coordinate.Pos; +import net.minestom.server.entity.GameMode; +import net.minestom.server.item.ItemStack; +import net.minestom.server.item.Material; +import net.minestom.server.listener.CreativeInventoryActionListener; +import net.minestom.server.network.packet.client.play.ClientCreativeInventoryActionPacket; +import net.minestom.server.utils.inventory.PlayerInventoryUtils; +import net.minestom.testing.Env; +import net.minestom.testing.EnvTest; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; + +@EnvTest +public class PlayerCreativeSlotTest { + + @Test + public void testCreativeSlots(Env env) { + var instance = env.createFlatInstance(); + var connection = env.createConnection(); + var player = connection.connect(instance, new Pos(0, 42, 0)).join(); + assertEquals(instance, player.getInstance()); + + player.setGameMode(GameMode.CREATIVE); + player.addPacketToQueue(new ClientCreativeInventoryActionPacket((short) PlayerInventoryUtils.OFFHAND_SLOT, ItemStack.of(Material.STICK))); + player.interpretPacketQueue(); + assertEquals(Material.STICK, player.getInventory().getItemInOffHand().material()); + } + + @Test + public void testBoundsCheck(Env env) { + var instance = env.createFlatInstance(); + var connection = env.createConnection(); + var player = connection.connect(instance, new Pos(0, 42, 0)).join(); + player.setGameMode(GameMode.CREATIVE); + + assertDoesNotThrow(() -> CreativeInventoryActionListener.listener(new ClientCreativeInventoryActionPacket((short) 76, ItemStack.of(Material.OAK_LOG)), player)); + } +} diff --git a/src/test/java/net/minestom/server/item/ItemTest.java b/src/test/java/net/minestom/server/item/ItemTest.java index c7fa1ca1f..90e4b6c7e 100644 --- a/src/test/java/net/minestom/server/item/ItemTest.java +++ b/src/test/java/net/minestom/server/item/ItemTest.java @@ -2,6 +2,7 @@ package net.minestom.server.item; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; +import net.minestom.server.entity.EntityType; import org.jglrxavpok.hephaistos.nbt.NBT; import org.junit.jupiter.api.Test; @@ -108,6 +109,15 @@ public class ItemTest { assertEquals(6, item1.withAmount(6).amount()); } + @Test + public void testEntityType() { + var item1 = ItemStack.of(Material.DIAMOND, 1); + assertNull(item1.material().registry().spawnEntityType()); + var item2 = ItemStack.of(Material.CAMEL_SPAWN_EGG, 1); + assertNotNull(item2.material().registry().spawnEntityType()); + assertEquals(EntityType.CAMEL, item2.material().registry().spawnEntityType()); + } + static ItemStack createItem() { return ItemStack.builder(Material.STONE) .displayName(Component.text("Display name!", NamedTextColor.GREEN)) diff --git a/src/test/java/net/minestom/server/network/SocketWriteTest.java b/src/test/java/net/minestom/server/network/SocketWriteTest.java index 7c7356a37..bcaadeade 100644 --- a/src/test/java/net/minestom/server/network/SocketWriteTest.java +++ b/src/test/java/net/minestom/server/network/SocketWriteTest.java @@ -16,26 +16,26 @@ import static org.junit.jupiter.api.Assertions.assertNotEquals; public class SocketWriteTest { - record IntPacket(int value) implements ServerPacket { + record IntPacket(int value) implements ServerPacket.Play { @Override public void write(@NotNull NetworkBuffer writer) { writer.write(INT, value); } @Override - public int getId(@NotNull ConnectionState state) { + public int playId() { return 1; } } - record CompressiblePacket(String value) implements ServerPacket { + record CompressiblePacket(String value) implements ServerPacket.Play { @Override public void write(@NotNull NetworkBuffer writer) { writer.write(STRING, value); } @Override - public int getId(@NotNull ConnectionState state) { + public int playId() { return 1; } } diff --git a/src/test/java/net/minestom/server/timer/TestScheduler.java b/src/test/java/net/minestom/server/timer/TestScheduler.java index fdbb08082..079967dc1 100644 --- a/src/test/java/net/minestom/server/timer/TestScheduler.java +++ b/src/test/java/net/minestom/server/timer/TestScheduler.java @@ -1,10 +1,12 @@ package net.minestom.server.timer; +import net.minestom.server.MinecraftServer; import org.junit.jupiter.api.Test; import java.time.Duration; import java.util.concurrent.CompletableFuture; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; import static org.junit.jupiter.api.Assertions.*; @@ -139,4 +141,24 @@ public class TestScheduler { Thread.sleep(250); assertTrue(result.get(), "Async task didn't get executed"); } + + @Test + public void exceptionTask() { + MinecraftServer.init(); + Scheduler scheduler = Scheduler.newScheduler(); + scheduler.scheduleNextTick(() -> { + throw new RuntimeException("Test exception"); + }); + + // This is a bit of a weird use case. I dont want this test to depend on the order the scheduler executes in + // so this is a guess that the first one wont be before all 100 of the ones scheduled below. + // Not great, but should be fine anyway. + AtomicInteger executed = new AtomicInteger(0); + for (int i = 0; i < 100; i++) { + scheduler.scheduleNextTick(executed::incrementAndGet); + } + + assertDoesNotThrow(scheduler::processTick); + assertEquals(100, executed.get()); + } } diff --git a/src/test/java/net/minestom/server/utils/TestMojangUtils.java b/src/test/java/net/minestom/server/utils/TestMojangUtils.java index eee508bc3..5c730e22d 100644 --- a/src/test/java/net/minestom/server/utils/TestMojangUtils.java +++ b/src/test/java/net/minestom/server/utils/TestMojangUtils.java @@ -1,11 +1,18 @@ package net.minestom.server.utils; import net.minestom.server.utils.mojang.MojangUtils; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; +import java.io.IOException; +import java.util.UUID; + import static org.junit.jupiter.api.Assertions.*; public class TestMojangUtils { + private final UUID JEB_UUID = UUID.fromString("853c80ef-3c37-49fd-aa49-938b674adae6"); + + @Disabled @Test public void testValidNameWorks() { var result = MojangUtils.fromUsername("jeb_"); @@ -13,29 +20,60 @@ public class TestMojangUtils { assertEquals("jeb_", result.get("name").getAsString()); } + @Disabled @Test public void testInvalidNameReturnsNull() { var result = MojangUtils.fromUsername("jfdsa84vvcxadubasdfcvn"); // Longer than 16, always invalid assertNull(result); } + @Disabled @Test public void testValidUuidWorks() { - var result = MojangUtils.fromUuid("853c80ef3c3749fdaa49938b674adae6"); + var result = MojangUtils.fromUuid(JEB_UUID.toString()); assertNotNull(result); assertEquals("jeb_", result.get("name").getAsString()); assertEquals("853c80ef3c3749fdaa49938b674adae6", result.get("id").getAsString()); } + @Disabled @Test public void testInvalidUuidReturnsNull() { var result = MojangUtils.fromUuid("853c80ef3c3749fdaa49938b674adae6a"); // Longer than 32, always invalid assertNull(result); } + @Disabled @Test public void testNonExistentUuidReturnsNull() { var result = MojangUtils.fromUuid("00000000-0000-0000-0000-000000000000"); assertNull(result); } + + @Disabled + @Test + public void testValidUUIDWorks() { + var result = MojangUtils.fromUuid(JEB_UUID); + assertNotNull(result); + assertEquals("jeb_", result.get("name").getAsString()); + assertEquals("853c80ef3c3749fdaa49938b674adae6", result.get("id").getAsString()); + } + + @Disabled + @Test + public void testGetValidNameWorks() throws IOException { + assertEquals(JEB_UUID, MojangUtils.getUUID("jeb_")); + } + + @Disabled + @Test + public void testGetValidUUIDWorks() throws IOException { + assertEquals("jeb_", MojangUtils.getUsername(JEB_UUID)); + } + + @Disabled + @Test + public void testGetInvalidNameThrows() { + assertThrows(IOException.class, () -> MojangUtils.getUUID("a")); // Too short + } } diff --git a/src/test/resources/net/minestom/server/instance/lighting/region/r.0.0.mca b/src/test/resources/net/minestom/server/instance/lighting/region/r.0.0.mca index f93c1bc4c..d159e4019 100644 Binary files a/src/test/resources/net/minestom/server/instance/lighting/region/r.0.0.mca and b/src/test/resources/net/minestom/server/instance/lighting/region/r.0.0.mca differ diff --git a/testing/src/main/java/net/minestom/testing/TestConnectionImpl.java b/testing/src/main/java/net/minestom/testing/TestConnectionImpl.java index f6c27013e..9a55d1acf 100644 --- a/testing/src/main/java/net/minestom/testing/TestConnectionImpl.java +++ b/testing/src/main/java/net/minestom/testing/TestConnectionImpl.java @@ -8,7 +8,7 @@ import net.minestom.server.entity.Player; import net.minestom.server.event.player.AsyncPlayerConfigurationEvent; import net.minestom.server.instance.Instance; import net.minestom.server.network.ConnectionState; -import net.minestom.server.network.packet.server.ComponentHoldingServerPacket; +import net.minestom.server.network.packet.server.ServerPacket.ComponentHolding; import net.minestom.server.network.packet.server.SendablePacket; import net.minestom.server.network.packet.server.ServerPacket; import net.minestom.server.network.player.PlayerConnection; @@ -75,8 +75,8 @@ final class TestConnectionImpl implements TestConnection { final Player player = getPlayer(); if (player == null) return serverPacket; - if (MinestomAdventure.AUTOMATIC_COMPONENT_TRANSLATION && serverPacket instanceof ComponentHoldingServerPacket) { - serverPacket = ((ComponentHoldingServerPacket) serverPacket).copyWithOperator(component -> + if (MinestomAdventure.AUTOMATIC_COMPONENT_TRANSLATION && serverPacket instanceof ServerPacket.ComponentHolding) { + serverPacket = ((ServerPacket.ComponentHolding) serverPacket).copyWithOperator(component -> GlobalTranslator.render(component, Objects.requireNonNullElseGet(player.getLocale(), MinestomAdventure::getDefaultLocale))); }