Add optional 1.17 (21w19a) snapshot protocol support
Accessible via the net.md_5.bungee.protocol.snapshot JVM property.
This commit is contained in:
		| @@ -2,6 +2,7 @@ package net.md_5.bungee.protocol; | |||||||
|  |  | ||||||
| import net.md_5.bungee.protocol.packet.BossBar; | import net.md_5.bungee.protocol.packet.BossBar; | ||||||
| import net.md_5.bungee.protocol.packet.Chat; | import net.md_5.bungee.protocol.packet.Chat; | ||||||
|  | import net.md_5.bungee.protocol.packet.ClearTitles; | ||||||
| import net.md_5.bungee.protocol.packet.ClientSettings; | import net.md_5.bungee.protocol.packet.ClientSettings; | ||||||
| import net.md_5.bungee.protocol.packet.ClientStatus; | import net.md_5.bungee.protocol.packet.ClientStatus; | ||||||
| import net.md_5.bungee.protocol.packet.Commands; | import net.md_5.bungee.protocol.packet.Commands; | ||||||
| @@ -30,10 +31,12 @@ import net.md_5.bungee.protocol.packet.ScoreboardScore; | |||||||
| import net.md_5.bungee.protocol.packet.SetCompression; | import net.md_5.bungee.protocol.packet.SetCompression; | ||||||
| import net.md_5.bungee.protocol.packet.StatusRequest; | import net.md_5.bungee.protocol.packet.StatusRequest; | ||||||
| import net.md_5.bungee.protocol.packet.StatusResponse; | import net.md_5.bungee.protocol.packet.StatusResponse; | ||||||
|  | import net.md_5.bungee.protocol.packet.Subtitle; | ||||||
| import net.md_5.bungee.protocol.packet.TabCompleteRequest; | import net.md_5.bungee.protocol.packet.TabCompleteRequest; | ||||||
| import net.md_5.bungee.protocol.packet.TabCompleteResponse; | import net.md_5.bungee.protocol.packet.TabCompleteResponse; | ||||||
| import net.md_5.bungee.protocol.packet.Team; | import net.md_5.bungee.protocol.packet.Team; | ||||||
| import net.md_5.bungee.protocol.packet.Title; | import net.md_5.bungee.protocol.packet.Title; | ||||||
|  | import net.md_5.bungee.protocol.packet.TitleTimes; | ||||||
| import net.md_5.bungee.protocol.packet.ViewDistance; | import net.md_5.bungee.protocol.packet.ViewDistance; | ||||||
|  |  | ||||||
| public abstract class AbstractPacketHandler | public abstract class AbstractPacketHandler | ||||||
| @@ -127,6 +130,18 @@ public abstract class AbstractPacketHandler | |||||||
|     { |     { | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public void handle(Subtitle title) throws Exception | ||||||
|  |     { | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void handle(TitleTimes title) throws Exception | ||||||
|  |     { | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void handle(ClearTitles title) throws Exception | ||||||
|  |     { | ||||||
|  |     } | ||||||
|  |  | ||||||
|     public void handle(PluginMessage pluginMessage) throws Exception |     public void handle(PluginMessage pluginMessage) throws Exception | ||||||
|     { |     { | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -11,6 +11,7 @@ import lombok.Data; | |||||||
| import lombok.Getter; | import lombok.Getter; | ||||||
| import net.md_5.bungee.protocol.packet.BossBar; | import net.md_5.bungee.protocol.packet.BossBar; | ||||||
| import net.md_5.bungee.protocol.packet.Chat; | import net.md_5.bungee.protocol.packet.Chat; | ||||||
|  | import net.md_5.bungee.protocol.packet.ClearTitles; | ||||||
| import net.md_5.bungee.protocol.packet.ClientSettings; | import net.md_5.bungee.protocol.packet.ClientSettings; | ||||||
| import net.md_5.bungee.protocol.packet.Commands; | import net.md_5.bungee.protocol.packet.Commands; | ||||||
| import net.md_5.bungee.protocol.packet.EncryptionRequest; | import net.md_5.bungee.protocol.packet.EncryptionRequest; | ||||||
| @@ -36,10 +37,12 @@ import net.md_5.bungee.protocol.packet.ScoreboardScore; | |||||||
| import net.md_5.bungee.protocol.packet.SetCompression; | import net.md_5.bungee.protocol.packet.SetCompression; | ||||||
| import net.md_5.bungee.protocol.packet.StatusRequest; | import net.md_5.bungee.protocol.packet.StatusRequest; | ||||||
| import net.md_5.bungee.protocol.packet.StatusResponse; | import net.md_5.bungee.protocol.packet.StatusResponse; | ||||||
|  | import net.md_5.bungee.protocol.packet.Subtitle; | ||||||
| import net.md_5.bungee.protocol.packet.TabCompleteRequest; | import net.md_5.bungee.protocol.packet.TabCompleteRequest; | ||||||
| import net.md_5.bungee.protocol.packet.TabCompleteResponse; | import net.md_5.bungee.protocol.packet.TabCompleteResponse; | ||||||
| import net.md_5.bungee.protocol.packet.Team; | import net.md_5.bungee.protocol.packet.Team; | ||||||
| import net.md_5.bungee.protocol.packet.Title; | import net.md_5.bungee.protocol.packet.Title; | ||||||
|  | import net.md_5.bungee.protocol.packet.TitleTimes; | ||||||
| import net.md_5.bungee.protocol.packet.ViewDistance; | import net.md_5.bungee.protocol.packet.ViewDistance; | ||||||
|  |  | ||||||
| public enum Protocol | public enum Protocol | ||||||
| @@ -69,7 +72,8 @@ public enum Protocol | |||||||
|                     map( ProtocolConstants.MINECRAFT_1_14, 0x20 ), |                     map( ProtocolConstants.MINECRAFT_1_14, 0x20 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_15, 0x21 ), |                     map( ProtocolConstants.MINECRAFT_1_15, 0x21 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_16, 0x20 ), |                     map( ProtocolConstants.MINECRAFT_1_16, 0x20 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_16_2, 0x1F ) |                     map( ProtocolConstants.MINECRAFT_1_16_2, 0x1F ), | ||||||
|  |                     map( ProtocolConstants.MINECRAFT_1_17, 0x21 ) | ||||||
|             ); |             ); | ||||||
|             TO_CLIENT.registerPacket( |             TO_CLIENT.registerPacket( | ||||||
|                     Login.class, |                     Login.class, | ||||||
| @@ -78,7 +82,8 @@ public enum Protocol | |||||||
|                     map( ProtocolConstants.MINECRAFT_1_13, 0x25 ), |                     map( ProtocolConstants.MINECRAFT_1_13, 0x25 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_15, 0x26 ), |                     map( ProtocolConstants.MINECRAFT_1_15, 0x26 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_16, 0x25 ), |                     map( ProtocolConstants.MINECRAFT_1_16, 0x25 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_16_2, 0x24 ) |                     map( ProtocolConstants.MINECRAFT_1_16_2, 0x24 ), | ||||||
|  |                     map( ProtocolConstants.MINECRAFT_1_17, 0x26 ) | ||||||
|             ); |             ); | ||||||
|             TO_CLIENT.registerPacket( |             TO_CLIENT.registerPacket( | ||||||
|                     Chat.class, |                     Chat.class, | ||||||
| @@ -86,7 +91,8 @@ public enum Protocol | |||||||
|                     map( ProtocolConstants.MINECRAFT_1_9, 0x0F ), |                     map( ProtocolConstants.MINECRAFT_1_9, 0x0F ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_13, 0x0E ), |                     map( ProtocolConstants.MINECRAFT_1_13, 0x0E ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_15, 0x0F ), |                     map( ProtocolConstants.MINECRAFT_1_15, 0x0F ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_16, 0x0E ) |                     map( ProtocolConstants.MINECRAFT_1_16, 0x0E ), | ||||||
|  |                     map( ProtocolConstants.MINECRAFT_1_17, 0x0F ) | ||||||
|             ); |             ); | ||||||
|             TO_CLIENT.registerPacket( |             TO_CLIENT.registerPacket( | ||||||
|                     Respawn.class, |                     Respawn.class, | ||||||
| @@ -98,13 +104,15 @@ public enum Protocol | |||||||
|                     map( ProtocolConstants.MINECRAFT_1_14, 0x3A ), |                     map( ProtocolConstants.MINECRAFT_1_14, 0x3A ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_15, 0x3B ), |                     map( ProtocolConstants.MINECRAFT_1_15, 0x3B ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_16, 0x3A ), |                     map( ProtocolConstants.MINECRAFT_1_16, 0x3A ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_16_2, 0x39 ) |                     map( ProtocolConstants.MINECRAFT_1_16_2, 0x39 ), | ||||||
|  |                     map( ProtocolConstants.MINECRAFT_1_17, 0x3D ) | ||||||
|             ); |             ); | ||||||
|             TO_CLIENT.registerPacket( |             TO_CLIENT.registerPacket( | ||||||
|                     BossBar.class, |                     BossBar.class, | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_9, 0x0C ), |                     map( ProtocolConstants.MINECRAFT_1_9, 0x0C ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_15, 0x0D ), |                     map( ProtocolConstants.MINECRAFT_1_15, 0x0D ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_16, 0x0C ) |                     map( ProtocolConstants.MINECRAFT_1_16, 0x0C ), | ||||||
|  |                     map( ProtocolConstants.MINECRAFT_1_17, 0x0D ) | ||||||
|             ); |             ); | ||||||
|             TO_CLIENT.registerPacket( |             TO_CLIENT.registerPacket( | ||||||
|                     PlayerListItem.class, // PlayerInfo |                     PlayerListItem.class, // PlayerInfo | ||||||
| @@ -115,7 +123,8 @@ public enum Protocol | |||||||
|                     map( ProtocolConstants.MINECRAFT_1_14, 0x33 ), |                     map( ProtocolConstants.MINECRAFT_1_14, 0x33 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_15, 0x34 ), |                     map( ProtocolConstants.MINECRAFT_1_15, 0x34 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_16, 0x33 ), |                     map( ProtocolConstants.MINECRAFT_1_16, 0x33 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_16_2, 0x32 ) |                     map( ProtocolConstants.MINECRAFT_1_16_2, 0x32 ), | ||||||
|  |                     map( ProtocolConstants.MINECRAFT_1_17, 0x36 ) | ||||||
|             ); |             ); | ||||||
|             TO_CLIENT.registerPacket( |             TO_CLIENT.registerPacket( | ||||||
|                     TabCompleteResponse.class, |                     TabCompleteResponse.class, | ||||||
| @@ -124,7 +133,8 @@ public enum Protocol | |||||||
|                     map( ProtocolConstants.MINECRAFT_1_13, 0x10 ), |                     map( ProtocolConstants.MINECRAFT_1_13, 0x10 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_15, 0x11 ), |                     map( ProtocolConstants.MINECRAFT_1_15, 0x11 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_16, 0x10 ), |                     map( ProtocolConstants.MINECRAFT_1_16, 0x10 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_16_2, 0x0F ) |                     map( ProtocolConstants.MINECRAFT_1_16_2, 0x0F ), | ||||||
|  |                     map( ProtocolConstants.MINECRAFT_1_17, 0x11 ) | ||||||
|             ); |             ); | ||||||
|             TO_CLIENT.registerPacket( |             TO_CLIENT.registerPacket( | ||||||
|                     ScoreboardObjective.class, |                     ScoreboardObjective.class, | ||||||
| @@ -134,7 +144,8 @@ public enum Protocol | |||||||
|                     map( ProtocolConstants.MINECRAFT_1_12_1, 0x42 ), |                     map( ProtocolConstants.MINECRAFT_1_12_1, 0x42 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_13, 0x45 ), |                     map( ProtocolConstants.MINECRAFT_1_13, 0x45 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_14, 0x49 ), |                     map( ProtocolConstants.MINECRAFT_1_14, 0x49 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_15, 0x4A ) |                     map( ProtocolConstants.MINECRAFT_1_15, 0x4A ), | ||||||
|  |                     map( ProtocolConstants.MINECRAFT_1_17, 0x53 ) | ||||||
|             ); |             ); | ||||||
|             TO_CLIENT.registerPacket( |             TO_CLIENT.registerPacket( | ||||||
|                     ScoreboardScore.class, |                     ScoreboardScore.class, | ||||||
| @@ -144,7 +155,8 @@ public enum Protocol | |||||||
|                     map( ProtocolConstants.MINECRAFT_1_12_1, 0x45 ), |                     map( ProtocolConstants.MINECRAFT_1_12_1, 0x45 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_13, 0x48 ), |                     map( ProtocolConstants.MINECRAFT_1_13, 0x48 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_14, 0x4C ), |                     map( ProtocolConstants.MINECRAFT_1_14, 0x4C ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_15, 0x4D ) |                     map( ProtocolConstants.MINECRAFT_1_15, 0x4D ), | ||||||
|  |                     map( ProtocolConstants.MINECRAFT_1_17, 0x56 ) | ||||||
|             ); |             ); | ||||||
|             TO_CLIENT.registerPacket( |             TO_CLIENT.registerPacket( | ||||||
|                     ScoreboardDisplay.class, |                     ScoreboardDisplay.class, | ||||||
| @@ -154,7 +166,8 @@ public enum Protocol | |||||||
|                     map( ProtocolConstants.MINECRAFT_1_12_1, 0x3B ), |                     map( ProtocolConstants.MINECRAFT_1_12_1, 0x3B ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_13, 0x3E ), |                     map( ProtocolConstants.MINECRAFT_1_13, 0x3E ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_14, 0x42 ), |                     map( ProtocolConstants.MINECRAFT_1_14, 0x42 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_15, 0x43 ) |                     map( ProtocolConstants.MINECRAFT_1_15, 0x43 ), | ||||||
|  |                     map( ProtocolConstants.MINECRAFT_1_17, 0x4C ) | ||||||
|             ); |             ); | ||||||
|             TO_CLIENT.registerPacket( |             TO_CLIENT.registerPacket( | ||||||
|                     Team.class, |                     Team.class, | ||||||
| @@ -164,7 +177,8 @@ public enum Protocol | |||||||
|                     map( ProtocolConstants.MINECRAFT_1_12_1, 0x44 ), |                     map( ProtocolConstants.MINECRAFT_1_12_1, 0x44 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_13, 0x47 ), |                     map( ProtocolConstants.MINECRAFT_1_13, 0x47 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_14, 0x4B ), |                     map( ProtocolConstants.MINECRAFT_1_14, 0x4B ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_15, 0x4C ) |                     map( ProtocolConstants.MINECRAFT_1_15, 0x4C ), | ||||||
|  |                     map( ProtocolConstants.MINECRAFT_1_17, 0x55 ) | ||||||
|             ); |             ); | ||||||
|             TO_CLIENT.registerPacket( |             TO_CLIENT.registerPacket( | ||||||
|                     PluginMessage.class, |                     PluginMessage.class, | ||||||
| @@ -174,7 +188,8 @@ public enum Protocol | |||||||
|                     map( ProtocolConstants.MINECRAFT_1_14, 0x18 ), |                     map( ProtocolConstants.MINECRAFT_1_14, 0x18 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_15, 0x19 ), |                     map( ProtocolConstants.MINECRAFT_1_15, 0x19 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_16, 0x18 ), |                     map( ProtocolConstants.MINECRAFT_1_16, 0x18 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_16_2, 0x17 ) |                     map( ProtocolConstants.MINECRAFT_1_16_2, 0x17 ), | ||||||
|  |                     map( ProtocolConstants.MINECRAFT_1_17, 0x18 ) | ||||||
|             ); |             ); | ||||||
|             TO_CLIENT.registerPacket( |             TO_CLIENT.registerPacket( | ||||||
|                     Kick.class, |                     Kick.class, | ||||||
| @@ -184,7 +199,8 @@ public enum Protocol | |||||||
|                     map( ProtocolConstants.MINECRAFT_1_14, 0x1A ), |                     map( ProtocolConstants.MINECRAFT_1_14, 0x1A ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_15, 0x1B ), |                     map( ProtocolConstants.MINECRAFT_1_15, 0x1B ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_16, 0x1A ), |                     map( ProtocolConstants.MINECRAFT_1_16, 0x1A ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_16_2, 0x19 ) |                     map( ProtocolConstants.MINECRAFT_1_16_2, 0x19 ), | ||||||
|  |                     map( ProtocolConstants.MINECRAFT_1_17, 0x1A ) | ||||||
|             ); |             ); | ||||||
|             TO_CLIENT.registerPacket( |             TO_CLIENT.registerPacket( | ||||||
|                     Title.class, |                     Title.class, | ||||||
| @@ -194,7 +210,18 @@ public enum Protocol | |||||||
|                     map( ProtocolConstants.MINECRAFT_1_13, 0x4B ), |                     map( ProtocolConstants.MINECRAFT_1_13, 0x4B ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_14, 0x4F ), |                     map( ProtocolConstants.MINECRAFT_1_14, 0x4F ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_15, 0x50 ), |                     map( ProtocolConstants.MINECRAFT_1_15, 0x50 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_16, 0x4F ) |                     map( ProtocolConstants.MINECRAFT_1_16, 0x4F ), | ||||||
|  |                     map( ProtocolConstants.MINECRAFT_1_17, 0x59 ) | ||||||
|  |             ); | ||||||
|  |             TO_CLIENT.registerPacket( ClearTitles.class, | ||||||
|  |                     map( ProtocolConstants.MINECRAFT_1_17, 0x10 ) | ||||||
|  |             ); | ||||||
|  |             TO_CLIENT.registerPacket( | ||||||
|  |                     Subtitle.class, | ||||||
|  |                     map( ProtocolConstants.MINECRAFT_1_17, 0x57 ) | ||||||
|  |             ); | ||||||
|  |             TO_CLIENT.registerPacket( TitleTimes.class, | ||||||
|  |                     map( ProtocolConstants.MINECRAFT_1_17, 0x5A ) | ||||||
|             ); |             ); | ||||||
|             TO_CLIENT.registerPacket( |             TO_CLIENT.registerPacket( | ||||||
|                     PlayerListHeaderFooter.class, |                     PlayerListHeaderFooter.class, | ||||||
| @@ -206,7 +233,8 @@ public enum Protocol | |||||||
|                     map( ProtocolConstants.MINECRAFT_1_13, 0x4E ), |                     map( ProtocolConstants.MINECRAFT_1_13, 0x4E ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_14, 0x53 ), |                     map( ProtocolConstants.MINECRAFT_1_14, 0x53 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_15, 0x54 ), |                     map( ProtocolConstants.MINECRAFT_1_15, 0x54 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_16, 0x53 ) |                     map( ProtocolConstants.MINECRAFT_1_16, 0x53 ), | ||||||
|  |                     map( ProtocolConstants.MINECRAFT_1_17, 0x5E ) | ||||||
|             ); |             ); | ||||||
|             TO_CLIENT.registerPacket( |             TO_CLIENT.registerPacket( | ||||||
|                     EntityStatus.class, |                     EntityStatus.class, | ||||||
| @@ -216,26 +244,30 @@ public enum Protocol | |||||||
|                     map( ProtocolConstants.MINECRAFT_1_14, 0x1B ), |                     map( ProtocolConstants.MINECRAFT_1_14, 0x1B ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_15, 0x1C ), |                     map( ProtocolConstants.MINECRAFT_1_15, 0x1C ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_16, 0x1B ), |                     map( ProtocolConstants.MINECRAFT_1_16, 0x1B ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_16_2, 0x1A ) |                     map( ProtocolConstants.MINECRAFT_1_16_2, 0x1A ), | ||||||
|  |                     map( ProtocolConstants.MINECRAFT_1_17, 0x1B ) | ||||||
|             ); |             ); | ||||||
|             TO_CLIENT.registerPacket( |             TO_CLIENT.registerPacket( | ||||||
|                     Commands.class, |                     Commands.class, | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_13, 0x11 ), |                     map( ProtocolConstants.MINECRAFT_1_13, 0x11 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_15, 0x12 ), |                     map( ProtocolConstants.MINECRAFT_1_15, 0x12 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_16, 0x11 ), |                     map( ProtocolConstants.MINECRAFT_1_16, 0x11 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_16_2, 0x10 ) |                     map( ProtocolConstants.MINECRAFT_1_16_2, 0x10 ), | ||||||
|  |                     map( ProtocolConstants.MINECRAFT_1_17, 0x12 ) | ||||||
|             ); |             ); | ||||||
|             TO_CLIENT.registerPacket( |             TO_CLIENT.registerPacket( | ||||||
|                     GameState.class, |                     GameState.class, | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_15, 0x1F ), |                     map( ProtocolConstants.MINECRAFT_1_15, 0x1F ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_16, 0x1E ), |                     map( ProtocolConstants.MINECRAFT_1_16, 0x1E ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_16_2, 0x1D ) |                     map( ProtocolConstants.MINECRAFT_1_16_2, 0x1D ), | ||||||
|  |                     map( ProtocolConstants.MINECRAFT_1_17, 0x1E ) | ||||||
|             ); |             ); | ||||||
|             TO_CLIENT.registerPacket( |             TO_CLIENT.registerPacket( | ||||||
|                     ViewDistance.class, |                     ViewDistance.class, | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_14, 0x41 ), |                     map( ProtocolConstants.MINECRAFT_1_14, 0x41 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_15, 0x42 ), |                     map( ProtocolConstants.MINECRAFT_1_15, 0x42 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_16, 0x41 ) |                     map( ProtocolConstants.MINECRAFT_1_16, 0x41 ), | ||||||
|  |                     map( ProtocolConstants.MINECRAFT_1_17, 0x4A ) | ||||||
|             ); |             ); | ||||||
|  |  | ||||||
|             TO_SERVER.registerPacket( |             TO_SERVER.registerPacket( | ||||||
| @@ -246,7 +278,8 @@ public enum Protocol | |||||||
|                     map( ProtocolConstants.MINECRAFT_1_12_1, 0x0B ), |                     map( ProtocolConstants.MINECRAFT_1_12_1, 0x0B ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_13, 0x0E ), |                     map( ProtocolConstants.MINECRAFT_1_13, 0x0E ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_14, 0x0F ), |                     map( ProtocolConstants.MINECRAFT_1_14, 0x0F ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_16, 0x10 ) |                     map( ProtocolConstants.MINECRAFT_1_16, 0x10 ), | ||||||
|  |                     map( ProtocolConstants.MINECRAFT_1_17, 0x0F ) | ||||||
|             ); |             ); | ||||||
|             TO_SERVER.registerPacket( |             TO_SERVER.registerPacket( | ||||||
|                     Chat.class, |                     Chat.class, | ||||||
| @@ -280,7 +313,8 @@ public enum Protocol | |||||||
|                     map( ProtocolConstants.MINECRAFT_1_12, 0x0A ), |                     map( ProtocolConstants.MINECRAFT_1_12, 0x0A ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_12_1, 0x09 ), |                     map( ProtocolConstants.MINECRAFT_1_12_1, 0x09 ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_13, 0x0A ), |                     map( ProtocolConstants.MINECRAFT_1_13, 0x0A ), | ||||||
|                     map( ProtocolConstants.MINECRAFT_1_14, 0x0B ) |                     map( ProtocolConstants.MINECRAFT_1_14, 0x0B ), | ||||||
|  |                     map( ProtocolConstants.MINECRAFT_1_17, 0x0A ) | ||||||
|             ); |             ); | ||||||
|         } |         } | ||||||
|     }, |     }, | ||||||
|   | |||||||
| @@ -1,11 +1,12 @@ | |||||||
| package net.md_5.bungee.protocol; | package net.md_5.bungee.protocol; | ||||||
|  |  | ||||||
| import java.util.Arrays; | import com.google.common.collect.ImmutableList; | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  |  | ||||||
| public class ProtocolConstants | public class ProtocolConstants | ||||||
| { | { | ||||||
|  |  | ||||||
|  |     private static final boolean SNAPSHOT_SUPPORT = Boolean.getBoolean( "net.md_5.bungee.protocol.snapshot" ); | ||||||
|     public static final int MINECRAFT_1_8 = 47; |     public static final int MINECRAFT_1_8 = 47; | ||||||
|     public static final int MINECRAFT_1_9 = 107; |     public static final int MINECRAFT_1_9 = 107; | ||||||
|     public static final int MINECRAFT_1_9_1 = 108; |     public static final int MINECRAFT_1_9_1 = 108; | ||||||
| @@ -33,46 +34,62 @@ public class ProtocolConstants | |||||||
|     public static final int MINECRAFT_1_16_2 = 751; |     public static final int MINECRAFT_1_16_2 = 751; | ||||||
|     public static final int MINECRAFT_1_16_3 = 753; |     public static final int MINECRAFT_1_16_3 = 753; | ||||||
|     public static final int MINECRAFT_1_16_4 = 754; |     public static final int MINECRAFT_1_16_4 = 754; | ||||||
|     public static final List<String> SUPPORTED_VERSIONS = Arrays.asList( |     public static final int MINECRAFT_1_17 = 1073741851; | ||||||
|             "1.8.x", |     public static final List<String> SUPPORTED_VERSIONS; | ||||||
|             "1.9.x", |     public static final List<Integer> SUPPORTED_VERSION_IDS; | ||||||
|             "1.10.x", |  | ||||||
|             "1.11.x", |     static | ||||||
|             "1.12.x", |     { | ||||||
|             "1.13.x", |         ImmutableList.Builder<String> supportedVersions = ImmutableList.<String>builder().add( | ||||||
|             "1.14.x", |                 "1.8.x", | ||||||
|             "1.15.x", |                 "1.9.x", | ||||||
|             "1.16.x" |                 "1.10.x", | ||||||
|     ); |                 "1.11.x", | ||||||
|     public static final List<Integer> SUPPORTED_VERSION_IDS = Arrays.asList( |                 "1.12.x", | ||||||
|             ProtocolConstants.MINECRAFT_1_8, |                 "1.13.x", | ||||||
|             ProtocolConstants.MINECRAFT_1_9, |                 "1.14.x", | ||||||
|             ProtocolConstants.MINECRAFT_1_9_1, |                 "1.15.x", | ||||||
|             ProtocolConstants.MINECRAFT_1_9_2, |                 "1.16.x" | ||||||
|             ProtocolConstants.MINECRAFT_1_9_4, |         ); | ||||||
|             ProtocolConstants.MINECRAFT_1_10, |         ImmutableList.Builder<Integer> supportedVersionIds = ImmutableList.<Integer>builder().add( | ||||||
|             ProtocolConstants.MINECRAFT_1_11, |                 ProtocolConstants.MINECRAFT_1_8, | ||||||
|             ProtocolConstants.MINECRAFT_1_11_1, |                 ProtocolConstants.MINECRAFT_1_9, | ||||||
|             ProtocolConstants.MINECRAFT_1_12, |                 ProtocolConstants.MINECRAFT_1_9_1, | ||||||
|             ProtocolConstants.MINECRAFT_1_12_1, |                 ProtocolConstants.MINECRAFT_1_9_2, | ||||||
|             ProtocolConstants.MINECRAFT_1_12_2, |                 ProtocolConstants.MINECRAFT_1_9_4, | ||||||
|             ProtocolConstants.MINECRAFT_1_13, |                 ProtocolConstants.MINECRAFT_1_10, | ||||||
|             ProtocolConstants.MINECRAFT_1_13_1, |                 ProtocolConstants.MINECRAFT_1_11, | ||||||
|             ProtocolConstants.MINECRAFT_1_13_2, |                 ProtocolConstants.MINECRAFT_1_11_1, | ||||||
|             ProtocolConstants.MINECRAFT_1_14, |                 ProtocolConstants.MINECRAFT_1_12, | ||||||
|             ProtocolConstants.MINECRAFT_1_14_1, |                 ProtocolConstants.MINECRAFT_1_12_1, | ||||||
|             ProtocolConstants.MINECRAFT_1_14_2, |                 ProtocolConstants.MINECRAFT_1_12_2, | ||||||
|             ProtocolConstants.MINECRAFT_1_14_3, |                 ProtocolConstants.MINECRAFT_1_13, | ||||||
|             ProtocolConstants.MINECRAFT_1_14_4, |                 ProtocolConstants.MINECRAFT_1_13_1, | ||||||
|             ProtocolConstants.MINECRAFT_1_15, |                 ProtocolConstants.MINECRAFT_1_13_2, | ||||||
|             ProtocolConstants.MINECRAFT_1_15_1, |                 ProtocolConstants.MINECRAFT_1_14, | ||||||
|             ProtocolConstants.MINECRAFT_1_15_2, |                 ProtocolConstants.MINECRAFT_1_14_1, | ||||||
|             ProtocolConstants.MINECRAFT_1_16, |                 ProtocolConstants.MINECRAFT_1_14_2, | ||||||
|             ProtocolConstants.MINECRAFT_1_16_1, |                 ProtocolConstants.MINECRAFT_1_14_3, | ||||||
|             ProtocolConstants.MINECRAFT_1_16_2, |                 ProtocolConstants.MINECRAFT_1_14_4, | ||||||
|             ProtocolConstants.MINECRAFT_1_16_3, |                 ProtocolConstants.MINECRAFT_1_15, | ||||||
|             ProtocolConstants.MINECRAFT_1_16_4 |                 ProtocolConstants.MINECRAFT_1_15_1, | ||||||
|     ); |                 ProtocolConstants.MINECRAFT_1_15_2, | ||||||
|  |                 ProtocolConstants.MINECRAFT_1_16, | ||||||
|  |                 ProtocolConstants.MINECRAFT_1_16_1, | ||||||
|  |                 ProtocolConstants.MINECRAFT_1_16_2, | ||||||
|  |                 ProtocolConstants.MINECRAFT_1_16_3, | ||||||
|  |                 ProtocolConstants.MINECRAFT_1_16_4 | ||||||
|  |         ); | ||||||
|  |  | ||||||
|  |         if ( SNAPSHOT_SUPPORT ) | ||||||
|  |         { | ||||||
|  |             supportedVersions.add( "1.17.x" ); | ||||||
|  |             supportedVersionIds.add( ProtocolConstants.MINECRAFT_1_17 ); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         SUPPORTED_VERSIONS = supportedVersions.build(); | ||||||
|  |         SUPPORTED_VERSION_IDS = supportedVersionIds.build(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     public enum Direction |     public enum Direction | ||||||
|     { |     { | ||||||
|   | |||||||
| @@ -0,0 +1,38 @@ | |||||||
|  | package net.md_5.bungee.protocol.packet; | ||||||
|  |  | ||||||
|  | import io.netty.buffer.ByteBuf; | ||||||
|  | import lombok.AllArgsConstructor; | ||||||
|  | import lombok.Data; | ||||||
|  | import lombok.EqualsAndHashCode; | ||||||
|  | import lombok.NoArgsConstructor; | ||||||
|  | import net.md_5.bungee.protocol.AbstractPacketHandler; | ||||||
|  | import net.md_5.bungee.protocol.DefinedPacket; | ||||||
|  | import net.md_5.bungee.protocol.ProtocolConstants; | ||||||
|  |  | ||||||
|  | @Data | ||||||
|  | @NoArgsConstructor | ||||||
|  | @AllArgsConstructor | ||||||
|  | @EqualsAndHashCode(callSuper = false) | ||||||
|  | public class ClearTitles extends DefinedPacket | ||||||
|  | { | ||||||
|  |  | ||||||
|  |     private boolean reset; | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void read(ByteBuf buf, ProtocolConstants.Direction direction, int protocolVersion) | ||||||
|  |     { | ||||||
|  |         reset = buf.readBoolean(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void write(ByteBuf buf, ProtocolConstants.Direction direction, int protocolVersion) | ||||||
|  |     { | ||||||
|  |         buf.writeBoolean( reset ); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void handle(AbstractPacketHandler handler) throws Exception | ||||||
|  |     { | ||||||
|  |         handler.handle( this ); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -23,6 +23,7 @@ public class ClientSettings extends DefinedPacket | |||||||
|     private byte difficulty; |     private byte difficulty; | ||||||
|     private byte skinParts; |     private byte skinParts; | ||||||
|     private int mainHand; |     private int mainHand; | ||||||
|  |     private boolean disableTextFiltering; | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public void read(ByteBuf buf, ProtocolConstants.Direction direction, int protocolVersion) |     public void read(ByteBuf buf, ProtocolConstants.Direction direction, int protocolVersion) | ||||||
| @@ -36,6 +37,10 @@ public class ClientSettings extends DefinedPacket | |||||||
|         { |         { | ||||||
|             mainHand = DefinedPacket.readVarInt( buf ); |             mainHand = DefinedPacket.readVarInt( buf ); | ||||||
|         } |         } | ||||||
|  |         if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_17 ) | ||||||
|  |         { | ||||||
|  |             disableTextFiltering = buf.readBoolean(); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
| @@ -56,6 +61,10 @@ public class ClientSettings extends DefinedPacket | |||||||
|         { |         { | ||||||
|             DefinedPacket.writeVarInt( mainHand, buf ); |             DefinedPacket.writeVarInt( mainHand, buf ); | ||||||
|         } |         } | ||||||
|  |         if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_17 ) | ||||||
|  |         { | ||||||
|  |             buf.writeBoolean( disableTextFiltering ); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|   | |||||||
| @@ -0,0 +1,36 @@ | |||||||
|  | package net.md_5.bungee.protocol.packet; | ||||||
|  |  | ||||||
|  | import io.netty.buffer.ByteBuf; | ||||||
|  | import lombok.Data; | ||||||
|  | import lombok.EqualsAndHashCode; | ||||||
|  | import lombok.NoArgsConstructor; | ||||||
|  | import net.md_5.bungee.protocol.AbstractPacketHandler; | ||||||
|  | import net.md_5.bungee.protocol.DefinedPacket; | ||||||
|  | import net.md_5.bungee.protocol.ProtocolConstants; | ||||||
|  |  | ||||||
|  | @Data | ||||||
|  | @NoArgsConstructor | ||||||
|  | @EqualsAndHashCode(callSuper = false) | ||||||
|  | public class Subtitle extends DefinedPacket | ||||||
|  | { | ||||||
|  |  | ||||||
|  |     private String text; | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void read(ByteBuf buf, ProtocolConstants.Direction direction, int protocolVersion) | ||||||
|  |     { | ||||||
|  |         text = readString( buf ); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void write(ByteBuf buf, ProtocolConstants.Direction direction, int protocolVersion) | ||||||
|  |     { | ||||||
|  |         writeString( text, buf ); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void handle(AbstractPacketHandler handler) throws Exception | ||||||
|  |     { | ||||||
|  |         handler.handle( this ); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -24,9 +24,20 @@ public class Title extends DefinedPacket | |||||||
|     private int stay; |     private int stay; | ||||||
|     private int fadeOut; |     private int fadeOut; | ||||||
|  |  | ||||||
|  |     public Title(Action action) | ||||||
|  |     { | ||||||
|  |         this.action = action; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public void read(ByteBuf buf, ProtocolConstants.Direction direction, int protocolVersion) |     public void read(ByteBuf buf, ProtocolConstants.Direction direction, int protocolVersion) | ||||||
|     { |     { | ||||||
|  |         if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_17 ) | ||||||
|  |         { | ||||||
|  |             text = readString( buf ); | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  |  | ||||||
|         int index = readVarInt( buf ); |         int index = readVarInt( buf ); | ||||||
|  |  | ||||||
|         // If we're working on 1.10 or lower, increment the value of the index so we pull out the correct value. |         // If we're working on 1.10 or lower, increment the value of the index so we pull out the correct value. | ||||||
| @@ -54,6 +65,12 @@ public class Title extends DefinedPacket | |||||||
|     @Override |     @Override | ||||||
|     public void write(ByteBuf buf, ProtocolConstants.Direction direction, int protocolVersion) |     public void write(ByteBuf buf, ProtocolConstants.Direction direction, int protocolVersion) | ||||||
|     { |     { | ||||||
|  |         if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_17 ) | ||||||
|  |         { | ||||||
|  |             writeString( text, buf ); | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  |  | ||||||
|         int index = action.ordinal(); |         int index = action.ordinal(); | ||||||
|  |  | ||||||
|         // If we're working on 1.10 or lower, increment the value of the index so we pull out the correct value. |         // If we're working on 1.10 or lower, increment the value of the index so we pull out the correct value. | ||||||
|   | |||||||
| @@ -0,0 +1,42 @@ | |||||||
|  | package net.md_5.bungee.protocol.packet; | ||||||
|  |  | ||||||
|  | import io.netty.buffer.ByteBuf; | ||||||
|  | import lombok.Data; | ||||||
|  | import lombok.EqualsAndHashCode; | ||||||
|  | import lombok.NoArgsConstructor; | ||||||
|  | import net.md_5.bungee.protocol.AbstractPacketHandler; | ||||||
|  | import net.md_5.bungee.protocol.DefinedPacket; | ||||||
|  | import net.md_5.bungee.protocol.ProtocolConstants; | ||||||
|  |  | ||||||
|  | @Data | ||||||
|  | @NoArgsConstructor | ||||||
|  | @EqualsAndHashCode(callSuper = false) | ||||||
|  | public class TitleTimes extends DefinedPacket | ||||||
|  | { | ||||||
|  |  | ||||||
|  |     private int fadeIn; | ||||||
|  |     private int stay; | ||||||
|  |     private int fadeOut; | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void read(ByteBuf buf, ProtocolConstants.Direction direction, int protocolVersion) | ||||||
|  |     { | ||||||
|  |         fadeIn = buf.readInt(); | ||||||
|  |         stay = buf.readInt(); | ||||||
|  |         fadeOut = buf.readInt(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void write(ByteBuf buf, ProtocolConstants.Direction direction, int protocolVersion) | ||||||
|  |     { | ||||||
|  |         buf.writeInt( fadeIn ); | ||||||
|  |         buf.writeInt( stay ); | ||||||
|  |         buf.writeInt( fadeOut ); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void handle(AbstractPacketHandler handler) throws Exception | ||||||
|  |     { | ||||||
|  |         handler.handle( this ); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -1,29 +1,46 @@ | |||||||
| package net.md_5.bungee; | package net.md_5.bungee; | ||||||
|  |  | ||||||
|  | import lombok.Data; | ||||||
| import net.md_5.bungee.api.Title; | import net.md_5.bungee.api.Title; | ||||||
| import net.md_5.bungee.api.chat.BaseComponent; | import net.md_5.bungee.api.chat.BaseComponent; | ||||||
| import net.md_5.bungee.api.connection.ProxiedPlayer; | import net.md_5.bungee.api.connection.ProxiedPlayer; | ||||||
| import net.md_5.bungee.chat.ComponentSerializer; | import net.md_5.bungee.chat.ComponentSerializer; | ||||||
| import net.md_5.bungee.protocol.DefinedPacket; | import net.md_5.bungee.protocol.DefinedPacket; | ||||||
|  | import net.md_5.bungee.protocol.ProtocolConstants; | ||||||
|  | import net.md_5.bungee.protocol.packet.ClearTitles; | ||||||
|  | import net.md_5.bungee.protocol.packet.Subtitle; | ||||||
| import net.md_5.bungee.protocol.packet.Title.Action; | import net.md_5.bungee.protocol.packet.Title.Action; | ||||||
|  | import net.md_5.bungee.protocol.packet.TitleTimes; | ||||||
|  |  | ||||||
| public class BungeeTitle implements Title | public class BungeeTitle implements Title | ||||||
| { | { | ||||||
|  |  | ||||||
|     private net.md_5.bungee.protocol.packet.Title title, subtitle, times, clear, reset; |     private TitlePacketHolder<net.md_5.bungee.protocol.packet.Title> title; | ||||||
|  |     private TitlePacketHolder<Subtitle> subtitle; | ||||||
|  |     private TitlePacketHolder<TitleTimes> times; | ||||||
|  |     private TitlePacketHolder<ClearTitles> clear; | ||||||
|  |     private TitlePacketHolder<ClearTitles> reset; | ||||||
|  |  | ||||||
|     private static net.md_5.bungee.protocol.packet.Title createPacket(Action action) |     @Data | ||||||
|  |     private static class TitlePacketHolder<T extends DefinedPacket> | ||||||
|     { |     { | ||||||
|         net.md_5.bungee.protocol.packet.Title title = new net.md_5.bungee.protocol.packet.Title(); |  | ||||||
|         title.setAction( action ); |  | ||||||
|  |  | ||||||
|         if ( action == Action.TIMES ) |         private final net.md_5.bungee.protocol.packet.Title oldPacket; | ||||||
|         { |         private final T newPacket; | ||||||
|             // Set packet to default values first |     } | ||||||
|             title.setFadeIn( 20 ); |  | ||||||
|             title.setStay( 60 ); |     private static TitlePacketHolder<TitleTimes> createAnimationPacket() | ||||||
|             title.setFadeOut( 20 ); |     { | ||||||
|         } |         TitlePacketHolder<TitleTimes> title = new TitlePacketHolder<>( new net.md_5.bungee.protocol.packet.Title( Action.TIMES ), new TitleTimes() ); | ||||||
|  |  | ||||||
|  |         title.oldPacket.setFadeIn( 20 ); | ||||||
|  |         title.oldPacket.setStay( 60 ); | ||||||
|  |         title.oldPacket.setFadeOut( 20 ); | ||||||
|  |  | ||||||
|  |         title.newPacket.setFadeIn( 20 ); | ||||||
|  |         title.newPacket.setStay( 60 ); | ||||||
|  |         title.newPacket.setFadeOut( 20 ); | ||||||
|  |  | ||||||
|         return title; |         return title; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -32,10 +49,11 @@ public class BungeeTitle implements Title | |||||||
|     { |     { | ||||||
|         if ( title == null ) |         if ( title == null ) | ||||||
|         { |         { | ||||||
|             title = createPacket( Action.TITLE ); |             net.md_5.bungee.protocol.packet.Title packet = new net.md_5.bungee.protocol.packet.Title( Action.TITLE ); | ||||||
|  |             title = new TitlePacketHolder<>( packet, packet ); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         title.setText( ComponentSerializer.toString( text ) ); |         title.oldPacket.setText( ComponentSerializer.toString( text ) ); // = newPacket | ||||||
|         return this; |         return this; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -44,10 +62,11 @@ public class BungeeTitle implements Title | |||||||
|     { |     { | ||||||
|         if ( title == null ) |         if ( title == null ) | ||||||
|         { |         { | ||||||
|             title = createPacket( Action.TITLE ); |             net.md_5.bungee.protocol.packet.Title packet = new net.md_5.bungee.protocol.packet.Title( Action.TITLE ); | ||||||
|  |             title = new TitlePacketHolder<>( packet, packet ); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         title.setText( ComponentSerializer.toString( text ) ); |         title.oldPacket.setText( ComponentSerializer.toString( text ) ); // = newPacket | ||||||
|         return this; |         return this; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -56,10 +75,12 @@ public class BungeeTitle implements Title | |||||||
|     { |     { | ||||||
|         if ( subtitle == null ) |         if ( subtitle == null ) | ||||||
|         { |         { | ||||||
|             subtitle = createPacket( Action.SUBTITLE ); |             subtitle = new TitlePacketHolder<>( new net.md_5.bungee.protocol.packet.Title( Action.SUBTITLE ), new Subtitle() ); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         subtitle.setText( ComponentSerializer.toString( text ) ); |         String serialized = ComponentSerializer.toString( text ); | ||||||
|  |         subtitle.oldPacket.setText( serialized ); | ||||||
|  |         subtitle.newPacket.setText( serialized ); | ||||||
|         return this; |         return this; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -68,10 +89,12 @@ public class BungeeTitle implements Title | |||||||
|     { |     { | ||||||
|         if ( subtitle == null ) |         if ( subtitle == null ) | ||||||
|         { |         { | ||||||
|             subtitle = createPacket( Action.SUBTITLE ); |             subtitle = new TitlePacketHolder<>( new net.md_5.bungee.protocol.packet.Title( Action.SUBTITLE ), new Subtitle() ); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         subtitle.setText( ComponentSerializer.toString( text ) ); |         String serialized = ComponentSerializer.toString( text ); | ||||||
|  |         subtitle.oldPacket.setText( serialized ); | ||||||
|  |         subtitle.newPacket.setText( serialized ); | ||||||
|         return this; |         return this; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -80,10 +103,11 @@ public class BungeeTitle implements Title | |||||||
|     { |     { | ||||||
|         if ( times == null ) |         if ( times == null ) | ||||||
|         { |         { | ||||||
|             times = createPacket( Action.TIMES ); |             times = createAnimationPacket(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         times.setFadeIn( ticks ); |         times.oldPacket.setFadeIn( ticks ); | ||||||
|  |         times.newPacket.setFadeIn( ticks ); | ||||||
|         return this; |         return this; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -92,10 +116,11 @@ public class BungeeTitle implements Title | |||||||
|     { |     { | ||||||
|         if ( times == null ) |         if ( times == null ) | ||||||
|         { |         { | ||||||
|             times = createPacket( Action.TIMES ); |             times = createAnimationPacket(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         times.setStay( ticks ); |         times.oldPacket.setStay( ticks ); | ||||||
|  |         times.newPacket.setStay( ticks ); | ||||||
|         return this; |         return this; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -104,10 +129,11 @@ public class BungeeTitle implements Title | |||||||
|     { |     { | ||||||
|         if ( times == null ) |         if ( times == null ) | ||||||
|         { |         { | ||||||
|             times = createPacket( Action.TIMES ); |             times = createAnimationPacket(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         times.setFadeOut( ticks ); |         times.oldPacket.setFadeOut( ticks ); | ||||||
|  |         times.newPacket.setFadeOut( ticks ); | ||||||
|         return this; |         return this; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -116,7 +142,7 @@ public class BungeeTitle implements Title | |||||||
|     { |     { | ||||||
|         if ( clear == null ) |         if ( clear == null ) | ||||||
|         { |         { | ||||||
|             clear = createPacket( Action.CLEAR ); |             clear = new TitlePacketHolder<>( new net.md_5.bungee.protocol.packet.Title( Action.CLEAR ), new ClearTitles() ); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         title = null; // No need to send title if we clear it after that again |         title = null; // No need to send title if we clear it after that again | ||||||
| @@ -129,7 +155,7 @@ public class BungeeTitle implements Title | |||||||
|     { |     { | ||||||
|         if ( reset == null ) |         if ( reset == null ) | ||||||
|         { |         { | ||||||
|             reset = createPacket( Action.RESET ); |             reset = new TitlePacketHolder<>( new net.md_5.bungee.protocol.packet.Title( Action.RESET ), new ClearTitles( true ) ); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         // No need to send these packets if we reset them later |         // No need to send these packets if we reset them later | ||||||
| @@ -140,11 +166,17 @@ public class BungeeTitle implements Title | |||||||
|         return this; |         return this; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private static void sendPacket(ProxiedPlayer player, DefinedPacket packet) |     private static void sendPacket(ProxiedPlayer player, TitlePacketHolder packet) | ||||||
|     { |     { | ||||||
|         if ( packet != null ) |         if ( packet != null ) | ||||||
|         { |         { | ||||||
|             player.unsafe().sendPacket( packet ); |             if ( player.getPendingConnection().getVersion() >= ProtocolConstants.MINECRAFT_1_17 ) | ||||||
|  |             { | ||||||
|  |                 player.unsafe().sendPacket( packet.newPacket ); | ||||||
|  |             } else | ||||||
|  |             { | ||||||
|  |                 player.unsafe().sendPacket( packet.oldPacket ); | ||||||
|  |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -68,6 +68,8 @@ public abstract class EntityMap | |||||||
|             case ProtocolConstants.MINECRAFT_1_16_3: |             case ProtocolConstants.MINECRAFT_1_16_3: | ||||||
|             case ProtocolConstants.MINECRAFT_1_16_4: |             case ProtocolConstants.MINECRAFT_1_16_4: | ||||||
|                 return EntityMap_1_16_2.INSTANCE_1_16_2; |                 return EntityMap_1_16_2.INSTANCE_1_16_2; | ||||||
|  |             case ProtocolConstants.MINECRAFT_1_17: | ||||||
|  |                 return EntityMap_1_16_2.INSTANCE_1_17; | ||||||
|         } |         } | ||||||
|         throw new RuntimeException( "Version " + version + " has no entity map" ); |         throw new RuntimeException( "Version " + version + " has no entity map" ); | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -15,6 +15,7 @@ class EntityMap_1_16_2 extends EntityMap | |||||||
| { | { | ||||||
|  |  | ||||||
|     static final EntityMap_1_16_2 INSTANCE_1_16_2 = new EntityMap_1_16_2( 0x04, 0x2D ); |     static final EntityMap_1_16_2 INSTANCE_1_16_2 = new EntityMap_1_16_2( 0x04, 0x2D ); | ||||||
|  |     static final EntityMap_1_16_2 INSTANCE_1_17 = new EntityMap_1_16_2( 0x04, 0x2D ); | ||||||
|     // |     // | ||||||
|     private final int spawnPlayerId; |     private final int spawnPlayerId; | ||||||
|     private final int spectateId; |     private final int spectateId; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 md_5
					md_5