Minecraft 1.20.2-rc1 support
This commit is contained in:
@@ -11,6 +11,7 @@ import net.md_5.bungee.protocol.packet.Commands;
|
||||
import net.md_5.bungee.protocol.packet.EncryptionRequest;
|
||||
import net.md_5.bungee.protocol.packet.EncryptionResponse;
|
||||
import net.md_5.bungee.protocol.packet.EntityStatus;
|
||||
import net.md_5.bungee.protocol.packet.FinishConfiguration;
|
||||
import net.md_5.bungee.protocol.packet.GameState;
|
||||
import net.md_5.bungee.protocol.packet.Handshake;
|
||||
import net.md_5.bungee.protocol.packet.KeepAlive;
|
||||
@@ -18,6 +19,7 @@ import net.md_5.bungee.protocol.packet.Kick;
|
||||
import net.md_5.bungee.protocol.packet.LegacyHandshake;
|
||||
import net.md_5.bungee.protocol.packet.LegacyPing;
|
||||
import net.md_5.bungee.protocol.packet.Login;
|
||||
import net.md_5.bungee.protocol.packet.LoginAcknowledged;
|
||||
import net.md_5.bungee.protocol.packet.LoginPayloadRequest;
|
||||
import net.md_5.bungee.protocol.packet.LoginPayloadResponse;
|
||||
import net.md_5.bungee.protocol.packet.LoginRequest;
|
||||
@@ -34,6 +36,7 @@ import net.md_5.bungee.protocol.packet.ScoreboardObjective;
|
||||
import net.md_5.bungee.protocol.packet.ScoreboardScore;
|
||||
import net.md_5.bungee.protocol.packet.ServerData;
|
||||
import net.md_5.bungee.protocol.packet.SetCompression;
|
||||
import net.md_5.bungee.protocol.packet.StartConfiguration;
|
||||
import net.md_5.bungee.protocol.packet.StatusRequest;
|
||||
import net.md_5.bungee.protocol.packet.StatusResponse;
|
||||
import net.md_5.bungee.protocol.packet.Subtitle;
|
||||
@@ -223,4 +226,16 @@ public abstract class AbstractPacketHandler
|
||||
public void handle(ServerData serverData) throws Exception
|
||||
{
|
||||
}
|
||||
|
||||
public void handle(LoginAcknowledged loginAcknowledged) throws Exception
|
||||
{
|
||||
}
|
||||
|
||||
public void handle(StartConfiguration startConfiguration) throws Exception
|
||||
{
|
||||
}
|
||||
|
||||
public void handle(FinishConfiguration finishConfiguration) throws Exception
|
||||
{
|
||||
}
|
||||
}
|
||||
|
@@ -15,7 +15,9 @@ import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import se.llbit.nbt.ErrorTag;
|
||||
import se.llbit.nbt.NamedTag;
|
||||
import se.llbit.nbt.SpecificTag;
|
||||
import se.llbit.nbt.Tag;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
@@ -293,14 +295,35 @@ public abstract class DefinedPacket
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Tag readTag(ByteBuf input)
|
||||
public static Tag readTag(ByteBuf input, int protocolVersion)
|
||||
{
|
||||
Tag tag = NamedTag.read( new DataInputStream( new ByteBufInputStream( input ) ) );
|
||||
DataInputStream in = new DataInputStream( new ByteBufInputStream( input ) );
|
||||
Tag tag;
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_20_2 )
|
||||
{
|
||||
try
|
||||
{
|
||||
byte type = in.readByte();
|
||||
if ( type == 0 )
|
||||
{
|
||||
return Tag.END;
|
||||
} else
|
||||
{
|
||||
tag = SpecificTag.read( type, in );
|
||||
}
|
||||
} catch ( IOException ex )
|
||||
{
|
||||
tag = new ErrorTag( "IOException while reading tag type:\n" + ex.getMessage() );
|
||||
}
|
||||
} else
|
||||
{
|
||||
tag = NamedTag.read( in );
|
||||
}
|
||||
Preconditions.checkArgument( !tag.isError(), "Error reading tag: %s", tag.error() );
|
||||
return tag;
|
||||
}
|
||||
|
||||
public static void writeTag(Tag tag, ByteBuf output)
|
||||
public static void writeTag(Tag tag, ByteBuf output, int protocolVersion)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -378,6 +401,11 @@ public abstract class DefinedPacket
|
||||
write( buf );
|
||||
}
|
||||
|
||||
public Protocol nextProtocol()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public abstract void handle(AbstractPacketHandler handler) throws Exception;
|
||||
|
||||
@Override
|
||||
|
@@ -5,12 +5,14 @@ import io.netty.channel.ChannelHandlerContext;
|
||||
import io.netty.handler.codec.MessageToMessageDecoder;
|
||||
import java.util.List;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@AllArgsConstructor
|
||||
public class MinecraftDecoder extends MessageToMessageDecoder<ByteBuf>
|
||||
{
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
private Protocol protocol;
|
||||
private final boolean server;
|
||||
|
@@ -4,12 +4,14 @@ import io.netty.buffer.ByteBuf;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import io.netty.handler.codec.MessageToByteEncoder;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@AllArgsConstructor
|
||||
public class MinecraftEncoder extends MessageToByteEncoder<DefinedPacket>
|
||||
{
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
private Protocol protocol;
|
||||
private boolean server;
|
||||
|
@@ -19,11 +19,13 @@ import net.md_5.bungee.protocol.packet.Commands;
|
||||
import net.md_5.bungee.protocol.packet.EncryptionRequest;
|
||||
import net.md_5.bungee.protocol.packet.EncryptionResponse;
|
||||
import net.md_5.bungee.protocol.packet.EntityStatus;
|
||||
import net.md_5.bungee.protocol.packet.FinishConfiguration;
|
||||
import net.md_5.bungee.protocol.packet.GameState;
|
||||
import net.md_5.bungee.protocol.packet.Handshake;
|
||||
import net.md_5.bungee.protocol.packet.KeepAlive;
|
||||
import net.md_5.bungee.protocol.packet.Kick;
|
||||
import net.md_5.bungee.protocol.packet.Login;
|
||||
import net.md_5.bungee.protocol.packet.LoginAcknowledged;
|
||||
import net.md_5.bungee.protocol.packet.LoginPayloadRequest;
|
||||
import net.md_5.bungee.protocol.packet.LoginPayloadResponse;
|
||||
import net.md_5.bungee.protocol.packet.LoginRequest;
|
||||
@@ -40,6 +42,7 @@ import net.md_5.bungee.protocol.packet.ScoreboardObjective;
|
||||
import net.md_5.bungee.protocol.packet.ScoreboardScore;
|
||||
import net.md_5.bungee.protocol.packet.ServerData;
|
||||
import net.md_5.bungee.protocol.packet.SetCompression;
|
||||
import net.md_5.bungee.protocol.packet.StartConfiguration;
|
||||
import net.md_5.bungee.protocol.packet.StatusRequest;
|
||||
import net.md_5.bungee.protocol.packet.StatusResponse;
|
||||
import net.md_5.bungee.protocol.packet.Subtitle;
|
||||
@@ -85,7 +88,8 @@ public enum Protocol
|
||||
map( ProtocolConstants.MINECRAFT_1_19, 0x1E ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_1, 0x20 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_3, 0x1F ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x23 )
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x23 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x24 )
|
||||
);
|
||||
TO_CLIENT.registerPacket(
|
||||
Login.class,
|
||||
@@ -100,7 +104,8 @@ public enum Protocol
|
||||
map( ProtocolConstants.MINECRAFT_1_19, 0x23 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_1, 0x25 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_3, 0x24 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x28 )
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x28 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x29 )
|
||||
);
|
||||
TO_CLIENT.registerPacket( Chat.class,
|
||||
Chat::new,
|
||||
@@ -128,7 +133,8 @@ public enum Protocol
|
||||
map( ProtocolConstants.MINECRAFT_1_19, 0x3B ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_1, 0x3E ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_3, 0x3D ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x41 )
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x41 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x43 )
|
||||
);
|
||||
TO_CLIENT.registerPacket(
|
||||
BossBar.class,
|
||||
@@ -138,7 +144,8 @@ public enum Protocol
|
||||
map( ProtocolConstants.MINECRAFT_1_16, 0x0C ),
|
||||
map( ProtocolConstants.MINECRAFT_1_17, 0x0D ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19, 0x0A ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0xB )
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x0B ),
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x0A )
|
||||
);
|
||||
TO_CLIENT.registerPacket(
|
||||
PlayerListItem.class, // PlayerInfo
|
||||
@@ -168,7 +175,8 @@ public enum Protocol
|
||||
map( ProtocolConstants.MINECRAFT_1_17, 0x11 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19, 0x0E ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_3, 0x0D ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0xF )
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x0F ),
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x10 )
|
||||
);
|
||||
TO_CLIENT.registerPacket(
|
||||
ScoreboardObjective.class,
|
||||
@@ -183,7 +191,8 @@ public enum Protocol
|
||||
map( ProtocolConstants.MINECRAFT_1_17, 0x53 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_1, 0x56 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_3, 0x54 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x58 )
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x58 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x5A )
|
||||
);
|
||||
TO_CLIENT.registerPacket(
|
||||
ScoreboardScore.class,
|
||||
@@ -198,7 +207,8 @@ public enum Protocol
|
||||
map( ProtocolConstants.MINECRAFT_1_17, 0x56 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_1, 0x59 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_3, 0x57 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x5B )
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x5B ),
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x5D )
|
||||
);
|
||||
TO_CLIENT.registerPacket(
|
||||
ScoreboardDisplay.class,
|
||||
@@ -213,7 +223,8 @@ public enum Protocol
|
||||
map( ProtocolConstants.MINECRAFT_1_17, 0x4C ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_1, 0x4F ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_3, 0x4D ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x51 )
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x51 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x53 )
|
||||
);
|
||||
TO_CLIENT.registerPacket(
|
||||
Team.class,
|
||||
@@ -228,7 +239,8 @@ public enum Protocol
|
||||
map( ProtocolConstants.MINECRAFT_1_17, 0x55 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_1, 0x58 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_3, 0x56 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x5A )
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x5A ),
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x5C )
|
||||
);
|
||||
TO_CLIENT.registerPacket(
|
||||
PluginMessage.class,
|
||||
@@ -244,7 +256,8 @@ public enum Protocol
|
||||
map( ProtocolConstants.MINECRAFT_1_19, 0x15 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_1, 0x16 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_3, 0x15 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x17 )
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x17 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x18 )
|
||||
);
|
||||
TO_CLIENT.registerPacket(
|
||||
Kick.class,
|
||||
@@ -260,7 +273,8 @@ public enum Protocol
|
||||
map( ProtocolConstants.MINECRAFT_1_19, 0x17 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_1, 0x19 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_3, 0x17 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x1A )
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x1A ),
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x1B )
|
||||
);
|
||||
TO_CLIENT.registerPacket(
|
||||
Title.class,
|
||||
@@ -276,7 +290,8 @@ public enum Protocol
|
||||
map( ProtocolConstants.MINECRAFT_1_18, 0x5A ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_1, 0x5D ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_3, 0x5B ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x5F )
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x5F ),
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x61 )
|
||||
);
|
||||
TO_CLIENT.registerPacket(
|
||||
ClearTitles.class,
|
||||
@@ -284,7 +299,8 @@ public enum Protocol
|
||||
map( ProtocolConstants.MINECRAFT_1_17, 0x10 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19, 0x0D ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_3, 0x0C ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0xE )
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x0E ),
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x0F )
|
||||
);
|
||||
TO_CLIENT.registerPacket(
|
||||
Subtitle.class,
|
||||
@@ -293,7 +309,8 @@ public enum Protocol
|
||||
map( ProtocolConstants.MINECRAFT_1_18, 0x58 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_1, 0x5B ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_3, 0x59 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x5D )
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x5D ),
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x5F )
|
||||
);
|
||||
TO_CLIENT.registerPacket(
|
||||
TitleTimes.class,
|
||||
@@ -302,7 +319,8 @@ public enum Protocol
|
||||
map( ProtocolConstants.MINECRAFT_1_18, 0x5B ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_1, 0x5E ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_3, 0x5C ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x60 )
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x60 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x62 )
|
||||
);
|
||||
TO_CLIENT.registerPacket(
|
||||
SystemChat.class,
|
||||
@@ -310,7 +328,8 @@ public enum Protocol
|
||||
map( ProtocolConstants.MINECRAFT_1_19, 0x5F ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_1, 0x62 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_3, 0x60 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x64 )
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x64 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x67 )
|
||||
);
|
||||
TO_CLIENT.registerPacket(
|
||||
PlayerListHeaderFooter.class,
|
||||
@@ -329,7 +348,8 @@ public enum Protocol
|
||||
map( ProtocolConstants.MINECRAFT_1_19, 0x60 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_1, 0x63 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_3, 0x61 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x65 )
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x65 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x68 )
|
||||
);
|
||||
TO_CLIENT.registerPacket(
|
||||
EntityStatus.class,
|
||||
@@ -345,7 +365,8 @@ public enum Protocol
|
||||
map( ProtocolConstants.MINECRAFT_1_19, 0x18 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_1, 0x1A ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_3, 0x19 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x1C )
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x1C ),
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x1D )
|
||||
);
|
||||
TO_CLIENT.registerPacket(
|
||||
Commands.class,
|
||||
@@ -357,7 +378,8 @@ public enum Protocol
|
||||
map( ProtocolConstants.MINECRAFT_1_17, 0x12 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19, 0x0F ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_3, 0x0E ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x10 )
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x10 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x11 )
|
||||
);
|
||||
TO_CLIENT.registerPacket(
|
||||
GameState.class,
|
||||
@@ -369,7 +391,8 @@ public enum Protocol
|
||||
map( ProtocolConstants.MINECRAFT_1_19, 0x1B ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_1, 0x1D ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_3, 0x1C ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x1F )
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x1F ),
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x20 )
|
||||
);
|
||||
TO_CLIENT.registerPacket(
|
||||
ViewDistance.class,
|
||||
@@ -381,7 +404,8 @@ public enum Protocol
|
||||
map( ProtocolConstants.MINECRAFT_1_19, 0x49 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_1, 0x4C ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_3, 0x4B ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x4F )
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x4F ),
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x51 )
|
||||
);
|
||||
TO_CLIENT.registerPacket(
|
||||
ServerData.class,
|
||||
@@ -389,19 +413,27 @@ public enum Protocol
|
||||
map( ProtocolConstants.MINECRAFT_1_19, 0x3F ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_1, 0x42 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_3, 0x41 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x45 )
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x45 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x47 )
|
||||
);
|
||||
TO_CLIENT.registerPacket(
|
||||
PlayerListItemRemove.class,
|
||||
PlayerListItemRemove::new,
|
||||
map( ProtocolConstants.MINECRAFT_1_19_3, 0x35 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x39 )
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x39 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x3B )
|
||||
);
|
||||
TO_CLIENT.registerPacket(
|
||||
PlayerListItemUpdate.class,
|
||||
PlayerListItemUpdate::new,
|
||||
map( ProtocolConstants.MINECRAFT_1_19_3, 0x36 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x3A )
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x3A ),
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x3C )
|
||||
);
|
||||
TO_CLIENT.registerPacket(
|
||||
StartConfiguration.class,
|
||||
StartConfiguration::new,
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x65 )
|
||||
);
|
||||
|
||||
TO_SERVER.registerPacket(
|
||||
@@ -418,7 +450,8 @@ public enum Protocol
|
||||
map( ProtocolConstants.MINECRAFT_1_19, 0x11 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_1, 0x12 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_3, 0x11 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x12 )
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x12 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x14 )
|
||||
);
|
||||
TO_SERVER.registerPacket( Chat.class,
|
||||
Chat::new,
|
||||
@@ -453,7 +486,8 @@ public enum Protocol
|
||||
map( ProtocolConstants.MINECRAFT_1_19, 0x08 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_1, 0x09 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_3, 0x08 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x09 )
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x09 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x0A )
|
||||
);
|
||||
TO_SERVER.registerPacket(
|
||||
ClientSettings.class,
|
||||
@@ -466,7 +500,8 @@ public enum Protocol
|
||||
map( ProtocolConstants.MINECRAFT_1_19, 0x07 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_1, 0x08 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_3, 0x07 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x08 )
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x08 ),
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x09 )
|
||||
);
|
||||
TO_SERVER.registerPacket(
|
||||
PluginMessage.class,
|
||||
@@ -481,7 +516,13 @@ public enum Protocol
|
||||
map( ProtocolConstants.MINECRAFT_1_19, 0x0C ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_1, 0x0D ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_3, 0x0C ),
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x0D )
|
||||
map( ProtocolConstants.MINECRAFT_1_19_4, 0x0D ),
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x0F )
|
||||
);
|
||||
TO_SERVER.registerPacket(
|
||||
StartConfiguration.class,
|
||||
StartConfiguration::new,
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x0B )
|
||||
);
|
||||
}
|
||||
},
|
||||
@@ -559,6 +600,59 @@ public enum Protocol
|
||||
LoginPayloadResponse::new,
|
||||
map( ProtocolConstants.MINECRAFT_1_13, 0x02 )
|
||||
);
|
||||
TO_SERVER.registerPacket(
|
||||
LoginAcknowledged.class,
|
||||
LoginAcknowledged::new,
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x03 )
|
||||
);
|
||||
}
|
||||
},
|
||||
// 3
|
||||
CONFIGURATION
|
||||
{
|
||||
|
||||
{
|
||||
TO_CLIENT.registerPacket(
|
||||
PluginMessage.class,
|
||||
PluginMessage::new,
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x00 )
|
||||
);
|
||||
TO_CLIENT.registerPacket(
|
||||
Kick.class,
|
||||
Kick::new,
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x01 )
|
||||
);
|
||||
TO_CLIENT.registerPacket(
|
||||
FinishConfiguration.class,
|
||||
FinishConfiguration::new,
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x02 )
|
||||
);
|
||||
TO_CLIENT.registerPacket(
|
||||
KeepAlive.class,
|
||||
KeepAlive::new,
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x03 )
|
||||
);
|
||||
|
||||
TO_SERVER.registerPacket(
|
||||
ClientSettings.class,
|
||||
ClientSettings::new,
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x00 )
|
||||
);
|
||||
TO_SERVER.registerPacket(
|
||||
PluginMessage.class,
|
||||
PluginMessage::new,
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x01 )
|
||||
);
|
||||
TO_SERVER.registerPacket(
|
||||
FinishConfiguration.class,
|
||||
FinishConfiguration::new,
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x02 )
|
||||
);
|
||||
TO_SERVER.registerPacket(
|
||||
KeepAlive.class,
|
||||
KeepAlive::new,
|
||||
map( ProtocolConstants.MINECRAFT_1_20_2, 0x03 )
|
||||
);
|
||||
}
|
||||
};
|
||||
/*========================================================================*/
|
||||
|
@@ -43,6 +43,7 @@ public class ProtocolConstants
|
||||
public static final int MINECRAFT_1_19_3 = 761;
|
||||
public static final int MINECRAFT_1_19_4 = 762;
|
||||
public static final int MINECRAFT_1_20 = 763;
|
||||
public static final int MINECRAFT_1_20_2 = 1073741976;
|
||||
public static final List<String> SUPPORTED_VERSIONS;
|
||||
public static final List<Integer> SUPPORTED_VERSION_IDS;
|
||||
|
||||
@@ -105,7 +106,7 @@ public class ProtocolConstants
|
||||
if ( SNAPSHOT_SUPPORT )
|
||||
{
|
||||
// supportedVersions.add( "1.20.x" );
|
||||
// supportedVersionIds.add( ProtocolConstants.MINECRAFT_1_20 );
|
||||
supportedVersionIds.add( ProtocolConstants.MINECRAFT_1_20_2 );
|
||||
}
|
||||
|
||||
SUPPORTED_VERSIONS = supportedVersions.build();
|
||||
|
@@ -0,0 +1,37 @@
|
||||
package net.md_5.bungee.protocol.packet;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import net.md_5.bungee.protocol.AbstractPacketHandler;
|
||||
import net.md_5.bungee.protocol.DefinedPacket;
|
||||
import net.md_5.bungee.protocol.Protocol;
|
||||
import net.md_5.bungee.protocol.ProtocolConstants;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class FinishConfiguration extends DefinedPacket
|
||||
{
|
||||
|
||||
@Override
|
||||
public void read(ByteBuf buf, ProtocolConstants.Direction direction, int protocolVersion)
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(ByteBuf buf, ProtocolConstants.Direction direction, int protocolVersion)
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
public Protocol nextProtocol()
|
||||
{
|
||||
return Protocol.GAME;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(AbstractPacketHandler handler) throws Exception
|
||||
{
|
||||
handler.handle( this );
|
||||
}
|
||||
}
|
@@ -36,6 +36,7 @@ public class Login extends DefinedPacket
|
||||
private int simulationDistance;
|
||||
private boolean reducedDebugInfo;
|
||||
private boolean normalRespawn;
|
||||
private boolean limitedCrafting;
|
||||
private boolean debug;
|
||||
private boolean flat;
|
||||
private Location deathLocation;
|
||||
@@ -49,10 +50,16 @@ public class Login extends DefinedPacket
|
||||
{
|
||||
hardcore = buf.readBoolean();
|
||||
}
|
||||
gameMode = buf.readUnsignedByte();
|
||||
if ( protocolVersion < ProtocolConstants.MINECRAFT_1_20_2 )
|
||||
{
|
||||
gameMode = buf.readUnsignedByte();
|
||||
}
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_16 )
|
||||
{
|
||||
previousGameMode = buf.readUnsignedByte();
|
||||
if ( protocolVersion < ProtocolConstants.MINECRAFT_1_20_2 )
|
||||
{
|
||||
previousGameMode = buf.readUnsignedByte();
|
||||
}
|
||||
|
||||
worldNames = new HashSet<>();
|
||||
int worldCount = readVarInt( buf );
|
||||
@@ -61,19 +68,25 @@ public class Login extends DefinedPacket
|
||||
worldNames.add( readString( buf ) );
|
||||
}
|
||||
|
||||
dimensions = readTag( buf );
|
||||
if ( protocolVersion < ProtocolConstants.MINECRAFT_1_20_2 )
|
||||
{
|
||||
dimensions = readTag( buf, protocolVersion );
|
||||
}
|
||||
}
|
||||
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_16 )
|
||||
{
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_16_2 && protocolVersion < ProtocolConstants.MINECRAFT_1_19 )
|
||||
{
|
||||
dimension = readTag( buf );
|
||||
} else
|
||||
dimension = readTag( buf, protocolVersion );
|
||||
} else if ( protocolVersion < ProtocolConstants.MINECRAFT_1_20_2 )
|
||||
{
|
||||
dimension = readString( buf );
|
||||
}
|
||||
worldName = readString( buf );
|
||||
if ( protocolVersion < ProtocolConstants.MINECRAFT_1_20_2 )
|
||||
{
|
||||
worldName = readString( buf );
|
||||
}
|
||||
} else if ( protocolVersion > ProtocolConstants.MINECRAFT_1_9 )
|
||||
{
|
||||
dimension = buf.readInt();
|
||||
@@ -81,7 +94,7 @@ public class Login extends DefinedPacket
|
||||
{
|
||||
dimension = (int) buf.readByte();
|
||||
}
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_15 )
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_15 && protocolVersion < ProtocolConstants.MINECRAFT_1_20_2 )
|
||||
{
|
||||
seed = buf.readLong();
|
||||
}
|
||||
@@ -116,6 +129,15 @@ public class Login extends DefinedPacket
|
||||
{
|
||||
normalRespawn = buf.readBoolean();
|
||||
}
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_20_2 )
|
||||
{
|
||||
limitedCrafting = buf.readBoolean();
|
||||
dimension = readString( buf );
|
||||
worldName = readString( buf );
|
||||
seed = buf.readLong();
|
||||
gameMode = buf.readUnsignedByte();
|
||||
previousGameMode = buf.readByte();
|
||||
}
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_16 )
|
||||
{
|
||||
debug = buf.readBoolean();
|
||||
@@ -142,10 +164,16 @@ public class Login extends DefinedPacket
|
||||
{
|
||||
buf.writeBoolean( hardcore );
|
||||
}
|
||||
buf.writeByte( gameMode );
|
||||
if ( protocolVersion < ProtocolConstants.MINECRAFT_1_20_2 )
|
||||
{
|
||||
buf.writeByte( gameMode );
|
||||
}
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_16 )
|
||||
{
|
||||
buf.writeByte( previousGameMode );
|
||||
if ( protocolVersion < ProtocolConstants.MINECRAFT_1_20_2 )
|
||||
{
|
||||
buf.writeByte( previousGameMode );
|
||||
}
|
||||
|
||||
writeVarInt( worldNames.size(), buf );
|
||||
for ( String world : worldNames )
|
||||
@@ -153,19 +181,25 @@ public class Login extends DefinedPacket
|
||||
writeString( world, buf );
|
||||
}
|
||||
|
||||
writeTag( dimensions, buf );
|
||||
if ( protocolVersion < ProtocolConstants.MINECRAFT_1_20_2 )
|
||||
{
|
||||
writeTag( dimensions, buf, protocolVersion );
|
||||
}
|
||||
}
|
||||
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_16 )
|
||||
{
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_16_2 && protocolVersion < ProtocolConstants.MINECRAFT_1_19 )
|
||||
{
|
||||
writeTag( (Tag) dimension, buf );
|
||||
} else
|
||||
writeTag( (Tag) dimension, buf, protocolVersion );
|
||||
} else if ( protocolVersion < ProtocolConstants.MINECRAFT_1_20_2 )
|
||||
{
|
||||
writeString( (String) dimension, buf );
|
||||
}
|
||||
writeString( worldName, buf );
|
||||
if ( protocolVersion < ProtocolConstants.MINECRAFT_1_20_2 )
|
||||
{
|
||||
writeString( worldName, buf );
|
||||
}
|
||||
} else if ( protocolVersion > ProtocolConstants.MINECRAFT_1_9 )
|
||||
{
|
||||
buf.writeInt( (Integer) dimension );
|
||||
@@ -175,7 +209,10 @@ public class Login extends DefinedPacket
|
||||
}
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_15 )
|
||||
{
|
||||
buf.writeLong( seed );
|
||||
if ( protocolVersion < ProtocolConstants.MINECRAFT_1_20_2 )
|
||||
{
|
||||
buf.writeLong( seed );
|
||||
}
|
||||
}
|
||||
if ( protocolVersion < ProtocolConstants.MINECRAFT_1_14 )
|
||||
{
|
||||
@@ -208,6 +245,15 @@ public class Login extends DefinedPacket
|
||||
{
|
||||
buf.writeBoolean( normalRespawn );
|
||||
}
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_20_2 )
|
||||
{
|
||||
buf.writeBoolean( limitedCrafting );
|
||||
writeString( (String) dimension, buf );
|
||||
writeString( worldName, buf );
|
||||
buf.writeLong( seed );
|
||||
buf.writeByte( gameMode );
|
||||
buf.writeByte( previousGameMode );
|
||||
}
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_16 )
|
||||
{
|
||||
buf.writeBoolean( debug );
|
||||
|
@@ -0,0 +1,37 @@
|
||||
package net.md_5.bungee.protocol.packet;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import net.md_5.bungee.protocol.AbstractPacketHandler;
|
||||
import net.md_5.bungee.protocol.DefinedPacket;
|
||||
import net.md_5.bungee.protocol.Protocol;
|
||||
import net.md_5.bungee.protocol.ProtocolConstants;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class LoginAcknowledged extends DefinedPacket
|
||||
{
|
||||
|
||||
@Override
|
||||
public void read(ByteBuf buf, ProtocolConstants.Direction direction, int protocolVersion)
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(ByteBuf buf, ProtocolConstants.Direction direction, int protocolVersion)
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
public Protocol nextProtocol()
|
||||
{
|
||||
return Protocol.CONFIGURATION;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(AbstractPacketHandler handler) throws Exception
|
||||
{
|
||||
handler.handle( this );
|
||||
}
|
||||
}
|
@@ -32,7 +32,7 @@ public class LoginRequest extends DefinedPacket
|
||||
}
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_19_1 )
|
||||
{
|
||||
if ( buf.readBoolean() )
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_20_2 || buf.readBoolean() )
|
||||
{
|
||||
uuid = readUUID( buf );
|
||||
}
|
||||
@@ -49,13 +49,19 @@ public class LoginRequest extends DefinedPacket
|
||||
}
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_19_1 )
|
||||
{
|
||||
if ( uuid != null )
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_20_2 )
|
||||
{
|
||||
buf.writeBoolean( true );
|
||||
writeUUID( uuid, buf );
|
||||
} else
|
||||
{
|
||||
buf.writeBoolean( false );
|
||||
if ( uuid != null )
|
||||
{
|
||||
buf.writeBoolean( true );
|
||||
writeUUID( uuid, buf );
|
||||
} else
|
||||
{
|
||||
buf.writeBoolean( false );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -27,7 +27,7 @@ public class Respawn extends DefinedPacket
|
||||
private String levelType;
|
||||
private boolean debug;
|
||||
private boolean flat;
|
||||
private boolean copyMeta;
|
||||
private byte copyMeta;
|
||||
private Location deathLocation;
|
||||
private int portalCooldown;
|
||||
|
||||
@@ -38,7 +38,7 @@ public class Respawn extends DefinedPacket
|
||||
{
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_16_2 && protocolVersion < ProtocolConstants.MINECRAFT_1_19 )
|
||||
{
|
||||
dimension = readTag( buf );
|
||||
dimension = readTag( buf, protocolVersion );
|
||||
} else
|
||||
{
|
||||
dimension = readString( buf );
|
||||
@@ -62,7 +62,10 @@ public class Respawn extends DefinedPacket
|
||||
previousGameMode = buf.readUnsignedByte();
|
||||
debug = buf.readBoolean();
|
||||
flat = buf.readBoolean();
|
||||
copyMeta = buf.readBoolean();
|
||||
if ( protocolVersion < ProtocolConstants.MINECRAFT_1_20_2 )
|
||||
{
|
||||
copyMeta = buf.readByte();
|
||||
}
|
||||
} else
|
||||
{
|
||||
levelType = readString( buf );
|
||||
@@ -78,6 +81,10 @@ public class Respawn extends DefinedPacket
|
||||
{
|
||||
portalCooldown = readVarInt( buf );
|
||||
}
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_20_2 )
|
||||
{
|
||||
copyMeta = buf.readByte();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -87,7 +94,7 @@ public class Respawn extends DefinedPacket
|
||||
{
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_16_2 && protocolVersion < ProtocolConstants.MINECRAFT_1_19 )
|
||||
{
|
||||
writeTag( (Tag) dimension, buf );
|
||||
writeTag( (Tag) dimension, buf, protocolVersion );
|
||||
} else
|
||||
{
|
||||
writeString( (String) dimension, buf );
|
||||
@@ -111,7 +118,10 @@ public class Respawn extends DefinedPacket
|
||||
buf.writeByte( previousGameMode );
|
||||
buf.writeBoolean( debug );
|
||||
buf.writeBoolean( flat );
|
||||
buf.writeBoolean( copyMeta );
|
||||
if ( protocolVersion < ProtocolConstants.MINECRAFT_1_20_2 )
|
||||
{
|
||||
buf.writeByte( copyMeta );
|
||||
}
|
||||
} else
|
||||
{
|
||||
writeString( levelType, buf );
|
||||
@@ -132,6 +142,10 @@ public class Respawn extends DefinedPacket
|
||||
{
|
||||
writeVarInt( portalCooldown, buf );
|
||||
}
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_20_2 )
|
||||
{
|
||||
buf.writeByte( copyMeta );
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -7,6 +7,7 @@ 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
|
||||
@@ -18,20 +19,32 @@ public class ScoreboardDisplay extends DefinedPacket
|
||||
/**
|
||||
* 0 = list, 1 = side, 2 = below.
|
||||
*/
|
||||
private byte position;
|
||||
private int position;
|
||||
private String name;
|
||||
|
||||
@Override
|
||||
public void read(ByteBuf buf)
|
||||
public void read(ByteBuf buf, ProtocolConstants.Direction direction, int protocolVersion)
|
||||
{
|
||||
position = buf.readByte();
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_20_2 )
|
||||
{
|
||||
position = readVarInt( buf );
|
||||
} else
|
||||
{
|
||||
position = buf.readByte();
|
||||
}
|
||||
name = readString( buf );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(ByteBuf buf)
|
||||
public void write(ByteBuf buf, ProtocolConstants.Direction direction, int protocolVersion)
|
||||
{
|
||||
buf.writeByte( position );
|
||||
if ( protocolVersion >= ProtocolConstants.MINECRAFT_1_20_2 )
|
||||
{
|
||||
writeVarInt( position, buf );
|
||||
} else
|
||||
{
|
||||
buf.writeByte( position );
|
||||
}
|
||||
writeString( name, buf );
|
||||
}
|
||||
|
||||
|
@@ -0,0 +1,37 @@
|
||||
package net.md_5.bungee.protocol.packet;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import net.md_5.bungee.protocol.AbstractPacketHandler;
|
||||
import net.md_5.bungee.protocol.DefinedPacket;
|
||||
import net.md_5.bungee.protocol.Protocol;
|
||||
import net.md_5.bungee.protocol.ProtocolConstants;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class StartConfiguration extends DefinedPacket
|
||||
{
|
||||
|
||||
@Override
|
||||
public void read(ByteBuf buf, ProtocolConstants.Direction direction, int protocolVersion)
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(ByteBuf buf, ProtocolConstants.Direction direction, int protocolVersion)
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
public Protocol nextProtocol()
|
||||
{
|
||||
return Protocol.CONFIGURATION;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(AbstractPacketHandler handler) throws Exception
|
||||
{
|
||||
handler.handle( this );
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user