diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java b/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java index 8aa57ed4f..15bafe839 100644 --- a/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java +++ b/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java @@ -99,7 +99,8 @@ public enum Protocol map( ProtocolConstants.MINECRAFT_1_19_4, 0x23 ), map( ProtocolConstants.MINECRAFT_1_20_2, 0x24 ), map( ProtocolConstants.MINECRAFT_1_20_5, 0x26 ), - map( ProtocolConstants.MINECRAFT_1_21_2, 0x27 ) + map( ProtocolConstants.MINECRAFT_1_21_2, 0x27 ), + map( ProtocolConstants.MINECRAFT_1_21_5, 0x26 ) ); TO_CLIENT.registerPacket( Login.class, @@ -117,7 +118,8 @@ public enum Protocol map( ProtocolConstants.MINECRAFT_1_19_4, 0x28 ), map( ProtocolConstants.MINECRAFT_1_20_2, 0x29 ), map( ProtocolConstants.MINECRAFT_1_20_5, 0x2B ), - map( ProtocolConstants.MINECRAFT_1_21_2, 0x2C ) + map( ProtocolConstants.MINECRAFT_1_21_2, 0x2C ), + map( ProtocolConstants.MINECRAFT_1_21_5, 0x2B ) ); TO_CLIENT.registerPacket( Chat.class, Chat::new, @@ -149,7 +151,8 @@ public enum Protocol map( ProtocolConstants.MINECRAFT_1_20_2, 0x43 ), map( ProtocolConstants.MINECRAFT_1_20_3, 0x45 ), map( ProtocolConstants.MINECRAFT_1_20_5, 0x47 ), - map( ProtocolConstants.MINECRAFT_1_21_2, 0x4C ) + map( ProtocolConstants.MINECRAFT_1_21_2, 0x4C ), + map( ProtocolConstants.MINECRAFT_1_21_5, 0x4B ) ); TO_CLIENT.registerPacket( BossBar.class, @@ -160,7 +163,8 @@ public enum Protocol map( ProtocolConstants.MINECRAFT_1_17, 0x0D ), map( ProtocolConstants.MINECRAFT_1_19, 0x0A ), map( ProtocolConstants.MINECRAFT_1_19_4, 0x0B ), - map( ProtocolConstants.MINECRAFT_1_20_2, 0x0A ) + map( ProtocolConstants.MINECRAFT_1_20_2, 0x0A ), + map( ProtocolConstants.MINECRAFT_1_21_5, 0x09 ) ); TO_CLIENT.registerPacket( PlayerListItem.class, // PlayerInfo @@ -191,7 +195,8 @@ public enum Protocol map( ProtocolConstants.MINECRAFT_1_19, 0x0E ), map( ProtocolConstants.MINECRAFT_1_19_3, 0x0D ), map( ProtocolConstants.MINECRAFT_1_19_4, 0x0F ), - map( ProtocolConstants.MINECRAFT_1_20_2, 0x10 ) + map( ProtocolConstants.MINECRAFT_1_20_2, 0x10 ), + map( ProtocolConstants.MINECRAFT_1_21_5, 0x0F ) ); TO_CLIENT.registerPacket( ScoreboardObjective.class, @@ -210,7 +215,8 @@ public enum Protocol map( ProtocolConstants.MINECRAFT_1_20_2, 0x5A ), map( ProtocolConstants.MINECRAFT_1_20_3, 0x5C ), map( ProtocolConstants.MINECRAFT_1_20_5, 0x5E ), - map( ProtocolConstants.MINECRAFT_1_21_2, 0x64 ) + map( ProtocolConstants.MINECRAFT_1_21_2, 0x64 ), + map( ProtocolConstants.MINECRAFT_1_21_5, 0x63 ) ); TO_CLIENT.registerPacket( ScoreboardScore.class, @@ -229,14 +235,16 @@ public enum Protocol map( ProtocolConstants.MINECRAFT_1_20_2, 0x5D ), map( ProtocolConstants.MINECRAFT_1_20_3, 0x5F ), map( ProtocolConstants.MINECRAFT_1_20_5, 0x61 ), - map( ProtocolConstants.MINECRAFT_1_21_2, 0x68 ) + map( ProtocolConstants.MINECRAFT_1_21_2, 0x68 ), + map( ProtocolConstants.MINECRAFT_1_21_5, 0x67 ) ); TO_CLIENT.registerPacket( ScoreboardScoreReset.class, ScoreboardScoreReset::new, map( ProtocolConstants.MINECRAFT_1_20_3, 0x42 ), map( ProtocolConstants.MINECRAFT_1_20_5, 0x44 ), - map( ProtocolConstants.MINECRAFT_1_21_2, 0x49 ) + map( ProtocolConstants.MINECRAFT_1_21_2, 0x49 ), + map( ProtocolConstants.MINECRAFT_1_21_5, 0x48 ) ); TO_CLIENT.registerPacket( ScoreboardDisplay.class, @@ -255,7 +263,8 @@ public enum Protocol map( ProtocolConstants.MINECRAFT_1_20_2, 0x53 ), map( ProtocolConstants.MINECRAFT_1_20_3, 0x55 ), map( ProtocolConstants.MINECRAFT_1_20_5, 0x57 ), - map( ProtocolConstants.MINECRAFT_1_21_2, 0x5C ) + map( ProtocolConstants.MINECRAFT_1_21_2, 0x5C ), + map( ProtocolConstants.MINECRAFT_1_21_5, 0x5B ) ); TO_CLIENT.registerPacket( Team.class, @@ -274,7 +283,8 @@ public enum Protocol map( ProtocolConstants.MINECRAFT_1_20_2, 0x5C ), map( ProtocolConstants.MINECRAFT_1_20_3, 0x5E ), map( ProtocolConstants.MINECRAFT_1_20_5, 0x60 ), - map( ProtocolConstants.MINECRAFT_1_21_2, 0x67 ) + map( ProtocolConstants.MINECRAFT_1_21_2, 0x67 ), + map( ProtocolConstants.MINECRAFT_1_21_5, 0x66 ) ); TO_CLIENT.registerPacket( PluginMessage.class, @@ -292,7 +302,9 @@ public enum Protocol map( ProtocolConstants.MINECRAFT_1_19_3, 0x15 ), map( ProtocolConstants.MINECRAFT_1_19_4, 0x17 ), map( ProtocolConstants.MINECRAFT_1_20_2, 0x18 ), - map( ProtocolConstants.MINECRAFT_1_20_5, 0x19 ) + map( ProtocolConstants.MINECRAFT_1_20_5, 0x19 ), + map( ProtocolConstants.MINECRAFT_1_21_5, 0x2B ), + map( ProtocolConstants.MINECRAFT_1_21_5, 0x18 ) ); TO_CLIENT.registerPacket( Kick.class, @@ -310,7 +322,8 @@ public enum Protocol map( ProtocolConstants.MINECRAFT_1_19_3, 0x17 ), map( ProtocolConstants.MINECRAFT_1_19_4, 0x1A ), map( ProtocolConstants.MINECRAFT_1_20_2, 0x1B ), - map( ProtocolConstants.MINECRAFT_1_20_5, 0x1D ) + map( ProtocolConstants.MINECRAFT_1_20_5, 0x1D ), + map( ProtocolConstants.MINECRAFT_1_21_5, 0x1C ) ); TO_CLIENT.registerPacket( Title.class, @@ -330,7 +343,8 @@ public enum Protocol map( ProtocolConstants.MINECRAFT_1_20_2, 0x61 ), map( ProtocolConstants.MINECRAFT_1_20_3, 0x63 ), map( ProtocolConstants.MINECRAFT_1_20_5, 0x65 ), - map( ProtocolConstants.MINECRAFT_1_21_2, 0x6C ) + map( ProtocolConstants.MINECRAFT_1_21_2, 0x6C ), + map( ProtocolConstants.MINECRAFT_1_21_5, 0x6B ) ); TO_CLIENT.registerPacket( ClearTitles.class, @@ -339,7 +353,8 @@ public enum Protocol map( ProtocolConstants.MINECRAFT_1_19, 0x0D ), map( ProtocolConstants.MINECRAFT_1_19_3, 0x0C ), map( ProtocolConstants.MINECRAFT_1_19_4, 0x0E ), - map( ProtocolConstants.MINECRAFT_1_20_2, 0x0F ) + map( ProtocolConstants.MINECRAFT_1_20_2, 0x0F ), + map( ProtocolConstants.MINECRAFT_1_21_5, 0x0E ) ); TO_CLIENT.registerPacket( Subtitle.class, @@ -352,7 +367,8 @@ public enum Protocol map( ProtocolConstants.MINECRAFT_1_20_2, 0x5F ), map( ProtocolConstants.MINECRAFT_1_20_3, 0x61 ), map( ProtocolConstants.MINECRAFT_1_20_5, 0x63 ), - map( ProtocolConstants.MINECRAFT_1_21_2, 0x6A ) + map( ProtocolConstants.MINECRAFT_1_21_2, 0x6A ), + map( ProtocolConstants.MINECRAFT_1_21_5, 0x69 ) ); TO_CLIENT.registerPacket( TitleTimes.class, @@ -365,7 +381,8 @@ public enum Protocol map( ProtocolConstants.MINECRAFT_1_20_2, 0x62 ), map( ProtocolConstants.MINECRAFT_1_20_3, 0x64 ), map( ProtocolConstants.MINECRAFT_1_20_5, 0x66 ), - map( ProtocolConstants.MINECRAFT_1_21_2, 0x6D ) + map( ProtocolConstants.MINECRAFT_1_21_2, 0x6D ), + map( ProtocolConstants.MINECRAFT_1_21_5, 0x6C ) ); TO_CLIENT.registerPacket( SystemChat.class, @@ -377,7 +394,8 @@ public enum Protocol map( ProtocolConstants.MINECRAFT_1_20_2, 0x67 ), map( ProtocolConstants.MINECRAFT_1_20_3, 0x69 ), map( ProtocolConstants.MINECRAFT_1_20_5, 0x6C ), - map( ProtocolConstants.MINECRAFT_1_21_2, 0x73 ) + map( ProtocolConstants.MINECRAFT_1_21_2, 0x73 ), + map( ProtocolConstants.MINECRAFT_1_21_5, 0x72 ) ); TO_CLIENT.registerPacket( PlayerListHeaderFooter.class, @@ -400,7 +418,8 @@ public enum Protocol map( ProtocolConstants.MINECRAFT_1_20_2, 0x68 ), map( ProtocolConstants.MINECRAFT_1_20_3, 0x6A ), map( ProtocolConstants.MINECRAFT_1_20_5, 0x6D ), - map( ProtocolConstants.MINECRAFT_1_21_2, 0x74 ) + map( ProtocolConstants.MINECRAFT_1_21_2, 0x74 ), + map( ProtocolConstants.MINECRAFT_1_21_5, 0x73 ) ); TO_CLIENT.registerPacket( EntityStatus.class, @@ -418,7 +437,8 @@ public enum Protocol map( ProtocolConstants.MINECRAFT_1_19_3, 0x19 ), map( ProtocolConstants.MINECRAFT_1_19_4, 0x1C ), map( ProtocolConstants.MINECRAFT_1_20_2, 0x1D ), - map( ProtocolConstants.MINECRAFT_1_20_5, 0x1F ) + map( ProtocolConstants.MINECRAFT_1_20_5, 0x1F ), + map( ProtocolConstants.MINECRAFT_1_21_5, 0x1E ) ); TO_CLIENT.registerPacket( Commands.class, @@ -431,7 +451,8 @@ public enum Protocol map( ProtocolConstants.MINECRAFT_1_19, 0x0F ), map( ProtocolConstants.MINECRAFT_1_19_3, 0x0E ), map( ProtocolConstants.MINECRAFT_1_19_4, 0x10 ), - map( ProtocolConstants.MINECRAFT_1_20_2, 0x11 ) + map( ProtocolConstants.MINECRAFT_1_20_2, 0x11 ), + map( ProtocolConstants.MINECRAFT_1_21_5, 0x10 ) ); TO_CLIENT.registerPacket( GameState.class, @@ -446,7 +467,8 @@ public enum Protocol map( ProtocolConstants.MINECRAFT_1_19_4, 0x1F ), map( ProtocolConstants.MINECRAFT_1_20_2, 0x20 ), map( ProtocolConstants.MINECRAFT_1_20_5, 0x22 ), - map( ProtocolConstants.MINECRAFT_1_21_2, 0x23 ) + map( ProtocolConstants.MINECRAFT_1_21_2, 0x23 ), + map( ProtocolConstants.MINECRAFT_1_21_5, 0x22 ) ); TO_CLIENT.registerPacket( ViewDistance.class, @@ -462,7 +484,8 @@ public enum Protocol map( ProtocolConstants.MINECRAFT_1_20_2, 0x51 ), map( ProtocolConstants.MINECRAFT_1_20_3, 0x53 ), map( ProtocolConstants.MINECRAFT_1_20_5, 0x55 ), - map( ProtocolConstants.MINECRAFT_1_21_2, 0x59 ) + map( ProtocolConstants.MINECRAFT_1_21_2, 0x59 ), + map( ProtocolConstants.MINECRAFT_1_21_5, 0x58 ) ); TO_CLIENT.registerPacket( ServerData.class, @@ -474,7 +497,8 @@ public enum Protocol map( ProtocolConstants.MINECRAFT_1_20_2, 0x47 ), map( ProtocolConstants.MINECRAFT_1_20_3, 0x49 ), map( ProtocolConstants.MINECRAFT_1_20_5, 0x4B ), - map( ProtocolConstants.MINECRAFT_1_21_2, 0x50 ) + map( ProtocolConstants.MINECRAFT_1_21_2, 0x50 ), + map( ProtocolConstants.MINECRAFT_1_21_5, 0x4F ) ); TO_CLIENT.registerPacket( PlayerListItemRemove.class, @@ -483,7 +507,8 @@ public enum Protocol map( ProtocolConstants.MINECRAFT_1_19_4, 0x39 ), map( ProtocolConstants.MINECRAFT_1_20_2, 0x3B ), map( ProtocolConstants.MINECRAFT_1_20_5, 0x3D ), - map( ProtocolConstants.MINECRAFT_1_21_2, 0x3F ) + map( ProtocolConstants.MINECRAFT_1_21_2, 0x3F ), + map( ProtocolConstants.MINECRAFT_1_21_5, 0x3E ) ); TO_CLIENT.registerPacket( PlayerListItemUpdate.class, @@ -492,7 +517,8 @@ public enum Protocol map( ProtocolConstants.MINECRAFT_1_19_4, 0x3A ), map( ProtocolConstants.MINECRAFT_1_20_2, 0x3C ), map( ProtocolConstants.MINECRAFT_1_20_5, 0x3E ), - map( ProtocolConstants.MINECRAFT_1_21_2, 0x40 ) + map( ProtocolConstants.MINECRAFT_1_21_2, 0x40 ), + map( ProtocolConstants.MINECRAFT_1_21_5, 0x3F ) ); TO_CLIENT.registerPacket( StartConfiguration.class, @@ -500,18 +526,21 @@ public enum Protocol map( ProtocolConstants.MINECRAFT_1_20_2, 0x65 ), map( ProtocolConstants.MINECRAFT_1_20_3, 0x67 ), map( ProtocolConstants.MINECRAFT_1_20_5, 0x69 ), - map( ProtocolConstants.MINECRAFT_1_21_2, 0x70 ) + map( ProtocolConstants.MINECRAFT_1_21_2, 0x70 ), + map( ProtocolConstants.MINECRAFT_1_21_5, 0x6F ) ); TO_CLIENT.registerPacket( CookieRequest.class, CookieRequest::new, - map( ProtocolConstants.MINECRAFT_1_20_5, 0x16 ) + map( ProtocolConstants.MINECRAFT_1_20_5, 0x16 ), + map( ProtocolConstants.MINECRAFT_1_21_5, 0x15 ) ); TO_CLIENT.registerPacket( StoreCookie.class, StoreCookie::new, map( ProtocolConstants.MINECRAFT_1_20_5, 0x6B ), - map( ProtocolConstants.MINECRAFT_1_21_2, 0x72 ) + map( ProtocolConstants.MINECRAFT_1_21_2, 0x72 ), + map( ProtocolConstants.MINECRAFT_1_21_5, 0x71 ) ); TO_CLIENT.registerPacket( Transfer.class, diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/ProtocolConstants.java b/protocol/src/main/java/net/md_5/bungee/protocol/ProtocolConstants.java index b3d1c2bba..6e8af8f3c 100644 --- a/protocol/src/main/java/net/md_5/bungee/protocol/ProtocolConstants.java +++ b/protocol/src/main/java/net/md_5/bungee/protocol/ProtocolConstants.java @@ -49,6 +49,7 @@ public class ProtocolConstants public static final int MINECRAFT_1_21 = 767; public static final int MINECRAFT_1_21_2 = 768; public static final int MINECRAFT_1_21_4 = 769; + public static final int MINECRAFT_1_21_5 = 1073742055; public static final List SUPPORTED_VERSIONS; public static final List SUPPORTED_VERSION_IDS; @@ -118,7 +119,7 @@ public class ProtocolConstants if ( SNAPSHOT_SUPPORT ) { // supportedVersions.add( "1.21.x" ); - // supportedVersionIds.add( ProtocolConstants.MINECRAFT_1_21_4 ); + supportedVersionIds.add( ProtocolConstants.MINECRAFT_1_21_5 ); } SUPPORTED_VERSIONS = supportedVersions.build(); diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/packet/Commands.java b/protocol/src/main/java/net/md_5/bungee/protocol/packet/Commands.java index 6523ed30d..70b30aea3 100644 --- a/protocol/src/main/java/net/md_5/bungee/protocol/packet/Commands.java +++ b/protocol/src/main/java/net/md_5/bungee/protocol/packet/Commands.java @@ -312,6 +312,7 @@ public class Commands extends DefinedPacket private static final ArgumentSerializer[] IDS_1_19_4; private static final ArgumentSerializer[] IDS_1_20_3; private static final ArgumentSerializer[] IDS_1_20_5; + private static final ArgumentSerializer[] IDS_1_21_5; private static final Map, ProperArgumentSerializer> PROPER_PROVIDERS = new HashMap<>(); // private static final ArgumentSerializer VOID = new ArgumentSerializer() @@ -858,6 +859,65 @@ public class Commands extends DefinedPacket get( "minecraft:loot_predicate", VOID ), get( "minecraft:loot_modifier", VOID ) }; + + IDS_1_21_5 = new ArgumentSerializer[] + { + get( "brigadier:bool", VOID ), + get( "brigadier:float", FLOAT_RANGE ), + get( "brigadier:double", DOUBLE_RANGE ), + get( "brigadier:integer", INTEGER_RANGE ), + get( "brigadier:long", LONG_RANGE ), + get( "brigadier:string", STRING ), + get( "minecraft:entity", BYTE ), + get( "minecraft:game_profile", VOID ), + get( "minecraft:block_pos", VOID ), + get( "minecraft:column_pos", VOID ), + get( "minecraft:vec3", VOID ), + get( "minecraft:vec2", VOID ), + get( "minecraft:block_state", VOID ), + get( "minecraft:block_predicate", VOID ), + get( "minecraft:item_stack", VOID ), + get( "minecraft:item_predicate", VOID ), + get( "minecraft:color", VOID ), + get( "minecraft:component", VOID ), + get( "minecraft:style", VOID ), + get( "minecraft:message", VOID ), + get( "minecraft:nbt_compound_tag", VOID ), + get( "minecraft:nbt_tag", VOID ), + get( "minecraft:nbt_path", VOID ), + get( "minecraft:objective", VOID ), + get( "minecraft:objective_criteria", VOID ), + get( "minecraft:operation", VOID ), + get( "minecraft:particle", VOID ), + get( "minecraft:angle", VOID ), + get( "minecraft:rotation", VOID ), + get( "minecraft:scoreboard_slot", VOID ), + get( "minecraft:score_holder", BYTE ), + get( "minecraft:swizzle", VOID ), + get( "minecraft:team", VOID ), + get( "minecraft:item_slot", VOID ), + get( "minecraft:item_slots", VOID ), + get( "minecraft:resource_location", VOID ), + get( "minecraft:function", VOID ), + get( "minecraft:entity_anchor", VOID ), + get( "minecraft:int_range", VOID ), + get( "minecraft:float_range", VOID ), + get( "minecraft:dimension", VOID ), + get( "minecraft:gamemode", VOID ), + get( "minecraft:time", INTEGER ), + get( "minecraft:resource_or_tag", RAW_STRING ), + get( "minecraft:resource_or_tag_key", RAW_STRING ), + get( "minecraft:resource", RAW_STRING ), + get( "minecraft:resource_key", RAW_STRING ), + get( "minecraft:resource_selector", RAW_STRING ), + get( "minecraft:template_mirror", VOID ), + get( "minecraft:template_rotation", VOID ), + get( "minecraft:uuid", VOID ), + get( "minecraft:heightmap", VOID ), + get( "minecraft:loot_table", VOID ), + get( "minecraft:loot_predicate", VOID ), + get( "minecraft:loot_modifier", VOID ) + }; } private static void register(String name, ArgumentSerializer serializer) @@ -879,7 +939,10 @@ public class Commands extends DefinedPacket { key = readVarInt( buf ); - if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_20_5 ) + if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_21_5 ) + { + reader = IDS_1_21_5[(Integer) key]; + } else if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_20_5 ) { reader = IDS_1_20_5[(Integer) key]; } else if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_20_3 ) diff --git a/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap.java b/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap.java index 206bc8d2f..c8fdb2e91 100644 --- a/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap.java +++ b/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap.java @@ -93,6 +93,8 @@ public abstract class EntityMap return EntityMap_1_16_2.INSTANCE_1_21_2; case ProtocolConstants.MINECRAFT_1_21_4: return EntityMap_1_16_2.INSTANCE_1_21_4; + case ProtocolConstants.MINECRAFT_1_21_5: + return EntityMap_1_16_2.INSTANCE_1_21_5; } throw new RuntimeException( "Version " + version + " has no entity map" ); } diff --git a/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap_1_16_2.java b/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap_1_16_2.java index 66afd2f19..ce96ac9eb 100644 --- a/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap_1_16_2.java +++ b/proxy/src/main/java/net/md_5/bungee/entitymap/EntityMap_1_16_2.java @@ -25,6 +25,7 @@ class EntityMap_1_16_2 extends EntityMap static final EntityMap_1_16_2 INSTANCE_1_20_5 = new EntityMap_1_16_2( -1, 0x37 ); static final EntityMap_1_16_2 INSTANCE_1_21_2 = new EntityMap_1_16_2( -1, 0x39 ); static final EntityMap_1_16_2 INSTANCE_1_21_4 = new EntityMap_1_16_2( -1, 0x3B ); + static final EntityMap_1_16_2 INSTANCE_1_21_5 = new EntityMap_1_16_2( -1, 0x3C ); // private final int spawnPlayerId; private final int spectateId;