Mirror von
https://github.com/PaperMC/Velocity.git
synchronisiert 2024-12-25 15:50:19 +01:00
Support Minecraft 1.11/1.11.1+
Dieser Commit ist enthalten in:
Ursprung
dcc40dd06b
Commit
7546270624
@ -3,11 +3,17 @@ package com.velocitypowered.proxy.protocol;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
public enum ProtocolConstants { ;
|
public enum ProtocolConstants { ;
|
||||||
|
public static final int MINECRAFT_1_11 = 315;
|
||||||
|
public static final int MINECRAFT_1_11_1 = 316;
|
||||||
public static final int MINECRAFT_1_12 = 335;
|
public static final int MINECRAFT_1_12 = 335;
|
||||||
public static final int MINECRAFT_1_12_1 = 338;
|
public static final int MINECRAFT_1_12_1 = 338;
|
||||||
public static final int MINECRAFT_1_12_2 = 340;
|
public static final int MINECRAFT_1_12_2 = 340;
|
||||||
|
|
||||||
|
public static final int MINIMUM_VERSION_SUPPORTED = MINECRAFT_1_11;
|
||||||
|
|
||||||
public static final int[] SUPPORTED_VERSIONS = new int[] {
|
public static final int[] SUPPORTED_VERSIONS = new int[] {
|
||||||
|
MINECRAFT_1_11,
|
||||||
|
MINECRAFT_1_11_1,
|
||||||
MINECRAFT_1_12,
|
MINECRAFT_1_12,
|
||||||
MINECRAFT_1_12_1,
|
MINECRAFT_1_12_1,
|
||||||
MINECRAFT_1_12_2
|
MINECRAFT_1_12_2
|
||||||
|
@ -7,9 +7,7 @@ import io.netty.util.collection.IntObjectMap;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import static com.velocitypowered.proxy.protocol.ProtocolConstants.MINECRAFT_1_12;
|
import static com.velocitypowered.proxy.protocol.ProtocolConstants.*;
|
||||||
import static com.velocitypowered.proxy.protocol.ProtocolConstants.MINECRAFT_1_12_1;
|
|
||||||
import static com.velocitypowered.proxy.protocol.ProtocolConstants.MINECRAFT_1_12_2;
|
|
||||||
|
|
||||||
public enum StateRegistry {
|
public enum StateRegistry {
|
||||||
HANDSHAKE {
|
HANDSHAKE {
|
||||||
@ -34,24 +32,32 @@ public enum StateRegistry {
|
|||||||
PLAY {
|
PLAY {
|
||||||
{
|
{
|
||||||
SERVERBOUND.register(Chat.class, Chat::new,
|
SERVERBOUND.register(Chat.class, Chat::new,
|
||||||
|
map(0x02, MINECRAFT_1_11),
|
||||||
map(0x03, MINECRAFT_1_12),
|
map(0x03, MINECRAFT_1_12),
|
||||||
map(0x02, MINECRAFT_1_12_2));
|
map(0x02, MINECRAFT_1_12_2));
|
||||||
SERVERBOUND.register(KeepAlive.class, KeepAlive::new,
|
SERVERBOUND.register(KeepAlive.class, KeepAlive::new,
|
||||||
|
map(0x0B, MINECRAFT_1_11),
|
||||||
map(0x0C, MINECRAFT_1_12),
|
map(0x0C, MINECRAFT_1_12),
|
||||||
map(0x0B, MINECRAFT_1_12_1));
|
map(0x0B, MINECRAFT_1_12_1));
|
||||||
SERVERBOUND.register(ClientSettings.class, ClientSettings::new,
|
SERVERBOUND.register(ClientSettings.class, ClientSettings::new,
|
||||||
|
map(0x04, MINECRAFT_1_11),
|
||||||
map(0x05, MINECRAFT_1_12),
|
map(0x05, MINECRAFT_1_12),
|
||||||
map(0x04, MINECRAFT_1_12_1));
|
map(0x04, MINECRAFT_1_12_1));
|
||||||
|
|
||||||
CLIENTBOUND.register(Chat.class, Chat::new,
|
CLIENTBOUND.register(Chat.class, Chat::new,
|
||||||
|
map(0x0F, MINECRAFT_1_11),
|
||||||
map(0x0F, MINECRAFT_1_12));
|
map(0x0F, MINECRAFT_1_12));
|
||||||
CLIENTBOUND.register(Disconnect.class, Disconnect::new,
|
CLIENTBOUND.register(Disconnect.class, Disconnect::new,
|
||||||
|
map(0x1A, MINECRAFT_1_11),
|
||||||
map(0x1A, MINECRAFT_1_12));
|
map(0x1A, MINECRAFT_1_12));
|
||||||
CLIENTBOUND.register(KeepAlive.class, KeepAlive::new,
|
CLIENTBOUND.register(KeepAlive.class, KeepAlive::new,
|
||||||
|
map(0x1F, MINECRAFT_1_11),
|
||||||
map(0x1F, MINECRAFT_1_12));
|
map(0x1F, MINECRAFT_1_12));
|
||||||
CLIENTBOUND.register(JoinGame.class, JoinGame::new,
|
CLIENTBOUND.register(JoinGame.class, JoinGame::new,
|
||||||
|
map(0x23, MINECRAFT_1_11),
|
||||||
map(0x23, MINECRAFT_1_12));
|
map(0x23, MINECRAFT_1_12));
|
||||||
CLIENTBOUND.register(Respawn.class, Respawn::new,
|
CLIENTBOUND.register(Respawn.class, Respawn::new,
|
||||||
|
map(0x33, MINECRAFT_1_11),
|
||||||
map(0x34, MINECRAFT_1_12),
|
map(0x34, MINECRAFT_1_12),
|
||||||
map(0x35, MINECRAFT_1_12_2));
|
map(0x35, MINECRAFT_1_12_2));
|
||||||
}
|
}
|
||||||
@ -81,6 +87,7 @@ public enum StateRegistry {
|
|||||||
private static final IntObjectMap<int[]> LINKED_PROTOCOL_VERSIONS = new IntObjectHashMap<>();
|
private static final IntObjectMap<int[]> LINKED_PROTOCOL_VERSIONS = new IntObjectHashMap<>();
|
||||||
|
|
||||||
static {
|
static {
|
||||||
|
LINKED_PROTOCOL_VERSIONS.put(MINECRAFT_1_11, new int[] { MINECRAFT_1_11_1 });
|
||||||
LINKED_PROTOCOL_VERSIONS.put(MINECRAFT_1_12, new int[] { MINECRAFT_1_12_1 });
|
LINKED_PROTOCOL_VERSIONS.put(MINECRAFT_1_12, new int[] { MINECRAFT_1_12_1 });
|
||||||
LINKED_PROTOCOL_VERSIONS.put(MINECRAFT_1_12_1, new int[] { MINECRAFT_1_12_2 });
|
LINKED_PROTOCOL_VERSIONS.put(MINECRAFT_1_12_1, new int[] { MINECRAFT_1_12_2 });
|
||||||
}
|
}
|
||||||
@ -204,6 +211,6 @@ public enum StateRegistry {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static PacketMapping lowestVersion(int id) {
|
private static PacketMapping lowestVersion(int id) {
|
||||||
return new PacketMapping(id, MINECRAFT_1_12);
|
return new PacketMapping(id, MINECRAFT_1_11);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@ public class MinecraftDecoder extends MessageToMessageDecoder<ByteBuf> {
|
|||||||
public MinecraftDecoder(ProtocolConstants.Direction direction) {
|
public MinecraftDecoder(ProtocolConstants.Direction direction) {
|
||||||
this.state = StateRegistry.HANDSHAKE;
|
this.state = StateRegistry.HANDSHAKE;
|
||||||
this.direction = Preconditions.checkNotNull(direction, "direction");
|
this.direction = Preconditions.checkNotNull(direction, "direction");
|
||||||
this.setProtocolVersion(ProtocolConstants.MINECRAFT_1_12);
|
this.setProtocolVersion(ProtocolConstants.MINIMUM_VERSION_SUPPORTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -17,7 +17,7 @@ public class MinecraftEncoder extends MessageToByteEncoder<MinecraftPacket> {
|
|||||||
public MinecraftEncoder(ProtocolConstants.Direction direction) {
|
public MinecraftEncoder(ProtocolConstants.Direction direction) {
|
||||||
this.state = StateRegistry.HANDSHAKE;
|
this.state = StateRegistry.HANDSHAKE;
|
||||||
this.direction = Preconditions.checkNotNull(direction, "direction");
|
this.direction = Preconditions.checkNotNull(direction, "direction");
|
||||||
this.setProtocolVersion(ProtocolConstants.MINECRAFT_1_12);
|
this.setProtocolVersion(ProtocolConstants.MINIMUM_VERSION_SUPPORTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren