Mirror von
https://github.com/PaperMC/Velocity.git
synchronisiert 2024-11-16 21:10:30 +01:00
Merge 1.18 Update
Merge pull request #577 from Xernium/future/1.18: [Future] Support for Minecraft 1.18
Dieser Commit ist enthalten in:
Commit
30dd2ed380
@ -55,7 +55,8 @@ public enum ProtocolVersion {
|
||||
MINECRAFT_1_16_3(753, "1.16.3"),
|
||||
MINECRAFT_1_16_4(754, "1.16.4", "1.16.5"),
|
||||
MINECRAFT_1_17(755, "1.17"),
|
||||
MINECRAFT_1_17_1(756, "1.17.1");
|
||||
MINECRAFT_1_17_1(756, "1.17.1"),
|
||||
MINECRAFT_1_18(757, "1.18");
|
||||
|
||||
private static final int SNAPSHOT_BIT = 30;
|
||||
|
||||
|
@ -57,6 +57,16 @@ public interface PlayerSettings {
|
||||
*/
|
||||
MainHand getMainHand();
|
||||
|
||||
/**
|
||||
* Returns whether the client explicitly allows listing on the
|
||||
* {@link com.velocitypowered.api.proxy.player.TabList} or not in
|
||||
* anonymous TabList mode.
|
||||
* This feature was introduced in 1.18.
|
||||
*
|
||||
* @return whether or not the client explicitly allows listing. Always false on older clients.
|
||||
*/
|
||||
boolean isClientListingAllowed();
|
||||
|
||||
enum ChatMode {
|
||||
SHOWN,
|
||||
COMMANDS_ONLY,
|
||||
|
@ -26,7 +26,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
public class ClientSettingsWrapper implements PlayerSettings {
|
||||
|
||||
static final PlayerSettings DEFAULT = new ClientSettingsWrapper(
|
||||
new ClientSettings("en_US", (byte) 10, 0, true, (short) 127, 1, true));
|
||||
new ClientSettings("en_US", (byte) 10, 0, true, (short) 127, 1, true, false));
|
||||
|
||||
private final ClientSettings settings;
|
||||
private final SkinParts parts;
|
||||
@ -74,5 +74,9 @@ public class ClientSettingsWrapper implements PlayerSettings {
|
||||
return settings.getMainHand() == 1 ? MainHand.RIGHT : MainHand.LEFT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isClientListingAllowed() {
|
||||
return settings.isClientListingAllowed();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -27,6 +27,7 @@ import static com.velocitypowered.api.network.ProtocolVersion.MINECRAFT_1_16;
|
||||
import static com.velocitypowered.api.network.ProtocolVersion.MINECRAFT_1_16_2;
|
||||
import static com.velocitypowered.api.network.ProtocolVersion.MINECRAFT_1_16_4;
|
||||
import static com.velocitypowered.api.network.ProtocolVersion.MINECRAFT_1_17;
|
||||
import static com.velocitypowered.api.network.ProtocolVersion.MINECRAFT_1_18;
|
||||
import static com.velocitypowered.api.network.ProtocolVersion.MINECRAFT_1_7_2;
|
||||
import static com.velocitypowered.api.network.ProtocolVersion.MINECRAFT_1_8;
|
||||
import static com.velocitypowered.api.network.ProtocolVersion.MINECRAFT_1_9;
|
||||
@ -246,7 +247,8 @@ public enum StateRegistry {
|
||||
map(0x53, MINECRAFT_1_14, true),
|
||||
map(0x54, MINECRAFT_1_15, true),
|
||||
map(0x53, MINECRAFT_1_16, true),
|
||||
map(0x5E, MINECRAFT_1_17, true));
|
||||
map(0x5E, MINECRAFT_1_17, true),
|
||||
map(0x5F, MINECRAFT_1_18, true));
|
||||
clientbound.register(LegacyTitlePacket.class, LegacyTitlePacket::new,
|
||||
map(0x45, MINECRAFT_1_8, true),
|
||||
map(0x45, MINECRAFT_1_9, true),
|
||||
@ -257,13 +259,16 @@ public enum StateRegistry {
|
||||
map(0x50, MINECRAFT_1_15, true),
|
||||
map(0x4F, MINECRAFT_1_16, MINECRAFT_1_16_4, true));
|
||||
clientbound.register(TitleSubtitlePacket.class, TitleSubtitlePacket::new,
|
||||
map(0x57, MINECRAFT_1_17, true));
|
||||
map(0x57, MINECRAFT_1_17, true),
|
||||
map(0x58, MINECRAFT_1_18, true));
|
||||
clientbound.register(TitleTextPacket.class, TitleTextPacket::new,
|
||||
map(0x59, MINECRAFT_1_17, true));
|
||||
map(0x59, MINECRAFT_1_17, true),
|
||||
map(0x5A, MINECRAFT_1_18, true));
|
||||
clientbound.register(TitleActionbarPacket.class, TitleActionbarPacket::new,
|
||||
map(0x41, MINECRAFT_1_17, true));
|
||||
clientbound.register(TitleTimesPacket.class, TitleTimesPacket::new,
|
||||
map(0x5A, MINECRAFT_1_17, true));
|
||||
map(0x5A, MINECRAFT_1_17, true),
|
||||
map(0x5B, MINECRAFT_1_18, true));
|
||||
clientbound.register(TitleClearPacket.class, TitleClearPacket::new,
|
||||
map(0x10, MINECRAFT_1_17, true));
|
||||
clientbound.register(PlayerListItem.class, PlayerListItem::new,
|
||||
|
@ -34,18 +34,20 @@ public class ClientSettings implements MinecraftPacket {
|
||||
private short skinParts;
|
||||
private int mainHand;
|
||||
private boolean chatFilteringEnabled; // Added in 1.17
|
||||
private boolean clientListingAllowed; // Added in 1.18, overwrites server-list "anonymous" mode
|
||||
|
||||
public ClientSettings() {
|
||||
}
|
||||
|
||||
public ClientSettings(String locale, byte viewDistance, int chatVisibility, boolean chatColors,
|
||||
short skinParts, int mainHand, boolean chatFilteringEnabled) {
|
||||
short skinParts, int mainHand, boolean chatFilteringEnabled, boolean clientListingAllowed) {
|
||||
this.locale = locale;
|
||||
this.viewDistance = viewDistance;
|
||||
this.chatVisibility = chatVisibility;
|
||||
this.chatColors = chatColors;
|
||||
this.skinParts = skinParts;
|
||||
this.mainHand = mainHand;
|
||||
this.clientListingAllowed = clientListingAllowed;
|
||||
}
|
||||
|
||||
public String getLocale() {
|
||||
@ -107,6 +109,14 @@ public class ClientSettings implements MinecraftPacket {
|
||||
this.chatFilteringEnabled = chatFilteringEnabled;
|
||||
}
|
||||
|
||||
public boolean isClientListingAllowed() {
|
||||
return clientListingAllowed;
|
||||
}
|
||||
|
||||
public void setClientListingAllowed(boolean clientListingAllowed) {
|
||||
this.clientListingAllowed = clientListingAllowed;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ClientSettings{"
|
||||
@ -117,6 +127,7 @@ public class ClientSettings implements MinecraftPacket {
|
||||
+ ", skinParts=" + skinParts
|
||||
+ ", mainHand=" + mainHand
|
||||
+ ", chatFilteringEnabled=" + chatFilteringEnabled
|
||||
+ ", clientListingAllowed=" + clientListingAllowed
|
||||
+ '}';
|
||||
}
|
||||
|
||||
@ -138,6 +149,10 @@ public class ClientSettings implements MinecraftPacket {
|
||||
|
||||
if (version.compareTo(ProtocolVersion.MINECRAFT_1_17) >= 0) {
|
||||
this.chatFilteringEnabled = buf.readBoolean();
|
||||
|
||||
if (version.compareTo(ProtocolVersion.MINECRAFT_1_18) >= 0) {
|
||||
this.clientListingAllowed = buf.readBoolean();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -163,6 +178,10 @@ public class ClientSettings implements MinecraftPacket {
|
||||
|
||||
if (version.compareTo(ProtocolVersion.MINECRAFT_1_17) >= 0) {
|
||||
buf.writeBoolean(chatFilteringEnabled);
|
||||
|
||||
if (version.compareTo(ProtocolVersion.MINECRAFT_1_18) >= 0) {
|
||||
buf.writeBoolean(clientListingAllowed);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -50,6 +50,7 @@ public class JoinGame implements MinecraftPacket {
|
||||
private DimensionData currentDimensionData; // 1.16.2+
|
||||
private short previousGamemode; // 1.16+
|
||||
private CompoundBinaryTag biomeRegistry; // 1.16.2+
|
||||
private int simulationDistance; // 1.18+
|
||||
|
||||
public int getEntityId() {
|
||||
return entityId;
|
||||
@ -163,6 +164,14 @@ public class JoinGame implements MinecraftPacket {
|
||||
return currentDimensionData;
|
||||
}
|
||||
|
||||
public int getSimulationDistance(){
|
||||
return simulationDistance;
|
||||
}
|
||||
|
||||
public void setSimulationDistance(int simulationDistance) {
|
||||
this.simulationDistance = simulationDistance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "JoinGame{"
|
||||
@ -178,6 +187,7 @@ public class JoinGame implements MinecraftPacket {
|
||||
+ ", dimensionRegistry='" + dimensionRegistry + '\''
|
||||
+ ", dimensionInfo='" + dimensionInfo + '\''
|
||||
+ ", previousGamemode=" + previousGamemode
|
||||
+ ", simulationDistance=" + simulationDistance
|
||||
+ '}';
|
||||
}
|
||||
|
||||
@ -271,6 +281,10 @@ public class JoinGame implements MinecraftPacket {
|
||||
}
|
||||
|
||||
this.viewDistance = ProtocolUtils.readVarInt(buf);
|
||||
if (version.compareTo(ProtocolVersion.MINECRAFT_1_18) >= 0) {
|
||||
this.simulationDistance = ProtocolUtils.readVarInt(buf);
|
||||
}
|
||||
|
||||
this.reducedDebugInfo = buf.readBoolean();
|
||||
this.showRespawnScreen = buf.readBoolean();
|
||||
boolean isDebug = buf.readBoolean();
|
||||
@ -360,6 +374,10 @@ public class JoinGame implements MinecraftPacket {
|
||||
buf.writeByte(maxPlayers);
|
||||
}
|
||||
ProtocolUtils.writeVarInt(buf, viewDistance);
|
||||
if (version.compareTo(ProtocolVersion.MINECRAFT_1_18) >= 0) {
|
||||
ProtocolUtils.writeVarInt(buf, simulationDistance);
|
||||
}
|
||||
|
||||
buf.writeBoolean(reducedDebugInfo);
|
||||
buf.writeBoolean(showRespawnScreen);
|
||||
buf.writeBoolean(dimensionInfo.isDebugType());
|
||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren