This commit is contained in:
Nassim Jahnke 2023-08-10 13:35:47 +10:00
parent d954e1745d
commit c5e066e050
6 changed files with 127 additions and 87 deletions

View File

@ -84,7 +84,7 @@ public class ProtocolVersion {
public static final ProtocolVersion v1_19_3 = register(761, "1.19.3"); public static final ProtocolVersion v1_19_3 = register(761, "1.19.3");
public static final ProtocolVersion v1_19_4 = register(762, "1.19.4"); public static final ProtocolVersion v1_19_4 = register(762, "1.19.4");
public static final ProtocolVersion v1_20 = register(763, "1.20/1.20.1", new VersionRange("1.20", 0, 1)); public static final ProtocolVersion v1_20 = register(763, "1.20/1.20.1", new VersionRange("1.20", 0, 1));
public static final ProtocolVersion v1_20_2 = register(764, 144, "1.20.2"); public static final ProtocolVersion v1_20_2 = register(764, 145, "1.20.2");
public static final ProtocolVersion unknown = register(-1, "UNKNOWN"); public static final ProtocolVersion unknown = register(-1, "UNKNOWN");
public static ProtocolVersion register(int version, String name) { public static ProtocolVersion register(int version, String name) {

View File

@ -109,6 +109,15 @@ public final class Protocol1_20_2To1_20 extends AbstractProtocol<ClientboundPack
cancelClientbound(ClientboundPackets1_19_4.UPDATE_ENABLED_FEATURES); // TODO Sad emoji cancelClientbound(ClientboundPackets1_19_4.UPDATE_ENABLED_FEATURES); // TODO Sad emoji
cancelServerbound(ServerboundPackets1_20_2.CONFIGURATION_ACKNOWLEDGED); cancelServerbound(ServerboundPackets1_20_2.CONFIGURATION_ACKNOWLEDGED);
cancelServerbound(ServerboundPackets1_20_2.CHUNK_BATCH_RECEIVED); cancelServerbound(ServerboundPackets1_20_2.CHUNK_BATCH_RECEIVED);
registerServerbound(ServerboundPackets1_20_2.PING_REQUEST, null, wrapper -> {
wrapper.cancel();
final long time = wrapper.read(Type.LONG);
final PacketWrapper responsePacket = wrapper.create(ClientboundPackets1_20_2.PONG_RESPONSE);
responsePacket.write(Type.LONG, time);
responsePacket.sendFuture(Protocol1_20_2To1_20.class);
});
} }
private PacketHandler queueServerboundPacket(final ServerboundPackets1_20_2 packetType) { private PacketHandler queueServerboundPacket(final ServerboundPackets1_20_2 packetType) {

View File

@ -74,66 +74,67 @@ public enum ClientboundPackets1_20_2 implements ClientboundPacketType {
OPEN_WINDOW, // 0x32 OPEN_WINDOW, // 0x32
OPEN_SIGN_EDITOR, // 0x33 OPEN_SIGN_EDITOR, // 0x33
PING, // 0x34 PING, // 0x34
CRAFT_RECIPE_RESPONSE, // 0x35 PONG_RESPONSE, // 0x35
PLAYER_ABILITIES, // 0x36 CRAFT_RECIPE_RESPONSE, // 0x36
PLAYER_CHAT, // 0x37 PLAYER_ABILITIES, // 0x37
COMBAT_END, // 0x38 PLAYER_CHAT, // 0x38
COMBAT_ENTER, // 0x39 COMBAT_END, // 0x39
COMBAT_KILL, // 0x3A COMBAT_ENTER, // 0x3A
PLAYER_INFO_REMOVE, // 0x3B COMBAT_KILL, // 0x3B
PLAYER_INFO_UPDATE, // 0x3C PLAYER_INFO_REMOVE, // 0x3C
FACE_PLAYER, // 0x3D PLAYER_INFO_UPDATE, // 0x3D
PLAYER_POSITION, // 0x3E FACE_PLAYER, // 0x3E
UNLOCK_RECIPES, // 0x3F PLAYER_POSITION, // 0x3F
REMOVE_ENTITIES, // 0x40 UNLOCK_RECIPES, // 0x40
REMOVE_ENTITY_EFFECT, // 0x41 REMOVE_ENTITIES, // 0x41
RESOURCE_PACK, // 0x42 REMOVE_ENTITY_EFFECT, // 0x42
RESPAWN, // 0x43 RESOURCE_PACK, // 0x43
ENTITY_HEAD_LOOK, // 0x44 RESPAWN, // 0x44
MULTI_BLOCK_CHANGE, // 0x45 ENTITY_HEAD_LOOK, // 0x45
SELECT_ADVANCEMENTS_TAB, // 0x46 MULTI_BLOCK_CHANGE, // 0x46
SERVER_DATA, // 0x47 SELECT_ADVANCEMENTS_TAB, // 0x47
ACTIONBAR, // 0x48 SERVER_DATA, // 0x48
WORLD_BORDER_CENTER, // 0x49 ACTIONBAR, // 0x49
WORLD_BORDER_LERP_SIZE, // 0x4A WORLD_BORDER_CENTER, // 0x4A
WORLD_BORDER_SIZE, // 0x4B WORLD_BORDER_LERP_SIZE, // 0x4B
WORLD_BORDER_WARNING_DELAY, // 0x4C WORLD_BORDER_SIZE, // 0x4C
WORLD_BORDER_WARNING_DISTANCE, // 0x4D WORLD_BORDER_WARNING_DELAY, // 0x4D
CAMERA, // 0x4E WORLD_BORDER_WARNING_DISTANCE, // 0x4E
HELD_ITEM_CHANGE, // 0x4F CAMERA, // 0x4F
UPDATE_VIEW_POSITION, // 0x50 HELD_ITEM_CHANGE, // 0x50
UPDATE_VIEW_DISTANCE, // 0x51 UPDATE_VIEW_POSITION, // 0x51
SPAWN_POSITION, // 0x52 UPDATE_VIEW_DISTANCE, // 0x52
DISPLAY_SCOREBOARD, // 0x53 SPAWN_POSITION, // 0x53
ENTITY_METADATA, // 0x54 DISPLAY_SCOREBOARD, // 0x54
ATTACH_ENTITY, // 0x55 ENTITY_METADATA, // 0x55
ENTITY_VELOCITY, // 0x56 ATTACH_ENTITY, // 0x56
ENTITY_EQUIPMENT, // 0x57 ENTITY_VELOCITY, // 0x57
SET_EXPERIENCE, // 0x58 ENTITY_EQUIPMENT, // 0x58
UPDATE_HEALTH, // 0x59 SET_EXPERIENCE, // 0x59
SCOREBOARD_OBJECTIVE, // 0x5A UPDATE_HEALTH, // 0x5A
SET_PASSENGERS, // 0x5B SCOREBOARD_OBJECTIVE, // 0x5B
TEAMS, // 0x5C SET_PASSENGERS, // 0x5C
UPDATE_SCORE, // 0x5D TEAMS, // 0x5D
SET_SIMULATION_DISTANCE, // 0x5E UPDATE_SCORE, // 0x5E
TITLE_SUBTITLE, // 0x5F SET_SIMULATION_DISTANCE, // 0x5F
TIME_UPDATE, // 0x60 TITLE_SUBTITLE, // 0x60
TITLE_TEXT, // 0x61 TIME_UPDATE, // 0x61
TITLE_TIMES, // 0x62 TITLE_TEXT, // 0x62
ENTITY_SOUND, // 0x63 TITLE_TIMES, // 0x63
SOUND, // 0x64 ENTITY_SOUND, // 0x64
START_CONFIGURATION, // 0x65 SOUND, // 0x65
STOP_SOUND, // 0x66 START_CONFIGURATION, // 0x66
SYSTEM_CHAT, // 0x67 STOP_SOUND, // 0x67
TAB_LIST, // 0x68 SYSTEM_CHAT, // 0x68
NBT_QUERY, // 0x69 TAB_LIST, // 0x69
COLLECT_ITEM, // 0x6A NBT_QUERY, // 0x6A
ENTITY_TELEPORT, // 0x6B COLLECT_ITEM, // 0x6B
ADVANCEMENTS, // 0x6C ENTITY_TELEPORT, // 0x6C
ENTITY_PROPERTIES, // 0x6D ADVANCEMENTS, // 0x6D
ENTITY_EFFECT, // 0x6E ENTITY_PROPERTIES, // 0x6E
DECLARE_RECIPES, // 0x6F ENTITY_EFFECT, // 0x6F
TAGS; // 0x70 DECLARE_RECIPES, // 0x70
TAGS; // 0x71
@Override @Override
public int getId() { public int getId() {

View File

@ -50,30 +50,31 @@ public enum ServerboundPackets1_20_2 implements ServerboundPacketType {
VEHICLE_MOVE, // 0x1A VEHICLE_MOVE, // 0x1A
STEER_BOAT, // 0x1B STEER_BOAT, // 0x1B
PICK_ITEM, // 0x1C PICK_ITEM, // 0x1C
CRAFT_RECIPE_REQUEST, // 0x1D PING_REQUEST, // 0x1D
PLAYER_ABILITIES, // 0x1E CRAFT_RECIPE_REQUEST, // 0x1E
PLAYER_DIGGING, // 0x1F PLAYER_ABILITIES, // 0x1F
ENTITY_ACTION, // 0x20 PLAYER_DIGGING, // 0x20
STEER_VEHICLE, // 0x21 ENTITY_ACTION, // 0x21
PONG, // 0x22 STEER_VEHICLE, // 0x22
RECIPE_BOOK_DATA, // 0x23 PONG, // 0x23
SEEN_RECIPE, // 0x24 RECIPE_BOOK_DATA, // 0x24
RENAME_ITEM, // 0x25 SEEN_RECIPE, // 0x25
RESOURCE_PACK_STATUS, // 0x26 RENAME_ITEM, // 0x26
ADVANCEMENT_TAB, // 0x27 RESOURCE_PACK_STATUS, // 0x27
SELECT_TRADE, // 0x28 ADVANCEMENT_TAB, // 0x28
SET_BEACON_EFFECT, // 0x29 SELECT_TRADE, // 0x29
HELD_ITEM_CHANGE, // 0x2A SET_BEACON_EFFECT, // 0x2A
UPDATE_COMMAND_BLOCK, // 0x2B HELD_ITEM_CHANGE, // 0x2B
UPDATE_COMMAND_BLOCK_MINECART, // 0x2C UPDATE_COMMAND_BLOCK, // 0x2C
CREATIVE_INVENTORY_ACTION, // 0x2D UPDATE_COMMAND_BLOCK_MINECART, // 0x2D
UPDATE_JIGSAW_BLOCK, // 0x2E CREATIVE_INVENTORY_ACTION, // 0x2E
UPDATE_STRUCTURE_BLOCK, // 0x2F UPDATE_JIGSAW_BLOCK, // 0x2F
UPDATE_SIGN, // 0x30 UPDATE_STRUCTURE_BLOCK, // 0x30
ANIMATION, // 0x31 UPDATE_SIGN, // 0x31
SPECTATE, // 0x32 ANIMATION, // 0x32
PLAYER_BLOCK_PLACEMENT, // 0x33 SPECTATE, // 0x33
USE_ITEM; // 0x34 PLAYER_BLOCK_PLACEMENT, // 0x34
USE_ITEM; // 0x35
@Override @Override
public int getId() { public int getId() {

View File

@ -17,8 +17,13 @@
*/ */
package com.viaversion.viaversion.protocols.protocol1_20_2to1_20.rewriter; package com.viaversion.viaversion.protocols.protocol1_20_2to1_20.rewriter;
import com.github.steveice10.opennbt.tag.builtin.CompoundTag;
import com.github.steveice10.opennbt.tag.builtin.IntTag;
import com.github.steveice10.opennbt.tag.builtin.StringTag;
import com.github.steveice10.opennbt.tag.builtin.Tag;
import com.viaversion.viaversion.api.data.ParticleMappings; import com.viaversion.viaversion.api.data.ParticleMappings;
import com.viaversion.viaversion.api.data.entity.EntityTracker; import com.viaversion.viaversion.api.data.entity.EntityTracker;
import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntity;
import com.viaversion.viaversion.api.minecraft.chunks.Chunk; import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viaversion.api.minecraft.metadata.ChunkPosition; import com.viaversion.viaversion.api.minecraft.metadata.ChunkPosition;
@ -34,6 +39,8 @@ import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.type.ChunkType1_
import com.viaversion.viaversion.protocols.protocol1_20to1_19_4.Protocol1_20To1_19_4; import com.viaversion.viaversion.protocols.protocol1_20to1_19_4.Protocol1_20To1_19_4;
import com.viaversion.viaversion.rewriter.ItemRewriter; import com.viaversion.viaversion.rewriter.ItemRewriter;
import com.viaversion.viaversion.util.MathUtil; import com.viaversion.viaversion.util.MathUtil;
import javax.swing.border.CompoundBorder;
import org.checkerframework.checker.nullness.qual.Nullable;
public final class BlockItemPacketRewriter1_20_2 extends ItemRewriter<ClientboundPackets1_19_4, ServerboundPackets1_20_2, Protocol1_20_2To1_20> { public final class BlockItemPacketRewriter1_20_2 extends ItemRewriter<ClientboundPackets1_19_4, ServerboundPackets1_20_2, Protocol1_20_2To1_20> {
@ -57,7 +64,7 @@ public final class BlockItemPacketRewriter1_20_2 extends ItemRewriter<Clientboun
protocol.registerClientbound(ClientboundPackets1_19_4.BLOCK_ENTITY_DATA, wrapper -> { protocol.registerClientbound(ClientboundPackets1_19_4.BLOCK_ENTITY_DATA, wrapper -> {
wrapper.passthrough(Type.POSITION1_14); // Position wrapper.passthrough(Type.POSITION1_14); // Position
wrapper.passthrough(Type.VAR_INT); // Type wrapper.passthrough(Type.VAR_INT); // Type
wrapper.write(Type.NAMELESS_NBT, wrapper.read(Type.NBT)); wrapper.write(Type.NAMELESS_NBT, handleBlockEntity(wrapper.read(Type.NBT)));
}); });
protocol.registerClientbound(ClientboundPackets1_19_4.CHUNK_DATA, wrapper -> { protocol.registerClientbound(ClientboundPackets1_19_4.CHUNK_DATA, wrapper -> {
@ -71,6 +78,10 @@ public final class BlockItemPacketRewriter1_20_2 extends ItemRewriter<Clientboun
MathUtil.ceilLog2(Protocol1_20To1_19_4.MAPPINGS.getBlockStateMappings().mappedSize()), MathUtil.ceilLog2(Protocol1_20To1_19_4.MAPPINGS.getBlockStateMappings().mappedSize()),
MathUtil.ceilLog2(tracker.biomesSent())); MathUtil.ceilLog2(tracker.biomesSent()));
wrapper.write(newChunkType, chunk); wrapper.write(newChunkType, chunk);
for (final BlockEntity blockEntity : chunk.blockEntities()) {
handleBlockEntity(blockEntity.tag());
}
}); });
// Replace the NBT type everywhere // Replace the NBT type everywhere
@ -294,4 +305,22 @@ public final class BlockItemPacketRewriter1_20_2 extends ItemRewriter<Clientboun
} }
}.register(ClientboundPackets1_19_4.DECLARE_RECIPES); }.register(ClientboundPackets1_19_4.DECLARE_RECIPES);
} }
private @Nullable CompoundTag handleBlockEntity(@Nullable final CompoundTag tag) {
if (tag == null) {
return null;
}
// TODO Weird disconnect when setting effect type in inventory, probably unrelated to this, but needs fixing
final IntTag primaryEffect = tag.remove("Primary");
if (primaryEffect != null) {
tag.put("primary_effect", new StringTag("minecraft:speed")); //TODO
}
final IntTag secondaryEffect = tag.remove("Secondary");
if (secondaryEffect != null) {
tag.put("secondary_effect", new StringTag("minecraft:speed")); //TODO
}
return tag;
}
} }

View File

@ -1,5 +1,5 @@
# Project properties - we put these here so they can be modified without causing a recompile of the build scripts # Project properties - we put these here so they can be modified without causing a recompile of the build scripts
projectVersion=4.8.0-23w31a-SNAPSHOT projectVersion=4.8.0-23w32a-SNAPSHOT
# Gradle properties # Gradle properties
org.gradle.daemon=true org.gradle.daemon=true