diff --git a/pom.xml b/pom.xml
index 3efb2af8..5c38e888 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
com.github.steveice10
mcprotocollib
- 20w21a-SNAPSHOT
+ 20w22a-SNAPSHOT
jar
MCProtocolLib
diff --git a/src/main/java/com/github/steveice10/mc/protocol/MinecraftConstants.java b/src/main/java/com/github/steveice10/mc/protocol/MinecraftConstants.java
index 752a53fd..b466ff63 100644
--- a/src/main/java/com/github/steveice10/mc/protocol/MinecraftConstants.java
+++ b/src/main/java/com/github/steveice10/mc/protocol/MinecraftConstants.java
@@ -2,8 +2,8 @@ package com.github.steveice10.mc.protocol;
public class MinecraftConstants {
// General Constants
- public static final String GAME_VERSION = "20w21a";
- public static final int PROTOCOL_VERSION = 718;
+ public static final String GAME_VERSION = "20w22a";
+ public static final int PROTOCOL_VERSION = 719;
// General Key Constants
public static final String PROFILE_KEY = "profile";
diff --git a/src/main/java/com/github/steveice10/mc/protocol/data/MagicValues.java b/src/main/java/com/github/steveice10/mc/protocol/data/MagicValues.java
index 3f206d3a..9eb94bc3 100644
--- a/src/main/java/com/github/steveice10/mc/protocol/data/MagicValues.java
+++ b/src/main/java/com/github/steveice10/mc/protocol/data/MagicValues.java
@@ -645,6 +645,7 @@ public class MagicValues {
register(UpdatedTileType.STRUCTURE_BLOCK, 7);
register(UpdatedTileType.END_GATEWAY, 8);
register(UpdatedTileType.SIGN, 9);
+ register(UpdatedTileType.SHULKER_BOX, 10);
register(UpdatedTileType.BED, 11);
register(UpdatedTileType.JIGSAW_BLOCK, 12);
register(UpdatedTileType.CAMPFIRE, 13);
@@ -835,6 +836,18 @@ public class MagicValues {
register(ParticleType.DOLPHIN, 55);
register(ParticleType.CAMPFIRE_COSY_SMOKE, 56);
register(ParticleType.CAMPFIRE_SIGNAL_SMOKE, 57);
+ register(ParticleType.DRIPPING_HONEY, 58);
+ register(ParticleType.FALLING_HONEY, 59);
+ register(ParticleType.LANDING_HONEY, 60);
+ register(ParticleType.FALLING_NECTAR, 61);
+ register(ParticleType.ASH, 62);
+ register(ParticleType.CRIMSON_SPORE, 63);
+ register(ParticleType.WARPED_SPORE, 64);
+ register(ParticleType.DRIPPING_OBBSIDIAN_TEAR, 65);
+ register(ParticleType.FALLING_OBSIDIAN_TEAR, 66);
+ register(ParticleType.LANDING_OBSIDIAN_TEAR, 67);
+ register(ParticleType.REVERSE_PORTAL, 68);
+ register(ParticleType.WHITE_ASH, 69);
register(NoteBlockValueType.HARP, 0);
register(NoteBlockValueType.DOUBLE_BASS, 1);
@@ -1141,6 +1154,7 @@ public class MagicValues {
register(SuggestionType.ASK_SERVER, "minecraft:ask_server");
register(SuggestionType.ALL_RECIPES, "minecraft:all_recipes");
register(SuggestionType.AVAILABLE_SOUNDS, "minecraft:available_sounds");
+ register(SuggestionType.AVAILABLE_BIOMES, "minecraft:available_biomes");
register(SuggestionType.SUMMONABLE_ENTITIES, "minecraft:summonable_entities");
register(StringProperties.SINGLE_WORD, 0);
diff --git a/src/main/java/com/github/steveice10/mc/protocol/data/game/command/SuggestionType.java b/src/main/java/com/github/steveice10/mc/protocol/data/game/command/SuggestionType.java
index 3ebc227a..fd68daaa 100644
--- a/src/main/java/com/github/steveice10/mc/protocol/data/game/command/SuggestionType.java
+++ b/src/main/java/com/github/steveice10/mc/protocol/data/game/command/SuggestionType.java
@@ -3,7 +3,7 @@ package com.github.steveice10.mc.protocol.data.game.command;
public enum SuggestionType {
ASK_SERVER,
ALL_RECIPES,
- AVAILABLE_BIOMES,
AVAILABLE_SOUNDS,
+ AVAILABLE_BIOMES,
SUMMONABLE_ENTITIES;
}
diff --git a/src/main/java/com/github/steveice10/mc/protocol/data/game/world/particle/ParticleType.java b/src/main/java/com/github/steveice10/mc/protocol/data/game/world/particle/ParticleType.java
index f1f0dda2..954eb2db 100644
--- a/src/main/java/com/github/steveice10/mc/protocol/data/game/world/particle/ParticleType.java
+++ b/src/main/java/com/github/steveice10/mc/protocol/data/game/world/particle/ParticleType.java
@@ -62,5 +62,13 @@ public enum ParticleType {
DRIPPING_HONEY,
FALLING_HONEY,
LANDING_HONEY,
- FALLING_NECTAR
+ FALLING_NECTAR,
+ ASH,
+ CRIMSON_SPORE,
+ WARPED_SPORE,
+ DRIPPING_OBBSIDIAN_TEAR,
+ FALLING_OBSIDIAN_TEAR,
+ LANDING_OBSIDIAN_TEAR,
+ REVERSE_PORTAL,
+ WHITE_ASH,
}
diff --git a/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/client/world/ClientGenerateStructuresPacket.java b/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/client/world/ClientGenerateStructuresPacket.java
index 68e98f5f..cc372e85 100644
--- a/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/client/world/ClientGenerateStructuresPacket.java
+++ b/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/client/world/ClientGenerateStructuresPacket.java
@@ -20,17 +20,20 @@ import java.io.IOException;
public class ClientGenerateStructuresPacket implements Packet {
private @NonNull Position position;
private int levels;
+ private boolean keepJigsaws;
@Override
public void read(NetInput in) throws IOException {
this.position = Position.read(in);
this.levels = in.readVarInt();
+ this.keepJigsaws = in.readBoolean();
}
@Override
public void write(NetOutput out) throws IOException {
Position.write(out, this.position);
out.writeVarInt(this.levels);
+ out.writeBoolean(this.keepJigsaws);
}
@Override
diff --git a/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/server/ServerJoinGamePacket.java b/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/server/ServerJoinGamePacket.java
index 98a51eed..39b267de 100644
--- a/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/server/ServerJoinGamePacket.java
+++ b/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/server/ServerJoinGamePacket.java
@@ -27,8 +27,11 @@ public class ServerJoinGamePacket implements Packet {
private int entityId;
private boolean hardcore;
private @NonNull GameMode gameMode;
+ private int worldCount;
+ private String[] worldNames;
private @NonNull CompoundTag dimensionCodec;
private @NonNull String dimension;
+ private String worldName;
private long hashedSeed;
private int maxPlayers;
private int viewDistance;
@@ -44,8 +47,13 @@ public class ServerJoinGamePacket implements Packet {
int gameMode = in.readUnsignedByte();
this.hardcore = (gameMode & GAMEMODE_FLAG_HARDCORE) != 0;
this.gameMode = MagicValues.key(GameMode.class, gameMode & GAMEMODE_MASK);
+ this.worldCount = in.readVarInt();
+ for (int i = 0; i < this.worldCount; i++) {
+ in.readString();
+ }
this.dimensionCodec = NBT.read(in);
this.dimension = in.readString();
+ this.worldName = in.readString();
this.hashedSeed = in.readLong();
this.maxPlayers = in.readUnsignedByte();
this.viewDistance = in.readVarInt();
@@ -65,8 +73,13 @@ public class ServerJoinGamePacket implements Packet {
}
out.writeByte(gameMode);
+ out.writeVarInt(this.worldCount);
+ for (String worldName : this.worldNames) {
+ out.writeString(worldName);
+ }
NBT.write(out, this.dimensionCodec);
out.writeString(this.dimension);
+ out.writeString(this.worldName);
out.writeLong(this.hashedSeed);
out.writeByte(this.maxPlayers);
out.writeVarInt(this.viewDistance);
diff --git a/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/server/ServerRespawnPacket.java b/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/server/ServerRespawnPacket.java
index 9c10d269..1d234ed6 100644
--- a/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/server/ServerRespawnPacket.java
+++ b/src/main/java/com/github/steveice10/mc/protocol/packet/ingame/server/ServerRespawnPacket.java
@@ -20,6 +20,7 @@ import java.io.IOException;
@AllArgsConstructor
public class ServerRespawnPacket implements Packet {
private String dimension;
+ private String worldName;
private long hashedSeed;
private @NonNull GameMode gamemode;
private boolean debug;
@@ -29,6 +30,7 @@ public class ServerRespawnPacket implements Packet {
@Override
public void read(NetInput in) throws IOException {
this.dimension = in.readString();
+ this.worldName = in.readString();
this.hashedSeed = in.readLong();
this.gamemode = MagicValues.key(GameMode.class, in.readUnsignedByte());
this.debug = in.readBoolean();
@@ -39,6 +41,7 @@ public class ServerRespawnPacket implements Packet {
@Override
public void write(NetOutput out) throws IOException {
out.writeString(this.dimension);
+ out.writeString(this.worldName);
out.writeLong(this.hashedSeed);
out.writeByte(MagicValues.value(Integer.class, this.gamemode));
out.writeBoolean(this.debug);
diff --git a/src/test/java/com/github/steveice10/mc/protocol/MinecraftProtocolTest.java b/src/test/java/com/github/steveice10/mc/protocol/MinecraftProtocolTest.java
index 97392696..7c846eb5 100644
--- a/src/test/java/com/github/steveice10/mc/protocol/MinecraftProtocolTest.java
+++ b/src/test/java/com/github/steveice10/mc/protocol/MinecraftProtocolTest.java
@@ -47,7 +47,7 @@ public class MinecraftProtocolTest {
new TextMessage("Hello world!"),
null
);
- private static final ServerJoinGamePacket JOIN_GAME_PACKET = new ServerJoinGamePacket(0, false, GameMode.SURVIVAL, getDimensionTag(), "minecraft:overworld", 100, 0, 16, false, false, false, false);
+ private static final ServerJoinGamePacket JOIN_GAME_PACKET = new ServerJoinGamePacket(0, false, GameMode.SURVIVAL, 1, new String[]{"minecraft:world"}, getDimensionTag(), "minecraft:overworld", "minecraft:world", 100, 0, 16, false, false, false, false);
private static Server server;