diff --git a/api-legacy/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java b/api-legacy/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java
index 5068e8b0e..e83d85ddd 100644
--- a/api-legacy/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java
+++ b/api-legacy/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java
@@ -80,6 +80,7 @@ public class ProtocolVersion {
public static final ProtocolVersion v1_16_3 = register(753, "1.16.3");
public static final ProtocolVersion v1_16_4 = register(754, "1.16.4/5", new VersionRange("1.16", 4, 5));
public static final ProtocolVersion v1_17 = register(755, "1.17");
+ public static final ProtocolVersion v1_17_1 = register(756, "1.17.1");
public static final ProtocolVersion unknown = register(-1, "UNKNOWN");
public static ProtocolVersion register(int version, String name) {
diff --git a/api/src/main/java/com/viaversion/viaversion/api/protocol/version/ProtocolVersion.java b/api/src/main/java/com/viaversion/viaversion/api/protocol/version/ProtocolVersion.java
index a2d92f518..c59d8ecef 100644
--- a/api/src/main/java/com/viaversion/viaversion/api/protocol/version/ProtocolVersion.java
+++ b/api/src/main/java/com/viaversion/viaversion/api/protocol/version/ProtocolVersion.java
@@ -77,7 +77,7 @@ public class ProtocolVersion {
public static final ProtocolVersion v1_16_3 = register(753, "1.16.3");
public static final ProtocolVersion v1_16_4 = register(754, "1.16.4/5", new VersionRange("1.16", 4, 5));
public static final ProtocolVersion v1_17 = register(755, "1.17");
- public static final ProtocolVersion v1_17_1 = register(756, 38, "1.17.1");
+ public static final ProtocolVersion v1_17_1 = register(756, 39, "1.17.1");
public static final ProtocolVersion unknown = register(-1, "UNKNOWN");
public static ProtocolVersion register(int version, String name) {
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17_1to1_17/ClientboundPackets1_17_1.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17_1to1_17/ClientboundPackets1_17_1.java
new file mode 100644
index 000000000..20d910f2b
--- /dev/null
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17_1to1_17/ClientboundPackets1_17_1.java
@@ -0,0 +1,137 @@
+/*
+ * This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
+ * Copyright (C) 2016-2021 ViaVersion and contributors
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+package com.viaversion.viaversion.protocols.protocol1_17_1to1_17;
+
+import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType;
+
+public enum ClientboundPackets1_17_1 implements ClientboundPacketType {
+
+ SPAWN_ENTITY, // 0x00
+ SPAWN_EXPERIENCE_ORB, // 0x01
+ SPAWN_MOB, // 0x02
+ SPAWN_PAINTING, // 0x03
+ SPAWN_PLAYER, // 0x04
+ ADD_VIBRATION_SIGNAL, // 0x05
+ ENTITY_ANIMATION, // 0x06
+ STATISTICS, // 0x07
+ ACKNOWLEDGE_PLAYER_DIGGING, // 0x08
+ BLOCK_BREAK_ANIMATION, // 0x09
+ BLOCK_ENTITY_DATA, // 0x0A
+ BLOCK_ACTION, // 0x0B
+ BLOCK_CHANGE, // 0x0C
+ BOSSBAR, // 0x0D
+ SERVER_DIFFICULTY, // 0x0E
+ CHAT_MESSAGE, // 0x0F
+ CLEAR_TITLES, // 0x10
+ TAB_COMPLETE, // 0x11
+ DECLARE_COMMANDS, // 0x12
+ CLOSE_WINDOW, // 0x13
+ WINDOW_ITEMS, // 0x14
+ WINDOW_PROPERTY, // 0x15
+ SET_SLOT, // 0x16
+ COOLDOWN, // 0x17
+ PLUGIN_MESSAGE, // 0x18
+ NAMED_SOUND, // 0x19
+ DISCONNECT, // 0x1A
+ ENTITY_STATUS, // 0x1B
+ EXPLOSION, // 0x1C
+ UNLOAD_CHUNK, // 0x1D
+ GAME_EVENT, // 0x1E
+ OPEN_HORSE_WINDOW, // 0x1F
+ WORLD_BORDER_INIT, // 0x20
+ KEEP_ALIVE, // 0x21
+ CHUNK_DATA, // 0x22
+ EFFECT, // 0x23
+ SPAWN_PARTICLE, // 0x24
+ UPDATE_LIGHT, // 0x25
+ JOIN_GAME, // 0x26
+ MAP_DATA, // 0x27
+ TRADE_LIST, // 0x28
+ ENTITY_POSITION, // 0x29
+ ENTITY_POSITION_AND_ROTATION, // 0x2A
+ ENTITY_ROTATION, // 0x2B
+ VEHICLE_MOVE, // 0x2C
+ OPEN_BOOK, // 0x2D
+ OPEN_WINDOW, // 0x2E
+ OPEN_SIGN_EDITOR, // 0x2F
+ PING, // 0x30
+ CRAFT_RECIPE_RESPONSE, // 0x31
+ PLAYER_ABILITIES, // 0x32
+ COMBAT_END, // 0x33
+ COMBAT_ENTER, // 0x34
+ COMBAT_KILL, // 0x35
+ PLAYER_INFO, // 0x36
+ FACE_PLAYER, // 0x37
+ PLAYER_POSITION, // 0x38
+ UNLOCK_RECIPES, // 0x39
+ REMOVE_ENTITIES, // 0x3A
+ REMOVE_ENTITY_EFFECT, // 0x3B
+ RESOURCE_PACK, // 0x3C
+ RESPAWN, // 0x3D
+ ENTITY_HEAD_LOOK, // 0x3E
+ MULTI_BLOCK_CHANGE, // 0x3F
+ SELECT_ADVANCEMENTS_TAB, // 0x40
+ ACTIONBAR, // 0x41
+ WORLD_BORDER_CENTER, // 0x42
+ WORLD_BORDER_LERP_SIZE, // 0x43
+ WORLD_BORDER_SIZE, // 0x44
+ WORLD_BORDER_WARNING_DELAY, // 0x45
+ WORLD_BORDER_WARNING_DISTANCE, // 0x46
+ CAMERA, // 0x47
+ HELD_ITEM_CHANGE, // 0x48
+ UPDATE_VIEW_POSITION, // 0x49
+ UPDATE_VIEW_DISTANCE, // 0x4A
+ SPAWN_POSITION, // 0x4B
+ DISPLAY_SCOREBOARD, // 0x4C
+ ENTITY_METADATA, // 0x4D
+ ATTACH_ENTITY, // 0x4E
+ ENTITY_VELOCITY, // 0x4F
+ ENTITY_EQUIPMENT, // 0x50
+ SET_EXPERIENCE, // 0x51
+ UPDATE_HEALTH, // 0x52
+ SCOREBOARD_OBJECTIVE, // 0x53
+ SET_PASSENGERS, // 0x54
+ TEAMS, // 0x55
+ UPDATE_SCORE, // 0x56
+ TITLE_SUBTITLE, // 0x57
+ TIME_UPDATE, // 0x58
+ TITLE_TEXT, // 0x59
+ TITLE_TIMES, // 0x5A
+ ENTITY_SOUND, // 0x5B
+ SOUND, // 0x5C
+ STOP_SOUND, // 0x5D
+ TAB_LIST, // 0x5E
+ NBT_QUERY, // 0x5F
+ COLLECT_ITEM, // 0x60
+ ENTITY_TELEPORT, // 0x61
+ ADVANCEMENTS, // 0x62
+ ENTITY_PROPERTIES, // 0x63
+ ENTITY_EFFECT, // 0x64
+ DECLARE_RECIPES, // 0x65
+ TAGS; // 0x66
+
+ @Override
+ public int getId() {
+ return ordinal();
+ }
+
+ @Override
+ public String getName() {
+ return name();
+ }
+}
diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17_1to1_17/Protocol1_17_1To1_17.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17_1to1_17/Protocol1_17_1To1_17.java
index f7895797c..fd72dc221 100644
--- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17_1to1_17/Protocol1_17_1To1_17.java
+++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17_1to1_17/Protocol1_17_1To1_17.java
@@ -29,17 +29,28 @@ import com.viaversion.viaversion.api.type.types.StringType;
import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.ClientboundPackets1_17;
import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.ServerboundPackets1_17;
-public class Protocol1_17_1To1_17 extends AbstractProtocol {
+public final class Protocol1_17_1To1_17 extends AbstractProtocol {
private static final StringType PAGE_STRING_TYPE = new StringType(8192);
private static final StringType TITLE_STRING_TYPE = new StringType(128);
public Protocol1_17_1To1_17() {
- super(ClientboundPackets1_17.class, ClientboundPackets1_17.class, ServerboundPackets1_17.class, ServerboundPackets1_17.class);
+ super(ClientboundPackets1_17.class, ClientboundPackets1_17_1.class, ServerboundPackets1_17.class, ServerboundPackets1_17.class);
}
@Override
protected void registerPackets() {
+ registerClientbound(ClientboundPackets1_17.REMOVE_ENTITY, ClientboundPackets1_17_1.REMOVE_ENTITIES, new PacketRemapper() {
+ @Override
+ public void registerMap() {
+ handler(wrapper -> {
+ // Aaaaand back to an array again!
+ int entityId = wrapper.read(Type.VAR_INT);
+ wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[]{entityId});
+ });
+ }
+ });
+
registerClientbound(ClientboundPackets1_17.SET_SLOT, new PacketRemapper() {
@Override
public void registerMap() {
@@ -47,6 +58,7 @@ public class Protocol1_17_1To1_17 extends AbstractProtocol