From cb2165eb9365983b6df8250048bc9c68dd754ad6 Mon Sep 17 00:00:00 2001 From: Nassim Jahnke Date: Sun, 12 Feb 2023 11:44:25 +0100 Subject: [PATCH] Greatly reduce the number of (anonymous) inner classes Reduces code complexity, and much more importantly, reduces the number of classes loaded at runtime by *hundreds* --- .../java/us/myles/ViaVersion/api/Via.java | 5 +- .../java/us/myles/ViaVersion/api/ViaAPI.java | 5 +- .../api/protocol/ProtocolVersion.java | 5 +- .../com/viaversion/viaversion/api/ViaAPI.java | 3 +- .../viaversion/viaversion/api/ViaManager.java | 1 - .../viaversion/api/command/ViaSubCommand.java | 1 - .../api/command/ViaVersionCommand.java | 3 +- .../api/connection/ConnectionManager.java | 3 +- .../api/connection/ProtocolInfo.java | 3 +- .../api/connection/UserConnection.java | 3 +- .../viaversion/api/data/IntArrayMappings.java | 3 +- .../viaversion/api/data/MappingData.java | 3 +- .../viaversion/api/data/MappingDataBase.java | 3 +- .../api/data/MappingDataLoader.java | 3 +- .../viaversion/api/data/Mappings.java | 1 - .../api/legacy/bossbar/BossBar.java | 1 - .../api/minecraft/RegistryType.java | 3 +- .../api/minecraft/chunks/BaseChunk.java | 3 +- .../api/minecraft/chunks/Chunk.java | 3 +- .../api/minecraft/chunks/Chunk1_18.java | 3 +- .../minecraft/chunks/ChunkSectionImpl.java | 3 +- .../minecraft/entities/Entity1_10Types.java | 1 - .../minecraft/entities/Entity1_11Types.java | 1 - .../minecraft/entities/Entity1_12Types.java | 1 - .../minecraft/entities/Entity1_13Types.java | 1 - .../minecraft/entities/Entity1_19Types.java | 3 +- .../minecraft/entities/Entity1_19_3Types.java | 3 +- .../api/minecraft/item/DataItem.java | 3 +- .../api/minecraft/metadata/Metadata.java | 3 +- .../api/minecraft/nbt/BinaryTagIO.java | 4 +- .../api/minecraft/nbt/TagStringReader.java | 1 - .../api/minecraft/nbt/TagStringWriter.java | 2 +- .../viaversion/api/platform/ViaPlatform.java | 1 - .../api/platform/providers/ViaProviders.java | 3 +- .../api/protocol/AbstractProtocol.java | 49 +- .../viaversion/api/protocol/Protocol.java | 20 +- .../api/protocol/ProtocolManager.java | 16 +- .../api/protocol/ProtocolPipeline.java | 3 +- .../api/protocol/packet/PacketWrapper.java | 3 +- .../packet/VersionedPacketTransformer.java | 3 +- .../api/protocol/remapper/PacketHandlers.java | 4 + .../api/protocol/remapper/ValueWriter.java | 2 +- .../api/protocol/version/ProtocolVersion.java | 5 +- .../api/rewriter/EntityRewriter.java | 1 - .../viaversion/viaversion/api/type/Type.java | 1 - .../viaversion/api/type/types/ArrayType.java | 1 - .../viaversion/api/type/types/BitSetType.java | 1 - .../viaversion/api/type/types/Particle.java | 1 - .../viaversion/api/type/types/StringType.java | 1 - .../api/type/types/UUIDIntArrayType.java | 1 - .../viaversion/api/type/types/UUIDType.java | 1 - .../type/types/minecraft/MetaListType.java | 1 - .../types/minecraft/MetaListTypeTemplate.java | 1 - .../api/type/types/minecraft/NBTType.java | 1 - .../types/version/ChunkSectionType1_8.java | 1 - .../api/type/types/version/Types1_12.java | 1 - .../api/type/types/version/Types1_13.java | 1 - .../api/type/types/version/Types1_13_2.java | 1 - .../api/type/types/version/Types1_14.java | 1 - .../api/type/types/version/Types1_16.java | 1 - .../api/type/types/version/Types1_17.java | 1 - .../api/type/types/version/Types1_18.java | 1 - .../api/type/types/version/Types1_19.java | 1 - .../api/type/types/version/Types1_19_3.java | 1 - .../api/type/types/version/Types1_19_4.java | 2 - .../api/type/types/version/Types1_8.java | 1 - .../api/type/types/version/Types1_9.java | 1 - .../viaversion/util/ChatColorUtil.java | 1 - .../viaversion/util/EntityTypeUtil.java | 1 - .../viaversion/util/Int2IntBiMap.java | 3 +- .../com/viaversion/viaversion/util/Pair.java | 3 +- .../viaversion/util/PipelineUtil.java | 3 +- .../viaversion/viaversion/util/Triple.java | 3 +- .../kotlin/via.shadow-conventions.gradle.kts | 1 - .../bukkit/listeners/ViaBukkitListener.java | 4 +- .../protocol1_9to1_8/ArmorListener.java | 15 +- .../protocol1_9to1_8/DeathListener.java | 12 +- .../protocol1_9to1_8/HandItemCache.java | 9 +- .../protocol1_9to1_8/PaperPatch.java | 4 +- .../BukkitBlockConnectionProvider.java | 3 +- .../viaversion/ViaVersionPlugin.java | 11 +- .../bukkit/commands/BukkitCommandHandler.java | 3 +- .../bukkit/commands/BukkitCommandSender.java | 3 +- .../bukkit/compat/ProtocolSupportCompat.java | 3 +- .../ProtocolSupportConnectionListener.java | 3 +- .../handlers/BukkitChannelInitializer.java | 3 +- .../bukkit/handlers/BukkitDecodeHandler.java | 1 - .../bukkit/handlers/BukkitEncodeHandler.java | 1 - .../bukkit/listeners/JoinListener.java | 9 +- .../multiversion/PlayerSneakListener.java | 13 +- .../EntityToggleGlideListener.java | 3 +- .../bukkit/platform/BukkitViaAPI.java | 3 +- .../bukkit/platform/BukkitViaConfig.java | 3 +- .../bukkit/platform/BukkitViaInjector.java | 7 +- .../bukkit/platform/BukkitViaLoader.java | 9 +- .../bukkit/platform/PaperViaInjector.java | 3 +- .../BukkitInventoryQuickMoveProvider.java | 11 +- .../BukkitViaMovementTransmitter.java | 5 +- .../BukkitInventoryUpdateTask.java | 5 +- .../bukkit/util/ProtocolSupportUtil.java | 3 +- bukkit/src/main/resources/plugin.yml | 8 +- .../viaversion/viaversion/BungeePlugin.java | 11 +- .../bungee/commands/BungeeCommandSender.java | 3 +- .../handlers/BungeeChannelInitializer.java | 1 - .../bungee/handlers/BungeeDecodeHandler.java | 1 - .../bungee/handlers/BungeeEncodeHandler.java | 1 - .../bungee/handlers/BungeeServerHandler.java | 17 +- .../bungee/listeners/ElytraPatch.java | 3 +- .../bungee/platform/BungeeViaConfig.java | 1 - .../bungee/platform/BungeeViaInjector.java | 3 +- .../bungee/platform/BungeeViaLoader.java | 7 +- .../providers/BungeeBossBarProvider.java | 1 - .../providers/BungeeEntityIdProvider.java | 3 +- .../providers/BungeeMainHandProvider.java | 5 +- .../providers/BungeeVersionProvider.java | 3 +- .../service/ProtocolDetectorService.java | 5 +- .../bungee/storage/BungeeStorage.java | 3 +- .../bungee/util/BungeePipelineUtil.java | 1 - .../com/viaversion/viaversion/ViaAPIBase.java | 3 +- .../viaversion/viaversion/ViaListener.java | 3 +- .../viaversion/viaversion/ViaManagerImpl.java | 1 - .../commands/ViaCommandHandler.java | 1 - .../commands/defaultsubs/DebugSubCmd.java | 1 - .../commands/defaultsubs/DumpSubCmd.java | 1 - .../commands/defaultsubs/ListSubCmd.java | 1 - .../commands/defaultsubs/PPSSubCmd.java | 1 - .../configuration/AbstractViaConfig.java | 3 +- .../connection/ConnectionManagerImpl.java | 3 +- .../connection/ProtocolInfoImpl.java | 1 - .../connection/UserConnectionImpl.java | 3 +- .../data/entity/EntityTrackerBase.java | 2 +- .../data/entity/StoredEntityDataImpl.java | 3 +- .../data/entity/TrackedEntityImpl.java | 2 +- .../viaversion/debug/DebugHandlerImpl.java | 1 - .../ChannelHandlerContextWrapper.java | 1 - .../viaversion/legacy/bossbar/CommonBoss.java | 1 - .../AbstractProtocolDetectorService.java | 1 - .../platform/LegacyViaInjector.java | 3 +- .../protocol/ProtocolManagerImpl.java | 15 +- .../protocol/ProtocolPipelineImpl.java | 3 +- .../protocol/packet/PacketWrapperImpl.java | 3 +- .../VersionedPacketTransformerImpl.java | 3 +- .../protocols/base/BaseProtocol.java | 91 +- .../protocols/base/BaseProtocol1_16.java | 1 - .../protocols/base/BaseProtocol1_7.java | 195 ++--- .../Protocol1_10To1_9_3_4.java | 79 +- .../Protocol1_11To1_10.java | 140 ++- .../metadata/MetadataRewriter1_11To1_10.java | 1 - .../packets/InventoryPackets.java | 31 +- .../ChatItemRewriter.java | 1 - .../Protocol1_12To1_11_1.java | 109 +-- .../data/AchievementTranslationMapping.java | 1 - .../MetadataRewriter1_12To1_11_1.java | 1 - .../packets/InventoryPackets.java | 76 +- .../Protocol1_13_1To1_13.java | 58 +- .../MetadataRewriter1_13_1To1_13.java | 1 - .../packets/EntityPackets.java | 25 +- .../packets/InventoryPackets.java | 60 +- .../packets/WorldPackets.java | 58 +- .../Protocol1_13_2To1_13_1.java | 66 +- .../packets/InventoryPackets.java | 101 +-- .../packets/WorldPackets.java | 13 +- .../Protocol1_13To1_12_2.java | 816 ++++++++---------- .../AbstractFenceConnectionHandler.java | 1 - .../AbstractStempConnectionHandler.java | 2 - .../blockconnections/BlockData.java | 1 - .../ChestConnectionHandler.java | 1 - .../ChorusPlantConnectionHandler.java | 1 - .../blockconnections/ConnectionData.java | 1 - .../DoorConnectionHandler.java | 1 - .../FireConnectionHandler.java | 1 - .../FlowerConnectionHandler.java | 1 - .../GlassConnectionHandler.java | 1 - .../RedstoneConnectionHandler.java | 1 - .../SnowyGrassConnectionHandler.java | 1 - .../StairConnectionHandler.java | 1 - .../TripwireConnectionHandler.java | 1 - .../VineConnectionHandler.java | 1 - .../WallConnectionHandler.java | 1 - .../blockconnections/WrappedBlockData.java | 1 - .../data/BlockIdData.java | 1 - .../data/ComponentRewriter1_13.java | 1 - .../data/MappingData.java | 3 +- .../data/ParticleRewriter.java | 1 - .../protocol1_13to1_12_2/data/RecipeData.java | 1 - .../data/SpawnEggRewriter.java | 1 - .../MetadataRewriter1_13To1_12_2.java | 1 - .../packets/EntityPackets.java | 69 +- .../packets/InventoryPackets.java | 224 +++-- .../packets/WorldPackets.java | 354 ++++---- .../providers/BlockEntityProvider.java | 1 - .../providers/PaintingProvider.java | 1 - .../blockentities/FlowerPotHandler.java | 1 - .../storage/BlockStorage.java | 3 +- .../types/Chunk1_13Type.java | 1 - .../MetadataRewriter1_14_1To1_14.java | 1 - .../Protocol1_14_3To1_14_2.java | 49 +- .../Protocol1_14_4To1_14_3.java | 43 +- .../Protocol1_14To1_13_2.java | 115 ++- .../data/MappingData.java | 1 - .../MetadataRewriter1_14To1_13_2.java | 1 - .../packets/EntityPackets.java | 153 ++-- .../packets/InventoryPackets.java | 277 +++--- .../packets/PlayerPackets.java | 111 +-- .../packets/WorldPackets.java | 336 ++++---- .../types/Chunk1_14Type.java | 1 - .../Protocol1_15To1_14_4.java | 8 +- .../packets/EntityPackets.java | 1 - .../packets/WorldPackets.java | 95 +- .../types/Chunk1_15Type.java | 1 - .../Protocol1_16_2To1_16_1.java | 45 +- .../data/MappingData.java | 1 - .../MetadataRewriter1_16_2To1_16_1.java | 1 - .../packets/EntityPackets.java | 11 +- .../packets/InventoryPackets.java | 35 +- .../packets/WorldPackets.java | 93 +- .../types/Chunk1_16_2Type.java | 1 - .../Protocol1_16To1_15_2.java | 120 ++- .../MetadataRewriter1_16To1_15_2.java | 1 - .../packets/EntityPackets.java | 140 ++- .../packets/InventoryPackets.java | 23 +- .../packets/WorldPackets.java | 72 +- .../types/Chunk1_16Type.java | 1 - .../Protocol1_17_1To1_17.java | 90 +- .../Protocol1_17To1_16_4.java | 154 ++-- .../packets/EntityPackets.java | 77 +- .../packets/InventoryPackets.java | 71 +- .../packets/WorldPackets.java | 115 ++- .../types/Chunk1_17Type.java | 1 - .../Protocol1_18_2To1_18.java | 7 +- .../protocol1_18to1_17_1/BlockEntityIds.java | 1 - .../packets/WorldPackets.java | 279 +++--- .../storage/ChunkLightStorage.java | 3 +- .../types/Chunk1_18Type.java | 1 - .../Protocol1_19_1To1_19.java | 3 +- .../storage/NonceStorage.java | 2 +- .../Protocol1_19_3To1_19_1.java | 13 +- .../packets/EntityPackets.java | 104 ++- .../packets/InventoryPackets.java | 129 ++- .../storage/ReceivedMessagesStorage.java | 1 - .../packets/EntityPackets.java | 35 +- .../Protocol1_19To1_18_2.java | 71 +- .../data/MappingData.java | 3 +- .../packets/EntityPackets.java | 74 +- .../packets/WorldPackets.java | 63 +- .../storage/DimensionRegistryStorage.java | 3 +- .../Protocol1_9_1_2To1_9_3_4.java | 73 +- .../chunks/BlockEntity.java | 1 - .../types/Chunk1_9_3_4Type.java | 1 - .../Protocol1_9_1To1_9.java | 13 +- .../Protocol1_9_3To1_9_1_2.java | 128 ++- .../types/Chunk1_9_1_2Type.java | 2 - .../protocol1_9to1_8/ItemRewriter.java | 1 - .../protocol1_9to1_8/Protocol1_9To1_8.java | 18 +- .../protocol1_9to1_8/metadata/MetaIndex.java | 3 +- .../metadata/MetadataRewriter1_9To1_8.java | 1 - .../packets/EntityPackets.java | 257 +++--- .../packets/InventoryPackets.java | 404 ++++----- .../packets/PlayerPackets.java | 26 +- .../packets/SpawnPackets.java | 299 +++---- .../packets/WorldPackets.java | 523 +++++------ .../providers/BossBarProvider.java | 1 - .../providers/CommandBlockProvider.java | 1 - .../providers/CompressionProvider.java | 1 - .../storage/ClientChunks.java | 1 - .../storage/CommandBlockStorage.java | 1 - .../storage/EntityTracker1_9.java | 10 +- .../storage/InventoryTracker.java | 1 - .../protocol1_9to1_8/types/Chunk1_8Type.java | 4 +- .../types/ChunkBulk1_8Type.java | 3 +- .../Protocol1_9To1_9_1.java | 17 +- .../viaversion/rewriter/BlockRewriter.java | 50 +- .../viaversion/rewriter/CommandRewriter.java | 115 ++- .../rewriter/ComponentRewriter.java | 35 +- .../viaversion/rewriter/EntityRewriter.java | 40 +- .../viaversion/rewriter/ItemRewriter.java | 142 ++- .../viaversion/rewriter/RecipeRewriter.java | 21 +- .../viaversion/rewriter/SoundRewriter.java | 33 +- .../rewriter/StatisticsRewriter.java | 64 +- .../viaversion/rewriter/TagRewriter.java | 18 +- .../viaversion/rewriter/meta/MetaFilter.java | 3 +- .../rewriter/meta/MetaHandlerEvent.java | 3 +- .../rewriter/meta/MetaHandlerEventImpl.java | 3 +- .../unsupported/UnsupportedPlugin.java | 1 - .../UnsupportedServerSoftware.java | 1 - .../viaversion/update/UpdateUtil.java | 4 +- .../viaversion/viaversion/update/Version.java | 1 - .../viaversion/util/CipherUtil.java | 2 +- .../viaversion/util/CommentStore.java | 1 - .../viaversion/viaversion/util/Config.java | 14 +- .../viaversion/util/SetWrapper.java | 3 +- .../util/SynchronizedListWrapper.java | 3 +- .../viaversion/util/YamlConstructor.java | 3 +- .../common/dummy/DummyInitializer.java | 7 + .../viaversion/common/dummy/TestConfig.java | 1 - .../viaversion/common/dummy/TestPlatform.java | 1 - .../common/entities/EntityTypesTest.java | 5 +- .../viaversion/common/nbt/NBTTagTest.java | 4 +- .../common/protocol/ProtocolVersionTest.java | 2 +- .../remapper/ProtocolHandlersTest.java | 72 ++ .../viaversion/common/type/ItemTypeTest.java | 2 +- .../common/type/StringTypeTest.java | 2 +- .../compatibility/ForcefulFieldModifier.java | 4 +- .../UnsafeBackedForcefulFieldModifier.java | 1 - .../viaversion/viaversion/SpongePlugin.java | 17 +- .../sponge/commands/SpongeCommandHandler.java | 7 +- .../sponge/commands/SpongeCommandSender.java | 3 +- .../sponge/commands/SpongePlayer.java | 3 +- .../handlers/SpongeChannelInitializer.java | 1 - .../sponge/handlers/SpongeDecodeHandler.java | 1 - .../sponge/handlers/SpongeEncodeHandler.java | 1 - .../sponge/listeners/ViaSpongeListener.java | 3 +- .../sponge/platform/SpongeViaConfig.java | 1 - .../sponge/platform/SpongeViaLoader.java | 3 +- .../viaversion/sponge/util/LoggerWrapper.java | 3 +- .../viaversion/viaversion/VelocityPlugin.java | 5 +- .../command/VelocityCommandHandler.java | 1 - .../command/VelocityCommandSender.java | 1 - .../handlers/VelocityChannelInitializer.java | 1 - .../handlers/VelocityDecodeHandler.java | 1 - .../handlers/VelocityEncodeHandler.java | 1 - .../velocity/platform/VelocityViaConfig.java | 1 - .../platform/VelocityViaInjector.java | 1 - .../providers/VelocityBossBarProvider.java | 1 - .../providers/VelocityVersionProvider.java | 1 - .../service/ProtocolDetectorService.java | 1 - .../velocity/storage/VelocityStorage.java | 1 - .../velocity/util/LoggerWrapper.java | 3 +- 328 files changed, 3735 insertions(+), 4939 deletions(-) create mode 100644 common/src/test/java/com/viaversion/viaversion/common/protocol/remapper/ProtocolHandlersTest.java diff --git a/api-legacy/src/main/java/us/myles/ViaVersion/api/Via.java b/api-legacy/src/main/java/us/myles/ViaVersion/api/Via.java index 8bf8c0a63..4972569bf 100644 --- a/api-legacy/src/main/java/us/myles/ViaVersion/api/Via.java +++ b/api-legacy/src/main/java/us/myles/ViaVersion/api/Via.java @@ -23,13 +23,12 @@ package us.myles.ViaVersion.api; import io.netty.buffer.ByteBuf; +import java.util.SortedSet; +import java.util.UUID; import us.myles.ViaVersion.api.boss.BossBar; import us.myles.ViaVersion.api.boss.BossColor; import us.myles.ViaVersion.api.boss.BossStyle; -import java.util.SortedSet; -import java.util.UUID; - /** * @deprecated may be removed at some point, use {@link com.viaversion.viaversion.api.Via} */ diff --git a/api-legacy/src/main/java/us/myles/ViaVersion/api/ViaAPI.java b/api-legacy/src/main/java/us/myles/ViaVersion/api/ViaAPI.java index 7e7c2d27b..a055440c9 100644 --- a/api-legacy/src/main/java/us/myles/ViaVersion/api/ViaAPI.java +++ b/api-legacy/src/main/java/us/myles/ViaVersion/api/ViaAPI.java @@ -24,13 +24,12 @@ package us.myles.ViaVersion.api; import com.viaversion.viaversion.api.Via; import io.netty.buffer.ByteBuf; +import java.util.SortedSet; +import java.util.UUID; import us.myles.ViaVersion.api.boss.BossBar; import us.myles.ViaVersion.api.boss.BossColor; import us.myles.ViaVersion.api.boss.BossStyle; -import java.util.SortedSet; -import java.util.UUID; - /** * @deprecated may be removed at some point, use {@link Via#getAPI()} */ diff --git a/api-legacy/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java b/api-legacy/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java index bc418dc0d..52667c0b6 100644 --- a/api-legacy/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java +++ b/api-legacy/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java @@ -26,14 +26,13 @@ import com.google.common.base.Preconditions; import com.viaversion.viaversion.api.protocol.version.VersionRange; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; -import org.checkerframework.checker.nullness.qual.NonNull; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.ArrayList; import java.util.Collections; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; /** * @deprecated will no longer be updated and may be removed at some point, use {@link com.viaversion.viaversion.api.protocol.version.ProtocolVersion} diff --git a/api/src/main/java/com/viaversion/viaversion/api/ViaAPI.java b/api/src/main/java/com/viaversion/viaversion/api/ViaAPI.java index 2330ca82f..9e3d64622 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/ViaAPI.java +++ b/api/src/main/java/com/viaversion/viaversion/api/ViaAPI.java @@ -29,10 +29,9 @@ import com.viaversion.viaversion.api.platform.ViaPlatform; import com.viaversion.viaversion.api.protocol.ProtocolManager; import com.viaversion.viaversion.api.protocol.version.ServerProtocolVersion; import io.netty.buffer.ByteBuf; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.SortedSet; import java.util.UUID; +import org.checkerframework.checker.nullness.qual.Nullable; /** * General api point. For more specialized api methods, see {@link Via#getManager()}. diff --git a/api/src/main/java/com/viaversion/viaversion/api/ViaManager.java b/api/src/main/java/com/viaversion/viaversion/api/ViaManager.java index f1a663cc1..af8d1b792 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/ViaManager.java +++ b/api/src/main/java/com/viaversion/viaversion/api/ViaManager.java @@ -30,7 +30,6 @@ import com.viaversion.viaversion.api.platform.ViaPlatform; import com.viaversion.viaversion.api.platform.ViaPlatformLoader; import com.viaversion.viaversion.api.platform.providers.ViaProviders; import com.viaversion.viaversion.api.protocol.ProtocolManager; - import java.util.Set; public interface ViaManager { diff --git a/api/src/main/java/com/viaversion/viaversion/api/command/ViaSubCommand.java b/api/src/main/java/com/viaversion/viaversion/api/command/ViaSubCommand.java index 4f4b8bc40..58d46fa65 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/command/ViaSubCommand.java +++ b/api/src/main/java/com/viaversion/viaversion/api/command/ViaSubCommand.java @@ -23,7 +23,6 @@ package com.viaversion.viaversion.api.command; import com.viaversion.viaversion.util.ChatColorUtil; - import java.util.Collections; import java.util.List; diff --git a/api/src/main/java/com/viaversion/viaversion/api/command/ViaVersionCommand.java b/api/src/main/java/com/viaversion/viaversion/api/command/ViaVersionCommand.java index 7607728ad..3afba2be0 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/command/ViaVersionCommand.java +++ b/api/src/main/java/com/viaversion/viaversion/api/command/ViaVersionCommand.java @@ -22,9 +22,8 @@ */ package com.viaversion.viaversion.api.command; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.List; +import org.checkerframework.checker.nullness.qual.Nullable; public interface ViaVersionCommand { /** diff --git a/api/src/main/java/com/viaversion/viaversion/api/connection/ConnectionManager.java b/api/src/main/java/com/viaversion/viaversion/api/connection/ConnectionManager.java index c43b25beb..6a252c82b 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/connection/ConnectionManager.java +++ b/api/src/main/java/com/viaversion/viaversion/api/connection/ConnectionManager.java @@ -22,11 +22,10 @@ */ package com.viaversion.viaversion.api.connection; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.Map; import java.util.Set; import java.util.UUID; +import org.checkerframework.checker.nullness.qual.Nullable; /** * Handles injected UserConnections diff --git a/api/src/main/java/com/viaversion/viaversion/api/connection/ProtocolInfo.java b/api/src/main/java/com/viaversion/viaversion/api/connection/ProtocolInfo.java index a7210338a..5aa83a46c 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/connection/ProtocolInfo.java +++ b/api/src/main/java/com/viaversion/viaversion/api/connection/ProtocolInfo.java @@ -24,9 +24,8 @@ package com.viaversion.viaversion.api.connection; import com.viaversion.viaversion.api.protocol.ProtocolPipeline; import com.viaversion.viaversion.api.protocol.packet.State; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.UUID; +import org.checkerframework.checker.nullness.qual.Nullable; public interface ProtocolInfo { diff --git a/api/src/main/java/com/viaversion/viaversion/api/connection/UserConnection.java b/api/src/main/java/com/viaversion/viaversion/api/connection/UserConnection.java index e5ffa8013..1c3bc6e7c 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/connection/UserConnection.java +++ b/api/src/main/java/com/viaversion/viaversion/api/connection/UserConnection.java @@ -32,12 +32,11 @@ import com.viaversion.viaversion.exception.InformativeException; import io.netty.buffer.ByteBuf; import io.netty.channel.Channel; import io.netty.channel.ChannelFuture; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.Collection; import java.util.Map; import java.util.UUID; import java.util.function.Function; +import org.checkerframework.checker.nullness.qual.Nullable; public interface UserConnection { diff --git a/api/src/main/java/com/viaversion/viaversion/api/data/IntArrayMappings.java b/api/src/main/java/com/viaversion/viaversion/api/data/IntArrayMappings.java index 9cc32a480..01ed8a009 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/data/IntArrayMappings.java +++ b/api/src/main/java/com/viaversion/viaversion/api/data/IntArrayMappings.java @@ -24,9 +24,8 @@ package com.viaversion.viaversion.api.data; import com.google.gson.JsonArray; import com.google.gson.JsonObject; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.Arrays; +import org.checkerframework.checker.nullness.qual.Nullable; public class IntArrayMappings implements Mappings { private final int[] oldToNew; diff --git a/api/src/main/java/com/viaversion/viaversion/api/data/MappingData.java b/api/src/main/java/com/viaversion/viaversion/api/data/MappingData.java index d772e1528..f91ee560d 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/data/MappingData.java +++ b/api/src/main/java/com/viaversion/viaversion/api/data/MappingData.java @@ -25,9 +25,8 @@ package com.viaversion.viaversion.api.data; import com.viaversion.viaversion.api.minecraft.RegistryType; import com.viaversion.viaversion.api.minecraft.TagData; import com.viaversion.viaversion.util.Int2IntBiMap; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.List; +import org.checkerframework.checker.nullness.qual.Nullable; public interface MappingData { diff --git a/api/src/main/java/com/viaversion/viaversion/api/data/MappingDataBase.java b/api/src/main/java/com/viaversion/viaversion/api/data/MappingDataBase.java index b8765ce5a..1d33d37c2 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/data/MappingDataBase.java +++ b/api/src/main/java/com/viaversion/viaversion/api/data/MappingDataBase.java @@ -31,13 +31,12 @@ import com.viaversion.viaversion.api.minecraft.TagData; import com.viaversion.viaversion.util.Int2IntBiHashMap; import com.viaversion.viaversion.util.Int2IntBiMap; import it.unimi.dsi.fastutil.objects.Object2IntMap; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.ArrayList; import java.util.EnumMap; import java.util.List; import java.util.Map; import java.util.logging.Logger; +import org.checkerframework.checker.nullness.qual.Nullable; public class MappingDataBase implements MappingData { protected final String oldVersion; diff --git a/api/src/main/java/com/viaversion/viaversion/api/data/MappingDataLoader.java b/api/src/main/java/com/viaversion/viaversion/api/data/MappingDataLoader.java index df2ed720b..49e5876f8 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/data/MappingDataLoader.java +++ b/api/src/main/java/com/viaversion/viaversion/api/data/MappingDataLoader.java @@ -32,8 +32,6 @@ import com.viaversion.viaversion.util.GsonUtil; import com.viaversion.viaversion.util.Int2IntBiMap; import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.io.File; import java.io.FileReader; import java.io.IOException; @@ -41,6 +39,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import org.checkerframework.checker.nullness.qual.Nullable; public class MappingDataLoader { diff --git a/api/src/main/java/com/viaversion/viaversion/api/data/Mappings.java b/api/src/main/java/com/viaversion/viaversion/api/data/Mappings.java index 9930be7a8..25fe5191d 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/data/Mappings.java +++ b/api/src/main/java/com/viaversion/viaversion/api/data/Mappings.java @@ -25,7 +25,6 @@ package com.viaversion.viaversion.api.data; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; - import java.util.Arrays; public interface Mappings { diff --git a/api/src/main/java/com/viaversion/viaversion/api/legacy/bossbar/BossBar.java b/api/src/main/java/com/viaversion/viaversion/api/legacy/bossbar/BossBar.java index 654ccbc75..b06976132 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/legacy/bossbar/BossBar.java +++ b/api/src/main/java/com/viaversion/viaversion/api/legacy/bossbar/BossBar.java @@ -23,7 +23,6 @@ package com.viaversion.viaversion.api.legacy.bossbar; import com.viaversion.viaversion.api.connection.UserConnection; - import java.util.Set; import java.util.UUID; diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/RegistryType.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/RegistryType.java index abaf8ddbd..98a809198 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/RegistryType.java +++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/RegistryType.java @@ -22,10 +22,9 @@ */ package com.viaversion.viaversion.api.minecraft; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.HashMap; import java.util.Map; +import org.checkerframework.checker.nullness.qual.Nullable; public enum RegistryType { diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/BaseChunk.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/BaseChunk.java index e49fd3e87..326b7961d 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/BaseChunk.java +++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/BaseChunk.java @@ -24,10 +24,9 @@ package com.viaversion.viaversion.api.minecraft.chunks; import com.github.steveice10.opennbt.tag.builtin.CompoundTag; import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntity; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.BitSet; import java.util.List; +import org.checkerframework.checker.nullness.qual.Nullable; //TODO Move methods from distinctly different versions to different objects/interfaces public class BaseChunk implements Chunk { diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/Chunk.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/Chunk.java index 6bd8bce58..019f284df 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/Chunk.java +++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/Chunk.java @@ -24,10 +24,9 @@ package com.viaversion.viaversion.api.minecraft.chunks; import com.github.steveice10.opennbt.tag.builtin.CompoundTag; import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntity; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.BitSet; import java.util.List; +import org.checkerframework.checker.nullness.qual.Nullable; // TODO specialized sub interfaces public interface Chunk { diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/Chunk1_18.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/Chunk1_18.java index eaf0abcad..68e40325e 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/Chunk1_18.java +++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/Chunk1_18.java @@ -24,10 +24,9 @@ package com.viaversion.viaversion.api.minecraft.chunks; import com.github.steveice10.opennbt.tag.builtin.CompoundTag; import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntity; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.BitSet; import java.util.List; +import org.checkerframework.checker.nullness.qual.Nullable; public class Chunk1_18 implements Chunk { protected final int x; diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/ChunkSectionImpl.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/ChunkSectionImpl.java index b903337aa..dc961f24b 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/ChunkSectionImpl.java +++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/chunks/ChunkSectionImpl.java @@ -22,9 +22,8 @@ */ package com.viaversion.viaversion.api.minecraft.chunks; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.EnumMap; +import org.checkerframework.checker.nullness.qual.Nullable; public class ChunkSectionImpl implements ChunkSection { diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_10Types.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_10Types.java index e96b3057e..448d00211 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_10Types.java +++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_10Types.java @@ -23,7 +23,6 @@ package com.viaversion.viaversion.api.minecraft.entities; import com.viaversion.viaversion.api.Via; - import java.util.HashMap; import java.util.Map; import java.util.Optional; diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_11Types.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_11Types.java index 719b7d1f3..a14475952 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_11Types.java +++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_11Types.java @@ -23,7 +23,6 @@ package com.viaversion.viaversion.api.minecraft.entities; import com.viaversion.viaversion.api.Via; - import java.util.HashMap; import java.util.Map; import java.util.Optional; diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_12Types.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_12Types.java index 779b55466..7ec94306a 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_12Types.java +++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_12Types.java @@ -24,7 +24,6 @@ package com.viaversion.viaversion.api.minecraft.entities; import com.viaversion.viaversion.api.Via; - import java.util.HashMap; import java.util.Map; import java.util.Optional; diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_13Types.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_13Types.java index 2f6147d99..bff92e112 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_13Types.java +++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_13Types.java @@ -23,7 +23,6 @@ package com.viaversion.viaversion.api.minecraft.entities; import com.viaversion.viaversion.api.Via; - import java.util.HashMap; import java.util.Map; import java.util.Optional; diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_19Types.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_19Types.java index 536536c16..dbb0b04a1 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_19Types.java +++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_19Types.java @@ -25,9 +25,8 @@ package com.viaversion.viaversion.api.minecraft.entities; import com.google.common.base.Preconditions; import com.viaversion.viaversion.api.protocol.Protocol; import com.viaversion.viaversion.util.EntityTypeUtil; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.Locale; +import org.checkerframework.checker.nullness.qual.Nullable; public enum Entity1_19Types implements EntityType { diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_19_3Types.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_19_3Types.java index bf4c9baa1..dbdd5f503 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_19_3Types.java +++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/entities/Entity1_19_3Types.java @@ -25,9 +25,8 @@ package com.viaversion.viaversion.api.minecraft.entities; import com.google.common.base.Preconditions; import com.viaversion.viaversion.api.protocol.Protocol; import com.viaversion.viaversion.util.EntityTypeUtil; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.Locale; +import org.checkerframework.checker.nullness.qual.Nullable; public enum Entity1_19_3Types implements EntityType { diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/item/DataItem.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/item/DataItem.java index 7bbc21406..206635193 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/item/DataItem.java +++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/item/DataItem.java @@ -24,9 +24,8 @@ package com.viaversion.viaversion.api.minecraft.item; import com.github.steveice10.opennbt.tag.builtin.CompoundTag; import com.google.gson.annotations.SerializedName; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.Objects; +import org.checkerframework.checker.nullness.qual.Nullable; public class DataItem implements Item { @SerializedName(value = "identifier", alternate = "id") diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/metadata/Metadata.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/metadata/Metadata.java index 487db8501..dda552acb 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/metadata/Metadata.java +++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/metadata/Metadata.java @@ -23,9 +23,8 @@ package com.viaversion.viaversion.api.minecraft.metadata; import com.google.common.base.Preconditions; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.Objects; +import org.checkerframework.checker.nullness.qual.Nullable; public final class Metadata { private int id; diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/nbt/BinaryTagIO.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/nbt/BinaryTagIO.java index d7a755cb3..390518dee 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/nbt/BinaryTagIO.java +++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/nbt/BinaryTagIO.java @@ -24,8 +24,6 @@ package com.viaversion.viaversion.api.minecraft.nbt; import com.github.steveice10.opennbt.tag.builtin.CompoundTag; -import org.checkerframework.checker.nullness.qual.NonNull; - import java.io.BufferedInputStream; import java.io.DataInput; import java.io.DataInputStream; @@ -38,11 +36,13 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; +import org.checkerframework.checker.nullness.qual.NonNull; // Specific Via changes: // - Use OpenNBT tags // - Added readString/writeString methods from TagStringIO // - Has not been updated for the sake of keeping the class simple + /** * Serialization operations for binary tags. */ diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/nbt/TagStringReader.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/nbt/TagStringReader.java index 3c3938d33..492a8ab92 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/nbt/TagStringReader.java +++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/nbt/TagStringReader.java @@ -39,7 +39,6 @@ import com.github.steveice10.opennbt.tag.builtin.StringTag; import com.github.steveice10.opennbt.tag.builtin.Tag; import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.ints.IntList; - import java.util.stream.IntStream; import java.util.stream.LongStream; diff --git a/api/src/main/java/com/viaversion/viaversion/api/minecraft/nbt/TagStringWriter.java b/api/src/main/java/com/viaversion/viaversion/api/minecraft/nbt/TagStringWriter.java index 57706fc78..889ce63c2 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/minecraft/nbt/TagStringWriter.java +++ b/api/src/main/java/com/viaversion/viaversion/api/minecraft/nbt/TagStringWriter.java @@ -37,7 +37,6 @@ import com.github.steveice10.opennbt.tag.builtin.NumberTag; import com.github.steveice10.opennbt.tag.builtin.ShortTag; import com.github.steveice10.opennbt.tag.builtin.StringTag; import com.github.steveice10.opennbt.tag.builtin.Tag; - import java.io.IOException; import java.io.Writer; import java.util.Map; @@ -45,6 +44,7 @@ import java.util.Map; // Specific Via changes: // - Use OpenNBT tags // - Has not been updated to support pretty printing and legacy writing since that is not needed + /** * An emitter for the SNBT format. * diff --git a/api/src/main/java/com/viaversion/viaversion/api/platform/ViaPlatform.java b/api/src/main/java/com/viaversion/viaversion/api/platform/ViaPlatform.java index 074a7dca4..18955664f 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/platform/ViaPlatform.java +++ b/api/src/main/java/com/viaversion/viaversion/api/platform/ViaPlatform.java @@ -28,7 +28,6 @@ import com.viaversion.viaversion.api.command.ViaCommandSender; import com.viaversion.viaversion.api.configuration.ConfigurationProvider; import com.viaversion.viaversion.api.configuration.ViaVersionConfig; import com.viaversion.viaversion.api.connection.UserConnection; - import java.io.File; import java.util.Collection; import java.util.Collections; diff --git a/api/src/main/java/com/viaversion/viaversion/api/platform/providers/ViaProviders.java b/api/src/main/java/com/viaversion/viaversion/api/platform/providers/ViaProviders.java index 485c5ee1b..95da175d9 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/platform/providers/ViaProviders.java +++ b/api/src/main/java/com/viaversion/viaversion/api/platform/providers/ViaProviders.java @@ -22,12 +22,11 @@ */ package com.viaversion.viaversion.api.platform.providers; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import org.checkerframework.checker.nullness.qual.Nullable; public class ViaProviders { private final Map, Provider> providers = new HashMap<>(); diff --git a/api/src/main/java/com/viaversion/viaversion/api/protocol/AbstractProtocol.java b/api/src/main/java/com/viaversion/viaversion/api/protocol/AbstractProtocol.java index f3d943011..083880a73 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/protocol/AbstractProtocol.java +++ b/api/src/main/java/com/viaversion/viaversion/api/protocol/AbstractProtocol.java @@ -33,7 +33,6 @@ import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; import com.viaversion.viaversion.api.protocol.packet.State; import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.exception.CancelException; import com.viaversion.viaversion.exception.InformativeException; import java.util.Arrays; @@ -168,12 +167,7 @@ public abstract class AbstractProtocol packetMap, PacketType packetType, @Nullable PacketType mappedPacketType, @@ -513,5 +492,25 @@ public abstract class AbstractProtocol { private static ViaVersionPlugin instance; diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/commands/BukkitCommandHandler.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/commands/BukkitCommandHandler.java index e81a68a6a..c304ab5b0 100644 --- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/commands/BukkitCommandHandler.java +++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/commands/BukkitCommandHandler.java @@ -18,13 +18,12 @@ package com.viaversion.viaversion.bukkit.commands; import com.viaversion.viaversion.commands.ViaCommandHandler; +import java.util.List; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.command.TabExecutor; -import java.util.List; - public class BukkitCommandHandler extends ViaCommandHandler implements CommandExecutor, TabExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/commands/BukkitCommandSender.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/commands/BukkitCommandSender.java index d0b920b5b..fbc429ef3 100644 --- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/commands/BukkitCommandSender.java +++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/commands/BukkitCommandSender.java @@ -18,11 +18,10 @@ package com.viaversion.viaversion.bukkit.commands; import com.viaversion.viaversion.api.command.ViaCommandSender; +import java.util.UUID; import org.bukkit.command.CommandSender; import org.bukkit.entity.Entity; -import java.util.UUID; - public class BukkitCommandSender implements ViaCommandSender { private final CommandSender sender; diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/compat/ProtocolSupportCompat.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/compat/ProtocolSupportCompat.java index 45fc7dbc1..327203a3c 100644 --- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/compat/ProtocolSupportCompat.java +++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/compat/ProtocolSupportCompat.java @@ -20,13 +20,12 @@ package com.viaversion.viaversion.bukkit.compat; import com.viaversion.viaversion.ViaVersionPlugin; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.bukkit.util.NMSUtil; +import java.util.logging.Level; import org.bukkit.Bukkit; import org.bukkit.event.Event; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; -import java.util.logging.Level; - public final class ProtocolSupportCompat { public static void registerPSConnectListener(ViaVersionPlugin plugin) { diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/compat/ProtocolSupportConnectionListener.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/compat/ProtocolSupportConnectionListener.java index a0e27451f..822eb8806 100644 --- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/compat/ProtocolSupportConnectionListener.java +++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/compat/ProtocolSupportConnectionListener.java @@ -19,9 +19,8 @@ package com.viaversion.viaversion.bukkit.compat; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.bukkit.util.NMSUtil; -import protocolsupport.api.Connection; - import java.lang.reflect.Method; +import protocolsupport.api.Connection; final class ProtocolSupportConnectionListener extends Connection.PacketListener { diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/handlers/BukkitChannelInitializer.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/handlers/BukkitChannelInitializer.java index dc66edf76..91ca21c3f 100644 --- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/handlers/BukkitChannelInitializer.java +++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/handlers/BukkitChannelInitializer.java @@ -25,9 +25,8 @@ import com.viaversion.viaversion.protocol.ProtocolPipelineImpl; import io.netty.channel.Channel; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelPipeline; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.lang.reflect.Method; +import org.checkerframework.checker.nullness.qual.Nullable; public final class BukkitChannelInitializer extends ChannelInitializer implements WrappedChannelInitializer { diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/handlers/BukkitDecodeHandler.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/handlers/BukkitDecodeHandler.java index ea5586db2..51ea96b09 100644 --- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/handlers/BukkitDecodeHandler.java +++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/handlers/BukkitDecodeHandler.java @@ -28,7 +28,6 @@ import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelPipeline; import io.netty.handler.codec.MessageToMessageDecoder; - import java.util.List; @ChannelHandler.Sharable diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/handlers/BukkitEncodeHandler.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/handlers/BukkitEncodeHandler.java index a2caca345..71bcc1f07 100644 --- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/handlers/BukkitEncodeHandler.java +++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/handlers/BukkitEncodeHandler.java @@ -30,7 +30,6 @@ import io.netty.channel.ChannelPipeline; import io.netty.handler.codec.ByteToMessageDecoder; import io.netty.handler.codec.MessageToByteEncoder; import io.netty.handler.codec.MessageToMessageEncoder; - import java.util.List; @ChannelHandler.Sharable diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/listeners/JoinListener.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/listeners/JoinListener.java index a67080cbc..9c22e55f0 100644 --- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/listeners/JoinListener.java +++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/listeners/JoinListener.java @@ -23,6 +23,9 @@ import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.bukkit.handlers.BukkitEncodeHandler; import com.viaversion.viaversion.bukkit.util.NMSUtil; import io.netty.channel.Channel; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.logging.Level; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -30,10 +33,6 @@ import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import org.jetbrains.annotations.Nullable; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.logging.Level; - public class JoinListener implements Listener { private static final Method GET_HANDLE; @@ -79,7 +78,7 @@ public class JoinListener implements Listener { Channel channel; try { - channel = getChannel(player); + channel = getChannel(player); } catch (Exception ex) { Via.getPlatform().getLogger().log(Level.WARNING, ex, () -> "Could not find Channel for logging-in player " + player.getUniqueId()); diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/listeners/multiversion/PlayerSneakListener.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/listeners/multiversion/PlayerSneakListener.java index f694d0f0e..786456a53 100644 --- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/listeners/multiversion/PlayerSneakListener.java +++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/listeners/multiversion/PlayerSneakListener.java @@ -23,13 +23,6 @@ import com.viaversion.viaversion.api.connection.ProtocolInfo; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; import com.viaversion.viaversion.bukkit.listeners.ViaBukkitListener; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.entity.EntityDamageEvent; -import org.bukkit.event.player.PlayerQuitEvent; -import org.bukkit.event.player.PlayerToggleSneakEvent; - import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.HashSet; @@ -37,6 +30,12 @@ import java.util.Map; import java.util.Set; import java.util.UUID; import java.util.WeakHashMap; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.event.player.PlayerToggleSneakEvent; public class PlayerSneakListener extends ViaBukkitListener { private static final float STANDING_HEIGHT = 1.8F; diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/listeners/protocol1_15to1_14_4/EntityToggleGlideListener.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/listeners/protocol1_15to1_14_4/EntityToggleGlideListener.java index 61a9329bf..f2d6537af 100644 --- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/listeners/protocol1_15to1_14_4/EntityToggleGlideListener.java +++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/listeners/protocol1_15to1_14_4/EntityToggleGlideListener.java @@ -25,14 +25,13 @@ import com.viaversion.viaversion.api.type.types.version.Types1_14; import com.viaversion.viaversion.bukkit.listeners.ViaBukkitListener; import com.viaversion.viaversion.protocols.protocol1_15to1_14_4.ClientboundPackets1_15; import com.viaversion.viaversion.protocols.protocol1_15to1_14_4.Protocol1_15To1_14_4; +import java.util.Arrays; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.entity.EntityToggleGlideEvent; import org.bukkit.potion.PotionEffectType; -import java.util.Arrays; - public class EntityToggleGlideListener extends ViaBukkitListener { private boolean swimmingMethodExists; diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaAPI.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaAPI.java index 8209a6a8e..425702ece 100644 --- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaAPI.java +++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaAPI.java @@ -23,11 +23,10 @@ import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.bukkit.util.ProtocolSupportUtil; import io.netty.buffer.ByteBuf; +import java.util.UUID; import org.bukkit.Bukkit; import org.bukkit.entity.Player; -import java.util.UUID; - public class BukkitViaAPI extends ViaAPIBase { private final ViaVersionPlugin plugin; diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaConfig.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaConfig.java index e6a6da0bf..0a68e22e6 100644 --- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaConfig.java +++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaConfig.java @@ -19,12 +19,11 @@ package com.viaversion.viaversion.bukkit.platform; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.configuration.AbstractViaConfig; -import org.bukkit.plugin.Plugin; - import java.io.File; import java.util.Arrays; import java.util.List; import java.util.Map; +import org.bukkit.plugin.Plugin; public class BukkitViaConfig extends AbstractViaConfig { private static final List UNSUPPORTED = Arrays.asList("bungee-ping-interval", "bungee-ping-save", "bungee-servers", "velocity-ping-interval", "velocity-ping-save", "velocity-servers"); diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaInjector.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaInjector.java index 71e39612c..5bf0dce2c 100644 --- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaInjector.java +++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaInjector.java @@ -26,13 +26,12 @@ import io.netty.channel.Channel; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelInitializer; -import org.bukkit.Bukkit; -import org.bukkit.plugin.PluginDescriptionFile; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.List; +import org.bukkit.Bukkit; +import org.bukkit.plugin.PluginDescriptionFile; +import org.checkerframework.checker.nullness.qual.Nullable; public class BukkitViaInjector extends LegacyViaInjector { diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaLoader.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaLoader.java index bafddaad2..2a3f36151 100644 --- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaLoader.java +++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/BukkitViaLoader.java @@ -45,17 +45,16 @@ import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnections import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.provider.AckSequenceProvider; import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.HandItemProvider; import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.MovementTransmitterProvider; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.TimeUnit; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import org.bukkit.scheduler.BukkitTask; -import java.util.HashSet; -import java.util.Set; -import java.util.UUID; -import java.util.concurrent.TimeUnit; - public class BukkitViaLoader implements ViaPlatformLoader { private final ViaVersionPlugin plugin; diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/PaperViaInjector.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/PaperViaInjector.java index e86a87ebb..7ace83621 100644 --- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/PaperViaInjector.java +++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/platform/PaperViaInjector.java @@ -19,10 +19,9 @@ package com.viaversion.viaversion.bukkit.platform; import com.viaversion.viaversion.bukkit.handlers.BukkitChannelInitializer; import io.netty.channel.Channel; -import net.kyori.adventure.key.Key; - import java.lang.reflect.Method; import java.lang.reflect.Proxy; +import net.kyori.adventure.key.Key; public final class PaperViaInjector { public static final boolean PAPER_INJECTION_METHOD = hasPaperInjectionMethod(); diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/providers/BukkitInventoryQuickMoveProvider.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/providers/BukkitInventoryQuickMoveProvider.java index 501079011..4006a0766 100644 --- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/providers/BukkitInventoryQuickMoveProvider.java +++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/providers/BukkitInventoryQuickMoveProvider.java @@ -26,12 +26,6 @@ import com.viaversion.viaversion.bukkit.util.NMSUtil; import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.providers.InventoryQuickMoveProvider; import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.storage.ItemTransaction; import com.viaversion.viaversion.util.ReflectionUtil; -import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryView; -import org.bukkit.inventory.ItemStack; - import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -39,6 +33,11 @@ import java.util.Map; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Level; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.InventoryView; +import org.bukkit.inventory.ItemStack; public class BukkitInventoryQuickMoveProvider extends InventoryQuickMoveProvider { diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/providers/BukkitViaMovementTransmitter.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/providers/BukkitViaMovementTransmitter.java index 9aa8b403a..bd6128dcb 100644 --- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/providers/BukkitViaMovementTransmitter.java +++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/providers/BukkitViaMovementTransmitter.java @@ -22,12 +22,11 @@ import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.bukkit.util.NMSUtil; import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.MovementTransmitterProvider; import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.MovementTracker; -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; public class BukkitViaMovementTransmitter extends MovementTransmitterProvider { private static boolean USE_NMS = true; diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/tasks/protocol1_12to1_11_1/BukkitInventoryUpdateTask.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/tasks/protocol1_12to1_11_1/BukkitInventoryUpdateTask.java index 3b717ddb5..a91435230 100644 --- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/tasks/protocol1_12to1_11_1/BukkitInventoryUpdateTask.java +++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/tasks/protocol1_12to1_11_1/BukkitInventoryUpdateTask.java @@ -19,13 +19,12 @@ package com.viaversion.viaversion.bukkit.tasks.protocol1_12to1_11_1; import com.viaversion.viaversion.bukkit.providers.BukkitInventoryQuickMoveProvider; import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.storage.ItemTransaction; -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; - import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.UUID; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; public class BukkitInventoryUpdateTask implements Runnable { diff --git a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/util/ProtocolSupportUtil.java b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/util/ProtocolSupportUtil.java index a6a11488a..0a47e5979 100644 --- a/bukkit/src/main/java/com/viaversion/viaversion/bukkit/util/ProtocolSupportUtil.java +++ b/bukkit/src/main/java/com/viaversion/viaversion/bukkit/util/ProtocolSupportUtil.java @@ -17,10 +17,9 @@ */ package com.viaversion.viaversion.bukkit.util; -import org.bukkit.entity.Player; - import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import org.bukkit.entity.Player; public final class ProtocolSupportUtil { private static final Method PROTOCOL_VERSION_METHOD; diff --git a/bukkit/src/main/resources/plugin.yml b/bukkit/src/main/resources/plugin.yml index 507ceda7b..aeb594875 100644 --- a/bukkit/src/main/resources/plugin.yml +++ b/bukkit/src/main/resources/plugin.yml @@ -1,13 +1,13 @@ name: ViaVersion main: com.viaversion.viaversion.ViaVersionPlugin -authors: [_MylesC, creeper123123321, Gerrygames, kennytv, Matsv] +authors: [ _MylesC, creeper123123321, Gerrygames, kennytv, Matsv ] version: ${version} description: ${description} api-version: 1.13 -loadbefore: [ProtocolLib, ProxyPipe, SpigotLib, SkinRestorer] -softdepend: [ProtocolSupport, PacketListenerApi] +loadbefore: [ ProtocolLib, ProxyPipe, SpigotLib, SkinRestorer ] +softdepend: [ ProtocolSupport, PacketListenerApi ] commands: viaversion: permission: viaversion.admin # The permission is also referenced here to filter root suggestions (/via) description: Shows ViaVersion Version and more. - aliases: [viaver, vvbukkit] \ No newline at end of file + aliases: [ viaver, vvbukkit ] \ No newline at end of file diff --git a/bungee/src/main/java/com/viaversion/viaversion/BungeePlugin.java b/bungee/src/main/java/com/viaversion/viaversion/BungeePlugin.java index eabdabba3..f1cc96bf7 100644 --- a/bungee/src/main/java/com/viaversion/viaversion/BungeePlugin.java +++ b/bungee/src/main/java/com/viaversion/viaversion/BungeePlugin.java @@ -39,18 +39,17 @@ import com.viaversion.viaversion.bungee.service.ProtocolDetectorService; import com.viaversion.viaversion.dump.PluginInfo; import com.viaversion.viaversion.unsupported.UnsupportedServerSoftware; import com.viaversion.viaversion.util.GsonUtil; -import net.md_5.bungee.api.ProxyServer; -import net.md_5.bungee.api.connection.ProxiedPlayer; -import net.md_5.bungee.api.plugin.Listener; -import net.md_5.bungee.api.plugin.Plugin; -import net.md_5.bungee.protocol.ProtocolConstants; - import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.UUID; import java.util.concurrent.TimeUnit; +import net.md_5.bungee.api.ProxyServer; +import net.md_5.bungee.api.connection.ProxiedPlayer; +import net.md_5.bungee.api.plugin.Listener; +import net.md_5.bungee.api.plugin.Plugin; +import net.md_5.bungee.protocol.ProtocolConstants; public class BungeePlugin extends Plugin implements ViaServerProxyPlatform, Listener { private final ProtocolDetectorService protocolDetectorService = new ProtocolDetectorService(); diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/commands/BungeeCommandSender.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/commands/BungeeCommandSender.java index 0723ac98f..fc75243dd 100644 --- a/bungee/src/main/java/com/viaversion/viaversion/bungee/commands/BungeeCommandSender.java +++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/commands/BungeeCommandSender.java @@ -18,11 +18,10 @@ package com.viaversion.viaversion.bungee.commands; import com.viaversion.viaversion.api.command.ViaCommandSender; +import java.util.UUID; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.connection.ProxiedPlayer; -import java.util.UUID; - public class BungeeCommandSender implements ViaCommandSender { private final CommandSender sender; diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeChannelInitializer.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeChannelInitializer.java index 8da759c2d..0fbe836c3 100644 --- a/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeChannelInitializer.java +++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeChannelInitializer.java @@ -22,7 +22,6 @@ import com.viaversion.viaversion.connection.UserConnectionImpl; import com.viaversion.viaversion.protocol.ProtocolPipelineImpl; import io.netty.channel.Channel; import io.netty.channel.ChannelInitializer; - import java.lang.reflect.Method; public class BungeeChannelInitializer extends ChannelInitializer { diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeDecodeHandler.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeDecodeHandler.java index 965cee07b..9d1a3fc9e 100644 --- a/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeDecodeHandler.java +++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeDecodeHandler.java @@ -24,7 +24,6 @@ import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.MessageToMessageDecoder; - import java.util.List; @ChannelHandler.Sharable diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeEncodeHandler.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeEncodeHandler.java index 1f848ae38..ed35e30bf 100644 --- a/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeEncodeHandler.java +++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeEncodeHandler.java @@ -25,7 +25,6 @@ import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.MessageToMessageEncoder; - import java.util.List; @ChannelHandler.Sharable diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeServerHandler.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeServerHandler.java index 2ea510e08..2bad00b69 100644 --- a/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeServerHandler.java +++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/handlers/BungeeServerHandler.java @@ -35,15 +35,6 @@ import com.viaversion.viaversion.protocols.protocol1_9to1_8.ClientboundPackets1_ import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8; import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.EntityIdProvider; import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.EntityTracker1_9; -import net.md_5.bungee.api.connection.ProxiedPlayer; -import net.md_5.bungee.api.event.ServerConnectEvent; -import net.md_5.bungee.api.event.ServerConnectedEvent; -import net.md_5.bungee.api.event.ServerSwitchEvent; -import net.md_5.bungee.api.plugin.Listener; -import net.md_5.bungee.api.score.Team; -import net.md_5.bungee.event.EventHandler; -import net.md_5.bungee.protocol.packet.PluginMessage; - import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -53,6 +44,14 @@ import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.UUID; +import net.md_5.bungee.api.connection.ProxiedPlayer; +import net.md_5.bungee.api.event.ServerConnectEvent; +import net.md_5.bungee.api.event.ServerConnectedEvent; +import net.md_5.bungee.api.event.ServerSwitchEvent; +import net.md_5.bungee.api.plugin.Listener; +import net.md_5.bungee.api.score.Team; +import net.md_5.bungee.event.EventHandler; +import net.md_5.bungee.protocol.packet.PluginMessage; public class BungeeServerHandler implements Listener { private static Method getHandshake; diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/listeners/ElytraPatch.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/listeners/ElytraPatch.java index f2361aae8..eb2b211eb 100644 --- a/bungee/src/main/java/com/viaversion/viaversion/bungee/listeners/ElytraPatch.java +++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/listeners/ElytraPatch.java @@ -27,13 +27,12 @@ import com.viaversion.viaversion.api.type.types.version.Types1_9; import com.viaversion.viaversion.protocols.protocol1_9to1_8.ClientboundPackets1_9; import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8; import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.EntityTracker1_9; +import java.util.Collections; import net.md_5.bungee.api.event.ServerConnectedEvent; import net.md_5.bungee.api.plugin.Listener; import net.md_5.bungee.event.EventHandler; import net.md_5.bungee.event.EventPriority; -import java.util.Collections; - /* * This patches https://github.com/ViaVersion/ViaVersion/issues/555 */ diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/platform/BungeeViaConfig.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/platform/BungeeViaConfig.java index 4346e6722..94c25fea8 100644 --- a/bungee/src/main/java/com/viaversion/viaversion/bungee/platform/BungeeViaConfig.java +++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/platform/BungeeViaConfig.java @@ -20,7 +20,6 @@ package com.viaversion.viaversion.bungee.platform; import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; import com.viaversion.viaversion.bungee.providers.BungeeVersionProvider; import com.viaversion.viaversion.configuration.AbstractViaConfig; - import java.io.File; import java.util.Arrays; import java.util.HashMap; diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/platform/BungeeViaInjector.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/platform/BungeeViaInjector.java index e20377642..e38d9408d 100644 --- a/bungee/src/main/java/com/viaversion/viaversion/bungee/platform/BungeeViaInjector.java +++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/platform/BungeeViaInjector.java @@ -29,12 +29,11 @@ import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelInitializer; import it.unimi.dsi.fastutil.ints.IntLinkedOpenHashSet; import it.unimi.dsi.fastutil.ints.IntSortedSet; -import net.md_5.bungee.api.ProxyServer; - import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import java.util.Set; +import net.md_5.bungee.api.ProxyServer; public class BungeeViaInjector implements ViaInjector { diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/platform/BungeeViaLoader.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/platform/BungeeViaLoader.java index bcc95a1ca..307122255 100644 --- a/bungee/src/main/java/com/viaversion/viaversion/bungee/platform/BungeeViaLoader.java +++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/platform/BungeeViaLoader.java @@ -34,13 +34,12 @@ import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.BossBarPro import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.EntityIdProvider; import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.MainHandProvider; import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.MovementTransmitterProvider; -import net.md_5.bungee.api.ProxyServer; -import net.md_5.bungee.api.plugin.Listener; -import net.md_5.bungee.api.scheduler.ScheduledTask; - import java.util.HashSet; import java.util.Set; import java.util.concurrent.TimeUnit; +import net.md_5.bungee.api.ProxyServer; +import net.md_5.bungee.api.plugin.Listener; +import net.md_5.bungee.api.scheduler.ScheduledTask; public class BungeeViaLoader implements ViaPlatformLoader { private final Set listeners = new HashSet<>(); diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeBossBarProvider.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeBossBarProvider.java index 715af0207..c0edf1af9 100644 --- a/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeBossBarProvider.java +++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeBossBarProvider.java @@ -20,7 +20,6 @@ package com.viaversion.viaversion.bungee.providers; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.bungee.storage.BungeeStorage; import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.BossBarProvider; - import java.util.UUID; public class BungeeBossBarProvider extends BossBarProvider { diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeEntityIdProvider.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeEntityIdProvider.java index ae9e1f756..41c3f8c8b 100644 --- a/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeEntityIdProvider.java +++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeEntityIdProvider.java @@ -20,9 +20,8 @@ package com.viaversion.viaversion.bungee.providers; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.bungee.storage.BungeeStorage; import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.EntityIdProvider; -import net.md_5.bungee.api.connection.ProxiedPlayer; - import java.lang.reflect.Method; +import net.md_5.bungee.api.connection.ProxiedPlayer; public class BungeeEntityIdProvider extends EntityIdProvider { private static Method getClientEntityId; diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeMainHandProvider.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeMainHandProvider.java index f506edcea..4f38d3872 100644 --- a/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeMainHandProvider.java +++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeMainHandProvider.java @@ -20,11 +20,10 @@ package com.viaversion.viaversion.bungee.providers; import com.viaversion.viaversion.api.connection.ProtocolInfo; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.MainHandProvider; -import net.md_5.bungee.api.ProxyServer; -import net.md_5.bungee.api.connection.ProxiedPlayer; - import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import net.md_5.bungee.api.ProxyServer; +import net.md_5.bungee.api.connection.ProxiedPlayer; /* This solves the wrong mainhand issue when you join with BungeeCord on a 1.8 server, and switch to a 1.9 or higher. diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeVersionProvider.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeVersionProvider.java index 7748760ce..604695a44 100644 --- a/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeVersionProvider.java +++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/providers/BungeeVersionProvider.java @@ -24,11 +24,10 @@ import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; import com.viaversion.viaversion.protocols.base.BaseVersionProvider; import com.viaversion.viaversion.util.ReflectionUtil; -import net.md_5.bungee.api.ProxyServer; - import java.util.ArrayList; import java.util.Collections; import java.util.List; +import net.md_5.bungee.api.ProxyServer; public class BungeeVersionProvider extends BaseVersionProvider { private static Class ref; diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/service/ProtocolDetectorService.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/service/ProtocolDetectorService.java index 87efaba4a..267f36612 100644 --- a/bungee/src/main/java/com/viaversion/viaversion/bungee/service/ProtocolDetectorService.java +++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/service/ProtocolDetectorService.java @@ -21,13 +21,12 @@ import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.bungee.platform.BungeeViaConfig; import com.viaversion.viaversion.bungee.providers.BungeeVersionProvider; import com.viaversion.viaversion.platform.AbstractProtocolDetectorService; -import net.md_5.bungee.api.ProxyServer; -import net.md_5.bungee.api.config.ServerInfo; - import java.util.Collection; import java.util.HashSet; import java.util.Map; import java.util.Set; +import net.md_5.bungee.api.ProxyServer; +import net.md_5.bungee.api.config.ServerInfo; public final class ProtocolDetectorService extends AbstractProtocolDetectorService { diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/storage/BungeeStorage.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/storage/BungeeStorage.java index 311a5190c..16395365d 100644 --- a/bungee/src/main/java/com/viaversion/viaversion/bungee/storage/BungeeStorage.java +++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/storage/BungeeStorage.java @@ -18,12 +18,11 @@ package com.viaversion.viaversion.bungee.storage; import com.viaversion.viaversion.api.connection.StorableObject; -import net.md_5.bungee.api.connection.ProxiedPlayer; - import java.lang.reflect.Field; import java.util.Objects; import java.util.Set; import java.util.UUID; +import net.md_5.bungee.api.connection.ProxiedPlayer; public class BungeeStorage implements StorableObject { private static Field bossField; diff --git a/bungee/src/main/java/com/viaversion/viaversion/bungee/util/BungeePipelineUtil.java b/bungee/src/main/java/com/viaversion/viaversion/bungee/util/BungeePipelineUtil.java index bdc9b240f..c35a64250 100644 --- a/bungee/src/main/java/com/viaversion/viaversion/bungee/util/BungeePipelineUtil.java +++ b/bungee/src/main/java/com/viaversion/viaversion/bungee/util/BungeePipelineUtil.java @@ -21,7 +21,6 @@ import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.MessageToByteEncoder; import io.netty.handler.codec.MessageToMessageDecoder; - import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; diff --git a/common/src/main/java/com/viaversion/viaversion/ViaAPIBase.java b/common/src/main/java/com/viaversion/viaversion/ViaAPIBase.java index 34d46cf51..d9492ca30 100644 --- a/common/src/main/java/com/viaversion/viaversion/ViaAPIBase.java +++ b/common/src/main/java/com/viaversion/viaversion/ViaAPIBase.java @@ -25,11 +25,10 @@ import com.viaversion.viaversion.api.protocol.version.BlockedProtocolVersions; import com.viaversion.viaversion.api.protocol.version.ServerProtocolVersion; import com.viaversion.viaversion.legacy.LegacyAPI; import io.netty.buffer.ByteBuf; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.SortedSet; import java.util.TreeSet; import java.util.UUID; +import org.checkerframework.checker.nullness.qual.Nullable; public abstract class ViaAPIBase implements ViaAPI { diff --git a/common/src/main/java/com/viaversion/viaversion/ViaListener.java b/common/src/main/java/com/viaversion/viaversion/ViaListener.java index c6abbf199..e35ed3d7b 100644 --- a/common/src/main/java/com/viaversion/viaversion/ViaListener.java +++ b/common/src/main/java/com/viaversion/viaversion/ViaListener.java @@ -20,9 +20,8 @@ package com.viaversion.viaversion; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.protocol.Protocol; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.UUID; +import org.checkerframework.checker.nullness.qual.Nullable; public abstract class ViaListener { private final Class requiredPipeline; diff --git a/common/src/main/java/com/viaversion/viaversion/ViaManagerImpl.java b/common/src/main/java/com/viaversion/viaversion/ViaManagerImpl.java index 4d32eb3f7..410263a2a 100644 --- a/common/src/main/java/com/viaversion/viaversion/ViaManagerImpl.java +++ b/common/src/main/java/com/viaversion/viaversion/ViaManagerImpl.java @@ -40,7 +40,6 @@ import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.TabCompleteThrea import com.viaversion.viaversion.protocols.protocol1_9to1_8.ViaIdleThread; import com.viaversion.viaversion.update.UpdateUtil; import it.unimi.dsi.fastutil.ints.IntSortedSet; - import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; diff --git a/common/src/main/java/com/viaversion/viaversion/commands/ViaCommandHandler.java b/common/src/main/java/com/viaversion/viaversion/commands/ViaCommandHandler.java index f2bc4e7c8..6496c7280 100644 --- a/common/src/main/java/com/viaversion/viaversion/commands/ViaCommandHandler.java +++ b/common/src/main/java/com/viaversion/viaversion/commands/ViaCommandHandler.java @@ -31,7 +31,6 @@ import com.viaversion.viaversion.commands.defaultsubs.HelpSubCmd; import com.viaversion.viaversion.commands.defaultsubs.ListSubCmd; import com.viaversion.viaversion.commands.defaultsubs.PPSSubCmd; import com.viaversion.viaversion.commands.defaultsubs.ReloadSubCmd; - import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; diff --git a/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/DebugSubCmd.java b/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/DebugSubCmd.java index 7a03efe18..74e5b2998 100644 --- a/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/DebugSubCmd.java +++ b/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/DebugSubCmd.java @@ -21,7 +21,6 @@ import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.command.ViaCommandSender; import com.viaversion.viaversion.api.command.ViaSubCommand; import com.viaversion.viaversion.api.debug.DebugHandler; - import java.util.Arrays; import java.util.Collections; import java.util.List; diff --git a/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/DumpSubCmd.java b/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/DumpSubCmd.java index 5f87c5404..1a207532d 100644 --- a/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/DumpSubCmd.java +++ b/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/DumpSubCmd.java @@ -29,7 +29,6 @@ import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; import com.viaversion.viaversion.dump.DumpTemplate; import com.viaversion.viaversion.dump.VersionInfo; import com.viaversion.viaversion.util.GsonUtil; - import java.io.IOException; import java.io.InputStreamReader; import java.io.InvalidObjectException; diff --git a/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/ListSubCmd.java b/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/ListSubCmd.java index 7a7cc6e88..ac7f41f28 100644 --- a/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/ListSubCmd.java +++ b/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/ListSubCmd.java @@ -21,7 +21,6 @@ import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.command.ViaCommandSender; import com.viaversion.viaversion.api.command.ViaSubCommand; import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; - import java.util.HashSet; import java.util.Map; import java.util.Set; diff --git a/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/PPSSubCmd.java b/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/PPSSubCmd.java index 0abd157cd..84fed540f 100644 --- a/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/PPSSubCmd.java +++ b/common/src/main/java/com/viaversion/viaversion/commands/defaultsubs/PPSSubCmd.java @@ -22,7 +22,6 @@ import com.viaversion.viaversion.api.command.ViaCommandSender; import com.viaversion.viaversion.api.command.ViaSubCommand; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; - import java.util.HashMap; import java.util.HashSet; import java.util.Map; diff --git a/common/src/main/java/com/viaversion/viaversion/configuration/AbstractViaConfig.java b/common/src/main/java/com/viaversion/viaversion/configuration/AbstractViaConfig.java index 516423cf6..b32ea3272 100644 --- a/common/src/main/java/com/viaversion/viaversion/configuration/AbstractViaConfig.java +++ b/common/src/main/java/com/viaversion/viaversion/configuration/AbstractViaConfig.java @@ -27,13 +27,12 @@ import com.viaversion.viaversion.protocol.BlockedProtocolVersionsImpl; import com.viaversion.viaversion.util.Config; import it.unimi.dsi.fastutil.ints.IntOpenHashSet; import it.unimi.dsi.fastutil.ints.IntSet; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.io.File; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.function.IntPredicate; +import org.checkerframework.checker.nullness.qual.Nullable; public abstract class AbstractViaConfig extends Config implements ViaVersionConfig { diff --git a/common/src/main/java/com/viaversion/viaversion/connection/ConnectionManagerImpl.java b/common/src/main/java/com/viaversion/viaversion/connection/ConnectionManagerImpl.java index 46144771a..4565da4cb 100644 --- a/common/src/main/java/com/viaversion/viaversion/connection/ConnectionManagerImpl.java +++ b/common/src/main/java/com/viaversion/viaversion/connection/ConnectionManagerImpl.java @@ -22,14 +22,13 @@ import com.viaversion.viaversion.api.connection.ConnectionManager; import com.viaversion.viaversion.api.connection.UserConnection; import io.netty.channel.Channel; import io.netty.channel.ChannelFutureListener; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.Collections; import java.util.Map; import java.util.Objects; import java.util.Set; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; +import org.checkerframework.checker.nullness.qual.Nullable; public class ConnectionManagerImpl implements ConnectionManager { protected final Map clients = new ConcurrentHashMap<>(); diff --git a/common/src/main/java/com/viaversion/viaversion/connection/ProtocolInfoImpl.java b/common/src/main/java/com/viaversion/viaversion/connection/ProtocolInfoImpl.java index 86fdd6df5..34922fa4a 100644 --- a/common/src/main/java/com/viaversion/viaversion/connection/ProtocolInfoImpl.java +++ b/common/src/main/java/com/viaversion/viaversion/connection/ProtocolInfoImpl.java @@ -22,7 +22,6 @@ import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.protocol.ProtocolPipeline; import com.viaversion.viaversion.api.protocol.packet.State; import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; - import java.util.UUID; public class ProtocolInfoImpl implements ProtocolInfo { diff --git a/common/src/main/java/com/viaversion/viaversion/connection/UserConnectionImpl.java b/common/src/main/java/com/viaversion/viaversion/connection/UserConnectionImpl.java index 22c649d19..6485020fb 100644 --- a/common/src/main/java/com/viaversion/viaversion/connection/UserConnectionImpl.java +++ b/common/src/main/java/com/viaversion/viaversion/connection/UserConnectionImpl.java @@ -36,8 +36,6 @@ import io.netty.buffer.ByteBuf; import io.netty.channel.Channel; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelHandlerContext; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -48,6 +46,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; import java.util.function.Function; +import org.checkerframework.checker.nullness.qual.Nullable; public class UserConnectionImpl implements UserConnection { private static final AtomicLong IDS = new AtomicLong(); diff --git a/common/src/main/java/com/viaversion/viaversion/data/entity/EntityTrackerBase.java b/common/src/main/java/com/viaversion/viaversion/data/entity/EntityTrackerBase.java index 9838671bb..f347f54dc 100644 --- a/common/src/main/java/com/viaversion/viaversion/data/entity/EntityTrackerBase.java +++ b/common/src/main/java/com/viaversion/viaversion/data/entity/EntityTrackerBase.java @@ -23,8 +23,8 @@ import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.data.entity.ClientEntityIdChangeListener; import com.viaversion.viaversion.api.data.entity.DimensionData; import com.viaversion.viaversion.api.data.entity.EntityTracker; -import com.viaversion.viaversion.api.data.entity.TrackedEntity; import com.viaversion.viaversion.api.data.entity.StoredEntityData; +import com.viaversion.viaversion.api.data.entity.TrackedEntity; import com.viaversion.viaversion.api.minecraft.entities.EntityType; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import java.util.Collections; diff --git a/common/src/main/java/com/viaversion/viaversion/data/entity/StoredEntityDataImpl.java b/common/src/main/java/com/viaversion/viaversion/data/entity/StoredEntityDataImpl.java index b20277464..4108d4ec9 100644 --- a/common/src/main/java/com/viaversion/viaversion/data/entity/StoredEntityDataImpl.java +++ b/common/src/main/java/com/viaversion/viaversion/data/entity/StoredEntityDataImpl.java @@ -19,10 +19,9 @@ package com.viaversion.viaversion.data.entity; import com.viaversion.viaversion.api.data.entity.StoredEntityData; import com.viaversion.viaversion.api.minecraft.entities.EntityType; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import org.checkerframework.checker.nullness.qual.Nullable; public final class StoredEntityDataImpl implements StoredEntityData { private final Map, Object> storedObjects = new ConcurrentHashMap<>(); diff --git a/common/src/main/java/com/viaversion/viaversion/data/entity/TrackedEntityImpl.java b/common/src/main/java/com/viaversion/viaversion/data/entity/TrackedEntityImpl.java index a37cdadc1..780294e5e 100644 --- a/common/src/main/java/com/viaversion/viaversion/data/entity/TrackedEntityImpl.java +++ b/common/src/main/java/com/viaversion/viaversion/data/entity/TrackedEntityImpl.java @@ -17,8 +17,8 @@ */ package com.viaversion.viaversion.data.entity; -import com.viaversion.viaversion.api.data.entity.TrackedEntity; import com.viaversion.viaversion.api.data.entity.StoredEntityData; +import com.viaversion.viaversion.api.data.entity.TrackedEntity; import com.viaversion.viaversion.api.minecraft.entities.EntityType; public final class TrackedEntityImpl implements TrackedEntity { diff --git a/common/src/main/java/com/viaversion/viaversion/debug/DebugHandlerImpl.java b/common/src/main/java/com/viaversion/viaversion/debug/DebugHandlerImpl.java index 3cf0856df..9df3369ba 100644 --- a/common/src/main/java/com/viaversion/viaversion/debug/DebugHandlerImpl.java +++ b/common/src/main/java/com/viaversion/viaversion/debug/DebugHandlerImpl.java @@ -23,7 +23,6 @@ import com.viaversion.viaversion.api.protocol.packet.PacketType; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import it.unimi.dsi.fastutil.ints.IntOpenHashSet; import it.unimi.dsi.fastutil.ints.IntSet; - import java.util.HashSet; import java.util.Set; diff --git a/common/src/main/java/com/viaversion/viaversion/handlers/ChannelHandlerContextWrapper.java b/common/src/main/java/com/viaversion/viaversion/handlers/ChannelHandlerContextWrapper.java index 9baccdaa8..127749985 100644 --- a/common/src/main/java/com/viaversion/viaversion/handlers/ChannelHandlerContextWrapper.java +++ b/common/src/main/java/com/viaversion/viaversion/handlers/ChannelHandlerContextWrapper.java @@ -29,7 +29,6 @@ import io.netty.channel.ChannelPromise; import io.netty.util.Attribute; import io.netty.util.AttributeKey; import io.netty.util.concurrent.EventExecutor; - import java.net.SocketAddress; public class ChannelHandlerContextWrapper implements ChannelHandlerContext { diff --git a/common/src/main/java/com/viaversion/viaversion/legacy/bossbar/CommonBoss.java b/common/src/main/java/com/viaversion/viaversion/legacy/bossbar/CommonBoss.java index b82ac21be..896cfef48 100644 --- a/common/src/main/java/com/viaversion/viaversion/legacy/bossbar/CommonBoss.java +++ b/common/src/main/java/com/viaversion/viaversion/legacy/bossbar/CommonBoss.java @@ -29,7 +29,6 @@ import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_9to1_8.ClientboundPackets1_9; import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8; - import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; diff --git a/common/src/main/java/com/viaversion/viaversion/platform/AbstractProtocolDetectorService.java b/common/src/main/java/com/viaversion/viaversion/platform/AbstractProtocolDetectorService.java index 12252b831..b2c28ceab 100644 --- a/common/src/main/java/com/viaversion/viaversion/platform/AbstractProtocolDetectorService.java +++ b/common/src/main/java/com/viaversion/viaversion/platform/AbstractProtocolDetectorService.java @@ -20,7 +20,6 @@ package com.viaversion.viaversion.platform; import com.viaversion.viaversion.api.platform.ProtocolDetectorService; import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; - import java.util.Map; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; diff --git a/common/src/main/java/com/viaversion/viaversion/platform/LegacyViaInjector.java b/common/src/main/java/com/viaversion/viaversion/platform/LegacyViaInjector.java index 60f76930e..d3f31ee50 100644 --- a/common/src/main/java/com/viaversion/viaversion/platform/LegacyViaInjector.java +++ b/common/src/main/java/com/viaversion/viaversion/platform/LegacyViaInjector.java @@ -29,11 +29,10 @@ import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelPipeline; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; +import org.checkerframework.checker.nullness.qual.Nullable; public abstract class LegacyViaInjector implements ViaInjector { protected final List injectedFutures = new ArrayList<>(); diff --git a/common/src/main/java/com/viaversion/viaversion/protocol/ProtocolManagerImpl.java b/common/src/main/java/com/viaversion/viaversion/protocol/ProtocolManagerImpl.java index e6d9aa522..691f3a28c 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocol/ProtocolManagerImpl.java +++ b/common/src/main/java/com/viaversion/viaversion/protocol/ProtocolManagerImpl.java @@ -68,8 +68,8 @@ import com.viaversion.viaversion.protocols.protocol1_18_2to1_18.Protocol1_18_2To import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.Protocol1_18To1_17_1; import com.viaversion.viaversion.protocols.protocol1_19_1to1_19.Protocol1_19_1To1_19; import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.Protocol1_19_3To1_19_1; -import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.Protocol1_19To1_18_2; import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.Protocol1_19_4To1_19_3; +import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.Protocol1_19To1_18_2; import com.viaversion.viaversion.protocols.protocol1_9_1_2to1_9_3_4.Protocol1_9_1_2To1_9_3_4; import com.viaversion.viaversion.protocols.protocol1_9_1to1_9.Protocol1_9_1To1_9; import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.Protocol1_9_3To1_9_1_2; @@ -81,11 +81,9 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectLinkedOpenHashMap; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import it.unimi.dsi.fastutil.ints.Int2ObjectSortedMap; -import org.checkerframework.checker.nullness.qual.Nullable; -import us.myles.ViaVersion.api.protocol.ProtocolRegistry; - import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; @@ -103,13 +101,15 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; import java.util.function.Function; +import org.checkerframework.checker.nullness.qual.Nullable; +import us.myles.ViaVersion.api.protocol.ProtocolRegistry; public class ProtocolManagerImpl implements ProtocolManager { private static final Protocol BASE_PROTOCOL = new BaseProtocol(); // Input Version -> Output Version & Protocol (Allows fast lookup) private final Int2ObjectMap> registryMap = new Int2ObjectOpenHashMap<>(32); - private final Map, Protocol> protocols = new HashMap<>(); + private final Map, Protocol> protocols = new HashMap<>(); private final Map> pathCache = new ConcurrentHashMap<>(); private final Set supportedVersions = new HashSet<>(); private final List, Protocol>> baseProtocols = Lists.newCopyOnWriteArrayList(); @@ -361,6 +361,11 @@ public class ProtocolManagerImpl implements ProtocolManager { throw new IllegalStateException("No Base Protocol for " + serverVersion); } + @Override + public Collection> getProtocols() { + return Collections.unmodifiableCollection(protocols.values()); + } + @Override public ServerProtocolVersion getServerProtocolVersion() { return serverProtocolVersion; diff --git a/common/src/main/java/com/viaversion/viaversion/protocol/ProtocolPipelineImpl.java b/common/src/main/java/com/viaversion/viaversion/protocol/ProtocolPipelineImpl.java index 516d549eb..c3082c7ee 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocol/ProtocolPipelineImpl.java +++ b/common/src/main/java/com/viaversion/viaversion/protocol/ProtocolPipelineImpl.java @@ -28,8 +28,6 @@ import com.viaversion.viaversion.api.protocol.ProtocolPipeline; import com.viaversion.viaversion.api.protocol.packet.Direction; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.packet.State; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -37,6 +35,7 @@ import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; import java.util.logging.Level; +import org.checkerframework.checker.nullness.qual.Nullable; public class ProtocolPipelineImpl extends AbstractSimpleProtocol implements ProtocolPipeline { private final UserConnection userConnection; diff --git a/common/src/main/java/com/viaversion/viaversion/protocol/packet/PacketWrapperImpl.java b/common/src/main/java/com/viaversion/viaversion/protocol/packet/PacketWrapperImpl.java index bb014a5a5..37e44a27e 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocol/packet/PacketWrapperImpl.java +++ b/common/src/main/java/com/viaversion/viaversion/protocol/packet/PacketWrapperImpl.java @@ -34,14 +34,13 @@ import com.viaversion.viaversion.util.Pair; import com.viaversion.viaversion.util.PipelineUtil; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelFuture; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.io.IOException; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Deque; import java.util.List; import java.util.NoSuchElementException; +import org.checkerframework.checker.nullness.qual.Nullable; public class PacketWrapperImpl implements PacketWrapper { private static final Protocol[] PROTOCOL_ARRAY = new Protocol[0]; diff --git a/common/src/main/java/com/viaversion/viaversion/protocol/packet/VersionedPacketTransformerImpl.java b/common/src/main/java/com/viaversion/viaversion/protocol/packet/VersionedPacketTransformerImpl.java index a84a3cd18..bb178077e 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocol/packet/VersionedPacketTransformerImpl.java +++ b/common/src/main/java/com/viaversion/viaversion/protocol/packet/VersionedPacketTransformerImpl.java @@ -30,11 +30,10 @@ import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; import com.viaversion.viaversion.api.protocol.packet.State; import com.viaversion.viaversion.api.protocol.packet.VersionedPacketTransformer; import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.ArrayList; import java.util.List; import java.util.function.Consumer; +import org.checkerframework.checker.nullness.qual.Nullable; public class VersionedPacketTransformerImpl implements VersionedPacketTransformer { diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol.java b/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol.java index 203c1e93c..fe803dfe9 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol.java @@ -27,11 +27,9 @@ import com.viaversion.viaversion.api.protocol.ProtocolPipeline; import com.viaversion.viaversion.api.protocol.packet.Direction; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.packet.State; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; import com.viaversion.viaversion.api.protocol.version.VersionProvider; import com.viaversion.viaversion.api.type.Type; - import java.util.ArrayList; import java.util.List; @@ -40,62 +38,57 @@ public class BaseProtocol extends AbstractProtocol { @Override protected void registerPackets() { // Handshake Packet - registerServerbound(ServerboundHandshakePackets.CLIENT_INTENTION, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - int protocolVersion = wrapper.passthrough(Type.VAR_INT); - wrapper.passthrough(Type.STRING); // Server Address - wrapper.passthrough(Type.UNSIGNED_SHORT); // Server Port - int state = wrapper.passthrough(Type.VAR_INT); + registerServerbound(ServerboundHandshakePackets.CLIENT_INTENTION, wrapper -> { + int protocolVersion = wrapper.passthrough(Type.VAR_INT); + wrapper.passthrough(Type.STRING); // Server Address + wrapper.passthrough(Type.UNSIGNED_SHORT); // Server Port + int state = wrapper.passthrough(Type.VAR_INT); - ProtocolInfo info = wrapper.user().getProtocolInfo(); - info.setProtocolVersion(protocolVersion); - // Ensure the server has a version provider - VersionProvider versionProvider = Via.getManager().getProviders().get(VersionProvider.class); - if (versionProvider == null) { - wrapper.user().setActive(false); - return; - } + ProtocolInfo info = wrapper.user().getProtocolInfo(); + info.setProtocolVersion(protocolVersion); + // Ensure the server has a version provider + VersionProvider versionProvider = Via.getManager().getProviders().get(VersionProvider.class); + if (versionProvider == null) { + wrapper.user().setActive(false); + return; + } - // Choose the pipe - int serverProtocol = versionProvider.getClosestServerProtocol(wrapper.user()); - info.setServerProtocolVersion(serverProtocol); - List protocolPath = null; + // Choose the pipe + int serverProtocol = versionProvider.getClosestServerProtocol(wrapper.user()); + info.setServerProtocolVersion(serverProtocol); + List protocolPath = null; - // Only allow newer clients (or 1.9.2 on 1.9.4 server if the server supports it) - if (info.getProtocolVersion() >= serverProtocol || Via.getPlatform().isOldClientsAllowed()) { - protocolPath = Via.getManager().getProtocolManager().getProtocolPath(info.getProtocolVersion(), serverProtocol); - } + // Only allow newer clients (or 1.9.2 on 1.9.4 server if the server supports it) + if (info.getProtocolVersion() >= serverProtocol || Via.getPlatform().isOldClientsAllowed()) { + protocolPath = Via.getManager().getProtocolManager().getProtocolPath(info.getProtocolVersion(), serverProtocol); + } - ProtocolPipeline pipeline = wrapper.user().getProtocolInfo().getPipeline(); - if (protocolPath != null) { - List protocols = new ArrayList<>(protocolPath.size()); - for (ProtocolPathEntry entry : protocolPath) { - protocols.add(entry.protocol()); + ProtocolPipeline pipeline = wrapper.user().getProtocolInfo().getPipeline(); + if (protocolPath != null) { + List protocols = new ArrayList<>(protocolPath.size()); + for (ProtocolPathEntry entry : protocolPath) { + protocols.add(entry.protocol()); - // Ensure mapping data has already been loaded - Via.getManager().getProtocolManager().completeMappingDataLoading(entry.protocol().getClass()); - } + // Ensure mapping data has already been loaded + Via.getManager().getProtocolManager().completeMappingDataLoading(entry.protocol().getClass()); + } - // Add protocols to pipeline - pipeline.add(protocols); + // Add protocols to pipeline + pipeline.add(protocols); - // Set the original snapshot version if present - ProtocolVersion protocol = ProtocolVersion.getProtocol(serverProtocol); - wrapper.set(Type.VAR_INT, 0, protocol.getOriginalVersion()); - } + // Set the original snapshot version if present + ProtocolVersion protocol = ProtocolVersion.getProtocol(serverProtocol); + wrapper.set(Type.VAR_INT, 0, protocol.getOriginalVersion()); + } - // Add Base Protocol - pipeline.add(Via.getManager().getProtocolManager().getBaseProtocol(serverProtocol)); + // Add Base Protocol + pipeline.add(Via.getManager().getProtocolManager().getBaseProtocol(serverProtocol)); - // Change state - if (state == 1) { - info.setState(State.STATUS); - } else if (state == 2) { - info.setState(State.LOGIN); - } - }); + // Change state + if (state == 1) { + info.setState(State.STATUS); + } else if (state == 2) { + info.setState(State.LOGIN); } }); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol1_16.java b/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol1_16.java index 07d3abed1..b02293b7c 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol1_16.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol1_16.java @@ -19,7 +19,6 @@ package com.viaversion.viaversion.protocols.base; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.type.Type; - import java.util.UUID; public class BaseProtocol1_16 extends BaseProtocol1_7 { diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol1_7.java b/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol1_7.java index 03baad0a5..2227ca05c 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol1_7.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol1_7.java @@ -27,7 +27,6 @@ import com.viaversion.viaversion.api.protocol.AbstractProtocol; import com.viaversion.viaversion.api.protocol.ProtocolPathEntry; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.packet.State; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; import com.viaversion.viaversion.api.protocol.version.VersionProvider; @@ -38,7 +37,6 @@ import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8; import com.viaversion.viaversion.util.ChatColorUtil; import com.viaversion.viaversion.util.GsonUtil; import io.netty.channel.ChannelFuture; - import java.util.List; import java.util.UUID; import java.util.logging.Level; @@ -54,135 +52,116 @@ public class BaseProtocol1_7 extends AbstractProtocol { @Override public void register() { map(Type.STRING); - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - ProtocolInfo info = wrapper.user().getProtocolInfo(); - String originalStatus = wrapper.get(Type.STRING, 0); - try { - JsonElement json = GsonUtil.getGson().fromJson(originalStatus, JsonElement.class); - JsonObject version; - int protocolVersion = 0; // Unknown! + handler(wrapper -> { + ProtocolInfo info = wrapper.user().getProtocolInfo(); + String originalStatus = wrapper.get(Type.STRING, 0); + try { + JsonElement json = GsonUtil.getGson().fromJson(originalStatus, JsonElement.class); + JsonObject version; + int protocolVersion = 0; // Unknown! - if (json.isJsonObject()) { - if (json.getAsJsonObject().has("version")) { - version = json.getAsJsonObject().get("version").getAsJsonObject(); - if (version.has("protocol")) { - protocolVersion = ((Long) version.get("protocol").getAsLong()).intValue(); - } - } else { - json.getAsJsonObject().add("version", version = new JsonObject()); + if (json.isJsonObject()) { + if (json.getAsJsonObject().has("version")) { + version = json.getAsJsonObject().get("version").getAsJsonObject(); + if (version.has("protocol")) { + protocolVersion = ((Long) version.get("protocol").getAsLong()).intValue(); } } else { - // Format properly - json = new JsonObject(); json.getAsJsonObject().add("version", version = new JsonObject()); } - - if (Via.getConfig().isSendSupportedVersions()) { // Send supported versions - version.add("supportedVersions", GsonUtil.getGson().toJsonTree(Via.getAPI().getSupportedVersions())); - } - - if (!Via.getAPI().getServerVersion().isKnown()) { // Set the Server protocol if the detection on startup failed - ProtocolManagerImpl protocolManager = (ProtocolManagerImpl) Via.getManager().getProtocolManager(); - protocolManager.setServerProtocol(new ServerProtocolVersionSingleton(ProtocolVersion.getProtocol(protocolVersion).getVersion())); - } - - // Ensure the server has a version provider - VersionProvider versionProvider = Via.getManager().getProviders().get(VersionProvider.class); - if (versionProvider == null) { - wrapper.user().setActive(false); - return; - } - - int closestServerProtocol = versionProvider.getClosestServerProtocol(wrapper.user()); - List protocols = null; - if (info.getProtocolVersion() >= closestServerProtocol || Via.getPlatform().isOldClientsAllowed()) { - protocols = Via.getManager().getProtocolManager().getProtocolPath(info.getProtocolVersion(), closestServerProtocol); - } - - if (protocols != null) { - if (protocolVersion == closestServerProtocol || protocolVersion == 0) { // Fix ServerListPlus - ProtocolVersion prot = ProtocolVersion.getProtocol(info.getProtocolVersion()); - version.addProperty("protocol", prot.getOriginalVersion()); - } - } else { - // not compatible :(, *plays very sad violin* - wrapper.user().setActive(false); - } - - if (Via.getConfig().blockedProtocolVersions().contains(info.getProtocolVersion())) { - version.addProperty("protocol", -1); // Show blocked versions as outdated - } - - wrapper.set(Type.STRING, 0, GsonUtil.getGson().toJson(json)); // Update value - } catch (JsonParseException e) { - e.printStackTrace(); + } else { + // Format properly + json = new JsonObject(); + json.getAsJsonObject().add("version", version = new JsonObject()); } + + if (Via.getConfig().isSendSupportedVersions()) { // Send supported versions + version.add("supportedVersions", GsonUtil.getGson().toJsonTree(Via.getAPI().getSupportedVersions())); + } + + if (!Via.getAPI().getServerVersion().isKnown()) { // Set the Server protocol if the detection on startup failed + ProtocolManagerImpl protocolManager = (ProtocolManagerImpl) Via.getManager().getProtocolManager(); + protocolManager.setServerProtocol(new ServerProtocolVersionSingleton(ProtocolVersion.getProtocol(protocolVersion).getVersion())); + } + + // Ensure the server has a version provider + VersionProvider versionProvider = Via.getManager().getProviders().get(VersionProvider.class); + if (versionProvider == null) { + wrapper.user().setActive(false); + return; + } + + int closestServerProtocol = versionProvider.getClosestServerProtocol(wrapper.user()); + List protocols = null; + if (info.getProtocolVersion() >= closestServerProtocol || Via.getPlatform().isOldClientsAllowed()) { + protocols = Via.getManager().getProtocolManager().getProtocolPath(info.getProtocolVersion(), closestServerProtocol); + } + + if (protocols != null) { + if (protocolVersion == closestServerProtocol || protocolVersion == 0) { // Fix ServerListPlus + ProtocolVersion prot = ProtocolVersion.getProtocol(info.getProtocolVersion()); + version.addProperty("protocol", prot.getOriginalVersion()); + } + } else { + // not compatible :(, *plays very sad violin* + wrapper.user().setActive(false); + } + + if (Via.getConfig().blockedProtocolVersions().contains(info.getProtocolVersion())) { + version.addProperty("protocol", -1); // Show blocked versions as outdated + } + + wrapper.set(Type.STRING, 0, GsonUtil.getGson().toJson(json)); // Update value + } catch (JsonParseException e) { + e.printStackTrace(); } }); } }); // Login Success Packet - registerClientbound(ClientboundLoginPackets.GAME_PROFILE, new PacketHandlers() { - @Override - public void register() { - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - ProtocolInfo info = wrapper.user().getProtocolInfo(); - info.setState(State.PLAY); + registerClientbound(ClientboundLoginPackets.GAME_PROFILE, wrapper -> { + ProtocolInfo info = wrapper.user().getProtocolInfo(); + info.setState(State.PLAY); - UUID uuid = passthroughLoginUUID(wrapper); - info.setUuid(uuid); + UUID uuid = passthroughLoginUUID(wrapper); + info.setUuid(uuid); - String username = wrapper.passthrough(Type.STRING); - info.setUsername(username); - // Add to ported clients - Via.getManager().getConnectionManager().onLoginSuccess(wrapper.user()); + String username = wrapper.passthrough(Type.STRING); + info.setUsername(username); + // Add to ported clients + Via.getManager().getConnectionManager().onLoginSuccess(wrapper.user()); - if (!info.getPipeline().hasNonBaseProtocols()) { // Only base protocol - wrapper.user().setActive(false); - } + if (!info.getPipeline().hasNonBaseProtocols()) { // Only base protocol + wrapper.user().setActive(false); + } - if (Via.getManager().isDebug()) { - // Print out the route to console - Via.getPlatform().getLogger().log(Level.INFO, "{0} logged in with protocol {1}, Route: {2}", - new Object[]{ - username, - info.getProtocolVersion(), - Joiner.on(", ").join(info.getPipeline().pipes(), ", ") - }); - } - } - }); + if (Via.getManager().isDebug()) { + // Print out the route to console + Via.getPlatform().getLogger().log(Level.INFO, "{0} logged in with protocol {1}, Route: {2}", + new Object[]{ + username, + info.getProtocolVersion(), + Joiner.on(", ").join(info.getPipeline().pipes(), ", ") + }); } }); /* Incoming Packets */ // Login Start Packet - registerServerbound(ServerboundLoginPackets.HELLO, new PacketHandlers() { - @Override - public void register() { - handler(new PacketHandler() { - @Override - public void handle(final PacketWrapper wrapper) throws Exception { - int protocol = wrapper.user().getProtocolInfo().getProtocolVersion(); - if (Via.getConfig().blockedProtocolVersions().contains(protocol)) { - if (!wrapper.user().getChannel().isOpen()) return; - if (!wrapper.user().shouldApplyBlockProtocol()) return; + registerServerbound(ServerboundLoginPackets.HELLO, wrapper -> { + int protocol = wrapper.user().getProtocolInfo().getProtocolVersion(); + if (Via.getConfig().blockedProtocolVersions().contains(protocol)) { + if (!wrapper.user().getChannel().isOpen()) return; + if (!wrapper.user().shouldApplyBlockProtocol()) return; - PacketWrapper disconnectPacket = PacketWrapper.create(ClientboundLoginPackets.LOGIN_DISCONNECT, wrapper.user()); // Disconnect Packet - Protocol1_9To1_8.FIX_JSON.write(disconnectPacket, ChatColorUtil.translateAlternateColorCodes(Via.getConfig().getBlockedDisconnectMsg())); - wrapper.cancel(); // cancel current + PacketWrapper disconnectPacket = PacketWrapper.create(ClientboundLoginPackets.LOGIN_DISCONNECT, wrapper.user()); // Disconnect Packet + Protocol1_9To1_8.FIX_JSON.write(disconnectPacket, ChatColorUtil.translateAlternateColorCodes(Via.getConfig().getBlockedDisconnectMsg())); + wrapper.cancel(); // cancel current - // Send and close - ChannelFuture future = disconnectPacket.sendFuture(BaseProtocol.class); - future.addListener(f -> wrapper.user().getChannel().close()); - } - } - }); + // Send and close + ChannelFuture future = disconnectPacket.sendFuture(BaseProtocol.class); + future.addListener(f -> wrapper.user().getChannel().close()); } }); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_10to1_9_3/Protocol1_10To1_9_3_4.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_10to1_9_3/Protocol1_10To1_9_3_4.java index f282e4263..831ee1a65 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_10to1_9_3/Protocol1_10To1_9_3_4.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_10to1_9_3/Protocol1_10To1_9_3_4.java @@ -25,7 +25,6 @@ import com.viaversion.viaversion.api.minecraft.chunks.PaletteType; import com.viaversion.viaversion.api.minecraft.metadata.Metadata; import com.viaversion.viaversion.api.protocol.AbstractProtocol; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.protocol.remapper.ValueTransformer; import com.viaversion.viaversion.api.rewriter.ItemRewriter; @@ -37,7 +36,6 @@ import com.viaversion.viaversion.protocols.protocol1_9_1_2to1_9_3_4.types.Chunk1 import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ClientboundPackets1_9_3; import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ServerboundPackets1_9_3; import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; - import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; @@ -96,12 +94,9 @@ public class Protocol1_10To1_9_3_4 extends AbstractProtocol { + int id = wrapper.get(Type.VAR_INT, 0); + wrapper.set(Type.VAR_INT, 0, getNewSoundId(id)); }); } }); @@ -158,14 +153,11 @@ public class Protocol1_10To1_9_3_4 extends AbstractProtocol { + ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); - int dimensionId = wrapper.get(Type.INT, 1); - clientWorld.setEnvironment(dimensionId); - } + int dimensionId = wrapper.get(Type.INT, 1); + clientWorld.setEnvironment(dimensionId); }); } }); @@ -176,37 +168,26 @@ public class Protocol1_10To1_9_3_4 extends AbstractProtocol { + ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); - int dimensionId = wrapper.get(Type.INT, 0); - clientWorld.setEnvironment(dimensionId); - } + int dimensionId = wrapper.get(Type.INT, 0); + clientWorld.setEnvironment(dimensionId); }); } }); // Chunk Data - registerClientbound(ClientboundPackets1_9_3.CHUNK_DATA, new PacketHandlers() { - @Override - public void register() { - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); - Chunk chunk = wrapper.passthrough(new Chunk1_9_3_4Type(clientWorld)); + registerClientbound(ClientboundPackets1_9_3.CHUNK_DATA, wrapper -> { + ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); + Chunk chunk = wrapper.passthrough(new Chunk1_9_3_4Type(clientWorld)); - if (Via.getConfig().isReplacePistons()) { - int replacementId = Via.getConfig().getPistonReplacementId(); - for (ChunkSection section : chunk.getSections()) { - if (section == null) continue; - section.palette(PaletteType.BLOCKS).replaceId(36, replacementId); - } - } - } - }); + if (Via.getConfig().isReplacePistons()) { + int replacementId = Via.getConfig().getPistonReplacementId(); + for (ChunkSection section : chunk.getSections()) { + if (section == null) continue; + section.palette(PaletteType.BLOCKS).replaceId(36, replacementId); + } } }); @@ -217,12 +198,9 @@ public class Protocol1_10To1_9_3_4 extends AbstractProtocol { + ResourcePackTracker tracker = wrapper.user().get(ResourcePackTracker.class); + tracker.setLastHash(wrapper.get(Type.STRING, 1)); // Store the hash for resourcepack status }); } }); @@ -231,13 +209,10 @@ public class Protocol1_10To1_9_3_4 extends AbstractProtocol { + ResourcePackTracker tracker = wrapper.user().get(ResourcePackTracker.class); + wrapper.write(Type.STRING, tracker.getLastHash()); + wrapper.write(Type.VAR_INT, wrapper.read(Type.VAR_INT)); }); } }); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_11to1_10/Protocol1_11To1_10.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_11to1_10/Protocol1_11To1_10.java index 7a6140732..837a05e86 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_11to1_10/Protocol1_11To1_10.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_11to1_10/Protocol1_11To1_10.java @@ -25,7 +25,6 @@ import com.viaversion.viaversion.api.minecraft.chunks.Chunk; import com.viaversion.viaversion.api.minecraft.entities.Entity1_11Types; import com.viaversion.viaversion.api.protocol.AbstractProtocol; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.protocol.remapper.ValueTransformer; import com.viaversion.viaversion.api.type.Type; @@ -90,21 +89,18 @@ public class Protocol1_11To1_10 extends AbstractProtocol { + int entityId = wrapper.get(Type.VAR_INT, 0); + // Change Type :) + int type = wrapper.get(Type.VAR_INT, 1); - Entity1_11Types.EntityType entType = MetadataRewriter1_11To1_10.rewriteEntityType(type, wrapper.get(Types1_9.METADATA_LIST, 0)); - if (entType != null) { - wrapper.set(Type.VAR_INT, 1, entType.getId()); + Entity1_11Types.EntityType entType = MetadataRewriter1_11To1_10.rewriteEntityType(type, wrapper.get(Types1_9.METADATA_LIST, 0)); + if (entType != null) { + wrapper.set(Type.VAR_INT, 1, entType.getId()); - // Register Type ID - wrapper.user().getEntityTracker(Protocol1_11To1_10.class).addEntity(entityId, entType); - entityRewriter.handleMetadata(entityId, wrapper.get(Types1_9.METADATA_LIST, 0), wrapper.user()); - } + // Register Type ID + wrapper.user().getEntityTracker(Protocol1_11To1_10.class).addEntity(entityId, entType); + entityRewriter.handleMetadata(entityId, wrapper.get(Types1_9.METADATA_LIST, 0), wrapper.user()); } }); } @@ -118,11 +114,8 @@ public class Protocol1_11To1_10 extends AbstractProtocol { + wrapper.write(Type.VAR_INT, 1); // 2 - Pickup Count }); } }); @@ -140,17 +133,14 @@ public class Protocol1_11To1_10 extends AbstractProtocol { + int entityID = wrapper.get(Type.VAR_INT, 0); + if (Via.getConfig().isHologramPatch()) { + EntityTracker1_11 tracker = wrapper.user().getEntityTracker(Protocol1_11To1_10.class); + if (tracker.isHologram(entityID)) { + Double newValue = wrapper.get(Type.DOUBLE, 1); + newValue -= (Via.getConfig().getHologramYOffset()); + wrapper.set(Type.DOUBLE, 1, newValue); } } }); @@ -164,15 +154,12 @@ public class Protocol1_11To1_10 extends AbstractProtocol { + int action = wrapper.get(Type.VAR_INT, 0); - // Handle the new ActionBar - if (action >= 2) { - wrapper.set(Type.VAR_INT, 0, action + 1); - } + // Handle the new ActionBar + if (action >= 2) { + wrapper.set(Type.VAR_INT, 0, action + 1); } }); } @@ -187,14 +174,11 @@ public class Protocol1_11To1_10 extends AbstractProtocol { + if (Via.getConfig().isPistonAnimationPatch()) { + int id = actionWrapper.get(Type.VAR_INT, 0); + if (id == 33 || id == 29) { + actionWrapper.cancel(); } } }); @@ -208,46 +192,35 @@ public class Protocol1_11To1_10 extends AbstractProtocol { + CompoundTag tag = wrapper.get(Type.NBT, 0); + if (wrapper.get(Type.UNSIGNED_BYTE, 0) == 1) + EntityIdRewriter.toClientSpawner(tag); - if (tag.contains("id")) - // Handle new identifier - ((StringTag) tag.get("id")).setValue(BlockEntityRewriter.toNewIdentifier((String) tag.get("id").getValue())); + if (tag.contains("id")) + // Handle new identifier + ((StringTag) tag.get("id")).setValue(BlockEntityRewriter.toNewIdentifier((String) tag.get("id").getValue())); - } }); } }); - registerClientbound(ClientboundPackets1_9_3.CHUNK_DATA, new PacketHandlers() { - @Override - public void register() { - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); + registerClientbound(ClientboundPackets1_9_3.CHUNK_DATA, wrapper -> { + ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); - Chunk chunk = wrapper.passthrough(new Chunk1_9_3_4Type(clientWorld)); + Chunk chunk = wrapper.passthrough(new Chunk1_9_3_4Type(clientWorld)); - if (chunk.getBlockEntities() == null) return; - for (CompoundTag tag : chunk.getBlockEntities()) { - if (tag.contains("id")) { - String identifier = ((StringTag) tag.get("id")).getValue(); - if (identifier.equals("MobSpawner")) { - EntityIdRewriter.toClientSpawner(tag); - } - - // Handle new identifier - ((StringTag) tag.get("id")).setValue(BlockEntityRewriter.toNewIdentifier(identifier)); - } - } + if (chunk.getBlockEntities() == null) return; + for (CompoundTag tag : chunk.getBlockEntities()) { + if (tag.contains("id")) { + String identifier = ((StringTag) tag.get("id")).getValue(); + if (identifier.equals("MobSpawner")) { + EntityIdRewriter.toClientSpawner(tag); } - }); + + // Handle new identifier + ((StringTag) tag.get("id")).setValue(BlockEntityRewriter.toNewIdentifier(identifier)); + } } }); @@ -326,14 +299,11 @@ public class Protocol1_11To1_10 extends AbstractProtocol 100) { - wrapper.set(Type.STRING, 0, msg.substring(0, 100)); - } + handler(wrapper -> { + // 100 character limit on older servers + String msg = wrapper.get(Type.STRING, 0); + if (msg.length() > 100) { + wrapper.set(Type.STRING, 0, msg.substring(0, 100)); } }); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_11to1_10/metadata/MetadataRewriter1_11To1_10.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_11to1_10/metadata/MetadataRewriter1_11To1_10.java index cf8021c59..3b636a133 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_11to1_10/metadata/MetadataRewriter1_11To1_10.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_11to1_10/metadata/MetadataRewriter1_11To1_10.java @@ -32,7 +32,6 @@ import com.viaversion.viaversion.protocols.protocol1_11to1_10.Protocol1_11To1_10 import com.viaversion.viaversion.protocols.protocol1_11to1_10.storage.EntityTracker1_11; import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ClientboundPackets1_9_3; import com.viaversion.viaversion.rewriter.EntityRewriter; - import java.util.List; import java.util.Optional; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_11to1_10/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_11to1_10/packets/InventoryPackets.java index bc0c47b0e..8c75a785b 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_11to1_10/packets/InventoryPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_11to1_10/packets/InventoryPackets.java @@ -18,8 +18,6 @@ package com.viaversion.viaversion.protocols.protocol1_11to1_10.packets; import com.viaversion.viaversion.api.minecraft.item.Item; -import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_11to1_10.EntityIdRewriter; @@ -46,25 +44,22 @@ public class InventoryPackets extends ItemRewriter { + if (wrapper.get(Type.STRING, 0).equalsIgnoreCase("MC|TrList")) { + wrapper.passthrough(Type.INT); // Passthrough Window ID - int size = wrapper.passthrough(Type.UNSIGNED_BYTE); - for (int i = 0; i < size; i++) { - EntityIdRewriter.toClientItem(wrapper.passthrough(Type.ITEM)); // Input Item - EntityIdRewriter.toClientItem(wrapper.passthrough(Type.ITEM)); // Output Item + int size = wrapper.passthrough(Type.UNSIGNED_BYTE); + for (int i = 0; i < size; i++) { + EntityIdRewriter.toClientItem(wrapper.passthrough(Type.ITEM)); // Input Item + EntityIdRewriter.toClientItem(wrapper.passthrough(Type.ITEM)); // Output Item - boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item - if (secondItem) - EntityIdRewriter.toClientItem(wrapper.passthrough(Type.ITEM)); // Second Item + boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item + if (secondItem) + EntityIdRewriter.toClientItem(wrapper.passthrough(Type.ITEM)); // Second Item - wrapper.passthrough(Type.BOOLEAN); // Trade disabled - wrapper.passthrough(Type.INT); // Number of tools uses - wrapper.passthrough(Type.INT); // Maximum number of trade uses - } + wrapper.passthrough(Type.BOOLEAN); // Trade disabled + wrapper.passthrough(Type.INT); // Number of tools uses + wrapper.passthrough(Type.INT); // Maximum number of trade uses } } }); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/ChatItemRewriter.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/ChatItemRewriter.java index 152e854bd..b514c3217 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/ChatItemRewriter.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/ChatItemRewriter.java @@ -22,7 +22,6 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonPrimitive; import com.viaversion.viaversion.api.connection.UserConnection; - import java.util.regex.Pattern; public class ChatItemRewriter { diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/Protocol1_12To1_11_1.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/Protocol1_12To1_11_1.java index 336a03d5e..4072b4c92 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/Protocol1_12To1_11_1.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/Protocol1_12To1_11_1.java @@ -30,8 +30,6 @@ import com.viaversion.viaversion.api.minecraft.chunks.PaletteType; import com.viaversion.viaversion.api.minecraft.entities.Entity1_12Types; import com.viaversion.viaversion.api.platform.providers.ViaProviders; import com.viaversion.viaversion.api.protocol.AbstractProtocol; -import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; import com.viaversion.viaversion.api.type.Type; @@ -97,61 +95,45 @@ public class Protocol1_12To1_11_1 extends AbstractProtocol { + if (!Via.getConfig().is1_12NBTArrayFix()) return; + try { + JsonElement obj = Protocol1_9To1_8.FIX_JSON.transform(null, wrapper.passthrough(Type.COMPONENT).toString()); + TranslateRewriter.toClient(obj, wrapper.user()); + ChatItemRewriter.toClient(obj, wrapper.user()); + wrapper.set(Type.COMPONENT, 0, obj); + } catch (Exception e) { + e.printStackTrace(); } }); - registerClientbound(ClientboundPackets1_9_3.CHUNK_DATA, new PacketHandlers() { - @Override - public void register() { - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); + registerClientbound(ClientboundPackets1_9_3.CHUNK_DATA, wrapper -> { + ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); - Chunk1_9_3_4Type type = new Chunk1_9_3_4Type(clientWorld); - Chunk chunk = wrapper.passthrough(type); + Chunk1_9_3_4Type type = new Chunk1_9_3_4Type(clientWorld); + Chunk chunk = wrapper.passthrough(type); - for (int s = 0; s < chunk.getSections().length; s++) { - ChunkSection section = chunk.getSections()[s]; - if (section == null) continue; - DataPalette blocks = section.palette(PaletteType.BLOCKS); + for (int s = 0; s < chunk.getSections().length; s++) { + ChunkSection section = chunk.getSections()[s]; + if (section == null) continue; + DataPalette blocks = section.palette(PaletteType.BLOCKS); - for (int idx = 0; idx < ChunkSection.SIZE; idx++) { - int id = blocks.idAt(idx) >> 4; - // Is this a bed? - if (id != 26) continue; + for (int idx = 0; idx < ChunkSection.SIZE; idx++) { + int id = blocks.idAt(idx) >> 4; + // Is this a bed? + if (id != 26) continue; - // NBT -> { color:14, x:132, y:64, z:222, id:"minecraft:bed" } (Debug output) - CompoundTag tag = new CompoundTag(); - tag.put("color", new IntTag(14)); // Set color to red (Default in previous versions) - tag.put("x", new IntTag(ChunkSection.xFromIndex(idx) + (chunk.getX() << 4))); - tag.put("y", new IntTag(ChunkSection.yFromIndex(idx) + (s << 4))); - tag.put("z", new IntTag(ChunkSection.zFromIndex(idx) + (chunk.getZ() << 4))); - tag.put("id", new StringTag("minecraft:bed")); + // NBT -> { color:14, x:132, y:64, z:222, id:"minecraft:bed" } (Debug output) + CompoundTag tag = new CompoundTag(); + tag.put("color", new IntTag(14)); // Set color to red (Default in previous versions) + tag.put("x", new IntTag(ChunkSection.xFromIndex(idx) + (chunk.getX() << 4))); + tag.put("y", new IntTag(ChunkSection.yFromIndex(idx) + (s << 4))); + tag.put("z", new IntTag(ChunkSection.zFromIndex(idx) + (chunk.getZ() << 4))); + tag.put("id", new StringTag("minecraft:bed")); - // Add a fake block entity - chunk.getBlockEntities().add(tag); - } - } - } - }); + // Add a fake block entity + chunk.getBlockEntities().add(tag); + } } }); @@ -206,22 +188,19 @@ public class Protocol1_12To1_11_1 extends AbstractProtocol 7) { - wrapper.set(Type.STRING, 0, locale.substring(0, 7)); - } + handler(wrapper -> { + // As part of the fix for MC-111054, the max length of + // the locale was raised to 16 (from 7), and the client + // now makes sure that resource packs have names in that + // length. However, for older servers, it is still 7, + // and thus the server will reject it (and the client + // won't know that the pack's invalid). + // The fix is to just silently lower the length. The + // server doesn't actually use the locale anywhere, so + // this is fine. + String locale = wrapper.get(Type.STRING, 0); + if (locale.length() > 7) { + wrapper.set(Type.STRING, 0, locale.substring(0, 7)); } }); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/data/AchievementTranslationMapping.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/data/AchievementTranslationMapping.java index adfbbfc00..93b4313c3 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/data/AchievementTranslationMapping.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/data/AchievementTranslationMapping.java @@ -18,7 +18,6 @@ package com.viaversion.viaversion.protocols.protocol1_12to1_11_1.data; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; - import java.util.HashSet; import java.util.Set; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/metadata/MetadataRewriter1_12To1_11_1.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/metadata/MetadataRewriter1_12To1_11_1.java index b34081db9..929ba6bc2 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/metadata/MetadataRewriter1_12To1_11_1.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/metadata/MetadataRewriter1_12To1_11_1.java @@ -25,7 +25,6 @@ import com.viaversion.viaversion.api.minecraft.metadata.Metadata; import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.Protocol1_12To1_11_1; import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ClientboundPackets1_9_3; import com.viaversion.viaversion.rewriter.EntityRewriter; - import java.util.List; public class MetadataRewriter1_12To1_11_1 extends EntityRewriter { diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/packets/InventoryPackets.java index 5ba47b904..57f4b03b0 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/packets/InventoryPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/packets/InventoryPackets.java @@ -19,8 +19,6 @@ package com.viaversion.viaversion.protocols.protocol1_12to1_11_1.packets; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.minecraft.item.Item; -import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.Protocol1_12To1_11_1; @@ -48,26 +46,23 @@ public class InventoryPackets extends ItemRewriter { + if (wrapper.get(Type.STRING, 0).equalsIgnoreCase("MC|TrList")) { + wrapper.passthrough(Type.INT); // Passthrough Window ID - int size = wrapper.passthrough(Type.UNSIGNED_BYTE); - for (int i = 0; i < size; i++) { - handleItemToClient(wrapper.passthrough(Type.ITEM)); // Input Item - handleItemToClient(wrapper.passthrough(Type.ITEM)); // Output Item + int size = wrapper.passthrough(Type.UNSIGNED_BYTE); + for (int i = 0; i < size; i++) { + handleItemToClient(wrapper.passthrough(Type.ITEM)); // Input Item + handleItemToClient(wrapper.passthrough(Type.ITEM)); // Output Item - boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item - if (secondItem) { - handleItemToClient(wrapper.passthrough(Type.ITEM)); // Second Item - } - - wrapper.passthrough(Type.BOOLEAN); // Trade disabled - wrapper.passthrough(Type.INT); // Number of tools uses - wrapper.passthrough(Type.INT); // Maximum number of trade uses + boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item + if (secondItem) { + handleItemToClient(wrapper.passthrough(Type.ITEM)); // Second Item } + + wrapper.passthrough(Type.BOOLEAN); // Trade disabled + wrapper.passthrough(Type.INT); // Number of tools uses + wrapper.passthrough(Type.INT); // Maximum number of trade uses } } }); @@ -85,30 +80,27 @@ public class InventoryPackets extends ItemRewriter { + Item item = wrapper.get(Type.ITEM, 0); + if (!Via.getConfig().is1_12QuickMoveActionFix()) { + handleItemToServer(item); + return; + } + byte button = wrapper.get(Type.BYTE, 0); + int mode = wrapper.get(Type.VAR_INT, 0); + // QUICK_MOVE PATCH (Shift + (click/double click)) + if (mode == 1 && button == 0 && item == null) { + short windowId = wrapper.get(Type.UNSIGNED_BYTE, 0); + short slotId = wrapper.get(Type.SHORT, 0); + short actionId = wrapper.get(Type.SHORT, 1); + InventoryQuickMoveProvider provider = Via.getManager().getProviders().get(InventoryQuickMoveProvider.class); + boolean succeed = provider.registerQuickMoveAction(windowId, slotId, actionId, wrapper.user()); + if (succeed) { + wrapper.cancel(); } + // otherwise just pass through so the server sends the PacketPlayOutTransaction packet. + } else { + handleItemToServer(item); } }); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/Protocol1_13_1To1_13.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/Protocol1_13_1To1_13.java index b8bb127ff..8df40f81f 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/Protocol1_13_1To1_13.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/Protocol1_13_1To1_13.java @@ -25,7 +25,6 @@ import com.viaversion.viaversion.api.minecraft.entities.Entity1_13Types; import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.protocol.AbstractProtocol; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.protocol.remapper.ValueTransformer; import com.viaversion.viaversion.api.type.Type; @@ -81,13 +80,10 @@ public class Protocol1_13_1To1_13 extends AbstractProtocol { + int hand = wrapper.read(Type.VAR_INT); + if (hand == 1) { + wrapper.cancel(); } }); } @@ -100,19 +96,16 @@ public class Protocol1_13_1To1_13 extends AbstractProtocol { + int start = wrapper.get(Type.VAR_INT, 1); + wrapper.set(Type.VAR_INT, 1, start + 1); // Offset by +1 to take into account / at beginning + // Passthrough suggestions + int count = wrapper.get(Type.VAR_INT, 3); + for (int i = 0; i < count; i++) { + wrapper.passthrough(Type.STRING); + boolean hasTooltip = wrapper.passthrough(Type.BOOLEAN); + if (hasTooltip) { + wrapper.passthrough(Type.STRING); // JSON Tooltip } } }); @@ -124,19 +117,16 @@ public class Protocol1_13_1To1_13 extends AbstractProtocol { + int action = wrapper.get(Type.VAR_INT, 0); + if (action == 0) { + wrapper.passthrough(Type.COMPONENT); + wrapper.passthrough(Type.FLOAT); + wrapper.passthrough(Type.VAR_INT); + wrapper.passthrough(Type.VAR_INT); + short flags = wrapper.read(Type.BYTE); + if ((flags & 0x02) != 0) flags |= 0x04; + wrapper.write(Type.UNSIGNED_BYTE, flags); } }); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/metadata/MetadataRewriter1_13_1To1_13.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/metadata/MetadataRewriter1_13_1To1_13.java index d60525a5d..6b46a1644 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/metadata/MetadataRewriter1_13_1To1_13.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/metadata/MetadataRewriter1_13_1To1_13.java @@ -27,7 +27,6 @@ import com.viaversion.viaversion.api.type.types.version.Types1_13; import com.viaversion.viaversion.protocols.protocol1_13_1to1_13.Protocol1_13_1To1_13; import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13; import com.viaversion.viaversion.rewriter.EntityRewriter; - import java.util.List; public class MetadataRewriter1_13_1To1_13 extends EntityRewriter { diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/packets/EntityPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/packets/EntityPackets.java index 64dd03b40..12546673f 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/packets/EntityPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/packets/EntityPackets.java @@ -18,8 +18,6 @@ package com.viaversion.viaversion.protocols.protocol1_13_1to1_13.packets; import com.viaversion.viaversion.api.minecraft.entities.Entity1_13Types; -import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.api.type.types.version.Types1_13; @@ -46,21 +44,18 @@ public class EntityPackets { map(Type.INT); // 8 - Data // Track Entity - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int entityId = wrapper.get(Type.VAR_INT, 0); - byte type = wrapper.get(Type.BYTE, 0); - Entity1_13Types.EntityType entType = Entity1_13Types.getTypeFromId(type, true); + handler(wrapper -> { + int entityId = wrapper.get(Type.VAR_INT, 0); + byte type = wrapper.get(Type.BYTE, 0); + Entity1_13Types.EntityType entType = Entity1_13Types.getTypeFromId(type, true); - if (entType != null) { - if (entType.is(Entity1_13Types.EntityType.FALLING_BLOCK)) { - int data = wrapper.get(Type.INT, 0); - wrapper.set(Type.INT, 0, protocol.getMappingData().getNewBlockStateId(data)); - } - // Register Type ID - wrapper.user().getEntityTracker(Protocol1_13_1To1_13.class).addEntity(entityId, entType); + if (entType != null) { + if (entType.is(Entity1_13Types.EntityType.FALLING_BLOCK)) { + int data = wrapper.get(Type.INT, 0); + wrapper.set(Type.INT, 0, protocol.getMappingData().getNewBlockStateId(data)); } + // Register Type ID + wrapper.user().getEntityTracker(Protocol1_13_1To1_13.class).addEntity(entityId, entType); } }); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/packets/InventoryPackets.java index 5a0f9c9a6..25234ca8a 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/packets/InventoryPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/packets/InventoryPackets.java @@ -17,8 +17,6 @@ */ package com.viaversion.viaversion.protocols.protocol1_13_1to1_13.packets; -import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_13_1to1_13.Protocol1_13_1To1_13; @@ -45,30 +43,27 @@ public class InventoryPackets extends ItemRewriter { + String channel = wrapper.get(Type.STRING, 0); + if (channel.equals("minecraft:trader_list") || channel.equals("trader_list")) { + wrapper.passthrough(Type.INT); // Passthrough Window ID - int size = wrapper.passthrough(Type.UNSIGNED_BYTE); - for (int i = 0; i < size; i++) { - // Input Item + int size = wrapper.passthrough(Type.UNSIGNED_BYTE); + for (int i = 0; i < size; i++) { + // Input Item + handleItemToClient(wrapper.passthrough(Type.FLAT_ITEM)); + // Output Item + handleItemToClient(wrapper.passthrough(Type.FLAT_ITEM)); + + boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item + if (secondItem) { + // Second Item handleItemToClient(wrapper.passthrough(Type.FLAT_ITEM)); - // Output Item - handleItemToClient(wrapper.passthrough(Type.FLAT_ITEM)); - - boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item - if (secondItem) { - // Second Item - handleItemToClient(wrapper.passthrough(Type.FLAT_ITEM)); - } - - wrapper.passthrough(Type.BOOLEAN); // Trade disabled - wrapper.passthrough(Type.INT); // Number of tools uses - wrapper.passthrough(Type.INT); // Maximum number of trade uses } + + wrapper.passthrough(Type.BOOLEAN); // Trade disabled + wrapper.passthrough(Type.INT); // Number of tools uses + wrapper.passthrough(Type.INT); // Maximum number of trade uses } } }); @@ -78,18 +73,13 @@ public class InventoryPackets extends ItemRewriter recipeRewriter = new RecipeRewriter1_13_2<>(protocol); - protocol.registerClientbound(ClientboundPackets1_13.DECLARE_RECIPES, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - int size = wrapper.passthrough(Type.VAR_INT); - for (int i = 0; i < size; i++) { - // First id, then type - String id = wrapper.passthrough(Type.STRING); - String type = wrapper.passthrough(Type.STRING).replace("minecraft:", ""); - recipeRewriter.handleRecipeType(wrapper, type); - } - }); + protocol.registerClientbound(ClientboundPackets1_13.DECLARE_RECIPES, wrapper -> { + int size = wrapper.passthrough(Type.VAR_INT); + for (int i = 0; i < size; i++) { + // First id, then type + wrapper.passthrough(Type.STRING); // Id + String type = wrapper.passthrough(Type.STRING).replace("minecraft:", ""); + recipeRewriter.handleRecipeType(wrapper, type); } }); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/packets/WorldPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/packets/WorldPackets.java index 8cca6ac6f..6f2930534 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/packets/WorldPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_1to1_13/packets/WorldPackets.java @@ -21,8 +21,6 @@ import com.viaversion.viaversion.api.minecraft.chunks.Chunk; import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection; import com.viaversion.viaversion.api.minecraft.chunks.DataPalette; import com.viaversion.viaversion.api.minecraft.chunks.PaletteType; -import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_13_1to1_13.Protocol1_13_1To1_13; @@ -36,28 +34,20 @@ public class WorldPackets { public static void register(Protocol1_13_1To1_13 protocol) { BlockRewriter blockRewriter = new BlockRewriter<>(protocol, Type.POSITION); - protocol.registerClientbound(ClientboundPackets1_13.CHUNK_DATA, new PacketHandlers() { - @Override - public void register() { - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); - Chunk chunk = wrapper.passthrough(new Chunk1_13Type(clientWorld)); + protocol.registerClientbound(ClientboundPackets1_13.CHUNK_DATA, wrapper -> { + ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); + Chunk chunk = wrapper.passthrough(new Chunk1_13Type(clientWorld)); - for (ChunkSection section : chunk.getSections()) { - if (section == null) { - continue; - } + for (ChunkSection section : chunk.getSections()) { + if (section == null) { + continue; + } - DataPalette palette = section.palette(PaletteType.BLOCKS); - for (int i = 0; i < palette.size(); i++) { - int mappedBlockStateId = protocol.getMappingData().getNewBlockStateId(palette.idByIndex(i)); - palette.setIdByIndex(i, mappedBlockStateId); - } - } - } - }); + DataPalette palette = section.palette(PaletteType.BLOCKS); + for (int i = 0; i < palette.size(); i++) { + int mappedBlockStateId = protocol.getMappingData().getNewBlockStateId(palette.idByIndex(i)); + palette.setIdByIndex(i, mappedBlockStateId); + } } }); @@ -112,14 +102,11 @@ public class WorldPackets { map(Type.UNSIGNED_BYTE); // 1 - Gamemode map(Type.INT); // 2 - Dimension - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - // Store the player - ClientWorld clientChunks = wrapper.user().get(ClientWorld.class); - int dimensionId = wrapper.get(Type.INT, 1); - clientChunks.setEnvironment(dimensionId); - } + handler(wrapper -> { + // Store the player + ClientWorld clientChunks = wrapper.user().get(ClientWorld.class); + int dimensionId = wrapper.get(Type.INT, 1); + clientChunks.setEnvironment(dimensionId); }); } }); @@ -128,13 +115,10 @@ public class WorldPackets { @Override public void register() { map(Type.INT); // 0 - Dimension ID - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); - int dimensionId = wrapper.get(Type.INT, 0); - clientWorld.setEnvironment(dimensionId); - } + handler(wrapper -> { + ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); + int dimensionId = wrapper.get(Type.INT, 0); + clientWorld.setEnvironment(dimensionId); }); } }); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_2to1_13_1/Protocol1_13_2To1_13_1.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_2to1_13_1/Protocol1_13_2To1_13_1.java index 0d3699ea0..b14e5f2da 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_2to1_13_1/Protocol1_13_2To1_13_1.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_2to1_13_1/Protocol1_13_2To1_13_1.java @@ -19,8 +19,6 @@ package com.viaversion.viaversion.protocols.protocol1_13_2to1_13_1; import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.protocol.AbstractProtocol; -import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_13_2to1_13_1.packets.EntityPackets; @@ -48,46 +46,38 @@ public class Protocol1_13_2To1_13_1 extends AbstractProtocol { + wrapper.passthrough(Type.BOOLEAN); // Reset/clear + int size = wrapper.passthrough(Type.VAR_INT); // Mapping size - for (int i = 0; i < size; i++) { - wrapper.passthrough(Type.STRING); // Identifier + for (int i = 0; i < size; i++) { + wrapper.passthrough(Type.STRING); // Identifier - // Parent - if (wrapper.passthrough(Type.BOOLEAN)) - wrapper.passthrough(Type.STRING); + // Parent + if (wrapper.passthrough(Type.BOOLEAN)) + wrapper.passthrough(Type.STRING); - // Display data - if (wrapper.passthrough(Type.BOOLEAN)) { - wrapper.passthrough(Type.COMPONENT); // Title - wrapper.passthrough(Type.COMPONENT); // Description - Item icon = wrapper.read(Type.FLAT_ITEM); - wrapper.write(Type.FLAT_VAR_INT_ITEM, icon); - wrapper.passthrough(Type.VAR_INT); // Frame type - int flags = wrapper.passthrough(Type.INT); // Flags - if ((flags & 1) != 0) { - wrapper.passthrough(Type.STRING); // Background texture - } - wrapper.passthrough(Type.FLOAT); // X - wrapper.passthrough(Type.FLOAT); // Y - } - - wrapper.passthrough(Type.STRING_ARRAY); // Criteria - - int arrayLength = wrapper.passthrough(Type.VAR_INT); - for (int array = 0; array < arrayLength; array++) { - wrapper.passthrough(Type.STRING_ARRAY); // String array - } - } + // Display data + if (wrapper.passthrough(Type.BOOLEAN)) { + wrapper.passthrough(Type.COMPONENT); // Title + wrapper.passthrough(Type.COMPONENT); // Description + Item icon = wrapper.read(Type.FLAT_ITEM); + wrapper.write(Type.FLAT_VAR_INT_ITEM, icon); + wrapper.passthrough(Type.VAR_INT); // Frame type + int flags = wrapper.passthrough(Type.INT); // Flags + if ((flags & 1) != 0) { + wrapper.passthrough(Type.STRING); // Background texture } - }); + wrapper.passthrough(Type.FLOAT); // X + wrapper.passthrough(Type.FLOAT); // Y + } + + wrapper.passthrough(Type.STRING_ARRAY); // Criteria + + int arrayLength = wrapper.passthrough(Type.VAR_INT); + for (int array = 0; array < arrayLength; array++) { + wrapper.passthrough(Type.STRING_ARRAY); // String array + } } }); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_2to1_13_1/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_2to1_13_1/packets/InventoryPackets.java index d3a7528f9..3f6de0a6e 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_2to1_13_1/packets/InventoryPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_2to1_13_1/packets/InventoryPackets.java @@ -17,8 +17,6 @@ */ package com.viaversion.viaversion.protocols.protocol1_13_2to1_13_1.packets; -import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_13_2to1_13_1.Protocol1_13_2To1_13_1; @@ -48,29 +46,26 @@ public class InventoryPackets { @Override public void register() { map(Type.STRING); // Channel - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - String channel = wrapper.get(Type.STRING, 0); - if (channel.equals("minecraft:trader_list") || channel.equals("trader_list")) { - wrapper.passthrough(Type.INT); // Passthrough Window ID + handler(wrapper -> { + String channel = wrapper.get(Type.STRING, 0); + if (channel.equals("minecraft:trader_list") || channel.equals("trader_list")) { + wrapper.passthrough(Type.INT); // Passthrough Window ID - int size = wrapper.passthrough(Type.UNSIGNED_BYTE); - for (int i = 0; i < size; i++) { - // Input Item + int size = wrapper.passthrough(Type.UNSIGNED_BYTE); + for (int i = 0; i < size; i++) { + // Input Item + wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM)); + // Output Item + wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM)); + + boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item + if (secondItem) { wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM)); - // Output Item - wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM)); - - boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item - if (secondItem) { - wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM)); - } - - wrapper.passthrough(Type.BOOLEAN); // Trade disabled - wrapper.passthrough(Type.INT); // Number of tools uses - wrapper.passthrough(Type.INT); // Maximum number of trade uses } + + wrapper.passthrough(Type.BOOLEAN); // Trade disabled + wrapper.passthrough(Type.INT); // Number of tools uses + wrapper.passthrough(Type.INT); // Maximum number of trade uses } } }); @@ -86,42 +81,34 @@ public class InventoryPackets { } }); - protocol.registerClientbound(ClientboundPackets1_13.DECLARE_RECIPES, new PacketHandlers() { - @Override - public void register() { - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int recipesNo = wrapper.passthrough(Type.VAR_INT); - for (int i = 0; i < recipesNo; i++) { - wrapper.passthrough(Type.STRING); // Id - String type = wrapper.passthrough(Type.STRING); - if (type.equals("crafting_shapeless")) { - wrapper.passthrough(Type.STRING); // Group - int ingredientsNo = wrapper.passthrough(Type.VAR_INT); - for (int i1 = 0; i1 < ingredientsNo; i1++) { - wrapper.write(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT, wrapper.read(Type.FLAT_ITEM_ARRAY_VAR_INT)); - } - wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM)); - } else if (type.equals("crafting_shaped")) { - int ingredientsNo = wrapper.passthrough(Type.VAR_INT) * wrapper.passthrough(Type.VAR_INT); - wrapper.passthrough(Type.STRING); // Group - for (int i1 = 0; i1 < ingredientsNo; i1++) { - wrapper.write(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT, wrapper.read(Type.FLAT_ITEM_ARRAY_VAR_INT)); - } - wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM)); - } else if (type.equals("smelting")) { - wrapper.passthrough(Type.STRING); // Group - // Ingredient start - wrapper.write(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT, wrapper.read(Type.FLAT_ITEM_ARRAY_VAR_INT)); - // Ingredient end - wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM)); - wrapper.passthrough(Type.FLOAT); // EXP - wrapper.passthrough(Type.VAR_INT); // Cooking time - } - } + protocol.registerClientbound(ClientboundPackets1_13.DECLARE_RECIPES, wrapper -> { + int recipesNo = wrapper.passthrough(Type.VAR_INT); + for (int i = 0; i < recipesNo; i++) { + wrapper.passthrough(Type.STRING); // Id + String type = wrapper.passthrough(Type.STRING); + if (type.equals("crafting_shapeless")) { + wrapper.passthrough(Type.STRING); // Group + int ingredientsNo = wrapper.passthrough(Type.VAR_INT); + for (int i1 = 0; i1 < ingredientsNo; i1++) { + wrapper.write(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT, wrapper.read(Type.FLAT_ITEM_ARRAY_VAR_INT)); } - }); + wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM)); + } else if (type.equals("crafting_shaped")) { + int ingredientsNo = wrapper.passthrough(Type.VAR_INT) * wrapper.passthrough(Type.VAR_INT); + wrapper.passthrough(Type.STRING); // Group + for (int i1 = 0; i1 < ingredientsNo; i1++) { + wrapper.write(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT, wrapper.read(Type.FLAT_ITEM_ARRAY_VAR_INT)); + } + wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM)); + } else if (type.equals("smelting")) { + wrapper.passthrough(Type.STRING); // Group + // Ingredient start + wrapper.write(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT, wrapper.read(Type.FLAT_ITEM_ARRAY_VAR_INT)); + // Ingredient end + wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM)); + wrapper.passthrough(Type.FLOAT); // EXP + wrapper.passthrough(Type.VAR_INT); // Cooking time + } } }); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_2to1_13_1/packets/WorldPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_2to1_13_1/packets/WorldPackets.java index 9ce8274fa..d463c1f31 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_2to1_13_1/packets/WorldPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13_2to1_13_1/packets/WorldPackets.java @@ -17,8 +17,6 @@ */ package com.viaversion.viaversion.protocols.protocol1_13_2to1_13_1.packets; -import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_13_2to1_13_1.Protocol1_13_2To1_13_1; @@ -40,13 +38,10 @@ public class WorldPackets { map(Type.FLOAT); // 7 - Offset Z map(Type.FLOAT); // 8 - Particle Data map(Type.INT); // 9 - Particle Count - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int id = wrapper.get(Type.INT, 0); - if (id == 27) { - wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM)); - } + handler(wrapper -> { + int id = wrapper.get(Type.INT, 0); + if (id == 27) { + wrapper.write(Type.FLAT_VAR_INT_ITEM, wrapper.read(Type.FLAT_ITEM)); } }); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/Protocol1_13To1_12_2.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/Protocol1_13To1_12_2.java index bd1655ba5..5a45c087d 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/Protocol1_13To1_12_2.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/Protocol1_13To1_12_2.java @@ -166,30 +166,22 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol componentRewriter.processText(wrapper.passthrough(Type.COMPONENT))); - } - }); + registerClientbound(State.LOGIN, 0x00, 0x00, wrapper -> componentRewriter.processText(wrapper.passthrough(Type.COMPONENT))); registerClientbound(State.STATUS, 0x00, 0x00, new PacketHandlers() { @Override public void register() { map(Type.STRING); - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - String response = wrapper.get(Type.STRING, 0); - try { - JsonObject json = GsonUtil.getGson().fromJson(response, JsonObject.class); - if (json.has("favicon")) { - json.addProperty("favicon", json.get("favicon").getAsString().replace("\n", "")); - } - wrapper.set(Type.STRING, 0, GsonUtil.getGson().toJson(json)); - } catch (JsonParseException e) { - e.printStackTrace(); + handler(wrapper -> { + String response = wrapper.get(Type.STRING, 0); + try { + JsonObject json = GsonUtil.getGson().fromJson(response, JsonObject.class); + if (json.has("favicon")) { + json.addProperty("favicon", json.get("favicon").getAsString().replace("\n", "")); } + wrapper.set(Type.STRING, 0, GsonUtil.getGson().toJson(json)); + } catch (JsonParseException e) { + e.printStackTrace(); } }); } @@ -198,71 +190,63 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol remappedStats = new ArrayList<>(); - for (int i = 0; i < size; i++) { - String name = wrapper.read(Type.STRING); - String[] split = name.split("\\."); - int categoryId = 0; - int newId = -1; - int value = wrapper.read(Type.VAR_INT); - if (split.length == 2) { - // Custom types - categoryId = 8; - Integer newIdRaw = StatisticMappings.CUSTOM_STATS.get(name); - if (newIdRaw != null) { - newId = newIdRaw; - } else { - Via.getPlatform().getLogger().warning("Could not find 1.13 -> 1.12.2 statistic mapping for " + name); - } - } else if (split.length > 2) { - String category = split[1]; - //TODO convert string ids (blocks, items, entities) - switch (category) { - case "mineBlock": - categoryId = 0; - break; - case "craftItem": - categoryId = 1; - break; - case "useItem": - categoryId = 2; - break; - case "breakItem": - categoryId = 3; - break; - case "pickup": - categoryId = 4; - break; - case "drop": - categoryId = 5; - break; - case "killEntity": - categoryId = 6; - break; - case "entityKilledBy": - categoryId = 7; - break; - } - } - if (newId != -1) - remappedStats.add(new StatisticData(categoryId, newId, value)); - } - - wrapper.write(Type.VAR_INT, remappedStats.size()); // size - for (StatisticData stat : remappedStats) { - wrapper.write(Type.VAR_INT, stat.getCategoryId()); // category id - wrapper.write(Type.VAR_INT, stat.getNewId()); // statistics id - wrapper.write(Type.VAR_INT, stat.getValue()); // value - } + registerClientbound(ClientboundPackets1_12_1.STATISTICS, wrapper -> { + int size = wrapper.read(Type.VAR_INT); + List remappedStats = new ArrayList<>(); + for (int i = 0; i < size; i++) { + String name = wrapper.read(Type.STRING); + String[] split = name.split("\\."); + int categoryId = 0; + int newId = -1; + int value = wrapper.read(Type.VAR_INT); + if (split.length == 2) { + // Custom types + categoryId = 8; + Integer newIdRaw = StatisticMappings.CUSTOM_STATS.get(name); + if (newIdRaw != null) { + newId = newIdRaw; + } else { + Via.getPlatform().getLogger().warning("Could not find 1.13 -> 1.12.2 statistic mapping for " + name); } - }); + } else if (split.length > 2) { + String category = split[1]; + //TODO convert string ids (blocks, items, entities) + switch (category) { + case "mineBlock": + categoryId = 0; + break; + case "craftItem": + categoryId = 1; + break; + case "useItem": + categoryId = 2; + break; + case "breakItem": + categoryId = 3; + break; + case "pickup": + categoryId = 4; + break; + case "drop": + categoryId = 5; + break; + case "killEntity": + categoryId = 6; + break; + case "entityKilledBy": + categoryId = 7; + break; + } + } + if (newId != -1) + remappedStats.add(new StatisticData(categoryId, newId, value)); + } + + wrapper.write(Type.VAR_INT, remappedStats.size()); // size + for (StatisticData stat : remappedStats) { + wrapper.write(Type.VAR_INT, stat.getCategoryId()); // category id + wrapper.write(Type.VAR_INT, stat.getNewId()); // statistics id + wrapper.write(Type.VAR_INT, stat.getValue()); // value } }); @@ -270,44 +254,36 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol { + wrapper.write(Type.VAR_INT, wrapper.user().get(TabCompleteTracker.class).getTransactionId()); - String input = wrapper.user().get(TabCompleteTracker.class).getInput(); - // Start & End - int index; - int length; - // If no input or new word (then it's the start) - if (input.endsWith(" ") || input.isEmpty()) { - index = input.length(); - length = 0; - } else { - // Otherwise find the last space (+1 as we include it) - int lastSpace = input.lastIndexOf(' ') + 1; - index = lastSpace; - length = input.length() - lastSpace; - } - // Write index + length - wrapper.write(Type.VAR_INT, index); - wrapper.write(Type.VAR_INT, length); + String input = wrapper.user().get(TabCompleteTracker.class).getInput(); + // Start & End + int index; + int length; + // If no input or new word (then it's the start) + if (input.endsWith(" ") || input.isEmpty()) { + index = input.length(); + length = 0; + } else { + // Otherwise find the last space (+1 as we include it) + int lastSpace = input.lastIndexOf(' ') + 1; + index = lastSpace; + length = input.length() - lastSpace; + } + // Write index + length + wrapper.write(Type.VAR_INT, index); + wrapper.write(Type.VAR_INT, length); - int count = wrapper.passthrough(Type.VAR_INT); - for (int i = 0; i < count; i++) { - String suggestion = wrapper.read(Type.STRING); - // If we're at the start then handle removing slash - if (suggestion.startsWith("/") && index == 0) { - suggestion = suggestion.substring(1); - } - wrapper.write(Type.STRING, suggestion); - wrapper.write(Type.BOOLEAN, false); - } - } - }); + int count = wrapper.passthrough(Type.VAR_INT); + for (int i = 0; i < count; i++) { + String suggestion = wrapper.read(Type.STRING); + // If we're at the start then handle removing slash + if (suggestion.startsWith("/") && index == 0) { + suggestion = suggestion.substring(1); + } + wrapper.write(Type.STRING, suggestion); + wrapper.write(Type.BOOLEAN, false); } }); @@ -320,42 +296,34 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol { + int item = wrapper.read(Type.VAR_INT); + int ticks = wrapper.read(Type.VAR_INT); + wrapper.cancel(); + if (item == 383) { // Spawn egg + for (int i = 0; i < 44; i++) { + Integer newItem = getMappingData().getItemMappings().get(item << 16 | i); + if (newItem != null) { + PacketWrapper packet = wrapper.create(ClientboundPackets1_13.COOLDOWN); + packet.write(Type.VAR_INT, newItem); + packet.write(Type.VAR_INT, ticks); + packet.send(Protocol1_13To1_12_2.class); + } else { + break; } - }); + } + } else { + for (int i = 0; i < 16; i++) { + int newItem = getMappingData().getItemMappings().get(item << 4 | i); + if (newItem != -1) { + PacketWrapper packet = wrapper.create(ClientboundPackets1_13.COOLDOWN); + packet.write(Type.VAR_INT, newItem); + packet.write(Type.VAR_INT, ticks); + packet.send(Protocol1_13To1_12_2.class); + } else { + break; + } + } } }); @@ -367,18 +335,15 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol> 12; - wrapper.set(Type.INT, 1, WorldPackets.toNewId(blockId << 4 | blockData)); - } + handler(wrapper -> { + int id = wrapper.get(Type.INT, 0); + int data = wrapper.get(Type.INT, 1); + if (id == 1010) { // Play record + wrapper.set(Type.INT, 1, getMappingData().getItemMappings().get(data << 4)); + } else if (id == 2001) { // Block break + block break sound + int blockId = data & 0xFFF; + int blockData = data >> 12; + wrapper.set(Type.INT, 1, WorldPackets.toNewId(blockId << 4 | blockData)); } }); } @@ -400,20 +365,17 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol> 4; - wrapper.write(Type.VAR_INT, type); - wrapper.passthrough(Type.BYTE); // Icon X - wrapper.passthrough(Type.BYTE); // Icon Z - byte direction = (byte) (directionAndType & 0x0F); - wrapper.write(Type.BYTE, direction); - wrapper.write(Type.OPTIONAL_COMPONENT, null); // Display Name - } + handler(wrapper -> { + int iconCount = wrapper.passthrough(Type.VAR_INT); + for (int i = 0; i < iconCount; i++) { + byte directionAndType = wrapper.read(Type.BYTE); + int type = (directionAndType & 0xF0) >> 4; + wrapper.write(Type.VAR_INT, type); + wrapper.passthrough(Type.BYTE); // Icon X + wrapper.passthrough(Type.BYTE); // Icon Z + byte direction = (byte) (directionAndType & 0x0F); + wrapper.write(Type.BYTE, direction); + wrapper.write(Type.OPTIONAL_COMPONENT, null); // Display Name } }); } @@ -424,81 +386,75 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol { + wrapper.write(Type.BOOLEAN, false); // smelting book open + wrapper.write(Type.BOOLEAN, false); // smelting filter active }); - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int action = wrapper.get(Type.VAR_INT, 0); - for (int i = 0; i < (action == 0 ? 2 : 1); i++) { - int[] ids = wrapper.read(Type.VAR_INT_ARRAY_PRIMITIVE); - String[] stringIds = new String[ids.length]; - for (int j = 0; j < ids.length; j++) { - stringIds[j] = "viaversion:legacy/" + ids[j]; - } - wrapper.write(Type.STRING_ARRAY, stringIds); + handler(wrapper -> { + int action = wrapper.get(Type.VAR_INT, 0); + for (int i = 0; i < (action == 0 ? 2 : 1); i++) { + int[] ids = wrapper.read(Type.VAR_INT_ARRAY_PRIMITIVE); + String[] stringIds = new String[ids.length]; + for (int j = 0; j < ids.length; j++) { + stringIds[j] = "viaversion:legacy/" + ids[j]; } - if (action == 0) { - wrapper.create(ClientboundPackets1_13.DECLARE_RECIPES, new PacketHandler() { // Declare recipes - @Override - public void handle(PacketWrapper wrapper) throws Exception { - wrapper.write(Type.VAR_INT, RecipeData.recipes.size()); - for (Map.Entry entry : RecipeData.recipes.entrySet()) { - wrapper.write(Type.STRING, entry.getKey()); // Id - wrapper.write(Type.STRING, entry.getValue().getType()); - switch (entry.getValue().getType()) { - case "crafting_shapeless": { - wrapper.write(Type.STRING, entry.getValue().getGroup()); - wrapper.write(Type.VAR_INT, entry.getValue().getIngredients().length); - for (Item[] ingredient : entry.getValue().getIngredients()) { - Item[] clone = ingredient.clone(); // Clone because array and item is mutable - for (int i = 0; i < clone.length; i++) { - if (clone[i] == null) continue; - clone[i] = new DataItem(clone[i]); - } - wrapper.write(Type.FLAT_ITEM_ARRAY_VAR_INT, clone); - } - wrapper.write(Type.FLAT_ITEM, new DataItem(entry.getValue().getResult())); - break; - } - case "crafting_shaped": { - wrapper.write(Type.VAR_INT, entry.getValue().getWidth()); - wrapper.write(Type.VAR_INT, entry.getValue().getHeight()); - wrapper.write(Type.STRING, entry.getValue().getGroup()); - for (Item[] ingredient : entry.getValue().getIngredients()) { - Item[] clone = ingredient.clone(); // Clone because array and item is mutable - for (int i = 0; i < clone.length; i++) { - if (clone[i] == null) continue; - clone[i] = new DataItem(clone[i]); - } - wrapper.write(Type.FLAT_ITEM_ARRAY_VAR_INT, clone); - } - wrapper.write(Type.FLAT_ITEM, new DataItem(entry.getValue().getResult())); - break; - } - case "smelting": { - wrapper.write(Type.STRING, entry.getValue().getGroup()); - Item[] clone = entry.getValue().getIngredient().clone(); // Clone because array and item is mutable + wrapper.write(Type.STRING_ARRAY, stringIds); + } + if (action == 0) { + wrapper.create(ClientboundPackets1_13.DECLARE_RECIPES, new PacketHandler() { // Declare recipes + @Override + public void handle(PacketWrapper wrapper) throws Exception { + wrapper.write(Type.VAR_INT, RecipeData.recipes.size()); + for (Map.Entry entry : RecipeData.recipes.entrySet()) { + wrapper.write(Type.STRING, entry.getKey()); // Id + wrapper.write(Type.STRING, entry.getValue().getType()); + switch (entry.getValue().getType()) { + case "crafting_shapeless": { + wrapper.write(Type.STRING, entry.getValue().getGroup()); + wrapper.write(Type.VAR_INT, entry.getValue().getIngredients().length); + for (Item[] ingredient : entry.getValue().getIngredients()) { + Item[] clone = ingredient.clone(); // Clone because array and item is mutable for (int i = 0; i < clone.length; i++) { if (clone[i] == null) continue; clone[i] = new DataItem(clone[i]); } wrapper.write(Type.FLAT_ITEM_ARRAY_VAR_INT, clone); - wrapper.write(Type.FLAT_ITEM, new DataItem(entry.getValue().getResult())); - wrapper.write(Type.FLOAT, entry.getValue().getExperience()); - wrapper.write(Type.VAR_INT, entry.getValue().getCookingTime()); - break; } + wrapper.write(Type.FLAT_ITEM, new DataItem(entry.getValue().getResult())); + break; + } + case "crafting_shaped": { + wrapper.write(Type.VAR_INT, entry.getValue().getWidth()); + wrapper.write(Type.VAR_INT, entry.getValue().getHeight()); + wrapper.write(Type.STRING, entry.getValue().getGroup()); + for (Item[] ingredient : entry.getValue().getIngredients()) { + Item[] clone = ingredient.clone(); // Clone because array and item is mutable + for (int i = 0; i < clone.length; i++) { + if (clone[i] == null) continue; + clone[i] = new DataItem(clone[i]); + } + wrapper.write(Type.FLAT_ITEM_ARRAY_VAR_INT, clone); + } + wrapper.write(Type.FLAT_ITEM, new DataItem(entry.getValue().getResult())); + break; + } + case "smelting": { + wrapper.write(Type.STRING, entry.getValue().getGroup()); + Item[] clone = entry.getValue().getIngredient().clone(); // Clone because array and item is mutable + for (int i = 0; i < clone.length; i++) { + if (clone[i] == null) continue; + clone[i] = new DataItem(clone[i]); + } + wrapper.write(Type.FLAT_ITEM_ARRAY_VAR_INT, clone); + wrapper.write(Type.FLAT_ITEM, new DataItem(entry.getValue().getResult())); + wrapper.write(Type.FLOAT, entry.getValue().getExperience()); + wrapper.write(Type.VAR_INT, entry.getValue().getCookingTime()); + break; } } } - }).send(Protocol1_13To1_12_2.class); - } + } + }).send(Protocol1_13To1_12_2.class); } }); } @@ -508,16 +464,13 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol { + ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); + int dimensionId = wrapper.get(Type.INT, 0); + clientWorld.setEnvironment(dimensionId); - if (Via.getConfig().isServersideBlockConnections()) { - ConnectionData.clearBlockStorage(wrapper.user()); - } + if (Via.getConfig().isServersideBlockConnections()) { + ConnectionData.clearBlockStorage(wrapper.user()); } }); handler(SEND_DECLARE_COMMANDS_AND_TAGS); @@ -529,19 +482,16 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol { + byte mode = wrapper.get(Type.BYTE, 0); + // On create or update + if (mode == 0 || mode == 2) { + String value = wrapper.read(Type.STRING); // Value + wrapper.write(Type.COMPONENT, ChatRewriter.legacyTextToJson(value)); - String type = wrapper.read(Type.STRING); - // integer or hearts - wrapper.write(Type.VAR_INT, type.equals("integer") ? 0 : 1); - } + String type = wrapper.read(Type.STRING); + // integer or hearts + wrapper.write(Type.VAR_INT, type.equals("integer") ? 0 : 1); } }); } @@ -553,71 +503,60 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol { + byte action = wrapper.get(Type.BYTE, 0); - if (action == 0 || action == 2) { - String displayName = wrapper.read(Type.STRING); // Display Name - wrapper.write(Type.COMPONENT, ChatRewriter.legacyTextToJson(displayName)); + if (action == 0 || action == 2) { + String displayName = wrapper.read(Type.STRING); // Display Name + wrapper.write(Type.COMPONENT, ChatRewriter.legacyTextToJson(displayName)); - String prefix = wrapper.read(Type.STRING); // Prefix moved - String suffix = wrapper.read(Type.STRING); // Suffix moved + String prefix = wrapper.read(Type.STRING); // Prefix moved + String suffix = wrapper.read(Type.STRING); // Suffix moved - wrapper.passthrough(Type.BYTE); // Flags + wrapper.passthrough(Type.BYTE); // Flags - wrapper.passthrough(Type.STRING); // Name Tag Visibility - wrapper.passthrough(Type.STRING); // Collision rule + wrapper.passthrough(Type.STRING); // Name Tag Visibility + wrapper.passthrough(Type.STRING); // Collision rule - // Handle new colors - int colour = wrapper.read(Type.BYTE).intValue(); - if (colour == -1) { - colour = 21; // -1 changed to 21 - } - - if (Via.getConfig().is1_13TeamColourFix()) { - char lastColorChar = getLastColorChar(prefix); - colour = ChatColorUtil.getColorOrdinal(lastColorChar); - suffix = ChatColorUtil.COLOR_CHAR + Character.toString(lastColorChar) + suffix; - } - - wrapper.write(Type.VAR_INT, colour); - - wrapper.write(Type.COMPONENT, ChatRewriter.legacyTextToJson(prefix)); // Prefix - wrapper.write(Type.COMPONENT, ChatRewriter.legacyTextToJson(suffix)); // Suffix + // Handle new colors + int colour = wrapper.read(Type.BYTE).intValue(); + if (colour == -1) { + colour = 21; // -1 changed to 21 } - if (action == 0 || action == 3 || action == 4) { - String[] names = wrapper.read(Type.STRING_ARRAY); // Entities - for (int i = 0; i < names.length; i++) { - names[i] = rewriteTeamMemberName(names[i]); - } - wrapper.write(Type.STRING_ARRAY, names); + if (Via.getConfig().is1_13TeamColourFix()) { + char lastColorChar = getLastColorChar(prefix); + colour = ChatColorUtil.getColorOrdinal(lastColorChar); + suffix = ChatColorUtil.COLOR_CHAR + Character.toString(lastColorChar) + suffix; } + + wrapper.write(Type.VAR_INT, colour); + + wrapper.write(Type.COMPONENT, ChatRewriter.legacyTextToJson(prefix)); // Prefix + wrapper.write(Type.COMPONENT, ChatRewriter.legacyTextToJson(suffix)); // Suffix + } + + if (action == 0 || action == 3 || action == 4) { + String[] names = wrapper.read(Type.STRING_ARRAY); // Entities + for (int i = 0; i < names.length; i++) { + names[i] = rewriteTeamMemberName(names[i]); + } + wrapper.write(Type.STRING_ARRAY, names); } }); } }); - registerClientbound(ClientboundPackets1_12_1.UPDATE_SCORE, new PacketHandlers() { - @Override - public void register() { - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - String displayName = wrapper.read(Type.STRING); // Display Name - displayName = rewriteTeamMemberName(displayName); - wrapper.write(Type.STRING, displayName); + registerClientbound(ClientboundPackets1_12_1.UPDATE_SCORE, wrapper -> { + String displayName = wrapper.read(Type.STRING); // Display Name + displayName = rewriteTeamMemberName(displayName); + wrapper.write(Type.STRING, displayName); - byte action = wrapper.read(Type.BYTE); - wrapper.write(Type.BYTE, action); - wrapper.passthrough(Type.STRING); // Objective Name - if (action != 1) { - wrapper.passthrough(Type.VAR_INT); // Value - } - } - }); + byte action = wrapper.read(Type.BYTE); + wrapper.write(Type.BYTE, action); + wrapper.passthrough(Type.STRING); // Objective Name + if (action != 1) { + wrapper.passthrough(Type.VAR_INT); // Value } }); @@ -627,60 +566,44 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol(this).registerSound(ClientboundPackets1_12_1.SOUND); - registerClientbound(ClientboundPackets1_12_1.TAB_LIST, new PacketHandlers() { - @Override - public void register() { - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - componentRewriter.processText(wrapper.passthrough(Type.COMPONENT)); - componentRewriter.processText(wrapper.passthrough(Type.COMPONENT)); - } - }); - } + registerClientbound(ClientboundPackets1_12_1.TAB_LIST, wrapper -> { + componentRewriter.processText(wrapper.passthrough(Type.COMPONENT)); + componentRewriter.processText(wrapper.passthrough(Type.COMPONENT)); }); - registerClientbound(ClientboundPackets1_12_1.ADVANCEMENTS, new PacketHandlers() { - @Override - public void register() { - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - wrapper.passthrough(Type.BOOLEAN); // Reset/clear - int size = wrapper.passthrough(Type.VAR_INT); // Mapping size + registerClientbound(ClientboundPackets1_12_1.ADVANCEMENTS, wrapper -> { + wrapper.passthrough(Type.BOOLEAN); // Reset/clear + int size = wrapper.passthrough(Type.VAR_INT); // Mapping size - for (int i = 0; i < size; i++) { - wrapper.passthrough(Type.STRING); // Identifier + for (int i = 0; i < size; i++) { + wrapper.passthrough(Type.STRING); // Identifier - // Parent - if (wrapper.passthrough(Type.BOOLEAN)) - wrapper.passthrough(Type.STRING); + // Parent + if (wrapper.passthrough(Type.BOOLEAN)) + wrapper.passthrough(Type.STRING); - // Display data - if (wrapper.passthrough(Type.BOOLEAN)) { - componentRewriter.processText(wrapper.passthrough(Type.COMPONENT)); // Title - componentRewriter.processText(wrapper.passthrough(Type.COMPONENT)); // Description - Item icon = wrapper.read(Type.ITEM); - itemRewriter.handleItemToClient(icon); - wrapper.write(Type.FLAT_ITEM, icon); // Translate item to flat item - wrapper.passthrough(Type.VAR_INT); // Frame type - int flags = wrapper.passthrough(Type.INT); // Flags - if ((flags & 1) != 0) { - wrapper.passthrough(Type.STRING); // Background texture - } - wrapper.passthrough(Type.FLOAT); // X - wrapper.passthrough(Type.FLOAT); // Y - } - - wrapper.passthrough(Type.STRING_ARRAY); // Criteria - - int arrayLength = wrapper.passthrough(Type.VAR_INT); - for (int array = 0; array < arrayLength; array++) { - wrapper.passthrough(Type.STRING_ARRAY); // String array - } - } + // Display data + if (wrapper.passthrough(Type.BOOLEAN)) { + componentRewriter.processText(wrapper.passthrough(Type.COMPONENT)); // Title + componentRewriter.processText(wrapper.passthrough(Type.COMPONENT)); // Description + Item icon = wrapper.read(Type.ITEM); + itemRewriter.handleItemToClient(icon); + wrapper.write(Type.FLAT_ITEM, icon); // Translate item to flat item + wrapper.passthrough(Type.VAR_INT); // Frame type + int flags = wrapper.passthrough(Type.INT); // Flags + if ((flags & 1) != 0) { + wrapper.passthrough(Type.STRING); // Background texture } - }); + wrapper.passthrough(Type.FLOAT); // X + wrapper.passthrough(Type.FLOAT); // Y + } + + wrapper.passthrough(Type.STRING_ARRAY); // Criteria + + int arrayLength = wrapper.passthrough(Type.VAR_INT); + for (int array = 0; array < arrayLength; array++) { + wrapper.passthrough(Type.STRING_ARRAY); // String array + } } }); @@ -696,17 +619,14 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol { + // Disable auto-complete if configured + if (Via.getConfig().isDisable1_13AutoComplete()) { + wrapper.cancel(); } + int tid = wrapper.read(Type.VAR_INT); + // Save transaction id + wrapper.user().get(TabCompleteTracker.class).setTransactionId(tid); }); // Prepend / map(Type.STRING, new ValueTransformer(Type.STRING) { @@ -717,55 +637,36 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol 0) { - TabCompleteTracker tracker = wrapper.user().get(TabCompleteTracker.class); - wrapper.cancel(); - tracker.setTimeToSend(System.currentTimeMillis() + Via.getConfig().get1_13TabCompleteDelay() * 50L); - tracker.setLastTabComplete(wrapper.get(Type.STRING, 0)); - } + handler(wrapper -> { + wrapper.write(Type.BOOLEAN, false); + wrapper.write(Type.OPTIONAL_POSITION, null); + if (!wrapper.isCancelled() && Via.getConfig().get1_13TabCompleteDelay() > 0) { + TabCompleteTracker tracker = wrapper.user().get(TabCompleteTracker.class); + wrapper.cancel(); + tracker.setTimeToSend(System.currentTimeMillis() + Via.getConfig().get1_13TabCompleteDelay() * 50L); + tracker.setLastTabComplete(wrapper.get(Type.STRING, 0)); } }); } }); // New 0x0A - Edit book -> Plugin Message - registerServerbound(ServerboundPackets1_13.EDIT_BOOK, ServerboundPackets1_12_1.PLUGIN_MESSAGE, new PacketHandlers() { - @Override - public void register() { - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - Item item = wrapper.read(Type.FLAT_ITEM); - boolean isSigning = wrapper.read(Type.BOOLEAN); + registerServerbound(ServerboundPackets1_13.EDIT_BOOK, ServerboundPackets1_12_1.PLUGIN_MESSAGE, wrapper -> { + Item item = wrapper.read(Type.FLAT_ITEM); + boolean isSigning = wrapper.read(Type.BOOLEAN); - itemRewriter.handleItemToServer(item); + itemRewriter.handleItemToServer(item); - wrapper.write(Type.STRING, isSigning ? "MC|BSign" : "MC|BEdit"); // Channel - wrapper.write(Type.ITEM, item); - } - }); - } + wrapper.write(Type.STRING, isSigning ? "MC|BSign" : "MC|BEdit"); // Channel + wrapper.write(Type.ITEM, item); }); // New 0x0C - Query Entity NBT cancelServerbound(ServerboundPackets1_13.ENTITY_NBT_REQUEST); // New 0x15 - Pick Item -> Plugin Message - registerServerbound(ServerboundPackets1_13.PICK_ITEM, ServerboundPackets1_12_1.PLUGIN_MESSAGE, new PacketHandlers() { - @Override - public void register() { - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - wrapper.write(Type.STRING, "MC|PickItem"); // Channel - } - }); - } + registerServerbound(ServerboundPackets1_13.PICK_ITEM, ServerboundPackets1_12_1.PLUGIN_MESSAGE, wrapper -> { + wrapper.write(Type.STRING, "MC|PickItem"); // Channel }); registerServerbound(ServerboundPackets1_13.CRAFT_RECIPE_REQUEST, new PacketHandlers() { @@ -791,41 +692,33 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol { + int type = wrapper.get(Type.VAR_INT, 0); - if (type == 0) { - String s = wrapper.read(Type.STRING); - Integer id; - // Custom recipes - if (s.length() < 19 || (id = Ints.tryParse(s.substring(18))) == null) { - wrapper.cancel(); - return; - } + if (type == 0) { + String s = wrapper.read(Type.STRING); + Integer id; + // Custom recipes + if (s.length() < 19 || (id = Ints.tryParse(s.substring(18))) == null) { + wrapper.cancel(); + return; + } - wrapper.write(Type.INT, id); - } - if (type == 1) { - wrapper.passthrough(Type.BOOLEAN); // Crafting Recipe Book Open - wrapper.passthrough(Type.BOOLEAN); // Crafting Recipe Filter Active - wrapper.read(Type.BOOLEAN); // Smelting Recipe Book Open | IGNORE NEW 1.13 FIELD - wrapper.read(Type.BOOLEAN); // Smelting Recipe Filter Active | IGNORE NEW 1.13 FIELD - } + wrapper.write(Type.INT, id); + } + if (type == 1) { + wrapper.passthrough(Type.BOOLEAN); // Crafting Recipe Book Open + wrapper.passthrough(Type.BOOLEAN); // Crafting Recipe Filter Active + wrapper.read(Type.BOOLEAN); // Smelting Recipe Book Open | IGNORE NEW 1.13 FIELD + wrapper.read(Type.BOOLEAN); // Smelting Recipe Filter Active | IGNORE NEW 1.13 FIELD } }); } }); // New 0x1C - Name Item -> Plugin Message - registerServerbound(ServerboundPackets1_13.RENAME_ITEM, ServerboundPackets1_12_1.PLUGIN_MESSAGE, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - wrapper.write(Type.STRING, "MC|ItemName"); // Channel - }); - } + registerServerbound(ServerboundPackets1_13.RENAME_ITEM, ServerboundPackets1_12_1.PLUGIN_MESSAGE, wrapper -> { + wrapper.write(Type.STRING, "MC|ItemName"); // Channel }); // New 0x1F - Select Trade -> Plugin Message @@ -858,21 +751,18 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol wrapper.write(Type.STRING, "MC|AutoCmd")); handler(POS_TO_3_INT); map(Type.STRING); // Command - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int mode = wrapper.read(Type.VAR_INT); - byte flags = wrapper.read(Type.BYTE); + handler(wrapper -> { + int mode = wrapper.read(Type.VAR_INT); + byte flags = wrapper.read(Type.BYTE); - String stringMode = mode == 0 ? "SEQUENCE" - : mode == 1 ? "AUTO" - : "REDSTONE"; + String stringMode = mode == 0 ? "SEQUENCE" + : mode == 1 ? "AUTO" + : "REDSTONE"; - wrapper.write(Type.BOOLEAN, (flags & 0x1) != 0); // Track output - wrapper.write(Type.STRING, stringMode); - wrapper.write(Type.BOOLEAN, (flags & 0x2) != 0); // Is conditional - wrapper.write(Type.BOOLEAN, (flags & 0x4) != 0); // Automatic - } + wrapper.write(Type.BOOLEAN, (flags & 0x1) != 0); // Track output + wrapper.write(Type.STRING, stringMode); + wrapper.write(Type.BOOLEAN, (flags & 0x2) != 0); // Is conditional + wrapper.write(Type.BOOLEAN, (flags & 0x4) != 0); // Automatic }); } }); @@ -881,12 +771,9 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol { + wrapper.write(Type.STRING, "MC|AdvCmd"); + wrapper.write(Type.BYTE, (byte) 1); // Type 1 for Entity }); map(Type.VAR_INT, Type.INT); // Entity Id } @@ -942,19 +829,16 @@ public class Protocol1_13To1_12_2 extends AbstractProtocol { + float integrity = wrapper.read(Type.FLOAT); + long seed = wrapper.read(Type.VAR_LONG); + byte flags = wrapper.read(Type.BYTE); - wrapper.write(Type.BOOLEAN, (flags & 0x1) != 0); // Ignore Entities - wrapper.write(Type.BOOLEAN, (flags & 0x2) != 0); // Show air - wrapper.write(Type.BOOLEAN, (flags & 0x4) != 0); // Show bounding box - wrapper.write(Type.FLOAT, integrity); - wrapper.write(Type.VAR_LONG, seed); - } + wrapper.write(Type.BOOLEAN, (flags & 0x1) != 0); // Ignore Entities + wrapper.write(Type.BOOLEAN, (flags & 0x2) != 0); // Show air + wrapper.write(Type.BOOLEAN, (flags & 0x4) != 0); // Show bounding box + wrapper.write(Type.FLOAT, integrity); + wrapper.write(Type.VAR_LONG, seed); }); } }); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/AbstractFenceConnectionHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/AbstractFenceConnectionHandler.java index f822bea7b..eaf64222b 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/AbstractFenceConnectionHandler.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/AbstractFenceConnectionHandler.java @@ -21,7 +21,6 @@ import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.BlockFace; import com.viaversion.viaversion.api.minecraft.Position; import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; - import java.util.HashMap; import java.util.HashSet; import java.util.Map; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/AbstractStempConnectionHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/AbstractStempConnectionHandler.java index 824a36cb9..6403c690c 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/AbstractStempConnectionHandler.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/AbstractStempConnectionHandler.java @@ -20,9 +20,7 @@ package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnection import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.BlockFace; import com.viaversion.viaversion.api.minecraft.Position; - import java.util.EnumMap; -import java.util.HashMap; import java.util.HashSet; import java.util.Locale; import java.util.Map; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/BlockData.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/BlockData.java index 2c5b102c9..c230d39f3 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/BlockData.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/BlockData.java @@ -18,7 +18,6 @@ package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnections; import com.viaversion.viaversion.api.minecraft.BlockFace; - import java.util.HashMap; import java.util.Map; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/ChestConnectionHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/ChestConnectionHandler.java index 23425a68a..64af8fa42 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/ChestConnectionHandler.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/ChestConnectionHandler.java @@ -20,7 +20,6 @@ package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnection import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.BlockFace; import com.viaversion.viaversion.api.minecraft.Position; - import java.util.HashMap; import java.util.HashSet; import java.util.Locale; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/ChorusPlantConnectionHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/ChorusPlantConnectionHandler.java index b7b8c3226..b69aa905f 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/ChorusPlantConnectionHandler.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/ChorusPlantConnectionHandler.java @@ -20,7 +20,6 @@ package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnection import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.BlockFace; import com.viaversion.viaversion.api.minecraft.Position; - import java.util.ArrayList; import java.util.List; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/ConnectionData.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/ConnectionData.java index 0d5044d43..6e829c1ac 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/ConnectionData.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/ConnectionData.java @@ -42,7 +42,6 @@ import it.unimi.dsi.fastutil.ints.IntOpenHashSet; import it.unimi.dsi.fastutil.ints.IntSet; import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; - import java.util.ArrayList; import java.util.List; import java.util.Locale; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/DoorConnectionHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/DoorConnectionHandler.java index 69e28c67f..cca879ec3 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/DoorConnectionHandler.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/DoorConnectionHandler.java @@ -20,7 +20,6 @@ package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnection import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.BlockFace; import com.viaversion.viaversion.api.minecraft.Position; - import java.util.HashMap; import java.util.LinkedList; import java.util.List; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/FireConnectionHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/FireConnectionHandler.java index eaa074421..8ecf74ab8 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/FireConnectionHandler.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/FireConnectionHandler.java @@ -20,7 +20,6 @@ package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnection import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.BlockFace; import com.viaversion.viaversion.api.minecraft.Position; - import java.util.HashMap; import java.util.HashSet; import java.util.Map; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/FlowerConnectionHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/FlowerConnectionHandler.java index 837d7a174..2810153f4 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/FlowerConnectionHandler.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/FlowerConnectionHandler.java @@ -23,7 +23,6 @@ import com.viaversion.viaversion.api.minecraft.BlockFace; import com.viaversion.viaversion.api.minecraft.Position; import it.unimi.dsi.fastutil.ints.Int2IntMap; import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap; - import java.util.HashSet; import java.util.Set; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/GlassConnectionHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/GlassConnectionHandler.java index acb7e27f4..42591f173 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/GlassConnectionHandler.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/GlassConnectionHandler.java @@ -20,7 +20,6 @@ package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnection import com.viaversion.viaversion.api.connection.ProtocolInfo; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.Position; - import java.util.ArrayList; import java.util.List; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/RedstoneConnectionHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/RedstoneConnectionHandler.java index 9c0bc00ed..e1f322bd2 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/RedstoneConnectionHandler.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/RedstoneConnectionHandler.java @@ -22,7 +22,6 @@ import com.viaversion.viaversion.api.minecraft.BlockFace; import com.viaversion.viaversion.api.minecraft.Position; import it.unimi.dsi.fastutil.ints.Int2IntMap; import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap; - import java.util.HashSet; import java.util.Set; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/SnowyGrassConnectionHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/SnowyGrassConnectionHandler.java index 997fef87d..7bfe3da49 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/SnowyGrassConnectionHandler.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/SnowyGrassConnectionHandler.java @@ -21,7 +21,6 @@ import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.BlockFace; import com.viaversion.viaversion.api.minecraft.Position; import com.viaversion.viaversion.util.Pair; - import java.util.HashMap; import java.util.HashSet; import java.util.Map; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/StairConnectionHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/StairConnectionHandler.java index af3439818..f361d8d09 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/StairConnectionHandler.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/StairConnectionHandler.java @@ -20,7 +20,6 @@ package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnection import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.BlockFace; import com.viaversion.viaversion.api.minecraft.Position; - import java.util.HashMap; import java.util.LinkedList; import java.util.List; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/TripwireConnectionHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/TripwireConnectionHandler.java index a30fbd128..dcc945cc7 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/TripwireConnectionHandler.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/TripwireConnectionHandler.java @@ -20,7 +20,6 @@ package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnection import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.BlockFace; import com.viaversion.viaversion.api.minecraft.Position; - import java.util.HashMap; import java.util.Locale; import java.util.Map; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/VineConnectionHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/VineConnectionHandler.java index a95179be3..95b3522e5 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/VineConnectionHandler.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/VineConnectionHandler.java @@ -20,7 +20,6 @@ package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnection import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.BlockFace; import com.viaversion.viaversion.api.minecraft.Position; - import java.util.HashSet; import java.util.Set; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/WallConnectionHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/WallConnectionHandler.java index 3dc4b2c70..991c2a0fb 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/WallConnectionHandler.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/WallConnectionHandler.java @@ -20,7 +20,6 @@ package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnection import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.BlockFace; import com.viaversion.viaversion.api.minecraft.Position; - import java.util.ArrayList; import java.util.List; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/WrappedBlockData.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/WrappedBlockData.java index c3d2f8bde..e13e772a4 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/WrappedBlockData.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/blockconnections/WrappedBlockData.java @@ -18,7 +18,6 @@ package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnections; import com.viaversion.viaversion.api.Via; - import java.util.LinkedHashMap; import java.util.Map.Entry; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/BlockIdData.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/BlockIdData.java index 5fdaa37bb..d35c7edff 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/BlockIdData.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/BlockIdData.java @@ -22,7 +22,6 @@ import com.google.gson.reflect.TypeToken; import com.viaversion.viaversion.util.GsonUtil; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; - import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/ComponentRewriter1_13.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/ComponentRewriter1_13.java index 226b6b2e3..ac8ef49cb 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/ComponentRewriter1_13.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/ComponentRewriter1_13.java @@ -32,7 +32,6 @@ import com.viaversion.viaversion.api.protocol.Protocol; import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.Protocol1_13To1_12_2; import com.viaversion.viaversion.rewriter.ComponentRewriter; - import java.io.IOException; public class ComponentRewriter1_13 extends ComponentRewriter { diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/MappingData.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/MappingData.java index 084b9f8a3..e43891852 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/MappingData.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/MappingData.java @@ -30,14 +30,13 @@ import com.viaversion.viaversion.api.data.MappingDataBase; import com.viaversion.viaversion.api.data.MappingDataLoader; import com.viaversion.viaversion.api.data.Mappings; import com.viaversion.viaversion.util.GsonUtil; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; +import org.checkerframework.checker.nullness.qual.Nullable; public class MappingData extends MappingDataBase { private final Map blockTags = new HashMap<>(); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/ParticleRewriter.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/ParticleRewriter.java index 6e628c518..6eaa13aed 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/ParticleRewriter.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/ParticleRewriter.java @@ -24,7 +24,6 @@ import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.api.type.types.Particle; import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.Protocol1_13To1_12_2; import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.packets.WorldPackets; - import java.util.ArrayList; import java.util.Arrays; import java.util.List; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/RecipeData.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/RecipeData.java index 4977bde8b..b7e4ef5f5 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/RecipeData.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/RecipeData.java @@ -20,7 +20,6 @@ package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.data; import com.google.gson.reflect.TypeToken; import com.viaversion.viaversion.api.minecraft.item.DataItem; import com.viaversion.viaversion.util.GsonUtil; - import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/SpawnEggRewriter.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/SpawnEggRewriter.java index 21d8252f9..aaf9afd26 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/SpawnEggRewriter.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/data/SpawnEggRewriter.java @@ -19,7 +19,6 @@ package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.data; import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; - import java.util.Optional; public class SpawnEggRewriter { diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/metadata/MetadataRewriter1_13To1_12_2.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/metadata/MetadataRewriter1_13To1_12_2.java index 0fb3a7893..c52da270f 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/metadata/MetadataRewriter1_13To1_12_2.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/metadata/MetadataRewriter1_13To1_12_2.java @@ -31,7 +31,6 @@ import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.data.EntityTypeR import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.data.ParticleRewriter; import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.packets.WorldPackets; import com.viaversion.viaversion.rewriter.EntityRewriter; - import java.util.List; public class MetadataRewriter1_13To1_12_2 extends EntityRewriter { diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/packets/EntityPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/packets/EntityPackets.java index 118025f57..895e8c5ec 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/packets/EntityPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/packets/EntityPackets.java @@ -19,8 +19,6 @@ package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.packets; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.minecraft.entities.Entity1_13Types; -import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.api.type.types.version.Types1_12; @@ -49,45 +47,42 @@ public class EntityPackets { map(Type.INT); // 8 - Data // Track Entity - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int entityId = wrapper.get(Type.VAR_INT, 0); - byte type = wrapper.get(Type.BYTE, 0); - Entity1_13Types.EntityType entType = Entity1_13Types.getTypeFromId(type, true); - if (entType == null) return; + handler(wrapper -> { + int entityId = wrapper.get(Type.VAR_INT, 0); + byte type = wrapper.get(Type.BYTE, 0); + Entity1_13Types.EntityType entType = Entity1_13Types.getTypeFromId(type, true); + if (entType == null) return; - // Register Type ID - wrapper.user().getEntityTracker(Protocol1_13To1_12_2.class).addEntity(entityId, entType); + // Register Type ID + wrapper.user().getEntityTracker(Protocol1_13To1_12_2.class).addEntity(entityId, entType); - if (entType.is(Entity1_13Types.EntityType.FALLING_BLOCK)) { - int oldId = wrapper.get(Type.INT, 0); - int combined = (((oldId & 4095) << 4) | (oldId >> 12 & 15)); - wrapper.set(Type.INT, 0, WorldPackets.toNewId(combined)); + if (entType.is(Entity1_13Types.EntityType.FALLING_BLOCK)) { + int oldId = wrapper.get(Type.INT, 0); + int combined = (((oldId & 4095) << 4) | (oldId >> 12 & 15)); + wrapper.set(Type.INT, 0, WorldPackets.toNewId(combined)); + } + + // Fix ItemFrame hitbox + if (entType.is(Entity1_13Types.EntityType.ITEM_FRAME)) { + int data = wrapper.get(Type.INT, 0); + + switch (data) { + // South + case 0: + data = 3; + break; + // West + case 1: + data = 4; + break; + // North is the same + // East + case 3: + data = 5; + break; } - // Fix ItemFrame hitbox - if (entType.is(Entity1_13Types.EntityType.ITEM_FRAME)) { - int data = wrapper.get(Type.INT, 0); - - switch (data) { - // South - case 0: - data = 3; - break; - // West - case 1: - data = 4; - break; - // North is the same - // East - case 3: - data = 5; - break; - } - - wrapper.set(Type.INT, 0, data); - } + wrapper.set(Type.INT, 0, data); } }); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/packets/InventoryPackets.java index 5121445ee..288f78cc8 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/packets/InventoryPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/packets/InventoryPackets.java @@ -29,8 +29,6 @@ import com.google.common.base.Joiner; import com.google.common.primitives.Ints; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.minecraft.item.Item; -import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_12_1to1_12.ClientboundPackets1_12_1; @@ -43,7 +41,6 @@ import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.data.MappingData import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.data.SoundSource; import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.data.SpawnEggRewriter; import com.viaversion.viaversion.rewriter.ItemRewriter; - import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; @@ -85,13 +82,10 @@ public class InventoryPackets extends ItemRewriter= 4 && property <= 6) { // Enchantment id - wrapper.set(Type.SHORT, 1, (short) protocol.getMappingData().getEnchantmentMappings().getNewId(wrapper.get(Type.SHORT, 1))); - } + handler(wrapper -> { + short property = wrapper.get(Type.SHORT, 0); + if (property >= 4 && property <= 6) { // Enchantment id + wrapper.set(Type.SHORT, 1, (short) protocol.getMappingData().getEnchantmentMappings().getNewId(wrapper.get(Type.SHORT, 1))); } }); } @@ -103,98 +97,95 @@ public class InventoryPackets extends ItemRewriter { + String channel = wrapper.get(Type.STRING, 0); + // Handle stopsound change + if (channel.equalsIgnoreCase("MC|StopSound")) { + String originalSource = wrapper.read(Type.STRING); + String originalSound = wrapper.read(Type.STRING); - // Reset the packet - wrapper.clearPacket(); - wrapper.setPacketType(ClientboundPackets1_13.SOUND); + // Reset the packet + wrapper.clearPacket(); + wrapper.setPacketType(ClientboundPackets1_13.SOUND); - byte flags = 0; - wrapper.write(Type.BYTE, flags); // Placeholder - if (!originalSource.isEmpty()) { - flags |= 1; - Optional finalSource = SoundSource.findBySource(originalSource); - if (!finalSource.isPresent()) { - if (!Via.getConfig().isSuppressConversionWarnings() || Via.getManager().isDebug()) { - Via.getPlatform().getLogger().info("Could not handle unknown sound source " + originalSource + " falling back to default: master"); - } - finalSource = Optional.of(SoundSource.MASTER); - - } - - wrapper.write(Type.VAR_INT, finalSource.get().getId()); - } - if (!originalSound.isEmpty()) { - flags |= 2; - wrapper.write(Type.STRING, originalSound); - } - - wrapper.set(Type.BYTE, 0, flags); // Update flags - return; - } else if (channel.equalsIgnoreCase("MC|TrList")) { - channel = "minecraft:trader_list"; - wrapper.passthrough(Type.INT); // Passthrough Window ID - - int size = wrapper.passthrough(Type.UNSIGNED_BYTE); - for (int i = 0; i < size; i++) { - // Input Item - Item input = wrapper.read(Type.ITEM); - handleItemToClient(input); - wrapper.write(Type.FLAT_ITEM, input); - // Output Item - Item output = wrapper.read(Type.ITEM); - handleItemToClient(output); - wrapper.write(Type.FLAT_ITEM, output); - - boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item - if (secondItem) { - // Second Item - Item second = wrapper.read(Type.ITEM); - handleItemToClient(second); - wrapper.write(Type.FLAT_ITEM, second); - } - - wrapper.passthrough(Type.BOOLEAN); // Trade disabled - wrapper.passthrough(Type.INT); // Number of tools uses - wrapper.passthrough(Type.INT); // Maximum number of trade uses - } - } else { - String old = channel; - channel = getNewPluginChannelId(channel); - if (channel == null) { + byte flags = 0; + wrapper.write(Type.BYTE, flags); // Placeholder + if (!originalSource.isEmpty()) { + flags |= 1; + Optional finalSource = SoundSource.findBySource(originalSource); + if (!finalSource.isPresent()) { if (!Via.getConfig().isSuppressConversionWarnings() || Via.getManager().isDebug()) { - Via.getPlatform().getLogger().warning("Ignoring outgoing plugin message with channel: " + old); + Via.getPlatform().getLogger().info("Could not handle unknown sound source " + originalSource + " falling back to default: master"); } + finalSource = Optional.of(SoundSource.MASTER); + + } + + wrapper.write(Type.VAR_INT, finalSource.get().getId()); + } + if (!originalSound.isEmpty()) { + flags |= 2; + wrapper.write(Type.STRING, originalSound); + } + + wrapper.set(Type.BYTE, 0, flags); // Update flags + return; + } else if (channel.equalsIgnoreCase("MC|TrList")) { + channel = "minecraft:trader_list"; + wrapper.passthrough(Type.INT); // Passthrough Window ID + + int size = wrapper.passthrough(Type.UNSIGNED_BYTE); + for (int i = 0; i < size; i++) { + // Input Item + Item input = wrapper.read(Type.ITEM); + handleItemToClient(input); + wrapper.write(Type.FLAT_ITEM, input); + // Output Item + Item output = wrapper.read(Type.ITEM); + handleItemToClient(output); + wrapper.write(Type.FLAT_ITEM, output); + + boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item + if (secondItem) { + // Second Item + Item second = wrapper.read(Type.ITEM); + handleItemToClient(second); + wrapper.write(Type.FLAT_ITEM, second); + } + + wrapper.passthrough(Type.BOOLEAN); // Trade disabled + wrapper.passthrough(Type.INT); // Number of tools uses + wrapper.passthrough(Type.INT); // Maximum number of trade uses + } + } else { + String old = channel; + channel = getNewPluginChannelId(channel); + if (channel == null) { + if (!Via.getConfig().isSuppressConversionWarnings() || Via.getManager().isDebug()) { + Via.getPlatform().getLogger().warning("Ignoring outgoing plugin message with channel: " + old); + } + wrapper.cancel(); + return; + } else if (channel.equals("minecraft:register") || channel.equals("minecraft:unregister")) { + String[] channels = new String(wrapper.read(Type.REMAINING_BYTES), StandardCharsets.UTF_8).split("\0"); + List rewrittenChannels = new ArrayList<>(); + for (String s : channels) { + String rewritten = getNewPluginChannelId(s); + if (rewritten != null) { + rewrittenChannels.add(rewritten); + } else if (!Via.getConfig().isSuppressConversionWarnings() || Via.getManager().isDebug()) { + Via.getPlatform().getLogger().warning("Ignoring plugin channel in outgoing REGISTER: " + s); + } + } + if (!rewrittenChannels.isEmpty()) { + wrapper.write(Type.REMAINING_BYTES, Joiner.on('\0').join(rewrittenChannels).getBytes(StandardCharsets.UTF_8)); + } else { wrapper.cancel(); return; - } else if (channel.equals("minecraft:register") || channel.equals("minecraft:unregister")) { - String[] channels = new String(wrapper.read(Type.REMAINING_BYTES), StandardCharsets.UTF_8).split("\0"); - List rewrittenChannels = new ArrayList<>(); - for (String s : channels) { - String rewritten = getNewPluginChannelId(s); - if (rewritten != null) { - rewrittenChannels.add(rewritten); - } else if (!Via.getConfig().isSuppressConversionWarnings() || Via.getManager().isDebug()) { - Via.getPlatform().getLogger().warning("Ignoring plugin channel in outgoing REGISTER: " + s); - } - } - if (!rewrittenChannels.isEmpty()) { - wrapper.write(Type.REMAINING_BYTES, Joiner.on('\0').join(rewrittenChannels).getBytes(StandardCharsets.UTF_8)); - } else { - wrapper.cancel(); - return; - } } } - wrapper.set(Type.STRING, 0, channel); } + wrapper.set(Type.STRING, 0, channel); }); } }); @@ -229,33 +220,30 @@ public class InventoryPackets extends ItemRewriter rewrittenChannels = new ArrayList<>(); - for (String s : channels) { - String rewritten = getOldPluginChannelId(s); - if (rewritten != null) { - rewrittenChannels.add(rewritten); - } else if (!Via.getConfig().isSuppressConversionWarnings() || Via.getManager().isDebug()) { - Via.getPlatform().getLogger().warning("Ignoring plugin channel in incoming REGISTER: " + s); - } - } - wrapper.write(Type.REMAINING_BYTES, Joiner.on('\0').join(rewrittenChannels).getBytes(StandardCharsets.UTF_8)); + handler(wrapper -> { + String channel = wrapper.get(Type.STRING, 0); + String old = channel; + channel = getOldPluginChannelId(channel); + if (channel == null) { + if (!Via.getConfig().isSuppressConversionWarnings() || Via.getManager().isDebug()) { + Via.getPlatform().getLogger().warning("Ignoring incoming plugin message with channel: " + old); } - wrapper.set(Type.STRING, 0, channel); + wrapper.cancel(); + return; + } else if (channel.equals("REGISTER") || channel.equals("UNREGISTER")) { + String[] channels = new String(wrapper.read(Type.REMAINING_BYTES), StandardCharsets.UTF_8).split("\0"); + List rewrittenChannels = new ArrayList<>(); + for (String s : channels) { + String rewritten = getOldPluginChannelId(s); + if (rewritten != null) { + rewrittenChannels.add(rewritten); + } else if (!Via.getConfig().isSuppressConversionWarnings() || Via.getManager().isDebug()) { + Via.getPlatform().getLogger().warning("Ignoring plugin channel in incoming REGISTER: " + s); + } + } + wrapper.write(Type.REMAINING_BYTES, Joiner.on('\0').join(rewrittenChannels).getBytes(StandardCharsets.UTF_8)); } + wrapper.set(Type.STRING, 0, channel); }); } }); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/packets/WorldPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/packets/WorldPackets.java index b9049527c..3b960a0a2 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/packets/WorldPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/packets/WorldPackets.java @@ -47,7 +47,6 @@ import com.viaversion.viaversion.protocols.protocol1_9_1_2to1_9_3_4.types.Chunk1 import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; import it.unimi.dsi.fastutil.ints.IntOpenHashSet; import it.unimi.dsi.fastutil.ints.IntSet; - import java.util.Iterator; import java.util.List; import java.util.Optional; @@ -259,8 +258,9 @@ public class WorldPackets { protocol.registerClientbound(ClientboundPackets1_12_1.EXPLOSION, new PacketHandlers() { @Override public void register() { - if (!Via.getConfig().isServersideBlockConnections()) + if (!Via.getConfig().isServersideBlockConnections()) { return; + } map(Type.FLOAT); // X map(Type.FLOAT); // Y @@ -323,211 +323,207 @@ public class WorldPackets { } }); - protocol.registerClientbound(ClientboundPackets1_12_1.CHUNK_DATA, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); - BlockStorage storage = wrapper.user().get(BlockStorage.class); + protocol.registerClientbound(ClientboundPackets1_12_1.CHUNK_DATA, wrapper -> { + ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); + BlockStorage storage = wrapper.user().get(BlockStorage.class); - Chunk1_9_3_4Type type = new Chunk1_9_3_4Type(clientWorld); - Chunk1_13Type type1_13 = new Chunk1_13Type(clientWorld); - Chunk chunk = wrapper.read(type); - wrapper.write(type1_13, chunk); + Chunk1_9_3_4Type type = new Chunk1_9_3_4Type(clientWorld); + Chunk1_13Type type1_13 = new Chunk1_13Type(clientWorld); + Chunk chunk = wrapper.read(type); + wrapper.write(type1_13, chunk); - for (int s = 0; s < chunk.getSections().length; s++) { - ChunkSection section = chunk.getSections()[s]; - if (section == null) continue; - DataPalette blocks = section.palette(PaletteType.BLOCKS); + for (int s = 0; s < chunk.getSections().length; s++) { + ChunkSection section = chunk.getSections()[s]; + if (section == null) continue; + DataPalette blocks = section.palette(PaletteType.BLOCKS); + for (int p = 0; p < blocks.size(); p++) { + int old = blocks.idByIndex(p); + int newId = toNewId(old); + blocks.setIdByIndex(p, newId); + } + + storage: + { + if (chunk.isFullChunk()) { + boolean willSave = false; for (int p = 0; p < blocks.size(); p++) { - int old = blocks.idByIndex(p); - int newId = toNewId(old); - blocks.setIdByIndex(p, newId); - } - - storage: - { - if (chunk.isFullChunk()) { - boolean willSave = false; - for (int p = 0; p < blocks.size(); p++) { - if (storage.isWelcome(blocks.idByIndex(p))) { - willSave = true; - break; - } - } - if (!willSave) break storage; - } - for (int idx = 0; idx < ChunkSection.SIZE; idx++) { - int id = blocks.idAt(idx); - if (storage.isWelcome(id)) { - storage.store(new Position(ChunkSection.xFromIndex(idx) + (chunk.getX() << 4), ChunkSection.yFromIndex(idx) + (s << 4), ChunkSection.zFromIndex(idx) + (chunk.getZ() << 4)), id); - } else if (!chunk.isFullChunk()) { // Update - storage.remove(new Position(ChunkSection.xFromIndex(idx) + (chunk.getX() << 4), ChunkSection.yFromIndex(idx) + (s << 4), ChunkSection.zFromIndex(idx) + (chunk.getZ() << 4))); - } + if (storage.isWelcome(blocks.idByIndex(p))) { + willSave = true; + break; } } - - save_connections: - { - if (!Via.getConfig().isServersideBlockConnections() || !ConnectionData.needStoreBlocks()) break save_connections; - - if (!chunk.isFullChunk()) { // Update - ConnectionData.blockConnectionProvider.unloadChunkSection(wrapper.user(), chunk.getX(), s, chunk.getZ()); - } - boolean willSave = false; - for (int p = 0; p < blocks.size(); p++) { - if (ConnectionData.isWelcome(blocks.idByIndex(p))) { - willSave = true; - break; - } - } - if (!willSave) break save_connections; - - for (int idx = 0; idx < ChunkSection.SIZE; idx++) { - int id = blocks.idAt(idx); - if (ConnectionData.isWelcome(id)) { - int globalX = ChunkSection.xFromIndex(idx) + (chunk.getX() << 4); - int globalY = ChunkSection.yFromIndex(idx) + (s << 4); - int globalZ = ChunkSection.zFromIndex(idx) + (chunk.getZ() << 4); - ConnectionData.blockConnectionProvider.storeBlock(wrapper.user(), globalX, globalY, globalZ, id); - } - } + if (!willSave) break storage; + } + for (int idx = 0; idx < ChunkSection.SIZE; idx++) { + int id = blocks.idAt(idx); + if (storage.isWelcome(id)) { + storage.store(new Position(ChunkSection.xFromIndex(idx) + (chunk.getX() << 4), ChunkSection.yFromIndex(idx) + (s << 4), ChunkSection.zFromIndex(idx) + (chunk.getZ() << 4)), id); + } else if (!chunk.isFullChunk()) { // Update + storage.remove(new Position(ChunkSection.xFromIndex(idx) + (chunk.getX() << 4), ChunkSection.yFromIndex(idx) + (s << 4), ChunkSection.zFromIndex(idx) + (chunk.getZ() << 4))); } } + } - // Rewrite biome id 255 to plains - if (chunk.isBiomeData()) { - int latestBiomeWarn = Integer.MIN_VALUE; - for (int i = 0; i < 256; i++) { - int biome = chunk.getBiomeData()[i]; - if (!VALID_BIOMES.contains(biome)) { - if (biome != 255 // is it generated naturally? *shrug* - && latestBiomeWarn != biome) { - if (!Via.getConfig().isSuppressConversionWarnings() || Via.getManager().isDebug()) { - Via.getPlatform().getLogger().warning("Received invalid biome id " + biome); - } - latestBiomeWarn = biome; - } - chunk.getBiomeData()[i] = 1; // Plains - } + save_connections: + { + if (!Via.getConfig().isServersideBlockConnections() || !ConnectionData.needStoreBlocks()) + break save_connections; + + if (!chunk.isFullChunk()) { // Update + ConnectionData.blockConnectionProvider.unloadChunkSection(wrapper.user(), chunk.getX(), s, chunk.getZ()); + } + boolean willSave = false; + for (int p = 0; p < blocks.size(); p++) { + if (ConnectionData.isWelcome(blocks.idByIndex(p))) { + willSave = true; + break; } } + if (!willSave) break save_connections; - // Rewrite BlockEntities to normal blocks - BlockEntityProvider provider = Via.getManager().getProviders().get(BlockEntityProvider.class); - final Iterator iterator = chunk.getBlockEntities().iterator(); - while (iterator.hasNext()) { - CompoundTag tag = iterator.next(); - int newId = provider.transform(wrapper.user(), null, tag, false); - if (newId != -1) { - int x = ((NumberTag) tag.get("x")).asInt(); - int y = ((NumberTag) tag.get("y")).asInt(); - int z = ((NumberTag) tag.get("z")).asInt(); - - Position position = new Position(x, (short) y, z); - // Store the replacement blocks for blockupdates - BlockStorage.ReplacementData replacementData = storage.get(position); - if (replacementData != null) { - replacementData.setReplacement(newId); - } - - chunk.getSections()[y >> 4].palette(PaletteType.BLOCKS).setIdAt(x & 0xF, y & 0xF, z & 0xF, newId); - } - - final Tag idTag = tag.get("id"); - if (idTag instanceof StringTag) { - // No longer block entities - final String id = ((StringTag) idTag).getValue(); - if (id.equals("minecraft:noteblock") || id.equals("minecraft:flower_pot")) { - iterator.remove(); - } + for (int idx = 0; idx < ChunkSection.SIZE; idx++) { + int id = blocks.idAt(idx); + if (ConnectionData.isWelcome(id)) { + int globalX = ChunkSection.xFromIndex(idx) + (chunk.getX() << 4); + int globalY = ChunkSection.yFromIndex(idx) + (s << 4); + int globalZ = ChunkSection.zFromIndex(idx) + (chunk.getZ() << 4); + ConnectionData.blockConnectionProvider.storeBlock(wrapper.user(), globalX, globalY, globalZ, id); } } + } + } - if (Via.getConfig().isServersideBlockConnections()) { - ConnectionData.connectBlocks(wrapper.user(), chunk); - // Workaround for packet order issue - wrapper.send(Protocol1_13To1_12_2.class); - wrapper.cancel(); - for (int i = 0; i < chunk.getSections().length; i++) { - ChunkSection section = chunk.getSections()[i]; - if (section == null) continue; - ConnectionData.updateChunkSectionNeighbours(wrapper.user(), chunk.getX(), chunk.getZ(), i); + // Rewrite biome id 255 to plains + if (chunk.isBiomeData()) { + int latestBiomeWarn = Integer.MIN_VALUE; + for (int i = 0; i < 256; i++) { + int biome = chunk.getBiomeData()[i]; + if (!VALID_BIOMES.contains(biome)) { + if (biome != 255 // is it generated naturally? *shrug* + && latestBiomeWarn != biome) { + if (!Via.getConfig().isSuppressConversionWarnings() || Via.getManager().isDebug()) { + Via.getPlatform().getLogger().warning("Received invalid biome id " + biome); + } + latestBiomeWarn = biome; } + chunk.getBiomeData()[i] = 1; // Plains } - }); + } + } + + // Rewrite BlockEntities to normal blocks + BlockEntityProvider provider = Via.getManager().getProviders().get(BlockEntityProvider.class); + final Iterator iterator = chunk.getBlockEntities().iterator(); + while (iterator.hasNext()) { + CompoundTag tag = iterator.next(); + int newId = provider.transform(wrapper.user(), null, tag, false); + if (newId != -1) { + int x = ((NumberTag) tag.get("x")).asInt(); + int y = ((NumberTag) tag.get("y")).asInt(); + int z = ((NumberTag) tag.get("z")).asInt(); + + Position position = new Position(x, (short) y, z); + // Store the replacement blocks for blockupdates + BlockStorage.ReplacementData replacementData = storage.get(position); + if (replacementData != null) { + replacementData.setReplacement(newId); + } + + chunk.getSections()[y >> 4].palette(PaletteType.BLOCKS).setIdAt(x & 0xF, y & 0xF, z & 0xF, newId); + } + + final Tag idTag = tag.get("id"); + if (idTag instanceof StringTag) { + // No longer block entities + final String id = ((StringTag) idTag).getValue(); + if (id.equals("minecraft:noteblock") || id.equals("minecraft:flower_pot")) { + iterator.remove(); + } + } + } + + if (Via.getConfig().isServersideBlockConnections()) { + ConnectionData.connectBlocks(wrapper.user(), chunk); + // Workaround for packet order issue + wrapper.send(Protocol1_13To1_12_2.class); + wrapper.cancel(); + for (int i = 0; i < chunk.getSections().length; i++) { + ChunkSection section = chunk.getSections()[i]; + if (section == null) continue; + ConnectionData.updateChunkSectionNeighbours(wrapper.user(), chunk.getX(), chunk.getZ(), i); + } } }); protocol.registerClientbound(ClientboundPackets1_12_1.SPAWN_PARTICLE, new PacketHandlers() { - @Override - public void register() { - map(Type.INT); // 0 - Particle ID - map(Type.BOOLEAN); // 1 - Long Distance - map(Type.FLOAT); // 2 - X - map(Type.FLOAT); // 3 - Y - map(Type.FLOAT); // 4 - Z - map(Type.FLOAT); // 5 - Offset X - map(Type.FLOAT); // 6 - Offset Y - map(Type.FLOAT); // 7 - Offset Z - map(Type.FLOAT); // 8 - Particle Data - map(Type.INT); // 9 - Particle Count + @Override + public void register() { + map(Type.INT); // 0 - Particle ID + map(Type.BOOLEAN); // 1 - Long Distance + map(Type.FLOAT); // 2 - X + map(Type.FLOAT); // 3 - Y + map(Type.FLOAT); // 4 - Z + map(Type.FLOAT); // 5 - Offset X + map(Type.FLOAT); // 6 - Offset Y + map(Type.FLOAT); // 7 - Offset Z + map(Type.FLOAT); // 8 - Particle Data + map(Type.INT); // 9 - Particle Count - handler(wrapper -> { - int particleId = wrapper.get(Type.INT, 0); + handler(wrapper -> { + int particleId = wrapper.get(Type.INT, 0); - // Get the data (Arrays are overrated) - int dataCount = 0; - // Particles with 1 data [BlockCrack,BlockDust,FallingDust] - if (particleId == 37 || particleId == 38 || particleId == 46) - dataCount = 1; - // Particles with 2 data [IconCrack] - else if (particleId == 36) - dataCount = 2; + // Get the data (Arrays are overrated) + int dataCount = 0; + // Particles with 1 data [BlockCrack,BlockDust,FallingDust] + if (particleId == 37 || particleId == 38 || particleId == 46) + dataCount = 1; + // Particles with 2 data [IconCrack] + else if (particleId == 36) + dataCount = 2; - Integer[] data = new Integer[dataCount]; - for (int i = 0; i < data.length; i++) - data[i] = wrapper.read(Type.VAR_INT); + Integer[] data = new Integer[dataCount]; + for (int i = 0; i < data.length; i++) + data[i] = wrapper.read(Type.VAR_INT); - Particle particle = ParticleRewriter.rewriteParticle(particleId, data); + Particle particle = ParticleRewriter.rewriteParticle(particleId, data); - // Cancel if null or completely removed - if (particle == null || particle.getId() == -1) { - wrapper.cancel(); - return; - } - - //Handle reddust particle color - if (particle.getId() == 11) { - int count = wrapper.get(Type.INT, 1); - float speed = wrapper.get(Type.FLOAT, 6); - // Only handle for count = 0 - if (count == 0) { - wrapper.set(Type.INT, 1, 1); - wrapper.set(Type.FLOAT, 6, 0f); - - List arguments = particle.getArguments(); - for (int i = 0; i < 3; i++) { - //RGB values are represented by the X/Y/Z offset - float colorValue = wrapper.get(Type.FLOAT, i + 3) * speed; - if (colorValue == 0 && i == 0) { - // https://minecraft.gamepedia.com/User:Alphappy/reddust - colorValue = 1; - } - arguments.get(i).setValue(colorValue); - wrapper.set(Type.FLOAT, i + 3, 0f); - } - } - } - - wrapper.set(Type.INT, 0, particle.getId()); - for (Particle.ParticleData particleData : particle.getArguments()) - wrapper.write(particleData.getType(), particleData.getValue()); - - }); + // Cancel if null or completely removed + if (particle == null || particle.getId() == -1) { + wrapper.cancel(); + return; } + + //Handle reddust particle color + if (particle.getId() == 11) { + int count = wrapper.get(Type.INT, 1); + float speed = wrapper.get(Type.FLOAT, 6); + // Only handle for count = 0 + if (count == 0) { + wrapper.set(Type.INT, 1, 1); + wrapper.set(Type.FLOAT, 6, 0f); + + List arguments = particle.getArguments(); + for (int i = 0; i < 3; i++) { + //RGB values are represented by the X/Y/Z offset + float colorValue = wrapper.get(Type.FLOAT, i + 3) * speed; + if (colorValue == 0 && i == 0) { + // https://minecraft.gamepedia.com/User:Alphappy/reddust + colorValue = 1; + } + arguments.get(i).setValue(colorValue); + wrapper.set(Type.FLOAT, i + 3, 0f); + } + } + } + + wrapper.set(Type.INT, 0, particle.getId()); + for (Particle.ParticleData particleData : particle.getArguments()) + wrapper.write(particleData.getType(), particleData.getValue()); + }); + } + }); } public static int toNewId(int oldId) { diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/providers/BlockEntityProvider.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/providers/BlockEntityProvider.java index 31e16e057..829003e01 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/providers/BlockEntityProvider.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/providers/BlockEntityProvider.java @@ -33,7 +33,6 @@ import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.providers.blocke import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.providers.blockentities.FlowerPotHandler; import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.providers.blockentities.SkullHandler; import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.providers.blockentities.SpawnerHandler; - import java.util.HashMap; import java.util.Map; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/providers/PaintingProvider.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/providers/PaintingProvider.java index 3672b89f3..9d02d71ca 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/providers/PaintingProvider.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/providers/PaintingProvider.java @@ -18,7 +18,6 @@ package com.viaversion.viaversion.protocols.protocol1_13to1_12_2.providers; import com.viaversion.viaversion.api.platform.providers.Provider; - import java.util.HashMap; import java.util.Locale; import java.util.Map; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/providers/blockentities/FlowerPotHandler.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/providers/blockentities/FlowerPotHandler.java index 0df98192c..3c29aaff4 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/providers/blockentities/FlowerPotHandler.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/providers/blockentities/FlowerPotHandler.java @@ -21,7 +21,6 @@ import com.github.steveice10.opennbt.tag.builtin.CompoundTag; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.providers.BlockEntityProvider; import com.viaversion.viaversion.util.Pair; - import java.util.Map; import java.util.concurrent.ConcurrentHashMap; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/storage/BlockStorage.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/storage/BlockStorage.java index 371be0aee..b7ea4f96b 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/storage/BlockStorage.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/storage/BlockStorage.java @@ -21,9 +21,8 @@ import com.viaversion.viaversion.api.connection.StorableObject; import com.viaversion.viaversion.api.minecraft.Position; import it.unimi.dsi.fastutil.ints.IntOpenHashSet; import it.unimi.dsi.fastutil.ints.IntSet; -import space.vectrix.flare.SyncMap; - import java.util.Map; +import space.vectrix.flare.SyncMap; // TODO Fix memory leak lolz (only a smol one tho) public class BlockStorage implements StorableObject { diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/types/Chunk1_13Type.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/types/Chunk1_13Type.java index 92c8dc00c..642062924 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/types/Chunk1_13Type.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_13to1_12_2/types/Chunk1_13Type.java @@ -29,7 +29,6 @@ import com.viaversion.viaversion.api.type.types.minecraft.BaseChunkType; import com.viaversion.viaversion.api.type.types.version.Types1_13; import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; import io.netty.buffer.ByteBuf; - import java.util.ArrayList; import java.util.Arrays; import java.util.List; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14_1to1_14/metadata/MetadataRewriter1_14_1To1_14.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14_1to1_14/metadata/MetadataRewriter1_14_1To1_14.java index 375df5cdb..9d5f362fe 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14_1to1_14/metadata/MetadataRewriter1_14_1To1_14.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14_1to1_14/metadata/MetadataRewriter1_14_1To1_14.java @@ -24,7 +24,6 @@ import com.viaversion.viaversion.api.minecraft.metadata.Metadata; import com.viaversion.viaversion.protocols.protocol1_14_1to1_14.Protocol1_14_1To1_14; import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPackets1_14; import com.viaversion.viaversion.rewriter.EntityRewriter; - import java.util.List; public class MetadataRewriter1_14_1To1_14 extends EntityRewriter { diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14_3to1_14_2/Protocol1_14_3To1_14_2.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14_3to1_14_2/Protocol1_14_3To1_14_2.java index 9497d39eb..13a4a7034 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14_3to1_14_2/Protocol1_14_3To1_14_2.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14_3to1_14_2/Protocol1_14_3To1_14_2.java @@ -18,9 +18,6 @@ package com.viaversion.viaversion.protocols.protocol1_14_3to1_14_2; import com.viaversion.viaversion.api.protocol.AbstractProtocol; -import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPackets1_14; import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ServerboundPackets1_14; @@ -33,34 +30,26 @@ public class Protocol1_14_3To1_14_2 extends AbstractProtocol { + wrapper.passthrough(Type.VAR_INT); + int size = wrapper.passthrough(Type.UNSIGNED_BYTE); + for (int i = 0; i < size; i++) { + wrapper.passthrough(Type.FLAT_VAR_INT_ITEM); + wrapper.passthrough(Type.FLAT_VAR_INT_ITEM); + if (wrapper.passthrough(Type.BOOLEAN)) { + wrapper.passthrough(Type.FLAT_VAR_INT_ITEM); + } + wrapper.passthrough(Type.BOOLEAN); + wrapper.passthrough(Type.INT); + wrapper.passthrough(Type.INT); + wrapper.passthrough(Type.INT); + wrapper.passthrough(Type.INT); + wrapper.passthrough(Type.FLOAT); } + wrapper.passthrough(Type.VAR_INT); + wrapper.passthrough(Type.VAR_INT); + boolean regularVillager = wrapper.passthrough(Type.BOOLEAN); + wrapper.write(Type.BOOLEAN, regularVillager); // new boolean added in pre-1 }); } } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14_4to1_14_3/Protocol1_14_4To1_14_3.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14_4to1_14_3/Protocol1_14_4To1_14_3.java index d0c39368b..e82720c79 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14_4to1_14_3/Protocol1_14_4To1_14_3.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14_4to1_14_3/Protocol1_14_4To1_14_3.java @@ -18,9 +18,6 @@ package com.viaversion.viaversion.protocols.protocol1_14_4to1_14_3; import com.viaversion.viaversion.api.protocol.AbstractProtocol; -import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPackets1_14; import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ServerboundPackets1_14; @@ -33,30 +30,22 @@ public class Protocol1_14_4To1_14_3 extends AbstractProtocol { + wrapper.passthrough(Type.VAR_INT); + int size = wrapper.passthrough(Type.UNSIGNED_BYTE); + for (int i = 0; i < size; i++) { + wrapper.passthrough(Type.FLAT_VAR_INT_ITEM); + wrapper.passthrough(Type.FLAT_VAR_INT_ITEM); + if (wrapper.passthrough(Type.BOOLEAN)) { + wrapper.passthrough(Type.FLAT_VAR_INT_ITEM); + } + wrapper.passthrough(Type.BOOLEAN); + wrapper.passthrough(Type.INT); + wrapper.passthrough(Type.INT); + wrapper.passthrough(Type.INT); + wrapper.passthrough(Type.INT); + wrapper.passthrough(Type.FLOAT); + wrapper.write(Type.INT, 0); // demand value added in pre5 } }); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/Protocol1_14To1_13_2.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/Protocol1_14To1_13_2.java index 5ecddcc52..d54c5f143 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/Protocol1_14To1_13_2.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/Protocol1_14To1_13_2.java @@ -19,9 +19,6 @@ package com.viaversion.viaversion.protocols.protocol1_14to1_13_2; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.protocol.AbstractProtocol; -import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.api.type.types.minecraft.ParticleType; import com.viaversion.viaversion.api.type.types.version.Types1_13_2; @@ -79,67 +76,59 @@ public class Protocol1_14To1_13_2 extends AbstractProtocol { + int blockTagsSize = wrapper.read(Type.VAR_INT); + wrapper.write(Type.VAR_INT, blockTagsSize + 6); // block tags + for (int i = 0; i < blockTagsSize; i++) { + wrapper.passthrough(Type.STRING); + int[] blockIds = wrapper.passthrough(Type.VAR_INT_ARRAY_PRIMITIVE); + for (int j = 0; j < blockIds.length; j++) { + blockIds[j] = getMappingData().getNewBlockId(blockIds[j]); + } } + // Minecraft crashes if we not send signs tags + wrapper.write(Type.STRING, "minecraft:signs"); + wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[]{ + getMappingData().getNewBlockId(150), getMappingData().getNewBlockId(155) + }); + wrapper.write(Type.STRING, "minecraft:wall_signs"); + wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[]{ + getMappingData().getNewBlockId(155) + }); + wrapper.write(Type.STRING, "minecraft:standing_signs"); + wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[]{ + getMappingData().getNewBlockId(150) + }); + // Fences and walls tags - used for block connections + wrapper.write(Type.STRING, "minecraft:fences"); + wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[]{189, 248, 472, 473, 474, 475}); + wrapper.write(Type.STRING, "minecraft:walls"); + wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[]{271, 272}); + wrapper.write(Type.STRING, "minecraft:wooden_fences"); + wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[]{189, 472, 473, 474, 475}); + int itemTagsSize = wrapper.read(Type.VAR_INT); + wrapper.write(Type.VAR_INT, itemTagsSize + 2); // item tags + for (int i = 0; i < itemTagsSize; i++) { + wrapper.passthrough(Type.STRING); + int[] itemIds = wrapper.passthrough(Type.VAR_INT_ARRAY_PRIMITIVE); + for (int j = 0; j < itemIds.length; j++) { + itemIds[j] = getMappingData().getNewItemId(itemIds[j]); + } + } + // Should fix fuel shift clicking + wrapper.write(Type.STRING, "minecraft:signs"); + wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[]{ + getMappingData().getNewItemId(541) + }); + // Arrows tag (used by bow) + wrapper.write(Type.STRING, "minecraft:arrows"); + wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[]{526, 825, 826}); + int fluidTagsSize = wrapper.passthrough(Type.VAR_INT); // fluid tags + for (int i = 0; i < fluidTagsSize; i++) { + wrapper.passthrough(Type.STRING); + wrapper.passthrough(Type.VAR_INT_ARRAY_PRIMITIVE); + } + wrapper.write(Type.VAR_INT, 0); // new entity tags - do we need to send this? }); // Set Difficulty packet added in 19w11a diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/data/MappingData.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/data/MappingData.java index 4a2160085..918ce7e79 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/data/MappingData.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/data/MappingData.java @@ -25,7 +25,6 @@ import com.viaversion.viaversion.api.data.MappingDataBase; import com.viaversion.viaversion.api.data.MappingDataLoader; import it.unimi.dsi.fastutil.ints.IntOpenHashSet; import it.unimi.dsi.fastutil.ints.IntSet; - import java.util.HashMap; import java.util.Map; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/metadata/MetadataRewriter1_14To1_13_2.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/metadata/MetadataRewriter1_14To1_13_2.java index 81f78386b..8a99e355c 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/metadata/MetadataRewriter1_14To1_13_2.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/metadata/MetadataRewriter1_14To1_13_2.java @@ -35,7 +35,6 @@ import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPacke import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.Protocol1_14To1_13_2; import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.storage.EntityTracker1_14; import com.viaversion.viaversion.rewriter.EntityRewriter; - import java.util.List; public class MetadataRewriter1_14To1_13_2 extends EntityRewriter { diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/EntityPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/EntityPackets.java index 16c1733fb..741051047 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/EntityPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/EntityPackets.java @@ -23,7 +23,6 @@ import com.viaversion.viaversion.api.minecraft.entities.Entity1_14Types; import com.viaversion.viaversion.api.minecraft.entities.EntityType; import com.viaversion.viaversion.api.minecraft.metadata.Metadata; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.api.type.types.version.Types1_13_2; @@ -34,7 +33,6 @@ import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.Protocol1_14To1_ import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.metadata.MetadataRewriter1_14To1_13_2; import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.storage.EntityTracker1_14; import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; - import java.util.LinkedList; import java.util.List; @@ -60,62 +58,59 @@ public class EntityPackets { map(Type.SHORT); // 11 - Velocity Z // Track Entity - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int entityId = wrapper.get(Type.VAR_INT, 0); - int typeId = wrapper.get(Type.VAR_INT, 1); + handler(wrapper -> { + int entityId = wrapper.get(Type.VAR_INT, 0); + int typeId = wrapper.get(Type.VAR_INT, 1); - Entity1_13Types.EntityType type1_13 = Entity1_13Types.getTypeFromId(typeId, true); - typeId = metadataRewriter.newEntityId(type1_13.getId()); - EntityType type1_14 = Entity1_14Types.getTypeFromId(typeId); + Entity1_13Types.EntityType type1_13 = Entity1_13Types.getTypeFromId(typeId, true); + typeId = metadataRewriter.newEntityId(type1_13.getId()); + EntityType type1_14 = Entity1_14Types.getTypeFromId(typeId); - if (type1_14 != null) { - int data = wrapper.get(Type.INT, 0); - if (type1_14.is(Entity1_14Types.FALLING_BLOCK)) { - wrapper.set(Type.INT, 0, protocol.getMappingData().getNewBlockStateId(data)); - } else if (type1_14.is(Entity1_14Types.MINECART)) { - // default is 0 = rideable minecart - switch (data) { - case 1: - typeId = Entity1_14Types.CHEST_MINECART.getId(); - break; - case 2: - typeId = Entity1_14Types.FURNACE_MINECART.getId(); - break; - case 3: - typeId = Entity1_14Types.TNT_MINECART.getId(); - break; - case 4: - typeId = Entity1_14Types.SPAWNER_MINECART.getId(); - break; - case 5: - typeId = Entity1_14Types.HOPPER_MINECART.getId(); - break; - case 6: - typeId = Entity1_14Types.COMMAND_BLOCK_MINECART.getId(); - break; - } - } else if ((type1_14.is(Entity1_14Types.ITEM) && data > 0) - || type1_14.isOrHasParent(Entity1_14Types.ABSTRACT_ARROW)) { - if (type1_14.isOrHasParent(Entity1_14Types.ABSTRACT_ARROW)) { - wrapper.set(Type.INT, 0, data - 1); - } - // send velocity in separate packet, 1.14 is now ignoring the velocity - PacketWrapper velocity = wrapper.create(0x45); - velocity.write(Type.VAR_INT, entityId); - velocity.write(Type.SHORT, wrapper.get(Type.SHORT, 0)); - velocity.write(Type.SHORT, wrapper.get(Type.SHORT, 1)); - velocity.write(Type.SHORT, wrapper.get(Type.SHORT, 2)); - velocity.scheduleSend(Protocol1_14To1_13_2.class); + if (type1_14 != null) { + int data = wrapper.get(Type.INT, 0); + if (type1_14.is(Entity1_14Types.FALLING_BLOCK)) { + wrapper.set(Type.INT, 0, protocol.getMappingData().getNewBlockStateId(data)); + } else if (type1_14.is(Entity1_14Types.MINECART)) { + // default is 0 = rideable minecart + switch (data) { + case 1: + typeId = Entity1_14Types.CHEST_MINECART.getId(); + break; + case 2: + typeId = Entity1_14Types.FURNACE_MINECART.getId(); + break; + case 3: + typeId = Entity1_14Types.TNT_MINECART.getId(); + break; + case 4: + typeId = Entity1_14Types.SPAWNER_MINECART.getId(); + break; + case 5: + typeId = Entity1_14Types.HOPPER_MINECART.getId(); + break; + case 6: + typeId = Entity1_14Types.COMMAND_BLOCK_MINECART.getId(); + break; } - - // Register Type ID - wrapper.user().getEntityTracker(Protocol1_14To1_13_2.class).addEntity(entityId, type1_14); + } else if ((type1_14.is(Entity1_14Types.ITEM) && data > 0) + || type1_14.isOrHasParent(Entity1_14Types.ABSTRACT_ARROW)) { + if (type1_14.isOrHasParent(Entity1_14Types.ABSTRACT_ARROW)) { + wrapper.set(Type.INT, 0, data - 1); + } + // send velocity in separate packet, 1.14 is now ignoring the velocity + PacketWrapper velocity = wrapper.create(0x45); + velocity.write(Type.VAR_INT, entityId); + velocity.write(Type.SHORT, wrapper.get(Type.SHORT, 0)); + velocity.write(Type.SHORT, wrapper.get(Type.SHORT, 1)); + velocity.write(Type.SHORT, wrapper.get(Type.SHORT, 2)); + velocity.scheduleSend(Protocol1_14To1_13_2.class); } - wrapper.set(Type.VAR_INT, 1, typeId); + // Register Type ID + wrapper.user().getEntityTracker(Protocol1_14To1_13_2.class).addEntity(entityId, type1_14); } + + wrapper.set(Type.VAR_INT, 1, typeId); }); } }); @@ -172,25 +167,22 @@ public class EntityPackets { @Override public void register() { map(Type.VAR_INT); - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - short animation = wrapper.passthrough(Type.UNSIGNED_BYTE); - if (animation == 2) { //Leave bed - EntityTracker1_14 tracker = wrapper.user().getEntityTracker(Protocol1_14To1_13_2.class); - int entityId = wrapper.get(Type.VAR_INT, 0); - tracker.setSleeping(entityId, false); + handler(wrapper -> { + short animation = wrapper.passthrough(Type.UNSIGNED_BYTE); + if (animation == 2) { //Leave bed + EntityTracker1_14 tracker = wrapper.user().getEntityTracker(Protocol1_14To1_13_2.class); + int entityId = wrapper.get(Type.VAR_INT, 0); + tracker.setSleeping(entityId, false); - PacketWrapper metadataPacket = wrapper.create(ClientboundPackets1_14.ENTITY_METADATA); - metadataPacket.write(Type.VAR_INT, entityId); - List metadataList = new LinkedList<>(); - if (tracker.clientEntityId() != entityId) { - metadataList.add(new Metadata(6, Types1_14.META_TYPES.poseType, MetadataRewriter1_14To1_13_2.recalculatePlayerPose(entityId, tracker))); - } - metadataList.add(new Metadata(12, Types1_14.META_TYPES.optionalPositionType, null)); - metadataPacket.write(Types1_14.METADATA_LIST, metadataList); - metadataPacket.scheduleSend(Protocol1_14To1_13_2.class); + PacketWrapper metadataPacket = wrapper.create(ClientboundPackets1_14.ENTITY_METADATA); + metadataPacket.write(Type.VAR_INT, entityId); + List metadataList = new LinkedList<>(); + if (tracker.clientEntityId() != entityId) { + metadataList.add(new Metadata(6, Types1_14.META_TYPES.poseType, MetadataRewriter1_14To1_13_2.recalculatePlayerPose(entityId, tracker))); } + metadataList.add(new Metadata(12, Types1_14.META_TYPES.optionalPositionType, null)); + metadataPacket.write(Types1_14.METADATA_LIST, metadataList); + metadataPacket.scheduleSend(Protocol1_14To1_13_2.class); } }); } @@ -236,21 +228,18 @@ public class EntityPackets { @Override public void register() { map(Type.VAR_INT); - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - EntityTracker1_14 tracker = wrapper.user().getEntityTracker(Protocol1_14To1_13_2.class); - int entityId = wrapper.get(Type.VAR_INT, 0); - tracker.setSleeping(entityId, true); + handler(wrapper -> { + EntityTracker1_14 tracker = wrapper.user().getEntityTracker(Protocol1_14To1_13_2.class); + int entityId = wrapper.get(Type.VAR_INT, 0); + tracker.setSleeping(entityId, true); - Position position = wrapper.read(Type.POSITION); - List metadataList = new LinkedList<>(); - metadataList.add(new Metadata(12, Types1_14.META_TYPES.optionalPositionType, position)); - if (tracker.clientEntityId() != entityId) { - metadataList.add(new Metadata(6, Types1_14.META_TYPES.poseType, MetadataRewriter1_14To1_13_2.recalculatePlayerPose(entityId, tracker))); - } - wrapper.write(Types1_14.METADATA_LIST, metadataList); + Position position = wrapper.read(Type.POSITION); + List metadataList = new LinkedList<>(); + metadataList.add(new Metadata(12, Types1_14.META_TYPES.optionalPositionType, position)); + if (tracker.clientEntityId() != entityId) { + metadataList.add(new Metadata(6, Types1_14.META_TYPES.poseType, MetadataRewriter1_14To1_13_2.recalculatePlayerPose(entityId, tracker))); } + wrapper.write(Types1_14.METADATA_LIST, metadataList); }); } }); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/InventoryPackets.java index d0da18319..fa05b2ad5 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/InventoryPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/InventoryPackets.java @@ -29,11 +29,11 @@ import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.minecraft.item.DataItem; import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ChatRewriter; import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13; +import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ServerboundPackets1_13; import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.data.RecipeRewriter1_13_2; import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPackets1_14; import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.Protocol1_14To1_13_2; @@ -42,7 +42,6 @@ import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.storage.EntityTr import com.viaversion.viaversion.rewriter.ComponentRewriter; import com.viaversion.viaversion.rewriter.ItemRewriter; import com.viaversion.viaversion.rewriter.RecipeRewriter; - import java.util.Set; import java.util.concurrent.ThreadLocalRandom; @@ -69,79 +68,71 @@ public class InventoryPackets extends ItemRewriter { + Short windowId = wrapper.read(Type.UNSIGNED_BYTE); + String type = wrapper.read(Type.STRING); + JsonElement title = wrapper.read(Type.COMPONENT); + COMPONENT_REWRITER.processText(title); + Short slots = wrapper.read(Type.UNSIGNED_BYTE); - if (type.equals("EntityHorse")) { - wrapper.setPacketType(ClientboundPackets1_14.OPEN_HORSE_WINDOW); - int entityId = wrapper.read(Type.INT); - wrapper.write(Type.UNSIGNED_BYTE, windowId); - wrapper.write(Type.VAR_INT, slots.intValue()); - wrapper.write(Type.INT, entityId); - } else { - wrapper.setPacketType(ClientboundPackets1_14.OPEN_WINDOW); - wrapper.write(Type.VAR_INT, windowId.intValue()); + if (type.equals("EntityHorse")) { + wrapper.setPacketType(ClientboundPackets1_14.OPEN_HORSE_WINDOW); + int entityId = wrapper.read(Type.INT); + wrapper.write(Type.UNSIGNED_BYTE, windowId); + wrapper.write(Type.VAR_INT, slots.intValue()); + wrapper.write(Type.INT, entityId); + } else { + wrapper.setPacketType(ClientboundPackets1_14.OPEN_WINDOW); + wrapper.write(Type.VAR_INT, windowId.intValue()); - int typeId = -1; - switch (type) { - case "minecraft:crafting_table": - typeId = 11; - break; - case "minecraft:furnace": - typeId = 13; - break; - case "minecraft:dropper": - case "minecraft:dispenser": - typeId = 6; - break; - case "minecraft:enchanting_table": - typeId = 12; - break; - case "minecraft:brewing_stand": - typeId = 10; - break; - case "minecraft:villager": - typeId = 18; - break; - case "minecraft:beacon": - typeId = 8; - break; - case "minecraft:anvil": - typeId = 7; - break; - case "minecraft:hopper": - typeId = 15; - break; - case "minecraft:shulker_box": - typeId = 19; - break; - case "minecraft:container": - case "minecraft:chest": - default: - if (slots > 0 && slots <= 54) { - typeId = slots / 9 - 1; - } - break; - } - - if (typeId == -1) { - Via.getPlatform().getLogger().warning("Can't open inventory for 1.14 player! Type: " + type + " Size: " + slots); - } - - wrapper.write(Type.VAR_INT, typeId); - wrapper.write(Type.COMPONENT, title); + int typeId = -1; + switch (type) { + case "minecraft:crafting_table": + typeId = 11; + break; + case "minecraft:furnace": + typeId = 13; + break; + case "minecraft:dropper": + case "minecraft:dispenser": + typeId = 6; + break; + case "minecraft:enchanting_table": + typeId = 12; + break; + case "minecraft:brewing_stand": + typeId = 10; + break; + case "minecraft:villager": + typeId = 18; + break; + case "minecraft:beacon": + typeId = 8; + break; + case "minecraft:anvil": + typeId = 7; + break; + case "minecraft:hopper": + typeId = 15; + break; + case "minecraft:shulker_box": + typeId = 19; + break; + case "minecraft:container": + case "minecraft:chest": + default: + if (slots > 0 && slots <= 54) { + typeId = slots / 9 - 1; } - } - }); + break; + } + + if (typeId == -1) { + Via.getPlatform().getLogger().warning("Can't open inventory for 1.14 player! Type: " + type + " Size: " + slots); + } + + wrapper.write(Type.VAR_INT, typeId); + wrapper.write(Type.COMPONENT, title); } }); @@ -152,50 +143,47 @@ public class InventoryPackets extends ItemRewriter { + String channel = wrapper.get(Type.STRING, 0); + if (channel.equals("minecraft:trader_list") || channel.equals("trader_list")) { + wrapper.setPacketType(ClientboundPackets1_14.TRADE_LIST); + wrapper.resetReader(); + wrapper.read(Type.STRING); // Remove channel - int windowId = wrapper.read(Type.INT); - EntityTracker1_14 tracker = wrapper.user().getEntityTracker(Protocol1_14To1_13_2.class); - tracker.setLatestTradeWindowId(windowId); - wrapper.write(Type.VAR_INT, windowId); + int windowId = wrapper.read(Type.INT); + EntityTracker1_14 tracker = wrapper.user().getEntityTracker(Protocol1_14To1_13_2.class); + tracker.setLatestTradeWindowId(windowId); + wrapper.write(Type.VAR_INT, windowId); - int size = wrapper.passthrough(Type.UNSIGNED_BYTE); - for (int i = 0; i < size; i++) { - // Input Item + int size = wrapper.passthrough(Type.UNSIGNED_BYTE); + for (int i = 0; i < size; i++) { + // Input Item + handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); + // Output Item + handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); + + boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item + if (secondItem) { + // Second Item handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); - // Output Item - handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); - - boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item - if (secondItem) { - // Second Item - handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); - } - - wrapper.passthrough(Type.BOOLEAN); // Trade disabled - wrapper.passthrough(Type.INT); // Number of tools uses - wrapper.passthrough(Type.INT); // Maximum number of trade uses - - wrapper.write(Type.INT, 0); - wrapper.write(Type.INT, 0); - wrapper.write(Type.FLOAT, 0f); } - wrapper.write(Type.VAR_INT, 0); - wrapper.write(Type.VAR_INT, 0); - wrapper.write(Type.BOOLEAN, false); - } else if (channel.equals("minecraft:book_open") || channel.equals("book_open")) { - int hand = wrapper.read(Type.VAR_INT); - wrapper.clearPacket(); - wrapper.setPacketType(ClientboundPackets1_14.OPEN_BOOK); - wrapper.write(Type.VAR_INT, hand); + + wrapper.passthrough(Type.BOOLEAN); // Trade disabled + wrapper.passthrough(Type.INT); // Number of tools uses + wrapper.passthrough(Type.INT); // Maximum number of trade uses + + wrapper.write(Type.INT, 0); + wrapper.write(Type.INT, 0); + wrapper.write(Type.FLOAT, 0f); } + wrapper.write(Type.VAR_INT, 0); + wrapper.write(Type.VAR_INT, 0); + wrapper.write(Type.BOOLEAN, false); + } else if (channel.equals("minecraft:book_open") || channel.equals("book_open")) { + int hand = wrapper.read(Type.VAR_INT); + wrapper.clearPacket(); + wrapper.setPacketType(ClientboundPackets1_14.OPEN_BOOK); + wrapper.write(Type.VAR_INT, hand); } }); } @@ -204,53 +192,40 @@ public class InventoryPackets extends ItemRewriter recipeRewriter = new RecipeRewriter1_13_2<>(protocol); - protocol.registerClientbound(ClientboundPackets1_13.DECLARE_RECIPES, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - int size = wrapper.passthrough(Type.VAR_INT); - int deleted = 0; - for (int i = 0; i < size; i++) { - String id = wrapper.read(Type.STRING); // Recipe Identifier - String type = wrapper.read(Type.STRING); - if (REMOVED_RECIPE_TYPES.contains(type)) { - deleted++; - continue; - } - wrapper.write(Type.STRING, type); - wrapper.write(Type.STRING, id); + protocol.registerClientbound(ClientboundPackets1_13.DECLARE_RECIPES, wrapper -> { + int size = wrapper.passthrough(Type.VAR_INT); + int deleted = 0; + for (int i = 0; i < size; i++) { + String id = wrapper.read(Type.STRING); // Recipe Identifier + String type = wrapper.read(Type.STRING); + if (REMOVED_RECIPE_TYPES.contains(type)) { + deleted++; + continue; + } + wrapper.write(Type.STRING, type); + wrapper.write(Type.STRING, id); - recipeRewriter.handleRecipeType(wrapper, type); - } - wrapper.set(Type.VAR_INT, 0, size - deleted); - }); + recipeRewriter.handleRecipeType(wrapper, type); } + wrapper.set(Type.VAR_INT, 0, size - deleted); }); registerClickWindow(ServerboundPackets1_14.CLICK_WINDOW, Type.FLAT_VAR_INT_ITEM); - protocol.registerServerbound(ServerboundPackets1_14.SELECT_TRADE, new PacketHandlers() { - @Override - public void register() { - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - // Selecting trade now moves the items, we need to resync the inventory - PacketWrapper resyncPacket = wrapper.create(0x08); - EntityTracker1_14 tracker = wrapper.user().getEntityTracker(Protocol1_14To1_13_2.class); - resyncPacket.write(Type.UNSIGNED_BYTE, ((short) tracker.getLatestTradeWindowId())); // 0 - Window ID - resyncPacket.write(Type.SHORT, ((short) -999)); // 1 - Slot - resyncPacket.write(Type.BYTE, (byte) 2); // 2 - Button - End left click - resyncPacket.write(Type.SHORT, ((short) ThreadLocalRandom.current().nextInt())); // 3 - Action number - resyncPacket.write(Type.VAR_INT, 5); // 4 - Mode - Drag - CompoundTag tag = new CompoundTag(); - tag.put("force_resync", new DoubleTag(Double.NaN)); // Tags with NaN are not equal - resyncPacket.write(Type.FLAT_VAR_INT_ITEM, new DataItem(1, (byte) 1, (short) 0, tag)); // 5 - Clicked Item - resyncPacket.scheduleSendToServer(Protocol1_14To1_13_2.class); - } - }); - } + protocol.registerServerbound(ServerboundPackets1_14.SELECT_TRADE, wrapper -> { + // Selecting trade now moves the items, we need to resync the inventory + PacketWrapper resyncPacket = wrapper.create(ServerboundPackets1_13.CLICK_WINDOW); + EntityTracker1_14 tracker = wrapper.user().getEntityTracker(Protocol1_14To1_13_2.class); + resyncPacket.write(Type.UNSIGNED_BYTE, ((short) tracker.getLatestTradeWindowId())); // 0 - Window ID + resyncPacket.write(Type.SHORT, ((short) -999)); // 1 - Slot + resyncPacket.write(Type.BYTE, (byte) 2); // 2 - Button - End left click + resyncPacket.write(Type.SHORT, ((short) ThreadLocalRandom.current().nextInt())); // 3 - Action number + resyncPacket.write(Type.VAR_INT, 5); // 4 - Mode - Drag + CompoundTag tag = new CompoundTag(); + tag.put("force_resync", new DoubleTag(Double.NaN)); // Tags with NaN are not equal + resyncPacket.write(Type.FLAT_VAR_INT_ITEM, new DataItem(1, (byte) 1, (short) 0, tag)); // 5 - Clicked Item + resyncPacket.scheduleSendToServer(Protocol1_14To1_13_2.class); }); registerCreativeInvAction(ServerboundPackets1_14.CREATIVE_INVENTORY_ACTION, Type.FLAT_VAR_INT_ITEM); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/PlayerPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/PlayerPackets.java index 8602dbf6f..1de5725bc 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/PlayerPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/PlayerPackets.java @@ -24,8 +24,6 @@ import com.github.steveice10.opennbt.tag.builtin.Tag; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.minecraft.Position; import com.viaversion.viaversion.api.minecraft.item.Item; -import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13; @@ -51,36 +49,28 @@ public class PlayerPackets { } }); - protocol.registerServerbound(ServerboundPackets1_14.EDIT_BOOK, new PacketHandlers() { - @Override - public void register() { - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - Item item = wrapper.passthrough(Type.FLAT_VAR_INT_ITEM); - protocol.getItemRewriter().handleItemToServer(item); + protocol.registerServerbound(ServerboundPackets1_14.EDIT_BOOK, wrapper -> { + Item item = wrapper.passthrough(Type.FLAT_VAR_INT_ITEM); + protocol.getItemRewriter().handleItemToServer(item); - if (item == null) return; + if (item == null) return; - CompoundTag tag = item.tag(); - if (tag == null) return; + CompoundTag tag = item.tag(); + if (tag == null) return; - Tag pages = tag.get("pages"); + Tag pages = tag.get("pages"); - // Fix for https://github.com/ViaVersion/ViaVersion/issues/2660 - if (pages == null) { - tag.put("pages", new ListTag(Collections.singletonList(new StringTag()))); - } + // Fix for https://github.com/ViaVersion/ViaVersion/issues/2660 + if (pages == null) { + tag.put("pages", new ListTag(Collections.singletonList(new StringTag()))); + } - // Client limit when editing a book was upped from 50 to 100 in 1.14, but some anti-exploit plugins ban with a size higher than the old client limit - if (Via.getConfig().isTruncate1_14Books() && pages instanceof ListTag) { - ListTag listTag = (ListTag) pages; - if (listTag.size() > 50) { - listTag.setValue(listTag.getValue().subList(0, 50)); - } - } - } - }); + // Client limit when editing a book was upped from 50 to 100 in 1.14, but some anti-exploit plugins ban with a size higher than the old client limit + if (Via.getConfig().isTruncate1_14Books() && pages instanceof ListTag) { + ListTag listTag = (ListTag) pages; + if (listTag.size() > 50) { + listTag.setValue(listTag.getValue().subList(0, 50)); + } } }); @@ -96,24 +86,21 @@ public class PlayerPackets { @Override public void register() { map(Type.VAR_INT); - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int type = wrapper.get(Type.VAR_INT, 0); - if (type == 0) { - wrapper.passthrough(Type.STRING); - } else if (type == 1) { - wrapper.passthrough(Type.BOOLEAN); // Crafting Recipe Book Open - wrapper.passthrough(Type.BOOLEAN); // Crafting Recipe Filter Active - wrapper.passthrough(Type.BOOLEAN); // Smelting Recipe Book Open - wrapper.passthrough(Type.BOOLEAN); // Smelting Recipe Filter Active + handler(wrapper -> { + int type = wrapper.get(Type.VAR_INT, 0); + if (type == 0) { + wrapper.passthrough(Type.STRING); + } else if (type == 1) { + wrapper.passthrough(Type.BOOLEAN); // Crafting Recipe Book Open + wrapper.passthrough(Type.BOOLEAN); // Crafting Recipe Filter Active + wrapper.passthrough(Type.BOOLEAN); // Smelting Recipe Book Open + wrapper.passthrough(Type.BOOLEAN); // Smelting Recipe Filter Active - // Unknown new booleans - wrapper.read(Type.BOOLEAN); - wrapper.read(Type.BOOLEAN); - wrapper.read(Type.BOOLEAN); - wrapper.read(Type.BOOLEAN); - } + // Unknown new booleans + wrapper.read(Type.BOOLEAN); + wrapper.read(Type.BOOLEAN); + wrapper.read(Type.BOOLEAN); + wrapper.read(Type.BOOLEAN); } }); } @@ -138,29 +125,21 @@ public class PlayerPackets { } }); - protocol.registerServerbound(ServerboundPackets1_14.PLAYER_BLOCK_PLACEMENT, new PacketHandlers() { - @Override - public void register() { - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int hand = wrapper.read(Type.VAR_INT); - Position position = wrapper.read(Type.POSITION1_14); - int face = wrapper.read(Type.VAR_INT); - float x = wrapper.read(Type.FLOAT); - float y = wrapper.read(Type.FLOAT); - float z = wrapper.read(Type.FLOAT); - wrapper.read(Type.BOOLEAN); // new unknown boolean + protocol.registerServerbound(ServerboundPackets1_14.PLAYER_BLOCK_PLACEMENT, wrapper -> { + int hand = wrapper.read(Type.VAR_INT); + Position position = wrapper.read(Type.POSITION1_14); + int face = wrapper.read(Type.VAR_INT); + float x = wrapper.read(Type.FLOAT); + float y = wrapper.read(Type.FLOAT); + float z = wrapper.read(Type.FLOAT); + wrapper.read(Type.BOOLEAN); // new unknown boolean - wrapper.write(Type.POSITION, position); - wrapper.write(Type.VAR_INT, face); - wrapper.write(Type.VAR_INT, hand); - wrapper.write(Type.FLOAT, x); - wrapper.write(Type.FLOAT, y); - wrapper.write(Type.FLOAT, z); - } - }); - } + wrapper.write(Type.POSITION, position); + wrapper.write(Type.VAR_INT, face); + wrapper.write(Type.VAR_INT, hand); + wrapper.write(Type.FLOAT, x); + wrapper.write(Type.FLOAT, y); + wrapper.write(Type.FLOAT, z); }); } } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/WorldPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/WorldPackets.java index cc5acf313..c2c5e4774 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/WorldPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/packets/WorldPackets.java @@ -28,7 +28,6 @@ import com.viaversion.viaversion.api.minecraft.chunks.DataPalette; import com.viaversion.viaversion.api.minecraft.chunks.NibbleArray; import com.viaversion.viaversion.api.minecraft.chunks.PaletteType; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13; @@ -40,7 +39,6 @@ import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.types.Chunk1_14T import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; import com.viaversion.viaversion.rewriter.BlockRewriter; import com.viaversion.viaversion.util.CompactArrayUtil; - import java.util.Arrays; public class WorldPackets { @@ -78,12 +76,7 @@ public class WorldPackets { map(Type.UNSIGNED_BYTE); // Action id map(Type.UNSIGNED_BYTE); // Action param map(Type.VAR_INT); // Block id - /!\ NOT BLOCK STATE - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - wrapper.set(Type.VAR_INT, 0, protocol.getMappingData().getNewBlockId(wrapper.get(Type.VAR_INT, 0))); - } - }); + handler(wrapper -> wrapper.set(Type.VAR_INT, 0, protocol.getMappingData().getNewBlockId(wrapper.get(Type.VAR_INT, 0)))); } }); protocol.registerClientbound(ClientboundPackets1_13.BLOCK_CHANGE, new PacketHandlers() { @@ -91,13 +84,10 @@ public class WorldPackets { public void register() { map(Type.POSITION, Type.POSITION1_14); map(Type.VAR_INT); - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int id = wrapper.get(Type.VAR_INT, 0); + handler(wrapper -> { + int id = wrapper.get(Type.VAR_INT, 0); - wrapper.set(Type.VAR_INT, 0, protocol.getMappingData().getNewBlockStateId(id)); - } + wrapper.set(Type.VAR_INT, 0, protocol.getMappingData().getNewBlockStateId(id)); }); } }); @@ -106,11 +96,8 @@ public class WorldPackets { @Override public void register() { map(Type.UNSIGNED_BYTE); - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - wrapper.write(Type.BOOLEAN, false); // Added in 19w11a. Maybe https://bugs.mojang.com/browse/MC-44471 ? - } + handler(wrapper -> { + wrapper.write(Type.BOOLEAN, false); // Added in 19w11a. Maybe https://bugs.mojang.com/browse/MC-44471 ? }); } }); @@ -124,150 +111,139 @@ public class WorldPackets { map(Type.FLOAT); // Y map(Type.FLOAT); // Z map(Type.FLOAT); // Radius - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - for (int i = 0; i < 3; i++) { - float coord = wrapper.get(Type.FLOAT, i); + handler(wrapper -> { + for (int i = 0; i < 3; i++) { + float coord = wrapper.get(Type.FLOAT, i); - if (coord < 0f) { - coord = (int) coord; - wrapper.set(Type.FLOAT, i, coord); - } + if (coord < 0f) { + coord = (int) coord; + wrapper.set(Type.FLOAT, i, coord); } } }); } }); - protocol.registerClientbound(ClientboundPackets1_13.CHUNK_DATA, new PacketHandlers() { - @Override - public void register() { - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); - Chunk chunk = wrapper.read(new Chunk1_13Type(clientWorld)); - wrapper.write(new Chunk1_14Type(), chunk); + protocol.registerClientbound(ClientboundPackets1_13.CHUNK_DATA, wrapper -> { + ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); + Chunk chunk = wrapper.read(new Chunk1_13Type(clientWorld)); + wrapper.write(new Chunk1_14Type(), chunk); - int[] motionBlocking = new int[16 * 16]; - int[] worldSurface = new int[16 * 16]; + int[] motionBlocking = new int[16 * 16]; + int[] worldSurface = new int[16 * 16]; - for (int s = 0; s < chunk.getSections().length; s++) { - ChunkSection section = chunk.getSections()[s]; - if (section == null) continue; - DataPalette blocks = section.palette(PaletteType.BLOCKS); + for (int s = 0; s < chunk.getSections().length; s++) { + ChunkSection section = chunk.getSections()[s]; + if (section == null) continue; + DataPalette blocks = section.palette(PaletteType.BLOCKS); - boolean hasBlock = false; - for (int i = 0; i < blocks.size(); i++) { - int old = blocks.idByIndex(i); - int newId = protocol.getMappingData().getNewBlockStateId(old); - if (!hasBlock && newId != air && newId != voidAir && newId != caveAir) { // air, void_air, cave_air - hasBlock = true; - } - blocks.setIdByIndex(i, newId); - } - if (!hasBlock) { - section.setNonAirBlocksCount(0); - continue; - } - - int nonAirBlockCount = 0; - int sy = s << 4; - for (int idx = 0; idx < ChunkSection.SIZE; idx++) { - int id = blocks.idAt(idx); - if (id == air || id == voidAir || id == caveAir) continue; - nonAirBlockCount++; - - int xz = idx & 0xFF; - int y = ChunkSection.yFromIndex(idx); - worldSurface[xz] = sy + y + 1; // +1 (top of the block) - - if (protocol.getMappingData().getMotionBlocking().contains(id)) { - motionBlocking[xz] = sy + y + 1; // +1 (top of the block) - } - - // Manually update light for non-full blocks (block light must not be sent) - if (Via.getConfig().isNonFullBlockLightFix() && protocol.getMappingData().getNonFullBlocks().contains(id)) { - int x = ChunkSection.xFromIndex(idx); - int z = ChunkSection.zFromIndex(idx); - setNonFullLight(chunk, section, s, x, y, z); - } - } - - section.setNonAirBlocksCount(nonAirBlockCount); - } - - CompoundTag heightMap = new CompoundTag(); - heightMap.put("MOTION_BLOCKING", new LongArrayTag(encodeHeightMap(motionBlocking))); - heightMap.put("WORLD_SURFACE", new LongArrayTag(encodeHeightMap(worldSurface))); - chunk.setHeightMap(heightMap); - - PacketWrapper lightPacket = wrapper.create(ClientboundPackets1_14.UPDATE_LIGHT); - lightPacket.write(Type.VAR_INT, chunk.getX()); - lightPacket.write(Type.VAR_INT, chunk.getZ()); - - int skyLightMask = chunk.isFullChunk() ? 0x3ffff : 0; // all 18 bits set if ground up - int blockLightMask = 0; - for (int i = 0; i < chunk.getSections().length; i++) { - ChunkSection sec = chunk.getSections()[i]; - if (sec == null) continue; - if (!chunk.isFullChunk() && sec.getLight().hasSkyLight()) { - skyLightMask |= (1 << (i + 1)); - } - blockLightMask |= (1 << (i + 1)); - } - - lightPacket.write(Type.VAR_INT, skyLightMask); - lightPacket.write(Type.VAR_INT, blockLightMask); - lightPacket.write(Type.VAR_INT, 0); // empty sky light mask - lightPacket.write(Type.VAR_INT, 0); // empty block light mask - - // not sending skylight/setting empty skylight causes client lag due to some weird calculations - // only do this on the initial chunk send (not when chunk.isGroundUp() is false) - if (chunk.isFullChunk()) - lightPacket.write(Type.BYTE_ARRAY_PRIMITIVE, FULL_LIGHT); // chunk below 0 - for (ChunkSection section : chunk.getSections()) { - if (section == null || !section.getLight().hasSkyLight()) { - if (chunk.isFullChunk()) { - lightPacket.write(Type.BYTE_ARRAY_PRIMITIVE, FULL_LIGHT); - } - continue; - } - lightPacket.write(Type.BYTE_ARRAY_PRIMITIVE, section.getLight().getSkyLight()); - } - if (chunk.isFullChunk()) - lightPacket.write(Type.BYTE_ARRAY_PRIMITIVE, FULL_LIGHT); // chunk above 255 - - for (ChunkSection section : chunk.getSections()) { - if (section == null) continue; - lightPacket.write(Type.BYTE_ARRAY_PRIMITIVE, section.getLight().getBlockLight()); - } - - EntityTracker1_14 entityTracker = wrapper.user().getEntityTracker(Protocol1_14To1_13_2.class); - int diffX = Math.abs(entityTracker.getChunkCenterX() - chunk.getX()); - int diffZ = Math.abs(entityTracker.getChunkCenterZ() - chunk.getZ()); - if (entityTracker.isForceSendCenterChunk() - || diffX >= SERVERSIDE_VIEW_DISTANCE - || diffZ >= SERVERSIDE_VIEW_DISTANCE) { - PacketWrapper fakePosLook = wrapper.create(ClientboundPackets1_14.UPDATE_VIEW_POSITION); // Set center chunk - fakePosLook.write(Type.VAR_INT, chunk.getX()); - fakePosLook.write(Type.VAR_INT, chunk.getZ()); - fakePosLook.send(Protocol1_14To1_13_2.class); - entityTracker.setChunkCenterX(chunk.getX()); - entityTracker.setChunkCenterZ(chunk.getZ()); - } - - lightPacket.send(Protocol1_14To1_13_2.class); - - // Remove light references from chunk sections - for (ChunkSection section : chunk.getSections()) { - if (section != null) { - section.setLight(null); - } - } + boolean hasBlock = false; + for (int i = 0; i < blocks.size(); i++) { + int old = blocks.idByIndex(i); + int newId = protocol.getMappingData().getNewBlockStateId(old); + if (!hasBlock && newId != air && newId != voidAir && newId != caveAir) { // air, void_air, cave_air + hasBlock = true; } - }); + blocks.setIdByIndex(i, newId); + } + if (!hasBlock) { + section.setNonAirBlocksCount(0); + continue; + } + + int nonAirBlockCount = 0; + int sy = s << 4; + for (int idx = 0; idx < ChunkSection.SIZE; idx++) { + int id = blocks.idAt(idx); + if (id == air || id == voidAir || id == caveAir) continue; + nonAirBlockCount++; + + int xz = idx & 0xFF; + int y = ChunkSection.yFromIndex(idx); + worldSurface[xz] = sy + y + 1; // +1 (top of the block) + + if (protocol.getMappingData().getMotionBlocking().contains(id)) { + motionBlocking[xz] = sy + y + 1; // +1 (top of the block) + } + + // Manually update light for non-full blocks (block light must not be sent) + if (Via.getConfig().isNonFullBlockLightFix() && protocol.getMappingData().getNonFullBlocks().contains(id)) { + int x = ChunkSection.xFromIndex(idx); + int z = ChunkSection.zFromIndex(idx); + setNonFullLight(chunk, section, s, x, y, z); + } + } + + section.setNonAirBlocksCount(nonAirBlockCount); + } + + CompoundTag heightMap = new CompoundTag(); + heightMap.put("MOTION_BLOCKING", new LongArrayTag(encodeHeightMap(motionBlocking))); + heightMap.put("WORLD_SURFACE", new LongArrayTag(encodeHeightMap(worldSurface))); + chunk.setHeightMap(heightMap); + + PacketWrapper lightPacket = wrapper.create(ClientboundPackets1_14.UPDATE_LIGHT); + lightPacket.write(Type.VAR_INT, chunk.getX()); + lightPacket.write(Type.VAR_INT, chunk.getZ()); + + int skyLightMask = chunk.isFullChunk() ? 0x3ffff : 0; // all 18 bits set if ground up + int blockLightMask = 0; + for (int i = 0; i < chunk.getSections().length; i++) { + ChunkSection sec = chunk.getSections()[i]; + if (sec == null) continue; + if (!chunk.isFullChunk() && sec.getLight().hasSkyLight()) { + skyLightMask |= (1 << (i + 1)); + } + blockLightMask |= (1 << (i + 1)); + } + + lightPacket.write(Type.VAR_INT, skyLightMask); + lightPacket.write(Type.VAR_INT, blockLightMask); + lightPacket.write(Type.VAR_INT, 0); // empty sky light mask + lightPacket.write(Type.VAR_INT, 0); // empty block light mask + + // not sending skylight/setting empty skylight causes client lag due to some weird calculations + // only do this on the initial chunk send (not when chunk.isGroundUp() is false) + if (chunk.isFullChunk()) + lightPacket.write(Type.BYTE_ARRAY_PRIMITIVE, FULL_LIGHT); // chunk below 0 + for (ChunkSection section : chunk.getSections()) { + if (section == null || !section.getLight().hasSkyLight()) { + if (chunk.isFullChunk()) { + lightPacket.write(Type.BYTE_ARRAY_PRIMITIVE, FULL_LIGHT); + } + continue; + } + lightPacket.write(Type.BYTE_ARRAY_PRIMITIVE, section.getLight().getSkyLight()); + } + if (chunk.isFullChunk()) + lightPacket.write(Type.BYTE_ARRAY_PRIMITIVE, FULL_LIGHT); // chunk above 255 + + for (ChunkSection section : chunk.getSections()) { + if (section == null) continue; + lightPacket.write(Type.BYTE_ARRAY_PRIMITIVE, section.getLight().getBlockLight()); + } + + EntityTracker1_14 entityTracker = wrapper.user().getEntityTracker(Protocol1_14To1_13_2.class); + int diffX = Math.abs(entityTracker.getChunkCenterX() - chunk.getX()); + int diffZ = Math.abs(entityTracker.getChunkCenterZ() - chunk.getZ()); + if (entityTracker.isForceSendCenterChunk() + || diffX >= SERVERSIDE_VIEW_DISTANCE + || diffZ >= SERVERSIDE_VIEW_DISTANCE) { + PacketWrapper fakePosLook = wrapper.create(ClientboundPackets1_14.UPDATE_VIEW_POSITION); // Set center chunk + fakePosLook.write(Type.VAR_INT, chunk.getX()); + fakePosLook.write(Type.VAR_INT, chunk.getZ()); + fakePosLook.send(Protocol1_14To1_13_2.class); + entityTracker.setChunkCenterX(chunk.getX()); + entityTracker.setChunkCenterZ(chunk.getZ()); + } + + lightPacket.send(Protocol1_14To1_13_2.class); + + // Remove light references from chunk sections + for (ChunkSection section : chunk.getSections()) { + if (section != null) { + section.setLight(null); + } } }); @@ -277,16 +253,13 @@ public class WorldPackets { map(Type.INT); // Effect Id map(Type.POSITION, Type.POSITION1_14); // Location map(Type.INT); // Data - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int id = wrapper.get(Type.INT, 0); - int data = wrapper.get(Type.INT, 1); - if (id == 1010) { // Play record - wrapper.set(Type.INT, 1, protocol.getMappingData().getNewItemId(data)); - } else if (id == 2001) { // Block break + block break sound - wrapper.set(Type.INT, 1, protocol.getMappingData().getNewBlockStateId(data)); - } + handler(wrapper -> { + int id = wrapper.get(Type.INT, 0); + int data = wrapper.get(Type.INT, 1); + if (id == 1010) { // Play record + wrapper.set(Type.INT, 1, protocol.getMappingData().getNewItemId(data)); + } else if (id == 2001) { // Block break + block break sound + wrapper.set(Type.INT, 1, protocol.getMappingData().getNewBlockStateId(data)); } }); } @@ -298,11 +271,8 @@ public class WorldPackets { map(Type.VAR_INT); map(Type.BYTE); map(Type.BOOLEAN); - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - wrapper.write(Type.BOOLEAN, false); // new value, probably if the map is locked (added in 19w02a), old maps are not locked - } + handler(wrapper -> { + wrapper.write(Type.BOOLEAN, false); // new value, probably if the map is locked (added in 19w02a), old maps are not locked }); } }); @@ -311,26 +281,20 @@ public class WorldPackets { @Override public void register() { map(Type.INT); // 0 - Dimension ID - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); - int dimensionId = wrapper.get(Type.INT, 0); - clientWorld.setEnvironment(dimensionId); - EntityTracker1_14 entityTracker = wrapper.user().getEntityTracker(Protocol1_14To1_13_2.class); - // The client may reset the center chunk if dimension is changed - entityTracker.setForceSendCenterChunk(true); - } + handler(wrapper -> { + ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); + int dimensionId = wrapper.get(Type.INT, 0); + clientWorld.setEnvironment(dimensionId); + EntityTracker1_14 entityTracker = wrapper.user().getEntityTracker(Protocol1_14To1_13_2.class); + // The client may reset the center chunk if dimension is changed + entityTracker.setForceSendCenterChunk(true); }); - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - short difficulty = wrapper.read(Type.UNSIGNED_BYTE); // 19w11a removed difficulty from respawn - PacketWrapper difficultyPacket = wrapper.create(ClientboundPackets1_14.SERVER_DIFFICULTY); - difficultyPacket.write(Type.UNSIGNED_BYTE, difficulty); - difficultyPacket.write(Type.BOOLEAN, false); // Unknown value added in 19w11a - difficultyPacket.scheduleSend(protocol.getClass()); - } + handler(wrapper -> { + short difficulty = wrapper.read(Type.UNSIGNED_BYTE); // 19w11a removed difficulty from respawn + PacketWrapper difficultyPacket = wrapper.create(ClientboundPackets1_14.SERVER_DIFFICULTY); + difficultyPacket.write(Type.UNSIGNED_BYTE, difficulty); + difficultyPacket.write(Type.BOOLEAN, false); // Unknown value added in 19w11a + difficultyPacket.scheduleSend(protocol.getClass()); }); handler(wrapper -> { // Manually send the packet and update the viewdistance after diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/types/Chunk1_14Type.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/types/Chunk1_14Type.java index 39ea87a37..1f25fccea 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/types/Chunk1_14Type.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_14to1_13_2/types/Chunk1_14Type.java @@ -26,7 +26,6 @@ import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.api.type.types.minecraft.BaseChunkType; import com.viaversion.viaversion.api.type.types.version.Types1_13; import io.netty.buffer.ByteBuf; - import java.util.ArrayList; import java.util.Arrays; import java.util.List; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/Protocol1_15To1_14_4.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/Protocol1_15To1_14_4.java index 5e46dc121..66ce20cf9 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/Protocol1_15To1_14_4.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/Protocol1_15To1_14_4.java @@ -21,7 +21,6 @@ import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.RegistryType; import com.viaversion.viaversion.api.minecraft.entities.Entity1_15Types; import com.viaversion.viaversion.api.protocol.AbstractProtocol; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.data.entity.EntityTrackerBase; import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPackets1_14; @@ -60,12 +59,7 @@ public class Protocol1_15To1_14_4 extends AbstractProtocol(this).register(ClientboundPackets1_14.STATISTICS); - registerServerbound(ServerboundPackets1_14.EDIT_BOOK, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> itemRewriter.handleItemToServer(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM))); - } - }); + registerServerbound(ServerboundPackets1_14.EDIT_BOOK, wrapper -> itemRewriter.handleItemToServer(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM))); tagRewriter = new TagRewriter<>(this); tagRewriter.register(ClientboundPackets1_14.TAGS, RegistryType.ENTITY); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/packets/EntityPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/packets/EntityPackets.java index fe6f619e6..072c199db 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/packets/EntityPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/packets/EntityPackets.java @@ -29,7 +29,6 @@ import com.viaversion.viaversion.protocols.protocol1_15to1_14_4.ClientboundPacke import com.viaversion.viaversion.protocols.protocol1_15to1_14_4.Protocol1_15To1_14_4; import com.viaversion.viaversion.protocols.protocol1_15to1_14_4.metadata.MetadataRewriter1_15To1_14_4; import com.viaversion.viaversion.rewriter.EntityRewriter; - import java.util.List; public class EntityPackets { diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/packets/WorldPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/packets/WorldPackets.java index 349043fee..d2560b41a 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/packets/WorldPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/packets/WorldPackets.java @@ -21,8 +21,6 @@ import com.viaversion.viaversion.api.minecraft.chunks.Chunk; import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection; import com.viaversion.viaversion.api.minecraft.chunks.DataPalette; import com.viaversion.viaversion.api.minecraft.chunks.PaletteType; -import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPackets1_14; @@ -41,51 +39,43 @@ public class WorldPackets { blockRewriter.registerMultiBlockChange(ClientboundPackets1_14.MULTI_BLOCK_CHANGE); blockRewriter.registerAcknowledgePlayerDigging(ClientboundPackets1_14.ACKNOWLEDGE_PLAYER_DIGGING); - protocol.registerClientbound(ClientboundPackets1_14.CHUNK_DATA, new PacketHandlers() { - @Override - public void register() { - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - Chunk chunk = wrapper.read(new Chunk1_14Type()); - wrapper.write(new Chunk1_15Type(), chunk); + protocol.registerClientbound(ClientboundPackets1_14.CHUNK_DATA, wrapper -> { + Chunk chunk = wrapper.read(new Chunk1_14Type()); + wrapper.write(new Chunk1_15Type(), chunk); - if (chunk.isFullChunk()) { - int[] biomeData = chunk.getBiomeData(); - int[] newBiomeData = new int[1024]; - if (biomeData != null) { - // Now in 4x4x4 areas - take the biome of each "middle" - for (int i = 0; i < 4; ++i) { - for (int j = 0; j < 4; ++j) { - int x = (j << 2) + 2; - int z = (i << 2) + 2; - int oldIndex = (z << 4 | x); - newBiomeData[i << 2 | j] = biomeData[oldIndex]; - } - } - // ... and copy it to the new y layers - for (int i = 1; i < 64; ++i) { - System.arraycopy(newBiomeData, 0, newBiomeData, i * 16, 16); - } - } - - chunk.setBiomeData(newBiomeData); - } - - for (int s = 0; s < chunk.getSections().length; s++) { - ChunkSection section = chunk.getSections()[s]; - if (section == null) { - continue; - } - - DataPalette palette = section.palette(PaletteType.BLOCKS); - for (int i = 0; i < palette.size(); i++) { - int mappedBlockStateId = protocol.getMappingData().getNewBlockStateId(palette.idByIndex(i)); - palette.setIdByIndex(i, mappedBlockStateId); - } + if (chunk.isFullChunk()) { + int[] biomeData = chunk.getBiomeData(); + int[] newBiomeData = new int[1024]; + if (biomeData != null) { + // Now in 4x4x4 areas - take the biome of each "middle" + for (int i = 0; i < 4; ++i) { + for (int j = 0; j < 4; ++j) { + int x = (j << 2) + 2; + int z = (i << 2) + 2; + int oldIndex = (z << 4 | x); + newBiomeData[i << 2 | j] = biomeData[oldIndex]; } } - }); + // ... and copy it to the new y layers + for (int i = 1; i < 64; ++i) { + System.arraycopy(newBiomeData, 0, newBiomeData, i * 16, 16); + } + } + + chunk.setBiomeData(newBiomeData); + } + + for (int s = 0; s < chunk.getSections().length; s++) { + ChunkSection section = chunk.getSections()[s]; + if (section == null) { + continue; + } + + DataPalette palette = section.palette(PaletteType.BLOCKS); + for (int i = 0; i < palette.size(); i++) { + int mappedBlockStateId = protocol.getMappingData().getNewBlockStateId(palette.idByIndex(i)); + palette.setIdByIndex(i, mappedBlockStateId); + } } }); @@ -103,16 +93,13 @@ public class WorldPackets { map(Type.FLOAT); // 7 - Offset Z map(Type.FLOAT); // 8 - Particle Data map(Type.INT); // 9 - Particle Count - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int id = wrapper.get(Type.INT, 0); - if (id == 3 || id == 23) { - int data = wrapper.passthrough(Type.VAR_INT); - wrapper.set(Type.VAR_INT, 0, protocol.getMappingData().getNewBlockStateId(data)); - } else if (id == 32) { - protocol.getItemRewriter().handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); - } + handler(wrapper -> { + int id = wrapper.get(Type.INT, 0); + if (id == 3 || id == 23) { + int data = wrapper.passthrough(Type.VAR_INT); + wrapper.set(Type.VAR_INT, 0, protocol.getMappingData().getNewBlockStateId(data)); + } else if (id == 32) { + protocol.getItemRewriter().handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); } }); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/types/Chunk1_15Type.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/types/Chunk1_15Type.java index 27457b293..afc919461 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/types/Chunk1_15Type.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_15to1_14_4/types/Chunk1_15Type.java @@ -26,7 +26,6 @@ import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.api.type.types.minecraft.BaseChunkType; import com.viaversion.viaversion.api.type.types.version.Types1_13; import io.netty.buffer.ByteBuf; - import java.util.ArrayList; import java.util.Arrays; import java.util.List; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/Protocol1_16_2To1_16_1.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/Protocol1_16_2To1_16_1.java index 1286fdaf3..9b496f139 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/Protocol1_16_2To1_16_1.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/Protocol1_16_2To1_16_1.java @@ -21,7 +21,6 @@ import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.RegistryType; import com.viaversion.viaversion.api.minecraft.entities.Entity1_16_2Types; import com.viaversion.viaversion.api.protocol.AbstractProtocol; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.data.entity.EntityTrackerBase; import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.data.MappingData; @@ -64,34 +63,24 @@ public class Protocol1_16_2To1_16_1 extends AbstractProtocol { - int recipeType = wrapper.read(Type.VAR_INT); - boolean open = wrapper.read(Type.BOOLEAN); - boolean filter = wrapper.read(Type.BOOLEAN); - wrapper.write(Type.VAR_INT, 1); // Settings - wrapper.write(Type.BOOLEAN, recipeType == 0 && open); // Crafting - wrapper.write(Type.BOOLEAN, filter); - wrapper.write(Type.BOOLEAN, recipeType == 1 && open); // Furnace - wrapper.write(Type.BOOLEAN, filter); - wrapper.write(Type.BOOLEAN, recipeType == 2 && open); // Blast Furnace - wrapper.write(Type.BOOLEAN, filter); - wrapper.write(Type.BOOLEAN, recipeType == 3 && open); // Smoker - wrapper.write(Type.BOOLEAN, filter); - }); - } + registerServerbound(ServerboundPackets1_16_2.RECIPE_BOOK_DATA, wrapper -> { + int recipeType = wrapper.read(Type.VAR_INT); + boolean open = wrapper.read(Type.BOOLEAN); + boolean filter = wrapper.read(Type.BOOLEAN); + wrapper.write(Type.VAR_INT, 1); // Settings + wrapper.write(Type.BOOLEAN, recipeType == 0 && open); // Crafting + wrapper.write(Type.BOOLEAN, filter); + wrapper.write(Type.BOOLEAN, recipeType == 1 && open); // Furnace + wrapper.write(Type.BOOLEAN, filter); + wrapper.write(Type.BOOLEAN, recipeType == 2 && open); // Blast Furnace + wrapper.write(Type.BOOLEAN, filter); + wrapper.write(Type.BOOLEAN, recipeType == 3 && open); // Smoker + wrapper.write(Type.BOOLEAN, filter); }); - registerServerbound(ServerboundPackets1_16_2.SEEN_RECIPE, ServerboundPackets1_16.RECIPE_BOOK_DATA, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - String recipe = wrapper.read(Type.STRING); - wrapper.write(Type.VAR_INT, 0); // Shown - wrapper.write(Type.STRING, recipe); - }); - } + registerServerbound(ServerboundPackets1_16_2.SEEN_RECIPE, ServerboundPackets1_16.RECIPE_BOOK_DATA, wrapper -> { + String recipe = wrapper.read(Type.STRING); + wrapper.write(Type.VAR_INT, 0); // Shown + wrapper.write(Type.STRING, recipe); }); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/data/MappingData.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/data/MappingData.java index 043078212..f4730d903 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/data/MappingData.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/data/MappingData.java @@ -26,7 +26,6 @@ import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.data.MappingDataBase; import com.viaversion.viaversion.api.data.MappingDataLoader; import com.viaversion.viaversion.api.minecraft.nbt.BinaryTagIO; - import java.io.IOException; import java.util.HashMap; import java.util.Map; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/metadata/MetadataRewriter1_16_2To1_16_1.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/metadata/MetadataRewriter1_16_2To1_16_1.java index ecf253106..e1b42a045 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/metadata/MetadataRewriter1_16_2To1_16_1.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/metadata/MetadataRewriter1_16_2To1_16_1.java @@ -28,7 +28,6 @@ import com.viaversion.viaversion.api.type.types.version.Types1_16; import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.Protocol1_16_2To1_16_1; import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.ClientboundPackets1_16; import com.viaversion.viaversion.rewriter.EntityRewriter; - import java.util.List; public class MetadataRewriter1_16_2To1_16_1 extends EntityRewriter { diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/packets/EntityPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/packets/EntityPackets.java index 1666fd1c6..9e9b5c150 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/packets/EntityPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/packets/EntityPackets.java @@ -67,14 +67,9 @@ public class EntityPackets { } }); - protocol.registerClientbound(ClientboundPackets1_16.RESPAWN, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - String dimensionType = wrapper.read(Type.STRING); - wrapper.write(Type.NBT, getDimensionData(dimensionType)); - }); - } + protocol.registerClientbound(ClientboundPackets1_16.RESPAWN, wrapper -> { + String dimensionType = wrapper.read(Type.STRING); + wrapper.write(Type.NBT, getDimensionData(dimensionType)); }); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/packets/InventoryPackets.java index c6d3a79e9..a920d47ff 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/packets/InventoryPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/packets/InventoryPackets.java @@ -17,7 +17,6 @@ */ package com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.packets; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.Protocol1_16_2To1_16_1; import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ServerboundPackets1_16_2; @@ -40,34 +39,24 @@ public class InventoryPackets extends ItemRewriter { - wrapper.passthrough(Type.VAR_INT); - wrapper.passthrough(Type.BOOLEAN); // Open - wrapper.passthrough(Type.BOOLEAN); // Filter - wrapper.passthrough(Type.BOOLEAN); // Furnace - wrapper.passthrough(Type.BOOLEAN); // Filter furnace - // Blast furnace / smoker - wrapper.write(Type.BOOLEAN, false); - wrapper.write(Type.BOOLEAN, false); - wrapper.write(Type.BOOLEAN, false); - wrapper.write(Type.BOOLEAN, false); - }); - } + protocol.registerClientbound(ClientboundPackets1_16.UNLOCK_RECIPES, wrapper -> { + wrapper.passthrough(Type.VAR_INT); + wrapper.passthrough(Type.BOOLEAN); // Open + wrapper.passthrough(Type.BOOLEAN); // Filter + wrapper.passthrough(Type.BOOLEAN); // Furnace + wrapper.passthrough(Type.BOOLEAN); // Filter furnace + // Blast furnace / smoker + wrapper.write(Type.BOOLEAN, false); + wrapper.write(Type.BOOLEAN, false); + wrapper.write(Type.BOOLEAN, false); + wrapper.write(Type.BOOLEAN, false); }); new RecipeRewriter1_16<>(protocol).registerDefaultHandler(ClientboundPackets1_16.DECLARE_RECIPES); registerClickWindow(ServerboundPackets1_16_2.CLICK_WINDOW, Type.FLAT_VAR_INT_ITEM); registerCreativeInvAction(ServerboundPackets1_16_2.CREATIVE_INVENTORY_ACTION, Type.FLAT_VAR_INT_ITEM); - protocol.registerServerbound(ServerboundPackets1_16_2.EDIT_BOOK, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> handleItemToServer(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM))); - } - }); + protocol.registerServerbound(ServerboundPackets1_16_2.EDIT_BOOK, wrapper -> handleItemToServer(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM))); registerSpawnParticle(ClientboundPackets1_16.SPAWN_PARTICLE, Type.FLAT_VAR_INT_ITEM, Type.DOUBLE); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/packets/WorldPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/packets/WorldPackets.java index b48c2c15d..8b19387fe 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/packets/WorldPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/packets/WorldPackets.java @@ -24,7 +24,6 @@ import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection; import com.viaversion.viaversion.api.minecraft.chunks.DataPalette; import com.viaversion.viaversion.api.minecraft.chunks.PaletteType; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ClientboundPackets1_16_2; import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.Protocol1_16_2To1_16_1; @@ -46,68 +45,58 @@ public class WorldPackets { blockRewriter.registerBlockChange(ClientboundPackets1_16.BLOCK_CHANGE); blockRewriter.registerAcknowledgePlayerDigging(ClientboundPackets1_16.ACKNOWLEDGE_PLAYER_DIGGING); - protocol.registerClientbound(ClientboundPackets1_16.CHUNK_DATA, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - Chunk chunk = wrapper.read(new Chunk1_16Type()); - wrapper.write(new Chunk1_16_2Type(), chunk); + protocol.registerClientbound(ClientboundPackets1_16.CHUNK_DATA, wrapper -> { + Chunk chunk = wrapper.read(new Chunk1_16Type()); + wrapper.write(new Chunk1_16_2Type(), chunk); - for (int s = 0; s < chunk.getSections().length; s++) { - ChunkSection section = chunk.getSections()[s]; - if (section == null) { - continue; - } + for (int s = 0; s < chunk.getSections().length; s++) { + ChunkSection section = chunk.getSections()[s]; + if (section == null) { + continue; + } - DataPalette palette = section.palette(PaletteType.BLOCKS); - for (int i = 0; i < palette.size(); i++) { - int mappedBlockStateId = protocol.getMappingData().getNewBlockStateId(palette.idByIndex(i)); - palette.setIdByIndex(i, mappedBlockStateId); - } - } - }); + DataPalette palette = section.palette(PaletteType.BLOCKS); + for (int i = 0; i < palette.size(); i++) { + int mappedBlockStateId = protocol.getMappingData().getNewBlockStateId(palette.idByIndex(i)); + palette.setIdByIndex(i, mappedBlockStateId); + } } }); - protocol.registerClientbound(ClientboundPackets1_16.MULTI_BLOCK_CHANGE, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - wrapper.cancel(); + protocol.registerClientbound(ClientboundPackets1_16.MULTI_BLOCK_CHANGE, wrapper -> { + wrapper.cancel(); - int chunkX = wrapper.read(Type.INT); - int chunkZ = wrapper.read(Type.INT); + int chunkX = wrapper.read(Type.INT); + int chunkZ = wrapper.read(Type.INT); - long chunkPosition = 0; - chunkPosition |= (chunkX & 0x3FFFFFL) << 42; - chunkPosition |= (chunkZ & 0x3FFFFFL) << 20; + long chunkPosition = 0; + chunkPosition |= (chunkX & 0x3FFFFFL) << 42; + chunkPosition |= (chunkZ & 0x3FFFFFL) << 20; - List[] sectionRecords = new List[16]; - BlockChangeRecord[] blockChangeRecord = wrapper.read(Type.BLOCK_CHANGE_RECORD_ARRAY); - for (BlockChangeRecord record : blockChangeRecord) { - int chunkY = record.getY() >> 4; - List list = sectionRecords[chunkY]; - if (list == null) { - sectionRecords[chunkY] = (list = new ArrayList<>()); - } + List[] sectionRecords = new List[16]; + BlockChangeRecord[] blockChangeRecord = wrapper.read(Type.BLOCK_CHANGE_RECORD_ARRAY); + for (BlockChangeRecord record : blockChangeRecord) { + int chunkY = record.getY() >> 4; + List list = sectionRecords[chunkY]; + if (list == null) { + sectionRecords[chunkY] = (list = new ArrayList<>()); + } - // Absolute y -> relative chunk section y - int blockId = protocol.getMappingData().getNewBlockStateId(record.getBlockId()); - list.add(new BlockChangeRecord1_16_2(record.getSectionX(), record.getSectionY(), record.getSectionZ(), blockId)); - } + // Absolute y -> relative chunk section y + int blockId = protocol.getMappingData().getNewBlockStateId(record.getBlockId()); + list.add(new BlockChangeRecord1_16_2(record.getSectionX(), record.getSectionY(), record.getSectionZ(), blockId)); + } - // Now send separate packets for the different chunk sections - for (int chunkY = 0; chunkY < sectionRecords.length; chunkY++) { - List sectionRecord = sectionRecords[chunkY]; - if (sectionRecord == null) continue; + // Now send separate packets for the different chunk sections + for (int chunkY = 0; chunkY < sectionRecords.length; chunkY++) { + List sectionRecord = sectionRecords[chunkY]; + if (sectionRecord == null) continue; - PacketWrapper newPacket = wrapper.create(ClientboundPackets1_16_2.MULTI_BLOCK_CHANGE); - newPacket.write(Type.LONG, chunkPosition | (chunkY & 0xFFFFFL)); - newPacket.write(Type.BOOLEAN, false); // Ignore light updates - newPacket.write(Type.VAR_LONG_BLOCK_CHANGE_RECORD_ARRAY, sectionRecord.toArray(EMPTY_RECORDS)); - newPacket.send(Protocol1_16_2To1_16_1.class); - } - }); + PacketWrapper newPacket = wrapper.create(ClientboundPackets1_16_2.MULTI_BLOCK_CHANGE); + newPacket.write(Type.LONG, chunkPosition | (chunkY & 0xFFFFFL)); + newPacket.write(Type.BOOLEAN, false); // Ignore light updates + newPacket.write(Type.VAR_LONG_BLOCK_CHANGE_RECORD_ARRAY, sectionRecord.toArray(EMPTY_RECORDS)); + newPacket.send(Protocol1_16_2To1_16_1.class); } }); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/types/Chunk1_16_2Type.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/types/Chunk1_16_2Type.java index e85354652..697de78bb 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/types/Chunk1_16_2Type.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16_2to1_16_1/types/Chunk1_16_2Type.java @@ -26,7 +26,6 @@ import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.api.type.types.minecraft.BaseChunkType; import com.viaversion.viaversion.api.type.types.version.Types1_16; import io.netty.buffer.ByteBuf; - import java.util.ArrayList; import java.util.Arrays; import java.util.List; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/Protocol1_16To1_15_2.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/Protocol1_16To1_15_2.java index b544cfd64..7903a51ec 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/Protocol1_16To1_15_2.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/Protocol1_16To1_15_2.java @@ -77,54 +77,44 @@ public class Protocol1_16To1_15_2 extends AbstractProtocol(this).register(ClientboundPackets1_15.STATISTICS); // Login Success - registerClientbound(State.LOGIN, 0x02, 0x02, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - // Transform string to a uuid - UUID uuid = UUID.fromString(wrapper.read(Type.STRING)); - wrapper.write(Type.UUID, uuid); - }); - } + registerClientbound(State.LOGIN, 0x02, 0x02, wrapper -> { + // Transform string to a uuid + UUID uuid = UUID.fromString(wrapper.read(Type.STRING)); + wrapper.write(Type.UUID, uuid); }); // Motd Status - line breaks are no longer allowed for player samples - registerClientbound(State.STATUS, 0x00, 0x00, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - String original = wrapper.passthrough(Type.STRING); - JsonObject object = GsonUtil.getGson().fromJson(original, JsonObject.class); - JsonObject players = object.getAsJsonObject("players"); - if (players == null) return; + registerClientbound(State.STATUS, 0x00, 0x00, wrapper -> { + String original = wrapper.passthrough(Type.STRING); + JsonObject object = GsonUtil.getGson().fromJson(original, JsonObject.class); + JsonObject players = object.getAsJsonObject("players"); + if (players == null) return; - JsonArray sample = players.getAsJsonArray("sample"); - if (sample == null) return; + JsonArray sample = players.getAsJsonArray("sample"); + if (sample == null) return; - JsonArray splitSamples = new JsonArray(); - for (JsonElement element : sample) { - JsonObject playerInfo = element.getAsJsonObject(); - String name = playerInfo.getAsJsonPrimitive("name").getAsString(); - if (name.indexOf('\n') == -1) { - splitSamples.add(playerInfo); - continue; - } + JsonArray splitSamples = new JsonArray(); + for (JsonElement element : sample) { + JsonObject playerInfo = element.getAsJsonObject(); + String name = playerInfo.getAsJsonPrimitive("name").getAsString(); + if (name.indexOf('\n') == -1) { + splitSamples.add(playerInfo); + continue; + } - String id = playerInfo.getAsJsonPrimitive("id").getAsString(); - for (String s : name.split("\n")) { - JsonObject newSample = new JsonObject(); - newSample.addProperty("name", s); - newSample.addProperty("id", id); - splitSamples.add(newSample); - } - } + String id = playerInfo.getAsJsonPrimitive("id").getAsString(); + for (String s : name.split("\n")) { + JsonObject newSample = new JsonObject(); + newSample.addProperty("name", s); + newSample.addProperty("id", id); + splitSamples.add(newSample); + } + } - // Replace data if changed - if (splitSamples.size() != sample.size()) { - players.add("sample", splitSamples); - wrapper.set(Type.STRING, 0, object.toString()); - } - }); + // Replace data if changed + if (splitSamples.size() != sample.size()) { + players.add("sample", splitSamples); + wrapper.set(Type.STRING, 0, object.toString()); } }); @@ -148,27 +138,22 @@ public class Protocol1_16To1_15_2 extends AbstractProtocol { - wrapper.passthrough(Type.VAR_INT); // Entity Id - int action = wrapper.passthrough(Type.VAR_INT); - if (action == 0 || action == 2) { - if (action == 2) { - // Location - wrapper.passthrough(Type.FLOAT); - wrapper.passthrough(Type.FLOAT); - wrapper.passthrough(Type.FLOAT); - } + registerServerbound(ServerboundPackets1_16.INTERACT_ENTITY, wrapper -> { + wrapper.passthrough(Type.VAR_INT); // Entity Id + int action = wrapper.passthrough(Type.VAR_INT); + if (action == 0 || action == 2) { + if (action == 2) { + // Location + wrapper.passthrough(Type.FLOAT); + wrapper.passthrough(Type.FLOAT); + wrapper.passthrough(Type.FLOAT); + } - wrapper.passthrough(Type.VAR_INT); // Hand - } - - // New boolean: Whether the client is sneaking/pressing shift - wrapper.read(Type.BOOLEAN); - }); + wrapper.passthrough(Type.VAR_INT); // Hand } + + // New boolean: Whether the client is sneaking/pressing shift + wrapper.read(Type.BOOLEAN); }); if (Via.getConfig().isIgnoreLong1_16ChannelNames()) { @@ -209,16 +194,11 @@ public class Protocol1_16To1_15_2 extends AbstractProtocol { - wrapper.passthrough(Type.BYTE); - // Flying and walking speed - not important anyways - wrapper.write(Type.FLOAT, 0.05F); - wrapper.write(Type.FLOAT, 0.1F); - }); - } + registerServerbound(ServerboundPackets1_16.PLAYER_ABILITIES, wrapper -> { + wrapper.passthrough(Type.BYTE); + // Flying and walking speed - not important anyways + wrapper.write(Type.FLOAT, 0.05F); + wrapper.write(Type.FLOAT, 0.1F); }); cancelServerbound(ServerboundPackets1_16.GENERATE_JIGSAW); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/metadata/MetadataRewriter1_16To1_15_2.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/metadata/MetadataRewriter1_16To1_15_2.java index 62336d3fb..8b83b82da 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/metadata/MetadataRewriter1_16To1_15_2.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/metadata/MetadataRewriter1_16To1_15_2.java @@ -28,7 +28,6 @@ import com.viaversion.viaversion.api.type.types.version.Types1_16; import com.viaversion.viaversion.protocols.protocol1_15to1_14_4.ClientboundPackets1_15; import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.Protocol1_16To1_15_2; import com.viaversion.viaversion.rewriter.EntityRewriter; - import java.util.List; public class MetadataRewriter1_16To1_15_2 extends EntityRewriter { diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/packets/EntityPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/packets/EntityPackets.java index 2e322f445..f477ff101 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/packets/EntityPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/packets/EntityPackets.java @@ -38,7 +38,6 @@ import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.Protocol1_16To1_ import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.ServerboundPackets1_16; import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.metadata.MetadataRewriter1_16To1_15_2; import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.storage.InventoryTracker1_16; - import java.util.Arrays; import java.util.UUID; @@ -47,7 +46,7 @@ public class EntityPackets { private static final PacketHandler DIMENSION_HANDLER = wrapper -> { WorldIdentifiers map = Via.getConfig().get1_16WorldNamesMap(); WorldIdentifiers userMap = wrapper.user().get(WorldIdentifiers.class); - if (userMap!=null){ + if (userMap != null) { map = userMap; } int dimension = wrapper.read(Type.INT); @@ -159,34 +158,29 @@ public class EntityPackets { MetadataRewriter1_16To1_15_2 metadataRewriter = protocol.get(MetadataRewriter1_16To1_15_2.class); // Spawn lightning -> Spawn entity - protocol.registerClientbound(ClientboundPackets1_15.SPAWN_GLOBAL_ENTITY, ClientboundPackets1_16.SPAWN_ENTITY, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - int entityId = wrapper.passthrough(Type.VAR_INT); - byte type = wrapper.read(Type.BYTE); - if (type != 1) { - // Cancel if not lightning/invalid id - wrapper.cancel(); - return; - } - - wrapper.user().getEntityTracker(Protocol1_16To1_15_2.class).addEntity(entityId, Entity1_16Types.LIGHTNING_BOLT); - - wrapper.write(Type.UUID, UUID.randomUUID()); // uuid - wrapper.write(Type.VAR_INT, Entity1_16Types.LIGHTNING_BOLT.getId()); // entity type - - wrapper.passthrough(Type.DOUBLE); // x - wrapper.passthrough(Type.DOUBLE); // y - wrapper.passthrough(Type.DOUBLE); // z - wrapper.write(Type.BYTE, (byte) 0); // yaw - wrapper.write(Type.BYTE, (byte) 0); // pitch - wrapper.write(Type.INT, 0); // data - wrapper.write(Type.SHORT, (short) 0); // velocity - wrapper.write(Type.SHORT, (short) 0); // velocity - wrapper.write(Type.SHORT, (short) 0); // velocity - }); + protocol.registerClientbound(ClientboundPackets1_15.SPAWN_GLOBAL_ENTITY, ClientboundPackets1_16.SPAWN_ENTITY, wrapper -> { + int entityId = wrapper.passthrough(Type.VAR_INT); + byte type = wrapper.read(Type.BYTE); + if (type != 1) { + // Cancel if not lightning/invalid id + wrapper.cancel(); + return; } + + wrapper.user().getEntityTracker(Protocol1_16To1_15_2.class).addEntity(entityId, Entity1_16Types.LIGHTNING_BOLT); + + wrapper.write(Type.UUID, UUID.randomUUID()); // uuid + wrapper.write(Type.VAR_INT, Entity1_16Types.LIGHTNING_BOLT.getId()); // entity type + + wrapper.passthrough(Type.DOUBLE); // x + wrapper.passthrough(Type.DOUBLE); // y + wrapper.passthrough(Type.DOUBLE); // z + wrapper.write(Type.BYTE, (byte) 0); // yaw + wrapper.write(Type.BYTE, (byte) 0); // pitch + wrapper.write(Type.INT, 0); // data + wrapper.write(Type.SHORT, (short) 0); // velocity + wrapper.write(Type.SHORT, (short) 0); // velocity + wrapper.write(Type.SHORT, (short) 0); // velocity }); metadataRewriter.registerTrackerWithData(ClientboundPackets1_15.SPAWN_ENTITY, Entity1_16Types.FALLING_BLOCK); @@ -239,62 +233,52 @@ public class EntityPackets { } }); - protocol.registerClientbound(ClientboundPackets1_15.ENTITY_PROPERTIES, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - wrapper.passthrough(Type.VAR_INT); - int size = wrapper.passthrough(Type.INT); - int actualSize = size; - for (int i = 0; i < size; i++) { - // Attributes have been renamed and are now namespaced identifiers - String key = wrapper.read(Type.STRING); - String attributeIdentifier = protocol.getMappingData().getAttributeMappings().get(key); - if (attributeIdentifier == null) { - attributeIdentifier = "minecraft:" + key; - if (!com.viaversion.viaversion.protocols.protocol1_13to1_12_2.data.MappingData.isValid1_13Channel(attributeIdentifier)) { - if (!Via.getConfig().isSuppressConversionWarnings()) { - Via.getPlatform().getLogger().warning("Invalid attribute: " + key); - } - actualSize--; - wrapper.read(Type.DOUBLE); - int modifierSize = wrapper.read(Type.VAR_INT); - for (int j = 0; j < modifierSize; j++) { - wrapper.read(Type.UUID); - wrapper.read(Type.DOUBLE); - wrapper.read(Type.BYTE); - } - continue; - } + protocol.registerClientbound(ClientboundPackets1_15.ENTITY_PROPERTIES, wrapper -> { + wrapper.passthrough(Type.VAR_INT); + int size = wrapper.passthrough(Type.INT); + int actualSize = size; + for (int i = 0; i < size; i++) { + // Attributes have been renamed and are now namespaced identifiers + String key = wrapper.read(Type.STRING); + String attributeIdentifier = protocol.getMappingData().getAttributeMappings().get(key); + if (attributeIdentifier == null) { + attributeIdentifier = "minecraft:" + key; + if (!com.viaversion.viaversion.protocols.protocol1_13to1_12_2.data.MappingData.isValid1_13Channel(attributeIdentifier)) { + if (!Via.getConfig().isSuppressConversionWarnings()) { + Via.getPlatform().getLogger().warning("Invalid attribute: " + key); } - - wrapper.write(Type.STRING, attributeIdentifier); - - wrapper.passthrough(Type.DOUBLE); - int modifierSize = wrapper.passthrough(Type.VAR_INT); + actualSize--; + wrapper.read(Type.DOUBLE); + int modifierSize = wrapper.read(Type.VAR_INT); for (int j = 0; j < modifierSize; j++) { - wrapper.passthrough(Type.UUID); - wrapper.passthrough(Type.DOUBLE); - wrapper.passthrough(Type.BYTE); + wrapper.read(Type.UUID); + wrapper.read(Type.DOUBLE); + wrapper.read(Type.BYTE); } + continue; } - if (size != actualSize) { - wrapper.set(Type.INT, 0, actualSize); - } - }); + } + + wrapper.write(Type.STRING, attributeIdentifier); + + wrapper.passthrough(Type.DOUBLE); + int modifierSize = wrapper.passthrough(Type.VAR_INT); + for (int j = 0; j < modifierSize; j++) { + wrapper.passthrough(Type.UUID); + wrapper.passthrough(Type.DOUBLE); + wrapper.passthrough(Type.BYTE); + } + } + if (size != actualSize) { + wrapper.set(Type.INT, 0, actualSize); } }); - protocol.registerServerbound(ServerboundPackets1_16.ANIMATION, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - InventoryTracker1_16 inventoryTracker = wrapper.user().get(InventoryTracker1_16.class); - // Don't send an arm swing if the player has an inventory opened. - if (inventoryTracker.getInventory() != -1) { - wrapper.cancel(); - } - }); + protocol.registerServerbound(ServerboundPackets1_16.ANIMATION, wrapper -> { + InventoryTracker1_16 inventoryTracker = wrapper.user().get(InventoryTracker1_16.class); + // Don't send an arm swing if the player has an inventory opened. + if (inventoryTracker.getInventory() != -1) { + wrapper.cancel(); } }); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/packets/InventoryPackets.java index d0c165746..597e953d4 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/packets/InventoryPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/packets/InventoryPackets.java @@ -37,7 +37,6 @@ import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.Protocol1_16To1_ import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.ServerboundPackets1_16; import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.storage.InventoryTracker1_16; import com.viaversion.viaversion.rewriter.ItemRewriter; - import java.util.UUID; public class InventoryPackets extends ItemRewriter { @@ -51,8 +50,8 @@ public class InventoryPackets extends ItemRewriter { PacketWrapper clearPacket = wrapper.create(ClientboundPackets1_16.SET_SLOT); - clearPacket.write(Type.UNSIGNED_BYTE, (short)-1); - clearPacket.write(Type.SHORT, (short)-1); + clearPacket.write(Type.UNSIGNED_BYTE, (short) -1); + clearPacket.write(Type.SHORT, (short) -1); clearPacket.write(Type.FLAT_VAR_INT_ITEM, null); clearPacket.send(Protocol1_16To1_15_2.class); }; @@ -131,22 +130,12 @@ public class InventoryPackets extends ItemRewriter { - InventoryTracker1_16 inventoryTracker = wrapper.user().get(InventoryTracker1_16.class); - inventoryTracker.setInventory((short) -1); - }); - } + protocol.registerServerbound(ServerboundPackets1_16.CLOSE_WINDOW, wrapper -> { + InventoryTracker1_16 inventoryTracker = wrapper.user().get(InventoryTracker1_16.class); + inventoryTracker.setInventory((short) -1); }); - protocol.registerServerbound(ServerboundPackets1_16.EDIT_BOOK, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> handleItemToServer(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM))); - } - }); + protocol.registerServerbound(ServerboundPackets1_16.EDIT_BOOK, wrapper -> handleItemToServer(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM))); registerSpawnParticle(ClientboundPackets1_15.SPAWN_PARTICLE, Type.FLAT_VAR_INT_ITEM, Type.DOUBLE); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/packets/WorldPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/packets/WorldPackets.java index 8e9ca20d4..2e8fcb929 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/packets/WorldPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/packets/WorldPackets.java @@ -23,7 +23,6 @@ import com.github.steveice10.opennbt.tag.builtin.LongArrayTag; import com.github.steveice10.opennbt.tag.builtin.StringTag; import com.github.steveice10.opennbt.tag.builtin.Tag; import com.google.gson.JsonElement; -import com.viaversion.viaversion.api.minecraft.Position; import com.viaversion.viaversion.api.minecraft.chunks.Chunk; import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection; import com.viaversion.viaversion.api.minecraft.chunks.DataPalette; @@ -37,7 +36,6 @@ import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.Protocol1_16To1_ import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.types.Chunk1_16Type; import com.viaversion.viaversion.rewriter.BlockRewriter; import com.viaversion.viaversion.util.CompactArrayUtil; - import java.util.Map; import java.util.UUID; @@ -60,54 +58,44 @@ public class WorldPackets { } }); - protocol.registerClientbound(ClientboundPackets1_15.CHUNK_DATA, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - Chunk chunk = wrapper.read(new Chunk1_15Type()); - wrapper.write(new Chunk1_16Type(), chunk); + protocol.registerClientbound(ClientboundPackets1_15.CHUNK_DATA, wrapper -> { + Chunk chunk = wrapper.read(new Chunk1_15Type()); + wrapper.write(new Chunk1_16Type(), chunk); - chunk.setIgnoreOldLightData(chunk.isFullChunk()); + chunk.setIgnoreOldLightData(chunk.isFullChunk()); - for (int s = 0; s < chunk.getSections().length; s++) { - ChunkSection section = chunk.getSections()[s]; - if (section == null) { - continue; - } + for (int s = 0; s < chunk.getSections().length; s++) { + ChunkSection section = chunk.getSections()[s]; + if (section == null) { + continue; + } - DataPalette palette = section.palette(PaletteType.BLOCKS); - for (int i = 0; i < palette.size(); i++) { - int mappedBlockStateId = protocol.getMappingData().getNewBlockStateId(palette.idByIndex(i)); - palette.setIdByIndex(i, mappedBlockStateId); - } - } + DataPalette palette = section.palette(PaletteType.BLOCKS); + for (int i = 0; i < palette.size(); i++) { + int mappedBlockStateId = protocol.getMappingData().getNewBlockStateId(palette.idByIndex(i)); + palette.setIdByIndex(i, mappedBlockStateId); + } + } - CompoundTag heightMaps = chunk.getHeightMap(); - for (Tag heightMapTag : heightMaps.values()) { - LongArrayTag heightMap = (LongArrayTag) heightMapTag; - int[] heightMapData = new int[256]; - CompactArrayUtil.iterateCompactArray(9, heightMapData.length, heightMap.getValue(), (i, v) -> heightMapData[i] = v); - heightMap.setValue(CompactArrayUtil.createCompactArrayWithPadding(9, heightMapData.length, i -> heightMapData[i])); - } + CompoundTag heightMaps = chunk.getHeightMap(); + for (Tag heightMapTag : heightMaps.values()) { + LongArrayTag heightMap = (LongArrayTag) heightMapTag; + int[] heightMapData = new int[256]; + CompactArrayUtil.iterateCompactArray(9, heightMapData.length, heightMap.getValue(), (i, v) -> heightMapData[i] = v); + heightMap.setValue(CompactArrayUtil.createCompactArrayWithPadding(9, heightMapData.length, i -> heightMapData[i])); + } - if (chunk.getBlockEntities() == null) return; - for (CompoundTag blockEntity : chunk.getBlockEntities()) { - handleBlockEntity(protocol, blockEntity); - } - }); + if (chunk.getBlockEntities() == null) return; + for (CompoundTag blockEntity : chunk.getBlockEntities()) { + handleBlockEntity(protocol, blockEntity); } }); - protocol.registerClientbound(ClientboundPackets1_15.BLOCK_ENTITY_DATA, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - Position position = wrapper.passthrough(Type.POSITION1_14); - short action = wrapper.passthrough(Type.UNSIGNED_BYTE); - CompoundTag tag = wrapper.passthrough(Type.NBT); - handleBlockEntity(protocol, tag); - }); - } + protocol.registerClientbound(ClientboundPackets1_15.BLOCK_ENTITY_DATA, wrapper -> { + wrapper.passthrough(Type.POSITION1_14); // Position + wrapper.passthrough(Type.UNSIGNED_BYTE); // Action + CompoundTag tag = wrapper.passthrough(Type.NBT); + handleBlockEntity(protocol, tag); }); blockRewriter.registerEffect(ClientboundPackets1_15.EFFECT, 1010, 2001); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/types/Chunk1_16Type.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/types/Chunk1_16Type.java index 491a50508..1c26136b8 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/types/Chunk1_16Type.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_16to1_15_2/types/Chunk1_16Type.java @@ -26,7 +26,6 @@ import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.api.type.types.minecraft.BaseChunkType; import com.viaversion.viaversion.api.type.types.version.Types1_16; import io.netty.buffer.ByteBuf; - import java.util.ArrayList; import java.util.Arrays; import java.util.List; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17_1to1_17/Protocol1_17_1To1_17.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17_1to1_17/Protocol1_17_1To1_17.java index 2026125e8..274776f0c 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17_1to1_17/Protocol1_17_1To1_17.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17_1to1_17/Protocol1_17_1To1_17.java @@ -40,15 +40,10 @@ public final class Protocol1_17_1To1_17 extends AbstractProtocol { - // Aaaaand back to an array again! - int entityId = wrapper.read(Type.VAR_INT); - wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[]{entityId}); - }); - } + registerClientbound(ClientboundPackets1_17.REMOVE_ENTITY, ClientboundPackets1_17_1.REMOVE_ENTITIES, wrapper -> { + // Aaaaand back to an array again! + int entityId = wrapper.read(Type.VAR_INT); + wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[]{entityId}); }); registerClientbound(ClientboundPackets1_17.SET_SLOT, new PacketHandlers() { @@ -82,51 +77,46 @@ public final class Protocol1_17_1To1_17 extends AbstractProtocol { - CompoundTag tag = new CompoundTag(); - Item item = new DataItem(942, (byte) 1, (short) 0, tag); // Magic value for writable books + registerServerbound(ServerboundPackets1_17.EDIT_BOOK, wrapper -> { + CompoundTag tag = new CompoundTag(); + Item item = new DataItem(942, (byte) 1, (short) 0, tag); // Magic value for writable books - // Write the item, edit the tag down the line - wrapper.write(Type.FLAT_VAR_INT_ITEM, item); + // Write the item, edit the tag down the line + wrapper.write(Type.FLAT_VAR_INT_ITEM, item); - int slot = wrapper.read(Type.VAR_INT); + int slot = wrapper.read(Type.VAR_INT); - // Save pages to tag - int pages = wrapper.read(Type.VAR_INT); - ListTag pagesTag = new ListTag(StringTag.class); - for (int i = 0; i < pages; i++) { - String page = wrapper.read(PAGE_STRING_TYPE); - pagesTag.add(new StringTag(page)); - } - - // Legacy servers don't like an empty pages list - if (pagesTag.size() == 0) { - pagesTag.add(new StringTag("")); - } - - tag.put("pages", pagesTag); - - if (wrapper.read(Type.BOOLEAN)) { - // Save the title to tag - String title = wrapper.read(TITLE_STRING_TYPE); - tag.put("title", new StringTag(title)); - - // Even if unused, legacy servers check for the author tag - tag.put("author", new StringTag(wrapper.user().getProtocolInfo().getUsername())); - - // Write signing - wrapper.write(Type.BOOLEAN, true); - } else { - wrapper.write(Type.BOOLEAN, false); - } - - // Write the slot - wrapper.write(Type.VAR_INT, slot); - }); + // Save pages to tag + int pages = wrapper.read(Type.VAR_INT); + ListTag pagesTag = new ListTag(StringTag.class); + for (int i = 0; i < pages; i++) { + String page = wrapper.read(PAGE_STRING_TYPE); + pagesTag.add(new StringTag(page)); } + + // Legacy servers don't like an empty pages list + if (pagesTag.size() == 0) { + pagesTag.add(new StringTag("")); + } + + tag.put("pages", pagesTag); + + if (wrapper.read(Type.BOOLEAN)) { + // Save the title to tag + String title = wrapper.read(TITLE_STRING_TYPE); + tag.put("title", new StringTag(title)); + + // Even if unused, legacy servers check for the author tag + tag.put("author", new StringTag(wrapper.user().getProtocolInfo().getUsername())); + + // Write signing + wrapper.write(Type.BOOLEAN, true); + } else { + wrapper.write(Type.BOOLEAN, false); + } + + // Write the slot + wrapper.write(Type.VAR_INT, slot); }); } } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/Protocol1_17To1_16_4.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/Protocol1_17To1_16_4.java index d395603eb..d666a05fd 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/Protocol1_17To1_16_4.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/Protocol1_17To1_16_4.java @@ -59,33 +59,28 @@ public final class Protocol1_17To1_16_4 extends AbstractProtocol { - // Tags are now generically written with resource location - 5 different Vanilla types - wrapper.write(Type.VAR_INT, 5); - for (RegistryType type : RegistryType.getValues()) { - // Prefix with resource location - wrapper.write(Type.STRING, type.resourceLocation()); + registerClientbound(ClientboundPackets1_16_2.TAGS, wrapper -> { + // Tags are now generically written with resource location - 5 different Vanilla types + wrapper.write(Type.VAR_INT, 5); + for (RegistryType type : RegistryType.getValues()) { + // Prefix with resource location + wrapper.write(Type.STRING, type.resourceLocation()); - // Id conversion - tagRewriter.handle(wrapper, tagRewriter.getRewriter(type), tagRewriter.getNewTags(type)); + // Id conversion + tagRewriter.handle(wrapper, tagRewriter.getRewriter(type), tagRewriter.getNewTags(type)); - // Stop iterating after entity types - if (type == RegistryType.ENTITY) { - break; - } - } + // Stop iterating after entity types + if (type == RegistryType.ENTITY) { + break; + } + } - // New Game Event tags type - wrapper.write(Type.STRING, RegistryType.GAME_EVENT.resourceLocation()); - wrapper.write(Type.VAR_INT, NEW_GAME_EVENT_TAGS.length); - for (String tag : NEW_GAME_EVENT_TAGS) { - wrapper.write(Type.STRING, tag); - wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[0]); - } - }); + // New Game Event tags type + wrapper.write(Type.STRING, RegistryType.GAME_EVENT.resourceLocation()); + wrapper.write(Type.VAR_INT, NEW_GAME_EVENT_TAGS.length); + for (String tag : NEW_GAME_EVENT_TAGS) { + wrapper.write(Type.STRING, tag); + wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[0]); } }); @@ -95,74 +90,59 @@ public final class Protocol1_17To1_16_4 extends AbstractProtocol { - wrapper.passthrough(Type.STRING); - wrapper.passthrough(Type.STRING); - wrapper.write(Type.BOOLEAN, Via.getConfig().isForcedUse1_17ResourcePack()); // Required - wrapper.write(Type.OPTIONAL_COMPONENT, Via.getConfig().get1_17ResourcePackPrompt()); // Prompt message - }); + registerClientbound(ClientboundPackets1_16_2.RESOURCE_PACK, wrapper -> { + wrapper.passthrough(Type.STRING); + wrapper.passthrough(Type.STRING); + wrapper.write(Type.BOOLEAN, Via.getConfig().isForcedUse1_17ResourcePack()); // Required + wrapper.write(Type.OPTIONAL_COMPONENT, Via.getConfig().get1_17ResourcePackPrompt()); // Prompt message + }); + + registerClientbound(ClientboundPackets1_16_2.MAP_DATA, wrapper -> { + wrapper.passthrough(Type.VAR_INT); + wrapper.passthrough(Type.BYTE); + wrapper.read(Type.BOOLEAN); // Tracking position removed + wrapper.passthrough(Type.BOOLEAN); + + int size = wrapper.read(Type.VAR_INT); + // Write whether markers exists or not + if (size != 0) { + wrapper.write(Type.BOOLEAN, true); + wrapper.write(Type.VAR_INT, size); + } else { + wrapper.write(Type.BOOLEAN, false); } }); - registerClientbound(ClientboundPackets1_16_2.MAP_DATA, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - wrapper.passthrough(Type.VAR_INT); - wrapper.passthrough(Type.BYTE); - wrapper.read(Type.BOOLEAN); // Tracking position removed - wrapper.passthrough(Type.BOOLEAN); - - int size = wrapper.read(Type.VAR_INT); - // Write whether markers exists or not - if (size != 0) { - wrapper.write(Type.BOOLEAN, true); - wrapper.write(Type.VAR_INT, size); - } else { - wrapper.write(Type.BOOLEAN, false); - } - }); + registerClientbound(ClientboundPackets1_16_2.TITLE, null, wrapper -> { + // Title packet actions have been split into individual packets (the content hasn't changed) + int type = wrapper.read(Type.VAR_INT); + ClientboundPacketType packetType; + switch (type) { + case 0: + packetType = ClientboundPackets1_17.TITLE_TEXT; + break; + case 1: + packetType = ClientboundPackets1_17.TITLE_SUBTITLE; + break; + case 2: + packetType = ClientboundPackets1_17.ACTIONBAR; + break; + case 3: + packetType = ClientboundPackets1_17.TITLE_TIMES; + break; + case 4: + packetType = ClientboundPackets1_17.CLEAR_TITLES; + wrapper.write(Type.BOOLEAN, false); // Reset times + break; + case 5: + packetType = ClientboundPackets1_17.CLEAR_TITLES; + wrapper.write(Type.BOOLEAN, true); // Reset times + break; + default: + throw new IllegalArgumentException("Invalid title type received: " + type); } - }); - registerClientbound(ClientboundPackets1_16_2.TITLE, null, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - // Title packet actions have been split into individual packets (the content hasn't changed) - int type = wrapper.read(Type.VAR_INT); - ClientboundPacketType packetType; - switch (type) { - case 0: - packetType = ClientboundPackets1_17.TITLE_TEXT; - break; - case 1: - packetType = ClientboundPackets1_17.TITLE_SUBTITLE; - break; - case 2: - packetType = ClientboundPackets1_17.ACTIONBAR; - break; - case 3: - packetType = ClientboundPackets1_17.TITLE_TIMES; - break; - case 4: - packetType = ClientboundPackets1_17.CLEAR_TITLES; - wrapper.write(Type.BOOLEAN, false); // Reset times - break; - case 5: - packetType = ClientboundPackets1_17.CLEAR_TITLES; - wrapper.write(Type.BOOLEAN, true); // Reset times - break; - default: - throw new IllegalArgumentException("Invalid title type received: " + type); - } - - wrapper.setPacketType(packetType); - }); - } + wrapper.setPacketType(packetType); }); registerClientbound(ClientboundPackets1_16_2.EXPLOSION, new PacketHandlers() { diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/packets/EntityPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/packets/EntityPackets.java index d0e5ea859..ef34a4a6e 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/packets/EntityPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/packets/EntityPackets.java @@ -50,23 +50,18 @@ public final class EntityPackets extends EntityRewriter { - int[] entityIds = wrapper.read(Type.VAR_INT_ARRAY_PRIMITIVE); - wrapper.cancel(); + protocol.registerClientbound(ClientboundPackets1_16_2.DESTROY_ENTITIES, null, wrapper -> { + int[] entityIds = wrapper.read(Type.VAR_INT_ARRAY_PRIMITIVE); + wrapper.cancel(); - EntityTracker entityTracker = wrapper.user().getEntityTracker(Protocol1_17To1_16_4.class); - for (int entityId : entityIds) { - entityTracker.removeEntity(entityId); + EntityTracker entityTracker = wrapper.user().getEntityTracker(Protocol1_17To1_16_4.class); + for (int entityId : entityIds) { + entityTracker.removeEntity(entityId); - // Send individual remove packets - PacketWrapper newPacket = wrapper.create(ClientboundPackets1_17.REMOVE_ENTITY); - newPacket.write(Type.VAR_INT, entityId); - newPacket.send(Protocol1_17To1_16_4.class); - } - }); + // Send individual remove packets + PacketWrapper newPacket = wrapper.create(ClientboundPackets1_17.REMOVE_ENTITY); + newPacket.write(Type.VAR_INT, entityId); + newPacket.send(Protocol1_17To1_16_4.class); } }); @@ -96,14 +91,9 @@ public final class EntityPackets extends EntityRewriter { - CompoundTag dimensionData = wrapper.passthrough(Type.NBT); - addNewDimensionData(dimensionData); - }); - } + protocol.registerClientbound(ClientboundPackets1_16_2.RESPAWN, wrapper -> { + CompoundTag dimensionData = wrapper.passthrough(Type.NBT); + addNewDimensionData(dimensionData); }); protocol.registerClientbound(ClientboundPackets1_16_2.ENTITY_PROPERTIES, new PacketHandlers() { @@ -134,30 +124,25 @@ public final class EntityPackets extends EntityRewriter { - // Combat packet actions have been split into individual packets (the content hasn't changed) - int type = wrapper.read(Type.VAR_INT); - ClientboundPacketType packetType; - switch (type) { - case 0: - packetType = ClientboundPackets1_17.COMBAT_ENTER; - break; - case 1: - packetType = ClientboundPackets1_17.COMBAT_END; - break; - case 2: - packetType = ClientboundPackets1_17.COMBAT_KILL; - break; - default: - throw new IllegalArgumentException("Invalid combat type received: " + type); - } - - wrapper.setPacketType(packetType); - }); + protocol.registerClientbound(ClientboundPackets1_16_2.COMBAT_EVENT, null, wrapper -> { + // Combat packet actions have been split into individual packets (the content hasn't changed) + int type = wrapper.read(Type.VAR_INT); + ClientboundPacketType packetType; + switch (type) { + case 0: + packetType = ClientboundPackets1_17.COMBAT_ENTER; + break; + case 1: + packetType = ClientboundPackets1_17.COMBAT_END; + break; + case 2: + packetType = ClientboundPackets1_17.COMBAT_KILL; + break; + default: + throw new IllegalArgumentException("Invalid combat type received: " + type); } + + wrapper.setPacketType(packetType); }); // The parent class of the other entity move packets that is never actually used has finally been removed from the id list diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/packets/InventoryPackets.java index 478615439..3faef58e6 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/packets/InventoryPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/packets/InventoryPackets.java @@ -50,12 +50,7 @@ public final class InventoryPackets extends ItemRewriter handleItemToServer(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM))); - } - }); + protocol.registerServerbound(ServerboundPackets1_17.EDIT_BOOK, wrapper -> handleItemToServer(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM))); protocol.registerServerbound(ServerboundPackets1_17.CLICK_WINDOW, new PacketHandlers() { @Override @@ -92,49 +87,39 @@ public final class InventoryPackets extends ItemRewriter { - short inventoryId = wrapper.read(Type.UNSIGNED_BYTE); - short confirmationId = wrapper.read(Type.SHORT); - boolean accepted = wrapper.read(Type.BOOLEAN); - if (!accepted) { - // Use the new ping packet to replace the removed acknowledgement, extra bit for fast dismissal - int id = (1 << 30) | (inventoryId << 16) | (confirmationId & 0xFFFF); - wrapper.user().get(InventoryAcknowledgements.class).addId(id); + protocol.registerClientbound(ClientboundPackets1_16_2.WINDOW_CONFIRMATION, null, wrapper -> { + short inventoryId = wrapper.read(Type.UNSIGNED_BYTE); + short confirmationId = wrapper.read(Type.SHORT); + boolean accepted = wrapper.read(Type.BOOLEAN); + if (!accepted) { + // Use the new ping packet to replace the removed acknowledgement, extra bit for fast dismissal + int id = (1 << 30) | (inventoryId << 16) | (confirmationId & 0xFFFF); + wrapper.user().get(InventoryAcknowledgements.class).addId(id); - PacketWrapper pingPacket = wrapper.create(ClientboundPackets1_17.PING); - pingPacket.write(Type.INT, id); - pingPacket.send(Protocol1_17To1_16_4.class); - } - - wrapper.cancel(); - }); + PacketWrapper pingPacket = wrapper.create(ClientboundPackets1_17.PING); + pingPacket.write(Type.INT, id); + pingPacket.send(Protocol1_17To1_16_4.class); } + + wrapper.cancel(); }); // New pong packet - protocol.registerServerbound(ServerboundPackets1_17.PONG, null, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - int id = wrapper.read(Type.INT); - // Check extra bit for fast dismissal - if ((id & (1 << 30)) != 0 && wrapper.user().get(InventoryAcknowledgements.class).removeId(id)) { - // Decode our requested inventory acknowledgement - short inventoryId = (short) ((id >> 16) & 0xFF); - short confirmationId = (short) (id & 0xFFFF); - PacketWrapper packet = wrapper.create(ServerboundPackets1_16_2.WINDOW_CONFIRMATION); - packet.write(Type.UNSIGNED_BYTE, inventoryId); - packet.write(Type.SHORT, confirmationId); - packet.write(Type.BOOLEAN, true); // Accept - packet.sendToServer(Protocol1_17To1_16_4.class); - } - - wrapper.cancel(); - }); + protocol.registerServerbound(ServerboundPackets1_17.PONG, null, wrapper -> { + int id = wrapper.read(Type.INT); + // Check extra bit for fast dismissal + if ((id & (1 << 30)) != 0 && wrapper.user().get(InventoryAcknowledgements.class).removeId(id)) { + // Decode our requested inventory acknowledgement + short inventoryId = (short) ((id >> 16) & 0xFF); + short confirmationId = (short) (id & 0xFFFF); + PacketWrapper packet = wrapper.create(ServerboundPackets1_16_2.WINDOW_CONFIRMATION); + packet.write(Type.UNSIGNED_BYTE, inventoryId); + packet.write(Type.SHORT, confirmationId); + packet.write(Type.BOOLEAN, true); // Accept + packet.sendToServer(Protocol1_17To1_16_4.class); } + + wrapper.cancel(); }); } } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/packets/WorldPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/packets/WorldPackets.java index fc6fff8a6..1bccdc514 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/packets/WorldPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/packets/WorldPackets.java @@ -33,7 +33,6 @@ import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.ClientboundPacke import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.Protocol1_17To1_16_4; import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.types.Chunk1_17Type; import com.viaversion.viaversion.rewriter.BlockRewriter; - import java.util.ArrayList; import java.util.BitSet; import java.util.List; @@ -48,39 +47,34 @@ public final class WorldPackets { blockRewriter.registerVarLongMultiBlockChange(ClientboundPackets1_16_2.MULTI_BLOCK_CHANGE); blockRewriter.registerAcknowledgePlayerDigging(ClientboundPackets1_16_2.ACKNOWLEDGE_PLAYER_DIGGING); - protocol.registerClientbound(ClientboundPackets1_16_2.WORLD_BORDER, null, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - // Border packet actions have been split into individual packets (the content hasn't changed) - int type = wrapper.read(Type.VAR_INT); - ClientboundPacketType packetType; - switch (type) { - case 0: - packetType = ClientboundPackets1_17.WORLD_BORDER_SIZE; - break; - case 1: - packetType = ClientboundPackets1_17.WORLD_BORDER_LERP_SIZE; - break; - case 2: - packetType = ClientboundPackets1_17.WORLD_BORDER_CENTER; - break; - case 3: - packetType = ClientboundPackets1_17.WORLD_BORDER_INIT; - break; - case 4: - packetType = ClientboundPackets1_17.WORLD_BORDER_WARNING_DELAY; - break; - case 5: - packetType = ClientboundPackets1_17.WORLD_BORDER_WARNING_DISTANCE; - break; - default: - throw new IllegalArgumentException("Invalid world border type received: " + type); - } - - wrapper.setPacketType(packetType); - }); + protocol.registerClientbound(ClientboundPackets1_16_2.WORLD_BORDER, null, wrapper -> { + // Border packet actions have been split into individual packets (the content hasn't changed) + int type = wrapper.read(Type.VAR_INT); + ClientboundPacketType packetType; + switch (type) { + case 0: + packetType = ClientboundPackets1_17.WORLD_BORDER_SIZE; + break; + case 1: + packetType = ClientboundPackets1_17.WORLD_BORDER_LERP_SIZE; + break; + case 2: + packetType = ClientboundPackets1_17.WORLD_BORDER_CENTER; + break; + case 3: + packetType = ClientboundPackets1_17.WORLD_BORDER_INIT; + break; + case 4: + packetType = ClientboundPackets1_17.WORLD_BORDER_WARNING_DELAY; + break; + case 5: + packetType = ClientboundPackets1_17.WORLD_BORDER_WARNING_DISTANCE; + break; + default: + throw new IllegalArgumentException("Invalid world border type received: " + type); } + + wrapper.setPacketType(packetType); }); protocol.registerClientbound(ClientboundPackets1_16_2.UPDATE_LIGHT, new PacketHandlers() { @@ -127,40 +121,35 @@ public final class WorldPackets { } }); - protocol.registerClientbound(ClientboundPackets1_16_2.CHUNK_DATA, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - Chunk chunk = wrapper.read(new Chunk1_16_2Type()); - if (!chunk.isFullChunk()) { - // All chunks are full chunk packets now (1.16 already stopped sending non-full chunks) - // Construct multi block change packets instead - // Height map updates are lost (unless we want to fully cache and resend entire chunks) - // Block entities are always empty for non-full chunks in Vanilla - writeMultiBlockChangePacket(wrapper, chunk); - wrapper.cancel(); - return; - } + protocol.registerClientbound(ClientboundPackets1_16_2.CHUNK_DATA, wrapper -> { + Chunk chunk = wrapper.read(new Chunk1_16_2Type()); + if (!chunk.isFullChunk()) { + // All chunks are full chunk packets now (1.16 already stopped sending non-full chunks) + // Construct multi block change packets instead + // Height map updates are lost (unless we want to fully cache and resend entire chunks) + // Block entities are always empty for non-full chunks in Vanilla + writeMultiBlockChangePacket(wrapper, chunk); + wrapper.cancel(); + return; + } - // Normal full chunk writing - wrapper.write(new Chunk1_17Type(chunk.getSections().length), chunk); + // Normal full chunk writing + wrapper.write(new Chunk1_17Type(chunk.getSections().length), chunk); - // 1.17 uses a bitset for the mask - chunk.setChunkMask(BitSet.valueOf(new long[]{chunk.getBitmask()})); + // 1.17 uses a bitset for the mask + chunk.setChunkMask(BitSet.valueOf(new long[]{chunk.getBitmask()})); - for (int s = 0; s < chunk.getSections().length; s++) { - ChunkSection section = chunk.getSections()[s]; - if (section == null) { - continue; - } + for (int s = 0; s < chunk.getSections().length; s++) { + ChunkSection section = chunk.getSections()[s]; + if (section == null) { + continue; + } - DataPalette palette = section.palette(PaletteType.BLOCKS); - for (int i = 0; i < palette.size(); i++) { - int mappedBlockStateId = protocol.getMappingData().getNewBlockStateId(palette.idByIndex(i)); - palette.setIdByIndex(i, mappedBlockStateId); - } - } - }); + DataPalette palette = section.palette(PaletteType.BLOCKS); + for (int i = 0; i < palette.size(); i++) { + int mappedBlockStateId = protocol.getMappingData().getNewBlockStateId(palette.idByIndex(i)); + palette.setIdByIndex(i, mappedBlockStateId); + } } }); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/types/Chunk1_17Type.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/types/Chunk1_17Type.java index af279b844..ddcaeb3be 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/types/Chunk1_17Type.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/types/Chunk1_17Type.java @@ -27,7 +27,6 @@ import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.api.type.types.minecraft.BaseChunkType; import com.viaversion.viaversion.api.type.types.version.Types1_16; import io.netty.buffer.ByteBuf; - import java.util.ArrayList; import java.util.Arrays; import java.util.BitSet; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18_2to1_18/Protocol1_18_2To1_18.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18_2to1_18/Protocol1_18_2To1_18.java index 3102aec33..2d15380a1 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18_2to1_18/Protocol1_18_2To1_18.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18_2to1_18/Protocol1_18_2To1_18.java @@ -80,12 +80,7 @@ public final class Protocol1_18_2To1_18 extends AbstractProtocol addTagPrefix(wrapper.passthrough(Type.NBT))); - } - }); + registerClientbound(ClientboundPackets1_18.RESPAWN, wrapper -> addTagPrefix(wrapper.passthrough(Type.NBT))); } private void addTagPrefix(CompoundTag tag) { diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/BlockEntityIds.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/BlockEntityIds.java index 3c716c3ed..a3228621c 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/BlockEntityIds.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/BlockEntityIds.java @@ -18,7 +18,6 @@ package com.viaversion.viaversion.protocols.protocol1_18to1_17_1; import com.viaversion.viaversion.api.Via; - import java.util.Arrays; public final class BlockEntityIds { diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/packets/WorldPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/packets/WorldPackets.java index bea1356e7..e80fcbe9f 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/packets/WorldPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/packets/WorldPackets.java @@ -25,7 +25,12 @@ import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.data.entity.EntityTracker; import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntity; import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntityImpl; -import com.viaversion.viaversion.api.minecraft.chunks.*; +import com.viaversion.viaversion.api.minecraft.chunks.Chunk; +import com.viaversion.viaversion.api.minecraft.chunks.Chunk1_18; +import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection; +import com.viaversion.viaversion.api.minecraft.chunks.ChunkSectionImpl; +import com.viaversion.viaversion.api.minecraft.chunks.DataPaletteImpl; +import com.viaversion.viaversion.api.minecraft.chunks.PaletteType; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_17_1to1_17.ClientboundPackets1_17_1; @@ -35,7 +40,6 @@ import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.Protocol1_18To1_ import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.storage.ChunkLightStorage; import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.types.Chunk1_18Type; import com.viaversion.viaversion.util.MathUtil; - import java.util.ArrayList; import java.util.BitSet; import java.util.List; @@ -57,157 +61,142 @@ public final class WorldPackets { } }); - protocol.registerClientbound(ClientboundPackets1_17_1.UPDATE_LIGHT, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - final int chunkX = wrapper.passthrough(Type.VAR_INT); - final int chunkZ = wrapper.passthrough(Type.VAR_INT); + protocol.registerClientbound(ClientboundPackets1_17_1.UPDATE_LIGHT, wrapper -> { + final int chunkX = wrapper.passthrough(Type.VAR_INT); + final int chunkZ = wrapper.passthrough(Type.VAR_INT); - if (wrapper.user().get(ChunkLightStorage.class).isLoaded(chunkX, chunkZ)) { - if (!Via.getConfig().cache1_17Light()) { - // Light packets updating already sent chunks are the same as before - return; - } - // Pass through and cache light data - } else { - // Cancel and cache the light data - wrapper.cancel(); - } + if (wrapper.user().get(ChunkLightStorage.class).isLoaded(chunkX, chunkZ)) { + if (!Via.getConfig().cache1_17Light()) { + // Light packets updating already sent chunks are the same as before + return; + } + // Pass through and cache light data + } else { + // Cancel and cache the light data + wrapper.cancel(); + } - final boolean trustEdges = wrapper.passthrough(Type.BOOLEAN); - final long[] skyLightMask = wrapper.passthrough(Type.LONG_ARRAY_PRIMITIVE); - final long[] blockLightMask = wrapper.passthrough(Type.LONG_ARRAY_PRIMITIVE); - final long[] emptySkyLightMask = wrapper.passthrough(Type.LONG_ARRAY_PRIMITIVE); - final long[] emptyBlockLightMask = wrapper.passthrough(Type.LONG_ARRAY_PRIMITIVE); + final boolean trustEdges = wrapper.passthrough(Type.BOOLEAN); + final long[] skyLightMask = wrapper.passthrough(Type.LONG_ARRAY_PRIMITIVE); + final long[] blockLightMask = wrapper.passthrough(Type.LONG_ARRAY_PRIMITIVE); + final long[] emptySkyLightMask = wrapper.passthrough(Type.LONG_ARRAY_PRIMITIVE); + final long[] emptyBlockLightMask = wrapper.passthrough(Type.LONG_ARRAY_PRIMITIVE); - final int skyLightLenght = wrapper.passthrough(Type.VAR_INT); - final byte[][] skyLight = new byte[skyLightLenght][]; - for (int i = 0; i < skyLightLenght; i++) { - skyLight[i] = wrapper.passthrough(Type.BYTE_ARRAY_PRIMITIVE); - } + final int skyLightLenght = wrapper.passthrough(Type.VAR_INT); + final byte[][] skyLight = new byte[skyLightLenght][]; + for (int i = 0; i < skyLightLenght; i++) { + skyLight[i] = wrapper.passthrough(Type.BYTE_ARRAY_PRIMITIVE); + } - final int blockLightLength = wrapper.passthrough(Type.VAR_INT); - final byte[][] blockLight = new byte[blockLightLength][]; - for (int i = 0; i < blockLightLength; i++) { - blockLight[i] = wrapper.passthrough(Type.BYTE_ARRAY_PRIMITIVE); - } + final int blockLightLength = wrapper.passthrough(Type.VAR_INT); + final byte[][] blockLight = new byte[blockLightLength][]; + for (int i = 0; i < blockLightLength; i++) { + blockLight[i] = wrapper.passthrough(Type.BYTE_ARRAY_PRIMITIVE); + } - final ChunkLightStorage lightStorage = wrapper.user().get(ChunkLightStorage.class); - lightStorage.storeLight(chunkX, chunkZ, - new ChunkLightStorage.ChunkLight(trustEdges, skyLightMask, blockLightMask, - emptySkyLightMask, emptyBlockLightMask, skyLight, blockLight)); - }); + final ChunkLightStorage lightStorage = wrapper.user().get(ChunkLightStorage.class); + lightStorage.storeLight(chunkX, chunkZ, + new ChunkLightStorage.ChunkLight(trustEdges, skyLightMask, blockLightMask, + emptySkyLightMask, emptyBlockLightMask, skyLight, blockLight)); + }); + + protocol.registerClientbound(ClientboundPackets1_17_1.CHUNK_DATA, wrapper -> { + final EntityTracker tracker = protocol.getEntityRewriter().tracker(wrapper.user()); + final Chunk oldChunk = wrapper.read(new Chunk1_17Type(tracker.currentWorldSectionHeight())); + + final List blockEntities = new ArrayList<>(oldChunk.getBlockEntities().size()); + for (final CompoundTag tag : oldChunk.getBlockEntities()) { + final NumberTag xTag = tag.get("x"); + final NumberTag yTag = tag.get("y"); + final NumberTag zTag = tag.get("z"); + final StringTag idTag = tag.get("id"); + if (xTag == null || yTag == null || zTag == null || idTag == null) { + continue; + } + + final String id = idTag.getValue(); + final int typeId = protocol.getMappingData().blockEntityIds().getInt(id.replace("minecraft:", "")); + if (typeId == -1) { + Via.getPlatform().getLogger().warning("Unknown block entity: " + id); + } + + handleSpawners(typeId, tag); + + final byte packedXZ = (byte) ((xTag.asInt() & 15) << 4 | (zTag.asInt() & 15)); + blockEntities.add(new BlockEntityImpl(packedXZ, yTag.asShort(), typeId, tag)); + } + + final int[] biomeData = oldChunk.getBiomeData(); + final ChunkSection[] sections = oldChunk.getSections(); + for (int i = 0; i < sections.length; i++) { + ChunkSection section = sections[i]; + if (section == null) { + // There's no section mask anymore + section = new ChunkSectionImpl(); + sections[i] = section; + section.setNonAirBlocksCount(0); + + final DataPaletteImpl blockPalette = new DataPaletteImpl(ChunkSection.SIZE); + blockPalette.addId(0); + section.addPalette(PaletteType.BLOCKS, blockPalette); + } + + // Fill biome palette + final DataPaletteImpl biomePalette = new DataPaletteImpl(ChunkSection.BIOME_SIZE); + section.addPalette(PaletteType.BIOMES, biomePalette); + + final int offset = i * ChunkSection.BIOME_SIZE; + for (int biomeIndex = 0, biomeArrayIndex = offset; biomeIndex < ChunkSection.BIOME_SIZE; biomeIndex++, biomeArrayIndex++) { + // Also catch invalid biomes with id -1 + final int biome = biomeData[biomeArrayIndex]; + biomePalette.setIdAt(biomeIndex, biome != -1 ? biome : 0); + } + } + + final Chunk chunk = new Chunk1_18(oldChunk.getX(), oldChunk.getZ(), sections, oldChunk.getHeightMap(), blockEntities); + wrapper.write(new Chunk1_18Type(tracker.currentWorldSectionHeight(), + MathUtil.ceilLog2(protocol.getMappingData().getBlockStateMappings().mappedSize()), + MathUtil.ceilLog2(tracker.biomesSent())), chunk); + + final ChunkLightStorage lightStorage = wrapper.user().get(ChunkLightStorage.class); + final boolean alreadyLoaded = !lightStorage.addLoadedChunk(chunk.getX(), chunk.getZ()); + + // Append light data to chunk packet + final ChunkLightStorage.ChunkLight light = Via.getConfig().cache1_17Light() ? + lightStorage.getLight(chunk.getX(), chunk.getZ()) : lightStorage.removeLight(chunk.getX(), chunk.getZ()); + if (light == null) { + Via.getPlatform().getLogger().warning("No light data found for chunk at " + chunk.getX() + ", " + chunk.getZ() + ". Chunk was already loaded: " + alreadyLoaded); + + final BitSet emptyLightMask = new BitSet(); + emptyLightMask.set(0, tracker.currentWorldSectionHeight() + 2); + wrapper.write(Type.BOOLEAN, false); + wrapper.write(Type.LONG_ARRAY_PRIMITIVE, new long[0]); + wrapper.write(Type.LONG_ARRAY_PRIMITIVE, new long[0]); + wrapper.write(Type.LONG_ARRAY_PRIMITIVE, emptyLightMask.toLongArray()); + wrapper.write(Type.LONG_ARRAY_PRIMITIVE, emptyLightMask.toLongArray()); + wrapper.write(Type.VAR_INT, 0); + wrapper.write(Type.VAR_INT, 0); + } else { + wrapper.write(Type.BOOLEAN, light.trustEdges()); + wrapper.write(Type.LONG_ARRAY_PRIMITIVE, light.skyLightMask()); + wrapper.write(Type.LONG_ARRAY_PRIMITIVE, light.blockLightMask()); + wrapper.write(Type.LONG_ARRAY_PRIMITIVE, light.emptySkyLightMask()); + wrapper.write(Type.LONG_ARRAY_PRIMITIVE, light.emptyBlockLightMask()); + wrapper.write(Type.VAR_INT, light.skyLight().length); + for (final byte[] skyLight : light.skyLight()) { + wrapper.write(Type.BYTE_ARRAY_PRIMITIVE, skyLight); + } + wrapper.write(Type.VAR_INT, light.blockLight().length); + for (final byte[] blockLight : light.blockLight()) { + wrapper.write(Type.BYTE_ARRAY_PRIMITIVE, blockLight); + } } }); - protocol.registerClientbound(ClientboundPackets1_17_1.CHUNK_DATA, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - final EntityTracker tracker = protocol.getEntityRewriter().tracker(wrapper.user()); - final Chunk oldChunk = wrapper.read(new Chunk1_17Type(tracker.currentWorldSectionHeight())); - - final List blockEntities = new ArrayList<>(oldChunk.getBlockEntities().size()); - for (final CompoundTag tag : oldChunk.getBlockEntities()) { - final NumberTag xTag = tag.get("x"); - final NumberTag yTag = tag.get("y"); - final NumberTag zTag = tag.get("z"); - final StringTag idTag = tag.get("id"); - if (xTag == null || yTag == null || zTag == null || idTag == null) { - continue; - } - - final String id = idTag.getValue(); - final int typeId = protocol.getMappingData().blockEntityIds().getInt(id.replace("minecraft:", "")); - if (typeId == -1) { - Via.getPlatform().getLogger().warning("Unknown block entity: " + id); - } - - handleSpawners(typeId, tag); - - final byte packedXZ = (byte) ((xTag.asInt() & 15) << 4 | (zTag.asInt() & 15)); - blockEntities.add(new BlockEntityImpl(packedXZ, yTag.asShort(), typeId, tag)); - } - - final int[] biomeData = oldChunk.getBiomeData(); - final ChunkSection[] sections = oldChunk.getSections(); - for (int i = 0; i < sections.length; i++) { - ChunkSection section = sections[i]; - if (section == null) { - // There's no section mask anymore - section = new ChunkSectionImpl(); - sections[i] = section; - section.setNonAirBlocksCount(0); - - final DataPaletteImpl blockPalette = new DataPaletteImpl(ChunkSection.SIZE); - blockPalette.addId(0); - section.addPalette(PaletteType.BLOCKS, blockPalette); - } - - // Fill biome palette - final DataPaletteImpl biomePalette = new DataPaletteImpl(ChunkSection.BIOME_SIZE); - section.addPalette(PaletteType.BIOMES, biomePalette); - - final int offset = i * ChunkSection.BIOME_SIZE; - for (int biomeIndex = 0, biomeArrayIndex = offset; biomeIndex < ChunkSection.BIOME_SIZE; biomeIndex++, biomeArrayIndex++) { - // Also catch invalid biomes with id -1 - final int biome = biomeData[biomeArrayIndex]; - biomePalette.setIdAt(biomeIndex, biome != -1 ? biome : 0); - } - } - - final Chunk chunk = new Chunk1_18(oldChunk.getX(), oldChunk.getZ(), sections, oldChunk.getHeightMap(), blockEntities); - wrapper.write(new Chunk1_18Type(tracker.currentWorldSectionHeight(), - MathUtil.ceilLog2(protocol.getMappingData().getBlockStateMappings().mappedSize()), - MathUtil.ceilLog2(tracker.biomesSent())), chunk); - - final ChunkLightStorage lightStorage = wrapper.user().get(ChunkLightStorage.class); - final boolean alreadyLoaded = !lightStorage.addLoadedChunk(chunk.getX(), chunk.getZ()); - - // Append light data to chunk packet - final ChunkLightStorage.ChunkLight light = Via.getConfig().cache1_17Light() ? - lightStorage.getLight(chunk.getX(), chunk.getZ()) : lightStorage.removeLight(chunk.getX(), chunk.getZ()); - if (light == null) { - Via.getPlatform().getLogger().warning("No light data found for chunk at " + chunk.getX() + ", " + chunk.getZ() + ". Chunk was already loaded: " + alreadyLoaded); - - final BitSet emptyLightMask = new BitSet(); - emptyLightMask.set(0, tracker.currentWorldSectionHeight() + 2); - wrapper.write(Type.BOOLEAN, false); - wrapper.write(Type.LONG_ARRAY_PRIMITIVE, new long[0]); - wrapper.write(Type.LONG_ARRAY_PRIMITIVE, new long[0]); - wrapper.write(Type.LONG_ARRAY_PRIMITIVE, emptyLightMask.toLongArray()); - wrapper.write(Type.LONG_ARRAY_PRIMITIVE, emptyLightMask.toLongArray()); - wrapper.write(Type.VAR_INT, 0); - wrapper.write(Type.VAR_INT, 0); - } else { - wrapper.write(Type.BOOLEAN, light.trustEdges()); - wrapper.write(Type.LONG_ARRAY_PRIMITIVE, light.skyLightMask()); - wrapper.write(Type.LONG_ARRAY_PRIMITIVE, light.blockLightMask()); - wrapper.write(Type.LONG_ARRAY_PRIMITIVE, light.emptySkyLightMask()); - wrapper.write(Type.LONG_ARRAY_PRIMITIVE, light.emptyBlockLightMask()); - wrapper.write(Type.VAR_INT, light.skyLight().length); - for (final byte[] skyLight : light.skyLight()) { - wrapper.write(Type.BYTE_ARRAY_PRIMITIVE, skyLight); - } - wrapper.write(Type.VAR_INT, light.blockLight().length); - for (final byte[] blockLight : light.blockLight()) { - wrapper.write(Type.BYTE_ARRAY_PRIMITIVE, blockLight); - } - } - }); - } - }); - - protocol.registerClientbound(ClientboundPackets1_17_1.UNLOAD_CHUNK, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - final int chunkX = wrapper.passthrough(Type.INT); - final int chunkZ = wrapper.passthrough(Type.INT); - wrapper.user().get(ChunkLightStorage.class).clear(chunkX, chunkZ); - }); - } + protocol.registerClientbound(ClientboundPackets1_17_1.UNLOAD_CHUNK, wrapper -> { + final int chunkX = wrapper.passthrough(Type.INT); + final int chunkZ = wrapper.passthrough(Type.INT); + wrapper.user().get(ChunkLightStorage.class).clear(chunkX, chunkZ); }); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/storage/ChunkLightStorage.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/storage/ChunkLightStorage.java index ed60d3949..53cc69641 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/storage/ChunkLightStorage.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/storage/ChunkLightStorage.java @@ -18,12 +18,11 @@ package com.viaversion.viaversion.protocols.protocol1_18to1_17_1.storage; import com.viaversion.viaversion.api.connection.StorableObject; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; +import org.checkerframework.checker.nullness.qual.Nullable; public final class ChunkLightStorage implements StorableObject { diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/types/Chunk1_18Type.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/types/Chunk1_18Type.java index 31692f182..f7bdbe39c 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/types/Chunk1_18Type.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_18to1_17_1/types/Chunk1_18Type.java @@ -28,7 +28,6 @@ import com.viaversion.viaversion.api.type.types.minecraft.BaseChunkType; import com.viaversion.viaversion.api.type.types.version.ChunkSectionType1_18; import com.viaversion.viaversion.api.type.types.version.Types1_18; import io.netty.buffer.ByteBuf; - import java.util.ArrayList; import java.util.List; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_1to1_19/Protocol1_19_1To1_19.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_1to1_19/Protocol1_19_1To1_19.java index 22cae62dd..594456242 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_1to1_19/Protocol1_19_1To1_19.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_1to1_19/Protocol1_19_1To1_19.java @@ -46,11 +46,10 @@ import com.viaversion.viaversion.protocols.protocol1_19_1to1_19.storage.NonceSto import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.ClientboundPackets1_19; import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.ServerboundPackets1_19; import com.viaversion.viaversion.util.CipherUtil; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.io.IOException; import java.util.ArrayList; import java.util.List; +import org.checkerframework.checker.nullness.qual.Nullable; public final class Protocol1_19_1To1_19 extends AbstractProtocol { diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_1to1_19/storage/NonceStorage.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_1to1_19/storage/NonceStorage.java index 6cf16d7dd..a2fe1c6f3 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_1to1_19/storage/NonceStorage.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_1to1_19/storage/NonceStorage.java @@ -24,7 +24,7 @@ public final class NonceStorage implements StorableObject { private final byte[] nonce; - public NonceStorage(final byte @Nullable[] nonce) { + public NonceStorage(final byte @Nullable [] nonce) { this.nonce = nonce; } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/Protocol1_19_3To1_19_1.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/Protocol1_19_3To1_19_1.java index 155d14713..b0d5f1c5d 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/Protocol1_19_3To1_19_1.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/Protocol1_19_3To1_19_1.java @@ -103,15 +103,10 @@ public final class Protocol1_19_3To1_19_1 extends AbstractProtocol { - wrapper.write(Type.VAR_INT, 0); - wrapper.passthrough(Type.STRING); // Sound identifier - wrapper.write(Type.OPTIONAL_FLOAT, null); // No fixed range - }); - } + registerClientbound(ClientboundPackets1_19_1.NAMED_SOUND, ClientboundPackets1_19_3.SOUND, wrapper -> { + wrapper.write(Type.VAR_INT, 0); + wrapper.passthrough(Type.STRING); // Sound identifier + wrapper.write(Type.OPTIONAL_FLOAT, null); // No fixed range }); new StatisticsRewriter<>(this).register(ClientboundPackets1_19_1.STATISTICS); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/packets/EntityPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/packets/EntityPackets.java index 211075b66..0c8429790 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/packets/EntityPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/packets/EntityPackets.java @@ -30,7 +30,6 @@ import com.viaversion.viaversion.protocols.protocol1_19_1to1_19.ClientboundPacke import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.ClientboundPackets1_19_3; import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.Protocol1_19_3To1_19_1; import com.viaversion.viaversion.rewriter.EntityRewriter; - import java.util.BitSet; import java.util.UUID; @@ -94,63 +93,58 @@ public final class EntityPackets extends EntityRewriter { - final int action = wrapper.read(Type.VAR_INT); - if (action == 4) { // Remove player - // Write into new packet type - final int entries = wrapper.read(Type.VAR_INT); - final UUID[] uuidsToRemove = new UUID[entries]; - for (int i = 0; i < entries; i++) { - uuidsToRemove[i] = wrapper.read(Type.UUID); - } - wrapper.write(Type.UUID_ARRAY, uuidsToRemove); - wrapper.setPacketType(ClientboundPackets1_19_3.PLAYER_INFO_REMOVE); - return; + protocol.registerClientbound(ClientboundPackets1_19_1.PLAYER_INFO, ClientboundPackets1_19_3.PLAYER_INFO_UPDATE, wrapper -> { + final int action = wrapper.read(Type.VAR_INT); + if (action == 4) { // Remove player + // Write into new packet type + final int entries = wrapper.read(Type.VAR_INT); + final UUID[] uuidsToRemove = new UUID[entries]; + for (int i = 0; i < entries; i++) { + uuidsToRemove[i] = wrapper.read(Type.UUID); + } + wrapper.write(Type.UUID_ARRAY, uuidsToRemove); + wrapper.setPacketType(ClientboundPackets1_19_3.PLAYER_INFO_REMOVE); + return; + } + + final BitSet set = new BitSet(6); + if (action == 0) { + // Includes add player, profile key, gamemode, listed status, latency, and display name + set.set(0, 6); + } else { + // Update listed added at 3, initialize chat added at index 1 + set.set(action == 1 ? action + 1 : action + 2); + } + + wrapper.write(PROFILE_ACTIONS_ENUM_TYPE, set); + final int entries = wrapper.passthrough(Type.VAR_INT); + for (int i = 0; i < entries; i++) { + wrapper.passthrough(Type.UUID); // UUID + if (action == 0) { // Add player + wrapper.passthrough(Type.STRING); // Player Name + + final int properties = wrapper.passthrough(Type.VAR_INT); + for (int j = 0; j < properties; j++) { + wrapper.passthrough(Type.STRING); // Name + wrapper.passthrough(Type.STRING); // Value + wrapper.passthrough(Type.OPTIONAL_STRING); // Signature } - final BitSet set = new BitSet(6); - if (action == 0) { - // Includes add player, profile key, gamemode, listed status, latency, and display name - set.set(0, 6); - } else { - // Update listed added at 3, initialize chat added at index 1 - set.set(action == 1 ? action + 1 : action + 2); - } + final int gamemode = wrapper.read(Type.VAR_INT); + final int ping = wrapper.read(Type.VAR_INT); + final JsonElement displayName = wrapper.read(Type.OPTIONAL_COMPONENT); + wrapper.read(Type.OPTIONAL_PROFILE_KEY); - wrapper.write(PROFILE_ACTIONS_ENUM_TYPE, set); - final int entries = wrapper.passthrough(Type.VAR_INT); - for (int i = 0; i < entries; i++) { - wrapper.passthrough(Type.UUID); // UUID - if (action == 0) { // Add player - wrapper.passthrough(Type.STRING); // Player Name - - final int properties = wrapper.passthrough(Type.VAR_INT); - for (int j = 0; j < properties; j++) { - wrapper.passthrough(Type.STRING); // Name - wrapper.passthrough(Type.STRING); // Value - wrapper.passthrough(Type.OPTIONAL_STRING); // Signature - } - - final int gamemode = wrapper.read(Type.VAR_INT); - final int ping = wrapper.read(Type.VAR_INT); - final JsonElement displayName = wrapper.read(Type.OPTIONAL_COMPONENT); - wrapper.read(Type.OPTIONAL_PROFILE_KEY); - - wrapper.write(Type.BOOLEAN, false); // No chat session data - wrapper.write(Type.VAR_INT, gamemode); - wrapper.write(Type.BOOLEAN, true); // Also update listed - wrapper.write(Type.VAR_INT, ping); - wrapper.write(Type.OPTIONAL_COMPONENT, displayName); - } else if (action == 1 || action == 2) { // Update gamemode/update latency - wrapper.passthrough(Type.VAR_INT); - } else if (action == 3) { // Update display name - wrapper.passthrough(Type.OPTIONAL_COMPONENT); - } - } - }); + wrapper.write(Type.BOOLEAN, false); // No chat session data + wrapper.write(Type.VAR_INT, gamemode); + wrapper.write(Type.BOOLEAN, true); // Also update listed + wrapper.write(Type.VAR_INT, ping); + wrapper.write(Type.OPTIONAL_COMPONENT, displayName); + } else if (action == 1 || action == 2) { // Update gamemode/update latency + wrapper.passthrough(Type.VAR_INT); + } else if (action == 3) { // Update display name + wrapper.passthrough(Type.OPTIONAL_COMPONENT); + } } }); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/packets/InventoryPackets.java index f6d2d43b4..bad446d15 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/packets/InventoryPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/packets/InventoryPackets.java @@ -58,76 +58,71 @@ public final class InventoryPackets extends ItemRewriter recipeRewriter = new RecipeRewriter1_16<>(protocol); - protocol.registerClientbound(ClientboundPackets1_19_1.DECLARE_RECIPES, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - final int size = wrapper.passthrough(Type.VAR_INT); - for (int i = 0; i < size; i++) { - final String type = wrapper.passthrough(Type.STRING).replace("minecraft:", ""); - wrapper.passthrough(Type.STRING); // Recipe Identifier - switch (type) { - case "crafting_shapeless": { - wrapper.passthrough(Type.STRING); // Group - wrapper.write(Type.VAR_INT, MISC_CRAFTING_BOOK_CATEGORY); - final int ingredients = wrapper.passthrough(Type.VAR_INT); - for (int j = 0; j < ingredients; j++) { - final Item[] items = wrapper.passthrough(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT); // Ingredients - for (final Item item : items) { - handleItemToClient(item); - } - } - handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Result - break; + protocol.registerClientbound(ClientboundPackets1_19_1.DECLARE_RECIPES, wrapper -> { + final int size = wrapper.passthrough(Type.VAR_INT); + for (int i = 0; i < size; i++) { + final String type = wrapper.passthrough(Type.STRING).replace("minecraft:", ""); + wrapper.passthrough(Type.STRING); // Recipe Identifier + switch (type) { + case "crafting_shapeless": { + wrapper.passthrough(Type.STRING); // Group + wrapper.write(Type.VAR_INT, MISC_CRAFTING_BOOK_CATEGORY); + final int ingredients = wrapper.passthrough(Type.VAR_INT); + for (int j = 0; j < ingredients; j++) { + final Item[] items = wrapper.passthrough(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT); // Ingredients + for (final Item item : items) { + handleItemToClient(item); } - case "crafting_shaped": { - final int ingredients = wrapper.passthrough(Type.VAR_INT) * wrapper.passthrough(Type.VAR_INT); - wrapper.passthrough(Type.STRING); // Group - wrapper.write(Type.VAR_INT, MISC_CRAFTING_BOOK_CATEGORY); - for (int j = 0; j < ingredients; j++) { - final Item[] items = wrapper.passthrough(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT); // Ingredients - for (final Item item : items) { - handleItemToClient(item); - } - } - handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Result - break; - } - case "smelting": - case "campfire_cooking": - case "blasting": - case "smoking": - wrapper.passthrough(Type.STRING); // Group - wrapper.write(Type.VAR_INT, MISC_CRAFTING_BOOK_CATEGORY); - final Item[] items = wrapper.passthrough(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT); // Ingredients - for (final Item item : items) { - handleItemToClient(item); - } - handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Result - wrapper.passthrough(Type.FLOAT); // EXP - wrapper.passthrough(Type.VAR_INT); // Cooking time - break; - case "crafting_special_armordye": - case "crafting_special_bookcloning": - case "crafting_special_mapcloning": - case "crafting_special_mapextending": - case "crafting_special_firework_rocket": - case "crafting_special_firework_star": - case "crafting_special_firework_star_fade": - case "crafting_special_tippedarrow": - case "crafting_special_bannerduplicate": - case "crafting_special_shielddecoration": - case "crafting_special_shulkerboxcoloring": - case "crafting_special_suspiciousstew": - case "crafting_special_repairitem": - wrapper.write(Type.VAR_INT, MISC_CRAFTING_BOOK_CATEGORY); - break; - default: - recipeRewriter.handleRecipeType(wrapper, type); - break; } + handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Result + break; } - }); + case "crafting_shaped": { + final int ingredients = wrapper.passthrough(Type.VAR_INT) * wrapper.passthrough(Type.VAR_INT); + wrapper.passthrough(Type.STRING); // Group + wrapper.write(Type.VAR_INT, MISC_CRAFTING_BOOK_CATEGORY); + for (int j = 0; j < ingredients; j++) { + final Item[] items = wrapper.passthrough(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT); // Ingredients + for (final Item item : items) { + handleItemToClient(item); + } + } + handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Result + break; + } + case "smelting": + case "campfire_cooking": + case "blasting": + case "smoking": + wrapper.passthrough(Type.STRING); // Group + wrapper.write(Type.VAR_INT, MISC_CRAFTING_BOOK_CATEGORY); + final Item[] items = wrapper.passthrough(Type.FLAT_VAR_INT_ITEM_ARRAY_VAR_INT); // Ingredients + for (final Item item : items) { + handleItemToClient(item); + } + handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Result + wrapper.passthrough(Type.FLOAT); // EXP + wrapper.passthrough(Type.VAR_INT); // Cooking time + break; + case "crafting_special_armordye": + case "crafting_special_bookcloning": + case "crafting_special_mapcloning": + case "crafting_special_mapextending": + case "crafting_special_firework_rocket": + case "crafting_special_firework_star": + case "crafting_special_firework_star_fade": + case "crafting_special_tippedarrow": + case "crafting_special_bannerduplicate": + case "crafting_special_shielddecoration": + case "crafting_special_shulkerboxcoloring": + case "crafting_special_suspiciousstew": + case "crafting_special_repairitem": + wrapper.write(Type.VAR_INT, MISC_CRAFTING_BOOK_CATEGORY); + break; + default: + recipeRewriter.handleRecipeType(wrapper, type); + break; + } } }); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/storage/ReceivedMessagesStorage.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/storage/ReceivedMessagesStorage.java index 2b166c695..f86ea2f70 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/storage/ReceivedMessagesStorage.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_3to1_19_1/storage/ReceivedMessagesStorage.java @@ -19,7 +19,6 @@ package com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.storage; import com.viaversion.viaversion.api.connection.StorableObject; import com.viaversion.viaversion.api.minecraft.PlayerMessageSignature; - import java.util.Arrays; public final class ReceivedMessagesStorage implements StorableObject { diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_4to1_19_3/packets/EntityPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_4to1_19_3/packets/EntityPackets.java index 4529e9946..186656b38 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_4to1_19_3/packets/EntityPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_4to1_19_3/packets/EntityPackets.java @@ -98,28 +98,23 @@ public final class EntityPackets extends EntityRewriter { - final int entityId = wrapper.read(Type.INT); - final byte event = wrapper.read(Type.BYTE); + protocol.registerClientbound(ClientboundPackets1_19_3.ENTITY_STATUS, wrapper -> { + final int entityId = wrapper.read(Type.INT); + final byte event = wrapper.read(Type.BYTE); - final int damageType = damageTypeFromEntityEvent(event); - if (damageType != -1) { - wrapper.setPacketType(ClientboundPackets1_19_4.DAMAGE_EVENT); - wrapper.write(Type.VAR_INT, entityId); - wrapper.write(Type.VAR_INT, damageType); - wrapper.write(Type.VAR_INT, 0); // No source entity - wrapper.write(Type.VAR_INT, 0); // No direct source entity - wrapper.write(Type.BOOLEAN, false); // No source position - return; - } - - wrapper.write(Type.INT, entityId); - wrapper.write(Type.BYTE, event); - }); + final int damageType = damageTypeFromEntityEvent(event); + if (damageType != -1) { + wrapper.setPacketType(ClientboundPackets1_19_4.DAMAGE_EVENT); + wrapper.write(Type.VAR_INT, entityId); + wrapper.write(Type.VAR_INT, damageType); + wrapper.write(Type.VAR_INT, 0); // No source entity + wrapper.write(Type.VAR_INT, 0); // No direct source entity + wrapper.write(Type.BOOLEAN, false); // No source position + return; } + + wrapper.write(Type.INT, entityId); + wrapper.write(Type.BYTE, event); }); registerTrackerWithData1_19(ClientboundPackets1_19_3.SPAWN_ENTITY, null); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/Protocol1_19To1_18_2.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/Protocol1_19To1_18_2.java index db950b1ca..2b0fec81d 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/Protocol1_19To1_18_2.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/Protocol1_19To1_18_2.java @@ -127,56 +127,41 @@ public final class Protocol1_19To1_18_2 extends AbstractProtocol commandRewriter = new CommandRewriter<>(this); - registerClientbound(ClientboundPackets1_18.DECLARE_COMMANDS, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - final int size = wrapper.passthrough(Type.VAR_INT); - for (int i = 0; i < size; i++) { - final byte flags = wrapper.passthrough(Type.BYTE); - wrapper.passthrough(Type.VAR_INT_ARRAY_PRIMITIVE); // Children indices - if ((flags & 0x08) != 0) { - wrapper.passthrough(Type.VAR_INT); // Redirect node index - } + registerClientbound(ClientboundPackets1_18.DECLARE_COMMANDS, wrapper -> { + final int size = wrapper.passthrough(Type.VAR_INT); + for (int i = 0; i < size; i++) { + final byte flags = wrapper.passthrough(Type.BYTE); + wrapper.passthrough(Type.VAR_INT_ARRAY_PRIMITIVE); // Children indices + if ((flags & 0x08) != 0) { + wrapper.passthrough(Type.VAR_INT); // Redirect node index + } - final int nodeType = flags & 0x03; - if (nodeType == 1 || nodeType == 2) { // Literal/argument node - wrapper.passthrough(Type.STRING); // Name - } + final int nodeType = flags & 0x03; + if (nodeType == 1 || nodeType == 2) { // Literal/argument node + wrapper.passthrough(Type.STRING); // Name + } - if (nodeType == 2) { // Argument node - final String argumentType = wrapper.read(Type.STRING); - final int argumentTypeId = MAPPINGS.getArgumentTypeMappings().mappedId(argumentType); - if (argumentTypeId == -1) { - Via.getPlatform().getLogger().warning("Unknown command argument type: " + argumentType); - } - - wrapper.write(Type.VAR_INT, argumentTypeId); - commandRewriter.handleArgument(wrapper, argumentType); - - if ((flags & 0x10) != 0) { - wrapper.passthrough(Type.STRING); // Suggestion type - } - } + if (nodeType == 2) { // Argument node + final String argumentType = wrapper.read(Type.STRING); + final int argumentTypeId = MAPPINGS.getArgumentTypeMappings().mappedId(argumentType); + if (argumentTypeId == -1) { + Via.getPlatform().getLogger().warning("Unknown command argument type: " + argumentType); } - wrapper.passthrough(Type.VAR_INT); // Root node index - }); + wrapper.write(Type.VAR_INT, argumentTypeId); + commandRewriter.handleArgument(wrapper, argumentType); + + if ((flags & 0x10) != 0) { + wrapper.passthrough(Type.STRING); // Suggestion type + } + } } + + wrapper.passthrough(Type.VAR_INT); // Root node index }); // Make every message a system message, including player ones; we don't want to analyze and remove player names from the original component diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/data/MappingData.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/data/MappingData.java index a37dbe637..d85982009 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/data/MappingData.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/data/MappingData.java @@ -27,9 +27,8 @@ import com.viaversion.viaversion.api.data.MappingDataLoader; import com.viaversion.viaversion.api.minecraft.nbt.BinaryTagIO; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.io.IOException; +import org.checkerframework.checker.nullness.qual.Nullable; public final class MappingData extends MappingDataBase { diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/packets/EntityPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/packets/EntityPackets.java index d4fc48c46..f9036a05a 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/packets/EntityPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/packets/EntityPackets.java @@ -42,7 +42,6 @@ import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.Protocol1_19To1_ import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.storage.DimensionRegistryStorage; import com.viaversion.viaversion.rewriter.EntityRewriter; import com.viaversion.viaversion.util.Pair; - import java.io.IOException; import java.util.ArrayList; import java.util.Comparator; @@ -266,47 +265,42 @@ public final class EntityPackets extends EntityRewriter { - final int action = wrapper.passthrough(Type.VAR_INT); - final int entries = wrapper.passthrough(Type.VAR_INT); - for (int i = 0; i < entries; i++) { - wrapper.passthrough(Type.UUID); // UUID - if (action == 0) { // Add player - wrapper.passthrough(Type.STRING); // Player Name + protocol.registerClientbound(ClientboundPackets1_18.PLAYER_INFO, wrapper -> { + final int action = wrapper.passthrough(Type.VAR_INT); + final int entries = wrapper.passthrough(Type.VAR_INT); + for (int i = 0; i < entries; i++) { + wrapper.passthrough(Type.UUID); // UUID + if (action == 0) { // Add player + wrapper.passthrough(Type.STRING); // Player Name - final int properties = wrapper.passthrough(Type.VAR_INT); - for (int j = 0; j < properties; j++) { - wrapper.passthrough(Type.STRING); // Name - wrapper.passthrough(Type.STRING); // Value - wrapper.passthrough(Type.OPTIONAL_STRING); // Signature - } - - wrapper.passthrough(Type.VAR_INT); // Gamemode - wrapper.passthrough(Type.VAR_INT); // Ping - final JsonElement displayName = wrapper.read(Type.OPTIONAL_COMPONENT); // Display name - if (!Protocol1_19To1_18_2.isTextComponentNull(displayName)) { - wrapper.write(Type.OPTIONAL_COMPONENT, displayName); - } else { - wrapper.write(Type.OPTIONAL_COMPONENT, null); - } - - // No public profile signature - wrapper.write(Type.OPTIONAL_PROFILE_KEY, null); - } else if (action == 1 || action == 2) { // Update gamemode/update latency - wrapper.passthrough(Type.VAR_INT); - } else if (action == 3) { // Update display name - final JsonElement displayName = wrapper.read(Type.OPTIONAL_COMPONENT); // Display name - if (!Protocol1_19To1_18_2.isTextComponentNull(displayName)) { - wrapper.write(Type.OPTIONAL_COMPONENT, displayName); - } else { - wrapper.write(Type.OPTIONAL_COMPONENT, null); - } - } + final int properties = wrapper.passthrough(Type.VAR_INT); + for (int j = 0; j < properties; j++) { + wrapper.passthrough(Type.STRING); // Name + wrapper.passthrough(Type.STRING); // Value + wrapper.passthrough(Type.OPTIONAL_STRING); // Signature } - }); + + wrapper.passthrough(Type.VAR_INT); // Gamemode + wrapper.passthrough(Type.VAR_INT); // Ping + final JsonElement displayName = wrapper.read(Type.OPTIONAL_COMPONENT); // Display name + if (!Protocol1_19To1_18_2.isTextComponentNull(displayName)) { + wrapper.write(Type.OPTIONAL_COMPONENT, displayName); + } else { + wrapper.write(Type.OPTIONAL_COMPONENT, null); + } + + // No public profile signature + wrapper.write(Type.OPTIONAL_PROFILE_KEY, null); + } else if (action == 1 || action == 2) { // Update gamemode/update latency + wrapper.passthrough(Type.VAR_INT); + } else if (action == 3) { // Update display name + final JsonElement displayName = wrapper.read(Type.OPTIONAL_COMPONENT); // Display name + if (!Protocol1_19To1_18_2.isTextComponentNull(displayName)) { + wrapper.write(Type.OPTIONAL_COMPONENT, displayName); + } else { + wrapper.write(Type.OPTIONAL_COMPONENT, null); + } + } } }); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/packets/WorldPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/packets/WorldPackets.java index a350f2cab..457ed00e6 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/packets/WorldPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/packets/WorldPackets.java @@ -23,7 +23,6 @@ import com.viaversion.viaversion.api.minecraft.chunks.Chunk; import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection; import com.viaversion.viaversion.api.minecraft.chunks.DataPalette; import com.viaversion.viaversion.api.minecraft.chunks.PaletteType; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.ClientboundPackets1_18; import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.types.Chunk1_18Type; @@ -43,46 +42,36 @@ public final class WorldPackets { protocol.cancelClientbound(ClientboundPackets1_18.ACKNOWLEDGE_PLAYER_DIGGING); - protocol.registerClientbound(ClientboundPackets1_18.CHUNK_DATA, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - final EntityTracker tracker = protocol.getEntityRewriter().tracker(wrapper.user()); - Preconditions.checkArgument(tracker.biomesSent() != 0, "Biome count not set"); - Preconditions.checkArgument(tracker.currentWorldSectionHeight() != 0, "Section height not set"); - final Chunk1_18Type chunkType = new Chunk1_18Type(tracker.currentWorldSectionHeight(), - MathUtil.ceilLog2(protocol.getMappingData().getBlockStateMappings().mappedSize()), - MathUtil.ceilLog2(tracker.biomesSent())); - final Chunk chunk = wrapper.passthrough(chunkType); - for (final ChunkSection section : chunk.getSections()) { - final DataPalette blockPalette = section.palette(PaletteType.BLOCKS); - for (int i = 0; i < blockPalette.size(); i++) { - final int id = blockPalette.idByIndex(i); - blockPalette.setIdByIndex(i, protocol.getMappingData().getNewBlockStateId(id)); - } - } - }); + protocol.registerClientbound(ClientboundPackets1_18.CHUNK_DATA, wrapper -> { + final EntityTracker tracker = protocol.getEntityRewriter().tracker(wrapper.user()); + Preconditions.checkArgument(tracker.biomesSent() != 0, "Biome count not set"); + Preconditions.checkArgument(tracker.currentWorldSectionHeight() != 0, "Section height not set"); + final Chunk1_18Type chunkType = new Chunk1_18Type(tracker.currentWorldSectionHeight(), + MathUtil.ceilLog2(protocol.getMappingData().getBlockStateMappings().mappedSize()), + MathUtil.ceilLog2(tracker.biomesSent())); + final Chunk chunk = wrapper.passthrough(chunkType); + for (final ChunkSection section : chunk.getSections()) { + final DataPalette blockPalette = section.palette(PaletteType.BLOCKS); + for (int i = 0; i < blockPalette.size(); i++) { + final int id = blockPalette.idByIndex(i); + blockPalette.setIdByIndex(i, protocol.getMappingData().getNewBlockStateId(id)); + } } }); - protocol.registerServerbound(ServerboundPackets1_19.SET_BEACON_EFFECT, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - // Primary effect - if (wrapper.read(Type.BOOLEAN)) { - wrapper.passthrough(Type.VAR_INT); - } else { - wrapper.write(Type.VAR_INT, -1); - } + protocol.registerServerbound(ServerboundPackets1_19.SET_BEACON_EFFECT, wrapper -> { + // Primary effect + if (wrapper.read(Type.BOOLEAN)) { + wrapper.passthrough(Type.VAR_INT); + } else { + wrapper.write(Type.VAR_INT, -1); + } - // Secondary effect - if (wrapper.read(Type.BOOLEAN)) { - wrapper.passthrough(Type.VAR_INT); - } else { - wrapper.write(Type.VAR_INT, -1); - } - }); + // Secondary effect + if (wrapper.read(Type.BOOLEAN)) { + wrapper.passthrough(Type.VAR_INT); + } else { + wrapper.write(Type.VAR_INT, -1); } }); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/storage/DimensionRegistryStorage.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/storage/DimensionRegistryStorage.java index 60522a131..cba230fc5 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/storage/DimensionRegistryStorage.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/storage/DimensionRegistryStorage.java @@ -19,9 +19,8 @@ package com.viaversion.viaversion.protocols.protocol1_19to1_18_2.storage; import com.github.steveice10.opennbt.tag.builtin.CompoundTag; import com.viaversion.viaversion.api.connection.StorableObject; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.Map; +import org.checkerframework.checker.nullness.qual.Nullable; public final class DimensionRegistryStorage implements StorableObject { diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1_2to1_9_3_4/Protocol1_9_1_2To1_9_3_4.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1_2to1_9_3_4/Protocol1_9_1_2To1_9_3_4.java index fe7c04170..b347fe0b5 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1_2to1_9_3_4/Protocol1_9_1_2To1_9_3_4.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1_2to1_9_3_4/Protocol1_9_1_2To1_9_3_4.java @@ -24,8 +24,6 @@ import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.Position; import com.viaversion.viaversion.api.minecraft.chunks.Chunk; import com.viaversion.viaversion.api.protocol.AbstractProtocol; -import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_9_1_2to1_9_3_4.chunks.BlockEntity; @@ -52,46 +50,35 @@ public class Protocol1_9_1_2To1_9_3_4 extends AbstractProtocol { + if (wrapper.get(Type.UNSIGNED_BYTE, 0) == 9) { + Position position = wrapper.get(Type.POSITION, 0); + CompoundTag tag = wrapper.get(Type.NBT, 0); - wrapper.clearPacket(); //Clear the packet + wrapper.clearPacket(); //Clear the packet - wrapper.setPacketType(ClientboundPackets1_9.UPDATE_SIGN); - wrapper.write(Type.POSITION, position); // Position - for (int i = 1; i < 5; i++) { - // Should technically be written as COMPONENT, but left as String for simplification/to remove redundant wrapping for VR - Tag textTag = tag.get("Text" + i); - String line = textTag instanceof StringTag ? ((StringTag) textTag).getValue() : ""; - wrapper.write(Type.STRING, line); // Sign line - } + wrapper.setPacketType(ClientboundPackets1_9.UPDATE_SIGN); + wrapper.write(Type.POSITION, position); // Position + for (int i = 1; i < 5; i++) { + // Should technically be written as COMPONENT, but left as String for simplification/to remove redundant wrapping for VR + Tag textTag = tag.get("Text" + i); + String line = textTag instanceof StringTag ? ((StringTag) textTag).getValue() : ""; + wrapper.write(Type.STRING, line); // Sign line } } }); } }); - registerClientbound(ClientboundPackets1_9_3.CHUNK_DATA, new PacketHandlers() { - @Override - public void register() { - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); + registerClientbound(ClientboundPackets1_9_3.CHUNK_DATA, wrapper -> { + ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); - Chunk1_9_3_4Type newType = new Chunk1_9_3_4Type(clientWorld); - Chunk1_9_1_2Type oldType = new Chunk1_9_1_2Type(clientWorld); // Get the old type to not write Block Entities + Chunk1_9_3_4Type newType = new Chunk1_9_3_4Type(clientWorld); + Chunk1_9_1_2Type oldType = new Chunk1_9_1_2Type(clientWorld); // Get the old type to not write Block Entities - Chunk chunk = wrapper.read(newType); - wrapper.write(oldType, chunk); - BlockEntity.handle(chunk.getBlockEntities(), wrapper.user()); - } - }); - } + Chunk chunk = wrapper.read(newType); + wrapper.write(oldType, chunk); + BlockEntity.handle(chunk.getBlockEntities(), wrapper.user()); }); registerClientbound(ClientboundPackets1_9_3.JOIN_GAME, new PacketHandlers() { @@ -101,14 +88,11 @@ public class Protocol1_9_1_2To1_9_3_4 extends AbstractProtocol { + ClientWorld clientChunks = wrapper.user().get(ClientWorld.class); - int dimensionId = wrapper.get(Type.INT, 1); - clientChunks.setEnvironment(dimensionId); - } + int dimensionId = wrapper.get(Type.INT, 1); + clientChunks.setEnvironment(dimensionId); }); } }); @@ -118,14 +102,11 @@ public class Protocol1_9_1_2To1_9_3_4 extends AbstractProtocol { + ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); - int dimensionId = wrapper.get(Type.INT, 0); - clientWorld.setEnvironment(dimensionId); - } + int dimensionId = wrapper.get(Type.INT, 0); + clientWorld.setEnvironment(dimensionId); }); } }); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1_2to1_9_3_4/chunks/BlockEntity.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1_2to1_9_3_4/chunks/BlockEntity.java index 0627b62a5..6c4b5715f 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1_2to1_9_3_4/chunks/BlockEntity.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1_2to1_9_3_4/chunks/BlockEntity.java @@ -26,7 +26,6 @@ import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_9_1_2to1_9_3_4.Protocol1_9_1_2To1_9_3_4; import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ClientboundPackets1_9_3; - import java.util.HashMap; import java.util.List; import java.util.Map; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1_2to1_9_3_4/types/Chunk1_9_3_4Type.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1_2to1_9_3_4/types/Chunk1_9_3_4Type.java index f3db90d9f..72b265046 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1_2to1_9_3_4/types/Chunk1_9_3_4Type.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1_2to1_9_3_4/types/Chunk1_9_3_4Type.java @@ -29,7 +29,6 @@ import com.viaversion.viaversion.api.type.types.minecraft.BaseChunkType; import com.viaversion.viaversion.api.type.types.version.Types1_9; import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; import io.netty.buffer.ByteBuf; - import java.util.ArrayList; import java.util.Arrays; import java.util.List; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1to1_9/Protocol1_9_1To1_9.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1to1_9/Protocol1_9_1To1_9.java index 6764169cb..d20287125 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1to1_9/Protocol1_9_1To1_9.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_1to1_9/Protocol1_9_1To1_9.java @@ -18,8 +18,6 @@ package com.viaversion.viaversion.protocols.protocol1_9_1to1_9; import com.viaversion.viaversion.api.protocol.AbstractProtocol; -import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_9to1_8.ClientboundPackets1_9; @@ -54,14 +52,11 @@ public class Protocol1_9_1To1_9 extends AbstractProtocol { + int sound = wrapper.get(Type.VAR_INT, 0); - if (sound >= 415) // Add 1 to every sound id since there is no Elytra sound on a 1.9 server - wrapper.set(Type.VAR_INT, 0, sound + 1); - } + if (sound >= 415) // Add 1 to every sound id since there is no Elytra sound on a 1.9 server + wrapper.set(Type.VAR_INT, 0, sound + 1); }); } }); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_3to1_9_1_2/Protocol1_9_3To1_9_1_2.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_3to1_9_1_2/Protocol1_9_3To1_9_1_2.java index b7a11e0d3..971c87e11 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_3to1_9_1_2/Protocol1_9_3To1_9_1_2.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_3to1_9_1_2/Protocol1_9_3To1_9_1_2.java @@ -29,7 +29,6 @@ import com.viaversion.viaversion.api.minecraft.chunks.DataPalette; import com.viaversion.viaversion.api.minecraft.chunks.PaletteType; import com.viaversion.viaversion.api.protocol.AbstractProtocol; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.protocol.remapper.ValueTransformer; import com.viaversion.viaversion.api.type.Type; @@ -39,7 +38,6 @@ import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.Client import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.types.Chunk1_9_1_2Type; import com.viaversion.viaversion.protocols.protocol1_9to1_8.ClientboundPackets1_9; import com.viaversion.viaversion.protocols.protocol1_9to1_8.ServerboundPackets1_9; - import java.util.List; public class Protocol1_9_3To1_9_1_2 extends AbstractProtocol { @@ -58,73 +56,57 @@ public class Protocol1_9_3To1_9_1_2 extends AbstractProtocol { + //read data + Position position = wrapper.read(Type.POSITION); + JsonElement[] lines = new JsonElement[4]; + for (int i = 0; i < 4; i++) { + lines[i] = wrapper.read(Type.COMPONENT); } + + wrapper.clearInputBuffer(); + + //write data + wrapper.setPacketType(ClientboundPackets1_9_3.BLOCK_ENTITY_DATA); + wrapper.write(Type.POSITION, position); //Block location + wrapper.write(Type.UNSIGNED_BYTE, (short) 9); //Action type (9 update sign) + + //Create nbt + CompoundTag tag = new CompoundTag(); + tag.put("id", new StringTag("Sign")); + tag.put("x", new IntTag(position.x())); + tag.put("y", new IntTag(position.y())); + tag.put("z", new IntTag(position.z())); + for (int i = 0; i < lines.length; i++) { + tag.put("Text" + (i + 1), new StringTag(lines[i].toString())); + } + + wrapper.write(Type.NBT, tag); }); - registerClientbound(ClientboundPackets1_9.CHUNK_DATA, new PacketHandlers() { - @Override - public void register() { - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); + registerClientbound(ClientboundPackets1_9.CHUNK_DATA, wrapper -> { + ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); - Chunk chunk = wrapper.read(new Chunk1_9_1_2Type(clientWorld)); - wrapper.write(new Chunk1_9_3_4Type(clientWorld), chunk); + Chunk chunk = wrapper.read(new Chunk1_9_1_2Type(clientWorld)); + wrapper.write(new Chunk1_9_3_4Type(clientWorld), chunk); - List tags = chunk.getBlockEntities(); - for (int s = 0; s < chunk.getSections().length; s++) { - ChunkSection section = chunk.getSections()[s]; - if (section == null) continue; - DataPalette blocks = section.palette(PaletteType.BLOCKS); + List tags = chunk.getBlockEntities(); + for (int s = 0; s < chunk.getSections().length; s++) { + ChunkSection section = chunk.getSections()[s]; + if (section == null) continue; + DataPalette blocks = section.palette(PaletteType.BLOCKS); - for (int idx = 0; idx < ChunkSection.SIZE; idx++) { - int id = blocks.idAt(idx) >> 4; - if (FakeTileEntity.isTileEntity(id)) { - tags.add(FakeTileEntity.createTileEntity( - ChunkSection.xFromIndex(idx) + (chunk.getX() << 4), - ChunkSection.yFromIndex(idx) + (s << 4), - ChunkSection.zFromIndex(idx) + (chunk.getZ() << 4), - id - )); - } - } - } + for (int idx = 0; idx < ChunkSection.SIZE; idx++) { + int id = blocks.idAt(idx) >> 4; + if (FakeTileEntity.isTileEntity(id)) { + tags.add(FakeTileEntity.createTileEntity( + ChunkSection.xFromIndex(idx) + (chunk.getX() << 4), + ChunkSection.yFromIndex(idx) + (s << 4), + ChunkSection.zFromIndex(idx) + (chunk.getZ() << 4), + id + )); } - }); + } } }); @@ -135,13 +117,10 @@ public class Protocol1_9_3To1_9_1_2 extends AbstractProtocol { + ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); + int dimensionId = wrapper.get(Type.INT, 1); + clientWorld.setEnvironment(dimensionId); }); } }); @@ -150,13 +129,10 @@ public class Protocol1_9_3To1_9_1_2 extends AbstractProtocol { + ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); + int dimensionId = wrapper.get(Type.INT, 0); + clientWorld.setEnvironment(dimensionId); }); } }); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_3to1_9_1_2/types/Chunk1_9_1_2Type.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_3to1_9_1_2/types/Chunk1_9_1_2Type.java index e583e8282..16693ed9b 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_3to1_9_1_2/types/Chunk1_9_1_2Type.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9_3to1_9_1_2/types/Chunk1_9_1_2Type.java @@ -17,7 +17,6 @@ */ package com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.types; -import com.github.steveice10.opennbt.tag.builtin.CompoundTag; import com.viaversion.viaversion.api.minecraft.Environment; import com.viaversion.viaversion.api.minecraft.chunks.BaseChunk; import com.viaversion.viaversion.api.minecraft.chunks.Chunk; @@ -28,7 +27,6 @@ import com.viaversion.viaversion.api.type.types.minecraft.BaseChunkType; import com.viaversion.viaversion.api.type.types.version.Types1_9; import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; import io.netty.buffer.ByteBuf; - import java.util.ArrayList; import java.util.BitSet; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/ItemRewriter.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/ItemRewriter.java index 7ab750152..44a644f55 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/ItemRewriter.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/ItemRewriter.java @@ -24,7 +24,6 @@ import com.github.steveice10.opennbt.tag.builtin.Tag; import com.viaversion.viaversion.api.minecraft.item.Item; import it.unimi.dsi.fastutil.ints.Int2IntMap; import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap; - import java.util.Collections; import java.util.HashMap; import java.util.Map; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/Protocol1_9To1_8.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/Protocol1_9To1_8.java index ca6360231..d0cad81fa 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/Protocol1_9To1_8.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/Protocol1_9To1_8.java @@ -26,7 +26,6 @@ import com.viaversion.viaversion.api.platform.providers.ViaProviders; import com.viaversion.viaversion.api.protocol.AbstractProtocol; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.packet.State; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.protocol.remapper.ValueTransformer; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_8.ClientboundPackets1_8; @@ -113,18 +112,13 @@ public class Protocol1_9To1_8 extends AbstractProtocol { - if (wrapper.isReadable(Type.COMPONENT, 0)) { - // Already written as json somewhere else - return; - } - - wrapper.write(Type.COMPONENT, fixJson(wrapper.read(Type.STRING))); - }); + registerClientbound(State.LOGIN, 0x00, 0x00, wrapper -> { + if (wrapper.isReadable(Type.COMPONENT, 0)) { + // Already written as json somewhere else + return; } + + wrapper.write(Type.COMPONENT, fixJson(wrapper.read(Type.STRING))); }); // Other Handlers diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/metadata/MetaIndex.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/metadata/MetaIndex.java index 4ddeffe0f..995733a45 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/metadata/MetaIndex.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/metadata/MetaIndex.java @@ -22,10 +22,9 @@ import com.viaversion.viaversion.api.minecraft.entities.EntityType; import com.viaversion.viaversion.api.minecraft.metadata.types.MetaType1_8; import com.viaversion.viaversion.api.minecraft.metadata.types.MetaType1_9; import com.viaversion.viaversion.util.Pair; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.HashMap; import java.util.Optional; +import org.checkerframework.checker.nullness.qual.Nullable; import static com.viaversion.viaversion.api.minecraft.entities.Entity1_10Types.EntityType.*; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/metadata/MetadataRewriter1_9To1_8.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/metadata/MetadataRewriter1_9To1_8.java index aeb2ceb9e..431355905 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/metadata/MetadataRewriter1_9To1_8.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/metadata/MetadataRewriter1_9To1_8.java @@ -30,7 +30,6 @@ import com.viaversion.viaversion.protocols.protocol1_8.ClientboundPackets1_8; import com.viaversion.viaversion.protocols.protocol1_9to1_8.ItemRewriter; import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8; import com.viaversion.viaversion.rewriter.EntityRewriter; - import java.util.List; import java.util.UUID; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/EntityPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/EntityPackets.java index e324c9ba7..892a8c2db 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/EntityPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/EntityPackets.java @@ -22,7 +22,6 @@ import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.minecraft.metadata.Metadata; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.protocol.remapper.ValueTransformer; import com.viaversion.viaversion.api.type.Type; @@ -37,7 +36,6 @@ import com.viaversion.viaversion.protocols.protocol1_9to1_8.metadata.MetadataRew import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.EntityTracker1_9; import com.viaversion.viaversion.util.Pair; import com.viaversion.viaversion.util.Triple; - import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -104,17 +102,14 @@ public class EntityPackets { map(Type.BOOLEAN); // 6 - On Ground - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int entityID = wrapper.get(Type.VAR_INT, 0); - if (Via.getConfig().isHologramPatch()) { - EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); - if (tracker.getKnownHolograms().contains(entityID)) { - Double newValue = wrapper.get(Type.DOUBLE, 1); - newValue += (Via.getConfig().getHologramYOffset()); - wrapper.set(Type.DOUBLE, 1, newValue); - } + handler(wrapper -> { + int entityID = wrapper.get(Type.VAR_INT, 0); + if (Via.getConfig().isHologramPatch()) { + EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); + if (tracker.getKnownHolograms().contains(entityID)) { + Double newValue = wrapper.get(Type.DOUBLE, 1); + newValue += (Via.getConfig().getHologramYOffset()); + wrapper.set(Type.DOUBLE, 1, newValue); } } }); @@ -171,29 +166,23 @@ public class EntityPackets { }); map(Type.ITEM); // 2 - Item // Item Rewriter - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - Item stack = wrapper.get(Type.ITEM, 0); - ItemRewriter.toClient(stack); - } + handler(wrapper -> { + Item stack = wrapper.get(Type.ITEM, 0); + ItemRewriter.toClient(stack); }); // Blocking - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - EntityTracker1_9 entityTracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); - int entityID = wrapper.get(Type.VAR_INT, 0); - Item stack = wrapper.get(Type.ITEM, 0); + handler(wrapper -> { + EntityTracker1_9 entityTracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); + int entityID = wrapper.get(Type.VAR_INT, 0); + Item stack = wrapper.get(Type.ITEM, 0); - if (stack != null) { - if (Protocol1_9To1_8.isSword(stack.identifier())) { - entityTracker.getValidBlocking().add(entityID); - return; - } + if (stack != null) { + if (Protocol1_9To1_8.isSword(stack.identifier())) { + entityTracker.getValidBlocking().add(entityID); + return; } - entityTracker.getValidBlocking().remove(entityID); } + entityTracker.getValidBlocking().remove(entityID); }); } }); @@ -203,41 +192,32 @@ public class EntityPackets { public void register() { map(Type.VAR_INT); // 0 - Entity ID map(Types1_8.METADATA_LIST, Types1_9.METADATA_LIST); // 1 - Metadata List - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0); - int entityId = wrapper.get(Type.VAR_INT, 0); - EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); - if (tracker.hasEntity(entityId)) { - protocol.get(MetadataRewriter1_9To1_8.class).handleMetadata(entityId, metadataList, wrapper.user()); - } else { - // Buffer - tracker.addMetadataToBuffer(entityId, metadataList); - wrapper.cancel(); - } + handler(wrapper -> { + List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0); + int entityId = wrapper.get(Type.VAR_INT, 0); + EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); + if (tracker.hasEntity(entityId)) { + protocol.get(MetadataRewriter1_9To1_8.class).handleMetadata(entityId, metadataList, wrapper.user()); + } else { + // Buffer + tracker.addMetadataToBuffer(entityId, metadataList); + wrapper.cancel(); } }); // Handler for meta data - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0); - int entityID = wrapper.get(Type.VAR_INT, 0); - EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); - tracker.handleMetadata(entityID, metadataList); - } + handler(wrapper -> { + List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0); + int entityID = wrapper.get(Type.VAR_INT, 0); + EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); + tracker.handleMetadata(entityID, metadataList); }); // Cancel packet if list empty - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0); - if (metadataList.isEmpty()) { - wrapper.cancel(); - } + handler(wrapper -> { + List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0); + if (metadataList.isEmpty()) { + wrapper.cancel(); } }); } @@ -250,14 +230,12 @@ public class EntityPackets { map(Type.BYTE); // 1 - Effect ID map(Type.BYTE); // 2 - Amplifier map(Type.VAR_INT); // 3 - Duration - handler(new PacketHandler() { //Handle effect indicator - @Override - public void handle(PacketWrapper wrapper) throws Exception { - boolean showParticles = wrapper.read(Type.BOOLEAN); //In 1.8 = true->Show particles : false->Hide particles - boolean newEffect = Via.getConfig().isNewEffectIndicator(); - //0: hide, 1: shown without indictator, 2: shown with indicator, 3: hide with beacon indicator but we don't use it. - wrapper.write(Type.BYTE, (byte) (showParticles ? newEffect ? 2 : 1 : 0)); - } + //Handle effect indicator + handler(wrapper -> { + boolean showParticles = wrapper.read(Type.BOOLEAN); //In 1.8 = true->Show particles : false->Hide particles + boolean newEffect = Via.getConfig().isNewEffectIndicator(); + //0: hide, 1: shown without indictator, 2: shown with indicator, 3: hide with beacon indicator but we don't use it. + wrapper.write(Type.BYTE, (byte) (showParticles ? newEffect ? 2 : 1 : 0)); }); } }); @@ -268,14 +246,11 @@ public class EntityPackets { @Override public void register() { map(Type.VAR_INT); //Event id - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - if (wrapper.get(Type.VAR_INT, 0) == 2) { // entity dead - wrapper.passthrough(Type.VAR_INT); //Player id - wrapper.passthrough(Type.INT); //Entity id - Protocol1_9To1_8.FIX_JSON.write(wrapper, wrapper.read(Type.STRING)); - } + handler(wrapper -> { + if (wrapper.get(Type.VAR_INT, 0) == 2) { // entity dead + wrapper.passthrough(Type.VAR_INT); //Player id + wrapper.passthrough(Type.INT); //Entity id + Protocol1_9To1_8.FIX_JSON.write(wrapper, wrapper.read(Type.STRING)); } }); } @@ -285,53 +260,50 @@ public class EntityPackets { @Override public void register() { map(Type.VAR_INT); - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - if (!Via.getConfig().isMinimizeCooldown()) return; + handler(wrapper -> { + if (!Via.getConfig().isMinimizeCooldown()) return; - EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); - if (wrapper.get(Type.VAR_INT, 0) != tracker.getProvidedEntityId()) { - return; - } - int propertiesToRead = wrapper.read(Type.INT); - Map>>> properties = new HashMap<>(propertiesToRead); - for (int i = 0; i < propertiesToRead; i++) { - String key = wrapper.read(Type.STRING); - Double value = wrapper.read(Type.DOUBLE); - int modifiersToRead = wrapper.read(Type.VAR_INT); - List> modifiers = new ArrayList<>(modifiersToRead); - for (int j = 0; j < modifiersToRead; j++) { - modifiers.add( - new Triple<>( - wrapper.read(Type.UUID), - wrapper.read(Type.DOUBLE), // Amount - wrapper.read(Type.BYTE) // Operation - ) - ); - } - properties.put(key, new Pair<>(value, modifiers)); + EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); + if (wrapper.get(Type.VAR_INT, 0) != tracker.getProvidedEntityId()) { + return; + } + int propertiesToRead = wrapper.read(Type.INT); + Map>>> properties = new HashMap<>(propertiesToRead); + for (int i = 0; i < propertiesToRead; i++) { + String key = wrapper.read(Type.STRING); + Double value = wrapper.read(Type.DOUBLE); + int modifiersToRead = wrapper.read(Type.VAR_INT); + List> modifiers = new ArrayList<>(modifiersToRead); + for (int j = 0; j < modifiersToRead; j++) { + modifiers.add( + new Triple<>( + wrapper.read(Type.UUID), + wrapper.read(Type.DOUBLE), // Amount + wrapper.read(Type.BYTE) // Operation + ) + ); } + properties.put(key, new Pair<>(value, modifiers)); + } - // == Why 15.9? == - // Higher values hides the cooldown but it bugs visual animation on hand - // when removing item from hand with inventory gui - properties.put("generic.attackSpeed", new Pair<>(15.9, ImmutableList.of( // Neutralize modifiers - new Triple<>(UUID.fromString("FA233E1C-4180-4865-B01B-BCCE9785ACA3"), 0.0, (byte) 0), // Tool and weapon modifier - new Triple<>(UUID.fromString("AF8B6E3F-3328-4C0A-AA36-5BA2BB9DBEF3"), 0.0, (byte) 2), // Dig speed - new Triple<>(UUID.fromString("55FCED67-E92A-486E-9800-B47F202C4386"), 0.0, (byte) 2) // Dig slow down - ))); + // == Why 15.9? == + // Higher values hides the cooldown but it bugs visual animation on hand + // when removing item from hand with inventory gui + properties.put("generic.attackSpeed", new Pair<>(15.9, ImmutableList.of( // Neutralize modifiers + new Triple<>(UUID.fromString("FA233E1C-4180-4865-B01B-BCCE9785ACA3"), 0.0, (byte) 0), // Tool and weapon modifier + new Triple<>(UUID.fromString("AF8B6E3F-3328-4C0A-AA36-5BA2BB9DBEF3"), 0.0, (byte) 2), // Dig speed + new Triple<>(UUID.fromString("55FCED67-E92A-486E-9800-B47F202C4386"), 0.0, (byte) 2) // Dig slow down + ))); - wrapper.write(Type.INT, properties.size()); - for (Map.Entry>>> entry : properties.entrySet()) { - wrapper.write(Type.STRING, entry.getKey()); // Key - wrapper.write(Type.DOUBLE, entry.getValue().key()); // Value - wrapper.write(Type.VAR_INT, entry.getValue().value().size()); - for (Triple modifier : entry.getValue().value()) { - wrapper.write(Type.UUID, modifier.first()); - wrapper.write(Type.DOUBLE, modifier.second()); // Amount - wrapper.write(Type.BYTE, modifier.third()); // Operation - } + wrapper.write(Type.INT, properties.size()); + for (Map.Entry>>> entry : properties.entrySet()) { + wrapper.write(Type.STRING, entry.getKey()); // Key + wrapper.write(Type.DOUBLE, entry.getValue().key()); // Value + wrapper.write(Type.VAR_INT, entry.getValue().value().size()); + for (Triple modifier : entry.getValue().value()) { + wrapper.write(Type.UUID, modifier.first()); + wrapper.write(Type.DOUBLE, modifier.second()); // Amount + wrapper.write(Type.BYTE, modifier.third()); // Operation } } }); @@ -343,12 +315,9 @@ public class EntityPackets { public void register() { map(Type.VAR_INT); // 0 - Entity ID map(Type.UNSIGNED_BYTE); // 1 - Animation - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - if (wrapper.get(Type.UNSIGNED_BYTE, 0) == 3) { - wrapper.cancel(); - } + handler(wrapper -> { + if (wrapper.get(Type.UNSIGNED_BYTE, 0) == 3) { + wrapper.cancel(); } }); } @@ -363,15 +332,12 @@ public class EntityPackets { map(Type.VAR_INT); // 0 - Player ID map(Type.VAR_INT); // 1 - Action map(Type.VAR_INT); // 2 - Jump - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int action = wrapper.get(Type.VAR_INT, 1); - if (action == 6 || action == 8) - wrapper.cancel(); - if (action == 7) { - wrapper.set(Type.VAR_INT, 1, 6); - } + handler(wrapper -> { + int action = wrapper.get(Type.VAR_INT, 1); + if (action == 6 || action == 8) + wrapper.cancel(); + if (action == 7) { + wrapper.set(Type.VAR_INT, 1, 6); } }); } @@ -385,21 +351,18 @@ public class EntityPackets { map(Type.VAR_INT); // 1 - Action Type // Cancel second hand to prevent double interact - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int type = wrapper.get(Type.VAR_INT, 1); - if (type == 2) { - wrapper.passthrough(Type.FLOAT); // 2 - X - wrapper.passthrough(Type.FLOAT); // 3 - Y - wrapper.passthrough(Type.FLOAT); // 4 - Z - } - if (type == 0 || type == 2) { - int hand = wrapper.read(Type.VAR_INT); // 2/5 - Hand + handler(wrapper -> { + int type = wrapper.get(Type.VAR_INT, 1); + if (type == 2) { + wrapper.passthrough(Type.FLOAT); // 2 - X + wrapper.passthrough(Type.FLOAT); // 3 - Y + wrapper.passthrough(Type.FLOAT); // 4 - Z + } + if (type == 0 || type == 2) { + int hand = wrapper.read(Type.VAR_INT); // 2/5 - Hand - if (hand == 1) - wrapper.cancel(); - } + if (hand == 1) + wrapper.cancel(); } }); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/InventoryPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/InventoryPackets.java index 55361ee62..bd6aa5437 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/InventoryPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/InventoryPackets.java @@ -19,7 +19,6 @@ package com.viaversion.viaversion.protocols.protocol1_9to1_8.packets; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.minecraft.item.Item; -import com.viaversion.viaversion.api.protocol.Protocol; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; @@ -43,31 +42,28 @@ public class InventoryPackets { map(Type.SHORT); // 1 - Property Key map(Type.SHORT); // 2 - Property Value - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - final short windowId = wrapper.get(Type.UNSIGNED_BYTE, 0); - final short property = wrapper.get(Type.SHORT, 0); - short value = wrapper.get(Type.SHORT, 1); - InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class); - if (inventoryTracker.getInventory() != null) { - if (inventoryTracker.getInventory().equalsIgnoreCase("minecraft:enchanting_table")) { - if (property > 3 && property < 7) { - // Send 2 properties, splitting it into enchantID & level - final short level = (short) (value >> 8); - final short enchantID = (short) (value & 0xFF); - wrapper.create(wrapper.getId(), new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - wrapper.write(Type.UNSIGNED_BYTE, windowId); - wrapper.write(Type.SHORT, property); - wrapper.write(Type.SHORT, enchantID); - } - }).scheduleSend(Protocol1_9To1_8.class); + handler(wrapper -> { + final short windowId = wrapper.get(Type.UNSIGNED_BYTE, 0); + final short property = wrapper.get(Type.SHORT, 0); + short value = wrapper.get(Type.SHORT, 1); + InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class); + if (inventoryTracker.getInventory() != null) { + if (inventoryTracker.getInventory().equalsIgnoreCase("minecraft:enchanting_table")) { + if (property > 3 && property < 7) { + // Send 2 properties, splitting it into enchantID & level + final short level = (short) (value >> 8); + final short enchantID = (short) (value & 0xFF); + wrapper.create(wrapper.getId(), new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + wrapper.write(Type.UNSIGNED_BYTE, windowId); + wrapper.write(Type.SHORT, property); + wrapper.write(Type.SHORT, enchantID); + } + }).scheduleSend(Protocol1_9To1_8.class); - wrapper.set(Type.SHORT, 0, (short) (property + 3)); - wrapper.set(Type.SHORT, 1, level); - } + wrapper.set(Type.SHORT, 0, (short) (property + 3)); + wrapper.set(Type.SHORT, 1, level); } } } @@ -84,22 +80,16 @@ public class InventoryPackets { map(Type.UNSIGNED_BYTE); // 3 - Slot Count // There is a horse parameter after this, we don't handle it and let it passthrough // Inventory tracking - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - String inventory = wrapper.get(Type.STRING, 0); - InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class); - inventoryTracker.setInventory(inventory); - } + handler(wrapper -> { + String inventory = wrapper.get(Type.STRING, 0); + InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class); + inventoryTracker.setInventory(inventory); }); // Brewing patch - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - String inventory = wrapper.get(Type.STRING, 0); - if (inventory.equals("minecraft:brewing_stand")) { - wrapper.set(Type.UNSIGNED_BYTE, 1, (short) (wrapper.get(Type.UNSIGNED_BYTE, 1) + 1)); - } + handler(wrapper -> { + String inventory = wrapper.get(Type.STRING, 0); + if (inventory.equals("minecraft:brewing_stand")) { + wrapper.set(Type.UNSIGNED_BYTE, 1, (short) (wrapper.get(Type.UNSIGNED_BYTE, 1) + 1)); } }); } @@ -110,44 +100,38 @@ public class InventoryPackets { map(Type.UNSIGNED_BYTE); // 0 - Window ID map(Type.SHORT); // 1 - Slot ID map(Type.ITEM); // 2 - Slot Value - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - Item stack = wrapper.get(Type.ITEM, 0); + handler(wrapper -> { + Item stack = wrapper.get(Type.ITEM, 0); - boolean showShieldWhenSwordInHand = Via.getConfig().isShowShieldWhenSwordInHand() - && Via.getConfig().isShieldBlocking(); + boolean showShieldWhenSwordInHand = Via.getConfig().isShowShieldWhenSwordInHand() + && Via.getConfig().isShieldBlocking(); - // Check if it is the inventory of the player - if (showShieldWhenSwordInHand) { - InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class); - EntityTracker1_9 entityTracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); - - short slotID = wrapper.get(Type.SHORT, 0); - byte windowId = wrapper.get(Type.UNSIGNED_BYTE, 0).byteValue(); - - // Store item in slot - inventoryTracker.setItemId(windowId, slotID, stack == null ? 0 : stack.identifier()); - - // Sync shield item in offhand with main hand - entityTracker.syncShieldWithSword(); - } - - ItemRewriter.toClient(stack); - } - }); - // Brewing patch - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { + // Check if it is the inventory of the player + if (showShieldWhenSwordInHand) { InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class); + EntityTracker1_9 entityTracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); short slotID = wrapper.get(Type.SHORT, 0); - if (inventoryTracker.getInventory() != null) { - if (inventoryTracker.getInventory().equals("minecraft:brewing_stand")) { - if (slotID >= 4) { - wrapper.set(Type.SHORT, 0, (short) (slotID + 1)); - } + byte windowId = wrapper.get(Type.UNSIGNED_BYTE, 0).byteValue(); + + // Store item in slot + inventoryTracker.setItemId(windowId, slotID, stack == null ? 0 : stack.identifier()); + + // Sync shield item in offhand with main hand + entityTracker.syncShieldWithSword(); + } + + ItemRewriter.toClient(stack); + }); + // Brewing patch + handler(wrapper -> { + InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class); + + short slotID = wrapper.get(Type.SHORT, 0); + if (inventoryTracker.getInventory() != null) { + if (inventoryTracker.getInventory().equals("minecraft:brewing_stand")) { + if (slotID >= 4) { + wrapper.set(Type.SHORT, 0, (short) (slotID + 1)); } } } @@ -161,55 +145,49 @@ public class InventoryPackets { map(Type.UNSIGNED_BYTE); // 0 - Window ID map(Type.ITEM_ARRAY); // 1 - Window Values - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - Item[] stacks = wrapper.get(Type.ITEM_ARRAY, 0); - Short windowId = wrapper.get(Type.UNSIGNED_BYTE, 0); + handler(wrapper -> { + Item[] stacks = wrapper.get(Type.ITEM_ARRAY, 0); + Short windowId = wrapper.get(Type.UNSIGNED_BYTE, 0); - InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class); - EntityTracker1_9 entityTracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); + InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class); + EntityTracker1_9 entityTracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); - boolean showShieldWhenSwordInHand = Via.getConfig().isShowShieldWhenSwordInHand() - && Via.getConfig().isShieldBlocking(); + boolean showShieldWhenSwordInHand = Via.getConfig().isShowShieldWhenSwordInHand() + && Via.getConfig().isShieldBlocking(); - for (short i = 0; i < stacks.length; i++) { - Item stack = stacks[i]; + for (short i = 0; i < stacks.length; i++) { + Item stack = stacks[i]; - // Store items in slots - if (showShieldWhenSwordInHand) { - inventoryTracker.setItemId(windowId, i, stack == null ? 0 : stack.identifier()); - } - - ItemRewriter.toClient(stack); - } - - // Sync shield item in offhand with main hand + // Store items in slots if (showShieldWhenSwordInHand) { - entityTracker.syncShieldWithSword(); + inventoryTracker.setItemId(windowId, i, stack == null ? 0 : stack.identifier()); } + + ItemRewriter.toClient(stack); + } + + // Sync shield item in offhand with main hand + if (showShieldWhenSwordInHand) { + entityTracker.syncShieldWithSword(); } }); // Brewing Patch - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class); - if (inventoryTracker.getInventory() != null) { - if (inventoryTracker.getInventory().equals("minecraft:brewing_stand")) { - Item[] oldStack = wrapper.get(Type.ITEM_ARRAY, 0); - Item[] newStack = new Item[oldStack.length + 1]; - for (int i = 0; i < newStack.length; i++) { - if (i > 4) { - newStack[i] = oldStack[i - 1]; - } else { - if (i != 4) { // Leave index 3 blank - newStack[i] = oldStack[i]; - } + handler(wrapper -> { + InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class); + if (inventoryTracker.getInventory() != null) { + if (inventoryTracker.getInventory().equals("minecraft:brewing_stand")) { + Item[] oldStack = wrapper.get(Type.ITEM_ARRAY, 0); + Item[] newStack = new Item[oldStack.length + 1]; + for (int i = 0; i < newStack.length; i++) { + if (i > 4) { + newStack[i] = oldStack[i - 1]; + } else { + if (i != 4) { // Leave index 3 blank + newStack[i] = oldStack[i]; } } - wrapper.set(Type.ITEM_ARRAY, 0, newStack); } + wrapper.set(Type.ITEM_ARRAY, 0, newStack); } } }); @@ -221,13 +199,10 @@ public class InventoryPackets { public void register() { map(Type.UNSIGNED_BYTE); // 0 - Window ID // Inventory tracking - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class); - inventoryTracker.setInventory(null); - inventoryTracker.resetInventory(wrapper.get(Type.UNSIGNED_BYTE, 0)); - } + handler(wrapper -> { + InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class); + inventoryTracker.setInventory(null); + inventoryTracker.resetInventory(wrapper.get(Type.UNSIGNED_BYTE, 0)); }); } }); @@ -238,11 +213,8 @@ public class InventoryPackets { public void register() { map(Type.VAR_INT); // 0 - Map ID map(Type.BYTE); // 1 - Map Scale - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) { - wrapper.write(Type.BOOLEAN, true); // 2 - Show marker - } + handler(wrapper -> { + wrapper.write(Type.BOOLEAN, true); // 2 - Show marker }); // Everything else is passed through } @@ -256,48 +228,42 @@ public class InventoryPackets { public void register() { map(Type.SHORT); // 0 - Slot ID map(Type.ITEM); // 1 - Item - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - Item stack = wrapper.get(Type.ITEM, 0); + handler(wrapper -> { + Item stack = wrapper.get(Type.ITEM, 0); - boolean showShieldWhenSwordInHand = Via.getConfig().isShowShieldWhenSwordInHand() - && Via.getConfig().isShieldBlocking(); + boolean showShieldWhenSwordInHand = Via.getConfig().isShowShieldWhenSwordInHand() + && Via.getConfig().isShieldBlocking(); - if (showShieldWhenSwordInHand) { - InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class); - EntityTracker1_9 entityTracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); - short slotID = wrapper.get(Type.SHORT, 0); + if (showShieldWhenSwordInHand) { + InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class); + EntityTracker1_9 entityTracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); + short slotID = wrapper.get(Type.SHORT, 0); - // Update item in slot - inventoryTracker.setItemId((short) 0, slotID, stack == null ? 0 : stack.identifier()); + // Update item in slot + inventoryTracker.setItemId((short) 0, slotID, stack == null ? 0 : stack.identifier()); - // Sync shield item in offhand with main hand - entityTracker.syncShieldWithSword(); - } - - ItemRewriter.toServer(stack); + // Sync shield item in offhand with main hand + entityTracker.syncShieldWithSword(); } + + ItemRewriter.toServer(stack); }); // Elytra throw patch - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - final short slot = wrapper.get(Type.SHORT, 0); - boolean throwItem = (slot == 45); - if (throwItem) { - // Send a packet wiping the slot - wrapper.create(ClientboundPackets1_9.SET_SLOT, new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - wrapper.write(Type.UNSIGNED_BYTE, (short) 0); - wrapper.write(Type.SHORT, slot); - wrapper.write(Type.ITEM, null); - } - }).send(Protocol1_9To1_8.class); - // Finally reset to simulate throwing item - wrapper.set(Type.SHORT, 0, (short) -999); // Set slot to -999 - } + handler(wrapper -> { + final short slot = wrapper.get(Type.SHORT, 0); + boolean throwItem = (slot == 45); + if (throwItem) { + // Send a packet wiping the slot + wrapper.create(ClientboundPackets1_9.SET_SLOT, new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + wrapper.write(Type.UNSIGNED_BYTE, (short) 0); + wrapper.write(Type.SHORT, slot); + wrapper.write(Type.ITEM, null); + } + }).send(Protocol1_9To1_8.class); + // Finally reset to simulate throwing item + wrapper.set(Type.SHORT, 0, (short) -999); // Set slot to -999 } }); } @@ -313,59 +279,53 @@ public class InventoryPackets { map(Type.SHORT); // 3 - Action map(Type.VAR_INT, Type.BYTE); // 4 - Mode map(Type.ITEM); // 5 - Clicked Item - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - Item stack = wrapper.get(Type.ITEM, 0); + handler(wrapper -> { + Item stack = wrapper.get(Type.ITEM, 0); - if (Via.getConfig().isShowShieldWhenSwordInHand()) { - Short windowId = wrapper.get(Type.UNSIGNED_BYTE, 0); - byte mode = wrapper.get(Type.BYTE, 1); - short hoverSlot = wrapper.get(Type.SHORT, 0); - byte button = wrapper.get(Type.BYTE, 0); + if (Via.getConfig().isShowShieldWhenSwordInHand()) { + Short windowId = wrapper.get(Type.UNSIGNED_BYTE, 0); + byte mode = wrapper.get(Type.BYTE, 1); + short hoverSlot = wrapper.get(Type.SHORT, 0); + byte button = wrapper.get(Type.BYTE, 0); - // Move items in inventory to track the sword location - InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class); - inventoryTracker.handleWindowClick(wrapper.user(), windowId, mode, hoverSlot, button); - } - - ItemRewriter.toServer(stack); + // Move items in inventory to track the sword location + InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class); + inventoryTracker.handleWindowClick(wrapper.user(), windowId, mode, hoverSlot, button); } + + ItemRewriter.toServer(stack); }); // Brewing patch and elytra throw patch - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - final short windowID = wrapper.get(Type.UNSIGNED_BYTE, 0); - final short slot = wrapper.get(Type.SHORT, 0); - boolean throwItem = (slot == 45 && windowID == 0); - InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class); - if (inventoryTracker.getInventory() != null) { - if (inventoryTracker.getInventory().equals("minecraft:brewing_stand")) { - if (slot == 4) { - throwItem = true; - } - if (slot > 4) { - wrapper.set(Type.SHORT, 0, (short) (slot - 1)); - } + handler(wrapper -> { + final short windowID = wrapper.get(Type.UNSIGNED_BYTE, 0); + final short slot = wrapper.get(Type.SHORT, 0); + boolean throwItem = (slot == 45 && windowID == 0); + InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class); + if (inventoryTracker.getInventory() != null) { + if (inventoryTracker.getInventory().equals("minecraft:brewing_stand")) { + if (slot == 4) { + throwItem = true; + } + if (slot > 4) { + wrapper.set(Type.SHORT, 0, (short) (slot - 1)); } } + } - if (throwItem) { - // Send a packet wiping the slot - wrapper.create(ClientboundPackets1_9.SET_SLOT, new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - wrapper.write(Type.UNSIGNED_BYTE, (short) windowID); - wrapper.write(Type.SHORT, slot); - wrapper.write(Type.ITEM, null); - } - }).scheduleSend(Protocol1_9To1_8.class); - // Finally reset to simulate throwing item - wrapper.set(Type.BYTE, 0, (byte) 0); // Set button to 0 - wrapper.set(Type.BYTE, 1, (byte) 0); // Set mode to 0 - wrapper.set(Type.SHORT, 0, (short) -999); // Set slot to -999 - } + if (throwItem) { + // Send a packet wiping the slot + wrapper.create(ClientboundPackets1_9.SET_SLOT, new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + wrapper.write(Type.UNSIGNED_BYTE, (short) windowID); + wrapper.write(Type.SHORT, slot); + wrapper.write(Type.ITEM, null); + } + }).scheduleSend(Protocol1_9To1_8.class); + // Finally reset to simulate throwing item + wrapper.set(Type.BYTE, 0, (byte) 0); // Set button to 0 + wrapper.set(Type.BYTE, 1, (byte) 0); // Set mode to 0 + wrapper.set(Type.SHORT, 0, (short) -999); // Set slot to -999 } }); } @@ -378,13 +338,10 @@ public class InventoryPackets { map(Type.UNSIGNED_BYTE); // 0 - Window ID // Inventory tracking - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class); - inventoryTracker.setInventory(null); - inventoryTracker.resetInventory(wrapper.get(Type.UNSIGNED_BYTE, 0)); - } + handler(wrapper -> { + InventoryTracker inventoryTracker = wrapper.user().get(InventoryTracker.class); + inventoryTracker.setInventory(null); + inventoryTracker.resetInventory(wrapper.get(Type.UNSIGNED_BYTE, 0)); }); } }); @@ -395,28 +352,25 @@ public class InventoryPackets { map(Type.SHORT); // 0 - Slot id // Blocking patch - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - boolean showShieldWhenSwordInHand = Via.getConfig().isShowShieldWhenSwordInHand() - && Via.getConfig().isShieldBlocking(); + handler(wrapper -> { + boolean showShieldWhenSwordInHand = Via.getConfig().isShowShieldWhenSwordInHand() + && Via.getConfig().isShieldBlocking(); - EntityTracker1_9 entityTracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); - if (entityTracker.isBlocking()) { - entityTracker.setBlocking(false); + EntityTracker1_9 entityTracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); + if (entityTracker.isBlocking()) { + entityTracker.setBlocking(false); - if (!showShieldWhenSwordInHand) { - entityTracker.setSecondHand(null); - } + if (!showShieldWhenSwordInHand) { + entityTracker.setSecondHand(null); } + } - if (showShieldWhenSwordInHand) { - // Update current held item slot index - entityTracker.setHeldItemSlot(wrapper.get(Type.SHORT, 0)); + if (showShieldWhenSwordInHand) { + // Update current held item slot index + entityTracker.setHeldItemSlot(wrapper.get(Type.SHORT, 0)); - // Sync shield item in offhand with main hand - entityTracker.syncShieldWithSword(); - } + // Sync shield item in offhand with main hand + entityTracker.syncShieldWithSword(); } }); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/PlayerPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/PlayerPackets.java index 35be68de7..d53ba81c8 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/PlayerPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/PlayerPackets.java @@ -21,8 +21,6 @@ import com.google.gson.JsonObject; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.minecraft.entities.Entity1_10Types; import com.viaversion.viaversion.api.minecraft.item.Item; -import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_8.ClientboundPackets1_8; @@ -311,13 +309,10 @@ public class PlayerPackets { map(Type.STRING); // 3 - Level Type // Track player's dimension - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); - int dimensionId = wrapper.get(Type.INT, 0); - clientWorld.setEnvironment(dimensionId); - } + handler(wrapper -> { + ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); + int dimensionId = wrapper.get(Type.INT, 0); + clientWorld.setEnvironment(dimensionId); }); handler(wrapper -> { @@ -358,16 +353,11 @@ public class PlayerPackets { }); /* Removed packets */ - protocol.registerClientbound(ClientboundPackets1_8.SET_COMPRESSION, null, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - wrapper.cancel(); - CompressionProvider provider = Via.getManager().getProviders().get(CompressionProvider.class); + protocol.registerClientbound(ClientboundPackets1_8.SET_COMPRESSION, null, wrapper -> { + wrapper.cancel(); + CompressionProvider provider = Via.getManager().getProviders().get(CompressionProvider.class); - provider.handlePlayCompression(wrapper.user(), wrapper.read(Type.VAR_INT)); - }); - } + provider.handlePlayCompression(wrapper.user(), wrapper.read(Type.VAR_INT)); }); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/SpawnPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/SpawnPackets.java index a02bef4cd..8da2a41db 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/SpawnPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/SpawnPackets.java @@ -25,7 +25,6 @@ import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.minecraft.metadata.Metadata; import com.viaversion.viaversion.api.minecraft.metadata.types.MetaType1_9; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.protocol.remapper.ValueTransformer; import com.viaversion.viaversion.api.type.Type; @@ -37,7 +36,6 @@ import com.viaversion.viaversion.protocols.protocol1_9to1_8.ItemRewriter; import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8; import com.viaversion.viaversion.protocols.protocol1_9to1_8.metadata.MetadataRewriter1_9To1_8; import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.EntityTracker1_9; - import java.util.ArrayList; import java.util.List; @@ -55,26 +53,20 @@ public class SpawnPackets { public void register() { map(Type.VAR_INT); // 0 - Entity ID - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int entityID = wrapper.get(Type.VAR_INT, 0); - EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); - wrapper.write(Type.UUID, tracker.getEntityUUID(entityID)); // 1 - UUID - } + handler(wrapper -> { + int entityID = wrapper.get(Type.VAR_INT, 0); + EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); + wrapper.write(Type.UUID, tracker.getEntityUUID(entityID)); // 1 - UUID }); map(Type.BYTE); // 2 - Type // Parse this info - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int entityID = wrapper.get(Type.VAR_INT, 0); - int typeID = wrapper.get(Type.BYTE, 0); - EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); - tracker.addEntity(entityID, Entity1_10Types.getTypeFromId(typeID, true)); - tracker.sendMetadataBuffer(entityID); - } + handler(wrapper -> { + int entityID = wrapper.get(Type.VAR_INT, 0); + int typeID = wrapper.get(Type.BYTE, 0); + EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); + tracker.addEntity(entityID, Entity1_10Types.getTypeFromId(typeID, true)); + tracker.sendMetadataBuffer(entityID); }); map(Type.INT, toNewDouble); // 3 - X - Needs to be divide by 32 @@ -87,52 +79,43 @@ public class SpawnPackets { map(Type.INT); // 8 - Data // Create last 3 shorts - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int data = wrapper.get(Type.INT, 0); // Data (1st Integer) + handler(wrapper -> { + int data = wrapper.get(Type.INT, 0); // Data (1st Integer) - short vX = 0, vY = 0, vZ = 0; - if (data > 0) { - vX = wrapper.read(Type.SHORT); - vY = wrapper.read(Type.SHORT); - vZ = wrapper.read(Type.SHORT); - } - - wrapper.write(Type.SHORT, vX); - wrapper.write(Type.SHORT, vY); - wrapper.write(Type.SHORT, vZ); + short vX = 0, vY = 0, vZ = 0; + if (data > 0) { + vX = wrapper.read(Type.SHORT); + vY = wrapper.read(Type.SHORT); + vZ = wrapper.read(Type.SHORT); } + + wrapper.write(Type.SHORT, vX); + wrapper.write(Type.SHORT, vY); + wrapper.write(Type.SHORT, vZ); }); // Handle potions - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - final int entityID = wrapper.get(Type.VAR_INT, 0); - final int data = wrapper.get(Type.INT, 0); // Data + handler(wrapper -> { + final int entityID = wrapper.get(Type.VAR_INT, 0); + final int data = wrapper.get(Type.INT, 0); // Data - int typeID = wrapper.get(Type.BYTE, 0); - if (Entity1_10Types.getTypeFromId(typeID, true) == Entity1_10Types.EntityType.SPLASH_POTION) { - // Convert this to meta data, woo! - PacketWrapper metaPacket = wrapper.create(ClientboundPackets1_9.ENTITY_METADATA, new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - wrapper.write(Type.VAR_INT, entityID); - List meta = new ArrayList<>(); - Item item = new DataItem(373, (byte) 1, (short) data, null); // Potion - ItemRewriter.toClient(item); // Rewrite so that it gets the right nbt - // TEMP FIX FOR POTIONS UNTIL WE FIGURE OUT HOW TO TRANSFORM SENT PACKETS - Metadata potion = new Metadata(5, MetaType1_9.Slot, item); - meta.add(potion); - wrapper.write(Types1_9.METADATA_LIST, meta); - } - }); - // Fix packet order - wrapper.send(Protocol1_9To1_8.class); - metaPacket.send(Protocol1_9To1_8.class); - wrapper.cancel(); - } + int typeID = wrapper.get(Type.BYTE, 0); + if (Entity1_10Types.getTypeFromId(typeID, true) == Entity1_10Types.EntityType.SPLASH_POTION) { + // Convert this to meta data, woo! + PacketWrapper metaPacket = wrapper.create(ClientboundPackets1_9.ENTITY_METADATA, wrapper1 -> { + wrapper1.write(Type.VAR_INT, entityID); + List meta = new ArrayList<>(); + Item item = new DataItem(373, (byte) 1, (short) data, null); // Potion + ItemRewriter.toClient(item); // Rewrite so that it gets the right nbt + // TEMP FIX FOR POTIONS UNTIL WE FIGURE OUT HOW TO TRANSFORM SENT PACKETS + Metadata potion = new Metadata(5, MetaType1_9.Slot, item); + meta.add(potion); + wrapper1.write(Types1_9.METADATA_LIST, meta); + }); + // Fix packet order + wrapper.send(Protocol1_9To1_8.class); + metaPacket.send(Protocol1_9To1_8.class); + wrapper.cancel(); } }); } @@ -144,14 +127,11 @@ public class SpawnPackets { map(Type.VAR_INT); // 0 - Entity ID // Parse this info - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int entityID = wrapper.get(Type.VAR_INT, 0); - EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); - tracker.addEntity(entityID, Entity1_10Types.EntityType.EXPERIENCE_ORB); - tracker.sendMetadataBuffer(entityID); - } + handler(wrapper -> { + int entityID = wrapper.get(Type.VAR_INT, 0); + EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); + tracker.addEntity(entityID, Entity1_10Types.EntityType.EXPERIENCE_ORB); + tracker.sendMetadataBuffer(entityID); }); map(Type.INT, toNewDouble); // 1 - X - Needs to be divide by 32 @@ -168,15 +148,12 @@ public class SpawnPackets { map(Type.VAR_INT); // 0 - Entity ID map(Type.BYTE); // 1 - Type // Parse this info - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - // Currently only lightning uses this - int entityID = wrapper.get(Type.VAR_INT, 0); - EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); - tracker.addEntity(entityID, Entity1_10Types.EntityType.LIGHTNING); - tracker.sendMetadataBuffer(entityID); - } + handler(wrapper -> { + // Currently only lightning uses this + int entityID = wrapper.get(Type.VAR_INT, 0); + EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); + tracker.addEntity(entityID, Entity1_10Types.EntityType.LIGHTNING); + tracker.sendMetadataBuffer(entityID); }); map(Type.INT, toNewDouble); // 2 - X - Needs to be divide by 32 @@ -190,26 +167,20 @@ public class SpawnPackets { public void register() { map(Type.VAR_INT); // 0 - Entity ID - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int entityID = wrapper.get(Type.VAR_INT, 0); - EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); - wrapper.write(Type.UUID, tracker.getEntityUUID(entityID)); // 1 - UUID - } + handler(wrapper -> { + int entityID = wrapper.get(Type.VAR_INT, 0); + EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); + wrapper.write(Type.UUID, tracker.getEntityUUID(entityID)); // 1 - UUID }); map(Type.UNSIGNED_BYTE); // 2 - Type // Parse this info - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int entityID = wrapper.get(Type.VAR_INT, 0); - int typeID = wrapper.get(Type.UNSIGNED_BYTE, 0); - EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); - tracker.addEntity(entityID, Entity1_10Types.getTypeFromId(typeID, false)); - tracker.sendMetadataBuffer(entityID); - } + handler(wrapper -> { + int entityID = wrapper.get(Type.VAR_INT, 0); + int typeID = wrapper.get(Type.UNSIGNED_BYTE, 0); + EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); + tracker.addEntity(entityID, Entity1_10Types.getTypeFromId(typeID, false)); + tracker.sendMetadataBuffer(entityID); }); map(Type.INT, toNewDouble); // 3 - X - Needs to be divide by 32 @@ -225,29 +196,23 @@ public class SpawnPackets { map(Type.SHORT); // 11 - Velocity Z map(Types1_8.METADATA_LIST, Types1_9.METADATA_LIST); - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0); - int entityId = wrapper.get(Type.VAR_INT, 0); - EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); - if (tracker.hasEntity(entityId)) { - protocol.get(MetadataRewriter1_9To1_8.class).handleMetadata(entityId, metadataList, wrapper.user()); - } else { - Via.getPlatform().getLogger().warning("Unable to find entity for metadata, entity ID: " + entityId); - metadataList.clear(); - } + handler(wrapper -> { + List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0); + int entityId = wrapper.get(Type.VAR_INT, 0); + EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); + if (tracker.hasEntity(entityId)) { + protocol.get(MetadataRewriter1_9To1_8.class).handleMetadata(entityId, metadataList, wrapper.user()); + } else { + Via.getPlatform().getLogger().warning("Unable to find entity for metadata, entity ID: " + entityId); + metadataList.clear(); } }); // Handler for meta data - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0); - int entityID = wrapper.get(Type.VAR_INT, 0); - EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); - tracker.handleMetadata(entityID, metadataList); - } + handler(wrapper -> { + List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0); + int entityID = wrapper.get(Type.VAR_INT, 0); + EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); + tracker.handleMetadata(entityID, metadataList); }); } }); @@ -258,22 +223,16 @@ public class SpawnPackets { map(Type.VAR_INT); // 0 - Entity ID // Parse this info - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int entityID = wrapper.get(Type.VAR_INT, 0); - EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); - tracker.addEntity(entityID, Entity1_10Types.EntityType.PAINTING); - tracker.sendMetadataBuffer(entityID); - } + handler(wrapper -> { + int entityID = wrapper.get(Type.VAR_INT, 0); + EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); + tracker.addEntity(entityID, Entity1_10Types.EntityType.PAINTING); + tracker.sendMetadataBuffer(entityID); }); - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int entityID = wrapper.get(Type.VAR_INT, 0); - EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); - wrapper.write(Type.UUID, tracker.getEntityUUID(entityID)); // 1 - UUID - } + handler(wrapper -> { + int entityID = wrapper.get(Type.VAR_INT, 0); + EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); + wrapper.write(Type.UUID, tracker.getEntityUUID(entityID)); // 1 - UUID }); map(Type.STRING); // 2 - Title @@ -289,14 +248,11 @@ public class SpawnPackets { map(Type.UUID); // 1 - Player UUID // Parse this info - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int entityID = wrapper.get(Type.VAR_INT, 0); - EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); - tracker.addEntity(entityID, Entity1_10Types.EntityType.PLAYER); - tracker.sendMetadataBuffer(entityID); - } + handler(wrapper -> { + int entityID = wrapper.get(Type.VAR_INT, 0); + EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); + tracker.addEntity(entityID, Entity1_10Types.EntityType.PLAYER); + tracker.sendMetadataBuffer(entityID); }); map(Type.INT, toNewDouble); // 2 - X - Needs to be divide by 32 @@ -306,50 +262,42 @@ public class SpawnPackets { map(Type.BYTE); // 5 - Yaw map(Type.BYTE); // 6 - Pitch - handler(new PacketHandler() { //Handle discontinued player hand item - @Override - public void handle(PacketWrapper wrapper) throws Exception { - short item = wrapper.read(Type.SHORT); - if (item != 0) { - PacketWrapper packet = PacketWrapper.create(ClientboundPackets1_9.ENTITY_EQUIPMENT, null, wrapper.user()); - packet.write(Type.VAR_INT, wrapper.get(Type.VAR_INT, 0)); - packet.write(Type.VAR_INT, 0); - packet.write(Type.ITEM, new DataItem(item, (byte) 1, (short) 0, null)); - try { - packet.send(Protocol1_9To1_8.class); - } catch (Exception e) { - e.printStackTrace(); - } + //Handle discontinued player hand item + handler(wrapper -> { + short item = wrapper.read(Type.SHORT); + if (item != 0) { + PacketWrapper packet = PacketWrapper.create(ClientboundPackets1_9.ENTITY_EQUIPMENT, null, wrapper.user()); + packet.write(Type.VAR_INT, wrapper.get(Type.VAR_INT, 0)); + packet.write(Type.VAR_INT, 0); + packet.write(Type.ITEM, new DataItem(item, (byte) 1, (short) 0, null)); + try { + packet.send(Protocol1_9To1_8.class); + } catch (Exception e) { + e.printStackTrace(); } } }); map(Types1_8.METADATA_LIST, Types1_9.METADATA_LIST); - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0); - int entityId = wrapper.get(Type.VAR_INT, 0); - EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); - if (tracker.hasEntity(entityId)) { - protocol.get(MetadataRewriter1_9To1_8.class).handleMetadata(entityId, metadataList, wrapper.user()); - } else { - Via.getPlatform().getLogger().warning("Unable to find entity for metadata, entity ID: " + entityId); - metadataList.clear(); - } + handler(wrapper -> { + List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0); + int entityId = wrapper.get(Type.VAR_INT, 0); + EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); + if (tracker.hasEntity(entityId)) { + protocol.get(MetadataRewriter1_9To1_8.class).handleMetadata(entityId, metadataList, wrapper.user()); + } else { + Via.getPlatform().getLogger().warning("Unable to find entity for metadata, entity ID: " + entityId); + metadataList.clear(); } }); // Handler for meta data - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0); - int entityID = wrapper.get(Type.VAR_INT, 0); - EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); - tracker.handleMetadata(entityID, metadataList); - } + handler(wrapper -> { + List metadataList = wrapper.get(Types1_9.METADATA_LIST, 0); + int entityID = wrapper.get(Type.VAR_INT, 0); + EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); + tracker.handleMetadata(entityID, metadataList); }); } }); @@ -360,15 +308,12 @@ public class SpawnPackets { public void register() { map(Type.VAR_INT_ARRAY_PRIMITIVE); // 0 - Entities to destroy - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int[] entities = wrapper.get(Type.VAR_INT_ARRAY_PRIMITIVE, 0); - EntityTracker tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); - for (int entity : entities) { - // EntityTracker - tracker.removeEntity(entity); - } + handler(wrapper -> { + int[] entities = wrapper.get(Type.VAR_INT_ARRAY_PRIMITIVE, 0); + EntityTracker tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); + for (int entity : entities) { + // EntityTracker + tracker.removeEntity(entity); } }); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/WorldPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/WorldPackets.java index f6b3ef55d..2b2156092 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/WorldPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/packets/WorldPackets.java @@ -28,7 +28,6 @@ import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection; import com.viaversion.viaversion.api.minecraft.item.DataItem; import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_8.ClientboundPackets1_8; @@ -70,25 +69,19 @@ public class WorldPackets { map(Type.INT); // 2 - Data map(Type.BOOLEAN); // 3 - Disable relative volume - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int id = wrapper.get(Type.INT, 0); + handler(wrapper -> { + int id = wrapper.get(Type.INT, 0); - id = Effect.getNewId(id); - wrapper.set(Type.INT, 0, id); - } + id = Effect.getNewId(id); + wrapper.set(Type.INT, 0, id); }); // Rewrite potion effect as it changed to use a dynamic registry - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int id = wrapper.get(Type.INT, 0); - if (id == 2002) { - int data = wrapper.get(Type.INT, 1); - int newData = ItemRewriter.getNewEffectID(data); - wrapper.set(Type.INT, 1, newData); - } + handler(wrapper -> { + int id = wrapper.get(Type.INT, 0); + if (id == 2002) { + int data = wrapper.get(Type.INT, 1); + int newData = ItemRewriter.getNewEffectID(data); + wrapper.set(Type.INT, 1, newData); } }); } @@ -101,164 +94,145 @@ public class WorldPackets { // 1 - Sound Category ID // Everything else get's written through - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - String name = wrapper.get(Type.STRING, 0); - - SoundEffect effect = SoundEffect.getByName(name); - int catid = 0; - String newname = name; - if (effect != null) { - catid = effect.getCategory().getId(); - newname = effect.getNewName(); - } - wrapper.set(Type.STRING, 0, newname); - wrapper.write(Type.VAR_INT, catid); // Write Category ID - if (effect != null && effect.isBreaksound()) { - EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); - int x = wrapper.passthrough(Type.INT); //Position X - int y = wrapper.passthrough(Type.INT); //Position Y - int z = wrapper.passthrough(Type.INT); //Position Z - if (tracker.interactedBlockRecently((int) Math.floor(x / 8.0), (int) Math.floor(y / 8.0), (int) Math.floor(z / 8.0))) { - wrapper.cancel(); - } - } - } - }); - } - }); - - protocol.registerClientbound(ClientboundPackets1_8.CHUNK_DATA, new PacketHandlers() { - @Override - public void register() { - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); - ClientChunks clientChunks = wrapper.user().get(ClientChunks.class); - Chunk chunk = wrapper.read(new Chunk1_8Type(clientWorld)); - - long chunkHash = ClientChunks.toLong(chunk.getX(), chunk.getZ()); - - // Check if the chunk should be handled as an unload packet - if (chunk.isFullChunk() && chunk.getBitmask() == 0) { - wrapper.setPacketType(ClientboundPackets1_9.UNLOAD_CHUNK); - wrapper.write(Type.INT, chunk.getX()); - wrapper.write(Type.INT, chunk.getZ()); - - // Remove commandBlocks on chunk unload - CommandBlockProvider provider = Via.getManager().getProviders().get(CommandBlockProvider.class); - provider.unloadChunk(wrapper.user(), chunk.getX(), chunk.getZ()); - - clientChunks.getLoadedChunks().remove(chunkHash); - - // Unload the empty chunks - if (Via.getConfig().isChunkBorderFix()) { - for (BlockFace face : BlockFace.HORIZONTAL) { - int chunkX = chunk.getX() + face.modX(); - int chunkZ = chunk.getZ() + face.modZ(); - if (!clientChunks.getLoadedChunks().contains(ClientChunks.toLong(chunkX, chunkZ))) { - PacketWrapper unloadChunk = wrapper.create(ClientboundPackets1_9.UNLOAD_CHUNK); - unloadChunk.write(Type.INT, chunkX); - unloadChunk.write(Type.INT, chunkZ); - unloadChunk.send(Protocol1_9To1_8.class); - } - } - } - } else { - Type chunkType = new Chunk1_9_1_2Type(clientWorld); - wrapper.write(chunkType, chunk); - - clientChunks.getLoadedChunks().add(chunkHash); - - // Send empty chunks surrounding the loaded chunk to force 1.9+ clients to render the new chunk - if (Via.getConfig().isChunkBorderFix()) { - for (BlockFace face : BlockFace.HORIZONTAL) { - int chunkX = chunk.getX() + face.modX(); - int chunkZ = chunk.getZ() + face.modZ(); - if (!clientChunks.getLoadedChunks().contains(ClientChunks.toLong(chunkX, chunkZ))) { - PacketWrapper emptyChunk = wrapper.create(ClientboundPackets1_9.CHUNK_DATA); - Chunk c = new BaseChunk(chunkX, chunkZ, true, false, 0, new ChunkSection[16], new int[256], new ArrayList<>()); - emptyChunk.write(chunkType, c); - emptyChunk.send(Protocol1_9To1_8.class); - } - } - } - } - } - }); - } - }); - - protocol.registerClientbound(ClientboundPackets1_8.MAP_BULK_CHUNK, null, new PacketHandlers() { - @Override - public void register() { handler(wrapper -> { - wrapper.cancel(); // Cancel the packet from being sent - ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); - ClientChunks clientChunks = wrapper.user().get(ClientChunks.class); - Chunk[] chunks = wrapper.read(new ChunkBulk1_8Type(clientWorld)); + String name = wrapper.get(Type.STRING, 0); - Type chunkType = new Chunk1_9_1_2Type(clientWorld); - // Split into multiple chunk packets - for (Chunk chunk : chunks) { - PacketWrapper chunkData = wrapper.create(ClientboundPackets1_9.CHUNK_DATA); - chunkData.write(chunkType, chunk); - chunkData.send(Protocol1_9To1_8.class); - - clientChunks.getLoadedChunks().add(ClientChunks.toLong(chunk.getX(), chunk.getZ())); - - // Send empty chunks surrounding the loaded chunk to force 1.9+ clients to render the new chunk - if (Via.getConfig().isChunkBorderFix()) { - for (BlockFace face : BlockFace.HORIZONTAL) { - int chunkX = chunk.getX() + face.modX(); - int chunkZ = chunk.getZ() + face.modZ(); - if (!clientChunks.getLoadedChunks().contains(ClientChunks.toLong(chunkX, chunkZ))) { - PacketWrapper emptyChunk = wrapper.create(ClientboundPackets1_9.CHUNK_DATA); - Chunk c = new BaseChunk(chunkX, chunkZ, true, false, 0, new ChunkSection[16], new int[256], new ArrayList<>()); - emptyChunk.write(chunkType, c); - emptyChunk.send(Protocol1_9To1_8.class); - } - } + SoundEffect effect = SoundEffect.getByName(name); + int catid = 0; + String newname = name; + if (effect != null) { + catid = effect.getCategory().getId(); + newname = effect.getNewName(); + } + wrapper.set(Type.STRING, 0, newname); + wrapper.write(Type.VAR_INT, catid); // Write Category ID + if (effect != null && effect.isBreaksound()) { + EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); + int x = wrapper.passthrough(Type.INT); //Position X + int y = wrapper.passthrough(Type.INT); //Position Y + int z = wrapper.passthrough(Type.INT); //Position Z + if (tracker.interactedBlockRecently((int) Math.floor(x / 8.0), (int) Math.floor(y / 8.0), (int) Math.floor(z / 8.0))) { + wrapper.cancel(); } } }); } }); + protocol.registerClientbound(ClientboundPackets1_8.CHUNK_DATA, wrapper -> { + ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); + ClientChunks clientChunks = wrapper.user().get(ClientChunks.class); + Chunk chunk = wrapper.read(new Chunk1_8Type(clientWorld)); + + long chunkHash = ClientChunks.toLong(chunk.getX(), chunk.getZ()); + + // Check if the chunk should be handled as an unload packet + if (chunk.isFullChunk() && chunk.getBitmask() == 0) { + wrapper.setPacketType(ClientboundPackets1_9.UNLOAD_CHUNK); + wrapper.write(Type.INT, chunk.getX()); + wrapper.write(Type.INT, chunk.getZ()); + + // Remove commandBlocks on chunk unload + CommandBlockProvider provider = Via.getManager().getProviders().get(CommandBlockProvider.class); + provider.unloadChunk(wrapper.user(), chunk.getX(), chunk.getZ()); + + clientChunks.getLoadedChunks().remove(chunkHash); + + // Unload the empty chunks + if (Via.getConfig().isChunkBorderFix()) { + for (BlockFace face : BlockFace.HORIZONTAL) { + int chunkX = chunk.getX() + face.modX(); + int chunkZ = chunk.getZ() + face.modZ(); + if (!clientChunks.getLoadedChunks().contains(ClientChunks.toLong(chunkX, chunkZ))) { + PacketWrapper unloadChunk = wrapper.create(ClientboundPackets1_9.UNLOAD_CHUNK); + unloadChunk.write(Type.INT, chunkX); + unloadChunk.write(Type.INT, chunkZ); + unloadChunk.send(Protocol1_9To1_8.class); + } + } + } + } else { + Type chunkType = new Chunk1_9_1_2Type(clientWorld); + wrapper.write(chunkType, chunk); + + clientChunks.getLoadedChunks().add(chunkHash); + + // Send empty chunks surrounding the loaded chunk to force 1.9+ clients to render the new chunk + if (Via.getConfig().isChunkBorderFix()) { + for (BlockFace face : BlockFace.HORIZONTAL) { + int chunkX = chunk.getX() + face.modX(); + int chunkZ = chunk.getZ() + face.modZ(); + if (!clientChunks.getLoadedChunks().contains(ClientChunks.toLong(chunkX, chunkZ))) { + PacketWrapper emptyChunk = wrapper.create(ClientboundPackets1_9.CHUNK_DATA); + Chunk c = new BaseChunk(chunkX, chunkZ, true, false, 0, new ChunkSection[16], new int[256], new ArrayList<>()); + emptyChunk.write(chunkType, c); + emptyChunk.send(Protocol1_9To1_8.class); + } + } + } + } + }); + + protocol.registerClientbound(ClientboundPackets1_8.MAP_BULK_CHUNK, null, wrapper -> { + wrapper.cancel(); // Cancel the packet from being sent + ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); + ClientChunks clientChunks = wrapper.user().get(ClientChunks.class); + Chunk[] chunks = wrapper.read(new ChunkBulk1_8Type(clientWorld)); + + Type chunkType = new Chunk1_9_1_2Type(clientWorld); + // Split into multiple chunk packets + for (Chunk chunk : chunks) { + PacketWrapper chunkData = wrapper.create(ClientboundPackets1_9.CHUNK_DATA); + chunkData.write(chunkType, chunk); + chunkData.send(Protocol1_9To1_8.class); + + clientChunks.getLoadedChunks().add(ClientChunks.toLong(chunk.getX(), chunk.getZ())); + + // Send empty chunks surrounding the loaded chunk to force 1.9+ clients to render the new chunk + if (Via.getConfig().isChunkBorderFix()) { + for (BlockFace face : BlockFace.HORIZONTAL) { + int chunkX = chunk.getX() + face.modX(); + int chunkZ = chunk.getZ() + face.modZ(); + if (!clientChunks.getLoadedChunks().contains(ClientChunks.toLong(chunkX, chunkZ))) { + PacketWrapper emptyChunk = wrapper.create(ClientboundPackets1_9.CHUNK_DATA); + Chunk c = new BaseChunk(chunkX, chunkZ, true, false, 0, new ChunkSection[16], new int[256], new ArrayList<>()); + emptyChunk.write(chunkType, c); + emptyChunk.send(Protocol1_9To1_8.class); + } + } + } + } + }); + protocol.registerClientbound(ClientboundPackets1_8.BLOCK_ENTITY_DATA, new PacketHandlers() { @Override public void register() { map(Type.POSITION); // 0 - Block Position map(Type.UNSIGNED_BYTE); // 1 - Action map(Type.NBT); // 2 - NBT (Might not be present) - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int action = wrapper.get(Type.UNSIGNED_BYTE, 0); - if (action == 1) { // Update Spawner - CompoundTag tag = wrapper.get(Type.NBT, 0); - if (tag != null) { - if (tag.contains("EntityId")) { - String entity = (String) tag.get("EntityId").getValue(); - CompoundTag spawn = new CompoundTag(); - spawn.put("id", new StringTag(entity)); - tag.put("SpawnData", spawn); - } else { // EntityID does not exist - CompoundTag spawn = new CompoundTag(); - spawn.put("id", new StringTag("AreaEffectCloud")); //Make spawners show up as empty when no EntityId is given. - tag.put("SpawnData", spawn); - } + handler(wrapper -> { + int action = wrapper.get(Type.UNSIGNED_BYTE, 0); + if (action == 1) { // Update Spawner + CompoundTag tag = wrapper.get(Type.NBT, 0); + if (tag != null) { + if (tag.contains("EntityId")) { + String entity = (String) tag.get("EntityId").getValue(); + CompoundTag spawn = new CompoundTag(); + spawn.put("id", new StringTag(entity)); + tag.put("SpawnData", spawn); + } else { // EntityID does not exist + CompoundTag spawn = new CompoundTag(); + spawn.put("id", new StringTag("AreaEffectCloud")); //Make spawners show up as empty when no EntityId is given. + tag.put("SpawnData", spawn); } } - if (action == 2) { // Update Command Block - CommandBlockProvider provider = Via.getManager().getProviders().get(CommandBlockProvider.class); - provider.addOrUpdateBlock(wrapper.user(), wrapper.get(Type.POSITION, 0), wrapper.get(Type.NBT, 0)); + } + if (action == 2) { // Update Command Block + CommandBlockProvider provider = Via.getManager().getProviders().get(CommandBlockProvider.class); + provider.addOrUpdateBlock(wrapper.user(), wrapper.get(Type.POSITION, 0), wrapper.get(Type.NBT, 0)); - // To prevent window issues don't send updates - wrapper.cancel(); - } + // To prevent window issues don't send updates + wrapper.cancel(); } }); } @@ -282,26 +256,20 @@ public class WorldPackets { public void register() { map(Type.VAR_INT); // Action map(Type.POSITION); // Position - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int status = wrapper.get(Type.VAR_INT, 0); - if (status == 6) - wrapper.cancel(); - } + handler(wrapper -> { + int status = wrapper.get(Type.VAR_INT, 0); + if (status == 6) + wrapper.cancel(); }); // Blocking - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int status = wrapper.get(Type.VAR_INT, 0); - if (status == 5 || status == 4 || status == 3) { - EntityTracker1_9 entityTracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); - if (entityTracker.isBlocking()) { - entityTracker.setBlocking(false); - if (!Via.getConfig().isShowShieldWhenSwordInHand()) { - entityTracker.setSecondHand(null); - } + handler(wrapper -> { + int status = wrapper.get(Type.VAR_INT, 0); + if (status == 5 || status == 4 || status == 3) { + EntityTracker1_9 entityTracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); + if (entityTracker.isBlocking()) { + entityTracker.setBlocking(false); + if (!Via.getConfig().isShowShieldWhenSwordInHand()) { + entityTracker.setSecondHand(null); } } } @@ -309,70 +277,61 @@ public class WorldPackets { } }); - protocol.registerServerbound(ServerboundPackets1_9.USE_ITEM, null, new PacketHandlers() { - @Override - public void register() { - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int hand = wrapper.read(Type.VAR_INT); - // Wipe the input buffer - wrapper.clearInputBuffer(); - wrapper.setPacketType(ServerboundPackets1_8.PLAYER_BLOCK_PLACEMENT); - wrapper.write(Type.POSITION, new Position(-1, (short) -1, -1)); - wrapper.write(Type.UNSIGNED_BYTE, (short) 255); - // Write item in hand - Item item = Protocol1_9To1_8.getHandItem(wrapper.user()); - // Blocking patch - if (Via.getConfig().isShieldBlocking()) { - EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); + protocol.registerServerbound(ServerboundPackets1_9.USE_ITEM, null, wrapper -> { + int hand = wrapper.read(Type.VAR_INT); + // Wipe the input buffer + wrapper.clearInputBuffer(); + wrapper.setPacketType(ServerboundPackets1_8.PLAYER_BLOCK_PLACEMENT); + wrapper.write(Type.POSITION, new Position(-1, (short) -1, -1)); + wrapper.write(Type.UNSIGNED_BYTE, (short) 255); + // Write item in hand + Item item = Protocol1_9To1_8.getHandItem(wrapper.user()); + // Blocking patch + if (Via.getConfig().isShieldBlocking()) { + EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); - // Check if the shield is already there or if we have to give it here - boolean showShieldWhenSwordInHand = Via.getConfig().isShowShieldWhenSwordInHand(); + // Check if the shield is already there or if we have to give it here + boolean showShieldWhenSwordInHand = Via.getConfig().isShowShieldWhenSwordInHand(); - // Method to identify the sword in hand - boolean isSword = showShieldWhenSwordInHand ? tracker.hasSwordInHand() - : item != null && Protocol1_9To1_8.isSword(item.identifier()); + // Method to identify the sword in hand + boolean isSword = showShieldWhenSwordInHand ? tracker.hasSwordInHand() + : item != null && Protocol1_9To1_8.isSword(item.identifier()); - if (isSword) { - if (hand == 0) { - if (!tracker.isBlocking()) { - tracker.setBlocking(true); + if (isSword) { + if (hand == 0) { + if (!tracker.isBlocking()) { + tracker.setBlocking(true); - // Check if the shield is already in the offhand - if (!showShieldWhenSwordInHand && tracker.getItemInSecondHand() == null) { + // Check if the shield is already in the offhand + if (!showShieldWhenSwordInHand && tracker.getItemInSecondHand() == null) { - // Set shield in offhand when interacting with main hand - Item shield = new DataItem(442, (byte) 1, (short) 0, null); - tracker.setSecondHand(shield); - } - } - } - - // Use the main hand to trigger the blocking - boolean blockUsingMainHand = Via.getConfig().isNoDelayShieldBlocking() - && !showShieldWhenSwordInHand; - - if (blockUsingMainHand && hand == 1 || !blockUsingMainHand && hand == 0) { - wrapper.cancel(); - } - } else { - if (!showShieldWhenSwordInHand) { - // Remove the shield from the offhand - tracker.setSecondHand(null); - } - tracker.setBlocking(false); + // Set shield in offhand when interacting with main hand + Item shield = new DataItem(442, (byte) 1, (short) 0, null); + tracker.setSecondHand(shield); } } - wrapper.write(Type.ITEM, item); - - wrapper.write(Type.UNSIGNED_BYTE, (short) 0); - wrapper.write(Type.UNSIGNED_BYTE, (short) 0); - wrapper.write(Type.UNSIGNED_BYTE, (short) 0); } - }); + // Use the main hand to trigger the blocking + boolean blockUsingMainHand = Via.getConfig().isNoDelayShieldBlocking() + && !showShieldWhenSwordInHand; + + if (blockUsingMainHand && hand == 1 || !blockUsingMainHand && hand == 0) { + wrapper.cancel(); + } + } else { + if (!showShieldWhenSwordInHand) { + // Remove the shield from the offhand + tracker.setSecondHand(null); + } + tracker.setBlocking(false); + } } + wrapper.write(Type.ITEM, item); + + wrapper.write(Type.UNSIGNED_BYTE, (short) 0); + wrapper.write(Type.UNSIGNED_BYTE, (short) 0); + wrapper.write(Type.UNSIGNED_BYTE, (short) 0); }); protocol.registerServerbound(ServerboundPackets1_9.PLAYER_BLOCK_PLACEMENT, new PacketHandlers() { @@ -380,78 +339,66 @@ public class WorldPackets { public void register() { map(Type.POSITION); // 0 - Position map(Type.VAR_INT, Type.UNSIGNED_BYTE); // 1 - Block Face - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - final int hand = wrapper.read(Type.VAR_INT); // 2 - Hand - if (hand != 0) wrapper.cancel(); - } + handler(wrapper -> { + final int hand = wrapper.read(Type.VAR_INT); // 2 - Hand + if (hand != 0) wrapper.cancel(); }); - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - Item item = Protocol1_9To1_8.getHandItem(wrapper.user()); - wrapper.write(Type.ITEM, item); // 3 - Item - } + handler(wrapper -> { + Item item = Protocol1_9To1_8.getHandItem(wrapper.user()); + wrapper.write(Type.ITEM, item); // 3 - Item }); map(Type.UNSIGNED_BYTE); // 4 - X map(Type.UNSIGNED_BYTE); // 5 - Y map(Type.UNSIGNED_BYTE); // 6 - Z //Register block place to fix sounds - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - int face = wrapper.get(Type.UNSIGNED_BYTE, 0); - if (face == 255) - return; - Position p = wrapper.get(Type.POSITION, 0); - int x = p.x(); - int y = p.y(); - int z = p.z(); - switch (face) { - case 0: - y--; - break; - case 1: - y++; - break; - case 2: - z--; - break; - case 3: - z++; - break; - case 4: - x--; - break; - case 5: - x++; - break; - } - EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); - tracker.addBlockInteraction(new Position(x, y, z)); + handler(wrapper -> { + int face = wrapper.get(Type.UNSIGNED_BYTE, 0); + if (face == 255) + return; + Position p = wrapper.get(Type.POSITION, 0); + int x = p.x(); + int y = p.y(); + int z = p.z(); + switch (face) { + case 0: + y--; + break; + case 1: + y++; + break; + case 2: + z--; + break; + case 3: + z++; + break; + case 4: + x--; + break; + case 5: + x++; + break; } + EntityTracker1_9 tracker = wrapper.user().getEntityTracker(Protocol1_9To1_8.class); + tracker.addBlockInteraction(new Position(x, y, z)); }); // Handle CommandBlocks - handler(new PacketHandler() { - @Override - public void handle(PacketWrapper wrapper) throws Exception { - CommandBlockProvider provider = Via.getManager().getProviders().get(CommandBlockProvider.class); + handler(wrapper -> { + CommandBlockProvider provider = Via.getManager().getProviders().get(CommandBlockProvider.class); - Position pos = wrapper.get(Type.POSITION, 0); - Optional tag = provider.get(wrapper.user(), pos); - // Send the Update Block Entity packet if present - if (tag.isPresent()) { - PacketWrapper updateBlockEntity = PacketWrapper.create(ClientboundPackets1_9.BLOCK_ENTITY_DATA, null, wrapper.user()); + Position pos = wrapper.get(Type.POSITION, 0); + Optional tag = provider.get(wrapper.user(), pos); + // Send the Update Block Entity packet if present + if (tag.isPresent()) { + PacketWrapper updateBlockEntity = PacketWrapper.create(ClientboundPackets1_9.BLOCK_ENTITY_DATA, null, wrapper.user()); - updateBlockEntity.write(Type.POSITION, pos); - updateBlockEntity.write(Type.UNSIGNED_BYTE, (short) 2); - updateBlockEntity.write(Type.NBT, tag.get()); + updateBlockEntity.write(Type.POSITION, pos); + updateBlockEntity.write(Type.UNSIGNED_BYTE, (short) 2); + updateBlockEntity.write(Type.NBT, tag.get()); - updateBlockEntity.scheduleSend(Protocol1_9To1_8.class); - } + updateBlockEntity.scheduleSend(Protocol1_9To1_8.class); } }); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/providers/BossBarProvider.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/providers/BossBarProvider.java index 99abecd63..544bcbd25 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/providers/BossBarProvider.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/providers/BossBarProvider.java @@ -19,7 +19,6 @@ package com.viaversion.viaversion.protocols.protocol1_9to1_8.providers; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.platform.providers.Provider; - import java.util.UUID; public class BossBarProvider implements Provider { diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/providers/CommandBlockProvider.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/providers/CommandBlockProvider.java index a79b43c75..176032944 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/providers/CommandBlockProvider.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/providers/CommandBlockProvider.java @@ -27,7 +27,6 @@ import com.viaversion.viaversion.protocols.protocol1_9to1_8.ClientboundPackets1_ import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8; import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.CommandBlockStorage; import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.EntityTracker1_9; - import java.util.Optional; public class CommandBlockProvider implements Provider { diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/providers/CompressionProvider.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/providers/CompressionProvider.java index 08e6d8eb0..aa90dea5c 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/providers/CompressionProvider.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/providers/CompressionProvider.java @@ -28,7 +28,6 @@ import io.netty.channel.ChannelPipeline; import io.netty.handler.codec.DecoderException; import io.netty.handler.codec.MessageToByteEncoder; import io.netty.handler.codec.MessageToMessageDecoder; - import java.util.List; import java.util.zip.Deflater; import java.util.zip.Inflater; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/ClientChunks.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/ClientChunks.java index 599ef2d84..b5b298885 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/ClientChunks.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/ClientChunks.java @@ -20,7 +20,6 @@ package com.viaversion.viaversion.protocols.protocol1_9to1_8.storage; import com.google.common.collect.Sets; import com.viaversion.viaversion.api.connection.StoredObject; import com.viaversion.viaversion.api.connection.UserConnection; - import java.util.Set; public class ClientChunks extends StoredObject { diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/CommandBlockStorage.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/CommandBlockStorage.java index 71f9f2ea7..851b91dfe 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/CommandBlockStorage.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/CommandBlockStorage.java @@ -22,7 +22,6 @@ import com.github.steveice10.opennbt.tag.builtin.CompoundTag; import com.viaversion.viaversion.api.connection.StorableObject; import com.viaversion.viaversion.api.minecraft.Position; import com.viaversion.viaversion.util.Pair; - import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/EntityTracker1_9.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/EntityTracker1_9.java index 9078bb702..cfbc304d1 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/EntityTracker1_9.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/EntityTracker1_9.java @@ -41,10 +41,14 @@ import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.BossBarPro import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.EntityIdProvider; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.IntSet; -import space.vectrix.flare.fastutil.Int2ObjectSyncMap; - -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; import java.util.concurrent.TimeUnit; +import space.vectrix.flare.fastutil.Int2ObjectSyncMap; public class EntityTracker1_9 extends EntityTrackerBase { public static final String WITHER_TRANSLATABLE = "{\"translate\":\"entity.WitherBoss.name\"}"; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/InventoryTracker.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/InventoryTracker.java index d19eca7c8..b3e8b1d68 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/InventoryTracker.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/storage/InventoryTracker.java @@ -20,7 +20,6 @@ package com.viaversion.viaversion.protocols.protocol1_9to1_8.storage; import com.viaversion.viaversion.api.connection.StorableObject; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8; - import java.util.HashMap; import java.util.Map; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/types/Chunk1_8Type.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/types/Chunk1_8Type.java index 788f1b34a..1acee31f9 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/types/Chunk1_8Type.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/types/Chunk1_8Type.java @@ -28,7 +28,6 @@ import com.viaversion.viaversion.api.type.types.version.Types1_8; import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; - import java.util.ArrayList; public class Chunk1_8Type extends PartialType { @@ -129,7 +128,8 @@ public class Chunk1_8Type extends PartialType { // Write sky light for (int i = 0; i < chunk.getSections().length; i++) { if ((chunk.getBitmask() & 1 << i) == 0) continue; - if (chunk.getSections()[i].getLight().hasSkyLight()) chunk.getSections()[i].getLight().writeSkyLight(output); + if (chunk.getSections()[i].getLight().hasSkyLight()) + chunk.getSections()[i].getLight().writeSkyLight(output); } // Write biome data diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/types/ChunkBulk1_8Type.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/types/ChunkBulk1_8Type.java index 501c98cfc..afbd7e32b 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/types/ChunkBulk1_8Type.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_8/types/ChunkBulk1_8Type.java @@ -65,7 +65,8 @@ public class ChunkBulk1_8Type extends PartialType { @Override public void write(ByteBuf output, ClientWorld world, Chunk[] chunks) throws Exception { boolean skyLight = false; - loop1: for (Chunk c : chunks) { + loop1: + for (Chunk c : chunks) { for (ChunkSection section : c.getSections()) { if (section != null && section.getLight().hasSkyLight()) { skyLight = true; diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_9_1/Protocol1_9To1_9_1.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_9_1/Protocol1_9To1_9_1.java index 270a8c811..4703aafae 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_9_1/Protocol1_9To1_9_1.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_9to1_9_1/Protocol1_9To1_9_1.java @@ -18,8 +18,6 @@ package com.viaversion.viaversion.protocols.protocol1_9to1_9_1; import com.viaversion.viaversion.api.protocol.AbstractProtocol; -import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_9to1_8.ClientboundPackets1_9; @@ -54,16 +52,13 @@ public class Protocol1_9To1_9_1 extends AbstractProtocol { + int sound = wrapper.get(Type.VAR_INT, 0); - if (sound == 415) // Stop the Elytra sound for 1.9 (It's introduced in 1.9.2) - wrapper.cancel(); - else if (sound >= 416) // Act like the Elytra sound never existed - wrapper.set(Type.VAR_INT, 0, sound - 1); - } + if (sound == 415) // Stop the Elytra sound for 1.9 (It's introduced in 1.9.2) + wrapper.cancel(); + else if (sound >= 416) // Act like the Elytra sound never existed + wrapper.set(Type.VAR_INT, 0, sound - 1); }); } }); diff --git a/common/src/main/java/com/viaversion/viaversion/rewriter/BlockRewriter.java b/common/src/main/java/com/viaversion/viaversion/rewriter/BlockRewriter.java index a6b7af0dc..10cf6546e 100644 --- a/common/src/main/java/com/viaversion/viaversion/rewriter/BlockRewriter.java +++ b/common/src/main/java/com/viaversion/viaversion/rewriter/BlockRewriter.java @@ -32,7 +32,6 @@ import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.util.MathUtil; - import java.util.List; public class BlockRewriter { @@ -134,34 +133,29 @@ public class BlockRewriter { } public void registerChunkData1_19(C packetType, ChunkTypeSupplier chunkTypeSupplier) { - protocol.registerClientbound(packetType, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - final EntityTracker tracker = protocol.getEntityRewriter().tracker(wrapper.user()); - Preconditions.checkArgument(tracker.biomesSent() != 0, "Biome count not set"); - Preconditions.checkArgument(tracker.currentWorldSectionHeight() != 0, "Section height not set"); - final Type chunkType = chunkTypeSupplier.supply(tracker.currentWorldSectionHeight(), - MathUtil.ceilLog2(protocol.getMappingData().getBlockStateMappings().mappedSize()), - MathUtil.ceilLog2(tracker.biomesSent())); - final Chunk chunk = wrapper.passthrough(chunkType); - for (final ChunkSection section : chunk.getSections()) { - final DataPalette blockPalette = section.palette(PaletteType.BLOCKS); - for (int i = 0; i < blockPalette.size(); i++) { - final int id = blockPalette.idByIndex(i); - blockPalette.setIdByIndex(i, protocol.getMappingData().getNewBlockStateId(id)); - } - } + protocol.registerClientbound(packetType, wrapper -> { + final EntityTracker tracker = protocol.getEntityRewriter().tracker(wrapper.user()); + Preconditions.checkArgument(tracker.biomesSent() != 0, "Biome count not set"); + Preconditions.checkArgument(tracker.currentWorldSectionHeight() != 0, "Section height not set"); + final Type chunkType = chunkTypeSupplier.supply(tracker.currentWorldSectionHeight(), + MathUtil.ceilLog2(protocol.getMappingData().getBlockStateMappings().mappedSize()), + MathUtil.ceilLog2(tracker.biomesSent())); + final Chunk chunk = wrapper.passthrough(chunkType); + for (final ChunkSection section : chunk.getSections()) { + final DataPalette blockPalette = section.palette(PaletteType.BLOCKS); + for (int i = 0; i < blockPalette.size(); i++) { + final int id = blockPalette.idByIndex(i); + blockPalette.setIdByIndex(i, protocol.getMappingData().getNewBlockStateId(id)); + } + } - final Mappings blockEntityMappings = protocol.getMappingData().getBlockEntityMappings(); - if (blockEntityMappings != null) { - List blockEntities = chunk.blockEntities(); - for (int i = 0; i < blockEntities.size(); i++) { - final BlockEntity blockEntity = blockEntities.get(i); - blockEntities.set(i, blockEntity.withTypeId(protocol.getMappingData().getBlockEntityMappings().getNewIdOrDefault(blockEntity.typeId(), blockEntity.typeId()))); - } - } - }); + final Mappings blockEntityMappings = protocol.getMappingData().getBlockEntityMappings(); + if (blockEntityMappings != null) { + List blockEntities = chunk.blockEntities(); + for (int i = 0; i < blockEntities.size(); i++) { + final BlockEntity blockEntity = blockEntities.get(i); + blockEntities.set(i, blockEntity.withTypeId(protocol.getMappingData().getBlockEntityMappings().getNewIdOrDefault(blockEntity.typeId(), blockEntity.typeId()))); + } } }); } diff --git a/common/src/main/java/com/viaversion/viaversion/rewriter/CommandRewriter.java b/common/src/main/java/com/viaversion/viaversion/rewriter/CommandRewriter.java index 75d8a02dc..5765c0045 100644 --- a/common/src/main/java/com/viaversion/viaversion/rewriter/CommandRewriter.java +++ b/common/src/main/java/com/viaversion/viaversion/rewriter/CommandRewriter.java @@ -21,7 +21,6 @@ import com.google.common.base.Preconditions; import com.viaversion.viaversion.api.protocol.Protocol; import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import java.util.HashMap; import java.util.Map; @@ -67,82 +66,72 @@ public class CommandRewriter { } public void registerDeclareCommands(C packetType) { - protocol.registerClientbound(packetType, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - int size = wrapper.passthrough(Type.VAR_INT); - for (int i = 0; i < size; i++) { - byte flags = wrapper.passthrough(Type.BYTE); - wrapper.passthrough(Type.VAR_INT_ARRAY_PRIMITIVE); // Children indices - if ((flags & 0x08) != 0) { - wrapper.passthrough(Type.VAR_INT); // Redirect node index - } + protocol.registerClientbound(packetType, wrapper -> { + int size = wrapper.passthrough(Type.VAR_INT); + for (int i = 0; i < size; i++) { + byte flags = wrapper.passthrough(Type.BYTE); + wrapper.passthrough(Type.VAR_INT_ARRAY_PRIMITIVE); // Children indices + if ((flags & 0x08) != 0) { + wrapper.passthrough(Type.VAR_INT); // Redirect node index + } - byte nodeType = (byte) (flags & 0x03); - if (nodeType == 1 || nodeType == 2) { // Literal/argument node - wrapper.passthrough(Type.STRING); // Name - } + byte nodeType = (byte) (flags & 0x03); + if (nodeType == 1 || nodeType == 2) { // Literal/argument node + wrapper.passthrough(Type.STRING); // Name + } - if (nodeType == 2) { // Argument node - String argumentType = wrapper.read(Type.STRING); - String newArgumentType = handleArgumentType(argumentType); - if (newArgumentType != null) { - wrapper.write(Type.STRING, newArgumentType); - } - - // Always call the handler using the previous name - handleArgument(wrapper, argumentType); - } - - if ((flags & 0x10) != 0) { - wrapper.passthrough(Type.STRING); // Suggestion type - } + if (nodeType == 2) { // Argument node + String argumentType = wrapper.read(Type.STRING); + String newArgumentType = handleArgumentType(argumentType); + if (newArgumentType != null) { + wrapper.write(Type.STRING, newArgumentType); } - wrapper.passthrough(Type.VAR_INT); // Root node index - }); + // Always call the handler using the previous name + handleArgument(wrapper, argumentType); + } + + if ((flags & 0x10) != 0) { + wrapper.passthrough(Type.STRING); // Suggestion type + } } + + wrapper.passthrough(Type.VAR_INT); // Root node index }); } public void registerDeclareCommands1_19(C packetType) { - protocol.registerClientbound(packetType, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - int size = wrapper.passthrough(Type.VAR_INT); - for (int i = 0; i < size; i++) { - byte flags = wrapper.passthrough(Type.BYTE); - wrapper.passthrough(Type.VAR_INT_ARRAY_PRIMITIVE); // Children indices - if ((flags & 0x08) != 0) { - wrapper.passthrough(Type.VAR_INT); // Redirect node index - } + protocol.registerClientbound(packetType, wrapper -> { + int size = wrapper.passthrough(Type.VAR_INT); + for (int i = 0; i < size; i++) { + byte flags = wrapper.passthrough(Type.BYTE); + wrapper.passthrough(Type.VAR_INT_ARRAY_PRIMITIVE); // Children indices + if ((flags & 0x08) != 0) { + wrapper.passthrough(Type.VAR_INT); // Redirect node index + } - byte nodeType = (byte) (flags & 0x03); - if (nodeType == 1 || nodeType == 2) { // Literal/argument node - wrapper.passthrough(Type.STRING); // Name - } + byte nodeType = (byte) (flags & 0x03); + if (nodeType == 1 || nodeType == 2) { // Literal/argument node + wrapper.passthrough(Type.STRING); // Name + } - if (nodeType == 2) { // Argument node - int argumentTypeId = wrapper.read(Type.VAR_INT); - String argumentType = argumentType(argumentTypeId); - String newArgumentType = handleArgumentType(argumentType); - Preconditions.checkNotNull(newArgumentType, "No mapping for argument type %s", argumentType); - wrapper.write(Type.VAR_INT, mappedArgumentTypeId(newArgumentType)); + if (nodeType == 2) { // Argument node + int argumentTypeId = wrapper.read(Type.VAR_INT); + String argumentType = argumentType(argumentTypeId); + String newArgumentType = handleArgumentType(argumentType); + Preconditions.checkNotNull(newArgumentType, "No mapping for argument type %s", argumentType); + wrapper.write(Type.VAR_INT, mappedArgumentTypeId(newArgumentType)); - // Always call the handler using the previous name - handleArgument(wrapper, argumentType); - } + // Always call the handler using the previous name + handleArgument(wrapper, argumentType); + } - if ((flags & 0x10) != 0) { - wrapper.passthrough(Type.STRING); // Suggestion type - } - } - - wrapper.passthrough(Type.VAR_INT); // Root node index - }); + if ((flags & 0x10) != 0) { + wrapper.passthrough(Type.STRING); // Suggestion type + } } + + wrapper.passthrough(Type.VAR_INT); // Root node index }); } diff --git a/common/src/main/java/com/viaversion/viaversion/rewriter/ComponentRewriter.java b/common/src/main/java/com/viaversion/viaversion/rewriter/ComponentRewriter.java index f37f2777a..550fd7c72 100644 --- a/common/src/main/java/com/viaversion/viaversion/rewriter/ComponentRewriter.java +++ b/common/src/main/java/com/viaversion/viaversion/rewriter/ComponentRewriter.java @@ -53,12 +53,7 @@ public class ComponentRewriter { * @param packetType clientbound packet type */ public void registerComponentPacket(C packetType) { - protocol.registerClientbound(packetType, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> processText(wrapper.passthrough(Type.COMPONENT))); - } - }); + protocol.registerClientbound(packetType, wrapper -> processText(wrapper.passthrough(Type.COMPONENT))); } @Deprecated/*(forRemoval = true)**/ @@ -86,16 +81,11 @@ public class ComponentRewriter { * Handles sub 1.17 combat event components. */ public void registerCombatEvent(C packetType) { - protocol.registerClientbound(packetType, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - if (wrapper.passthrough(Type.VAR_INT) == 2) { - wrapper.passthrough(Type.VAR_INT); - wrapper.passthrough(Type.INT); - processText(wrapper.passthrough(Type.COMPONENT)); - } - }); + protocol.registerClientbound(packetType, wrapper -> { + if (wrapper.passthrough(Type.VAR_INT) == 2) { + wrapper.passthrough(Type.VAR_INT); + wrapper.passthrough(Type.INT); + processText(wrapper.passthrough(Type.COMPONENT)); } }); } @@ -104,15 +94,10 @@ public class ComponentRewriter { * Handles sub 1.17 title components. */ public void registerTitle(C packetType) { - protocol.registerClientbound(packetType, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - int action = wrapper.passthrough(Type.VAR_INT); - if (action >= 0 && action <= 2) { - processText(wrapper.passthrough(Type.COMPONENT)); - } - }); + protocol.registerClientbound(packetType, wrapper -> { + int action = wrapper.passthrough(Type.VAR_INT); + if (action >= 0 && action <= 2) { + processText(wrapper.passthrough(Type.COMPONENT)); } }); } diff --git a/common/src/main/java/com/viaversion/viaversion/rewriter/EntityRewriter.java b/common/src/main/java/com/viaversion/viaversion/rewriter/EntityRewriter.java index e6c098065..13490e13a 100644 --- a/common/src/main/java/com/viaversion/viaversion/rewriter/EntityRewriter.java +++ b/common/src/main/java/com/viaversion/viaversion/rewriter/EntityRewriter.java @@ -45,8 +45,6 @@ import com.viaversion.viaversion.data.entity.DimensionDataImpl; import com.viaversion.viaversion.rewriter.meta.MetaFilter; import com.viaversion.viaversion.rewriter.meta.MetaHandlerEvent; import com.viaversion.viaversion.rewriter.meta.MetaHandlerEventImpl; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.ArrayList; import java.util.Comparator; import java.util.HashMap; @@ -54,6 +52,7 @@ import java.util.List; import java.util.Map; import java.util.logging.Logger; import java.util.stream.Collectors; +import org.checkerframework.checker.nullness.qual.Nullable; public abstract class EntityRewriter> extends RewriterBase implements com.viaversion.viaversion.api.rewriter.EntityRewriter { @@ -323,14 +322,9 @@ public abstract class EntityRewriter intType) { - protocol.registerClientbound(packetType, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - int entityId = wrapper.passthrough(intType); - tracker(wrapper.user()).addEntity(entityId, entityType); - }); - } + protocol.registerClientbound(packetType, wrapper -> { + int entityId = wrapper.passthrough(intType); + tracker(wrapper.user()).addEntity(entityId, entityType); }); } @@ -350,16 +344,11 @@ public abstract class EntityRewriter { - int[] entityIds = wrapper.passthrough(Type.VAR_INT_ARRAY_PRIMITIVE); - EntityTracker entityTracker = tracker(wrapper.user()); - for (int entity : entityIds) { - entityTracker.removeEntity(entity); - } - }); + protocol.registerClientbound(packetType, wrapper -> { + int[] entityIds = wrapper.passthrough(Type.VAR_INT_ARRAY_PRIMITIVE); + EntityTracker entityTracker = tracker(wrapper.user()); + for (int entity : entityIds) { + entityTracker.removeEntity(entity); } }); } @@ -370,14 +359,9 @@ public abstract class EntityRewriter { - int entityId = wrapper.passthrough(Type.VAR_INT); - tracker(wrapper.user()).removeEntity(entityId); - }); - } + protocol.registerClientbound(packetType, wrapper -> { + int entityId = wrapper.passthrough(Type.VAR_INT); + tracker(wrapper.user()).removeEntity(entityId); }); } diff --git a/common/src/main/java/com/viaversion/viaversion/rewriter/ItemRewriter.java b/common/src/main/java/com/viaversion/viaversion/rewriter/ItemRewriter.java index 4d9d030b6..f157222de 100644 --- a/common/src/main/java/com/viaversion/viaversion/rewriter/ItemRewriter.java +++ b/common/src/main/java/com/viaversion/viaversion/rewriter/ItemRewriter.java @@ -197,110 +197,90 @@ public abstract class ItemRewriter { - int itemId = wrapper.read(Type.VAR_INT); - wrapper.write(Type.VAR_INT, protocol.getMappingData().getNewItemId(itemId)); - }); - } + protocol.registerClientbound(packetType, wrapper -> { + int itemId = wrapper.read(Type.VAR_INT); + wrapper.write(Type.VAR_INT, protocol.getMappingData().getNewItemId(itemId)); }); } // 1.14.4+ public void registerTradeList(C packetType) { - protocol.registerClientbound(packetType, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - wrapper.passthrough(Type.VAR_INT); - int size = wrapper.passthrough(Type.UNSIGNED_BYTE); - for (int i = 0; i < size; i++) { - handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Input - handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Output + protocol.registerClientbound(packetType, wrapper -> { + wrapper.passthrough(Type.VAR_INT); + int size = wrapper.passthrough(Type.UNSIGNED_BYTE); + for (int i = 0; i < size; i++) { + handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Input + handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Output - if (wrapper.passthrough(Type.BOOLEAN)) { // Has second item - handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Second Item - } + if (wrapper.passthrough(Type.BOOLEAN)) { // Has second item + handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Second Item + } - wrapper.passthrough(Type.BOOLEAN); // Trade disabled - wrapper.passthrough(Type.INT); // Number of tools uses - wrapper.passthrough(Type.INT); // Maximum number of trade uses + wrapper.passthrough(Type.BOOLEAN); // Trade disabled + wrapper.passthrough(Type.INT); // Number of tools uses + wrapper.passthrough(Type.INT); // Maximum number of trade uses - wrapper.passthrough(Type.INT); // XP - wrapper.passthrough(Type.INT); // Special price - wrapper.passthrough(Type.FLOAT); // Price multiplier - wrapper.passthrough(Type.INT); // Demand - } - //... - }); + wrapper.passthrough(Type.INT); // XP + wrapper.passthrough(Type.INT); // Special price + wrapper.passthrough(Type.FLOAT); // Price multiplier + wrapper.passthrough(Type.INT); // Demand } + //... }); } public void registerTradeList1_19(C packetType) { - protocol.registerClientbound(packetType, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - wrapper.passthrough(Type.VAR_INT); // Container id - int size = wrapper.passthrough(Type.VAR_INT); - for (int i = 0; i < size; i++) { - handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Input - handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Output - handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Second Item + protocol.registerClientbound(packetType, wrapper -> { + wrapper.passthrough(Type.VAR_INT); // Container id + int size = wrapper.passthrough(Type.VAR_INT); + for (int i = 0; i < size; i++) { + handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Input + handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Output + handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); // Second Item - wrapper.passthrough(Type.BOOLEAN); // Trade disabled - wrapper.passthrough(Type.INT); // Number of tools uses - wrapper.passthrough(Type.INT); // Maximum number of trade uses + wrapper.passthrough(Type.BOOLEAN); // Trade disabled + wrapper.passthrough(Type.INT); // Number of tools uses + wrapper.passthrough(Type.INT); // Maximum number of trade uses - wrapper.passthrough(Type.INT); // XP - wrapper.passthrough(Type.INT); // Special price - wrapper.passthrough(Type.FLOAT); // Price multiplier - wrapper.passthrough(Type.INT); // Demand - } - }); + wrapper.passthrough(Type.INT); // XP + wrapper.passthrough(Type.INT); // Special price + wrapper.passthrough(Type.FLOAT); // Price multiplier + wrapper.passthrough(Type.INT); // Demand } }); } public void registerAdvancements(C packetType, Type type) { - protocol.registerClientbound(packetType, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - wrapper.passthrough(Type.BOOLEAN); // Reset/clear - int size = wrapper.passthrough(Type.VAR_INT); // Mapping size - for (int i = 0; i < size; i++) { - wrapper.passthrough(Type.STRING); // Identifier + protocol.registerClientbound(packetType, wrapper -> { + wrapper.passthrough(Type.BOOLEAN); // Reset/clear + int size = wrapper.passthrough(Type.VAR_INT); // Mapping size + for (int i = 0; i < size; i++) { + wrapper.passthrough(Type.STRING); // Identifier - // Parent - if (wrapper.passthrough(Type.BOOLEAN)) - wrapper.passthrough(Type.STRING); + // Parent + if (wrapper.passthrough(Type.BOOLEAN)) + wrapper.passthrough(Type.STRING); - // Display data - if (wrapper.passthrough(Type.BOOLEAN)) { - wrapper.passthrough(Type.COMPONENT); // Title - wrapper.passthrough(Type.COMPONENT); // Description - handleItemToClient(wrapper.passthrough(type)); // Icon - wrapper.passthrough(Type.VAR_INT); // Frame type - int flags = wrapper.passthrough(Type.INT); // Flags - if ((flags & 1) != 0) { - wrapper.passthrough(Type.STRING); // Background texture - } - wrapper.passthrough(Type.FLOAT); // X - wrapper.passthrough(Type.FLOAT); // Y - } - - wrapper.passthrough(Type.STRING_ARRAY); // Criteria - - int arrayLength = wrapper.passthrough(Type.VAR_INT); - for (int array = 0; array < arrayLength; array++) { - wrapper.passthrough(Type.STRING_ARRAY); // String array - } + // Display data + if (wrapper.passthrough(Type.BOOLEAN)) { + wrapper.passthrough(Type.COMPONENT); // Title + wrapper.passthrough(Type.COMPONENT); // Description + handleItemToClient(wrapper.passthrough(type)); // Icon + wrapper.passthrough(Type.VAR_INT); // Frame type + int flags = wrapper.passthrough(Type.INT); // Flags + if ((flags & 1) != 0) { + wrapper.passthrough(Type.STRING); // Background texture } - }); + wrapper.passthrough(Type.FLOAT); // X + wrapper.passthrough(Type.FLOAT); // Y + } + + wrapper.passthrough(Type.STRING_ARRAY); // Criteria + + int arrayLength = wrapper.passthrough(Type.VAR_INT); + for (int array = 0; array < arrayLength; array++) { + wrapper.passthrough(Type.STRING_ARRAY); // String array + } } }); } diff --git a/common/src/main/java/com/viaversion/viaversion/rewriter/RecipeRewriter.java b/common/src/main/java/com/viaversion/viaversion/rewriter/RecipeRewriter.java index 907ce8634..14ee41574 100644 --- a/common/src/main/java/com/viaversion/viaversion/rewriter/RecipeRewriter.java +++ b/common/src/main/java/com/viaversion/viaversion/rewriter/RecipeRewriter.java @@ -21,12 +21,10 @@ import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.protocol.Protocol; import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.HashMap; import java.util.Map; +import org.checkerframework.checker.nullness.qual.Nullable; public abstract class RecipeRewriter { @@ -45,17 +43,12 @@ public abstract class RecipeRewriter { } public void registerDefaultHandler(C packetType) { - protocol.registerClientbound(packetType, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - int size = wrapper.passthrough(Type.VAR_INT); - for (int i = 0; i < size; i++) { - String type = wrapper.passthrough(Type.STRING).replace("minecraft:", ""); - wrapper.passthrough(Type.STRING); // Recipe Identifier - handleRecipeType(wrapper, type); - } - }); + protocol.registerClientbound(packetType, wrapper -> { + int size = wrapper.passthrough(Type.VAR_INT); + for (int i = 0; i < size; i++) { + String type = wrapper.passthrough(Type.STRING).replace("minecraft:", ""); + wrapper.passthrough(Type.STRING); // Recipe Identifier + handleRecipeType(wrapper, type); } }); } diff --git a/common/src/main/java/com/viaversion/viaversion/rewriter/SoundRewriter.java b/common/src/main/java/com/viaversion/viaversion/rewriter/SoundRewriter.java index 69063dc23..00ac01534 100644 --- a/common/src/main/java/com/viaversion/viaversion/rewriter/SoundRewriter.java +++ b/common/src/main/java/com/viaversion/viaversion/rewriter/SoundRewriter.java @@ -49,26 +49,21 @@ public class SoundRewriter { } public void register1_19_3Sound(C packetType) { - protocol.registerClientbound(packetType, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - final int soundId = wrapper.read(Type.VAR_INT); - if (soundId == 0) { - // Is followed by the resource loation - wrapper.write(Type.VAR_INT, 0); - return; - } - - final int mappedId = idRewriter.rewrite(soundId - 1); // Normalize sound id - if (mappedId == -1) { - wrapper.cancel(); - return; - } - - wrapper.write(Type.VAR_INT, mappedId + 1); - }); + protocol.registerClientbound(packetType, wrapper -> { + final int soundId = wrapper.read(Type.VAR_INT); + if (soundId == 0) { + // Is followed by the resource loation + wrapper.write(Type.VAR_INT, 0); + return; } + + final int mappedId = idRewriter.rewrite(soundId - 1); // Normalize sound id + if (mappedId == -1) { + wrapper.cancel(); + return; + } + + wrapper.write(Type.VAR_INT, mappedId + 1); }); } diff --git a/common/src/main/java/com/viaversion/viaversion/rewriter/StatisticsRewriter.java b/common/src/main/java/com/viaversion/viaversion/rewriter/StatisticsRewriter.java index dd01c66d5..c3a679096 100644 --- a/common/src/main/java/com/viaversion/viaversion/rewriter/StatisticsRewriter.java +++ b/common/src/main/java/com/viaversion/viaversion/rewriter/StatisticsRewriter.java @@ -20,7 +20,6 @@ package com.viaversion.viaversion.rewriter; import com.viaversion.viaversion.api.minecraft.RegistryType; import com.viaversion.viaversion.api.protocol.Protocol; import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import org.checkerframework.checker.nullness.qual.Nullable; @@ -33,42 +32,37 @@ public class StatisticsRewriter { } public void register(C packetType) { - protocol.registerClientbound(packetType, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - int size = wrapper.passthrough(Type.VAR_INT); - int newSize = size; - for (int i = 0; i < size; i++) { - int categoryId = wrapper.read(Type.VAR_INT); - int statisticId = wrapper.read(Type.VAR_INT); - int value = wrapper.read(Type.VAR_INT); - if (categoryId == CUSTOM_STATS_CATEGORY && protocol.getMappingData().getStatisticsMappings() != null) { - // Rewrite custom statistics id - statisticId = protocol.getMappingData().getStatisticsMappings().getNewId(statisticId); - if (statisticId == -1) { - // Remove entry - newSize--; - continue; - } - } else { - // Rewrite the block/item/entity id - RegistryType type = getRegistryTypeForStatistic(categoryId); - IdRewriteFunction statisticsRewriter; - if (type != null && (statisticsRewriter = getRewriter(type)) != null) { - statisticId = statisticsRewriter.rewrite(statisticId); - } - } - - wrapper.write(Type.VAR_INT, categoryId); - wrapper.write(Type.VAR_INT, statisticId); - wrapper.write(Type.VAR_INT, value); + protocol.registerClientbound(packetType, wrapper -> { + int size = wrapper.passthrough(Type.VAR_INT); + int newSize = size; + for (int i = 0; i < size; i++) { + int categoryId = wrapper.read(Type.VAR_INT); + int statisticId = wrapper.read(Type.VAR_INT); + int value = wrapper.read(Type.VAR_INT); + if (categoryId == CUSTOM_STATS_CATEGORY && protocol.getMappingData().getStatisticsMappings() != null) { + // Rewrite custom statistics id + statisticId = protocol.getMappingData().getStatisticsMappings().getNewId(statisticId); + if (statisticId == -1) { + // Remove entry + newSize--; + continue; } - - if (newSize != size) { - wrapper.set(Type.VAR_INT, 0, newSize); + } else { + // Rewrite the block/item/entity id + RegistryType type = getRegistryTypeForStatistic(categoryId); + IdRewriteFunction statisticsRewriter; + if (type != null && (statisticsRewriter = getRewriter(type)) != null) { + statisticId = statisticsRewriter.rewrite(statisticId); } - }); + } + + wrapper.write(Type.VAR_INT, categoryId); + wrapper.write(Type.VAR_INT, statisticId); + wrapper.write(Type.VAR_INT, value); + } + + if (newSize != size) { + wrapper.set(Type.VAR_INT, 0, newSize); } }); } diff --git a/common/src/main/java/com/viaversion/viaversion/rewriter/TagRewriter.java b/common/src/main/java/com/viaversion/viaversion/rewriter/TagRewriter.java index 83a66945c..7ea563aba 100644 --- a/common/src/main/java/com/viaversion/viaversion/rewriter/TagRewriter.java +++ b/common/src/main/java/com/viaversion/viaversion/rewriter/TagRewriter.java @@ -25,12 +25,9 @@ import com.viaversion.viaversion.api.protocol.Protocol; import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.ints.IntList; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.ArrayList; import java.util.EnumMap; import java.util.HashMap; @@ -38,6 +35,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import org.checkerframework.checker.nullness.qual.Nullable; public class TagRewriter { private static final int[] EMPTY_ARRAY = {}; @@ -136,12 +134,7 @@ public class TagRewriter { * @param readUntilType read and process the types until (including) the given registry type */ public void register(C packetType, @Nullable RegistryType readUntilType) { - protocol.registerClientbound(packetType, new PacketHandlers() { - @Override - public void register() { - handler(getHandler(readUntilType)); - } - }); + protocol.registerClientbound(packetType, getHandler(readUntilType)); } /** @@ -150,12 +143,7 @@ public class TagRewriter { * @param packetType packet type */ public void registerGeneric(C packetType) { - protocol.registerClientbound(packetType, new PacketHandlers() { - @Override - public void register() { - handler(getGenericHandler()); - } - }); + protocol.registerClientbound(packetType, getGenericHandler()); } public PacketHandler getHandler(@Nullable RegistryType readUntilType) { diff --git a/common/src/main/java/com/viaversion/viaversion/rewriter/meta/MetaFilter.java b/common/src/main/java/com/viaversion/viaversion/rewriter/meta/MetaFilter.java index f44c32d9b..133554e8b 100644 --- a/common/src/main/java/com/viaversion/viaversion/rewriter/meta/MetaFilter.java +++ b/common/src/main/java/com/viaversion/viaversion/rewriter/meta/MetaFilter.java @@ -22,9 +22,8 @@ import com.google.common.base.Preconditions; import com.viaversion.viaversion.api.minecraft.entities.EntityType; import com.viaversion.viaversion.api.minecraft.metadata.Metadata; import com.viaversion.viaversion.rewriter.EntityRewriter; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.Objects; +import org.checkerframework.checker.nullness.qual.Nullable; public class MetaFilter { private final MetaHandler handler; diff --git a/common/src/main/java/com/viaversion/viaversion/rewriter/meta/MetaHandlerEvent.java b/common/src/main/java/com/viaversion/viaversion/rewriter/meta/MetaHandlerEvent.java index 884607a99..ff0a22b50 100644 --- a/common/src/main/java/com/viaversion/viaversion/rewriter/meta/MetaHandlerEvent.java +++ b/common/src/main/java/com/viaversion/viaversion/rewriter/meta/MetaHandlerEvent.java @@ -20,9 +20,8 @@ package com.viaversion.viaversion.rewriter.meta; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.entities.EntityType; import com.viaversion.viaversion.api.minecraft.metadata.Metadata; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.List; +import org.checkerframework.checker.nullness.qual.Nullable; public interface MetaHandlerEvent { diff --git a/common/src/main/java/com/viaversion/viaversion/rewriter/meta/MetaHandlerEventImpl.java b/common/src/main/java/com/viaversion/viaversion/rewriter/meta/MetaHandlerEventImpl.java index 5ebde16ca..313ec2988 100644 --- a/common/src/main/java/com/viaversion/viaversion/rewriter/meta/MetaHandlerEventImpl.java +++ b/common/src/main/java/com/viaversion/viaversion/rewriter/meta/MetaHandlerEventImpl.java @@ -21,11 +21,10 @@ package com.viaversion.viaversion.rewriter.meta; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.entities.EntityType; import com.viaversion.viaversion.api.minecraft.metadata.Metadata; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.util.ArrayList; import java.util.Collections; import java.util.List; +import org.checkerframework.checker.nullness.qual.Nullable; public class MetaHandlerEventImpl implements MetaHandlerEvent { private final UserConnection connection; diff --git a/common/src/main/java/com/viaversion/viaversion/unsupported/UnsupportedPlugin.java b/common/src/main/java/com/viaversion/viaversion/unsupported/UnsupportedPlugin.java index ac9154554..95da11a3b 100644 --- a/common/src/main/java/com/viaversion/viaversion/unsupported/UnsupportedPlugin.java +++ b/common/src/main/java/com/viaversion/viaversion/unsupported/UnsupportedPlugin.java @@ -20,7 +20,6 @@ package com.viaversion.viaversion.unsupported; import com.google.common.base.Preconditions; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.platform.UnsupportedSoftware; - import java.util.ArrayList; import java.util.Collections; import java.util.List; diff --git a/common/src/main/java/com/viaversion/viaversion/unsupported/UnsupportedServerSoftware.java b/common/src/main/java/com/viaversion/viaversion/unsupported/UnsupportedServerSoftware.java index ac17752e0..cebe298b0 100644 --- a/common/src/main/java/com/viaversion/viaversion/unsupported/UnsupportedServerSoftware.java +++ b/common/src/main/java/com/viaversion/viaversion/unsupported/UnsupportedServerSoftware.java @@ -19,7 +19,6 @@ package com.viaversion.viaversion.unsupported; import com.google.common.base.Preconditions; import com.viaversion.viaversion.api.platform.UnsupportedSoftware; - import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; diff --git a/common/src/main/java/com/viaversion/viaversion/update/UpdateUtil.java b/common/src/main/java/com/viaversion/viaversion/update/UpdateUtil.java index a7be76127..ed50a7632 100644 --- a/common/src/main/java/com/viaversion/viaversion/update/UpdateUtil.java +++ b/common/src/main/java/com/viaversion/viaversion/update/UpdateUtil.java @@ -21,16 +21,14 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParseException; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.util.GsonUtil; -import org.checkerframework.checker.nullness.qual.Nullable; - import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; -import java.net.MalformedURLException; import java.net.URL; import java.util.Locale; import java.util.UUID; +import org.checkerframework.checker.nullness.qual.Nullable; public class UpdateUtil { diff --git a/common/src/main/java/com/viaversion/viaversion/update/Version.java b/common/src/main/java/com/viaversion/viaversion/update/Version.java index c6bab371b..d43ee5c1c 100644 --- a/common/src/main/java/com/viaversion/viaversion/update/Version.java +++ b/common/src/main/java/com/viaversion/viaversion/update/Version.java @@ -18,7 +18,6 @@ package com.viaversion.viaversion.update; import com.google.common.base.Joiner; - import java.util.Arrays; import java.util.Objects; import java.util.regex.Matcher; diff --git a/common/src/main/java/com/viaversion/viaversion/util/CipherUtil.java b/common/src/main/java/com/viaversion/viaversion/util/CipherUtil.java index 83ba0af88..2b3270462 100644 --- a/common/src/main/java/com/viaversion/viaversion/util/CipherUtil.java +++ b/common/src/main/java/com/viaversion/viaversion/util/CipherUtil.java @@ -17,12 +17,12 @@ */ package com.viaversion.viaversion.util; -import javax.crypto.Cipher; import java.security.KeyFactory; import java.security.NoSuchAlgorithmException; import java.security.PublicKey; import java.security.spec.EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; +import javax.crypto.Cipher; public final class CipherUtil { diff --git a/common/src/main/java/com/viaversion/viaversion/util/CommentStore.java b/common/src/main/java/com/viaversion/viaversion/util/CommentStore.java index a55ecb260..609b7ffc3 100644 --- a/common/src/main/java/com/viaversion/viaversion/util/CommentStore.java +++ b/common/src/main/java/com/viaversion/viaversion/util/CommentStore.java @@ -19,7 +19,6 @@ package com.viaversion.viaversion.util; import com.google.common.io.CharStreams; import com.google.common.io.Files; - import java.io.File; import java.io.IOException; import java.io.InputStream; diff --git a/common/src/main/java/com/viaversion/viaversion/util/Config.java b/common/src/main/java/com/viaversion/viaversion/util/Config.java index 784b7e532..aed43a539 100644 --- a/common/src/main/java/com/viaversion/viaversion/util/Config.java +++ b/common/src/main/java/com/viaversion/viaversion/util/Config.java @@ -22,18 +22,20 @@ import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.configuration.ConfigurationProvider; import com.viaversion.viaversion.libs.kyori.adventure.text.serializer.gson.GsonComponentSerializer; import com.viaversion.viaversion.libs.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; -import org.checkerframework.checker.nullness.qual.Nullable; -import org.yaml.snakeyaml.DumperOptions; -import org.yaml.snakeyaml.Yaml; -import org.yaml.snakeyaml.representer.Representer; - -import java.io.*; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; import java.net.URL; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentSkipListMap; +import org.checkerframework.checker.nullness.qual.Nullable; +import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.Yaml; +import org.yaml.snakeyaml.representer.Representer; public abstract class Config implements ConfigurationProvider { private static final ThreadLocal YAML = ThreadLocal.withInitial(() -> { diff --git a/common/src/main/java/com/viaversion/viaversion/util/SetWrapper.java b/common/src/main/java/com/viaversion/viaversion/util/SetWrapper.java index 7480e0f4a..48b9ff640 100644 --- a/common/src/main/java/com/viaversion/viaversion/util/SetWrapper.java +++ b/common/src/main/java/com/viaversion/viaversion/util/SetWrapper.java @@ -18,11 +18,10 @@ package com.viaversion.viaversion.util; import com.google.common.collect.ForwardingSet; -import org.checkerframework.checker.nullness.qual.NonNull; - import java.util.Collection; import java.util.Set; import java.util.function.Consumer; +import org.checkerframework.checker.nullness.qual.NonNull; public class SetWrapper extends ForwardingSet { diff --git a/common/src/main/java/com/viaversion/viaversion/util/SynchronizedListWrapper.java b/common/src/main/java/com/viaversion/viaversion/util/SynchronizedListWrapper.java index 03c07fda9..b45f05325 100644 --- a/common/src/main/java/com/viaversion/viaversion/util/SynchronizedListWrapper.java +++ b/common/src/main/java/com/viaversion/viaversion/util/SynchronizedListWrapper.java @@ -17,8 +17,6 @@ */ package com.viaversion.viaversion.util; -import org.checkerframework.checker.nullness.qual.NonNull; - import java.util.Collection; import java.util.Comparator; import java.util.Iterator; @@ -26,6 +24,7 @@ import java.util.List; import java.util.ListIterator; import java.util.function.Consumer; import java.util.function.Predicate; +import org.checkerframework.checker.nullness.qual.NonNull; /** * Synchronized list wrapper with the addition of an add handler called when an element is added to the list. diff --git a/common/src/main/java/com/viaversion/viaversion/util/YamlConstructor.java b/common/src/main/java/com/viaversion/viaversion/util/YamlConstructor.java index d97f7b0d1..bd0805288 100644 --- a/common/src/main/java/com/viaversion/viaversion/util/YamlConstructor.java +++ b/common/src/main/java/com/viaversion/viaversion/util/YamlConstructor.java @@ -17,14 +17,13 @@ */ package com.viaversion.viaversion.util; +import java.util.concurrent.ConcurrentSkipListMap; import org.yaml.snakeyaml.constructor.Constructor; import org.yaml.snakeyaml.constructor.SafeConstructor; import org.yaml.snakeyaml.nodes.Node; import org.yaml.snakeyaml.nodes.NodeId; import org.yaml.snakeyaml.nodes.Tag; -import java.util.concurrent.ConcurrentSkipListMap; - public class YamlConstructor extends SafeConstructor { public YamlConstructor() { super(); diff --git a/common/src/test/java/com/viaversion/viaversion/common/dummy/DummyInitializer.java b/common/src/test/java/com/viaversion/viaversion/common/dummy/DummyInitializer.java index 96d3d09fc..2b20f280f 100644 --- a/common/src/test/java/com/viaversion/viaversion/common/dummy/DummyInitializer.java +++ b/common/src/test/java/com/viaversion/viaversion/common/dummy/DummyInitializer.java @@ -23,7 +23,14 @@ import com.viaversion.viaversion.protocol.ProtocolManagerImpl; public final class DummyInitializer { + private static boolean initialized; + public static void init() { + if (initialized) { + return; + } + + initialized = true; Via.init(new ViaManagerImpl(new TestPlatform(), null, null, null)); ((ProtocolManagerImpl) Via.getManager().getProtocolManager()).registerProtocols(); } diff --git a/common/src/test/java/com/viaversion/viaversion/common/dummy/TestConfig.java b/common/src/test/java/com/viaversion/viaversion/common/dummy/TestConfig.java index abc1a4d48..14f5367e8 100644 --- a/common/src/test/java/com/viaversion/viaversion/common/dummy/TestConfig.java +++ b/common/src/test/java/com/viaversion/viaversion/common/dummy/TestConfig.java @@ -18,7 +18,6 @@ package com.viaversion.viaversion.common.dummy; import com.viaversion.viaversion.configuration.AbstractViaConfig; - import java.io.File; import java.net.URL; import java.util.Collections; diff --git a/common/src/test/java/com/viaversion/viaversion/common/dummy/TestPlatform.java b/common/src/test/java/com/viaversion/viaversion/common/dummy/TestPlatform.java index 6a1894e67..210aba024 100644 --- a/common/src/test/java/com/viaversion/viaversion/common/dummy/TestPlatform.java +++ b/common/src/test/java/com/viaversion/viaversion/common/dummy/TestPlatform.java @@ -26,7 +26,6 @@ import com.viaversion.viaversion.api.configuration.ViaVersionConfig; import com.viaversion.viaversion.api.platform.PlatformTask; import com.viaversion.viaversion.api.platform.ViaPlatform; import io.netty.buffer.ByteBuf; - import java.io.File; import java.util.UUID; import java.util.logging.Logger; diff --git a/common/src/test/java/com/viaversion/viaversion/common/entities/EntityTypesTest.java b/common/src/test/java/com/viaversion/viaversion/common/entities/EntityTypesTest.java index df636956a..a78b588cb 100644 --- a/common/src/test/java/com/viaversion/viaversion/common/entities/EntityTypesTest.java +++ b/common/src/test/java/com/viaversion/viaversion/common/entities/EntityTypesTest.java @@ -17,16 +17,15 @@ */ package com.viaversion.viaversion.common.entities; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; import com.viaversion.viaversion.api.minecraft.entities.Entity1_14Types; import com.viaversion.viaversion.api.minecraft.entities.Entity1_15Types; import com.viaversion.viaversion.api.minecraft.entities.Entity1_16Types; import com.viaversion.viaversion.api.minecraft.entities.Entity1_16_2Types; import com.viaversion.viaversion.api.minecraft.entities.Entity1_17Types; import com.viaversion.viaversion.api.minecraft.entities.EntityType; - import java.util.function.Function; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; /** * Test to make sure the array storage approach of entity types works correctly. diff --git a/common/src/test/java/com/viaversion/viaversion/common/nbt/NBTTagTest.java b/common/src/test/java/com/viaversion/viaversion/common/nbt/NBTTagTest.java index 1d14ec8cc..36ecf9faf 100644 --- a/common/src/test/java/com/viaversion/viaversion/common/nbt/NBTTagTest.java +++ b/common/src/test/java/com/viaversion/viaversion/common/nbt/NBTTagTest.java @@ -17,12 +17,10 @@ */ package com.viaversion.viaversion.common.nbt; -import com.github.steveice10.opennbt.tag.builtin.FloatTag; +import java.io.IOException; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import java.io.IOException; - import static com.viaversion.viaversion.api.minecraft.nbt.BinaryTagIO.readString; public class NBTTagTest { diff --git a/common/src/test/java/com/viaversion/viaversion/common/protocol/ProtocolVersionTest.java b/common/src/test/java/com/viaversion/viaversion/common/protocol/ProtocolVersionTest.java index 9b77eddba..e5e60c2e8 100644 --- a/common/src/test/java/com/viaversion/viaversion/common/protocol/ProtocolVersionTest.java +++ b/common/src/test/java/com/viaversion/viaversion/common/protocol/ProtocolVersionTest.java @@ -17,9 +17,9 @@ */ package com.viaversion.viaversion.common.protocol; +import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; public class ProtocolVersionTest { diff --git a/common/src/test/java/com/viaversion/viaversion/common/protocol/remapper/ProtocolHandlersTest.java b/common/src/test/java/com/viaversion/viaversion/common/protocol/remapper/ProtocolHandlersTest.java new file mode 100644 index 000000000..907d68f67 --- /dev/null +++ b/common/src/test/java/com/viaversion/viaversion/common/protocol/remapper/ProtocolHandlersTest.java @@ -0,0 +1,72 @@ +/* + * This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion + * Copyright (C) 2023 ViaVersion and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package com.viaversion.viaversion.common.protocol.remapper; + +import com.viaversion.viaversion.api.Via; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.AbstractProtocol.ProtocolPacket; +import com.viaversion.viaversion.api.protocol.Protocol; +import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; +import com.viaversion.viaversion.common.dummy.DummyInitializer; +import java.util.ArrayList; +import java.util.List; +import java.util.logging.Logger; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +public class ProtocolHandlersTest { + + private static final Logger LOGGER = Logger.getGlobal(); + private static final boolean WARN = false; + + @BeforeAll + static void init() { + DummyInitializer.init(); + } + + @Test + void testHandlersSize() { + if (!WARN) { + return; + } + + for (final Protocol protocol : Via.getManager().getProtocolManager().getProtocols()) { + if (!(protocol instanceof AbstractProtocol)) { + continue; + } + + final AbstractProtocol abstractProtocol = (AbstractProtocol) protocol; + final List protocolMappings = new ArrayList<>(abstractProtocol.getClientbound().values()); + protocolMappings.addAll(abstractProtocol.getServerbound().values()); + + for (final ProtocolPacket protocolMapping : protocolMappings) { + if (!(protocolMapping.getRemapper() instanceof PacketHandlers)) { + continue; + } + + final PacketHandlers packetHandlers = (PacketHandlers) protocolMapping.getRemapper(); + if (packetHandlers.handlersSize() == 0) { + LOGGER.warning("PacketHandlers instance has no handlers: " + protocolMapping + " in " + protocol.getClass().getSimpleName()); + } else if (packetHandlers.handlersSize() == 1) { + LOGGER.warning("PacketHandlers instance only has a single handler; consider using a PacketHandler lambda instead of extending PacketHandlers: " + + protocolMapping + " in " + protocol.getClass().getSimpleName()); + } + } + } + } +} diff --git a/common/src/test/java/com/viaversion/viaversion/common/type/ItemTypeTest.java b/common/src/test/java/com/viaversion/viaversion/common/type/ItemTypeTest.java index 86187b867..3a9a5af41 100644 --- a/common/src/test/java/com/viaversion/viaversion/common/type/ItemTypeTest.java +++ b/common/src/test/java/com/viaversion/viaversion/common/type/ItemTypeTest.java @@ -18,11 +18,11 @@ package com.viaversion.viaversion.common.type; import com.viaversion.viaversion.api.minecraft.item.DataItem; +import com.viaversion.viaversion.api.type.Type; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import com.viaversion.viaversion.api.type.Type; public class ItemTypeTest { @Test diff --git a/common/src/test/java/com/viaversion/viaversion/common/type/StringTypeTest.java b/common/src/test/java/com/viaversion/viaversion/common/type/StringTypeTest.java index edd9ad9da..ed15e83c8 100644 --- a/common/src/test/java/com/viaversion/viaversion/common/type/StringTypeTest.java +++ b/common/src/test/java/com/viaversion/viaversion/common/type/StringTypeTest.java @@ -17,13 +17,13 @@ */ package com.viaversion.viaversion.common.type; +import com.viaversion.viaversion.api.type.Type; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufUtil; import io.netty.buffer.Unpooled; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.function.Executable; -import com.viaversion.viaversion.api.type.Type; public class StringTypeTest { @Test diff --git a/compat/java-compat-common/src/main/java/com/viaversion/viaversion/compatibility/ForcefulFieldModifier.java b/compat/java-compat-common/src/main/java/com/viaversion/viaversion/compatibility/ForcefulFieldModifier.java index 3c76c2bbb..c414347fe 100644 --- a/compat/java-compat-common/src/main/java/com/viaversion/viaversion/compatibility/ForcefulFieldModifier.java +++ b/compat/java-compat-common/src/main/java/com/viaversion/viaversion/compatibility/ForcefulFieldModifier.java @@ -33,10 +33,10 @@ public interface ForcefulFieldModifier { * Note: This does not set the accessibility of the field. *

* - * @param field the field to set the modifiers of. Will throw if {@code null}. + * @param field the field to set the modifiers of. Will throw if {@code null}. * @param holder the eye of the beholder. For static fields, use {@code null}. * @param object the new value to set of the object. */ void setField(final Field field, final Object holder, final Object object) - throws ReflectiveOperationException; + throws ReflectiveOperationException; } diff --git a/compat/java-compat-unsafe/src/main/java/com/viaversion/viaversion/compatibility/unsafe/UnsafeBackedForcefulFieldModifier.java b/compat/java-compat-unsafe/src/main/java/com/viaversion/viaversion/compatibility/unsafe/UnsafeBackedForcefulFieldModifier.java index 1c393e78f..7d19cedca 100644 --- a/compat/java-compat-unsafe/src/main/java/com/viaversion/viaversion/compatibility/unsafe/UnsafeBackedForcefulFieldModifier.java +++ b/compat/java-compat-unsafe/src/main/java/com/viaversion/viaversion/compatibility/unsafe/UnsafeBackedForcefulFieldModifier.java @@ -18,7 +18,6 @@ package com.viaversion.viaversion.compatibility.unsafe; import com.viaversion.viaversion.compatibility.ForcefulFieldModifier; - import java.lang.reflect.Field; import java.util.Objects; diff --git a/sponge/src/main/java/com/viaversion/viaversion/SpongePlugin.java b/sponge/src/main/java/com/viaversion/viaversion/SpongePlugin.java index a2b0a14bb..80de4c58c 100644 --- a/sponge/src/main/java/com/viaversion/viaversion/SpongePlugin.java +++ b/sponge/src/main/java/com/viaversion/viaversion/SpongePlugin.java @@ -35,6 +35,14 @@ import com.viaversion.viaversion.sponge.platform.SpongeViaLoader; import com.viaversion.viaversion.sponge.platform.SpongeViaTask; import com.viaversion.viaversion.sponge.util.LoggerWrapper; import com.viaversion.viaversion.util.GsonUtil; +import java.io.File; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.UUID; +import java.util.logging.Logger; +import java.util.stream.Collectors; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import org.spongepowered.api.Game; import org.spongepowered.api.Platform; @@ -55,15 +63,6 @@ import org.spongepowered.plugin.builtin.jvm.Plugin; import org.spongepowered.plugin.metadata.PluginMetadata; import org.spongepowered.plugin.metadata.model.PluginContributor; -import java.io.File; -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.UUID; -import java.util.logging.Logger; -import java.util.stream.Collectors; - @Plugin("viaversion") public class SpongePlugin implements ViaPlatform { diff --git a/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongeCommandHandler.java b/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongeCommandHandler.java index c54990d9f..7e83c27a7 100644 --- a/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongeCommandHandler.java +++ b/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongeCommandHandler.java @@ -18,6 +18,9 @@ package com.viaversion.viaversion.sponge.commands; import com.viaversion.viaversion.commands.ViaCommandHandler; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; import net.kyori.adventure.text.Component; import org.jetbrains.annotations.NotNull; import org.spongepowered.api.command.Command; @@ -26,10 +29,6 @@ import org.spongepowered.api.command.CommandCompletion; import org.spongepowered.api.command.CommandResult; import org.spongepowered.api.command.parameter.ArgumentReader; -import java.util.List; -import java.util.Optional; -import java.util.stream.Collectors; - public class SpongeCommandHandler extends ViaCommandHandler implements Command.Raw { @Override diff --git a/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongeCommandSender.java b/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongeCommandSender.java index 369036b5c..2ba698545 100644 --- a/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongeCommandSender.java +++ b/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongeCommandSender.java @@ -19,12 +19,11 @@ package com.viaversion.viaversion.sponge.commands; import com.viaversion.viaversion.SpongePlugin; import com.viaversion.viaversion.api.command.ViaCommandSender; +import java.util.UUID; import net.kyori.adventure.identity.Identity; import org.spongepowered.api.command.CommandCause; import org.spongepowered.api.util.Identifiable; -import java.util.UUID; - public class SpongeCommandSender implements ViaCommandSender { private final CommandCause source; diff --git a/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongePlayer.java b/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongePlayer.java index 9e4399dd5..31c15df65 100644 --- a/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongePlayer.java +++ b/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongePlayer.java @@ -19,9 +19,8 @@ package com.viaversion.viaversion.sponge.commands; import com.viaversion.viaversion.SpongePlugin; import com.viaversion.viaversion.api.command.ViaCommandSender; -import org.spongepowered.api.entity.living.player.server.ServerPlayer; - import java.util.UUID; +import org.spongepowered.api.entity.living.player.server.ServerPlayer; public class SpongePlayer implements ViaCommandSender { private final ServerPlayer player; diff --git a/sponge/src/main/java/com/viaversion/viaversion/sponge/handlers/SpongeChannelInitializer.java b/sponge/src/main/java/com/viaversion/viaversion/sponge/handlers/SpongeChannelInitializer.java index d5fbc5822..f7658a6a1 100644 --- a/sponge/src/main/java/com/viaversion/viaversion/sponge/handlers/SpongeChannelInitializer.java +++ b/sponge/src/main/java/com/viaversion/viaversion/sponge/handlers/SpongeChannelInitializer.java @@ -27,7 +27,6 @@ import io.netty.channel.ChannelInitializer; import io.netty.channel.socket.SocketChannel; import io.netty.handler.codec.ByteToMessageDecoder; import io.netty.handler.codec.MessageToByteEncoder; - import java.lang.reflect.Method; public class SpongeChannelInitializer extends ChannelInitializer implements WrappedChannelInitializer { diff --git a/sponge/src/main/java/com/viaversion/viaversion/sponge/handlers/SpongeDecodeHandler.java b/sponge/src/main/java/com/viaversion/viaversion/sponge/handlers/SpongeDecodeHandler.java index 33c01c935..b449f5503 100644 --- a/sponge/src/main/java/com/viaversion/viaversion/sponge/handlers/SpongeDecodeHandler.java +++ b/sponge/src/main/java/com/viaversion/viaversion/sponge/handlers/SpongeDecodeHandler.java @@ -24,7 +24,6 @@ import com.viaversion.viaversion.util.PipelineUtil; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.ByteToMessageDecoder; - import java.lang.reflect.InvocationTargetException; import java.util.List; diff --git a/sponge/src/main/java/com/viaversion/viaversion/sponge/handlers/SpongeEncodeHandler.java b/sponge/src/main/java/com/viaversion/viaversion/sponge/handlers/SpongeEncodeHandler.java index 1d7c41a2d..2a2047879 100644 --- a/sponge/src/main/java/com/viaversion/viaversion/sponge/handlers/SpongeEncodeHandler.java +++ b/sponge/src/main/java/com/viaversion/viaversion/sponge/handlers/SpongeEncodeHandler.java @@ -26,7 +26,6 @@ import com.viaversion.viaversion.util.PipelineUtil; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.MessageToByteEncoder; - import java.lang.reflect.InvocationTargetException; public class SpongeEncodeHandler extends MessageToByteEncoder implements ViaCodecHandler { diff --git a/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/ViaSpongeListener.java b/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/ViaSpongeListener.java index be3141d1b..01b1cfdd7 100644 --- a/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/ViaSpongeListener.java +++ b/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/ViaSpongeListener.java @@ -20,9 +20,8 @@ package com.viaversion.viaversion.sponge.listeners; import com.viaversion.viaversion.SpongePlugin; import com.viaversion.viaversion.ViaListener; import com.viaversion.viaversion.api.protocol.Protocol; -import org.spongepowered.api.Sponge; - import java.lang.reflect.Field; +import org.spongepowered.api.Sponge; public class ViaSpongeListener extends ViaListener { private static Field entityIdField; diff --git a/sponge/src/main/java/com/viaversion/viaversion/sponge/platform/SpongeViaConfig.java b/sponge/src/main/java/com/viaversion/viaversion/sponge/platform/SpongeViaConfig.java index 49586659d..f3e73c87f 100644 --- a/sponge/src/main/java/com/viaversion/viaversion/sponge/platform/SpongeViaConfig.java +++ b/sponge/src/main/java/com/viaversion/viaversion/sponge/platform/SpongeViaConfig.java @@ -18,7 +18,6 @@ package com.viaversion.viaversion.sponge.platform; import com.viaversion.viaversion.configuration.AbstractViaConfig; - import java.io.File; import java.util.Arrays; import java.util.List; diff --git a/sponge/src/main/java/com/viaversion/viaversion/sponge/platform/SpongeViaLoader.java b/sponge/src/main/java/com/viaversion/viaversion/sponge/platform/SpongeViaLoader.java index 7ffd81d2c..89df3391d 100644 --- a/sponge/src/main/java/com/viaversion/viaversion/sponge/platform/SpongeViaLoader.java +++ b/sponge/src/main/java/com/viaversion/viaversion/sponge/platform/SpongeViaLoader.java @@ -21,10 +21,9 @@ import com.viaversion.viaversion.SpongePlugin; import com.viaversion.viaversion.api.platform.PlatformTask; import com.viaversion.viaversion.api.platform.ViaPlatformLoader; import com.viaversion.viaversion.sponge.listeners.UpdateListener; -import org.spongepowered.api.Sponge; - import java.util.HashSet; import java.util.Set; +import org.spongepowered.api.Sponge; public class SpongeViaLoader implements ViaPlatformLoader { diff --git a/sponge/src/main/java/com/viaversion/viaversion/sponge/util/LoggerWrapper.java b/sponge/src/main/java/com/viaversion/viaversion/sponge/util/LoggerWrapper.java index dd185e658..1716d45db 100644 --- a/sponge/src/main/java/com/viaversion/viaversion/sponge/util/LoggerWrapper.java +++ b/sponge/src/main/java/com/viaversion/viaversion/sponge/util/LoggerWrapper.java @@ -17,11 +17,10 @@ */ package com.viaversion.viaversion.sponge.util; -import org.apache.logging.log4j.Logger; - import java.text.MessageFormat; import java.util.logging.Level; import java.util.logging.LogRecord; +import org.apache.logging.log4j.Logger; public class LoggerWrapper extends java.util.logging.Logger { private final Logger base; diff --git a/velocity/src/main/java/com/viaversion/viaversion/VelocityPlugin.java b/velocity/src/main/java/com/viaversion/viaversion/VelocityPlugin.java index 7a00679b6..d82c1792e 100644 --- a/velocity/src/main/java/com/viaversion/viaversion/VelocityPlugin.java +++ b/velocity/src/main/java/com/viaversion/viaversion/VelocityPlugin.java @@ -46,15 +46,14 @@ import com.viaversion.viaversion.velocity.platform.VelocityViaLoader; import com.viaversion.viaversion.velocity.platform.VelocityViaTask; import com.viaversion.viaversion.velocity.service.ProtocolDetectorService; import com.viaversion.viaversion.velocity.util.LoggerWrapper; -import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; -import org.slf4j.Logger; - import java.io.File; import java.nio.file.Path; import java.util.ArrayList; import java.util.List; import java.util.UUID; import java.util.concurrent.TimeUnit; +import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; +import org.slf4j.Logger; @Plugin( id = "viaversion", diff --git a/velocity/src/main/java/com/viaversion/viaversion/velocity/command/VelocityCommandHandler.java b/velocity/src/main/java/com/viaversion/viaversion/velocity/command/VelocityCommandHandler.java index 14d6624dd..6b9a67bd2 100644 --- a/velocity/src/main/java/com/viaversion/viaversion/velocity/command/VelocityCommandHandler.java +++ b/velocity/src/main/java/com/viaversion/viaversion/velocity/command/VelocityCommandHandler.java @@ -20,7 +20,6 @@ package com.viaversion.viaversion.velocity.command; import com.velocitypowered.api.command.SimpleCommand; import com.viaversion.viaversion.commands.ViaCommandHandler; import com.viaversion.viaversion.velocity.command.subs.ProbeSubCmd; - import java.util.List; public class VelocityCommandHandler extends ViaCommandHandler implements SimpleCommand { diff --git a/velocity/src/main/java/com/viaversion/viaversion/velocity/command/VelocityCommandSender.java b/velocity/src/main/java/com/viaversion/viaversion/velocity/command/VelocityCommandSender.java index 9e0c9d48c..ccfa5f942 100644 --- a/velocity/src/main/java/com/viaversion/viaversion/velocity/command/VelocityCommandSender.java +++ b/velocity/src/main/java/com/viaversion/viaversion/velocity/command/VelocityCommandSender.java @@ -21,7 +21,6 @@ import com.velocitypowered.api.command.CommandSource; import com.velocitypowered.api.proxy.Player; import com.viaversion.viaversion.VelocityPlugin; import com.viaversion.viaversion.api.command.ViaCommandSender; - import java.util.UUID; public class VelocityCommandSender implements ViaCommandSender { diff --git a/velocity/src/main/java/com/viaversion/viaversion/velocity/handlers/VelocityChannelInitializer.java b/velocity/src/main/java/com/viaversion/viaversion/velocity/handlers/VelocityChannelInitializer.java index 0f6c16e98..3e0d67125 100644 --- a/velocity/src/main/java/com/viaversion/viaversion/velocity/handlers/VelocityChannelInitializer.java +++ b/velocity/src/main/java/com/viaversion/viaversion/velocity/handlers/VelocityChannelInitializer.java @@ -22,7 +22,6 @@ import com.viaversion.viaversion.connection.UserConnectionImpl; import com.viaversion.viaversion.protocol.ProtocolPipelineImpl; import io.netty.channel.Channel; import io.netty.channel.ChannelInitializer; - import java.lang.reflect.Method; public class VelocityChannelInitializer extends ChannelInitializer { diff --git a/velocity/src/main/java/com/viaversion/viaversion/velocity/handlers/VelocityDecodeHandler.java b/velocity/src/main/java/com/viaversion/viaversion/velocity/handlers/VelocityDecodeHandler.java index f98ba78c1..c680912ca 100644 --- a/velocity/src/main/java/com/viaversion/viaversion/velocity/handlers/VelocityDecodeHandler.java +++ b/velocity/src/main/java/com/viaversion/viaversion/velocity/handlers/VelocityDecodeHandler.java @@ -25,7 +25,6 @@ import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelPipeline; import io.netty.handler.codec.MessageToMessageDecoder; - import java.util.List; @ChannelHandler.Sharable diff --git a/velocity/src/main/java/com/viaversion/viaversion/velocity/handlers/VelocityEncodeHandler.java b/velocity/src/main/java/com/viaversion/viaversion/velocity/handlers/VelocityEncodeHandler.java index 55868edbb..6b13714ed 100644 --- a/velocity/src/main/java/com/viaversion/viaversion/velocity/handlers/VelocityEncodeHandler.java +++ b/velocity/src/main/java/com/viaversion/viaversion/velocity/handlers/VelocityEncodeHandler.java @@ -24,7 +24,6 @@ import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.MessageToMessageEncoder; - import java.util.List; @ChannelHandler.Sharable diff --git a/velocity/src/main/java/com/viaversion/viaversion/velocity/platform/VelocityViaConfig.java b/velocity/src/main/java/com/viaversion/viaversion/velocity/platform/VelocityViaConfig.java index 6175cc51d..51a3f1e4d 100644 --- a/velocity/src/main/java/com/viaversion/viaversion/velocity/platform/VelocityViaConfig.java +++ b/velocity/src/main/java/com/viaversion/viaversion/velocity/platform/VelocityViaConfig.java @@ -19,7 +19,6 @@ package com.viaversion.viaversion.velocity.platform; import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; import com.viaversion.viaversion.configuration.AbstractViaConfig; - import java.io.File; import java.util.Arrays; import java.util.HashMap; diff --git a/velocity/src/main/java/com/viaversion/viaversion/velocity/platform/VelocityViaInjector.java b/velocity/src/main/java/com/viaversion/viaversion/velocity/platform/VelocityViaInjector.java index ffc68a487..0428f2235 100644 --- a/velocity/src/main/java/com/viaversion/viaversion/velocity/platform/VelocityViaInjector.java +++ b/velocity/src/main/java/com/viaversion/viaversion/velocity/platform/VelocityViaInjector.java @@ -27,7 +27,6 @@ import com.viaversion.viaversion.velocity.handlers.VelocityChannelInitializer; import io.netty.channel.ChannelInitializer; import it.unimi.dsi.fastutil.ints.IntLinkedOpenHashSet; import it.unimi.dsi.fastutil.ints.IntSortedSet; - import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; diff --git a/velocity/src/main/java/com/viaversion/viaversion/velocity/providers/VelocityBossBarProvider.java b/velocity/src/main/java/com/viaversion/viaversion/velocity/providers/VelocityBossBarProvider.java index 89edfc14f..10ac879b3 100644 --- a/velocity/src/main/java/com/viaversion/viaversion/velocity/providers/VelocityBossBarProvider.java +++ b/velocity/src/main/java/com/viaversion/viaversion/velocity/providers/VelocityBossBarProvider.java @@ -20,7 +20,6 @@ package com.viaversion.viaversion.velocity.providers; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.BossBarProvider; import com.viaversion.viaversion.velocity.storage.VelocityStorage; - import java.util.UUID; public class VelocityBossBarProvider extends BossBarProvider { diff --git a/velocity/src/main/java/com/viaversion/viaversion/velocity/providers/VelocityVersionProvider.java b/velocity/src/main/java/com/viaversion/viaversion/velocity/providers/VelocityVersionProvider.java index c05986cf2..302fc5893 100644 --- a/velocity/src/main/java/com/viaversion/viaversion/velocity/providers/VelocityVersionProvider.java +++ b/velocity/src/main/java/com/viaversion/viaversion/velocity/providers/VelocityVersionProvider.java @@ -25,7 +25,6 @@ import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; import com.viaversion.viaversion.protocols.base.BaseVersionProvider; import com.viaversion.viaversion.velocity.platform.VelocityViaInjector; import io.netty.channel.ChannelHandler; - import java.lang.reflect.Method; import java.util.Arrays; import java.util.stream.IntStream; diff --git a/velocity/src/main/java/com/viaversion/viaversion/velocity/service/ProtocolDetectorService.java b/velocity/src/main/java/com/viaversion/viaversion/velocity/service/ProtocolDetectorService.java index 18b64ec81..87f5d67b9 100644 --- a/velocity/src/main/java/com/viaversion/viaversion/velocity/service/ProtocolDetectorService.java +++ b/velocity/src/main/java/com/viaversion/viaversion/velocity/service/ProtocolDetectorService.java @@ -23,7 +23,6 @@ import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; import com.viaversion.viaversion.platform.AbstractProtocolDetectorService; import com.viaversion.viaversion.velocity.platform.VelocityViaConfig; - import java.util.Collection; import java.util.HashSet; import java.util.Map; diff --git a/velocity/src/main/java/com/viaversion/viaversion/velocity/storage/VelocityStorage.java b/velocity/src/main/java/com/viaversion/viaversion/velocity/storage/VelocityStorage.java index 0af68664a..8f282d8ee 100644 --- a/velocity/src/main/java/com/viaversion/viaversion/velocity/storage/VelocityStorage.java +++ b/velocity/src/main/java/com/viaversion/viaversion/velocity/storage/VelocityStorage.java @@ -20,7 +20,6 @@ package com.viaversion.viaversion.velocity.storage; import com.velocitypowered.api.proxy.Player; import com.viaversion.viaversion.api.connection.StorableObject; import com.viaversion.viaversion.util.ReflectionUtil; - import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.List; diff --git a/velocity/src/main/java/com/viaversion/viaversion/velocity/util/LoggerWrapper.java b/velocity/src/main/java/com/viaversion/viaversion/velocity/util/LoggerWrapper.java index 94697de70..7997e3f86 100644 --- a/velocity/src/main/java/com/viaversion/viaversion/velocity/util/LoggerWrapper.java +++ b/velocity/src/main/java/com/viaversion/viaversion/velocity/util/LoggerWrapper.java @@ -17,11 +17,10 @@ */ package com.viaversion.viaversion.velocity.util; -import org.slf4j.Logger; - import java.text.MessageFormat; import java.util.logging.Level; import java.util.logging.LogRecord; +import org.slf4j.Logger; public class LoggerWrapper extends java.util.logging.Logger { private final Logger base;