diff --git a/pom.xml b/pom.xml index 5c38e888..31bf5b6b 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.github.steveice10 mcprotocollib - 20w22a-SNAPSHOT + 1.16-rc1 jar MCProtocolLib diff --git a/src/main/java/com/github/steveice10/mc/protocol/MinecraftConstants.java b/src/main/java/com/github/steveice10/mc/protocol/MinecraftConstants.java index b466ff63..2736358b 100644 --- a/src/main/java/com/github/steveice10/mc/protocol/MinecraftConstants.java +++ b/src/main/java/com/github/steveice10/mc/protocol/MinecraftConstants.java @@ -2,8 +2,8 @@ package com.github.steveice10.mc.protocol; public class MinecraftConstants { // General Constants - public static final String GAME_VERSION = "20w22a"; - public static final int PROTOCOL_VERSION = 719; + public static final String GAME_VERSION = "1.16-rc1"; + public static final int PROTOCOL_VERSION = 734; // General Key Constants public static final String PROFILE_KEY = "profile"; diff --git a/src/main/java/com/github/steveice10/mc/protocol/MinecraftProtocol.java b/src/main/java/com/github/steveice10/mc/protocol/MinecraftProtocol.java index 4aa1e0de..b0e83882 100644 --- a/src/main/java/com/github/steveice10/mc/protocol/MinecraftProtocol.java +++ b/src/main/java/com/github/steveice10/mc/protocol/MinecraftProtocol.java @@ -375,97 +375,96 @@ public class MinecraftProtocol extends PacketProtocol { private void initClientGame(Session session) { this.registerIncoming(0x00, ServerSpawnEntityPacket.class); this.registerIncoming(0x01, ServerSpawnExpOrbPacket.class); - this.registerIncoming(0x02, ServerSpawnWeatherEntityPacket.class); - this.registerIncoming(0x03, ServerSpawnLivingEntityPacket.class); - this.registerIncoming(0x04, ServerSpawnPaintingPacket.class); - this.registerIncoming(0x05, ServerSpawnPlayerPacket.class); - this.registerIncoming(0x06, ServerEntityAnimationPacket.class); - this.registerIncoming(0x07, ServerStatisticsPacket.class); - this.registerIncoming(0x08, ServerPlayerActionAckPacket.class); - this.registerIncoming(0x09, ServerBlockBreakAnimPacket.class); - this.registerIncoming(0x0A, ServerUpdateTileEntityPacket.class); - this.registerIncoming(0x0B, ServerBlockValuePacket.class); - this.registerIncoming(0x0C, ServerBlockChangePacket.class); - this.registerIncoming(0x0D, ServerBossBarPacket.class); - this.registerIncoming(0x0E, ServerDifficultyPacket.class); - this.registerIncoming(0x0F, ServerChatPacket.class); - this.registerIncoming(0x10, ServerMultiBlockChangePacket.class); - this.registerIncoming(0x11, ServerTabCompletePacket.class); - this.registerIncoming(0x12, ServerDeclareCommandsPacket.class); - this.registerIncoming(0x13, ServerConfirmTransactionPacket.class); - this.registerIncoming(0x14, ServerCloseWindowPacket.class); - this.registerIncoming(0x15, ServerWindowItemsPacket.class); - this.registerIncoming(0x16, ServerWindowPropertyPacket.class); - this.registerIncoming(0x17, ServerSetSlotPacket.class); - this.registerIncoming(0x18, ServerSetCooldownPacket.class); - this.registerIncoming(0x19, ServerPluginMessagePacket.class); - this.registerIncoming(0x1A, ServerPlaySoundPacket.class); - this.registerIncoming(0x1B, ServerDisconnectPacket.class); - this.registerIncoming(0x1C, ServerEntityStatusPacket.class); - this.registerIncoming(0x1D, ServerExplosionPacket.class); - this.registerIncoming(0x1E, ServerUnloadChunkPacket.class); - this.registerIncoming(0x1F, ServerNotifyClientPacket.class); - this.registerIncoming(0x20, ServerOpenHorseWindowPacket.class); - this.registerIncoming(0x21, ServerKeepAlivePacket.class); - this.registerIncoming(0x22, ServerChunkDataPacket.class); - this.registerIncoming(0x23, ServerPlayEffectPacket.class); - this.registerIncoming(0x24, ServerSpawnParticlePacket.class); - this.registerIncoming(0x25, ServerUpdateLightPacket.class); - this.registerIncoming(0x26, ServerJoinGamePacket.class); - this.registerIncoming(0x27, ServerMapDataPacket.class); - this.registerIncoming(0x28, ServerTradeListPacket.class); - this.registerIncoming(0x29, ServerEntityPositionPacket.class); - this.registerIncoming(0x2A, ServerEntityPositionRotationPacket.class); - this.registerIncoming(0x2B, ServerEntityRotationPacket.class); - this.registerIncoming(0x2C, ServerEntityMovementPacket.class); - this.registerIncoming(0x2D, ServerVehicleMovePacket.class); - this.registerIncoming(0x2E, ServerOpenBookPacket.class); - this.registerIncoming(0x2F, ServerOpenWindowPacket.class); - this.registerIncoming(0x30, ServerOpenTileEntityEditorPacket.class); - this.registerIncoming(0x31, ServerPreparedCraftingGridPacket.class); - this.registerIncoming(0x32, ServerPlayerAbilitiesPacket.class); - this.registerIncoming(0x33, ServerCombatPacket.class); - this.registerIncoming(0x34, ServerPlayerListEntryPacket.class); - this.registerIncoming(0x35, ServerPlayerFacingPacket.class); - this.registerIncoming(0x36, ServerPlayerPositionRotationPacket.class); - this.registerIncoming(0x37, ServerUnlockRecipesPacket.class); - this.registerIncoming(0x38, ServerEntityDestroyPacket.class); - this.registerIncoming(0x39, ServerEntityRemoveEffectPacket.class); - this.registerIncoming(0x3A, ServerResourcePackSendPacket.class); - this.registerIncoming(0x3B, ServerRespawnPacket.class); - this.registerIncoming(0x3C, ServerEntityHeadLookPacket.class); - this.registerIncoming(0x3D, ServerAdvancementTabPacket.class); - this.registerIncoming(0x3E, ServerWorldBorderPacket.class); - this.registerIncoming(0x3F, ServerSwitchCameraPacket.class); - this.registerIncoming(0x40, ServerPlayerChangeHeldItemPacket.class); - this.registerIncoming(0x41, ServerUpdateViewPositionPacket.class); - this.registerIncoming(0x42, ServerUpdateViewDistancePacket.class); - this.registerIncoming(0x43, ServerSpawnPositionPacket.class); - this.registerIncoming(0x44, ServerDisplayScoreboardPacket.class); - this.registerIncoming(0x45, ServerEntityMetadataPacket.class); - this.registerIncoming(0x46, ServerEntityAttachPacket.class); - this.registerIncoming(0x47, ServerEntityVelocityPacket.class); - this.registerIncoming(0x48, ServerEntityEquipmentPacket.class); - this.registerIncoming(0x49, ServerPlayerSetExperiencePacket.class); - this.registerIncoming(0x4A, ServerPlayerHealthPacket.class); - this.registerIncoming(0x4B, ServerScoreboardObjectivePacket.class); - this.registerIncoming(0x4C, ServerEntitySetPassengersPacket.class); - this.registerIncoming(0x4D, ServerTeamPacket.class); - this.registerIncoming(0x4E, ServerUpdateScorePacket.class); - this.registerIncoming(0x4F, ServerUpdateTimePacket.class); - this.registerIncoming(0x50, ServerTitlePacket.class); - this.registerIncoming(0x51, ServerEntitySoundEffectPacket.class); - this.registerIncoming(0x52, ServerPlayBuiltinSoundPacket.class); - this.registerIncoming(0x53, ServerStopSoundPacket.class); - this.registerIncoming(0x54, ServerPlayerListDataPacket.class); - this.registerIncoming(0x55, ServerNBTResponsePacket.class); - this.registerIncoming(0x56, ServerEntityCollectItemPacket.class); - this.registerIncoming(0x57, ServerEntityTeleportPacket.class); - this.registerIncoming(0x58, ServerAdvancementsPacket.class); - this.registerIncoming(0x59, ServerEntityPropertiesPacket.class); - this.registerIncoming(0x5A, ServerEntityEffectPacket.class); - this.registerIncoming(0x5B, ServerDeclareRecipesPacket.class); - this.registerIncoming(0x5C, ServerDeclareTagsPacket.class); + this.registerIncoming(0x02, ServerSpawnLivingEntityPacket.class); + this.registerIncoming(0x03, ServerSpawnPaintingPacket.class); + this.registerIncoming(0x04, ServerSpawnPlayerPacket.class); + this.registerIncoming(0x05, ServerEntityAnimationPacket.class); + this.registerIncoming(0x06, ServerStatisticsPacket.class); + this.registerIncoming(0x07, ServerPlayerActionAckPacket.class); + this.registerIncoming(0x08, ServerBlockBreakAnimPacket.class); + this.registerIncoming(0x09, ServerUpdateTileEntityPacket.class); + this.registerIncoming(0x0A, ServerBlockValuePacket.class); + this.registerIncoming(0x0B, ServerBlockChangePacket.class); + this.registerIncoming(0x0C, ServerBossBarPacket.class); + this.registerIncoming(0x0D, ServerDifficultyPacket.class); + this.registerIncoming(0x0E, ServerChatPacket.class); + this.registerIncoming(0x1F, ServerMultiBlockChangePacket.class); + this.registerIncoming(0x10, ServerTabCompletePacket.class); + this.registerIncoming(0x11, ServerDeclareCommandsPacket.class); + this.registerIncoming(0x12, ServerConfirmTransactionPacket.class); + this.registerIncoming(0x13, ServerCloseWindowPacket.class); + this.registerIncoming(0x14, ServerWindowItemsPacket.class); + this.registerIncoming(0x15, ServerWindowPropertyPacket.class); + this.registerIncoming(0x16, ServerSetSlotPacket.class); + this.registerIncoming(0x17, ServerSetCooldownPacket.class); + this.registerIncoming(0x18, ServerPluginMessagePacket.class); + this.registerIncoming(0x19, ServerPlaySoundPacket.class); + this.registerIncoming(0x1A, ServerDisconnectPacket.class); + this.registerIncoming(0x1B, ServerEntityStatusPacket.class); + this.registerIncoming(0x1C, ServerExplosionPacket.class); + this.registerIncoming(0x1D, ServerUnloadChunkPacket.class); + this.registerIncoming(0x1E, ServerNotifyClientPacket.class); + this.registerIncoming(0x2F, ServerOpenHorseWindowPacket.class); + this.registerIncoming(0x20, ServerKeepAlivePacket.class); + this.registerIncoming(0x21, ServerChunkDataPacket.class); + this.registerIncoming(0x22, ServerPlayEffectPacket.class); + this.registerIncoming(0x23, ServerSpawnParticlePacket.class); + this.registerIncoming(0x24, ServerUpdateLightPacket.class); + this.registerIncoming(0x25, ServerJoinGamePacket.class); + this.registerIncoming(0x26, ServerMapDataPacket.class); + this.registerIncoming(0x27, ServerTradeListPacket.class); + this.registerIncoming(0x28, ServerEntityPositionPacket.class); + this.registerIncoming(0x29, ServerEntityPositionRotationPacket.class); + this.registerIncoming(0x2A, ServerEntityRotationPacket.class); + this.registerIncoming(0x2B, ServerEntityMovementPacket.class); + this.registerIncoming(0x2C, ServerVehicleMovePacket.class); + this.registerIncoming(0x2D, ServerOpenBookPacket.class); + this.registerIncoming(0x2E, ServerOpenWindowPacket.class); + this.registerIncoming(0x3F, ServerOpenTileEntityEditorPacket.class); + this.registerIncoming(0x30, ServerPreparedCraftingGridPacket.class); + this.registerIncoming(0x31, ServerPlayerAbilitiesPacket.class); + this.registerIncoming(0x32, ServerCombatPacket.class); + this.registerIncoming(0x33, ServerPlayerListEntryPacket.class); + this.registerIncoming(0x34, ServerPlayerFacingPacket.class); + this.registerIncoming(0x35, ServerPlayerPositionRotationPacket.class); + this.registerIncoming(0x36, ServerUnlockRecipesPacket.class); + this.registerIncoming(0x37, ServerEntityDestroyPacket.class); + this.registerIncoming(0x38, ServerEntityRemoveEffectPacket.class); + this.registerIncoming(0x39, ServerResourcePackSendPacket.class); + this.registerIncoming(0x3A, ServerRespawnPacket.class); + this.registerIncoming(0x3B, ServerEntityHeadLookPacket.class); + this.registerIncoming(0x3C, ServerAdvancementTabPacket.class); + this.registerIncoming(0x3D, ServerWorldBorderPacket.class); + this.registerIncoming(0x3E, ServerSwitchCameraPacket.class); + this.registerIncoming(0x4F, ServerPlayerChangeHeldItemPacket.class); + this.registerIncoming(0x40, ServerUpdateViewPositionPacket.class); + this.registerIncoming(0x41, ServerUpdateViewDistancePacket.class); + this.registerIncoming(0x42, ServerSpawnPositionPacket.class); + this.registerIncoming(0x43, ServerDisplayScoreboardPacket.class); + this.registerIncoming(0x44, ServerEntityMetadataPacket.class); + this.registerIncoming(0x45, ServerEntityAttachPacket.class); + this.registerIncoming(0x46, ServerEntityVelocityPacket.class); + this.registerIncoming(0x47, ServerEntityEquipmentPacket.class); + this.registerIncoming(0x48, ServerPlayerSetExperiencePacket.class); + this.registerIncoming(0x49, ServerPlayerHealthPacket.class); + this.registerIncoming(0x4A, ServerScoreboardObjectivePacket.class); + this.registerIncoming(0x4B, ServerEntitySetPassengersPacket.class); + this.registerIncoming(0x4C, ServerTeamPacket.class); + this.registerIncoming(0x4D, ServerUpdateScorePacket.class); + this.registerIncoming(0x4E, ServerUpdateTimePacket.class); + this.registerIncoming(0x5F, ServerTitlePacket.class); + this.registerIncoming(0x50, ServerEntitySoundEffectPacket.class); + this.registerIncoming(0x51, ServerPlayBuiltinSoundPacket.class); + this.registerIncoming(0x52, ServerStopSoundPacket.class); + this.registerIncoming(0x53, ServerPlayerListDataPacket.class); + this.registerIncoming(0x54, ServerNBTResponsePacket.class); + this.registerIncoming(0x55, ServerEntityCollectItemPacket.class); + this.registerIncoming(0x56, ServerEntityTeleportPacket.class); + this.registerIncoming(0x57, ServerAdvancementsPacket.class); + this.registerIncoming(0x58, ServerEntityPropertiesPacket.class); + this.registerIncoming(0x59, ServerEntityEffectPacket.class); + this.registerIncoming(0x5A, ServerDeclareRecipesPacket.class); + this.registerIncoming(0x5B, ServerDeclareTagsPacket.class); this.registerOutgoing(0x00, ClientTeleportConfirmPacket.class); this.registerOutgoing(0x01, ClientBlockNBTRequestPacket.class); @@ -568,96 +567,95 @@ public class MinecraftProtocol extends PacketProtocol { this.registerOutgoing(0x00, ServerSpawnEntityPacket.class); this.registerOutgoing(0x01, ServerSpawnExpOrbPacket.class); this.registerOutgoing(0x02, ServerSpawnWeatherEntityPacket.class); - this.registerOutgoing(0x03, ServerSpawnLivingEntityPacket.class); - this.registerOutgoing(0x04, ServerSpawnPaintingPacket.class); - this.registerOutgoing(0x05, ServerSpawnPlayerPacket.class); - this.registerOutgoing(0x06, ServerEntityAnimationPacket.class); - this.registerOutgoing(0x07, ServerStatisticsPacket.class); - this.registerOutgoing(0x08, ServerPlayerActionAckPacket.class); - this.registerOutgoing(0x09, ServerBlockBreakAnimPacket.class); - this.registerOutgoing(0x0A, ServerUpdateTileEntityPacket.class); - this.registerOutgoing(0x0B, ServerBlockValuePacket.class); - this.registerOutgoing(0x0C, ServerBlockChangePacket.class); - this.registerOutgoing(0x0D, ServerBossBarPacket.class); - this.registerOutgoing(0x0E, ServerDifficultyPacket.class); - this.registerOutgoing(0x0F, ServerChatPacket.class); - this.registerOutgoing(0x10, ServerMultiBlockChangePacket.class); - this.registerOutgoing(0x11, ServerTabCompletePacket.class); - this.registerOutgoing(0x12, ServerDeclareCommandsPacket.class); - this.registerOutgoing(0x13, ServerConfirmTransactionPacket.class); - this.registerOutgoing(0x14, ServerCloseWindowPacket.class); - this.registerOutgoing(0x15, ServerWindowItemsPacket.class); - this.registerOutgoing(0x16, ServerWindowPropertyPacket.class); - this.registerOutgoing(0x17, ServerSetSlotPacket.class); - this.registerOutgoing(0x18, ServerSetCooldownPacket.class); - this.registerOutgoing(0x19, ServerPluginMessagePacket.class); - this.registerOutgoing(0x1A, ServerPlaySoundPacket.class); - this.registerOutgoing(0x1B, ServerDisconnectPacket.class); - this.registerOutgoing(0x1C, ServerEntityStatusPacket.class); - this.registerOutgoing(0x1D, ServerExplosionPacket.class); - this.registerOutgoing(0x1E, ServerUnloadChunkPacket.class); - this.registerOutgoing(0x1F, ServerNotifyClientPacket.class); - this.registerOutgoing(0x20, ServerOpenHorseWindowPacket.class); - this.registerOutgoing(0x21, ServerKeepAlivePacket.class); - this.registerOutgoing(0x22, ServerChunkDataPacket.class); - this.registerOutgoing(0x23, ServerPlayEffectPacket.class); - this.registerOutgoing(0x24, ServerSpawnParticlePacket.class); - this.registerOutgoing(0x25, ServerUpdateLightPacket.class); - this.registerOutgoing(0x26, ServerJoinGamePacket.class); - this.registerOutgoing(0x27, ServerMapDataPacket.class); - this.registerOutgoing(0x28, ServerTradeListPacket.class); - this.registerOutgoing(0x29, ServerEntityPositionPacket.class); - this.registerOutgoing(0x2A, ServerEntityPositionRotationPacket.class); - this.registerOutgoing(0x2B, ServerEntityRotationPacket.class); - this.registerOutgoing(0x2C, ServerEntityMovementPacket.class); - this.registerOutgoing(0x2D, ServerVehicleMovePacket.class); - this.registerOutgoing(0x2E, ServerOpenBookPacket.class); - this.registerOutgoing(0x2F, ServerOpenWindowPacket.class); - this.registerOutgoing(0x30, ServerOpenTileEntityEditorPacket.class); - this.registerOutgoing(0x31, ServerPreparedCraftingGridPacket.class); - this.registerOutgoing(0x32, ServerPlayerAbilitiesPacket.class); - this.registerOutgoing(0x33, ServerCombatPacket.class); - this.registerOutgoing(0x34, ServerPlayerListEntryPacket.class); - this.registerOutgoing(0x35, ServerPlayerFacingPacket.class); - this.registerOutgoing(0x36, ServerPlayerPositionRotationPacket.class); - this.registerOutgoing(0x37, ServerUnlockRecipesPacket.class); - this.registerOutgoing(0x38, ServerEntityDestroyPacket.class); - this.registerOutgoing(0x39, ServerEntityRemoveEffectPacket.class); - this.registerOutgoing(0x3A, ServerResourcePackSendPacket.class); - this.registerOutgoing(0x3B, ServerRespawnPacket.class); - this.registerOutgoing(0x3C, ServerEntityHeadLookPacket.class); - this.registerOutgoing(0x3D, ServerAdvancementTabPacket.class); - this.registerOutgoing(0x3E, ServerWorldBorderPacket.class); - this.registerOutgoing(0x3F, ServerSwitchCameraPacket.class); - this.registerOutgoing(0x40, ServerPlayerChangeHeldItemPacket.class); - this.registerOutgoing(0x41, ServerUpdateViewPositionPacket.class); - this.registerOutgoing(0x42, ServerUpdateViewDistancePacket.class); - this.registerOutgoing(0x43, ServerSpawnPositionPacket.class); - this.registerOutgoing(0x44, ServerDisplayScoreboardPacket.class); - this.registerOutgoing(0x45, ServerEntityMetadataPacket.class); - this.registerOutgoing(0x46, ServerEntityAttachPacket.class); - this.registerOutgoing(0x47, ServerEntityVelocityPacket.class); - this.registerOutgoing(0x48, ServerEntityEquipmentPacket.class); - this.registerOutgoing(0x49, ServerPlayerSetExperiencePacket.class); - this.registerOutgoing(0x4A, ServerPlayerHealthPacket.class); - this.registerOutgoing(0x4B, ServerScoreboardObjectivePacket.class); - this.registerOutgoing(0x4C, ServerEntitySetPassengersPacket.class); - this.registerOutgoing(0x4D, ServerTeamPacket.class); - this.registerOutgoing(0x4E, ServerUpdateScorePacket.class); - this.registerOutgoing(0x4F, ServerUpdateTimePacket.class); - this.registerOutgoing(0x50, ServerTitlePacket.class); - this.registerOutgoing(0x51, ServerEntitySoundEffectPacket.class); - this.registerOutgoing(0x52, ServerPlayBuiltinSoundPacket.class); - this.registerOutgoing(0x53, ServerStopSoundPacket.class); - this.registerOutgoing(0x54, ServerPlayerListDataPacket.class); - this.registerOutgoing(0x55, ServerNBTResponsePacket.class); - this.registerOutgoing(0x56, ServerEntityCollectItemPacket.class); - this.registerOutgoing(0x57, ServerEntityTeleportPacket.class); - this.registerOutgoing(0x58, ServerAdvancementsPacket.class); - this.registerOutgoing(0x59, ServerEntityPropertiesPacket.class); - this.registerOutgoing(0x5A, ServerEntityEffectPacket.class); - this.registerOutgoing(0x5B, ServerDeclareRecipesPacket.class); - this.registerOutgoing(0x5C, ServerDeclareTagsPacket.class); + this.registerOutgoing(0x03, ServerSpawnPaintingPacket.class); + this.registerOutgoing(0x04, ServerSpawnPlayerPacket.class); + this.registerOutgoing(0x05, ServerEntityAnimationPacket.class); + this.registerOutgoing(0x06, ServerStatisticsPacket.class); + this.registerOutgoing(0x07, ServerPlayerActionAckPacket.class); + this.registerOutgoing(0x08, ServerBlockBreakAnimPacket.class); + this.registerOutgoing(0x09, ServerUpdateTileEntityPacket.class); + this.registerOutgoing(0x0A, ServerBlockValuePacket.class); + this.registerOutgoing(0x0B, ServerBlockChangePacket.class); + this.registerOutgoing(0x0C, ServerBossBarPacket.class); + this.registerOutgoing(0x0D, ServerDifficultyPacket.class); + this.registerOutgoing(0x0E, ServerChatPacket.class); + this.registerOutgoing(0x0F, ServerMultiBlockChangePacket.class); + this.registerOutgoing(0x10, ServerTabCompletePacket.class); + this.registerOutgoing(0x11, ServerDeclareCommandsPacket.class); + this.registerOutgoing(0x12, ServerConfirmTransactionPacket.class); + this.registerOutgoing(0x13, ServerCloseWindowPacket.class); + this.registerOutgoing(0x14, ServerWindowItemsPacket.class); + this.registerOutgoing(0x15, ServerWindowPropertyPacket.class); + this.registerOutgoing(0x16, ServerSetSlotPacket.class); + this.registerOutgoing(0x17, ServerSetCooldownPacket.class); + this.registerOutgoing(0x18, ServerPluginMessagePacket.class); + this.registerOutgoing(0x19, ServerPlaySoundPacket.class); + this.registerOutgoing(0x1A, ServerDisconnectPacket.class); + this.registerOutgoing(0x1B, ServerEntityStatusPacket.class); + this.registerOutgoing(0x1C, ServerExplosionPacket.class); + this.registerOutgoing(0x1D, ServerUnloadChunkPacket.class); + this.registerOutgoing(0x1E, ServerNotifyClientPacket.class); + this.registerOutgoing(0x2F, ServerOpenHorseWindowPacket.class); + this.registerOutgoing(0x20, ServerKeepAlivePacket.class); + this.registerOutgoing(0x21, ServerChunkDataPacket.class); + this.registerOutgoing(0x22, ServerPlayEffectPacket.class); + this.registerOutgoing(0x23, ServerSpawnParticlePacket.class); + this.registerOutgoing(0x24, ServerUpdateLightPacket.class); + this.registerOutgoing(0x25, ServerJoinGamePacket.class); + this.registerOutgoing(0x26, ServerMapDataPacket.class); + this.registerOutgoing(0x27, ServerTradeListPacket.class); + this.registerOutgoing(0x28, ServerEntityPositionPacket.class); + this.registerOutgoing(0x29, ServerEntityPositionRotationPacket.class); + this.registerOutgoing(0x2A, ServerEntityRotationPacket.class); + this.registerOutgoing(0x2B, ServerEntityMovementPacket.class); + this.registerOutgoing(0x2C, ServerVehicleMovePacket.class); + this.registerOutgoing(0x2D, ServerOpenBookPacket.class); + this.registerOutgoing(0x2E, ServerOpenWindowPacket.class); + this.registerOutgoing(0x3F, ServerOpenTileEntityEditorPacket.class); + this.registerOutgoing(0x30, ServerPreparedCraftingGridPacket.class); + this.registerOutgoing(0x31, ServerPlayerAbilitiesPacket.class); + this.registerOutgoing(0x32, ServerCombatPacket.class); + this.registerOutgoing(0x33, ServerPlayerListEntryPacket.class); + this.registerOutgoing(0x34, ServerPlayerFacingPacket.class); + this.registerOutgoing(0x35, ServerPlayerPositionRotationPacket.class); + this.registerOutgoing(0x36, ServerUnlockRecipesPacket.class); + this.registerOutgoing(0x37, ServerEntityDestroyPacket.class); + this.registerOutgoing(0x38, ServerEntityRemoveEffectPacket.class); + this.registerOutgoing(0x39, ServerResourcePackSendPacket.class); + this.registerOutgoing(0x3A, ServerRespawnPacket.class); + this.registerOutgoing(0x3B, ServerEntityHeadLookPacket.class); + this.registerOutgoing(0x3C, ServerAdvancementTabPacket.class); + this.registerOutgoing(0x3D, ServerWorldBorderPacket.class); + this.registerOutgoing(0x3E, ServerSwitchCameraPacket.class); + this.registerOutgoing(0x4F, ServerPlayerChangeHeldItemPacket.class); + this.registerOutgoing(0x40, ServerUpdateViewPositionPacket.class); + this.registerOutgoing(0x41, ServerUpdateViewDistancePacket.class); + this.registerOutgoing(0x42, ServerSpawnPositionPacket.class); + this.registerOutgoing(0x43, ServerDisplayScoreboardPacket.class); + this.registerOutgoing(0x44, ServerEntityMetadataPacket.class); + this.registerOutgoing(0x45, ServerEntityAttachPacket.class); + this.registerOutgoing(0x46, ServerEntityVelocityPacket.class); + this.registerOutgoing(0x47, ServerEntityEquipmentPacket.class); + this.registerOutgoing(0x48, ServerPlayerSetExperiencePacket.class); + this.registerOutgoing(0x49, ServerPlayerHealthPacket.class); + this.registerOutgoing(0x4A, ServerScoreboardObjectivePacket.class); + this.registerOutgoing(0x4B, ServerEntitySetPassengersPacket.class); + this.registerOutgoing(0x4C, ServerTeamPacket.class); + this.registerOutgoing(0x4D, ServerUpdateScorePacket.class); + this.registerOutgoing(0x4E, ServerUpdateTimePacket.class); + this.registerOutgoing(0x4F, ServerTitlePacket.class); + this.registerOutgoing(0x50, ServerEntitySoundEffectPacket.class); + this.registerOutgoing(0x51, ServerPlayBuiltinSoundPacket.class); + this.registerOutgoing(0x52, ServerStopSoundPacket.class); + this.registerOutgoing(0x53, ServerPlayerListDataPacket.class); + this.registerOutgoing(0x54, ServerNBTResponsePacket.class); + this.registerOutgoing(0x55, ServerEntityCollectItemPacket.class); + this.registerOutgoing(0x56, ServerEntityTeleportPacket.class); + this.registerOutgoing(0x57, ServerAdvancementsPacket.class); + this.registerOutgoing(0x58, ServerEntityPropertiesPacket.class); + this.registerOutgoing(0x59, ServerEntityEffectPacket.class); + this.registerOutgoing(0x5A, ServerDeclareRecipesPacket.class); + this.registerOutgoing(0x5B, ServerDeclareTagsPacket.class); } private void initClientStatus(Session session) { diff --git a/src/main/java/com/github/steveice10/mc/protocol/data/game/chunk/Column.java b/src/main/java/com/github/steveice10/mc/protocol/data/game/chunk/Column.java index 1f85f4e8..8dc06336 100644 --- a/src/main/java/com/github/steveice10/mc/protocol/data/game/chunk/Column.java +++ b/src/main/java/com/github/steveice10/mc/protocol/data/game/chunk/Column.java @@ -10,16 +10,17 @@ import java.util.Arrays; public class Column { private final int x; private final int z; + private final boolean ignoreOldData; private final @NonNull Chunk[] chunks; private final @NonNull CompoundTag[] tileEntities; private final @NonNull CompoundTag heightMaps; private final int[] biomeData; - public Column(int x, int z, @NonNull Chunk[] chunks, @NonNull CompoundTag[] tileEntities, @NonNull CompoundTag heightMaps) { - this(x, z, chunks, tileEntities, heightMaps, null); + public Column(int x, int z, boolean ignoreOldData, @NonNull Chunk[] chunks, @NonNull CompoundTag[] tileEntities, @NonNull CompoundTag heightMaps) { + this(x, z, ignoreOldData, chunks, tileEntities, heightMaps, null); } - public Column(int x, int z, @NonNull Chunk[] chunks, @NonNull CompoundTag[] tileEntities, @NonNull CompoundTag heightMaps, int[] biomeData) { + public Column(int x, int z, boolean ignoreOldData, @NonNull Chunk[] chunks, @NonNull CompoundTag[] tileEntities, @NonNull CompoundTag heightMaps, int[] biomeData) { if(chunks.length != 16) { throw new IllegalArgumentException("Chunk array length must be 16."); } @@ -30,6 +31,7 @@ public class Column { this.x = x; this.z = z; + this.ignoreOldData = ignoreOldData; this.chunks = Arrays.copyOf(chunks, chunks.length); this.biomeData = biomeData != null ? Arrays.copyOf(biomeData, biomeData.length) : null; this.tileEntities = tileEntities != null ? tileEntities : new CompoundTag[0]; diff --git a/src/main/java/com/github/steveice10/mc/protocol/data/game/chunk/FlexibleStorage.java b/src/main/java/com/github/steveice10/mc/protocol/data/game/chunk/FlexibleStorage.java index 0526682e..8845706d 100644 --- a/src/main/java/com/github/steveice10/mc/protocol/data/game/chunk/FlexibleStorage.java +++ b/src/main/java/com/github/steveice10/mc/protocol/data/game/chunk/FlexibleStorage.java @@ -24,14 +24,14 @@ public class FlexibleStorage { char valuesPerLong = (char) (64 / bitsPerEntry); int expectedLength = (4096 + valuesPerLong - 1) / valuesPerLong; - if (data.length != expectedLength) { - throw new IllegalArgumentException("Got " + data.length + " as the chunk data length, but was expecting " + expectedLength); + this.bitsPerEntry = bitsPerEntry; + this.data = padArray(bitsPerEntry, Arrays.copyOf(data, data.length), valuesPerLong, expectedLength); + + if (this.data.length != expectedLength) { + throw new IllegalArgumentException("Got " + this.data.length + " as the chunk data length, but was expecting " + expectedLength); } - this.bitsPerEntry = bitsPerEntry; - this.data = Arrays.copyOf(data, data.length); - - this.size = this.data.length * 64 / this.bitsPerEntry; + this.size = data.length * 64 / this.bitsPerEntry; this.maxEntryValue = (1L << this.bitsPerEntry) - 1; } @@ -86,4 +86,49 @@ public class FlexibleStorage { this.data[endIndex] = this.data[endIndex] >>> endBitSubIndex << endBitSubIndex | ((long) value & this.maxEntryValue) >> endBitSubIndex; } } + + private static final int[] MAGIC_CHUNK_VALUES = { + -1, -1, 0, Integer.MIN_VALUE, 0, 0, 1431655765, 1431655765, 0, Integer.MIN_VALUE, + 0, 1, 858993459, 858993459, 0, 715827882, 715827882, 0, 613566756, 613566756, + 0, Integer.MIN_VALUE, 0, 2, 477218588, 477218588, 0, 429496729, 429496729, 0, + 390451572, 390451572, 0, 357913941, 357913941, 0, 330382099, 330382099, 0, 306783378, + 306783378, 0, 286331153, 286331153, 0, Integer.MIN_VALUE, 0, 3, 252645135, 252645135, + 0, 238609294, 238609294, 0, 226050910, 226050910, 0, 214748364, 214748364, 0, + 204522252, 204522252, 0, 195225786, 195225786, 0, 186737708, 186737708, 0, 178956970, + 178956970, 0, 171798691, 171798691, 0, 165191049, 165191049, 0, 159072862, 159072862, + 0, 153391689, 153391689, 0, 148102320, 148102320, 0, 143165576, 143165576, 0, + 138547332, 138547332, 0, Integer.MIN_VALUE, 0, 4, 130150524, 130150524, 0, 126322567, + 126322567, 0, 122713351, 122713351, 0, 119304647, 119304647, 0, 116080197, 116080197, + 0, 113025455, 113025455, 0, 110127366, 110127366, 0, 107374182, 107374182, 0, + 104755299, 104755299, 0, 102261126, 102261126, 0, 99882960, 99882960, 0, 97612893, + 97612893, 0, 95443717, 95443717, 0, 93368854, 93368854, 0, 91382282, 91382282, + 0, 89478485, 89478485, 0, 87652393, 87652393, 0, 85899345, 85899345, 0, + 84215045, 84215045, 0, 82595524, 82595524, 0, 81037118, 81037118, 0, 79536431, + 79536431, 0, 78090314, 78090314, 0, 76695844, 76695844, 0, 75350303, 75350303, + 0, 74051160, 74051160, 0, 72796055, 72796055, 0, 71582788, 71582788, 0, + 70409299, 70409299, 0, 69273666, 69273666, 0, 68174084, 68174084, 0, Integer.MIN_VALUE, + 0, 5 }; + + private static long[] padArray(int bitsPerEntry, long[] oldData, char valuesPerLong, int size) { + int magicIndex = (valuesPerLong - 1) * 3; + int divideShift = MAGIC_CHUNK_VALUES[magicIndex + 2]; + long maxEntries = (1L << bitsPerEntry) - 1; + long[] data = new long[size]; + for (int index = 0; index < 4096; index++) { + int startIndex = (index * bitsPerEntry) / 64; + int endIndex = ((index + 1) * bitsPerEntry - 1) / 64; + int startBitSubIndex = (index * bitsPerEntry) % 64; + int value; + if (startIndex != endIndex) { + value = (int) ((oldData[startIndex] >>> startBitSubIndex | oldData[endIndex] << (64 - startBitSubIndex)) & maxEntries); + } else { + value = (int) (oldData[startIndex] >>> startBitSubIndex & maxEntries); + } + + int cellIndex = (int) (index * ((long) MAGIC_CHUNK_VALUES[magicIndex]) & 0xffffffffL + ((long) MAGIC_CHUNK_VALUES[magicIndex + 1]) & 0xffffffffL >> 32L >> divideShift); + int bitIndex = (index - cellIndex * valuesPerLong) * bitsPerEntry; + data[cellIndex] = data[cellIndex] & ~(maxEntries << bitIndex) | (value & maxEntries) << bitIndex; + } + return data; + } } diff --git a/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/client/player/ClientPlayerAbilitiesPacket.java b/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/client/player/ClientPlayerAbilitiesPacket.java index 9a04b1da..f754abdc 100644 --- a/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/client/player/ClientPlayerAbilitiesPacket.java +++ b/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/client/player/ClientPlayerAbilitiesPacket.java @@ -25,8 +25,6 @@ public class ClientPlayerAbilitiesPacket implements Packet { private boolean canFly; private boolean flying; private boolean creative; - private float flySpeed; - private float walkSpeed; @Override public void read(NetInput in) throws IOException { @@ -35,9 +33,6 @@ public class ClientPlayerAbilitiesPacket implements Packet { this.canFly = (flags & FLAG_CAN_FLY) > 0; this.flying = (flags & FLAG_FLYING) > 0; this.creative = (flags & FLAG_CREATIVE) > 0; - - this.flySpeed = in.readFloat(); - this.walkSpeed = in.readFloat(); } @Override @@ -60,9 +55,6 @@ public class ClientPlayerAbilitiesPacket implements Packet { } out.writeByte(flags); - - out.writeFloat(this.flySpeed); - out.writeFloat(this.walkSpeed); } @Override diff --git a/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/client/player/ClientPlayerInteractEntityPacket.java b/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/client/player/ClientPlayerInteractEntityPacket.java index 9e2bf45e..29d9477b 100644 --- a/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/client/player/ClientPlayerInteractEntityPacket.java +++ b/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/client/player/ClientPlayerInteractEntityPacket.java @@ -27,13 +27,14 @@ public class ClientPlayerInteractEntityPacket implements Packet { private float targetY; private float targetZ; private @NonNull Hand hand; + private boolean unknown; - public ClientPlayerInteractEntityPacket(int entityId, InteractAction action) { - this(entityId, action, Hand.MAIN_HAND); + public ClientPlayerInteractEntityPacket(int entityId, InteractAction action, boolean unknown) { + this(entityId, action, Hand.MAIN_HAND, unknown); } - public ClientPlayerInteractEntityPacket(int entityId, InteractAction action, Hand hand) { - this(entityId, action, 0, 0, 0, hand); + public ClientPlayerInteractEntityPacket(int entityId, InteractAction action, Hand hand, boolean unknown) { + this(entityId, action, 0, 0, 0, hand, unknown); } @Override @@ -49,6 +50,7 @@ public class ClientPlayerInteractEntityPacket implements Packet { if(this.action == InteractAction.INTERACT || this.action == InteractAction.INTERACT_AT) { this.hand = MagicValues.key(Hand.class, in.readVarInt()); } + this.unknown = in.readBoolean(); } @Override @@ -64,6 +66,7 @@ public class ClientPlayerInteractEntityPacket implements Packet { if(this.action == InteractAction.INTERACT || this.action == InteractAction.INTERACT_AT) { out.writeVarInt(MagicValues.value(Integer.class, this.hand)); } + out.writeBoolean(this.unknown); } @Override diff --git a/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/server/ServerJoinGamePacket.java b/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/server/ServerJoinGamePacket.java index 39b267de..8f866d65 100644 --- a/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/server/ServerJoinGamePacket.java +++ b/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/server/ServerJoinGamePacket.java @@ -27,6 +27,7 @@ public class ServerJoinGamePacket implements Packet { private int entityId; private boolean hardcore; private @NonNull GameMode gameMode; + private @NonNull GameMode gameMode2; private int worldCount; private String[] worldNames; private @NonNull CompoundTag dimensionCodec; @@ -47,6 +48,7 @@ public class ServerJoinGamePacket implements Packet { int gameMode = in.readUnsignedByte(); this.hardcore = (gameMode & GAMEMODE_FLAG_HARDCORE) != 0; this.gameMode = MagicValues.key(GameMode.class, gameMode & GAMEMODE_MASK); + this.gameMode2 = MagicValues.key(GameMode.class, in.readUnsignedByte()); this.worldCount = in.readVarInt(); for (int i = 0; i < this.worldCount; i++) { in.readString(); @@ -73,6 +75,7 @@ public class ServerJoinGamePacket implements Packet { } out.writeByte(gameMode); + out.writeByte(MagicValues.value(Integer.class, this.gameMode2)); out.writeVarInt(this.worldCount); for (String worldName : this.worldNames) { out.writeString(worldName); diff --git a/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/server/ServerRespawnPacket.java b/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/server/ServerRespawnPacket.java index 1d234ed6..1548cd90 100644 --- a/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/server/ServerRespawnPacket.java +++ b/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/server/ServerRespawnPacket.java @@ -23,6 +23,7 @@ public class ServerRespawnPacket implements Packet { private String worldName; private long hashedSeed; private @NonNull GameMode gamemode; + private @NonNull GameMode gamemode2; private boolean debug; private boolean flat; private boolean copyMetadata; @@ -33,6 +34,7 @@ public class ServerRespawnPacket implements Packet { this.worldName = in.readString(); this.hashedSeed = in.readLong(); this.gamemode = MagicValues.key(GameMode.class, in.readUnsignedByte()); + this.gamemode2 = MagicValues.key(GameMode.class, in.readUnsignedByte()); this.debug = in.readBoolean(); this.flat = in.readBoolean(); this.copyMetadata = in.readBoolean(); @@ -44,6 +46,7 @@ public class ServerRespawnPacket implements Packet { out.writeString(this.worldName); out.writeLong(this.hashedSeed); out.writeByte(MagicValues.value(Integer.class, this.gamemode)); + out.writeByte(MagicValues.value(Integer.class, this.gamemode2)); out.writeBoolean(this.debug); out.writeBoolean(this.flat); out.writeBoolean(this.copyMetadata); diff --git a/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/server/world/ServerChunkDataPacket.java b/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/server/world/ServerChunkDataPacket.java index 5be76a63..80ee77e5 100644 --- a/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/server/world/ServerChunkDataPacket.java +++ b/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/server/world/ServerChunkDataPacket.java @@ -32,6 +32,7 @@ public class ServerChunkDataPacket implements Packet { int x = in.readInt(); int z = in.readInt(); boolean fullChunk = in.readBoolean(); + boolean ignoreOldData = in.readBoolean(); int chunkMask = in.readVarInt(); CompoundTag heightMaps = NBT.read(in); int[] biomeData = fullChunk ? in.readInts(1024) : null; @@ -49,7 +50,7 @@ public class ServerChunkDataPacket implements Packet { } } - this.column = new Column(x, z, chunks, tileEntities, heightMaps, biomeData); + this.column = new Column(x, z, ignoreOldData, chunks, tileEntities, heightMaps, biomeData); } @Override @@ -72,6 +73,7 @@ public class ServerChunkDataPacket implements Packet { out.writeInt(this.column.getX()); out.writeInt(this.column.getZ()); out.writeBoolean(fullChunk); + out.writeBoolean(this.column.isIgnoreOldData()); out.writeVarInt(mask); NBT.write(out, this.column.getHeightMaps()); if (fullChunk) { diff --git a/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/server/world/ServerUpdateLightPacket.java b/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/server/world/ServerUpdateLightPacket.java index 6ca5980b..6b40e661 100644 --- a/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/server/world/ServerUpdateLightPacket.java +++ b/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/server/world/ServerUpdateLightPacket.java @@ -23,10 +23,11 @@ public class ServerUpdateLightPacket implements Packet { private int x; private int z; + private boolean unknown; // TODO: Find what this value is private @NonNull NibbleArray3d[] skyLight; private @NonNull NibbleArray3d[] blockLight; - public ServerUpdateLightPacket(int x, int z, @NonNull NibbleArray3d[] skyLight, @NonNull NibbleArray3d[] blockLight) { + public ServerUpdateLightPacket(int x, int z, boolean unknown, @NonNull NibbleArray3d[] skyLight, @NonNull NibbleArray3d[] blockLight) { if(skyLight.length != NUM_ENTRIES) { throw new IllegalArgumentException("skyLight must have exactly " + NUM_ENTRIES + " entries (null entries are permitted)"); } @@ -37,6 +38,7 @@ public class ServerUpdateLightPacket implements Packet { this.x = x; this.z = z; + this.unknown = unknown; this.skyLight = Arrays.copyOf(skyLight, skyLight.length); this.blockLight = Arrays.copyOf(blockLight, blockLight.length); } @@ -45,6 +47,7 @@ public class ServerUpdateLightPacket implements Packet { public void read(NetInput in) throws IOException { this.x = in.readVarInt(); this.z = in.readVarInt(); + this.unknown = in.readBoolean(); int skyLightMask = in.readVarInt(); int blockLightMask = in.readVarInt(); @@ -78,6 +81,7 @@ public class ServerUpdateLightPacket implements Packet { public void write(NetOutput out) throws IOException { out.writeVarInt(this.x); out.writeVarInt(this.z); + out.writeBoolean(this.unknown); int skyLightMask = 0; int blockLightMask = 0; diff --git a/src/test/java/com/github/steveice10/mc/protocol/MinecraftProtocolTest.java b/src/test/java/com/github/steveice10/mc/protocol/MinecraftProtocolTest.java index 7c846eb5..681c16fe 100644 --- a/src/test/java/com/github/steveice10/mc/protocol/MinecraftProtocolTest.java +++ b/src/test/java/com/github/steveice10/mc/protocol/MinecraftProtocolTest.java @@ -9,7 +9,10 @@ import com.github.steveice10.mc.protocol.data.status.VersionInfo; import com.github.steveice10.mc.protocol.data.status.handler.ServerInfoBuilder; import com.github.steveice10.mc.protocol.data.status.handler.ServerInfoHandler; import com.github.steveice10.mc.protocol.packet.ingame.server.ServerJoinGamePacket; +import com.github.steveice10.opennbt.tag.builtin.ByteTag; import com.github.steveice10.opennbt.tag.builtin.CompoundTag; +import com.github.steveice10.opennbt.tag.builtin.FloatTag; +import com.github.steveice10.opennbt.tag.builtin.IntTag; import com.github.steveice10.opennbt.tag.builtin.ListTag; import com.github.steveice10.opennbt.tag.builtin.StringTag; import com.github.steveice10.packetlib.Client; @@ -47,7 +50,7 @@ public class MinecraftProtocolTest { new TextMessage("Hello world!"), null ); - private static final ServerJoinGamePacket JOIN_GAME_PACKET = new ServerJoinGamePacket(0, false, GameMode.SURVIVAL, 1, new String[]{"minecraft:world"}, getDimensionTag(), "minecraft:overworld", "minecraft:world", 100, 0, 16, false, false, false, false); + private static final ServerJoinGamePacket JOIN_GAME_PACKET = new ServerJoinGamePacket(0, false, GameMode.SURVIVAL, GameMode.SURVIVAL, 1, new String[]{"minecraft:world"}, getDimensionTag(), "minecraft:overworld", "minecraft:world", 100, 0, 16, false, false, false, false); private static Server server; @@ -147,10 +150,26 @@ public class MinecraftProtocolTest { CompoundTag tag = new CompoundTag(""); ListTag dimensionTag = new ListTag("dimension"); CompoundTag overworldTag = new CompoundTag(""); - overworldTag.put(new StringTag("key", "minecraft:overworld")); - overworldTag.put(new StringTag("element", "minecraft:overworld")); + overworldTag.put(new StringTag("name", "minecraft:overworld")); + overworldTag.put(new ByteTag("natural", (byte) 1)); + overworldTag.put(new FloatTag("ambient_light", 0f)); + overworldTag.put(new ByteTag("shrunk", (byte) 0)); + overworldTag.put(new ByteTag("ultrawarm", (byte) 0)); + overworldTag.put(new ByteTag("has_ceiling", (byte) 0)); + overworldTag.put(new ByteTag("has_skylight", (byte) 1)); + overworldTag.put(new ByteTag("piglin_safe", (byte) 0)); + overworldTag.put(new ByteTag("natural", (byte) 1)); + overworldTag.put(new FloatTag("ambient_light", 0)); + overworldTag.put(new StringTag("infiniburn", "minecraft:infiniburn_overworld")); + overworldTag.put(new ByteTag("respawn_anchor_works", (byte) 0)); + overworldTag.put(new ByteTag("has_skylight", (byte) 1)); + overworldTag.put(new ByteTag("bed_works", (byte) 1)); + overworldTag.put(new ByteTag("has_raids", (byte) 1)); + overworldTag.put(new IntTag("logical_height", 256)); + overworldTag.put(new ByteTag("shrunk", (byte) 0)); + overworldTag.put(new ByteTag("ultrawarm", (byte) 0)); dimensionTag.add(overworldTag); - tag.put(tag); + overworldTag.put(tag); return tag; } } diff --git a/src/test/java/com/github/steveice10/mc/protocol/packet/ingame/server/world/ServerChunkDataPacketTest.java b/src/test/java/com/github/steveice10/mc/protocol/packet/ingame/server/world/ServerChunkDataPacketTest.java index 79602264..ff83e9fa 100644 --- a/src/test/java/com/github/steveice10/mc/protocol/packet/ingame/server/world/ServerChunkDataPacketTest.java +++ b/src/test/java/com/github/steveice10/mc/protocol/packet/ingame/server/world/ServerChunkDataPacketTest.java @@ -15,13 +15,13 @@ public class ServerChunkDataPacketTest extends PacketTest { this.setPackets( new ServerChunkDataPacket( - new Column(0, 0, new Chunk[] { + new Column(0, 0, false, new Chunk[] { null, null, null, null, null, null, null, chunk, null, chunk, null, null, null, chunk, null, null }, new CompoundTag[0], new CompoundTag("HeightMaps")) ), new ServerChunkDataPacket( - new Column(1, 1, new Chunk[] { + new Column(1, 1, false, new Chunk[] { chunk, chunk, chunk, chunk, chunk, chunk, chunk, chunk, chunk, chunk, chunk, chunk, chunk, chunk, chunk, chunk }, new CompoundTag[] {