diff --git a/bukkit/src/main/java/com/viaversion/viabackwards/BukkitPlugin.java b/bukkit/src/main/java/com/viaversion/viabackwards/BukkitPlugin.java index c03e0c95..4a033721 100644 --- a/bukkit/src/main/java/com/viaversion/viabackwards/BukkitPlugin.java +++ b/bukkit/src/main/java/com/viaversion/viabackwards/BukkitPlugin.java @@ -23,7 +23,7 @@ import com.viaversion.viabackwards.listener.FireDamageListener; import com.viaversion.viabackwards.listener.FireExtinguishListener; import com.viaversion.viabackwards.listener.LecternInteractListener; import com.viaversion.viabackwards.listener.PlayerItemDropListener; -import com.viaversion.viabackwards.protocol.protocol1_20to1_20_2.provider.AdvancementCriteriaProvider; +import com.viaversion.viabackwards.protocol.v1_20_2to1_20.provider.AdvancementCriteriaProvider; import com.viaversion.viabackwards.provider.BukkitAdvancementCriteriaProvider; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.platform.providers.ViaProviders; diff --git a/bukkit/src/main/java/com/viaversion/viabackwards/listener/FireDamageListener.java b/bukkit/src/main/java/com/viaversion/viabackwards/listener/FireDamageListener.java index 26a5df8f..ff677f74 100644 --- a/bukkit/src/main/java/com/viaversion/viabackwards/listener/FireDamageListener.java +++ b/bukkit/src/main/java/com/viaversion/viabackwards/listener/FireDamageListener.java @@ -18,7 +18,7 @@ package com.viaversion.viabackwards.listener; import com.viaversion.viabackwards.BukkitPlugin; -import com.viaversion.viabackwards.protocol.protocol1_11_1to1_12.Protocol1_11_1To1_12; +import com.viaversion.viabackwards.protocol.v1_12to1_11_1.Protocol1_12To1_11_1; import com.viaversion.viaversion.bukkit.listeners.ViaBukkitListener; import org.bukkit.Sound; import org.bukkit.SoundCategory; @@ -31,7 +31,7 @@ import org.bukkit.event.entity.EntityDamageEvent; public class FireDamageListener extends ViaBukkitListener { public FireDamageListener(BukkitPlugin plugin) { - super(plugin, Protocol1_11_1To1_12.class); + super(plugin, Protocol1_12To1_11_1.class); } @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) diff --git a/bukkit/src/main/java/com/viaversion/viabackwards/listener/FireExtinguishListener.java b/bukkit/src/main/java/com/viaversion/viabackwards/listener/FireExtinguishListener.java index 70e2e576..9920f280 100644 --- a/bukkit/src/main/java/com/viaversion/viabackwards/listener/FireExtinguishListener.java +++ b/bukkit/src/main/java/com/viaversion/viabackwards/listener/FireExtinguishListener.java @@ -18,7 +18,7 @@ package com.viaversion.viabackwards.listener; import com.viaversion.viabackwards.BukkitPlugin; -import com.viaversion.viabackwards.protocol.protocol1_15_2to1_16.Protocol1_15_2To1_16; +import com.viaversion.viabackwards.protocol.v1_16to1_15_2.Protocol1_16To1_15_2; import com.viaversion.viaversion.bukkit.listeners.ViaBukkitListener; import org.bukkit.Material; import org.bukkit.block.Block; @@ -31,7 +31,7 @@ import org.bukkit.event.player.PlayerInteractEvent; public class FireExtinguishListener extends ViaBukkitListener { public FireExtinguishListener(BukkitPlugin plugin) { - super(plugin, Protocol1_15_2To1_16.class); + super(plugin, Protocol1_16To1_15_2.class); } @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) diff --git a/bukkit/src/main/java/com/viaversion/viabackwards/listener/LecternInteractListener.java b/bukkit/src/main/java/com/viaversion/viabackwards/listener/LecternInteractListener.java index e53d94b5..b81a0ba1 100644 --- a/bukkit/src/main/java/com/viaversion/viabackwards/listener/LecternInteractListener.java +++ b/bukkit/src/main/java/com/viaversion/viabackwards/listener/LecternInteractListener.java @@ -18,7 +18,7 @@ package com.viaversion.viabackwards.listener; import com.viaversion.viabackwards.BukkitPlugin; -import com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14; +import com.viaversion.viabackwards.protocol.v1_14to1_13_2.Protocol1_14To1_13_2; import com.viaversion.viaversion.bukkit.listeners.ViaBukkitListener; import org.bukkit.Material; import org.bukkit.block.Block; @@ -33,7 +33,7 @@ import org.bukkit.inventory.meta.BookMeta; public class LecternInteractListener extends ViaBukkitListener { public LecternInteractListener(BukkitPlugin plugin) { - super(plugin, Protocol1_13_2To1_14.class); + super(plugin, Protocol1_14To1_13_2.class); } @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) diff --git a/bukkit/src/main/java/com/viaversion/viabackwards/listener/PlayerItemDropListener.java b/bukkit/src/main/java/com/viaversion/viabackwards/listener/PlayerItemDropListener.java index 53f5f8c5..4d84ab7e 100644 --- a/bukkit/src/main/java/com/viaversion/viabackwards/listener/PlayerItemDropListener.java +++ b/bukkit/src/main/java/com/viaversion/viabackwards/listener/PlayerItemDropListener.java @@ -19,7 +19,7 @@ package com.viaversion.viabackwards.listener; import com.viaversion.viabackwards.BukkitPlugin; -import com.viaversion.viabackwards.protocol.protocol1_13to1_13_1.Protocol1_13To1_13_1; +import com.viaversion.viabackwards.protocol.v1_13_1to1_13.Protocol1_13_1To1_13; import com.viaversion.viaversion.bukkit.listeners.ViaBukkitListener; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -30,7 +30,7 @@ import org.bukkit.inventory.ItemStack; public class PlayerItemDropListener extends ViaBukkitListener { public PlayerItemDropListener(final BukkitPlugin plugin) { - super(plugin, Protocol1_13To1_13_1.class); // Starts with 1.13 clients on 1.17 servers + super(plugin, Protocol1_13_1To1_13.class); // Starts with 1.13 clients on 1.17 servers } @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) diff --git a/bukkit/src/main/java/com/viaversion/viabackwards/provider/BukkitAdvancementCriteriaProvider.java b/bukkit/src/main/java/com/viaversion/viabackwards/provider/BukkitAdvancementCriteriaProvider.java index 7f5d0162..ed4c05d6 100644 --- a/bukkit/src/main/java/com/viaversion/viabackwards/provider/BukkitAdvancementCriteriaProvider.java +++ b/bukkit/src/main/java/com/viaversion/viabackwards/provider/BukkitAdvancementCriteriaProvider.java @@ -17,7 +17,7 @@ */ package com.viaversion.viabackwards.provider; -import com.viaversion.viabackwards.protocol.protocol1_20to1_20_2.provider.AdvancementCriteriaProvider; +import com.viaversion.viabackwards.protocol.v1_20_2to1_20.provider.AdvancementCriteriaProvider; import org.bukkit.Bukkit; import org.bukkit.NamespacedKey; import org.bukkit.advancement.Advancement; diff --git a/common/src/main/java/com/viaversion/viabackwards/api/BackwardsProtocol.java b/common/src/main/java/com/viaversion/viabackwards/api/BackwardsProtocol.java index 819e9bfb..db3dc5ca 100644 --- a/common/src/main/java/com/viaversion/viabackwards/api/BackwardsProtocol.java +++ b/common/src/main/java/com/viaversion/viabackwards/api/BackwardsProtocol.java @@ -17,7 +17,7 @@ */ package com.viaversion.viabackwards.api; -import com.viaversion.viabackwards.api.data.BackwardsMappings; +import com.viaversion.viabackwards.api.data.BackwardsMappingData; import com.viaversion.viabackwards.api.rewriters.TranslatableRewriter; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.protocol.AbstractProtocol; @@ -48,7 +48,7 @@ public abstract class BackwardsProtocol> vvProtocolClass; protected Int2ObjectMap backwardsItemMappings; @@ -49,11 +49,11 @@ public class BackwardsMappings extends MappingDataBase { private Map entityNames; private Int2ObjectMap enchantmentNames; - public BackwardsMappings(final String unmappedVersion, final String mappedVersion) { + public BackwardsMappingData(final String unmappedVersion, final String mappedVersion) { this(unmappedVersion, mappedVersion, null); } - public BackwardsMappings(final String unmappedVersion, final String mappedVersion, @Nullable final Class> vvProtocolClass) { + public BackwardsMappingData(final String unmappedVersion, final String mappedVersion, @Nullable final Class> vvProtocolClass) { super(unmappedVersion, mappedVersion); Preconditions.checkArgument(vvProtocolClass == null || !vvProtocolClass.isAssignableFrom(BackwardsProtocol.class)); this.vvProtocolClass = vvProtocolClass; diff --git a/common/src/main/java/com/viaversion/viabackwards/api/data/BackwardsMappingDataLoader.java b/common/src/main/java/com/viaversion/viabackwards/api/data/BackwardsMappingDataLoader.java index 1f086c47..21a21339 100644 --- a/common/src/main/java/com/viaversion/viabackwards/api/data/BackwardsMappingDataLoader.java +++ b/common/src/main/java/com/viaversion/viabackwards/api/data/BackwardsMappingDataLoader.java @@ -19,8 +19,8 @@ package com.viaversion.viabackwards.api.data; import com.viaversion.viabackwards.ViaBackwards; import com.viaversion.viaversion.api.data.MappingDataLoader; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.Tag; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.Tag; import java.io.File; import java.io.IOException; import java.util.Map; diff --git a/common/src/main/java/com/viaversion/viabackwards/api/data/MappedItem.java b/common/src/main/java/com/viaversion/viabackwards/api/data/MappedItem.java index 7497a20e..b2c8410c 100644 --- a/common/src/main/java/com/viaversion/viabackwards/api/data/MappedItem.java +++ b/common/src/main/java/com/viaversion/viabackwards/api/data/MappedItem.java @@ -17,7 +17,7 @@ */ package com.viaversion.viabackwards.api.data; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.Tag; +import com.viaversion.nbt.tag.Tag; import com.viaversion.viaversion.util.ComponentUtil; import org.checkerframework.checker.nullness.qual.Nullable; diff --git a/common/src/main/java/com/viaversion/viabackwards/api/data/MappedLegacyBlockItem.java b/common/src/main/java/com/viaversion/viabackwards/api/data/MappedLegacyBlockItem.java index fc4f4545..2fbb8a3d 100644 --- a/common/src/main/java/com/viaversion/viabackwards/api/data/MappedLegacyBlockItem.java +++ b/common/src/main/java/com/viaversion/viabackwards/api/data/MappedLegacyBlockItem.java @@ -17,7 +17,7 @@ */ package com.viaversion.viabackwards.api.data; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; +import com.viaversion.nbt.tag.CompoundTag; import com.viaversion.viaversion.util.IdAndData; import org.checkerframework.checker.nullness.qual.Nullable; diff --git a/common/src/main/java/com/viaversion/viabackwards/api/entities/storage/EntityObjectData.java b/common/src/main/java/com/viaversion/viabackwards/api/entities/storage/EntityObjectData.java index dd4dfa07..e64f0f93 100644 --- a/common/src/main/java/com/viaversion/viabackwards/api/entities/storage/EntityObjectData.java +++ b/common/src/main/java/com/viaversion/viabackwards/api/entities/storage/EntityObjectData.java @@ -19,7 +19,7 @@ package com.viaversion.viabackwards.api.entities.storage; import com.viaversion.viabackwards.api.BackwardsProtocol; -public class EntityObjectData extends EntityData { +public class EntityObjectData extends EntityReplacement { private final int objectData; public EntityObjectData(BackwardsProtocol protocol, String key, int id, int replacementId, int objectData) { diff --git a/common/src/main/java/com/viaversion/viabackwards/api/entities/storage/EntityPositionHandler.java b/common/src/main/java/com/viaversion/viabackwards/api/entities/storage/EntityPositionHandler.java index 6e75b0a9..9880f19d 100644 --- a/common/src/main/java/com/viaversion/viabackwards/api/entities/storage/EntityPositionHandler.java +++ b/common/src/main/java/com/viaversion/viabackwards/api/entities/storage/EntityPositionHandler.java @@ -23,7 +23,7 @@ import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.data.entity.StoredEntityData; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import java.util.function.Supplier; public class EntityPositionHandler { @@ -43,11 +43,11 @@ public class EntityPositionHandler { public void cacheEntityPosition(PacketWrapper wrapper, boolean create, boolean relative) { cacheEntityPosition(wrapper, - wrapper.get(Type.DOUBLE, 0), wrapper.get(Type.DOUBLE, 1), wrapper.get(Type.DOUBLE, 2), create, relative); + wrapper.get(Types.DOUBLE, 0), wrapper.get(Types.DOUBLE, 1), wrapper.get(Types.DOUBLE, 2), create, relative); } public void cacheEntityPosition(PacketWrapper wrapper, double x, double y, double z, boolean create, boolean relative) { - int entityId = wrapper.get(Type.VAR_INT, 0); + int entityId = wrapper.get(Types.VAR_INT, 0); StoredEntityData storedEntity = entityRewriter.tracker(wrapper.user()).entityData(entityId); if (storedEntity == null) { if (Via.getManager().isDebug()) { // There is too many plugins violating this out there, and reading seems to be hard! :> @@ -98,8 +98,8 @@ public class EntityPositionHandler { } double pitch = -Math.asin(dY / r) / Math.PI * 180; - wrapper.write(Type.BYTE, (byte) (yaw * 256f / 360f)); - wrapper.write(Type.BYTE, (byte) (pitch * 256f / 360f)); + wrapper.write(Types.BYTE, (byte) (yaw * 256f / 360f)); + wrapper.write(Types.BYTE, (byte) (pitch * 256f / 360f)); } public static void writeFacingDegrees(PacketWrapper wrapper, double x, double y, double z, double targetX, double targetY, double targetZ) { @@ -113,7 +113,7 @@ public class EntityPositionHandler { } double pitch = -Math.asin(dY / r) / Math.PI * 180; - wrapper.write(Type.FLOAT, (float) yaw); - wrapper.write(Type.FLOAT, (float) pitch); + wrapper.write(Types.FLOAT, (float) yaw); + wrapper.write(Types.FLOAT, (float) pitch); } } diff --git a/common/src/main/java/com/viaversion/viabackwards/api/entities/storage/EntityData.java b/common/src/main/java/com/viaversion/viabackwards/api/entities/storage/EntityReplacement.java similarity index 87% rename from common/src/main/java/com/viaversion/viabackwards/api/entities/storage/EntityData.java rename to common/src/main/java/com/viaversion/viabackwards/api/entities/storage/EntityReplacement.java index 126acf79..e38b53d5 100644 --- a/common/src/main/java/com/viaversion/viabackwards/api/entities/storage/EntityData.java +++ b/common/src/main/java/com/viaversion/viabackwards/api/entities/storage/EntityReplacement.java @@ -20,12 +20,12 @@ package com.viaversion.viabackwards.api.entities.storage; import com.viaversion.viabackwards.api.BackwardsProtocol; import com.viaversion.viaversion.api.minecraft.entities.EntityType; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag; +import com.viaversion.nbt.tag.StringTag; import com.viaversion.viaversion.util.ComponentUtil; import java.util.Locale; import org.checkerframework.checker.nullness.qual.Nullable; -public class EntityData { +public class EntityReplacement { private final BackwardsProtocol protocol; private final int id; private final int replacementId; @@ -33,33 +33,33 @@ public class EntityData { private ComponentType componentType = ComponentType.NONE; private MetaCreator defaultMeta; - public EntityData(BackwardsProtocol protocol, EntityType type, int replacementId) { + public EntityReplacement(BackwardsProtocol protocol, EntityType type, int replacementId) { this(protocol, type.name(), type.getId(), replacementId); } - public EntityData(BackwardsProtocol protocol, String key, int id, int replacementId) { + public EntityReplacement(BackwardsProtocol protocol, String key, int id, int replacementId) { this.protocol = protocol; this.id = id; this.replacementId = replacementId; this.key = key.toLowerCase(Locale.ROOT); } - public EntityData jsonName() { + public EntityReplacement jsonName() { this.componentType = ComponentType.JSON; return this; } - public EntityData tagName() { + public EntityReplacement tagName() { this.componentType = ComponentType.TAG; return this; } - public EntityData plainName() { + public EntityReplacement plainName() { this.componentType = ComponentType.PLAIN; return this; } - public EntityData spawnMetadata(MetaCreator handler) { + public EntityReplacement spawnMetadata(MetaCreator handler) { this.defaultMeta = handler; return this; } diff --git a/common/src/main/java/com/viaversion/viabackwards/api/entities/storage/PlayerPositionStorage.java b/common/src/main/java/com/viaversion/viabackwards/api/entities/storage/PlayerPositionStorage.java index 8d143572..2e87dd61 100644 --- a/common/src/main/java/com/viaversion/viabackwards/api/entities/storage/PlayerPositionStorage.java +++ b/common/src/main/java/com/viaversion/viabackwards/api/entities/storage/PlayerPositionStorage.java @@ -19,7 +19,7 @@ package com.viaversion.viabackwards.api.entities.storage; import com.viaversion.viaversion.api.connection.StorableObject; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; public abstract class PlayerPositionStorage implements StorableObject { private double x; @@ -54,7 +54,7 @@ public abstract class PlayerPositionStorage implements StorableObject { } public void setCoordinates(PacketWrapper wrapper, boolean relative) { - setCoordinates(wrapper.get(Type.DOUBLE, 0), wrapper.get(Type.DOUBLE, 1), wrapper.get(Type.DOUBLE, 2), relative); + setCoordinates(wrapper.get(Types.DOUBLE, 0), wrapper.get(Types.DOUBLE, 1), wrapper.get(Types.DOUBLE, 2), relative); } public void setCoordinates(double x, double y, double z, boolean relative) { diff --git a/common/src/main/java/com/viaversion/viabackwards/api/entities/storage/WrappedMetadata.java b/common/src/main/java/com/viaversion/viabackwards/api/entities/storage/WrappedMetadata.java index 1ad32ffe..a3916fe5 100644 --- a/common/src/main/java/com/viaversion/viabackwards/api/entities/storage/WrappedMetadata.java +++ b/common/src/main/java/com/viaversion/viabackwards/api/entities/storage/WrappedMetadata.java @@ -18,17 +18,17 @@ package com.viaversion.viabackwards.api.entities.storage; -import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.api.minecraft.entitydata.EntityData; import java.util.List; import org.checkerframework.checker.nullness.qual.Nullable; -public record WrappedMetadata(List metadataList) { +public record WrappedMetadata(List metadataList) { - public boolean has(Metadata data) { + public boolean has(EntityData data) { return this.metadataList.contains(data); } - public void remove(Metadata data) { + public void remove(EntityData data) { this.metadataList.remove(data); } @@ -36,12 +36,12 @@ public record WrappedMetadata(List metadataList) { metadataList.removeIf(meta -> meta.id() == index); } - public void add(Metadata data) { + public void add(EntityData data) { this.metadataList.add(data); } - public @Nullable Metadata get(int index) { - for (Metadata meta : this.metadataList) { + public @Nullable EntityData get(int index) { + for (EntityData meta : this.metadataList) { if (index == meta.id()) { return meta; } diff --git a/common/src/main/java/com/viaversion/viabackwards/api/rewriters/BackwardsItemRewriter.java b/common/src/main/java/com/viaversion/viabackwards/api/rewriters/BackwardsItemRewriter.java index 6b775d16..43c527e8 100644 --- a/common/src/main/java/com/viaversion/viabackwards/api/rewriters/BackwardsItemRewriter.java +++ b/common/src/main/java/com/viaversion/viabackwards/api/rewriters/BackwardsItemRewriter.java @@ -25,14 +25,15 @@ import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.libs.gson.JsonElement; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.ByteTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.IntTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.ListTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.NumberTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.Tag; +import com.viaversion.nbt.tag.ByteTag; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.IntTag; +import com.viaversion.nbt.tag.ListTag; +import com.viaversion.nbt.tag.NumberTag; +import com.viaversion.nbt.tag.StringTag; +import com.viaversion.nbt.tag.Tag; import org.checkerframework.checker.nullness.qual.Nullable; public class BackwardsItemRewriter { - wrapper.passthrough(Type.BOOLEAN); // Reset/clear - final int size = wrapper.passthrough(Type.VAR_INT); // Mapping size + wrapper.passthrough(Types.BOOLEAN); // Reset/clear + final int size = wrapper.passthrough(Types.VAR_INT); // Mapping size for (int i = 0; i < size; i++) { - wrapper.passthrough(Type.STRING); // Identifier - wrapper.passthrough(Type.OPTIONAL_STRING); // Parent + wrapper.passthrough(Types.STRING); // Identifier + wrapper.passthrough(Types.OPTIONAL_STRING); // Parent // Display data - if (wrapper.passthrough(Type.BOOLEAN)) { - final JsonElement title = wrapper.passthrough(Type.COMPONENT); - final JsonElement description = wrapper.passthrough(Type.COMPONENT); + if (wrapper.passthrough(Types.BOOLEAN)) { + final JsonElement title = wrapper.passthrough(Types.COMPONENT); + final JsonElement description = wrapper.passthrough(Types.COMPONENT); final TranslatableRewriter translatableRewriter = protocol.getTranslatableRewriter(); if (translatableRewriter != null) { translatableRewriter.processText(wrapper.user(), title); @@ -150,20 +151,20 @@ public class BackwardsItemRewriter { - wrapper.passthrough(Type.BOOLEAN); // Reset/clear - final int size = wrapper.passthrough(Type.VAR_INT); // Mapping size + wrapper.passthrough(Types.BOOLEAN); // Reset/clear + final int size = wrapper.passthrough(Types.VAR_INT); // Mapping size for (int i = 0; i < size; i++) { - wrapper.passthrough(Type.STRING); // Identifier - wrapper.passthrough(Type.OPTIONAL_STRING); // Parent + wrapper.passthrough(Types.STRING); // Identifier + wrapper.passthrough(Types.OPTIONAL_STRING); // Parent // Display data - if (wrapper.passthrough(Type.BOOLEAN)) { - final Tag title = wrapper.passthrough(Type.TAG); - final Tag description = wrapper.passthrough(Type.TAG); + if (wrapper.passthrough(Types.BOOLEAN)) { + final Tag title = wrapper.passthrough(Types.TAG); + final Tag description = wrapper.passthrough(Types.TAG); final TranslatableRewriter translatableRewriter = protocol.getTranslatableRewriter(); if (translatableRewriter != null) { translatableRewriter.processTag(wrapper.user(), title); @@ -194,21 +195,21 @@ public class BackwardsItemRewriter> extends EntityRewriterBase { protected EntityRewriter(T protocol) { - this(protocol, Types1_14.META_TYPES.optionalComponentType, Types1_14.META_TYPES.booleanType); + this(protocol, Types1_14.ENTITY_DATA_TYPES.optionalComponentType, Types1_14.ENTITY_DATA_TYPES.booleanType); } - protected EntityRewriter(T protocol, MetaType displayType, MetaType displayVisibilityType) { + protected EntityRewriter(T protocol, EntityDataType displayType, EntityDataType displayVisibilityType) { super(protocol, displayType, 2, displayVisibilityType, 3); } @@ -43,15 +44,15 @@ public abstract class EntityRewriter trackAndMapEntity(wrapper)); } }); @@ -123,7 +124,7 @@ public abstract class EntityRewriter { EntityTracker tracker = tracker(wrapper.user()); - String world = wrapper.get(Type.STRING, 1); + String world = wrapper.get(Types.STRING, 1); if (tracker.currentWorld() != null && !tracker.currentWorld().equals(world)) { tracker.clearEntities(); tracker.trackClientEntity(); @@ -139,13 +140,13 @@ public abstract class EntityRewriter> extends EntityRewriter { - private final Int2ObjectMap entityDataMappings = new Int2ObjectOpenHashMap<>(); - private final MetaType displayNameMetaType; - private final MetaType displayVisibilityMetaType; + private final Int2ObjectMap entityDataMappings = new Int2ObjectOpenHashMap<>(); + private final EntityDataType displayNameMetaType; + private final EntityDataType displayVisibilityMetaType; private final int displayNameIndex; private final int displayVisibilityIndex; - EntityRewriterBase(T protocol, MetaType displayNameMetaType, int displayNameIndex, - MetaType displayVisibilityMetaType, int displayVisibilityIndex) { + EntityRewriterBase(T protocol, EntityDataType displayNameMetaType, int displayNameIndex, + EntityDataType displayVisibilityMetaType, int displayVisibilityIndex) { super(protocol, false); this.displayNameMetaType = displayNameMetaType; this.displayNameIndex = displayNameIndex; @@ -64,48 +65,48 @@ public abstract class EntityRewriterBase metadataList, UserConnection connection) { + public void handleEntityData(int entityId, List entityDataList, UserConnection connection) { final TrackedEntity entity = tracker(connection).entity(entityId); - final boolean initialMetadata = !(entity != null && entity.hasSentMetadata()); + final boolean initialMetadata = !(entity != null && entity.hasSentEntityData()); - super.handleMetadata(entityId, metadataList, connection); + super.handleEntityData(entityId, entityDataList, connection); if (entity == null) { return; // Don't handle untracked entities - basically always the fault of a plugin sending virtual entities through concurrency-unsafe handling } // Set the mapped entity name if there is no custom name set already - final EntityData entityData = entityDataForType(entity.entityType()); + final EntityReplacement entityMapping = entityDataForType(entity.entityType()); final Object displayNameObject; - if (entityData != null && (displayNameObject = entityData.entityName()) != null) { - final Metadata displayName = getMeta(displayNameIndex, metadataList); + if (entityMapping != null && (displayNameObject = entityMapping.entityName()) != null) { + final EntityData displayName = getData(displayNameIndex, entityDataList); if (initialMetadata) { if (displayName == null) { // Add it as new metadata - metadataList.add(new Metadata(displayNameIndex, displayNameMetaType, displayNameObject)); - addDisplayVisibilityMeta(metadataList); + entityDataList.add(new EntityData(displayNameIndex, displayNameMetaType, displayNameObject)); + addDisplayVisibilityMeta(entityDataList); } else if (displayName.getValue() == null || displayName.getValue().toString().isEmpty()) { // Overwrite the existing null/empty display name displayName.setValue(displayNameObject); - addDisplayVisibilityMeta(metadataList); + addDisplayVisibilityMeta(entityDataList); } } else if (displayName != null && (displayName.getValue() == null || displayName.getValue().toString().isEmpty())) { // Overwrite null/empty display name displayName.setValue(displayNameObject); - addDisplayVisibilityMeta(metadataList); + addDisplayVisibilityMeta(entityDataList); } } // Add any other extra meta for mapped entities - if (entityData != null && entityData.hasBaseMeta() && initialMetadata) { - entityData.defaultMeta().createMeta(new WrappedMetadata(metadataList)); + if (entityMapping != null && entityMapping.hasBaseMeta() && initialMetadata) { + entityMapping.defaultMeta().createMeta(new WrappedMetadata(entityDataList)); } } - private void addDisplayVisibilityMeta(List metadataList) { + private void addDisplayVisibilityMeta(List metadataList) { if (alwaysShowOriginalMobName()) { removeMeta(displayVisibilityIndex, metadataList); - metadataList.add(new Metadata(displayVisibilityIndex, displayVisibilityMetaType, getDisplayVisibilityMetaValue())); + metadataList.add(new EntityData(displayVisibilityIndex, displayVisibilityMetaType, getDisplayVisibilityMetaValue())); } } @@ -117,8 +118,8 @@ public abstract class EntityRewriterBase metadataList) { - for (Metadata metadata : metadataList) { + protected @Nullable EntityData getData(int metaIndex, List metadataList) { + for (EntityData metadata : metadataList) { if (metadata.id() == metaIndex) { return metadata; } @@ -126,7 +127,7 @@ public abstract class EntityRewriterBase metadataList) { + protected void removeMeta(int metaIndex, List metadataList) { metadataList.removeIf(meta -> meta.id() == metaIndex); } @@ -134,11 +135,11 @@ public abstract class EntityRewriterBase { - MetaType type = meta.metaType(); + EntityDataType type = meta.dataType(); if (type == itemType) { protocol.getItemRewriter().handleItemToClient(event.user(), meta.value()); } else if (type == blockStateType) { @@ -192,16 +193,16 @@ public abstract class EntityRewriterBase { - MetaType type = meta.metaType(); + EntityDataType type = meta.dataType(); if (type == itemType) { meta.setValue(protocol.getItemRewriter().handleItemToClient(event.user(), meta.value())); } else if (type == blockStateType) { @@ -229,12 +230,12 @@ public abstract class EntityRewriterBase intType, int typeIndex) { return wrapper -> { Number id = wrapper.get(intType, typeIndex); - tracker(wrapper.user()).addEntity(wrapper.get(Type.VAR_INT, 0), typeFromId(id.intValue())); + tracker(wrapper.user()).addEntity(wrapper.get(Types.VAR_INT, 0), typeFromId(id.intValue())); }; } protected PacketHandler getTrackerHandler() { - return getTrackerHandler(Type.VAR_INT, 1); + return getTrackerHandler(Types.VAR_INT, 1); } protected PacketHandler getTrackerHandler(EntityType entityType, Type intType) { @@ -244,7 +245,7 @@ public abstract class EntityRewriterBase { ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); - int dimensionId = wrapper.get(Type.INT, index); + int dimensionId = wrapper.get(Types.INT, index); clientWorld.setEnvironment(dimensionId); }; } diff --git a/common/src/main/java/com/viaversion/viabackwards/api/rewriters/LegacyBlockItemRewriter.java b/common/src/main/java/com/viaversion/viabackwards/api/rewriters/LegacyBlockItemRewriter.java index 809ec7b9..7bc3eb7b 100644 --- a/common/src/main/java/com/viaversion/viabackwards/api/rewriters/LegacyBlockItemRewriter.java +++ b/common/src/main/java/com/viaversion/viabackwards/api/rewriters/LegacyBlockItemRewriter.java @@ -21,7 +21,7 @@ package com.viaversion.viabackwards.api.rewriters; import com.viaversion.viabackwards.api.BackwardsProtocol; import com.viaversion.viabackwards.api.data.MappedLegacyBlockItem; import com.viaversion.viabackwards.api.data.BackwardsMappingDataLoader; -import com.viaversion.viabackwards.protocol.protocol1_11_1to1_12.data.BlockColors; +import com.viaversion.viabackwards.protocol.v1_12to1_11_1.data.BlockColors; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.BlockChangeRecord; import com.viaversion.viaversion.api.minecraft.chunks.Chunk; @@ -35,18 +35,19 @@ import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectMap; import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectOpenHashMap; import com.viaversion.viaversion.libs.gson.JsonElement; import com.viaversion.viaversion.libs.gson.JsonObject; import com.viaversion.viaversion.libs.gson.JsonPrimitive; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.ByteTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.IntTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.NumberTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.ShortTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.Tag; +import com.viaversion.nbt.tag.ByteTag; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.IntTag; +import com.viaversion.nbt.tag.NumberTag; +import com.viaversion.nbt.tag.ShortTag; +import com.viaversion.nbt.tag.StringTag; +import com.viaversion.nbt.tag.Tag; import com.viaversion.viaversion.util.ComponentUtil; import java.util.HashMap; import java.util.Map; @@ -78,7 +79,7 @@ public abstract class LegacyBlockItemRewriter mappings) { @@ -134,12 +135,12 @@ public abstract class LegacyBlockItemRewriter { - int idx = wrapper.get(Type.VAR_INT, 0); - wrapper.set(Type.VAR_INT, 0, handleBlockId(idx)); + int idx = wrapper.get(Types.VAR_INT, 0); + wrapper.set(Types.VAR_INT, 0, handleBlockId(idx)); }); } }); @@ -149,12 +150,12 @@ public abstract class LegacyBlockItemRewriter { - for (BlockChangeRecord record : wrapper.get(Type.BLOCK_CHANGE_RECORD_ARRAY, 0)) { + for (BlockChangeRecord record : wrapper.get(Types.BLOCK_CHANGE_ARRAY, 0)) { record.setBlockId(handleBlockId(record.getBlockId())); } }); @@ -195,7 +196,7 @@ public abstract class LegacyBlockItemRewriter { - final Optional type = EntityTypes1_12.ObjectType.findById(wrapper.get(Type.BYTE, 0)); + final Optional type = EntityTypes1_12.ObjectType.findById(wrapper.get(Types.BYTE, 0)); if (type.isPresent() && type.get() == EntityTypes1_12.ObjectType.FALLING_BLOCK) { - final int objectData = wrapper.get(Type.INT, 0); + final int objectData = wrapper.get(Types.INT, 0); final IdAndData block = handleBlock(objectData & 4095, objectData >> 12 & 15); if (block == null) return; - wrapper.set(Type.INT, 0, block.getId() | block.getData() << 12); + wrapper.set(Types.INT, 0, block.getId() | block.getData() << 12); } }; } diff --git a/common/src/main/java/com/viaversion/viabackwards/api/rewriters/LegacyEnchantmentRewriter.java b/common/src/main/java/com/viaversion/viabackwards/api/rewriters/LegacyEnchantmentRewriter.java index 7881441a..8a42a611 100644 --- a/common/src/main/java/com/viaversion/viabackwards/api/rewriters/LegacyEnchantmentRewriter.java +++ b/common/src/main/java/com/viaversion/viabackwards/api/rewriters/LegacyEnchantmentRewriter.java @@ -18,13 +18,13 @@ package com.viaversion.viabackwards.api.rewriters; import com.viaversion.viaversion.api.minecraft.item.Item; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.ByteTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.IntTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.ListTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.NumberTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.Tag; +import com.viaversion.nbt.tag.ByteTag; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.IntTag; +import com.viaversion.nbt.tag.ListTag; +import com.viaversion.nbt.tag.NumberTag; +import com.viaversion.nbt.tag.StringTag; +import com.viaversion.nbt.tag.Tag; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -69,10 +69,10 @@ public class LegacyEnchantmentRewriter { CompoundTag tag = item.tag(); if (tag == null) return; - if (tag.contains(nbtTagName + "|ench")) { + if (tag.getListTag(nbtTagName + "|ench", CompoundTag.class) != null) { rewriteEnchantmentsToServer(tag, false); } - if (tag.contains(nbtTagName + "|StoredEnchantments")) { + if (tag.getListTag(nbtTagName + "|StoredEnchantments", CompoundTag.class) != null) { rewriteEnchantmentsToServer(tag, true); } } @@ -107,7 +107,7 @@ public class LegacyEnchantmentRewriter { dummyEnchantment.putShort("lvl", (short) 0); enchantments.add(dummyEnchantment); - tag.put(nbtTagName + "|dummyEnchant", new ByteTag()); + tag.put(nbtTagName + "|dummyEnchant", new ByteTag(false)); NumberTag hideFlags = tag.getNumberTag("HideFlags"); if (hideFlags == null) { @@ -165,7 +165,7 @@ public class LegacyEnchantmentRewriter { CompoundTag display = tag.getCompoundTag("display"); // A few null checks just to be safe, though they shouldn't actually be ListTag lore = display != null ? display.getListTag("Lore", StringTag.class) : null; - ListTag remappedEnchantments = tag.remove(nbtTagName + "|" + key); + ListTag remappedEnchantments = (ListTag) tag.remove(nbtTagName + "|" + key); for (CompoundTag enchantment : remappedEnchantments.copy()) { enchantments.add(enchantment); if (lore != null && !lore.isEmpty()) { diff --git a/common/src/main/java/com/viaversion/viabackwards/api/rewriters/LegacyEntityRewriter.java b/common/src/main/java/com/viaversion/viabackwards/api/rewriters/LegacyEntityRewriter.java index 852bfa65..3a0e3687 100644 --- a/common/src/main/java/com/viaversion/viabackwards/api/rewriters/LegacyEntityRewriter.java +++ b/common/src/main/java/com/viaversion/viabackwards/api/rewriters/LegacyEntityRewriter.java @@ -17,22 +17,22 @@ */ package com.viaversion.viabackwards.api.rewriters; -import com.viaversion.viabackwards.ViaBackwards; import com.viaversion.viabackwards.api.BackwardsProtocol; -import com.viaversion.viabackwards.api.entities.storage.EntityData; +import com.viaversion.viabackwards.api.entities.storage.EntityReplacement; import com.viaversion.viabackwards.api.entities.storage.EntityObjectData; import com.viaversion.viabackwards.api.entities.storage.WrappedMetadata; import com.viaversion.viaversion.api.minecraft.ClientWorld; import com.viaversion.viaversion.api.minecraft.entities.EntityType; import com.viaversion.viaversion.api.minecraft.entities.ObjectType; -import com.viaversion.viaversion.api.minecraft.metadata.MetaType; -import com.viaversion.viaversion.api.minecraft.metadata.Metadata; -import com.viaversion.viaversion.api.minecraft.metadata.types.MetaType1_9; +import com.viaversion.viaversion.api.minecraft.entitydata.EntityData; +import com.viaversion.viaversion.api.minecraft.entitydata.EntityDataType; +import com.viaversion.viaversion.api.minecraft.entitydata.types.EntityDataTypes1_9; import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -40,13 +40,13 @@ import java.util.function.Function; import org.checkerframework.checker.nullness.qual.Nullable; public abstract class LegacyEntityRewriter> extends EntityRewriterBase { - private final Map objectTypes = new HashMap<>(); + private final Map objectTypes = new HashMap<>(); protected LegacyEntityRewriter(T protocol) { - this(protocol, MetaType1_9.String, MetaType1_9.Boolean); + this(protocol, EntityDataTypes1_9.STRING, EntityDataTypes1_9.BOOLEAN); } - protected LegacyEntityRewriter(T protocol, MetaType displayType, MetaType displayVisibilityType) { + protected LegacyEntityRewriter(T protocol, EntityDataType displayType, EntityDataType displayVisibilityType) { super(protocol, displayType, 2, displayVisibilityType, 3); } @@ -56,7 +56,7 @@ public abstract class LegacyEntityRewriter { ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); - clientWorld.setEnvironment(wrapper.get(Type.INT, 0)); + clientWorld.setEnvironment(wrapper.get(Types.INT, 0)); }); } }); @@ -77,93 +77,93 @@ public abstract class LegacyEntityRewriter { ClientWorld clientChunks = wrapper.user().get(ClientWorld.class); - clientChunks.setEnvironment(wrapper.get(Type.INT, 1)); - addTrackedEntity(wrapper, wrapper.get(Type.INT, 0), playerType); + clientChunks.setEnvironment(wrapper.get(Types.INT, 1)); + addTrackedEntity(wrapper, wrapper.get(Types.INT, 0), playerType); }); } }); } @Override - public void registerMetadataRewriter(C packetType, Type> oldMetaType, Type> newMetaType) { + public void registerSetEntityData(C packetType, Type> oldMetaType, Type> newMetaType) { protocol.registerClientbound(packetType, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); // 0 - Entity ID + map(Types.VAR_INT); // 0 - Entity ID if (oldMetaType != null) { map(oldMetaType, newMetaType); } else { map(newMetaType); } handler(wrapper -> { - List metadata = wrapper.get(newMetaType, 0); - handleMetadata(wrapper.get(Type.VAR_INT, 0), metadata, wrapper.user()); + List metadata = wrapper.get(newMetaType, 0); + handleEntityData(wrapper.get(Types.VAR_INT, 0), metadata, wrapper.user()); }); } }); } @Override - public void registerMetadataRewriter(C packetType, Type> metaType) { - registerMetadataRewriter(packetType, null, metaType); + public void registerSetEntityData(C packetType, Type> metaType) { + registerSetEntityData(packetType, null, metaType); } - protected PacketHandler getMobSpawnRewriter(Type> metaType, IdSetter idSetter) { + protected PacketHandler getMobSpawnRewriter(Type> metaType, IdSetter idSetter) { return wrapper -> { - int entityId = wrapper.get(Type.VAR_INT, 0); + int entityId = wrapper.get(Types.VAR_INT, 0); EntityType type = tracker(wrapper.user()).entityType(entityId); - List metadata = wrapper.get(metaType, 0); - handleMetadata(entityId, metadata, wrapper.user()); + List metadata = wrapper.get(metaType, 0); + handleEntityData(entityId, metadata, wrapper.user()); - EntityData entityData = entityDataForType(type); - if (entityData != null) { - idSetter.setId(wrapper, entityData.replacementId()); - if (entityData.hasBaseMeta()) { - entityData.defaultMeta().createMeta(new WrappedMetadata(metadata)); + EntityReplacement entityReplacement = entityDataForType(type); + if (entityReplacement != null) { + idSetter.setId(wrapper, entityReplacement.replacementId()); + if (entityReplacement.hasBaseMeta()) { + entityReplacement.defaultMeta().createMeta(new WrappedMetadata(metadata)); } } }; } - public PacketHandler getMobSpawnRewriter(Type> metaType) { - return getMobSpawnRewriter(metaType, (wrapper, id) -> wrapper.set(Type.UNSIGNED_BYTE, 0, (short) id)); + public PacketHandler getMobSpawnRewriter(Type> metaType) { + return getMobSpawnRewriter(metaType, (wrapper, id) -> wrapper.set(Types.UNSIGNED_BYTE, 0, (short) id)); } - public PacketHandler getMobSpawnRewriter1_11(Type> metaType) { - return getMobSpawnRewriter(metaType, (wrapper, id) -> wrapper.set(Type.VAR_INT, 1, id)); + public PacketHandler getMobSpawnRewriter1_11(Type> metaType) { + return getMobSpawnRewriter(metaType, (wrapper, id) -> wrapper.set(Types.VAR_INT, 1, id)); } protected PacketHandler getObjectTrackerHandler() { - return wrapper -> addTrackedEntity(wrapper, wrapper.get(Type.VAR_INT, 0), objectTypeFromId(wrapper.get(Type.BYTE, 0))); + return wrapper -> addTrackedEntity(wrapper, wrapper.get(Types.VAR_INT, 0), objectTypeFromId(wrapper.get(Types.BYTE, 0))); } - protected PacketHandler getTrackerAndMetaHandler(Type> metaType, EntityType entityType) { + protected PacketHandler getTrackerAndMetaHandler(Type> metaType, EntityType entityType) { return wrapper -> { - addTrackedEntity(wrapper, wrapper.get(Type.VAR_INT, 0), entityType); - List metadata = wrapper.get(metaType, 0); - handleMetadata(wrapper.get(Type.VAR_INT, 0), metadata, wrapper.user()); + addTrackedEntity(wrapper, wrapper.get(Types.VAR_INT, 0), entityType); + List metadata = wrapper.get(metaType, 0); + handleEntityData(wrapper.get(Types.VAR_INT, 0), metadata, wrapper.user()); }; } protected PacketHandler getObjectRewriter(Function objectGetter) { return wrapper -> { - ObjectType type = objectGetter.apply(wrapper.get(Type.BYTE, 0)); + ObjectType type = objectGetter.apply(wrapper.get(Types.BYTE, 0)); if (type == null) { - ViaBackwards.getPlatform().getLogger().warning("Could not find Entity Type" + wrapper.get(Type.BYTE, 0)); + ViaBackwards.getPlatform().getLogger().warning("Could not find Entity Type" + wrapper.get(Types.BYTE, 0)); return; } - EntityData data = getObjectData(type); + EntityReplacement data = getObjectData(type); if (data != null) { - wrapper.set(Type.BYTE, 0, (byte) data.replacementId()); + wrapper.set(Types.BYTE, 0, (byte) data.replacementId()); if (data.objectData() != -1) { - wrapper.set(Type.INT, 0, data.objectData()); + wrapper.set(Types.INT, 0, data.objectData()); } } }; diff --git a/common/src/main/java/com/viaversion/viabackwards/api/rewriters/MapColorRewriter.java b/common/src/main/java/com/viaversion/viabackwards/api/rewriters/MapColorRewriter.java index 98a54c93..272f83a7 100644 --- a/common/src/main/java/com/viaversion/viabackwards/api/rewriters/MapColorRewriter.java +++ b/common/src/main/java/com/viaversion/viabackwards/api/rewriters/MapColorRewriter.java @@ -19,6 +19,7 @@ package com.viaversion.viabackwards.api.rewriters; import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.rewriter.IdRewriteFunction; public final class MapColorRewriter { @@ -31,22 +32,22 @@ public final class MapColorRewriter { */ public static PacketHandler getRewriteHandler(IdRewriteFunction rewriter) { return wrapper -> { - int iconCount = wrapper.passthrough(Type.VAR_INT); + int iconCount = wrapper.passthrough(Types.VAR_INT); for (int i = 0; i < iconCount; i++) { - wrapper.passthrough(Type.VAR_INT); // Type - wrapper.passthrough(Type.BYTE); // X - wrapper.passthrough(Type.BYTE); // Z - wrapper.passthrough(Type.BYTE); // Direction - wrapper.passthrough(Type.OPTIONAL_COMPONENT); // Display Name + wrapper.passthrough(Types.VAR_INT); // Type + wrapper.passthrough(Types.BYTE); // X + wrapper.passthrough(Types.BYTE); // Z + wrapper.passthrough(Types.BYTE); // Direction + wrapper.passthrough(Types.OPTIONAL_COMPONENT); // Display Name } - short columns = wrapper.passthrough(Type.UNSIGNED_BYTE); + short columns = wrapper.passthrough(Types.UNSIGNED_BYTE); if (columns < 1) return; - wrapper.passthrough(Type.UNSIGNED_BYTE); // Rows - wrapper.passthrough(Type.UNSIGNED_BYTE); // X - wrapper.passthrough(Type.UNSIGNED_BYTE); // Z - byte[] data = wrapper.passthrough(Type.BYTE_ARRAY_PRIMITIVE); + wrapper.passthrough(Types.UNSIGNED_BYTE); // Rows + wrapper.passthrough(Types.UNSIGNED_BYTE); // X + wrapper.passthrough(Types.UNSIGNED_BYTE); // Z + byte[] data = wrapper.passthrough(Types.BYTE_ARRAY_PRIMITIVE); for (int i = 0; i < data.length; i++) { int color = data[i] & 0xFF; int mappedColor = rewriter.rewrite(color); diff --git a/common/src/main/java/com/viaversion/viabackwards/api/rewriters/SoundRewriter.java b/common/src/main/java/com/viaversion/viabackwards/api/rewriters/SoundRewriter.java index 0d9022b3..f739f4c4 100644 --- a/common/src/main/java/com/viaversion/viabackwards/api/rewriters/SoundRewriter.java +++ b/common/src/main/java/com/viaversion/viabackwards/api/rewriters/SoundRewriter.java @@ -24,7 +24,7 @@ import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; -import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; public class SoundRewriter extends com.viaversion.viaversion.rewriter.SoundRewriter { @@ -39,7 +39,7 @@ public class SoundRewriter extends com.viaversi protocol.registerClientbound(packetType, new PacketHandlers() { @Override public void register() { - map(Type.STRING); // Sound identifier + map(Types.STRING); // Sound identifier handler(getNamedSoundHandler()); } }); @@ -56,14 +56,14 @@ public class SoundRewriter extends com.viaversi public PacketHandler getNamedSoundHandler() { return wrapper -> { - final String soundId = wrapper.get(Type.STRING, 0); + final String soundId = wrapper.get(Types.STRING, 0); final String mappedId = protocol.getMappingData().getMappedNamedSound(soundId); if (mappedId == null) { return; } if (!mappedId.isEmpty()) { - wrapper.set(Type.STRING, 0, mappedId); + wrapper.set(Types.STRING, 0, mappedId); } else { wrapper.cancel(); } @@ -72,23 +72,23 @@ public class SoundRewriter extends com.viaversi public PacketHandler getStopSoundHandler() { return wrapper -> { - final byte flags = wrapper.passthrough(Type.BYTE); + final byte flags = wrapper.passthrough(Types.BYTE); if ((flags & 0x02) == 0) return; // No sound specified if ((flags & 0x01) != 0) { - wrapper.passthrough(Type.VAR_INT); // Source + wrapper.passthrough(Types.VAR_INT); // Source } - final String soundId = wrapper.read(Type.STRING); + final String soundId = wrapper.read(Types.STRING); final String mappedId = protocol.getMappingData().getMappedNamedSound(soundId); if (mappedId == null) { // No mapping found - wrapper.write(Type.STRING, soundId); + wrapper.write(Types.STRING, soundId); return; } if (!mappedId.isEmpty()) { - wrapper.write(Type.STRING, mappedId); + wrapper.write(Types.STRING, mappedId); } else { // Cancel if set to empty wrapper.cancel(); @@ -97,15 +97,15 @@ public class SoundRewriter extends com.viaversi } @Override - public void register1_19_3Sound(final C packetType) { - protocol.registerClientbound(packetType, get1_19_3SoundHandler()); + public void registerSound1_19_3(final C packetType) { + protocol.registerClientbound(packetType, getSoundHandler1_19_3()); } - public PacketHandler get1_19_3SoundHandler() { + public PacketHandler getSoundHandler1_19_3() { return wrapper -> { - Holder soundEventHolder = wrapper.read(Type.SOUND_EVENT); + Holder soundEventHolder = wrapper.read(Types.SOUND_EVENT); if (soundEventHolder.isDirect()) { - wrapper.write(Type.SOUND_EVENT, rewriteSoundEvent(wrapper, soundEventHolder)); + wrapper.write(Types.SOUND_EVENT, rewriteSoundEvent(wrapper, soundEventHolder)); return; } @@ -119,7 +119,7 @@ public class SoundRewriter extends com.viaversi soundEventHolder = Holder.of(mappedId); } - wrapper.write(Type.SOUND_EVENT, soundEventHolder); + wrapper.write(Types.SOUND_EVENT, soundEventHolder); }; } diff --git a/common/src/main/java/com/viaversion/viabackwards/api/rewriters/StructuredEnchantmentRewriter.java b/common/src/main/java/com/viaversion/viabackwards/api/rewriters/StructuredEnchantmentRewriter.java index 40e53b79..21a0c997 100644 --- a/common/src/main/java/com/viaversion/viabackwards/api/rewriters/StructuredEnchantmentRewriter.java +++ b/common/src/main/java/com/viaversion/viabackwards/api/rewriters/StructuredEnchantmentRewriter.java @@ -17,7 +17,7 @@ */ package com.viaversion.viabackwards.api.rewriters; -import com.viaversion.viabackwards.api.data.BackwardsMappings; +import com.viaversion.viabackwards.api.data.BackwardsMappingData; import com.viaversion.viaversion.api.data.Mappings; import com.viaversion.viaversion.api.minecraft.data.StructuredData; import com.viaversion.viaversion.api.minecraft.data.StructuredDataContainer; @@ -27,11 +27,11 @@ import com.viaversion.viaversion.api.minecraft.item.data.Enchantments; import com.viaversion.viaversion.libs.fastutil.ints.Int2IntMap; import com.viaversion.viaversion.libs.fastutil.ints.IntIntPair; import com.viaversion.viaversion.libs.fastutil.objects.ObjectIterator; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.ByteTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.ListTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.NumberTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.Tag; +import com.viaversion.nbt.tag.ByteTag; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.ListTag; +import com.viaversion.nbt.tag.NumberTag; +import com.viaversion.nbt.tag.Tag; import com.viaversion.viaversion.util.ComponentUtil; import java.util.ArrayList; import java.util.Arrays; @@ -83,7 +83,7 @@ public class StructuredEnchantmentRewriter { final List updatedIds = new ArrayList<>(); while (iterator.hasNext()) { final Int2IntMap.Entry entry = iterator.next(); - final BackwardsMappings mappingData = itemRewriter.protocol().getMappingData(); + final BackwardsMappingData mappingData = itemRewriter.protocol().getMappingData(); final Mappings mappings = mappingData.getEnchantmentMappings(); final int mappedId = mappings.getNewId(entry.getIntKey()); if (mappedId != -1) { diff --git a/common/src/main/java/com/viaversion/viabackwards/api/rewriters/TranslatableRewriter.java b/common/src/main/java/com/viaversion/viabackwards/api/rewriters/TranslatableRewriter.java index 26a654bf..d82bbd9f 100644 --- a/common/src/main/java/com/viaversion/viabackwards/api/rewriters/TranslatableRewriter.java +++ b/common/src/main/java/com/viaversion/viabackwards/api/rewriters/TranslatableRewriter.java @@ -24,8 +24,8 @@ import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; import com.viaversion.viaversion.libs.gson.JsonElement; import com.viaversion.viaversion.libs.gson.JsonObject; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.StringTag; import com.viaversion.viaversion.rewriter.ComponentRewriter; import java.util.HashMap; import java.util.Map; @@ -48,7 +48,7 @@ public class TranslatableRewriter extends Compo } public TranslatableRewriter(final BackwardsProtocol protocol, final ReadType type) { - this(protocol, type, protocol.getClass().getSimpleName().split("To")[1].replace("_", ".")); + this(protocol, type, protocol.getClass().getSimpleName().replace("Protocol", "").split("To")[0].replace("_", ".")); } public TranslatableRewriter(final BackwardsProtocol protocol, final ReadType type, final String sectionIdentifier) { diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11to1_11_1/packets/EntityPackets1_11_1.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11to1_11_1/packets/EntityPackets1_11_1.java deleted file mode 100644 index e3be3273..00000000 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11to1_11_1/packets/EntityPackets1_11_1.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards - * Copyright (C) 2016-2024 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.viabackwards.protocol.protocol1_11to1_11_1.packets; - -import com.viaversion.viabackwards.api.rewriters.LegacyEntityRewriter; -import com.viaversion.viabackwards.protocol.protocol1_11to1_11_1.Protocol1_11To1_11_1; -import com.viaversion.viaversion.api.minecraft.entities.EntityType; -import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_11; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; -import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.api.type.types.version.Types1_9; -import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ClientboundPackets1_9_3; - -public class EntityPackets1_11_1 extends LegacyEntityRewriter { - - public EntityPackets1_11_1(Protocol1_11To1_11_1 protocol) { - super(protocol); - } - - @Override - protected void registerPackets() { - protocol.registerClientbound(ClientboundPackets1_9_3.SPAWN_ENTITY, new PacketHandlers() { - @Override - public void register() { - map(Type.VAR_INT); // 0 - Entity id - map(Type.UUID); // 1 - UUID - map(Type.BYTE); // 2 - Type - map(Type.DOUBLE); // 3 - x - map(Type.DOUBLE); // 4 - y - map(Type.DOUBLE); // 5 - z - map(Type.BYTE); // 6 - Pitch - map(Type.BYTE); // 7 - Yaw - map(Type.INT); // 8 - data - - // Track Entity - handler(getObjectTrackerHandler()); - handler(getObjectRewriter(id -> EntityTypes1_11.ObjectType.findById(id).orElse(null))); - } - }); - - registerTracker(ClientboundPackets1_9_3.SPAWN_EXPERIENCE_ORB, EntityTypes1_11.EntityType.EXPERIENCE_ORB); - registerTracker(ClientboundPackets1_9_3.SPAWN_GLOBAL_ENTITY, EntityTypes1_11.EntityType.WEATHER); - - protocol.registerClientbound(ClientboundPackets1_9_3.SPAWN_MOB, new PacketHandlers() { - @Override - public void register() { - map(Type.VAR_INT); // 0 - Entity id - map(Type.UUID); // 1 - UUID - map(Type.VAR_INT); // 2 - Entity Type - map(Type.DOUBLE); // 3 - X - map(Type.DOUBLE); // 4 - Y - map(Type.DOUBLE); // 5 - Z - map(Type.BYTE); // 6 - Yaw - map(Type.BYTE); // 7 - Pitch - map(Type.BYTE); // 8 - Head Pitch - map(Type.SHORT); // 9 - Velocity X - map(Type.SHORT); // 10 - Velocity Y - map(Type.SHORT); // 11 - Velocity Z - map(Types1_9.METADATA_LIST); // 12 - Metadata - - // Track entity - handler(getTrackerHandler()); - - // Rewrite entity type / metadata - handler(getMobSpawnRewriter1_11(Types1_9.METADATA_LIST)); - } - }); - - registerTracker(ClientboundPackets1_9_3.SPAWN_PAINTING, EntityTypes1_11.EntityType.PAINTING); - registerJoinGame(ClientboundPackets1_9_3.JOIN_GAME, EntityTypes1_11.EntityType.PLAYER); - registerRespawn(ClientboundPackets1_9_3.RESPAWN); - - protocol.registerClientbound(ClientboundPackets1_9_3.SPAWN_PLAYER, new PacketHandlers() { - @Override - public void register() { - map(Type.VAR_INT); // 0 - Entity ID - map(Type.UUID); // 1 - Player UUID - map(Type.DOUBLE); // 2 - X - map(Type.DOUBLE); // 3 - Y - map(Type.DOUBLE); // 4 - Z - map(Type.BYTE); // 5 - Yaw - map(Type.BYTE); // 6 - Pitch - map(Types1_9.METADATA_LIST); // 7 - Metadata list - - handler(getTrackerAndMetaHandler(Types1_9.METADATA_LIST, EntityTypes1_11.EntityType.PLAYER)); - } - }); - - registerRemoveEntities(ClientboundPackets1_9_3.DESTROY_ENTITIES); - registerMetadataRewriter(ClientboundPackets1_9_3.ENTITY_METADATA, Types1_9.METADATA_LIST); - } - - @Override - protected void registerRewrites() { - // Handle non-existing firework metadata (index 7 entity id for boosting) - filter().type(EntityTypes1_11.EntityType.FIREWORK).cancel(7); - - // Handle non-existing pig metadata (index 14 - boost time) - filter().type(EntityTypes1_11.EntityType.PIG).cancel(14); - } - - @Override - public EntityType typeFromId(int typeId) { - return EntityTypes1_11.getTypeFromId(typeId, false); - } - - @Override - public EntityType objectTypeFromId(int typeId) { - return EntityTypes1_11.getTypeFromId(typeId, true); - } -} diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_1to1_13_2/Protocol1_13_1To1_13_2.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_1to1_13_2/Protocol1_13_1To1_13_2.java deleted file mode 100644 index 76301247..00000000 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_1to1_13_2/Protocol1_13_1To1_13_2.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards - * Copyright (C) 2016-2024 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.viabackwards.protocol.protocol1_13_1to1_13_2; - -import com.viaversion.viabackwards.api.BackwardsProtocol; -import com.viaversion.viabackwards.protocol.protocol1_13_1to1_13_2.packets.EntityPackets1_13_2; -import com.viaversion.viabackwards.protocol.protocol1_13_1to1_13_2.packets.InventoryPackets1_13_2; -import com.viaversion.viabackwards.protocol.protocol1_13_1to1_13_2.packets.WorldPackets1_13_2; -import com.viaversion.viaversion.api.minecraft.item.Item; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; -import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ServerboundPackets1_13; - -public class Protocol1_13_1To1_13_2 extends BackwardsProtocol { - - public Protocol1_13_1To1_13_2() { - super(ClientboundPackets1_13.class, ClientboundPackets1_13.class, ServerboundPackets1_13.class, ServerboundPackets1_13.class); - } - - @Override - protected void registerPackets() { - InventoryPackets1_13_2.register(this); - WorldPackets1_13_2.register(this); - EntityPackets1_13_2.register(this); - - registerServerbound(ServerboundPackets1_13.EDIT_BOOK, new PacketHandlers() { - @Override - public void register() { - map(Type.ITEM1_13, Type.ITEM1_13_2); - } - }); - - registerClientbound(ClientboundPackets1_13.ADVANCEMENTS, wrapper -> { - wrapper.passthrough(Type.BOOLEAN); // Reset/clear - int size = wrapper.passthrough(Type.VAR_INT); // Mapping size - - for (int i = 0; i < size; i++) { - wrapper.passthrough(Type.STRING); // Identifier - wrapper.passthrough(Type.OPTIONAL_STRING); // Parent - - // Display data - if (wrapper.passthrough(Type.BOOLEAN)) { - wrapper.passthrough(Type.COMPONENT); // Title - wrapper.passthrough(Type.COMPONENT); // Description - Item icon = wrapper.read(Type.ITEM1_13_2); - wrapper.write(Type.ITEM1_13, icon); - wrapper.passthrough(Type.VAR_INT); // Frame type - int flags = wrapper.passthrough(Type.INT); // Flags - if ((flags & 1) != 0) - wrapper.passthrough(Type.STRING); // Background texture - wrapper.passthrough(Type.FLOAT); // X - wrapper.passthrough(Type.FLOAT); // Y - } - - wrapper.passthrough(Type.STRING_ARRAY); // Criteria - - int arrayLength = wrapper.passthrough(Type.VAR_INT); - for (int array = 0; array < arrayLength; array++) { - wrapper.passthrough(Type.STRING_ARRAY); // String array - } - } - }); - } -} diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_1to1_13_2/packets/EntityPackets1_13_2.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_1to1_13_2/packets/EntityPackets1_13_2.java deleted file mode 100644 index ba75bcce..00000000 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_1to1_13_2/packets/EntityPackets1_13_2.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards - * Copyright (C) 2016-2024 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.viabackwards.protocol.protocol1_13_1to1_13_2.packets; - -import com.viaversion.viabackwards.protocol.protocol1_13_1to1_13_2.Protocol1_13_1To1_13_2; -import com.viaversion.viaversion.api.minecraft.metadata.Metadata; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; -import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.api.type.types.version.Types1_13; -import com.viaversion.viaversion.api.type.types.version.Types1_13_2; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13; - -public class EntityPackets1_13_2 { - - - public static void register(Protocol1_13_1To1_13_2 protocol) { - protocol.registerClientbound(ClientboundPackets1_13.SPAWN_MOB, new PacketHandlers() { - @Override - public void register() { - map(Type.VAR_INT); // 0 - Entity ID - map(Type.UUID); // 1 - Entity UUID - map(Type.VAR_INT); // 2 - Entity Type - map(Type.DOUBLE); // 3 - X - map(Type.DOUBLE); // 4 - Y - map(Type.DOUBLE); // 5 - Z - map(Type.BYTE); // 6 - Yaw - map(Type.BYTE); // 7 - Pitch - map(Type.BYTE); // 8 - Head Pitch - map(Type.SHORT); // 9 - Velocity X - map(Type.SHORT); // 10 - Velocity Y - map(Type.SHORT); // 11 - Velocity Z - map(Types1_13_2.METADATA_LIST, Types1_13.METADATA_LIST); // 12 - Metadata - - handler(wrapper -> { - for (Metadata metadata : wrapper.get(Types1_13.METADATA_LIST, 0)) { - metadata.setMetaType(Types1_13.META_TYPES.byId(metadata.metaType().typeId())); - } - }); - } - }); - - protocol.registerClientbound(ClientboundPackets1_13.SPAWN_PLAYER, new PacketHandlers() { - @Override - public void register() { - map(Type.VAR_INT); // 0 - Entity ID - map(Type.UUID); // 1 - Player UUID - map(Type.DOUBLE); // 2 - X - map(Type.DOUBLE); // 3 - Y - map(Type.DOUBLE); // 4 - Z - map(Type.BYTE); // 5 - Yaw - map(Type.BYTE); // 6 - Pitch - map(Types1_13_2.METADATA_LIST, Types1_13.METADATA_LIST); // 7 - Metadata - - handler(wrapper -> { - for (Metadata metadata : wrapper.get(Types1_13.METADATA_LIST, 0)) { - metadata.setMetaType(Types1_13.META_TYPES.byId(metadata.metaType().typeId())); - } - }); - } - }); - - protocol.registerClientbound(ClientboundPackets1_13.ENTITY_METADATA, new PacketHandlers() { - @Override - public void register() { - map(Type.VAR_INT); // 0 - Entity ID - map(Types1_13_2.METADATA_LIST, Types1_13.METADATA_LIST); // 1 - Metadata list - - handler(wrapper -> { - for (Metadata metadata : wrapper.get(Types1_13.METADATA_LIST, 0)) { - metadata.setMetaType(Types1_13.META_TYPES.byId(metadata.metaType().typeId())); - } - }); - } - }); - } - -} diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_1to1_13_2/packets/InventoryPackets1_13_2.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_1to1_13_2/packets/InventoryPackets1_13_2.java deleted file mode 100644 index c7e719f5..00000000 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_1to1_13_2/packets/InventoryPackets1_13_2.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards - * Copyright (C) 2016-2024 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.viabackwards.protocol.protocol1_13_1to1_13_2.packets; - -import com.viaversion.viabackwards.protocol.protocol1_13_1to1_13_2.Protocol1_13_1To1_13_2; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; -import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ServerboundPackets1_13; - -public class InventoryPackets1_13_2 { - - public static void register(Protocol1_13_1To1_13_2 protocol) { - protocol.registerClientbound(ClientboundPackets1_13.SET_SLOT, new PacketHandlers() { - @Override - public void register() { - map(Type.UNSIGNED_BYTE); // 0 - Window ID - map(Type.SHORT); // 1 - Slot ID - map(Type.ITEM1_13_2, Type.ITEM1_13); // 2 - Slot Value - } - }); - - protocol.registerClientbound(ClientboundPackets1_13.WINDOW_ITEMS, new PacketHandlers() { - @Override - public void register() { - map(Type.UNSIGNED_BYTE); // 0 - Window ID - map(Type.ITEM1_13_2_SHORT_ARRAY, Type.ITEM1_13_SHORT_ARRAY); // 1 - Window Values - } - }); - - protocol.registerClientbound(ClientboundPackets1_13.PLUGIN_MESSAGE, new PacketHandlers() { - @Override - public void register() { - map(Type.STRING); // Channel - handler(wrapper -> { - String channel = wrapper.get(Type.STRING, 0); - if (channel.equals("minecraft:trader_list") || channel.equals("trader_list")) { - wrapper.passthrough(Type.INT); // Passthrough Window ID - - int size = wrapper.passthrough(Type.UNSIGNED_BYTE); - for (int i = 0; i < size; i++) { - // Input Item - wrapper.write(Type.ITEM1_13, wrapper.read(Type.ITEM1_13_2)); - // Output Item - wrapper.write(Type.ITEM1_13, wrapper.read(Type.ITEM1_13_2)); - - boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item - if (secondItem) { - wrapper.write(Type.ITEM1_13, wrapper.read(Type.ITEM1_13_2)); - } - - wrapper.passthrough(Type.BOOLEAN); // Trade disabled - wrapper.passthrough(Type.INT); // Number of tools uses - wrapper.passthrough(Type.INT); // Maximum number of trade uses - } - } - }); - } - }); - - protocol.registerClientbound(ClientboundPackets1_13.ENTITY_EQUIPMENT, new PacketHandlers() { - @Override - public void register() { - map(Type.VAR_INT); // 0 - Entity ID - map(Type.VAR_INT); // 1 - Slot ID - map(Type.ITEM1_13_2, Type.ITEM1_13); // 2 - Item - } - }); - - protocol.registerClientbound(ClientboundPackets1_13.DECLARE_RECIPES, wrapper -> { - int recipesNo = wrapper.passthrough(Type.VAR_INT); - for (int i = 0; i < recipesNo; i++) { - wrapper.passthrough(Type.STRING); // Id - String type = wrapper.passthrough(Type.STRING); - if (type.equals("crafting_shapeless")) { - wrapper.passthrough(Type.STRING); // Group - int ingredientsNo = wrapper.passthrough(Type.VAR_INT); - for (int i1 = 0; i1 < ingredientsNo; i1++) { - wrapper.write(Type.ITEM1_13_ARRAY, wrapper.read(Type.ITEM1_13_2_ARRAY)); - } - wrapper.write(Type.ITEM1_13, wrapper.read(Type.ITEM1_13_2)); - } else if (type.equals("crafting_shaped")) { - int ingredientsNo = wrapper.passthrough(Type.VAR_INT) * wrapper.passthrough(Type.VAR_INT); - wrapper.passthrough(Type.STRING); // Group - for (int i1 = 0; i1 < ingredientsNo; i1++) { - wrapper.write(Type.ITEM1_13_ARRAY, wrapper.read(Type.ITEM1_13_2_ARRAY)); - } - wrapper.write(Type.ITEM1_13, wrapper.read(Type.ITEM1_13_2)); - } else if (type.equals("smelting")) { - wrapper.passthrough(Type.STRING); // Group - // Ingredient start - wrapper.write(Type.ITEM1_13_ARRAY, wrapper.read(Type.ITEM1_13_2_ARRAY)); - // Ingredient end - wrapper.write(Type.ITEM1_13, wrapper.read(Type.ITEM1_13_2)); - wrapper.passthrough(Type.FLOAT); // EXP - wrapper.passthrough(Type.VAR_INT); // Cooking time - } - } - }); - - protocol.registerServerbound(ServerboundPackets1_13.CLICK_WINDOW, new PacketHandlers() { - @Override - public void register() { - map(Type.UNSIGNED_BYTE); // 0 - Window ID - map(Type.SHORT); // 1 - Slot - map(Type.BYTE); // 2 - Button - map(Type.SHORT); // 3 - Action number - map(Type.VAR_INT); // 4 - Mode - map(Type.ITEM1_13, Type.ITEM1_13_2); // 5 - Clicked Item - } - }); - - protocol.registerServerbound(ServerboundPackets1_13.CREATIVE_INVENTORY_ACTION, new PacketHandlers() { - @Override - public void register() { - map(Type.SHORT); // 0 - Slot - map(Type.ITEM1_13, Type.ITEM1_13_2); // 1 - Clicked Item - } - }); - } -} diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/packets/PlayerPackets1_14.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/packets/PlayerPackets1_14.java deleted file mode 100644 index 12812e53..00000000 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/packets/PlayerPackets1_14.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - * This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards - * Copyright (C) 2016-2024 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.viabackwards.protocol.protocol1_13_2to1_14.packets; - -import com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14; -import com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.storage.DifficultyStorage; -import com.viaversion.viaversion.api.minecraft.Position; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; -import com.viaversion.viaversion.api.rewriter.RewriterBase; -import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ServerboundPackets1_13; -import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPackets1_14; - -public class PlayerPackets1_14 extends RewriterBase { - - public PlayerPackets1_14(Protocol1_13_2To1_14 protocol) { - super(protocol); - } - - @Override - protected void registerPackets() { - protocol.registerClientbound(ClientboundPackets1_14.SERVER_DIFFICULTY, new PacketHandlers() { - @Override - public void register() { - map(Type.UNSIGNED_BYTE); - read(Type.BOOLEAN); // Locked - handler(wrapper -> { - byte difficulty = wrapper.get(Type.UNSIGNED_BYTE, 0).byteValue(); - wrapper.user().get(DifficultyStorage.class).setDifficulty(difficulty); - }); - } - }); - - protocol.registerClientbound(ClientboundPackets1_14.OPEN_SIGN_EDITOR, new PacketHandlers() { - @Override - public void register() { - map(Type.POSITION1_14, Type.POSITION1_8); - } - }); - protocol.registerServerbound(ServerboundPackets1_13.QUERY_BLOCK_NBT, new PacketHandlers() { - @Override - public void register() { - map(Type.VAR_INT); - map(Type.POSITION1_8, Type.POSITION1_14); - } - }); - protocol.registerServerbound(ServerboundPackets1_13.PLAYER_DIGGING, new PacketHandlers() { - @Override - public void register() { - map(Type.VAR_INT); // Action - map(Type.POSITION1_8, Type.POSITION1_14); // Position - } - }); - - protocol.registerServerbound(ServerboundPackets1_13.RECIPE_BOOK_DATA, new PacketHandlers() { - @Override - public void register() { - map(Type.VAR_INT); - handler(wrapper -> { - int type = wrapper.get(Type.VAR_INT, 0); - if (type == 0) { - wrapper.passthrough(Type.STRING); - } else if (type == 1) { - wrapper.passthrough(Type.BOOLEAN); // Crafting Recipe Book Open - wrapper.passthrough(Type.BOOLEAN); // Crafting Recipe Filter Active - wrapper.passthrough(Type.BOOLEAN); // Smelting Recipe Book Open - wrapper.passthrough(Type.BOOLEAN); // Smelting Recipe Filter Active - - // Blast furnace/smoker data - wrapper.write(Type.BOOLEAN, false); - wrapper.write(Type.BOOLEAN, false); - wrapper.write(Type.BOOLEAN, false); - wrapper.write(Type.BOOLEAN, false); - } - }); - } - }); - - protocol.registerServerbound(ServerboundPackets1_13.UPDATE_COMMAND_BLOCK, new PacketHandlers() { - @Override - public void register() { - map(Type.POSITION1_8, Type.POSITION1_14); - } - }); - protocol.registerServerbound(ServerboundPackets1_13.UPDATE_STRUCTURE_BLOCK, new PacketHandlers() { - @Override - public void register() { - map(Type.POSITION1_8, Type.POSITION1_14); - } - }); - protocol.registerServerbound(ServerboundPackets1_13.UPDATE_SIGN, new PacketHandlers() { - @Override - public void register() { - map(Type.POSITION1_8, Type.POSITION1_14); - } - }); - - protocol.registerServerbound(ServerboundPackets1_13.PLAYER_BLOCK_PLACEMENT, wrapper -> { - Position position = wrapper.read(Type.POSITION1_8); - int face = wrapper.read(Type.VAR_INT); - int hand = wrapper.read(Type.VAR_INT); - float x = wrapper.read(Type.FLOAT); - float y = wrapper.read(Type.FLOAT); - float z = wrapper.read(Type.FLOAT); - - wrapper.write(Type.VAR_INT, hand); - wrapper.write(Type.POSITION1_14, position); - wrapper.write(Type.VAR_INT, face); - wrapper.write(Type.FLOAT, x); - wrapper.write(Type.FLOAT, y); - wrapper.write(Type.FLOAT, z); - wrapper.write(Type.BOOLEAN, false); // Inside block - }); - } -} diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13to1_13_1/packets/InventoryPackets1_13_1.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13to1_13_1/packets/InventoryPackets1_13_1.java deleted file mode 100644 index c425c867..00000000 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13to1_13_1/packets/InventoryPackets1_13_1.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards - * Copyright (C) 2016-2024 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.viabackwards.protocol.protocol1_13to1_13_1.packets; - -import com.viaversion.viabackwards.protocol.protocol1_13to1_13_1.Protocol1_13To1_13_1; -import com.viaversion.viaversion.api.minecraft.item.Item; -import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ServerboundPackets1_13; -import com.viaversion.viaversion.rewriter.ItemRewriter; - -public class InventoryPackets1_13_1 extends ItemRewriter { - - public InventoryPackets1_13_1(Protocol1_13To1_13_1 protocol) { - super(protocol, Type.ITEM1_13, Type.ITEM1_13_SHORT_ARRAY); - } - - @Override - public void registerPackets() { - registerSetCooldown(ClientboundPackets1_13.COOLDOWN); - registerWindowItems(ClientboundPackets1_13.WINDOW_ITEMS); - registerSetSlot(ClientboundPackets1_13.SET_SLOT); - - protocol.registerClientbound(ClientboundPackets1_13.PLUGIN_MESSAGE, wrapper -> { - String channel = wrapper.passthrough(Type.STRING); - if (channel.equals("minecraft:trader_list")) { - wrapper.passthrough(Type.INT); //Passthrough Window ID - - int size = wrapper.passthrough(Type.UNSIGNED_BYTE); - for (int i = 0; i < size; i++) { - //Input Item - Item input = wrapper.passthrough(Type.ITEM1_13); - handleItemToClient(wrapper.user(), input); - //Output Item - Item output = wrapper.passthrough(Type.ITEM1_13); - handleItemToClient(wrapper.user(), output); - - boolean secondItem = wrapper.passthrough(Type.BOOLEAN); //Has second item - if (secondItem) { - //Second Item - Item second = wrapper.passthrough(Type.ITEM1_13); - handleItemToClient(wrapper.user(), second); - } - - wrapper.passthrough(Type.BOOLEAN); //Trade disabled - wrapper.passthrough(Type.INT); //Number of tools uses - wrapper.passthrough(Type.INT); //Maximum number of trade uses - } - } - }); - - registerEntityEquipment(ClientboundPackets1_13.ENTITY_EQUIPMENT); - registerClickWindow(ServerboundPackets1_13.CLICK_WINDOW); - registerCreativeInvAction(ServerboundPackets1_13.CREATIVE_INVENTORY_ACTION); - - registerSpawnParticle(ClientboundPackets1_13.SPAWN_PARTICLE, Type.FLOAT); - } -} diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_14_4to1_15/packets/EntityPackets1_15.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_14_4to1_15/packets/EntityPackets1_15.java deleted file mode 100644 index 5e0e3318..00000000 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_14_4to1_15/packets/EntityPackets1_15.java +++ /dev/null @@ -1,227 +0,0 @@ -/* - * This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards - * Copyright (C) 2016-2024 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.viabackwards.protocol.protocol1_14_4to1_15.packets; - -import com.viaversion.viabackwards.api.rewriters.EntityRewriter; -import com.viaversion.viabackwards.protocol.protocol1_14_4to1_15.Protocol1_14_4To1_15; -import com.viaversion.viabackwards.protocol.protocol1_14_4to1_15.data.EntityTypeMapping; -import com.viaversion.viabackwards.protocol.protocol1_14_4to1_15.data.ImmediateRespawn; -import com.viaversion.viaversion.api.minecraft.entities.EntityType; -import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_15; -import com.viaversion.viaversion.api.minecraft.metadata.Metadata; -import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; -import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.api.type.types.version.Types1_14; -import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ServerboundPackets1_14; -import com.viaversion.viaversion.protocols.protocol1_15to1_14_4.ClientboundPackets1_15; -import java.util.ArrayList; - -public class EntityPackets1_15 extends EntityRewriter { - - public EntityPackets1_15(Protocol1_14_4To1_15 protocol) { - super(protocol); - } - - @Override - protected void registerPackets() { - protocol.registerClientbound(ClientboundPackets1_15.UPDATE_HEALTH, wrapper -> { - float health = wrapper.passthrough(Type.FLOAT); - if (health > 0) return; - if (!wrapper.user().get(ImmediateRespawn.class).isImmediateRespawn()) return; - - // Instantly request respawn when 1.15 gamerule is set - PacketWrapper statusPacket = wrapper.create(ServerboundPackets1_14.CLIENT_STATUS); - statusPacket.write(Type.VAR_INT, 0); - statusPacket.sendToServer(Protocol1_14_4To1_15.class); - }); - - protocol.registerClientbound(ClientboundPackets1_15.GAME_EVENT, new PacketHandlers() { - @Override - public void register() { - map(Type.UNSIGNED_BYTE); - map(Type.FLOAT); - handler(wrapper -> { - if (wrapper.get(Type.UNSIGNED_BYTE, 0) == 11) { - wrapper.user().get(ImmediateRespawn.class).setImmediateRespawn(wrapper.get(Type.FLOAT, 0) == 1); - } - }); - } - }); - - registerTrackerWithData(ClientboundPackets1_15.SPAWN_ENTITY, EntityTypes1_15.FALLING_BLOCK); - - protocol.registerClientbound(ClientboundPackets1_15.SPAWN_MOB, new PacketHandlers() { - @Override - public void register() { - map(Type.VAR_INT); // 0 - Entity ID - map(Type.UUID); // 1 - Entity UUID - map(Type.VAR_INT); // 2 - Entity Type - map(Type.DOUBLE); // 3 - X - map(Type.DOUBLE); // 4 - Y - map(Type.DOUBLE); // 5 - Z - map(Type.BYTE); // 6 - Yaw - map(Type.BYTE); // 7 - Pitch - map(Type.BYTE); // 8 - Head Pitch - map(Type.SHORT); // 9 - Velocity X - map(Type.SHORT); // 10 - Velocity Y - map(Type.SHORT); // 11 - Velocity Z - handler(wrapper -> wrapper.write(Types1_14.METADATA_LIST, new ArrayList<>())); // Metadata is no longer sent in 1.15, so we have to send an empty one - - handler(wrapper -> { - int type = wrapper.get(Type.VAR_INT, 1); - EntityType entityType = EntityTypes1_15.getTypeFromId(type); - tracker(wrapper.user()).addEntity(wrapper.get(Type.VAR_INT, 0), entityType); - wrapper.set(Type.VAR_INT, 1, EntityTypeMapping.getOldEntityId(type)); - }); - } - }); - - protocol.registerClientbound(ClientboundPackets1_15.RESPAWN, new PacketHandlers() { - @Override - public void register() { - map(Type.INT); - read(Type.LONG); // Seed - } - }); - - protocol.registerClientbound(ClientboundPackets1_15.JOIN_GAME, new PacketHandlers() { - @Override - public void register() { - map(Type.INT); // 0 - Entity ID - map(Type.UNSIGNED_BYTE); // 1 - Gamemode - map(Type.INT); // 2 - Dimension - - read(Type.LONG); // Seed - - map(Type.UNSIGNED_BYTE); // 3 - Max Players - map(Type.STRING); // 4 - Level Type - map(Type.VAR_INT); // 5 - View Distance - map(Type.BOOLEAN); // 6 - Reduce Debug Info - - handler(getTrackerHandler(EntityTypes1_15.PLAYER, Type.INT)); - - handler(wrapper -> { - boolean immediateRespawn = !wrapper.read(Type.BOOLEAN); // Inverted - wrapper.user().get(ImmediateRespawn.class).setImmediateRespawn(immediateRespawn); - }); - } - }); - - registerTracker(ClientboundPackets1_15.SPAWN_EXPERIENCE_ORB, EntityTypes1_15.EXPERIENCE_ORB); - registerTracker(ClientboundPackets1_15.SPAWN_GLOBAL_ENTITY, EntityTypes1_15.LIGHTNING_BOLT); - registerTracker(ClientboundPackets1_15.SPAWN_PAINTING, EntityTypes1_15.PAINTING); - - protocol.registerClientbound(ClientboundPackets1_15.SPAWN_PLAYER, new PacketHandlers() { - @Override - public void register() { - map(Type.VAR_INT); // 0 - Entity ID - map(Type.UUID); // 1 - Player UUID - map(Type.DOUBLE); // 2 - X - map(Type.DOUBLE); // 3 - Y - map(Type.DOUBLE); // 4 - Z - map(Type.BYTE); // 5 - Yaw - map(Type.BYTE); // 6 - Pitch - handler(wrapper -> wrapper.write(Types1_14.METADATA_LIST, new ArrayList<>())); // Metadata is no longer sent in 1.15, so we have to send an empty one - - handler(getTrackerHandler(EntityTypes1_15.PLAYER, Type.VAR_INT)); - } - }); - - registerRemoveEntities(ClientboundPackets1_15.DESTROY_ENTITIES); - registerMetadataRewriter(ClientboundPackets1_15.ENTITY_METADATA, Types1_14.METADATA_LIST); - - // Attributes (get rid of generic.flyingSpeed for the Bee remap) - protocol.registerClientbound(ClientboundPackets1_15.ENTITY_PROPERTIES, new PacketHandlers() { - @Override - public void register() { - map(Type.VAR_INT); - map(Type.INT); - handler(wrapper -> { - int entityId = wrapper.get(Type.VAR_INT, 0); - EntityType entityType = tracker(wrapper.user()).entityType(entityId); - if (entityType != EntityTypes1_15.BEE) return; - - int size = wrapper.get(Type.INT, 0); - int newSize = size; - for (int i = 0; i < size; i++) { - String key = wrapper.read(Type.STRING); - if (key.equals("generic.flyingSpeed")) { - newSize--; - wrapper.read(Type.DOUBLE); - int modSize = wrapper.read(Type.VAR_INT); - for (int j = 0; j < modSize; j++) { - wrapper.read(Type.UUID); - wrapper.read(Type.DOUBLE); - wrapper.read(Type.BYTE); - } - } else { - wrapper.write(Type.STRING, key); - wrapper.passthrough(Type.DOUBLE); - int modSize = wrapper.passthrough(Type.VAR_INT); - for (int j = 0; j < modSize; j++) { - wrapper.passthrough(Type.UUID); - wrapper.passthrough(Type.DOUBLE); - wrapper.passthrough(Type.BYTE); - } - } - } - - if (newSize != size) { - wrapper.set(Type.INT, 0, newSize); - } - }); - } - }); - } - - @Override - protected void registerRewrites() { - registerMetaTypeHandler(Types1_14.META_TYPES.itemType, Types1_14.META_TYPES.blockStateType, null, Types1_14.META_TYPES.particleType, - Types1_14.META_TYPES.componentType, Types1_14.META_TYPES.optionalComponentType); - - filter().type(EntityTypes1_15.LIVINGENTITY).removeIndex(12); - - filter().type(EntityTypes1_15.BEE).cancel(15); - filter().type(EntityTypes1_15.BEE).cancel(16); - - mapEntityTypeWithData(EntityTypes1_15.BEE, EntityTypes1_15.PUFFERFISH).jsonName().spawnMetadata(storage -> { - storage.add(new Metadata(14, Types1_14.META_TYPES.booleanType, false)); - storage.add(new Metadata(15, Types1_14.META_TYPES.varIntType, 2)); - }); - - filter().type(EntityTypes1_15.ENDERMAN).cancel(16); - filter().type(EntityTypes1_15.TRIDENT).cancel(10); - - // Redundant health removed in 1.15 - filter().type(EntityTypes1_15.WOLF).addIndex(17); - filter().type(EntityTypes1_15.WOLF).index(8).handler((event, meta) -> { - event.createExtraMeta(new Metadata(17/*WOLF_HEALTH*/, Types1_14.META_TYPES.floatType, event.meta().value())); - }); - } - - @Override - public EntityType typeFromId(int typeId) { - return EntityTypes1_15.getTypeFromId(typeId); - } - - @Override - public int newEntityId(final int newId) { - return EntityTypeMapping.getOldEntityId(newId); - } -} diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_14to1_14_1/packets/EntityPackets1_14_1.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_14to1_14_1/packets/EntityPackets1_14_1.java deleted file mode 100644 index f99d0c66..00000000 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_14to1_14_1/packets/EntityPackets1_14_1.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards - * Copyright (C) 2016-2024 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.viabackwards.protocol.protocol1_14to1_14_1.packets; - -import com.viaversion.viabackwards.api.rewriters.LegacyEntityRewriter; -import com.viaversion.viabackwards.protocol.protocol1_14to1_14_1.Protocol1_14To1_14_1; -import com.viaversion.viaversion.api.minecraft.entities.EntityType; -import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_14; -import com.viaversion.viaversion.api.minecraft.metadata.Metadata; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; -import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.api.type.types.version.Types1_14; -import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPackets1_14; -import java.util.List; - -public class EntityPackets1_14_1 extends LegacyEntityRewriter { - - public EntityPackets1_14_1(Protocol1_14To1_14_1 protocol) { - super(protocol); - } - - @Override - protected void registerPackets() { - registerTracker(ClientboundPackets1_14.SPAWN_EXPERIENCE_ORB, EntityTypes1_14.EXPERIENCE_ORB); - registerTracker(ClientboundPackets1_14.SPAWN_GLOBAL_ENTITY, EntityTypes1_14.LIGHTNING_BOLT); - registerTracker(ClientboundPackets1_14.SPAWN_PAINTING, EntityTypes1_14.PAINTING); - registerTracker(ClientboundPackets1_14.SPAWN_PLAYER, EntityTypes1_14.PLAYER); - registerTracker(ClientboundPackets1_14.JOIN_GAME, EntityTypes1_14.PLAYER, Type.INT); - registerRemoveEntities(ClientboundPackets1_14.DESTROY_ENTITIES); - - protocol.registerClientbound(ClientboundPackets1_14.SPAWN_ENTITY, new PacketHandlers() { - @Override - public void register() { - map(Type.VAR_INT); // 0 - Entity id - map(Type.UUID); // 1 - UUID - map(Type.VAR_INT); // 2 - Type - - handler(getTrackerHandler()); - } - }); - - protocol.registerClientbound(ClientboundPackets1_14.SPAWN_MOB, new PacketHandlers() { - @Override - public void register() { - map(Type.VAR_INT); // 0 - Entity ID - map(Type.UUID); // 1 - Entity UUID - map(Type.VAR_INT); // 2 - Entity Type - map(Type.DOUBLE); // 3 - X - map(Type.DOUBLE); // 4 - Y - map(Type.DOUBLE); // 5 - Z - map(Type.BYTE); // 6 - Yaw - map(Type.BYTE); // 7 - Pitch - map(Type.BYTE); // 8 - Head Pitch - map(Type.SHORT); // 9 - Velocity X - map(Type.SHORT); // 10 - Velocity Y - map(Type.SHORT); // 11 - Velocity Z - map(Types1_14.METADATA_LIST); // 12 - Metadata - - handler(wrapper -> { - int entityId = wrapper.get(Type.VAR_INT, 0); - int type = wrapper.get(Type.VAR_INT, 1); - - // Register Type ID - tracker(wrapper.user()).addEntity(entityId, EntityTypes1_14.getTypeFromId(type)); - - List metadata = wrapper.get(Types1_14.METADATA_LIST, 0); - handleMetadata(entityId, metadata, wrapper.user()); - }); - } - }); - - // Entity Metadata - registerMetadataRewriter(ClientboundPackets1_14.ENTITY_METADATA, Types1_14.METADATA_LIST); - } - - @Override - protected void registerRewrites() { - filter().type(EntityTypes1_14.VILLAGER).cancel(15); - filter().type(EntityTypes1_14.VILLAGER).index(16).toIndex(15); - filter().type(EntityTypes1_14.WANDERING_TRADER).cancel(15); - } - - @Override - public EntityType typeFromId(int typeId) { - return EntityTypes1_14.getTypeFromId(typeId); - } -} diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_3to1_19_4/packets/BlockItemPackets1_19_4.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_3to1_19_4/packets/BlockItemPackets1_19_4.java deleted file mode 100644 index 515bc764..00000000 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_3to1_19_4/packets/BlockItemPackets1_19_4.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards - * Copyright (C) 2016-2024 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.viabackwards.protocol.protocol1_19_3to1_19_4.packets; - -import com.viaversion.viabackwards.api.rewriters.BackwardsItemRewriter; -import com.viaversion.viabackwards.protocol.protocol1_19_3to1_19_4.Protocol1_19_3To1_19_4; -import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; -import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_18; -import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.ServerboundPackets1_19_3; -import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.rewriter.RecipeRewriter1_19_3; -import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.ClientboundPackets1_19_4; -import com.viaversion.viaversion.rewriter.BlockRewriter; -import com.viaversion.viaversion.util.Key; - -public final class BlockItemPackets1_19_4 extends BackwardsItemRewriter { - - public BlockItemPackets1_19_4(final Protocol1_19_3To1_19_4 protocol) { - super(protocol, Type.ITEM1_13_2, Type.ITEM1_13_2_ARRAY); - } - - @Override - public void registerPackets() { - final BlockRewriter blockRewriter = BlockRewriter.for1_14(protocol); - blockRewriter.registerBlockAction(ClientboundPackets1_19_4.BLOCK_ACTION); - blockRewriter.registerBlockChange(ClientboundPackets1_19_4.BLOCK_CHANGE); - blockRewriter.registerVarLongMultiBlockChange(ClientboundPackets1_19_4.MULTI_BLOCK_CHANGE); - blockRewriter.registerEffect(ClientboundPackets1_19_4.EFFECT, 1010, 2001); - blockRewriter.registerChunkData1_19(ClientboundPackets1_19_4.CHUNK_DATA, ChunkType1_18::new); - blockRewriter.registerBlockEntityData(ClientboundPackets1_19_4.BLOCK_ENTITY_DATA); - - protocol.registerClientbound(ClientboundPackets1_19_4.OPEN_WINDOW, new PacketHandlers() { - @Override - public void register() { - map(Type.VAR_INT); // Container id - map(Type.VAR_INT); // Container type - map(Type.COMPONENT); // Title - handler(wrapper -> { - final int windowType = wrapper.get(Type.VAR_INT, 1); - if (windowType == 21) { // New smithing menu - wrapper.cancel(); - } else if (windowType > 21) { - wrapper.set(Type.VAR_INT, 1, windowType - 1); - } - - protocol.getTranslatableRewriter().processText(wrapper.user(), wrapper.get(Type.COMPONENT, 0)); - }); - } - }); - - registerSetCooldown(ClientboundPackets1_19_4.COOLDOWN); - registerWindowItems1_17_1(ClientboundPackets1_19_4.WINDOW_ITEMS); - registerSetSlot1_17_1(ClientboundPackets1_19_4.SET_SLOT); - registerAdvancements(ClientboundPackets1_19_4.ADVANCEMENTS); - registerEntityEquipmentArray(ClientboundPackets1_19_4.ENTITY_EQUIPMENT); - registerClickWindow1_17_1(ServerboundPackets1_19_3.CLICK_WINDOW); - registerTradeList1_19(ClientboundPackets1_19_4.TRADE_LIST); - registerCreativeInvAction(ServerboundPackets1_19_3.CREATIVE_INVENTORY_ACTION); - registerWindowPropertyEnchantmentHandler(ClientboundPackets1_19_4.WINDOW_PROPERTY); - registerSpawnParticle1_19(ClientboundPackets1_19_4.SPAWN_PARTICLE); - - final RecipeRewriter1_19_3 recipeRewriter = new RecipeRewriter1_19_3<>(protocol) { - @Override - public void handleCraftingShaped(final PacketWrapper wrapper) { - final int ingredients = wrapper.passthrough(Type.VAR_INT) * wrapper.passthrough(Type.VAR_INT); - wrapper.passthrough(Type.STRING); // Group - wrapper.passthrough(Type.VAR_INT); // Crafting book category - for (int i = 0; i < ingredients; i++) { - handleIngredient(wrapper); - } - rewrite(wrapper.user(), wrapper.passthrough(Type.ITEM1_13_2)); // Result - - // Remove notification boolean - wrapper.read(Type.BOOLEAN); - } - }; - protocol.registerClientbound(ClientboundPackets1_19_4.DECLARE_RECIPES, wrapper -> { - final int size = wrapper.passthrough(Type.VAR_INT); - int newSize = size; - for (int i = 0; i < size; i++) { - final String type = wrapper.read(Type.STRING); - final String cutType = Key.stripMinecraftNamespace(type); - if (cutType.equals("smithing_transform") || cutType.equals("smithing_trim")) { - newSize--; - wrapper.read(Type.STRING); // Recipe identifier - wrapper.read(Type.ITEM1_13_2_ARRAY); // Template - wrapper.read(Type.ITEM1_13_2_ARRAY); // Base - wrapper.read(Type.ITEM1_13_2_ARRAY); // Additions - if (cutType.equals("smithing_transform")) { - wrapper.read(Type.ITEM1_13_2); // Result - } - continue; - } else if (cutType.equals("crafting_decorated_pot")) { - newSize--; - wrapper.read(Type.STRING); // Recipe identifier - wrapper.read(Type.VAR_INT); // Crafting book category - continue; - } - - wrapper.write(Type.STRING, type); - wrapper.passthrough(Type.STRING); // Recipe Identifier - recipeRewriter.handleRecipeType(wrapper, cutType); - } - - wrapper.set(Type.VAR_INT, 0, newSize); - }); - } -} \ No newline at end of file diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_2to1_20_3/rewriter/BlockItemPacketRewriter1_20_3.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_2to1_20_3/rewriter/BlockItemPacketRewriter1_20_3.java deleted file mode 100644 index fdef3b42..00000000 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_2to1_20_3/rewriter/BlockItemPacketRewriter1_20_3.java +++ /dev/null @@ -1,160 +0,0 @@ -/* - * This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards - * Copyright (C) 2016-2024 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.viabackwards.protocol.protocol1_20_2to1_20_3.rewriter; - -import com.viaversion.viabackwards.ViaBackwards; -import com.viaversion.viabackwards.api.rewriters.BackwardsItemRewriter; -import com.viaversion.viabackwards.protocol.protocol1_20_2to1_20_3.Protocol1_20_2To1_20_3; -import com.viaversion.viaversion.api.data.ParticleMappings; -import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; -import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_20_2; -import com.viaversion.viaversion.api.type.types.version.Types1_20_3; -import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ServerboundPacket1_20_2; -import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ServerboundPackets1_20_2; -import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPacket1_20_3; -import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPackets1_20_3; -import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.rewriter.RecipeRewriter1_20_3; -import com.viaversion.viaversion.rewriter.BlockRewriter; - -public final class BlockItemPacketRewriter1_20_3 extends BackwardsItemRewriter { - - public BlockItemPacketRewriter1_20_3(final Protocol1_20_2To1_20_3 protocol) { - super(protocol, Type.ITEM1_20_2, Type.ITEM1_20_2_ARRAY); - } - - @Override - public void registerPackets() { - final BlockRewriter blockRewriter = BlockRewriter.for1_20_2(protocol); - blockRewriter.registerBlockAction(ClientboundPackets1_20_3.BLOCK_ACTION); - blockRewriter.registerBlockChange(ClientboundPackets1_20_3.BLOCK_CHANGE); - blockRewriter.registerVarLongMultiBlockChange1_20(ClientboundPackets1_20_3.MULTI_BLOCK_CHANGE); - blockRewriter.registerEffect(ClientboundPackets1_20_3.EFFECT, 1010, 2001); - blockRewriter.registerChunkData1_19(ClientboundPackets1_20_3.CHUNK_DATA, ChunkType1_20_2::new); - blockRewriter.registerBlockEntityData(ClientboundPackets1_20_3.BLOCK_ENTITY_DATA); - - registerSetCooldown(ClientboundPackets1_20_3.COOLDOWN); - registerWindowItems1_17_1(ClientboundPackets1_20_3.WINDOW_ITEMS); - registerSetSlot1_17_1(ClientboundPackets1_20_3.SET_SLOT); - registerEntityEquipmentArray(ClientboundPackets1_20_3.ENTITY_EQUIPMENT); - registerClickWindow1_17_1(ServerboundPackets1_20_2.CLICK_WINDOW); - registerTradeList1_19(ClientboundPackets1_20_3.TRADE_LIST); - registerCreativeInvAction(ServerboundPackets1_20_2.CREATIVE_INVENTORY_ACTION); - registerWindowPropertyEnchantmentHandler(ClientboundPackets1_20_3.WINDOW_PROPERTY); - - protocol.registerClientbound(ClientboundPackets1_20_3.SPAWN_PARTICLE, new PacketHandlers() { - @Override - public void register() { - map(Type.VAR_INT); // 0 - Particle ID - map(Type.BOOLEAN); // 1 - Long Distance - map(Type.DOUBLE); // 2 - X - map(Type.DOUBLE); // 3 - Y - map(Type.DOUBLE); // 4 - Z - map(Type.FLOAT); // 5 - Offset X - map(Type.FLOAT); // 6 - Offset Y - map(Type.FLOAT); // 7 - Offset Z - map(Type.FLOAT); // 8 - Particle Data - map(Type.INT); // 9 - Particle Count - handler(wrapper -> { - final int id = wrapper.get(Type.VAR_INT, 0); - final ParticleMappings particleMappings = protocol.getMappingData().getParticleMappings(); - if (id == particleMappings.id("vibration")) { - final int positionSourceType = wrapper.read(Type.VAR_INT); - if (positionSourceType == 0) { - wrapper.write(Type.STRING, "minecraft:block"); - } else if (positionSourceType == 1) { - wrapper.write(Type.STRING, "minecraft:entity"); - } else { - ViaBackwards.getPlatform().getLogger().warning("Unknown position source type: " + positionSourceType); - wrapper.cancel(); - } - } - }); - handler(getSpawnParticleHandler(Type.VAR_INT)); - } - }); - - new RecipeRewriter1_20_3<>(protocol) { - @Override - public void handleCraftingShaped(final PacketWrapper wrapper) { - // Move width and height up - final String group = wrapper.read(Type.STRING); - final int craftingBookCategory = wrapper.read(Type.VAR_INT); - - final int width = wrapper.passthrough(Type.VAR_INT); - final int height = wrapper.passthrough(Type.VAR_INT); - - wrapper.write(Type.STRING, group); - wrapper.write(Type.VAR_INT, craftingBookCategory); - - final int ingredients = height * width; - for (int i = 0; i < ingredients; i++) { - handleIngredient(wrapper); - } - rewrite(wrapper.user(), wrapper.passthrough(itemType())); // Result - wrapper.passthrough(Type.BOOLEAN); // Show notification - } - }.register(ClientboundPackets1_20_3.DECLARE_RECIPES); - - protocol.registerClientbound(ClientboundPackets1_20_3.EXPLOSION, wrapper -> { - wrapper.passthrough(Type.DOUBLE); // X - wrapper.passthrough(Type.DOUBLE); // Y - wrapper.passthrough(Type.DOUBLE); // Z - wrapper.passthrough(Type.FLOAT); // Power - - final int blocks = wrapper.read(Type.VAR_INT); - final byte[][] toBlow = new byte[blocks][3]; - for (int i = 0; i < blocks; i++) { - toBlow[i] = new byte[]{ - wrapper.read(Type.BYTE), // Relative X - wrapper.read(Type.BYTE), // Relative Y - wrapper.read(Type.BYTE) // Relative Z - }; - } - - final float knockbackX = wrapper.read(Type.FLOAT); // Knockback X - final float knockbackY = wrapper.read(Type.FLOAT); // Knockback Y - final float knockbackZ = wrapper.read(Type.FLOAT); // Knockback Z - - final int blockInteraction = wrapper.read(Type.VAR_INT); // Block interaction type - // 0 = keep, 1 = destroy, 2 = destroy_with_decay, 3 = trigger_block - if (blockInteraction == 1 || blockInteraction == 2) { - wrapper.write(Type.VAR_INT, blocks); - for (final byte[] relativeXYZ : toBlow) { - wrapper.write(Type.BYTE, relativeXYZ[0]); - wrapper.write(Type.BYTE, relativeXYZ[1]); - wrapper.write(Type.BYTE, relativeXYZ[2]); - } - } else { - // Explosion doesn't destroy blocks - wrapper.write(Type.VAR_INT, 0); - } - - wrapper.write(Type.FLOAT, knockbackX); - wrapper.write(Type.FLOAT, knockbackY); - wrapper.write(Type.FLOAT, knockbackZ); - - // TODO Probably needs handling - wrapper.read(Types1_20_3.PARTICLE); // Small explosion particle - wrapper.read(Types1_20_3.PARTICLE); // Large explosion particle - wrapper.read(Type.STRING); // Explosion sound - wrapper.read(Type.OPTIONAL_FLOAT); // Sound range - }); - } -} \ No newline at end of file diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20to1_20_2/rewriter/BlockItemPacketRewriter1_20_2.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20to1_20_2/rewriter/BlockItemPacketRewriter1_20_2.java deleted file mode 100644 index 098efe55..00000000 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20to1_20_2/rewriter/BlockItemPacketRewriter1_20_2.java +++ /dev/null @@ -1,415 +0,0 @@ -/* - * This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards - * Copyright (C) 2016-2024 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.viabackwards.protocol.protocol1_20to1_20_2.rewriter; - -import com.viaversion.viabackwards.api.rewriters.BackwardsItemRewriter; -import com.viaversion.viabackwards.protocol.protocol1_20to1_20_2.Protocol1_20To1_20_2; -import com.viaversion.viabackwards.protocol.protocol1_20to1_20_2.provider.AdvancementCriteriaProvider; -import com.viaversion.viaversion.api.Via; -import com.viaversion.viaversion.api.connection.UserConnection; -import com.viaversion.viaversion.api.data.ParticleMappings; -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.ChunkSection; -import com.viaversion.viaversion.api.minecraft.chunks.DataPalette; -import com.viaversion.viaversion.api.minecraft.chunks.PaletteType; -import com.viaversion.viaversion.api.minecraft.item.Item; -import com.viaversion.viaversion.api.minecraft.metadata.ChunkPosition; -import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; -import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_18; -import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_20_2; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.Tag; -import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.ServerboundPackets1_19_4; -import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ClientboundPackets1_20_2; -import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ServerboundPackets1_20_2; -import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.rewriter.RecipeRewriter1_20_2; -import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.util.PotionEffects1_20_2; -import com.viaversion.viaversion.rewriter.BlockRewriter; -import com.viaversion.viaversion.util.Key; -import com.viaversion.viaversion.util.MathUtil; -import org.checkerframework.checker.nullness.qual.Nullable; - -public final class BlockItemPacketRewriter1_20_2 extends BackwardsItemRewriter { - - public BlockItemPacketRewriter1_20_2(final Protocol1_20To1_20_2 protocol) { - super(protocol, Type.ITEM1_20_2, Type.ITEM1_20_2_ARRAY); - } - - @Override - public void registerPackets() { - final BlockRewriter blockRewriter = BlockRewriter.for1_14(protocol); - blockRewriter.registerBlockAction(ClientboundPackets1_20_2.BLOCK_ACTION); - blockRewriter.registerBlockChange(ClientboundPackets1_20_2.BLOCK_CHANGE); - blockRewriter.registerVarLongMultiBlockChange1_20(ClientboundPackets1_20_2.MULTI_BLOCK_CHANGE); - blockRewriter.registerEffect(ClientboundPackets1_20_2.EFFECT, 1010, 2001); - - protocol.cancelClientbound(ClientboundPackets1_20_2.CHUNK_BATCH_START); - protocol.registerClientbound(ClientboundPackets1_20_2.CHUNK_BATCH_FINISHED, null, wrapper -> { - wrapper.cancel(); - - final PacketWrapper receivedPacket = wrapper.create(ServerboundPackets1_20_2.CHUNK_BATCH_RECEIVED); - receivedPacket.write(Type.FLOAT, 500F); // Requested next batch size... arbitrary value here - receivedPacket.sendToServer(Protocol1_20To1_20_2.class); - }); - - protocol.registerClientbound(ClientboundPackets1_20_2.UNLOAD_CHUNK, wrapper -> { - final ChunkPosition chunkPosition = wrapper.read(Type.CHUNK_POSITION); - wrapper.write(Type.INT, chunkPosition.chunkX()); - wrapper.write(Type.INT, chunkPosition.chunkZ()); - }); - - protocol.registerClientbound(ClientboundPackets1_20_2.MAP_DATA, wrapper -> { - wrapper.passthrough(Type.VAR_INT); // Map id - wrapper.passthrough(Type.BYTE); // Scale - wrapper.passthrough(Type.BOOLEAN); // Locked - if (wrapper.passthrough(Type.BOOLEAN)) { - final int icons = wrapper.passthrough(Type.VAR_INT); - for (int i = 0; i < icons; i++) { - // Map new marker types to red marker - final int markerType = wrapper.read(Type.VAR_INT); - wrapper.write(Type.VAR_INT, markerType < 27 ? markerType : 2); - - wrapper.passthrough(Type.BYTE); // X - wrapper.passthrough(Type.BYTE); // Y - wrapper.passthrough(Type.BYTE); // Rotation - wrapper.passthrough(Type.OPTIONAL_COMPONENT); // Display name - } - } - }); - - protocol.registerClientbound(ClientboundPackets1_20_2.NBT_QUERY, wrapper -> { - wrapper.passthrough(Type.VAR_INT); // Transaction id - wrapper.write(Type.NAMED_COMPOUND_TAG, wrapper.read(Type.COMPOUND_TAG)); - }); - - protocol.registerClientbound(ClientboundPackets1_20_2.BLOCK_ENTITY_DATA, wrapper -> { - wrapper.passthrough(Type.POSITION1_14); // Position - wrapper.passthrough(Type.VAR_INT); // Type - wrapper.write(Type.NAMED_COMPOUND_TAG, handleBlockEntity(wrapper.read(Type.COMPOUND_TAG))); - }); - - protocol.registerClientbound(ClientboundPackets1_20_2.CHUNK_DATA, wrapper -> { - final EntityTracker tracker = protocol.getEntityRewriter().tracker(wrapper.user()); - final Type chunkType = new ChunkType1_20_2(tracker.currentWorldSectionHeight(), - MathUtil.ceilLog2(protocol.getMappingData().getBlockStateMappings().size()), - MathUtil.ceilLog2(tracker.biomesSent())); - final Chunk chunk = wrapper.read(chunkType); - - final Type newChunkType = new ChunkType1_18(tracker.currentWorldSectionHeight(), - MathUtil.ceilLog2(protocol.getMappingData().getBlockStateMappings().mappedSize()), - MathUtil.ceilLog2(tracker.biomesSent())); - wrapper.write(newChunkType, chunk); - - for (final ChunkSection section : chunk.getSections()) { - final DataPalette blockPalette = section.palette(PaletteType.BLOCKS); - for (int i = 0; i < blockPalette.size(); i++) { - final int id = blockPalette.idByIndex(i); - blockPalette.setIdByIndex(i, protocol.getMappingData().getNewBlockStateId(id)); - } - } - - for (final BlockEntity blockEntity : chunk.blockEntities()) { - handleBlockEntity(blockEntity.tag()); - } - }); - - protocol.registerServerbound(ServerboundPackets1_19_4.SET_BEACON_EFFECT, wrapper -> { - // Effects start at 1 before 1.20.2 - if (wrapper.passthrough(Type.BOOLEAN)) { // Primary effect - wrapper.write(Type.VAR_INT, wrapper.read(Type.VAR_INT) - 1); - } - if (wrapper.passthrough(Type.BOOLEAN)) { // Secondary effect - wrapper.write(Type.VAR_INT, wrapper.read(Type.VAR_INT) - 1); - } - }); - - // Replace the NBT type everywhere - protocol.registerClientbound(ClientboundPackets1_20_2.WINDOW_ITEMS, new PacketHandlers() { - @Override - public void register() { - map(Type.UNSIGNED_BYTE); // Window id - map(Type.VAR_INT); // State id - handler(wrapper -> { - final Item[] items = wrapper.read(Type.ITEM1_20_2_ARRAY); - for (final Item item : items) { - handleItemToClient(wrapper.user(), item); - } - - wrapper.write(Type.ITEM1_13_2_ARRAY, items); - wrapper.write(Type.ITEM1_13_2, handleItemToClient(wrapper.user(), wrapper.read(Type.ITEM1_20_2))); // Carried item - }); - } - }); - protocol.registerClientbound(ClientboundPackets1_20_2.SET_SLOT, new PacketHandlers() { - @Override - public void register() { - map(Type.UNSIGNED_BYTE); // Window id - map(Type.VAR_INT); // State id - map(Type.SHORT); // Slot id - handler(wrapper -> wrapper.write(Type.ITEM1_13_2, handleItemToClient(wrapper.user(), wrapper.read(Type.ITEM1_20_2)))); - } - }); - protocol.registerClientbound(ClientboundPackets1_20_2.ADVANCEMENTS, wrapper -> { - wrapper.passthrough(Type.BOOLEAN); // Reset/clear - final int size = wrapper.passthrough(Type.VAR_INT); - for (int i = 0; i < size; i++) { - final String advancement = wrapper.passthrough(Type.STRING); - wrapper.passthrough(Type.OPTIONAL_STRING); // Parent - - // Display data - if (wrapper.passthrough(Type.BOOLEAN)) { - wrapper.passthrough(Type.COMPONENT); // Title - wrapper.passthrough(Type.COMPONENT); // Description - wrapper.write(Type.ITEM1_13_2, handleItemToClient(wrapper.user(), wrapper.read(Type.ITEM1_20_2))); // Icon - wrapper.passthrough(Type.VAR_INT); // Frame type - final int flags = wrapper.passthrough(Type.INT); // Flags - if ((flags & 1) != 0) { - wrapper.passthrough(Type.STRING); // Background texture - } - wrapper.passthrough(Type.FLOAT); // X - wrapper.passthrough(Type.FLOAT); // Y - } - - final AdvancementCriteriaProvider criteriaProvider = Via.getManager().getProviders().get(AdvancementCriteriaProvider.class); - wrapper.write(Type.STRING_ARRAY, criteriaProvider.getCriteria(advancement)); - - final int requirements = wrapper.passthrough(Type.VAR_INT); - for (int array = 0; array < requirements; array++) { - wrapper.passthrough(Type.STRING_ARRAY); - } - - wrapper.passthrough(Type.BOOLEAN); // Send telemetry - } - }); - protocol.registerClientbound(ClientboundPackets1_20_2.ENTITY_EQUIPMENT, new PacketHandlers() { - @Override - public void register() { - map(Type.VAR_INT); // 0 - Entity ID - handler(wrapper -> { - byte slot; - do { - slot = wrapper.passthrough(Type.BYTE); - wrapper.write(Type.ITEM1_13_2, handleItemToClient(wrapper.user(), wrapper.read(Type.ITEM1_20_2))); - } while ((slot & 0xFFFFFF80) != 0); - }); - } - }); - protocol.registerServerbound(ServerboundPackets1_19_4.CLICK_WINDOW, new PacketHandlers() { - @Override - public void register() { - map(Type.UNSIGNED_BYTE); // Window Id - map(Type.VAR_INT); // State id - map(Type.SHORT); // Slot - map(Type.BYTE); // Button - map(Type.VAR_INT); // Mode - - handler(wrapper -> { - // Affected items - final int length = wrapper.passthrough(Type.VAR_INT); - for (int i = 0; i < length; i++) { - wrapper.passthrough(Type.SHORT); // Slot - wrapper.write(Type.ITEM1_20_2, handleItemToServer(wrapper.user(), wrapper.read(Type.ITEM1_13_2))); - } - - // Carried item - wrapper.write(Type.ITEM1_20_2, handleItemToServer(wrapper.user(), wrapper.read(Type.ITEM1_13_2))); - }); - } - }); - protocol.registerClientbound(ClientboundPackets1_20_2.TRADE_LIST, wrapper -> { - wrapper.passthrough(Type.VAR_INT); // Container id - final int size = wrapper.passthrough(Type.VAR_INT); - for (int i = 0; i < size; i++) { - wrapper.write(Type.ITEM1_13_2, handleItemToClient(wrapper.user(), wrapper.read(Type.ITEM1_20_2))); // Input - wrapper.write(Type.ITEM1_13_2, handleItemToClient(wrapper.user(), wrapper.read(Type.ITEM1_20_2))); // Output - wrapper.write(Type.ITEM1_13_2, handleItemToClient(wrapper.user(), wrapper.read(Type.ITEM1_20_2))); // Second Item - - wrapper.passthrough(Type.BOOLEAN); // Trade disabled - wrapper.passthrough(Type.INT); // Number of tools uses - wrapper.passthrough(Type.INT); // Maximum number of trade uses - wrapper.passthrough(Type.INT); // XP - wrapper.passthrough(Type.INT); // Special price - wrapper.passthrough(Type.FLOAT); // Price multiplier - wrapper.passthrough(Type.INT); // Demand - } - }); - protocol.registerServerbound(ServerboundPackets1_19_4.CREATIVE_INVENTORY_ACTION, new PacketHandlers() { - @Override - public void register() { - map(Type.SHORT); // 0 - Slot - handler(wrapper -> wrapper.write(Type.ITEM1_20_2, handleItemToServer(wrapper.user(), wrapper.read(Type.ITEM1_13_2)))); // 1 - Clicked Item - } - }); - protocol.registerClientbound(ClientboundPackets1_20_2.SPAWN_PARTICLE, new PacketHandlers() { - @Override - public void register() { - map(Type.VAR_INT); // 0 - Particle ID - map(Type.BOOLEAN); // 1 - Long Distance - map(Type.DOUBLE); // 2 - X - map(Type.DOUBLE); // 3 - Y - map(Type.DOUBLE); // 4 - Z - map(Type.FLOAT); // 5 - Offset X - map(Type.FLOAT); // 6 - Offset Y - map(Type.FLOAT); // 7 - Offset Z - map(Type.FLOAT); // 8 - Particle Data - map(Type.INT); // 9 - Particle Count - handler(wrapper -> { - final int id = wrapper.get(Type.VAR_INT, 0); - final ParticleMappings mappings = Protocol1_20To1_20_2.MAPPINGS.getParticleMappings(); - if (mappings.isBlockParticle(id)) { - final int data = wrapper.read(Type.VAR_INT); - wrapper.write(Type.VAR_INT, protocol.getMappingData().getNewBlockStateId(data)); - } else if (mappings.isItemParticle(id)) { - wrapper.write(Type.ITEM1_13_2, handleItemToClient(wrapper.user(), wrapper.read(Type.ITEM1_20_2))); - } - }); - } - }); - - new RecipeRewriter1_20_2<>(protocol) { - @Override - public void handleCraftingShapeless(final PacketWrapper wrapper) { - wrapper.passthrough(Type.STRING); // Group - wrapper.passthrough(Type.VAR_INT); // Crafting book category - handleIngredients(wrapper); - - final Item result = wrapper.read(itemType()); - rewrite(wrapper.user(), result); - wrapper.write(Type.ITEM1_13_2, result); - } - - @Override - public void handleSmelting(final PacketWrapper wrapper) { - wrapper.passthrough(Type.STRING); // Group - wrapper.passthrough(Type.VAR_INT); // Crafting book category - handleIngredient(wrapper); - - final Item result = wrapper.read(itemType()); - rewrite(wrapper.user(), result); - wrapper.write(Type.ITEM1_13_2, result); - - wrapper.passthrough(Type.FLOAT); // EXP - wrapper.passthrough(Type.VAR_INT); // Cooking time - } - - @Override - public void handleCraftingShaped(final PacketWrapper wrapper) { - final int ingredients = wrapper.passthrough(Type.VAR_INT) * wrapper.passthrough(Type.VAR_INT); - wrapper.passthrough(Type.STRING); // Group - wrapper.passthrough(Type.VAR_INT); // Crafting book category - for (int i = 0; i < ingredients; i++) { - handleIngredient(wrapper); - } - - final Item result = wrapper.read(itemType()); - rewrite(wrapper.user(), result); - wrapper.write(Type.ITEM1_13_2, result); - - wrapper.passthrough(Type.BOOLEAN); // Show notification - } - - @Override - public void handleStonecutting(final PacketWrapper wrapper) { - wrapper.passthrough(Type.STRING); // Group - handleIngredient(wrapper); - - final Item result = wrapper.read(itemType()); - rewrite(wrapper.user(), result); - wrapper.write(Type.ITEM1_13_2, result); - } - - @Override - public void handleSmithing(final PacketWrapper wrapper) { - handleIngredient(wrapper); // Base - handleIngredient(wrapper); // Addition - - final Item result = wrapper.read(itemType()); - rewrite(wrapper.user(), result); - wrapper.write(Type.ITEM1_13_2, result); - } - - @Override - public void handleSmithingTransform(final PacketWrapper wrapper) { - handleIngredient(wrapper); // Template - handleIngredient(wrapper); // Base - handleIngredient(wrapper); // Additions - - final Item result = wrapper.read(itemType()); - rewrite(wrapper.user(), result); - wrapper.write(Type.ITEM1_13_2, result); - } - - @Override - protected void handleIngredient(final PacketWrapper wrapper) { - final Item[] items = wrapper.read(itemArrayType()); - wrapper.write(Type.ITEM1_13_2_ARRAY, items); - for (final Item item : items) { - rewrite(wrapper.user(), item); - } - } - }.register(ClientboundPackets1_20_2.DECLARE_RECIPES); - } - - @Override - public @Nullable Item handleItemToClient(UserConnection connection, @Nullable final Item item) { - if (item == null) { - return null; - } - if (item.tag() != null) { - com.viaversion.viaversion.protocols.protocol1_20_2to1_20.rewriter.BlockItemPacketRewriter1_20_2.to1_20_1Effects(item); - } - - return super.handleItemToClient(connection, item); - } - - @Override - public @Nullable Item handleItemToServer(UserConnection connection, @Nullable final Item item) { - if (item == null) { - return null; - } - if (item.tag() != null) { - com.viaversion.viaversion.protocols.protocol1_20_2to1_20.rewriter.BlockItemPacketRewriter1_20_2.to1_20_2Effects(item); - } - - return super.handleItemToServer(connection, item); - } - - private @Nullable CompoundTag handleBlockEntity(@Nullable final CompoundTag tag) { - if (tag == null) { - return null; - } - - final Tag primaryEffect = tag.remove("primary_effect"); - if (primaryEffect instanceof StringTag) { - final String effectKey = Key.stripMinecraftNamespace(((StringTag) primaryEffect).getValue()); - tag.putInt("Primary", PotionEffects1_20_2.keyToId(effectKey) + 1); // Empty effect at 0 - } - - final Tag secondaryEffect = tag.remove("secondary_effect"); - if (secondaryEffect instanceof StringTag) { - final String effectKey = Key.stripMinecraftNamespace(((StringTag) secondaryEffect).getValue()); - tag.putInt("Secondary", PotionEffects1_20_2.keyToId(effectKey) + 1); // Empty effect at 0 - } - return tag; - } -} \ No newline at end of file diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20to1_20_2/rewriter/EntityPacketRewriter1_20_2.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20to1_20_2/rewriter/EntityPacketRewriter1_20_2.java deleted file mode 100644 index d14dfd65..00000000 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20to1_20_2/rewriter/EntityPacketRewriter1_20_2.java +++ /dev/null @@ -1,216 +0,0 @@ -/* - * This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards - * Copyright (C) 2016-2024 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.viabackwards.protocol.protocol1_20to1_20_2.rewriter; - -import com.viaversion.viabackwards.api.rewriters.EntityRewriter; -import com.viaversion.viabackwards.protocol.protocol1_20to1_20_2.Protocol1_20To1_20_2; -import com.viaversion.viabackwards.protocol.protocol1_20to1_20_2.storage.ConfigurationPacketStorage; -import com.viaversion.viaversion.api.minecraft.GlobalPosition; -import com.viaversion.viaversion.api.minecraft.entities.EntityType; -import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_19_4; -import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; -import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.api.type.types.version.Types1_20; -import com.viaversion.viaversion.api.type.types.version.Types1_20_2; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.ClientboundPackets1_19_4; -import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ClientboundPackets1_20_2; - -public final class EntityPacketRewriter1_20_2 extends EntityRewriter { - - public EntityPacketRewriter1_20_2(final Protocol1_20To1_20_2 protocol) { - super(protocol, Types1_20.META_TYPES.optionalComponentType, Types1_20.META_TYPES.booleanType); - } - - @Override - public void registerPackets() { - registerMetadataRewriter(ClientboundPackets1_20_2.ENTITY_METADATA, Types1_20_2.METADATA_LIST, Types1_20.METADATA_LIST); - registerRemoveEntities(ClientboundPackets1_20_2.REMOVE_ENTITIES); - - protocol.registerClientbound(ClientboundPackets1_20_2.SPAWN_ENTITY, new PacketHandlers() { - @Override - protected void register() { - handler(wrapper -> { - final int entityId = wrapper.passthrough(Type.VAR_INT); - - wrapper.passthrough(Type.UUID); // UUID - - final int entityType = wrapper.read(Type.VAR_INT); - tracker(wrapper.user()).addEntity(entityId, typeFromId(entityType)); - - if (entityType != EntityTypes1_19_4.PLAYER.getId()) { - wrapper.write(Type.VAR_INT, entityType); - - if (entityType == EntityTypes1_19_4.FALLING_BLOCK.getId()) { - wrapper.passthrough(Type.DOUBLE); // X - wrapper.passthrough(Type.DOUBLE); // Y - wrapper.passthrough(Type.DOUBLE); // Z - wrapper.passthrough(Type.BYTE); // Pitch - wrapper.passthrough(Type.BYTE); // Yaw - wrapper.passthrough(Type.BYTE); // Head yaw - final int blockState = wrapper.read(Type.VAR_INT); // Data - wrapper.write(Type.VAR_INT, protocol.getMappingData().getNewBlockStateId(blockState)); - } - return; - } - - // Map to spawn player packet - wrapper.setPacketType(ClientboundPackets1_19_4.SPAWN_PLAYER); - - wrapper.passthrough(Type.DOUBLE); // X - wrapper.passthrough(Type.DOUBLE); // Y - wrapper.passthrough(Type.DOUBLE); // Z - - final byte pitch = wrapper.read(Type.BYTE); - wrapper.passthrough(Type.BYTE); // Yaw - wrapper.write(Type.BYTE, pitch); - wrapper.read(Type.BYTE); // Head yaw - wrapper.read(Type.VAR_INT); // Data - - final short velocityX = wrapper.read(Type.SHORT); - final short velocityY = wrapper.read(Type.SHORT); - final short velocityZ = wrapper.read(Type.SHORT); - if (velocityX == 0 && velocityY == 0 && velocityZ == 0) { - return; - } - - // Follow up with velocity packet - wrapper.send(Protocol1_20To1_20_2.class); - wrapper.cancel(); - - final PacketWrapper velocityPacket = wrapper.create(ClientboundPackets1_19_4.ENTITY_VELOCITY); - velocityPacket.write(Type.VAR_INT, entityId); - velocityPacket.write(Type.SHORT, velocityX); - velocityPacket.write(Type.SHORT, velocityY); - velocityPacket.write(Type.SHORT, velocityZ); - velocityPacket.send(Protocol1_20To1_20_2.class); - }); - } - }); - - protocol.registerClientbound(ClientboundPackets1_20_2.JOIN_GAME, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - final ConfigurationPacketStorage configurationPacketStorage = wrapper.user().remove(ConfigurationPacketStorage.class); - wrapper.passthrough(Type.INT); // Entity id - wrapper.passthrough(Type.BOOLEAN); // Hardcore - - final String[] worlds = wrapper.read(Type.STRING_ARRAY); - final int maxPlayers = wrapper.read(Type.VAR_INT); - final int viewDistance = wrapper.read(Type.VAR_INT); - final int simulationDistance = wrapper.read(Type.VAR_INT); - final boolean reducedDebugInfo = wrapper.read(Type.BOOLEAN); - final boolean showRespawnScreen = wrapper.read(Type.BOOLEAN); - - wrapper.read(Type.BOOLEAN); // Limited crafting - - final String dimensionType = wrapper.read(Type.STRING); - final String world = wrapper.read(Type.STRING); - final long seed = wrapper.read(Type.LONG); - - wrapper.passthrough(Type.BYTE); // Gamemode - wrapper.passthrough(Type.BYTE); // Previous gamemode - - wrapper.write(Type.STRING_ARRAY, worlds); - wrapper.write(Type.NAMED_COMPOUND_TAG, configurationPacketStorage.registry()); - wrapper.write(Type.STRING, dimensionType); - wrapper.write(Type.STRING, world); - wrapper.write(Type.LONG, seed); - wrapper.write(Type.VAR_INT, maxPlayers); - wrapper.write(Type.VAR_INT, viewDistance); - wrapper.write(Type.VAR_INT, simulationDistance); - wrapper.write(Type.BOOLEAN, reducedDebugInfo); - wrapper.write(Type.BOOLEAN, showRespawnScreen); - - worldDataTrackerHandlerByKey().handle(wrapper); - - wrapper.send(Protocol1_20To1_20_2.class); - wrapper.cancel(); - - if (configurationPacketStorage.enabledFeatures() != null) { - final PacketWrapper featuresPacket = wrapper.create(ClientboundPackets1_19_4.UPDATE_ENABLED_FEATURES); - featuresPacket.write(Type.STRING_ARRAY, configurationPacketStorage.enabledFeatures()); - featuresPacket.send(Protocol1_20To1_20_2.class); - } - - configurationPacketStorage.sendQueuedPackets(wrapper.user()); - }); - } - }); - - protocol.registerClientbound(ClientboundPackets1_20_2.RESPAWN, new PacketHandlers() { - @Override - public void register() { - handler(wrapper -> { - wrapper.passthrough(Type.STRING); // Dimension type - wrapper.passthrough(Type.STRING); // World - wrapper.passthrough(Type.LONG); // Seed - wrapper.write(Type.UNSIGNED_BYTE, wrapper.read(Type.BYTE).shortValue()); // Gamemode - wrapper.passthrough(Type.BYTE); // Previous gamemode - wrapper.passthrough(Type.BOOLEAN); // Debug - wrapper.passthrough(Type.BOOLEAN); // Flat - - final GlobalPosition lastDeathPosition = wrapper.read(Type.OPTIONAL_GLOBAL_POSITION); - final int portalCooldown = wrapper.read(Type.VAR_INT); - - wrapper.passthrough(Type.BYTE); // Data to keep - - wrapper.write(Type.OPTIONAL_GLOBAL_POSITION, lastDeathPosition); - wrapper.write(Type.VAR_INT, portalCooldown); - }); - handler(worldDataTrackerHandlerByKey()); // Tracks world height and name for chunk data and entity (un)tracking - } - }); - - protocol.registerClientbound(ClientboundPackets1_20_2.ENTITY_EFFECT, wrapper -> { - wrapper.passthrough(Type.VAR_INT); // Entity id - wrapper.write(Type.VAR_INT, wrapper.read(Type.VAR_INT) + 1); // Effect id - wrapper.passthrough(Type.BYTE); // Amplifier - wrapper.passthrough(Type.VAR_INT); // Duration - wrapper.passthrough(Type.BYTE); // Flags - - final CompoundTag factorData = wrapper.read(Type.OPTIONAL_COMPOUND_TAG); - wrapper.write(Type.OPTIONAL_NAMED_COMPOUND_TAG, factorData); // Factor data - }); - - protocol.registerClientbound(ClientboundPackets1_20_2.REMOVE_ENTITY_EFFECT, wrapper -> { - wrapper.passthrough(Type.VAR_INT); // Entity id - wrapper.write(Type.VAR_INT, wrapper.read(Type.VAR_INT) + 1); // Effect id - }); - } - - @Override - protected void registerRewrites() { - filter().handler((event, meta) -> meta.setMetaType(Types1_20.META_TYPES.byId(meta.metaType().typeId()))); - registerMetaTypeHandler(Types1_20.META_TYPES.itemType, Types1_20.META_TYPES.blockStateType, Types1_20.META_TYPES.optionalBlockStateType, Types1_20.META_TYPES.particleType, null, null); - - filter().type(EntityTypes1_19_4.DISPLAY).removeIndex(10); - - filter().type(EntityTypes1_19_4.MINECART_ABSTRACT).index(11).handler((event, meta) -> { - final int blockState = meta.value(); - meta.setValue(protocol.getMappingData().getNewBlockStateId(blockState)); - }); - } - - @Override - public EntityType typeFromId(final int type) { - return EntityTypes1_19_4.getTypeFromId(type); - } -} diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_9_4to1_10/packets/BlockItemPackets1_10.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_9_4to1_10/packets/BlockItemPackets1_10.java deleted file mode 100644 index 4f4fc423..00000000 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_9_4to1_10/packets/BlockItemPackets1_10.java +++ /dev/null @@ -1,119 +0,0 @@ -/* - * This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards - * Copyright (C) 2016-2024 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.viabackwards.protocol.protocol1_9_4to1_10.packets; - -import com.viaversion.viabackwards.api.rewriters.LegacyBlockItemRewriter; -import com.viaversion.viabackwards.protocol.protocol1_9_4to1_10.Protocol1_9_4To1_10; -import com.viaversion.viaversion.api.minecraft.BlockChangeRecord; -import com.viaversion.viaversion.api.minecraft.ClientWorld; -import com.viaversion.viaversion.api.minecraft.chunks.Chunk; -import com.viaversion.viaversion.api.minecraft.item.Item; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; -import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_9_3; -import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ClientboundPackets1_9_3; -import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ServerboundPackets1_9_3; - -public class BlockItemPackets1_10 extends LegacyBlockItemRewriter { - - public BlockItemPackets1_10(Protocol1_9_4To1_10 protocol) { - super(protocol, "1.10"); - } - - @Override - protected void registerPackets() { - registerBlockChange(ClientboundPackets1_9_3.BLOCK_CHANGE); - registerMultiBlockChange(ClientboundPackets1_9_3.MULTI_BLOCK_CHANGE); - - registerSetSlot(ClientboundPackets1_9_3.SET_SLOT); - registerWindowItems(ClientboundPackets1_9_3.WINDOW_ITEMS); - - registerEntityEquipment(ClientboundPackets1_9_3.ENTITY_EQUIPMENT); - - protocol.registerClientbound(ClientboundPackets1_9_3.PLUGIN_MESSAGE, new PacketHandlers() { - @Override - public void register() { - map(Type.STRING); // 0 - Channel - - handler(wrapper -> { - if (wrapper.get(Type.STRING, 0).equals("MC|TrList")) { - wrapper.passthrough(Type.INT); // Passthrough Window ID - - int size = wrapper.passthrough(Type.UNSIGNED_BYTE); - for (int i = 0; i < size; i++) { - wrapper.write(Type.ITEM1_8, handleItemToClient(wrapper.user(), wrapper.read(Type.ITEM1_8))); // Input Item - wrapper.write(Type.ITEM1_8, handleItemToClient(wrapper.user(), wrapper.read(Type.ITEM1_8))); // Output Item - - boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item - if (secondItem) { - wrapper.write(Type.ITEM1_8, handleItemToClient(wrapper.user(), wrapper.read(Type.ITEM1_8))); // Second Item - } - - wrapper.passthrough(Type.BOOLEAN); // Trade disabled - wrapper.passthrough(Type.INT); // Number of tools uses - wrapper.passthrough(Type.INT); // Maximum number of trade uses - } - } - }); - } - }); - - registerClickWindow(ServerboundPackets1_9_3.CLICK_WINDOW); - registerCreativeInvAction(ServerboundPackets1_9_3.CREATIVE_INVENTORY_ACTION); - - protocol.registerClientbound(ClientboundPackets1_9_3.CHUNK_DATA, wrapper -> { - ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); - - ChunkType1_9_3 type = ChunkType1_9_3.forEnvironment(clientWorld.getEnvironment()); - Chunk chunk = wrapper.passthrough(type); - - handleChunk(chunk); - }); - - // Rewrite metadata items - protocol.getEntityRewriter().filter().handler((event, meta) -> { - if (meta.metaType().type().equals(Type.ITEM1_8)) // Is Item - meta.setValue(handleItemToClient(event.user(), (Item) meta.getValue())); - }); - - // Particle - protocol.registerClientbound(ClientboundPackets1_9_3.SPAWN_PARTICLE, new PacketHandlers() { - @Override - public void register() { - map(Type.INT); - map(Type.BOOLEAN); - map(Type.FLOAT); - map(Type.FLOAT); - map(Type.FLOAT); - map(Type.FLOAT); - map(Type.FLOAT); - map(Type.FLOAT); - map(Type.FLOAT); - map(Type.INT); - - handler(wrapper -> { - int id = wrapper.get(Type.INT, 0); - if (id == 46) { // new falling_dust - wrapper.set(Type.INT, 0, 38); // -> block_dust - } - }); - } - }); - } -} diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_9_4to1_10/packets/EntityPackets1_10.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_9_4to1_10/packets/EntityPackets1_10.java deleted file mode 100644 index e1d3730e..00000000 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_9_4to1_10/packets/EntityPackets1_10.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards - * Copyright (C) 2016-2024 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.viabackwards.protocol.protocol1_9_4to1_10.packets; - -import com.viaversion.viabackwards.api.entities.storage.EntityData; -import com.viaversion.viabackwards.api.entities.storage.WrappedMetadata; -import com.viaversion.viabackwards.api.rewriters.LegacyEntityRewriter; -import com.viaversion.viabackwards.protocol.protocol1_9_4to1_10.Protocol1_9_4To1_10; -import com.viaversion.viaversion.api.minecraft.entities.EntityType; -import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_10; -import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_11; -import com.viaversion.viaversion.api.minecraft.metadata.Metadata; -import com.viaversion.viaversion.api.minecraft.metadata.types.MetaType1_9; -import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; -import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.api.type.types.version.Types1_9; -import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ClientboundPackets1_9_3; -import java.util.List; - -public class EntityPackets1_10 extends LegacyEntityRewriter { - - public EntityPackets1_10(Protocol1_9_4To1_10 protocol) { - super(protocol); - } - - @Override - protected void registerPackets() { - protocol.registerClientbound(ClientboundPackets1_9_3.SPAWN_ENTITY, new PacketHandlers() { - @Override - public void register() { - map(Type.VAR_INT); // 0 - Entity id - map(Type.UUID); // 1 - UUID - map(Type.BYTE); // 2 - Type - map(Type.DOUBLE); // 3 - x - map(Type.DOUBLE); // 4 - y - map(Type.DOUBLE); // 5 - z - map(Type.BYTE); // 6 - Pitch - map(Type.BYTE); // 7 - Yaw - map(Type.INT); // 8 - data - - // Track Entity - handler(getObjectTrackerHandler()); - handler(getObjectRewriter(id -> EntityTypes1_11.ObjectType.findById(id).orElse(null))); - - handler(protocol.getItemRewriter().getFallingBlockHandler()); - } - }); - - registerTracker(ClientboundPackets1_9_3.SPAWN_EXPERIENCE_ORB, EntityTypes1_10.EntityType.EXPERIENCE_ORB); - registerTracker(ClientboundPackets1_9_3.SPAWN_GLOBAL_ENTITY, EntityTypes1_10.EntityType.WEATHER); - - protocol.registerClientbound(ClientboundPackets1_9_3.SPAWN_MOB, new PacketHandlers() { - @Override - public void register() { - map(Type.VAR_INT); // 0 - Entity id - map(Type.UUID); // 1 - UUID - map(Type.UNSIGNED_BYTE); // 2 - Entity Type - map(Type.DOUBLE); // 3 - X - map(Type.DOUBLE); // 4 - Y - map(Type.DOUBLE); // 5 - Z - map(Type.BYTE); // 6 - Yaw - map(Type.BYTE); // 7 - Pitch - map(Type.BYTE); // 8 - Head Pitch - map(Type.SHORT); // 9 - Velocity X - map(Type.SHORT); // 10 - Velocity Y - map(Type.SHORT); // 11 - Velocity Z - map(Types1_9.METADATA_LIST); // 12 - Metadata - - // Track entity - handler(getTrackerHandler(Type.UNSIGNED_BYTE, 0)); - - // Rewrite entity type / metadata - handler(wrapper -> { - int entityId = wrapper.get(Type.VAR_INT, 0); - EntityType type = tracker(wrapper.user()).entityType(entityId); - - List metadata = wrapper.get(Types1_9.METADATA_LIST, 0); - handleMetadata(wrapper.get(Type.VAR_INT, 0), metadata, wrapper.user()); - - EntityData entityData = entityDataForType(type); - if (entityData != null) { - WrappedMetadata storage = new WrappedMetadata(metadata); - wrapper.set(Type.UNSIGNED_BYTE, 0, (short) entityData.replacementId()); - if (entityData.hasBaseMeta()) - entityData.defaultMeta().createMeta(storage); - } - }); - - } - }); - - registerTracker(ClientboundPackets1_9_3.SPAWN_PAINTING, EntityTypes1_10.EntityType.PAINTING); - registerJoinGame(ClientboundPackets1_9_3.JOIN_GAME, EntityTypes1_10.EntityType.PLAYER); - registerRespawn(ClientboundPackets1_9_3.RESPAWN); - - protocol.registerClientbound(ClientboundPackets1_9_3.SPAWN_PLAYER, new PacketHandlers() { - @Override - public void register() { - map(Type.VAR_INT); // 0 - Entity ID - map(Type.UUID); // 1 - Player UUID - map(Type.DOUBLE); // 2 - X - map(Type.DOUBLE); // 3 - Y - map(Type.DOUBLE); // 4 - Z - map(Type.BYTE); // 5 - Yaw - map(Type.BYTE); // 6 - Pitch - map(Types1_9.METADATA_LIST); // 7 - Metadata list - - handler(getTrackerAndMetaHandler(Types1_9.METADATA_LIST, EntityTypes1_11.EntityType.PLAYER)); - } - }); - - registerRemoveEntities(ClientboundPackets1_9_3.DESTROY_ENTITIES); - registerMetadataRewriter(ClientboundPackets1_9_3.ENTITY_METADATA, Types1_9.METADATA_LIST); - } - - @Override - protected void registerRewrites() { - mapEntityTypeWithData(EntityTypes1_10.EntityType.POLAR_BEAR, EntityTypes1_10.EntityType.SHEEP).plainName(); - - // Change the sheep color when the polar bear is standing up (index 13 -> Standing up) - filter().type(EntityTypes1_10.EntityType.POLAR_BEAR).index(13).handler((event, meta) -> { - boolean b = (boolean) meta.getValue(); - - meta.setTypeAndValue(MetaType1_9.Byte, b ? (byte) (14 & 0x0F) : (byte) (0)); - }); - - - // Handle husk (index 13 -> Zombie Type) - filter().type(EntityTypes1_10.EntityType.ZOMBIE).index(13).handler((event, meta) -> { - if ((int) meta.getValue() == 6) { // Is type Husk - meta.setValue(0); - } - }); - - // Handle Stray (index 12 -> Skeleton Type) - filter().type(EntityTypes1_10.EntityType.SKELETON).index(12).handler((event, meta) -> { - if ((int) meta.getValue() == 2) { - meta.setValue(0); // Change to default skeleton - } - }); - - // Handle the missing NoGravity tag for every metadata - filter().removeIndex(5); - } - - @Override - public EntityType typeFromId(int typeId) { - return EntityTypes1_10.getTypeFromId(typeId, false); - } - - @Override - public EntityType objectTypeFromId(int typeId) { - return EntityTypes1_10.getTypeFromId(typeId, true); - } -} diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_9_4to1_10/Protocol1_9_4To1_10.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_10to1_9_3/Protocol1_10To1_9_3.java similarity index 60% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_9_4to1_10/Protocol1_9_4To1_10.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_10to1_9_3/Protocol1_10To1_9_3.java index 9704986c..2b018609 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_9_4to1_10/Protocol1_9_4To1_10.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_10to1_9_3/Protocol1_10To1_9_3.java @@ -16,36 +16,36 @@ * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_9_4to1_10; +package com.viaversion.viabackwards.protocol.v1_10to1_9_3; import com.viaversion.viabackwards.api.BackwardsProtocol; -import com.viaversion.viabackwards.api.data.BackwardsMappings; +import com.viaversion.viabackwards.api.data.BackwardsMappingData; import com.viaversion.viabackwards.api.rewriters.SoundRewriter; -import com.viaversion.viabackwards.protocol.protocol1_9_4to1_10.packets.BlockItemPackets1_10; -import com.viaversion.viabackwards.protocol.protocol1_9_4to1_10.packets.EntityPackets1_10; +import com.viaversion.viabackwards.protocol.v1_10to1_9_3.rewriter.BlockItemPacketRewriter1_10; +import com.viaversion.viabackwards.protocol.v1_10to1_9_3.rewriter.EntityPacketRewriter1_10; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.ClientWorld; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_10; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.protocol.remapper.ValueTransformer; -import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.data.entity.EntityTrackerBase; -import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ClientboundPackets1_9_3; -import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ServerboundPackets1_9_3; +import com.viaversion.viaversion.protocols.v1_9_1to1_9_3.packet.ClientboundPackets1_9_3; +import com.viaversion.viaversion.protocols.v1_9_1to1_9_3.packet.ServerboundPackets1_9_3; -public class Protocol1_9_4To1_10 extends BackwardsProtocol { +public class Protocol1_10To1_9_3 extends BackwardsProtocol { - public static final BackwardsMappings MAPPINGS = new BackwardsMappings("1.10", "1.9.4"); - private static final ValueTransformer TO_OLD_PITCH = new ValueTransformer<>(Type.UNSIGNED_BYTE) { + public static final BackwardsMappingData MAPPINGS = new BackwardsMappingData("1.10", "1.9.4"); + private static final ValueTransformer TO_OLD_PITCH = new ValueTransformer<>(Types.UNSIGNED_BYTE) { public Short transform(PacketWrapper packetWrapper, Float inputValue) { return (short) Math.round(inputValue * 63.5F); } }; - private final EntityPackets1_10 entityPackets = new EntityPackets1_10(this); - private final BlockItemPackets1_10 blockItemPackets = new BlockItemPackets1_10(this); + private final EntityPacketRewriter1_10 entityPackets = new EntityPacketRewriter1_10(this); + private final BlockItemPacketRewriter1_10 blockItemPackets = new BlockItemPacketRewriter1_10(this); - public Protocol1_9_4To1_10() { + public Protocol1_10To1_9_3() { super(ClientboundPackets1_9_3.class, ClientboundPackets1_9_3.class, ServerboundPackets1_9_3.class, ServerboundPackets1_9_3.class); } @@ -55,38 +55,38 @@ public class Protocol1_9_4To1_10 extends BackwardsProtocol soundRewriter = new SoundRewriter<>(this); - registerClientbound(ClientboundPackets1_9_3.NAMED_SOUND, new PacketHandlers() { + registerClientbound(ClientboundPackets1_9_3.CUSTOM_SOUND, new PacketHandlers() { @Override public void register() { - map(Type.STRING); // 0 - Sound name - map(Type.VAR_INT); // 1 - Sound Category - map(Type.INT); // 2 - x - map(Type.INT); // 3 - y - map(Type.INT); // 4 - z - map(Type.FLOAT); // 5 - Volume - map(Type.FLOAT, TO_OLD_PITCH); // 6 - Pitch + map(Types.STRING); // 0 - Sound name + map(Types.VAR_INT); // 1 - Sound Category + map(Types.INT); // 2 - x + map(Types.INT); // 3 - y + map(Types.INT); // 4 - z + map(Types.FLOAT); // 5 - Volume + map(Types.FLOAT, TO_OLD_PITCH); // 6 - Pitch handler(soundRewriter.getNamedSoundHandler()); } }); registerClientbound(ClientboundPackets1_9_3.SOUND, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); // 0 - Sound name - map(Type.VAR_INT); // 1 - Sound Category - map(Type.INT); // 2 - x - map(Type.INT); // 3 - y - map(Type.INT); // 4 - z - map(Type.FLOAT); // 5 - Volume - map(Type.FLOAT, TO_OLD_PITCH); // 6 - Pitch + map(Types.VAR_INT); // 0 - Sound name + map(Types.VAR_INT); // 1 - Sound Category + map(Types.INT); // 2 - x + map(Types.INT); // 3 - y + map(Types.INT); // 4 - z + map(Types.FLOAT); // 5 - Volume + map(Types.FLOAT, TO_OLD_PITCH); // 6 - Pitch handler(soundRewriter.getSoundHandler()); } }); - registerServerbound(ServerboundPackets1_9_3.RESOURCE_PACK_STATUS, new PacketHandlers() { + registerServerbound(ServerboundPackets1_9_3.RESOURCE_PACK, new PacketHandlers() { @Override public void register() { - read(Type.STRING); // 0 - Hash - map(Type.VAR_INT); // 1 - Result + read(Types.STRING); // 0 - Hash + map(Types.VAR_INT); // 1 - Result } }); } @@ -101,17 +101,17 @@ public class Protocol1_9_4To1_10 extends BackwardsProtocol. + */ + +package com.viaversion.viabackwards.protocol.v1_10to1_9_3.rewriter; + +import com.viaversion.viabackwards.api.rewriters.LegacyBlockItemRewriter; +import com.viaversion.viabackwards.protocol.v1_10to1_9_3.Protocol1_10To1_9_3; +import com.viaversion.viaversion.api.minecraft.BlockChangeRecord; +import com.viaversion.viaversion.api.minecraft.ClientWorld; +import com.viaversion.viaversion.api.minecraft.chunks.Chunk; +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_9_3; +import com.viaversion.viaversion.protocols.v1_9_1to1_9_3.packet.ClientboundPackets1_9_3; +import com.viaversion.viaversion.protocols.v1_9_1to1_9_3.packet.ServerboundPackets1_9_3; + +public class BlockItemPacketRewriter1_10 extends LegacyBlockItemRewriter { + + public BlockItemPacketRewriter1_10(Protocol1_10To1_9_3 protocol) { + super(protocol, "1.10"); + } + + @Override + protected void registerPackets() { + registerBlockChange(ClientboundPackets1_9_3.BLOCK_UPDATE); + registerMultiBlockChange(ClientboundPackets1_9_3.CHUNK_BLOCKS_UPDATE); + + registerSetSlot(ClientboundPackets1_9_3.CONTAINER_SET_SLOT); + registerSetContent(ClientboundPackets1_9_3.CONTAINER_SET_CONTENT); + + registerSetEquippedItem(ClientboundPackets1_9_3.SET_EQUIPPED_ITEM); + + protocol.registerClientbound(ClientboundPackets1_9_3.CUSTOM_PAYLOAD, new PacketHandlers() { + @Override + public void register() { + map(Types.STRING); // 0 - Channel + + handler(wrapper -> { + if (wrapper.get(Types.STRING, 0).equals("MC|TrList")) { + wrapper.passthrough(Types.INT); // Passthrough Window ID + + int size = wrapper.passthrough(Types.UNSIGNED_BYTE); + for (int i = 0; i < size; i++) { + wrapper.write(Types.ITEM1_8, handleItemToClient(wrapper.user(), wrapper.read(Types.ITEM1_8))); // Input Item + wrapper.write(Types.ITEM1_8, handleItemToClient(wrapper.user(), wrapper.read(Types.ITEM1_8))); // Output Item + + boolean secondItem = wrapper.passthrough(Types.BOOLEAN); // Has second item + if (secondItem) { + wrapper.write(Types.ITEM1_8, handleItemToClient(wrapper.user(), wrapper.read(Types.ITEM1_8))); // Second Item + } + + wrapper.passthrough(Types.BOOLEAN); // Trade disabled + wrapper.passthrough(Types.INT); // Number of tools uses + wrapper.passthrough(Types.INT); // Maximum number of trade uses + } + } + }); + } + }); + + registerContainerClick(ServerboundPackets1_9_3.CONTAINER_CLICK); + registerSetCreativeModeSlot(ServerboundPackets1_9_3.SET_CREATIVE_MODE_SLOT); + + protocol.registerClientbound(ClientboundPackets1_9_3.LEVEL_CHUNK, wrapper -> { + ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); + + ChunkType1_9_3 type = ChunkType1_9_3.forEnvironment(clientWorld.getEnvironment()); + Chunk chunk = wrapper.passthrough(type); + + handleChunk(chunk); + }); + + // Rewrite metadata items + protocol.getEntityRewriter().filter().handler((event, meta) -> { + if (meta.dataType().type().equals(Types.ITEM1_8)) // Is Item + meta.setValue(handleItemToClient(event.user(), (Item) meta.getValue())); + }); + + // Particle + protocol.registerClientbound(ClientboundPackets1_9_3.LEVEL_PARTICLES, new PacketHandlers() { + @Override + public void register() { + map(Types.INT); + map(Types.BOOLEAN); + map(Types.FLOAT); + map(Types.FLOAT); + map(Types.FLOAT); + map(Types.FLOAT); + map(Types.FLOAT); + map(Types.FLOAT); + map(Types.FLOAT); + map(Types.INT); + + handler(wrapper -> { + int id = wrapper.get(Types.INT, 0); + if (id == 46) { // new falling_dust + wrapper.set(Types.INT, 0, 38); // -> block_dust + } + }); + } + }); + } +} diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/v1_10to1_9_3/rewriter/EntityPacketRewriter1_10.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_10to1_9_3/rewriter/EntityPacketRewriter1_10.java new file mode 100644 index 00000000..4055b690 --- /dev/null +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_10to1_9_3/rewriter/EntityPacketRewriter1_10.java @@ -0,0 +1,171 @@ +/* + * This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards + * Copyright (C) 2016-2024 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.viabackwards.protocol.v1_10to1_9_3.rewriter; + +import com.viaversion.viabackwards.api.entities.storage.EntityReplacement; +import com.viaversion.viabackwards.api.entities.storage.WrappedMetadata; +import com.viaversion.viabackwards.api.rewriters.LegacyEntityRewriter; +import com.viaversion.viabackwards.protocol.v1_10to1_9_3.Protocol1_10To1_9_3; +import com.viaversion.viaversion.api.minecraft.entities.EntityType; +import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_10; +import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_11; +import com.viaversion.viaversion.api.minecraft.entitydata.EntityData; +import com.viaversion.viaversion.api.minecraft.entitydata.types.EntityDataTypes1_9; +import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.api.type.types.version.Types1_9; +import com.viaversion.viaversion.protocols.v1_9_1to1_9_3.packet.ClientboundPackets1_9_3; +import java.util.List; + +public class EntityPacketRewriter1_10 extends LegacyEntityRewriter { + + public EntityPacketRewriter1_10(Protocol1_10To1_9_3 protocol) { + super(protocol); + } + + @Override + protected void registerPackets() { + protocol.registerClientbound(ClientboundPackets1_9_3.ADD_ENTITY, new PacketHandlers() { + @Override + public void register() { + map(Types.VAR_INT); // 0 - Entity id + map(Types.UUID); // 1 - UUID + map(Types.BYTE); // 2 - Type + map(Types.DOUBLE); // 3 - x + map(Types.DOUBLE); // 4 - y + map(Types.DOUBLE); // 5 - z + map(Types.BYTE); // 6 - Pitch + map(Types.BYTE); // 7 - Yaw + map(Types.INT); // 8 - data + + // Track Entity + handler(getObjectTrackerHandler()); + handler(getObjectRewriter(id -> EntityTypes1_11.ObjectType.findById(id).orElse(null))); + + handler(protocol.getItemRewriter().getFallingBlockHandler()); + } + }); + + registerTracker(ClientboundPackets1_9_3.ADD_EXPERIENCE_ORB, EntityTypes1_10.EntityType.EXPERIENCE_ORB); + registerTracker(ClientboundPackets1_9_3.ADD_GLOBAL_ENTITY, EntityTypes1_10.EntityType.WEATHER); + + protocol.registerClientbound(ClientboundPackets1_9_3.ADD_MOB, new PacketHandlers() { + @Override + public void register() { + map(Types.VAR_INT); // 0 - Entity id + map(Types.UUID); // 1 - UUID + map(Types.UNSIGNED_BYTE); // 2 - Entity Type + map(Types.DOUBLE); // 3 - X + map(Types.DOUBLE); // 4 - Y + map(Types.DOUBLE); // 5 - Z + map(Types.BYTE); // 6 - Yaw + map(Types.BYTE); // 7 - Pitch + map(Types.BYTE); // 8 - Head Pitch + map(Types.SHORT); // 9 - Velocity X + map(Types.SHORT); // 10 - Velocity Y + map(Types.SHORT); // 11 - Velocity Z + map(Types1_9.ENTITY_DATA_LIST); // 12 - Metadata + + // Track entity + handler(getTrackerHandler(Types.UNSIGNED_BYTE, 0)); + + // Rewrite entity type / metadata + handler(wrapper -> { + int entityId = wrapper.get(Types.VAR_INT, 0); + EntityType type = tracker(wrapper.user()).entityType(entityId); + + List metadata = wrapper.get(Types1_9.ENTITY_DATA_LIST, 0); + handleEntityData(wrapper.get(Types.VAR_INT, 0), metadata, wrapper.user()); + + EntityReplacement entityReplacement = entityDataForType(type); + if (entityReplacement != null) { + WrappedMetadata storage = new WrappedMetadata(metadata); + wrapper.set(Types.UNSIGNED_BYTE, 0, (short) entityReplacement.replacementId()); + if (entityReplacement.hasBaseMeta()) + entityReplacement.defaultMeta().createMeta(storage); + } + }); + + } + }); + + registerTracker(ClientboundPackets1_9_3.ADD_PAINTING, EntityTypes1_10.EntityType.PAINTING); + registerJoinGame(ClientboundPackets1_9_3.LOGIN, EntityTypes1_10.EntityType.PLAYER); + registerRespawn(ClientboundPackets1_9_3.RESPAWN); + + protocol.registerClientbound(ClientboundPackets1_9_3.ADD_PLAYER, new PacketHandlers() { + @Override + public void register() { + map(Types.VAR_INT); // 0 - Entity ID + map(Types.UUID); // 1 - Player UUID + map(Types.DOUBLE); // 2 - X + map(Types.DOUBLE); // 3 - Y + map(Types.DOUBLE); // 4 - Z + map(Types.BYTE); // 5 - Yaw + map(Types.BYTE); // 6 - Pitch + map(Types1_9.ENTITY_DATA_LIST); // 7 - Metadata list + + handler(getTrackerAndMetaHandler(Types1_9.ENTITY_DATA_LIST, EntityTypes1_11.EntityType.PLAYER)); + } + }); + + registerRemoveEntities(ClientboundPackets1_9_3.REMOVE_ENTITIES); + registerSetEntityData(ClientboundPackets1_9_3.SET_ENTITY_DATA, Types1_9.ENTITY_DATA_LIST); + } + + @Override + protected void registerRewrites() { + mapEntityTypeWithData(EntityTypes1_10.EntityType.POLAR_BEAR, EntityTypes1_10.EntityType.SHEEP).plainName(); + + // Change the sheep color when the polar bear is standing up (index 13 -> Standing up) + filter().type(EntityTypes1_10.EntityType.POLAR_BEAR).index(13).handler((event, meta) -> { + boolean b = (boolean) meta.getValue(); + + meta.setTypeAndValue(EntityDataTypes1_9.BYTE, b ? (byte) (14 & 0x0F) : (byte) (0)); + }); + + + // Handle husk (index 13 -> Zombie Type) + filter().type(EntityTypes1_10.EntityType.ZOMBIE).index(13).handler((event, meta) -> { + if ((int) meta.getValue() == 6) { // Is type Husk + meta.setValue(0); + } + }); + + // Handle Stray (index 12 -> Skeleton Type) + filter().type(EntityTypes1_10.EntityType.SKELETON).index(12).handler((event, meta) -> { + if ((int) meta.getValue() == 2) { + meta.setValue(0); // Change to default skeleton + } + }); + + // Handle the missing NoGravity tag for every metadata + filter().removeIndex(5); + } + + @Override + public EntityType typeFromId(int typeId) { + return EntityTypes1_10.getTypeFromId(typeId, false); + } + + @Override + public EntityType objectTypeFromId(int typeId) { + return EntityTypes1_10.getTypeFromId(typeId, true); + } +} diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11to1_11_1/Protocol1_11To1_11_1.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_11_1to1_11/Protocol1_11_1To1_11.java similarity index 69% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11to1_11_1/Protocol1_11To1_11_1.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_11_1to1_11/Protocol1_11_1To1_11.java index 7b87cfe3..7a0a7d1e 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11to1_11_1/Protocol1_11To1_11_1.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_11_1to1_11/Protocol1_11_1To1_11.java @@ -16,24 +16,24 @@ * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_11to1_11_1; +package com.viaversion.viabackwards.protocol.v1_11_1to1_11; import com.viaversion.viabackwards.api.BackwardsProtocol; -import com.viaversion.viabackwards.protocol.protocol1_11to1_11_1.packets.EntityPackets1_11_1; -import com.viaversion.viabackwards.protocol.protocol1_11to1_11_1.packets.ItemPackets1_11_1; +import com.viaversion.viabackwards.protocol.v1_11_1to1_11.rewriter.EntityPacketRewriter1_11_1; +import com.viaversion.viabackwards.protocol.v1_11_1to1_11.rewriter.ItemPacketRewriter1_11_1; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.ClientWorld; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_11; import com.viaversion.viaversion.data.entity.EntityTrackerBase; -import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ClientboundPackets1_9_3; -import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ServerboundPackets1_9_3; +import com.viaversion.viaversion.protocols.v1_9_1to1_9_3.packet.ClientboundPackets1_9_3; +import com.viaversion.viaversion.protocols.v1_9_1to1_9_3.packet.ServerboundPackets1_9_3; -public class Protocol1_11To1_11_1 extends BackwardsProtocol { +public class Protocol1_11_1To1_11 extends BackwardsProtocol { - private final EntityPackets1_11_1 entityPackets = new EntityPackets1_11_1(this); - private final ItemPackets1_11_1 itemRewriter = new ItemPackets1_11_1(this); + private final EntityPacketRewriter1_11_1 entityPackets = new EntityPacketRewriter1_11_1(this); + private final ItemPacketRewriter1_11_1 itemRewriter = new ItemPacketRewriter1_11_1(this); - public Protocol1_11To1_11_1() { + public Protocol1_11_1To1_11() { super(ClientboundPackets1_9_3.class, ClientboundPackets1_9_3.class, ServerboundPackets1_9_3.class, ServerboundPackets1_9_3.class); } @@ -53,12 +53,12 @@ public class Protocol1_11To1_11_1 extends BackwardsProtocol. + */ + +package com.viaversion.viabackwards.protocol.v1_11_1to1_11.rewriter; + +import com.viaversion.viabackwards.api.rewriters.LegacyEntityRewriter; +import com.viaversion.viabackwards.protocol.v1_11_1to1_11.Protocol1_11_1To1_11; +import com.viaversion.viaversion.api.minecraft.entities.EntityType; +import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_11; +import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.api.type.types.version.Types1_9; +import com.viaversion.viaversion.protocols.v1_9_1to1_9_3.packet.ClientboundPackets1_9_3; + +public class EntityPacketRewriter1_11_1 extends LegacyEntityRewriter { + + public EntityPacketRewriter1_11_1(Protocol1_11_1To1_11 protocol) { + super(protocol); + } + + @Override + protected void registerPackets() { + protocol.registerClientbound(ClientboundPackets1_9_3.ADD_ENTITY, new PacketHandlers() { + @Override + public void register() { + map(Types.VAR_INT); // 0 - Entity id + map(Types.UUID); // 1 - UUID + map(Types.BYTE); // 2 - Type + map(Types.DOUBLE); // 3 - x + map(Types.DOUBLE); // 4 - y + map(Types.DOUBLE); // 5 - z + map(Types.BYTE); // 6 - Pitch + map(Types.BYTE); // 7 - Yaw + map(Types.INT); // 8 - data + + // Track Entity + handler(getObjectTrackerHandler()); + handler(getObjectRewriter(id -> EntityTypes1_11.ObjectType.findById(id).orElse(null))); + } + }); + + registerTracker(ClientboundPackets1_9_3.ADD_EXPERIENCE_ORB, EntityTypes1_11.EntityType.EXPERIENCE_ORB); + registerTracker(ClientboundPackets1_9_3.ADD_GLOBAL_ENTITY, EntityTypes1_11.EntityType.WEATHER); + + protocol.registerClientbound(ClientboundPackets1_9_3.ADD_MOB, new PacketHandlers() { + @Override + public void register() { + map(Types.VAR_INT); // 0 - Entity id + map(Types.UUID); // 1 - UUID + map(Types.VAR_INT); // 2 - Entity Type + map(Types.DOUBLE); // 3 - X + map(Types.DOUBLE); // 4 - Y + map(Types.DOUBLE); // 5 - Z + map(Types.BYTE); // 6 - Yaw + map(Types.BYTE); // 7 - Pitch + map(Types.BYTE); // 8 - Head Pitch + map(Types.SHORT); // 9 - Velocity X + map(Types.SHORT); // 10 - Velocity Y + map(Types.SHORT); // 11 - Velocity Z + map(Types1_9.ENTITY_DATA_LIST); // 12 - Metadata + + // Track entity + handler(getTrackerHandler()); + + // Rewrite entity type / metadata + handler(getMobSpawnRewriter1_11(Types1_9.ENTITY_DATA_LIST)); + } + }); + + registerTracker(ClientboundPackets1_9_3.ADD_PAINTING, EntityTypes1_11.EntityType.PAINTING); + registerJoinGame(ClientboundPackets1_9_3.LOGIN, EntityTypes1_11.EntityType.PLAYER); + registerRespawn(ClientboundPackets1_9_3.RESPAWN); + + protocol.registerClientbound(ClientboundPackets1_9_3.ADD_PLAYER, new PacketHandlers() { + @Override + public void register() { + map(Types.VAR_INT); // 0 - Entity ID + map(Types.UUID); // 1 - Player UUID + map(Types.DOUBLE); // 2 - X + map(Types.DOUBLE); // 3 - Y + map(Types.DOUBLE); // 4 - Z + map(Types.BYTE); // 5 - Yaw + map(Types.BYTE); // 6 - Pitch + map(Types1_9.ENTITY_DATA_LIST); // 7 - Metadata list + + handler(getTrackerAndMetaHandler(Types1_9.ENTITY_DATA_LIST, EntityTypes1_11.EntityType.PLAYER)); + } + }); + + registerRemoveEntities(ClientboundPackets1_9_3.REMOVE_ENTITIES); + registerSetEntityData(ClientboundPackets1_9_3.SET_ENTITY_DATA, Types1_9.ENTITY_DATA_LIST); + } + + @Override + protected void registerRewrites() { + // Handle non-existing firework metadata (index 7 entity id for boosting) + filter().type(EntityTypes1_11.EntityType.FIREWORK).cancel(7); + + // Handle non-existing pig metadata (index 14 - boost time) + filter().type(EntityTypes1_11.EntityType.PIG).cancel(14); + } + + @Override + public EntityType typeFromId(int typeId) { + return EntityTypes1_11.getTypeFromId(typeId, false); + } + + @Override + public EntityType objectTypeFromId(int typeId) { + return EntityTypes1_11.getTypeFromId(typeId, true); + } +} diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11to1_11_1/packets/ItemPackets1_11_1.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_11_1to1_11/rewriter/ItemPacketRewriter1_11_1.java similarity index 56% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11to1_11_1/packets/ItemPackets1_11_1.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_11_1to1_11/rewriter/ItemPacketRewriter1_11_1.java index 4d29d1de..30284ba1 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11to1_11_1/packets/ItemPackets1_11_1.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_11_1to1_11/rewriter/ItemPacketRewriter1_11_1.java @@ -16,67 +16,68 @@ * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_11to1_11_1.packets; +package com.viaversion.viabackwards.protocol.v1_11_1to1_11.rewriter; import com.viaversion.viabackwards.api.rewriters.LegacyBlockItemRewriter; import com.viaversion.viabackwards.api.rewriters.LegacyEnchantmentRewriter; -import com.viaversion.viabackwards.protocol.protocol1_11to1_11_1.Protocol1_11To1_11_1; +import com.viaversion.viabackwards.protocol.v1_11_1to1_11.Protocol1_11_1To1_11; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ClientboundPackets1_9_3; -import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ServerboundPackets1_9_3; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.protocols.v1_9_1to1_9_3.packet.ClientboundPackets1_9_3; +import com.viaversion.viaversion.protocols.v1_9_1to1_9_3.packet.ServerboundPackets1_9_3; -public class ItemPackets1_11_1 extends LegacyBlockItemRewriter { +public class ItemPacketRewriter1_11_1 extends LegacyBlockItemRewriter { private LegacyEnchantmentRewriter enchantmentRewriter; - public ItemPackets1_11_1(Protocol1_11To1_11_1 protocol) { + public ItemPacketRewriter1_11_1(Protocol1_11_1To1_11 protocol) { super(protocol, "1.11.1"); } @Override protected void registerPackets() { - registerSetSlot(ClientboundPackets1_9_3.SET_SLOT); - registerWindowItems(ClientboundPackets1_9_3.WINDOW_ITEMS); - registerEntityEquipment(ClientboundPackets1_9_3.ENTITY_EQUIPMENT); + registerSetSlot(ClientboundPackets1_9_3.CONTAINER_SET_SLOT); + registerSetContent(ClientboundPackets1_9_3.CONTAINER_SET_CONTENT); + registerSetEquippedItem(ClientboundPackets1_9_3.SET_EQUIPPED_ITEM); // Plugin message Packet -> Trading - protocol.registerClientbound(ClientboundPackets1_9_3.PLUGIN_MESSAGE, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_9_3.CUSTOM_PAYLOAD, new PacketHandlers() { @Override public void register() { - map(Type.STRING); // 0 - Channel + map(Types.STRING); // 0 - Channel handler(wrapper -> { - if (wrapper.get(Type.STRING, 0).equals("MC|TrList")) { - wrapper.passthrough(Type.INT); // Passthrough Window ID + if (wrapper.get(Types.STRING, 0).equals("MC|TrList")) { + wrapper.passthrough(Types.INT); // Passthrough Window ID - int size = wrapper.passthrough(Type.UNSIGNED_BYTE); + int size = wrapper.passthrough(Types.UNSIGNED_BYTE); for (int i = 0; i < size; i++) { - wrapper.write(Type.ITEM1_8, handleItemToClient(wrapper.user(), wrapper.read(Type.ITEM1_8))); // Input Item - wrapper.write(Type.ITEM1_8, handleItemToClient(wrapper.user(), wrapper.read(Type.ITEM1_8))); // Output Item + wrapper.write(Types.ITEM1_8, handleItemToClient(wrapper.user(), wrapper.read(Types.ITEM1_8))); // Input Item + wrapper.write(Types.ITEM1_8, handleItemToClient(wrapper.user(), wrapper.read(Types.ITEM1_8))); // Output Item - boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item + boolean secondItem = wrapper.passthrough(Types.BOOLEAN); // Has second item if (secondItem) { - wrapper.write(Type.ITEM1_8, handleItemToClient(wrapper.user(), wrapper.read(Type.ITEM1_8))); // Second Item + wrapper.write(Types.ITEM1_8, handleItemToClient(wrapper.user(), wrapper.read(Types.ITEM1_8))); // Second Item } - wrapper.passthrough(Type.BOOLEAN); // Trade disabled - wrapper.passthrough(Type.INT); // Number of tools uses - wrapper.passthrough(Type.INT); // Maximum number of trade uses + wrapper.passthrough(Types.BOOLEAN); // Trade disabled + wrapper.passthrough(Types.INT); // Number of tools uses + wrapper.passthrough(Types.INT); // Maximum number of trade uses } } }); } }); - registerClickWindow(ServerboundPackets1_9_3.CLICK_WINDOW); - registerCreativeInvAction(ServerboundPackets1_9_3.CREATIVE_INVENTORY_ACTION); + registerContainerClick(ServerboundPackets1_9_3.CONTAINER_CLICK); + registerSetCreativeModeSlot(ServerboundPackets1_9_3.SET_CREATIVE_MODE_SLOT); // Handle item metadata protocol.getEntityRewriter().filter().handler((event, meta) -> { - if (meta.metaType().type().equals(Type.ITEM1_8)) { // Is Item + if (meta.dataType().type().equals(Types.ITEM1_8)) { // Is Item meta.setValue(handleItemToClient(event.user(), (Item) meta.getValue())); } }); diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_10to1_11/Protocol1_10To1_11.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_11to1_10/Protocol1_11To1_10.java similarity index 64% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_10to1_11/Protocol1_10To1_11.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_11to1_10/Protocol1_11To1_10.java index 27b3d58f..1ef2248f 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_10to1_11/Protocol1_10To1_11.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_11to1_10/Protocol1_11To1_10.java @@ -16,29 +16,29 @@ * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_10to1_11; +package com.viaversion.viabackwards.protocol.v1_11to1_10; import com.viaversion.viabackwards.api.BackwardsProtocol; -import com.viaversion.viabackwards.api.data.BackwardsMappings; +import com.viaversion.viabackwards.api.data.BackwardsMappingData; import com.viaversion.viabackwards.api.rewriters.SoundRewriter; -import com.viaversion.viabackwards.protocol.protocol1_10to1_11.packets.BlockItemPackets1_11; -import com.viaversion.viabackwards.protocol.protocol1_10to1_11.packets.EntityPackets1_11; -import com.viaversion.viabackwards.protocol.protocol1_10to1_11.packets.PlayerPackets1_11; -import com.viaversion.viabackwards.protocol.protocol1_10to1_11.storage.WindowTracker; +import com.viaversion.viabackwards.protocol.v1_11to1_10.rewriter.BlockItemPacketRewriter1_11; +import com.viaversion.viabackwards.protocol.v1_11to1_10.rewriter.EntityPacketRewriter1_11; +import com.viaversion.viabackwards.protocol.v1_11to1_10.rewriter.PlayerPacketRewriterRewriter1_11; +import com.viaversion.viabackwards.protocol.v1_11to1_10.storage.WindowTracker; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.ClientWorld; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_11; import com.viaversion.viaversion.data.entity.EntityTrackerBase; -import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ClientboundPackets1_9_3; -import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ServerboundPackets1_9_3; +import com.viaversion.viaversion.protocols.v1_9_1to1_9_3.packet.ClientboundPackets1_9_3; +import com.viaversion.viaversion.protocols.v1_9_1to1_9_3.packet.ServerboundPackets1_9_3; -public class Protocol1_10To1_11 extends BackwardsProtocol { +public class Protocol1_11To1_10 extends BackwardsProtocol { - public static final BackwardsMappings MAPPINGS = new BackwardsMappings("1.11", "1.10"); - private final EntityPackets1_11 entityPackets = new EntityPackets1_11(this); - private final BlockItemPackets1_11 blockItemPackets = new BlockItemPackets1_11(this); + public static final BackwardsMappingData MAPPINGS = new BackwardsMappingData("1.11", "1.10"); + private final EntityPacketRewriter1_11 entityPackets = new EntityPacketRewriter1_11(this); + private final BlockItemPacketRewriter1_11 blockItemPackets = new BlockItemPacketRewriter1_11(this); - public Protocol1_10To1_11() { + public Protocol1_11To1_10() { super(ClientboundPackets1_9_3.class, ClientboundPackets1_9_3.class, ServerboundPackets1_9_3.class, ServerboundPackets1_9_3.class); } @@ -46,10 +46,10 @@ public class Protocol1_10To1_11 extends BackwardsProtocol soundRewriter = new SoundRewriter<>(this); - soundRewriter.registerNamedSound(ClientboundPackets1_9_3.NAMED_SOUND); + soundRewriter.registerNamedSound(ClientboundPackets1_9_3.CUSTOM_SOUND); soundRewriter.registerSound(ClientboundPackets1_9_3.SOUND); } @@ -67,17 +67,17 @@ public class Protocol1_10To1_11 extends BackwardsProtocol. */ -package com.viaversion.viabackwards.protocol.protocol1_10to1_11.data; +package com.viaversion.viabackwards.protocol.v1_11to1_10.data; import com.viaversion.viaversion.libs.fastutil.ints.Int2IntMap; import com.viaversion.viaversion.libs.fastutil.ints.Int2IntOpenHashMap; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_10to1_11/packets/BlockItemPackets1_11.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_11to1_10/rewriter/BlockItemPacketRewriter1_11.java similarity index 69% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_10to1_11/packets/BlockItemPackets1_11.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_11to1_10/rewriter/BlockItemPacketRewriter1_11.java index 4f6bfdb3..c0d32074 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_10to1_11/packets/BlockItemPackets1_11.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_11to1_10/rewriter/BlockItemPacketRewriter1_11.java @@ -16,14 +16,14 @@ * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_10to1_11.packets; +package com.viaversion.viabackwards.protocol.v1_11to1_10.rewriter; import com.viaversion.viabackwards.api.data.MappedLegacyBlockItem; import com.viaversion.viabackwards.api.rewriters.LegacyBlockItemRewriter; import com.viaversion.viabackwards.api.rewriters.LegacyEnchantmentRewriter; -import com.viaversion.viabackwards.protocol.protocol1_10to1_11.Protocol1_10To1_11; -import com.viaversion.viabackwards.protocol.protocol1_10to1_11.storage.ChestedHorseStorage; -import com.viaversion.viabackwards.protocol.protocol1_10to1_11.storage.WindowTracker; +import com.viaversion.viabackwards.protocol.v1_11to1_10.Protocol1_11To1_10; +import com.viaversion.viabackwards.protocol.v1_11to1_10.storage.ChestedHorseStorage; +import com.viaversion.viabackwards.protocol.v1_11to1_10.storage.WindowTracker; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.data.entity.EntityTracker; import com.viaversion.viaversion.api.data.entity.StoredEntityData; @@ -34,37 +34,38 @@ import com.viaversion.viaversion.api.minecraft.item.DataItem; import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_9_3; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag; -import com.viaversion.viaversion.protocols.protocol1_11to1_10.rewriter.EntityIdRewriter; -import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ClientboundPackets1_9_3; -import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ServerboundPackets1_9_3; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.StringTag; +import com.viaversion.viaversion.protocols.v1_10to1_11.rewriter.EntityIdRewriter; +import com.viaversion.viaversion.protocols.v1_9_1to1_9_3.packet.ClientboundPackets1_9_3; +import com.viaversion.viaversion.protocols.v1_9_1to1_9_3.packet.ServerboundPackets1_9_3; import com.viaversion.viaversion.util.IdAndData; import java.util.Arrays; import java.util.Optional; -public class BlockItemPackets1_11 extends LegacyBlockItemRewriter { +public class BlockItemPacketRewriter1_11 extends LegacyBlockItemRewriter { private LegacyEnchantmentRewriter enchantmentRewriter; - public BlockItemPackets1_11(Protocol1_10To1_11 protocol) { + public BlockItemPacketRewriter1_11(Protocol1_11To1_10 protocol) { super(protocol, "1.11"); } @Override protected void registerPackets() { - registerBlockChange(ClientboundPackets1_9_3.BLOCK_CHANGE); - registerMultiBlockChange(ClientboundPackets1_9_3.MULTI_BLOCK_CHANGE); + registerBlockChange(ClientboundPackets1_9_3.BLOCK_UPDATE); + registerMultiBlockChange(ClientboundPackets1_9_3.CHUNK_BLOCKS_UPDATE); - protocol.registerClientbound(ClientboundPackets1_9_3.SET_SLOT, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_9_3.CONTAINER_SET_SLOT, new PacketHandlers() { @Override public void register() { - map(Type.UNSIGNED_BYTE); // 0 - Window ID - map(Type.SHORT); // 1 - Slot ID - map(Type.ITEM1_8); // 2 - Slot Value + map(Types.UNSIGNED_BYTE); // 0 - Window ID + map(Types.SHORT); // 1 - Slot ID + map(Types.ITEM1_8); // 2 - Slot Value - handler(wrapper -> handleItemToClient(wrapper.user(), wrapper.get(Type.ITEM1_8, 0))); + handler(wrapper -> handleItemToClient(wrapper.user(), wrapper.get(Types.ITEM1_8, 0))); // Handle Llama handler(wrapper -> { @@ -75,22 +76,22 @@ public class BlockItemPackets1_11 extends LegacyBlockItemRewriter { - Item[] stacks = wrapper.get(Type.ITEM1_8_SHORT_ARRAY, 0); + Item[] stacks = wrapper.get(Types.ITEM1_8_SHORT_ARRAY, 0); for (int i = 0; i < stacks.length; i++) stacks[i] = handleItemToClient(wrapper.user(), stacks[i]); @@ -106,54 +107,54 @@ public class BlockItemPackets1_11 extends LegacyBlockItemRewriter Trading - protocol.registerClientbound(ClientboundPackets1_9_3.PLUGIN_MESSAGE, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_9_3.CUSTOM_PAYLOAD, new PacketHandlers() { @Override public void register() { - map(Type.STRING); // 0 - Channel + map(Types.STRING); // 0 - Channel handler(wrapper -> { - if (wrapper.get(Type.STRING, 0).equals("MC|TrList")) { - wrapper.passthrough(Type.INT); // Passthrough Window ID + if (wrapper.get(Types.STRING, 0).equals("MC|TrList")) { + wrapper.passthrough(Types.INT); // Passthrough Window ID - int size = wrapper.passthrough(Type.UNSIGNED_BYTE); + int size = wrapper.passthrough(Types.UNSIGNED_BYTE); for (int i = 0; i < size; i++) { - wrapper.write(Type.ITEM1_8, handleItemToClient(wrapper.user(), wrapper.read(Type.ITEM1_8))); // Input Item - wrapper.write(Type.ITEM1_8, handleItemToClient(wrapper.user(), wrapper.read(Type.ITEM1_8))); // Output Item + wrapper.write(Types.ITEM1_8, handleItemToClient(wrapper.user(), wrapper.read(Types.ITEM1_8))); // Input Item + wrapper.write(Types.ITEM1_8, handleItemToClient(wrapper.user(), wrapper.read(Types.ITEM1_8))); // Output Item - boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item + boolean secondItem = wrapper.passthrough(Types.BOOLEAN); // Has second item if (secondItem) { - wrapper.write(Type.ITEM1_8, handleItemToClient(wrapper.user(), wrapper.read(Type.ITEM1_8))); // Second Item + wrapper.write(Types.ITEM1_8, handleItemToClient(wrapper.user(), wrapper.read(Types.ITEM1_8))); // Second Item } - wrapper.passthrough(Type.BOOLEAN); // Trade disabled - wrapper.passthrough(Type.INT); // Number of tools uses - wrapper.passthrough(Type.INT); // Maximum number of trade uses + wrapper.passthrough(Types.BOOLEAN); // Trade disabled + wrapper.passthrough(Types.INT); // Number of tools uses + wrapper.passthrough(Types.INT); // Maximum number of trade uses } } }); } }); - protocol.registerServerbound(ServerboundPackets1_9_3.CLICK_WINDOW, new PacketHandlers() { + protocol.registerServerbound(ServerboundPackets1_9_3.CONTAINER_CLICK, new PacketHandlers() { @Override public void register() { - map(Type.UNSIGNED_BYTE); // 0 - Window ID - map(Type.SHORT); // 1 - Slot - map(Type.BYTE); // 2 - Button - map(Type.SHORT); // 3 - Action number - map(Type.VAR_INT); // 4 - Mode - map(Type.ITEM1_8); // 5 - Clicked Item + map(Types.UNSIGNED_BYTE); // 0 - Window ID + map(Types.SHORT); // 1 - Slot + map(Types.BYTE); // 2 - Button + map(Types.SHORT); // 3 - Action number + map(Types.VAR_INT); // 4 - Mode + map(Types.ITEM1_8); // 5 - Clicked Item - handler(wrapper -> handleItemToServer(wrapper.user(), wrapper.get(Type.ITEM1_8, 0))); + handler(wrapper -> handleItemToServer(wrapper.user(), wrapper.get(Types.ITEM1_8, 0))); // Llama slot handler(wrapper -> { @@ -163,18 +164,18 @@ public class BlockItemPackets1_11 extends LegacyBlockItemRewriter { + protocol.registerClientbound(ClientboundPackets1_9_3.LEVEL_CHUNK, wrapper -> { ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); ChunkType1_9_3 type = ChunkType1_9_3.forEnvironment(clientWorld.getEnvironment()); // Use the 1.10 Chunk type since nothing changed. @@ -197,54 +198,54 @@ public class BlockItemPackets1_11 extends LegacyBlockItemRewriter { // Remove on shulkerbox decleration - if (wrapper.get(Type.UNSIGNED_BYTE, 0) == 10) { + if (wrapper.get(Types.UNSIGNED_BYTE, 0) == 10) { wrapper.cancel(); } // Handler Spawners - if (wrapper.get(Type.UNSIGNED_BYTE, 0) == 1) { - CompoundTag tag = wrapper.get(Type.NAMED_COMPOUND_TAG, 0); + if (wrapper.get(Types.UNSIGNED_BYTE, 0) == 1) { + CompoundTag tag = wrapper.get(Types.NAMED_COMPOUND_TAG, 0); EntityIdRewriter.toClientSpawner(tag, true); } }); } }); - protocol.registerClientbound(ClientboundPackets1_9_3.OPEN_WINDOW, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_9_3.OPEN_SCREEN, new PacketHandlers() { @Override public void register() { - map(Type.UNSIGNED_BYTE); // 0 - Window ID - map(Type.STRING); // 1 - Window Type - map(Type.COMPONENT); // 2 - Title - map(Type.UNSIGNED_BYTE); // 3 - Slots + map(Types.UNSIGNED_BYTE); // 0 - Window ID + map(Types.STRING); // 1 - Window Type + map(Types.COMPONENT); // 2 - Title + map(Types.UNSIGNED_BYTE); // 3 - Slots handler(wrapper -> { int entityId = -1; // Passthrough Entity ID - if (wrapper.get(Type.STRING, 0).equals("EntityHorse")) { - entityId = wrapper.passthrough(Type.INT); + if (wrapper.get(Types.STRING, 0).equals("EntityHorse")) { + entityId = wrapper.passthrough(Types.INT); } // Track Inventory - String inventory = wrapper.get(Type.STRING, 0); + String inventory = wrapper.get(Types.STRING, 0); WindowTracker windowTracker = wrapper.user().get(WindowTracker.class); windowTracker.setInventory(inventory); windowTracker.setEntityId(entityId); // Change llama slotcount to the donkey one if (isLlama(wrapper.user())) { - wrapper.set(Type.UNSIGNED_BYTE, 1, (short) 17); + wrapper.set(Types.UNSIGNED_BYTE, 1, (short) 17); } }); } }); - protocol.registerClientbound(ClientboundPackets1_9_3.CLOSE_WINDOW, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_9_3.CONTAINER_CLOSE, new PacketHandlers() { @Override public void register() { // Inventory tracking @@ -257,7 +258,7 @@ public class BlockItemPackets1_11 extends LegacyBlockItemRewriter { - if (meta.metaType().type().equals(Type.ITEM1_8)) // Is Item + if (meta.dataType().type().equals(Types.ITEM1_8)) // Is Item meta.setValue(handleItemToClient(event.user(), (Item) meta.getValue())); }); } @@ -324,7 +325,7 @@ public class BlockItemPackets1_11 extends LegacyBlockItemRewriter getChestedHorse(UserConnection user) { WindowTracker tracker = user.get(WindowTracker.class); if (tracker.getInventory() != null && tracker.getInventory().equals("EntityHorse")) { - EntityTracker entTracker = user.getEntityTracker(Protocol1_10To1_11.class); + EntityTracker entTracker = user.getEntityTracker(Protocol1_11To1_10.class); StoredEntityData entityData = entTracker.entityData(tracker.getEntityId()); if (entityData != null) return Optional.of(entityData.get(ChestedHorseStorage.class)); diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_10to1_11/packets/EntityPackets1_11.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_11to1_10/rewriter/EntityPacketRewriter1_11.java similarity index 66% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_10to1_11/packets/EntityPackets1_11.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_11to1_10/rewriter/EntityPacketRewriter1_11.java index 02ef3802..d808ba8a 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_10to1_11/packets/EntityPackets1_11.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_11to1_10/rewriter/EntityPacketRewriter1_11.java @@ -16,68 +16,69 @@ * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_10to1_11.packets; +package com.viaversion.viabackwards.protocol.v1_11to1_10.rewriter; import com.viaversion.viabackwards.api.entities.storage.EntityData; import com.viaversion.viabackwards.api.entities.storage.WrappedMetadata; import com.viaversion.viabackwards.api.rewriters.LegacyEntityRewriter; -import com.viaversion.viabackwards.protocol.protocol1_10to1_11.data.PotionSplashHandler; -import com.viaversion.viabackwards.protocol.protocol1_10to1_11.Protocol1_10To1_11; -import com.viaversion.viabackwards.protocol.protocol1_10to1_11.storage.ChestedHorseStorage; +import com.viaversion.viabackwards.protocol.v1_11to1_10.Protocol1_11To1_10; +import com.viaversion.viabackwards.protocol.v1_11to1_10.data.PotionSplashHandler; +import com.viaversion.viabackwards.protocol.v1_11to1_10.storage.ChestedHorseStorage; import com.viaversion.viaversion.api.data.entity.StoredEntityData; import com.viaversion.viaversion.api.minecraft.entities.EntityType; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_11; -import com.viaversion.viaversion.api.minecraft.metadata.Metadata; -import com.viaversion.viaversion.api.minecraft.metadata.types.MetaType1_9; +import com.viaversion.viaversion.api.minecraft.entitydata.EntityData; +import com.viaversion.viaversion.api.minecraft.entitydata.types.EntityDataTypes1_9; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.version.Types1_9; -import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ClientboundPackets1_9_3; +import com.viaversion.viaversion.protocols.v1_9_1to1_9_3.packet.ClientboundPackets1_9_3; import java.util.List; -public class EntityPackets1_11 extends LegacyEntityRewriter { +public class EntityPacketRewriter1_11 extends LegacyEntityRewriter { - public EntityPackets1_11(Protocol1_10To1_11 protocol) { + public EntityPacketRewriter1_11(Protocol1_11To1_10 protocol) { super(protocol); } @Override protected void registerPackets() { - protocol.registerClientbound(ClientboundPackets1_9_3.EFFECT, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_9_3.LEVEL_EVENT, new PacketHandlers() { @Override public void register() { - map(Type.INT); - map(Type.POSITION1_8); - map(Type.INT); + map(Types.INT); + map(Types.BLOCK_POSITION1_8); + map(Types.INT); handler(wrapper -> { - int type = wrapper.get(Type.INT, 0); + int type = wrapper.get(Types.INT, 0); if (type == 2002 || type == 2007) { // 2007 potion id doesn't exist in 1.10 if (type == 2007) { - wrapper.set(Type.INT, 0, 2002); + wrapper.set(Types.INT, 0, 2002); } - int mappedData = PotionSplashHandler.getOldData(wrapper.get(Type.INT, 1)); + int mappedData = PotionSplashHandler.getOldData(wrapper.get(Types.INT, 1)); if (mappedData != -1) { - wrapper.set(Type.INT, 1, mappedData); + wrapper.set(Types.INT, 1, mappedData); } } }); } }); - protocol.registerClientbound(ClientboundPackets1_9_3.SPAWN_ENTITY, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_9_3.ADD_ENTITY, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); // 0 - Entity id - map(Type.UUID); // 1 - UUID - map(Type.BYTE); // 2 - Type - map(Type.DOUBLE); // 3 - x - map(Type.DOUBLE); // 4 - y - map(Type.DOUBLE); // 5 - z - map(Type.BYTE); // 6 - Pitch - map(Type.BYTE); // 7 - Yaw - map(Type.INT); // 8 - data + map(Types.VAR_INT); // 0 - Entity id + map(Types.UUID); // 1 - UUID + map(Types.BYTE); // 2 - Type + map(Types.DOUBLE); // 3 - x + map(Types.DOUBLE); // 4 - y + map(Types.DOUBLE); // 5 - z + map(Types.BYTE); // 6 - Pitch + map(Types.BYTE); // 7 - Yaw + map(Types.INT); // 8 - data // Track Entity handler(getObjectTrackerHandler()); @@ -87,86 +88,86 @@ public class EntityPackets1_11 extends LegacyEntityRewriter { - List metadata = wrapper.get(Types1_9.METADATA_LIST, 0); + List metadata = wrapper.get(Types1_9.ENTITY_DATA_LIST, 0); if (metadata.isEmpty()) { - metadata.add(new Metadata(0, MetaType1_9.Byte, (byte) 0)); + metadata.add(new EntityData(0, EntityDataTypes1_9.BYTE, (byte) 0)); } }); } }); - registerTracker(ClientboundPackets1_9_3.SPAWN_PAINTING, EntityTypes1_11.EntityType.PAINTING); - registerJoinGame(ClientboundPackets1_9_3.JOIN_GAME, EntityTypes1_11.EntityType.PLAYER); + registerTracker(ClientboundPackets1_9_3.ADD_PAINTING, EntityTypes1_11.EntityType.PAINTING); + registerJoinGame(ClientboundPackets1_9_3.LOGIN, EntityTypes1_11.EntityType.PLAYER); registerRespawn(ClientboundPackets1_9_3.RESPAWN); - protocol.registerClientbound(ClientboundPackets1_9_3.SPAWN_PLAYER, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_9_3.ADD_PLAYER, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); // 0 - Entity ID - map(Type.UUID); // 1 - Player UUID - map(Type.DOUBLE); // 2 - X - map(Type.DOUBLE); // 3 - Y - map(Type.DOUBLE); // 4 - Z - map(Type.BYTE); // 5 - Yaw - map(Type.BYTE); // 6 - Pitch - map(Types1_9.METADATA_LIST); // 7 - Metadata list + map(Types.VAR_INT); // 0 - Entity ID + map(Types.UUID); // 1 - Player UUID + map(Types.DOUBLE); // 2 - X + map(Types.DOUBLE); // 3 - Y + map(Types.DOUBLE); // 4 - Z + map(Types.BYTE); // 5 - Yaw + map(Types.BYTE); // 6 - Pitch + map(Types1_9.ENTITY_DATA_LIST); // 7 - Metadata list - handler(getTrackerAndMetaHandler(Types1_9.METADATA_LIST, EntityTypes1_11.EntityType.PLAYER)); + handler(getTrackerAndMetaHandler(Types1_9.ENTITY_DATA_LIST, EntityTypes1_11.EntityType.PLAYER)); handler(wrapper -> { // Sub 1.11 clients will cry if the list is empty - List metadata = wrapper.get(Types1_9.METADATA_LIST, 0); + List metadata = wrapper.get(Types1_9.ENTITY_DATA_LIST, 0); if (metadata.isEmpty()) { - metadata.add(new Metadata(0, MetaType1_9.Byte, (byte) 0)); + metadata.add(new EntityData(0, EntityDataTypes1_9.BYTE, (byte) 0)); } }); } }); - registerRemoveEntities(ClientboundPackets1_9_3.DESTROY_ENTITIES); - registerMetadataRewriter(ClientboundPackets1_9_3.ENTITY_METADATA, Types1_9.METADATA_LIST); + registerRemoveEntities(ClientboundPackets1_9_3.REMOVE_ENTITIES); + registerSetEntityData(ClientboundPackets1_9_3.SET_ENTITY_DATA, Types1_9.ENTITY_DATA_LIST); - protocol.registerClientbound(ClientboundPackets1_9_3.ENTITY_STATUS, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_9_3.ENTITY_EVENT, new PacketHandlers() { @Override public void register() { - map(Type.INT); // 0 - Entity ID - map(Type.BYTE); // 1 - Entity Status + map(Types.INT); // 0 - Entity ID + map(Types.BYTE); // 1 - Entity Status handler(wrapper -> { - byte b = wrapper.get(Type.BYTE, 0); + byte b = wrapper.get(Types.BYTE, 0); if (b == 35) { wrapper.clearPacket(); wrapper.setPacketType(ClientboundPackets1_9_3.GAME_EVENT); - wrapper.write(Type.UNSIGNED_BYTE, (short) 10); // Play Elder Guardian animation - wrapper.write(Type.FLOAT, 0F); + wrapper.write(Types.UNSIGNED_BYTE, (short) 10); // Play Elder Guardian animation + wrapper.write(Types.FLOAT, 0F); } }); } @@ -193,9 +194,9 @@ public class EntityPackets1_11 extends LegacyEntityRewriter storage.add(new Metadata(13, MetaType1_9.VarInt, 4))); // Base Profession - mapEntityTypeWithData(EntityTypes1_11.EntityType.LIAMA, EntityTypes1_11.EntityType.HORSE).plainName().spawnMetadata(storage -> storage.add(getHorseMetaType(1))); - mapEntityTypeWithData(EntityTypes1_11.EntityType.LIAMA_SPIT, EntityTypes1_11.EntityType.SNOWBALL); + mapEntityTypeWithData(EntityTypes1_11.EntityType.VINDICATOR, EntityTypes1_11.EntityType.VILLAGER).plainName().spawnMetadata(storage -> storage.add(new EntityData(13, EntityDataTypes1_9.VAR_INT, 4))); // Base Profession + mapEntityTypeWithData(EntityTypes1_11.EntityType.LLAMA, EntityTypes1_11.EntityType.HORSE).plainName().spawnMetadata(storage -> storage.add(getHorseMetaType(1))); + mapEntityTypeWithData(EntityTypes1_11.EntityType.LLAMA_SPIT, EntityTypes1_11.EntityType.SNOWBALL); mapObjectType(EntityTypes1_11.ObjectType.LIAMA_SPIT, EntityTypes1_11.ObjectType.SNOWBALL, -1); // Replace with endertorchthingies @@ -210,7 +211,7 @@ public class EntityPackets1_11 extends LegacyEntityRewriter { event.setIndex(13); - meta.setTypeAndValue(MetaType1_9.VarInt, ((Byte) meta.getValue()).intValue()); // Change the profession for the states + meta.setTypeAndValue(EntityDataTypes1_9.VAR_INT, ((Byte) meta.getValue()).intValue()); // Change the profession for the states }); // Handle Vex (Remove this field completely since the position is not updated correctly when idling for bats. Sad ): @@ -246,7 +247,7 @@ public class EntityPackets1_11 extends LegacyEntityRewriter { event.setIndex(13); - meta.setTypeAndValue(MetaType1_9.VarInt, ((Number) meta.getValue()).intValue() == 1 ? 2 : 4); + meta.setTypeAndValue(EntityDataTypes1_9.VAR_INT, ((Number) meta.getValue()).intValue() == 1 ? 2 : 4); }); /* @@ -326,8 +327,8 @@ public class EntityPackets1_11 extends LegacyEntityRewriter. */ -package com.viaversion.viabackwards.protocol.protocol1_10to1_11.packets; +package com.viaversion.viabackwards.protocol.v1_11to1_10.rewriter; -import com.viaversion.viabackwards.protocol.protocol1_10to1_11.Protocol1_10To1_11; +import com.viaversion.viabackwards.protocol.v1_11to1_10.Protocol1_11To1_10; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.protocol.remapper.ValueTransformer; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.libs.gson.JsonElement; import com.viaversion.viaversion.libs.gson.JsonObject; -import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ClientboundPackets1_9_3; -import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ServerboundPackets1_9_3; +import com.viaversion.viaversion.protocols.v1_9_1to1_9_3.packet.ClientboundPackets1_9_3; +import com.viaversion.viaversion.protocols.v1_9_1to1_9_3.packet.ServerboundPackets1_9_3; import com.viaversion.viaversion.util.ComponentUtil; -public class PlayerPackets1_11 { - private static final ValueTransformer TO_NEW_FLOAT = new ValueTransformer<>(Type.FLOAT) { +public class PlayerPacketRewriterRewriter1_11 { + private static final ValueTransformer TO_NEW_FLOAT = new ValueTransformer<>(Types.FLOAT) { @Override public Float transform(PacketWrapper wrapper, Short inputValue) { return inputValue / 16f; } }; - public static void register(Protocol1_10To1_11 protocol) { - protocol.registerClientbound(ClientboundPackets1_9_3.TITLE, new PacketHandlers() { + public static void register(Protocol1_11To1_10 protocol) { + protocol.registerClientbound(ClientboundPackets1_9_3.SET_TITLES, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); // 0 - Action + map(Types.VAR_INT); // 0 - Action handler(wrapper -> { - int action = wrapper.get(Type.VAR_INT, 0); + int action = wrapper.get(Types.VAR_INT, 0); if (action == 2) { // Handle the new ActionBar - JsonElement message = wrapper.read(Type.COMPONENT); + JsonElement message = wrapper.read(Types.COMPONENT); wrapper.clearPacket(); - wrapper.setPacketType(ClientboundPackets1_9_3.CHAT_MESSAGE); + wrapper.setPacketType(ClientboundPackets1_9_3.CHAT); // https://bugs.mojang.com/browse/MC-119145 String legacy = ComponentUtil.jsonToLegacy(message); message = new JsonObject(); message.getAsJsonObject().addProperty("text", legacy); - wrapper.write(Type.COMPONENT, message); - wrapper.write(Type.BYTE, (byte) 2); + wrapper.write(Types.COMPONENT, message); + wrapper.write(Types.BYTE, (byte) 2); } else if (action > 2) { - wrapper.set(Type.VAR_INT, 0, action - 1); // Move everything one position down + wrapper.set(Types.VAR_INT, 0, action - 1); // Move everything one position down } }); } }); - protocol.registerClientbound(ClientboundPackets1_9_3.COLLECT_ITEM, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_9_3.TAKE_ITEM_ENTITY, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); // 0 - Collected entity id - map(Type.VAR_INT); // 1 - Collector entity id + map(Types.VAR_INT); // 0 - Collected entity id + map(Types.VAR_INT); // 1 - Collector entity id - handler(wrapper -> wrapper.read(Type.VAR_INT)); // Ignore item pickup count + handler(wrapper -> wrapper.read(Types.VAR_INT)); // Ignore item pickup count } }); - protocol.registerServerbound(ServerboundPackets1_9_3.PLAYER_BLOCK_PLACEMENT, new PacketHandlers() { + protocol.registerServerbound(ServerboundPackets1_9_3.USE_ITEM_ON, new PacketHandlers() { @Override public void register() { - map(Type.POSITION1_8); // 0 - Location - map(Type.VAR_INT); // 1 - Face - map(Type.VAR_INT); // 2 - Hand + map(Types.BLOCK_POSITION1_8); // 0 - Location + map(Types.VAR_INT); // 1 - Face + map(Types.VAR_INT); // 2 - Hand - map(Type.UNSIGNED_BYTE, TO_NEW_FLOAT); - map(Type.UNSIGNED_BYTE, TO_NEW_FLOAT); - map(Type.UNSIGNED_BYTE, TO_NEW_FLOAT); + map(Types.UNSIGNED_BYTE, TO_NEW_FLOAT); + map(Types.UNSIGNED_BYTE, TO_NEW_FLOAT); + map(Types.UNSIGNED_BYTE, TO_NEW_FLOAT); } }); } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_10to1_11/storage/ChestedHorseStorage.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_11to1_10/storage/ChestedHorseStorage.java similarity index 96% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_10to1_11/storage/ChestedHorseStorage.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_11to1_10/storage/ChestedHorseStorage.java index b90b8434..1f691392 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_10to1_11/storage/ChestedHorseStorage.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_11to1_10/storage/ChestedHorseStorage.java @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_10to1_11.storage; +package com.viaversion.viabackwards.protocol.v1_11to1_10.storage; public class ChestedHorseStorage { private boolean chested; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_10to1_11/storage/WindowTracker.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_11to1_10/storage/WindowTracker.java similarity index 95% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_10to1_11/storage/WindowTracker.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_11to1_10/storage/WindowTracker.java index f741e322..6aa29a9d 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_10to1_11/storage/WindowTracker.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_11to1_10/storage/WindowTracker.java @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_10to1_11.storage; +package com.viaversion.viabackwards.protocol.v1_11to1_10.storage; import com.viaversion.viaversion.api.connection.StorableObject; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12to1_12_1/Protocol1_12To1_12_1.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_12_1to1_12/Protocol1_12_1To1_12.java similarity index 68% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12to1_12_1/Protocol1_12To1_12_1.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_12_1to1_12/Protocol1_12_1To1_12.java index 111710d1..d157eb3e 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12to1_12_1/Protocol1_12To1_12_1.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_12_1to1_12/Protocol1_12_1To1_12.java @@ -15,23 +15,23 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_12to1_12_1; +package com.viaversion.viabackwards.protocol.v1_12_1to1_12; import com.viaversion.viabackwards.api.BackwardsProtocol; -import com.viaversion.viaversion.protocols.protocol1_12_1to1_12.ClientboundPackets1_12_1; -import com.viaversion.viaversion.protocols.protocol1_12_1to1_12.ServerboundPackets1_12_1; -import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.ClientboundPackets1_12; -import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.ServerboundPackets1_12; +import com.viaversion.viaversion.protocols.v1_11_1to1_12.packet.ClientboundPackets1_12; +import com.viaversion.viaversion.protocols.v1_11_1to1_12.packet.ServerboundPackets1_12; +import com.viaversion.viaversion.protocols.v1_12to1_12_1.packet.ClientboundPackets1_12_1; +import com.viaversion.viaversion.protocols.v1_12to1_12_1.packet.ServerboundPackets1_12_1; -public class Protocol1_12To1_12_1 extends BackwardsProtocol { +public class Protocol1_12_1To1_12 extends BackwardsProtocol { - public Protocol1_12To1_12_1() { + public Protocol1_12_1To1_12() { super(ClientboundPackets1_12_1.class, ClientboundPackets1_12.class, ServerboundPackets1_12_1.class, ServerboundPackets1_12.class); } @Override protected void registerPackets() { - cancelClientbound(ClientboundPackets1_12_1.CRAFT_RECIPE_RESPONSE); - cancelServerbound(ServerboundPackets1_12.PREPARE_CRAFTING_GRID); + cancelClientbound(ClientboundPackets1_12_1.PLACE_GHOST_RECIPE); + cancelServerbound(ServerboundPackets1_12.CRAFTING_RECIPE_PLACEMENT); } } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_1to1_12_2/Protocol1_12_1To1_12_2.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_12_2to1_12_1/Protocol1_12_2To1_12_1.java similarity index 78% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_1to1_12_2/Protocol1_12_1To1_12_2.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_12_2to1_12_1/Protocol1_12_2To1_12_1.java index 9fbae014..c3e7b0bd 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_1to1_12_2/Protocol1_12_1To1_12_2.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_12_2to1_12_1/Protocol1_12_2To1_12_1.java @@ -16,19 +16,19 @@ * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_12_1to1_12_2; +package com.viaversion.viabackwards.protocol.v1_12_2to1_12_1; import com.viaversion.viabackwards.api.BackwardsProtocol; -import com.viaversion.viabackwards.protocol.protocol1_12_1to1_12_2.storage.KeepAliveTracker; +import com.viaversion.viabackwards.protocol.v1_12_2to1_12_1.storage.KeepAliveTracker; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; -import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.protocols.protocol1_12_1to1_12.ClientboundPackets1_12_1; -import com.viaversion.viaversion.protocols.protocol1_12_1to1_12.ServerboundPackets1_12_1; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.protocols.v1_12to1_12_1.packet.ClientboundPackets1_12_1; +import com.viaversion.viaversion.protocols.v1_12to1_12_1.packet.ServerboundPackets1_12_1; -public class Protocol1_12_1To1_12_2 extends BackwardsProtocol { +public class Protocol1_12_2To1_12_1 extends BackwardsProtocol { - public Protocol1_12_1To1_12_2() { + public Protocol1_12_2To1_12_1() { super(ClientboundPackets1_12_1.class, ClientboundPackets1_12_1.class, ServerboundPackets1_12_1.class, ServerboundPackets1_12_1.class); } @@ -38,9 +38,9 @@ public class Protocol1_12_1To1_12_2 extends BackwardsProtocol { - Long keepAlive = packetWrapper.read(Type.LONG); + Long keepAlive = packetWrapper.read(Types.LONG); packetWrapper.user().get(KeepAliveTracker.class).setKeepAlive(keepAlive); - packetWrapper.write(Type.VAR_INT, keepAlive.hashCode()); + packetWrapper.write(Types.VAR_INT, keepAlive.hashCode()); }); } }); @@ -49,13 +49,13 @@ public class Protocol1_12_1To1_12_2 extends BackwardsProtocol { - int keepAlive = packetWrapper.read(Type.VAR_INT); + int keepAlive = packetWrapper.read(Types.VAR_INT); long realKeepAlive = packetWrapper.user().get(KeepAliveTracker.class).getKeepAlive(); if (keepAlive != Long.hashCode(realKeepAlive)) { packetWrapper.cancel(); // Wrong data, cancel packet return; } - packetWrapper.write(Type.LONG, realKeepAlive); + packetWrapper.write(Types.LONG, realKeepAlive); // Reset KeepAliveTracker (to prevent sending same valid value in a row causing a timeout) packetWrapper.user().get(KeepAliveTracker.class).setKeepAlive(Integer.MAX_VALUE); }); diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_1to1_12_2/storage/KeepAliveTracker.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_12_2to1_12_1/storage/KeepAliveTracker.java similarity index 94% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_1to1_12_2/storage/KeepAliveTracker.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_12_2to1_12_1/storage/KeepAliveTracker.java index 48fb9236..202134f6 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_1to1_12_2/storage/KeepAliveTracker.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_12_2to1_12_1/storage/KeepAliveTracker.java @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_12_1to1_12_2.storage; +package com.viaversion.viabackwards.protocol.v1_12_2to1_12_1.storage; import com.viaversion.viaversion.api.connection.StorableObject; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11_1to1_12/Protocol1_11_1To1_12.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_12to1_11_1/Protocol1_12To1_11_1.java similarity index 51% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11_1to1_12/Protocol1_11_1To1_12.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_12to1_11_1/Protocol1_12To1_11_1.java index 5efed02a..dd1521d9 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11_1to1_12/Protocol1_11_1To1_12.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_12to1_11_1/Protocol1_12To1_11_1.java @@ -16,34 +16,34 @@ * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_11_1to1_12; +package com.viaversion.viabackwards.protocol.v1_12to1_11_1; import com.viaversion.viabackwards.api.BackwardsProtocol; -import com.viaversion.viabackwards.api.data.BackwardsMappings; -import com.viaversion.viabackwards.protocol.protocol1_11_1to1_12.data.ShoulderTracker; -import com.viaversion.viabackwards.protocol.protocol1_11_1to1_12.packets.BlockItemPackets1_12; -import com.viaversion.viabackwards.protocol.protocol1_11_1to1_12.packets.ChatPackets1_12; -import com.viaversion.viabackwards.protocol.protocol1_11_1to1_12.packets.EntityPackets1_12; -import com.viaversion.viabackwards.protocol.protocol1_11_1to1_12.packets.SoundPackets1_12; +import com.viaversion.viabackwards.api.data.BackwardsMappingData; +import com.viaversion.viabackwards.protocol.v1_12to1_11_1.data.ShoulderTracker; +import com.viaversion.viabackwards.protocol.v1_12to1_11_1.rewriter.BlockItemPacketRewriter1_12; +import com.viaversion.viabackwards.protocol.v1_12to1_11_1.rewriter.ChatPacketRewriter1_12; +import com.viaversion.viabackwards.protocol.v1_12to1_11_1.rewriter.EntityPacketRewriter1_12; +import com.viaversion.viabackwards.protocol.v1_12to1_11_1.rewriter.SoundPacketRewriter1_12; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.ClientWorld; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_12; -import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.data.entity.EntityTrackerBase; import com.viaversion.viaversion.libs.gson.JsonElement; -import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.ClientboundPackets1_12; -import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.ServerboundPackets1_12; -import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ClientboundPackets1_9_3; -import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ServerboundPackets1_9_3; -import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8; +import com.viaversion.viaversion.protocols.v1_11_1to1_12.packet.ClientboundPackets1_12; +import com.viaversion.viaversion.protocols.v1_11_1to1_12.packet.ServerboundPackets1_12; +import com.viaversion.viaversion.protocols.v1_9_1to1_9_3.packet.ClientboundPackets1_9_3; +import com.viaversion.viaversion.protocols.v1_9_1to1_9_3.packet.ServerboundPackets1_9_3; +import com.viaversion.viaversion.protocols.v1_8to1_9.Protocol1_8To1_9; -public class Protocol1_11_1To1_12 extends BackwardsProtocol { +public class Protocol1_12To1_11_1 extends BackwardsProtocol { - private static final BackwardsMappings MAPPINGS = new BackwardsMappings("1.12", "1.11"); - private final EntityPackets1_12 entityPackets = new EntityPackets1_12(this); - private final BlockItemPackets1_12 blockItemPackets = new BlockItemPackets1_12(this); + private static final BackwardsMappingData MAPPINGS = new BackwardsMappingData("1.12", "1.11"); + private final EntityPacketRewriter1_12 entityPackets = new EntityPacketRewriter1_12(this); + private final BlockItemPacketRewriter1_12 blockItemPackets = new BlockItemPacketRewriter1_12(this); - public Protocol1_11_1To1_12() { + public Protocol1_12To1_11_1() { super(ClientboundPackets1_12.class, ClientboundPackets1_9_3.class, ServerboundPackets1_12.class, ServerboundPackets1_9_3.class); } @@ -51,19 +51,19 @@ public class Protocol1_11_1To1_12 extends BackwardsProtocol { - int action = wrapper.passthrough(Type.VAR_INT); + registerClientbound(ClientboundPackets1_12.SET_TITLES, wrapper -> { + int action = wrapper.passthrough(Types.VAR_INT); if (action >= 0 && action <= 2) { - JsonElement component = wrapper.read(Type.COMPONENT); - wrapper.write(Type.COMPONENT, Protocol1_9To1_8.STRING_TO_JSON.transform(wrapper, component.toString())); + JsonElement component = wrapper.read(Types.COMPONENT); + wrapper.write(Types.COMPONENT, Protocol1_8To1_9.STRING_TO_JSON.transform(wrapper, component.toString())); } }); - cancelClientbound(ClientboundPackets1_12.ADVANCEMENTS); - cancelClientbound(ClientboundPackets1_12.UNLOCK_RECIPES); + cancelClientbound(ClientboundPackets1_12.UPDATE_ADVANCEMENTS); + cancelClientbound(ClientboundPackets1_12.RECIPE); cancelClientbound(ClientboundPackets1_12.SELECT_ADVANCEMENTS_TAB); } @@ -79,17 +79,17 @@ public class Protocol1_11_1To1_12 extends BackwardsProtocol. */ -package com.viaversion.viabackwards.protocol.protocol1_11_1to1_12.data; +package com.viaversion.viabackwards.protocol.v1_12to1_11_1.data; import java.util.HashMap; import java.util.Map; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11_1to1_12/data/BlockColors.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_12to1_11_1/data/BlockColors.java similarity index 95% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11_1to1_12/data/BlockColors.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_12to1_11_1/data/BlockColors.java index 7577f9bb..ac5ecf6e 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11_1to1_12/data/BlockColors.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_12to1_11_1/data/BlockColors.java @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_11_1to1_12.data; +package com.viaversion.viabackwards.protocol.v1_12to1_11_1.data; public class BlockColors { private static final String[] COLORS = new String[16]; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11_1to1_12/data/MapColorMapping.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_12to1_11_1/data/MapColorMapping.java similarity index 98% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11_1to1_12/data/MapColorMapping.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_12to1_11_1/data/MapColorMapping.java index d5b670f6..dd63be64 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11_1to1_12/data/MapColorMapping.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_12to1_11_1/data/MapColorMapping.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_11_1to1_12.data; +package com.viaversion.viabackwards.protocol.v1_12to1_11_1.data; import com.viaversion.viaversion.libs.fastutil.ints.Int2IntMap; import com.viaversion.viaversion.libs.fastutil.ints.Int2IntOpenHashMap; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11_1to1_12/data/ParrotStorage.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_12to1_11_1/data/ParrotStorage.java similarity index 94% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11_1to1_12/data/ParrotStorage.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_12to1_11_1/data/ParrotStorage.java index 3d3759fe..a91c050c 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11_1to1_12/data/ParrotStorage.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_12to1_11_1/data/ParrotStorage.java @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_11_1to1_12.data; +package com.viaversion.viabackwards.protocol.v1_12to1_11_1.data; public class ParrotStorage { private boolean tamed = true; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11_1to1_12/data/ShoulderTracker.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_12to1_11_1/data/ShoulderTracker.java similarity index 86% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11_1to1_12/data/ShoulderTracker.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_12to1_11_1/data/ShoulderTracker.java index ff670b8c..50ce011f 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11_1to1_12/data/ShoulderTracker.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_12to1_11_1/data/ShoulderTracker.java @@ -16,16 +16,17 @@ * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_11_1to1_12.data; +package com.viaversion.viabackwards.protocol.v1_12to1_11_1.data; import com.viaversion.viabackwards.ViaBackwards; -import com.viaversion.viabackwards.protocol.protocol1_11_1to1_12.Protocol1_11_1To1_12; +import com.viaversion.viabackwards.protocol.v1_12to1_11_1.Protocol1_12To1_11_1; import com.viaversion.viaversion.api.connection.StoredObject; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.ClientboundPackets1_12; -import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.protocols.v1_11_1to1_12.packet.ClientboundPackets1_12; +import com.viaversion.viaversion.protocols.v1_8to1_9.Protocol1_8To1_9; import com.viaversion.viaversion.util.Key; import java.util.Locale; @@ -39,17 +40,17 @@ public class ShoulderTracker extends StoredObject { } public void update() { - PacketWrapper wrapper = PacketWrapper.create(ClientboundPackets1_12.CHAT_MESSAGE, null, getUser()); + PacketWrapper wrapper = PacketWrapper.create(ClientboundPackets1_12.CHAT, null, getUser()); try { - wrapper.write(Type.COMPONENT, Protocol1_9To1_8.STRING_TO_JSON.transform(wrapper, generateString())); + wrapper.write(Types.COMPONENT, Protocol1_8To1_9.STRING_TO_JSON.transform(wrapper, generateString())); } catch (final Exception e) { throw new RuntimeException(e); } - wrapper.write(Type.BYTE, (byte) 2); + wrapper.write(Types.BYTE, (byte) 2); try { - wrapper.scheduleSend(Protocol1_11_1To1_12.class); + wrapper.scheduleSend(Protocol1_12To1_11_1.class); } catch (Exception e) { ViaBackwards.getPlatform().getLogger().severe("Failed to send the shoulder indication"); e.printStackTrace(); diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11_1to1_12/packets/BlockItemPackets1_12.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_12to1_11_1/rewriter/BlockItemPacketRewriter1_12.java similarity index 62% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11_1to1_12/packets/BlockItemPackets1_12.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_12to1_11_1/rewriter/BlockItemPacketRewriter1_12.java index a138cee4..c2ba414b 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11_1to1_12/packets/BlockItemPackets1_12.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_12to1_11_1/rewriter/BlockItemPacketRewriter1_12.java @@ -16,11 +16,11 @@ * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_11_1to1_12.packets; +package com.viaversion.viabackwards.protocol.v1_12to1_11_1.rewriter; import com.viaversion.viabackwards.api.rewriters.LegacyBlockItemRewriter; -import com.viaversion.viabackwards.protocol.protocol1_11_1to1_12.Protocol1_11_1To1_12; -import com.viaversion.viabackwards.protocol.protocol1_11_1to1_12.data.MapColorMapping; +import com.viaversion.viabackwards.protocol.v1_12to1_11_1.Protocol1_12To1_11_1; +import com.viaversion.viabackwards.protocol.v1_12to1_11_1.data.MapColorMapping; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.BlockChangeRecord; import com.viaversion.viaversion.api.minecraft.ClientWorld; @@ -29,49 +29,50 @@ import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_9_3; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.IntArrayTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.LongArrayTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.Tag; -import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.ClientboundPackets1_12; -import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.ServerboundPackets1_12; -import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ServerboundPackets1_9_3; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.IntArrayTag; +import com.viaversion.nbt.tag.LongArrayTag; +import com.viaversion.nbt.tag.Tag; +import com.viaversion.viaversion.protocols.v1_11_1to1_12.packet.ClientboundPackets1_12; +import com.viaversion.viaversion.protocols.v1_11_1to1_12.packet.ServerboundPackets1_12; +import com.viaversion.viaversion.protocols.v1_9_1to1_9_3.packet.ServerboundPackets1_9_3; import java.util.Iterator; import java.util.Map; import org.checkerframework.checker.nullness.qual.Nullable; -public class BlockItemPackets1_12 extends LegacyBlockItemRewriter { +public class BlockItemPacketRewriter1_12 extends LegacyBlockItemRewriter { - public BlockItemPackets1_12(Protocol1_11_1To1_12 protocol) { + public BlockItemPacketRewriter1_12(Protocol1_12To1_11_1 protocol) { super(protocol, "1.12"); } @Override protected void registerPackets() { - registerBlockChange(ClientboundPackets1_12.BLOCK_CHANGE); - registerMultiBlockChange(ClientboundPackets1_12.MULTI_BLOCK_CHANGE); + registerBlockChange(ClientboundPackets1_12.BLOCK_UPDATE); + registerMultiBlockChange(ClientboundPackets1_12.CHUNK_BLOCKS_UPDATE); - protocol.registerClientbound(ClientboundPackets1_12.MAP_DATA, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_12.MAP_ITEM_DATA, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); - map(Type.BYTE); - map(Type.BOOLEAN); + map(Types.VAR_INT); + map(Types.BYTE); + map(Types.BOOLEAN); handler(wrapper -> { - int count = wrapper.passthrough(Type.VAR_INT); + int count = wrapper.passthrough(Types.VAR_INT); for (int i = 0; i < count * 3; i++) { - wrapper.passthrough(Type.BYTE); + wrapper.passthrough(Types.BYTE); } }); handler(wrapper -> { - short columns = wrapper.passthrough(Type.UNSIGNED_BYTE); + short columns = wrapper.passthrough(Types.UNSIGNED_BYTE); if (columns <= 0) return; - wrapper.passthrough(Type.UNSIGNED_BYTE); // Rows - wrapper.passthrough(Type.UNSIGNED_BYTE); // X - wrapper.passthrough(Type.UNSIGNED_BYTE); // Z - byte[] data = wrapper.read(Type.BYTE_ARRAY_PRIMITIVE); + wrapper.passthrough(Types.UNSIGNED_BYTE); // Rows + wrapper.passthrough(Types.UNSIGNED_BYTE); // X + wrapper.passthrough(Types.UNSIGNED_BYTE); // Z + byte[] data = wrapper.read(Types.BYTE_ARRAY_PRIMITIVE); for (int i = 0; i < data.length; i++) { short color = (short) (data[i] & 0xFF); if (color > 143) { @@ -79,82 +80,82 @@ public class BlockItemPackets1_12 extends LegacyBlockItemRewriter Trading - protocol.registerClientbound(ClientboundPackets1_12.PLUGIN_MESSAGE, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_12.CUSTOM_PAYLOAD, new PacketHandlers() { @Override public void register() { - map(Type.STRING); // 0 - Channel + map(Types.STRING); // 0 - Channel handler(wrapper -> { - if (wrapper.get(Type.STRING, 0).equals("MC|TrList")) { - wrapper.passthrough(Type.INT); // Passthrough Window ID + if (wrapper.get(Types.STRING, 0).equals("MC|TrList")) { + wrapper.passthrough(Types.INT); // Passthrough Window ID - int size = wrapper.passthrough(Type.UNSIGNED_BYTE); + int size = wrapper.passthrough(Types.UNSIGNED_BYTE); for (int i = 0; i < size; i++) { - wrapper.write(Type.ITEM1_8, handleItemToClient(wrapper.user(), wrapper.read(Type.ITEM1_8))); // Input Item - wrapper.write(Type.ITEM1_8, handleItemToClient(wrapper.user(), wrapper.read(Type.ITEM1_8))); // Output Item + wrapper.write(Types.ITEM1_8, handleItemToClient(wrapper.user(), wrapper.read(Types.ITEM1_8))); // Input Item + wrapper.write(Types.ITEM1_8, handleItemToClient(wrapper.user(), wrapper.read(Types.ITEM1_8))); // Output Item - boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item + boolean secondItem = wrapper.passthrough(Types.BOOLEAN); // Has second item if (secondItem) - wrapper.write(Type.ITEM1_8, handleItemToClient(wrapper.user(), wrapper.read(Type.ITEM1_8))); // Second Item + wrapper.write(Types.ITEM1_8, handleItemToClient(wrapper.user(), wrapper.read(Types.ITEM1_8))); // Second Item - wrapper.passthrough(Type.BOOLEAN); // Trade disabled - wrapper.passthrough(Type.INT); // Number of tools uses - wrapper.passthrough(Type.INT); // Maximum number of trade uses + wrapper.passthrough(Types.BOOLEAN); // Trade disabled + wrapper.passthrough(Types.INT); // Number of tools uses + wrapper.passthrough(Types.INT); // Maximum number of trade uses } } }); } }); - protocol.registerServerbound(ServerboundPackets1_9_3.CLICK_WINDOW, new PacketHandlers() { + protocol.registerServerbound(ServerboundPackets1_9_3.CONTAINER_CLICK, new PacketHandlers() { @Override public void register() { - map(Type.UNSIGNED_BYTE); // 0 - Window ID - map(Type.SHORT); // 1 - Slot - map(Type.BYTE); // 2 - Button - map(Type.SHORT); // 3 - Action number - map(Type.VAR_INT); // 4 - Mode - map(Type.ITEM1_8); // 5 - Clicked Item + map(Types.UNSIGNED_BYTE); // 0 - Window ID + map(Types.SHORT); // 1 - Slot + map(Types.BYTE); // 2 - Button + map(Types.SHORT); // 3 - Action number + map(Types.VAR_INT); // 4 - Mode + map(Types.ITEM1_8); // 5 - Clicked Item handler(wrapper -> { - if (wrapper.get(Type.VAR_INT, 0) == 1) { // Shift click + if (wrapper.get(Types.VAR_INT, 0) == 1) { // Shift click // https://github.com/ViaVersion/ViaVersion/pull/754 // Previously clients grab the item from the clicked slot *before* it has // been moved however now they grab the slot item *after* it has been moved // and send that in the packet. - wrapper.set(Type.ITEM1_8, 0, null); // Set null item (probably will work) + wrapper.set(Types.ITEM1_8, 0, null); // Set null item (probably will work) // Apologize (may happen in some cases, maybe if inventory is full?) - PacketWrapper confirm = wrapper.create(ServerboundPackets1_12.WINDOW_CONFIRMATION); - confirm.write(Type.UNSIGNED_BYTE, wrapper.get(Type.UNSIGNED_BYTE, 0)); - confirm.write(Type.SHORT, wrapper.get(Type.SHORT, 1)); - confirm.write(Type.BOOLEAN, false); // Success - not used + PacketWrapper confirm = wrapper.create(ServerboundPackets1_12.CONTAINER_ACK); + confirm.write(Types.UNSIGNED_BYTE, wrapper.get(Types.UNSIGNED_BYTE, 0)); + confirm.write(Types.SHORT, wrapper.get(Types.SHORT, 1)); + confirm.write(Types.BOOLEAN, false); // Success - not used - wrapper.sendToServer(Protocol1_11_1To1_12.class); + wrapper.sendToServer(Protocol1_12To1_11_1.class); wrapper.cancel(); - confirm.sendToServer(Protocol1_11_1To1_12.class); + confirm.sendToServer(Protocol1_12To1_11_1.class); return; } - Item item = wrapper.get(Type.ITEM1_8, 0); + Item item = wrapper.get(Types.ITEM1_8, 0); handleItemToServer(wrapper.user(), item); }); } }); - registerCreativeInvAction(ServerboundPackets1_9_3.CREATIVE_INVENTORY_ACTION); + registerSetCreativeModeSlot(ServerboundPackets1_9_3.SET_CREATIVE_MODE_SLOT); - protocol.registerClientbound(ClientboundPackets1_12.CHUNK_DATA, wrapper -> { + protocol.registerClientbound(ClientboundPackets1_12.LEVEL_CHUNK, wrapper -> { ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); ChunkType1_9_3 type = ChunkType1_9_3.forEnvironment(clientWorld.getEnvironment()); // Use the 1.9.4 Chunk type since nothing changed. @@ -166,31 +167,31 @@ public class BlockItemPackets1_12 extends LegacyBlockItemRewriter { // Remove bed color - if (wrapper.get(Type.UNSIGNED_BYTE, 0) == 11) + if (wrapper.get(Types.UNSIGNED_BYTE, 0) == 11) wrapper.cancel(); }); } }); protocol.getEntityRewriter().filter().handler((event, meta) -> { - if (meta.metaType().type().equals(Type.ITEM1_8)) // Is Item + if (meta.dataType().type().equals(Types.ITEM1_8)) // Is Item meta.setValue(handleItemToClient(event.user(), (Item) meta.getValue())); }); - protocol.registerServerbound(ServerboundPackets1_9_3.CLIENT_STATUS, new PacketHandlers() { + protocol.registerServerbound(ServerboundPackets1_9_3.CLIENT_COMMAND, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); // Action ID + map(Types.VAR_INT); // Action ID handler(wrapper -> { // Open Inventory - if (wrapper.get(Type.VAR_INT, 0) == 2) { + if (wrapper.get(Types.VAR_INT, 0) == 2) { wrapper.cancel(); } }); diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11_1to1_12/packets/ChatPackets1_12.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_12to1_11_1/rewriter/ChatPacketRewriter1_12.java similarity index 80% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11_1to1_12/packets/ChatPackets1_12.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_12to1_11_1/rewriter/ChatPacketRewriter1_12.java index 03471eba..39c20772 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11_1to1_12/packets/ChatPackets1_12.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_12to1_11_1/rewriter/ChatPacketRewriter1_12.java @@ -16,19 +16,20 @@ * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_11_1to1_12.packets; +package com.viaversion.viabackwards.protocol.v1_12to1_11_1.rewriter; -import com.viaversion.viabackwards.protocol.protocol1_11_1to1_12.Protocol1_11_1To1_12; -import com.viaversion.viabackwards.protocol.protocol1_11_1to1_12.data.AdvancementTranslations; +import com.viaversion.viabackwards.protocol.v1_12to1_11_1.Protocol1_12To1_11_1; +import com.viaversion.viabackwards.protocol.v1_12to1_11_1.data.AdvancementTranslations; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.rewriter.RewriterBase; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.libs.gson.JsonElement; import com.viaversion.viaversion.libs.gson.JsonObject; -import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.ClientboundPackets1_12; +import com.viaversion.viaversion.protocols.v1_11_1to1_12.packet.ClientboundPackets1_12; import com.viaversion.viaversion.rewriter.ComponentRewriter; -public class ChatPackets1_12 extends RewriterBase { +public class ChatPacketRewriter1_12 extends RewriterBase { public static final ComponentRewriter COMPONENT_REWRITER = new ComponentRewriter<>(null, ComponentRewriter.ReadType.JSON) { @Override @@ -57,14 +58,14 @@ public class ChatPackets1_12 extends RewriterBase { } }; - public ChatPackets1_12(Protocol1_11_1To1_12 protocol) { + public ChatPacketRewriter1_12(Protocol1_12To1_11_1 protocol) { super(protocol); } @Override protected void registerPackets() { - protocol.registerClientbound(ClientboundPackets1_12.CHAT_MESSAGE, wrapper -> { - JsonElement element = wrapper.passthrough(Type.COMPONENT); + protocol.registerClientbound(ClientboundPackets1_12.CHAT, wrapper -> { + JsonElement element = wrapper.passthrough(Types.COMPONENT); COMPONENT_REWRITER.processText(wrapper.user(), element); }); } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11_1to1_12/packets/EntityPackets1_12.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_12to1_11_1/rewriter/EntityPacketRewriter1_12.java similarity index 59% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11_1to1_12/packets/EntityPackets1_12.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_12to1_11_1/rewriter/EntityPacketRewriter1_12.java index 753ea278..46d9b8ce 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11_1to1_12/packets/EntityPackets1_12.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_12to1_11_1/rewriter/EntityPacketRewriter1_12.java @@ -16,46 +16,47 @@ * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_11_1to1_12.packets; +package com.viaversion.viabackwards.protocol.v1_12to1_11_1.rewriter; import com.viaversion.viabackwards.api.rewriters.LegacyEntityRewriter; -import com.viaversion.viabackwards.protocol.protocol1_11_1to1_12.Protocol1_11_1To1_12; -import com.viaversion.viabackwards.protocol.protocol1_11_1to1_12.data.ParrotStorage; -import com.viaversion.viabackwards.protocol.protocol1_11_1to1_12.data.ShoulderTracker; +import com.viaversion.viabackwards.protocol.v1_12to1_11_1.Protocol1_12To1_11_1; +import com.viaversion.viabackwards.protocol.v1_12to1_11_1.data.ParrotStorage; +import com.viaversion.viabackwards.protocol.v1_12to1_11_1.data.ShoulderTracker; import com.viaversion.viaversion.api.data.entity.StoredEntityData; import com.viaversion.viaversion.api.minecraft.entities.EntityType; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_12; -import com.viaversion.viaversion.api.minecraft.metadata.Metadata; -import com.viaversion.viaversion.api.minecraft.metadata.types.MetaType1_12; +import com.viaversion.viaversion.api.minecraft.entitydata.EntityData; +import com.viaversion.viaversion.api.minecraft.entitydata.types.EntityDataTypes1_12; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.version.Types1_12; import com.viaversion.viaversion.libs.gson.JsonElement; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.ClientboundPackets1_12; -import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ClientboundPackets1_9_3; +import com.viaversion.viaversion.protocols.v1_11_1to1_12.packet.ClientboundPackets1_12; +import com.viaversion.viaversion.protocols.v1_9_1to1_9_3.packet.ClientboundPackets1_9_3; +import com.viaversion.nbt.tag.CompoundTag; -public class EntityPackets1_12 extends LegacyEntityRewriter { +public class EntityPacketRewriter1_12 extends LegacyEntityRewriter { - public EntityPackets1_12(Protocol1_11_1To1_12 protocol) { + public EntityPacketRewriter1_12(Protocol1_12To1_11_1 protocol) { super(protocol); } @Override protected void registerPackets() { - protocol.registerClientbound(ClientboundPackets1_12.SPAWN_ENTITY, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_12.ADD_ENTITY, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); // 0 - Entity id - map(Type.UUID); // 1 - UUID - map(Type.BYTE); // 2 - Type - map(Type.DOUBLE); // 3 - x - map(Type.DOUBLE); // 4 - y - map(Type.DOUBLE); // 5 - z - map(Type.BYTE); // 6 - Pitch - map(Type.BYTE); // 7 - Yaw - map(Type.INT); // 8 - data + map(Types.VAR_INT); // 0 - Entity id + map(Types.UUID); // 1 - UUID + map(Types.BYTE); // 2 - Type + map(Types.DOUBLE); // 3 - x + map(Types.DOUBLE); // 4 - y + map(Types.DOUBLE); // 5 - z + map(Types.BYTE); // 6 - Pitch + map(Types.BYTE); // 7 - Yaw + map(Types.INT); // 8 - data // Track Entity handler(getObjectTrackerHandler()); @@ -65,119 +66,119 @@ public class EntityPackets1_12 extends LegacyEntityRewriter { ShoulderTracker tracker = wrapper.user().get(ShoulderTracker.class); - tracker.setEntityId(wrapper.get(Type.INT, 0)); + tracker.setEntityId(wrapper.get(Types.INT, 0)); }); // Send fake inventory achievement handler(packetWrapper -> { - PacketWrapper wrapper = PacketWrapper.create(ClientboundPackets1_9_3.STATISTICS, packetWrapper.user()); + PacketWrapper wrapper = PacketWrapper.create(ClientboundPackets1_9_3.AWARD_STATS, packetWrapper.user()); - wrapper.write(Type.VAR_INT, 1); - wrapper.write(Type.STRING, "achievement.openInventory"); - wrapper.write(Type.VAR_INT, 1); + wrapper.write(Types.VAR_INT, 1); + wrapper.write(Types.STRING, "achievement.openInventory"); + wrapper.write(Types.VAR_INT, 1); - wrapper.scheduleSend(Protocol1_11_1To1_12.class); + wrapper.scheduleSend(Protocol1_12To1_11_1.class); }); } }); registerRespawn(ClientboundPackets1_12.RESPAWN); - registerRemoveEntities(ClientboundPackets1_12.DESTROY_ENTITIES); - registerMetadataRewriter(ClientboundPackets1_12.ENTITY_METADATA, Types1_12.METADATA_LIST); + registerRemoveEntities(ClientboundPackets1_12.REMOVE_ENTITIES); + registerSetEntityData(ClientboundPackets1_12.SET_ENTITY_DATA, Types1_12.ENTITY_DATA_LIST); - protocol.registerClientbound(ClientboundPackets1_12.ENTITY_PROPERTIES, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_12.UPDATE_ATTRIBUTES, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); - map(Type.INT); + map(Types.VAR_INT); + map(Types.INT); handler(wrapper -> { - int size = wrapper.get(Type.INT, 0); + int size = wrapper.get(Types.INT, 0); int newSize = size; for (int i = 0; i < size; i++) { - String key = wrapper.read(Type.STRING); + String key = wrapper.read(Types.STRING); // Remove new attribute if (key.equals("generic.flyingSpeed")) { newSize--; - wrapper.read(Type.DOUBLE); - int modSize = wrapper.read(Type.VAR_INT); + wrapper.read(Types.DOUBLE); + int modSize = wrapper.read(Types.VAR_INT); for (int j = 0; j < modSize; j++) { - wrapper.read(Type.UUID); - wrapper.read(Type.DOUBLE); - wrapper.read(Type.BYTE); + wrapper.read(Types.UUID); + wrapper.read(Types.DOUBLE); + wrapper.read(Types.BYTE); } } else { - wrapper.write(Type.STRING, key); - wrapper.passthrough(Type.DOUBLE); - int modSize = wrapper.passthrough(Type.VAR_INT); + wrapper.write(Types.STRING, key); + wrapper.passthrough(Types.DOUBLE); + int modSize = wrapper.passthrough(Types.VAR_INT); for (int j = 0; j < modSize; j++) { - wrapper.passthrough(Type.UUID); - wrapper.passthrough(Type.DOUBLE); - wrapper.passthrough(Type.BYTE); + wrapper.passthrough(Types.UUID); + wrapper.passthrough(Types.DOUBLE); + wrapper.passthrough(Types.BYTE); } } } if (newSize != size) { - wrapper.set(Type.INT, 0, newSize); + wrapper.set(Types.INT, 0, newSize); } }); } @@ -186,12 +187,12 @@ public class EntityPackets1_12 extends LegacyEntityRewriter storage.add(new Metadata(12, MetaType1_12.Byte, (byte) 0x00))); - mapEntityTypeWithData(EntityTypes1_12.EntityType.ILLUSION_ILLAGER, EntityTypes1_12.EntityType.EVOCATION_ILLAGER).plainName(); + mapEntityTypeWithData(EntityTypes1_12.EntityType.PARROT, EntityTypes1_12.EntityType.BAT).plainName().spawnMetadata(storage -> storage.add(new EntityData(12, EntityDataTypes1_12.BYTE, (byte) 0x00))); + mapEntityTypeWithData(EntityTypes1_12.EntityType.ILLUSIONER, EntityTypes1_12.EntityType.EVOKER).plainName(); filter().handler((event, meta) -> { - if (meta.metaType() == MetaType1_12.Chat) { - ChatPackets1_12.COMPONENT_REWRITER.processText(event.user(), (JsonElement) meta.getValue()); + if (meta.dataType() == EntityDataTypes1_12.COMPONENT) { + ComponentRewriter1_12.COMPONENT_REWRITER.processText(event.user(), (JsonElement) meta.getValue()); } }); @@ -266,7 +267,7 @@ public class EntityPackets1_12 extends LegacyEntityRewriter { - CompoundTag tag = (CompoundTag) event.meta().getValue(); + CompoundTag tag = (CompoundTag) event.data().getValue(); ShoulderTracker tracker = event.user().get(ShoulderTracker.class); if (tag.isEmpty() && tracker.getRightShoulder() != null) { diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11_1to1_12/packets/SoundPackets1_12.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_12to1_11_1/rewriter/SoundPacketRewriter1_12.java similarity index 83% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11_1to1_12/packets/SoundPackets1_12.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_12to1_11_1/rewriter/SoundPacketRewriter1_12.java index 87c3f7c2..fa72da9d 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_11_1to1_12/packets/SoundPackets1_12.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_12to1_11_1/rewriter/SoundPacketRewriter1_12.java @@ -16,48 +16,49 @@ * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_11_1to1_12.packets; +package com.viaversion.viabackwards.protocol.v1_12to1_11_1.rewriter; import com.viaversion.viabackwards.api.rewriters.LegacySoundRewriter; -import com.viaversion.viabackwards.protocol.protocol1_11_1to1_12.Protocol1_11_1To1_12; +import com.viaversion.viabackwards.protocol.v1_12to1_11_1.Protocol1_12To1_11_1; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.ClientboundPackets1_12; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.protocols.v1_11_1to1_12.packet.ClientboundPackets1_12; -public class SoundPackets1_12 extends LegacySoundRewriter { +public class SoundPacketRewriter1_12 extends LegacySoundRewriter { - public SoundPackets1_12(Protocol1_11_1To1_12 protocol) { + public SoundPacketRewriter1_12(Protocol1_12To1_11_1 protocol) { super(protocol); } @Override protected void registerPackets() { - protocol.registerClientbound(ClientboundPackets1_12.NAMED_SOUND, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_12.CUSTOM_SOUND, new PacketHandlers() { @Override public void register() { - map(Type.STRING); // 0 - Sound name - map(Type.VAR_INT); // 1 - Sound Category - map(Type.INT); // 2 - x - map(Type.INT); // 3 - y - map(Type.INT); // 4 - z - map(Type.FLOAT); // 5 - Volume - map(Type.FLOAT); // 6 - Pitch + map(Types.STRING); // 0 - Sound name + map(Types.VAR_INT); // 1 - Sound Category + map(Types.INT); // 2 - x + map(Types.INT); // 3 - y + map(Types.INT); // 4 - z + map(Types.FLOAT); // 5 - Volume + map(Types.FLOAT); // 6 - Pitch } }); protocol.registerClientbound(ClientboundPackets1_12.SOUND, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); // 0 - Sound name - map(Type.VAR_INT); // 1 - Sound Category - map(Type.INT); // 2 - x - map(Type.INT); // 3 - y - map(Type.INT); // 4 - z - map(Type.FLOAT); // 5 - Volume - map(Type.FLOAT); // 6 - Pitch + map(Types.VAR_INT); // 0 - Sound name + map(Types.VAR_INT); // 1 - Sound Category + map(Types.INT); // 2 - x + map(Types.INT); // 3 - y + map(Types.INT); // 4 - z + map(Types.FLOAT); // 5 - Volume + map(Types.FLOAT); // 6 - Pitch handler(wrapper -> { - int oldId = wrapper.get(Type.VAR_INT, 0); + int oldId = wrapper.get(Types.VAR_INT, 0); int newId = handleSounds(oldId); if (newId == -1) { wrapper.cancel(); @@ -65,9 +66,9 @@ public class SoundPackets1_12 extends LegacySoundRewriter } if (hasPitch(oldId)) { - wrapper.set(Type.FLOAT, 1, handlePitch(oldId)); + wrapper.set(Types.FLOAT, 1, handlePitch(oldId)); } - wrapper.set(Type.VAR_INT, 0, newId); + wrapper.set(Types.VAR_INT, 0, newId); }); } }); diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13to1_13_1/Protocol1_13To1_13_1.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13_1to1_13/Protocol1_13_1To1_13.java similarity index 57% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13to1_13_1/Protocol1_13To1_13_1.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_13_1to1_13/Protocol1_13_1To1_13.java index 0e99bd2e..2f47921a 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13to1_13_1/Protocol1_13To1_13_1.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13_1to1_13/Protocol1_13_1To1_13.java @@ -15,16 +15,16 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_13to1_13_1; +package com.viaversion.viabackwards.protocol.v1_13_1to1_13; import com.viaversion.viabackwards.ViaBackwards; import com.viaversion.viabackwards.api.BackwardsProtocol; -import com.viaversion.viabackwards.api.data.BackwardsMappings; +import com.viaversion.viabackwards.api.data.BackwardsMappingData; import com.viaversion.viabackwards.api.rewriters.TranslatableRewriter; -import com.viaversion.viabackwards.protocol.protocol1_13to1_13_1.data.CommandRewriter1_13_1; -import com.viaversion.viabackwards.protocol.protocol1_13to1_13_1.packets.EntityPackets1_13_1; -import com.viaversion.viabackwards.protocol.protocol1_13to1_13_1.packets.InventoryPackets1_13_1; -import com.viaversion.viabackwards.protocol.protocol1_13to1_13_1.packets.WorldPackets1_13_1; +import com.viaversion.viabackwards.protocol.v1_13_1to1_13.data.CommandRewriter1_13_1; +import com.viaversion.viabackwards.protocol.v1_13_1to1_13.rewriter.EntityPacketRewriter1_13_1; +import com.viaversion.viabackwards.protocol.v1_13_1to1_13.rewriter.ItemPacketRewriter1_13_1; +import com.viaversion.viabackwards.protocol.v1_13_1to1_13.rewriter.WorldPacketRewriter1_13_1; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.ClientWorld; import com.viaversion.viaversion.api.minecraft.RegistryType; @@ -33,27 +33,27 @@ import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.protocol.remapper.ValueTransformer; -import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.data.entity.EntityTrackerBase; import com.viaversion.viaversion.libs.gson.JsonElement; import com.viaversion.viaversion.libs.gson.JsonObject; -import com.viaversion.viaversion.protocols.protocol1_13_1to1_13.Protocol1_13_1To1_13; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ServerboundPackets1_13; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ClientboundPackets1_13; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ServerboundPackets1_13; +import com.viaversion.viaversion.protocols.v1_13to1_13_1.Protocol1_13To1_13_1; import com.viaversion.viaversion.rewriter.ComponentRewriter; import com.viaversion.viaversion.rewriter.StatisticsRewriter; import com.viaversion.viaversion.rewriter.TagRewriter; import com.viaversion.viaversion.util.ComponentUtil; -public class Protocol1_13To1_13_1 extends BackwardsProtocol { +public class Protocol1_13_1To1_13 extends BackwardsProtocol { - public static final BackwardsMappings MAPPINGS = new BackwardsMappings("1.13.2", "1.13", Protocol1_13_1To1_13.class); - private final EntityPackets1_13_1 entityRewriter = new EntityPackets1_13_1(this); - private final InventoryPackets1_13_1 itemRewriter = new InventoryPackets1_13_1(this); + public static final BackwardsMappingData MAPPINGS = new BackwardsMappingData("1.13.2", "1.13", Protocol1_13To1_13_1.class); + private final EntityPacketRewriter1_13_1 entityRewriter = new EntityPacketRewriter1_13_1(this); + private final ItemPacketRewriter1_13_1 itemRewriter = new ItemPacketRewriter1_13_1(this); private final TranslatableRewriter translatableRewriter = new TranslatableRewriter<>(this, ComponentRewriter.ReadType.JSON); private final TagRewriter tagRewriter = new TagRewriter<>(this); - public Protocol1_13To1_13_1() { + public Protocol1_13_1To1_13() { super(ClientboundPackets1_13.class, ClientboundPackets1_13.class, ServerboundPackets1_13.class, ServerboundPackets1_13.class); } @@ -61,22 +61,22 @@ public class Protocol1_13To1_13_1 extends BackwardsProtocol(Type.STRING) { + map(Types.VAR_INT); + map(Types.STRING, new ValueTransformer<>(Types.STRING) { @Override public String transform(PacketWrapper wrapper, String inputValue) { // 1.13 starts sending slash at start, so we remove it for compatibility @@ -89,22 +89,22 @@ public class Protocol1_13To1_13_1 extends BackwardsProtocol { - itemRewriter.handleItemToServer(wrapper.user(), wrapper.get(Type.ITEM1_13, 0)); - wrapper.write(Type.VAR_INT, 0); + itemRewriter.handleItemToServer(wrapper.user(), wrapper.get(Types.ITEM1_13, 0)); + wrapper.write(Types.VAR_INT, 0); }); } }); - registerClientbound(ClientboundPackets1_13.OPEN_WINDOW, new PacketHandlers() { + registerClientbound(ClientboundPackets1_13.OPEN_SCREEN, new PacketHandlers() { @Override public void register() { - map(Type.UNSIGNED_BYTE); // Id - map(Type.STRING); // Window Type + map(Types.UNSIGNED_BYTE); // Id + map(Types.STRING); // Window Type handler(wrapper -> { - JsonElement title = wrapper.passthrough(Type.COMPONENT); + JsonElement title = wrapper.passthrough(Types.COMPONENT); translatableRewriter.processText(wrapper.user(), title); if (ViaBackwards.getConfig().fix1_13FormattedInventoryTitle()) { @@ -117,87 +117,87 @@ public class Protocol1_13To1_13_1 extends BackwardsProtocol { - int start = wrapper.get(Type.VAR_INT, 1); - wrapper.set(Type.VAR_INT, 1, start - 1); // Offset by +1 to take into account / at beginning + int start = wrapper.get(Types.VAR_INT, 1); + wrapper.set(Types.VAR_INT, 1, start - 1); // Offset by +1 to take into account / at beginning // Passthrough suggestions - int count = wrapper.get(Type.VAR_INT, 3); + int count = wrapper.get(Types.VAR_INT, 3); for (int i = 0; i < count; i++) { - wrapper.passthrough(Type.STRING); - wrapper.passthrough(Type.OPTIONAL_COMPONENT); // Tooltip + wrapper.passthrough(Types.STRING); + wrapper.passthrough(Types.OPTIONAL_COMPONENT); // Tooltip } }); } }); - registerClientbound(ClientboundPackets1_13.BOSSBAR, new PacketHandlers() { + registerClientbound(ClientboundPackets1_13.BOSS_EVENT, new PacketHandlers() { @Override public void register() { - map(Type.UUID); - map(Type.VAR_INT); + map(Types.UUID); + map(Types.VAR_INT); handler(wrapper -> { - int action = wrapper.get(Type.VAR_INT, 0); + int action = wrapper.get(Types.VAR_INT, 0); if (action == 0 || action == 3) { - translatableRewriter.processText(wrapper.user(), wrapper.passthrough(Type.COMPONENT)); + translatableRewriter.processText(wrapper.user(), wrapper.passthrough(Types.COMPONENT)); if (action == 0) { - wrapper.passthrough(Type.FLOAT); - wrapper.passthrough(Type.VAR_INT); - wrapper.passthrough(Type.VAR_INT); - short flags = wrapper.read(Type.UNSIGNED_BYTE); + wrapper.passthrough(Types.FLOAT); + wrapper.passthrough(Types.VAR_INT); + wrapper.passthrough(Types.VAR_INT); + short flags = wrapper.read(Types.UNSIGNED_BYTE); if ((flags & 0x04) != 0) flags |= 0x02; - wrapper.write(Type.UNSIGNED_BYTE, flags); + wrapper.write(Types.UNSIGNED_BYTE, flags); } } }); } }); - registerClientbound(ClientboundPackets1_13.ADVANCEMENTS, wrapper -> { - wrapper.passthrough(Type.BOOLEAN); // Reset/clear - int size = wrapper.passthrough(Type.VAR_INT); // Mapping size + registerClientbound(ClientboundPackets1_13.UPDATE_ADVANCEMENTS, wrapper -> { + wrapper.passthrough(Types.BOOLEAN); // Reset/clear + int size = wrapper.passthrough(Types.VAR_INT); // Mapping size for (int i = 0; i < size; i++) { - wrapper.passthrough(Type.STRING); // Identifier - wrapper.passthrough(Type.OPTIONAL_STRING); // Parent + wrapper.passthrough(Types.STRING); // Identifier + wrapper.passthrough(Types.OPTIONAL_STRING); // Parent // Display data - if (wrapper.passthrough(Type.BOOLEAN)) { - wrapper.passthrough(Type.COMPONENT); // Title - wrapper.passthrough(Type.COMPONENT); // Description - Item icon = wrapper.passthrough(Type.ITEM1_13); + if (wrapper.passthrough(Types.BOOLEAN)) { + wrapper.passthrough(Types.COMPONENT); // Title + wrapper.passthrough(Types.COMPONENT); // Description + Item icon = wrapper.passthrough(Types.ITEM1_13); itemRewriter.handleItemToClient(wrapper.user(), icon); - wrapper.passthrough(Type.VAR_INT); // Frame type - int flags = wrapper.passthrough(Type.INT); // Flags + wrapper.passthrough(Types.VAR_INT); // Frame type + int flags = wrapper.passthrough(Types.INT); // Flags if ((flags & 1) != 0) - wrapper.passthrough(Type.STRING); // Background texture - wrapper.passthrough(Type.FLOAT); // X - wrapper.passthrough(Type.FLOAT); // Y + wrapper.passthrough(Types.STRING); // Background texture + wrapper.passthrough(Types.FLOAT); // X + wrapper.passthrough(Types.FLOAT); // Y } - wrapper.passthrough(Type.STRING_ARRAY); // Criteria + wrapper.passthrough(Types.STRING_ARRAY); // Criteria - int arrayLength = wrapper.passthrough(Type.VAR_INT); + int arrayLength = wrapper.passthrough(Types.VAR_INT); for (int array = 0; array < arrayLength; array++) { - wrapper.passthrough(Type.STRING_ARRAY); // String array + wrapper.passthrough(Types.STRING_ARRAY); // String array } } }); - tagRewriter.register(ClientboundPackets1_13.TAGS, RegistryType.ITEM); - new StatisticsRewriter<>(this).register(ClientboundPackets1_13.STATISTICS); + tagRewriter.register(ClientboundPackets1_13.UPDATE_TAGS, RegistryType.ITEM); + new StatisticsRewriter<>(this).register(ClientboundPackets1_13.AWARD_STATS); } @Override @@ -210,17 +210,17 @@ public class Protocol1_13To1_13_1 extends BackwardsProtocol. */ -package com.viaversion.viabackwards.protocol.protocol1_13to1_13_1.data; +package com.viaversion.viabackwards.protocol.v1_13_1to1_13.data; -import com.viaversion.viabackwards.protocol.protocol1_13to1_13_1.Protocol1_13To1_13_1; -import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13; +import com.viaversion.viabackwards.protocol.v1_13_1to1_13.Protocol1_13_1To1_13; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ClientboundPackets1_13; import com.viaversion.viaversion.rewriter.CommandRewriter; import org.checkerframework.checker.nullness.qual.Nullable; public class CommandRewriter1_13_1 extends CommandRewriter { - public CommandRewriter1_13_1(Protocol1_13To1_13_1 protocol) { + public CommandRewriter1_13_1(Protocol1_13_1To1_13 protocol) { super(protocol); - this.parserHandlers.put("minecraft:dimension", wrapper -> wrapper.write(Type.VAR_INT, 0)); // Single word + this.parserHandlers.put("minecraft:dimension", wrapper -> wrapper.write(Types.VAR_INT, 0)); // Single word } @Override diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13to1_13_1/packets/EntityPackets1_13_1.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13_1to1_13/rewriter/EntityPacketRewriter1_13_1.java similarity index 52% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13to1_13_1/packets/EntityPackets1_13_1.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_13_1to1_13/rewriter/EntityPacketRewriter1_13_1.java index ebf7323d..1362d6ee 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13to1_13_1/packets/EntityPackets1_13_1.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13_1to1_13/rewriter/EntityPacketRewriter1_13_1.java @@ -15,47 +15,48 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_13to1_13_1.packets; +package com.viaversion.viabackwards.protocol.v1_13_1to1_13.rewriter; import com.viaversion.viabackwards.ViaBackwards; import com.viaversion.viabackwards.api.rewriters.LegacyEntityRewriter; -import com.viaversion.viabackwards.protocol.protocol1_13to1_13_1.Protocol1_13To1_13_1; +import com.viaversion.viabackwards.protocol.v1_13_1to1_13.Protocol1_13_1To1_13; import com.viaversion.viaversion.api.minecraft.Particle; import com.viaversion.viaversion.api.minecraft.entities.EntityType; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_13; import com.viaversion.viaversion.api.minecraft.item.Item; -import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.api.minecraft.entitydata.EntityData; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.version.Types1_13; import com.viaversion.viaversion.libs.gson.JsonElement; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ClientboundPackets1_13; import java.util.List; -public class EntityPackets1_13_1 extends LegacyEntityRewriter { +public class EntityPacketRewriter1_13_1 extends LegacyEntityRewriter { - public EntityPackets1_13_1(Protocol1_13To1_13_1 protocol) { + public EntityPacketRewriter1_13_1(Protocol1_13_1To1_13 protocol) { super(protocol); } @Override protected void registerPackets() { - protocol.registerClientbound(ClientboundPackets1_13.SPAWN_ENTITY, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_13.ADD_ENTITY, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); // 0 - Entity id - map(Type.UUID); // 1 - UUID - map(Type.BYTE); // 2 - Type - map(Type.DOUBLE); // 3 - X - map(Type.DOUBLE); // 4 - Y - map(Type.DOUBLE); // 5 - Z - map(Type.BYTE); // 6 - Pitch - map(Type.BYTE); // 7 - Yaw - map(Type.INT); // 8 - Data + map(Types.VAR_INT); // 0 - Entity id + map(Types.UUID); // 1 - UUID + map(Types.BYTE); // 2 - Type + map(Types.DOUBLE); // 3 - X + map(Types.DOUBLE); // 4 - Y + map(Types.DOUBLE); // 5 - Z + map(Types.BYTE); // 6 - Pitch + map(Types.BYTE); // 7 - Yaw + map(Types.INT); // 8 - Data handler(wrapper -> { - int entityId = wrapper.get(Type.VAR_INT, 0); - byte type = wrapper.get(Type.BYTE, 0); + int entityId = wrapper.get(Types.VAR_INT, 0); + byte type = wrapper.get(Types.BYTE, 0); EntityTypes1_13.EntityType entType = EntityTypes1_13.getTypeFromId(type, true); if (entType == null) { ViaBackwards.getPlatform().getLogger().warning("Could not find 1.13 entity type " + type); @@ -64,8 +65,8 @@ public class EntityPackets1_13_1 extends LegacyEntityRewriter { - List metadata = wrapper.get(Types1_13.METADATA_LIST, 0); - handleMetadata(wrapper.get(Type.VAR_INT, 0), metadata, wrapper.user()); + List metadata = wrapper.get(Types1_13.ENTITY_DATA_LIST, 0); + handleEntityData(wrapper.get(Types.VAR_INT, 0), metadata, wrapper.user()); }); } }); - protocol.registerClientbound(ClientboundPackets1_13.SPAWN_PLAYER, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_13.ADD_PLAYER, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); // 0 - Entity ID - map(Type.UUID); // 1 - Player UUID - map(Type.DOUBLE); // 2 - X - map(Type.DOUBLE); // 3 - Y - map(Type.DOUBLE); // 4 - Z - map(Type.BYTE); // 5 - Yaw - map(Type.BYTE); // 6 - Pitch - map(Types1_13.METADATA_LIST); // 7 - Metadata + map(Types.VAR_INT); // 0 - Entity ID + map(Types.UUID); // 1 - Player UUID + map(Types.DOUBLE); // 2 - X + map(Types.DOUBLE); // 3 - Y + map(Types.DOUBLE); // 4 - Z + map(Types.BYTE); // 5 - Yaw + map(Types.BYTE); // 6 - Pitch + map(Types1_13.ENTITY_DATA_LIST); // 7 - Metadata - handler(getTrackerAndMetaHandler(Types1_13.METADATA_LIST, EntityTypes1_13.EntityType.PLAYER)); + handler(getTrackerAndMetaHandler(Types1_13.ENTITY_DATA_LIST, EntityTypes1_13.EntityType.PLAYER)); } }); - registerTracker(ClientboundPackets1_13.SPAWN_PAINTING, EntityTypes1_13.EntityType.PAINTING); - registerJoinGame(ClientboundPackets1_13.JOIN_GAME, EntityTypes1_13.EntityType.PLAYER); + registerTracker(ClientboundPackets1_13.ADD_PAINTING, EntityTypes1_13.EntityType.PAINTING); + registerJoinGame(ClientboundPackets1_13.LOGIN, EntityTypes1_13.EntityType.PLAYER); registerRespawn(ClientboundPackets1_13.RESPAWN); - registerRemoveEntities(ClientboundPackets1_13.DESTROY_ENTITIES); - registerMetadataRewriter(ClientboundPackets1_13.ENTITY_METADATA, Types1_13.METADATA_LIST); + registerRemoveEntities(ClientboundPackets1_13.REMOVE_ENTITIES); + registerSetEntityData(ClientboundPackets1_13.SET_ENTITY_DATA, Types1_13.ENTITY_DATA_LIST); } @Override protected void registerRewrites() { // Rewrite items & blocks filter().handler((event, meta) -> { - if (meta.metaType() == Types1_13.META_TYPES.itemType) { + if (meta.dataType() == Types1_13.ENTITY_DATA_TYPES.itemType) { protocol.getItemRewriter().handleItemToClient(event.user(), (Item) meta.getValue()); - } else if (meta.metaType() == Types1_13.META_TYPES.blockStateType) { + } else if (meta.dataType() == Types1_13.ENTITY_DATA_TYPES.optionalBlockStateType) { // Convert to new block id int data = (int) meta.getValue(); meta.setValue(protocol.getMappingData().getNewBlockStateId(data)); - } else if (meta.metaType() == Types1_13.META_TYPES.particleType) { + } else if (meta.dataType() == Types1_13.ENTITY_DATA_TYPES.particleType) { rewriteParticle(event.user(), (Particle) meta.getValue()); - } else if (meta.metaType() == Types1_13.META_TYPES.optionalComponentType || meta.metaType() == Types1_13.META_TYPES.componentType) { + } else if (meta.dataType() == Types1_13.ENTITY_DATA_TYPES.optionalComponentType || meta.dataType() == Types1_13.ENTITY_DATA_TYPES.componentType) { JsonElement element = meta.value(); protocol.translatableRewriter().processText(event.user(), element); } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13_1to1_13/rewriter/ItemPacketRewriter1_13_1.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13_1to1_13/rewriter/ItemPacketRewriter1_13_1.java new file mode 100644 index 00000000..c519ed2f --- /dev/null +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13_1to1_13/rewriter/ItemPacketRewriter1_13_1.java @@ -0,0 +1,74 @@ +/* + * This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards + * Copyright (C) 2016-2024 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.viabackwards.protocol.v1_13_1to1_13.rewriter; + +import com.viaversion.viabackwards.protocol.v1_13_1to1_13.Protocol1_13_1To1_13; +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ClientboundPackets1_13; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ServerboundPackets1_13; +import com.viaversion.viaversion.rewriter.ItemRewriter; + +public class ItemPacketRewriter1_13_1 extends ItemRewriter { + + public ItemPacketRewriter1_13_1(Protocol1_13_1To1_13 protocol) { + super(protocol, Types.ITEM1_13, Types.ITEM1_13_SHORT_ARRAY); + } + + @Override + public void registerPackets() { + registerCooldown(ClientboundPackets1_13.COOLDOWN); + registerSetContent(ClientboundPackets1_13.CONTAINER_SET_CONTENT); + registerSetSlot(ClientboundPackets1_13.CONTAINER_SET_SLOT); + + protocol.registerClientbound(ClientboundPackets1_13.CUSTOM_PAYLOAD, wrapper -> { + String channel = wrapper.passthrough(Types.STRING); + if (channel.equals("minecraft:trader_list")) { + wrapper.passthrough(Types.INT); //Passthrough Window ID + + int size = wrapper.passthrough(Types.UNSIGNED_BYTE); + for (int i = 0; i < size; i++) { + //Input Item + Item input = wrapper.passthrough(Types.ITEM1_13); + handleItemToClient(wrapper.user(), input); + //Output Item + Item output = wrapper.passthrough(Types.ITEM1_13); + handleItemToClient(wrapper.user(), output); + + boolean secondItem = wrapper.passthrough(Types.BOOLEAN); //Has second item + if (secondItem) { + //Second Item + Item second = wrapper.passthrough(Types.ITEM1_13); + handleItemToClient(wrapper.user(), second); + } + + wrapper.passthrough(Types.BOOLEAN); //Trade disabled + wrapper.passthrough(Types.INT); //Number of tools uses + wrapper.passthrough(Types.INT); //Maximum number of trade uses + } + } + }); + + registerSetEquippedItem(ClientboundPackets1_13.SET_EQUIPPED_ITEM); + registerContainerClick(ServerboundPackets1_13.CONTAINER_CLICK); + registerSetCreativeModeSlot(ServerboundPackets1_13.SET_CREATIVE_MODE_SLOT); + + registerLevelParticles(ClientboundPackets1_13.LEVEL_PARTICLES, Types.FLOAT); + } +} diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13to1_13_1/packets/WorldPackets1_13_1.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13_1to1_13/rewriter/WorldPacketRewriter1_13_1.java similarity index 61% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13to1_13_1/packets/WorldPackets1_13_1.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_13_1to1_13/rewriter/WorldPacketRewriter1_13_1.java index 5d773e5d..4c7feec4 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13to1_13_1/packets/WorldPackets1_13_1.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13_1to1_13/rewriter/WorldPacketRewriter1_13_1.java @@ -15,9 +15,9 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_13to1_13_1.packets; +package com.viaversion.viabackwards.protocol.v1_13_1to1_13.rewriter; -import com.viaversion.viabackwards.protocol.protocol1_13to1_13_1.Protocol1_13To1_13_1; +import com.viaversion.viabackwards.protocol.v1_13_1to1_13.Protocol1_13_1To1_13; import com.viaversion.viaversion.api.minecraft.BlockFace; import com.viaversion.viaversion.api.minecraft.ClientWorld; import com.viaversion.viaversion.api.minecraft.Position; @@ -27,16 +27,17 @@ import com.viaversion.viaversion.api.minecraft.chunks.DataPalette; import com.viaversion.viaversion.api.minecraft.chunks.PaletteType; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_13; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ClientboundPackets1_13; import com.viaversion.viaversion.rewriter.BlockRewriter; -public class WorldPackets1_13_1 { +public class WorldPacketRewriter1_13_1 { - public static void register(Protocol1_13To1_13_1 protocol) { + public static void register(Protocol1_13_1To1_13 protocol) { BlockRewriter blockRewriter = BlockRewriter.legacy(protocol); - protocol.registerClientbound(ClientboundPackets1_13.CHUNK_DATA, wrapper -> { + protocol.registerClientbound(ClientboundPackets1_13.LEVEL_CHUNK, wrapper -> { ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); Chunk chunk = wrapper.passthrough(ChunkType1_13.forEnvironment(clientWorld.getEnvironment())); @@ -53,34 +54,34 @@ public class WorldPackets1_13_1 { } }); - blockRewriter.registerBlockAction(ClientboundPackets1_13.BLOCK_ACTION); - blockRewriter.registerBlockChange(ClientboundPackets1_13.BLOCK_CHANGE); - blockRewriter.registerMultiBlockChange(ClientboundPackets1_13.MULTI_BLOCK_CHANGE); - protocol.registerClientbound(ClientboundPackets1_13.EFFECT, new PacketHandlers() { + blockRewriter.registerBlockEvent(ClientboundPackets1_13.BLOCK_EVENT); + blockRewriter.registerBlockUpdate(ClientboundPackets1_13.BLOCK_UPDATE); + blockRewriter.registerChunkBlocksUpdate(ClientboundPackets1_13.CHUNK_BLOCKS_UPDATE); + protocol.registerClientbound(ClientboundPackets1_13.LEVEL_EVENT, new PacketHandlers() { @Override public void register() { - map(Type.INT); // Effect Id - map(Type.POSITION1_8); // Location - map(Type.INT); // Data + map(Types.INT); // Effect Id + map(Types.BLOCK_POSITION1_8); // Location + map(Types.INT); // Data handler(wrapper -> { - int id = wrapper.get(Type.INT, 0); - int data = wrapper.get(Type.INT, 1); + int id = wrapper.get(Types.INT, 0); + int data = wrapper.get(Types.INT, 1); if (id == 1010) { // Play record - wrapper.set(Type.INT, 1, protocol.getMappingData().getNewItemId(data)); + wrapper.set(Types.INT, 1, protocol.getMappingData().getNewItemId(data)); } else if (id == 2001) { // Block break + block break sound - wrapper.set(Type.INT, 1, protocol.getMappingData().getNewBlockStateId(data)); + wrapper.set(Types.INT, 1, protocol.getMappingData().getNewBlockStateId(data)); } else if (id == 2000) { // Smoke switch (data) { // Down case 0, 1 -> { // Up - Position pos = wrapper.get(Type.POSITION1_8, 0); + Position pos = wrapper.get(Types.BLOCK_POSITION1_8, 0); BlockFace relative = data == 0 ? BlockFace.BOTTOM : BlockFace.TOP; - wrapper.set(Type.POSITION1_8, 0, pos.getRelative(relative)); // Y Offset - wrapper.set(Type.INT, 1, 4); // Self + wrapper.set(Types.BLOCK_POSITION1_8, 0, pos.getRelative(relative)); // Y Offset + wrapper.set(Types.INT, 1, 4); // Self } - case 2 -> wrapper.set(Type.INT, 1, 1); // North - case 3 -> wrapper.set(Type.INT, 1, 7); // South - case 4 -> wrapper.set(Type.INT, 1, 3); // West - case 5 -> wrapper.set(Type.INT, 1, 5); // East + case 2 -> wrapper.set(Types.INT, 1, 1); // North + case 3 -> wrapper.set(Types.INT, 1, 7); // South + case 4 -> wrapper.set(Types.INT, 1, 3); // West + case 5 -> wrapper.set(Types.INT, 1, 5); // East } } }); diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13_2to1_13_1/Protocol1_13_2To1_13_1.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13_2to1_13_1/Protocol1_13_2To1_13_1.java new file mode 100644 index 00000000..ca44c186 --- /dev/null +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13_2to1_13_1/Protocol1_13_2To1_13_1.java @@ -0,0 +1,81 @@ +/* + * This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards + * Copyright (C) 2016-2024 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.viabackwards.protocol.v1_13_2to1_13_1; + +import com.viaversion.viabackwards.api.BackwardsProtocol; +import com.viaversion.viabackwards.protocol.v1_13_2to1_13_1.rewriter.EntityPacketRewriter1_13_2; +import com.viaversion.viabackwards.protocol.v1_13_2to1_13_1.rewriter.ItemPacketRewriter1_13_2; +import com.viaversion.viabackwards.protocol.v1_13_2to1_13_1.rewriter.WorldPacketRewriter1_13_2; +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ClientboundPackets1_13; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ServerboundPackets1_13; + +public class Protocol1_13_2To1_13_1 extends BackwardsProtocol { + + public Protocol1_13_2To1_13_1() { + super(ClientboundPackets1_13.class, ClientboundPackets1_13.class, ServerboundPackets1_13.class, ServerboundPackets1_13.class); + } + + @Override + protected void registerPackets() { + ItemPacketRewriter1_13_2.register(this); + WorldPacketRewriter1_13_2.register(this); + EntityPacketRewriter1_13_2.register(this); + + registerServerbound(ServerboundPackets1_13.EDIT_BOOK, new PacketHandlers() { + @Override + public void register() { + map(Types.ITEM1_13, Types.ITEM1_13_2); + } + }); + + registerClientbound(ClientboundPackets1_13.UPDATE_ADVANCEMENTS, wrapper -> { + wrapper.passthrough(Types.BOOLEAN); // Reset/clear + int size = wrapper.passthrough(Types.VAR_INT); // Mapping size + + for (int i = 0; i < size; i++) { + wrapper.passthrough(Types.STRING); // Identifier + wrapper.passthrough(Types.OPTIONAL_STRING); // Parent + + // Display data + if (wrapper.passthrough(Types.BOOLEAN)) { + wrapper.passthrough(Types.COMPONENT); // Title + wrapper.passthrough(Types.COMPONENT); // Description + Item icon = wrapper.read(Types.ITEM1_13_2); + wrapper.write(Types.ITEM1_13, icon); + wrapper.passthrough(Types.VAR_INT); // Frame type + int flags = wrapper.passthrough(Types.INT); // Flags + if ((flags & 1) != 0) + wrapper.passthrough(Types.STRING); // Background texture + wrapper.passthrough(Types.FLOAT); // X + wrapper.passthrough(Types.FLOAT); // Y + } + + wrapper.passthrough(Types.STRING_ARRAY); // Criteria + + int arrayLength = wrapper.passthrough(Types.VAR_INT); + for (int array = 0; array < arrayLength; array++) { + wrapper.passthrough(Types.STRING_ARRAY); // String array + } + } + }); + } +} diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13_2to1_13_1/rewriter/EntityPacketRewriter1_13_2.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13_2to1_13_1/rewriter/EntityPacketRewriter1_13_2.java new file mode 100644 index 00000000..e0854256 --- /dev/null +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13_2to1_13_1/rewriter/EntityPacketRewriter1_13_2.java @@ -0,0 +1,93 @@ +/* + * This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards + * Copyright (C) 2016-2024 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.viabackwards.protocol.v1_13_2to1_13_1.rewriter; + +import com.viaversion.viabackwards.protocol.v1_13_2to1_13_1.Protocol1_13_2To1_13_1; +import com.viaversion.viaversion.api.minecraft.entitydata.EntityData; +import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.api.type.types.version.Types1_13; +import com.viaversion.viaversion.api.type.types.version.Types1_13_2; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ClientboundPackets1_13; + +public class EntityPacketRewriter1_13_2 { + + + public static void register(Protocol1_13_2To1_13_1 protocol) { + protocol.registerClientbound(ClientboundPackets1_13.ADD_MOB, new PacketHandlers() { + @Override + public void register() { + map(Types.VAR_INT); // 0 - Entity ID + map(Types.UUID); // 1 - Entity UUID + map(Types.VAR_INT); // 2 - Entity Type + map(Types.DOUBLE); // 3 - X + map(Types.DOUBLE); // 4 - Y + map(Types.DOUBLE); // 5 - Z + map(Types.BYTE); // 6 - Yaw + map(Types.BYTE); // 7 - Pitch + map(Types.BYTE); // 8 - Head Pitch + map(Types.SHORT); // 9 - Velocity X + map(Types.SHORT); // 10 - Velocity Y + map(Types.SHORT); // 11 - Velocity Z + map(Types1_13_2.ENTITY_DATA_LIST, Types1_13.ENTITY_DATA_LIST); // 12 - Metadata + + handler(wrapper -> { + for (EntityData metadata : wrapper.get(Types1_13.ENTITY_DATA_LIST, 0)) { + metadata.setDataType(Types1_13.ENTITY_DATA_TYPES.byId(metadata.dataType().typeId())); + } + }); + } + }); + + protocol.registerClientbound(ClientboundPackets1_13.ADD_PLAYER, new PacketHandlers() { + @Override + public void register() { + map(Types.VAR_INT); // 0 - Entity ID + map(Types.UUID); // 1 - Player UUID + map(Types.DOUBLE); // 2 - X + map(Types.DOUBLE); // 3 - Y + map(Types.DOUBLE); // 4 - Z + map(Types.BYTE); // 5 - Yaw + map(Types.BYTE); // 6 - Pitch + map(Types1_13_2.ENTITY_DATA_LIST, Types1_13.ENTITY_DATA_LIST); // 7 - Metadata + + handler(wrapper -> { + for (EntityData metadata : wrapper.get(Types1_13.ENTITY_DATA_LIST, 0)) { + metadata.setDataType(Types1_13.ENTITY_DATA_TYPES.byId(metadata.dataType().typeId())); + } + }); + } + }); + + protocol.registerClientbound(ClientboundPackets1_13.SET_ENTITY_DATA, new PacketHandlers() { + @Override + public void register() { + map(Types.VAR_INT); // 0 - Entity ID + map(Types1_13_2.ENTITY_DATA_LIST, Types1_13.ENTITY_DATA_LIST); // 1 - Metadata list + + handler(wrapper -> { + for (EntityData metadata : wrapper.get(Types1_13.ENTITY_DATA_LIST, 0)) { + metadata.setDataType(Types1_13.ENTITY_DATA_TYPES.byId(metadata.dataType().typeId())); + } + }); + } + }); + } + +} diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13_2to1_13_1/rewriter/ItemPacketRewriter1_13_2.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13_2to1_13_1/rewriter/ItemPacketRewriter1_13_2.java new file mode 100644 index 00000000..e772d9c4 --- /dev/null +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13_2to1_13_1/rewriter/ItemPacketRewriter1_13_2.java @@ -0,0 +1,137 @@ +/* + * This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards + * Copyright (C) 2016-2024 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.viabackwards.protocol.v1_13_2to1_13_1.rewriter; + +import com.viaversion.viabackwards.protocol.v1_13_2to1_13_1.Protocol1_13_2To1_13_1; +import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ClientboundPackets1_13; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ServerboundPackets1_13; + +public class ItemPacketRewriter1_13_2 { + + public static void register(Protocol1_13_2To1_13_1 protocol) { + protocol.registerClientbound(ClientboundPackets1_13.CONTAINER_SET_SLOT, new PacketHandlers() { + @Override + public void register() { + map(Types.UNSIGNED_BYTE); // 0 - Window ID + map(Types.SHORT); // 1 - Slot ID + map(Types.ITEM1_13_2, Types.ITEM1_13); // 2 - Slot Value + } + }); + + protocol.registerClientbound(ClientboundPackets1_13.CONTAINER_SET_CONTENT, new PacketHandlers() { + @Override + public void register() { + map(Types.UNSIGNED_BYTE); // 0 - Window ID + map(Types.ITEM1_13_2_SHORT_ARRAY, Types.ITEM1_13_SHORT_ARRAY); // 1 - Window Values + } + }); + + protocol.registerClientbound(ClientboundPackets1_13.CUSTOM_PAYLOAD, new PacketHandlers() { + @Override + public void register() { + map(Types.STRING); // Channel + handler(wrapper -> { + String channel = wrapper.get(Types.STRING, 0); + if (channel.equals("minecraft:trader_list") || channel.equals("trader_list")) { + wrapper.passthrough(Types.INT); // Passthrough Window ID + + int size = wrapper.passthrough(Types.UNSIGNED_BYTE); + for (int i = 0; i < size; i++) { + // Input Item + wrapper.write(Types.ITEM1_13, wrapper.read(Types.ITEM1_13_2)); + // Output Item + wrapper.write(Types.ITEM1_13, wrapper.read(Types.ITEM1_13_2)); + + boolean secondItem = wrapper.passthrough(Types.BOOLEAN); // Has second item + if (secondItem) { + wrapper.write(Types.ITEM1_13, wrapper.read(Types.ITEM1_13_2)); + } + + wrapper.passthrough(Types.BOOLEAN); // Trade disabled + wrapper.passthrough(Types.INT); // Number of tools uses + wrapper.passthrough(Types.INT); // Maximum number of trade uses + } + } + }); + } + }); + + protocol.registerClientbound(ClientboundPackets1_13.SET_EQUIPPED_ITEM, new PacketHandlers() { + @Override + public void register() { + map(Types.VAR_INT); // 0 - Entity ID + map(Types.VAR_INT); // 1 - Slot ID + map(Types.ITEM1_13_2, Types.ITEM1_13); // 2 - Item + } + }); + + protocol.registerClientbound(ClientboundPackets1_13.UPDATE_RECIPES, wrapper -> { + int recipesNo = wrapper.passthrough(Types.VAR_INT); + for (int i = 0; i < recipesNo; i++) { + wrapper.passthrough(Types.STRING); // Id + String type = wrapper.passthrough(Types.STRING); + if (type.equals("crafting_shapeless")) { + wrapper.passthrough(Types.STRING); // Group + int ingredientsNo = wrapper.passthrough(Types.VAR_INT); + for (int i1 = 0; i1 < ingredientsNo; i1++) { + wrapper.write(Types.ITEM1_13_ARRAY, wrapper.read(Types.ITEM1_13_2_ARRAY)); + } + wrapper.write(Types.ITEM1_13, wrapper.read(Types.ITEM1_13_2)); + } else if (type.equals("crafting_shaped")) { + int ingredientsNo = wrapper.passthrough(Types.VAR_INT) * wrapper.passthrough(Types.VAR_INT); + wrapper.passthrough(Types.STRING); // Group + for (int i1 = 0; i1 < ingredientsNo; i1++) { + wrapper.write(Types.ITEM1_13_ARRAY, wrapper.read(Types.ITEM1_13_2_ARRAY)); + } + wrapper.write(Types.ITEM1_13, wrapper.read(Types.ITEM1_13_2)); + } else if (type.equals("smelting")) { + wrapper.passthrough(Types.STRING); // Group + // Ingredient start + wrapper.write(Types.ITEM1_13_ARRAY, wrapper.read(Types.ITEM1_13_2_ARRAY)); + // Ingredient end + wrapper.write(Types.ITEM1_13, wrapper.read(Types.ITEM1_13_2)); + wrapper.passthrough(Types.FLOAT); // EXP + wrapper.passthrough(Types.VAR_INT); // Cooking time + } + } + }); + + protocol.registerServerbound(ServerboundPackets1_13.CONTAINER_CLICK, new PacketHandlers() { + @Override + public void register() { + map(Types.UNSIGNED_BYTE); // 0 - Window ID + map(Types.SHORT); // 1 - Slot + map(Types.BYTE); // 2 - Button + map(Types.SHORT); // 3 - Action number + map(Types.VAR_INT); // 4 - Mode + map(Types.ITEM1_13, Types.ITEM1_13_2); // 5 - Clicked Item + } + }); + + protocol.registerServerbound(ServerboundPackets1_13.SET_CREATIVE_MODE_SLOT, new PacketHandlers() { + @Override + public void register() { + map(Types.SHORT); // 0 - Slot + map(Types.ITEM1_13, Types.ITEM1_13_2); // 1 - Clicked Item + } + }); + } +} diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_1to1_13_2/packets/WorldPackets1_13_2.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13_2to1_13_1/rewriter/WorldPacketRewriter1_13_2.java similarity index 50% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_1to1_13_2/packets/WorldPackets1_13_2.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_13_2to1_13_1/rewriter/WorldPacketRewriter1_13_2.java index 9167ad6c..ae7d76db 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_1to1_13_2/packets/WorldPackets1_13_2.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13_2to1_13_1/rewriter/WorldPacketRewriter1_13_2.java @@ -15,34 +15,35 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_13_1to1_13_2.packets; +package com.viaversion.viabackwards.protocol.v1_13_2to1_13_1.rewriter; -import com.viaversion.viabackwards.protocol.protocol1_13_1to1_13_2.Protocol1_13_1To1_13_2; +import com.viaversion.viabackwards.protocol.v1_13_2to1_13_1.Protocol1_13_2To1_13_1; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ClientboundPackets1_13; -public class WorldPackets1_13_2 { +public class WorldPacketRewriter1_13_2 { - public static void register(Protocol1_13_1To1_13_2 protocol) { - protocol.registerClientbound(ClientboundPackets1_13.SPAWN_PARTICLE, new PacketHandlers() { + public static void register(Protocol1_13_2To1_13_1 protocol) { + protocol.registerClientbound(ClientboundPackets1_13.LEVEL_PARTICLES, new PacketHandlers() { @Override public void register() { - map(Type.INT); // 0 - Particle ID - map(Type.BOOLEAN); // 1 - Long Distance - map(Type.FLOAT); // 2 - X - map(Type.FLOAT); // 3 - Y - map(Type.FLOAT); // 4 - Z - map(Type.FLOAT); // 5 - Offset X - map(Type.FLOAT); // 6 - Offset Y - map(Type.FLOAT); // 7 - Offset Z - map(Type.FLOAT); // 8 - Particle Data - map(Type.INT); // 9 - Particle Count + map(Types.INT); // 0 - Particle ID + map(Types.BOOLEAN); // 1 - Long Distance + map(Types.FLOAT); // 2 - X + map(Types.FLOAT); // 3 - Y + map(Types.FLOAT); // 4 - Z + map(Types.FLOAT); // 5 - Offset X + map(Types.FLOAT); // 6 - Offset Y + map(Types.FLOAT); // 7 - Offset Z + map(Types.FLOAT); // 8 - Particle Data + map(Types.INT); // 9 - Particle Count handler(wrapper -> { - int id = wrapper.get(Type.INT, 0); + int id = wrapper.get(Types.INT, 0); if (id == 27) { - wrapper.write(Type.ITEM1_13, wrapper.read(Type.ITEM1_13_2)); + wrapper.write(Types.ITEM1_13, wrapper.read(Types.ITEM1_13_2)); } }); } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/Protocol1_13To1_12_2.java similarity index 63% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/Protocol1_13To1_12_2.java index 124c932c..36714b6b 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/Protocol1_12_2To1_13.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/Protocol1_13To1_12_2.java @@ -16,22 +16,22 @@ * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_12_2to1_13; +package com.viaversion.viabackwards.protocol.v1_13to1_12_2; import com.viaversion.viabackwards.ViaBackwards; import com.viaversion.viabackwards.api.BackwardsProtocol; import com.viaversion.viabackwards.api.rewriters.TranslatableRewriter; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.data.BackwardsMappings; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.data.PaintingMapping; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.packets.BlockItemPackets1_13; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.packets.EntityPackets1_13; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.packets.PlayerPacket1_13; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.packets.SoundPackets1_13; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.providers.BackwardsBlockEntityProvider; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.storage.BackwardsBlockStorage; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.storage.NoteBlockStorage; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.storage.PlayerPositionStorage1_13; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.storage.TabCompleteStorage; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.data.BackwardsMappingData1_13; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.data.PaintingMapping; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.providers.BackwardsBlockEntityProvider; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.rewriter.BlockItemPacketRewriter1_13; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.rewriter.EntityPacketRewriter1_13; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.rewriter.PlayerPacketRewriter1_13; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.rewriter.SoundPacketRewriter1_13; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.storage.BackwardsBlockStorage; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.storage.NoteBlockStorage; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.storage.PlayerPositionStorage1_13; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.storage.TabCompleteStorage; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.ClientWorld; @@ -40,20 +40,20 @@ import com.viaversion.viaversion.data.entity.EntityTrackerBase; import com.viaversion.viaversion.libs.gson.JsonElement; import com.viaversion.viaversion.libs.gson.JsonObject; import com.viaversion.viaversion.libs.gson.JsonParser; -import com.viaversion.viaversion.protocols.protocol1_12_1to1_12.ClientboundPackets1_12_1; -import com.viaversion.viaversion.protocols.protocol1_12_1to1_12.ServerboundPackets1_12_1; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.Protocol1_13To1_12_2; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ServerboundPackets1_13; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ClientboundPackets1_13; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ServerboundPackets1_13; +import com.viaversion.viaversion.protocols.v1_12to1_12_1.packet.ClientboundPackets1_12_1; +import com.viaversion.viaversion.protocols.v1_12to1_12_1.packet.ServerboundPackets1_12_1; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.Protocol1_12_2To1_13; import com.viaversion.viaversion.rewriter.ComponentRewriter; import com.viaversion.viaversion.util.ComponentUtil; import org.checkerframework.checker.nullness.qual.Nullable; -public class Protocol1_12_2To1_13 extends BackwardsProtocol { +public class Protocol1_13To1_12_2 extends BackwardsProtocol { - public static final BackwardsMappings MAPPINGS = new BackwardsMappings(); - private final EntityPackets1_13 entityRewriter = new EntityPackets1_13(this); - private final BlockItemPackets1_13 blockItemPackets = new BlockItemPackets1_13(this); + public static final BackwardsMappingData1_13 MAPPINGS = new BackwardsMappingData1_13(); + private final EntityPacketRewriter1_13 entityRewriter = new EntityPacketRewriter1_13(this); + private final BlockItemPacketRewriter1_13 blockItemPackets = new BlockItemPacketRewriter1_13(this); private final TranslatableRewriter translatableRewriter = new TranslatableRewriter<>(this, ComponentRewriter.ReadType.JSON) { @Override protected void handleTranslate(JsonObject root, String translate) { @@ -68,46 +68,46 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol { + executeAsyncAfterLoaded(Protocol1_12_2To1_13.class, () -> { MAPPINGS.load(); PaintingMapping.init(); Via.getManager().getProviders().register(BackwardsBlockEntityProvider.class, new BackwardsBlockEntityProvider()); }); translatableRewriter.registerPing(); - translatableRewriter.registerBossBar(ClientboundPackets1_13.BOSSBAR); - translatableRewriter.registerComponentPacket(ClientboundPackets1_13.CHAT_MESSAGE); - translatableRewriter.registerLegacyOpenWindow(ClientboundPackets1_13.OPEN_WINDOW); + translatableRewriter.registerBossEvent(ClientboundPackets1_13.BOSS_EVENT); + translatableRewriter.registerComponentPacket(ClientboundPackets1_13.CHAT); + translatableRewriter.registerLegacyOpenWindow(ClientboundPackets1_13.OPEN_SCREEN); translatableRewriter.registerComponentPacket(ClientboundPackets1_13.DISCONNECT); - translatableRewriter.registerCombatEvent(ClientboundPackets1_13.COMBAT_EVENT); - translatableRewriter.registerTitle(ClientboundPackets1_13.TITLE); + translatableRewriter.registerPlayerCombat(ClientboundPackets1_13.PLAYER_COMBAT); + translatableRewriter.registerTitle(ClientboundPackets1_13.SET_TITLES); translatableRewriter.registerTabList(ClientboundPackets1_13.TAB_LIST); blockItemPackets.register(); entityRewriter.register(); - new PlayerPacket1_13(this).register(); - new SoundPackets1_13(this).register(); + new PlayerPacketRewriter1_13(this).register(); + new SoundPacketRewriter1_13(this).register(); - cancelClientbound(ClientboundPackets1_13.NBT_QUERY); - cancelClientbound(ClientboundPackets1_13.CRAFT_RECIPE_RESPONSE); - cancelClientbound(ClientboundPackets1_13.UNLOCK_RECIPES); - cancelClientbound(ClientboundPackets1_13.ADVANCEMENTS); - cancelClientbound(ClientboundPackets1_13.DECLARE_RECIPES); - cancelClientbound(ClientboundPackets1_13.TAGS); + cancelClientbound(ClientboundPackets1_13.TAG_QUERY); + cancelClientbound(ClientboundPackets1_13.PLACE_GHOST_RECIPE); + cancelClientbound(ClientboundPackets1_13.RECIPE); + cancelClientbound(ClientboundPackets1_13.UPDATE_ADVANCEMENTS); + cancelClientbound(ClientboundPackets1_13.UPDATE_RECIPES); + cancelClientbound(ClientboundPackets1_13.UPDATE_TAGS); - cancelServerbound(ServerboundPackets1_12_1.CRAFT_RECIPE_REQUEST); - cancelServerbound(ServerboundPackets1_12_1.RECIPE_BOOK_DATA); + cancelServerbound(ServerboundPackets1_12_1.PLACE_RECIPE); + cancelServerbound(ServerboundPackets1_12_1.RECIPE_BOOK_UPDATE); } @Override @@ -129,17 +129,17 @@ public class Protocol1_12_2To1_13 extends BackwardsProtocol. */ -package com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers; +package com.viaversion.viabackwards.protocol.v1_13to1_12_2.block_entity_handlers; import com.viaversion.viabackwards.ViaBackwards; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.providers.BackwardsBlockEntityProvider.BackwardsBlockEntityHandler; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.ListTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.NumberTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.Tag; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.providers.BackwardsBlockEntityProvider.BackwardsBlockEntityHandler; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.ListTag; +import com.viaversion.nbt.tag.NumberTag; +import com.viaversion.nbt.tag.Tag; public class BannerHandler implements BackwardsBlockEntityHandler { private static final int WALL_BANNER_START = 7110; // 4 each diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/BedHandler.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/block_entity_handlers/BedHandler.java similarity index 80% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/BedHandler.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/block_entity_handlers/BedHandler.java index 25042c25..f0357c3a 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/BedHandler.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/block_entity_handlers/BedHandler.java @@ -16,10 +16,10 @@ * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers; +package com.viaversion.viabackwards.protocol.v1_13to1_12_2.block_entity_handlers; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.providers.BackwardsBlockEntityProvider; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.providers.BackwardsBlockEntityProvider; +import com.viaversion.nbt.tag.CompoundTag; public class BedHandler implements BackwardsBlockEntityProvider.BackwardsBlockEntityHandler { diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/FlowerPotHandler.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/block_entity_handlers/FlowerPotHandler.java similarity index 92% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/FlowerPotHandler.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/block_entity_handlers/FlowerPotHandler.java index cf60ae3a..07618018 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/FlowerPotHandler.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/block_entity_handlers/FlowerPotHandler.java @@ -16,12 +16,12 @@ * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers; +package com.viaversion.viabackwards.protocol.v1_13to1_12_2.block_entity_handlers; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.providers.BackwardsBlockEntityProvider; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.providers.BackwardsBlockEntityProvider; import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectMap; import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectOpenHashMap; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; +import com.viaversion.nbt.tag.CompoundTag; import com.viaversion.viaversion.util.Pair; public class FlowerPotHandler implements BackwardsBlockEntityProvider.BackwardsBlockEntityHandler { diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/PistonHandler.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/block_entity_handlers/PistonHandler.java similarity index 85% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/PistonHandler.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/block_entity_handlers/PistonHandler.java index 11d1e921..25f4db62 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/PistonHandler.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/block_entity_handlers/PistonHandler.java @@ -15,19 +15,18 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers; - -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.Protocol1_12_2To1_13; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.providers.BackwardsBlockEntityProvider; +package com.viaversion.viabackwards.protocol.v1_13to1_12_2.block_entity_handlers; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.Protocol1_13To1_12_2; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.providers.BackwardsBlockEntityProvider; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.data.MappingDataLoader; import com.viaversion.viaversion.libs.fastutil.objects.Object2IntMap; import com.viaversion.viaversion.libs.fastutil.objects.Object2IntOpenHashMap; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.ListTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.Tag; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.blockconnections.ConnectionData; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.ListTag; +import com.viaversion.nbt.tag.StringTag; +import com.viaversion.nbt.tag.Tag; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.blockconnections.ConnectionData; import java.util.Map; import java.util.StringJoiner; @@ -62,7 +61,7 @@ public class PistonHandler implements BackwardsBlockEntityProvider.BackwardsBloc // There doesn't seem to be a nicer way around it :( private void addEntries(String data, int id) { - id = Protocol1_12_2To1_13.MAPPINGS.getNewBlockStateId(id); + id = Protocol1_13To1_12_2.MAPPINGS.getNewBlockStateId(id); pistonIds.put(data, id); String substring = data.substring(10); diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/SkullHandler.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/block_entity_handlers/SkullHandler.java similarity index 82% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/SkullHandler.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/block_entity_handlers/SkullHandler.java index 2774a86f..620c3635 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/SkullHandler.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/block_entity_handlers/SkullHandler.java @@ -16,10 +16,10 @@ * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers; +package com.viaversion.viabackwards.protocol.v1_13to1_12_2.block_entity_handlers; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.providers.BackwardsBlockEntityProvider.BackwardsBlockEntityHandler; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.providers.BackwardsBlockEntityProvider.BackwardsBlockEntityHandler; +import com.viaversion.nbt.tag.CompoundTag; public class SkullHandler implements BackwardsBlockEntityHandler { private static final int SKULL_START = 5447; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/SpawnerHandler.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/block_entity_handlers/SpawnerHandler.java similarity index 75% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/SpawnerHandler.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/block_entity_handlers/SpawnerHandler.java index 8d589189..0aeedede 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/block_entity_handlers/SpawnerHandler.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/block_entity_handlers/SpawnerHandler.java @@ -16,12 +16,12 @@ * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers; +package com.viaversion.viabackwards.protocol.v1_13to1_12_2.block_entity_handlers; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.data.EntityNameRewrites; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.providers.BackwardsBlockEntityProvider; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.data.EntityNameRewrites; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.providers.BackwardsBlockEntityProvider; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.StringTag; public class SpawnerHandler implements BackwardsBlockEntityProvider.BackwardsBlockEntityHandler { diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/data/BackwardsMappings.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/data/BackwardsMappingData1_13.java similarity index 81% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/data/BackwardsMappings.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/data/BackwardsMappingData1_13.java index 2fc2abd2..a41efe34 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/data/BackwardsMappings.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/data/BackwardsMappingData1_13.java @@ -16,22 +16,23 @@ * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.data; +package com.viaversion.viabackwards.protocol.v1_13to1_12_2.data; +import com.viaversion.viabackwards.api.data.BackwardsMappingData; import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectMap; import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectOpenHashMap; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.Protocol1_13To1_12_2; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.data.StatisticMappings; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.Protocol1_12_2To1_13; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.data.StatisticMappings; import java.util.HashMap; import java.util.Map; -public class BackwardsMappings extends com.viaversion.viabackwards.api.data.BackwardsMappings { +public class BackwardsMappingData1_13 extends BackwardsMappingData { private final Int2ObjectMap statisticMappings = new Int2ObjectOpenHashMap<>(); private final Map translateMappings = new HashMap<>(); - public BackwardsMappings() { - super("1.13", "1.12", Protocol1_13To1_12_2.class); + public BackwardsMappingData1_13() { + super("1.13", "1.12", Protocol1_12_2To1_13.class); } @Override @@ -41,7 +42,7 @@ public class BackwardsMappings extends com.viaversion.viabackwards.api.data.Back for (Map.Entry entry : StatisticMappings.CUSTOM_STATS.entrySet()) { statisticMappings.put(entry.getValue().intValue(), entry.getKey()); } - for (Map.Entry entry : Protocol1_13To1_12_2.MAPPINGS.getTranslateMapping().entrySet()) { + for (Map.Entry entry : Protocol1_12_2To1_13.MAPPINGS.getTranslateMapping().entrySet()) { translateMappings.put(entry.getValue(), entry.getKey()); } } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/data/EntityNameRewrites.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/data/EntityNameRewrites.java similarity index 96% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/data/EntityNameRewrites.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/data/EntityNameRewrites.java index 486fdec6..dd7d8cbe 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/data/EntityNameRewrites.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/data/EntityNameRewrites.java @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.data; +package com.viaversion.viabackwards.protocol.v1_13to1_12_2.data; import com.viaversion.viaversion.util.Key; import java.util.HashMap; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/data/EntityTypeMapping.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/data/EntityTypeMapping.java similarity index 89% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/data/EntityTypeMapping.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/data/EntityTypeMapping.java index 8d9f31b3..e1c87e82 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/data/EntityTypeMapping.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/data/EntityTypeMapping.java @@ -15,11 +15,11 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.data; +package com.viaversion.viabackwards.protocol.v1_13to1_12_2.data; import com.viaversion.viaversion.libs.fastutil.ints.Int2IntMap; import com.viaversion.viaversion.libs.fastutil.ints.Int2IntOpenHashMap; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.data.EntityTypeRewriter; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.data.EntityTypeRewriter; public class EntityTypeMapping { private static final Int2IntMap TYPES = new Int2IntOpenHashMap(); diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/data/NamedSoundMapping.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/data/NamedSoundMapping.java similarity index 90% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/data/NamedSoundMapping.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/data/NamedSoundMapping.java index 168fd21d..1824c524 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/data/NamedSoundMapping.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/data/NamedSoundMapping.java @@ -15,9 +15,9 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.data; +package com.viaversion.viabackwards.protocol.v1_13to1_12_2.data; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.data.NamedSoundRewriter; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.data.NamedSoundRewriter; import com.viaversion.viaversion.util.Key; import java.lang.reflect.Field; import java.util.HashMap; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/data/PaintingMapping.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/data/PaintingMapping.java similarity index 96% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/data/PaintingMapping.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/data/PaintingMapping.java index 3b412647..5edf4c26 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/data/PaintingMapping.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/data/PaintingMapping.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.data; +package com.viaversion.viabackwards.protocol.v1_13to1_12_2.data; import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectMap; import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectOpenHashMap; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/data/ParticleMapping.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/data/ParticleMapping.java similarity index 81% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/data/ParticleMapping.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/data/ParticleMapping.java index 908f4efc..1e4435ca 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/data/ParticleMapping.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/data/ParticleMapping.java @@ -16,13 +16,14 @@ * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.data; +package com.viaversion.viabackwards.protocol.v1_13to1_12_2.data; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.Protocol1_12_2To1_13; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.Protocol1_13To1_12_2; import com.viaversion.viaversion.api.minecraft.Particle; import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import java.util.List; import org.checkerframework.checker.nullness.qual.Nullable; @@ -32,17 +33,17 @@ public class ParticleMapping { static { ParticleHandler blockHandler = new ParticleHandler() { @Override - public int[] rewrite(Protocol1_12_2To1_13 protocol, PacketWrapper wrapper) { - return rewrite(wrapper.read(Type.VAR_INT)); + public int[] rewrite(Protocol1_13To1_12_2 protocol, PacketWrapper wrapper) { + return rewrite(wrapper.read(Types.VAR_INT)); } @Override - public int[] rewrite(Protocol1_12_2To1_13 protocol, List> data) { + public int[] rewrite(Protocol1_13To1_12_2 protocol, List> data) { return rewrite((int) data.get(0).getValue()); } private int[] rewrite(int newType) { - int blockType = Protocol1_12_2To1_13.MAPPINGS.getNewBlockStateId(newType); + int blockType = Protocol1_13To1_12_2.MAPPINGS.getNewBlockStateId(newType); int type = blockType >> 4; int meta = blockType & 15; @@ -70,23 +71,23 @@ public class ParticleMapping { rewrite(18), // (10->18) minecraft:dripping_water -> dripWater rewrite(30, new ParticleHandler() { @Override - public int[] rewrite(Protocol1_12_2To1_13 protocol, PacketWrapper wrapper) { - float r = wrapper.read(Type.FLOAT); - float g = wrapper.read(Type.FLOAT); - float b = wrapper.read(Type.FLOAT); - float scale = wrapper.read(Type.FLOAT); + public int[] rewrite(Protocol1_13To1_12_2 protocol, PacketWrapper wrapper) { + float r = wrapper.read(Types.FLOAT); + float g = wrapper.read(Types.FLOAT); + float b = wrapper.read(Types.FLOAT); + float scale = wrapper.read(Types.FLOAT); - wrapper.set(Type.FLOAT, 3, r); // 5 - Offset X index=3 - wrapper.set(Type.FLOAT, 4, g); // 6 - Offset Y index=4 - wrapper.set(Type.FLOAT, 5, b); // 7 - Offset Z index=5 - wrapper.set(Type.FLOAT, 6, scale); // 8 - Particle Data index=6 - wrapper.set(Type.INT, 1, 0); // 9 - Particle Count index=1 enable rgb particle + wrapper.set(Types.FLOAT, 3, r); // 5 - Offset X index=3 + wrapper.set(Types.FLOAT, 4, g); // 6 - Offset Y index=4 + wrapper.set(Types.FLOAT, 5, b); // 7 - Offset Z index=5 + wrapper.set(Types.FLOAT, 6, scale); // 8 - Particle Data index=6 + wrapper.set(Types.INT, 1, 0); // 9 - Particle Count index=1 enable rgb particle return null; } @Override - public int[] rewrite(Protocol1_12_2To1_13 protocol, List> data) { + public int[] rewrite(Protocol1_13To1_12_2 protocol, List> data) { return null; } }), // (11->30) minecraft:dust -> reddust @@ -108,16 +109,16 @@ public class ParticleMapping { rewrite(14), // (26->14) minecraft:instant_effect -> instantSpell rewrite(36, new ParticleHandler() { @Override - public int[] rewrite(Protocol1_12_2To1_13 protocol, PacketWrapper wrapper) { - return rewrite(protocol, wrapper.read(Type.ITEM1_13)); + public int[] rewrite(Protocol1_13To1_12_2 protocol, PacketWrapper wrapper) { + return rewrite(protocol, wrapper.read(Types.ITEM1_13)); } @Override - public int[] rewrite(Protocol1_12_2To1_13 protocol, List> data) { + public int[] rewrite(Protocol1_13To1_12_2 protocol, List> data) { return rewrite(protocol, (Item) data.get(0).getValue()); } - private int[] rewrite(Protocol1_12_2To1_13 protocol, Item newItem) { + private int[] rewrite(Protocol1_13To1_12_2 protocol, Item newItem) { Item item = protocol.getItemRewriter().handleItemToClient(null, newItem); return new int[]{item.identifier(), item.data()}; } @@ -161,9 +162,9 @@ public class ParticleMapping { public interface ParticleHandler { - int[] rewrite(Protocol1_12_2To1_13 protocol, PacketWrapper wrapper); + int[] rewrite(Protocol1_13To1_12_2 protocol, PacketWrapper wrapper); - int[] rewrite(Protocol1_12_2To1_13 protocol, List> data); + int[] rewrite(Protocol1_13To1_12_2 protocol, List> data); default boolean isBlockHandler() { return false; @@ -183,12 +184,12 @@ public class ParticleMapping { this(historyId, null); } - public int @Nullable [] rewriteData(Protocol1_12_2To1_13 protocol, PacketWrapper wrapper) { + public int @Nullable [] rewriteData(Protocol1_13To1_12_2 protocol, PacketWrapper wrapper) { if (handler == null) return null; return handler.rewrite(protocol, wrapper); } - public int @Nullable [] rewriteMeta(Protocol1_12_2To1_13 protocol, List> data) { + public int @Nullable [] rewriteMeta(Protocol1_13To1_12_2 protocol, List> data) { if (handler == null) return null; return handler.rewrite(protocol, data); } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/providers/BackwardsBlockEntityProvider.java similarity index 79% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/providers/BackwardsBlockEntityProvider.java index 88bcad0e..b4ddd0b5 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/providers/BackwardsBlockEntityProvider.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/providers/BackwardsBlockEntityProvider.java @@ -16,20 +16,20 @@ * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.providers; +package com.viaversion.viabackwards.protocol.v1_13to1_12_2.providers; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers.BannerHandler; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers.BedHandler; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers.FlowerPotHandler; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers.PistonHandler; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers.SkullHandler; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers.SpawnerHandler; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.storage.BackwardsBlockStorage; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.block_entity_handlers.BannerHandler; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.block_entity_handlers.BedHandler; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.block_entity_handlers.FlowerPotHandler; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.block_entity_handlers.PistonHandler; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.block_entity_handlers.SkullHandler; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.block_entity_handlers.SpawnerHandler; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.storage.BackwardsBlockStorage; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.Position; import com.viaversion.viaversion.api.platform.providers.Provider; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.StringTag; import java.util.HashMap; import java.util.Map; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/packets/BlockItemPackets1_13.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/rewriter/BlockItemPacketRewriter1_13.java similarity index 81% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/packets/BlockItemPackets1_13.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/rewriter/BlockItemPacketRewriter1_13.java index 3b34d9ad..c224acda 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/packets/BlockItemPackets1_13.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/rewriter/BlockItemPacketRewriter1_13.java @@ -16,17 +16,17 @@ * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.packets; +package com.viaversion.viabackwards.protocol.v1_13to1_12_2.rewriter; import com.google.common.primitives.Ints; import com.viaversion.viabackwards.ViaBackwards; import com.viaversion.viabackwards.api.rewriters.BackwardsItemRewriter; import com.viaversion.viabackwards.api.rewriters.EnchantmentRewriter; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.Protocol1_12_2To1_13; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.block_entity_handlers.FlowerPotHandler; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.providers.BackwardsBlockEntityProvider; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.storage.BackwardsBlockStorage; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.storage.NoteBlockStorage; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.Protocol1_13To1_12_2; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.block_entity_handlers.FlowerPotHandler; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.providers.BackwardsBlockEntityProvider; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.storage.BackwardsBlockStorage; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.storage.NoteBlockStorage; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.BlockChangeRecord; @@ -40,21 +40,22 @@ import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_13; import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_9_3; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.ByteTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.IntTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.ListTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.NumberTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.Tag; -import com.viaversion.viaversion.protocols.protocol1_12_1to1_12.ClientboundPackets1_12_1; -import com.viaversion.viaversion.protocols.protocol1_12_1to1_12.ServerboundPackets1_12_1; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.Protocol1_13To1_12_2; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.data.BlockIdData; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.data.SpawnEggRewriter; +import com.viaversion.nbt.tag.ByteTag; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.IntTag; +import com.viaversion.nbt.tag.ListTag; +import com.viaversion.nbt.tag.NumberTag; +import com.viaversion.nbt.tag.StringTag; +import com.viaversion.nbt.tag.Tag; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ClientboundPackets1_13; +import com.viaversion.viaversion.protocols.v1_12to1_12_1.packet.ClientboundPackets1_12_1; +import com.viaversion.viaversion.protocols.v1_12to1_12_1.packet.ServerboundPackets1_12_1; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.Protocol1_12_2To1_13; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.data.BlockIdData; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.data.SpawnEggRewriter; import com.viaversion.viaversion.util.ComponentUtil; import com.viaversion.viaversion.util.IdAndData; import com.viaversion.viaversion.util.Key; @@ -66,12 +67,12 @@ import java.util.Locale; import java.util.Map; import java.util.Optional; -public class BlockItemPackets1_13 extends BackwardsItemRewriter { +public class BlockItemPacketRewriter1_13 extends BackwardsItemRewriter { private final Map enchantmentMappings = new HashMap<>(); private final String extraNbtTag; - public BlockItemPackets1_13(Protocol1_12_2To1_13 protocol) { + public BlockItemPacketRewriter1_13(Protocol1_13To1_12_2 protocol) { super(protocol, null, null); extraNbtTag = nbtTagName("2"); } @@ -93,7 +94,7 @@ public class BlockItemPackets1_13 extends BackwardsItemRewriter { - int itemId = wrapper.read(Type.VAR_INT); + int itemId = wrapper.read(Types.VAR_INT); int oldId = protocol.getMappingData().getItemMappings().getNewId(itemId); if (oldId == -1) { wrapper.cancel(); @@ -101,22 +102,22 @@ public class BlockItemPackets1_13 extends BackwardsItemRewriter { - int blockId = wrapper.get(Type.VAR_INT, 0); + int blockId = wrapper.get(Types.VAR_INT, 0); if (blockId == 73) blockId = 25; @@ -142,15 +143,15 @@ public class BlockItemPackets1_13 extends BackwardsItemRewriter update = noteBlockStorage.getNoteBlockUpdate(position); if (update != null) { // Use values from block state update - wrapper.set(Type.UNSIGNED_BYTE, 0, update.key().shortValue()); - wrapper.set(Type.UNSIGNED_BYTE, 1, update.value().shortValue()); + wrapper.set(Types.UNSIGNED_BYTE, 0, update.key().shortValue()); + wrapper.set(Types.UNSIGNED_BYTE, 1, update.value().shortValue()); } } - wrapper.set(Type.VAR_INT, 0, blockId); + wrapper.set(Types.VAR_INT, 0, blockId); }); } }); @@ -158,31 +159,31 @@ public class BlockItemPackets1_13 extends BackwardsItemRewriter { BackwardsBlockEntityProvider provider = Via.getManager().getProviders().get(BackwardsBlockEntityProvider.class); // TODO conduit handling - if (wrapper.get(Type.UNSIGNED_BYTE, 0) == 5) { + if (wrapper.get(Types.UNSIGNED_BYTE, 0) == 5) { wrapper.cancel(); } - wrapper.set(Type.NAMED_COMPOUND_TAG, 0, + wrapper.set(Types.NAMED_COMPOUND_TAG, 0, provider.transform( wrapper.user(), - wrapper.get(Type.POSITION1_8, 0), - wrapper.get(Type.NAMED_COMPOUND_TAG, 0) + wrapper.get(Types.BLOCK_POSITION1_8, 0), + wrapper.get(Types.NAMED_COMPOUND_TAG, 0) )); }); } }); - protocol.registerClientbound(ClientboundPackets1_13.UNLOAD_CHUNK, wrapper -> { - int chunkMinX = wrapper.passthrough(Type.INT) << 4; - int chunkMinZ = wrapper.passthrough(Type.INT) << 4; + protocol.registerClientbound(ClientboundPackets1_13.FORGET_LEVEL_CHUNK, wrapper -> { + int chunkMinX = wrapper.passthrough(Types.INT) << 4; + int chunkMinZ = wrapper.passthrough(Types.INT) << 4; int chunkMaxX = chunkMinX + 15; int chunkMaxZ = chunkMinZ + 15; BackwardsBlockStorage blockStorage = wrapper.user().get(BackwardsBlockStorage.class); @@ -194,14 +195,14 @@ public class BlockItemPackets1_13 extends BackwardsItemRewriter { - int blockState = wrapper.read(Type.VAR_INT); - Position position = wrapper.get(Type.POSITION1_8, 0); + int blockState = wrapper.read(Types.VAR_INT); + Position position = wrapper.get(Types.BLOCK_POSITION1_8, 0); // Note block special treatment if (blockState >= 249 && blockState <= 748) { // Note block states id range @@ -212,7 +213,7 @@ public class BlockItemPackets1_13 extends BackwardsItemRewriter { BackwardsBlockStorage storage = wrapper.user().get(BackwardsBlockStorage.class); - for (BlockChangeRecord record : wrapper.get(Type.BLOCK_CHANGE_RECORD_ARRAY, 0)) { - int chunkX = wrapper.get(Type.INT, 0); - int chunkZ = wrapper.get(Type.INT, 1); + for (BlockChangeRecord record : wrapper.get(Types.BLOCK_CHANGE_ARRAY, 0)) { + int chunkX = wrapper.get(Types.INT, 0); + int chunkZ = wrapper.get(Types.INT, 1); int block = record.getBlockId(); Position position = new Position( record.getSectionX() + (chunkX * 16), @@ -252,14 +253,14 @@ public class BlockItemPackets1_13 extends BackwardsItemRewriter { - final Item[] items = wrapper.get(Type.ITEM1_8_SHORT_ARRAY, 0); + final Item[] items = wrapper.get(Types.ITEM1_8_SHORT_ARRAY, 0); for (Item item : items) { handleItemToClient(wrapper.user(), item); } @@ -267,18 +268,18 @@ public class BlockItemPackets1_13 extends BackwardsItemRewriter handleItemToClient(wrapper.user(), wrapper.get(Type.ITEM1_8, 0))); + handler(wrapper -> handleItemToClient(wrapper.user(), wrapper.get(Types.ITEM1_8, 0))); } }); - protocol.registerClientbound(ClientboundPackets1_13.CHUNK_DATA, wrapper -> { + protocol.registerClientbound(ClientboundPackets1_13.LEVEL_CHUNK, wrapper -> { ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); ChunkType1_9_3 type_old = ChunkType1_9_3.forEnvironment(clientWorld.getEnvironment()); @@ -375,103 +376,103 @@ public class BlockItemPackets1_13 extends BackwardsItemRewriter { - int id = wrapper.get(Type.INT, 0); - int data = wrapper.get(Type.INT, 1); + int id = wrapper.get(Types.INT, 0); + int data = wrapper.get(Types.INT, 1); if (id == 1010) { // Play record - wrapper.set(Type.INT, 1, protocol.getMappingData().getItemMappings().getNewId(data) >> 4); + wrapper.set(Types.INT, 1, protocol.getMappingData().getItemMappings().getNewId(data) >> 4); } else if (id == 2001) { // Block break + block break sound data = protocol.getMappingData().getNewBlockStateId(data); int blockId = data >> 4; int blockData = data & 0xF; - wrapper.set(Type.INT, 1, (blockId & 0xFFF) | (blockData << 12)); + wrapper.set(Types.INT, 1, (blockId & 0xFFF) | (blockData << 12)); } }); } }); - protocol.registerClientbound(ClientboundPackets1_13.MAP_DATA, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_13.MAP_ITEM_DATA, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); - map(Type.BYTE); - map(Type.BOOLEAN); + map(Types.VAR_INT); + map(Types.BYTE); + map(Types.BOOLEAN); handler(wrapper -> { - int iconCount = wrapper.passthrough(Type.VAR_INT); + int iconCount = wrapper.passthrough(Types.VAR_INT); for (int i = 0; i < iconCount; i++) { - int type = wrapper.read(Type.VAR_INT); - byte x = wrapper.read(Type.BYTE); - byte z = wrapper.read(Type.BYTE); - byte direction = wrapper.read(Type.BYTE); - wrapper.read(Type.OPTIONAL_COMPONENT); + int type = wrapper.read(Types.VAR_INT); + byte x = wrapper.read(Types.BYTE); + byte z = wrapper.read(Types.BYTE); + byte direction = wrapper.read(Types.BYTE); + wrapper.read(Types.OPTIONAL_COMPONENT); if (type > 9) { - wrapper.set(Type.VAR_INT, 1, wrapper.get(Type.VAR_INT, 1) - 1); + wrapper.set(Types.VAR_INT, 1, wrapper.get(Types.VAR_INT, 1) - 1); continue; } - wrapper.write(Type.BYTE, (byte) ((type << 4) | (direction & 0x0F))); - wrapper.write(Type.BYTE, x); - wrapper.write(Type.BYTE, z); + wrapper.write(Types.BYTE, (byte) ((type << 4) | (direction & 0x0F))); + wrapper.write(Types.BYTE, x); + wrapper.write(Types.BYTE, z); } }); } }); - protocol.registerClientbound(ClientboundPackets1_13.ENTITY_EQUIPMENT, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_13.SET_EQUIPPED_ITEM, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); - map(Type.VAR_INT); - map(Type.ITEM1_13, Type.ITEM1_8); + map(Types.VAR_INT); + map(Types.VAR_INT); + map(Types.ITEM1_13, Types.ITEM1_8); - handler(wrapper -> handleItemToClient(wrapper.user(), wrapper.get(Type.ITEM1_8, 0))); + handler(wrapper -> handleItemToClient(wrapper.user(), wrapper.get(Types.ITEM1_8, 0))); } }); - protocol.registerClientbound(ClientboundPackets1_13.WINDOW_PROPERTY, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_13.CONTAINER_SET_DATA, new PacketHandlers() { @Override public void register() { - map(Type.UNSIGNED_BYTE); // Window Id - map(Type.SHORT); // Property - map(Type.SHORT); // Value + map(Types.UNSIGNED_BYTE); // Window Id + map(Types.SHORT); // Property + map(Types.SHORT); // Value handler(wrapper -> { - short property = wrapper.get(Type.SHORT, 0); + short property = wrapper.get(Types.SHORT, 0); // Enchantment table if (property >= 4 && property <= 6) { - short oldId = wrapper.get(Type.SHORT, 1); - wrapper.set(Type.SHORT, 1, (short) protocol.getMappingData().getEnchantmentMappings().getNewId(oldId)); + short oldId = wrapper.get(Types.SHORT, 1); + wrapper.set(Types.SHORT, 1, (short) protocol.getMappingData().getEnchantmentMappings().getNewId(oldId)); } }); } }); - protocol.registerServerbound(ServerboundPackets1_12_1.CREATIVE_INVENTORY_ACTION, new PacketHandlers() { + protocol.registerServerbound(ServerboundPackets1_12_1.SET_CREATIVE_MODE_SLOT, new PacketHandlers() { @Override public void register() { - map(Type.SHORT); - map(Type.ITEM1_8, Type.ITEM1_13); + map(Types.SHORT); + map(Types.ITEM1_8, Types.ITEM1_13); - handler(wrapper -> handleItemToServer(wrapper.user(), wrapper.get(Type.ITEM1_13, 0))); + handler(wrapper -> handleItemToServer(wrapper.user(), wrapper.get(Types.ITEM1_13, 0))); } }); - protocol.registerServerbound(ServerboundPackets1_12_1.CLICK_WINDOW, new PacketHandlers() { + protocol.registerServerbound(ServerboundPackets1_12_1.CONTAINER_CLICK, new PacketHandlers() { @Override public void register() { - map(Type.UNSIGNED_BYTE); - map(Type.SHORT); - map(Type.BYTE); - map(Type.SHORT); - map(Type.VAR_INT); - map(Type.ITEM1_8, Type.ITEM1_13); + map(Types.UNSIGNED_BYTE); + map(Types.SHORT); + map(Types.BYTE); + map(Types.SHORT); + map(Types.VAR_INT); + map(Types.ITEM1_8, Types.ITEM1_13); - handler(wrapper -> handleItemToServer(wrapper.user(), wrapper.get(Type.ITEM1_13, 0))); + handler(wrapper -> handleItemToServer(wrapper.user(), wrapper.get(Types.ITEM1_13, 0))); } }); } @@ -639,7 +640,7 @@ public class BlockItemPackets1_13 extends BackwardsItemRewriter loreTag = display.getListTag("Lore", StringTag.class); if (loreTag == null) { display.put("Lore", loreTag = new ListTag<>(StringTag.class)); - tag.put(extraNbtTag + "|DummyLore", new ByteTag()); + tag.put(extraNbtTag + "|DummyLore", new ByteTag(false)); } else if (!loreTag.isEmpty()) { ListTag oldLore = new ListTag<>(StringTag.class); for (StringTag value : loreTag) { @@ -841,8 +842,9 @@ public class BlockItemPackets1_13 extends BackwardsItemRewriter blockTag = tag.remove(extraNbtTag + "|" + tagName); + ListTag blockTag = tag.getListTag(extraNbtTag + "|" + tagName); if (blockTag != null) { + tag.remove(extraNbtTag + "|" + tagName); tag.put(tagName, blockTag.copy()); } else if ((blockTag = tag.getListTag(tagName)) != null) { ListTag newCanPlaceOn = new ListTag<>(StringTag.class); @@ -897,7 +899,7 @@ public class BlockItemPackets1_13 extends BackwardsItemRewriter. */ -package com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.packets; +package com.viaversion.viabackwards.protocol.v1_13to1_12_2.rewriter; import com.viaversion.viabackwards.ViaBackwards; import com.viaversion.viabackwards.api.entities.storage.EntityPositionHandler; import com.viaversion.viabackwards.api.rewriters.LegacyEntityRewriter; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.Protocol1_12_2To1_13; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.data.EntityTypeMapping; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.data.PaintingMapping; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.data.ParticleMapping; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.storage.BackwardsBlockStorage; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.storage.NoteBlockStorage; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.storage.PlayerPositionStorage1_13; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.Protocol1_13To1_12_2; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.data.EntityTypeMapping; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.data.PaintingMapping; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.data.ParticleMapping; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.storage.BackwardsBlockStorage; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.storage.NoteBlockStorage; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.storage.PlayerPositionStorage1_13; import com.viaversion.viaversion.api.minecraft.Particle; import com.viaversion.viaversion.api.minecraft.entities.EntityType; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_13; import com.viaversion.viaversion.api.minecraft.item.Item; -import com.viaversion.viaversion.api.minecraft.metadata.Metadata; -import com.viaversion.viaversion.api.minecraft.metadata.types.MetaType1_12; +import com.viaversion.viaversion.api.minecraft.entitydata.EntityData; +import com.viaversion.viaversion.api.minecraft.entitydata.types.EntityDataTypes1_12; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.version.Types1_12; import com.viaversion.viaversion.api.type.types.version.Types1_13; import com.viaversion.viaversion.libs.gson.JsonElement; -import com.viaversion.viaversion.protocols.protocol1_12_1to1_12.ClientboundPackets1_12_1; -import com.viaversion.viaversion.protocols.protocol1_12_1to1_12.ServerboundPackets1_12_1; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ClientboundPackets1_13; +import com.viaversion.viaversion.protocols.v1_12to1_12_1.packet.ClientboundPackets1_12_1; +import com.viaversion.viaversion.protocols.v1_12to1_12_1.packet.ServerboundPackets1_12_1; import java.util.Optional; -public class EntityPackets1_13 extends LegacyEntityRewriter { +public class EntityPacketRewriter1_13 extends LegacyEntityRewriter { - public EntityPackets1_13(Protocol1_12_2To1_13 protocol) { + public EntityPacketRewriter1_13(Protocol1_13To1_12_2 protocol) { super(protocol); } @@ -55,89 +56,89 @@ public class EntityPackets1_13 extends LegacyEntityRewriter { if (!ViaBackwards.getConfig().isFix1_13FacePlayer()) return; PlayerPositionStorage1_13 playerStorage = wrapper.user().get(PlayerPositionStorage1_13.class); - byte bitField = wrapper.get(Type.BYTE, 0); - playerStorage.setX(toSet(bitField, 0, playerStorage.x(), wrapper.get(Type.DOUBLE, 0))); - playerStorage.setY(toSet(bitField, 1, playerStorage.y(), wrapper.get(Type.DOUBLE, 1))); - playerStorage.setZ(toSet(bitField, 2, playerStorage.z(), wrapper.get(Type.DOUBLE, 2))); + byte bitField = wrapper.get(Types.BYTE, 0); + playerStorage.setX(toSet(bitField, 0, playerStorage.x(), wrapper.get(Types.DOUBLE, 0))); + playerStorage.setY(toSet(bitField, 1, playerStorage.y(), wrapper.get(Types.DOUBLE, 1))); + playerStorage.setZ(toSet(bitField, 2, playerStorage.z(), wrapper.get(Types.DOUBLE, 2))); }); } }); - protocol.registerClientbound(ClientboundPackets1_13.SPAWN_ENTITY, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_13.ADD_ENTITY, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); - map(Type.UUID); - map(Type.BYTE); - map(Type.DOUBLE); - map(Type.DOUBLE); - map(Type.DOUBLE); - map(Type.BYTE); - map(Type.BYTE); - map(Type.INT); + map(Types.VAR_INT); + map(Types.UUID); + map(Types.BYTE); + map(Types.DOUBLE); + map(Types.DOUBLE); + map(Types.DOUBLE); + map(Types.BYTE); + map(Types.BYTE); + map(Types.INT); handler(getObjectTrackerHandler()); handler(wrapper -> { - Optional optionalType = EntityTypes1_13.ObjectType.findById(wrapper.get(Type.BYTE, 0)); + Optional optionalType = EntityTypes1_13.ObjectType.findById(wrapper.get(Types.BYTE, 0)); if (optionalType.isEmpty()) return; EntityTypes1_13.ObjectType type = optionalType.get(); if (type == EntityTypes1_13.ObjectType.FALLING_BLOCK) { - int blockState = wrapper.get(Type.INT, 0); - int combined = Protocol1_12_2To1_13.MAPPINGS.getNewBlockStateId(blockState); + int blockState = wrapper.get(Types.INT, 0); + int combined = Protocol1_13To1_12_2.MAPPINGS.getNewBlockStateId(blockState); combined = ((combined >> 4) & 0xFFF) | ((combined & 0xF) << 12); - wrapper.set(Type.INT, 0, combined); + wrapper.set(Types.INT, 0, combined); } else if (type == EntityTypes1_13.ObjectType.ITEM_FRAME) { - int data = wrapper.get(Type.INT, 0); + int data = wrapper.get(Types.INT, 0); data = switch (data) { case 3 -> 0; case 4 -> 1; case 5 -> 3; default -> data; }; - wrapper.set(Type.INT, 0, data); + wrapper.set(Types.INT, 0, data); } else if (type == EntityTypes1_13.ObjectType.TRIDENT) { - wrapper.set(Type.BYTE, 0, (byte) EntityTypes1_13.ObjectType.TIPPED_ARROW.getId()); + wrapper.set(Types.BYTE, 0, (byte) EntityTypes1_13.ObjectType.TIPPED_ARROW.getId()); } }); } }); - registerTracker(ClientboundPackets1_13.SPAWN_EXPERIENCE_ORB, EntityTypes1_13.EntityType.EXPERIENCE_ORB); - registerTracker(ClientboundPackets1_13.SPAWN_GLOBAL_ENTITY, EntityTypes1_13.EntityType.LIGHTNING_BOLT); + registerTracker(ClientboundPackets1_13.ADD_EXPERIENCE_ORB, EntityTypes1_13.EntityType.EXPERIENCE_ORB); + registerTracker(ClientboundPackets1_13.ADD_GLOBAL_ENTITY, EntityTypes1_13.EntityType.LIGHTNING_BOLT); - protocol.registerClientbound(ClientboundPackets1_13.SPAWN_MOB, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_13.ADD_MOB, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); - map(Type.UUID); - map(Type.VAR_INT); - map(Type.DOUBLE); - map(Type.DOUBLE); - map(Type.DOUBLE); - map(Type.BYTE); - map(Type.BYTE); - map(Type.BYTE); - map(Type.SHORT); - map(Type.SHORT); - map(Type.SHORT); - map(Types1_13.METADATA_LIST, Types1_12.METADATA_LIST); + map(Types.VAR_INT); + map(Types.UUID); + map(Types.VAR_INT); + map(Types.DOUBLE); + map(Types.DOUBLE); + map(Types.DOUBLE); + map(Types.BYTE); + map(Types.BYTE); + map(Types.BYTE); + map(Types.SHORT); + map(Types.SHORT); + map(Types.SHORT); + map(Types1_13.ENTITY_DATA_LIST, Types1_12.ENTITY_DATA_LIST); handler(wrapper -> { - int type = wrapper.get(Type.VAR_INT, 1); + int type = wrapper.get(Types.VAR_INT, 1); EntityType entityType = EntityTypes1_13.getTypeFromId(type, false); - tracker(wrapper.user()).addEntity(wrapper.get(Type.VAR_INT, 0), entityType); + tracker(wrapper.user()).addEntity(wrapper.get(Types.VAR_INT, 0), entityType); int oldId = EntityTypeMapping.getOldId(type); if (oldId == -1) { @@ -145,52 +146,52 @@ public class EntityPackets1_13 extends LegacyEntityRewriter { - int motive = wrapper.read(Type.VAR_INT); + int motive = wrapper.read(Types.VAR_INT); String title = PaintingMapping.getStringId(motive); - wrapper.write(Type.STRING, title); + wrapper.write(Types.STRING, title); }); } }); - registerJoinGame(ClientboundPackets1_13.JOIN_GAME, EntityTypes1_13.EntityType.PLAYER); + registerJoinGame(ClientboundPackets1_13.LOGIN, EntityTypes1_13.EntityType.PLAYER); protocol.registerClientbound(ClientboundPackets1_13.RESPAWN, new PacketHandlers() { @Override public void register() { - map(Type.INT); // 0 - Dimension ID + map(Types.INT); // 0 - Dimension ID handler(getDimensionHandler(0)); handler(wrapper -> { @@ -200,53 +201,53 @@ public class EntityPackets1_13 extends LegacyEntityRewriter { + protocol.registerClientbound(ClientboundPackets1_13.PLAYER_LOOK_AT, null, wrapper -> { wrapper.cancel(); if (!ViaBackwards.getConfig().isFix1_13FacePlayer()) return; // We will just accept a possible, very minor mismatch between server and client position, // and will take the server's one in both cases, else we would have to cache all entities' positions. - final int anchor = wrapper.read(Type.VAR_INT); // feet/eyes enum - final double x = wrapper.read(Type.DOUBLE); - final double y = wrapper.read(Type.DOUBLE); - final double z = wrapper.read(Type.DOUBLE); + final int anchor = wrapper.read(Types.VAR_INT); // feet/eyes enum + final double x = wrapper.read(Types.DOUBLE); + final double y = wrapper.read(Types.DOUBLE); + final double z = wrapper.read(Types.DOUBLE); PlayerPositionStorage1_13 positionStorage = wrapper.user().get(PlayerPositionStorage1_13.class); // Send teleport packet to client PacketWrapper positionAndLook = wrapper.create(ClientboundPackets1_12_1.PLAYER_POSITION); - positionAndLook.write(Type.DOUBLE, 0D); - positionAndLook.write(Type.DOUBLE, 0D); - positionAndLook.write(Type.DOUBLE, 0D); + positionAndLook.write(Types.DOUBLE, 0D); + positionAndLook.write(Types.DOUBLE, 0D); + positionAndLook.write(Types.DOUBLE, 0D); //TODO properly cache and calculate head position? EntityPositionHandler.writeFacingDegrees(positionAndLook, positionStorage.x(), anchor == 1 ? positionStorage.y() + 1.62 : positionStorage.y(), positionStorage.z(), x, y, z); - positionAndLook.write(Type.BYTE, (byte) 7); // bitfield, 0=absolute, 1=relative - x,y,z relative, yaw,pitch absolute - positionAndLook.write(Type.VAR_INT, -1); - positionAndLook.send(Protocol1_12_2To1_13.class); + positionAndLook.write(Types.BYTE, (byte) 7); // bitfield, 0=absolute, 1=relative - x,y,z relative, yaw,pitch absolute + positionAndLook.write(Types.VAR_INT, -1); + positionAndLook.send(Protocol1_13To1_12_2.class); }); if (ViaBackwards.getConfig().isFix1_13FacePlayer()) { PacketHandlers movementRemapper = new PacketHandlers() { @Override public void register() { - map(Type.DOUBLE); - map(Type.DOUBLE); - map(Type.DOUBLE); + map(Types.DOUBLE); + map(Types.DOUBLE); + map(Types.DOUBLE); handler(wrapper -> wrapper.user().get(PlayerPositionStorage1_13.class).setCoordinates(wrapper, false)); } }; - protocol.registerServerbound(ServerboundPackets1_12_1.PLAYER_POSITION, movementRemapper); // Player Position - protocol.registerServerbound(ServerboundPackets1_12_1.PLAYER_POSITION_AND_ROTATION, movementRemapper); // Player Position And Look (serverbound) - protocol.registerServerbound(ServerboundPackets1_12_1.VEHICLE_MOVE, movementRemapper); // Vehicle Move (serverbound) + protocol.registerServerbound(ServerboundPackets1_12_1.MOVE_PLAYER_POS, movementRemapper); // Player Position + protocol.registerServerbound(ServerboundPackets1_12_1.MOVE_PLAYER_POS_ROT, movementRemapper); // Player Position And Look (serverbound) + protocol.registerServerbound(ServerboundPackets1_12_1.MOVE_VEHICLE, movementRemapper); // Vehicle Move (serverbound) } } @@ -264,7 +265,7 @@ public class EntityPackets1_13 extends LegacyEntityRewriter { // The phantom is grey/blue so let's do yellow/blue - storage.add(new Metadata(15, MetaType1_12.VarInt, 3)); + storage.add(new EntityData(15, EntityDataTypes1_12.VAR_INT, 3)); }); // Dolphin @@ -275,23 +276,23 @@ public class EntityPackets1_13 extends LegacyEntityRewriter { - int typeId = meta.metaType().typeId(); + int typeId = meta.dataType().typeId(); if (typeId == 4) { JsonElement element = meta.value(); protocol.translatableRewriter().processText(event.user(), element); - meta.setMetaType(MetaType1_12.Chat); + meta.setDataType(EntityDataTypes1_12.COMPONENT); } else if (typeId == 5) { // Rewrite optional chat to string JsonElement element = meta.value(); - meta.setTypeAndValue(MetaType1_12.String, protocol.jsonToLegacy(event.user(), element)); + meta.setTypeAndValue(EntityDataTypes1_12.STRING, protocol.jsonToLegacy(event.user(), element)); } else if (typeId == 6) { Item item = (Item) meta.getValue(); - meta.setTypeAndValue(MetaType1_12.Slot, protocol.getItemRewriter().handleItemToClient(event.user(), item)); + meta.setTypeAndValue(EntityDataTypes1_12.ITEM, protocol.getItemRewriter().handleItemToClient(event.user(), item)); } else if (typeId == 15) { // Discontinue particles event.cancel(); } else { - meta.setMetaType(MetaType1_12.byId(typeId > 5 ? typeId - 1 : typeId)); + meta.setDataType(EntityDataTypes1_12.byId(typeId > 5 ? typeId - 1 : typeId)); } }); @@ -343,9 +344,9 @@ public class EntityPackets1_13 extends LegacyEntityRewriter. */ -package com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.packets; +package com.viaversion.viabackwards.protocol.v1_13to1_12_2.rewriter; import com.google.common.base.Joiner; import com.viaversion.viabackwards.ViaBackwards; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.Protocol1_12_2To1_13; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.data.ParticleMapping; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.storage.TabCompleteStorage; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.Protocol1_13To1_12_2; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.data.ParticleMapping; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.storage.TabCompleteStorage; import com.viaversion.viabackwards.utils.ChatUtil; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.minecraft.Position; @@ -31,14 +31,15 @@ import com.viaversion.viaversion.api.protocol.packet.State; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.rewriter.RewriterBase; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.libs.gson.JsonElement; import com.viaversion.viaversion.protocols.base.ClientboundLoginPackets; import com.viaversion.viaversion.protocols.base.ServerboundLoginPackets; -import com.viaversion.viaversion.protocols.protocol1_12_1to1_12.ClientboundPackets1_12_1; -import com.viaversion.viaversion.protocols.protocol1_12_1to1_12.ServerboundPackets1_12_1; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ServerboundPackets1_13; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.packets.InventoryPackets; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.rewriter.ItemPacketRewriter1_13; +import com.viaversion.viaversion.protocols.v1_12to1_12_1.packet.ClientboundPackets1_12_1; +import com.viaversion.viaversion.protocols.v1_12to1_12_1.packet.ServerboundPackets1_12_1; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ClientboundPackets1_13; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ServerboundPackets1_13; import com.viaversion.viaversion.rewriter.CommandRewriter; import com.viaversion.viaversion.util.Key; import java.nio.charset.StandardCharsets; @@ -48,11 +49,11 @@ import java.util.Locale; import java.util.UUID; import java.util.concurrent.ThreadLocalRandom; -public class PlayerPacket1_13 extends RewriterBase { +public class PlayerPacketRewriter1_13 extends RewriterBase { private final CommandRewriter commandRewriter = new CommandRewriter<>(protocol); - public PlayerPacket1_13(Protocol1_12_2To1_13 protocol) { + public PlayerPacketRewriter1_13(Protocol1_13To1_12_2 protocol) { super(protocol); } @@ -66,41 +67,41 @@ public class PlayerPacket1_13 extends RewriterBase { packetWrapper.cancel(); // Plugin response packetWrapper.create(ServerboundLoginPackets.CUSTOM_QUERY_ANSWER.getId(), wrapper -> { - wrapper.write(Type.VAR_INT, packetWrapper.read(Type.VAR_INT)); // Packet id - wrapper.write(Type.BOOLEAN, false); // Success - }).sendToServer(Protocol1_12_2To1_13.class); + wrapper.write(Types.VAR_INT, packetWrapper.read(Types.VAR_INT)); // Packet id + wrapper.write(Types.BOOLEAN, false); // Success + }).sendToServer(Protocol1_13To1_12_2.class); }); } }); - protocol.registerClientbound(ClientboundPackets1_13.PLUGIN_MESSAGE, wrapper -> { - String channel = wrapper.read(Type.STRING); + protocol.registerClientbound(ClientboundPackets1_13.CUSTOM_PAYLOAD, wrapper -> { + String channel = wrapper.read(Types.STRING); if (channel.equals("minecraft:trader_list")) { - wrapper.write(Type.STRING, "MC|TrList"); - wrapper.passthrough(Type.INT); //Passthrough Window ID + wrapper.write(Types.STRING, "MC|TrList"); + wrapper.passthrough(Types.INT); //Passthrough Window ID - int size = wrapper.passthrough(Type.UNSIGNED_BYTE); + int size = wrapper.passthrough(Types.UNSIGNED_BYTE); for (int i = 0; i < size; i++) { //Input Item - Item input = wrapper.read(Type.ITEM1_13); - wrapper.write(Type.ITEM1_8, protocol.getItemRewriter().handleItemToClient(wrapper.user(), input)); + Item input = wrapper.read(Types.ITEM1_13); + wrapper.write(Types.ITEM1_8, protocol.getItemRewriter().handleItemToClient(wrapper.user(), input)); //Output Item - Item output = wrapper.read(Type.ITEM1_13); - wrapper.write(Type.ITEM1_8, protocol.getItemRewriter().handleItemToClient(wrapper.user(), output)); + Item output = wrapper.read(Types.ITEM1_13); + wrapper.write(Types.ITEM1_8, protocol.getItemRewriter().handleItemToClient(wrapper.user(), output)); - boolean secondItem = wrapper.passthrough(Type.BOOLEAN); //Has second item + boolean secondItem = wrapper.passthrough(Types.BOOLEAN); //Has second item if (secondItem) { //Second Item - Item second = wrapper.read(Type.ITEM1_13); - wrapper.write(Type.ITEM1_8, protocol.getItemRewriter().handleItemToClient(wrapper.user(), second)); + Item second = wrapper.read(Types.ITEM1_13); + wrapper.write(Types.ITEM1_8, protocol.getItemRewriter().handleItemToClient(wrapper.user(), second)); } - wrapper.passthrough(Type.BOOLEAN); //Trade disabled - wrapper.passthrough(Type.INT); //Number of tools uses - wrapper.passthrough(Type.INT); //Maximum number of trade uses + wrapper.passthrough(Types.BOOLEAN); //Trade disabled + wrapper.passthrough(Types.INT); //Number of tools uses + wrapper.passthrough(Types.INT); //Maximum number of trade uses } } else { - String oldChannel = InventoryPackets.getOldPluginChannelId(channel); + String oldChannel = ItemPacketRewriter1_13.getOldPluginChannelId(channel); if (oldChannel == null) { if (!Via.getConfig().isSuppressConversionWarnings() || Via.getManager().isDebug()) { ViaBackwards.getPlatform().getLogger().warning("Ignoring clientbound plugin message with channel: " + channel); @@ -108,40 +109,40 @@ public class PlayerPacket1_13 extends RewriterBase { wrapper.cancel(); return; } - wrapper.write(Type.STRING, oldChannel); + wrapper.write(Types.STRING, oldChannel); if (oldChannel.equals("REGISTER") || oldChannel.equals("UNREGISTER")) { - String[] channels = new String(wrapper.read(Type.REMAINING_BYTES), StandardCharsets.UTF_8).split("\0"); + String[] channels = new String(wrapper.read(Types.REMAINING_BYTES), StandardCharsets.UTF_8).split("\0"); List rewrittenChannels = new ArrayList<>(); for (String s : channels) { - String rewritten = InventoryPackets.getOldPluginChannelId(s); + String rewritten = ItemPacketRewriter1_13.getOldPluginChannelId(s); if (rewritten != null) { rewrittenChannels.add(rewritten); } else if (!Via.getConfig().isSuppressConversionWarnings() || Via.getManager().isDebug()) { ViaBackwards.getPlatform().getLogger().warning("Ignoring plugin channel in clientbound " + oldChannel + ": " + s); } } - wrapper.write(Type.REMAINING_BYTES, Joiner.on('\0').join(rewrittenChannels).getBytes(StandardCharsets.UTF_8)); + wrapper.write(Types.REMAINING_BYTES, Joiner.on('\0').join(rewrittenChannels).getBytes(StandardCharsets.UTF_8)); } } }); - protocol.registerClientbound(ClientboundPackets1_13.SPAWN_PARTICLE, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_13.LEVEL_PARTICLES, new PacketHandlers() { @Override public void register() { - map(Type.INT); // 0 - Particle ID - map(Type.BOOLEAN); // 1 - Long Distance - map(Type.FLOAT); // 2 - X - map(Type.FLOAT); // 3 - Y - map(Type.FLOAT); // 4 - Z - map(Type.FLOAT); // 5 - Offset X - map(Type.FLOAT); // 6 - Offset Y - map(Type.FLOAT); // 7 - Offset Z - map(Type.FLOAT); // 8 - Particle Data - map(Type.INT); // 9 - Particle Count + map(Types.INT); // 0 - Particle ID + map(Types.BOOLEAN); // 1 - Long Distance + map(Types.FLOAT); // 2 - X + map(Types.FLOAT); // 3 - Y + map(Types.FLOAT); // 4 - Z + map(Types.FLOAT); // 5 - Offset X + map(Types.FLOAT); // 6 - Offset Y + map(Types.FLOAT); // 7 - Offset Z + map(Types.FLOAT); // 8 - Particle Data + map(Types.INT); // 9 - Particle Count handler(wrapper -> { - ParticleMapping.ParticleData old = ParticleMapping.getMapping(wrapper.get(Type.INT, 0)); - wrapper.set(Type.INT, 0, old.getHistoryId()); + ParticleMapping.ParticleData old = ParticleMapping.getMapping(wrapper.get(Types.INT, 0)); + wrapper.set(Types.INT, 0, old.getHistoryId()); int[] data = old.rewriteData(protocol, wrapper); if (data != null) { @@ -152,7 +153,7 @@ public class PlayerPacket1_13 extends RewriterBase { } for (int i : data) { - wrapper.write(Type.VAR_INT, i); + wrapper.write(Types.VAR_INT, i); } } }); @@ -164,28 +165,28 @@ public class PlayerPacket1_13 extends RewriterBase { public void register() { handler(packetWrapper -> { TabCompleteStorage storage = packetWrapper.user().get(TabCompleteStorage.class); - int action = packetWrapper.passthrough(Type.VAR_INT); - int nPlayers = packetWrapper.passthrough(Type.VAR_INT); + int action = packetWrapper.passthrough(Types.VAR_INT); + int nPlayers = packetWrapper.passthrough(Types.VAR_INT); for (int i = 0; i < nPlayers; i++) { - UUID uuid = packetWrapper.passthrough(Type.UUID); + UUID uuid = packetWrapper.passthrough(Types.UUID); if (action == 0) { // Add - String name = packetWrapper.passthrough(Type.STRING); + String name = packetWrapper.passthrough(Types.STRING); storage.usernames().put(uuid, name); - int nProperties = packetWrapper.passthrough(Type.VAR_INT); + int nProperties = packetWrapper.passthrough(Types.VAR_INT); for (int j = 0; j < nProperties; j++) { - packetWrapper.passthrough(Type.STRING); - packetWrapper.passthrough(Type.STRING); - packetWrapper.passthrough(Type.OPTIONAL_STRING); + packetWrapper.passthrough(Types.STRING); + packetWrapper.passthrough(Types.STRING); + packetWrapper.passthrough(Types.OPTIONAL_STRING); } - packetWrapper.passthrough(Type.VAR_INT); - packetWrapper.passthrough(Type.VAR_INT); - packetWrapper.passthrough(Type.OPTIONAL_COMPONENT); + packetWrapper.passthrough(Types.VAR_INT); + packetWrapper.passthrough(Types.VAR_INT); + packetWrapper.passthrough(Types.OPTIONAL_COMPONENT); } else if (action == 1) { // Update Game Mode - packetWrapper.passthrough(Type.VAR_INT); + packetWrapper.passthrough(Types.VAR_INT); } else if (action == 2) { // Update Ping - packetWrapper.passthrough(Type.VAR_INT); + packetWrapper.passthrough(Types.VAR_INT); } else if (action == 3) { // Update Display Name - packetWrapper.passthrough(Type.OPTIONAL_COMPONENT); + packetWrapper.passthrough(Types.OPTIONAL_COMPONENT); } else if (action == 4) { // Remove Player storage.usernames().remove(uuid); } @@ -194,47 +195,47 @@ public class PlayerPacket1_13 extends RewriterBase { } }); - protocol.registerClientbound(ClientboundPackets1_13.SCOREBOARD_OBJECTIVE, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_13.SET_OBJECTIVE, new PacketHandlers() { @Override public void register() { - map(Type.STRING); - map(Type.BYTE); + map(Types.STRING); + map(Types.BYTE); handler(wrapper -> { - byte mode = wrapper.get(Type.BYTE, 0); + byte mode = wrapper.get(Types.BYTE, 0); if (mode == 0 || mode == 2) { - JsonElement value = wrapper.read(Type.COMPONENT); + JsonElement value = wrapper.read(Types.COMPONENT); String legacyValue = protocol.jsonToLegacy(wrapper.user(), value); - wrapper.write(Type.STRING, ChatUtil.fromLegacy(legacyValue, 'f', 32)); - int type = wrapper.read(Type.VAR_INT); - wrapper.write(Type.STRING, type == 1 ? "hearts" : "integer"); + wrapper.write(Types.STRING, ChatUtil.fromLegacy(legacyValue, 'f', 32)); + int type = wrapper.read(Types.VAR_INT); + wrapper.write(Types.STRING, type == 1 ? "hearts" : "integer"); } }); } }); - protocol.registerClientbound(ClientboundPackets1_13.TEAMS, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_13.SET_PLAYER_TEAM, new PacketHandlers() { @Override public void register() { - map(Type.STRING); // Name - map(Type.BYTE); // Action + map(Types.STRING); // Name + map(Types.BYTE); // Action handler(wrapper -> { - byte action = wrapper.get(Type.BYTE, 0); + byte action = wrapper.get(Types.BYTE, 0); if (action == 0 || action == 2) { - JsonElement displayName = wrapper.read(Type.COMPONENT); + JsonElement displayName = wrapper.read(Types.COMPONENT); String legacyTextDisplayName = protocol.jsonToLegacy(wrapper.user(), displayName); - wrapper.write(Type.STRING, ChatUtil.fromLegacy(legacyTextDisplayName, 'f', 32)); + wrapper.write(Types.STRING, ChatUtil.fromLegacy(legacyTextDisplayName, 'f', 32)); - byte flags = wrapper.read(Type.BYTE); - String nameTagVisibility = wrapper.read(Type.STRING); - String collisionRule = wrapper.read(Type.STRING); + byte flags = wrapper.read(Types.BYTE); + String nameTagVisibility = wrapper.read(Types.STRING); + String collisionRule = wrapper.read(Types.STRING); - int colour = wrapper.read(Type.VAR_INT); + int colour = wrapper.read(Types.VAR_INT); if (colour == 21) { colour = -1; } - JsonElement prefixComponent = wrapper.read(Type.COMPONENT); - JsonElement suffixComponent = wrapper.read(Type.COMPONENT); + JsonElement prefixComponent = wrapper.read(Types.COMPONENT); + JsonElement suffixComponent = wrapper.read(Types.COMPONENT); String prefix = protocol.jsonToLegacy(wrapper.user(), prefixComponent); if (ViaBackwards.getConfig().addTeamColorTo1_13Prefix()) { @@ -242,24 +243,24 @@ public class PlayerPacket1_13 extends RewriterBase { } String suffix = protocol.jsonToLegacy(wrapper.user(), suffixComponent); - wrapper.write(Type.STRING, ChatUtil.fromLegacyPrefix(prefix, 'f', 16)); - wrapper.write(Type.STRING, ChatUtil.fromLegacy(suffix, '\0', 16)); + wrapper.write(Types.STRING, ChatUtil.fromLegacyPrefix(prefix, 'f', 16)); + wrapper.write(Types.STRING, ChatUtil.fromLegacy(suffix, '\0', 16)); - wrapper.write(Type.BYTE, flags); - wrapper.write(Type.STRING, nameTagVisibility); - wrapper.write(Type.STRING, collisionRule); + wrapper.write(Types.BYTE, flags); + wrapper.write(Types.STRING, nameTagVisibility); + wrapper.write(Types.STRING, collisionRule); - wrapper.write(Type.BYTE, (byte) colour); + wrapper.write(Types.BYTE, (byte) colour); } if (action == 0 || action == 3 || action == 4) { - wrapper.passthrough(Type.STRING_ARRAY); //Entities + wrapper.passthrough(Types.STRING_ARRAY); //Entities } }); } }); - protocol.registerClientbound(ClientboundPackets1_13.DECLARE_COMMANDS, null, wrapper -> { + protocol.registerClientbound(ClientboundPackets1_13.COMMANDS, null, wrapper -> { wrapper.cancel(); TabCompleteStorage storage = wrapper.user().get(TabCompleteStorage.class); @@ -268,13 +269,13 @@ public class PlayerPacket1_13 extends RewriterBase { storage.commands().clear(); } - int size = wrapper.read(Type.VAR_INT); + int size = wrapper.read(Types.VAR_INT); boolean initialNodes = true; for (int i = 0; i < size; i++) { - byte flags = wrapper.read(Type.BYTE); - wrapper.read(Type.VAR_INT_ARRAY_PRIMITIVE); // Children indices + byte flags = wrapper.read(Types.BYTE); + wrapper.read(Types.VAR_INT_ARRAY_PRIMITIVE); // Children indices if ((flags & 0x08) != 0) { - wrapper.read(Type.VAR_INT); // Redirect node index + wrapper.read(Types.VAR_INT); // Redirect node index } byte nodeType = (byte) (flags & 0x03); @@ -283,31 +284,31 @@ public class PlayerPacket1_13 extends RewriterBase { } if (nodeType == 1 || nodeType == 2) { // Literal/argument node - String name = wrapper.read(Type.STRING); + String name = wrapper.read(Types.STRING); if (nodeType == 1 && initialNodes) { storage.commands().add('/' + name); } } if (nodeType == 2) { // Argument node - commandRewriter.handleArgument(wrapper, wrapper.read(Type.STRING)); + commandRewriter.handleArgument(wrapper, wrapper.read(Types.STRING)); } if ((flags & 0x10) != 0) { - wrapper.read(Type.STRING); // Suggestion type + wrapper.read(Types.STRING); // Suggestion type } } }); - protocol.registerClientbound(ClientboundPackets1_13.TAB_COMPLETE, wrapper -> { + protocol.registerClientbound(ClientboundPackets1_13.COMMAND_SUGGESTIONS, wrapper -> { TabCompleteStorage storage = wrapper.user().get(TabCompleteStorage.class); if (storage.lastRequest() == null) { wrapper.cancel(); return; } - if (storage.lastId() != wrapper.read(Type.VAR_INT)) wrapper.cancel(); - int start = wrapper.read(Type.VAR_INT); - int length = wrapper.read(Type.VAR_INT); + if (storage.lastId() != wrapper.read(Types.VAR_INT)) wrapper.cancel(); + int start = wrapper.read(Types.VAR_INT); + int length = wrapper.read(Types.VAR_INT); int lastRequestPartIndex = storage.lastRequest().lastIndexOf(' ') + 1; if (lastRequestPartIndex != start) wrapper.cancel(); // Client only replaces after space @@ -316,21 +317,21 @@ public class PlayerPacket1_13 extends RewriterBase { wrapper.cancel(); // We can't set the length in previous versions } - int count = wrapper.passthrough(Type.VAR_INT); + int count = wrapper.passthrough(Types.VAR_INT); for (int i = 0; i < count; i++) { - String match = wrapper.read(Type.STRING); - wrapper.write(Type.STRING, (start == 0 && !storage.isLastAssumeCommand() ? "/" : "") + match); - wrapper.read(Type.OPTIONAL_COMPONENT); // Remove tooltip + String match = wrapper.read(Types.STRING); + wrapper.write(Types.STRING, (start == 0 && !storage.isLastAssumeCommand() ? "/" : "") + match); + wrapper.read(Types.OPTIONAL_COMPONENT); // Remove tooltip } }); - protocol.registerServerbound(ServerboundPackets1_12_1.TAB_COMPLETE, wrapper -> { + protocol.registerServerbound(ServerboundPackets1_12_1.COMMAND_SUGGESTION, wrapper -> { TabCompleteStorage storage = wrapper.user().get(TabCompleteStorage.class); List suggestions = new ArrayList<>(); - String command = wrapper.read(Type.STRING); - boolean assumeCommand = wrapper.read(Type.BOOLEAN); - wrapper.read(Type.OPTIONAL_POSITION1_8); + String command = wrapper.read(Types.STRING); + boolean assumeCommand = wrapper.read(Types.BOOLEAN); + wrapper.read(Types.OPTIONAL_POSITION1_8); if (!assumeCommand && !command.startsWith("/")) { // Complete usernames for non-commands @@ -351,12 +352,12 @@ public class PlayerPacket1_13 extends RewriterBase { if (!suggestions.isEmpty()) { wrapper.cancel(); - PacketWrapper response = wrapper.create(ClientboundPackets1_12_1.TAB_COMPLETE); - response.write(Type.VAR_INT, suggestions.size()); + PacketWrapper response = wrapper.create(ClientboundPackets1_12_1.COMMAND_SUGGESTIONS); + response.write(Types.VAR_INT, suggestions.size()); for (String value : suggestions) { - response.write(Type.STRING, value); + response.write(Types.STRING, value); } - response.scheduleSend(Protocol1_12_2To1_13.class); + response.scheduleSend(Protocol1_13To1_12_2.class); storage.setLastRequest(null); return; } @@ -366,120 +367,120 @@ public class PlayerPacket1_13 extends RewriterBase { } int id = ThreadLocalRandom.current().nextInt(); - wrapper.write(Type.VAR_INT, id); - wrapper.write(Type.STRING, command); + wrapper.write(Types.VAR_INT, id); + wrapper.write(Types.STRING, command); storage.setLastId(id); storage.setLastAssumeCommand(assumeCommand); storage.setLastRequest(command); }); - protocol.registerServerbound(ServerboundPackets1_12_1.PLUGIN_MESSAGE, wrapper -> { - String channel = wrapper.read(Type.STRING); + protocol.registerServerbound(ServerboundPackets1_12_1.CUSTOM_PAYLOAD, wrapper -> { + String channel = wrapper.read(Types.STRING); switch (channel) { case "MC|BSign", "MC|BEdit" -> { wrapper.setPacketType(ServerboundPackets1_13.EDIT_BOOK); - Item book = wrapper.read(Type.ITEM1_8); - wrapper.write(Type.ITEM1_13, protocol.getItemRewriter().handleItemToServer(wrapper.user(), book)); + Item book = wrapper.read(Types.ITEM1_8); + wrapper.write(Types.ITEM1_13, protocol.getItemRewriter().handleItemToServer(wrapper.user(), book)); boolean signing = channel.equals("MC|BSign"); - wrapper.write(Type.BOOLEAN, signing); + wrapper.write(Types.BOOLEAN, signing); } case "MC|ItemName" -> wrapper.setPacketType(ServerboundPackets1_13.RENAME_ITEM); case "MC|AdvCmd" -> { - byte type = wrapper.read(Type.BYTE); + byte type = wrapper.read(Types.BYTE); if (type == 0) { //Information from https://wiki.vg/index.php?title=Plugin_channels&oldid=14089 //The Notchain client only uses this for command block minecarts and uses MC|AutoCmd for blocks, but the Notchian server still accepts it for either. //Maybe older versions used this and we need to implement this? The issue is that we would have to save the command block types - wrapper.setPacketType(ServerboundPackets1_13.UPDATE_COMMAND_BLOCK); + wrapper.setPacketType(ServerboundPackets1_13.SET_COMMAND_BLOCK); wrapper.cancel(); ViaBackwards.getPlatform().getLogger().warning("Client send MC|AdvCmd custom payload to update command block, weird!"); } else if (type == 1) { - wrapper.setPacketType(ServerboundPackets1_13.UPDATE_COMMAND_BLOCK_MINECART); - wrapper.write(Type.VAR_INT, wrapper.read(Type.INT)); //Entity Id - wrapper.passthrough(Type.STRING); //Command - wrapper.passthrough(Type.BOOLEAN); //Track Output + wrapper.setPacketType(ServerboundPackets1_13.SET_COMMAND_MINECART); + wrapper.write(Types.VAR_INT, wrapper.read(Types.INT)); //Entity Id + wrapper.passthrough(Types.STRING); //Command + wrapper.passthrough(Types.BOOLEAN); //Track Output } else { wrapper.cancel(); } } case "MC|AutoCmd" -> { - wrapper.setPacketType(ServerboundPackets1_13.UPDATE_COMMAND_BLOCK); + wrapper.setPacketType(ServerboundPackets1_13.SET_COMMAND_BLOCK); - int x = wrapper.read(Type.INT); - int y = wrapper.read(Type.INT); - int z = wrapper.read(Type.INT); + int x = wrapper.read(Types.INT); + int y = wrapper.read(Types.INT); + int z = wrapper.read(Types.INT); - wrapper.write(Type.POSITION1_8, new Position(x, (short) y, z)); + wrapper.write(Types.BLOCK_POSITION1_8, new Position(x, (short) y, z)); - wrapper.passthrough(Type.STRING); //Command + wrapper.passthrough(Types.STRING); //Command byte flags = 0; - if (wrapper.read(Type.BOOLEAN)) flags |= 0x01; //Track Output + if (wrapper.read(Types.BOOLEAN)) flags |= 0x01; //Track Output - String mode = wrapper.read(Type.STRING); + String mode = wrapper.read(Types.STRING); int modeId = mode.equals("SEQUENCE") ? 0 : mode.equals("AUTO") ? 1 : 2; - wrapper.write(Type.VAR_INT, modeId); + wrapper.write(Types.VAR_INT, modeId); - if (wrapper.read(Type.BOOLEAN)) flags |= 0x02; //Is conditional - if (wrapper.read(Type.BOOLEAN)) flags |= 0x04; //Automatic + if (wrapper.read(Types.BOOLEAN)) flags |= 0x02; //Is conditional + if (wrapper.read(Types.BOOLEAN)) flags |= 0x04; //Automatic - wrapper.write(Type.BYTE, flags); + wrapper.write(Types.BYTE, flags); } case "MC|Struct" -> { - wrapper.setPacketType(ServerboundPackets1_13.UPDATE_STRUCTURE_BLOCK); - int x = wrapper.read(Type.INT); - int y = wrapper.read(Type.INT); - int z = wrapper.read(Type.INT); - wrapper.write(Type.POSITION1_8, new Position(x, (short) y, z)); - wrapper.write(Type.VAR_INT, wrapper.read(Type.BYTE) - 1); - String mode = wrapper.read(Type.STRING); + wrapper.setPacketType(ServerboundPackets1_13.SET_STRUCTURE_BLOCK); + int x = wrapper.read(Types.INT); + int y = wrapper.read(Types.INT); + int z = wrapper.read(Types.INT); + wrapper.write(Types.BLOCK_POSITION1_8, new Position(x, (short) y, z)); + wrapper.write(Types.VAR_INT, wrapper.read(Types.BYTE) - 1); + String mode = wrapper.read(Types.STRING); int modeId = mode.equals("SAVE") ? 0 : mode.equals("LOAD") ? 1 : mode.equals("CORNER") ? 2 : 3; - wrapper.write(Type.VAR_INT, modeId); - wrapper.passthrough(Type.STRING); //Name + wrapper.write(Types.VAR_INT, modeId); + wrapper.passthrough(Types.STRING); //Name - wrapper.write(Type.BYTE, wrapper.read(Type.INT).byteValue()); //Offset X + wrapper.write(Types.BYTE, wrapper.read(Types.INT).byteValue()); //Offset X - wrapper.write(Type.BYTE, wrapper.read(Type.INT).byteValue()); //Offset Y + wrapper.write(Types.BYTE, wrapper.read(Types.INT).byteValue()); //Offset Y - wrapper.write(Type.BYTE, wrapper.read(Type.INT).byteValue()); //Offset Z + wrapper.write(Types.BYTE, wrapper.read(Types.INT).byteValue()); //Offset Z - wrapper.write(Type.BYTE, wrapper.read(Type.INT).byteValue()); //Size X + wrapper.write(Types.BYTE, wrapper.read(Types.INT).byteValue()); //Size X - wrapper.write(Type.BYTE, wrapper.read(Type.INT).byteValue()); //Size Y + wrapper.write(Types.BYTE, wrapper.read(Types.INT).byteValue()); //Size Y - wrapper.write(Type.BYTE, wrapper.read(Type.INT).byteValue()); //Size Z + wrapper.write(Types.BYTE, wrapper.read(Types.INT).byteValue()); //Size Z - String mirror = wrapper.read(Type.STRING); + String mirror = wrapper.read(Types.STRING); int mirrorId = mode.equals("NONE") ? 0 : mode.equals("LEFT_RIGHT") ? 1 : 2; - String rotation = wrapper.read(Type.STRING); + String rotation = wrapper.read(Types.STRING); int rotationId = mode.equals("NONE") ? 0 : mode.equals("CLOCKWISE_90") ? 1 : mode.equals("CLOCKWISE_180") ? 2 : 3; - wrapper.passthrough(Type.STRING); //Metadata + wrapper.passthrough(Types.STRING); //Metadata byte flags = 0; - if (wrapper.read(Type.BOOLEAN)) flags |= 0x01; //Ignore entities - if (wrapper.read(Type.BOOLEAN)) flags |= 0x02; //Show air - if (wrapper.read(Type.BOOLEAN)) flags |= 0x04; //Show bounding box - wrapper.passthrough(Type.FLOAT); //Integrity + if (wrapper.read(Types.BOOLEAN)) flags |= 0x01; //Ignore entities + if (wrapper.read(Types.BOOLEAN)) flags |= 0x02; //Show air + if (wrapper.read(Types.BOOLEAN)) flags |= 0x04; //Show bounding box + wrapper.passthrough(Types.FLOAT); //Integrity - wrapper.passthrough(Type.VAR_LONG); //Seed + wrapper.passthrough(Types.VAR_LONG); //Seed - wrapper.write(Type.BYTE, flags); + wrapper.write(Types.BYTE, flags); } case "MC|Beacon" -> { - wrapper.setPacketType(ServerboundPackets1_13.SET_BEACON_EFFECT); - wrapper.write(Type.VAR_INT, wrapper.read(Type.INT)); //Primary Effect - wrapper.write(Type.VAR_INT, wrapper.read(Type.INT)); //Secondary Effect + wrapper.setPacketType(ServerboundPackets1_13.SET_BEACON); + wrapper.write(Types.VAR_INT, wrapper.read(Types.INT)); //Primary Effect + wrapper.write(Types.VAR_INT, wrapper.read(Types.INT)); //Secondary Effect } case "MC|TrSel" -> { wrapper.setPacketType(ServerboundPackets1_13.SELECT_TRADE); - wrapper.write(Type.VAR_INT, wrapper.read(Type.INT)); //Slot + wrapper.write(Types.VAR_INT, wrapper.read(Types.INT)); //Slot } case "MC|PickItem" -> wrapper.setPacketType(ServerboundPackets1_13.PICK_ITEM); default -> { - String newChannel = InventoryPackets.getNewPluginChannelId(channel); + String newChannel = ItemPacketRewriter1_13.getNewPluginChannelId(channel); if (newChannel == null) { if (!Via.getConfig().isSuppressConversionWarnings() || Via.getManager().isDebug()) { ViaBackwards.getPlatform().getLogger().warning("Ignoring serverbound plugin message with channel: " + channel); @@ -487,13 +488,13 @@ public class PlayerPacket1_13 extends RewriterBase { wrapper.cancel(); return; } - wrapper.write(Type.STRING, newChannel); + wrapper.write(Types.STRING, newChannel); if (newChannel.equals("minecraft:register") || newChannel.equals("minecraft:unregister")) { - String[] channels = new String(wrapper.read(Type.REMAINING_BYTES), StandardCharsets.UTF_8).split("\0"); + String[] channels = new String(wrapper.read(Types.REMAINING_BYTES), StandardCharsets.UTF_8).split("\0"); List rewrittenChannels = new ArrayList<>(); for (String s : channels) { - String rewritten = InventoryPackets.getNewPluginChannelId(s); + String rewritten = ItemPacketRewriter1_13.getNewPluginChannelId(s); if (rewritten != null) { rewrittenChannels.add(rewritten); } else if (!Via.getConfig().isSuppressConversionWarnings() || Via.getManager().isDebug()) { @@ -501,7 +502,7 @@ public class PlayerPacket1_13 extends RewriterBase { } } if (!rewrittenChannels.isEmpty()) { - wrapper.write(Type.REMAINING_BYTES, Joiner.on('\0').join(rewrittenChannels).getBytes(StandardCharsets.UTF_8)); + wrapper.write(Types.REMAINING_BYTES, Joiner.on('\0').join(rewrittenChannels).getBytes(StandardCharsets.UTF_8)); } else { wrapper.cancel(); } @@ -510,41 +511,41 @@ public class PlayerPacket1_13 extends RewriterBase { } }); - protocol.registerClientbound(ClientboundPackets1_13.STATISTICS, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_13.AWARD_STATS, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); + map(Types.VAR_INT); handler(wrapper -> { - int size = wrapper.get(Type.VAR_INT, 0); + int size = wrapper.get(Types.VAR_INT, 0); int newSize = size; for (int i = 0; i < size; i++) { - int categoryId = wrapper.read(Type.VAR_INT); - int statisticId = wrapper.read(Type.VAR_INT); + int categoryId = wrapper.read(Types.VAR_INT); + int statisticId = wrapper.read(Types.VAR_INT); String name = ""; // categories 0-7 (items, blocks, entities) - probably not feasible switch (categoryId) { case 0, 1, 2, 3, 4, 5, 6, 7 -> { - wrapper.read(Type.VAR_INT); // remove value + wrapper.read(Types.VAR_INT); // remove value newSize--; continue; } case 8 -> { name = protocol.getMappingData().getStatisticMappings().get(statisticId); if (name == null) { - wrapper.read(Type.VAR_INT); + wrapper.read(Types.VAR_INT); newSize--; continue; } } } - wrapper.write(Type.STRING, name); // string id - wrapper.passthrough(Type.VAR_INT); // value + wrapper.write(Types.STRING, name); // string id + wrapper.passthrough(Types.VAR_INT); // value } if (newSize != size) { - wrapper.set(Type.VAR_INT, 0, newSize); + wrapper.set(Types.VAR_INT, 0, newSize); } }); } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/packets/SoundPackets1_13.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/rewriter/SoundPacketRewriter1_13.java similarity index 64% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/packets/SoundPackets1_13.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/rewriter/SoundPacketRewriter1_13.java index 7f2da463..87675c0b 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/packets/SoundPackets1_13.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/rewriter/SoundPacketRewriter1_13.java @@ -15,49 +15,50 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.packets; +package com.viaversion.viabackwards.protocol.v1_13to1_12_2.rewriter; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.Protocol1_12_2To1_13; -import com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.data.NamedSoundMapping; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.Protocol1_13To1_12_2; +import com.viaversion.viabackwards.protocol.v1_13to1_12_2.data.NamedSoundMapping; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.rewriter.RewriterBase; import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.protocols.protocol1_12_1to1_12.ClientboundPackets1_12_1; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ClientboundPackets1_13; +import com.viaversion.viaversion.protocols.v1_12to1_12_1.packet.ClientboundPackets1_12_1; -public class SoundPackets1_13 extends RewriterBase { +public class SoundPacketRewriter1_13 extends RewriterBase { private static final String[] SOUND_SOURCES = {"master", "music", "record", "weather", "block", "hostile", "neutral", "player", "ambient", "voice"}; - public SoundPackets1_13(Protocol1_12_2To1_13 protocol) { + public SoundPacketRewriter1_13(Protocol1_13To1_12_2 protocol) { super(protocol); } @Override protected void registerPackets() { - protocol.registerClientbound(ClientboundPackets1_13.NAMED_SOUND, wrapper -> { - String sound = wrapper.read(Type.STRING); + protocol.registerClientbound(ClientboundPackets1_13.CUSTOM_SOUND, wrapper -> { + String sound = wrapper.read(Types.STRING); String mappedSound = NamedSoundMapping.getOldId(sound); if (mappedSound != null || (mappedSound = protocol.getMappingData().getMappedNamedSound(sound)) != null) { - wrapper.write(Type.STRING, mappedSound); + wrapper.write(Types.STRING, mappedSound); } else { - wrapper.write(Type.STRING, sound); + wrapper.write(Types.STRING, sound); } }); // Stop Sound -> Plugin Message - protocol.registerClientbound(ClientboundPackets1_13.STOP_SOUND, ClientboundPackets1_12_1.PLUGIN_MESSAGE, wrapper -> { - wrapper.write(Type.STRING, "MC|StopSound"); - byte flags = wrapper.read(Type.BYTE); + protocol.registerClientbound(ClientboundPackets1_13.STOP_SOUND, ClientboundPackets1_12_1.CUSTOM_PAYLOAD, wrapper -> { + wrapper.write(Types.STRING, "MC|StopSound"); + byte flags = wrapper.read(Types.BYTE); String source; if ((flags & 0x01) != 0) { - source = SOUND_SOURCES[wrapper.read(Type.VAR_INT)]; + source = SOUND_SOURCES[wrapper.read(Types.VAR_INT)]; } else { source = ""; } String sound; if ((flags & 0x02) != 0) { - String newSound = wrapper.read(Type.STRING); + String newSound = wrapper.read(Types.STRING); sound = protocol.getMappingData().getMappedNamedSound(newSound); if (sound == null) { sound = ""; @@ -66,21 +67,21 @@ public class SoundPackets1_13 extends RewriterBase { sound = ""; } - wrapper.write(Type.STRING, source); - wrapper.write(Type.STRING, sound); + wrapper.write(Types.STRING, source); + wrapper.write(Types.STRING, sound); }); protocol.registerClientbound(ClientboundPackets1_13.SOUND, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); + map(Types.VAR_INT); handler(wrapper -> { - int newSound = wrapper.get(Type.VAR_INT, 0); + int newSound = wrapper.get(Types.VAR_INT, 0); int oldSound = protocol.getMappingData().getSoundMappings().getNewId(newSound); if (oldSound == -1) { wrapper.cancel(); } else { - wrapper.set(Type.VAR_INT, 0, oldSound); + wrapper.set(Types.VAR_INT, 0, oldSound); } }); } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/storage/BackwardsBlockStorage.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/storage/BackwardsBlockStorage.java similarity index 97% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/storage/BackwardsBlockStorage.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/storage/BackwardsBlockStorage.java index c62080d2..0567e66f 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/storage/BackwardsBlockStorage.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/storage/BackwardsBlockStorage.java @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.storage; +package com.viaversion.viabackwards.protocol.v1_13to1_12_2.storage; import com.viaversion.viaversion.api.connection.StorableObject; import com.viaversion.viaversion.api.minecraft.Position; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/storage/NoteBlockStorage.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/storage/NoteBlockStorage.java similarity index 96% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/storage/NoteBlockStorage.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/storage/NoteBlockStorage.java index a31725c6..809279f3 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/storage/NoteBlockStorage.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/storage/NoteBlockStorage.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.storage; +package com.viaversion.viabackwards.protocol.v1_13to1_12_2.storage; import com.viaversion.viaversion.api.connection.StorableObject; import com.viaversion.viaversion.api.minecraft.Position; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/storage/PlayerPositionStorage1_13.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/storage/PlayerPositionStorage1_13.java similarity index 92% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/storage/PlayerPositionStorage1_13.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/storage/PlayerPositionStorage1_13.java index 0ae11884..602c7294 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/storage/PlayerPositionStorage1_13.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/storage/PlayerPositionStorage1_13.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.storage; +package com.viaversion.viabackwards.protocol.v1_13to1_12_2.storage; import com.viaversion.viabackwards.api.entities.storage.PlayerPositionStorage; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/storage/TabCompleteStorage.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/storage/TabCompleteStorage.java similarity index 96% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/storage/TabCompleteStorage.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/storage/TabCompleteStorage.java index 605c0cac..c06434e7 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_12_2to1_13/storage/TabCompleteStorage.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_13to1_12_2/storage/TabCompleteStorage.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_12_2to1_13.storage; +package com.viaversion.viabackwards.protocol.v1_13to1_12_2.storage; import com.viaversion.viaversion.api.connection.StorableObject; import java.util.HashMap; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_14to1_14_1/Protocol1_14To1_14_1.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_14_1to1_14/Protocol1_14_1To1_14.java similarity index 75% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_14to1_14_1/Protocol1_14To1_14_1.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_14_1to1_14/Protocol1_14_1To1_14.java index ec850865..239df88b 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_14to1_14_1/Protocol1_14To1_14_1.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_14_1to1_14/Protocol1_14_1To1_14.java @@ -15,21 +15,21 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_14to1_14_1; +package com.viaversion.viabackwards.protocol.v1_14_1to1_14; import com.viaversion.viabackwards.api.BackwardsProtocol; -import com.viaversion.viabackwards.protocol.protocol1_14to1_14_1.packets.EntityPackets1_14_1; +import com.viaversion.viabackwards.protocol.v1_14_1to1_14.rewriter.EntityPacketRewriter1_14_1; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_15; import com.viaversion.viaversion.data.entity.EntityTrackerBase; -import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPackets1_14; -import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ServerboundPackets1_14; +import com.viaversion.viaversion.protocols.v1_13_2to1_14.packet.ClientboundPackets1_14; +import com.viaversion.viaversion.protocols.v1_13_2to1_14.packet.ServerboundPackets1_14; -public class Protocol1_14To1_14_1 extends BackwardsProtocol { +public class Protocol1_14_1To1_14 extends BackwardsProtocol { - private final EntityPackets1_14_1 entityRewriter = new EntityPackets1_14_1(this); + private final EntityPacketRewriter1_14_1 entityRewriter = new EntityPacketRewriter1_14_1(this); - public Protocol1_14To1_14_1() { + public Protocol1_14_1To1_14() { super(ClientboundPackets1_14.class, ClientboundPackets1_14.class, ServerboundPackets1_14.class, ServerboundPackets1_14.class); } @@ -44,7 +44,7 @@ public class Protocol1_14To1_14_1 extends BackwardsProtocol. + */ +package com.viaversion.viabackwards.protocol.v1_14_1to1_14.rewriter; + +import com.viaversion.viabackwards.api.rewriters.LegacyEntityRewriter; +import com.viaversion.viabackwards.protocol.v1_14_1to1_14.Protocol1_14_1To1_14; +import com.viaversion.viaversion.api.minecraft.entities.EntityType; +import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_14; +import com.viaversion.viaversion.api.minecraft.entitydata.EntityData; +import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.api.type.types.version.Types1_14; +import com.viaversion.viaversion.protocols.v1_13_2to1_14.packet.ClientboundPackets1_14; +import java.util.List; + +public class EntityPacketRewriter1_14_1 extends LegacyEntityRewriter { + + public EntityPacketRewriter1_14_1(Protocol1_14_1To1_14 protocol) { + super(protocol); + } + + @Override + protected void registerPackets() { + registerTracker(ClientboundPackets1_14.ADD_EXPERIENCE_ORB, EntityTypes1_14.EXPERIENCE_ORB); + registerTracker(ClientboundPackets1_14.ADD_GLOBAL_ENTITY, EntityTypes1_14.LIGHTNING_BOLT); + registerTracker(ClientboundPackets1_14.ADD_PAINTING, EntityTypes1_14.PAINTING); + registerTracker(ClientboundPackets1_14.ADD_PLAYER, EntityTypes1_14.PLAYER); + registerTracker(ClientboundPackets1_14.LOGIN, EntityTypes1_14.PLAYER, Types.INT); + registerRemoveEntities(ClientboundPackets1_14.REMOVE_ENTITIES); + + protocol.registerClientbound(ClientboundPackets1_14.ADD_ENTITY, new PacketHandlers() { + @Override + public void register() { + map(Types.VAR_INT); // 0 - Entity id + map(Types.UUID); // 1 - UUID + map(Types.VAR_INT); // 2 - Type + + handler(getTrackerHandler()); + } + }); + + protocol.registerClientbound(ClientboundPackets1_14.ADD_MOB, new PacketHandlers() { + @Override + public void register() { + map(Types.VAR_INT); // 0 - Entity ID + map(Types.UUID); // 1 - Entity UUID + map(Types.VAR_INT); // 2 - Entity Type + map(Types.DOUBLE); // 3 - X + map(Types.DOUBLE); // 4 - Y + map(Types.DOUBLE); // 5 - Z + map(Types.BYTE); // 6 - Yaw + map(Types.BYTE); // 7 - Pitch + map(Types.BYTE); // 8 - Head Pitch + map(Types.SHORT); // 9 - Velocity X + map(Types.SHORT); // 10 - Velocity Y + map(Types.SHORT); // 11 - Velocity Z + map(Types1_14.ENTITY_DATA_LIST); // 12 - Metadata + + handler(wrapper -> { + int entityId = wrapper.get(Types.VAR_INT, 0); + int type = wrapper.get(Types.VAR_INT, 1); + + // Register Type ID + tracker(wrapper.user()).addEntity(entityId, EntityTypes1_14.getTypeFromId(type)); + + List metadata = wrapper.get(Types1_14.ENTITY_DATA_LIST, 0); + handleEntityData(entityId, metadata, wrapper.user()); + }); + } + }); + + // Entity Metadata + registerSetEntityData(ClientboundPackets1_14.SET_ENTITY_DATA, Types1_14.ENTITY_DATA_LIST); + } + + @Override + protected void registerRewrites() { + filter().type(EntityTypes1_14.VILLAGER).cancel(15); + filter().type(EntityTypes1_14.VILLAGER).index(16).toIndex(15); + filter().type(EntityTypes1_14.WANDERING_TRADER).cancel(15); + } + + @Override + public EntityType typeFromId(int typeId) { + return EntityTypes1_14.getTypeFromId(typeId); + } +} diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_14_1to1_14_2/Protocol1_14_1To1_14_2.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_14_2to1_14_1/Protocol1_14_2To1_14_1.java similarity index 79% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_14_1to1_14_2/Protocol1_14_1To1_14_2.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_14_2to1_14_1/Protocol1_14_2To1_14_1.java index 0c445466..9d354957 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_14_1to1_14_2/Protocol1_14_1To1_14_2.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_14_2to1_14_1/Protocol1_14_2To1_14_1.java @@ -15,11 +15,11 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_14_1to1_14_2; +package com.viaversion.viabackwards.protocol.v1_14_2to1_14_1; import com.viaversion.viabackwards.api.BackwardsProtocol; -import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPackets1_14; -import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ServerboundPackets1_14; +import com.viaversion.viaversion.protocols.v1_13_2to1_14.packet.ClientboundPackets1_14; +import com.viaversion.viaversion.protocols.v1_13_2to1_14.packet.ServerboundPackets1_14; -public class Protocol1_14_1To1_14_2 extends BackwardsProtocol { +public class Protocol1_14_2To1_14_1 extends BackwardsProtocol { } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_14_2to1_14_3/Protocol1_14_2To1_14_3.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_14_3to1_14_2/Protocol1_14_3To1_14_2.java similarity index 53% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_14_2to1_14_3/Protocol1_14_2To1_14_3.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_14_3to1_14_2/Protocol1_14_3To1_14_2.java index b1e5b6a2..1dd6e410 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_14_2to1_14_3/Protocol1_14_2To1_14_3.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_14_3to1_14_2/Protocol1_14_3To1_14_2.java @@ -15,67 +15,68 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_14_2to1_14_3; +package com.viaversion.viabackwards.protocol.v1_14_3to1_14_2; import com.viaversion.viabackwards.api.BackwardsProtocol; import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPackets1_14; -import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ServerboundPackets1_14; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.protocols.v1_13_2to1_14.packet.ClientboundPackets1_14; +import com.viaversion.viaversion.protocols.v1_13_2to1_14.packet.ServerboundPackets1_14; import com.viaversion.viaversion.rewriter.RecipeRewriter; import com.viaversion.viaversion.util.Key; -public class Protocol1_14_2To1_14_3 extends BackwardsProtocol { +public class Protocol1_14_3To1_14_2 extends BackwardsProtocol { - public Protocol1_14_2To1_14_3() { + public Protocol1_14_3To1_14_2() { super(ClientboundPackets1_14.class, ClientboundPackets1_14.class, ServerboundPackets1_14.class, ServerboundPackets1_14.class); } @Override protected void registerPackets() { - registerClientbound(ClientboundPackets1_14.TRADE_LIST, wrapper -> { - wrapper.passthrough(Type.VAR_INT); - int size = wrapper.passthrough(Type.UNSIGNED_BYTE); + registerClientbound(ClientboundPackets1_14.MERCHANT_OFFERS, wrapper -> { + wrapper.passthrough(Types.VAR_INT); + int size = wrapper.passthrough(Types.UNSIGNED_BYTE); for (int i = 0; i < size; i++) { - wrapper.passthrough(Type.ITEM1_13_2); - wrapper.passthrough(Type.ITEM1_13_2); - if (wrapper.passthrough(Type.BOOLEAN)) { - wrapper.passthrough(Type.ITEM1_13_2); + wrapper.passthrough(Types.ITEM1_13_2); + wrapper.passthrough(Types.ITEM1_13_2); + if (wrapper.passthrough(Types.BOOLEAN)) { + wrapper.passthrough(Types.ITEM1_13_2); } - wrapper.passthrough(Type.BOOLEAN); - wrapper.passthrough(Type.INT); - wrapper.passthrough(Type.INT); - wrapper.passthrough(Type.INT); - wrapper.passthrough(Type.INT); - wrapper.passthrough(Type.FLOAT); + wrapper.passthrough(Types.BOOLEAN); + wrapper.passthrough(Types.INT); + wrapper.passthrough(Types.INT); + wrapper.passthrough(Types.INT); + wrapper.passthrough(Types.INT); + wrapper.passthrough(Types.FLOAT); } - wrapper.passthrough(Type.VAR_INT); - wrapper.passthrough(Type.VAR_INT); + wrapper.passthrough(Types.VAR_INT); + wrapper.passthrough(Types.VAR_INT); - wrapper.passthrough(Type.BOOLEAN); - wrapper.read(Type.BOOLEAN); + wrapper.passthrough(Types.BOOLEAN); + wrapper.read(Types.BOOLEAN); }); RecipeRewriter recipeHandler = new RecipeRewriter<>(this); - registerClientbound(ClientboundPackets1_14.DECLARE_RECIPES, wrapper -> { - int size = wrapper.passthrough(Type.VAR_INT); + registerClientbound(ClientboundPackets1_14.UPDATE_RECIPES, wrapper -> { + int size = wrapper.passthrough(Types.VAR_INT); int deleted = 0; for (int i = 0; i < size; i++) { - String fullType = wrapper.read(Type.STRING); + String fullType = wrapper.read(Types.STRING); String type = Key.stripMinecraftNamespace(fullType); - String id = wrapper.read(Type.STRING); // id + String id = wrapper.read(Types.STRING); // id if (type.equals("crafting_special_repairitem")) { deleted++; continue; } - wrapper.write(Type.STRING, fullType); - wrapper.write(Type.STRING, id); + wrapper.write(Types.STRING, fullType); + wrapper.write(Types.STRING, id); recipeHandler.handleRecipeType(wrapper, type); } - wrapper.set(Type.VAR_INT, 0, size - deleted); + wrapper.set(Types.VAR_INT, 0, size - deleted); }); } } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_14_3to1_14_4/Protocol1_14_3To1_14_4.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_14_4to1_14_3/Protocol1_14_4To1_14_3.java similarity index 52% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_14_3to1_14_4/Protocol1_14_3To1_14_4.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_14_4to1_14_3/Protocol1_14_4To1_14_3.java index 58fc72b8..74405d6e 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_14_3to1_14_4/Protocol1_14_3To1_14_4.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_14_4to1_14_3/Protocol1_14_4To1_14_3.java @@ -15,32 +15,33 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_14_3to1_14_4; +package com.viaversion.viabackwards.protocol.v1_14_4to1_14_3; import com.viaversion.viabackwards.api.BackwardsProtocol; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.protocols.protocol1_14_4to1_14_3.ClientboundPackets1_14_4; -import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPackets1_14; -import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ServerboundPackets1_14; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.protocols.v1_13_2to1_14.packet.ClientboundPackets1_14; +import com.viaversion.viaversion.protocols.v1_13_2to1_14.packet.ServerboundPackets1_14; +import com.viaversion.viaversion.protocols.v1_14_3to1_14_4.packet.ClientboundPackets1_14_4; -public class Protocol1_14_3To1_14_4 extends BackwardsProtocol { +public class Protocol1_14_4To1_14_3 extends BackwardsProtocol { - public Protocol1_14_3To1_14_4() { + public Protocol1_14_4To1_14_3() { super(ClientboundPackets1_14_4.class, ClientboundPackets1_14.class, ServerboundPackets1_14.class, ServerboundPackets1_14.class); } @Override protected void registerPackets() { // Acknowledge Player Digging - added in pre4 - registerClientbound(ClientboundPackets1_14_4.ACKNOWLEDGE_PLAYER_DIGGING, ClientboundPackets1_14.BLOCK_CHANGE, new PacketHandlers() { + registerClientbound(ClientboundPackets1_14_4.BLOCK_BREAK_ACK, ClientboundPackets1_14.BLOCK_UPDATE, new PacketHandlers() { @Override public void register() { - map(Type.POSITION1_14); - map(Type.VAR_INT); + map(Types.BLOCK_POSITION1_14); + map(Types.VAR_INT); handler(wrapper -> { - int status = wrapper.read(Type.VAR_INT); - boolean allGood = wrapper.read(Type.BOOLEAN); + int status = wrapper.read(Types.VAR_INT); + boolean allGood = wrapper.read(Types.BOOLEAN); if (allGood && status == 0) { wrapper.cancel(); } @@ -48,22 +49,22 @@ public class Protocol1_14_3To1_14_4 extends BackwardsProtocol { - wrapper.passthrough(Type.VAR_INT); - int size = wrapper.passthrough(Type.UNSIGNED_BYTE); + registerClientbound(ClientboundPackets1_14_4.MERCHANT_OFFERS, wrapper -> { + wrapper.passthrough(Types.VAR_INT); + int size = wrapper.passthrough(Types.UNSIGNED_BYTE); for (int i = 0; i < size; i++) { - wrapper.passthrough(Type.ITEM1_13_2); - wrapper.passthrough(Type.ITEM1_13_2); - if (wrapper.passthrough(Type.BOOLEAN)) { - wrapper.passthrough(Type.ITEM1_13_2); + wrapper.passthrough(Types.ITEM1_13_2); + wrapper.passthrough(Types.ITEM1_13_2); + if (wrapper.passthrough(Types.BOOLEAN)) { + wrapper.passthrough(Types.ITEM1_13_2); } - wrapper.passthrough(Type.BOOLEAN); - wrapper.passthrough(Type.INT); - wrapper.passthrough(Type.INT); - wrapper.passthrough(Type.INT); - wrapper.passthrough(Type.INT); - wrapper.passthrough(Type.FLOAT); - wrapper.read(Type.INT); // demand value added in pre-5 + wrapper.passthrough(Types.BOOLEAN); + wrapper.passthrough(Types.INT); + wrapper.passthrough(Types.INT); + wrapper.passthrough(Types.INT); + wrapper.passthrough(Types.INT); + wrapper.passthrough(Types.FLOAT); + wrapper.read(Types.INT); // demand value added in pre-5 } }); } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_14to1_13_2/Protocol1_14To1_13_2.java similarity index 57% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_14to1_13_2/Protocol1_14To1_13_2.java index 4403f497..244bc6d0 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/Protocol1_13_2To1_14.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_14to1_13_2/Protocol1_14To1_13_2.java @@ -15,39 +15,39 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_13_2to1_14; +package com.viaversion.viabackwards.protocol.v1_14to1_13_2; import com.viaversion.viabackwards.api.BackwardsProtocol; -import com.viaversion.viabackwards.api.data.BackwardsMappings; +import com.viaversion.viabackwards.api.data.BackwardsMappingData; import com.viaversion.viabackwards.api.rewriters.TranslatableRewriter; -import com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.data.CommandRewriter1_14; -import com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.packets.BlockItemPackets1_14; -import com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.packets.EntityPackets1_14; -import com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.packets.PlayerPackets1_14; -import com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.packets.SoundPackets1_14; -import com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.storage.ChunkLightStorage; -import com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.storage.DifficultyStorage; +import com.viaversion.viabackwards.protocol.v1_14to1_13_2.data.CommandRewriter1_14; +import com.viaversion.viabackwards.protocol.v1_14to1_13_2.rewriter.BlockItemPacketRewriter1_14; +import com.viaversion.viabackwards.protocol.v1_14to1_13_2.rewriter.EntityPacketRewriter1_14; +import com.viaversion.viabackwards.protocol.v1_14to1_13_2.rewriter.PlayerPacketRewriterRewriter1_14; +import com.viaversion.viabackwards.protocol.v1_14to1_13_2.rewriter.SoundPacketRewriter1_14; +import com.viaversion.viabackwards.protocol.v1_14to1_13_2.storage.ChunkLightStorage; +import com.viaversion.viabackwards.protocol.v1_14to1_13_2.storage.DifficultyStorage; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.ClientWorld; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_14; -import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.data.entity.EntityTrackerBase; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ServerboundPackets1_13; -import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPackets1_14; -import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.Protocol1_14To1_13_2; -import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ServerboundPackets1_14; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ClientboundPackets1_13; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ServerboundPackets1_13; +import com.viaversion.viaversion.protocols.v1_13_2to1_14.Protocol1_13_2To1_14; +import com.viaversion.viaversion.protocols.v1_13_2to1_14.packet.ClientboundPackets1_14; +import com.viaversion.viaversion.protocols.v1_13_2to1_14.packet.ServerboundPackets1_14; import com.viaversion.viaversion.rewriter.ComponentRewriter; import com.viaversion.viaversion.rewriter.StatisticsRewriter; -public class Protocol1_13_2To1_14 extends BackwardsProtocol { +public class Protocol1_14To1_13_2 extends BackwardsProtocol { - public static final BackwardsMappings MAPPINGS = new BackwardsMappings("1.14", "1.13.2", Protocol1_14To1_13_2.class); - private final EntityPackets1_14 entityRewriter = new EntityPackets1_14(this); - private final BlockItemPackets1_14 blockItemPackets = new BlockItemPackets1_14(this); + public static final BackwardsMappingData MAPPINGS = new BackwardsMappingData("1.14", "1.13.2", Protocol1_13_2To1_14.class); + private final EntityPacketRewriter1_14 entityRewriter = new EntityPacketRewriter1_14(this); + private final BlockItemPacketRewriter1_14 blockItemPackets = new BlockItemPacketRewriter1_14(this); private final TranslatableRewriter translatableRewriter = new TranslatableRewriter<>(this, ComponentRewriter.ReadType.JSON); - public Protocol1_13_2To1_14() { + public Protocol1_14To1_13_2() { super(ClientboundPackets1_14.class, ClientboundPackets1_13.class, ServerboundPackets1_14.class, ServerboundPackets1_13.class); } @@ -55,28 +55,28 @@ public class Protocol1_13_2To1_14 extends BackwardsProtocol(this).register(ClientboundPackets1_14.STATISTICS); + new StatisticsRewriter<>(this).register(ClientboundPackets1_14.AWARD_STATS); - cancelClientbound(ClientboundPackets1_14.UPDATE_VIEW_POSITION); - cancelClientbound(ClientboundPackets1_14.UPDATE_VIEW_DISTANCE); + cancelClientbound(ClientboundPackets1_14.SET_CHUNK_CACHE_CENTER); + cancelClientbound(ClientboundPackets1_14.SET_CHUNK_CACHE_RADIUS); - registerClientbound(ClientboundPackets1_14.TAGS, wrapper -> { - int blockTagsSize = wrapper.passthrough(Type.VAR_INT); + registerClientbound(ClientboundPackets1_14.UPDATE_TAGS, wrapper -> { + int blockTagsSize = wrapper.passthrough(Types.VAR_INT); for (int i = 0; i < blockTagsSize; i++) { - wrapper.passthrough(Type.STRING); - int[] blockIds = wrapper.passthrough(Type.VAR_INT_ARRAY_PRIMITIVE); + wrapper.passthrough(Types.STRING); + int[] blockIds = wrapper.passthrough(Types.VAR_INT_ARRAY_PRIMITIVE); for (int j = 0; j < blockIds.length; j++) { int id = blockIds[j]; // Ignore new blocktags @@ -85,10 +85,10 @@ public class Protocol1_13_2To1_14 extends BackwardsProtocol { - int x = wrapper.read(Type.VAR_INT); - int z = wrapper.read(Type.VAR_INT); - int skyLightMask = wrapper.read(Type.VAR_INT); - int blockLightMask = wrapper.read(Type.VAR_INT); - int emptySkyLightMask = wrapper.read(Type.VAR_INT); - int emptyBlockLightMask = wrapper.read(Type.VAR_INT); + registerClientbound(ClientboundPackets1_14.LIGHT_UPDATE, null, wrapper -> { + int x = wrapper.read(Types.VAR_INT); + int z = wrapper.read(Types.VAR_INT); + int skyLightMask = wrapper.read(Types.VAR_INT); + int blockLightMask = wrapper.read(Types.VAR_INT); + int emptySkyLightMask = wrapper.read(Types.VAR_INT); + int emptyBlockLightMask = wrapper.read(Types.VAR_INT); byte[][] skyLight = new byte[16][]; // we don't need void and +256 light if (isSet(skyLightMask, 0)) { - wrapper.read(Type.BYTE_ARRAY_PRIMITIVE); + wrapper.read(Types.BYTE_ARRAY_PRIMITIVE); } for (int i = 0; i < 16; i++) { if (isSet(skyLightMask, i + 1)) { - skyLight[i] = wrapper.read(Type.BYTE_ARRAY_PRIMITIVE); + skyLight[i] = wrapper.read(Types.BYTE_ARRAY_PRIMITIVE); } else if (isSet(emptySkyLightMask, i + 1)) { skyLight[i] = ChunkLightStorage.EMPTY_LIGHT; } } if (isSet(skyLightMask, 17)) { - wrapper.read(Type.BYTE_ARRAY_PRIMITIVE); + wrapper.read(Types.BYTE_ARRAY_PRIMITIVE); } byte[][] blockLight = new byte[16][]; if (isSet(blockLightMask, 0)) { - wrapper.read(Type.BYTE_ARRAY_PRIMITIVE); + wrapper.read(Types.BYTE_ARRAY_PRIMITIVE); } for (int i = 0; i < 16; i++) { if (isSet(blockLightMask, i + 1)) { - blockLight[i] = wrapper.read(Type.BYTE_ARRAY_PRIMITIVE); + blockLight[i] = wrapper.read(Types.BYTE_ARRAY_PRIMITIVE); } else if (isSet(emptyBlockLightMask, i + 1)) { blockLight[i] = ChunkLightStorage.EMPTY_LIGHT; } } if (isSet(blockLightMask, 17)) { - wrapper.read(Type.BYTE_ARRAY_PRIMITIVE); + wrapper.read(Types.BYTE_ARRAY_PRIMITIVE); } //TODO Soft memory leak: Don't store light if chunk is already loaded @@ -176,17 +176,17 @@ public class Protocol1_13_2To1_14 extends BackwardsProtocol. */ -package com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.data; +package com.viaversion.viabackwards.protocol.v1_14to1_13_2.data; -import com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14; -import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPackets1_14; +import com.viaversion.viabackwards.protocol.v1_14to1_13_2.Protocol1_14To1_13_2; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.protocols.v1_13_2to1_14.packet.ClientboundPackets1_14; import com.viaversion.viaversion.rewriter.CommandRewriter; import org.checkerframework.checker.nullness.qual.Nullable; public class CommandRewriter1_14 extends CommandRewriter { - public CommandRewriter1_14(Protocol1_13_2To1_14 protocol) { + public CommandRewriter1_14(Protocol1_14To1_13_2 protocol) { super(protocol); - this.parserHandlers.put("minecraft:nbt_tag", wrapper -> wrapper.write(Type.VAR_INT, 2)); // Greedy phrase + this.parserHandlers.put("minecraft:nbt_tag", wrapper -> wrapper.write(Types.VAR_INT, 2)); // Greedy phrase this.parserHandlers.put("minecraft:time", wrapper -> { - wrapper.write(Type.BYTE, (byte) (0x01)); // Flags - wrapper.write(Type.INT, 0); // Min value + wrapper.write(Types.BYTE, (byte) (0x01)); // Flags + wrapper.write(Types.INT, 0); // Min value }); } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_14to1_13_2/rewriter/BlockItemPacketRewriter1_14.java similarity index 63% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_14to1_13_2/rewriter/BlockItemPacketRewriter1_14.java index 3d42f10b..d41a3e3a 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/packets/BlockItemPackets1_14.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_14to1_13_2/rewriter/BlockItemPacketRewriter1_14.java @@ -15,14 +15,14 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.packets; +package com.viaversion.viabackwards.protocol.v1_14to1_13_2.rewriter; import com.google.common.collect.ImmutableSet; import com.viaversion.viabackwards.ViaBackwards; import com.viaversion.viabackwards.api.rewriters.BackwardsItemRewriter; import com.viaversion.viabackwards.api.rewriters.EnchantmentRewriter; -import com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14; -import com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.storage.ChunkLightStorage; +import com.viaversion.viabackwards.protocol.v1_14to1_13_2.Protocol1_14To1_13_2; +import com.viaversion.viabackwards.protocol.v1_14to1_13_2.storage.ChunkLightStorage; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.ClientWorld; @@ -36,22 +36,23 @@ import com.viaversion.viaversion.api.minecraft.chunks.PaletteType; import com.viaversion.viaversion.api.minecraft.entities.EntityType; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_14; import com.viaversion.viaversion.api.minecraft.item.Item; -import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.api.minecraft.entitydata.EntityData; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_13; import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_14; import com.viaversion.viaversion.api.type.types.version.Types1_13; import com.viaversion.viaversion.api.type.types.version.Types1_13_2; import com.viaversion.viaversion.libs.gson.JsonElement; import com.viaversion.viaversion.libs.gson.JsonObject; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.ListTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ServerboundPackets1_13; -import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPackets1_14; -import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.Protocol1_14To1_13_2; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.ListTag; +import com.viaversion.nbt.tag.StringTag; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ClientboundPackets1_13; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ServerboundPackets1_13; +import com.viaversion.viaversion.protocols.v1_13_2to1_14.Protocol1_13_2To1_14; +import com.viaversion.viaversion.protocols.v1_13_2to1_14.packet.ClientboundPackets1_14; import com.viaversion.viaversion.rewriter.BlockRewriter; import com.viaversion.viaversion.rewriter.RecipeRewriter; import com.viaversion.viaversion.util.ComponentUtil; @@ -60,23 +61,23 @@ import java.util.ArrayList; import java.util.List; import java.util.Set; -public class BlockItemPackets1_14 extends BackwardsItemRewriter { +public class BlockItemPacketRewriter1_14 extends BackwardsItemRewriter { private EnchantmentRewriter enchantmentRewriter; - public BlockItemPackets1_14(Protocol1_13_2To1_14 protocol) { - super(protocol, Type.ITEM1_13_2, Type.ITEM1_13_2_SHORT_ARRAY); + public BlockItemPacketRewriter1_14(Protocol1_14To1_13_2 protocol) { + super(protocol, Types.ITEM1_13_2, Types.ITEM1_13_2_SHORT_ARRAY); } @Override protected void registerPackets() { - protocol.registerServerbound(ServerboundPackets1_13.EDIT_BOOK, wrapper -> handleItemToServer(wrapper.user(), wrapper.passthrough(Type.ITEM1_13_2))); + protocol.registerServerbound(ServerboundPackets1_13.EDIT_BOOK, wrapper -> handleItemToServer(wrapper.user(), wrapper.passthrough(Types.ITEM1_13_2))); - protocol.registerClientbound(ClientboundPackets1_14.OPEN_WINDOW, wrapper -> { - int windowId = wrapper.read(Type.VAR_INT); - wrapper.write(Type.UNSIGNED_BYTE, (short) windowId); + protocol.registerClientbound(ClientboundPackets1_14.OPEN_SCREEN, wrapper -> { + int windowId = wrapper.read(Types.VAR_INT); + wrapper.write(Types.UNSIGNED_BYTE, (short) windowId); - int type = wrapper.read(Type.VAR_INT); + int type = wrapper.read(Types.VAR_INT); String stringType = null; String containerTitle = null; int slotSize = 0; @@ -129,9 +130,9 @@ public class BlockItemPackets1_14 extends BackwardsItemRewriter Open Window - protocol.registerClientbound(ClientboundPackets1_14.OPEN_HORSE_WINDOW, ClientboundPackets1_13.OPEN_WINDOW, wrapper -> { - wrapper.passthrough(Type.UNSIGNED_BYTE); // Window id - wrapper.write(Type.STRING, "EntityHorse"); // Type + protocol.registerClientbound(ClientboundPackets1_14.HORSE_SCREEN_OPEN, ClientboundPackets1_13.OPEN_SCREEN, wrapper -> { + wrapper.passthrough(Types.UNSIGNED_BYTE); // Window id + wrapper.write(Types.STRING, "EntityHorse"); // Type JsonObject object = new JsonObject(); object.addProperty("translate", "minecraft.horse"); - wrapper.write(Type.COMPONENT, object); // Title - wrapper.write(Type.UNSIGNED_BYTE, wrapper.read(Type.VAR_INT).shortValue()); // Number of slots - wrapper.passthrough(Type.INT); // Entity id + wrapper.write(Types.COMPONENT, object); // Title + wrapper.write(Types.UNSIGNED_BYTE, wrapper.read(Types.VAR_INT).shortValue()); // Number of slots + wrapper.passthrough(Types.INT); // Entity id }); BlockRewriter blockRewriter = BlockRewriter.legacy(protocol); - registerSetCooldown(ClientboundPackets1_14.COOLDOWN); - registerWindowItems(ClientboundPackets1_14.WINDOW_ITEMS); - registerSetSlot(ClientboundPackets1_14.SET_SLOT); - registerAdvancements(ClientboundPackets1_14.ADVANCEMENTS); + registerCooldown(ClientboundPackets1_14.COOLDOWN); + registerSetContent(ClientboundPackets1_14.CONTAINER_SET_CONTENT); + registerSetSlot(ClientboundPackets1_14.CONTAINER_SET_SLOT); + registerAdvancements(ClientboundPackets1_14.UPDATE_ADVANCEMENTS); // Trade List -> Plugin Message - protocol.registerClientbound(ClientboundPackets1_14.TRADE_LIST, ClientboundPackets1_13.PLUGIN_MESSAGE, wrapper -> { - wrapper.write(Type.STRING, "minecraft:trader_list"); + protocol.registerClientbound(ClientboundPackets1_14.MERCHANT_OFFERS, ClientboundPackets1_13.CUSTOM_PAYLOAD, wrapper -> { + wrapper.write(Types.STRING, "minecraft:trader_list"); - int windowId = wrapper.read(Type.VAR_INT); - wrapper.write(Type.INT, windowId); + int windowId = wrapper.read(Types.VAR_INT); + wrapper.write(Types.INT, windowId); - int size = wrapper.passthrough(Type.UNSIGNED_BYTE); + int size = wrapper.passthrough(Types.UNSIGNED_BYTE); for (int i = 0; i < size; i++) { // Input Item - Item input = wrapper.read(Type.ITEM1_13_2); + Item input = wrapper.read(Types.ITEM1_13_2); input = handleItemToClient(wrapper.user(), input); - wrapper.write(Type.ITEM1_13_2, input); + wrapper.write(Types.ITEM1_13_2, input); // Output Item - Item output = wrapper.read(Type.ITEM1_13_2); + Item output = wrapper.read(Types.ITEM1_13_2); output = handleItemToClient(wrapper.user(), output); - wrapper.write(Type.ITEM1_13_2, output); + wrapper.write(Types.ITEM1_13_2, output); - boolean secondItem = wrapper.passthrough(Type.BOOLEAN); // Has second item + boolean secondItem = wrapper.passthrough(Types.BOOLEAN); // Has second item if (secondItem) { // Second Item - Item second = wrapper.read(Type.ITEM1_13_2); + Item second = wrapper.read(Types.ITEM1_13_2); second = handleItemToClient(wrapper.user(), second); - wrapper.write(Type.ITEM1_13_2, second); + wrapper.write(Types.ITEM1_13_2, second); } - wrapper.passthrough(Type.BOOLEAN); // Trade disabled - wrapper.passthrough(Type.INT); // Number of tools uses - wrapper.passthrough(Type.INT); // Maximum number of trade uses + wrapper.passthrough(Types.BOOLEAN); // Trade disabled + wrapper.passthrough(Types.INT); // Number of tools uses + wrapper.passthrough(Types.INT); // Maximum number of trade uses - wrapper.read(Type.INT); - wrapper.read(Type.INT); - wrapper.read(Type.FLOAT); + wrapper.read(Types.INT); + wrapper.read(Types.INT); + wrapper.read(Types.FLOAT); } - wrapper.read(Type.VAR_INT); - wrapper.read(Type.VAR_INT); - wrapper.read(Type.BOOLEAN); + wrapper.read(Types.VAR_INT); + wrapper.read(Types.VAR_INT); + wrapper.read(Types.BOOLEAN); }); // Open Book -> Plugin Message - protocol.registerClientbound(ClientboundPackets1_14.OPEN_BOOK, ClientboundPackets1_13.PLUGIN_MESSAGE, wrapper -> { - wrapper.write(Type.STRING, "minecraft:book_open"); - wrapper.passthrough(Type.VAR_INT); + protocol.registerClientbound(ClientboundPackets1_14.OPEN_BOOK, ClientboundPackets1_13.CUSTOM_PAYLOAD, wrapper -> { + wrapper.write(Types.STRING, "minecraft:book_open"); + wrapper.passthrough(Types.VAR_INT); }); - protocol.registerClientbound(ClientboundPackets1_14.ENTITY_EQUIPMENT, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_14.SET_EQUIPPED_ITEM, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); // 0 - Entity ID - map(Type.VAR_INT); // 1 - Slot ID - map(Type.ITEM1_13_2); // 2 - Item + map(Types.VAR_INT); // 0 - Entity ID + map(Types.VAR_INT); // 1 - Slot ID + map(Types.ITEM1_13_2); // 2 - Item - handler(wrapper -> handleItemToClient(wrapper.user(), wrapper.get(Type.ITEM1_13_2, 0))); + handler(wrapper -> handleItemToClient(wrapper.user(), wrapper.get(Types.ITEM1_13_2, 0))); handler(wrapper -> { - int entityId = wrapper.get(Type.VAR_INT, 0); - EntityType entityType = wrapper.user().getEntityTracker(Protocol1_13_2To1_14.class).entityType(entityId); + int entityId = wrapper.get(Types.VAR_INT, 0); + EntityType entityType = wrapper.user().getEntityTracker(Protocol1_14To1_13_2.class).entityType(entityId); if (entityType == null) return; if (entityType.isOrHasParent(EntityTypes1_14.ABSTRACT_HORSE)) { - wrapper.setPacketType(ClientboundPackets1_13.ENTITY_METADATA); + wrapper.setPacketType(ClientboundPackets1_13.SET_ENTITY_DATA); wrapper.resetReader(); - wrapper.passthrough(Type.VAR_INT); - wrapper.read(Type.VAR_INT); - Item item = wrapper.read(Type.ITEM1_13_2); + wrapper.passthrough(Types.VAR_INT); + wrapper.read(Types.VAR_INT); + Item item = wrapper.read(Types.ITEM1_13_2); int armorType = item == null || item.identifier() == 0 ? 0 : item.identifier() - 726; if (armorType < 0 || armorType > 3) { wrapper.cancel(); return; } - List metadataList = new ArrayList<>(); - metadataList.add(new Metadata(16, Types1_13_2.META_TYPES.varIntType, armorType)); - wrapper.write(Types1_13.METADATA_LIST, metadataList); + List metadataList = new ArrayList<>(); + metadataList.add(new EntityData(16, Types1_13_2.ENTITY_DATA_TYPES.varIntType, armorType)); + wrapper.write(Types1_13.ENTITY_DATA_LIST, metadataList); } }); } @@ -247,114 +248,114 @@ public class BlockItemPackets1_14 extends BackwardsItemRewriter recipeHandler = new RecipeRewriter<>(protocol); final Set removedTypes = ImmutableSet.of("crafting_special_suspiciousstew", "blasting", "smoking", "campfire_cooking", "stonecutting"); - protocol.registerClientbound(ClientboundPackets1_14.DECLARE_RECIPES, wrapper -> { - int size = wrapper.passthrough(Type.VAR_INT); + protocol.registerClientbound(ClientboundPackets1_14.UPDATE_RECIPES, wrapper -> { + int size = wrapper.passthrough(Types.VAR_INT); int deleted = 0; for (int i = 0; i < size; i++) { - String type = wrapper.read(Type.STRING); - String id = wrapper.read(Type.STRING); // Recipe Identifier + String type = wrapper.read(Types.STRING); + String id = wrapper.read(Types.STRING); // Recipe Identifier type = Key.stripMinecraftNamespace(type); if (removedTypes.contains(type)) { switch (type) { case "blasting", "smoking", "campfire_cooking" -> { - wrapper.read(Type.STRING); // Group - wrapper.read(Type.ITEM1_13_2_ARRAY); // Ingredients - wrapper.read(Type.ITEM1_13_2); - wrapper.read(Type.FLOAT); // EXP - wrapper.read(Type.VAR_INT); // Cooking time + wrapper.read(Types.STRING); // Group + wrapper.read(Types.ITEM1_13_2_ARRAY); // Ingredients + wrapper.read(Types.ITEM1_13_2); + wrapper.read(Types.FLOAT); // EXP + wrapper.read(Types.VAR_INT); // Cooking time } case "stonecutting" -> { - wrapper.read(Type.STRING); // Group? - wrapper.read(Type.ITEM1_13_2_ARRAY); // Ingredients - wrapper.read(Type.ITEM1_13_2); // Result + wrapper.read(Types.STRING); // Group? + wrapper.read(Types.ITEM1_13_2_ARRAY); // Ingredients + wrapper.read(Types.ITEM1_13_2); // Result } } deleted++; continue; } - wrapper.write(Type.STRING, id); - wrapper.write(Type.STRING, type); + wrapper.write(Types.STRING, id); + wrapper.write(Types.STRING, type); // Handle the rest of the types recipeHandler.handleRecipeType(wrapper, type); } - wrapper.set(Type.VAR_INT, 0, size - deleted); + wrapper.set(Types.VAR_INT, 0, size - deleted); }); - registerClickWindow(ServerboundPackets1_13.CLICK_WINDOW); - registerCreativeInvAction(ServerboundPackets1_13.CREATIVE_INVENTORY_ACTION); + registerContainerClick(ServerboundPackets1_13.CONTAINER_CLICK); + registerSetCreativeModeSlot(ServerboundPackets1_13.SET_CREATIVE_MODE_SLOT); - protocol.registerClientbound(ClientboundPackets1_14.BLOCK_BREAK_ANIMATION, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_14.BLOCK_DESTRUCTION, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); - map(Type.POSITION1_14, Type.POSITION1_8); - map(Type.BYTE); + map(Types.VAR_INT); + map(Types.BLOCK_POSITION1_14, Types.BLOCK_POSITION1_8); + map(Types.BYTE); } }); protocol.registerClientbound(ClientboundPackets1_14.BLOCK_ENTITY_DATA, new PacketHandlers() { @Override public void register() { - map(Type.POSITION1_14, Type.POSITION1_8); + map(Types.BLOCK_POSITION1_14, Types.BLOCK_POSITION1_8); } }); - protocol.registerClientbound(ClientboundPackets1_14.BLOCK_ACTION, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_14.BLOCK_EVENT, new PacketHandlers() { @Override public void register() { - map(Type.POSITION1_14, Type.POSITION1_8); // Location - map(Type.UNSIGNED_BYTE); // Action id - map(Type.UNSIGNED_BYTE); // Action param - map(Type.VAR_INT); // Block id - /!\ NOT BLOCK STATE + map(Types.BLOCK_POSITION1_14, Types.BLOCK_POSITION1_8); // Location + map(Types.UNSIGNED_BYTE); // Action id + map(Types.UNSIGNED_BYTE); // Action param + map(Types.VAR_INT); // Block id - /!\ NOT BLOCK STATE handler(wrapper -> { - int mappedId = protocol.getMappingData().getNewBlockId(wrapper.get(Type.VAR_INT, 0)); + int mappedId = protocol.getMappingData().getNewBlockId(wrapper.get(Types.VAR_INT, 0)); if (mappedId == -1) { wrapper.cancel(); return; } - wrapper.set(Type.VAR_INT, 0, mappedId); + wrapper.set(Types.VAR_INT, 0, mappedId); }); } }); - protocol.registerClientbound(ClientboundPackets1_14.BLOCK_CHANGE, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_14.BLOCK_UPDATE, new PacketHandlers() { @Override public void register() { - map(Type.POSITION1_14, Type.POSITION1_8); - map(Type.VAR_INT); + map(Types.BLOCK_POSITION1_14, Types.BLOCK_POSITION1_8); + map(Types.VAR_INT); handler(wrapper -> { - int id = wrapper.get(Type.VAR_INT, 0); + int id = wrapper.get(Types.VAR_INT, 0); - wrapper.set(Type.VAR_INT, 0, protocol.getMappingData().getNewBlockStateId(id)); + wrapper.set(Types.VAR_INT, 0, protocol.getMappingData().getNewBlockStateId(id)); }); } }); - blockRewriter.registerMultiBlockChange(ClientboundPackets1_14.MULTI_BLOCK_CHANGE); + blockRewriter.registerChunkBlocksUpdate(ClientboundPackets1_14.CHUNK_BLOCKS_UPDATE); - protocol.registerClientbound(ClientboundPackets1_14.EXPLOSION, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_14.EXPLODE, new PacketHandlers() { @Override public void register() { - map(Type.FLOAT); // X - map(Type.FLOAT); // Y - map(Type.FLOAT); // Z - map(Type.FLOAT); // Radius + map(Types.FLOAT); // X + map(Types.FLOAT); // Y + map(Types.FLOAT); // Z + map(Types.FLOAT); // Radius handler(wrapper -> { for (int i = 0; i < 3; i++) { - float coord = wrapper.get(Type.FLOAT, i); + float coord = wrapper.get(Types.FLOAT, i); if (coord < 0f) { coord = (float) Math.floor(coord); - wrapper.set(Type.FLOAT, i, coord); + wrapper.set(Types.FLOAT, i, coord); } } }); } }); - protocol.registerClientbound(ClientboundPackets1_14.CHUNK_DATA, wrapper -> { + protocol.registerClientbound(ClientboundPackets1_14.LEVEL_CHUNK, wrapper -> { ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); Chunk chunk = wrapper.read(ChunkType1_14.TYPE); wrapper.write(ChunkType1_13.forEnvironment(clientWorld.getEnvironment()), chunk); @@ -386,7 +387,7 @@ public class BlockItemPackets1_14 extends BackwardsItemRewriter { - int x = wrapper.passthrough(Type.INT); - int z = wrapper.passthrough(Type.INT); + protocol.registerClientbound(ClientboundPackets1_14.FORGET_LEVEL_CHUNK, wrapper -> { + int x = wrapper.passthrough(Types.INT); + int z = wrapper.passthrough(Types.INT); wrapper.user().get(ChunkLightStorage.class).unloadChunk(x, z); }); - protocol.registerClientbound(ClientboundPackets1_14.EFFECT, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_14.LEVEL_EVENT, new PacketHandlers() { @Override public void register() { - map(Type.INT); // Effect Id - map(Type.POSITION1_14, Type.POSITION1_8); // Location - map(Type.INT); // Data + map(Types.INT); // Effect Id + map(Types.BLOCK_POSITION1_14, Types.BLOCK_POSITION1_8); // Location + map(Types.INT); // Data handler(wrapper -> { - int id = wrapper.get(Type.INT, 0); - int data = wrapper.get(Type.INT, 1); + int id = wrapper.get(Types.INT, 0); + int data = wrapper.get(Types.INT, 1); if (id == 1010) { // Play record - wrapper.set(Type.INT, 1, protocol.getMappingData().getNewItemId(data)); + wrapper.set(Types.INT, 1, protocol.getMappingData().getNewItemId(data)); } else if (id == 2001) { // Block break + block break sound - wrapper.set(Type.INT, 1, protocol.getMappingData().getNewBlockStateId(data)); + wrapper.set(Types.INT, 1, protocol.getMappingData().getNewBlockStateId(data)); } }); } }); - registerSpawnParticle(ClientboundPackets1_14.SPAWN_PARTICLE, Type.FLOAT); + registerLevelParticles(ClientboundPackets1_14.LEVEL_PARTICLES, Types.FLOAT); - protocol.registerClientbound(ClientboundPackets1_14.MAP_DATA, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_14.MAP_ITEM_DATA, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); - map(Type.BYTE); - map(Type.BOOLEAN); - read(Type.BOOLEAN); // Locked + map(Types.VAR_INT); + map(Types.BYTE); + map(Types.BOOLEAN); + read(Types.BOOLEAN); // Locked } }); - protocol.registerClientbound(ClientboundPackets1_14.SPAWN_POSITION, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_14.SET_DEFAULT_SPAWN_POSITION, new PacketHandlers() { @Override public void register() { - map(Type.POSITION1_14, Type.POSITION1_8); + map(Types.BLOCK_POSITION1_14, Types.BLOCK_POSITION1_8); } }); } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_14to1_13_2/rewriter/EntityPacketRewriter1_14.java similarity index 59% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_14to1_13_2/rewriter/EntityPacketRewriter1_14.java index 3a231bf6..a2140ff2 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_14to1_13_2/rewriter/EntityPacketRewriter1_14.java @@ -15,16 +15,16 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.packets; +package com.viaversion.viabackwards.protocol.v1_14to1_13_2.rewriter; import com.viaversion.viabackwards.ViaBackwards; -import com.viaversion.viabackwards.api.entities.storage.EntityData; +import com.viaversion.viabackwards.api.entities.storage.EntityReplacement; import com.viaversion.viabackwards.api.entities.storage.EntityPositionHandler; import com.viaversion.viabackwards.api.rewriters.LegacyEntityRewriter; -import com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14; -import com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.storage.ChunkLightStorage; -import com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.storage.DifficultyStorage; -import com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.storage.EntityPositionStorage1_14; +import com.viaversion.viabackwards.protocol.v1_14to1_13_2.Protocol1_14To1_13_2; +import com.viaversion.viabackwards.protocol.v1_14to1_13_2.storage.ChunkLightStorage; +import com.viaversion.viabackwards.protocol.v1_14to1_13_2.storage.DifficultyStorage; +import com.viaversion.viabackwards.protocol.v1_14to1_13_2.storage.EntityPositionStorage1_14; import com.viaversion.viaversion.api.data.entity.EntityTracker; import com.viaversion.viaversion.api.minecraft.ClientWorld; import com.viaversion.viaversion.api.minecraft.Particle; @@ -33,22 +33,23 @@ import com.viaversion.viaversion.api.minecraft.VillagerData; import com.viaversion.viaversion.api.minecraft.entities.EntityType; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_13; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_14; -import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.api.minecraft.entitydata.EntityData; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.version.Types1_13_2; import com.viaversion.viaversion.api.type.types.version.Types1_14; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13; -import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPackets1_14; -import com.viaversion.viaversion.rewriter.meta.MetaHandler; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ClientboundPackets1_13; +import com.viaversion.viaversion.protocols.v1_13_2to1_14.packet.ClientboundPackets1_14; +import com.viaversion.viaversion.rewriter.entitydata.EntityDataHandler; -public class EntityPackets1_14 extends LegacyEntityRewriter { +public class EntityPacketRewriter1_14 extends LegacyEntityRewriter { private EntityPositionHandler positionHandler; - public EntityPackets1_14(Protocol1_13_2To1_14 protocol) { - super(protocol, Types1_13_2.META_TYPES.optionalComponentType, Types1_13_2.META_TYPES.booleanType); + public EntityPacketRewriter1_14(Protocol1_14To1_13_2 protocol) { + super(protocol, Types1_13_2.ENTITY_DATA_TYPES.optionalComponentType, Types1_13_2.ENTITY_DATA_TYPES.booleanType); } //TODO work the method into this class alone @@ -58,9 +59,9 @@ public class EntityPackets1_14 extends LegacyEntityRewriter { - int entityId = wrapper.passthrough(Type.INT); - byte status = wrapper.passthrough(Type.BYTE); + protocol.registerClientbound(ClientboundPackets1_14.ENTITY_EVENT, wrapper -> { + int entityId = wrapper.passthrough(Types.INT); + byte status = wrapper.passthrough(Types.BYTE); // Check for death status if (status != 3) return; @@ -81,21 +82,21 @@ public class EntityPackets1_14 extends LegacyEntityRewriter positionHandler.cacheEntityPosition(wrapper, false, false)); } }); @@ -103,41 +104,41 @@ public class EntityPackets1_14 extends LegacyEntityRewriter { - double x = wrapper.get(Type.SHORT, 0) / EntityPositionHandler.RELATIVE_MOVE_FACTOR; - double y = wrapper.get(Type.SHORT, 1) / EntityPositionHandler.RELATIVE_MOVE_FACTOR; - double z = wrapper.get(Type.SHORT, 2) / EntityPositionHandler.RELATIVE_MOVE_FACTOR; + double x = wrapper.get(Types.SHORT, 0) / EntityPositionHandler.RELATIVE_MOVE_FACTOR; + double y = wrapper.get(Types.SHORT, 1) / EntityPositionHandler.RELATIVE_MOVE_FACTOR; + double z = wrapper.get(Types.SHORT, 2) / EntityPositionHandler.RELATIVE_MOVE_FACTOR; positionHandler.cacheEntityPosition(wrapper, x, y, z, false, true); }); } }; - protocol.registerClientbound(ClientboundPackets1_14.ENTITY_POSITION, relativeMoveHandler); - protocol.registerClientbound(ClientboundPackets1_14.ENTITY_POSITION_AND_ROTATION, relativeMoveHandler); + protocol.registerClientbound(ClientboundPackets1_14.MOVE_ENTITY_POS, relativeMoveHandler); + protocol.registerClientbound(ClientboundPackets1_14.MOVE_ENTITY_POS_ROT, relativeMoveHandler); - protocol.registerClientbound(ClientboundPackets1_14.SPAWN_ENTITY, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_14.ADD_ENTITY, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); // 0 - Entity id - map(Type.UUID); // 1 - UUID - map(Type.VAR_INT, Type.BYTE); // 2 - Type - map(Type.DOUBLE); // 3 - X - map(Type.DOUBLE); // 4 - Y - map(Type.DOUBLE); // 5 - Z - map(Type.BYTE); // 6 - Pitch - map(Type.BYTE); // 7 - Yaw - map(Type.INT); // 8 - Data - map(Type.SHORT); // 9 - Velocity X - map(Type.SHORT); // 10 - Velocity Y - map(Type.SHORT); // 11 - Velocity Z + map(Types.VAR_INT); // 0 - Entity id + map(Types.UUID); // 1 - UUID + map(Types.VAR_INT, Types.BYTE); // 2 - Type + map(Types.DOUBLE); // 3 - X + map(Types.DOUBLE); // 4 - Y + map(Types.DOUBLE); // 5 - Z + map(Types.BYTE); // 6 - Pitch + map(Types.BYTE); // 7 - Yaw + map(Types.INT); // 8 - Data + map(Types.SHORT); // 9 - Velocity X + map(Types.SHORT); // 10 - Velocity Y + map(Types.SHORT); // 11 - Velocity Z handler(getObjectTrackerHandler()); handler(wrapper -> { - int id = wrapper.get(Type.BYTE, 0); + int id = wrapper.get(Types.BYTE, 0); int mappedId = newEntityId(id); EntityTypes1_13.EntityType entityType = EntityTypes1_13.getTypeFromId(mappedId, false); EntityTypes1_13.ObjectType objectType; @@ -153,141 +154,141 @@ public class EntityPackets1_14 extends LegacyEntityRewriter 0; }; if (data != 0) - wrapper.set(Type.INT, 0, data); + wrapper.set(Types.INT, 0, data); } else { objectType = EntityTypes1_13.ObjectType.fromEntityType(entityType).orElse(null); } if (objectType == null) return; - wrapper.set(Type.BYTE, 0, (byte) objectType.getId()); + wrapper.set(Types.BYTE, 0, (byte) objectType.getId()); - int data = wrapper.get(Type.INT, 0); + int data = wrapper.get(Types.INT, 0); if (objectType == EntityTypes1_13.ObjectType.FALLING_BLOCK) { - int blockState = wrapper.get(Type.INT, 0); + int blockState = wrapper.get(Types.INT, 0); int combined = protocol.getMappingData().getNewBlockStateId(blockState); - wrapper.set(Type.INT, 0, combined); + wrapper.set(Types.INT, 0, combined); } else if (entityType.isOrHasParent(EntityTypes1_13.EntityType.ABSTRACT_ARROW)) { - wrapper.set(Type.INT, 0, data + 1); + wrapper.set(Types.INT, 0, data + 1); } }); } }); - protocol.registerClientbound(ClientboundPackets1_14.SPAWN_MOB, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_14.ADD_MOB, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); // 0 - Entity ID - map(Type.UUID); // 1 - Entity UUID - map(Type.VAR_INT); // 2 - Entity Type - map(Type.DOUBLE); // 3 - X - map(Type.DOUBLE); // 4 - Y - map(Type.DOUBLE); // 5 - Z - map(Type.BYTE); // 6 - Yaw - map(Type.BYTE); // 7 - Pitch - map(Type.BYTE); // 8 - Head Pitch - map(Type.SHORT); // 9 - Velocity X - map(Type.SHORT); // 10 - Velocity Y - map(Type.SHORT); // 11 - Velocity Z - map(Types1_14.METADATA_LIST, Types1_13_2.METADATA_LIST); // 12 - Metadata + map(Types.VAR_INT); // 0 - Entity ID + map(Types.UUID); // 1 - Entity UUID + map(Types.VAR_INT); // 2 - Entity Type + map(Types.DOUBLE); // 3 - X + map(Types.DOUBLE); // 4 - Y + map(Types.DOUBLE); // 5 - Z + map(Types.BYTE); // 6 - Yaw + map(Types.BYTE); // 7 - Pitch + map(Types.BYTE); // 8 - Head Pitch + map(Types.SHORT); // 9 - Velocity X + map(Types.SHORT); // 10 - Velocity Y + map(Types.SHORT); // 11 - Velocity Z + map(Types1_14.ENTITY_DATA_LIST, Types1_13_2.ENTITY_DATA_LIST); // 12 - Metadata handler(wrapper -> { - int type = wrapper.get(Type.VAR_INT, 1); + int type = wrapper.get(Types.VAR_INT, 1); EntityType entityType = EntityTypes1_14.getTypeFromId(type); - addTrackedEntity(wrapper, wrapper.get(Type.VAR_INT, 0), entityType); + addTrackedEntity(wrapper, wrapper.get(Types.VAR_INT, 0), entityType); int oldId = newEntityId(type); if (oldId == -1) { - EntityData entityData = entityDataForType(entityType); - if (entityData == null) { - ViaBackwards.getPlatform().getLogger().warning("Could not find 1.13.2 entity type for 1.14 entity type " + type + "/" + entityType); + EntityReplacement entityReplacement = entityDataForType(entityType); + if (entityReplacement == null) { + protocol.getLogger().warning("Could not find entity type mapping " + type + "/" + entityType); wrapper.cancel(); } else { - wrapper.set(Type.VAR_INT, 1, entityData.replacementId()); + wrapper.set(Types.VAR_INT, 1, entityReplacement.replacementId()); } } else { - wrapper.set(Type.VAR_INT, 1, oldId); + wrapper.set(Types.VAR_INT, 1, oldId); } }); // Handle entity type & metadata - handler(getMobSpawnRewriter1_11(Types1_13_2.METADATA_LIST)); + handler(getMobSpawnRewriter1_11(Types1_13_2.ENTITY_DATA_LIST)); } }); - protocol.registerClientbound(ClientboundPackets1_14.SPAWN_EXPERIENCE_ORB, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_14.ADD_EXPERIENCE_ORB, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); // 0 - Entity id - map(Type.DOUBLE); // Needs to be mapped for the position cache - map(Type.DOUBLE); - map(Type.DOUBLE); - handler(wrapper -> addTrackedEntity(wrapper, wrapper.get(Type.VAR_INT, 0), EntityTypes1_14.EXPERIENCE_ORB)); + map(Types.VAR_INT); // 0 - Entity id + map(Types.DOUBLE); // Needs to be mapped for the position cache + map(Types.DOUBLE); + map(Types.DOUBLE); + handler(wrapper -> addTrackedEntity(wrapper, wrapper.get(Types.VAR_INT, 0), EntityTypes1_14.EXPERIENCE_ORB)); } }); - protocol.registerClientbound(ClientboundPackets1_14.SPAWN_GLOBAL_ENTITY, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_14.ADD_GLOBAL_ENTITY, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); // 0 - Entity id - map(Type.BYTE); - map(Type.DOUBLE); // Needs to be mapped for the position cache - map(Type.DOUBLE); - map(Type.DOUBLE); - handler(wrapper -> addTrackedEntity(wrapper, wrapper.get(Type.VAR_INT, 0), EntityTypes1_14.LIGHTNING_BOLT)); + map(Types.VAR_INT); // 0 - Entity id + map(Types.BYTE); + map(Types.DOUBLE); // Needs to be mapped for the position cache + map(Types.DOUBLE); + map(Types.DOUBLE); + handler(wrapper -> addTrackedEntity(wrapper, wrapper.get(Types.VAR_INT, 0), EntityTypes1_14.LIGHTNING_BOLT)); } }); - protocol.registerClientbound(ClientboundPackets1_14.SPAWN_PAINTING, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_14.ADD_PAINTING, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); - map(Type.UUID); - map(Type.VAR_INT); - map(Type.POSITION1_14, Type.POSITION1_8); - map(Type.BYTE); + map(Types.VAR_INT); + map(Types.UUID); + map(Types.VAR_INT); + map(Types.BLOCK_POSITION1_14, Types.BLOCK_POSITION1_8); + map(Types.BYTE); // Track entity - handler(wrapper -> addTrackedEntity(wrapper, wrapper.get(Type.VAR_INT, 0), EntityTypes1_14.PAINTING)); + handler(wrapper -> addTrackedEntity(wrapper, wrapper.get(Types.VAR_INT, 0), EntityTypes1_14.PAINTING)); } }); - protocol.registerClientbound(ClientboundPackets1_14.SPAWN_PLAYER, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_14.ADD_PLAYER, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); // 0 - Entity ID - map(Type.UUID); // 1 - Player UUID - map(Type.DOUBLE); // 2 - X - map(Type.DOUBLE); // 3 - Y - map(Type.DOUBLE); // 4 - Z - map(Type.BYTE); // 5 - Yaw - map(Type.BYTE); // 6 - Pitch - map(Types1_14.METADATA_LIST, Types1_13_2.METADATA_LIST); // 7 - Metadata + map(Types.VAR_INT); // 0 - Entity ID + map(Types.UUID); // 1 - Player UUID + map(Types.DOUBLE); // 2 - X + map(Types.DOUBLE); // 3 - Y + map(Types.DOUBLE); // 4 - Z + map(Types.BYTE); // 5 - Yaw + map(Types.BYTE); // 6 - Pitch + map(Types1_14.ENTITY_DATA_LIST, Types1_13_2.ENTITY_DATA_LIST); // 7 - Metadata - handler(getTrackerAndMetaHandler(Types1_13_2.METADATA_LIST, EntityTypes1_14.PLAYER)); + handler(getTrackerAndMetaHandler(Types1_13_2.ENTITY_DATA_LIST, EntityTypes1_14.PLAYER)); handler(wrapper -> positionHandler.cacheEntityPosition(wrapper, true, false)); } }); - registerRemoveEntities(ClientboundPackets1_14.DESTROY_ENTITIES); - registerMetadataRewriter(ClientboundPackets1_14.ENTITY_METADATA, Types1_14.METADATA_LIST, Types1_13_2.METADATA_LIST); + registerRemoveEntities(ClientboundPackets1_14.REMOVE_ENTITIES); + registerSetEntityData(ClientboundPackets1_14.SET_ENTITY_DATA, Types1_14.ENTITY_DATA_LIST, Types1_13_2.ENTITY_DATA_LIST); - protocol.registerClientbound(ClientboundPackets1_14.JOIN_GAME, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_14.LOGIN, new PacketHandlers() { @Override public void register() { - map(Type.INT); // 0 - Entity ID - map(Type.UNSIGNED_BYTE); // 1 - Gamemode - map(Type.INT); // 2 - Dimension + map(Types.INT); // 0 - Entity ID + map(Types.UNSIGNED_BYTE); // 1 - Gamemode + map(Types.INT); // 2 - Dimension - handler(getTrackerHandler(EntityTypes1_14.PLAYER, Type.INT)); + handler(getTrackerHandler(EntityTypes1_14.PLAYER, Types.INT)); handler(getDimensionHandler(1)); handler(wrapper -> { short difficulty = wrapper.user().get(DifficultyStorage.class).getDifficulty(); - wrapper.write(Type.UNSIGNED_BYTE, difficulty); + wrapper.write(Types.UNSIGNED_BYTE, difficulty); - wrapper.passthrough(Type.UNSIGNED_BYTE); // Max Players - wrapper.passthrough(Type.STRING); // Level Type - wrapper.read(Type.VAR_INT); // Read View Distance + wrapper.passthrough(Types.UNSIGNED_BYTE); // Max Players + wrapper.passthrough(Types.STRING); // Level Type + wrapper.read(Types.VAR_INT); // Read View Distance //TODO Track client position // Manually add position storage @@ -301,15 +302,15 @@ public class EntityPackets1_14 extends LegacyEntityRewriter { ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); - int dimensionId = wrapper.get(Type.INT, 0); + int dimensionId = wrapper.get(Types.INT, 0); clientWorld.setEnvironment(dimensionId); short difficulty = wrapper.user().get(DifficultyStorage.class).getDifficulty(); - wrapper.write(Type.UNSIGNED_BYTE, difficulty); + wrapper.write(Types.UNSIGNED_BYTE, difficulty); wrapper.user().get(ChunkLightStorage.class).clear(); }); @@ -320,14 +321,14 @@ public class EntityPackets1_14 extends LegacyEntityRewriter { - int typeId = meta.metaType().typeId(); + int typeId = meta.dataType().typeId(); if (typeId <= 15) { - meta.setMetaType(Types1_13_2.META_TYPES.byId(typeId)); + meta.setDataType(Types1_13_2.ENTITY_DATA_TYPES.byId(typeId)); } }); - registerMetaTypeHandler(Types1_13_2.META_TYPES.itemType, Types1_13_2.META_TYPES.blockStateType, null, null, - Types1_13_2.META_TYPES.componentType, Types1_13_2.META_TYPES.optionalComponentType); + registerMetaTypeHandler(Types1_13_2.ENTITY_DATA_TYPES.itemType, null, Types1_13_2.ENTITY_DATA_TYPES.optionalBlockStateType, null, + Types1_13_2.ENTITY_DATA_TYPES.componentType, Types1_13_2.ENTITY_DATA_TYPES.optionalComponentType); filter().type(EntityTypes1_14.PILLAGER).cancel(15); @@ -350,7 +351,7 @@ public class EntityPackets1_14 extends LegacyEntityRewriter { EntityType type = event.entityType(); if (type == null) return; - if (type.isOrHasParent(EntityTypes1_14.ABSTRACT_ILLAGER_BASE) || type == EntityTypes1_14.RAVAGER || type == EntityTypes1_14.WITCH) { + if (type.isOrHasParent(EntityTypes1_14.ABSTRACT_ILLAGER) || type == EntityTypes1_14.RAVAGER || type == EntityTypes1_14.WITCH) { int index = event.index(); if (index == 14) { event.cancel(); @@ -365,7 +366,7 @@ public class EntityPackets1_14 extends LegacyEntityRewriter { - meta.setMetaType(Types1_13_2.META_TYPES.varIntType); + meta.setDataType(Types1_13_2.ENTITY_DATA_TYPES.varIntType); Integer value = (Integer) meta.getValue(); if (value == null) { meta.setValue(0); @@ -376,9 +377,9 @@ public class EntityPackets1_14 extends LegacyEntityRewriter { + EntityDataHandler villagerDataHandler = (event, meta) -> { VillagerData villagerData = (VillagerData) meta.getValue(); - meta.setTypeAndValue(Types1_13_2.META_TYPES.varIntType, villagerDataToProfession(villagerData)); + meta.setTypeAndValue(Types1_13_2.ENTITY_DATA_TYPES.varIntType, villagerDataToProfession(villagerData)); if (meta.id() == 16) { event.setIndex(15); // decreased by 2 again in one of the following handlers } @@ -391,31 +392,31 @@ public class EntityPackets1_14 extends LegacyEntityRewriter { byte value = (byte) meta.getValue(); if ((value & 4) != 0) { - event.createExtraMeta(new Metadata(14, Types1_13_2.META_TYPES.booleanType, true)); + event.createExtraData(new EntityData(14, Types1_13_2.ENTITY_DATA_TYPES.booleanType, true)); } }); filter().type(EntityTypes1_14.ZOMBIE).index(13).handler((event, meta) -> { byte value = (byte) meta.getValue(); if ((value & 4) != 0) { - event.createExtraMeta(new Metadata(16, Types1_13_2.META_TYPES.booleanType, true)); + event.createExtraData(new EntityData(16, Types1_13_2.ENTITY_DATA_TYPES.booleanType, true)); } }); filter().type(EntityTypes1_14.ZOMBIE).addIndex(16); // Remove bed location - filter().type(EntityTypes1_14.LIVINGENTITY).handler((event, meta) -> { + filter().type(EntityTypes1_14.LIVING_ENTITY).handler((event, meta) -> { int index = event.index(); if (index == 12) { Position position = (Position) meta.getValue(); if (position != null) { // Use bed - PacketWrapper wrapper = PacketWrapper.create(ClientboundPackets1_13.USE_BED, null, event.user()); - wrapper.write(Type.VAR_INT, event.entityId()); - wrapper.write(Type.POSITION1_8, position); + PacketWrapper wrapper = PacketWrapper.create(ClientboundPackets1_13.PLAYER_SLEEP, null, event.user()); + wrapper.write(Types.VAR_INT, event.entityId()); + wrapper.write(Types.BLOCK_POSITION1_8, position); try { - wrapper.scheduleSend(Protocol1_13_2To1_14.class); + wrapper.scheduleSend(Protocol1_14To1_13_2.class); } catch (Exception ex) { ex.printStackTrace(); } @@ -432,7 +433,7 @@ public class EntityPackets1_14 extends LegacyEntityRewriter { event.setIndex(15); - meta.setTypeAndValue(Types1_13_2.META_TYPES.varIntType, 0); + meta.setTypeAndValue(Types1_13_2.ENTITY_DATA_TYPES.varIntType, 0); }); filter().type(EntityTypes1_14.CAT).handler((event, meta) -> { @@ -444,7 +445,7 @@ public class EntityPackets1_14 extends LegacyEntityRewriter { - if (meta.metaType().typeId() > 15) { + if (meta.dataType().typeId() > 15) { throw new IllegalArgumentException("Unhandled metadata: " + meta); } }); diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/v1_14to1_13_2/rewriter/PlayerPacketRewriterRewriter1_14.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_14to1_13_2/rewriter/PlayerPacketRewriterRewriter1_14.java new file mode 100644 index 00000000..f3419ccf --- /dev/null +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_14to1_13_2/rewriter/PlayerPacketRewriterRewriter1_14.java @@ -0,0 +1,131 @@ +/* + * This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards + * Copyright (C) 2016-2024 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.viabackwards.protocol.v1_14to1_13_2.rewriter; + +import com.viaversion.viabackwards.protocol.v1_14to1_13_2.Protocol1_14To1_13_2; +import com.viaversion.viabackwards.protocol.v1_14to1_13_2.storage.DifficultyStorage; +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; +import com.viaversion.viaversion.api.rewriter.RewriterBase; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ServerboundPackets1_13; +import com.viaversion.viaversion.protocols.v1_13_2to1_14.packet.ClientboundPackets1_14; + +public class PlayerPacketRewriterRewriter1_14 extends RewriterBase { + + public PlayerPacketRewriterRewriter1_14(Protocol1_14To1_13_2 protocol) { + super(protocol); + } + + @Override + protected void registerPackets() { + protocol.registerClientbound(ClientboundPackets1_14.CHANGE_DIFFICULTY, new PacketHandlers() { + @Override + public void register() { + map(Types.UNSIGNED_BYTE); + read(Types.BOOLEAN); // Locked + handler(wrapper -> { + byte difficulty = wrapper.get(Types.UNSIGNED_BYTE, 0).byteValue(); + wrapper.user().get(DifficultyStorage.class).setDifficulty(difficulty); + }); + } + }); + + protocol.registerClientbound(ClientboundPackets1_14.OPEN_SIGN_EDITOR, new PacketHandlers() { + @Override + public void register() { + map(Types.BLOCK_POSITION1_14, Types.BLOCK_POSITION1_8); + } + }); + protocol.registerServerbound(ServerboundPackets1_13.BLOCK_ENTITY_TAG_QUERY, new PacketHandlers() { + @Override + public void register() { + map(Types.VAR_INT); + map(Types.BLOCK_POSITION1_8, Types.BLOCK_POSITION1_14); + } + }); + protocol.registerServerbound(ServerboundPackets1_13.PLAYER_ACTION, new PacketHandlers() { + @Override + public void register() { + map(Types.VAR_INT); // Action + map(Types.BLOCK_POSITION1_8, Types.BLOCK_POSITION1_14); // Position + } + }); + + protocol.registerServerbound(ServerboundPackets1_13.RECIPE_BOOK_UPDATE, new PacketHandlers() { + @Override + public void register() { + map(Types.VAR_INT); + handler(wrapper -> { + int type = wrapper.get(Types.VAR_INT, 0); + if (type == 0) { + wrapper.passthrough(Types.STRING); + } else if (type == 1) { + wrapper.passthrough(Types.BOOLEAN); // Crafting Recipe Book Open + wrapper.passthrough(Types.BOOLEAN); // Crafting Recipe Filter Active + wrapper.passthrough(Types.BOOLEAN); // Smelting Recipe Book Open + wrapper.passthrough(Types.BOOLEAN); // Smelting Recipe Filter Active + + // Blast furnace/smoker data + wrapper.write(Types.BOOLEAN, false); + wrapper.write(Types.BOOLEAN, false); + wrapper.write(Types.BOOLEAN, false); + wrapper.write(Types.BOOLEAN, false); + } + }); + } + }); + + protocol.registerServerbound(ServerboundPackets1_13.SET_COMMAND_BLOCK, new PacketHandlers() { + @Override + public void register() { + map(Types.BLOCK_POSITION1_8, Types.BLOCK_POSITION1_14); + } + }); + protocol.registerServerbound(ServerboundPackets1_13.SET_STRUCTURE_BLOCK, new PacketHandlers() { + @Override + public void register() { + map(Types.BLOCK_POSITION1_8, Types.BLOCK_POSITION1_14); + } + }); + protocol.registerServerbound(ServerboundPackets1_13.SIGN_UPDATE, new PacketHandlers() { + @Override + public void register() { + map(Types.BLOCK_POSITION1_8, Types.BLOCK_POSITION1_14); + } + }); + + protocol.registerServerbound(ServerboundPackets1_13.USE_ITEM_ON, wrapper -> { + Position position = wrapper.read(Types.BLOCK_POSITION1_8); + int face = wrapper.read(Types.VAR_INT); + int hand = wrapper.read(Types.VAR_INT); + float x = wrapper.read(Types.FLOAT); + float y = wrapper.read(Types.FLOAT); + float z = wrapper.read(Types.FLOAT); + + wrapper.write(Types.VAR_INT, hand); + wrapper.write(Types.BLOCK_POSITION1_14, position); + wrapper.write(Types.VAR_INT, face); + wrapper.write(Types.FLOAT, x); + wrapper.write(Types.FLOAT, y); + wrapper.write(Types.FLOAT, z); + wrapper.write(Types.BOOLEAN, false); // Inside block + }); + } +} diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/packets/SoundPackets1_14.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_14to1_13_2/rewriter/SoundPacketRewriter1_14.java similarity index 64% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/packets/SoundPackets1_14.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_14to1_13_2/rewriter/SoundPacketRewriter1_14.java index 5eff4708..b1244e67 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/packets/SoundPackets1_14.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_14to1_13_2/rewriter/SoundPacketRewriter1_14.java @@ -15,22 +15,22 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.packets; +package com.viaversion.viabackwards.protocol.v1_14to1_13_2.rewriter; import com.viaversion.viabackwards.ViaBackwards; import com.viaversion.viabackwards.api.rewriters.SoundRewriter; -import com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14; -import com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.storage.EntityPositionStorage1_14; +import com.viaversion.viabackwards.protocol.v1_14to1_13_2.Protocol1_14To1_13_2; +import com.viaversion.viabackwards.protocol.v1_14to1_13_2.storage.EntityPositionStorage1_14; import com.viaversion.viaversion.api.data.entity.StoredEntityData; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.rewriter.RewriterBase; -import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13; -import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPackets1_14; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.protocols.v1_12_2to1_13.packet.ClientboundPackets1_13; +import com.viaversion.viaversion.protocols.v1_13_2to1_14.packet.ClientboundPackets1_14; -public class SoundPackets1_14 extends RewriterBase { +public class SoundPacketRewriter1_14 extends RewriterBase { - public SoundPackets1_14(Protocol1_13_2To1_14 protocol) { + public SoundPacketRewriter1_14(Protocol1_14To1_13_2 protocol) { super(protocol); } @@ -38,19 +38,19 @@ public class SoundPackets1_14 extends RewriterBase { protected void registerPackets() { SoundRewriter soundRewriter = new SoundRewriter<>(protocol); soundRewriter.registerSound(ClientboundPackets1_14.SOUND); - soundRewriter.registerNamedSound(ClientboundPackets1_14.NAMED_SOUND); + soundRewriter.registerNamedSound(ClientboundPackets1_14.CUSTOM_SOUND); soundRewriter.registerStopSound(ClientboundPackets1_14.STOP_SOUND); // Entity Sound Effect - protocol.registerClientbound(ClientboundPackets1_14.ENTITY_SOUND, null, wrapper -> { + protocol.registerClientbound(ClientboundPackets1_14.SOUND_ENTITY, null, wrapper -> { wrapper.cancel(); - int soundId = wrapper.read(Type.VAR_INT); + int soundId = wrapper.read(Types.VAR_INT); int newId = protocol.getMappingData().getSoundMappings().getNewId(soundId); if (newId == -1) return; - int category = wrapper.read(Type.VAR_INT); - int entityId = wrapper.read(Type.VAR_INT); + int category = wrapper.read(Types.VAR_INT); + int entityId = wrapper.read(Types.VAR_INT); StoredEntityData storedEntity = wrapper.user().getEntityTracker(protocol.getClass()).entityData(entityId); EntityPositionStorage1_14 entityStorage; @@ -59,21 +59,21 @@ public class SoundPackets1_14 extends RewriterBase { return; } - float volume = wrapper.read(Type.FLOAT); - float pitch = wrapper.read(Type.FLOAT); + float volume = wrapper.read(Types.FLOAT); + float pitch = wrapper.read(Types.FLOAT); int x = (int) (entityStorage.x() * 8D); int y = (int) (entityStorage.y() * 8D); int z = (int) (entityStorage.z() * 8D); PacketWrapper soundPacket = wrapper.create(ClientboundPackets1_13.SOUND); - soundPacket.write(Type.VAR_INT, newId); - soundPacket.write(Type.VAR_INT, category); - soundPacket.write(Type.INT, x); - soundPacket.write(Type.INT, y); - soundPacket.write(Type.INT, z); - soundPacket.write(Type.FLOAT, volume); - soundPacket.write(Type.FLOAT, pitch); - soundPacket.send(Protocol1_13_2To1_14.class); + soundPacket.write(Types.VAR_INT, newId); + soundPacket.write(Types.VAR_INT, category); + soundPacket.write(Types.INT, x); + soundPacket.write(Types.INT, y); + soundPacket.write(Types.INT, z); + soundPacket.write(Types.FLOAT, volume); + soundPacket.write(Types.FLOAT, pitch); + soundPacket.send(Protocol1_14To1_13_2.class); }); } } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/storage/ChunkLightStorage.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_14to1_13_2/storage/ChunkLightStorage.java similarity index 97% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/storage/ChunkLightStorage.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_14to1_13_2/storage/ChunkLightStorage.java index 96b000bb..a50155f2 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/storage/ChunkLightStorage.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_14to1_13_2/storage/ChunkLightStorage.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.storage; +package com.viaversion.viabackwards.protocol.v1_14to1_13_2.storage; import com.viaversion.viaversion.api.connection.StorableObject; import java.lang.reflect.Constructor; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/storage/DifficultyStorage.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_14to1_13_2/storage/DifficultyStorage.java similarity index 93% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/storage/DifficultyStorage.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_14to1_13_2/storage/DifficultyStorage.java index 60a1a0c6..24c0ac30 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/storage/DifficultyStorage.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_14to1_13_2/storage/DifficultyStorage.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.storage; +package com.viaversion.viabackwards.protocol.v1_14to1_13_2.storage; import com.viaversion.viaversion.api.connection.StorableObject; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/storage/EntityPositionStorage1_14.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_14to1_13_2/storage/EntityPositionStorage1_14.java similarity index 92% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/storage/EntityPositionStorage1_14.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_14to1_13_2/storage/EntityPositionStorage1_14.java index 20c51cbe..2e0267ee 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_13_2to1_14/storage/EntityPositionStorage1_14.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_14to1_13_2/storage/EntityPositionStorage1_14.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_13_2to1_14.storage; +package com.viaversion.viabackwards.protocol.v1_14to1_13_2.storage; import com.viaversion.viabackwards.api.entities.storage.EntityPositionStorage; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15to1_15_1/Protocol1_15To1_15_1.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_15_1to1_15/Protocol1_15_1To1_15.java similarity index 79% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15to1_15_1/Protocol1_15To1_15_1.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_15_1to1_15/Protocol1_15_1To1_15.java index 8dcc5141..1245e368 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15to1_15_1/Protocol1_15To1_15_1.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_15_1to1_15/Protocol1_15_1To1_15.java @@ -15,11 +15,11 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_15to1_15_1; +package com.viaversion.viabackwards.protocol.v1_15_1to1_15; import com.viaversion.viabackwards.api.BackwardsProtocol; -import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ServerboundPackets1_14; -import com.viaversion.viaversion.protocols.protocol1_15to1_14_4.ClientboundPackets1_15; +import com.viaversion.viaversion.protocols.v1_13_2to1_14.packet.ServerboundPackets1_14; +import com.viaversion.viaversion.protocols.v1_14_4to1_15.packet.ClientboundPackets1_15; -public class Protocol1_15To1_15_1 extends BackwardsProtocol { +public class Protocol1_15_1To1_15 extends BackwardsProtocol { } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15_1to1_15_2/Protocol1_15_1To1_15_2.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_15_2to1_15_1/Protocol1_15_2To1_15_1.java similarity index 79% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15_1to1_15_2/Protocol1_15_1To1_15_2.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_15_2to1_15_1/Protocol1_15_2To1_15_1.java index c1f5a859..b77e52a0 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15_1to1_15_2/Protocol1_15_1To1_15_2.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_15_2to1_15_1/Protocol1_15_2To1_15_1.java @@ -15,11 +15,11 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_15_1to1_15_2; +package com.viaversion.viabackwards.protocol.v1_15_2to1_15_1; import com.viaversion.viabackwards.api.BackwardsProtocol; -import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ServerboundPackets1_14; -import com.viaversion.viaversion.protocols.protocol1_15to1_14_4.ClientboundPackets1_15; +import com.viaversion.viaversion.protocols.v1_13_2to1_14.packet.ServerboundPackets1_14; +import com.viaversion.viaversion.protocols.v1_14_4to1_15.packet.ClientboundPackets1_15; -public class Protocol1_15_1To1_15_2 extends BackwardsProtocol { +public class Protocol1_15_2To1_15_1 extends BackwardsProtocol { } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_14_4to1_15/Protocol1_14_4To1_15.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_15to1_14_4/Protocol1_15To1_14_4.java similarity index 58% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_14_4to1_15/Protocol1_14_4To1_15.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_15to1_14_4/Protocol1_15To1_14_4.java index 8087d565..6d4d6b8d 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_14_4to1_15/Protocol1_14_4To1_15.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_15to1_14_4/Protocol1_15To1_14_4.java @@ -15,39 +15,39 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_14_4to1_15; +package com.viaversion.viabackwards.protocol.v1_15to1_14_4; import com.viaversion.viabackwards.api.BackwardsProtocol; -import com.viaversion.viabackwards.api.data.BackwardsMappings; +import com.viaversion.viabackwards.api.data.BackwardsMappingData; import com.viaversion.viabackwards.api.rewriters.SoundRewriter; import com.viaversion.viabackwards.api.rewriters.TranslatableRewriter; -import com.viaversion.viabackwards.protocol.protocol1_14_4to1_15.data.ImmediateRespawn; -import com.viaversion.viabackwards.protocol.protocol1_14_4to1_15.packets.BlockItemPackets1_15; -import com.viaversion.viabackwards.protocol.protocol1_14_4to1_15.packets.EntityPackets1_15; +import com.viaversion.viabackwards.protocol.v1_15to1_14_4.data.ImmediateRespawn; +import com.viaversion.viabackwards.protocol.v1_15to1_14_4.rewriter.BlockItemPacketRewriter1_15; +import com.viaversion.viabackwards.protocol.v1_15to1_14_4.rewriter.EntityPacketRewriter1_15; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.RegistryType; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_15; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; -import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.data.entity.EntityTrackerBase; -import com.viaversion.viaversion.protocols.protocol1_14_4to1_14_3.ClientboundPackets1_14_4; -import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ServerboundPackets1_14; -import com.viaversion.viaversion.protocols.protocol1_15to1_14_4.ClientboundPackets1_15; -import com.viaversion.viaversion.protocols.protocol1_15to1_14_4.Protocol1_15To1_14_4; +import com.viaversion.viaversion.protocols.v1_13_2to1_14.packet.ServerboundPackets1_14; +import com.viaversion.viaversion.protocols.v1_14_3to1_14_4.packet.ClientboundPackets1_14_4; +import com.viaversion.viaversion.protocols.v1_14_4to1_15.Protocol1_14_4To1_15; +import com.viaversion.viaversion.protocols.v1_14_4to1_15.packet.ClientboundPackets1_15; import com.viaversion.viaversion.rewriter.ComponentRewriter; import com.viaversion.viaversion.rewriter.StatisticsRewriter; import com.viaversion.viaversion.rewriter.TagRewriter; -public class Protocol1_14_4To1_15 extends BackwardsProtocol { +public class Protocol1_15To1_14_4 extends BackwardsProtocol { - public static final BackwardsMappings MAPPINGS = new BackwardsMappings("1.15", "1.14", Protocol1_15To1_14_4.class); - private final EntityPackets1_15 entityRewriter = new EntityPackets1_15(this); - private final BlockItemPackets1_15 blockItemPackets = new BlockItemPackets1_15(this); + public static final BackwardsMappingData MAPPINGS = new BackwardsMappingData("1.15", "1.14", Protocol1_14_4To1_15.class); + private final EntityPacketRewriter1_15 entityRewriter = new EntityPacketRewriter1_15(this); + private final BlockItemPacketRewriter1_15 blockItemPackets = new BlockItemPacketRewriter1_15(this); private final TranslatableRewriter translatableRewriter = new TranslatableRewriter<>(this, ComponentRewriter.ReadType.JSON); private final TagRewriter tagRewriter = new TagRewriter<>(this); - public Protocol1_14_4To1_15() { + public Protocol1_15To1_14_4() { super(ClientboundPackets1_15.class, ClientboundPackets1_14_4.class, ServerboundPackets1_14.class, ServerboundPackets1_14.class); } @@ -55,38 +55,38 @@ public class Protocol1_14_4To1_15 extends BackwardsProtocol soundRewriter = new SoundRewriter<>(this); soundRewriter.registerSound(ClientboundPackets1_15.SOUND); - soundRewriter.registerSound(ClientboundPackets1_15.ENTITY_SOUND); - soundRewriter.registerNamedSound(ClientboundPackets1_15.NAMED_SOUND); + soundRewriter.registerSound(ClientboundPackets1_15.SOUND_ENTITY); + soundRewriter.registerNamedSound(ClientboundPackets1_15.CUSTOM_SOUND); soundRewriter.registerStopSound(ClientboundPackets1_15.STOP_SOUND); // Explosion - manually send an explosion sound - registerClientbound(ClientboundPackets1_15.EXPLOSION, new PacketHandlers() { + registerClientbound(ClientboundPackets1_15.EXPLODE, new PacketHandlers() { @Override public void register() { - map(Type.FLOAT); // x - map(Type.FLOAT); // y - map(Type.FLOAT); // z + map(Types.FLOAT); // x + map(Types.FLOAT); // y + map(Types.FLOAT); // z handler(wrapper -> { PacketWrapper soundPacket = wrapper.create(ClientboundPackets1_14_4.SOUND); - soundPacket.write(Type.VAR_INT, 243); // entity.generic.explode - soundPacket.write(Type.VAR_INT, 4); // blocks category - soundPacket.write(Type.INT, toEffectCoordinate(wrapper.get(Type.FLOAT, 0))); // x - soundPacket.write(Type.INT, toEffectCoordinate(wrapper.get(Type.FLOAT, 1))); // y - soundPacket.write(Type.INT, toEffectCoordinate(wrapper.get(Type.FLOAT, 2))); // z - soundPacket.write(Type.FLOAT, 4F); // volume - soundPacket.write(Type.FLOAT, 1F); // pitch - usually semi randomized by the server, but we don't really have to care about that - soundPacket.send(Protocol1_14_4To1_15.class); + soundPacket.write(Types.VAR_INT, 243); // entity.generic.explode + soundPacket.write(Types.VAR_INT, 4); // blocks category + soundPacket.write(Types.INT, toEffectCoordinate(wrapper.get(Types.FLOAT, 0))); // x + soundPacket.write(Types.INT, toEffectCoordinate(wrapper.get(Types.FLOAT, 1))); // y + soundPacket.write(Types.INT, toEffectCoordinate(wrapper.get(Types.FLOAT, 2))); // z + soundPacket.write(Types.FLOAT, 4F); // volume + soundPacket.write(Types.FLOAT, 1F); // pitch - usually semi randomized by the server, but we don't really have to care about that + soundPacket.send(Protocol1_15To1_14_4.class); }); } @@ -95,9 +95,9 @@ public class Protocol1_14_4To1_15 extends BackwardsProtocol(this).register(ClientboundPackets1_15.STATISTICS); + new StatisticsRewriter<>(this).register(ClientboundPackets1_15.AWARD_STATS); } @Override @@ -107,17 +107,17 @@ public class Protocol1_14_4To1_15 extends BackwardsProtocol. */ -package com.viaversion.viabackwards.protocol.protocol1_14_4to1_15.data; +package com.viaversion.viabackwards.protocol.v1_15to1_14_4.data; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_14; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_14_4to1_15/data/ImmediateRespawn.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_15to1_14_4/data/ImmediateRespawn.java similarity index 94% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_14_4to1_15/data/ImmediateRespawn.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_15to1_14_4/data/ImmediateRespawn.java index 8afd9504..12f2cfa8 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_14_4to1_15/data/ImmediateRespawn.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_15to1_14_4/data/ImmediateRespawn.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_14_4to1_15.data; +package com.viaversion.viabackwards.protocol.v1_15to1_14_4.data; import com.viaversion.viaversion.api.connection.StorableObject; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_14_4to1_15/packets/BlockItemPackets1_15.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_15to1_14_4/rewriter/BlockItemPacketRewriter1_15.java similarity index 58% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_14_4to1_15/packets/BlockItemPackets1_15.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_15to1_14_4/rewriter/BlockItemPacketRewriter1_15.java index b98c9789..185a126f 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_14_4to1_15/packets/BlockItemPackets1_15.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_15to1_14_4/rewriter/BlockItemPacketRewriter1_15.java @@ -15,10 +15,10 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_14_4to1_15.packets; +package com.viaversion.viabackwards.protocol.v1_15to1_14_4.rewriter; import com.viaversion.viabackwards.api.rewriters.BackwardsItemRewriter; -import com.viaversion.viabackwards.protocol.protocol1_14_4to1_15.Protocol1_14_4To1_15; +import com.viaversion.viabackwards.protocol.v1_15to1_14_4.Protocol1_15To1_14_4; import com.viaversion.viaversion.api.minecraft.chunks.Chunk; import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection; import com.viaversion.viaversion.api.minecraft.chunks.DataPalette; @@ -26,42 +26,43 @@ import com.viaversion.viaversion.api.minecraft.chunks.PaletteType; import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_14; import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_15; -import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ServerboundPackets1_14; -import com.viaversion.viaversion.protocols.protocol1_15to1_14_4.ClientboundPackets1_15; +import com.viaversion.viaversion.protocols.v1_13_2to1_14.packet.ServerboundPackets1_14; +import com.viaversion.viaversion.protocols.v1_14_4to1_15.packet.ClientboundPackets1_15; import com.viaversion.viaversion.rewriter.BlockRewriter; import com.viaversion.viaversion.rewriter.RecipeRewriter; -public class BlockItemPackets1_15 extends BackwardsItemRewriter { +public class BlockItemPacketRewriter1_15 extends BackwardsItemRewriter { - public BlockItemPackets1_15(Protocol1_14_4To1_15 protocol) { - super(protocol, Type.ITEM1_13_2, Type.ITEM1_13_2_SHORT_ARRAY); + public BlockItemPacketRewriter1_15(Protocol1_15To1_14_4 protocol) { + super(protocol, Types.ITEM1_13_2, Types.ITEM1_13_2_SHORT_ARRAY); } @Override protected void registerPackets() { BlockRewriter blockRewriter = BlockRewriter.for1_14(protocol); - new RecipeRewriter<>(protocol).register(ClientboundPackets1_15.DECLARE_RECIPES); + new RecipeRewriter<>(protocol).register(ClientboundPackets1_15.UPDATE_RECIPES); - protocol.registerServerbound(ServerboundPackets1_14.EDIT_BOOK, wrapper -> handleItemToServer(wrapper.user(), wrapper.passthrough(Type.ITEM1_13_2))); + protocol.registerServerbound(ServerboundPackets1_14.EDIT_BOOK, wrapper -> handleItemToServer(wrapper.user(), wrapper.passthrough(Types.ITEM1_13_2))); - registerSetCooldown(ClientboundPackets1_15.COOLDOWN); - registerWindowItems(ClientboundPackets1_15.WINDOW_ITEMS); - registerSetSlot(ClientboundPackets1_15.SET_SLOT); - registerTradeList(ClientboundPackets1_15.TRADE_LIST); - registerEntityEquipment(ClientboundPackets1_15.ENTITY_EQUIPMENT); - registerAdvancements(ClientboundPackets1_15.ADVANCEMENTS); - registerClickWindow(ServerboundPackets1_14.CLICK_WINDOW); - registerCreativeInvAction(ServerboundPackets1_14.CREATIVE_INVENTORY_ACTION); + registerCooldown(ClientboundPackets1_15.COOLDOWN); + registerSetContent(ClientboundPackets1_15.CONTAINER_SET_CONTENT); + registerSetSlot(ClientboundPackets1_15.CONTAINER_SET_SLOT); + registerMerchantOffers(ClientboundPackets1_15.MERCHANT_OFFERS); + registerSetEquippedItem(ClientboundPackets1_15.SET_EQUIPPED_ITEM); + registerAdvancements(ClientboundPackets1_15.UPDATE_ADVANCEMENTS); + registerContainerClick(ServerboundPackets1_14.CONTAINER_CLICK); + registerSetCreativeModeSlot(ServerboundPackets1_14.SET_CREATIVE_MODE_SLOT); - blockRewriter.registerAcknowledgePlayerDigging(ClientboundPackets1_15.ACKNOWLEDGE_PLAYER_DIGGING); - blockRewriter.registerBlockAction(ClientboundPackets1_15.BLOCK_ACTION); - blockRewriter.registerBlockChange(ClientboundPackets1_15.BLOCK_CHANGE); - blockRewriter.registerMultiBlockChange(ClientboundPackets1_15.MULTI_BLOCK_CHANGE); + blockRewriter.registerBlockBreakAck(ClientboundPackets1_15.BLOCK_BREAK_ACK); + blockRewriter.registerBlockEvent(ClientboundPackets1_15.BLOCK_EVENT); + blockRewriter.registerBlockUpdate(ClientboundPackets1_15.BLOCK_UPDATE); + blockRewriter.registerChunkBlocksUpdate(ClientboundPackets1_15.CHUNK_BLOCKS_UPDATE); - protocol.registerClientbound(ClientboundPackets1_15.CHUNK_DATA, wrapper -> { + protocol.registerClientbound(ClientboundPackets1_15.LEVEL_CHUNK, wrapper -> { Chunk chunk = wrapper.read(ChunkType1_15.TYPE); wrapper.write(ChunkType1_14.TYPE, chunk); @@ -102,34 +103,34 @@ public class BlockItemPackets1_15 extends BackwardsItemRewriter { - int id = wrapper.get(Type.INT, 0); + int id = wrapper.get(Types.INT, 0); if (id == 3 || id == 23) { - int data = wrapper.passthrough(Type.VAR_INT); - wrapper.set(Type.VAR_INT, 0, protocol.getMappingData().getNewBlockStateId(data)); + int data = wrapper.passthrough(Types.VAR_INT); + wrapper.set(Types.VAR_INT, 0, protocol.getMappingData().getNewBlockStateId(data)); } else if (id == 32) { - Item item = handleItemToClient(wrapper.user(), wrapper.read(Type.ITEM1_13_2)); - wrapper.write(Type.ITEM1_13_2, item); + Item item = handleItemToClient(wrapper.user(), wrapper.read(Types.ITEM1_13_2)); + wrapper.write(Types.ITEM1_13_2, item); } int mappedId = protocol.getMappingData().getNewParticleId(id); if (id != mappedId) { - wrapper.set(Type.INT, 0, mappedId); + wrapper.set(Types.INT, 0, mappedId); } }); } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/v1_15to1_14_4/rewriter/EntityPacketRewriter1_15.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_15to1_14_4/rewriter/EntityPacketRewriter1_15.java new file mode 100644 index 00000000..dc63bdae --- /dev/null +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_15to1_14_4/rewriter/EntityPacketRewriter1_15.java @@ -0,0 +1,228 @@ +/* + * This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards + * Copyright (C) 2016-2024 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.viabackwards.protocol.v1_15to1_14_4.rewriter; + +import com.viaversion.viabackwards.api.rewriters.EntityRewriter; +import com.viaversion.viabackwards.protocol.v1_15to1_14_4.Protocol1_15To1_14_4; +import com.viaversion.viabackwards.protocol.v1_15to1_14_4.data.EntityTypeMapping; +import com.viaversion.viabackwards.protocol.v1_15to1_14_4.data.ImmediateRespawn; +import com.viaversion.viaversion.api.minecraft.entities.EntityType; +import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_15; +import com.viaversion.viaversion.api.minecraft.entitydata.EntityData; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.api.type.types.version.Types1_14; +import com.viaversion.viaversion.protocols.v1_13_2to1_14.packet.ServerboundPackets1_14; +import com.viaversion.viaversion.protocols.v1_14_4to1_15.packet.ClientboundPackets1_15; +import java.util.ArrayList; + +public class EntityPacketRewriter1_15 extends EntityRewriter { + + public EntityPacketRewriter1_15(Protocol1_15To1_14_4 protocol) { + super(protocol); + } + + @Override + protected void registerPackets() { + protocol.registerClientbound(ClientboundPackets1_15.SET_HEALTH, wrapper -> { + float health = wrapper.passthrough(Types.FLOAT); + if (health > 0) return; + if (!wrapper.user().get(ImmediateRespawn.class).isImmediateRespawn()) return; + + // Instantly request respawn when 1.15 gamerule is set + PacketWrapper statusPacket = wrapper.create(ServerboundPackets1_14.CLIENT_COMMAND); + statusPacket.write(Types.VAR_INT, 0); + statusPacket.sendToServer(Protocol1_15To1_14_4.class); + }); + + protocol.registerClientbound(ClientboundPackets1_15.GAME_EVENT, new PacketHandlers() { + @Override + public void register() { + map(Types.UNSIGNED_BYTE); + map(Types.FLOAT); + handler(wrapper -> { + if (wrapper.get(Types.UNSIGNED_BYTE, 0) == 11) { + wrapper.user().get(ImmediateRespawn.class).setImmediateRespawn(wrapper.get(Types.FLOAT, 0) == 1); + } + }); + } + }); + + registerTrackerWithData(ClientboundPackets1_15.ADD_ENTITY, EntityTypes1_15.FALLING_BLOCK); + + protocol.registerClientbound(ClientboundPackets1_15.ADD_MOB, new PacketHandlers() { + @Override + public void register() { + map(Types.VAR_INT); // 0 - Entity ID + map(Types.UUID); // 1 - Entity UUID + map(Types.VAR_INT); // 2 - Entity Type + map(Types.DOUBLE); // 3 - X + map(Types.DOUBLE); // 4 - Y + map(Types.DOUBLE); // 5 - Z + map(Types.BYTE); // 6 - Yaw + map(Types.BYTE); // 7 - Pitch + map(Types.BYTE); // 8 - Head Pitch + map(Types.SHORT); // 9 - Velocity X + map(Types.SHORT); // 10 - Velocity Y + map(Types.SHORT); // 11 - Velocity Z + handler(wrapper -> wrapper.write(Types1_14.ENTITY_DATA_LIST, new ArrayList<>())); // Metadata is no longer sent in 1.15, so we have to send an empty one + + handler(wrapper -> { + int type = wrapper.get(Types.VAR_INT, 1); + EntityType entityType = EntityTypes1_15.getTypeFromId(type); + tracker(wrapper.user()).addEntity(wrapper.get(Types.VAR_INT, 0), entityType); + wrapper.set(Types.VAR_INT, 1, EntityTypeMapping.getOldEntityId(type)); + }); + } + }); + + protocol.registerClientbound(ClientboundPackets1_15.RESPAWN, new PacketHandlers() { + @Override + public void register() { + map(Types.INT); + read(Types.LONG); // Seed + } + }); + + protocol.registerClientbound(ClientboundPackets1_15.LOGIN, new PacketHandlers() { + @Override + public void register() { + map(Types.INT); // 0 - Entity ID + map(Types.UNSIGNED_BYTE); // 1 - Gamemode + map(Types.INT); // 2 - Dimension + + read(Types.LONG); // Seed + + map(Types.UNSIGNED_BYTE); // 3 - Max Players + map(Types.STRING); // 4 - Level Type + map(Types.VAR_INT); // 5 - View Distance + map(Types.BOOLEAN); // 6 - Reduce Debug Info + + handler(getTrackerHandler(EntityTypes1_15.PLAYER, Types.INT)); + + handler(wrapper -> { + boolean immediateRespawn = !wrapper.read(Types.BOOLEAN); // Inverted + wrapper.user().get(ImmediateRespawn.class).setImmediateRespawn(immediateRespawn); + }); + } + }); + + registerTracker(ClientboundPackets1_15.ADD_EXPERIENCE_ORB, EntityTypes1_15.EXPERIENCE_ORB); + registerTracker(ClientboundPackets1_15.ADD_GLOBAL_ENTITY, EntityTypes1_15.LIGHTNING_BOLT); + registerTracker(ClientboundPackets1_15.ADD_PAINTING, EntityTypes1_15.PAINTING); + + protocol.registerClientbound(ClientboundPackets1_15.ADD_PLAYER, new PacketHandlers() { + @Override + public void register() { + map(Types.VAR_INT); // 0 - Entity ID + map(Types.UUID); // 1 - Player UUID + map(Types.DOUBLE); // 2 - X + map(Types.DOUBLE); // 3 - Y + map(Types.DOUBLE); // 4 - Z + map(Types.BYTE); // 5 - Yaw + map(Types.BYTE); // 6 - Pitch + handler(wrapper -> wrapper.write(Types1_14.ENTITY_DATA_LIST, new ArrayList<>())); // Metadata is no longer sent in 1.15, so we have to send an empty one + + handler(getTrackerHandler(EntityTypes1_15.PLAYER, Types.VAR_INT)); + } + }); + + registerRemoveEntities(ClientboundPackets1_15.REMOVE_ENTITIES); + registerSetEntityData(ClientboundPackets1_15.SET_ENTITY_DATA, Types1_14.ENTITY_DATA_LIST); + + // Attributes (get rid of generic.flyingSpeed for the Bee remap) + protocol.registerClientbound(ClientboundPackets1_15.UPDATE_ATTRIBUTES, new PacketHandlers() { + @Override + public void register() { + map(Types.VAR_INT); + map(Types.INT); + handler(wrapper -> { + int entityId = wrapper.get(Types.VAR_INT, 0); + EntityType entityType = tracker(wrapper.user()).entityType(entityId); + if (entityType != EntityTypes1_15.BEE) return; + + int size = wrapper.get(Types.INT, 0); + int newSize = size; + for (int i = 0; i < size; i++) { + String key = wrapper.read(Types.STRING); + if (key.equals("generic.flyingSpeed")) { + newSize--; + wrapper.read(Types.DOUBLE); + int modSize = wrapper.read(Types.VAR_INT); + for (int j = 0; j < modSize; j++) { + wrapper.read(Types.UUID); + wrapper.read(Types.DOUBLE); + wrapper.read(Types.BYTE); + } + } else { + wrapper.write(Types.STRING, key); + wrapper.passthrough(Types.DOUBLE); + int modSize = wrapper.passthrough(Types.VAR_INT); + for (int j = 0; j < modSize; j++) { + wrapper.passthrough(Types.UUID); + wrapper.passthrough(Types.DOUBLE); + wrapper.passthrough(Types.BYTE); + } + } + } + + if (newSize != size) { + wrapper.set(Types.INT, 0, newSize); + } + }); + } + }); + } + + @Override + protected void registerRewrites() { + registerMetaTypeHandler(Types1_14.ENTITY_DATA_TYPES.itemType, null, Types1_14.ENTITY_DATA_TYPES.optionalBlockStateType, Types1_14.ENTITY_DATA_TYPES.particleType, + Types1_14.ENTITY_DATA_TYPES.componentType, Types1_14.ENTITY_DATA_TYPES.optionalComponentType); + + filter().type(EntityTypes1_15.LIVING_ENTITY).removeIndex(12); + + filter().type(EntityTypes1_15.BEE).cancel(15); + filter().type(EntityTypes1_15.BEE).cancel(16); + + mapEntityTypeWithData(EntityTypes1_15.BEE, EntityTypes1_15.PUFFERFISH).jsonName().spawnMetadata(storage -> { + storage.add(new EntityData(14, Types1_14.ENTITY_DATA_TYPES.booleanType, false)); + storage.add(new EntityData(15, Types1_14.ENTITY_DATA_TYPES.varIntType, 2)); + }); + + filter().type(EntityTypes1_15.ENDERMAN).cancel(16); + filter().type(EntityTypes1_15.TRIDENT).cancel(10); + + // Redundant health removed in 1.15 + filter().type(EntityTypes1_15.WOLF).addIndex(17); + filter().type(EntityTypes1_15.WOLF).index(8).handler((event, meta) -> { + event.createExtraData(new EntityData(17/*WOLF_HEALTH*/, Types1_14.ENTITY_DATA_TYPES.floatType, event.data().value())); + }); + } + + @Override + public EntityType typeFromId(int typeId) { + return EntityTypes1_15.getTypeFromId(typeId); + } + + @Override + public int newEntityId(final int newId) { + return EntityTypeMapping.getOldEntityId(newId); + } +} diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16to1_16_1/Protocol1_16To1_16_1.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16_1to1_16/Protocol1_16_1To1_16.java similarity index 79% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16to1_16_1/Protocol1_16To1_16_1.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_16_1to1_16/Protocol1_16_1To1_16.java index 7aba21e4..25fe036a 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16to1_16_1/Protocol1_16To1_16_1.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16_1to1_16/Protocol1_16_1To1_16.java @@ -15,11 +15,11 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_16to1_16_1; +package com.viaversion.viabackwards.protocol.v1_16_1to1_16; import com.viaversion.viabackwards.api.BackwardsProtocol; -import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.ClientboundPackets1_16; -import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.ServerboundPackets1_16; +import com.viaversion.viaversion.protocols.v1_15_2to1_16.packet.ClientboundPackets1_16; +import com.viaversion.viaversion.protocols.v1_15_2to1_16.packet.ServerboundPackets1_16; -public class Protocol1_16To1_16_1 extends BackwardsProtocol { +public class Protocol1_16_1To1_16 extends BackwardsProtocol { } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_1to1_16_2/Protocol1_16_1To1_16_2.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16_2to1_16_1/Protocol1_16_2To1_16_1.java similarity index 57% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_1to1_16_2/Protocol1_16_1To1_16_2.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_16_2to1_16_1/Protocol1_16_2To1_16_1.java index 300905b1..cf6f020a 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_1to1_16_2/Protocol1_16_1To1_16_2.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16_2to1_16_1/Protocol1_16_2To1_16_1.java @@ -15,41 +15,41 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_16_1to1_16_2; +package com.viaversion.viabackwards.protocol.v1_16_2to1_16_1; import com.viaversion.viabackwards.api.BackwardsProtocol; -import com.viaversion.viabackwards.api.data.BackwardsMappings; +import com.viaversion.viabackwards.api.data.BackwardsMappingData; import com.viaversion.viabackwards.api.rewriters.SoundRewriter; import com.viaversion.viabackwards.api.rewriters.TranslatableRewriter; -import com.viaversion.viabackwards.protocol.protocol1_16_1to1_16_2.data.CommandRewriter1_16_2; -import com.viaversion.viabackwards.protocol.protocol1_16_1to1_16_2.packets.BlockItemPackets1_16_2; -import com.viaversion.viabackwards.protocol.protocol1_16_1to1_16_2.packets.EntityPackets1_16_2; -import com.viaversion.viabackwards.protocol.protocol1_16_1to1_16_2.storage.BiomeStorage; +import com.viaversion.viabackwards.protocol.v1_16_2to1_16_1.data.CommandRewriter1_16_2; +import com.viaversion.viabackwards.protocol.v1_16_2to1_16_1.rewriter.BlockItemPacketRewriter1_16_2; +import com.viaversion.viabackwards.protocol.v1_16_2to1_16_1.rewriter.EntityPacketRewriter1_16_2; +import com.viaversion.viabackwards.protocol.v1_16_2to1_16_1.storage.BiomeStorage; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.RegistryType; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_16_2; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.data.entity.EntityTrackerBase; import com.viaversion.viaversion.libs.gson.JsonElement; -import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ClientboundPackets1_16_2; -import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.Protocol1_16_2To1_16_1; -import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ServerboundPackets1_16_2; -import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.ClientboundPackets1_16; -import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.ServerboundPackets1_16; +import com.viaversion.viaversion.protocols.v1_15_2to1_16.packet.ClientboundPackets1_16; +import com.viaversion.viaversion.protocols.v1_15_2to1_16.packet.ServerboundPackets1_16; +import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.Protocol1_16_1To1_16_2; +import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.packet.ClientboundPackets1_16_2; +import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.packet.ServerboundPackets1_16_2; import com.viaversion.viaversion.rewriter.ComponentRewriter; import com.viaversion.viaversion.rewriter.StatisticsRewriter; import com.viaversion.viaversion.rewriter.TagRewriter; -public class Protocol1_16_1To1_16_2 extends BackwardsProtocol { +public class Protocol1_16_2To1_16_1 extends BackwardsProtocol { - public static final BackwardsMappings MAPPINGS = new BackwardsMappings("1.16.2", "1.16", Protocol1_16_2To1_16_1.class); - private final EntityPackets1_16_2 entityRewriter = new EntityPackets1_16_2(this); - private final BlockItemPackets1_16_2 blockItemPackets = new BlockItemPackets1_16_2(this); + public static final BackwardsMappingData MAPPINGS = new BackwardsMappingData("1.16.2", "1.16", Protocol1_16_1To1_16_2.class); + private final EntityPacketRewriter1_16_2 entityRewriter = new EntityPacketRewriter1_16_2(this); + private final BlockItemPacketRewriter1_16_2 blockItemPackets = new BlockItemPacketRewriter1_16_2(this); private final TranslatableRewriter translatableRewriter = new TranslatableRewriter<>(this, ComponentRewriter.ReadType.JSON); private final TagRewriter tagRewriter = new TagRewriter<>(this); - public Protocol1_16_1To1_16_2() { + public Protocol1_16_2To1_16_1() { super(ClientboundPackets1_16_2.class, ClientboundPackets1_16.class, ServerboundPackets1_16_2.class, ServerboundPackets1_16.class); } @@ -57,41 +57,41 @@ public class Protocol1_16_1To1_16_2 extends BackwardsProtocol soundRewriter = new SoundRewriter<>(this); soundRewriter.registerSound(ClientboundPackets1_16_2.SOUND); - soundRewriter.registerSound(ClientboundPackets1_16_2.ENTITY_SOUND); - soundRewriter.registerNamedSound(ClientboundPackets1_16_2.NAMED_SOUND); + soundRewriter.registerSound(ClientboundPackets1_16_2.SOUND_ENTITY); + soundRewriter.registerNamedSound(ClientboundPackets1_16_2.CUSTOM_SOUND); soundRewriter.registerStopSound(ClientboundPackets1_16_2.STOP_SOUND); - registerClientbound(ClientboundPackets1_16_2.CHAT_MESSAGE, wrapper -> { - JsonElement message = wrapper.passthrough(Type.COMPONENT); + registerClientbound(ClientboundPackets1_16_2.CHAT, wrapper -> { + JsonElement message = wrapper.passthrough(Types.COMPONENT); translatableRewriter.processText(wrapper.user(), message); - byte position = wrapper.passthrough(Type.BYTE); + byte position = wrapper.passthrough(Types.BYTE); if (position == 2) { // https://bugs.mojang.com/browse/MC-119145 wrapper.clearPacket(); - wrapper.setPacketType(ClientboundPackets1_16.TITLE); - wrapper.write(Type.VAR_INT, 2); - wrapper.write(Type.COMPONENT, message); + wrapper.setPacketType(ClientboundPackets1_16.SET_TITLES); + wrapper.write(Types.VAR_INT, 2); + wrapper.write(Types.COMPONENT, message); } }); // Recipe book data has been split into 2 separate packets - registerServerbound(ServerboundPackets1_16.RECIPE_BOOK_DATA, wrapper -> { - int type = wrapper.read(Type.VAR_INT); + registerServerbound(ServerboundPackets1_16.RECIPE_BOOK_UPDATE, ServerboundPackets1_16_2.RECIPE_BOOK_CHANGE_SETTINGS, wrapper -> { + int type = wrapper.read(Types.VAR_INT); if (type == 0) { // Shown, change to its own packet - wrapper.passthrough(Type.STRING); // Recipe - wrapper.setPacketType(ServerboundPackets1_16_2.SEEN_RECIPE); + wrapper.passthrough(Types.STRING); // Recipe + wrapper.setPacketType(ServerboundPackets1_16_2.RECIPE_BOOK_SEEN_RECIPE); } else { wrapper.cancel(); @@ -102,20 +102,20 @@ public class Protocol1_16_1To1_16_2 extends BackwardsProtocol(this).register(ClientboundPackets1_16_2.STATISTICS); + new StatisticsRewriter<>(this).register(ClientboundPackets1_16_2.AWARD_STATS); } private static void sendSeenRecipePacket(int recipeType, PacketWrapper wrapper) { - boolean open = wrapper.read(Type.BOOLEAN); - boolean filter = wrapper.read(Type.BOOLEAN); + boolean open = wrapper.read(Types.BOOLEAN); + boolean filter = wrapper.read(Types.BOOLEAN); - PacketWrapper newPacket = wrapper.create(ServerboundPackets1_16_2.RECIPE_BOOK_DATA); - newPacket.write(Type.VAR_INT, recipeType); - newPacket.write(Type.BOOLEAN, open); - newPacket.write(Type.BOOLEAN, filter); - newPacket.sendToServer(Protocol1_16_1To1_16_2.class); + PacketWrapper newPacket = wrapper.create(ServerboundPackets1_16_2.RECIPE_BOOK_CHANGE_SETTINGS); + newPacket.write(Types.VAR_INT, recipeType); + newPacket.write(Types.BOOLEAN, open); + newPacket.write(Types.BOOLEAN, filter); + newPacket.sendToServer(Protocol1_16_2To1_16_1.class); } @Override @@ -130,17 +130,17 @@ public class Protocol1_16_1To1_16_2 extends BackwardsProtocol. */ -package com.viaversion.viabackwards.protocol.protocol1_16_1to1_16_2.data; +package com.viaversion.viabackwards.protocol.v1_16_2to1_16_1.data; import com.viaversion.viabackwards.ViaBackwards; import com.viaversion.viabackwards.api.data.BackwardsMappingDataLoader; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_1to1_16_2/data/CommandRewriter1_16_2.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16_2to1_16_1/data/CommandRewriter1_16_2.java similarity index 76% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_1to1_16_2/data/CommandRewriter1_16_2.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_16_2to1_16_1/data/CommandRewriter1_16_2.java index da7fa0b2..c98f4561 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_1to1_16_2/data/CommandRewriter1_16_2.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16_2to1_16_1/data/CommandRewriter1_16_2.java @@ -15,20 +15,20 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_16_1to1_16_2.data; +package com.viaversion.viabackwards.protocol.v1_16_2to1_16_1.data; -import com.viaversion.viabackwards.protocol.protocol1_16_1to1_16_2.Protocol1_16_1To1_16_2; -import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ClientboundPackets1_16_2; +import com.viaversion.viabackwards.protocol.v1_16_2to1_16_1.Protocol1_16_2To1_16_1; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.packet.ClientboundPackets1_16_2; import com.viaversion.viaversion.rewriter.CommandRewriter; import org.checkerframework.checker.nullness.qual.Nullable; public class CommandRewriter1_16_2 extends CommandRewriter { - public CommandRewriter1_16_2(Protocol1_16_1To1_16_2 protocol) { + public CommandRewriter1_16_2(Protocol1_16_2To1_16_1 protocol) { super(protocol); - this.parserHandlers.put("minecraft:angle", wrapper -> wrapper.write(Type.VAR_INT, 0)); // Single word + this.parserHandlers.put("minecraft:angle", wrapper -> wrapper.write(Types.VAR_INT, 0)); // Single word } @Override diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_1to1_16_2/packets/BlockItemPackets1_16_2.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16_2to1_16_1/rewriter/BlockItemPacketRewriter1_16_2.java similarity index 62% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_1to1_16_2/packets/BlockItemPackets1_16_2.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_16_2to1_16_1/rewriter/BlockItemPacketRewriter1_16_2.java index be554bdc..b4356445 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_1to1_16_2/packets/BlockItemPackets1_16_2.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16_2to1_16_1/rewriter/BlockItemPacketRewriter1_16_2.java @@ -15,10 +15,10 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_16_1to1_16_2.packets; +package com.viaversion.viabackwards.protocol.v1_16_2to1_16_1.rewriter; import com.viaversion.viabackwards.api.rewriters.BackwardsItemRewriter; -import com.viaversion.viabackwards.protocol.protocol1_16_1to1_16_2.Protocol1_16_1To1_16_2; +import com.viaversion.viabackwards.protocol.v1_16_2to1_16_1.Protocol1_16_2To1_16_1; import com.viaversion.viaversion.api.minecraft.BlockChangeRecord; import com.viaversion.viaversion.api.minecraft.BlockChangeRecord1_8; import com.viaversion.viaversion.api.minecraft.chunks.Chunk; @@ -27,54 +27,56 @@ import com.viaversion.viaversion.api.minecraft.chunks.DataPalette; import com.viaversion.viaversion.api.minecraft.chunks.PaletteType; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_16; import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_16_2; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.IntArrayTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.ListTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag; -import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ClientboundPackets1_16_2; -import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.ServerboundPackets1_16; +import com.viaversion.viaversion.protocols.v1_15_2to1_16.packet.ClientboundPackets1_16; +import com.viaversion.viaversion.protocols.v1_15_2to1_16.packet.ServerboundPackets1_16; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.IntArrayTag; +import com.viaversion.nbt.tag.ListTag; +import com.viaversion.nbt.tag.StringTag; +import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.packet.ClientboundPackets1_16_2; import com.viaversion.viaversion.rewriter.BlockRewriter; import com.viaversion.viaversion.rewriter.RecipeRewriter; -public class BlockItemPackets1_16_2 extends BackwardsItemRewriter { +public class BlockItemPacketRewriter1_16_2 extends BackwardsItemRewriter { - public BlockItemPackets1_16_2(Protocol1_16_1To1_16_2 protocol) { - super(protocol, Type.ITEM1_13_2, Type.ITEM1_13_2_SHORT_ARRAY); + public BlockItemPacketRewriter1_16_2(Protocol1_16_2To1_16_1 protocol) { + super(protocol, Types.ITEM1_13_2, Types.ITEM1_13_2_SHORT_ARRAY); } @Override protected void registerPackets() { BlockRewriter blockRewriter = BlockRewriter.for1_14(protocol); - new RecipeRewriter<>(protocol).register(ClientboundPackets1_16_2.DECLARE_RECIPES); + new RecipeRewriter<>(protocol).register(ClientboundPackets1_16_2.UPDATE_RECIPES); - registerSetCooldown(ClientboundPackets1_16_2.COOLDOWN); - registerWindowItems(ClientboundPackets1_16_2.WINDOW_ITEMS); - registerSetSlot(ClientboundPackets1_16_2.SET_SLOT); - registerEntityEquipmentArray(ClientboundPackets1_16_2.ENTITY_EQUIPMENT); - registerTradeList(ClientboundPackets1_16_2.TRADE_LIST); - registerAdvancements(ClientboundPackets1_16_2.ADVANCEMENTS); + registerCooldown(ClientboundPackets1_16_2.COOLDOWN); + registerSetContent(ClientboundPackets1_16_2.CONTAINER_SET_CONTENT); + registerSetSlot(ClientboundPackets1_16_2.CONTAINER_SET_SLOT); + registerSetEquipment(ClientboundPackets1_16_2.SET_EQUIPMENT); + registerMerchantOffers(ClientboundPackets1_16_2.MERCHANT_OFFERS); + registerAdvancements(ClientboundPackets1_16_2.UPDATE_ADVANCEMENTS); - protocol.registerClientbound(ClientboundPackets1_16_2.UNLOCK_RECIPES, wrapper -> { - wrapper.passthrough(Type.VAR_INT); - wrapper.passthrough(Type.BOOLEAN); // Open - wrapper.passthrough(Type.BOOLEAN); // Filter - wrapper.passthrough(Type.BOOLEAN); // Furnace Open - wrapper.passthrough(Type.BOOLEAN); // Filter furnace + protocol.registerClientbound(ClientboundPackets1_16_2.RECIPE, wrapper -> { + wrapper.passthrough(Types.VAR_INT); + wrapper.passthrough(Types.BOOLEAN); // Open + wrapper.passthrough(Types.BOOLEAN); // Filter + wrapper.passthrough(Types.BOOLEAN); // Furnace Open + wrapper.passthrough(Types.BOOLEAN); // Filter furnace // Blast furnace / smoker - wrapper.read(Type.BOOLEAN); - wrapper.read(Type.BOOLEAN); - wrapper.read(Type.BOOLEAN); - wrapper.read(Type.BOOLEAN); + wrapper.read(Types.BOOLEAN); + wrapper.read(Types.BOOLEAN); + wrapper.read(Types.BOOLEAN); + wrapper.read(Types.BOOLEAN); }); - blockRewriter.registerAcknowledgePlayerDigging(ClientboundPackets1_16_2.ACKNOWLEDGE_PLAYER_DIGGING); - blockRewriter.registerBlockAction(ClientboundPackets1_16_2.BLOCK_ACTION); - blockRewriter.registerBlockChange(ClientboundPackets1_16_2.BLOCK_CHANGE); + blockRewriter.registerBlockBreakAck(ClientboundPackets1_16_2.BLOCK_BREAK_ACK); + blockRewriter.registerBlockEvent(ClientboundPackets1_16_2.BLOCK_EVENT); + blockRewriter.registerBlockUpdate(ClientboundPackets1_16_2.BLOCK_UPDATE); - protocol.registerClientbound(ClientboundPackets1_16_2.CHUNK_DATA, wrapper -> { + protocol.registerClientbound(ClientboundPackets1_16_2.LEVEL_CHUNK, wrapper -> { Chunk chunk = wrapper.read(ChunkType1_16_2.TYPE); wrapper.write(ChunkType1_16.TYPE, chunk); @@ -102,24 +104,24 @@ public class BlockItemPackets1_16_2 extends BackwardsItemRewriter handleBlockEntity(wrapper.passthrough(Type.NAMED_COMPOUND_TAG))); + map(Types.BLOCK_POSITION1_14); + map(Types.UNSIGNED_BYTE); + handler(wrapper -> handleBlockEntity(wrapper.passthrough(Types.NAMED_COMPOUND_TAG))); } }); - protocol.registerClientbound(ClientboundPackets1_16_2.MULTI_BLOCK_CHANGE, wrapper -> { - long chunkPosition = wrapper.read(Type.LONG); - wrapper.read(Type.BOOLEAN); // Ignore old light data + protocol.registerClientbound(ClientboundPackets1_16_2.SECTION_BLOCKS_UPDATE, ClientboundPackets1_16.CHUNK_BLOCKS_UPDATE, wrapper -> { + long chunkPosition = wrapper.read(Types.LONG); + wrapper.read(Types.BOOLEAN); // Ignore old light data int chunkX = (int) (chunkPosition >> 42); int chunkY = (int) (chunkPosition << 44 >> 44); int chunkZ = (int) (chunkPosition << 22 >> 42); - wrapper.write(Type.INT, chunkX); - wrapper.write(Type.INT, chunkZ); + wrapper.write(Types.INT, chunkX); + wrapper.write(Types.INT, chunkZ); - BlockChangeRecord[] blockChangeRecord = wrapper.read(Type.VAR_LONG_BLOCK_CHANGE_RECORD_ARRAY); - wrapper.write(Type.BLOCK_CHANGE_RECORD_ARRAY, blockChangeRecord); + BlockChangeRecord[] blockChangeRecord = wrapper.read(Types.VAR_LONG_BLOCK_CHANGE_ARRAY); + wrapper.write(Types.BLOCK_CHANGE_ARRAY, blockChangeRecord); for (int i = 0; i < blockChangeRecord.length; i++) { BlockChangeRecord record = blockChangeRecord[i]; int blockId = protocol.getMappingData().getNewBlockStateId(record.getBlockId()); @@ -128,13 +130,13 @@ public class BlockItemPackets1_16_2 extends BackwardsItemRewriter handleItemToServer(wrapper.user(), wrapper.passthrough(Type.ITEM1_13_2))); + registerContainerClick(ServerboundPackets1_16.CONTAINER_CLICK); + registerSetCreativeModeSlot(ServerboundPackets1_16.SET_CREATIVE_MODE_SLOT); + protocol.registerServerbound(ServerboundPackets1_16.EDIT_BOOK, wrapper -> handleItemToServer(wrapper.user(), wrapper.passthrough(Types.ITEM1_13_2))); } private void handleBlockEntity(CompoundTag tag) { diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_1to1_16_2/packets/EntityPackets1_16_2.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16_2to1_16_1/rewriter/EntityPacketRewriter1_16_2.java similarity index 60% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_1to1_16_2/packets/EntityPackets1_16_2.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_16_2to1_16_1/rewriter/EntityPacketRewriter1_16_2.java index 6915eaf7..5f6b64d5 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_1to1_16_2/packets/EntityPackets1_16_2.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16_2to1_16_1/rewriter/EntityPacketRewriter1_16_2.java @@ -15,64 +15,65 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_16_1to1_16_2.packets; +package com.viaversion.viabackwards.protocol.v1_16_2to1_16_1.rewriter; import com.google.common.collect.Sets; import com.viaversion.viabackwards.ViaBackwards; import com.viaversion.viabackwards.api.rewriters.EntityRewriter; -import com.viaversion.viabackwards.protocol.protocol1_16_1to1_16_2.Protocol1_16_1To1_16_2; -import com.viaversion.viabackwards.protocol.protocol1_16_1to1_16_2.storage.BiomeStorage; +import com.viaversion.viabackwards.protocol.v1_16_2to1_16_1.Protocol1_16_2To1_16_1; +import com.viaversion.viabackwards.protocol.v1_16_2to1_16_1.storage.BiomeStorage; import com.viaversion.viaversion.api.minecraft.entities.EntityType; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_16_2; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.version.Types1_16; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.ListTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.NumberTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag; -import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ClientboundPackets1_16_2; -import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.packets.EntityPackets; +import com.viaversion.viaversion.protocols.v1_15_2to1_16.rewriter.EntityPacketRewriter1_16; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.ListTag; +import com.viaversion.nbt.tag.NumberTag; +import com.viaversion.nbt.tag.StringTag; +import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.packet.ClientboundPackets1_16_2; import com.viaversion.viaversion.util.Key; import com.viaversion.viaversion.util.TagUtil; import java.util.Set; -public class EntityPackets1_16_2 extends EntityRewriter { +public class EntityPacketRewriter1_16_2 extends EntityRewriter { private final Set oldDimensions = Sets.newHashSet("minecraft:overworld", "minecraft:the_nether", "minecraft:the_end"); private boolean warned; - public EntityPackets1_16_2(Protocol1_16_1To1_16_2 protocol) { + public EntityPacketRewriter1_16_2(Protocol1_16_2To1_16_1 protocol) { super(protocol); } @Override protected void registerPackets() { - registerTrackerWithData(ClientboundPackets1_16_2.SPAWN_ENTITY, EntityTypes1_16_2.FALLING_BLOCK); - registerSpawnTracker(ClientboundPackets1_16_2.SPAWN_MOB); - registerTracker(ClientboundPackets1_16_2.SPAWN_EXPERIENCE_ORB, EntityTypes1_16_2.EXPERIENCE_ORB); - registerTracker(ClientboundPackets1_16_2.SPAWN_PAINTING, EntityTypes1_16_2.PAINTING); - registerTracker(ClientboundPackets1_16_2.SPAWN_PLAYER, EntityTypes1_16_2.PLAYER); - registerRemoveEntities(ClientboundPackets1_16_2.DESTROY_ENTITIES); - registerMetadataRewriter(ClientboundPackets1_16_2.ENTITY_METADATA, Types1_16.METADATA_LIST); + registerTrackerWithData(ClientboundPackets1_16_2.ADD_ENTITY, EntityTypes1_16_2.FALLING_BLOCK); + registerSpawnTracker(ClientboundPackets1_16_2.ADD_MOB); + registerTracker(ClientboundPackets1_16_2.ADD_EXPERIENCE_ORB, EntityTypes1_16_2.EXPERIENCE_ORB); + registerTracker(ClientboundPackets1_16_2.ADD_PAINTING, EntityTypes1_16_2.PAINTING); + registerTracker(ClientboundPackets1_16_2.ADD_PLAYER, EntityTypes1_16_2.PLAYER); + registerRemoveEntities(ClientboundPackets1_16_2.REMOVE_ENTITIES); + registerSetEntityData(ClientboundPackets1_16_2.SET_ENTITY_DATA, Types1_16.ENTITY_DATA_LIST); - protocol.registerClientbound(ClientboundPackets1_16_2.JOIN_GAME, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_16_2.LOGIN, new PacketHandlers() { @Override public void register() { - map(Type.INT); // Entity ID + map(Types.INT); // Entity ID handler(wrapper -> { - boolean hardcore = wrapper.read(Type.BOOLEAN); - short gamemode = wrapper.read(Type.BYTE); + boolean hardcore = wrapper.read(Types.BOOLEAN); + short gamemode = wrapper.read(Types.BYTE); if (hardcore) { gamemode |= 0x08; } - wrapper.write(Type.UNSIGNED_BYTE, gamemode); + wrapper.write(Types.UNSIGNED_BYTE, gamemode); }); - map(Type.BYTE); // Previous Gamemode - map(Type.STRING_ARRAY); // World List + map(Types.BYTE); // Previous Gamemode + map(Types.STRING_ARRAY); // World List handler(wrapper -> { - CompoundTag registry = wrapper.read(Type.NAMED_COMPOUND_TAG); + CompoundTag registry = wrapper.read(Types.NAMED_COMPOUND_TAG); if (wrapper.user().getProtocolInfo().protocolVersion().olderThanOrEqualTo(ProtocolVersion.v1_15_2)) { // Store biomes for <1.16 client handling ListTag biomes = TagUtil.getRegistryEntries(registry, "worldgen/biome"); @@ -89,25 +90,25 @@ public class EntityPackets1_16_2 extends EntityRewriter { - int maxPlayers = wrapper.read(Type.VAR_INT); - wrapper.write(Type.UNSIGNED_BYTE, (short) Math.min(maxPlayers, 255)); + int maxPlayers = wrapper.read(Types.VAR_INT); + wrapper.write(Types.UNSIGNED_BYTE, (short) Math.min(maxPlayers, 255)); }); // ... - handler(getTrackerHandler(EntityTypes1_16_2.PLAYER, Type.INT)); + handler(getTrackerHandler(EntityTypes1_16_2.PLAYER, Types.INT)); } }); protocol.registerClientbound(ClientboundPackets1_16_2.RESPAWN, wrapper -> { - CompoundTag dimensionData = wrapper.read(Type.NAMED_COMPOUND_TAG); - wrapper.write(Type.STRING, getDimensionFromData(dimensionData)); + CompoundTag dimensionData = wrapper.read(Types.NAMED_COMPOUND_TAG); + wrapper.write(Types.STRING, getDimensionFromData(dimensionData)); }); } @@ -120,8 +121,8 @@ public class EntityPackets1_16_2 extends EntityRewriter. */ -package com.viaversion.viabackwards.protocol.protocol1_16_1to1_16_2.storage; +package com.viaversion.viabackwards.protocol.v1_16_2to1_16_1.storage; -import com.viaversion.viabackwards.protocol.protocol1_16_1to1_16_2.data.BiomeMappings; +import com.viaversion.viabackwards.protocol.v1_16_2to1_16_1.data.BiomeMappings; import com.viaversion.viaversion.api.connection.StorableObject; import com.viaversion.viaversion.libs.fastutil.ints.Int2IntMap; import com.viaversion.viaversion.libs.fastutil.ints.Int2IntOpenHashMap; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_2to1_16_3/Protocol1_16_2To1_16_3.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16_3to1_16_2/Protocol1_16_3To1_16_2.java similarity index 75% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_2to1_16_3/Protocol1_16_2To1_16_3.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_16_3to1_16_2/Protocol1_16_3To1_16_2.java index 3ddaae44..c229de81 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_2to1_16_3/Protocol1_16_2To1_16_3.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16_3to1_16_2/Protocol1_16_3To1_16_2.java @@ -15,11 +15,11 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_16_2to1_16_3; +package com.viaversion.viabackwards.protocol.v1_16_3to1_16_2; import com.viaversion.viabackwards.api.BackwardsProtocol; -import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ClientboundPackets1_16_2; -import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ServerboundPackets1_16_2; +import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.packet.ClientboundPackets1_16_2; +import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.packet.ServerboundPackets1_16_2; -public class Protocol1_16_2To1_16_3 extends BackwardsProtocol { +public class Protocol1_16_3To1_16_2 extends BackwardsProtocol { } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_3to1_16_4/Protocol1_16_3To1_16_4.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16_4to1_16_3/Protocol1_16_4To1_16_3.java similarity index 66% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_3to1_16_4/Protocol1_16_3To1_16_4.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_16_4to1_16_3/Protocol1_16_4To1_16_3.java index 68ab5901..77aded32 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_3to1_16_4/Protocol1_16_3To1_16_4.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16_4to1_16_3/Protocol1_16_4To1_16_3.java @@ -15,19 +15,20 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_16_3to1_16_4; +package com.viaversion.viabackwards.protocol.v1_16_4to1_16_3; import com.viaversion.viabackwards.api.BackwardsProtocol; -import com.viaversion.viabackwards.protocol.protocol1_16_3to1_16_4.storage.PlayerHandStorage; +import com.viaversion.viabackwards.protocol.v1_16_4to1_16_3.storage.PlayerHandStorage; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ClientboundPackets1_16_2; -import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ServerboundPackets1_16_2; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.packet.ClientboundPackets1_16_2; +import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.packet.ServerboundPackets1_16_2; -public class Protocol1_16_3To1_16_4 extends BackwardsProtocol { +public class Protocol1_16_4To1_16_3 extends BackwardsProtocol { - public Protocol1_16_3To1_16_4() { + public Protocol1_16_4To1_16_3() { super(ClientboundPackets1_16_2.class, ClientboundPackets1_16_2.class, ServerboundPackets1_16_2.class, ServerboundPackets1_16_2.class); } @@ -36,21 +37,21 @@ public class Protocol1_16_3To1_16_4 extends BackwardsProtocol { - int slot = wrapper.read(Type.VAR_INT); + int slot = wrapper.read(Types.VAR_INT); if (slot == 1) { - wrapper.write(Type.VAR_INT, 40); // offhand + wrapper.write(Types.VAR_INT, 40); // offhand } else { - wrapper.write(Type.VAR_INT, wrapper.user().get(PlayerHandStorage.class).getCurrentHand()); + wrapper.write(Types.VAR_INT, wrapper.user().get(PlayerHandStorage.class).getCurrentHand()); } }); } }); - registerServerbound(ServerboundPackets1_16_2.HELD_ITEM_CHANGE, wrapper -> { - short slot = wrapper.passthrough(Type.SHORT); + registerServerbound(ServerboundPackets1_16_2.SET_CARRIED_ITEM, wrapper -> { + short slot = wrapper.passthrough(Types.SHORT); wrapper.user().get(PlayerHandStorage.class).setCurrentHand(slot); }); } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_3to1_16_4/storage/PlayerHandStorage.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16_4to1_16_3/storage/PlayerHandStorage.java similarity index 93% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_3to1_16_4/storage/PlayerHandStorage.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_16_4to1_16_3/storage/PlayerHandStorage.java index 6a6c601d..2dc36308 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_3to1_16_4/storage/PlayerHandStorage.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16_4to1_16_3/storage/PlayerHandStorage.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_16_3to1_16_4.storage; +package com.viaversion.viabackwards.protocol.v1_16_4to1_16_3.storage; import com.viaversion.viaversion.api.connection.StorableObject; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15_2to1_16/Protocol1_15_2To1_16.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16to1_15_2/Protocol1_16To1_15_2.java similarity index 60% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15_2to1_16/Protocol1_15_2To1_16.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_16to1_15_2/Protocol1_16To1_15_2.java index aebc8519..673360b8 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15_2to1_16/Protocol1_15_2To1_16.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16to1_15_2/Protocol1_16To1_15_2.java @@ -15,17 +15,17 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_15_2to1_16; +package com.viaversion.viabackwards.protocol.v1_16to1_15_2; import com.viaversion.viabackwards.api.BackwardsProtocol; import com.viaversion.viabackwards.api.rewriters.SoundRewriter; -import com.viaversion.viabackwards.protocol.protocol1_15_2to1_16.chat.TranslatableRewriter1_16; -import com.viaversion.viabackwards.protocol.protocol1_15_2to1_16.data.BackwardsMappings; -import com.viaversion.viabackwards.protocol.protocol1_15_2to1_16.data.CommandRewriter1_16; -import com.viaversion.viabackwards.protocol.protocol1_15_2to1_16.data.WorldNameTracker; -import com.viaversion.viabackwards.protocol.protocol1_15_2to1_16.packets.BlockItemPackets1_16; -import com.viaversion.viabackwards.protocol.protocol1_15_2to1_16.packets.EntityPackets1_16; -import com.viaversion.viabackwards.protocol.protocol1_15_2to1_16.storage.PlayerSneakStorage; +import com.viaversion.viabackwards.protocol.v1_16to1_15_2.chat.TranslatableRewriter1_16; +import com.viaversion.viabackwards.protocol.v1_16to1_15_2.data.BackwardsMappingData1_16; +import com.viaversion.viabackwards.protocol.v1_16to1_15_2.data.CommandRewriter1_16; +import com.viaversion.viabackwards.protocol.v1_16to1_15_2.data.WorldNameTracker; +import com.viaversion.viabackwards.protocol.v1_16to1_15_2.rewriter.BlockItemPacketRewriter1_16; +import com.viaversion.viabackwards.protocol.v1_16to1_15_2.rewriter.EntityPacketRewriter1_16; +import com.viaversion.viabackwards.protocol.v1_16to1_15_2.storage.PlayerSneakStorage; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.ClientWorld; import com.viaversion.viaversion.api.minecraft.RegistryType; @@ -33,29 +33,30 @@ import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_16; import com.viaversion.viaversion.api.protocol.packet.State; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.data.entity.EntityTrackerBase; import com.viaversion.viaversion.libs.gson.JsonElement; import com.viaversion.viaversion.libs.gson.JsonObject; import com.viaversion.viaversion.protocols.base.ClientboundLoginPackets; import com.viaversion.viaversion.protocols.base.ClientboundStatusPackets; -import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ServerboundPackets1_14; -import com.viaversion.viaversion.protocols.protocol1_15to1_14_4.ClientboundPackets1_15; -import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.ClientboundPackets1_16; -import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.ServerboundPackets1_16; +import com.viaversion.viaversion.protocols.v1_13_2to1_14.packet.ServerboundPackets1_14; +import com.viaversion.viaversion.protocols.v1_14_4to1_15.packet.ClientboundPackets1_15; +import com.viaversion.viaversion.protocols.v1_15_2to1_16.packet.ClientboundPackets1_16; +import com.viaversion.viaversion.protocols.v1_15_2to1_16.packet.ServerboundPackets1_16; import com.viaversion.viaversion.rewriter.StatisticsRewriter; import com.viaversion.viaversion.rewriter.TagRewriter; import com.viaversion.viaversion.util.GsonUtil; import java.util.UUID; -public class Protocol1_15_2To1_16 extends BackwardsProtocol { +public class Protocol1_16To1_15_2 extends BackwardsProtocol { - public static final BackwardsMappings MAPPINGS = new BackwardsMappings(); - private final EntityPackets1_16 entityRewriter = new EntityPackets1_16(this); - private final BlockItemPackets1_16 blockItemPackets = new BlockItemPackets1_16(this); + public static final BackwardsMappingData1_16 MAPPINGS = new BackwardsMappingData1_16(); + private final EntityPacketRewriter1_16 entityRewriter = new EntityPacketRewriter1_16(this); + private final BlockItemPacketRewriter1_16 blockItemPackets = new BlockItemPacketRewriter1_16(this); private final TranslatableRewriter1_16 translatableRewriter = new TranslatableRewriter1_16(this); private final TagRewriter tagRewriter = new TagRewriter<>(this); - public Protocol1_15_2To1_16() { + public Protocol1_16To1_15_2() { super(ClientboundPackets1_16.class, ClientboundPackets1_15.class, ServerboundPackets1_16.class, ServerboundPackets1_14.class); } @@ -63,46 +64,46 @@ public class Protocol1_15_2To1_16 extends BackwardsProtocol { - String original = wrapper.passthrough(Type.STRING); + String original = wrapper.passthrough(Types.STRING); JsonObject object = GsonUtil.getGson().fromJson(original, JsonObject.class); JsonElement description = object.get("description"); if (description == null) return; translatableRewriter.processText(wrapper.user(), description); - wrapper.set(Type.STRING, 0, object.toString()); + wrapper.set(Types.STRING, 0, object.toString()); }); - registerClientbound(ClientboundPackets1_16.CHAT_MESSAGE, new PacketHandlers() { + registerClientbound(ClientboundPackets1_16.CHAT, new PacketHandlers() { @Override public void register() { - handler(wrapper -> translatableRewriter.processText(wrapper.user(), wrapper.passthrough(Type.COMPONENT))); - map(Type.BYTE); - read(Type.UUID); // Sender + handler(wrapper -> translatableRewriter.processText(wrapper.user(), wrapper.passthrough(Types.COMPONENT))); + map(Types.BYTE); + read(Types.UUID); // Sender } }); - registerClientbound(ClientboundPackets1_16.OPEN_WINDOW, new PacketHandlers() { + registerClientbound(ClientboundPackets1_16.OPEN_SCREEN, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); // Window Id - map(Type.VAR_INT); // Window Type - handler(wrapper -> translatableRewriter.processText(wrapper.user(), wrapper.passthrough(Type.COMPONENT))); + map(Types.VAR_INT); // Window Id + map(Types.VAR_INT); // Window Type + handler(wrapper -> translatableRewriter.processText(wrapper.user(), wrapper.passthrough(Types.COMPONENT))); handler(wrapper -> { - int windowType = wrapper.get(Type.VAR_INT, 1); + int windowType = wrapper.get(Types.VAR_INT, 1); if (windowType == 20) { // Smithing table - wrapper.set(Type.VAR_INT, 1, 7); // Open anvil inventory + wrapper.set(Types.VAR_INT, 1, 7); // Open anvil inventory } else if (windowType > 20) { - wrapper.set(Type.VAR_INT, 1, --windowType); + wrapper.set(Types.VAR_INT, 1, --windowType); } }); } @@ -110,24 +111,24 @@ public class Protocol1_15_2To1_16 extends BackwardsProtocol soundRewriter = new SoundRewriter<>(this); soundRewriter.registerSound(ClientboundPackets1_16.SOUND); - soundRewriter.registerSound(ClientboundPackets1_16.ENTITY_SOUND); - soundRewriter.registerNamedSound(ClientboundPackets1_16.NAMED_SOUND); + soundRewriter.registerSound(ClientboundPackets1_16.SOUND_ENTITY); + soundRewriter.registerNamedSound(ClientboundPackets1_16.CUSTOM_SOUND); soundRewriter.registerStopSound(ClientboundPackets1_16.STOP_SOUND); // Login success registerClientbound(State.LOGIN, ClientboundLoginPackets.GAME_PROFILE.getId(), ClientboundLoginPackets.GAME_PROFILE.getId(), wrapper -> { // Transform uuid to plain string - UUID uuid = wrapper.read(Type.UUID); - wrapper.write(Type.STRING, uuid.toString()); + UUID uuid = wrapper.read(Types.UUID); + wrapper.write(Types.STRING, uuid.toString()); }); - tagRewriter.register(ClientboundPackets1_16.TAGS, RegistryType.ENTITY); + tagRewriter.register(ClientboundPackets1_16.UPDATE_TAGS, RegistryType.ENTITY); - new StatisticsRewriter<>(this).register(ClientboundPackets1_16.STATISTICS); + new StatisticsRewriter<>(this).register(ClientboundPackets1_16.AWARD_STATS); - registerServerbound(ServerboundPackets1_14.ENTITY_ACTION, wrapper -> { - wrapper.passthrough(Type.VAR_INT); // player id - int action = wrapper.passthrough(Type.VAR_INT); + registerServerbound(ServerboundPackets1_14.PLAYER_COMMAND, wrapper -> { + wrapper.passthrough(Types.VAR_INT); // player id + int action = wrapper.passthrough(Types.VAR_INT); if (action == 0) { wrapper.user().get(PlayerSneakStorage.class).setSneaking(true); } else if (action == 1) { @@ -135,34 +136,34 @@ public class Protocol1_15_2To1_16 extends BackwardsProtocol { - wrapper.passthrough(Type.VAR_INT); // Entity Id - int action = wrapper.passthrough(Type.VAR_INT); + registerServerbound(ServerboundPackets1_14.INTERACT, wrapper -> { + wrapper.passthrough(Types.VAR_INT); // Entity Id + int action = wrapper.passthrough(Types.VAR_INT); if (action == 0 || action == 2) { if (action == 2) { // Location - wrapper.passthrough(Type.FLOAT); - wrapper.passthrough(Type.FLOAT); - wrapper.passthrough(Type.FLOAT); + wrapper.passthrough(Types.FLOAT); + wrapper.passthrough(Types.FLOAT); + wrapper.passthrough(Types.FLOAT); } - wrapper.passthrough(Type.VAR_INT); // Hand + wrapper.passthrough(Types.VAR_INT); // Hand } // New boolean: Whether the client is sneaking - wrapper.write(Type.BOOLEAN, wrapper.user().get(PlayerSneakStorage.class).isSneaking()); + wrapper.write(Types.BOOLEAN, wrapper.user().get(PlayerSneakStorage.class).isSneaking()); }); registerServerbound(ServerboundPackets1_14.PLAYER_ABILITIES, wrapper -> { - byte flags = wrapper.read(Type.BYTE); + byte flags = wrapper.read(Types.BYTE); flags &= 2; // Only take the isFlying value (everything else has been removed and wasn't used anyways) - wrapper.write(Type.BYTE, flags); + wrapper.write(Types.BYTE, flags); - wrapper.read(Type.FLOAT); - wrapper.read(Type.FLOAT); + wrapper.read(Types.FLOAT); + wrapper.read(Types.FLOAT); }); - cancelServerbound(ServerboundPackets1_14.UPDATE_JIGSAW_BLOCK); + cancelServerbound(ServerboundPackets1_14.SET_JIGSAW_BLOCK); } @Override @@ -182,17 +183,17 @@ public class Protocol1_15_2To1_16 extends BackwardsProtocol. */ -package com.viaversion.viabackwards.protocol.protocol1_15_2to1_16.chat; +package com.viaversion.viabackwards.protocol.v1_16to1_15_2.chat; import com.viaversion.viabackwards.api.rewriters.TranslatableRewriter; -import com.viaversion.viabackwards.protocol.protocol1_15_2to1_16.Protocol1_15_2To1_16; +import com.viaversion.viabackwards.protocol.v1_16to1_15_2.Protocol1_16To1_15_2; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.libs.gson.JsonElement; import com.viaversion.viaversion.libs.gson.JsonObject; import com.viaversion.viaversion.libs.gson.JsonPrimitive; -import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.ClientboundPackets1_16; +import com.viaversion.viaversion.protocols.v1_15_2to1_16.packet.ClientboundPackets1_16; import com.viaversion.viaversion.util.ComponentUtil; import com.viaversion.viaversion.util.SerializerVersion; @@ -48,7 +48,7 @@ public class TranslatableRewriter1_16 extends TranslatableRewriter. */ -package com.viaversion.viabackwards.protocol.protocol1_15_2to1_16.data; +package com.viaversion.viabackwards.protocol.v1_16to1_15_2.data; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.Protocol1_16To1_15_2; -import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.data.AttributeMappings; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.viabackwards.api.data.BackwardsMappingData; +import com.viaversion.viaversion.protocols.v1_15_2to1_16.Protocol1_15_2To1_16; +import com.viaversion.viaversion.protocols.v1_15_2to1_16.data.AttributeMappings; import java.util.HashMap; import java.util.Map; -public class BackwardsMappings extends com.viaversion.viabackwards.api.data.BackwardsMappings { +public class BackwardsMappingData1_16 extends BackwardsMappingData { private final Map attributeMappings = new HashMap<>(); - public BackwardsMappings() { - super("1.16", "1.15", Protocol1_16To1_15_2.class); + public BackwardsMappingData1_16() { + super("1.16", "1.15", Protocol1_15_2To1_16.class); } @Override diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15_2to1_16/data/CommandRewriter1_16.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16to1_15_2/data/CommandRewriter1_16.java similarity index 82% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15_2to1_16/data/CommandRewriter1_16.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_16to1_15_2/data/CommandRewriter1_16.java index 6706ab49..7ab9e759 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15_2to1_16/data/CommandRewriter1_16.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16to1_15_2/data/CommandRewriter1_16.java @@ -15,16 +15,16 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_15_2to1_16.data; +package com.viaversion.viabackwards.protocol.v1_16to1_15_2.data; -import com.viaversion.viabackwards.protocol.protocol1_15_2to1_16.Protocol1_15_2To1_16; -import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.ClientboundPackets1_16; +import com.viaversion.viabackwards.protocol.v1_16to1_15_2.Protocol1_16To1_15_2; +import com.viaversion.viaversion.protocols.v1_15_2to1_16.packet.ClientboundPackets1_16; import com.viaversion.viaversion.rewriter.CommandRewriter; import org.checkerframework.checker.nullness.qual.Nullable; public class CommandRewriter1_16 extends CommandRewriter { - public CommandRewriter1_16(Protocol1_15_2To1_16 protocol) { + public CommandRewriter1_16(Protocol1_16To1_15_2 protocol) { super(protocol); } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15_2to1_16/data/MapColorRewrites.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16to1_15_2/data/MapColorRewrites.java similarity index 96% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15_2to1_16/data/MapColorRewrites.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_16to1_15_2/data/MapColorRewrites.java index 8c9e2f76..0fc5cb2a 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15_2to1_16/data/MapColorRewrites.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16to1_15_2/data/MapColorRewrites.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_15_2to1_16.data; +package com.viaversion.viabackwards.protocol.v1_16to1_15_2.data; import com.viaversion.viaversion.libs.fastutil.ints.Int2IntMap; import com.viaversion.viaversion.libs.fastutil.ints.Int2IntOpenHashMap; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15_2to1_16/data/WorldNameTracker.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16to1_15_2/data/WorldNameTracker.java similarity index 93% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15_2to1_16/data/WorldNameTracker.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_16to1_15_2/data/WorldNameTracker.java index ac9ace42..72d02644 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15_2to1_16/data/WorldNameTracker.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16to1_15_2/data/WorldNameTracker.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_15_2to1_16.data; +package com.viaversion.viabackwards.protocol.v1_16to1_15_2.data; import com.viaversion.viaversion.api.connection.StorableObject; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15_2to1_16/packets/BlockItemPackets1_16.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16to1_15_2/rewriter/BlockItemPacketRewriter1_16.java similarity index 69% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15_2to1_16/packets/BlockItemPackets1_16.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_16to1_15_2/rewriter/BlockItemPacketRewriter1_16.java index f2fedd1f..ae01a09e 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15_2to1_16/packets/BlockItemPackets1_16.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16to1_15_2/rewriter/BlockItemPacketRewriter1_16.java @@ -15,15 +15,15 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_15_2to1_16.packets; +package com.viaversion.viabackwards.protocol.v1_16to1_15_2.rewriter; import com.viaversion.viabackwards.ViaBackwards; import com.viaversion.viabackwards.api.rewriters.BackwardsItemRewriter; import com.viaversion.viabackwards.api.rewriters.EnchantmentRewriter; import com.viaversion.viabackwards.api.rewriters.MapColorRewriter; -import com.viaversion.viabackwards.protocol.protocol1_15_2to1_16.Protocol1_15_2To1_16; -import com.viaversion.viabackwards.protocol.protocol1_15_2to1_16.data.MapColorRewrites; -import com.viaversion.viabackwards.protocol.protocol1_16_1to1_16_2.storage.BiomeStorage; +import com.viaversion.viabackwards.protocol.v1_16to1_15_2.Protocol1_16To1_15_2; +import com.viaversion.viabackwards.protocol.v1_16to1_15_2.data.MapColorRewrites; +import com.viaversion.viabackwards.protocol.v1_16_2to1_16_1.storage.BiomeStorage; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.chunks.Chunk; import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection; @@ -34,19 +34,20 @@ import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_15; import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_16; import com.viaversion.viaversion.libs.gson.JsonElement; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.IntArrayTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.ListTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.LongArrayTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.Tag; -import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ServerboundPackets1_14; -import com.viaversion.viaversion.protocols.protocol1_15to1_14_4.ClientboundPackets1_15; -import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.ClientboundPackets1_16; -import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.packets.InventoryPackets; +import com.viaversion.viaversion.protocols.v1_13_2to1_14.packet.ServerboundPackets1_14; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.IntArrayTag; +import com.viaversion.nbt.tag.ListTag; +import com.viaversion.nbt.tag.LongArrayTag; +import com.viaversion.nbt.tag.StringTag; +import com.viaversion.nbt.tag.Tag; +import com.viaversion.viaversion.protocols.v1_14_4to1_15.packet.ClientboundPackets1_15; +import com.viaversion.viaversion.protocols.v1_15_2to1_16.packet.ClientboundPackets1_16; +import com.viaversion.viaversion.protocols.v1_15_2to1_16.rewriter.ItemPacketRewriter1_16; import com.viaversion.viaversion.rewriter.BlockRewriter; import com.viaversion.viaversion.rewriter.RecipeRewriter; import com.viaversion.viaversion.util.CompactArrayUtil; @@ -57,12 +58,12 @@ import java.util.List; import java.util.Map; import java.util.UUID; -public class BlockItemPackets1_16 extends BackwardsItemRewriter { +public class BlockItemPacketRewriter1_16 extends BackwardsItemRewriter { private EnchantmentRewriter enchantmentRewriter; - public BlockItemPackets1_16(Protocol1_15_2To1_16 protocol) { - super(protocol, Type.ITEM1_13_2, Type.ITEM1_13_2_SHORT_ARRAY); + public BlockItemPacketRewriter1_16(Protocol1_16To1_15_2 protocol) { + super(protocol, Types.ITEM1_13_2, Types.ITEM1_13_2_SHORT_ARRAY); } @Override @@ -71,79 +72,79 @@ public class BlockItemPackets1_16 extends BackwardsItemRewriter recipeRewriter = new RecipeRewriter<>(protocol); // Remove new smithing type, only in this handler - protocol.registerClientbound(ClientboundPackets1_16.DECLARE_RECIPES, wrapper -> { - int size = wrapper.passthrough(Type.VAR_INT); + protocol.registerClientbound(ClientboundPackets1_16.UPDATE_RECIPES, wrapper -> { + int size = wrapper.passthrough(Types.VAR_INT); int newSize = size; for (int i = 0; i < size; i++) { - String originalType = wrapper.read(Type.STRING); + String originalType = wrapper.read(Types.STRING); String type = Key.stripMinecraftNamespace(originalType); if (type.equals("smithing")) { newSize--; - wrapper.read(Type.STRING); - wrapper.read(Type.ITEM1_13_2_ARRAY); - wrapper.read(Type.ITEM1_13_2_ARRAY); - wrapper.read(Type.ITEM1_13_2); + wrapper.read(Types.STRING); + wrapper.read(Types.ITEM1_13_2_ARRAY); + wrapper.read(Types.ITEM1_13_2_ARRAY); + wrapper.read(Types.ITEM1_13_2); continue; } - wrapper.write(Type.STRING, originalType); - wrapper.passthrough(Type.STRING); // Recipe Identifier + wrapper.write(Types.STRING, originalType); + wrapper.passthrough(Types.STRING); // Recipe Identifier recipeRewriter.handleRecipeType(wrapper, type); } - wrapper.set(Type.VAR_INT, 0, newSize); + wrapper.set(Types.VAR_INT, 0, newSize); }); - registerSetCooldown(ClientboundPackets1_16.COOLDOWN); - registerWindowItems(ClientboundPackets1_16.WINDOW_ITEMS); - registerSetSlot(ClientboundPackets1_16.SET_SLOT); - registerTradeList(ClientboundPackets1_16.TRADE_LIST); - registerAdvancements(ClientboundPackets1_16.ADVANCEMENTS); + registerCooldown(ClientboundPackets1_16.COOLDOWN); + registerSetContent(ClientboundPackets1_16.CONTAINER_SET_CONTENT); + registerSetSlot(ClientboundPackets1_16.CONTAINER_SET_SLOT); + registerMerchantOffers(ClientboundPackets1_16.MERCHANT_OFFERS); + registerAdvancements(ClientboundPackets1_16.UPDATE_ADVANCEMENTS); - blockRewriter.registerAcknowledgePlayerDigging(ClientboundPackets1_16.ACKNOWLEDGE_PLAYER_DIGGING); - blockRewriter.registerBlockAction(ClientboundPackets1_16.BLOCK_ACTION); - blockRewriter.registerBlockChange(ClientboundPackets1_16.BLOCK_CHANGE); - blockRewriter.registerMultiBlockChange(ClientboundPackets1_16.MULTI_BLOCK_CHANGE); + blockRewriter.registerBlockBreakAck(ClientboundPackets1_16.BLOCK_BREAK_ACK); + blockRewriter.registerBlockEvent(ClientboundPackets1_16.BLOCK_EVENT); + blockRewriter.registerBlockUpdate(ClientboundPackets1_16.BLOCK_UPDATE); + blockRewriter.registerChunkBlocksUpdate(ClientboundPackets1_16.CHUNK_BLOCKS_UPDATE); - protocol.registerClientbound(ClientboundPackets1_16.ENTITY_EQUIPMENT, wrapper -> { - int entityId = wrapper.passthrough(Type.VAR_INT); + protocol.registerClientbound(ClientboundPackets1_16.SET_EQUIPMENT, ClientboundPackets1_15.SET_EQUIPPED_ITEM, wrapper -> { + int entityId = wrapper.passthrough(Types.VAR_INT); List equipmentData = new ArrayList<>(); byte slot; do { - slot = wrapper.read(Type.BYTE); - Item item = handleItemToClient(wrapper.user(), wrapper.read(Type.ITEM1_13_2)); + slot = wrapper.read(Types.BYTE); + Item item = handleItemToClient(wrapper.user(), wrapper.read(Types.ITEM1_13_2)); int rawSlot = slot & 0x7F; equipmentData.add(new EquipmentData(rawSlot, item)); } while ((slot & 0xFFFFFF80) != 0); // Send first data in the current packet EquipmentData firstData = equipmentData.get(0); - wrapper.write(Type.VAR_INT, firstData.slot); - wrapper.write(Type.ITEM1_13_2, firstData.item); + wrapper.write(Types.VAR_INT, firstData.slot); + wrapper.write(Types.ITEM1_13_2, firstData.item); // If there are more items, send new packets for them for (int i = 1; i < equipmentData.size(); i++) { - PacketWrapper equipmentPacket = wrapper.create(ClientboundPackets1_15.ENTITY_EQUIPMENT); + PacketWrapper equipmentPacket = wrapper.create(ClientboundPackets1_15.SET_EQUIPPED_ITEM); EquipmentData data = equipmentData.get(i); - equipmentPacket.write(Type.VAR_INT, entityId); - equipmentPacket.write(Type.VAR_INT, data.slot); - equipmentPacket.write(Type.ITEM1_13_2, data.item); - equipmentPacket.send(Protocol1_15_2To1_16.class); + equipmentPacket.write(Types.VAR_INT, entityId); + equipmentPacket.write(Types.VAR_INT, data.slot); + equipmentPacket.write(Types.ITEM1_13_2, data.item); + equipmentPacket.send(Protocol1_16To1_15_2.class); } }); - protocol.registerClientbound(ClientboundPackets1_16.UPDATE_LIGHT, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_16.LIGHT_UPDATE, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); // x - map(Type.VAR_INT); // y - read(Type.BOOLEAN); + map(Types.VAR_INT); // x + map(Types.VAR_INT); // y + read(Types.BOOLEAN); } }); - protocol.registerClientbound(ClientboundPackets1_16.CHUNK_DATA, wrapper -> { + protocol.registerClientbound(ClientboundPackets1_16.LEVEL_CHUNK, wrapper -> { Chunk chunk = wrapper.read(ChunkType1_16.TYPE); wrapper.write(ChunkType1_15.TYPE, chunk); @@ -199,52 +200,52 @@ public class BlockItemPackets1_16 extends BackwardsItemRewriter { - short property = wrapper.get(Type.SHORT, 0); + short property = wrapper.get(Types.SHORT, 0); if (property >= 4 && property <= 6) { // Enchantment id - short enchantmentId = wrapper.get(Type.SHORT, 1); + short enchantmentId = wrapper.get(Types.SHORT, 1); if (enchantmentId > 11) { // soul_speed - wrapper.set(Type.SHORT, 1, --enchantmentId); + wrapper.set(Types.SHORT, 1, --enchantmentId); } else if (enchantmentId == 11) { - wrapper.set(Type.SHORT, 1, (short) 9); + wrapper.set(Types.SHORT, 1, (short) 9); } } }); } }); - protocol.registerClientbound(ClientboundPackets1_16.MAP_DATA, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_16.MAP_ITEM_DATA, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); // Map ID - map(Type.BYTE); // Scale - map(Type.BOOLEAN); // Tracking Position - map(Type.BOOLEAN); // Locked + map(Types.VAR_INT); // Map ID + map(Types.BYTE); // Scale + map(Types.BOOLEAN); // Tracking Position + map(Types.BOOLEAN); // Locked handler(MapColorRewriter.getRewriteHandler(MapColorRewrites::getMappedColor)); } }); protocol.registerClientbound(ClientboundPackets1_16.BLOCK_ENTITY_DATA, wrapper -> { - wrapper.passthrough(Type.POSITION1_14); // Position - wrapper.passthrough(Type.UNSIGNED_BYTE); // Action - CompoundTag tag = wrapper.passthrough(Type.NAMED_COMPOUND_TAG); + wrapper.passthrough(Types.BLOCK_POSITION1_14); // Position + wrapper.passthrough(Types.UNSIGNED_BYTE); // Action + CompoundTag tag = wrapper.passthrough(Types.NAMED_COMPOUND_TAG); handleBlockEntity(tag); }); - registerClickWindow(ServerboundPackets1_14.CLICK_WINDOW); - registerCreativeInvAction(ServerboundPackets1_14.CREATIVE_INVENTORY_ACTION); + registerContainerClick(ServerboundPackets1_14.CONTAINER_CLICK); + registerSetCreativeModeSlot(ServerboundPackets1_14.SET_CREATIVE_MODE_SLOT); - protocol.registerServerbound(ServerboundPackets1_14.EDIT_BOOK, wrapper -> handleItemToServer(wrapper.user(), wrapper.passthrough(Type.ITEM1_13_2))); + protocol.registerServerbound(ServerboundPackets1_14.EDIT_BOOK, wrapper -> handleItemToServer(wrapper.user(), wrapper.passthrough(Types.ITEM1_13_2))); } private void handleBlockEntity(CompoundTag tag) { @@ -311,7 +312,7 @@ public class BlockItemPackets1_16 extends BackwardsItemRewriter. */ -package com.viaversion.viabackwards.protocol.protocol1_15_2to1_16.packets; +package com.viaversion.viabackwards.protocol.v1_16to1_15_2.rewriter; import com.viaversion.viabackwards.api.rewriters.EntityRewriter; -import com.viaversion.viabackwards.protocol.protocol1_15_2to1_16.Protocol1_15_2To1_16; -import com.viaversion.viabackwards.protocol.protocol1_15_2to1_16.data.WorldNameTracker; -import com.viaversion.viabackwards.protocol.protocol1_15_2to1_16.storage.WolfDataMaskStorage; +import com.viaversion.viabackwards.protocol.v1_16to1_15_2.Protocol1_16To1_15_2; +import com.viaversion.viabackwards.protocol.v1_16to1_15_2.data.WorldNameTracker; +import com.viaversion.viabackwards.protocol.v1_16to1_15_2.storage.WolfDataMaskStorage; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.data.entity.StoredEntityData; import com.viaversion.viaversion.api.minecraft.ClientWorld; @@ -28,23 +28,24 @@ import com.viaversion.viaversion.api.minecraft.Particle; import com.viaversion.viaversion.api.minecraft.entities.EntityType; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_16; import com.viaversion.viaversion.api.minecraft.item.Item; -import com.viaversion.viaversion.api.minecraft.metadata.MetaType; -import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.api.minecraft.entitydata.EntityData; +import com.viaversion.viaversion.api.minecraft.entitydata.EntityDataType; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.protocol.remapper.ValueTransformer; import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.version.Types1_14; import com.viaversion.viaversion.api.type.types.version.Types1_16; import com.viaversion.viaversion.libs.gson.JsonElement; -import com.viaversion.viaversion.protocols.protocol1_15to1_14_4.ClientboundPackets1_15; -import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.ClientboundPackets1_16; +import com.viaversion.viaversion.protocols.v1_14_4to1_15.packet.ClientboundPackets1_15; +import com.viaversion.viaversion.protocols.v1_15_2to1_16.packet.ClientboundPackets1_16; import com.viaversion.viaversion.util.Key; -public class EntityPackets1_16 extends EntityRewriter { +public class EntityPacketRewriter1_16 extends EntityRewriter { - private final ValueTransformer dimensionTransformer = new ValueTransformer<>(Type.STRING, Type.INT) { + private final ValueTransformer dimensionTransformer = new ValueTransformer<>(Types.STRING, Types.INT) { @Override public Integer transform(PacketWrapper wrapper, String input) { input = Key.namespaced(input); @@ -56,44 +57,44 @@ public class EntityPackets1_16 extends EntityRewriter { - EntityType entityType = typeFromId(wrapper.get(Type.VAR_INT, 1)); + EntityType entityType = typeFromId(wrapper.get(Types.VAR_INT, 1)); if (entityType == EntityTypes1_16.LIGHTNING_BOLT) { // Map to old weather entity packet wrapper.cancel(); - PacketWrapper spawnLightningPacket = wrapper.create(ClientboundPackets1_15.SPAWN_GLOBAL_ENTITY); - spawnLightningPacket.write(Type.VAR_INT, wrapper.get(Type.VAR_INT, 0)); // Entity id - spawnLightningPacket.write(Type.BYTE, (byte) 1); // Lightning type - spawnLightningPacket.write(Type.DOUBLE, wrapper.get(Type.DOUBLE, 0)); // X - spawnLightningPacket.write(Type.DOUBLE, wrapper.get(Type.DOUBLE, 1)); // Y - spawnLightningPacket.write(Type.DOUBLE, wrapper.get(Type.DOUBLE, 2)); // Z - spawnLightningPacket.send(Protocol1_15_2To1_16.class); + PacketWrapper spawnLightningPacket = wrapper.create(ClientboundPackets1_15.ADD_GLOBAL_ENTITY); + spawnLightningPacket.write(Types.VAR_INT, wrapper.get(Types.VAR_INT, 0)); // Entity id + spawnLightningPacket.write(Types.BYTE, (byte) 1); // Lightning type + spawnLightningPacket.write(Types.DOUBLE, wrapper.get(Types.DOUBLE, 0)); // X + spawnLightningPacket.write(Types.DOUBLE, wrapper.get(Types.DOUBLE, 1)); // Y + spawnLightningPacket.write(Types.DOUBLE, wrapper.get(Types.DOUBLE, 2)); // Z + spawnLightningPacket.send(Protocol1_16To1_15_2.class); } }); handler(getSpawnTrackerWithDataHandler(EntityTypes1_16.FALLING_BLOCK)); } }); - registerSpawnTracker(ClientboundPackets1_16.SPAWN_MOB); + registerSpawnTracker(ClientboundPackets1_16.ADD_MOB); protocol.registerClientbound(ClientboundPackets1_16.RESPAWN, new PacketHandlers() { @Override @@ -102,15 +103,15 @@ public class EntityPackets1_16 extends EntityRewriter { // Grab the tracker for world names WorldNameTracker worldNameTracker = wrapper.user().get(WorldNameTracker.class); - String nextWorldName = wrapper.read(Type.STRING); // World Name + String nextWorldName = wrapper.read(Types.STRING); // World Name - wrapper.passthrough(Type.LONG); // Seed - wrapper.passthrough(Type.UNSIGNED_BYTE); // Gamemode - wrapper.read(Type.BYTE); // Previous gamemode + wrapper.passthrough(Types.LONG); // Seed + wrapper.passthrough(Types.UNSIGNED_BYTE); // Gamemode + wrapper.read(Types.BYTE); // Previous gamemode // Grab client world ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); - int dimension = wrapper.get(Type.INT, 0); + int dimension = wrapper.get(Types.INT, 0); // Send a dummy respawn with a different dimension if the world name was different and the same dimension was used if (clientWorld.getEnvironment() != null && dimension == clientWorld.getEnvironment().id() @@ -118,21 +119,21 @@ public class EntityPackets1_16 extends EntityRewriter { WorldNameTracker worldNameTracker = wrapper.user().get(WorldNameTracker.class); - worldNameTracker.setWorldName(wrapper.read(Type.STRING)); // Save the world name + worldNameTracker.setWorldName(wrapper.read(Types.STRING)); // Save the world name }); - map(Type.LONG); // Seed - map(Type.UNSIGNED_BYTE); // Max players + map(Types.LONG); // Seed + map(Types.UNSIGNED_BYTE); // Max players handler(wrapper -> { ClientWorld clientChunks = wrapper.user().get(ClientWorld.class); - clientChunks.setEnvironment(wrapper.get(Type.INT, 1)); - tracker(wrapper.user()).addEntity(wrapper.get(Type.INT, 0), EntityTypes1_16.PLAYER); + clientChunks.setEnvironment(wrapper.get(Types.INT, 1)); + tracker(wrapper.user()).addEntity(wrapper.get(Types.INT, 0), EntityTypes1_16.PLAYER); - wrapper.write(Type.STRING, "default"); // Level type + wrapper.write(Types.STRING, "default"); // Level type - wrapper.passthrough(Type.VAR_INT); // View distance - wrapper.passthrough(Type.BOOLEAN); // Reduced debug info - wrapper.passthrough(Type.BOOLEAN); // Show death screen + wrapper.passthrough(Types.VAR_INT); // View distance + wrapper.passthrough(Types.BOOLEAN); // Reduced debug info + wrapper.passthrough(Types.BOOLEAN); // Show death screen - wrapper.read(Type.BOOLEAN); // Debug - if (wrapper.read(Type.BOOLEAN)) { - wrapper.set(Type.STRING, 0, "flat"); + wrapper.read(Types.BOOLEAN); // Debug + if (wrapper.read(Types.BOOLEAN)) { + wrapper.set(Types.STRING, 0, "flat"); } }); } }); - registerTracker(ClientboundPackets1_16.SPAWN_EXPERIENCE_ORB, EntityTypes1_16.EXPERIENCE_ORB); + registerTracker(ClientboundPackets1_16.ADD_EXPERIENCE_ORB, EntityTypes1_16.EXPERIENCE_ORB); // F Spawn Global Object, it is no longer with us :( - registerTracker(ClientboundPackets1_16.SPAWN_PAINTING, EntityTypes1_16.PAINTING); - registerTracker(ClientboundPackets1_16.SPAWN_PLAYER, EntityTypes1_16.PLAYER); - registerRemoveEntities(ClientboundPackets1_16.DESTROY_ENTITIES); - registerMetadataRewriter(ClientboundPackets1_16.ENTITY_METADATA, Types1_16.METADATA_LIST, Types1_14.METADATA_LIST); + registerTracker(ClientboundPackets1_16.ADD_PAINTING, EntityTypes1_16.PAINTING); + registerTracker(ClientboundPackets1_16.ADD_PLAYER, EntityTypes1_16.PLAYER); + registerRemoveEntities(ClientboundPackets1_16.REMOVE_ENTITIES); + registerSetEntityData(ClientboundPackets1_16.SET_ENTITY_DATA, Types1_16.ENTITY_DATA_LIST, Types1_14.ENTITY_DATA_LIST); - protocol.registerClientbound(ClientboundPackets1_16.ENTITY_PROPERTIES, wrapper -> { - wrapper.passthrough(Type.VAR_INT); - int size = wrapper.passthrough(Type.INT); + protocol.registerClientbound(ClientboundPackets1_16.UPDATE_ATTRIBUTES, wrapper -> { + wrapper.passthrough(Types.VAR_INT); + int size = wrapper.passthrough(Types.INT); for (int i = 0; i < size; i++) { - String attributeIdentifier = wrapper.read(Type.STRING); + String attributeIdentifier = wrapper.read(Types.STRING); String oldKey = protocol.getMappingData().attributeIdentifierMappings().get(attributeIdentifier); - wrapper.write(Type.STRING, oldKey != null ? oldKey : Key.stripMinecraftNamespace(attributeIdentifier)); + wrapper.write(Types.STRING, oldKey != null ? oldKey : Key.stripMinecraftNamespace(attributeIdentifier)); - wrapper.passthrough(Type.DOUBLE); - int modifierSize = wrapper.passthrough(Type.VAR_INT); + wrapper.passthrough(Types.DOUBLE); + int modifierSize = wrapper.passthrough(Types.VAR_INT); for (int j = 0; j < modifierSize; j++) { - wrapper.passthrough(Type.UUID); - wrapper.passthrough(Type.DOUBLE); - wrapper.passthrough(Type.BYTE); + wrapper.passthrough(Types.UUID); + wrapper.passthrough(Types.DOUBLE); + wrapper.passthrough(Types.BYTE); } } }); protocol.registerClientbound(ClientboundPackets1_16.PLAYER_INFO, wrapper -> { - int action = wrapper.passthrough(Type.VAR_INT); - int playerCount = wrapper.passthrough(Type.VAR_INT); + int action = wrapper.passthrough(Types.VAR_INT); + int playerCount = wrapper.passthrough(Types.VAR_INT); for (int i = 0; i < playerCount; i++) { - wrapper.passthrough(Type.UUID); + wrapper.passthrough(Types.UUID); if (action == 0) { // Add - wrapper.passthrough(Type.STRING); - int properties = wrapper.passthrough(Type.VAR_INT); + wrapper.passthrough(Types.STRING); + int properties = wrapper.passthrough(Types.VAR_INT); for (int j = 0; j < properties; j++) { - wrapper.passthrough(Type.STRING); - wrapper.passthrough(Type.STRING); - wrapper.passthrough(Type.OPTIONAL_STRING); + wrapper.passthrough(Types.STRING); + wrapper.passthrough(Types.STRING); + wrapper.passthrough(Types.OPTIONAL_STRING); } - wrapper.passthrough(Type.VAR_INT); - wrapper.passthrough(Type.VAR_INT); + wrapper.passthrough(Types.VAR_INT); + wrapper.passthrough(Types.VAR_INT); // Display Name - protocol.getTranslatableRewriter().processText(wrapper.user(), wrapper.passthrough(Type.OPTIONAL_COMPONENT)); + protocol.getTranslatableRewriter().processText(wrapper.user(), wrapper.passthrough(Types.OPTIONAL_COMPONENT)); } else if (action == 1) { // Update Game Mode - wrapper.passthrough(Type.VAR_INT); + wrapper.passthrough(Types.VAR_INT); } else if (action == 2) { // Update Ping - wrapper.passthrough(Type.VAR_INT); + wrapper.passthrough(Types.VAR_INT); } else if (action == 3) { // Update Display Name // Display name - protocol.getTranslatableRewriter().processText(wrapper.user(), wrapper.passthrough(Type.OPTIONAL_COMPONENT)); + protocol.getTranslatableRewriter().processText(wrapper.user(), wrapper.passthrough(Types.OPTIONAL_COMPONENT)); } // 4 = Remove Player } }); @@ -231,16 +232,16 @@ public class EntityPackets1_16 extends EntityRewriter { - meta.setMetaType(Types1_14.META_TYPES.byId(meta.metaType().typeId())); + meta.setDataType(Types1_14.ENTITY_DATA_TYPES.byId(meta.dataType().typeId())); - MetaType type = meta.metaType(); - if (type == Types1_14.META_TYPES.itemType) { + EntityDataType type = meta.dataType(); + if (type == Types1_14.ENTITY_DATA_TYPES.itemType) { meta.setValue(protocol.getItemRewriter().handleItemToClient(event.user(), (Item) meta.getValue())); - } else if (type == Types1_14.META_TYPES.blockStateType) { + } else if (type == Types1_14.ENTITY_DATA_TYPES.optionalBlockStateType) { meta.setValue(protocol.getMappingData().getNewBlockStateId((int) meta.getValue())); - } else if (type == Types1_14.META_TYPES.particleType) { + } else if (type == Types1_14.ENTITY_DATA_TYPES.particleType) { rewriteParticle(event.user(), (Particle) meta.getValue()); - } else if (type == Types1_14.META_TYPES.optionalComponentType) { + } else if (type == Types1_14.ENTITY_DATA_TYPES.optionalComponentType) { JsonElement text = meta.value(); if (text != null) { protocol.getTranslatableRewriter().processText(event.user(), text); @@ -257,7 +258,7 @@ public class EntityPackets1_16 extends EntityRewriter { boolean baby = meta.value(); - meta.setTypeAndValue(Types1_14.META_TYPES.varIntType, baby ? 1 : 3); + meta.setTypeAndValue(Types1_14.ENTITY_DATA_TYPES.varIntType, baby ? 1 : 3); }); filter().type(EntityTypes1_16.STRIDER).cancel(16); filter().type(EntityTypes1_16.STRIDER).cancel(17); @@ -290,7 +291,7 @@ public class EntityPackets1_16 extends EntityRewriter 0 ? previousMask | 2 : previousMask & -3); - event.createExtraMeta(new Metadata(16, Types1_14.META_TYPES.byteType, tameableMask)); + event.createExtraData(new EntityData(16, Types1_14.ENTITY_DATA_TYPES.byteType, tameableMask)); event.cancel(); }); } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15_2to1_16/storage/PlayerSneakStorage.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16to1_15_2/storage/PlayerSneakStorage.java similarity index 93% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15_2to1_16/storage/PlayerSneakStorage.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_16to1_15_2/storage/PlayerSneakStorage.java index 2d2f42bd..ac25c037 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15_2to1_16/storage/PlayerSneakStorage.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16to1_15_2/storage/PlayerSneakStorage.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_15_2to1_16.storage; +package com.viaversion.viabackwards.protocol.v1_16to1_15_2.storage; import com.viaversion.viaversion.api.connection.StorableObject; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15_2to1_16/storage/WolfDataMaskStorage.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16to1_15_2/storage/WolfDataMaskStorage.java similarity index 93% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15_2to1_16/storage/WolfDataMaskStorage.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_16to1_15_2/storage/WolfDataMaskStorage.java index 0e436d61..6fa39399 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_15_2to1_16/storage/WolfDataMaskStorage.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_16to1_15_2/storage/WolfDataMaskStorage.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_15_2to1_16.storage; +package com.viaversion.viabackwards.protocol.v1_16to1_15_2.storage; public final class WolfDataMaskStorage { diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_17to1_17_1/Protocol1_17To1_17_1.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_17_1to1_17/Protocol1_17_1To1_17.java similarity index 63% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_17to1_17_1/Protocol1_17To1_17_1.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_17_1to1_17/Protocol1_17_1To1_17.java index 48fb0947..42d282e8 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_17to1_17_1/Protocol1_17To1_17_1.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_17_1to1_17/Protocol1_17_1To1_17.java @@ -15,65 +15,66 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_17to1_17_1; +package com.viaversion.viabackwards.protocol.v1_17_1to1_17; import com.viaversion.viabackwards.api.BackwardsProtocol; -import com.viaversion.viabackwards.protocol.protocol1_16_4to1_17.storage.PlayerLastCursorItem; -import com.viaversion.viabackwards.protocol.protocol1_17to1_17_1.storage.InventoryStateIds; +import com.viaversion.viabackwards.protocol.v1_17to1_16_4.storage.PlayerLastCursorItem; +import com.viaversion.viabackwards.protocol.v1_17_1to1_17.storage.InventoryStateIds; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.ListTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.Tag; -import com.viaversion.viaversion.protocols.protocol1_17_1to1_17.ClientboundPackets1_17_1; -import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.ClientboundPackets1_17; -import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.ServerboundPackets1_17; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.ListTag; +import com.viaversion.nbt.tag.StringTag; +import com.viaversion.nbt.tag.Tag; +import com.viaversion.viaversion.protocols.v1_16_4to1_17.packet.ClientboundPackets1_17; +import com.viaversion.viaversion.protocols.v1_16_4to1_17.packet.ServerboundPackets1_17; +import com.viaversion.viaversion.protocols.v1_17to1_17_1.packet.ClientboundPackets1_17_1; -public final class Protocol1_17To1_17_1 extends BackwardsProtocol { +public final class Protocol1_17_1To1_17 extends BackwardsProtocol { private static final int MAX_PAGE_LENGTH = 8192; private static final int MAX_TITLE_LENGTH = 128; private static final int MAX_PAGES = 200; // Actually limited to 100 when handling the read packet, but /shrug - public Protocol1_17To1_17_1() { + public Protocol1_17_1To1_17() { super(ClientboundPackets1_17_1.class, ClientboundPackets1_17.class, ServerboundPackets1_17.class, ServerboundPackets1_17.class); } @Override protected void registerPackets() { registerClientbound(ClientboundPackets1_17_1.REMOVE_ENTITIES, null, wrapper -> { - int[] entityIds = wrapper.read(Type.VAR_INT_ARRAY_PRIMITIVE); + int[] entityIds = wrapper.read(Types.VAR_INT_ARRAY_PRIMITIVE); wrapper.cancel(); for (int entityId : entityIds) { // Send individual remove packets PacketWrapper newPacket = wrapper.create(ClientboundPackets1_17.REMOVE_ENTITY); - newPacket.write(Type.VAR_INT, entityId); - newPacket.send(Protocol1_17To1_17_1.class); + newPacket.write(Types.VAR_INT, entityId); + newPacket.send(Protocol1_17_1To1_17.class); } }); - registerClientbound(ClientboundPackets1_17_1.CLOSE_WINDOW, wrapper -> { - short containerId = wrapper.passthrough(Type.UNSIGNED_BYTE); + registerClientbound(ClientboundPackets1_17_1.CONTAINER_CLOSE, wrapper -> { + short containerId = wrapper.passthrough(Types.UNSIGNED_BYTE); wrapper.user().get(InventoryStateIds.class).removeStateId(containerId); }); - registerClientbound(ClientboundPackets1_17_1.SET_SLOT, wrapper -> { - short containerId = wrapper.passthrough(Type.UNSIGNED_BYTE); - int stateId = wrapper.read(Type.VAR_INT); + registerClientbound(ClientboundPackets1_17_1.CONTAINER_SET_SLOT, wrapper -> { + short containerId = wrapper.passthrough(Types.UNSIGNED_BYTE); + int stateId = wrapper.read(Types.VAR_INT); wrapper.user().get(InventoryStateIds.class).setStateId(containerId, stateId); }); - registerClientbound(ClientboundPackets1_17_1.WINDOW_ITEMS, wrapper -> { - short containerId = wrapper.passthrough(Type.UNSIGNED_BYTE); - int stateId = wrapper.read(Type.VAR_INT); + registerClientbound(ClientboundPackets1_17_1.CONTAINER_SET_CONTENT, wrapper -> { + short containerId = wrapper.passthrough(Types.UNSIGNED_BYTE); + int stateId = wrapper.read(Types.VAR_INT); wrapper.user().get(InventoryStateIds.class).setStateId(containerId, stateId); // Length is encoded as a var int in 1.17.1 - wrapper.write(Type.ITEM1_13_2_SHORT_ARRAY, wrapper.read(Type.ITEM1_13_2_ARRAY)); + wrapper.write(Types.ITEM1_13_2_SHORT_ARRAY, wrapper.read(Types.ITEM1_13_2_ARRAY)); // Carried item - should work without adding it to the array above - Item carried = wrapper.read(Type.ITEM1_13_2); + Item carried = wrapper.read(Types.ITEM1_13_2); PlayerLastCursorItem lastCursorItem = wrapper.user().get(PlayerLastCursorItem.class); if (lastCursorItem != null) { @@ -86,20 +87,20 @@ public final class Protocol1_17To1_17_1 extends BackwardsProtocol { - short containerId = wrapper.passthrough(Type.UNSIGNED_BYTE); + registerServerbound(ServerboundPackets1_17.CONTAINER_CLOSE, wrapper -> { + short containerId = wrapper.passthrough(Types.UNSIGNED_BYTE); wrapper.user().get(InventoryStateIds.class).removeStateId(containerId); }); - registerServerbound(ServerboundPackets1_17.CLICK_WINDOW, wrapper -> { - short containerId = wrapper.passthrough(Type.UNSIGNED_BYTE); + registerServerbound(ServerboundPackets1_17.CONTAINER_CLICK, wrapper -> { + short containerId = wrapper.passthrough(Types.UNSIGNED_BYTE); int stateId = wrapper.user().get(InventoryStateIds.class).removeStateId(containerId); - wrapper.write(Type.VAR_INT, stateId == Integer.MAX_VALUE ? 0 : stateId); + wrapper.write(Types.VAR_INT, stateId == Integer.MAX_VALUE ? 0 : stateId); }); registerServerbound(ServerboundPackets1_17.EDIT_BOOK, wrapper -> { - Item item = wrapper.read(Type.ITEM1_13_2); - boolean signing = wrapper.read(Type.BOOLEAN); - wrapper.passthrough(Type.VAR_INT); // Slot comes first + Item item = wrapper.read(Types.ITEM1_13_2); + boolean signing = wrapper.read(Types.BOOLEAN); + wrapper.passthrough(Types.VAR_INT); // Slot comes first CompoundTag tag = item.tag(); ListTag pagesTag; @@ -107,8 +108,8 @@ public final class Protocol1_17To1_17_1 extends BackwardsProtocol(pagesTag.getValue().subList(0, MAX_PAGES)); } - wrapper.write(Type.VAR_INT, pagesTag.size()); + wrapper.write(Types.VAR_INT, pagesTag.size()); for (StringTag pageTag : pagesTag) { String page = pageTag.getValue(); // Limit page length @@ -125,11 +126,11 @@ public final class Protocol1_17To1_17_1 extends BackwardsProtocol. */ -package com.viaversion.viabackwards.protocol.protocol1_17to1_17_1.storage; +package com.viaversion.viabackwards.protocol.v1_17_1to1_17.storage; import com.viaversion.viaversion.api.connection.StorableObject; import com.viaversion.viaversion.libs.fastutil.ints.Int2IntMap; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/Protocol1_16_4To1_17.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_17to1_16_4/Protocol1_17To1_16_4.java similarity index 60% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/Protocol1_16_4To1_17.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_17to1_16_4/Protocol1_17To1_16_4.java index 1a6c7757..0a216c27 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/Protocol1_16_4To1_17.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_17to1_16_4/Protocol1_17To1_16_4.java @@ -15,32 +15,32 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_16_4to1_17; +package com.viaversion.viabackwards.protocol.v1_17to1_16_4; import com.viaversion.viabackwards.ViaBackwards; import com.viaversion.viabackwards.api.BackwardsProtocol; -import com.viaversion.viabackwards.api.data.BackwardsMappings; +import com.viaversion.viabackwards.api.data.BackwardsMappingData; import com.viaversion.viabackwards.api.rewriters.SoundRewriter; import com.viaversion.viabackwards.api.rewriters.TranslatableRewriter; -import com.viaversion.viabackwards.protocol.protocol1_16_4to1_17.packets.BlockItemPackets1_17; -import com.viaversion.viabackwards.protocol.protocol1_16_4to1_17.packets.EntityPackets1_17; -import com.viaversion.viabackwards.protocol.protocol1_16_4to1_17.storage.PingRequests; -import com.viaversion.viabackwards.protocol.protocol1_16_4to1_17.storage.PlayerLastCursorItem; +import com.viaversion.viabackwards.protocol.v1_17to1_16_4.rewriter.BlockItemPacketRewriter1_17; +import com.viaversion.viabackwards.protocol.v1_17to1_16_4.rewriter.EntityPacketRewriter1_17; +import com.viaversion.viabackwards.protocol.v1_17to1_16_4.storage.PingRequests; +import com.viaversion.viabackwards.protocol.v1_17to1_16_4.storage.PlayerLastCursorItem; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.RegistryType; import com.viaversion.viaversion.api.minecraft.TagData; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_17; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; -import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.data.entity.EntityTrackerBase; import com.viaversion.viaversion.libs.fastutil.ints.IntArrayList; import com.viaversion.viaversion.libs.fastutil.ints.IntList; -import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ClientboundPackets1_16_2; -import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ServerboundPackets1_16_2; -import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.ClientboundPackets1_17; -import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.Protocol1_17To1_16_4; -import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.ServerboundPackets1_17; +import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.packet.ClientboundPackets1_16_2; +import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.packet.ServerboundPackets1_16_2; +import com.viaversion.viaversion.protocols.v1_16_4to1_17.Protocol1_16_4To1_17; +import com.viaversion.viaversion.protocols.v1_16_4to1_17.packet.ClientboundPackets1_17; +import com.viaversion.viaversion.protocols.v1_16_4to1_17.packet.ServerboundPackets1_17; import com.viaversion.viaversion.rewriter.ComponentRewriter; import com.viaversion.viaversion.rewriter.IdRewriteFunction; import com.viaversion.viaversion.rewriter.StatisticsRewriter; @@ -51,17 +51,17 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -public final class Protocol1_16_4To1_17 extends BackwardsProtocol { +public final class Protocol1_17To1_16_4 extends BackwardsProtocol { - public static final BackwardsMappings MAPPINGS = new BackwardsMappings("1.17", "1.16.2", Protocol1_17To1_16_4.class); + public static final BackwardsMappingData MAPPINGS = new BackwardsMappingData("1.17", "1.16.2", Protocol1_16_4To1_17.class); private static final RegistryType[] TAG_REGISTRY_TYPES = {RegistryType.BLOCK, RegistryType.ITEM, RegistryType.FLUID, RegistryType.ENTITY}; private static final int[] EMPTY_ARRAY = {}; - private final EntityPackets1_17 entityRewriter = new EntityPackets1_17(this); - private final BlockItemPackets1_17 blockItemPackets = new BlockItemPackets1_17(this); + private final EntityPacketRewriter1_17 entityRewriter = new EntityPacketRewriter1_17(this); + private final BlockItemPacketRewriter1_17 blockItemPackets = new BlockItemPacketRewriter1_17(this); private final TranslatableRewriter translatableRewriter = new TranslatableRewriter<>(this, ComponentRewriter.ReadType.JSON); private final TagRewriter tagRewriter = new TagRewriter<>(this); - public Protocol1_16_4To1_17() { + public Protocol1_17To1_16_4() { super(ClientboundPackets1_17.class, ClientboundPackets1_16_2.class, ServerboundPackets1_17.class, ServerboundPackets1_16_2.class); } @@ -69,32 +69,32 @@ public final class Protocol1_16_4To1_17 extends BackwardsProtocol soundRewriter = new SoundRewriter<>(this); soundRewriter.registerSound(ClientboundPackets1_17.SOUND); - soundRewriter.registerSound(ClientboundPackets1_17.ENTITY_SOUND); - soundRewriter.registerNamedSound(ClientboundPackets1_17.NAMED_SOUND); + soundRewriter.registerSound(ClientboundPackets1_17.SOUND_ENTITY); + soundRewriter.registerNamedSound(ClientboundPackets1_17.CUSTOM_SOUND); soundRewriter.registerStopSound(ClientboundPackets1_17.STOP_SOUND); - registerClientbound(ClientboundPackets1_17.TAGS, wrapper -> { + registerClientbound(ClientboundPackets1_17.UPDATE_TAGS, wrapper -> { Map> tags = new HashMap<>(); - int length = wrapper.read(Type.VAR_INT); + int length = wrapper.read(Types.VAR_INT); for (int i = 0; i < length; i++) { - String resourceKey = Key.stripMinecraftNamespace(wrapper.read(Type.STRING)); + String resourceKey = Key.stripMinecraftNamespace(wrapper.read(Types.STRING)); List tagList = new ArrayList<>(); tags.put(resourceKey, tagList); - int tagLength = wrapper.read(Type.VAR_INT); + int tagLength = wrapper.read(Types.VAR_INT); for (int j = 0; j < tagLength; j++) { - String identifier = wrapper.read(Type.STRING); - int[] entries = wrapper.read(Type.VAR_INT_ARRAY_PRIMITIVE); + String identifier = wrapper.read(Types.STRING); + int[] entries = wrapper.read(Types.VAR_INT_ARRAY_PRIMITIVE); tagList.add(new TagData(identifier, entries)); } } @@ -104,13 +104,13 @@ public final class Protocol1_16_4To1_17 extends BackwardsProtocol tagList = tags.get(type.resourceLocation()); if (tagList == null) { // Higher versions may not send the otherwise expected tags - wrapper.write(Type.VAR_INT, 0); + wrapper.write(Types.VAR_INT, 0); continue; } IdRewriteFunction rewriter = tagRewriter.getRewriter(type); - wrapper.write(Type.VAR_INT, tagList.size()); + wrapper.write(Types.VAR_INT, tagList.size()); for (TagData tagData : tagList) { int[] entries = tagData.entries(); if (rewriter != null) { @@ -125,41 +125,41 @@ public final class Protocol1_16_4To1_17 extends BackwardsProtocol(this).register(ClientboundPackets1_17.STATISTICS); + new StatisticsRewriter<>(this).register(ClientboundPackets1_17.AWARD_STATS); registerClientbound(ClientboundPackets1_17.RESOURCE_PACK, wrapper -> { - wrapper.passthrough(Type.STRING); - wrapper.passthrough(Type.STRING); - wrapper.read(Type.BOOLEAN); // Required - wrapper.read(Type.OPTIONAL_COMPONENT); // Prompt message + wrapper.passthrough(Types.STRING); + wrapper.passthrough(Types.STRING); + wrapper.read(Types.BOOLEAN); // Required + wrapper.read(Types.OPTIONAL_COMPONENT); // Prompt message }); - registerClientbound(ClientboundPackets1_17.EXPLOSION, new PacketHandlers() { + registerClientbound(ClientboundPackets1_17.EXPLODE, new PacketHandlers() { @Override public void register() { - map(Type.FLOAT); // X - map(Type.FLOAT); // Y - map(Type.FLOAT); // Z - map(Type.FLOAT); // Strength + map(Types.FLOAT); // X + map(Types.FLOAT); // Y + map(Types.FLOAT); // Z + map(Types.FLOAT); // Strength handler(wrapper -> { - wrapper.write(Type.INT, wrapper.read(Type.VAR_INT)); // Collection length + wrapper.write(Types.INT, wrapper.read(Types.VAR_INT)); // Collection length }); } }); - registerClientbound(ClientboundPackets1_17.SPAWN_POSITION, new PacketHandlers() { + registerClientbound(ClientboundPackets1_17.SET_DEFAULT_SPAWN_POSITION, new PacketHandlers() { @Override public void register() { - map(Type.POSITION1_14); + map(Types.BLOCK_POSITION1_14); handler(wrapper -> { // Angle (which Mojang just forgot to write to the buffer, lol) - wrapper.read(Type.FLOAT); + wrapper.read(Types.FLOAT); }); } }); @@ -167,51 +167,51 @@ public final class Protocol1_16_4To1_17 extends BackwardsProtocol { wrapper.cancel(); - int id = wrapper.read(Type.INT); + int id = wrapper.read(Types.INT); short shortId = (short) id; if (id == shortId && ViaBackwards.getConfig().handlePingsAsInvAcknowledgements()) { wrapper.user().get(PingRequests.class).addId(shortId); // Send inventory acknowledgement to replace ping packet functionality in the unsigned byte range - PacketWrapper acknowledgementPacket = wrapper.create(ClientboundPackets1_16_2.WINDOW_CONFIRMATION); - acknowledgementPacket.write(Type.UNSIGNED_BYTE, (short) 0); // Inventory id - acknowledgementPacket.write(Type.SHORT, shortId); // Confirmation id - acknowledgementPacket.write(Type.BOOLEAN, false); // Accepted - acknowledgementPacket.send(Protocol1_16_4To1_17.class); + PacketWrapper acknowledgementPacket = wrapper.create(ClientboundPackets1_16_2.CONTAINER_ACK); + acknowledgementPacket.write(Types.UNSIGNED_BYTE, (short) 0); // Inventory id + acknowledgementPacket.write(Types.SHORT, shortId); // Confirmation id + acknowledgementPacket.write(Types.BOOLEAN, false); // Accepted + acknowledgementPacket.send(Protocol1_17To1_16_4.class); return; } // Plugins expecting a real response will have to handle this accordingly themselves PacketWrapper pongPacket = wrapper.create(ServerboundPackets1_17.PONG); - pongPacket.write(Type.INT, id); - pongPacket.sendToServer(Protocol1_16_4To1_17.class); + pongPacket.write(Types.INT, id); + pongPacket.sendToServer(Protocol1_17To1_16_4.class); }); - registerServerbound(ServerboundPackets1_16_2.CLIENT_SETTINGS, new PacketHandlers() { + registerServerbound(ServerboundPackets1_16_2.CLIENT_INFORMATION, new PacketHandlers() { @Override public void register() { - map(Type.STRING); // Locale - map(Type.BYTE); // View distance - map(Type.VAR_INT); // Chat mode - map(Type.BOOLEAN); // Chat colors - map(Type.UNSIGNED_BYTE); // Chat flags - map(Type.VAR_INT); // Main hand + map(Types.STRING); // Locale + map(Types.BYTE); // View distance + map(Types.VAR_INT); // Chat mode + map(Types.BOOLEAN); // Chat colors + map(Types.UNSIGNED_BYTE); // Chat flags + map(Types.VAR_INT); // Main hand handler(wrapper -> { - wrapper.write(Type.BOOLEAN, false); // Text filtering + wrapper.write(Types.BOOLEAN, false); // Text filtering }); } }); //TODO translatables - mergePacket(ClientboundPackets1_17.TITLE_TEXT, ClientboundPackets1_16_2.TITLE, 0); - mergePacket(ClientboundPackets1_17.TITLE_SUBTITLE, ClientboundPackets1_16_2.TITLE, 1); - mergePacket(ClientboundPackets1_17.ACTIONBAR, ClientboundPackets1_16_2.TITLE, 2); - mergePacket(ClientboundPackets1_17.TITLE_TIMES, ClientboundPackets1_16_2.TITLE, 3); - registerClientbound(ClientboundPackets1_17.CLEAR_TITLES, ClientboundPackets1_16_2.TITLE, wrapper -> { - if (wrapper.read(Type.BOOLEAN)) { - wrapper.write(Type.VAR_INT, 5); // Reset times + mergePacket(ClientboundPackets1_17.SET_TITLE_TEXT, ClientboundPackets1_16_2.SET_TITLES, 0); + mergePacket(ClientboundPackets1_17.SET_SUBTITLE_TEXT, ClientboundPackets1_16_2.SET_TITLES, 1); + mergePacket(ClientboundPackets1_17.SET_ACTION_BAR_TEXT, ClientboundPackets1_16_2.SET_TITLES, 2); + mergePacket(ClientboundPackets1_17.SET_TITLES_ANIMATION, ClientboundPackets1_16_2.SET_TITLES, 3); + registerClientbound(ClientboundPackets1_17.CLEAR_TITLES, ClientboundPackets1_16_2.SET_TITLES, wrapper -> { + if (wrapper.read(Types.BOOLEAN)) { + wrapper.write(Types.VAR_INT, 5); // Reset times } else { - wrapper.write(Type.VAR_INT, 4); // Simple clear + wrapper.write(Types.VAR_INT, 4); // Simple clear } }); @@ -226,7 +226,7 @@ public final class Protocol1_16_4To1_17 extends BackwardsProtocol wrapper.write(Type.VAR_INT, type)); + registerClientbound(newPacketType, oldPacketType, wrapper -> wrapper.write(Types.VAR_INT, type)); } @Override - public EntityPackets1_17 getEntityRewriter() { + public EntityPacketRewriter1_17 getEntityRewriter() { return entityRewriter; } @Override - public BlockItemPackets1_17 getItemRewriter() { + public BlockItemPacketRewriter1_17 getItemRewriter() { return blockItemPackets; } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/data/MapColorRewrites.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_17to1_16_4/data/MapColorRewrites.java similarity index 96% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/data/MapColorRewrites.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_17to1_16_4/data/MapColorRewrites.java index e78618f5..a68a9dca 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/data/MapColorRewrites.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_17to1_16_4/data/MapColorRewrites.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_16_4to1_17.data; +package com.viaversion.viabackwards.protocol.v1_17to1_16_4.data; import com.viaversion.viaversion.libs.fastutil.ints.Int2IntMap; import com.viaversion.viaversion.libs.fastutil.ints.Int2IntOpenHashMap; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/packets/BlockItemPackets1_17.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_17to1_16_4/rewriter/BlockItemPacketRewriter1_17.java similarity index 63% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/packets/BlockItemPackets1_17.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_17to1_16_4/rewriter/BlockItemPacketRewriter1_17.java index f088abc2..ca36ee12 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/packets/BlockItemPackets1_17.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_17to1_16_4/rewriter/BlockItemPacketRewriter1_17.java @@ -15,15 +15,15 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_16_4to1_17.packets; +package com.viaversion.viabackwards.protocol.v1_17to1_16_4.rewriter; import com.viaversion.viabackwards.ViaBackwards; import com.viaversion.viabackwards.api.rewriters.BackwardsItemRewriter; import com.viaversion.viabackwards.api.rewriters.MapColorRewriter; -import com.viaversion.viabackwards.protocol.protocol1_16_4to1_17.Protocol1_16_4To1_17; -import com.viaversion.viabackwards.protocol.protocol1_16_4to1_17.data.MapColorRewrites; -import com.viaversion.viabackwards.protocol.protocol1_16_4to1_17.storage.PingRequests; -import com.viaversion.viabackwards.protocol.protocol1_16_4to1_17.storage.PlayerLastCursorItem; +import com.viaversion.viabackwards.protocol.v1_17to1_16_4.Protocol1_17To1_16_4; +import com.viaversion.viabackwards.protocol.v1_17to1_16_4.data.MapColorRewrites; +import com.viaversion.viabackwards.protocol.v1_17to1_16_4.storage.PingRequests; +import com.viaversion.viabackwards.protocol.v1_17to1_16_4.storage.PlayerLastCursorItem; import com.viaversion.viaversion.api.data.entity.EntityTracker; import com.viaversion.viaversion.api.minecraft.BlockChangeRecord; import com.viaversion.viaversion.api.minecraft.chunks.Chunk; @@ -34,16 +34,17 @@ import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_16_2; import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_17; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.LongArrayTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.NumberTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.Tag; -import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ClientboundPackets1_16_2; -import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ServerboundPackets1_16_2; -import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.ClientboundPackets1_17; -import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.ServerboundPackets1_17; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.LongArrayTag; +import com.viaversion.nbt.tag.NumberTag; +import com.viaversion.nbt.tag.Tag; +import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.packet.ClientboundPackets1_16_2; +import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.packet.ServerboundPackets1_16_2; +import com.viaversion.viaversion.protocols.v1_16_4to1_17.packet.ClientboundPackets1_17; +import com.viaversion.viaversion.protocols.v1_16_4to1_17.packet.ServerboundPackets1_17; import com.viaversion.viaversion.rewriter.BlockRewriter; import com.viaversion.viaversion.rewriter.RecipeRewriter; import com.viaversion.viaversion.util.CompactArrayUtil; @@ -53,31 +54,31 @@ import java.util.Arrays; import java.util.BitSet; import java.util.List; -public final class BlockItemPackets1_17 extends BackwardsItemRewriter { +public final class BlockItemPacketRewriter1_17 extends BackwardsItemRewriter { - public BlockItemPackets1_17(Protocol1_16_4To1_17 protocol) { - super(protocol, Type.ITEM1_13_2, Type.ITEM1_13_2_SHORT_ARRAY); + public BlockItemPacketRewriter1_17(Protocol1_17To1_16_4 protocol) { + super(protocol, Types.ITEM1_13_2, Types.ITEM1_13_2_SHORT_ARRAY); } @Override protected void registerPackets() { BlockRewriter blockRewriter = BlockRewriter.for1_14(protocol); - new RecipeRewriter<>(protocol).register(ClientboundPackets1_17.DECLARE_RECIPES); + new RecipeRewriter<>(protocol).register(ClientboundPackets1_17.UPDATE_RECIPES); - registerSetCooldown(ClientboundPackets1_17.COOLDOWN); - registerWindowItems(ClientboundPackets1_17.WINDOW_ITEMS); - registerEntityEquipmentArray(ClientboundPackets1_17.ENTITY_EQUIPMENT); - registerTradeList(ClientboundPackets1_17.TRADE_LIST); - registerAdvancements(ClientboundPackets1_17.ADVANCEMENTS); + registerCooldown(ClientboundPackets1_17.COOLDOWN); + registerSetContent(ClientboundPackets1_17.CONTAINER_SET_CONTENT); + registerSetEquipment(ClientboundPackets1_17.SET_EQUIPMENT); + registerMerchantOffers(ClientboundPackets1_17.MERCHANT_OFFERS); + registerAdvancements(ClientboundPackets1_17.UPDATE_ADVANCEMENTS); - blockRewriter.registerAcknowledgePlayerDigging(ClientboundPackets1_17.ACKNOWLEDGE_PLAYER_DIGGING); - blockRewriter.registerBlockAction(ClientboundPackets1_17.BLOCK_ACTION); - blockRewriter.registerEffect(ClientboundPackets1_17.EFFECT, 1010, 2001); + blockRewriter.registerBlockBreakAck(ClientboundPackets1_17.BLOCK_BREAK_ACK); + blockRewriter.registerBlockEvent(ClientboundPackets1_17.BLOCK_EVENT); + blockRewriter.registerLevelEvent(ClientboundPackets1_17.LEVEL_EVENT, 1010, 2001); - registerCreativeInvAction(ServerboundPackets1_16_2.CREATIVE_INVENTORY_ACTION); - protocol.registerServerbound(ServerboundPackets1_16_2.EDIT_BOOK, wrapper -> handleItemToServer(wrapper.user(), wrapper.passthrough(Type.ITEM1_13_2))); + registerSetCreativeModeSlot(ServerboundPackets1_16_2.SET_CREATIVE_MODE_SLOT); + protocol.registerServerbound(ServerboundPackets1_16_2.EDIT_BOOK, wrapper -> handleItemToServer(wrapper.user(), wrapper.passthrough(Types.ITEM1_13_2))); // TODO Since the carried and modified items are typically set incorrectly, the server sends unnecessary // set slot packets after practically every window click, since it thinks the client and server @@ -86,19 +87,19 @@ public final class BlockItemPackets1_17 extends BackwardsItemRewriter { - short slot = wrapper.passthrough(Type.SHORT); // Slot - byte button = wrapper.passthrough(Type.BYTE); // Button - wrapper.read(Type.SHORT); // Action id - removed - int mode = wrapper.passthrough(Type.VAR_INT); // Mode - Item clicked = handleItemToServer(wrapper.user(), wrapper.read(Type.ITEM1_13_2)); // Clicked item + short slot = wrapper.passthrough(Types.SHORT); // Slot + byte button = wrapper.passthrough(Types.BYTE); // Button + wrapper.read(Types.SHORT); // Action id - removed + int mode = wrapper.passthrough(Types.VAR_INT); // Mode + Item clicked = handleItemToServer(wrapper.user(), wrapper.read(Types.ITEM1_13_2)); // Clicked item // The 1.17 client would check the entire inventory for changes before -> after a click and send the changed slots here - wrapper.write(Type.VAR_INT, 0); // Empty array of slot+item + wrapper.write(Types.VAR_INT, 0); // Empty array of slot+item PlayerLastCursorItem state = wrapper.user().get(PlayerLastCursorItem.class); if (mode == 0 && button == 0 && clicked != null) { @@ -128,19 +129,19 @@ public final class BlockItemPackets1_17 extends BackwardsItemRewriter { - short windowId = wrapper.passthrough(Type.UNSIGNED_BYTE); - short slot = wrapper.passthrough(Type.SHORT); + protocol.registerClientbound(ClientboundPackets1_17.CONTAINER_SET_SLOT, wrapper -> { + short windowId = wrapper.passthrough(Types.UNSIGNED_BYTE); + short slot = wrapper.passthrough(Types.SHORT); - Item carried = wrapper.read(Type.ITEM1_13_2); + Item carried = wrapper.read(Types.ITEM1_13_2); if (carried != null && windowId == -1 && slot == -1) { // This is related to the hack to fix click and drag ghost items above. // After a completed drag, we have no idea how many items remain on the cursor, @@ -152,91 +153,91 @@ public final class BlockItemPackets1_17 extends BackwardsItemRewriter { + protocol.registerServerbound(ServerboundPackets1_16_2.CONTAINER_ACK, null, wrapper -> { wrapper.cancel(); if (!ViaBackwards.getConfig().handlePingsAsInvAcknowledgements()) { return; } // Handle ping packet replacement - short inventoryId = wrapper.read(Type.UNSIGNED_BYTE); - short confirmationId = wrapper.read(Type.SHORT); - boolean accepted = wrapper.read(Type.BOOLEAN); + short inventoryId = wrapper.read(Types.UNSIGNED_BYTE); + short confirmationId = wrapper.read(Types.SHORT); + boolean accepted = wrapper.read(Types.BOOLEAN); if (inventoryId == 0 && accepted && wrapper.user().get(PingRequests.class).removeId(confirmationId)) { PacketWrapper pongPacket = wrapper.create(ServerboundPackets1_17.PONG); - pongPacket.write(Type.INT, (int) confirmationId); - pongPacket.sendToServer(Protocol1_16_4To1_17.class); + pongPacket.write(Types.INT, (int) confirmationId); + pongPacket.sendToServer(Protocol1_17To1_16_4.class); } }); - protocol.registerClientbound(ClientboundPackets1_17.SPAWN_PARTICLE, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_17.LEVEL_PARTICLES, new PacketHandlers() { @Override public void register() { - map(Type.INT); // Particle id - map(Type.BOOLEAN); // Long distance - map(Type.DOUBLE); // X - map(Type.DOUBLE); // Y - map(Type.DOUBLE); // Z - map(Type.FLOAT); // Offset X - map(Type.FLOAT); // Offset Y - map(Type.FLOAT); // Offset Z - map(Type.FLOAT); // Particle data - map(Type.INT); // Particle count + map(Types.INT); // Particle id + map(Types.BOOLEAN); // Long distance + map(Types.DOUBLE); // X + map(Types.DOUBLE); // Y + map(Types.DOUBLE); // Z + map(Types.FLOAT); // Offset X + map(Types.FLOAT); // Offset Y + map(Types.FLOAT); // Offset Z + map(Types.FLOAT); // Particle data + map(Types.INT); // Particle count handler(wrapper -> { - int id = wrapper.get(Type.INT, 0); + int id = wrapper.get(Types.INT, 0); if (id == 16) { - wrapper.passthrough(Type.FLOAT); // R - wrapper.passthrough(Type.FLOAT); // G - wrapper.passthrough(Type.FLOAT); // B - wrapper.passthrough(Type.FLOAT); // Scale + wrapper.passthrough(Types.FLOAT); // R + wrapper.passthrough(Types.FLOAT); // G + wrapper.passthrough(Types.FLOAT); // B + wrapper.passthrough(Types.FLOAT); // Scale // Dust color transition -> Dust - wrapper.read(Type.FLOAT); // R - wrapper.read(Type.FLOAT); // G - wrapper.read(Type.FLOAT); // B + wrapper.read(Types.FLOAT); // R + wrapper.read(Types.FLOAT); // G + wrapper.read(Types.FLOAT); // B } else if (id == 37) { // Vibration signal - no nice mapping possible without tracking entity positions and doing particle tasks - wrapper.set(Type.INT, 0, -1); + wrapper.set(Types.INT, 0, -1); wrapper.cancel(); } }); - handler(getSpawnParticleHandler()); + handler(levelParticlesHandler()); } }); - protocol.mergePacket(ClientboundPackets1_17.WORLD_BORDER_SIZE, ClientboundPackets1_16_2.WORLD_BORDER, 0); - protocol.mergePacket(ClientboundPackets1_17.WORLD_BORDER_LERP_SIZE, ClientboundPackets1_16_2.WORLD_BORDER, 1); - protocol.mergePacket(ClientboundPackets1_17.WORLD_BORDER_CENTER, ClientboundPackets1_16_2.WORLD_BORDER, 2); - protocol.mergePacket(ClientboundPackets1_17.WORLD_BORDER_INIT, ClientboundPackets1_16_2.WORLD_BORDER, 3); - protocol.mergePacket(ClientboundPackets1_17.WORLD_BORDER_WARNING_DELAY, ClientboundPackets1_16_2.WORLD_BORDER, 4); - protocol.mergePacket(ClientboundPackets1_17.WORLD_BORDER_WARNING_DISTANCE, ClientboundPackets1_16_2.WORLD_BORDER, 5); + protocol.mergePacket(ClientboundPackets1_17.SET_BORDER_SIZE, ClientboundPackets1_16_2.SET_BORDER, 0); + protocol.mergePacket(ClientboundPackets1_17.SET_BORDER_LERP_SIZE, ClientboundPackets1_16_2.SET_BORDER, 1); + protocol.mergePacket(ClientboundPackets1_17.SET_BORDER_CENTER, ClientboundPackets1_16_2.SET_BORDER, 2); + protocol.mergePacket(ClientboundPackets1_17.INITIALIZE_BORDER, ClientboundPackets1_16_2.SET_BORDER, 3); + protocol.mergePacket(ClientboundPackets1_17.SET_BORDER_WARNING_DELAY, ClientboundPackets1_16_2.SET_BORDER, 4); + protocol.mergePacket(ClientboundPackets1_17.SET_BORDER_WARNING_DISTANCE, ClientboundPackets1_16_2.SET_BORDER, 5); // The Great Shrunkening // Chunk sections *will* be lost ¯\_(ツ)_/¯ - protocol.registerClientbound(ClientboundPackets1_17.UPDATE_LIGHT, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_17.LIGHT_UPDATE, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); // X - map(Type.VAR_INT); // Z - map(Type.BOOLEAN); // Trust edges + map(Types.VAR_INT); // X + map(Types.VAR_INT); // Z + map(Types.BOOLEAN); // Trust edges handler(wrapper -> { - EntityTracker tracker = wrapper.user().getEntityTracker(Protocol1_16_4To1_17.class); + EntityTracker tracker = wrapper.user().getEntityTracker(Protocol1_17To1_16_4.class); int startFromSection = Math.max(0, -(tracker.currentMinY() >> 4)); - long[] skyLightMask = wrapper.read(Type.LONG_ARRAY_PRIMITIVE); - long[] blockLightMask = wrapper.read(Type.LONG_ARRAY_PRIMITIVE); + long[] skyLightMask = wrapper.read(Types.LONG_ARRAY_PRIMITIVE); + long[] blockLightMask = wrapper.read(Types.LONG_ARRAY_PRIMITIVE); int cutSkyLightMask = cutLightMask(skyLightMask, startFromSection); int cutBlockLightMask = cutLightMask(blockLightMask, startFromSection); - wrapper.write(Type.VAR_INT, cutSkyLightMask); - wrapper.write(Type.VAR_INT, cutBlockLightMask); + wrapper.write(Types.VAR_INT, cutSkyLightMask); + wrapper.write(Types.VAR_INT, cutBlockLightMask); - long[] emptySkyLightMask = wrapper.read(Type.LONG_ARRAY_PRIMITIVE); - long[] emptyBlockLightMask = wrapper.read(Type.LONG_ARRAY_PRIMITIVE); - wrapper.write(Type.VAR_INT, cutLightMask(emptySkyLightMask, startFromSection)); - wrapper.write(Type.VAR_INT, cutLightMask(emptyBlockLightMask, startFromSection)); + long[] emptySkyLightMask = wrapper.read(Types.LONG_ARRAY_PRIMITIVE); + long[] emptyBlockLightMask = wrapper.read(Types.LONG_ARRAY_PRIMITIVE); + wrapper.write(Types.VAR_INT, cutLightMask(emptySkyLightMask, startFromSection)); + wrapper.write(Types.VAR_INT, cutLightMask(emptyBlockLightMask, startFromSection)); writeLightArrays(wrapper, BitSet.valueOf(skyLightMask), cutSkyLightMask, startFromSection, tracker.currentWorldSectionHeight()); writeLightArrays(wrapper, BitSet.valueOf(blockLightMask), cutBlockLightMask, startFromSection, tracker.currentWorldSectionHeight()); @@ -245,34 +246,34 @@ public final class BlockItemPackets1_17 extends BackwardsItemRewriter light = new ArrayList<>(); // Remove lower bounds for (int i = 0; i < startFromSection; i++) { if (bitMask.get(i)) { - wrapper.read(Type.BYTE_ARRAY_PRIMITIVE); + wrapper.read(Types.BYTE_ARRAY_PRIMITIVE); } } // Add the important 18 sections for (int i = 0; i < 18; i++) { if (isSet(cutBitMask, i)) { - light.add(wrapper.read(Type.BYTE_ARRAY_PRIMITIVE)); + light.add(wrapper.read(Types.BYTE_ARRAY_PRIMITIVE)); } } // Remove upper bounds for (int i = startFromSection + 18; i < sectionHeight + 2; i++) { if (bitMask.get(i)) { - wrapper.read(Type.BYTE_ARRAY_PRIMITIVE); + wrapper.read(Types.BYTE_ARRAY_PRIMITIVE); } } // Aaand we're done for (byte[] bytes : light) { - wrapper.write(Type.BYTE_ARRAY_PRIMITIVE, bytes); + wrapper.write(Types.BYTE_ARRAY_PRIMITIVE, bytes); } } @@ -281,21 +282,21 @@ public final class BlockItemPackets1_17 extends BackwardsItemRewriter { // Remove sections below y 0 and above 255 - long chunkPos = wrapper.get(Type.LONG, 0); + long chunkPos = wrapper.get(Types.LONG, 0); int chunkY = (int) (chunkPos << 44 >> 44); if (chunkY < 0 || chunkY > 15) { wrapper.cancel(); return; } - BlockChangeRecord[] records = wrapper.passthrough(Type.VAR_LONG_BLOCK_CHANGE_RECORD_ARRAY); + BlockChangeRecord[] records = wrapper.passthrough(Types.VAR_LONG_BLOCK_CHANGE_ARRAY); for (BlockChangeRecord record : records) { record.setBlockId(protocol.getMappingData().getNewBlockStateId(record.getBlockId())); } @@ -303,25 +304,25 @@ public final class BlockItemPackets1_17 extends BackwardsItemRewriter { - int y = wrapper.get(Type.POSITION1_14, 0).y(); + int y = wrapper.get(Types.BLOCK_POSITION1_14, 0).y(); if (y < 0 || y > 255) { wrapper.cancel(); return; } - wrapper.set(Type.VAR_INT, 0, protocol.getMappingData().getNewBlockStateId(wrapper.get(Type.VAR_INT, 0))); + wrapper.set(Types.VAR_INT, 0, protocol.getMappingData().getNewBlockStateId(wrapper.get(Types.VAR_INT, 0))); }); } }); - protocol.registerClientbound(ClientboundPackets1_17.CHUNK_DATA, wrapper -> { - EntityTracker tracker = wrapper.user().getEntityTracker(Protocol1_16_4To1_17.class); + protocol.registerClientbound(ClientboundPackets1_17.LEVEL_CHUNK, wrapper -> { + EntityTracker tracker = wrapper.user().getEntityTracker(Protocol1_17To1_16_4.class); int currentWorldSectionHeight = tracker.currentWorldSectionHeight(); Chunk chunk = wrapper.read(new ChunkType1_17(currentWorldSectionHeight)); @@ -339,11 +340,10 @@ public final class BlockItemPackets1_17 extends BackwardsItemRewriter { - int y = wrapper.passthrough(Type.POSITION1_14).y(); + int y = wrapper.passthrough(Types.BLOCK_POSITION1_14).y(); if (y < 0 || y > 255) { wrapper.cancel(); } }); - protocol.registerClientbound(ClientboundPackets1_17.BLOCK_BREAK_ANIMATION, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_17.BLOCK_DESTRUCTION, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); + map(Types.VAR_INT); handler(wrapper -> { - int y = wrapper.passthrough(Type.POSITION1_14).y(); + int y = wrapper.passthrough(Types.BLOCK_POSITION1_14).y(); if (y < 0 || y > 255) { wrapper.cancel(); } @@ -390,17 +390,17 @@ public final class BlockItemPackets1_17 extends BackwardsItemRewriter wrapper.write(Type.BOOLEAN, true)); // Tracking position - map(Type.BOOLEAN); // Locked + map(Types.VAR_INT); // Map ID + map(Types.BYTE); // Scale + handler(wrapper -> wrapper.write(Types.BOOLEAN, true)); // Tracking position + map(Types.BOOLEAN); // Locked handler(wrapper -> { - boolean hasMarkers = wrapper.read(Type.BOOLEAN); + boolean hasMarkers = wrapper.read(Types.BOOLEAN); if (!hasMarkers) { - wrapper.write(Type.VAR_INT, 0); // Array size + wrapper.write(Types.VAR_INT, 0); // Array size } else { MapColorRewriter.getRewriteHandler(MapColorRewrites::getMappedColor).handle(wrapper); } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/packets/EntityPackets1_17.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_17to1_16_4/rewriter/EntityPacketRewriter1_17.java similarity index 63% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/packets/EntityPackets1_17.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_17to1_16_4/rewriter/EntityPacketRewriter1_17.java index 02f5c383..2b2fc1a2 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/packets/EntityPackets1_17.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_17to1_16_4/rewriter/EntityPacketRewriter1_17.java @@ -15,71 +15,72 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_16_4to1_17.packets; +package com.viaversion.viabackwards.protocol.v1_17to1_16_4.rewriter; import com.viaversion.viabackwards.ViaBackwards; import com.viaversion.viabackwards.api.rewriters.EntityRewriter; -import com.viaversion.viabackwards.protocol.protocol1_16_4to1_17.Protocol1_16_4To1_17; +import com.viaversion.viabackwards.protocol.v1_17to1_16_4.Protocol1_17To1_16_4; import com.viaversion.viaversion.api.minecraft.Particle; import com.viaversion.viaversion.api.minecraft.entities.EntityType; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_17; -import com.viaversion.viaversion.api.minecraft.metadata.MetaType; +import com.viaversion.viaversion.api.minecraft.entitydata.EntityDataType; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.version.Types1_16; import com.viaversion.viaversion.api.type.types.version.Types1_17; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.*; -import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ClientboundPackets1_16_2; -import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.ClientboundPackets1_17; +import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.packet.ClientboundPackets1_16_2; +import com.viaversion.nbt.tag.*; +import com.viaversion.viaversion.protocols.v1_16_4to1_17.packet.ClientboundPackets1_17; import com.viaversion.viaversion.util.TagUtil; -public final class EntityPackets1_17 extends EntityRewriter { +public final class EntityPacketRewriter1_17 extends EntityRewriter { private boolean warned; - public EntityPackets1_17(Protocol1_16_4To1_17 protocol) { + public EntityPacketRewriter1_17(Protocol1_17To1_16_4 protocol) { super(protocol); } @Override protected void registerPackets() { - registerTrackerWithData(ClientboundPackets1_17.SPAWN_ENTITY, EntityTypes1_17.FALLING_BLOCK); - registerSpawnTracker(ClientboundPackets1_17.SPAWN_MOB); - registerTracker(ClientboundPackets1_17.SPAWN_EXPERIENCE_ORB, EntityTypes1_17.EXPERIENCE_ORB); - registerTracker(ClientboundPackets1_17.SPAWN_PAINTING, EntityTypes1_17.PAINTING); - registerTracker(ClientboundPackets1_17.SPAWN_PLAYER, EntityTypes1_17.PLAYER); - registerMetadataRewriter(ClientboundPackets1_17.ENTITY_METADATA, Types1_17.METADATA_LIST, Types1_16.METADATA_LIST); + registerTrackerWithData(ClientboundPackets1_17.ADD_ENTITY, EntityTypes1_17.FALLING_BLOCK); + registerSpawnTracker(ClientboundPackets1_17.ADD_MOB); + registerTracker(ClientboundPackets1_17.ADD_EXPERIENCE_ORB, EntityTypes1_17.EXPERIENCE_ORB); + registerTracker(ClientboundPackets1_17.ADD_PAINTING, EntityTypes1_17.PAINTING); + registerTracker(ClientboundPackets1_17.ADD_PLAYER, EntityTypes1_17.PLAYER); + registerSetEntityData(ClientboundPackets1_17.SET_ENTITY_DATA, Types1_17.ENTITY_DATA_LIST, Types1_16.ENTITY_DATA_LIST); - protocol.registerClientbound(ClientboundPackets1_17.REMOVE_ENTITY, ClientboundPackets1_16_2.DESTROY_ENTITIES, wrapper -> { - int entityId = wrapper.read(Type.VAR_INT); + protocol.registerClientbound(ClientboundPackets1_17.REMOVE_ENTITY, ClientboundPackets1_16_2.REMOVE_ENTITIES, wrapper -> { + int entityId = wrapper.read(Types.VAR_INT); tracker(wrapper.user()).removeEntity(entityId); // Write into single value array int[] array = {entityId}; - wrapper.write(Type.VAR_INT_ARRAY_PRIMITIVE, array); + wrapper.write(Types.VAR_INT_ARRAY_PRIMITIVE, array); }); - protocol.registerClientbound(ClientboundPackets1_17.JOIN_GAME, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_17.LOGIN, new PacketHandlers() { @Override public void register() { - map(Type.INT); // Entity ID - map(Type.BOOLEAN); // Hardcore - map(Type.BYTE); // Gamemode - map(Type.BYTE); // Previous Gamemode - map(Type.STRING_ARRAY); // Worlds - map(Type.NAMED_COMPOUND_TAG); // Dimension registry - map(Type.NAMED_COMPOUND_TAG); // Current dimension data - map(Type.STRING); // World + map(Types.INT); // Entity ID + map(Types.BOOLEAN); // Hardcore + map(Types.BYTE); // Gamemode + map(Types.BYTE); // Previous Gamemode + map(Types.STRING_ARRAY); // Worlds + map(Types.NAMED_COMPOUND_TAG); // Dimension registry + map(Types.NAMED_COMPOUND_TAG); // Current dimension data + map(Types.STRING); // World handler(wrapper -> { - byte previousGamemode = wrapper.get(Type.BYTE, 1); + byte previousGamemode = wrapper.get(Types.BYTE, 1); if (previousGamemode == -1) { // "Unset" gamemode removed - wrapper.set(Type.BYTE, 1, (byte) 0); + wrapper.set(Types.BYTE, 1, (byte) 0); } }); - handler(getTrackerHandler(EntityTypes1_17.PLAYER, Type.INT)); + handler(getTrackerHandler(EntityTypes1_17.PLAYER, Types.INT)); handler(worldDataTrackerHandler(1)); handler(wrapper -> { - CompoundTag registry = wrapper.get(Type.NAMED_COMPOUND_TAG, 0); + CompoundTag registry = wrapper.get(Types.NAMED_COMPOUND_TAG, 0); ListTag biomes = TagUtil.getRegistryEntries(registry, "worldgen/biome"); for (CompoundTag biome : biomes) { CompoundTag biomeCompound = biome.getCompoundTag("element"); @@ -95,7 +96,7 @@ public final class EntityPackets1_17 extends EntityRewriter reduceExtendedHeight(wrapper.get(Type.NAMED_COMPOUND_TAG, 0), true)); + handler(wrapper -> reduceExtendedHeight(wrapper.get(Types.NAMED_COMPOUND_TAG, 0), true)); } }); protocol.registerClientbound(ClientboundPackets1_17.PLAYER_POSITION, new PacketHandlers() { @Override public void register() { - map(Type.DOUBLE); - map(Type.DOUBLE); - map(Type.DOUBLE); - map(Type.FLOAT); - map(Type.FLOAT); - map(Type.BYTE); - map(Type.VAR_INT); - read(Type.BOOLEAN); // Dismount vehicle ¯\_(ツ)_/¯ + map(Types.DOUBLE); + map(Types.DOUBLE); + map(Types.DOUBLE); + map(Types.FLOAT); + map(Types.FLOAT); + map(Types.BYTE); + map(Types.VAR_INT); + read(Types.BOOLEAN); // Dismount vehicle ¯\_(ツ)_/¯ } }); - protocol.registerClientbound(ClientboundPackets1_17.ENTITY_PROPERTIES, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_17.UPDATE_ATTRIBUTES, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); // Entity id - handler(wrapper -> wrapper.write(Type.INT, wrapper.read(Type.VAR_INT))); // Collection length + map(Types.VAR_INT); // Entity id + handler(wrapper -> wrapper.write(Types.INT, wrapper.read(Types.VAR_INT))); // Collection length } }); // TODO translatables - protocol.mergePacket(ClientboundPackets1_17.COMBAT_ENTER, ClientboundPackets1_16_2.COMBAT_EVENT, 0); - protocol.mergePacket(ClientboundPackets1_17.COMBAT_END, ClientboundPackets1_16_2.COMBAT_EVENT, 1); - protocol.mergePacket(ClientboundPackets1_17.COMBAT_KILL, ClientboundPackets1_16_2.COMBAT_EVENT, 2); + protocol.mergePacket(ClientboundPackets1_17.PLAYER_COMBAT_ENTER, ClientboundPackets1_16_2.PLAYER_COMBAT, 0); + protocol.mergePacket(ClientboundPackets1_17.PLAYER_COMBAT_END, ClientboundPackets1_16_2.PLAYER_COMBAT, 1); + protocol.mergePacket(ClientboundPackets1_17.PLAYER_COMBAT_KILL, ClientboundPackets1_16_2.PLAYER_COMBAT, 2); } @Override protected void registerRewrites() { filter().handler((event, meta) -> { - meta.setMetaType(Types1_16.META_TYPES.byId(meta.metaType().typeId())); + meta.setDataType(Types1_16.ENTITY_DATA_TYPES.byId(meta.dataType().typeId())); - MetaType type = meta.metaType(); - if (type == Types1_16.META_TYPES.particleType) { + EntityDataType type = meta.dataType(); + if (type == Types1_16.ENTITY_DATA_TYPES.particleType) { Particle particle = (Particle) meta.getValue(); if (particle.id() == 16) { // Dust / Dust Transition // Remove transition target color values 4-6 @@ -157,7 +158,7 @@ public final class EntityPackets1_17 extends EntityRewriter. */ -package com.viaversion.viabackwards.protocol.protocol1_16_4to1_17.storage; +package com.viaversion.viabackwards.protocol.v1_17to1_16_4.storage; import com.viaversion.viaversion.api.connection.StorableObject; import com.viaversion.viaversion.libs.fastutil.ints.IntOpenHashSet; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/storage/PlayerLastCursorItem.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_17to1_16_4/storage/PlayerLastCursorItem.java similarity index 95% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/storage/PlayerLastCursorItem.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_17to1_16_4/storage/PlayerLastCursorItem.java index 54282e4f..d03cfcbf 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_16_4to1_17/storage/PlayerLastCursorItem.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_17to1_16_4/storage/PlayerLastCursorItem.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_16_4to1_17.storage; +package com.viaversion.viabackwards.protocol.v1_17to1_16_4.storage; import com.viaversion.viaversion.api.connection.StorableObject; import com.viaversion.viaversion.api.minecraft.item.DataItem; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_18to1_18_2/Protocol1_18To1_18_2.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_18_2to1_18/Protocol1_18_2To1_18.java similarity index 65% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_18to1_18_2/Protocol1_18To1_18_2.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_18_2to1_18/Protocol1_18_2To1_18.java index bdbc8671..35ace856 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_18to1_18_2/Protocol1_18To1_18_2.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_18_2to1_18/Protocol1_18_2To1_18.java @@ -15,34 +15,35 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_18to1_18_2; +package com.viaversion.viabackwards.protocol.v1_18_2to1_18; import com.viaversion.viabackwards.ViaBackwards; import com.viaversion.viabackwards.api.BackwardsProtocol; -import com.viaversion.viabackwards.protocol.protocol1_18to1_18_2.data.CommandRewriter1_18_2; +import com.viaversion.viabackwards.protocol.v1_18_2to1_18.data.CommandRewriter1_18_2; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.ListTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag; -import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.ServerboundPackets1_17; -import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.ClientboundPackets1_18; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.protocols.v1_16_4to1_17.packet.ServerboundPackets1_17; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.ListTag; +import com.viaversion.nbt.tag.StringTag; +import com.viaversion.viaversion.protocols.v1_17_1to1_18.packet.ClientboundPackets1_18; import com.viaversion.viaversion.util.TagUtil; -public final class Protocol1_18To1_18_2 extends BackwardsProtocol { +public final class Protocol1_18_2To1_18 extends BackwardsProtocol { - public Protocol1_18To1_18_2() { + public Protocol1_18_2To1_18() { super(ClientboundPackets1_18.class, ClientboundPackets1_18.class, ServerboundPackets1_17.class, ServerboundPackets1_17.class); } @Override protected void registerPackets() { - new CommandRewriter1_18_2(this).registerDeclareCommands(ClientboundPackets1_18.DECLARE_COMMANDS); + new CommandRewriter1_18_2(this).registerDeclareCommands(ClientboundPackets1_18.COMMANDS); final PacketHandler entityEffectIdHandler = wrapper -> { - final int id = wrapper.read(Type.VAR_INT); + final int id = wrapper.read(Types.VAR_INT); if ((byte) id != id) { if (!Via.getConfig().isSuppressConversionWarnings()) { ViaBackwards.getPlatform().getLogger().warning("Cannot send entity effect id " + id + " to old client"); @@ -51,47 +52,47 @@ public final class Protocol1_18To1_18_2 extends BackwardsProtocol { - final CompoundTag registry = wrapper.get(Type.NAMED_COMPOUND_TAG, 0); + final CompoundTag registry = wrapper.get(Types.NAMED_COMPOUND_TAG, 0); final ListTag dimensions = TagUtil.getRegistryEntries(registry, "dimension_type"); for (final CompoundTag dimension : dimensions) { removeTagPrefix(dimension.getCompoundTag("element")); } - removeTagPrefix(wrapper.get(Type.NAMED_COMPOUND_TAG, 1)); + removeTagPrefix(wrapper.get(Types.NAMED_COMPOUND_TAG, 1)); }); } }); - registerClientbound(ClientboundPackets1_18.RESPAWN, wrapper -> removeTagPrefix(wrapper.passthrough(Type.NAMED_COMPOUND_TAG))); + registerClientbound(ClientboundPackets1_18.RESPAWN, wrapper -> removeTagPrefix(wrapper.passthrough(Types.NAMED_COMPOUND_TAG))); } private void removeTagPrefix(CompoundTag tag) { diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_18to1_18_2/data/CommandRewriter1_18_2.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_18_2to1_18/data/CommandRewriter1_18_2.java similarity index 75% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_18to1_18_2/data/CommandRewriter1_18_2.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_18_2to1_18/data/CommandRewriter1_18_2.java index ee8b6648..457f1365 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_18to1_18_2/data/CommandRewriter1_18_2.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_18_2to1_18/data/CommandRewriter1_18_2.java @@ -15,27 +15,28 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_18to1_18_2.data; +package com.viaversion.viabackwards.protocol.v1_18_2to1_18.data; -import com.viaversion.viabackwards.protocol.protocol1_18to1_18_2.Protocol1_18To1_18_2; +import com.viaversion.viabackwards.protocol.v1_18_2to1_18.Protocol1_18_2To1_18; import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.ClientboundPackets1_18; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.protocols.v1_17_1to1_18.packet.ClientboundPackets1_18; import com.viaversion.viaversion.rewriter.CommandRewriter; import org.checkerframework.checker.nullness.qual.Nullable; public final class CommandRewriter1_18_2 extends CommandRewriter { - public CommandRewriter1_18_2(Protocol1_18To1_18_2 protocol) { + public CommandRewriter1_18_2(Protocol1_18_2To1_18 protocol) { super(protocol); // Uncompletable without the full list this.parserHandlers.put("minecraft:resource", wrapper -> { - wrapper.read(Type.STRING); - wrapper.write(Type.VAR_INT, 1); // Quotable string + wrapper.read(Types.STRING); + wrapper.write(Types.VAR_INT, 1); // Quotable string }); this.parserHandlers.put("minecraft:resource_or_tag", wrapper -> { - wrapper.read(Type.STRING); - wrapper.write(Type.VAR_INT, 1); // Quotable string + wrapper.read(Types.STRING); + wrapper.write(Types.VAR_INT, 1); // Quotable string }); } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_17_1to1_18/Protocol1_17_1To1_18.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_18to1_17_1/Protocol1_18To1_17_1.java similarity index 59% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_17_1to1_18/Protocol1_17_1To1_18.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_18to1_17_1/Protocol1_18To1_17_1.java index 82178c76..e4ec84db 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_17_1to1_18/Protocol1_17_1To1_18.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_18to1_17_1/Protocol1_18To1_17_1.java @@ -15,36 +15,37 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_17_1to1_18; +package com.viaversion.viabackwards.protocol.v1_18to1_17_1; import com.viaversion.viabackwards.api.BackwardsProtocol; import com.viaversion.viabackwards.api.rewriters.SoundRewriter; import com.viaversion.viabackwards.api.rewriters.TranslatableRewriter; -import com.viaversion.viabackwards.protocol.protocol1_17_1to1_18.data.BackwardsMappings; -import com.viaversion.viabackwards.protocol.protocol1_17_1to1_18.packets.BlockItemPackets1_18; -import com.viaversion.viabackwards.protocol.protocol1_17_1to1_18.packets.EntityPackets1_18; +import com.viaversion.viabackwards.protocol.v1_18to1_17_1.data.BackwardsMappingData1_18; +import com.viaversion.viabackwards.protocol.v1_18to1_17_1.rewriter.BlockItemPacketRewriter1_18; +import com.viaversion.viabackwards.protocol.v1_18to1_17_1.rewriter.EntityPacketRewriter1_18; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.RegistryType; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_17; import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.data.entity.EntityTrackerBase; -import com.viaversion.viaversion.protocols.protocol1_17_1to1_17.ClientboundPackets1_17_1; -import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.ServerboundPackets1_17; -import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.ClientboundPackets1_18; +import com.viaversion.viaversion.protocols.v1_16_4to1_17.packet.ServerboundPackets1_17; +import com.viaversion.viaversion.protocols.v1_17_1to1_18.packet.ClientboundPackets1_18; +import com.viaversion.viaversion.protocols.v1_17to1_17_1.packet.ClientboundPackets1_17_1; import com.viaversion.viaversion.rewriter.ComponentRewriter; import com.viaversion.viaversion.rewriter.TagRewriter; -public final class Protocol1_17_1To1_18 extends BackwardsProtocol { +public final class Protocol1_18To1_17_1 extends BackwardsProtocol { - private static final BackwardsMappings MAPPINGS = new BackwardsMappings(); - private final EntityPackets1_18 entityRewriter = new EntityPackets1_18(this); - private final BlockItemPackets1_18 itemRewriter = new BlockItemPackets1_18(this); + private static final BackwardsMappingData1_18 MAPPINGS = new BackwardsMappingData1_18(); + private final EntityPacketRewriter1_18 entityRewriter = new EntityPacketRewriter1_18(this); + private final BlockItemPacketRewriter1_18 itemRewriter = new BlockItemPacketRewriter1_18(this); private final TranslatableRewriter translatableRewriter = new TranslatableRewriter<>(this, ComponentRewriter.ReadType.JSON); private final TagRewriter tagRewriter = new TagRewriter<>(this); - public Protocol1_17_1To1_18() { + public Protocol1_18To1_17_1() { super(ClientboundPackets1_18.class, ClientboundPackets1_17_1.class, ServerboundPackets1_17.class, ServerboundPackets1_17.class); } @@ -52,68 +53,68 @@ public final class Protocol1_17_1To1_18 extends BackwardsProtocol soundRewriter = new SoundRewriter<>(this); soundRewriter.registerSound(ClientboundPackets1_18.SOUND); - soundRewriter.registerSound(ClientboundPackets1_18.ENTITY_SOUND); + soundRewriter.registerSound(ClientboundPackets1_18.SOUND_ENTITY); soundRewriter.registerStopSound(ClientboundPackets1_18.STOP_SOUND); - soundRewriter.registerNamedSound(ClientboundPackets1_18.NAMED_SOUND); + soundRewriter.registerNamedSound(ClientboundPackets1_18.CUSTOM_SOUND); tagRewriter.addEmptyTag(RegistryType.BLOCK, "minecraft:lava_pool_stone_replaceables"); - tagRewriter.registerGeneric(ClientboundPackets1_18.TAGS); + tagRewriter.registerGeneric(ClientboundPackets1_18.UPDATE_TAGS); - registerServerbound(ServerboundPackets1_17.CLIENT_SETTINGS, new PacketHandlers() { + registerServerbound(ServerboundPackets1_17.CLIENT_INFORMATION, new PacketHandlers() { @Override public void register() { - map(Type.STRING); // Language - map(Type.BYTE); // View distance - map(Type.VAR_INT); // Chat visibility - map(Type.BOOLEAN); // Chat colors - map(Type.UNSIGNED_BYTE); // Model customization - map(Type.VAR_INT); // Main hand - map(Type.BOOLEAN); // Text filtering enabled - create(Type.BOOLEAN, true); // Allow listing in server list preview + map(Types.STRING); // Language + map(Types.BYTE); // View distance + map(Types.VAR_INT); // Chat visibility + map(Types.BOOLEAN); // Chat colors + map(Types.UNSIGNED_BYTE); // Model customization + map(Types.VAR_INT); // Main hand + map(Types.BOOLEAN); // Text filtering enabled + create(Types.BOOLEAN, true); // Allow listing in server list preview } }); - registerClientbound(ClientboundPackets1_18.SCOREBOARD_OBJECTIVE, new PacketHandlers() { + registerClientbound(ClientboundPackets1_18.SET_OBJECTIVE, new PacketHandlers() { @Override public void register() { - map(Type.STRING); // Name + map(Types.STRING); // Name handler(cutName(0, 16)); } }); - registerClientbound(ClientboundPackets1_18.DISPLAY_SCOREBOARD, new PacketHandlers() { + registerClientbound(ClientboundPackets1_18.SET_DISPLAY_OBJECTIVE, new PacketHandlers() { @Override public void register() { - map(Type.BYTE); // Slot - map(Type.STRING); // Name + map(Types.BYTE); // Slot + map(Types.STRING); // Name handler(cutName(0, 16)); } }); - registerClientbound(ClientboundPackets1_18.TEAMS, new PacketHandlers() { + registerClientbound(ClientboundPackets1_18.SET_PLAYER_TEAM, new PacketHandlers() { @Override public void register() { - map(Type.STRING); // Name + map(Types.STRING); // Name handler(cutName(0, 16)); } }); - registerClientbound(ClientboundPackets1_18.UPDATE_SCORE, new PacketHandlers() { + registerClientbound(ClientboundPackets1_18.SET_SCORE, new PacketHandlers() { @Override public void register() { - map(Type.STRING); // Owner - map(Type.VAR_INT); // Method - map(Type.STRING); // Name + map(Types.STRING); // Owner + map(Types.VAR_INT); // Method + map(Types.STRING); // Name handler(cutName(0, 40)); handler(cutName(1, 16)); } @@ -123,9 +124,9 @@ public final class Protocol1_17_1To1_18 extends BackwardsProtocol { - final String s = wrapper.get(Type.STRING, index); + final String s = wrapper.get(Types.STRING, index); if (s.length() > maxLength) { - wrapper.set(Type.STRING, index, s.substring(0, maxLength)); + wrapper.set(Types.STRING, index, s.substring(0, maxLength)); } }; } @@ -136,17 +137,17 @@ public final class Protocol1_17_1To1_18 extends BackwardsProtocol. */ -package com.viaversion.viabackwards.protocol.protocol1_17_1to1_18.data; +package com.viaversion.viabackwards.protocol.v1_18to1_17_1.data; +import com.viaversion.viabackwards.api.data.BackwardsMappingData; import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectMap; import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectOpenHashMap; import com.viaversion.viaversion.libs.fastutil.objects.Object2IntMap; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.Protocol1_18To1_17_1; -import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.data.BlockEntities; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.viaversion.protocols.v1_17_1to1_18.Protocol1_17_1To1_18; +import com.viaversion.viaversion.protocols.v1_17_1to1_18.data.BlockEntities; -public final class BackwardsMappings extends com.viaversion.viabackwards.api.data.BackwardsMappings { +public final class BackwardsMappingData1_18 extends BackwardsMappingData { private final Int2ObjectMap blockEntities = new Int2ObjectOpenHashMap<>(); - public BackwardsMappings() { - super("1.18", "1.17", Protocol1_18To1_17_1.class); + public BackwardsMappingData1_18() { + super("1.18", "1.17", Protocol1_17_1To1_18.class); } @Override diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_17_1to1_18/data/BlockEntityIds.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_18to1_17_1/data/BlockEntityIds.java similarity index 87% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_17_1to1_18/data/BlockEntityIds.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_18to1_17_1/data/BlockEntityIds.java index ddd262a6..0f1b979c 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_17_1to1_18/data/BlockEntityIds.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_18to1_17_1/data/BlockEntityIds.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_17_1to1_18.data; +package com.viaversion.viabackwards.protocol.v1_18to1_17_1.data; import java.util.Arrays; @@ -24,7 +24,7 @@ public final class BlockEntityIds { private static final int[] IDS; static { - final int[] ids = com.viaversion.viaversion.protocols.protocol1_18to1_17_1.data.BlockEntityIds.getIds(); + final int[] ids = com.viaversion.viaversion.protocols.v1_17_1to1_18.data.BlockEntityIds.getIds(); IDS = new int[Arrays.stream(ids).max().getAsInt() + 1]; Arrays.fill(IDS, -1); for (int i = 0; i < ids.length; i++) { diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_17_1to1_18/packets/BlockItemPackets1_18.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_18to1_17_1/rewriter/BlockItemPacketRewriter1_18.java similarity index 63% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_17_1to1_18/packets/BlockItemPackets1_18.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_18to1_17_1/rewriter/BlockItemPacketRewriter1_18.java index 06f49153..69b18680 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_17_1to1_18/packets/BlockItemPackets1_18.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_18to1_17_1/rewriter/BlockItemPacketRewriter1_18.java @@ -15,11 +15,11 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_17_1to1_18.packets; +package com.viaversion.viabackwards.protocol.v1_18to1_17_1.rewriter; import com.viaversion.viabackwards.api.rewriters.BackwardsItemRewriter; -import com.viaversion.viabackwards.protocol.protocol1_17_1to1_18.Protocol1_17_1To1_18; -import com.viaversion.viabackwards.protocol.protocol1_17_1to1_18.data.BlockEntityIds; +import com.viaversion.viabackwards.protocol.v1_18to1_17_1.Protocol1_18To1_17_1; +import com.viaversion.viabackwards.protocol.v1_18to1_17_1.data.BlockEntityIds; import com.viaversion.viaversion.api.data.ParticleMappings; import com.viaversion.viaversion.api.data.entity.EntityTracker; import com.viaversion.viaversion.api.minecraft.Position; @@ -32,12 +32,13 @@ import com.viaversion.viaversion.api.minecraft.chunks.PaletteType; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_17; import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_18; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.protocols.protocol1_17_1to1_17.ClientboundPackets1_17_1; -import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.ServerboundPackets1_17; -import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.ClientboundPackets1_18; +import com.viaversion.viaversion.protocols.v1_16_4to1_17.packet.ServerboundPackets1_17; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.viaversion.protocols.v1_17_1to1_18.packet.ClientboundPackets1_18; +import com.viaversion.viaversion.protocols.v1_17to1_17_1.packet.ClientboundPackets1_17_1; import com.viaversion.viaversion.rewriter.RecipeRewriter; import com.viaversion.viaversion.util.Key; import com.viaversion.viaversion.util.MathUtil; @@ -45,79 +46,79 @@ import java.util.ArrayList; import java.util.BitSet; import java.util.List; -public final class BlockItemPackets1_18 extends BackwardsItemRewriter { +public final class BlockItemPacketRewriter1_18 extends BackwardsItemRewriter { - public BlockItemPackets1_18(final Protocol1_17_1To1_18 protocol) { - super(protocol, Type.ITEM1_13_2, Type.ITEM1_13_2_ARRAY); + public BlockItemPacketRewriter1_18(final Protocol1_18To1_17_1 protocol) { + super(protocol, Types.ITEM1_13_2, Types.ITEM1_13_2_ARRAY); } @Override protected void registerPackets() { - new RecipeRewriter<>(protocol).register(ClientboundPackets1_18.DECLARE_RECIPES); + new RecipeRewriter<>(protocol).register(ClientboundPackets1_18.UPDATE_RECIPES); - registerSetCooldown(ClientboundPackets1_18.COOLDOWN); - registerWindowItems1_17_1(ClientboundPackets1_18.WINDOW_ITEMS); - registerSetSlot1_17_1(ClientboundPackets1_18.SET_SLOT); - registerEntityEquipmentArray(ClientboundPackets1_18.ENTITY_EQUIPMENT); - registerTradeList(ClientboundPackets1_18.TRADE_LIST); - registerAdvancements(ClientboundPackets1_18.ADVANCEMENTS); - registerClickWindow1_17_1(ServerboundPackets1_17.CLICK_WINDOW); + registerCooldown(ClientboundPackets1_18.COOLDOWN); + registerSetContent1_17_1(ClientboundPackets1_18.CONTAINER_SET_CONTENT); + registerSetSlot1_17_1(ClientboundPackets1_18.CONTAINER_SET_SLOT); + registerSetEquipment(ClientboundPackets1_18.SET_EQUIPMENT); + registerMerchantOffers(ClientboundPackets1_18.MERCHANT_OFFERS); + registerAdvancements(ClientboundPackets1_18.UPDATE_ADVANCEMENTS); + registerContainerClick1_17_1(ServerboundPackets1_17.CONTAINER_CLICK); - protocol.registerClientbound(ClientboundPackets1_18.EFFECT, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_18.LEVEL_EVENT, new PacketHandlers() { @Override public void register() { - map(Type.INT); // Effect id - map(Type.POSITION1_14); // Location - map(Type.INT); // Data + map(Types.INT); // Effect id + map(Types.BLOCK_POSITION1_14); // Location + map(Types.INT); // Data handler(wrapper -> { - int id = wrapper.get(Type.INT, 0); - int data = wrapper.get(Type.INT, 1); + int id = wrapper.get(Types.INT, 0); + int data = wrapper.get(Types.INT, 1); if (id == 1010) { // Play record - wrapper.set(Type.INT, 1, protocol.getMappingData().getNewItemId(data)); + wrapper.set(Types.INT, 1, protocol.getMappingData().getNewItemId(data)); } }); } }); - registerCreativeInvAction(ServerboundPackets1_17.CREATIVE_INVENTORY_ACTION); + registerSetCreativeModeSlot(ServerboundPackets1_17.SET_CREATIVE_MODE_SLOT); - protocol.registerClientbound(ClientboundPackets1_18.SPAWN_PARTICLE, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_18.LEVEL_PARTICLES, new PacketHandlers() { @Override public void register() { - map(Type.INT); // Particle id - map(Type.BOOLEAN); // Override limiter - map(Type.DOUBLE); // X - map(Type.DOUBLE); // Y - map(Type.DOUBLE); // Z - map(Type.FLOAT); // Offset X - map(Type.FLOAT); // Offset Y - map(Type.FLOAT); // Offset Z - map(Type.FLOAT); // Max speed - map(Type.INT); // Particle Count + map(Types.INT); // Particle id + map(Types.BOOLEAN); // Override limiter + map(Types.DOUBLE); // X + map(Types.DOUBLE); // Y + map(Types.DOUBLE); // Z + map(Types.FLOAT); // Offset X + map(Types.FLOAT); // Offset Y + map(Types.FLOAT); // Offset Z + map(Types.FLOAT); // Max speed + map(Types.INT); // Particle Count handler(wrapper -> { - int id = wrapper.get(Type.INT, 0); + int id = wrapper.get(Types.INT, 0); if (id == 3) { // Block marker - int blockState = wrapper.read(Type.VAR_INT); + int blockState = wrapper.read(Types.VAR_INT); if (blockState == 7786) { // Light block - wrapper.set(Type.INT, 0, 3); + wrapper.set(Types.INT, 0, 3); } else { // Else assume barrier block - wrapper.set(Type.INT, 0, 2); + wrapper.set(Types.INT, 0, 2); } return; } ParticleMappings mappings = protocol.getMappingData().getParticleMappings(); if (mappings.isBlockParticle(id)) { - int data = wrapper.passthrough(Type.VAR_INT); - wrapper.set(Type.VAR_INT, 0, protocol.getMappingData().getNewBlockStateId(data)); + int data = wrapper.passthrough(Types.VAR_INT); + wrapper.set(Types.VAR_INT, 0, protocol.getMappingData().getNewBlockStateId(data)); } else if (mappings.isItemParticle(id)) { - handleItemToClient(wrapper.user(), wrapper.passthrough(Type.ITEM1_13_2)); + handleItemToClient(wrapper.user(), wrapper.passthrough(Types.ITEM1_13_2)); } int newId = protocol.getMappingData().getNewParticleId(id); if (newId != id) { - wrapper.set(Type.INT, 0, newId); + wrapper.set(Types.INT, 0, newId); } }); } @@ -126,10 +127,10 @@ public final class BlockItemPackets1_18 extends BackwardsItemRewriter { - final int id = wrapper.read(Type.VAR_INT); - final CompoundTag tag = wrapper.read(Type.NAMED_COMPOUND_TAG); + final int id = wrapper.read(Types.VAR_INT); + final CompoundTag tag = wrapper.read(Types.NAMED_COMPOUND_TAG); final int mappedId = BlockEntityIds.mappedId(id); if (mappedId == -1) { @@ -147,7 +148,7 @@ public final class BlockItemPackets1_18 extends BackwardsItemRewriter { + protocol.registerClientbound(ClientboundPackets1_18.LEVEL_CHUNK_WITH_LIGHT, ClientboundPackets1_17_1.LEVEL_CHUNK, wrapper -> { final EntityTracker tracker = protocol.getEntityRewriter().tracker(wrapper.user()); final ChunkType1_18 chunkType = new ChunkType1_18(tracker.currentWorldSectionHeight(), MathUtil.ceilLog2(protocol.getMappingData().getBlockStateMappings().mappedSize()), @@ -219,28 +220,28 @@ public final class BlockItemPackets1_18 extends BackwardsItemRewriter. */ -package com.viaversion.viabackwards.protocol.protocol1_17_1to1_18.packets; +package com.viaversion.viabackwards.protocol.v1_18to1_17_1.rewriter; import com.viaversion.viabackwards.api.rewriters.EntityRewriter; -import com.viaversion.viabackwards.protocol.protocol1_17_1to1_18.Protocol1_17_1To1_18; +import com.viaversion.viabackwards.protocol.v1_18to1_17_1.Protocol1_18To1_17_1; import com.viaversion.viaversion.api.minecraft.Particle; import com.viaversion.viaversion.api.minecraft.entities.EntityType; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_17; -import com.viaversion.viaversion.api.minecraft.metadata.MetaType; +import com.viaversion.viaversion.api.minecraft.entitydata.EntityDataType; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.version.Types1_17; import com.viaversion.viaversion.api.type.types.version.Types1_18; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.ListTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.Tag; -import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.ClientboundPackets1_18; +import com.viaversion.viaversion.protocols.v1_17_1to1_18.packet.ClientboundPackets1_18; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.ListTag; +import com.viaversion.nbt.tag.StringTag; +import com.viaversion.nbt.tag.Tag; import com.viaversion.viaversion.util.TagUtil; -public final class EntityPackets1_18 extends EntityRewriter { +public final class EntityPacketRewriter1_18 extends EntityRewriter { - public EntityPackets1_18(final Protocol1_17_1To1_18 protocol) { + public EntityPacketRewriter1_18(final Protocol1_18To1_17_1 protocol) { super(protocol); } @Override protected void registerPackets() { - registerMetadataRewriter(ClientboundPackets1_18.ENTITY_METADATA, Types1_18.METADATA_LIST, Types1_17.METADATA_LIST); + registerSetEntityData(ClientboundPackets1_18.SET_ENTITY_DATA, Types1_18.ENTITY_DATA_LIST, Types1_17.ENTITY_DATA_LIST); - protocol.registerClientbound(ClientboundPackets1_18.JOIN_GAME, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_18.LOGIN, new PacketHandlers() { @Override public void register() { - map(Type.INT); // Entity ID - map(Type.BOOLEAN); // Hardcore - map(Type.BYTE); // Gamemode - map(Type.BYTE); // Previous Gamemode - map(Type.STRING_ARRAY); // Worlds - map(Type.NAMED_COMPOUND_TAG); // Dimension registry - map(Type.NAMED_COMPOUND_TAG); // Current dimension data - map(Type.STRING); // World - map(Type.LONG); // Seed - map(Type.VAR_INT); // Max players - map(Type.VAR_INT); // Chunk radius - read(Type.VAR_INT); // Read simulation distance + map(Types.INT); // Entity ID + map(Types.BOOLEAN); // Hardcore + map(Types.BYTE); // Gamemode + map(Types.BYTE); // Previous Gamemode + map(Types.STRING_ARRAY); // Worlds + map(Types.NAMED_COMPOUND_TAG); // Dimension registry + map(Types.NAMED_COMPOUND_TAG); // Current dimension data + map(Types.STRING); // World + map(Types.LONG); // Seed + map(Types.VAR_INT); // Max players + map(Types.VAR_INT); // Chunk radius + read(Types.VAR_INT); // Read simulation distance handler(worldDataTrackerHandler(1)); handler(wrapper -> { - final CompoundTag registry = wrapper.get(Type.NAMED_COMPOUND_TAG, 0); + final CompoundTag registry = wrapper.get(Types.NAMED_COMPOUND_TAG, 0); final ListTag biomes = TagUtil.getRegistryEntries(registry, "worldgen/biome"); for (final CompoundTag biome : biomes) { final CompoundTag biomeCompound = biome.getCompoundTag("element"); @@ -84,8 +85,8 @@ public final class EntityPackets1_18 extends EntityRewriter { - meta.setMetaType(Types1_17.META_TYPES.byId(meta.metaType().typeId())); + meta.setDataType(Types1_17.ENTITY_DATA_TYPES.byId(meta.dataType().typeId())); - MetaType type = meta.metaType(); - if (type == Types1_17.META_TYPES.particleType) { + EntityDataType type = meta.dataType(); + if (type == Types1_17.ENTITY_DATA_TYPES.particleType) { Particle particle = meta.value(); if (particle.id() == 3) { // Block marker Particle.ParticleData data = particle.getArguments().remove(0); @@ -116,8 +117,8 @@ public final class EntityPackets1_18 extends EntityRewriter. */ -package com.viaversion.viabackwards.protocol.protocol1_19to1_19_1; +package com.viaversion.viabackwards.protocol.v1_19_1to1_19; import com.viaversion.viabackwards.ViaBackwards; import com.viaversion.viabackwards.api.BackwardsProtocol; import com.viaversion.viabackwards.api.rewriters.TranslatableRewriter; -import com.viaversion.viabackwards.protocol.protocol1_19to1_19_1.packets.EntityPackets1_19_1; -import com.viaversion.viabackwards.protocol.protocol1_19to1_19_1.storage.ChatRegistryStorage; -import com.viaversion.viabackwards.protocol.protocol1_19to1_19_1.storage.ChatRegistryStorage1_19_1; -import com.viaversion.viabackwards.protocol.protocol1_19to1_19_1.storage.NonceStorage; -import com.viaversion.viabackwards.protocol.protocol1_19to1_19_1.storage.ReceivedMessagesStorage; +import com.viaversion.viabackwards.protocol.v1_19_1to1_19.rewriter.EntityPacketRewriter1_19_1; +import com.viaversion.viabackwards.protocol.v1_19_1to1_19.storage.ChatRegistryStorage; +import com.viaversion.viabackwards.protocol.v1_19_1to1_19.storage.ChatRegistryStorage1_19_1; +import com.viaversion.viabackwards.protocol.v1_19_1to1_19.storage.NonceStorage; +import com.viaversion.viabackwards.protocol.v1_19_1to1_19.storage.ReceivedMessagesStorage; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.PlayerMessageSignature; @@ -38,19 +38,20 @@ import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.packet.State; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.data.entity.EntityTrackerBase; import com.viaversion.viaversion.libs.gson.JsonElement; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.ListTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.NumberTag; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.ListTag; +import com.viaversion.nbt.tag.NumberTag; import com.viaversion.viaversion.protocols.base.ClientboundLoginPackets; import com.viaversion.viaversion.protocols.base.ServerboundLoginPackets; -import com.viaversion.viaversion.protocols.protocol1_19_1to1_19.ClientboundPackets1_19_1; -import com.viaversion.viaversion.protocols.protocol1_19_1to1_19.Protocol1_19_1To1_19; -import com.viaversion.viaversion.protocols.protocol1_19_1to1_19.ServerboundPackets1_19_1; -import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.ClientboundPackets1_19; -import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.Protocol1_19To1_18_2; -import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.ServerboundPackets1_19; +import com.viaversion.viaversion.protocols.v1_18_2to1_19.packet.ClientboundPackets1_19; +import com.viaversion.viaversion.protocols.v1_18_2to1_19.packet.ServerboundPackets1_19; +import com.viaversion.viaversion.protocols.v1_19to1_19_1.Protocol1_19To1_19_1; +import com.viaversion.viaversion.protocols.v1_19to1_19_1.packet.ClientboundPackets1_19_1; +import com.viaversion.viaversion.protocols.v1_19to1_19_1.packet.ServerboundPackets1_19_1; +import com.viaversion.viaversion.protocols.v1_18_2to1_19.Protocol1_18_2To1_19; import com.viaversion.viaversion.rewriter.ComponentRewriter; import com.viaversion.viaversion.util.CipherUtil; import com.viaversion.viaversion.util.ComponentUtil; @@ -61,49 +62,49 @@ import java.util.List; import java.util.UUID; import org.checkerframework.checker.nullness.qual.Nullable; -public final class Protocol1_19To1_19_1 extends BackwardsProtocol { +public final class Protocol1_19_1To1_19 extends BackwardsProtocol { public static final int SYSTEM_CHAT_ID = 1; public static final int GAME_INFO_ID = 2; private static final UUID ZERO_UUID = new UUID(0, 0); private static final byte[] EMPTY_BYTES = new byte[0]; - private final EntityPackets1_19_1 entityRewriter = new EntityPackets1_19_1(this); + private final EntityPacketRewriter1_19_1 entityRewriter = new EntityPacketRewriter1_19_1(this); private final TranslatableRewriter translatableRewriter = new TranslatableRewriter<>(this, ComponentRewriter.ReadType.JSON); - public Protocol1_19To1_19_1() { + public Protocol1_19_1To1_19() { super(ClientboundPackets1_19_1.class, ClientboundPackets1_19.class, ServerboundPackets1_19_1.class, ServerboundPackets1_19.class); } @Override protected void registerPackets() { - translatableRewriter.registerComponentPacket(ClientboundPackets1_19_1.ACTIONBAR); - translatableRewriter.registerComponentPacket(ClientboundPackets1_19_1.TITLE_TEXT); - translatableRewriter.registerComponentPacket(ClientboundPackets1_19_1.TITLE_SUBTITLE); - translatableRewriter.registerBossBar(ClientboundPackets1_19_1.BOSSBAR); + translatableRewriter.registerComponentPacket(ClientboundPackets1_19_1.SET_ACTION_BAR_TEXT); + translatableRewriter.registerComponentPacket(ClientboundPackets1_19_1.SET_TITLE_TEXT); + translatableRewriter.registerComponentPacket(ClientboundPackets1_19_1.SET_SUBTITLE_TEXT); + translatableRewriter.registerBossEvent(ClientboundPackets1_19_1.BOSS_EVENT); translatableRewriter.registerComponentPacket(ClientboundPackets1_19_1.DISCONNECT); translatableRewriter.registerTabList(ClientboundPackets1_19_1.TAB_LIST); - translatableRewriter.registerOpenWindow(ClientboundPackets1_19_1.OPEN_WINDOW); - translatableRewriter.registerCombatKill(ClientboundPackets1_19_1.COMBAT_KILL); + translatableRewriter.registerOpenScreen(ClientboundPackets1_19_1.OPEN_SCREEN); + translatableRewriter.registerPlayerCombatKill(ClientboundPackets1_19_1.PLAYER_COMBAT_KILL); translatableRewriter.registerPing(); entityRewriter.register(); - registerClientbound(ClientboundPackets1_19_1.JOIN_GAME, new PacketHandlers() { + registerClientbound(ClientboundPackets1_19_1.LOGIN, new PacketHandlers() { @Override public void register() { - map(Type.INT); // Entity ID - map(Type.BOOLEAN); // Hardcore - map(Type.BYTE); // Gamemode - map(Type.BYTE); // Previous Gamemode - map(Type.STRING_ARRAY); // World List - map(Type.NAMED_COMPOUND_TAG); // Dimension registry - map(Type.STRING); // Dimension key - map(Type.STRING); // World + map(Types.INT); // Entity ID + map(Types.BOOLEAN); // Hardcore + map(Types.BYTE); // Gamemode + map(Types.BYTE); // Previous Gamemode + map(Types.STRING_ARRAY); // World List + map(Types.NAMED_COMPOUND_TAG); // Dimension registry + map(Types.STRING); // Dimension key + map(Types.STRING); // World handler(wrapper -> { final ChatRegistryStorage chatTypeStorage = wrapper.user().get(ChatRegistryStorage1_19_1.class); chatTypeStorage.clear(); - final CompoundTag registry = wrapper.get(Type.NAMED_COMPOUND_TAG, 0); + final CompoundTag registry = wrapper.get(Types.NAMED_COMPOUND_TAG, 0); final ListTag chatTypes = TagUtil.removeRegistryEntries(registry, "chat_type", new ListTag<>(CompoundTag.class)); for (final CompoundTag chatType : chatTypes) { final NumberTag idTag = chatType.getNumberTag("id"); @@ -112,16 +113,16 @@ public final class Protocol1_19To1_19_1 extends BackwardsProtocol { - wrapper.read(Type.OPTIONAL_BYTE_ARRAY_PRIMITIVE); // Previous signature + wrapper.read(Types.OPTIONAL_BYTE_ARRAY_PRIMITIVE); // Previous signature - final PlayerMessageSignature signature = wrapper.read(Type.PLAYER_MESSAGE_SIGNATURE); + final PlayerMessageSignature signature = wrapper.read(Types.PLAYER_MESSAGE_SIGNATURE); // Store message signature for last seen if (!signature.uuid().equals(ZERO_UUID) && signature.signatureBytes().length != 0) { @@ -132,25 +133,25 @@ public final class Protocol1_19To1_19_1 extends BackwardsProtocol { - final JsonElement content = wrapper.passthrough(Type.COMPONENT); + final JsonElement content = wrapper.passthrough(Types.COMPONENT); translatableRewriter.processText(wrapper.user(), content); - final boolean overlay = wrapper.read(Type.BOOLEAN); - wrapper.write(Type.VAR_INT, overlay ? GAME_INFO_ID : SYSTEM_CHAT_ID); + final boolean overlay = wrapper.read(Types.BOOLEAN); + wrapper.write(Types.VAR_INT, overlay ? GAME_INFO_ID : SYSTEM_CHAT_ID); }); - registerServerbound(ServerboundPackets1_19.CHAT_MESSAGE, new PacketHandlers() { + registerServerbound(ServerboundPackets1_19.CHAT, new PacketHandlers() { @Override public void register() { - map(Type.STRING); // Message - map(Type.LONG); // Timestamp - map(Type.LONG); // Salt - read(Type.BYTE_ARRAY_PRIMITIVE); // Signature - read(Type.BOOLEAN); // Signed preview + map(Types.STRING); // Message + map(Types.LONG); // Timestamp + map(Types.LONG); // Salt + read(Types.BYTE_ARRAY_PRIMITIVE); // Signature + read(Types.BOOLEAN); // Signed preview handler(wrapper -> { final ChatSession1_19_1 chatSession = wrapper.user().get(ChatSession1_19_1.class); final ReceivedMessagesStorage messagesStorage = wrapper.user().get(ReceivedMessagesStorage.class); if (chatSession != null) { final UUID sender = wrapper.user().getProtocolInfo().getUuid(); - final String message = wrapper.get(Type.STRING, 0); - final long timestamp = wrapper.get(Type.LONG, 0); - final long salt = wrapper.get(Type.LONG, 1); + final String message = wrapper.get(Types.STRING, 0); + final long timestamp = wrapper.get(Types.LONG, 0); + final long salt = wrapper.get(Types.LONG, 1); final MessageMetadata metadata = new MessageMetadata(sender, timestamp, salt); final DecoratableMessage decoratableMessage = new DecoratableMessage(message); @@ -213,16 +214,16 @@ public final class Protocol1_19To1_19_1 extends BackwardsProtocol { final ReceivedMessagesStorage messagesStorage = wrapper.user().get(ReceivedMessagesStorage.class); final ChatSession1_19_1 chatSession = wrapper.user().get(ChatSession1_19_1.class); final SignableCommandArgumentsProvider argumentsProvider = Via.getManager().getProviders().get(SignableCommandArgumentsProvider.class); if (chatSession != null && argumentsProvider != null) { - final int signatures = wrapper.read(Type.VAR_INT); + final int signatures = wrapper.read(Types.VAR_INT); for (int i = 0; i < signatures; i++) { - wrapper.read(Type.STRING); // Argument name - wrapper.read(Type.BYTE_ARRAY_PRIMITIVE); // Signature + wrapper.read(Types.STRING); // Argument name + wrapper.read(Types.BYTE_ARRAY_PRIMITIVE); // Signature } final UUID sender = wrapper.user().getProtocolInfo().getUuid(); - final String command = wrapper.get(Type.STRING, 0); - final long timestamp = wrapper.get(Type.LONG, 0); - final long salt = wrapper.get(Type.LONG, 1); + final String command = wrapper.get(Types.STRING, 0); + final long timestamp = wrapper.get(Types.LONG, 0); + final long salt = wrapper.get(Types.LONG, 1); final MessageMetadata metadata = new MessageMetadata(sender, timestamp, salt); final List> arguments = argumentsProvider.getSignableArguments(command); - wrapper.write(Type.VAR_INT, arguments.size()); + wrapper.write(Types.VAR_INT, arguments.size()); for (final Pair argument : arguments) { final byte[] signature; try { @@ -262,25 +263,25 @@ public final class Protocol1_19To1_19_1 extends BackwardsProtocol { - final ProfileKey profileKey = wrapper.read(Type.OPTIONAL_PROFILE_KEY); // Profile Key + final ProfileKey profileKey = wrapper.read(Types.OPTIONAL_PROFILE_KEY); // Profile Key final ChatSession1_19_1 chatSession = wrapper.user().get(ChatSession1_19_1.class); - wrapper.write(Type.OPTIONAL_PROFILE_KEY, chatSession == null ? null : chatSession.getProfileKey()); // Profile Key - wrapper.write(Type.OPTIONAL_UUID, chatSession == null ? null : chatSession.getUuid()); // Profile uuid + wrapper.write(Types.OPTIONAL_PROFILE_KEY, chatSession == null ? null : chatSession.getProfileKey()); // Profile Key + wrapper.write(Types.OPTIONAL_UUID, chatSession == null ? null : chatSession.getUuid()); // Profile uuid if (profileKey == null || chatSession != null) { wrapper.user().put(new NonceStorage(null)); @@ -316,14 +317,14 @@ public final class Protocol1_19To1_19_1 extends BackwardsProtocol { if (wrapper.user().has(NonceStorage.class)) { return; } - final byte[] publicKey = wrapper.passthrough(Type.BYTE_ARRAY_PRIMITIVE); - final byte[] nonce = wrapper.passthrough(Type.BYTE_ARRAY_PRIMITIVE); + final byte[] publicKey = wrapper.passthrough(Types.BYTE_ARRAY_PRIMITIVE); + final byte[] nonce = wrapper.passthrough(Types.BYTE_ARRAY_PRIMITIVE); wrapper.user().put(new NonceStorage(CipherUtil.encryptNonce(publicKey, nonce))); }); } @@ -332,19 +333,19 @@ public final class Protocol1_19To1_19_1 extends BackwardsProtocol { final NonceStorage nonceStorage = wrapper.user().remove(NonceStorage.class); if (nonceStorage.nonce() == null) { return; } - final boolean isNonce = wrapper.read(Type.BOOLEAN); - wrapper.write(Type.BOOLEAN, true); + final boolean isNonce = wrapper.read(Types.BOOLEAN); + wrapper.write(Types.BOOLEAN, true); if (!isNonce) { // Should never be true at this point, but /shrug otherwise - wrapper.read(Type.LONG); // Salt - wrapper.read(Type.BYTE_ARRAY_PRIMITIVE); // Signature - wrapper.write(Type.BYTE_ARRAY_PRIMITIVE, nonceStorage.nonce()); + wrapper.read(Types.LONG); // Salt + wrapper.read(Types.BYTE_ARRAY_PRIMITIVE); // Signature + wrapper.write(Types.BYTE_ARRAY_PRIMITIVE, nonceStorage.nonce()); } }); } @@ -353,12 +354,12 @@ public final class Protocol1_19To1_19_1 extends BackwardsProtocol { - final String identifier = wrapper.get(Type.STRING, 0); + final String identifier = wrapper.get(Types.STRING, 0); if (identifier.equals("velocity:player_info")) { - byte[] data = wrapper.passthrough(Type.REMAINING_BYTES); + byte[] data = wrapper.passthrough(Types.REMAINING_BYTES); // Velocity modern forwarding version above 1 includes the players public key. // This is an issue because the player does not have a public key. // Velocity itself does adjust the version accordingly: https://github.com/PaperMC/Velocity/blob/1a3fba4250553702d9dcd05731d04347bfc24c9f/proxy/src/main/java/com/velocitypowered/proxy/connection/backend/LoginSessionHandler.java#L176-L197 @@ -371,7 +372,7 @@ public final class Protocol1_19To1_19_1 extends BackwardsProtocol. */ -package com.viaversion.viabackwards.protocol.protocol1_19to1_19_1.packets; +package com.viaversion.viabackwards.protocol.v1_19_1to1_19.rewriter; import com.viaversion.viabackwards.api.rewriters.EntityRewriter; -import com.viaversion.viabackwards.protocol.protocol1_19to1_19_1.Protocol1_19To1_19_1; +import com.viaversion.viabackwards.protocol.v1_19_1to1_19.Protocol1_19_1To1_19; import com.viaversion.viaversion.api.minecraft.entities.EntityType; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_19; import com.viaversion.viaversion.api.type.types.version.Types1_19; -import com.viaversion.viaversion.protocols.protocol1_19_1to1_19.ClientboundPackets1_19_1; +import com.viaversion.viaversion.protocols.v1_19to1_19_1.packet.ClientboundPackets1_19_1; -public final class EntityPackets1_19_1 extends EntityRewriter { +public final class EntityPacketRewriter1_19_1 extends EntityRewriter { - public EntityPackets1_19_1(final Protocol1_19To1_19_1 protocol) { - super(protocol, Types1_19.META_TYPES.optionalComponentType, Types1_19.META_TYPES.booleanType); + public EntityPacketRewriter1_19_1(final Protocol1_19_1To1_19 protocol) { + super(protocol, Types1_19.ENTITY_DATA_TYPES.optionalComponentType, Types1_19.ENTITY_DATA_TYPES.booleanType); } @Override protected void registerPackets() { - registerMetadataRewriter(ClientboundPackets1_19_1.ENTITY_METADATA, Types1_19.METADATA_LIST); + registerSetEntityData(ClientboundPackets1_19_1.SET_ENTITY_DATA, Types1_19.ENTITY_DATA_LIST); registerRemoveEntities(ClientboundPackets1_19_1.REMOVE_ENTITIES); - registerSpawnTracker(ClientboundPackets1_19_1.SPAWN_ENTITY); + registerSpawnTracker(ClientboundPackets1_19_1.ADD_ENTITY); } @Override diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19to1_19_1/storage/ChatRegistryStorage.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_1to1_19/storage/ChatRegistryStorage.java similarity index 84% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19to1_19_1/storage/ChatRegistryStorage.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_1to1_19/storage/ChatRegistryStorage.java index 9a3fb2d9..64b2c330 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19to1_19_1/storage/ChatRegistryStorage.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_1to1_19/storage/ChatRegistryStorage.java @@ -15,13 +15,13 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_19to1_19_1.storage; +package com.viaversion.viabackwards.protocol.v1_19_1to1_19.storage; import com.viaversion.viaversion.api.connection.StorableObject; import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectMap; import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectOpenHashMap; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.Protocol1_19To1_18_2; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.viaversion.protocols.v1_18_2to1_19.Protocol1_18_2To1_19; import org.checkerframework.checker.nullness.qual.Nullable; public abstract class ChatRegistryStorage implements StorableObject { @@ -29,7 +29,7 @@ public abstract class ChatRegistryStorage implements StorableObject { private final Int2ObjectMap chatTypes = new Int2ObjectOpenHashMap<>(); public @Nullable CompoundTag chatType(final int id) { - return chatTypes.isEmpty() ? Protocol1_19To1_18_2.MAPPINGS.chatType(id) : chatTypes.get(id); + return chatTypes.isEmpty() ? Protocol1_18_2To1_19.MAPPINGS.chatType(id) : chatTypes.get(id); } public void addChatType(final int id, final CompoundTag chatType) { diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19to1_19_1/storage/ChatRegistryStorage1_19_1.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_1to1_19/storage/ChatRegistryStorage1_19_1.java similarity index 92% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19to1_19_1/storage/ChatRegistryStorage1_19_1.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_1to1_19/storage/ChatRegistryStorage1_19_1.java index a6dafdcb..b14c2983 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19to1_19_1/storage/ChatRegistryStorage1_19_1.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_1to1_19/storage/ChatRegistryStorage1_19_1.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_19to1_19_1.storage; +package com.viaversion.viabackwards.protocol.v1_19_1to1_19.storage; public final class ChatRegistryStorage1_19_1 extends ChatRegistryStorage { } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19to1_19_1/storage/NonceStorage.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_1to1_19/storage/NonceStorage.java similarity index 92% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19to1_19_1/storage/NonceStorage.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_1to1_19/storage/NonceStorage.java index 19ece970..969053cd 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19to1_19_1/storage/NonceStorage.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_1to1_19/storage/NonceStorage.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_19to1_19_1.storage; +package com.viaversion.viabackwards.protocol.v1_19_1to1_19.storage; import com.viaversion.viaversion.api.connection.StorableObject; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19to1_19_1/storage/ReceivedMessagesStorage.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_1to1_19/storage/ReceivedMessagesStorage.java similarity index 96% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19to1_19_1/storage/ReceivedMessagesStorage.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_1to1_19/storage/ReceivedMessagesStorage.java index 6bbf5a1c..dea0a9d6 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19to1_19_1/storage/ReceivedMessagesStorage.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_1to1_19/storage/ReceivedMessagesStorage.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_19to1_19_1.storage; +package com.viaversion.viabackwards.protocol.v1_19_1to1_19.storage; import com.viaversion.viaversion.api.connection.StorableObject; import com.viaversion.viaversion.api.minecraft.PlayerMessageSignature; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_1to1_19_3/Protocol1_19_1To1_19_3.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_3to1_19_1/Protocol1_19_3To1_19_1.java similarity index 66% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_1to1_19_3/Protocol1_19_1To1_19_3.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_3to1_19_1/Protocol1_19_3To1_19_1.java index 7a27fd06..ebafe3e9 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_1to1_19_3/Protocol1_19_1To1_19_3.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_3to1_19_1/Protocol1_19_3To1_19_1.java @@ -15,19 +15,19 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3; +package com.viaversion.viabackwards.protocol.v1_19_3to1_19_1; import com.google.common.base.Preconditions; import com.viaversion.viabackwards.api.BackwardsProtocol; import com.viaversion.viabackwards.api.rewriters.SoundRewriter; import com.viaversion.viabackwards.api.rewriters.TranslatableRewriter; -import com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.data.BackwardsMappings; -import com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.packets.BlockItemPackets1_19_3; -import com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.packets.EntityPackets1_19_3; -import com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.storage.ChatSessionStorage; -import com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.storage.ChatTypeStorage1_19_3; -import com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.storage.NonceStorage; -import com.viaversion.viabackwards.protocol.protocol1_19to1_19_1.Protocol1_19To1_19_1; +import com.viaversion.viabackwards.protocol.v1_19_3to1_19_1.data.BackwardsMappingData1_19_3; +import com.viaversion.viabackwards.protocol.v1_19_3to1_19_1.rewriter.BlockItemPacketRewriter1_19_3; +import com.viaversion.viabackwards.protocol.v1_19_3to1_19_1.rewriter.EntityPacketRewriter1_19_3; +import com.viaversion.viabackwards.protocol.v1_19_3to1_19_1.storage.ChatSessionStorage; +import com.viaversion.viabackwards.protocol.v1_19_3to1_19_1.storage.ChatTypeStorage1_19_3; +import com.viaversion.viabackwards.protocol.v1_19_3to1_19_1.storage.NonceStorage; +import com.viaversion.viabackwards.protocol.v1_19_1to1_19.Protocol1_19_1To1_19; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.Holder; @@ -43,16 +43,17 @@ import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.packet.State; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.BitSetType; import com.viaversion.viaversion.api.type.types.ByteArrayType; import com.viaversion.viaversion.data.entity.EntityTrackerBase; import com.viaversion.viaversion.libs.gson.JsonElement; import com.viaversion.viaversion.protocols.base.ClientboundLoginPackets; import com.viaversion.viaversion.protocols.base.ServerboundLoginPackets; -import com.viaversion.viaversion.protocols.protocol1_19_1to1_19.ClientboundPackets1_19_1; -import com.viaversion.viaversion.protocols.protocol1_19_1to1_19.ServerboundPackets1_19_1; -import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.ClientboundPackets1_19_3; -import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.ServerboundPackets1_19_3; +import com.viaversion.viaversion.protocols.v1_19_1to1_19_3.packet.ClientboundPackets1_19_3; +import com.viaversion.viaversion.protocols.v1_19_1to1_19_3.packet.ServerboundPackets1_19_3; +import com.viaversion.viaversion.protocols.v1_19to1_19_1.packet.ClientboundPackets1_19_1; +import com.viaversion.viaversion.protocols.v1_19to1_19_1.packet.ServerboundPackets1_19_1; import com.viaversion.viaversion.rewriter.CommandRewriter; import com.viaversion.viaversion.rewriter.ComponentRewriter; import com.viaversion.viaversion.rewriter.StatisticsRewriter; @@ -65,17 +66,17 @@ import java.util.BitSet; import java.util.List; import org.checkerframework.checker.nullness.qual.Nullable; -public final class Protocol1_19_1To1_19_3 extends BackwardsProtocol { +public final class Protocol1_19_3To1_19_1 extends BackwardsProtocol { - public static final BackwardsMappings MAPPINGS = new BackwardsMappings(); + public static final BackwardsMappingData1_19_3 MAPPINGS = new BackwardsMappingData1_19_3(); public static final ByteArrayType.OptionalByteArrayType OPTIONAL_SIGNATURE_BYTES_TYPE = new ByteArrayType.OptionalByteArrayType(256); public static final ByteArrayType SIGNATURE_BYTES_TYPE = new ByteArrayType(256); - private final EntityPackets1_19_3 entityRewriter = new EntityPackets1_19_3(this); - private final BlockItemPackets1_19_3 itemRewriter = new BlockItemPackets1_19_3(this); + private final EntityPacketRewriter1_19_3 entityRewriter = new EntityPacketRewriter1_19_3(this); + private final BlockItemPacketRewriter1_19_3 itemRewriter = new BlockItemPacketRewriter1_19_3(this); private final TranslatableRewriter translatableRewriter = new TranslatableRewriter<>(this, ComponentRewriter.ReadType.JSON); private final TagRewriter tagRewriter = new TagRewriter<>(this); - public Protocol1_19_1To1_19_3() { + public Protocol1_19_3To1_19_1() { super(ClientboundPackets1_19_3.class, ClientboundPackets1_19_1.class, ServerboundPackets1_19_3.class, ServerboundPackets1_19_1.class); } @@ -84,14 +85,14 @@ public final class Protocol1_19_1To1_19_3 extends BackwardsProtocol soundRewriter = new SoundRewriter<>(this); @@ -99,11 +100,11 @@ public final class Protocol1_19_1To1_19_3 extends BackwardsProtocol { final String mappedIdentifier = rewriteSound(wrapper); if (mappedIdentifier != null) { - wrapper.write(Type.STRING, mappedIdentifier); - wrapper.setPacketType(ClientboundPackets1_19_1.NAMED_SOUND); + wrapper.write(Types.STRING, mappedIdentifier); + wrapper.setPacketType(ClientboundPackets1_19_1.CUSTOM_SOUND); } }); - registerClientbound(ClientboundPackets1_19_3.ENTITY_SOUND, wrapper -> { + registerClientbound(ClientboundPackets1_19_3.SOUND_ENTITY, wrapper -> { final String mappedIdentifier = rewriteSound(wrapper); if (mappedIdentifier == null) { return; @@ -115,57 +116,57 @@ public final class Protocol1_19_1To1_19_3 extends BackwardsProtocol(this).register(ClientboundPackets1_19_3.STATISTICS); + new StatisticsRewriter<>(this).register(ClientboundPackets1_19_3.AWARD_STATS); final CommandRewriter commandRewriter = new CommandRewriter<>(this); - registerClientbound(ClientboundPackets1_19_3.DECLARE_COMMANDS, wrapper -> { - final int size = wrapper.passthrough(Type.VAR_INT); + registerClientbound(ClientboundPackets1_19_3.COMMANDS, wrapper -> { + final int size = wrapper.passthrough(Types.VAR_INT); for (int i = 0; i < size; i++) { - final byte flags = wrapper.passthrough(Type.BYTE); - wrapper.passthrough(Type.VAR_INT_ARRAY_PRIMITIVE); // Children indices + final byte flags = wrapper.passthrough(Types.BYTE); + wrapper.passthrough(Types.VAR_INT_ARRAY_PRIMITIVE); // Children indices if ((flags & 0x08) != 0) { - wrapper.passthrough(Type.VAR_INT); // Redirect node index + wrapper.passthrough(Types.VAR_INT); // Redirect node index } final int nodeType = flags & 0x03; if (nodeType == 1 || nodeType == 2) { // Literal/argument node - wrapper.passthrough(Type.STRING); // Name + wrapper.passthrough(Types.STRING); // Name } if (nodeType == 2) { // Argument node - final int argumentTypeId = wrapper.read(Type.VAR_INT); + final int argumentTypeId = wrapper.read(Types.VAR_INT); final int mappedArgumentTypeId = MAPPINGS.getArgumentTypeMappings().getNewId(argumentTypeId); Preconditions.checkArgument(mappedArgumentTypeId != -1, "Unknown command argument type id: " + argumentTypeId); - wrapper.write(Type.VAR_INT, mappedArgumentTypeId); + wrapper.write(Types.VAR_INT, mappedArgumentTypeId); final String identifier = MAPPINGS.getArgumentTypeMappings().identifier(argumentTypeId); commandRewriter.handleArgument(wrapper, identifier); if (identifier.equals("minecraft:gamemode")) { - wrapper.write(Type.VAR_INT, 0); // Word + wrapper.write(Types.VAR_INT, 0); // Word } if ((flags & 0x10) != 0) { - wrapper.passthrough(Type.STRING); // Suggestion type + wrapper.passthrough(Types.STRING); // Suggestion type } } } - wrapper.passthrough(Type.VAR_INT); // Root node index + wrapper.passthrough(Types.VAR_INT); // Root node index }); registerClientbound(ClientboundPackets1_19_3.SERVER_DATA, new PacketHandlers() { @Override public void register() { - map(Type.OPTIONAL_COMPONENT); // Motd - map(Type.OPTIONAL_STRING); // Encoded icon - create(Type.BOOLEAN, false); // Previews chat + map(Types.OPTIONAL_COMPONENT); // Motd + map(Types.OPTIONAL_STRING); // Encoded icon + create(Types.BOOLEAN, false); // Previews chat } }); @@ -173,9 +174,9 @@ public final class Protocol1_19_1To1_19_3 extends BackwardsProtocol { - final ProfileKey profileKey = wrapper.read(Type.OPTIONAL_PROFILE_KEY); + final ProfileKey profileKey = wrapper.read(Types.OPTIONAL_PROFILE_KEY); if (profileKey == null) { wrapper.user().put(new NonceStorage(null)); } @@ -185,14 +186,14 @@ public final class Protocol1_19_1To1_19_3 extends BackwardsProtocol { if (wrapper.user().has(NonceStorage.class)) { return; } - final byte[] publicKey = wrapper.passthrough(Type.BYTE_ARRAY_PRIMITIVE); - final byte[] nonce = wrapper.passthrough(Type.BYTE_ARRAY_PRIMITIVE); + final byte[] publicKey = wrapper.passthrough(Types.BYTE_ARRAY_PRIMITIVE); + final byte[] nonce = wrapper.passthrough(Types.BYTE_ARRAY_PRIMITIVE); wrapper.user().put(new NonceStorage(CipherUtil.encryptNonce(publicKey, nonce))); }); } @@ -200,36 +201,36 @@ public final class Protocol1_19_1To1_19_3 extends BackwardsProtocol { final NonceStorage nonceStorage = wrapper.user().remove(NonceStorage.class); - final boolean isNonce = wrapper.read(Type.BOOLEAN); + final boolean isNonce = wrapper.read(Types.BOOLEAN); if (!isNonce) { - wrapper.read(Type.LONG); // Salt - wrapper.read(Type.BYTE_ARRAY_PRIMITIVE); // Signature - wrapper.write(Type.BYTE_ARRAY_PRIMITIVE, nonceStorage.nonce() != null ? nonceStorage.nonce() : new byte[0]); + wrapper.read(Types.LONG); // Salt + wrapper.read(Types.BYTE_ARRAY_PRIMITIVE); // Signature + wrapper.write(Types.BYTE_ARRAY_PRIMITIVE, nonceStorage.nonce() != null ? nonceStorage.nonce() : new byte[0]); } }); } }); - registerServerbound(ServerboundPackets1_19_1.CHAT_MESSAGE, new PacketHandlers() { + registerServerbound(ServerboundPackets1_19_1.CHAT, new PacketHandlers() { @Override public void register() { - map(Type.STRING); // Message - map(Type.LONG); // Timestamp - map(Type.LONG); // Salt - read(Type.BYTE_ARRAY_PRIMITIVE); // Signature - read(Type.BOOLEAN); // Signed preview - read(Type.PLAYER_MESSAGE_SIGNATURE_ARRAY); // Last seen messages - read(Type.OPTIONAL_PLAYER_MESSAGE_SIGNATURE); // Last received message + map(Types.STRING); // Message + map(Types.LONG); // Timestamp + map(Types.LONG); // Salt + read(Types.BYTE_ARRAY_PRIMITIVE); // Signature + read(Types.BOOLEAN); // Signed preview + read(Types.PLAYER_MESSAGE_SIGNATURE_ARRAY); // Last seen messages + read(Types.OPTIONAL_PLAYER_MESSAGE_SIGNATURE); // Last received message handler(wrapper -> { final ChatSession1_19_3 chatSession = wrapper.user().get(ChatSession1_19_3.class); if (chatSession != null) { - final String message = wrapper.get(Type.STRING, 0); - final long timestamp = wrapper.get(Type.LONG, 0); - final long salt = wrapper.get(Type.LONG, 1); + final String message = wrapper.get(Types.STRING, 0); + final long timestamp = wrapper.get(Types.LONG, 0); + final long salt = wrapper.get(Types.LONG, 1); final MessageMetadata metadata = new MessageMetadata(null, timestamp, salt); final byte[] signature; @@ -239,13 +240,13 @@ public final class Protocol1_19_1To1_19_3 extends BackwardsProtocol { final ChatSession1_19_3 chatSession = wrapper.user().get(ChatSession1_19_3.class); final SignableCommandArgumentsProvider argumentsProvider = Via.getManager().getProviders().get(SignableCommandArgumentsProvider.class); - final String command = wrapper.get(Type.STRING, 0); - final long timestamp = wrapper.get(Type.LONG, 0); - final long salt = wrapper.get(Type.LONG, 1); + final String command = wrapper.get(Types.STRING, 0); + final long timestamp = wrapper.get(Types.LONG, 0); + final long salt = wrapper.get(Types.LONG, 1); - final int signatures = wrapper.read(Type.VAR_INT); + final int signatures = wrapper.read(Types.VAR_INT); for (int i = 0; i < signatures; i++) { - wrapper.read(Type.STRING); // Name - wrapper.read(Type.BYTE_ARRAY_PRIMITIVE); // Signature + wrapper.read(Types.STRING); // Name + wrapper.read(Types.BYTE_ARRAY_PRIMITIVE); // Signature } - wrapper.read(Type.BOOLEAN); // Signed preview + wrapper.read(Types.BOOLEAN); // Signed preview if (chatSession != null && argumentsProvider != null) { final MessageMetadata metadata = new MessageMetadata(null, timestamp, salt); final List> arguments = argumentsProvider.getSignableArguments(command); - wrapper.write(Type.VAR_INT, arguments.size()); + wrapper.write(Types.VAR_INT, arguments.size()); for (final Pair argument : arguments) { final byte[] signature; try { @@ -284,76 +285,76 @@ public final class Protocol1_19_1To1_19_3 extends BackwardsProtocol { - final String plainContent = wrapper.read(Type.STRING); - wrapper.read(Type.LONG); // Timestamp - wrapper.read(Type.LONG); // Salt - final int lastSeen = wrapper.read(Type.VAR_INT); + final String plainContent = wrapper.read(Types.STRING); + wrapper.read(Types.LONG); // Timestamp + wrapper.read(Types.LONG); // Salt + final int lastSeen = wrapper.read(Types.VAR_INT); for (int i = 0; i < lastSeen; i++) { - final int index = wrapper.read(Type.VAR_INT); + final int index = wrapper.read(Types.VAR_INT); if (index == 0) { wrapper.read(SIGNATURE_BYTES_TYPE); } } - final JsonElement unsignedContent = wrapper.read(Type.OPTIONAL_COMPONENT); + final JsonElement unsignedContent = wrapper.read(Types.OPTIONAL_COMPONENT); final JsonElement content = unsignedContent != null ? unsignedContent : ComponentUtil.plainToJson(plainContent); translatableRewriter.processText(wrapper.user(), content); - final int filterMaskType = wrapper.read(Type.VAR_INT); + final int filterMaskType = wrapper.read(Types.VAR_INT); if (filterMaskType == 2) { - wrapper.read(Type.LONG_ARRAY_PRIMITIVE); // Mask + wrapper.read(Types.LONG_ARRAY_PRIMITIVE); // Mask } - final int chatTypeId = wrapper.read(Type.VAR_INT); - final JsonElement senderName = wrapper.read(Type.COMPONENT); - final JsonElement targetName = wrapper.read(Type.OPTIONAL_COMPONENT); - final JsonElement result = Protocol1_19To1_19_1.decorateChatMessage(wrapper.user().get(ChatTypeStorage1_19_3.class), chatTypeId, senderName, targetName, content); + final int chatTypeId = wrapper.read(Types.VAR_INT); + final JsonElement senderName = wrapper.read(Types.COMPONENT); + final JsonElement targetName = wrapper.read(Types.OPTIONAL_COMPONENT); + final JsonElement result = Protocol1_19_1To1_19.decorateChatMessage(wrapper.user().get(ChatTypeStorage1_19_3.class), chatTypeId, senderName, targetName, content); if (result == null) { wrapper.cancel(); return; } - wrapper.write(Type.COMPONENT, result); - wrapper.write(Type.BOOLEAN, false); + wrapper.write(Types.COMPONENT, result); + wrapper.write(Types.BOOLEAN, false); }); } }); registerClientbound(ClientboundPackets1_19_3.DISGUISED_CHAT, ClientboundPackets1_19_1.SYSTEM_CHAT, wrapper -> { - final JsonElement content = wrapper.read(Type.COMPONENT); + final JsonElement content = wrapper.read(Types.COMPONENT); translatableRewriter.processText(wrapper.user(), content); - final int chatTypeId = wrapper.read(Type.VAR_INT); - final JsonElement senderName = wrapper.read(Type.COMPONENT); - final JsonElement targetName = wrapper.read(Type.OPTIONAL_COMPONENT); - final JsonElement result = Protocol1_19To1_19_1.decorateChatMessage(wrapper.user().get(ChatTypeStorage1_19_3.class), chatTypeId, senderName, targetName, content); + final int chatTypeId = wrapper.read(Types.VAR_INT); + final JsonElement senderName = wrapper.read(Types.COMPONENT); + final JsonElement targetName = wrapper.read(Types.OPTIONAL_COMPONENT); + final JsonElement result = Protocol1_19_1To1_19.decorateChatMessage(wrapper.user().get(ChatTypeStorage1_19_3.class), chatTypeId, senderName, targetName, content); if (result == null) { wrapper.cancel(); return; } - wrapper.write(Type.COMPONENT, result); - wrapper.write(Type.BOOLEAN, false); + wrapper.write(Types.COMPONENT, result); + wrapper.write(Types.BOOLEAN, false); }); cancelClientbound(ClientboundPackets1_19_3.UPDATE_ENABLED_FEATURES); @@ -362,7 +363,7 @@ public final class Protocol1_19_1To1_19_3 extends BackwardsProtocol holder = wrapper.read(Type.SOUND_EVENT); + final Holder holder = wrapper.read(Types.SOUND_EVENT); if (holder.hasId()) { final int mappedId = MAPPINGS.getSoundMappings().getNewId(holder.id()); if (mappedId == -1) { @@ -370,7 +371,7 @@ public final class Protocol1_19_1To1_19_3 extends BackwardsProtocol. */ -package com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.data; +package com.viaversion.viabackwards.protocol.v1_19_3to1_19_1.data; +import com.viaversion.viabackwards.api.data.BackwardsMappingData; import com.viaversion.viabackwards.api.data.BackwardsMappingDataLoader; import com.viaversion.viaversion.libs.fastutil.objects.Object2IntMap; import com.viaversion.viaversion.libs.fastutil.objects.Object2IntOpenHashMap; import com.viaversion.viaversion.libs.gson.JsonArray; import com.viaversion.viaversion.libs.gson.JsonElement; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.Protocol1_19_3To1_19_1; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.viaversion.protocols.v1_19_1to1_19_3.Protocol1_19_1To1_19_3; import com.viaversion.viaversion.util.Key; -public final class BackwardsMappings extends com.viaversion.viabackwards.api.data.BackwardsMappings { +public final class BackwardsMappingData1_19_3 extends BackwardsMappingData { private final Object2IntMap mappedSounds = new Object2IntOpenHashMap<>(); - public BackwardsMappings() { - super("1.19.3", "1.19", Protocol1_19_3To1_19_1.class); + public BackwardsMappingData1_19_3() { + super("1.19.3", "1.19", Protocol1_19_1To1_19_3.class); mappedSounds.defaultReturnValue(-1); } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_1to1_19_3/packets/BlockItemPackets1_19_3.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_3to1_19_1/rewriter/BlockItemPacketRewriter1_19_3.java similarity index 57% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_1to1_19_3/packets/BlockItemPackets1_19_3.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_3to1_19_1/rewriter/BlockItemPacketRewriter1_19_3.java index 7360b9d0..0fe9abb3 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_1to1_19_3/packets/BlockItemPackets1_19_3.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_3to1_19_1/rewriter/BlockItemPacketRewriter1_19_3.java @@ -15,102 +15,103 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.packets; +package com.viaversion.viabackwards.protocol.v1_19_3to1_19_1.rewriter; import com.viaversion.viabackwards.api.rewriters.BackwardsItemRewriter; -import com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.Protocol1_19_1To1_19_3; +import com.viaversion.viabackwards.protocol.v1_19_3to1_19_1.Protocol1_19_3To1_19_1; import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_18; -import com.viaversion.viaversion.protocols.protocol1_19_1to1_19.ServerboundPackets1_19_1; -import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.ClientboundPackets1_19_3; +import com.viaversion.viaversion.protocols.v1_19_1to1_19_3.packet.ClientboundPackets1_19_3; +import com.viaversion.viaversion.protocols.v1_19to1_19_1.packet.ServerboundPackets1_19_1; import com.viaversion.viaversion.rewriter.BlockRewriter; import com.viaversion.viaversion.rewriter.RecipeRewriter; import com.viaversion.viaversion.util.Key; -public final class BlockItemPackets1_19_3 extends BackwardsItemRewriter { +public final class BlockItemPacketRewriter1_19_3 extends BackwardsItemRewriter { - public BlockItemPackets1_19_3(final Protocol1_19_1To1_19_3 protocol) { - super(protocol, Type.ITEM1_13_2, Type.ITEM1_13_2_ARRAY); + public BlockItemPacketRewriter1_19_3(final Protocol1_19_3To1_19_1 protocol) { + super(protocol, Types.ITEM1_13_2, Types.ITEM1_13_2_ARRAY); } @Override protected void registerPackets() { final BlockRewriter blockRewriter = BlockRewriter.for1_14(protocol); - blockRewriter.registerBlockAction(ClientboundPackets1_19_3.BLOCK_ACTION); - blockRewriter.registerBlockChange(ClientboundPackets1_19_3.BLOCK_CHANGE); - blockRewriter.registerVarLongMultiBlockChange(ClientboundPackets1_19_3.MULTI_BLOCK_CHANGE); - blockRewriter.registerEffect(ClientboundPackets1_19_3.EFFECT, 1010, 2001); - blockRewriter.registerChunkData1_19(ClientboundPackets1_19_3.CHUNK_DATA, ChunkType1_18::new); + blockRewriter.registerBlockEvent(ClientboundPackets1_19_3.BLOCK_EVENT); + blockRewriter.registerBlockUpdate(ClientboundPackets1_19_3.BLOCK_UPDATE); + blockRewriter.registerSectionBlocksUpdate(ClientboundPackets1_19_3.SECTION_BLOCKS_UPDATE); + blockRewriter.registerLevelEvent(ClientboundPackets1_19_3.LEVEL_EVENT, 1010, 2001); + blockRewriter.registerLevelChunk1_19(ClientboundPackets1_19_3.LEVEL_CHUNK_WITH_LIGHT, ChunkType1_18::new); blockRewriter.registerBlockEntityData(ClientboundPackets1_19_3.BLOCK_ENTITY_DATA); - registerSetCooldown(ClientboundPackets1_19_3.COOLDOWN); - registerWindowItems1_17_1(ClientboundPackets1_19_3.WINDOW_ITEMS); - registerSetSlot1_17_1(ClientboundPackets1_19_3.SET_SLOT); - registerEntityEquipmentArray(ClientboundPackets1_19_3.ENTITY_EQUIPMENT); - registerAdvancements(ClientboundPackets1_19_3.ADVANCEMENTS); - registerClickWindow1_17_1(ServerboundPackets1_19_1.CLICK_WINDOW); - registerTradeList1_19(ClientboundPackets1_19_3.TRADE_LIST); - registerCreativeInvAction(ServerboundPackets1_19_1.CREATIVE_INVENTORY_ACTION); - registerWindowPropertyEnchantmentHandler(ClientboundPackets1_19_3.WINDOW_PROPERTY); - registerSpawnParticle1_19(ClientboundPackets1_19_3.SPAWN_PARTICLE); + registerCooldown(ClientboundPackets1_19_3.COOLDOWN); + registerSetContent1_17_1(ClientboundPackets1_19_3.CONTAINER_SET_CONTENT); + registerSetSlot1_17_1(ClientboundPackets1_19_3.CONTAINER_SET_SLOT); + registerSetEquipment(ClientboundPackets1_19_3.SET_EQUIPMENT); + registerAdvancements(ClientboundPackets1_19_3.UPDATE_ADVANCEMENTS); + registerContainerClick1_17_1(ServerboundPackets1_19_1.CONTAINER_CLICK); + registerMerchantOffers1_19(ClientboundPackets1_19_3.MERCHANT_OFFERS); + registerSetCreativeModeSlot(ServerboundPackets1_19_1.SET_CREATIVE_MODE_SLOT); + registerContainerSetData(ClientboundPackets1_19_3.CONTAINER_SET_DATA); + registerLevelParticles1_19(ClientboundPackets1_19_3.LEVEL_PARTICLES); - protocol.registerClientbound(ClientboundPackets1_19_3.EXPLOSION, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_19_3.EXPLODE, new PacketHandlers() { @Override public void register() { - map(Type.DOUBLE, Type.FLOAT); // X - map(Type.DOUBLE, Type.FLOAT); // Y - map(Type.DOUBLE, Type.FLOAT); // Z + map(Types.DOUBLE, Types.FLOAT); // X + map(Types.DOUBLE, Types.FLOAT); // Y + map(Types.DOUBLE, Types.FLOAT); // Z } }); final RecipeRewriter recipeRewriter = new RecipeRewriter<>(protocol); - protocol.registerClientbound(ClientboundPackets1_19_3.DECLARE_RECIPES, wrapper -> { - final int size = wrapper.passthrough(Type.VAR_INT); + protocol.registerClientbound(ClientboundPackets1_19_3.UPDATE_RECIPES, wrapper -> { + final int size = wrapper.passthrough(Types.VAR_INT); for (int i = 0; i < size; i++) { - final String type = Key.stripMinecraftNamespace(wrapper.passthrough(Type.STRING)); - wrapper.passthrough(Type.STRING); // Recipe Identifier + final String type = Key.stripMinecraftNamespace(wrapper.passthrough(Types.STRING)); + wrapper.passthrough(Types.STRING); // Recipe Identifier switch (type) { case "crafting_shapeless": { - wrapper.passthrough(Type.STRING); // Group - wrapper.read(Type.VAR_INT); // Crafting book category - final int ingredients = wrapper.passthrough(Type.VAR_INT); + wrapper.passthrough(Types.STRING); // Group + wrapper.read(Types.VAR_INT); // Crafting book category + final int ingredients = wrapper.passthrough(Types.VAR_INT); for (int j = 0; j < ingredients; j++) { - final Item[] items = wrapper.passthrough(Type.ITEM1_13_2_ARRAY); // Ingredients + final Item[] items = wrapper.passthrough(Types.ITEM1_13_2_ARRAY); // Ingredients for (final Item item : items) { handleItemToClient(wrapper.user(), item); } } - handleItemToClient(wrapper.user(), wrapper.passthrough(Type.ITEM1_13_2)); // Result + handleItemToClient(wrapper.user(), wrapper.passthrough(Types.ITEM1_13_2)); // Result break; } case "crafting_shaped": { - final int ingredients = wrapper.passthrough(Type.VAR_INT) * wrapper.passthrough(Type.VAR_INT); - wrapper.passthrough(Type.STRING); // Group - wrapper.read(Type.VAR_INT); // Crafting book category + final int ingredients = wrapper.passthrough(Types.VAR_INT) * wrapper.passthrough(Types.VAR_INT); + wrapper.passthrough(Types.STRING); // Group + wrapper.read(Types.VAR_INT); // Crafting book category for (int j = 0; j < ingredients; j++) { - final Item[] items = wrapper.passthrough(Type.ITEM1_13_2_ARRAY); // Ingredients + final Item[] items = wrapper.passthrough(Types.ITEM1_13_2_ARRAY); // Ingredients for (final Item item : items) { handleItemToClient(wrapper.user(), item); } } - handleItemToClient(wrapper.user(), wrapper.passthrough(Type.ITEM1_13_2)); // Result + handleItemToClient(wrapper.user(), wrapper.passthrough(Types.ITEM1_13_2)); // Result break; } case "smelting": case "campfire_cooking": case "blasting": case "smoking": - wrapper.passthrough(Type.STRING); // Group - wrapper.read(Type.VAR_INT); // Crafting book category - final Item[] items = wrapper.passthrough(Type.ITEM1_13_2_ARRAY); // Ingredients + wrapper.passthrough(Types.STRING); // Group + wrapper.read(Types.VAR_INT); // Crafting book category + final Item[] items = wrapper.passthrough(Types.ITEM1_13_2_ARRAY); // Ingredients for (final Item item : items) { handleItemToClient(wrapper.user(), item); } - handleItemToClient(wrapper.user(), wrapper.passthrough(Type.ITEM1_13_2)); // Result - wrapper.passthrough(Type.FLOAT); // EXP - wrapper.passthrough(Type.VAR_INT); // Cooking time + handleItemToClient(wrapper.user(), wrapper.passthrough(Types.ITEM1_13_2)); // Result + wrapper.passthrough(Types.FLOAT); // EXP + wrapper.passthrough(Types.VAR_INT); // Cooking time break; case "crafting_special_armordye": case "crafting_special_bookcloning": @@ -125,7 +126,7 @@ public final class BlockItemPackets1_19_3 extends BackwardsItemRewriter. */ -package com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.packets; +package com.viaversion.viabackwards.protocol.v1_19_3to1_19_1.rewriter; import com.viaversion.viabackwards.api.rewriters.EntityRewriter; -import com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.Protocol1_19_1To1_19_3; -import com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.storage.ChatTypeStorage1_19_3; +import com.viaversion.viabackwards.protocol.v1_19_3to1_19_1.Protocol1_19_3To1_19_1; +import com.viaversion.viabackwards.protocol.v1_19_3to1_19_1.storage.ChatTypeStorage1_19_3; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.ProfileKey; import com.viaversion.viaversion.api.minecraft.entities.EntityType; @@ -28,22 +28,23 @@ import com.viaversion.viaversion.api.minecraft.signature.storage.ChatSession1_19 import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.BitSetType; import com.viaversion.viaversion.api.type.types.version.Types1_19; import com.viaversion.viaversion.api.type.types.version.Types1_19_3; import com.viaversion.viaversion.libs.gson.JsonElement; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.ListTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.NumberTag; -import com.viaversion.viaversion.protocols.protocol1_19_1to1_19.ClientboundPackets1_19_1; -import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.ClientboundPackets1_19_3; -import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.ServerboundPackets1_19_3; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.ListTag; +import com.viaversion.nbt.tag.NumberTag; +import com.viaversion.viaversion.protocols.v1_19_1to1_19_3.packet.ClientboundPackets1_19_3; +import com.viaversion.viaversion.protocols.v1_19_1to1_19_3.packet.ServerboundPackets1_19_3; +import com.viaversion.viaversion.protocols.v1_19to1_19_1.packet.ClientboundPackets1_19_1; import com.viaversion.viaversion.util.TagUtil; import java.util.BitSet; import java.util.UUID; import org.checkerframework.checker.nullness.qual.Nullable; -public final class EntityPackets1_19_3 extends EntityRewriter { +public final class EntityPacketRewriter1_19_3 extends EntityRewriter { private static final BitSetType PROFILE_ACTIONS_ENUM_TYPE = new BitSetType(6); private static final int[] PROFILE_ACTIONS = {2, 4, 5}; // Ignore initialize chat and listed status; add player already handled before @@ -54,27 +55,27 @@ public final class EntityPackets1_19_3 extends EntityRewriter chatTypes = TagUtil.getRegistryEntries(registry, "chat_type", new ListTag<>(CompoundTag.class)); for (final CompoundTag chatType : chatTypes) { final NumberTag idTag = chatType.getNumberTag("id"); @@ -94,9 +95,9 @@ public final class EntityPackets1_19_3 extends EntityRewriter { // Old clients will always keep entity data (packed here as 0x02), nothing we can do there - final byte keepDataMask = wrapper.read(Type.BYTE); - wrapper.write(Type.BOOLEAN, (keepDataMask & 1) != 0); // Keep attributes + final byte keepDataMask = wrapper.read(Types.BYTE); + wrapper.write(Types.BOOLEAN, (keepDataMask & 1) != 0); // Keep attributes }); } }); @@ -124,54 +125,54 @@ public final class EntityPackets1_19_3 extends EntityRewriter { wrapper.cancel(); final BitSet actions = wrapper.read(PROFILE_ACTIONS_ENUM_TYPE); - final int entries = wrapper.read(Type.VAR_INT); + final int entries = wrapper.read(Types.VAR_INT); if (actions.get(ADD_PLAYER)) { // Special case, as we need to write everything into one action final PacketWrapper playerInfoPacket = wrapper.create(ClientboundPackets1_19_1.PLAYER_INFO); - playerInfoPacket.write(Type.VAR_INT, 0); - playerInfoPacket.write(Type.VAR_INT, entries); + playerInfoPacket.write(Types.VAR_INT, 0); + playerInfoPacket.write(Types.VAR_INT, entries); for (int i = 0; i < entries; i++) { - playerInfoPacket.write(Type.UUID, wrapper.read(Type.UUID)); - playerInfoPacket.write(Type.STRING, wrapper.read(Type.STRING)); // Player Name + playerInfoPacket.write(Types.UUID, wrapper.read(Types.UUID)); + playerInfoPacket.write(Types.STRING, wrapper.read(Types.STRING)); // Player Name - final int properties = wrapper.read(Type.VAR_INT); - playerInfoPacket.write(Type.VAR_INT, properties); + final int properties = wrapper.read(Types.VAR_INT); + playerInfoPacket.write(Types.VAR_INT, properties); for (int j = 0; j < properties; j++) { - playerInfoPacket.write(Type.STRING, wrapper.read(Type.STRING)); // Name - playerInfoPacket.write(Type.STRING, wrapper.read(Type.STRING)); // Value - playerInfoPacket.write(Type.OPTIONAL_STRING, wrapper.read(Type.OPTIONAL_STRING)); // Signature + playerInfoPacket.write(Types.STRING, wrapper.read(Types.STRING)); // Name + playerInfoPacket.write(Types.STRING, wrapper.read(Types.STRING)); // Value + playerInfoPacket.write(Types.OPTIONAL_STRING, wrapper.read(Types.OPTIONAL_STRING)); // Signature } // Now check for the other parts individually and add dummy values if not present final ProfileKey profileKey; - if (actions.get(INITIALIZE_CHAT) && wrapper.read(Type.BOOLEAN)) { - wrapper.read(Type.UUID); // Session UUID - profileKey = wrapper.read(Type.PROFILE_KEY); + if (actions.get(INITIALIZE_CHAT) && wrapper.read(Types.BOOLEAN)) { + wrapper.read(Types.UUID); // Session UUID + profileKey = wrapper.read(Types.PROFILE_KEY); } else { profileKey = null; } - final int gamemode = actions.get(UPDATE_GAMEMODE) ? wrapper.read(Type.VAR_INT) : 0; + final int gamemode = actions.get(UPDATE_GAMEMODE) ? wrapper.read(Types.VAR_INT) : 0; if (actions.get(UPDATE_LISTED)) { - wrapper.read(Type.BOOLEAN); // Listed - throw away + wrapper.read(Types.BOOLEAN); // Listed - throw away } - final int latency = actions.get(UPDATE_LATENCY) ? wrapper.read(Type.VAR_INT) : 0; + final int latency = actions.get(UPDATE_LATENCY) ? wrapper.read(Types.VAR_INT) : 0; - final JsonElement displayName = actions.get(UPDATE_DISPLAYNAME) ? wrapper.read(Type.OPTIONAL_COMPONENT) : null; - playerInfoPacket.write(Type.VAR_INT, gamemode); - playerInfoPacket.write(Type.VAR_INT, latency); - playerInfoPacket.write(Type.OPTIONAL_COMPONENT, displayName); - playerInfoPacket.write(Type.OPTIONAL_PROFILE_KEY, profileKey); + final JsonElement displayName = actions.get(UPDATE_DISPLAYNAME) ? wrapper.read(Types.OPTIONAL_COMPONENT) : null; + playerInfoPacket.write(Types.VAR_INT, gamemode); + playerInfoPacket.write(Types.VAR_INT, latency); + playerInfoPacket.write(Types.OPTIONAL_COMPONENT, displayName); + playerInfoPacket.write(Types.OPTIONAL_PROFILE_KEY, profileKey); } - playerInfoPacket.send(Protocol1_19_1To1_19_3.class); + playerInfoPacket.send(Protocol1_19_3To1_19_1.class); return; } final PlayerProfileUpdate[] updates = new PlayerProfileUpdate[entries]; for (int i = 0; i < entries; i++) { - final UUID uuid = wrapper.read(Type.UUID); + final UUID uuid = wrapper.read(Types.UUID); int gamemode = 0; int latency = 0; JsonElement displayName = null; @@ -180,9 +181,9 @@ public final class EntityPackets1_19_3 extends EntityRewriter gamemode = wrapper.read(Type.VAR_INT); - case UPDATE_LATENCY -> latency = wrapper.read(Type.VAR_INT); - case UPDATE_DISPLAYNAME -> displayName = wrapper.read(Type.OPTIONAL_COMPONENT); + case UPDATE_GAMEMODE -> gamemode = wrapper.read(Types.VAR_INT); + case UPDATE_LATENCY -> latency = wrapper.read(Types.VAR_INT); + case UPDATE_DISPLAYNAME -> displayName = wrapper.read(Types.OPTIONAL_COMPONENT); } } @@ -198,46 +199,46 @@ public final class EntityPackets1_19_3 extends EntityRewriter { - final UUID[] uuids = wrapper.read(Type.UUID_ARRAY); - wrapper.write(Type.VAR_INT, 4); // Remove player - wrapper.write(Type.VAR_INT, uuids.length); + final UUID[] uuids = wrapper.read(Types.UUID_ARRAY); + wrapper.write(Types.VAR_INT, 4); // Remove player + wrapper.write(Types.VAR_INT, uuids.length); for (final UUID uuid : uuids) { - wrapper.write(Type.UUID, uuid); + wrapper.write(Types.UUID, uuid); } }); } private void sendPlayerProfileUpdate(final UserConnection connection, final int action, final PlayerProfileUpdate[] updates) { final PacketWrapper playerInfoPacket = PacketWrapper.create(ClientboundPackets1_19_1.PLAYER_INFO, connection); - playerInfoPacket.write(Type.VAR_INT, action); - playerInfoPacket.write(Type.VAR_INT, updates.length); + playerInfoPacket.write(Types.VAR_INT, action); + playerInfoPacket.write(Types.VAR_INT, updates.length); for (final PlayerProfileUpdate update : updates) { - playerInfoPacket.write(Type.UUID, update.uuid()); + playerInfoPacket.write(Types.UUID, update.uuid()); if (action == 1) { - playerInfoPacket.write(Type.VAR_INT, update.gamemode()); + playerInfoPacket.write(Types.VAR_INT, update.gamemode()); } else if (action == 2) { - playerInfoPacket.write(Type.VAR_INT, update.latency()); + playerInfoPacket.write(Types.VAR_INT, update.latency()); } else if (action == 3) { - playerInfoPacket.write(Type.OPTIONAL_COMPONENT, update.displayName()); + playerInfoPacket.write(Types.OPTIONAL_COMPONENT, update.displayName()); } else { throw new IllegalArgumentException("Invalid action: " + action); } } - playerInfoPacket.send(Protocol1_19_1To1_19_3.class); + playerInfoPacket.send(Protocol1_19_3To1_19_1.class); } @Override public void registerRewrites() { filter().handler((event, meta) -> { - final int id = meta.metaType().typeId(); + final int id = meta.dataType().typeId(); if (id > 2) { - meta.setMetaType(Types1_19.META_TYPES.byId(id - 1)); // long added + meta.setDataType(Types1_19.ENTITY_DATA_TYPES.byId(id - 1)); // long added } else if (id != 2) { - meta.setMetaType(Types1_19.META_TYPES.byId(id)); + meta.setDataType(Types1_19.ENTITY_DATA_TYPES.byId(id)); } }); - registerMetaTypeHandler(Types1_19.META_TYPES.itemType, Types1_19.META_TYPES.blockStateType, null, Types1_19.META_TYPES.particleType, - Types1_19.META_TYPES.componentType, Types1_19.META_TYPES.optionalComponentType); + registerMetaTypeHandler(Types1_19.ENTITY_DATA_TYPES.itemType, null, Types1_19.ENTITY_DATA_TYPES.optionalBlockStateType, Types1_19.ENTITY_DATA_TYPES.particleType, + Types1_19.ENTITY_DATA_TYPES.componentType, Types1_19.ENTITY_DATA_TYPES.optionalComponentType); filter().index(6).handler((event, meta) -> { // Sitting pose added @@ -248,7 +249,7 @@ public final class EntityPackets1_19_3 extends EntityRewriter { + filter().type(EntityTypes1_19_3.ABSTRACT_MINECART).index(11).handler((event, meta) -> { final int data = (int) meta.getValue(); meta.setValue(protocol.getMappingData().getNewBlockStateId(data)); }); diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_1to1_19_3/storage/ChatSessionStorage.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_3to1_19_1/storage/ChatSessionStorage.java similarity index 93% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_1to1_19_3/storage/ChatSessionStorage.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_3to1_19_1/storage/ChatSessionStorage.java index 167a39c6..3c5beec0 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_1to1_19_3/storage/ChatSessionStorage.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_3to1_19_1/storage/ChatSessionStorage.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.storage; +package com.viaversion.viabackwards.protocol.v1_19_3to1_19_1.storage; import com.viaversion.viaversion.api.connection.StorableObject; import java.util.UUID; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_1to1_19_3/storage/ChatTypeStorage1_19_3.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_3to1_19_1/storage/ChatTypeStorage1_19_3.java similarity index 83% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_1to1_19_3/storage/ChatTypeStorage1_19_3.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_3to1_19_1/storage/ChatTypeStorage1_19_3.java index fc95fdf1..47553f81 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_1to1_19_3/storage/ChatTypeStorage1_19_3.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_3to1_19_1/storage/ChatTypeStorage1_19_3.java @@ -15,9 +15,9 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.storage; +package com.viaversion.viabackwards.protocol.v1_19_3to1_19_1.storage; -import com.viaversion.viabackwards.protocol.protocol1_19to1_19_1.storage.ChatRegistryStorage; +import com.viaversion.viabackwards.protocol.v1_19_1to1_19.storage.ChatRegistryStorage; public final class ChatTypeStorage1_19_3 extends ChatRegistryStorage { } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_1to1_19_3/storage/NonceStorage.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_3to1_19_1/storage/NonceStorage.java similarity index 92% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_1to1_19_3/storage/NonceStorage.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_3to1_19_1/storage/NonceStorage.java index 2fd8362c..0899b797 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_1to1_19_3/storage/NonceStorage.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_3to1_19_1/storage/NonceStorage.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_19_1to1_19_3.storage; +package com.viaversion.viabackwards.protocol.v1_19_3to1_19_1.storage; import com.viaversion.viaversion.api.connection.StorableObject; import org.checkerframework.checker.nullness.qual.Nullable; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_3to1_19_4/Protocol1_19_3To1_19_4.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_4to1_19_3/Protocol1_19_4To1_19_3.java similarity index 62% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_3to1_19_4/Protocol1_19_3To1_19_4.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_4to1_19_3/Protocol1_19_4To1_19_3.java index a4530ac6..7abf857c 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_3to1_19_4/Protocol1_19_3To1_19_4.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_4to1_19_3/Protocol1_19_4To1_19_3.java @@ -15,25 +15,25 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_19_3to1_19_4; +package com.viaversion.viabackwards.protocol.v1_19_4to1_19_3; import com.viaversion.viabackwards.api.BackwardsProtocol; -import com.viaversion.viabackwards.api.data.BackwardsMappings; +import com.viaversion.viabackwards.api.data.BackwardsMappingData; import com.viaversion.viabackwards.api.rewriters.SoundRewriter; import com.viaversion.viabackwards.api.rewriters.TranslatableRewriter; -import com.viaversion.viabackwards.protocol.protocol1_19_3to1_19_4.packets.BlockItemPackets1_19_4; -import com.viaversion.viabackwards.protocol.protocol1_19_3to1_19_4.packets.EntityPackets1_19_4; +import com.viaversion.viabackwards.protocol.v1_19_4to1_19_3.rewriter.BlockItemPacketRewriter1_19_4; +import com.viaversion.viabackwards.protocol.v1_19_4to1_19_3.rewriter.EntityPacketRewriter1_19_4; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_19_4; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.data.entity.EntityTrackerBase; import com.viaversion.viaversion.libs.gson.JsonElement; -import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.ClientboundPackets1_19_3; -import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.ServerboundPackets1_19_3; -import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.ClientboundPackets1_19_4; -import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.Protocol1_19_4To1_19_3; -import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.ServerboundPackets1_19_4; +import com.viaversion.viaversion.protocols.v1_19_1to1_19_3.packet.ClientboundPackets1_19_3; +import com.viaversion.viaversion.protocols.v1_19_1to1_19_3.packet.ServerboundPackets1_19_3; +import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.Protocol1_19_3To1_19_4; +import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.packet.ClientboundPackets1_19_4; +import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.packet.ServerboundPackets1_19_4; import com.viaversion.viaversion.rewriter.CommandRewriter; import com.viaversion.viaversion.rewriter.ComponentRewriter; import com.viaversion.viaversion.rewriter.StatisticsRewriter; @@ -41,15 +41,15 @@ import com.viaversion.viaversion.rewriter.TagRewriter; import java.nio.charset.StandardCharsets; import java.util.Base64; -public final class Protocol1_19_3To1_19_4 extends BackwardsProtocol { +public final class Protocol1_19_4To1_19_3 extends BackwardsProtocol { - public static final BackwardsMappings MAPPINGS = new BackwardsMappings("1.19.4", "1.19.3", Protocol1_19_4To1_19_3.class); - private final EntityPackets1_19_4 entityRewriter = new EntityPackets1_19_4(this); - private final BlockItemPackets1_19_4 itemRewriter = new BlockItemPackets1_19_4(this); + public static final BackwardsMappingData MAPPINGS = new BackwardsMappingData("1.19.4", "1.19.3", Protocol1_19_3To1_19_4.class); + private final EntityPacketRewriter1_19_4 entityRewriter = new EntityPacketRewriter1_19_4(this); + private final BlockItemPacketRewriter1_19_4 itemRewriter = new BlockItemPacketRewriter1_19_4(this); private final TranslatableRewriter translatableRewriter = new TranslatableRewriter<>(this, ComponentRewriter.ReadType.JSON); private final TagRewriter tagRewriter = new TagRewriter<>(this); - public Protocol1_19_3To1_19_4() { + public Protocol1_19_4To1_19_3() { super(ClientboundPackets1_19_4.class, ClientboundPackets1_19_3.class, ServerboundPackets1_19_4.class, ServerboundPackets1_19_3.class); } @@ -59,17 +59,17 @@ public final class Protocol1_19_3To1_19_4 extends BackwardsProtocol soundRewriter = new SoundRewriter<>(this); soundRewriter.registerStopSound(ClientboundPackets1_19_4.STOP_SOUND); - soundRewriter.register1_19_3Sound(ClientboundPackets1_19_4.SOUND); - soundRewriter.register1_19_3Sound(ClientboundPackets1_19_4.ENTITY_SOUND); + soundRewriter.registerSound1_19_3(ClientboundPackets1_19_4.SOUND); + soundRewriter.registerSound1_19_3(ClientboundPackets1_19_4.SOUND_ENTITY); // TODO fallback field in components - translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.ACTIONBAR); - translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.TITLE_TEXT); - translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.TITLE_SUBTITLE); - translatableRewriter.registerBossBar(ClientboundPackets1_19_4.BOSSBAR); + translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.SET_ACTION_BAR_TEXT); + translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.SET_TITLE_TEXT); + translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.SET_SUBTITLE_TEXT); + translatableRewriter.registerBossEvent(ClientboundPackets1_19_4.BOSS_EVENT); translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.DISCONNECT); translatableRewriter.registerTabList(ClientboundPackets1_19_4.TAB_LIST); - translatableRewriter.registerCombatKill(ClientboundPackets1_19_4.COMBAT_KILL); + translatableRewriter.registerPlayerCombatKill(ClientboundPackets1_19_4.PLAYER_COMBAT_KILL); translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.SYSTEM_CHAT); translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.DISGUISED_CHAT); translatableRewriter.registerPing(); @@ -79,40 +79,40 @@ public final class Protocol1_19_3To1_19_4 extends BackwardsProtocol(this).register(ClientboundPackets1_19_4.STATISTICS); + new StatisticsRewriter<>(this).register(ClientboundPackets1_19_4.AWARD_STATS); registerClientbound(ClientboundPackets1_19_4.SERVER_DATA, wrapper -> { - final JsonElement element = wrapper.read(Type.COMPONENT); - wrapper.write(Type.OPTIONAL_COMPONENT, element); + final JsonElement element = wrapper.read(Types.COMPONENT); + wrapper.write(Types.OPTIONAL_COMPONENT, element); - final byte[] iconBytes = wrapper.read(Type.OPTIONAL_BYTE_ARRAY_PRIMITIVE); + final byte[] iconBytes = wrapper.read(Types.OPTIONAL_BYTE_ARRAY_PRIMITIVE); final String iconBase64 = iconBytes != null ? "data:image/png;base64," + new String(Base64.getEncoder().encode(iconBytes), StandardCharsets.UTF_8) : null; - wrapper.write(Type.OPTIONAL_STRING, iconBase64); + wrapper.write(Types.OPTIONAL_STRING, iconBase64); }); - cancelClientbound(ClientboundPackets1_19_4.BUNDLE); - cancelClientbound(ClientboundPackets1_19_4.CHUNK_BIOMES); // We definitely do not want to cache every single chunk just to resent them with new biomes + cancelClientbound(ClientboundPackets1_19_4.BUNDLE_DELIMITER); + cancelClientbound(ClientboundPackets1_19_4.CHUNKS_BIOMES); // We definitely do not want to cache every single chunk just to resent them with new biomes } @Override @@ -121,17 +121,17 @@ public final class Protocol1_19_3To1_19_4 extends BackwardsProtocol. + */ +package com.viaversion.viabackwards.protocol.v1_19_4to1_19_3.rewriter; + +import com.viaversion.viabackwards.api.rewriters.BackwardsItemRewriter; +import com.viaversion.viabackwards.protocol.v1_19_4to1_19_3.Protocol1_19_4To1_19_3; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_18; +import com.viaversion.viaversion.protocols.v1_19_1to1_19_3.packet.ServerboundPackets1_19_3; +import com.viaversion.viaversion.protocols.v1_19_1to1_19_3.rewriter.RecipeRewriter1_19_3; +import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.packet.ClientboundPackets1_19_4; +import com.viaversion.viaversion.rewriter.BlockRewriter; +import com.viaversion.viaversion.util.Key; + +public final class BlockItemPacketRewriter1_19_4 extends BackwardsItemRewriter { + + public BlockItemPacketRewriter1_19_4(final Protocol1_19_4To1_19_3 protocol) { + super(protocol, Types.ITEM1_13_2, Types.ITEM1_13_2_ARRAY); + } + + @Override + public void registerPackets() { + final BlockRewriter blockRewriter = BlockRewriter.for1_14(protocol); + blockRewriter.registerBlockEvent(ClientboundPackets1_19_4.BLOCK_EVENT); + blockRewriter.registerBlockUpdate(ClientboundPackets1_19_4.BLOCK_UPDATE); + blockRewriter.registerSectionBlocksUpdate(ClientboundPackets1_19_4.SECTION_BLOCKS_UPDATE); + blockRewriter.registerLevelEvent(ClientboundPackets1_19_4.LEVEL_EVENT, 1010, 2001); + blockRewriter.registerLevelChunk1_19(ClientboundPackets1_19_4.LEVEL_CHUNK_WITH_LIGHT, ChunkType1_18::new); + blockRewriter.registerBlockEntityData(ClientboundPackets1_19_4.BLOCK_ENTITY_DATA); + + protocol.registerClientbound(ClientboundPackets1_19_4.OPEN_SCREEN, new PacketHandlers() { + @Override + public void register() { + map(Types.VAR_INT); // Container id + map(Types.VAR_INT); // Container type + map(Types.COMPONENT); // Title + handler(wrapper -> { + final int windowType = wrapper.get(Types.VAR_INT, 1); + if (windowType == 21) { // New smithing menu + wrapper.cancel(); + } else if (windowType > 21) { + wrapper.set(Types.VAR_INT, 1, windowType - 1); + } + + protocol.getTranslatableRewriter().processText(wrapper.user(), wrapper.get(Types.COMPONENT, 0)); + }); + } + }); + + registerCooldown(ClientboundPackets1_19_4.COOLDOWN); + registerSetContent1_17_1(ClientboundPackets1_19_4.CONTAINER_SET_CONTENT); + registerSetSlot1_17_1(ClientboundPackets1_19_4.CONTAINER_SET_SLOT); + registerAdvancements(ClientboundPackets1_19_4.UPDATE_ADVANCEMENTS); + registerSetEquipment(ClientboundPackets1_19_4.SET_EQUIPMENT); + registerContainerClick1_17_1(ServerboundPackets1_19_3.CONTAINER_CLICK); + registerMerchantOffers1_19(ClientboundPackets1_19_4.MERCHANT_OFFERS); + registerSetCreativeModeSlot(ServerboundPackets1_19_3.SET_CREATIVE_MODE_SLOT); + registerContainerSetData(ClientboundPackets1_19_4.CONTAINER_SET_DATA); + registerLevelParticles1_19(ClientboundPackets1_19_4.LEVEL_PARTICLES); + + final RecipeRewriter1_19_3 recipeRewriter = new RecipeRewriter1_19_3<>(protocol) { + @Override + public void handleCraftingShaped(final PacketWrapper wrapper) { + final int ingredients = wrapper.passthrough(Types.VAR_INT) * wrapper.passthrough(Types.VAR_INT); + wrapper.passthrough(Types.STRING); // Group + wrapper.passthrough(Types.VAR_INT); // Crafting book category + for (int i = 0; i < ingredients; i++) { + handleIngredient(wrapper); + } + rewrite(wrapper.user(), wrapper.passthrough(Types.ITEM1_13_2)); // Result + + // Remove notification boolean + wrapper.read(Types.BOOLEAN); + } + }; + protocol.registerClientbound(ClientboundPackets1_19_4.UPDATE_RECIPES, wrapper -> { + final int size = wrapper.passthrough(Types.VAR_INT); + int newSize = size; + for (int i = 0; i < size; i++) { + final String type = wrapper.read(Types.STRING); + final String cutType = Key.stripMinecraftNamespace(type); + if (cutType.equals("smithing_transform") || cutType.equals("smithing_trim")) { + newSize--; + wrapper.read(Types.STRING); // Recipe identifier + wrapper.read(Types.ITEM1_13_2_ARRAY); // Template + wrapper.read(Types.ITEM1_13_2_ARRAY); // Base + wrapper.read(Types.ITEM1_13_2_ARRAY); // Additions + if (cutType.equals("smithing_transform")) { + wrapper.read(Types.ITEM1_13_2); // Result + } + continue; + } else if (cutType.equals("crafting_decorated_pot")) { + newSize--; + wrapper.read(Types.STRING); // Recipe identifier + wrapper.read(Types.VAR_INT); // Crafting book category + continue; + } + + wrapper.write(Types.STRING, type); + wrapper.passthrough(Types.STRING); // Recipe Identifier + recipeRewriter.handleRecipeType(wrapper, cutType); + } + + wrapper.set(Types.VAR_INT, 0, newSize); + }); + } +} \ No newline at end of file diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_3to1_19_4/packets/EntityPackets1_19_4.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_4to1_19_3/rewriter/EntityPacketRewriter1_19_4.java similarity index 59% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_3to1_19_4/packets/EntityPackets1_19_4.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_4to1_19_3/rewriter/EntityPacketRewriter1_19_4.java index 84bb5ee2..afc4178e 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_3to1_19_4/packets/EntityPackets1_19_4.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19_4to1_19_3/rewriter/EntityPacketRewriter1_19_4.java @@ -15,54 +15,54 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_19_3to1_19_4.packets; +package com.viaversion.viabackwards.protocol.v1_19_4to1_19_3.rewriter; -import com.viaversion.viabackwards.api.entities.storage.EntityData; +import com.viaversion.viabackwards.api.entities.storage.EntityReplacement; import com.viaversion.viabackwards.api.rewriters.EntityRewriter; -import com.viaversion.viabackwards.protocol.protocol1_19_3to1_19_4.Protocol1_19_3To1_19_4; +import com.viaversion.viabackwards.protocol.v1_19_4to1_19_3.Protocol1_19_4To1_19_3; import com.viaversion.viaversion.api.minecraft.entities.EntityType; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_19_4; -import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.api.minecraft.entitydata.EntityData; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; -import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.version.Types1_19_3; import com.viaversion.viaversion.api.type.types.version.Types1_19_4; import com.viaversion.viaversion.libs.gson.JsonElement; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.ListTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.NumberTag; -import com.viaversion.viaversion.protocols.protocol1_19_3to1_19_1.ClientboundPackets1_19_3; -import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.ClientboundPackets1_19_4; +import com.viaversion.viaversion.protocols.v1_19_1to1_19_3.packet.ClientboundPackets1_19_3; +import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.packet.ClientboundPackets1_19_4; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.ListTag; +import com.viaversion.nbt.tag.NumberTag; import com.viaversion.viaversion.util.TagUtil; -public final class EntityPackets1_19_4 extends EntityRewriter { +public final class EntityPacketRewriter1_19_4 extends EntityRewriter { - public EntityPackets1_19_4(final Protocol1_19_3To1_19_4 protocol) { - super(protocol, Types1_19_3.META_TYPES.optionalComponentType, Types1_19_3.META_TYPES.booleanType); + public EntityPacketRewriter1_19_4(final Protocol1_19_4To1_19_3 protocol) { + super(protocol, Types1_19_3.ENTITY_DATA_TYPES.optionalComponentType, Types1_19_3.ENTITY_DATA_TYPES.booleanType); } @Override public void registerPackets() { - registerTrackerWithData1_19(ClientboundPackets1_19_4.SPAWN_ENTITY, EntityTypes1_19_4.FALLING_BLOCK); + registerTrackerWithData1_19(ClientboundPackets1_19_4.ADD_ENTITY, EntityTypes1_19_4.FALLING_BLOCK); registerRemoveEntities(ClientboundPackets1_19_4.REMOVE_ENTITIES); - registerMetadataRewriter(ClientboundPackets1_19_4.ENTITY_METADATA, Types1_19_4.METADATA_LIST, Types1_19_3.METADATA_LIST); + registerSetEntityData(ClientboundPackets1_19_4.SET_ENTITY_DATA, Types1_19_4.ENTITY_DATA_LIST, Types1_19_3.ENTITY_DATA_LIST); - protocol.registerClientbound(ClientboundPackets1_19_4.JOIN_GAME, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_19_4.LOGIN, new PacketHandlers() { @Override public void register() { - map(Type.INT); // Entity id - map(Type.BOOLEAN); // Hardcore - map(Type.BYTE); // Gamemode - map(Type.BYTE); // Previous Gamemode - map(Type.STRING_ARRAY); // World List - map(Type.NAMED_COMPOUND_TAG); // Dimension registry - map(Type.STRING); // Dimension key - map(Type.STRING); // World + map(Types.INT); // Entity id + map(Types.BOOLEAN); // Hardcore + map(Types.BYTE); // Gamemode + map(Types.BYTE); // Previous Gamemode + map(Types.STRING_ARRAY); // World List + map(Types.NAMED_COMPOUND_TAG); // Dimension registry + map(Types.STRING); // Dimension key + map(Types.STRING); // World handler(dimensionDataHandler()); handler(biomeSizeTracker()); handler(worldDataTrackerHandlerByKey()); handler(wrapper -> { - final CompoundTag registry = wrapper.get(Type.NAMED_COMPOUND_TAG, 0); + final CompoundTag registry = wrapper.get(Types.NAMED_COMPOUND_TAG, 0); TagUtil.removeNamespaced(registry, "trim_pattern"); TagUtil.removeNamespaced(registry, "trim_material"); TagUtil.removeNamespaced(registry, "damage_type"); @@ -80,50 +80,50 @@ public final class EntityPackets1_19_4 extends EntityRewriter { // Source position - if (wrapper.read(Type.BOOLEAN)) { - wrapper.read(Type.DOUBLE); - wrapper.read(Type.DOUBLE); - wrapper.read(Type.DOUBLE); + if (wrapper.read(Types.BOOLEAN)) { + wrapper.read(Types.DOUBLE); + wrapper.read(Types.DOUBLE); + wrapper.read(Types.DOUBLE); } }); - create(Type.BYTE, (byte) 2); // Generic hurt + create(Types.BYTE, (byte) 2); // Generic hurt } }); - protocol.registerClientbound(ClientboundPackets1_19_4.HIT_ANIMATION, ClientboundPackets1_19_3.ENTITY_ANIMATION, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_19_4.HURT_ANIMATION, ClientboundPackets1_19_3.ANIMATE, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); // Entity id - read(Type.FLOAT); // Yaw - create(Type.UNSIGNED_BYTE, (short) 1); // Hit + map(Types.VAR_INT); // Entity id + read(Types.FLOAT); // Yaw + create(Types.UNSIGNED_BYTE, (short) 1); // Hit } }); protocol.registerClientbound(ClientboundPackets1_19_4.RESPAWN, new PacketHandlers() { @Override public void register() { - map(Type.STRING); // Dimension - map(Type.STRING); // World + map(Types.STRING); // Dimension + map(Types.STRING); // World handler(worldDataTrackerHandlerByKey()); } }); @@ -132,19 +132,19 @@ public final class EntityPackets1_19_4 extends EntityRewriter { - int id = meta.metaType().typeId(); + int id = meta.dataType().typeId(); if (id >= 25) { // Sniffer state, Vector3f, Quaternion types return; } else if (id >= 15) { // Optional block state - just map down to block state id--; } - meta.setMetaType(Types1_19_3.META_TYPES.byId(id)); + meta.setDataType(Types1_19_3.ENTITY_DATA_TYPES.byId(id)); }); - registerMetaTypeHandler(Types1_19_3.META_TYPES.itemType, Types1_19_3.META_TYPES.blockStateType, null, Types1_19_3.META_TYPES.particleType, - Types1_19_3.META_TYPES.componentType, Types1_19_3.META_TYPES.optionalComponentType); + registerMetaTypeHandler(Types1_19_3.ENTITY_DATA_TYPES.itemType, null, Types1_19_3.ENTITY_DATA_TYPES.optionalBlockStateType, Types1_19_3.ENTITY_DATA_TYPES.particleType, + Types1_19_3.ENTITY_DATA_TYPES.componentType, Types1_19_3.ENTITY_DATA_TYPES.optionalComponentType); - filter().type(EntityTypes1_19_4.MINECART_ABSTRACT).index(11).handler((event, meta) -> { + filter().type(EntityTypes1_19_4.ABSTRACT_MINECART).index(11).handler((event, meta) -> { final int blockState = meta.value(); meta.setValue(protocol.getMappingData().getNewBlockStateId(blockState)); }); @@ -159,8 +159,8 @@ public final class EntityPackets1_19_4 extends EntityRewriter { // Send as custom display name event.setIndex(2); - meta.setMetaType(Types1_19_3.META_TYPES.optionalComponentType); - event.createExtraMeta(new Metadata(3, Types1_19_3.META_TYPES.booleanType, true)); // Show custom name + meta.setDataType(Types1_19_3.ENTITY_DATA_TYPES.optionalComponentType); + event.createExtraData(new EntityData(3, Types1_19_3.ENTITY_DATA_TYPES.booleanType, true)); // Show custom name final JsonElement element = meta.value(); protocol.getTranslatableRewriter().processText(event.user(), element); @@ -187,10 +187,10 @@ public final class EntityPackets1_19_4 extends EntityRewriter { - storage.add(new Metadata(0, Types1_19_3.META_TYPES.byteType, (byte) 0x20)); // Invisible - storage.add(new Metadata(5, Types1_19_3.META_TYPES.booleanType, true)); // No gravity - storage.add(new Metadata(15, Types1_19_3.META_TYPES.byteType, (byte) (0x01 | 0x10))); // Small marker + final EntityReplacement.MetaCreator displayMetaCreator = storage -> { + storage.add(new EntityData(0, Types1_19_3.ENTITY_DATA_TYPES.byteType, (byte) 0x20)); // Invisible + storage.add(new EntityData(5, Types1_19_3.ENTITY_DATA_TYPES.booleanType, true)); // No gravity + storage.add(new EntityData(15, Types1_19_3.ENTITY_DATA_TYPES.byteType, (byte) (0x01 | 0x10))); // Small marker }; mapEntityTypeWithData(EntityTypes1_19_4.TEXT_DISPLAY, EntityTypes1_19_4.ARMOR_STAND).spawnMetadata(displayMetaCreator); mapEntityTypeWithData(EntityTypes1_19_4.ITEM_DISPLAY, EntityTypes1_19_4.ARMOR_STAND).spawnMetadata(displayMetaCreator); diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_18_2to1_19/Protocol1_18_2To1_19.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19to1_18_2/Protocol1_19To1_18_2.java similarity index 65% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_18_2to1_19/Protocol1_18_2To1_19.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_19to1_18_2/Protocol1_19To1_18_2.java index 537c16fb..0706a268 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_18_2to1_19/Protocol1_18_2To1_19.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19to1_18_2/Protocol1_19To1_18_2.java @@ -15,20 +15,20 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_18_2to1_19; +package com.viaversion.viabackwards.protocol.v1_19to1_18_2; import com.google.common.primitives.Longs; import com.viaversion.viabackwards.ViaBackwards; import com.viaversion.viabackwards.api.BackwardsProtocol; import com.viaversion.viabackwards.api.rewriters.SoundRewriter; import com.viaversion.viabackwards.api.rewriters.TranslatableRewriter; -import com.viaversion.viabackwards.protocol.protocol1_18_2to1_19.data.BackwardsMappings; -import com.viaversion.viabackwards.protocol.protocol1_18_2to1_19.data.CommandRewriter1_19; -import com.viaversion.viabackwards.protocol.protocol1_18_2to1_19.packets.BlockItemPackets1_19; -import com.viaversion.viabackwards.protocol.protocol1_18_2to1_19.packets.EntityPackets1_19; -import com.viaversion.viabackwards.protocol.protocol1_18_2to1_19.storage.DimensionRegistryStorage; -import com.viaversion.viabackwards.protocol.protocol1_18_2to1_19.storage.NonceStorage; -import com.viaversion.viabackwards.protocol.protocol1_19to1_19_1.Protocol1_19To1_19_1; +import com.viaversion.viabackwards.protocol.v1_19to1_18_2.data.BackwardsMappingData1_19; +import com.viaversion.viabackwards.protocol.v1_19to1_18_2.data.CommandRewriter1_19; +import com.viaversion.viabackwards.protocol.v1_19to1_18_2.rewriter.BlockItemPacketRewriter1_19; +import com.viaversion.viabackwards.protocol.v1_19to1_18_2.rewriter.EntityPacketRewriter1_19; +import com.viaversion.viabackwards.protocol.v1_19to1_18_2.storage.DimensionRegistryStorage; +import com.viaversion.viabackwards.protocol.v1_19to1_18_2.storage.NonceStorage; +import com.viaversion.viabackwards.protocol.v1_19_1to1_19.Protocol1_19_1To1_19; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.RegistryType; @@ -40,17 +40,18 @@ import com.viaversion.viaversion.api.minecraft.signature.storage.ChatSession1_19 import com.viaversion.viaversion.api.protocol.packet.State; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.data.entity.EntityTrackerBase; import com.viaversion.viaversion.libs.gson.JsonElement; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; +import com.viaversion.nbt.tag.CompoundTag; import com.viaversion.viaversion.protocols.base.ClientboundLoginPackets; import com.viaversion.viaversion.protocols.base.ServerboundLoginPackets; -import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.ServerboundPackets1_17; -import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.ClientboundPackets1_18; -import com.viaversion.viaversion.protocols.protocol1_19_1to1_19.Protocol1_19_1To1_19; -import com.viaversion.viaversion.protocols.protocol1_19_1to1_19.data.ChatDecorationResult; -import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.ClientboundPackets1_19; -import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.ServerboundPackets1_19; +import com.viaversion.viaversion.protocols.v1_16_4to1_17.packet.ServerboundPackets1_17; +import com.viaversion.viaversion.protocols.v1_17_1to1_18.packet.ClientboundPackets1_18; +import com.viaversion.viaversion.protocols.v1_18_2to1_19.packet.ClientboundPackets1_19; +import com.viaversion.viaversion.protocols.v1_18_2to1_19.packet.ServerboundPackets1_19; +import com.viaversion.viaversion.protocols.v1_19to1_19_1.Protocol1_19To1_19_1; +import com.viaversion.viaversion.protocols.v1_19to1_19_1.data.ChatDecorationResult; import com.viaversion.viaversion.rewriter.CommandRewriter; import com.viaversion.viaversion.rewriter.ComponentRewriter; import com.viaversion.viaversion.rewriter.StatisticsRewriter; @@ -62,17 +63,17 @@ import java.util.List; import java.util.UUID; import java.util.concurrent.ThreadLocalRandom; -public final class Protocol1_18_2To1_19 extends BackwardsProtocol { +public final class Protocol1_19To1_18_2 extends BackwardsProtocol { - public static final BackwardsMappings MAPPINGS = new BackwardsMappings(); + public static final BackwardsMappingData1_19 MAPPINGS = new BackwardsMappingData1_19(); private static final UUID ZERO_UUID = new UUID(0, 0); private static final byte[] EMPTY_BYTES = new byte[0]; - private final EntityPackets1_19 entityRewriter = new EntityPackets1_19(this); - private final BlockItemPackets1_19 blockItemPackets = new BlockItemPackets1_19(this); + private final EntityPacketRewriter1_19 entityRewriter = new EntityPacketRewriter1_19(this); + private final BlockItemPacketRewriter1_19 blockItemPackets = new BlockItemPacketRewriter1_19(this); private final TranslatableRewriter translatableRewriter = new TranslatableRewriter<>(this, ComponentRewriter.ReadType.JSON); private final TagRewriter tagRewriter = new TagRewriter<>(this); - public Protocol1_18_2To1_19() { + public Protocol1_19To1_18_2() { super(ClientboundPackets1_19.class, ClientboundPackets1_18.class, ServerboundPackets1_19.class, ServerboundPackets1_17.class); } @@ -80,14 +81,14 @@ public final class Protocol1_18_2To1_19 extends BackwardsProtocol soundRewriter = new SoundRewriter<>(this); @@ -95,40 +96,40 @@ public final class Protocol1_18_2To1_19 extends BackwardsProtocol(this).register(ClientboundPackets1_19.STATISTICS); + new StatisticsRewriter<>(this).register(ClientboundPackets1_19.AWARD_STATS); final CommandRewriter commandRewriter = new CommandRewriter1_19(this); - registerClientbound(ClientboundPackets1_19.DECLARE_COMMANDS, wrapper -> { - final int size = wrapper.passthrough(Type.VAR_INT); + registerClientbound(ClientboundPackets1_19.COMMANDS, wrapper -> { + final int size = wrapper.passthrough(Types.VAR_INT); for (int i = 0; i < size; i++) { - final byte flags = wrapper.passthrough(Type.BYTE); - wrapper.passthrough(Type.VAR_INT_ARRAY_PRIMITIVE); // Children indices + final byte flags = wrapper.passthrough(Types.BYTE); + wrapper.passthrough(Types.VAR_INT_ARRAY_PRIMITIVE); // Children indices if ((flags & 0x08) != 0) { - wrapper.passthrough(Type.VAR_INT); // Redirect node index + wrapper.passthrough(Types.VAR_INT); // Redirect node index } final int nodeType = flags & 0x03; if (nodeType == 1 || nodeType == 2) { // Literal/argument node - wrapper.passthrough(Type.STRING); // Name + wrapper.passthrough(Types.STRING); // Name } if (nodeType == 2) { // Argument node - final int argumentTypeId = wrapper.read(Type.VAR_INT); + final int argumentTypeId = wrapper.read(Types.VAR_INT); String argumentType = MAPPINGS.getArgumentTypeMappings().identifier(argumentTypeId); if (argumentType == null) { ViaBackwards.getPlatform().getLogger().warning("Unknown command argument type id: " + argumentTypeId); argumentType = "minecraft:no"; } - wrapper.write(Type.STRING, commandRewriter.handleArgumentType(argumentType)); + wrapper.write(Types.STRING, commandRewriter.handleArgumentType(argumentType)); commandRewriter.handleArgument(wrapper, argumentType); if ((flags & 0x10) != 0) { - wrapper.passthrough(Type.STRING); // Suggestion type + wrapper.passthrough(Types.STRING); // Suggestion type } } } - wrapper.passthrough(Type.VAR_INT); // Root node index + wrapper.passthrough(Types.VAR_INT); // Root node index }); cancelClientbound(ClientboundPackets1_19.SERVER_DATA); cancelClientbound(ClientboundPackets1_19.CHAT_PREVIEW); cancelClientbound(ClientboundPackets1_19.SET_DISPLAY_CHAT_PREVIEW); - registerClientbound(ClientboundPackets1_19.PLAYER_CHAT, ClientboundPackets1_18.CHAT_MESSAGE, new PacketHandlers() { + registerClientbound(ClientboundPackets1_19.PLAYER_CHAT, ClientboundPackets1_18.CHAT, new PacketHandlers() { @Override public void register() { handler(wrapper -> { - final JsonElement signedContent = wrapper.read(Type.COMPONENT); - final JsonElement unsignedContent = wrapper.read(Type.OPTIONAL_COMPONENT); - final int chatTypeId = wrapper.read(Type.VAR_INT); - final UUID sender = wrapper.read(Type.UUID); - final JsonElement senderName = wrapper.read(Type.COMPONENT); - final JsonElement teamName = wrapper.read(Type.OPTIONAL_COMPONENT); + final JsonElement signedContent = wrapper.read(Types.COMPONENT); + final JsonElement unsignedContent = wrapper.read(Types.OPTIONAL_COMPONENT); + final int chatTypeId = wrapper.read(Types.VAR_INT); + final UUID sender = wrapper.read(Types.UUID); + final JsonElement senderName = wrapper.read(Types.COMPONENT); + final JsonElement teamName = wrapper.read(Types.OPTIONAL_COMPONENT); final CompoundTag chatType = wrapper.user().get(DimensionRegistryStorage.class).chatType(chatTypeId); - final ChatDecorationResult decorationResult = Protocol1_19_1To1_19.decorateChatMessage(chatType, chatTypeId, senderName, teamName, unsignedContent != null ? unsignedContent : signedContent); + final ChatDecorationResult decorationResult = Protocol1_19To1_19_1.decorateChatMessage(chatType, chatTypeId, senderName, teamName, unsignedContent != null ? unsignedContent : signedContent); if (decorationResult == null) { wrapper.cancel(); return; } translatableRewriter.processText(wrapper.user(), decorationResult.content()); - wrapper.write(Type.COMPONENT, decorationResult.content()); - wrapper.write(Type.BYTE, decorationResult.overlay() ? (byte) 2 : 1); - wrapper.write(Type.UUID, sender); + wrapper.write(Types.COMPONENT, decorationResult.content()); + wrapper.write(Types.BYTE, decorationResult.overlay() ? (byte) 2 : 1); + wrapper.write(Types.UUID, sender); }); - read(Type.LONG); // Timestamp - read(Type.LONG); // Salt - read(Type.BYTE_ARRAY_PRIMITIVE); // Signature + read(Types.LONG); // Timestamp + read(Types.LONG); // Salt + read(Types.BYTE_ARRAY_PRIMITIVE); // Signature } }); - registerClientbound(ClientboundPackets1_19.SYSTEM_CHAT, ClientboundPackets1_18.CHAT_MESSAGE, new PacketHandlers() { + registerClientbound(ClientboundPackets1_19.SYSTEM_CHAT, ClientboundPackets1_18.CHAT, new PacketHandlers() { @Override public void register() { handler(wrapper -> { - final JsonElement content = wrapper.passthrough(Type.COMPONENT); + final JsonElement content = wrapper.passthrough(Types.COMPONENT); translatableRewriter.processText(wrapper.user(), content); // Screw everything that isn't a system or game info type (which would only happen on funny 1.19.0 servers) - final int typeId = wrapper.read(Type.VAR_INT); - wrapper.write(Type.BYTE, typeId == Protocol1_19To1_19_1.GAME_INFO_ID ? (byte) 2 : (byte) 0); + final int typeId = wrapper.read(Types.VAR_INT); + wrapper.write(Types.BYTE, typeId == Protocol1_19_1To1_19.GAME_INFO_ID ? (byte) 2 : (byte) 0); }); - create(Type.UUID, ZERO_UUID); // Sender + create(Types.UUID, ZERO_UUID); // Sender } }); - registerServerbound(ServerboundPackets1_17.CHAT_MESSAGE, new PacketHandlers() { + registerServerbound(ServerboundPackets1_17.CHAT, new PacketHandlers() { @Override public void register() { - map(Type.STRING); // Message + map(Types.STRING); // Message handler(wrapper -> { final ChatSession1_19_0 chatSession = wrapper.user().get(ChatSession1_19_0.class); @@ -238,22 +239,22 @@ public final class Protocol1_18_2To1_19 extends BackwardsProtocol> arguments = argumentsProvider.getSignableArguments(command); - wrapper.write(Type.VAR_INT, arguments.size()); + wrapper.write(Types.VAR_INT, arguments.size()); for (final Pair argument : arguments) { final byte[] signature; try { @@ -262,11 +263,11 @@ public final class Protocol1_18_2To1_19 extends BackwardsProtocol { - final int properties = wrapper.read(Type.VAR_INT); + final int properties = wrapper.read(Types.VAR_INT); for (int i = 0; i < properties; i++) { - wrapper.read(Type.STRING); // Name - wrapper.read(Type.STRING); // Value - wrapper.read(Type.OPTIONAL_STRING); // Optional signature + wrapper.read(Types.STRING); // Name + wrapper.read(Types.STRING); // Value + wrapper.read(Types.OPTIONAL_STRING); // Optional signature } }); } @@ -310,11 +311,11 @@ public final class Protocol1_18_2To1_19 extends BackwardsProtocol { if (wrapper.user().has(ChatSession1_19_0.class)) { - wrapper.user().put(new NonceStorage(wrapper.passthrough(Type.BYTE_ARRAY_PRIMITIVE))); // Nonce + wrapper.user().put(new NonceStorage(wrapper.passthrough(Types.BYTE_ARRAY_PRIMITIVE))); // Nonce } }); } @@ -322,10 +323,10 @@ public final class Protocol1_18_2To1_19 extends BackwardsProtocol { final ChatSession1_19_0 chatSession = wrapper.user().get(ChatSession1_19_0.class); - wrapper.write(Type.OPTIONAL_PROFILE_KEY, chatSession == null ? null : chatSession.getProfileKey()); // Profile Key + wrapper.write(Types.OPTIONAL_PROFILE_KEY, chatSession == null ? null : chatSession.getProfileKey()); // Profile Key }); } }); @@ -333,12 +334,12 @@ public final class Protocol1_18_2To1_19 extends BackwardsProtocol { final ChatSession1_19_0 chatSession = wrapper.user().get(ChatSession1_19_0.class); - final byte[] verifyToken = wrapper.read(Type.BYTE_ARRAY_PRIMITIVE); // Verify token - wrapper.write(Type.BOOLEAN, chatSession == null); // Is nonce + final byte[] verifyToken = wrapper.read(Types.BYTE_ARRAY_PRIMITIVE); // Verify token + wrapper.write(Types.BOOLEAN, chatSession == null); // Is nonce if (chatSession != null) { final long salt = ThreadLocalRandom.current().nextLong(); final byte[] signature; @@ -350,10 +351,10 @@ public final class Protocol1_18_2To1_19 extends BackwardsProtocol. */ -package com.viaversion.viabackwards.protocol.protocol1_18_2to1_19.data; +package com.viaversion.viabackwards.protocol.v1_19to1_18_2.data; +import com.viaversion.viabackwards.api.data.BackwardsMappingData; import com.viaversion.viabackwards.api.data.BackwardsMappingDataLoader; import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectMap; import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectOpenHashMap; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.ListTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.NumberTag; -import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.Protocol1_19To1_18_2; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.ListTag; +import com.viaversion.nbt.tag.NumberTag; +import com.viaversion.viaversion.protocols.v1_18_2to1_19.Protocol1_18_2To1_19; import org.checkerframework.checker.nullness.qual.Nullable; -public final class BackwardsMappings extends com.viaversion.viabackwards.api.data.BackwardsMappings { +public final class BackwardsMappingData1_19 extends BackwardsMappingData { private final Int2ObjectMap defaultChatTypes = new Int2ObjectOpenHashMap<>(); - public BackwardsMappings() { - super("1.19", "1.18", Protocol1_19To1_18_2.class); + public BackwardsMappingData1_19() { + super("1.19", "1.18", Protocol1_18_2To1_19.class); } @Override diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_18_2to1_19/data/CommandRewriter1_19.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19to1_18_2/data/CommandRewriter1_19.java similarity index 72% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_18_2to1_19/data/CommandRewriter1_19.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_19to1_18_2/data/CommandRewriter1_19.java index 74e42b5d..f8b66af4 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_18_2to1_19/data/CommandRewriter1_19.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19to1_18_2/data/CommandRewriter1_19.java @@ -15,18 +15,18 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_18_2to1_19.data; +package com.viaversion.viabackwards.protocol.v1_19to1_18_2.data; -import com.viaversion.viabackwards.protocol.protocol1_18_2to1_19.Protocol1_18_2To1_19; -import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.ClientboundPackets1_19; +import com.viaversion.viabackwards.protocol.v1_19to1_18_2.Protocol1_19To1_18_2; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.protocols.v1_18_2to1_19.packet.ClientboundPackets1_19; import com.viaversion.viaversion.rewriter.CommandRewriter; public final class CommandRewriter1_19 extends CommandRewriter { - public CommandRewriter1_19(Protocol1_18_2To1_19 protocol) { + public CommandRewriter1_19(Protocol1_19To1_18_2 protocol) { super(protocol); - this.parserHandlers.put("minecraft:template_mirror", wrapper -> wrapper.write(Type.VAR_INT, 0)); - this.parserHandlers.put("minecraft:template_rotation", wrapper -> wrapper.write(Type.VAR_INT, 0)); + this.parserHandlers.put("minecraft:template_mirror", wrapper -> wrapper.write(Types.VAR_INT, 0)); + this.parserHandlers.put("minecraft:template_rotation", wrapper -> wrapper.write(Types.VAR_INT, 0)); } } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_18_2to1_19/packets/BlockItemPackets1_19.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19to1_18_2/rewriter/BlockItemPacketRewriter1_19.java similarity index 51% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_18_2to1_19/packets/BlockItemPackets1_19.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_19to1_18_2/rewriter/BlockItemPacketRewriter1_19.java index bed897e3..f975eb02 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_18_2to1_19/packets/BlockItemPackets1_19.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19to1_18_2/rewriter/BlockItemPacketRewriter1_19.java @@ -15,10 +15,10 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_18_2to1_19.packets; +package com.viaversion.viabackwards.protocol.v1_19to1_18_2.rewriter; import com.viaversion.viabackwards.api.rewriters.BackwardsItemRewriter; -import com.viaversion.viabackwards.protocol.protocol1_18_2to1_19.Protocol1_18_2To1_19; +import com.viaversion.viabackwards.protocol.v1_19to1_18_2.Protocol1_19To1_18_2; import com.viaversion.viaversion.api.data.ParticleMappings; import com.viaversion.viaversion.api.data.entity.EntityTracker; import com.viaversion.viaversion.api.minecraft.chunks.Chunk; @@ -29,117 +29,118 @@ import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_18; -import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.ServerboundPackets1_17; -import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.ClientboundPackets1_19; +import com.viaversion.viaversion.protocols.v1_16_4to1_17.packet.ServerboundPackets1_17; +import com.viaversion.viaversion.protocols.v1_18_2to1_19.packet.ClientboundPackets1_19; import com.viaversion.viaversion.rewriter.BlockRewriter; import com.viaversion.viaversion.rewriter.RecipeRewriter; import com.viaversion.viaversion.util.MathUtil; -public final class BlockItemPackets1_19 extends BackwardsItemRewriter { +public final class BlockItemPacketRewriter1_19 extends BackwardsItemRewriter { - public BlockItemPackets1_19(final Protocol1_18_2To1_19 protocol) { - super(protocol, Type.ITEM1_13_2, Type.ITEM1_13_2_ARRAY); + public BlockItemPacketRewriter1_19(final Protocol1_19To1_18_2 protocol) { + super(protocol, Types.ITEM1_13_2, Types.ITEM1_13_2_ARRAY); } @Override protected void registerPackets() { final BlockRewriter blockRewriter = BlockRewriter.for1_14(protocol); - new RecipeRewriter<>(protocol).register(ClientboundPackets1_19.DECLARE_RECIPES); + new RecipeRewriter<>(protocol).register(ClientboundPackets1_19.UPDATE_RECIPES); - registerSetCooldown(ClientboundPackets1_19.COOLDOWN); - registerWindowItems1_17_1(ClientboundPackets1_19.WINDOW_ITEMS); - registerSetSlot1_17_1(ClientboundPackets1_19.SET_SLOT); - registerEntityEquipmentArray(ClientboundPackets1_19.ENTITY_EQUIPMENT); - registerAdvancements(ClientboundPackets1_19.ADVANCEMENTS); - registerClickWindow1_17_1(ServerboundPackets1_17.CLICK_WINDOW); + registerCooldown(ClientboundPackets1_19.COOLDOWN); + registerSetContent1_17_1(ClientboundPackets1_19.CONTAINER_SET_CONTENT); + registerSetSlot1_17_1(ClientboundPackets1_19.CONTAINER_SET_SLOT); + registerSetEquipment(ClientboundPackets1_19.SET_EQUIPMENT); + registerAdvancements(ClientboundPackets1_19.UPDATE_ADVANCEMENTS); + registerContainerClick1_17_1(ServerboundPackets1_17.CONTAINER_CLICK); - blockRewriter.registerBlockAction(ClientboundPackets1_19.BLOCK_ACTION); - blockRewriter.registerBlockChange(ClientboundPackets1_19.BLOCK_CHANGE); - blockRewriter.registerVarLongMultiBlockChange(ClientboundPackets1_19.MULTI_BLOCK_CHANGE); - blockRewriter.registerEffect(ClientboundPackets1_19.EFFECT, 1010, 2001); + blockRewriter.registerBlockEvent(ClientboundPackets1_19.BLOCK_EVENT); + blockRewriter.registerBlockUpdate(ClientboundPackets1_19.BLOCK_UPDATE); + blockRewriter.registerSectionBlocksUpdate(ClientboundPackets1_19.SECTION_BLOCKS_UPDATE); + blockRewriter.registerLevelEvent(ClientboundPackets1_19.LEVEL_EVENT, 1010, 2001); - registerCreativeInvAction(ServerboundPackets1_17.CREATIVE_INVENTORY_ACTION); + registerSetCreativeModeSlot(ServerboundPackets1_17.SET_CREATIVE_MODE_SLOT); - protocol.registerClientbound(ClientboundPackets1_19.TRADE_LIST, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_19.MERCHANT_OFFERS, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); // Container id + map(Types.VAR_INT); // Container id handler(wrapper -> { - final int size = wrapper.read(Type.VAR_INT); - wrapper.write(Type.UNSIGNED_BYTE, (short) size); + final int size = wrapper.read(Types.VAR_INT); + wrapper.write(Types.UNSIGNED_BYTE, (short) size); for (int i = 0; i < size; i++) { - handleItemToClient(wrapper.user(), wrapper.passthrough(Type.ITEM1_13_2)); // First item - handleItemToClient(wrapper.user(), wrapper.passthrough(Type.ITEM1_13_2)); // Result + handleItemToClient(wrapper.user(), wrapper.passthrough(Types.ITEM1_13_2)); // First item + handleItemToClient(wrapper.user(), wrapper.passthrough(Types.ITEM1_13_2)); // Result - final Item secondItem = wrapper.read(Type.ITEM1_13_2); + final Item secondItem = wrapper.read(Types.ITEM1_13_2); if (secondItem != null) { handleItemToClient(wrapper.user(), secondItem); - wrapper.write(Type.BOOLEAN, true); - wrapper.write(Type.ITEM1_13_2, secondItem); + wrapper.write(Types.BOOLEAN, true); + wrapper.write(Types.ITEM1_13_2, secondItem); } else { - wrapper.write(Type.BOOLEAN, false); + wrapper.write(Types.BOOLEAN, false); } - wrapper.passthrough(Type.BOOLEAN); // Out of stock - wrapper.passthrough(Type.INT); // Uses - wrapper.passthrough(Type.INT); // Max uses - wrapper.passthrough(Type.INT); // Xp - wrapper.passthrough(Type.INT); // Special price diff - wrapper.passthrough(Type.FLOAT); // Price multiplier - wrapper.passthrough(Type.INT); //Demand + wrapper.passthrough(Types.BOOLEAN); // Out of stock + wrapper.passthrough(Types.INT); // Uses + wrapper.passthrough(Types.INT); // Max uses + wrapper.passthrough(Types.INT); // Xp + wrapper.passthrough(Types.INT); // Special price diff + wrapper.passthrough(Types.FLOAT); // Price multiplier + wrapper.passthrough(Types.INT); //Demand } }); } }); - registerWindowPropertyEnchantmentHandler(ClientboundPackets1_19.WINDOW_PROPERTY); + registerContainerSetData(ClientboundPackets1_19.CONTAINER_SET_DATA); protocol.registerClientbound(ClientboundPackets1_19.BLOCK_CHANGED_ACK, null, new PacketHandlers() { @Override public void register() { - read(Type.VAR_INT); // Sequence + read(Types.VAR_INT); // Sequence handler(PacketWrapper::cancel); // This is fine:tm: } }); - protocol.registerClientbound(ClientboundPackets1_19.SPAWN_PARTICLE, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_19.LEVEL_PARTICLES, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT, Type.INT); // Particle id - map(Type.BOOLEAN); // Override limiter - map(Type.DOUBLE); // X - map(Type.DOUBLE); // Y - map(Type.DOUBLE); // Z - map(Type.FLOAT); // Offset X - map(Type.FLOAT); // Offset Y - map(Type.FLOAT); // Offset Z - map(Type.FLOAT); // Max speed - map(Type.INT); // Particle Count + map(Types.VAR_INT, Types.INT); // Particle id + map(Types.BOOLEAN); // Override limiter + map(Types.DOUBLE); // X + map(Types.DOUBLE); // Y + map(Types.DOUBLE); // Z + map(Types.FLOAT); // Offset X + map(Types.FLOAT); // Offset Y + map(Types.FLOAT); // Offset Z + map(Types.FLOAT); // Max speed + map(Types.INT); // Particle Count handler(wrapper -> { - final int id = wrapper.get(Type.INT, 0); + final int id = wrapper.get(Types.INT, 0); final ParticleMappings particleMappings = protocol.getMappingData().getParticleMappings(); if (id == particleMappings.id("sculk_charge")) { //TODO - wrapper.set(Type.INT, 0, -1); + wrapper.set(Types.INT, 0, -1); wrapper.cancel(); } else if (id == particleMappings.id("shriek")) { //TODO - wrapper.set(Type.INT, 0, -1); + wrapper.set(Types.INT, 0, -1); wrapper.cancel(); } else if (id == particleMappings.id("vibration")) { // Can't do without the position - wrapper.set(Type.INT, 0, -1); + wrapper.set(Types.INT, 0, -1); wrapper.cancel(); } }); - handler(getSpawnParticleHandler()); + handler(levelParticlesHandler()); } }); - protocol.registerClientbound(ClientboundPackets1_19.CHUNK_DATA, wrapper -> { + protocol.registerClientbound(ClientboundPackets1_19.LEVEL_CHUNK_WITH_LIGHT, wrapper -> { final EntityTracker tracker = protocol.getEntityRewriter().tracker(wrapper.user()); final ChunkType1_18 chunkType = new ChunkType1_18(tracker.currentWorldSectionHeight(), MathUtil.ceilLog2(protocol.getMappingData().getBlockStateMappings().mappedSize()), @@ -155,51 +156,51 @@ public final class BlockItemPackets1_19 extends BackwardsItemRewriter { - final int primaryEffect = wrapper.read(Type.VAR_INT); + protocol.registerServerbound(ServerboundPackets1_17.SET_BEACON, wrapper -> { + final int primaryEffect = wrapper.read(Types.VAR_INT); if (primaryEffect != -1) { - wrapper.write(Type.BOOLEAN, true); - wrapper.write(Type.VAR_INT, primaryEffect); + wrapper.write(Types.BOOLEAN, true); + wrapper.write(Types.VAR_INT, primaryEffect); } else { - wrapper.write(Type.BOOLEAN, false); + wrapper.write(Types.BOOLEAN, false); } - final int secondaryEffect = wrapper.read(Type.VAR_INT); + final int secondaryEffect = wrapper.read(Types.VAR_INT); if (secondaryEffect != -1) { - wrapper.write(Type.BOOLEAN, true); - wrapper.write(Type.VAR_INT, secondaryEffect); + wrapper.write(Types.BOOLEAN, true); + wrapper.write(Types.VAR_INT, secondaryEffect); } else { - wrapper.write(Type.BOOLEAN, false); + wrapper.write(Types.BOOLEAN, false); } }); } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_18_2to1_19/packets/EntityPackets1_19.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19to1_18_2/rewriter/EntityPacketRewriter1_19.java similarity index 60% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_18_2to1_19/packets/EntityPackets1_19.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_19to1_18_2/rewriter/EntityPacketRewriter1_19.java index e0e87e77..2fb078e2 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_18_2to1_19/packets/EntityPackets1_19.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19to1_18_2/rewriter/EntityPacketRewriter1_19.java @@ -15,121 +15,122 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_18_2to1_19.packets; +package com.viaversion.viabackwards.protocol.v1_19to1_18_2.rewriter; import com.viaversion.viabackwards.api.rewriters.EntityRewriter; -import com.viaversion.viabackwards.protocol.protocol1_18_2to1_19.Protocol1_18_2To1_19; -import com.viaversion.viabackwards.protocol.protocol1_18_2to1_19.storage.DimensionRegistryStorage; -import com.viaversion.viabackwards.protocol.protocol1_18_2to1_19.storage.StoredPainting; +import com.viaversion.viabackwards.protocol.v1_19to1_18_2.Protocol1_19To1_18_2; +import com.viaversion.viabackwards.protocol.v1_19to1_18_2.storage.DimensionRegistryStorage; +import com.viaversion.viabackwards.protocol.v1_19to1_18_2.storage.StoredPainting; import com.viaversion.viaversion.api.data.ParticleMappings; import com.viaversion.viaversion.api.data.entity.StoredEntityData; import com.viaversion.viaversion.api.minecraft.Particle; import com.viaversion.viaversion.api.minecraft.Position; import com.viaversion.viaversion.api.minecraft.entities.EntityType; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_19; -import com.viaversion.viaversion.api.minecraft.metadata.MetaType; +import com.viaversion.viaversion.api.minecraft.entitydata.EntityDataType; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.version.Types1_18; import com.viaversion.viaversion.api.type.types.version.Types1_19; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.ListTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.NumberTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag; -import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.ClientboundPackets1_18; -import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.ClientboundPackets1_19; +import com.viaversion.viaversion.protocols.v1_17_1to1_18.packet.ClientboundPackets1_18; +import com.viaversion.viaversion.protocols.v1_18_2to1_19.packet.ClientboundPackets1_19; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.ListTag; +import com.viaversion.nbt.tag.NumberTag; +import com.viaversion.nbt.tag.StringTag; import com.viaversion.viaversion.util.Key; import com.viaversion.viaversion.util.TagUtil; -public final class EntityPackets1_19 extends EntityRewriter { +public final class EntityPacketRewriter1_19 extends EntityRewriter { - public EntityPackets1_19(final Protocol1_18_2To1_19 protocol) { + public EntityPacketRewriter1_19(final Protocol1_19To1_18_2 protocol) { super(protocol); } @Override protected void registerPackets() { - registerTracker(ClientboundPackets1_19.SPAWN_EXPERIENCE_ORB, EntityTypes1_19.EXPERIENCE_ORB); - registerTracker(ClientboundPackets1_19.SPAWN_PLAYER, EntityTypes1_19.PLAYER); - registerMetadataRewriter(ClientboundPackets1_19.ENTITY_METADATA, Types1_19.METADATA_LIST, Types1_18.METADATA_LIST); + registerTracker(ClientboundPackets1_19.ADD_EXPERIENCE_ORB, EntityTypes1_19.EXPERIENCE_ORB); + registerTracker(ClientboundPackets1_19.ADD_PLAYER, EntityTypes1_19.PLAYER); + registerSetEntityData(ClientboundPackets1_19.SET_ENTITY_DATA, Types1_19.ENTITY_DATA_LIST, Types1_18.ENTITY_DATA_LIST); registerRemoveEntities(ClientboundPackets1_19.REMOVE_ENTITIES); - protocol.registerClientbound(ClientboundPackets1_19.SPAWN_ENTITY, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_19.ADD_ENTITY, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); // Entity id - map(Type.UUID); // Entity UUID - map(Type.VAR_INT); // Entity Type - map(Type.DOUBLE); // X - map(Type.DOUBLE); // Y - map(Type.DOUBLE); // Z - map(Type.BYTE); // Pitch - map(Type.BYTE); // Yaw + map(Types.VAR_INT); // Entity id + map(Types.UUID); // Entity UUID + map(Types.VAR_INT); // Entity Type + map(Types.DOUBLE); // X + map(Types.DOUBLE); // Y + map(Types.DOUBLE); // Z + map(Types.BYTE); // Pitch + map(Types.BYTE); // Yaw handler(wrapper -> { - final byte headYaw = wrapper.read(Type.BYTE); - int data = wrapper.read(Type.VAR_INT); + final byte headYaw = wrapper.read(Types.BYTE); + int data = wrapper.read(Types.VAR_INT); final EntityType entityType = trackAndMapEntity(wrapper); - if (entityType.isOrHasParent(EntityTypes1_19.LIVINGENTITY)) { - wrapper.write(Type.BYTE, headYaw); + if (entityType.isOrHasParent(EntityTypes1_19.LIVING_ENTITY)) { + wrapper.write(Types.BYTE, headYaw); // Switch pitch and yaw position - final byte pitch = wrapper.get(Type.BYTE, 0); - final byte yaw = wrapper.get(Type.BYTE, 1); - wrapper.set(Type.BYTE, 0, yaw); - wrapper.set(Type.BYTE, 1, pitch); + final byte pitch = wrapper.get(Types.BYTE, 0); + final byte yaw = wrapper.get(Types.BYTE, 1); + wrapper.set(Types.BYTE, 0, yaw); + wrapper.set(Types.BYTE, 1, pitch); - wrapper.setPacketType(ClientboundPackets1_18.SPAWN_MOB); + wrapper.setPacketType(ClientboundPackets1_18.ADD_MOB); return; } else if (entityType == EntityTypes1_19.PAINTING) { wrapper.cancel(); // The entity has been tracked, now we wait for the metadata packet - final int entityId = wrapper.get(Type.VAR_INT, 0); + final int entityId = wrapper.get(Types.VAR_INT, 0); final StoredEntityData entityData = tracker(wrapper.user()).entityData(entityId); - final Position position = new Position(wrapper.get(Type.DOUBLE, 0).intValue(), wrapper.get(Type.DOUBLE, 1).intValue(), wrapper.get(Type.DOUBLE, 2).intValue()); - entityData.put(new StoredPainting(entityId, wrapper.get(Type.UUID, 0), position, data)); + final Position position = new Position(wrapper.get(Types.DOUBLE, 0).intValue(), wrapper.get(Types.DOUBLE, 1).intValue(), wrapper.get(Types.DOUBLE, 2).intValue()); + entityData.put(new StoredPainting(entityId, wrapper.get(Types.UUID, 0), position, data)); return; } if (entityType == EntityTypes1_19.FALLING_BLOCK) { data = protocol.getMappingData().getNewBlockStateId(data); } - wrapper.write(Type.INT, data); + wrapper.write(Types.INT, data); }); } }); - protocol.registerClientbound(ClientboundPackets1_19.ENTITY_EFFECT, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_19.UPDATE_MOB_EFFECT, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); // Entity id - map(Type.VAR_INT); // Effect id - map(Type.BYTE); // Amplifier - map(Type.VAR_INT); // Duration - map(Type.BYTE); // Flags + map(Types.VAR_INT); // Entity id + map(Types.VAR_INT); // Effect id + map(Types.BYTE); // Amplifier + map(Types.VAR_INT); // Duration + map(Types.BYTE); // Flags handler(wrapper -> { // Remove factor data - wrapper.read(Type.OPTIONAL_NAMED_COMPOUND_TAG); + wrapper.read(Types.OPTIONAL_NAMED_COMPOUND_TAG); }); } }); - protocol.registerClientbound(ClientboundPackets1_19.JOIN_GAME, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_19.LOGIN, new PacketHandlers() { @Override public void register() { - map(Type.INT); // Entity ID - map(Type.BOOLEAN); // Hardcore - map(Type.BYTE); // Gamemode - map(Type.BYTE); // Previous Gamemode - map(Type.STRING_ARRAY); // Worlds - map(Type.NAMED_COMPOUND_TAG); // Dimension registry + map(Types.INT); // Entity ID + map(Types.BOOLEAN); // Hardcore + map(Types.BYTE); // Gamemode + map(Types.BYTE); // Previous Gamemode + map(Types.STRING_ARRAY); // Worlds + map(Types.NAMED_COMPOUND_TAG); // Dimension registry handler(wrapper -> { final DimensionRegistryStorage dimensionRegistryStorage = wrapper.user().get(DimensionRegistryStorage.class); dimensionRegistryStorage.clear(); // Cache dimensions and find current dimension - final String dimensionKey = Key.stripMinecraftNamespace(wrapper.read(Type.STRING)); - final CompoundTag registry = wrapper.get(Type.NAMED_COMPOUND_TAG, 0); + final String dimensionKey = Key.stripMinecraftNamespace(wrapper.read(Types.STRING)); + final CompoundTag registry = wrapper.get(Types.NAMED_COMPOUND_TAG, 0); final ListTag dimensions = TagUtil.getRegistryEntries(registry, "dimension_type"); boolean found = false; for (final CompoundTag dimension : dimensions) { @@ -138,7 +139,7 @@ public final class EntityPackets1_19 extends EntityRewriter { - final String dimensionKey = wrapper.read(Type.STRING); + final String dimensionKey = wrapper.read(Types.STRING); final CompoundTag dimension = wrapper.user().get(DimensionRegistryStorage.class).dimension(dimensionKey); if (dimension == null) { throw new IllegalArgumentException("Could not find dimension " + dimensionKey + " in dimension registry"); } - wrapper.write(Type.NAMED_COMPOUND_TAG, dimension); + wrapper.write(Types.NAMED_COMPOUND_TAG, dimension); }); - map(Type.STRING); // World - map(Type.LONG); // Seed - map(Type.UNSIGNED_BYTE); // Gamemode - map(Type.BYTE); // Previous gamemode - map(Type.BOOLEAN); // Debug - map(Type.BOOLEAN); // Flat - map(Type.BOOLEAN); // Keep player data - read(Type.OPTIONAL_GLOBAL_POSITION); // Read last death location + map(Types.STRING); // World + map(Types.LONG); // Seed + map(Types.UNSIGNED_BYTE); // Gamemode + map(Types.BYTE); // Previous gamemode + map(Types.BOOLEAN); // Debug + map(Types.BOOLEAN); // Flat + map(Types.BOOLEAN); // Keep player data + read(Types.OPTIONAL_GLOBAL_POSITION); // Read last death location handler(worldDataTrackerHandler(0)); } }); protocol.registerClientbound(ClientboundPackets1_19.PLAYER_INFO, wrapper -> { - final int action = wrapper.passthrough(Type.VAR_INT); - final int entries = wrapper.passthrough(Type.VAR_INT); + final int action = wrapper.passthrough(Types.VAR_INT); + final int entries = wrapper.passthrough(Types.VAR_INT); for (int i = 0; i < entries; i++) { - wrapper.passthrough(Type.UUID); // UUID + wrapper.passthrough(Types.UUID); // UUID if (action == 0) { // Add player - wrapper.passthrough(Type.STRING); // Player Name + wrapper.passthrough(Types.STRING); // Player Name - final int properties = wrapper.passthrough(Type.VAR_INT); + final int properties = wrapper.passthrough(Types.VAR_INT); for (int j = 0; j < properties; j++) { - wrapper.passthrough(Type.STRING); // Name - wrapper.passthrough(Type.STRING); // Value - wrapper.passthrough(Type.OPTIONAL_STRING); // Signature + wrapper.passthrough(Types.STRING); // Name + wrapper.passthrough(Types.STRING); // Value + wrapper.passthrough(Types.OPTIONAL_STRING); // Signature } - wrapper.passthrough(Type.VAR_INT); // Gamemode - wrapper.passthrough(Type.VAR_INT); // Ping - wrapper.passthrough(Type.OPTIONAL_COMPONENT); // Display name + wrapper.passthrough(Types.VAR_INT); // Gamemode + wrapper.passthrough(Types.VAR_INT); // Ping + wrapper.passthrough(Types.OPTIONAL_COMPONENT); // Display name // Remove public profile signature - wrapper.read(Type.OPTIONAL_PROFILE_KEY); + wrapper.read(Types.OPTIONAL_PROFILE_KEY); } else if (action == 1 || action == 2) { // Update gamemode/update latency - wrapper.passthrough(Type.VAR_INT); + wrapper.passthrough(Types.VAR_INT); } else if (action == 3) { // Update display name - wrapper.passthrough(Type.OPTIONAL_COMPONENT); + wrapper.passthrough(Types.OPTIONAL_COMPONENT); } } }); @@ -233,12 +234,12 @@ public final class EntityPackets1_19 extends EntityRewriter { - if (meta.metaType().typeId() <= Types1_18.META_TYPES.poseType.typeId()) { - meta.setMetaType(Types1_18.META_TYPES.byId(meta.metaType().typeId())); + if (meta.dataType().typeId() <= Types1_18.ENTITY_DATA_TYPES.poseType.typeId()) { + meta.setDataType(Types1_18.ENTITY_DATA_TYPES.byId(meta.dataType().typeId())); } - final MetaType type = meta.metaType(); - if (type == Types1_18.META_TYPES.particleType) { + final EntityDataType type = meta.dataType(); + if (type == Types1_18.ENTITY_DATA_TYPES.particleType) { final Particle particle = (Particle) meta.getValue(); final ParticleMappings particleMappings = protocol.getMappingData().getParticleMappings(); if (particle.id() == particleMappings.id("sculk_charge")) { @@ -256,7 +257,7 @@ public final class EntityPackets1_19 extends EntityRewriter= 8) { // Croaking, using_tongue, roaring, sniffing, emerging, digging -> standing -> standing @@ -265,10 +266,10 @@ public final class EntityPackets1_19 extends EntityRewriter { + filter().type(EntityTypes1_19.ABSTRACT_MINECART).index(11).handler((event, meta) -> { final int data = (int) meta.getValue(); meta.setValue(protocol.getMappingData().getNewBlockStateId(data)); }); @@ -279,22 +280,22 @@ public final class EntityPackets1_19 extends EntityRewriter meta.setMetaType(Types1_18.META_TYPES.varIntType)); + filter().type(EntityTypes1_19.CAT).index(19).handler((event, meta) -> meta.setDataType(Types1_18.ENTITY_DATA_TYPES.varIntType)); filter().type(EntityTypes1_19.FROG).cancel(16); // Age filter().type(EntityTypes1_19.FROG).cancel(17); // Variant diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_18_2to1_19/storage/DimensionRegistryStorage.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19to1_18_2/storage/DimensionRegistryStorage.java similarity index 87% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_18_2to1_19/storage/DimensionRegistryStorage.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_19to1_18_2/storage/DimensionRegistryStorage.java index 3887f653..3692b24d 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_18_2to1_19/storage/DimensionRegistryStorage.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19to1_18_2/storage/DimensionRegistryStorage.java @@ -15,13 +15,12 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_18_2to1_19.storage; - -import com.viaversion.viabackwards.protocol.protocol1_18_2to1_19.Protocol1_18_2To1_19; +package com.viaversion.viabackwards.protocol.v1_19to1_18_2.storage; +import com.viaversion.viabackwards.protocol.v1_19to1_18_2.Protocol1_19To1_18_2; import com.viaversion.viaversion.api.connection.StorableObject; import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectMap; import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectOpenHashMap; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; +import com.viaversion.nbt.tag.CompoundTag; import java.util.HashMap; import java.util.Map; import com.viaversion.viaversion.util.Key; @@ -42,7 +41,7 @@ public final class DimensionRegistryStorage implements StorableObject { } public @Nullable CompoundTag chatType(final int id) { - return chatTypes.isEmpty() ? Protocol1_18_2To1_19.MAPPINGS.chatType(id) : chatTypes.get(id); + return chatTypes.isEmpty() ? Protocol1_19To1_18_2.MAPPINGS.chatType(id) : chatTypes.get(id); } public void addChatType(final int id, final CompoundTag chatType) { diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_18_2to1_19/storage/NonceStorage.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19to1_18_2/storage/NonceStorage.java similarity index 93% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_18_2to1_19/storage/NonceStorage.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_19to1_18_2/storage/NonceStorage.java index 3907af41..8d9a4e37 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_18_2to1_19/storage/NonceStorage.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19to1_18_2/storage/NonceStorage.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_18_2to1_19.storage; +package com.viaversion.viabackwards.protocol.v1_19to1_18_2.storage; import com.viaversion.viaversion.api.connection.StorableObject; import org.checkerframework.checker.nullness.qual.Nullable; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_18_2to1_19/storage/StoredPainting.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19to1_18_2/storage/StoredPainting.java similarity index 96% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_18_2to1_19/storage/StoredPainting.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_19to1_18_2/storage/StoredPainting.java index 31c277a0..88bbbd8c 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_18_2to1_19/storage/StoredPainting.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_19to1_18_2/storage/StoredPainting.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_18_2to1_19.storage; +package com.viaversion.viabackwards.protocol.v1_19to1_18_2.storage; import com.viaversion.viaversion.api.connection.StorableObject; import com.viaversion.viaversion.api.minecraft.Position; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20to1_20_2/Protocol1_20To1_20_2.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_2to1_20/Protocol1_20_2To1_20.java similarity index 74% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20to1_20_2/Protocol1_20To1_20_2.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_2to1_20/Protocol1_20_2To1_20.java index 144aaeab..2e4dadf5 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20to1_20_2/Protocol1_20To1_20_2.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_2to1_20/Protocol1_20_2To1_20.java @@ -15,15 +15,15 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_20to1_20_2; +package com.viaversion.viabackwards.protocol.v1_20_2to1_20; import com.viaversion.viabackwards.api.BackwardsProtocol; -import com.viaversion.viabackwards.api.data.BackwardsMappings; +import com.viaversion.viabackwards.api.data.BackwardsMappingData; import com.viaversion.viabackwards.api.rewriters.SoundRewriter; -import com.viaversion.viabackwards.protocol.protocol1_20to1_20_2.provider.AdvancementCriteriaProvider; -import com.viaversion.viabackwards.protocol.protocol1_20to1_20_2.rewriter.BlockItemPacketRewriter1_20_2; -import com.viaversion.viabackwards.protocol.protocol1_20to1_20_2.rewriter.EntityPacketRewriter1_20_2; -import com.viaversion.viabackwards.protocol.protocol1_20to1_20_2.storage.ConfigurationPacketStorage; +import com.viaversion.viabackwards.protocol.v1_20_2to1_20.provider.AdvancementCriteriaProvider; +import com.viaversion.viabackwards.protocol.v1_20_2to1_20.rewriter.BlockItemPacketRewriter1_20_2; +import com.viaversion.viabackwards.protocol.v1_20_2to1_20.rewriter.EntityPacketRewriter1_20_2; +import com.viaversion.viabackwards.protocol.v1_20_2to1_20.storage.ConfigurationPacketStorage; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_19_4; import com.viaversion.viaversion.api.platform.providers.ViaProviders; @@ -32,31 +32,31 @@ import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.protocol.packet.State; import com.viaversion.viaversion.api.rewriter.EntityRewriter; import com.viaversion.viaversion.api.rewriter.ItemRewriter; -import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.data.entity.EntityTrackerBase; import com.viaversion.viaversion.exception.CancelException; import com.viaversion.viaversion.exception.InformativeException; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; +import com.viaversion.nbt.tag.CompoundTag; import com.viaversion.viaversion.protocols.base.ClientboundLoginPackets; import com.viaversion.viaversion.protocols.base.ServerboundLoginPackets; -import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.ClientboundPackets1_19_4; -import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.ServerboundPackets1_19_4; -import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.Protocol1_20_2To1_20; -import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ClientboundConfigurationPackets1_20_2; -import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ClientboundPackets1_20_2; -import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ServerboundConfigurationPackets1_20_2; -import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ServerboundPackets1_20_2; +import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.packet.ClientboundPackets1_19_4; +import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.packet.ServerboundPackets1_19_4; +import com.viaversion.viaversion.protocols.v1_20to1_20_2.Protocol1_20To1_20_2; +import com.viaversion.viaversion.protocols.v1_20to1_20_2.packet.ClientboundConfigurationPackets1_20_2; +import com.viaversion.viaversion.protocols.v1_20to1_20_2.packet.ClientboundPackets1_20_2; +import com.viaversion.viaversion.protocols.v1_20to1_20_2.packet.ServerboundConfigurationPackets1_20_2; +import com.viaversion.viaversion.protocols.v1_20to1_20_2.packet.ServerboundPackets1_20_2; import com.viaversion.viaversion.rewriter.TagRewriter; import java.util.UUID; -public final class Protocol1_20To1_20_2 extends BackwardsProtocol { +public final class Protocol1_20_2To1_20 extends BackwardsProtocol { - public static final BackwardsMappings MAPPINGS = new BackwardsMappings("1.20.2", "1.20", Protocol1_20_2To1_20.class); + public static final BackwardsMappingData MAPPINGS = new BackwardsMappingData("1.20.2", "1.20", Protocol1_20To1_20_2.class); private final EntityPacketRewriter1_20_2 entityPacketRewriter = new EntityPacketRewriter1_20_2(this); private final BlockItemPacketRewriter1_20_2 itemPacketRewriter = new BlockItemPacketRewriter1_20_2(this); private final TagRewriter tagRewriter = new TagRewriter<>(this); - public Protocol1_20To1_20_2() { + public Protocol1_20_2To1_20() { super(ClientboundPackets1_20_2.class, ClientboundPackets1_19_4.class, ServerboundPackets1_20_2.class, ServerboundPackets1_19_4.class); } @@ -64,16 +64,16 @@ public final class Protocol1_20To1_20_2 extends BackwardsProtocol soundRewriter = new SoundRewriter<>(this); - soundRewriter.register1_19_3Sound(ClientboundPackets1_20_2.SOUND); - soundRewriter.register1_19_3Sound(ClientboundPackets1_20_2.ENTITY_SOUND); + soundRewriter.registerSound1_19_3(ClientboundPackets1_20_2.SOUND); + soundRewriter.registerSound1_19_3(ClientboundPackets1_20_2.SOUND_ENTITY); soundRewriter.registerStopSound(ClientboundPackets1_20_2.STOP_SOUND); - registerClientbound(ClientboundPackets1_20_2.DISPLAY_SCOREBOARD, wrapper -> { - final int slot = wrapper.read(Type.VAR_INT); - wrapper.write(Type.BYTE, (byte) slot); + registerClientbound(ClientboundPackets1_20_2.SET_DISPLAY_OBJECTIVE, wrapper -> { + final int slot = wrapper.read(Types.VAR_INT); + wrapper.write(Types.BYTE, (byte) slot); }); registerClientbound(State.LOGIN, ClientboundLoginPackets.GAME_PROFILE.getId(), ClientboundLoginPackets.GAME_PROFILE.getId(), wrapper -> { @@ -85,7 +85,7 @@ public final class Protocol1_20To1_20_2 extends BackwardsProtocol { @@ -93,16 +93,16 @@ public final class Protocol1_20To1_20_2 extends BackwardsProtocol { - wrapper.passthrough(Type.STRING); // Name + wrapper.passthrough(Types.STRING); // Name // TODO Bad - final UUID uuid = wrapper.read(Type.OPTIONAL_UUID); - wrapper.write(Type.UUID, uuid != null ? uuid : new UUID(0, 0)); + final UUID uuid = wrapper.read(Types.OPTIONAL_UUID); + wrapper.write(Types.UUID, uuid != null ? uuid : new UUID(0, 0)); }); registerClientbound(ClientboundPackets1_20_2.START_CONFIGURATION, null, wrapper -> { @@ -111,7 +111,7 @@ public final class Protocol1_20To1_20_2 extends BackwardsProtocol { wrapper.cancel(); - final CompoundTag registry = wrapper.read(Type.COMPOUND_TAG); + final CompoundTag registry = wrapper.read(Types.COMPOUND_TAG); entityPacketRewriter.trackBiomeSize(wrapper.user(), registry); entityPacketRewriter.cacheDimensionData(wrapper.user(), registry); wrapper.user().get(ConfigurationPacketStorage.class).setRegistry(registry); }); registerClientbound(State.CONFIGURATION, ClientboundConfigurationPackets1_20_2.UPDATE_ENABLED_FEATURES.getId(), -1, wrapper -> { - final String[] enabledFeatures = wrapper.read(Type.STRING_ARRAY); + final String[] enabledFeatures = wrapper.read(Types.STRING_ARRAY); wrapper.user().get(ConfigurationPacketStorage.class).setEnabledFeatures(enabledFeatures); wrapper.cancel(); }); registerClientbound(State.CONFIGURATION, ClientboundConfigurationPackets1_20_2.UPDATE_TAGS.getId(), -1, wrapper -> { tagRewriter.getGenericHandler().handle(wrapper); - wrapper.user().get(ConfigurationPacketStorage.class).addRawPacket(wrapper, ClientboundPackets1_19_4.TAGS); + wrapper.user().get(ConfigurationPacketStorage.class).addRawPacket(wrapper, ClientboundPackets1_19_4.UPDATE_TAGS); wrapper.cancel(); }); registerClientbound(State.CONFIGURATION, ClientboundConfigurationPackets1_20_2.CUSTOM_PAYLOAD.getId(), -1, wrapper -> { - wrapper.user().get(ConfigurationPacketStorage.class).addRawPacket(wrapper, ClientboundPackets1_19_4.PLUGIN_MESSAGE); + wrapper.user().get(ConfigurationPacketStorage.class).addRawPacket(wrapper, ClientboundPackets1_19_4.CUSTOM_PAYLOAD); wrapper.cancel(); }); } @@ -184,15 +184,15 @@ public final class Protocol1_20To1_20_2 extends BackwardsProtocol getEntityRewriter() { + public EntityRewriter getEntityRewriter() { return entityPacketRewriter; } @Override - public ItemRewriter getItemRewriter() { + public ItemRewriter getItemRewriter() { return itemPacketRewriter; } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20to1_20_2/provider/AdvancementCriteriaProvider.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_2to1_20/provider/AdvancementCriteriaProvider.java similarity index 93% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20to1_20_2/provider/AdvancementCriteriaProvider.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_2to1_20/provider/AdvancementCriteriaProvider.java index 31d5d82e..4a5274e3 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20to1_20_2/provider/AdvancementCriteriaProvider.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_2to1_20/provider/AdvancementCriteriaProvider.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_20to1_20_2.provider; +package com.viaversion.viabackwards.protocol.v1_20_2to1_20.provider; import com.viaversion.viaversion.api.platform.providers.Provider; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_2to1_20/rewriter/BlockItemPacketRewriter1_20_2.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_2to1_20/rewriter/BlockItemPacketRewriter1_20_2.java new file mode 100644 index 00000000..a1f6c573 --- /dev/null +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_2to1_20/rewriter/BlockItemPacketRewriter1_20_2.java @@ -0,0 +1,416 @@ +/* + * This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards + * Copyright (C) 2016-2024 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.viabackwards.protocol.v1_20_2to1_20.rewriter; + +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.StringTag; +import com.viaversion.nbt.tag.Tag; +import com.viaversion.viabackwards.api.rewriters.BackwardsItemRewriter; +import com.viaversion.viabackwards.protocol.v1_20_2to1_20.Protocol1_20_2To1_20; +import com.viaversion.viabackwards.protocol.v1_20_2to1_20.provider.AdvancementCriteriaProvider; +import com.viaversion.viaversion.api.Via; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.data.ParticleMappings; +import com.viaversion.viaversion.api.data.entity.EntityTracker; +import com.viaversion.viaversion.api.minecraft.ChunkPosition; +import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntity; +import com.viaversion.viaversion.api.minecraft.chunks.Chunk; +import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection; +import com.viaversion.viaversion.api.minecraft.chunks.DataPalette; +import com.viaversion.viaversion.api.minecraft.chunks.PaletteType; +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_18; +import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_20_2; +import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.packet.ServerboundPackets1_19_4; +import com.viaversion.viaversion.protocols.v1_20to1_20_2.packet.ClientboundPackets1_20_2; +import com.viaversion.viaversion.protocols.v1_20to1_20_2.packet.ServerboundPackets1_20_2; +import com.viaversion.viaversion.protocols.v1_20to1_20_2.rewriter.RecipeRewriter1_20_2; +import com.viaversion.viaversion.protocols.v1_20to1_20_2.util.PotionEffects1_20_2; +import com.viaversion.viaversion.rewriter.BlockRewriter; +import com.viaversion.viaversion.util.Key; +import com.viaversion.viaversion.util.MathUtil; +import org.checkerframework.checker.nullness.qual.Nullable; + +public final class BlockItemPacketRewriter1_20_2 extends BackwardsItemRewriter { + + public BlockItemPacketRewriter1_20_2(final Protocol1_20_2To1_20 protocol) { + super(protocol, Types.ITEM1_20_2, Types.ITEM1_20_2_ARRAY); + } + + @Override + public void registerPackets() { + final BlockRewriter blockRewriter = BlockRewriter.for1_14(protocol); + blockRewriter.registerBlockEvent(ClientboundPackets1_20_2.BLOCK_EVENT); + blockRewriter.registerBlockUpdate(ClientboundPackets1_20_2.BLOCK_UPDATE); + blockRewriter.registerSectionBlocksUpdate1_20(ClientboundPackets1_20_2.SECTION_BLOCKS_UPDATE); + blockRewriter.registerLevelEvent(ClientboundPackets1_20_2.LEVEL_EVENT, 1010, 2001); + + protocol.cancelClientbound(ClientboundPackets1_20_2.CHUNK_BATCH_START); + protocol.registerClientbound(ClientboundPackets1_20_2.CHUNK_BATCH_FINISHED, null, wrapper -> { + wrapper.cancel(); + + final PacketWrapper receivedPacket = wrapper.create(ServerboundPackets1_20_2.CHUNK_BATCH_RECEIVED); + receivedPacket.write(Types.FLOAT, 500F); // Requested next batch size... arbitrary value here + receivedPacket.sendToServer(Protocol1_20_2To1_20.class); + }); + + protocol.registerClientbound(ClientboundPackets1_20_2.FORGET_LEVEL_CHUNK, wrapper -> { + final ChunkPosition chunkPosition = wrapper.read(Types.CHUNK_POSITION); + wrapper.write(Types.INT, chunkPosition.chunkX()); + wrapper.write(Types.INT, chunkPosition.chunkZ()); + }); + + protocol.registerClientbound(ClientboundPackets1_20_2.MAP_ITEM_DATA, wrapper -> { + wrapper.passthrough(Types.VAR_INT); // Map id + wrapper.passthrough(Types.BYTE); // Scale + wrapper.passthrough(Types.BOOLEAN); // Locked + if (wrapper.passthrough(Types.BOOLEAN)) { + final int icons = wrapper.passthrough(Types.VAR_INT); + for (int i = 0; i < icons; i++) { + // Map new marker types to red marker + final int markerType = wrapper.read(Types.VAR_INT); + wrapper.write(Types.VAR_INT, markerType < 27 ? markerType : 2); + + wrapper.passthrough(Types.BYTE); // X + wrapper.passthrough(Types.BYTE); // Y + wrapper.passthrough(Types.BYTE); // Rotation + wrapper.passthrough(Types.OPTIONAL_COMPONENT); // Display name + } + } + }); + + protocol.registerClientbound(ClientboundPackets1_20_2.TAG_QUERY, wrapper -> { + wrapper.passthrough(Types.VAR_INT); // Transaction id + wrapper.write(Types.NAMED_COMPOUND_TAG, wrapper.read(Types.COMPOUND_TAG)); + }); + + protocol.registerClientbound(ClientboundPackets1_20_2.BLOCK_ENTITY_DATA, wrapper -> { + wrapper.passthrough(Types.BLOCK_POSITION1_14); // Position + wrapper.passthrough(Types.VAR_INT); // Type + wrapper.write(Types.NAMED_COMPOUND_TAG, handleBlockEntity(wrapper.read(Types.COMPOUND_TAG))); + }); + + protocol.registerClientbound(ClientboundPackets1_20_2.LEVEL_CHUNK_WITH_LIGHT, wrapper -> { + final EntityTracker tracker = protocol.getEntityRewriter().tracker(wrapper.user()); + final Type chunkType = new ChunkType1_20_2(tracker.currentWorldSectionHeight(), + MathUtil.ceilLog2(protocol.getMappingData().getBlockStateMappings().size()), + MathUtil.ceilLog2(tracker.biomesSent())); + final Chunk chunk = wrapper.read(chunkType); + + final Type newChunkType = new ChunkType1_18(tracker.currentWorldSectionHeight(), + MathUtil.ceilLog2(protocol.getMappingData().getBlockStateMappings().mappedSize()), + MathUtil.ceilLog2(tracker.biomesSent())); + wrapper.write(newChunkType, chunk); + + for (final ChunkSection section : chunk.getSections()) { + final DataPalette blockPalette = section.palette(PaletteType.BLOCKS); + for (int i = 0; i < blockPalette.size(); i++) { + final int id = blockPalette.idByIndex(i); + blockPalette.setIdByIndex(i, protocol.getMappingData().getNewBlockStateId(id)); + } + } + + for (final BlockEntity blockEntity : chunk.blockEntities()) { + handleBlockEntity(blockEntity.tag()); + } + }); + + protocol.registerServerbound(ServerboundPackets1_19_4.SET_BEACON, wrapper -> { + // Effects start at 1 before 1.20.2 + if (wrapper.passthrough(Types.BOOLEAN)) { // Primary effect + wrapper.write(Types.VAR_INT, wrapper.read(Types.VAR_INT) - 1); + } + if (wrapper.passthrough(Types.BOOLEAN)) { // Secondary effect + wrapper.write(Types.VAR_INT, wrapper.read(Types.VAR_INT) - 1); + } + }); + + // Replace the NBT type everywhere + protocol.registerClientbound(ClientboundPackets1_20_2.CONTAINER_SET_CONTENT, new PacketHandlers() { + @Override + public void register() { + map(Types.UNSIGNED_BYTE); // Window id + map(Types.VAR_INT); // State id + handler(wrapper -> { + final Item[] items = wrapper.read(Types.ITEM1_20_2_ARRAY); + for (final Item item : items) { + handleItemToClient(wrapper.user(), item); + } + + wrapper.write(Types.ITEM1_13_2_ARRAY, items); + wrapper.write(Types.ITEM1_13_2, handleItemToClient(wrapper.user(), wrapper.read(Types.ITEM1_20_2))); // Carried item + }); + } + }); + protocol.registerClientbound(ClientboundPackets1_20_2.CONTAINER_SET_SLOT, new PacketHandlers() { + @Override + public void register() { + map(Types.UNSIGNED_BYTE); // Window id + map(Types.VAR_INT); // State id + map(Types.SHORT); // Slot id + handler(wrapper -> wrapper.write(Types.ITEM1_13_2, handleItemToClient(wrapper.user(), wrapper.read(Types.ITEM1_20_2)))); + } + }); + protocol.registerClientbound(ClientboundPackets1_20_2.UPDATE_ADVANCEMENTS, wrapper -> { + wrapper.passthrough(Types.BOOLEAN); // Reset/clear + final int size = wrapper.passthrough(Types.VAR_INT); + for (int i = 0; i < size; i++) { + final String advancement = wrapper.passthrough(Types.STRING); + wrapper.passthrough(Types.OPTIONAL_STRING); // Parent + + // Display data + if (wrapper.passthrough(Types.BOOLEAN)) { + wrapper.passthrough(Types.COMPONENT); // Title + wrapper.passthrough(Types.COMPONENT); // Description + wrapper.write(Types.ITEM1_13_2, handleItemToClient(wrapper.user(), wrapper.read(Types.ITEM1_20_2))); // Icon + wrapper.passthrough(Types.VAR_INT); // Frame type + final int flags = wrapper.passthrough(Types.INT); // Flags + if ((flags & 1) != 0) { + wrapper.passthrough(Types.STRING); // Background texture + } + wrapper.passthrough(Types.FLOAT); // X + wrapper.passthrough(Types.FLOAT); // Y + } + + final AdvancementCriteriaProvider criteriaProvider = Via.getManager().getProviders().get(AdvancementCriteriaProvider.class); + wrapper.write(Types.STRING_ARRAY, criteriaProvider.getCriteria(advancement)); + + final int requirements = wrapper.passthrough(Types.VAR_INT); + for (int array = 0; array < requirements; array++) { + wrapper.passthrough(Types.STRING_ARRAY); + } + + wrapper.passthrough(Types.BOOLEAN); // Send telemetry + } + }); + protocol.registerClientbound(ClientboundPackets1_20_2.SET_EQUIPMENT, new PacketHandlers() { + @Override + public void register() { + map(Types.VAR_INT); // 0 - Entity ID + handler(wrapper -> { + byte slot; + do { + slot = wrapper.passthrough(Types.BYTE); + wrapper.write(Types.ITEM1_13_2, handleItemToClient(wrapper.user(), wrapper.read(Types.ITEM1_20_2))); + } while ((slot & 0xFFFFFF80) != 0); + }); + } + }); + protocol.registerServerbound(ServerboundPackets1_19_4.CONTAINER_CLICK, new PacketHandlers() { + @Override + public void register() { + map(Types.UNSIGNED_BYTE); // Window Id + map(Types.VAR_INT); // State id + map(Types.SHORT); // Slot + map(Types.BYTE); // Button + map(Types.VAR_INT); // Mode + + handler(wrapper -> { + // Affected items + final int length = wrapper.passthrough(Types.VAR_INT); + for (int i = 0; i < length; i++) { + wrapper.passthrough(Types.SHORT); // Slot + wrapper.write(Types.ITEM1_20_2, handleItemToServer(wrapper.user(), wrapper.read(Types.ITEM1_13_2))); + } + + // Carried item + wrapper.write(Types.ITEM1_20_2, handleItemToServer(wrapper.user(), wrapper.read(Types.ITEM1_13_2))); + }); + } + }); + protocol.registerClientbound(ClientboundPackets1_20_2.MERCHANT_OFFERS, wrapper -> { + wrapper.passthrough(Types.VAR_INT); // Container id + final int size = wrapper.passthrough(Types.VAR_INT); + for (int i = 0; i < size; i++) { + wrapper.write(Types.ITEM1_13_2, handleItemToClient(wrapper.user(), wrapper.read(Types.ITEM1_20_2))); // Input + wrapper.write(Types.ITEM1_13_2, handleItemToClient(wrapper.user(), wrapper.read(Types.ITEM1_20_2))); // Output + wrapper.write(Types.ITEM1_13_2, handleItemToClient(wrapper.user(), wrapper.read(Types.ITEM1_20_2))); // Second Item + + wrapper.passthrough(Types.BOOLEAN); // Trade disabled + wrapper.passthrough(Types.INT); // Number of tools uses + wrapper.passthrough(Types.INT); // Maximum number of trade uses + wrapper.passthrough(Types.INT); // XP + wrapper.passthrough(Types.INT); // Special price + wrapper.passthrough(Types.FLOAT); // Price multiplier + wrapper.passthrough(Types.INT); // Demand + } + }); + protocol.registerServerbound(ServerboundPackets1_19_4.SET_CREATIVE_MODE_SLOT, new PacketHandlers() { + @Override + public void register() { + map(Types.SHORT); // 0 - Slot + handler(wrapper -> wrapper.write(Types.ITEM1_20_2, handleItemToServer(wrapper.user(), wrapper.read(Types.ITEM1_13_2)))); // 1 - Clicked Item + } + }); + protocol.registerClientbound(ClientboundPackets1_20_2.LEVEL_PARTICLES, new PacketHandlers() { + @Override + public void register() { + map(Types.VAR_INT); // 0 - Particle ID + map(Types.BOOLEAN); // 1 - Long Distance + map(Types.DOUBLE); // 2 - X + map(Types.DOUBLE); // 3 - Y + map(Types.DOUBLE); // 4 - Z + map(Types.FLOAT); // 5 - Offset X + map(Types.FLOAT); // 6 - Offset Y + map(Types.FLOAT); // 7 - Offset Z + map(Types.FLOAT); // 8 - Particle Data + map(Types.INT); // 9 - Particle Count + handler(wrapper -> { + final int id = wrapper.get(Types.VAR_INT, 0); + final ParticleMappings mappings = Protocol1_20_2To1_20.MAPPINGS.getParticleMappings(); + if (mappings.isBlockParticle(id)) { + final int data = wrapper.read(Types.VAR_INT); + wrapper.write(Types.VAR_INT, protocol.getMappingData().getNewBlockStateId(data)); + } else if (mappings.isItemParticle(id)) { + wrapper.write(Types.ITEM1_13_2, handleItemToClient(wrapper.user(), wrapper.read(Types.ITEM1_20_2))); + } + }); + } + }); + + new RecipeRewriter1_20_2<>(protocol) { + @Override + public void handleCraftingShapeless(final PacketWrapper wrapper) { + wrapper.passthrough(Types.STRING); // Group + wrapper.passthrough(Types.VAR_INT); // Crafting book category + handleIngredients(wrapper); + + final Item result = wrapper.read(itemType()); + rewrite(wrapper.user(), result); + wrapper.write(Types.ITEM1_13_2, result); + } + + @Override + public void handleSmelting(final PacketWrapper wrapper) { + wrapper.passthrough(Types.STRING); // Group + wrapper.passthrough(Types.VAR_INT); // Crafting book category + handleIngredient(wrapper); + + final Item result = wrapper.read(itemType()); + rewrite(wrapper.user(), result); + wrapper.write(Types.ITEM1_13_2, result); + + wrapper.passthrough(Types.FLOAT); // EXP + wrapper.passthrough(Types.VAR_INT); // Cooking time + } + + @Override + public void handleCraftingShaped(final PacketWrapper wrapper) { + final int ingredients = wrapper.passthrough(Types.VAR_INT) * wrapper.passthrough(Types.VAR_INT); + wrapper.passthrough(Types.STRING); // Group + wrapper.passthrough(Types.VAR_INT); // Crafting book category + for (int i = 0; i < ingredients; i++) { + handleIngredient(wrapper); + } + + final Item result = wrapper.read(itemType()); + rewrite(wrapper.user(), result); + wrapper.write(Types.ITEM1_13_2, result); + + wrapper.passthrough(Types.BOOLEAN); // Show notification + } + + @Override + public void handleStonecutting(final PacketWrapper wrapper) { + wrapper.passthrough(Types.STRING); // Group + handleIngredient(wrapper); + + final Item result = wrapper.read(itemType()); + rewrite(wrapper.user(), result); + wrapper.write(Types.ITEM1_13_2, result); + } + + @Override + public void handleSmithing(final PacketWrapper wrapper) { + handleIngredient(wrapper); // Base + handleIngredient(wrapper); // Addition + + final Item result = wrapper.read(itemType()); + rewrite(wrapper.user(), result); + wrapper.write(Types.ITEM1_13_2, result); + } + + @Override + public void handleSmithingTransform(final PacketWrapper wrapper) { + handleIngredient(wrapper); // Template + handleIngredient(wrapper); // Base + handleIngredient(wrapper); // Additions + + final Item result = wrapper.read(itemType()); + rewrite(wrapper.user(), result); + wrapper.write(Types.ITEM1_13_2, result); + } + + @Override + protected void handleIngredient(final PacketWrapper wrapper) { + final Item[] items = wrapper.read(itemArrayType()); + wrapper.write(Types.ITEM1_13_2_ARRAY, items); + for (final Item item : items) { + rewrite(wrapper.user(), item); + } + } + }.register(ClientboundPackets1_20_2.UPDATE_RECIPES); + } + + @Override + public @Nullable Item handleItemToClient(UserConnection connection, @Nullable final Item item) { + if (item == null) { + return null; + } + if (item.tag() != null) { + com.viaversion.viaversion.protocols.v1_20to1_20_2.rewriter.BlockItemPacketRewriter1_20_2.to1_20_1Effects(item); + } + + return super.handleItemToClient(connection, item); + } + + @Override + public @Nullable Item handleItemToServer(UserConnection connection, @Nullable final Item item) { + if (item == null) { + return null; + } + if (item.tag() != null) { + com.viaversion.viaversion.protocols.v1_20to1_20_2.rewriter.BlockItemPacketRewriter1_20_2.to1_20_2Effects(item); + } + + return super.handleItemToServer(connection, item); + } + + private @Nullable CompoundTag handleBlockEntity(@Nullable final CompoundTag tag) { + if (tag == null) { + return null; + } + + final Tag primaryEffect = tag.remove("primary_effect"); + if (primaryEffect instanceof StringTag) { + final String effectKey = Key.stripMinecraftNamespace(((StringTag) primaryEffect).getValue()); + tag.putInt("Primary", PotionEffects1_20_2.keyToId(effectKey) + 1); // Empty effect at 0 + } + + final Tag secondaryEffect = tag.remove("secondary_effect"); + if (secondaryEffect instanceof StringTag) { + final String effectKey = Key.stripMinecraftNamespace(((StringTag) secondaryEffect).getValue()); + tag.putInt("Secondary", PotionEffects1_20_2.keyToId(effectKey) + 1); // Empty effect at 0 + } + return tag; + } +} \ No newline at end of file diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_2to1_20/rewriter/EntityPacketRewriter1_20_2.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_2to1_20/rewriter/EntityPacketRewriter1_20_2.java new file mode 100644 index 00000000..26f0ffe6 --- /dev/null +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_2to1_20/rewriter/EntityPacketRewriter1_20_2.java @@ -0,0 +1,217 @@ +/* + * This file is part of ViaBackwards - https://github.com/ViaVersion/ViaBackwards + * Copyright (C) 2016-2024 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.viabackwards.protocol.v1_20_2to1_20.rewriter; + +import com.viaversion.viabackwards.api.rewriters.EntityRewriter; +import com.viaversion.viabackwards.protocol.v1_20_2to1_20.Protocol1_20_2To1_20; +import com.viaversion.viabackwards.protocol.v1_20_2to1_20.storage.ConfigurationPacketStorage; +import com.viaversion.viaversion.api.minecraft.GlobalPosition; +import com.viaversion.viaversion.api.minecraft.entities.EntityType; +import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_19_4; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.api.type.types.version.Types1_20; +import com.viaversion.viaversion.api.type.types.version.Types1_20_2; +import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.packet.ClientboundPackets1_19_4; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.viaversion.protocols.v1_20to1_20_2.packet.ClientboundPackets1_20_2; + +public final class EntityPacketRewriter1_20_2 extends EntityRewriter { + + public EntityPacketRewriter1_20_2(final Protocol1_20_2To1_20 protocol) { + super(protocol, Types1_20.ENTITY_DATA_TYPES.optionalComponentType, Types1_20.ENTITY_DATA_TYPES.booleanType); + } + + @Override + public void registerPackets() { + registerSetEntityData(ClientboundPackets1_20_2.SET_ENTITY_DATA, Types1_20_2.ENTITY_DATA_LIST, Types1_20.ENTITY_DATA_LIST); + registerRemoveEntities(ClientboundPackets1_20_2.REMOVE_ENTITIES); + + protocol.registerClientbound(ClientboundPackets1_20_2.ADD_ENTITY, new PacketHandlers() { + @Override + protected void register() { + handler(wrapper -> { + final int entityId = wrapper.passthrough(Types.VAR_INT); + + wrapper.passthrough(Types.UUID); // UUID + + final int entityType = wrapper.read(Types.VAR_INT); + tracker(wrapper.user()).addEntity(entityId, typeFromId(entityType)); + + if (entityType != EntityTypes1_19_4.PLAYER.getId()) { + wrapper.write(Types.VAR_INT, entityType); + + if (entityType == EntityTypes1_19_4.FALLING_BLOCK.getId()) { + wrapper.passthrough(Types.DOUBLE); // X + wrapper.passthrough(Types.DOUBLE); // Y + wrapper.passthrough(Types.DOUBLE); // Z + wrapper.passthrough(Types.BYTE); // Pitch + wrapper.passthrough(Types.BYTE); // Yaw + wrapper.passthrough(Types.BYTE); // Head yaw + final int blockState = wrapper.read(Types.VAR_INT); // Data + wrapper.write(Types.VAR_INT, protocol.getMappingData().getNewBlockStateId(blockState)); + } + return; + } + + // Map to spawn player packet + wrapper.setPacketType(ClientboundPackets1_19_4.ADD_PLAYER); + + wrapper.passthrough(Types.DOUBLE); // X + wrapper.passthrough(Types.DOUBLE); // Y + wrapper.passthrough(Types.DOUBLE); // Z + + final byte pitch = wrapper.read(Types.BYTE); + wrapper.passthrough(Types.BYTE); // Yaw + wrapper.write(Types.BYTE, pitch); + wrapper.read(Types.BYTE); // Head yaw + wrapper.read(Types.VAR_INT); // Data + + final short velocityX = wrapper.read(Types.SHORT); + final short velocityY = wrapper.read(Types.SHORT); + final short velocityZ = wrapper.read(Types.SHORT); + if (velocityX == 0 && velocityY == 0 && velocityZ == 0) { + return; + } + + // Follow up with velocity packet + wrapper.send(Protocol1_20_2To1_20.class); + wrapper.cancel(); + + final PacketWrapper velocityPacket = wrapper.create(ClientboundPackets1_19_4.SET_ENTITY_MOTION); + velocityPacket.write(Types.VAR_INT, entityId); + velocityPacket.write(Types.SHORT, velocityX); + velocityPacket.write(Types.SHORT, velocityY); + velocityPacket.write(Types.SHORT, velocityZ); + velocityPacket.send(Protocol1_20_2To1_20.class); + }); + } + }); + + protocol.registerClientbound(ClientboundPackets1_20_2.LOGIN, new PacketHandlers() { + @Override + public void register() { + handler(wrapper -> { + final ConfigurationPacketStorage configurationPacketStorage = wrapper.user().remove(ConfigurationPacketStorage.class); + wrapper.passthrough(Types.INT); // Entity id + wrapper.passthrough(Types.BOOLEAN); // Hardcore + + final String[] worlds = wrapper.read(Types.STRING_ARRAY); + final int maxPlayers = wrapper.read(Types.VAR_INT); + final int viewDistance = wrapper.read(Types.VAR_INT); + final int simulationDistance = wrapper.read(Types.VAR_INT); + final boolean reducedDebugInfo = wrapper.read(Types.BOOLEAN); + final boolean showRespawnScreen = wrapper.read(Types.BOOLEAN); + + wrapper.read(Types.BOOLEAN); // Limited crafting + + final String dimensionType = wrapper.read(Types.STRING); + final String world = wrapper.read(Types.STRING); + final long seed = wrapper.read(Types.LONG); + + wrapper.passthrough(Types.BYTE); // Gamemode + wrapper.passthrough(Types.BYTE); // Previous gamemode + + wrapper.write(Types.STRING_ARRAY, worlds); + wrapper.write(Types.NAMED_COMPOUND_TAG, configurationPacketStorage.registry()); + wrapper.write(Types.STRING, dimensionType); + wrapper.write(Types.STRING, world); + wrapper.write(Types.LONG, seed); + wrapper.write(Types.VAR_INT, maxPlayers); + wrapper.write(Types.VAR_INT, viewDistance); + wrapper.write(Types.VAR_INT, simulationDistance); + wrapper.write(Types.BOOLEAN, reducedDebugInfo); + wrapper.write(Types.BOOLEAN, showRespawnScreen); + + worldDataTrackerHandlerByKey().handle(wrapper); + + wrapper.send(Protocol1_20_2To1_20.class); + wrapper.cancel(); + + if (configurationPacketStorage.enabledFeatures() != null) { + final PacketWrapper featuresPacket = wrapper.create(ClientboundPackets1_19_4.UPDATE_ENABLED_FEATURES); + featuresPacket.write(Types.STRING_ARRAY, configurationPacketStorage.enabledFeatures()); + featuresPacket.send(Protocol1_20_2To1_20.class); + } + + configurationPacketStorage.sendQueuedPackets(wrapper.user()); + }); + } + }); + + protocol.registerClientbound(ClientboundPackets1_20_2.RESPAWN, new PacketHandlers() { + @Override + public void register() { + handler(wrapper -> { + wrapper.passthrough(Types.STRING); // Dimension type + wrapper.passthrough(Types.STRING); // World + wrapper.passthrough(Types.LONG); // Seed + wrapper.write(Types.UNSIGNED_BYTE, wrapper.read(Types.BYTE).shortValue()); // Gamemode + wrapper.passthrough(Types.BYTE); // Previous gamemode + wrapper.passthrough(Types.BOOLEAN); // Debug + wrapper.passthrough(Types.BOOLEAN); // Flat + + final GlobalPosition lastDeathPosition = wrapper.read(Types.OPTIONAL_GLOBAL_POSITION); + final int portalCooldown = wrapper.read(Types.VAR_INT); + + wrapper.passthrough(Types.BYTE); // Data to keep + + wrapper.write(Types.OPTIONAL_GLOBAL_POSITION, lastDeathPosition); + wrapper.write(Types.VAR_INT, portalCooldown); + }); + handler(worldDataTrackerHandlerByKey()); // Tracks world height and name for chunk data and entity (un)tracking + } + }); + + protocol.registerClientbound(ClientboundPackets1_20_2.UPDATE_MOB_EFFECT, wrapper -> { + wrapper.passthrough(Types.VAR_INT); // Entity id + wrapper.write(Types.VAR_INT, wrapper.read(Types.VAR_INT) + 1); // Effect id + wrapper.passthrough(Types.BYTE); // Amplifier + wrapper.passthrough(Types.VAR_INT); // Duration + wrapper.passthrough(Types.BYTE); // Flags + + final CompoundTag factorData = wrapper.read(Types.OPTIONAL_COMPOUND_TAG); + wrapper.write(Types.OPTIONAL_NAMED_COMPOUND_TAG, factorData); // Factor data + }); + + protocol.registerClientbound(ClientboundPackets1_20_2.REMOVE_MOB_EFFECT, wrapper -> { + wrapper.passthrough(Types.VAR_INT); // Entity id + wrapper.write(Types.VAR_INT, wrapper.read(Types.VAR_INT) + 1); // Effect id + }); + } + + @Override + protected void registerRewrites() { + filter().handler((event, meta) -> meta.setDataType(Types1_20.ENTITY_DATA_TYPES.byId(meta.dataType().typeId()))); + registerMetaTypeHandler(Types1_20.ENTITY_DATA_TYPES.itemType, Types1_20.ENTITY_DATA_TYPES.blockStateType, Types1_20.ENTITY_DATA_TYPES.optionalBlockStateType, Types1_20.ENTITY_DATA_TYPES.particleType, null, null); + + filter().type(EntityTypes1_19_4.DISPLAY).removeIndex(10); + + filter().type(EntityTypes1_19_4.ABSTRACT_MINECART).index(11).handler((event, meta) -> { + final int blockState = meta.value(); + meta.setValue(protocol.getMappingData().getNewBlockStateId(blockState)); + }); + } + + @Override + public EntityType typeFromId(final int type) { + return EntityTypes1_19_4.getTypeFromId(type); + } +} diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20to1_20_2/storage/ConfigurationPacketStorage.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_2to1_20/storage/ConfigurationPacketStorage.java similarity index 90% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20to1_20_2/storage/ConfigurationPacketStorage.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_2to1_20/storage/ConfigurationPacketStorage.java index ee2ccdf7..a3952ac4 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20to1_20_2/storage/ConfigurationPacketStorage.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_2to1_20/storage/ConfigurationPacketStorage.java @@ -15,16 +15,16 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_20to1_20_2.storage; +package com.viaversion.viabackwards.protocol.v1_20_2to1_20.storage; import com.google.common.base.Preconditions; -import com.viaversion.viabackwards.protocol.protocol1_20to1_20_2.Protocol1_20To1_20_2; +import com.viaversion.viabackwards.protocol.v1_20_2to1_20.Protocol1_20_2To1_20; import com.viaversion.viaversion.api.connection.StorableObject; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.protocol.packet.PacketType; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.ClientboundPackets1_19_4; +import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.packet.ClientboundPackets1_19_4; +import com.viaversion.nbt.tag.CompoundTag; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import java.util.ArrayList; @@ -85,7 +85,7 @@ public final class ConfigurationPacketStorage implements StorableObject { for (final QueuedPacket queuedPacket : rawPackets) { try { final PacketWrapper packet = PacketWrapper.create(queuedPacket.packetType(), queuedPacket.buf(), connection); - packet.send(Protocol1_20To1_20_2.class); + packet.send(Protocol1_20_2To1_20.class); } finally { queuedPacket.buf().release(); } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_2to1_20_3/Protocol1_20_2To1_20_3.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_3to1_20_2/Protocol1_20_3To1_20_2.java similarity index 52% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_2to1_20_3/Protocol1_20_2To1_20_3.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_3to1_20_2/Protocol1_20_3To1_20_2.java index 99f3be1c..c74d255f 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_2to1_20_3/Protocol1_20_2To1_20_3.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_3to1_20_2/Protocol1_20_3To1_20_2.java @@ -15,16 +15,16 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_20_2to1_20_3; +package com.viaversion.viabackwards.protocol.v1_20_3to1_20_2; import com.viaversion.viabackwards.api.BackwardsProtocol; -import com.viaversion.viabackwards.api.data.BackwardsMappings; +import com.viaversion.viabackwards.api.data.BackwardsMappingData; import com.viaversion.viabackwards.api.rewriters.SoundRewriter; import com.viaversion.viabackwards.api.rewriters.TranslatableRewriter; -import com.viaversion.viabackwards.protocol.protocol1_20_2to1_20_3.rewriter.BlockItemPacketRewriter1_20_3; -import com.viaversion.viabackwards.protocol.protocol1_20_2to1_20_3.rewriter.EntityPacketRewriter1_20_3; -import com.viaversion.viabackwards.protocol.protocol1_20_2to1_20_3.storage.ResourcepackIDStorage; -import com.viaversion.viabackwards.protocol.protocol1_20_2to1_20_3.storage.SpawnPositionStorage; +import com.viaversion.viabackwards.protocol.v1_20_3to1_20_2.rewriter.BlockItemPacketRewriter1_20_3; +import com.viaversion.viabackwards.protocol.v1_20_3to1_20_2.rewriter.EntityPacketRewriter1_20_3; +import com.viaversion.viabackwards.protocol.v1_20_3to1_20_2.storage.ResourcepackIDStorage; +import com.viaversion.viabackwards.protocol.v1_20_3to1_20_2.storage.SpawnPositionStorage; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.Position; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_20_3; @@ -33,23 +33,23 @@ import com.viaversion.viaversion.api.protocol.packet.provider.PacketTypesProvide import com.viaversion.viaversion.api.protocol.packet.provider.SimplePacketTypesProvider; import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; -import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.data.entity.EntityTrackerBase; import com.viaversion.viaversion.libs.fastutil.Pair; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.Tag; -import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.rewriter.CommandRewriter1_19_4; -import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ClientboundConfigurationPackets1_20_2; -import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ClientboundPacket1_20_2; -import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ClientboundPackets1_20_2; -import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ServerboundConfigurationPackets1_20_2; -import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ServerboundPacket1_20_2; -import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ServerboundPackets1_20_2; -import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.Protocol1_20_3To1_20_2; -import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundConfigurationPackets1_20_3; -import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPacket1_20_3; -import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPackets1_20_3; -import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ServerboundPacket1_20_3; -import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ServerboundPackets1_20_3; +import com.viaversion.nbt.tag.Tag; +import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.rewriter.CommandRewriter1_19_4; +import com.viaversion.viaversion.protocols.v1_20to1_20_2.packet.ClientboundConfigurationPackets1_20_2; +import com.viaversion.viaversion.protocols.v1_20to1_20_2.packet.ClientboundPacket1_20_2; +import com.viaversion.viaversion.protocols.v1_20to1_20_2.packet.ClientboundPackets1_20_2; +import com.viaversion.viaversion.protocols.v1_20to1_20_2.packet.ServerboundConfigurationPackets1_20_2; +import com.viaversion.viaversion.protocols.v1_20to1_20_2.packet.ServerboundPacket1_20_2; +import com.viaversion.viaversion.protocols.v1_20to1_20_2.packet.ServerboundPackets1_20_2; +import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.Protocol1_20_2To1_20_3; +import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.packet.ClientboundConfigurationPackets1_20_3; +import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.packet.ClientboundPacket1_20_3; +import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.packet.ClientboundPackets1_20_3; +import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.packet.ServerboundPacket1_20_3; +import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.packet.ServerboundPackets1_20_3; import com.viaversion.viaversion.rewriter.ComponentRewriter.ReadType; import com.viaversion.viaversion.rewriter.StatisticsRewriter; import com.viaversion.viaversion.rewriter.TagRewriter; @@ -59,15 +59,15 @@ import java.util.UUID; import static com.viaversion.viaversion.util.ProtocolUtil.packetTypeMap; -public final class Protocol1_20_2To1_20_3 extends BackwardsProtocol { +public final class Protocol1_20_3To1_20_2 extends BackwardsProtocol { - public static final BackwardsMappings MAPPINGS = new BackwardsMappings("1.20.3", "1.20.2", Protocol1_20_3To1_20_2.class); + public static final BackwardsMappingData MAPPINGS = new BackwardsMappingData("1.20.3", "1.20.2", Protocol1_20_2To1_20_3.class); private final EntityPacketRewriter1_20_3 entityRewriter = new EntityPacketRewriter1_20_3(this); private final BlockItemPacketRewriter1_20_3 itemRewriter = new BlockItemPacketRewriter1_20_3(this); private final TranslatableRewriter translatableRewriter = new TranslatableRewriter<>(this, ReadType.NBT); private final TagRewriter tagRewriter = new TagRewriter<>(this); - public Protocol1_20_2To1_20_3() { + public Protocol1_20_3To1_20_2() { super(ClientboundPacket1_20_3.class, ClientboundPacket1_20_2.class, ServerboundPacket1_20_3.class, ServerboundPacket1_20_2.class); } @@ -75,47 +75,47 @@ public final class Protocol1_20_2To1_20_3 extends BackwardsProtocol soundRewriter = new SoundRewriter<>(this); - soundRewriter.register1_19_3Sound(ClientboundPackets1_20_3.SOUND); - soundRewriter.register1_19_3Sound(ClientboundPackets1_20_3.ENTITY_SOUND); + soundRewriter.registerSound1_19_3(ClientboundPackets1_20_3.SOUND); + soundRewriter.registerSound1_19_3(ClientboundPackets1_20_3.SOUND_ENTITY); soundRewriter.registerStopSound(ClientboundPackets1_20_3.STOP_SOUND); - new StatisticsRewriter<>(this).register(ClientboundPackets1_20_3.STATISTICS); + new StatisticsRewriter<>(this).register(ClientboundPackets1_20_3.AWARD_STATS); new CommandRewriter1_19_4<>(this) { @Override public void handleArgument(final PacketWrapper wrapper, final String argumentType) { if (argumentType.equals("minecraft:style")) { - wrapper.write(Type.VAR_INT, 1); // Phrase + wrapper.write(Types.VAR_INT, 1); // Phrase } else { super.handleArgument(wrapper, argumentType); } } - }.registerDeclareCommands1_19(ClientboundPackets1_20_3.DECLARE_COMMANDS); + }.registerDeclareCommands1_19(ClientboundPackets1_20_3.COMMANDS); - registerClientbound(ClientboundPackets1_20_3.RESET_SCORE, ClientboundPackets1_20_2.UPDATE_SCORE, wrapper -> { - wrapper.passthrough(Type.STRING); // Owner - wrapper.write(Type.VAR_INT, 1); // Reset score + registerClientbound(ClientboundPackets1_20_3.RESET_SCORE, ClientboundPackets1_20_2.SET_SCORE, wrapper -> { + wrapper.passthrough(Types.STRING); // Owner + wrapper.write(Types.VAR_INT, 1); // Reset score - final String objectiveName = wrapper.read(Type.OPTIONAL_STRING); - wrapper.write(Type.STRING, objectiveName != null ? objectiveName : ""); // Objective name + final String objectiveName = wrapper.read(Types.OPTIONAL_STRING); + wrapper.write(Types.STRING, objectiveName != null ? objectiveName : ""); // Objective name }); - registerClientbound(ClientboundPackets1_20_3.UPDATE_SCORE, wrapper -> { - wrapper.passthrough(Type.STRING); // Owner - wrapper.write(Type.VAR_INT, 0); // Change score - wrapper.passthrough(Type.STRING); // Objective name - wrapper.passthrough(Type.VAR_INT); // Score + registerClientbound(ClientboundPackets1_20_3.SET_SCORE, wrapper -> { + wrapper.passthrough(Types.STRING); // Owner + wrapper.write(Types.VAR_INT, 0); // Change score + wrapper.passthrough(Types.STRING); // Objective name + wrapper.passthrough(Types.VAR_INT); // Score // Remove display and number format wrapper.clearInputBuffer(); }); - registerClientbound(ClientboundPackets1_20_3.SCOREBOARD_OBJECTIVE, wrapper -> { - wrapper.passthrough(Type.STRING); // Objective Name - final byte action = wrapper.passthrough(Type.BYTE); // Method + registerClientbound(ClientboundPackets1_20_3.SET_OBJECTIVE, wrapper -> { + wrapper.passthrough(Types.STRING); // Objective Name + final byte action = wrapper.passthrough(Types.BYTE); // Method if (action == 0 || action == 2) { convertComponent(wrapper); // Display Name - wrapper.passthrough(Type.VAR_INT); // Render type + wrapper.passthrough(Types.VAR_INT); // Render type // Remove number format wrapper.clearInputBuffer(); @@ -125,117 +125,117 @@ public final class Protocol1_20_2To1_20_3 extends BackwardsProtocol { - wrapper.passthrough(Type.POSITION1_14); // Position - wrapper.passthrough(Type.STRING); // Name - wrapper.passthrough(Type.STRING); // Target - wrapper.passthrough(Type.STRING); // Pool - wrapper.passthrough(Type.STRING); // Final state - wrapper.passthrough(Type.STRING); // Joint type - wrapper.write(Type.VAR_INT, 0); // Selection priority - wrapper.write(Type.VAR_INT, 0); // Placement priority + registerServerbound(ServerboundPackets1_20_2.SET_JIGSAW_BLOCK, wrapper -> { + wrapper.passthrough(Types.BLOCK_POSITION1_14); // Position + wrapper.passthrough(Types.STRING); // Name + wrapper.passthrough(Types.STRING); // Target + wrapper.passthrough(Types.STRING); // Pool + wrapper.passthrough(Types.STRING); // Final state + wrapper.passthrough(Types.STRING); // Joint type + wrapper.write(Types.VAR_INT, 0); // Selection priority + wrapper.write(Types.VAR_INT, 0); // Placement priority }); // Components are now (mostly) written as nbt instead of json strings - registerClientbound(ClientboundPackets1_20_3.ADVANCEMENTS, wrapper -> { - wrapper.passthrough(Type.BOOLEAN); // Reset/clear - final int size = wrapper.passthrough(Type.VAR_INT); // Mapping size + registerClientbound(ClientboundPackets1_20_3.UPDATE_ADVANCEMENTS, wrapper -> { + wrapper.passthrough(Types.BOOLEAN); // Reset/clear + final int size = wrapper.passthrough(Types.VAR_INT); // Mapping size for (int i = 0; i < size; i++) { - wrapper.passthrough(Type.STRING); // Identifier - wrapper.passthrough(Type.OPTIONAL_STRING); // Parent + wrapper.passthrough(Types.STRING); // Identifier + wrapper.passthrough(Types.OPTIONAL_STRING); // Parent // Display data - if (wrapper.passthrough(Type.BOOLEAN)) { + if (wrapper.passthrough(Types.BOOLEAN)) { convertComponent(wrapper); // Title convertComponent(wrapper); // Description - itemRewriter.handleItemToClient(wrapper.user(), wrapper.passthrough(Type.ITEM1_20_2)); // Icon - wrapper.passthrough(Type.VAR_INT); // Frame type - final int flags = wrapper.passthrough(Type.INT); + itemRewriter.handleItemToClient(wrapper.user(), wrapper.passthrough(Types.ITEM1_20_2)); // Icon + wrapper.passthrough(Types.VAR_INT); // Frame type + final int flags = wrapper.passthrough(Types.INT); if ((flags & 1) != 0) { - wrapper.passthrough(Type.STRING); // Background texture + wrapper.passthrough(Types.STRING); // Background texture } - wrapper.passthrough(Type.FLOAT); // X - wrapper.passthrough(Type.FLOAT); // Y + wrapper.passthrough(Types.FLOAT); // X + wrapper.passthrough(Types.FLOAT); // Y } - final int requirements = wrapper.passthrough(Type.VAR_INT); + final int requirements = wrapper.passthrough(Types.VAR_INT); for (int array = 0; array < requirements; array++) { - wrapper.passthrough(Type.STRING_ARRAY); + wrapper.passthrough(Types.STRING_ARRAY); } - wrapper.passthrough(Type.BOOLEAN); // Send telemetry + wrapper.passthrough(Types.BOOLEAN); // Send telemetry } }); - registerClientbound(ClientboundPackets1_20_3.TAB_COMPLETE, wrapper -> { - wrapper.passthrough(Type.VAR_INT); // Transaction id - wrapper.passthrough(Type.VAR_INT); // Start - wrapper.passthrough(Type.VAR_INT); // Length + registerClientbound(ClientboundPackets1_20_3.COMMAND_SUGGESTIONS, wrapper -> { + wrapper.passthrough(Types.VAR_INT); // Transaction id + wrapper.passthrough(Types.VAR_INT); // Start + wrapper.passthrough(Types.VAR_INT); // Length - final int suggestions = wrapper.passthrough(Type.VAR_INT); + final int suggestions = wrapper.passthrough(Types.VAR_INT); for (int i = 0; i < suggestions; i++) { - wrapper.passthrough(Type.STRING); // Suggestion + wrapper.passthrough(Types.STRING); // Suggestion convertOptionalComponent(wrapper); // Tooltip } }); - registerClientbound(ClientboundPackets1_20_3.MAP_DATA, wrapper -> { - wrapper.passthrough(Type.VAR_INT); // Map id - wrapper.passthrough(Type.BYTE); // Scale - wrapper.passthrough(Type.BOOLEAN); // Locked - if (wrapper.passthrough(Type.BOOLEAN)) { - final int icons = wrapper.passthrough(Type.VAR_INT); + registerClientbound(ClientboundPackets1_20_3.MAP_ITEM_DATA, wrapper -> { + wrapper.passthrough(Types.VAR_INT); // Map id + wrapper.passthrough(Types.BYTE); // Scale + wrapper.passthrough(Types.BOOLEAN); // Locked + if (wrapper.passthrough(Types.BOOLEAN)) { + final int icons = wrapper.passthrough(Types.VAR_INT); for (int i = 0; i < icons; i++) { - wrapper.passthrough(Type.VAR_INT); // Type - wrapper.passthrough(Type.BYTE); // X - wrapper.passthrough(Type.BYTE); // Y - wrapper.passthrough(Type.BYTE); // Rotation + wrapper.passthrough(Types.VAR_INT); // Type + wrapper.passthrough(Types.BYTE); // X + wrapper.passthrough(Types.BYTE); // Y + wrapper.passthrough(Types.BYTE); // Rotation convertOptionalComponent(wrapper); // Display name } } }); - registerClientbound(ClientboundPackets1_20_3.BOSSBAR, wrapper -> { - wrapper.passthrough(Type.UUID); // Id + registerClientbound(ClientboundPackets1_20_3.BOSS_EVENT, wrapper -> { + wrapper.passthrough(Types.UUID); // Id - final int action = wrapper.passthrough(Type.VAR_INT); + final int action = wrapper.passthrough(Types.VAR_INT); if (action == 0 || action == 3) { convertComponent(wrapper); } }); registerClientbound(ClientboundPackets1_20_3.PLAYER_CHAT, wrapper -> { - wrapper.passthrough(Type.UUID); // Sender - wrapper.passthrough(Type.VAR_INT); // Index - wrapper.passthrough(Type.OPTIONAL_SIGNATURE_BYTES); // Signature - wrapper.passthrough(Type.STRING); // Plain content - wrapper.passthrough(Type.LONG); // Timestamp - wrapper.passthrough(Type.LONG); // Salt + wrapper.passthrough(Types.UUID); // Sender + wrapper.passthrough(Types.VAR_INT); // Index + wrapper.passthrough(Types.OPTIONAL_SIGNATURE_BYTES); // Signature + wrapper.passthrough(Types.STRING); // Plain content + wrapper.passthrough(Types.LONG); // Timestamp + wrapper.passthrough(Types.LONG); // Salt - final int lastSeen = wrapper.passthrough(Type.VAR_INT); + final int lastSeen = wrapper.passthrough(Types.VAR_INT); for (int i = 0; i < lastSeen; i++) { - final int index = wrapper.passthrough(Type.VAR_INT); + final int index = wrapper.passthrough(Types.VAR_INT); if (index == 0) { - wrapper.passthrough(Type.SIGNATURE_BYTES); + wrapper.passthrough(Types.SIGNATURE_BYTES); } } convertOptionalComponent(wrapper); // Unsigned content - final int filterMaskType = wrapper.passthrough(Type.VAR_INT); + final int filterMaskType = wrapper.passthrough(Types.VAR_INT); if (filterMaskType == 2) { - wrapper.passthrough(Type.LONG_ARRAY_PRIMITIVE); // Mask + wrapper.passthrough(Types.LONG_ARRAY_PRIMITIVE); // Mask } - wrapper.passthrough(Type.VAR_INT); // Chat type + wrapper.passthrough(Types.VAR_INT); // Chat type convertComponent(wrapper); // Sender convertOptionalComponent(wrapper); // Target }); - registerClientbound(ClientboundPackets1_20_3.TEAMS, wrapper -> { - wrapper.passthrough(Type.STRING); // Team Name - final byte action = wrapper.passthrough(Type.BYTE); // Mode + registerClientbound(ClientboundPackets1_20_3.SET_PLAYER_TEAM, wrapper -> { + wrapper.passthrough(Types.STRING); // Team Name + final byte action = wrapper.passthrough(Types.BYTE); // Mode if (action == 0 || action == 2) { convertComponent(wrapper); // Display Name - wrapper.passthrough(Type.BYTE); // Flags - wrapper.passthrough(Type.STRING); // Name Tag Visibility - wrapper.passthrough(Type.STRING); // Collision rule - wrapper.passthrough(Type.VAR_INT); // Color + wrapper.passthrough(Types.BYTE); // Flags + wrapper.passthrough(Types.STRING); // Name Tag Visibility + wrapper.passthrough(Types.STRING); // Collision rule + wrapper.passthrough(Types.VAR_INT); // Color convertComponent(wrapper); // Prefix convertComponent(wrapper); // Suffix } @@ -245,27 +245,27 @@ public final class Protocol1_20_2To1_20_3 extends BackwardsProtocol { convertComponent(wrapper); - wrapper.passthrough(Type.VAR_INT); // Chat type + wrapper.passthrough(Types.VAR_INT); // Chat type convertComponent(wrapper); // Name convertOptionalComponent(wrapper); // Target name }); registerClientbound(ClientboundPackets1_20_3.SYSTEM_CHAT, this::convertComponent); - registerClientbound(ClientboundPackets1_20_3.OPEN_WINDOW, wrapper -> { - wrapper.passthrough(Type.VAR_INT); // Container id + registerClientbound(ClientboundPackets1_20_3.OPEN_SCREEN, wrapper -> { + wrapper.passthrough(Types.VAR_INT); // Container id - final int containerTypeId = wrapper.read(Type.VAR_INT); + final int containerTypeId = wrapper.read(Types.VAR_INT); final int mappedContainerTypeId = MAPPINGS.getMenuMappings().getNewId(containerTypeId); if (mappedContainerTypeId == -1) { wrapper.cancel(); return; } - wrapper.write(Type.VAR_INT, mappedContainerTypeId); + wrapper.write(Types.VAR_INT, mappedContainerTypeId); convertComponent(wrapper); }); @@ -274,54 +274,54 @@ public final class Protocol1_20_2To1_20_3 extends BackwardsProtocol convertComponent(wrapper)); } }); registerClientbound(ClientboundPackets1_20_3.PLAYER_INFO_UPDATE, wrapper -> { - final BitSet actions = wrapper.passthrough(Type.PROFILE_ACTIONS_ENUM); - final int entries = wrapper.passthrough(Type.VAR_INT); + final BitSet actions = wrapper.passthrough(Types.PROFILE_ACTIONS_ENUM); + final int entries = wrapper.passthrough(Types.VAR_INT); for (int i = 0; i < entries; i++) { - wrapper.passthrough(Type.UUID); + wrapper.passthrough(Types.UUID); if (actions.get(0)) { - wrapper.passthrough(Type.STRING); // Player Name + wrapper.passthrough(Types.STRING); // Player Name - final int properties = wrapper.passthrough(Type.VAR_INT); + final int properties = wrapper.passthrough(Types.VAR_INT); for (int j = 0; j < properties; j++) { - wrapper.passthrough(Type.STRING); // Name - wrapper.passthrough(Type.STRING); // Value - wrapper.passthrough(Type.OPTIONAL_STRING); // Signature + wrapper.passthrough(Types.STRING); // Name + wrapper.passthrough(Types.STRING); // Value + wrapper.passthrough(Types.OPTIONAL_STRING); // Signature } } - if (actions.get(1) && wrapper.passthrough(Type.BOOLEAN)) { - wrapper.passthrough(Type.UUID); // Session UUID - wrapper.passthrough(Type.PROFILE_KEY); + if (actions.get(1) && wrapper.passthrough(Types.BOOLEAN)) { + wrapper.passthrough(Types.UUID); // Session UUID + wrapper.passthrough(Types.PROFILE_KEY); } if (actions.get(2)) { - wrapper.passthrough(Type.VAR_INT); // Gamemode + wrapper.passthrough(Types.VAR_INT); // Gamemode } if (actions.get(3)) { - wrapper.passthrough(Type.BOOLEAN); // Listed + wrapper.passthrough(Types.BOOLEAN); // Listed } if (actions.get(4)) { - wrapper.passthrough(Type.VAR_INT); // Latency + wrapper.passthrough(Types.VAR_INT); // Latency } if (actions.get(5)) { convertOptionalComponent(wrapper); // Display name } } }); - registerClientbound(ClientboundPackets1_20_3.SPAWN_POSITION, wrapper -> { - final Position position = wrapper.passthrough(Type.POSITION1_14); - final float angle = wrapper.passthrough(Type.FLOAT); + registerClientbound(ClientboundPackets1_20_3.SET_DEFAULT_SPAWN_POSITION, wrapper -> { + final Position position = wrapper.passthrough(Types.BLOCK_POSITION1_14); + final float angle = wrapper.passthrough(Types.FLOAT); wrapper.user().get(SpawnPositionStorage.class).setSpawnPosition(Pair.of(position, angle)); }); registerClientbound(ClientboundPackets1_20_3.GAME_EVENT, wrapper -> { - final short reason = wrapper.passthrough(Type.UNSIGNED_BYTE); + final short reason = wrapper.passthrough(Types.UNSIGNED_BYTE); if (reason == 13) { // Level chunks load start wrapper.cancel(); @@ -329,15 +329,15 @@ public final class Protocol1_20_2To1_20_3 extends BackwardsProtocol { final ResourcepackIDStorage storage = wrapper.user().get(ResourcepackIDStorage.class); - wrapper.write(Type.UUID, storage != null ? storage.uuid() : UUID.randomUUID()); + wrapper.write(Types.UUID, storage != null ? storage.uuid() : UUID.randomUUID()); }; } private PacketHandler resourcePackHandler() { return wrapper -> { - final UUID uuid = wrapper.read(Type.UUID); + final UUID uuid = wrapper.read(Types.UUID); wrapper.user().put(new ResourcepackIDStorage(uuid)); - wrapper.passthrough(Type.STRING); // Url - wrapper.passthrough(Type.STRING); // Hash - wrapper.passthrough(Type.BOOLEAN); // Required + wrapper.passthrough(Types.STRING); // Url + wrapper.passthrough(Types.STRING); // Hash + wrapper.passthrough(Types.BOOLEAN); // Required convertOptionalComponent(wrapper); }; } private void convertComponent(final PacketWrapper wrapper) { - final Tag tag = wrapper.read(Type.TAG); + final Tag tag = wrapper.read(Types.TAG); translatableRewriter.processTag(wrapper.user(), tag); - wrapper.write(Type.COMPONENT, ComponentUtil.tagToJson(tag)); + wrapper.write(Types.COMPONENT, ComponentUtil.tagToJson(tag)); } private void convertOptionalComponent(final PacketWrapper wrapper) { - final Tag tag = wrapper.read(Type.OPTIONAL_TAG); + final Tag tag = wrapper.read(Types.OPTIONAL_TAG); translatableRewriter.processTag(wrapper.user(), tag); - wrapper.write(Type.OPTIONAL_COMPONENT, ComponentUtil.tagToJson(tag)); + wrapper.write(Types.OPTIONAL_COMPONENT, ComponentUtil.tagToJson(tag)); } @Override @@ -383,7 +383,7 @@ public final class Protocol1_20_2To1_20_3 extends BackwardsProtocol. + */ +package com.viaversion.viabackwards.protocol.v1_20_3to1_20_2.rewriter; + +import com.viaversion.viabackwards.ViaBackwards; +import com.viaversion.viabackwards.api.rewriters.BackwardsItemRewriter; +import com.viaversion.viabackwards.protocol.v1_20_3to1_20_2.Protocol1_20_3To1_20_2; +import com.viaversion.viaversion.api.data.ParticleMappings; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_20_2; +import com.viaversion.viaversion.api.type.types.version.Types1_20_3; +import com.viaversion.viaversion.protocols.v1_20to1_20_2.packet.ServerboundPacket1_20_2; +import com.viaversion.viaversion.protocols.v1_20to1_20_2.packet.ServerboundPackets1_20_2; +import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.packet.ClientboundPacket1_20_3; +import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.packet.ClientboundPackets1_20_3; +import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.rewriter.RecipeRewriter1_20_3; +import com.viaversion.viaversion.rewriter.BlockRewriter; + +public final class BlockItemPacketRewriter1_20_3 extends BackwardsItemRewriter { + + public BlockItemPacketRewriter1_20_3(final Protocol1_20_3To1_20_2 protocol) { + super(protocol, Types.ITEM1_20_2, Types.ITEM1_20_2_ARRAY); + } + + @Override + public void registerPackets() { + final BlockRewriter blockRewriter = BlockRewriter.for1_20_2(protocol); + blockRewriter.registerBlockEvent(ClientboundPackets1_20_3.BLOCK_EVENT); + blockRewriter.registerBlockUpdate(ClientboundPackets1_20_3.BLOCK_UPDATE); + blockRewriter.registerSectionBlocksUpdate1_20(ClientboundPackets1_20_3.SECTION_BLOCKS_UPDATE); + blockRewriter.registerLevelEvent(ClientboundPackets1_20_3.LEVEL_EVENT, 1010, 2001); + blockRewriter.registerLevelChunk1_19(ClientboundPackets1_20_3.LEVEL_CHUNK_WITH_LIGHT, ChunkType1_20_2::new); + blockRewriter.registerBlockEntityData(ClientboundPackets1_20_3.BLOCK_ENTITY_DATA); + + registerCooldown(ClientboundPackets1_20_3.COOLDOWN); + registerSetContent1_17_1(ClientboundPackets1_20_3.CONTAINER_SET_CONTENT); + registerSetSlot1_17_1(ClientboundPackets1_20_3.CONTAINER_SET_SLOT); + registerSetEquipment(ClientboundPackets1_20_3.SET_EQUIPMENT); + registerContainerClick1_17_1(ServerboundPackets1_20_2.CONTAINER_CLICK); + registerMerchantOffers1_19(ClientboundPackets1_20_3.MERCHANT_OFFERS); + registerSetCreativeModeSlot(ServerboundPackets1_20_2.SET_CREATIVE_MODE_SLOT); + registerContainerSetData(ClientboundPackets1_20_3.CONTAINER_SET_DATA); + + protocol.registerClientbound(ClientboundPackets1_20_3.LEVEL_PARTICLES, new PacketHandlers() { + @Override + public void register() { + map(Types.VAR_INT); // 0 - Particle ID + map(Types.BOOLEAN); // 1 - Long Distance + map(Types.DOUBLE); // 2 - X + map(Types.DOUBLE); // 3 - Y + map(Types.DOUBLE); // 4 - Z + map(Types.FLOAT); // 5 - Offset X + map(Types.FLOAT); // 6 - Offset Y + map(Types.FLOAT); // 7 - Offset Z + map(Types.FLOAT); // 8 - Particle Data + map(Types.INT); // 9 - Particle Count + handler(wrapper -> { + final int id = wrapper.get(Types.VAR_INT, 0); + final ParticleMappings particleMappings = protocol.getMappingData().getParticleMappings(); + if (id == particleMappings.id("vibration")) { + final int positionSourceType = wrapper.read(Types.VAR_INT); + if (positionSourceType == 0) { + wrapper.write(Types.STRING, "minecraft:block"); + } else if (positionSourceType == 1) { + wrapper.write(Types.STRING, "minecraft:entity"); + } else { + ViaBackwards.getPlatform().getLogger().warning("Unknown position source type: " + positionSourceType); + wrapper.cancel(); + } + } + }); + handler(levelParticlesHandler(Types.VAR_INT)); + } + }); + + new RecipeRewriter1_20_3<>(protocol) { + @Override + public void handleCraftingShaped(final PacketWrapper wrapper) { + // Move width and height up + final String group = wrapper.read(Types.STRING); + final int craftingBookCategory = wrapper.read(Types.VAR_INT); + + final int width = wrapper.passthrough(Types.VAR_INT); + final int height = wrapper.passthrough(Types.VAR_INT); + + wrapper.write(Types.STRING, group); + wrapper.write(Types.VAR_INT, craftingBookCategory); + + final int ingredients = height * width; + for (int i = 0; i < ingredients; i++) { + handleIngredient(wrapper); + } + rewrite(wrapper.user(), wrapper.passthrough(itemType())); // Result + wrapper.passthrough(Types.BOOLEAN); // Show notification + } + }.register(ClientboundPackets1_20_3.UPDATE_RECIPES); + + protocol.registerClientbound(ClientboundPackets1_20_3.EXPLODE, wrapper -> { + wrapper.passthrough(Types.DOUBLE); // X + wrapper.passthrough(Types.DOUBLE); // Y + wrapper.passthrough(Types.DOUBLE); // Z + wrapper.passthrough(Types.FLOAT); // Power + + final int blocks = wrapper.read(Types.VAR_INT); + final byte[][] toBlow = new byte[blocks][3]; + for (int i = 0; i < blocks; i++) { + toBlow[i] = new byte[]{ + wrapper.read(Types.BYTE), // Relative X + wrapper.read(Types.BYTE), // Relative Y + wrapper.read(Types.BYTE) // Relative Z + }; + } + + final float knockbackX = wrapper.read(Types.FLOAT); // Knockback X + final float knockbackY = wrapper.read(Types.FLOAT); // Knockback Y + final float knockbackZ = wrapper.read(Types.FLOAT); // Knockback Z + + final int blockInteraction = wrapper.read(Types.VAR_INT); // Block interaction type + // 0 = keep, 1 = destroy, 2 = destroy_with_decay, 3 = trigger_block + if (blockInteraction == 1 || blockInteraction == 2) { + wrapper.write(Types.VAR_INT, blocks); + for (final byte[] relativeXYZ : toBlow) { + wrapper.write(Types.BYTE, relativeXYZ[0]); + wrapper.write(Types.BYTE, relativeXYZ[1]); + wrapper.write(Types.BYTE, relativeXYZ[2]); + } + } else { + // Explosion doesn't destroy blocks + wrapper.write(Types.VAR_INT, 0); + } + + wrapper.write(Types.FLOAT, knockbackX); + wrapper.write(Types.FLOAT, knockbackY); + wrapper.write(Types.FLOAT, knockbackZ); + + // TODO Probably needs handling + wrapper.read(Types1_20_3.PARTICLE); // Small explosion particle + wrapper.read(Types1_20_3.PARTICLE); // Large explosion particle + wrapper.read(Types.STRING); // Explosion sound + wrapper.read(Types.OPTIONAL_FLOAT); // Sound range + }); + } +} \ No newline at end of file diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_2to1_20_3/rewriter/EntityPacketRewriter1_20_3.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_3to1_20_2/rewriter/EntityPacketRewriter1_20_3.java similarity index 56% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_2to1_20_3/rewriter/EntityPacketRewriter1_20_3.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_3to1_20_2/rewriter/EntityPacketRewriter1_20_3.java index 99ac3e09..2146d7a0 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_2to1_20_3/rewriter/EntityPacketRewriter1_20_3.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_3to1_20_2/rewriter/EntityPacketRewriter1_20_3.java @@ -15,61 +15,62 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_20_2to1_20_3.rewriter; +package com.viaversion.viabackwards.protocol.v1_20_3to1_20_2.rewriter; import com.viaversion.viabackwards.api.rewriters.EntityRewriter; -import com.viaversion.viabackwards.protocol.protocol1_20_2to1_20_3.Protocol1_20_2To1_20_3; -import com.viaversion.viabackwards.protocol.protocol1_20_2to1_20_3.storage.SpawnPositionStorage; +import com.viaversion.viabackwards.protocol.v1_20_3to1_20_2.Protocol1_20_3To1_20_2; +import com.viaversion.viabackwards.protocol.v1_20_3to1_20_2.storage.SpawnPositionStorage; import com.viaversion.viaversion.api.data.ParticleMappings; import com.viaversion.viaversion.api.minecraft.Particle; import com.viaversion.viaversion.api.minecraft.entities.EntityType; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_20_3; -import com.viaversion.viaversion.api.minecraft.metadata.MetaType; +import com.viaversion.viaversion.api.minecraft.entitydata.EntityDataType; import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.version.Types1_20_2; import com.viaversion.viaversion.api.type.types.version.Types1_20_3; -import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundConfigurationPackets1_20_3; -import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPacket1_20_3; -import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPackets1_20_3; +import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.packet.ClientboundConfigurationPackets1_20_3; +import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.packet.ClientboundPacket1_20_3; +import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.packet.ClientboundPackets1_20_3; import com.viaversion.viaversion.util.ComponentUtil; -public final class EntityPacketRewriter1_20_3 extends EntityRewriter { +public final class EntityPacketRewriter1_20_3 extends EntityRewriter { - public EntityPacketRewriter1_20_3(final Protocol1_20_2To1_20_3 protocol) { - super(protocol, Types1_20_2.META_TYPES.optionalComponentType, Types1_20_2.META_TYPES.booleanType); + public EntityPacketRewriter1_20_3(final Protocol1_20_3To1_20_2 protocol) { + super(protocol, Types1_20_2.ENTITY_DATA_TYPES.optionalComponentType, Types1_20_2.ENTITY_DATA_TYPES.booleanType); } @Override public void registerPackets() { - registerSpawnTracker(ClientboundPackets1_20_3.SPAWN_ENTITY); - registerMetadataRewriter(ClientboundPackets1_20_3.ENTITY_METADATA, Types1_20_3.METADATA_LIST, Types1_20_2.METADATA_LIST); + registerSpawnTracker(ClientboundPackets1_20_3.ADD_ENTITY); + registerSetEntityData(ClientboundPackets1_20_3.SET_ENTITY_DATA, Types1_20_3.ENTITY_DATA_LIST, Types1_20_2.ENTITY_DATA_LIST); registerRemoveEntities(ClientboundPackets1_20_3.REMOVE_ENTITIES); protocol.registerClientbound(ClientboundConfigurationPackets1_20_3.REGISTRY_DATA, new PacketHandlers() { @Override protected void register() { - map(Type.COMPOUND_TAG); // Registry data + map(Types.COMPOUND_TAG); // Registry data handler(configurationDimensionDataHandler()); handler(configurationBiomeSizeTracker()); } }); - protocol.registerClientbound(ClientboundPackets1_20_3.JOIN_GAME, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_20_3.LOGIN, new PacketHandlers() { @Override public void register() { - map(Type.INT); // Entity id - map(Type.BOOLEAN); // Hardcore - map(Type.STRING_ARRAY); // World List - map(Type.VAR_INT); // Max players - map(Type.VAR_INT); // View distance - map(Type.VAR_INT); // Simulation distance - map(Type.BOOLEAN); // Reduced debug info - map(Type.BOOLEAN); // Show death screen - map(Type.BOOLEAN); // Limited crafting - map(Type.STRING); // Dimension key - map(Type.STRING); // World + map(Types.INT); // Entity id + map(Types.BOOLEAN); // Hardcore + map(Types.STRING_ARRAY); // World List + map(Types.VAR_INT); // Max players + map(Types.VAR_INT); // View distance + map(Types.VAR_INT); // Simulation distance + map(Types.BOOLEAN); // Reduced debug info + map(Types.BOOLEAN); // Show death screen + map(Types.BOOLEAN); // Limited crafting + map(Types.STRING); // Dimension key + map(Types.STRING); // World handler(spawnPositionHandler()); handler(worldDataTrackerHandlerByKey()); @@ -78,8 +79,8 @@ public final class EntityPacketRewriter1_20_3 extends EntityRewriter { - final String world = wrapper.get(Type.STRING, 1); + final String world = wrapper.get(Types.STRING, 1); wrapper.user().get(SpawnPositionStorage.class).setDimension(world); }; } @@ -97,45 +98,45 @@ public final class EntityPacketRewriter1_20_3 extends EntityRewriter { - final MetaType type = meta.metaType(); - if (type == Types1_20_3.META_TYPES.componentType) { - meta.setTypeAndValue(Types1_20_2.META_TYPES.componentType, ComponentUtil.tagToJson(meta.value())); + final EntityDataType type = meta.dataType(); + if (type == Types1_20_3.ENTITY_DATA_TYPES.componentType) { + meta.setTypeAndValue(Types1_20_2.ENTITY_DATA_TYPES.componentType, ComponentUtil.tagToJson(meta.value())); return; - } else if (type == Types1_20_3.META_TYPES.optionalComponentType) { - meta.setTypeAndValue(Types1_20_2.META_TYPES.optionalComponentType, ComponentUtil.tagToJson(meta.value())); + } else if (type == Types1_20_3.ENTITY_DATA_TYPES.optionalComponentType) { + meta.setTypeAndValue(Types1_20_2.ENTITY_DATA_TYPES.optionalComponentType, ComponentUtil.tagToJson(meta.value())); return; - } else if (type == Types1_20_3.META_TYPES.particleType) { + } else if (type == Types1_20_3.ENTITY_DATA_TYPES.particleType) { final Particle particle = (Particle) meta.getValue(); final ParticleMappings particleMappings = protocol.getMappingData().getParticleMappings(); if (particle.id() == particleMappings.id("vibration")) { // Change the type of the position source type argument final int positionSourceType = particle.removeArgument(0).getValue(); if (positionSourceType == 0) { - particle.add(0, Type.STRING, "minecraft:block"); + particle.add(0, Types.STRING, "minecraft:block"); } else { // Entity - particle.add(0, Type.STRING, "minecraft:entity"); + particle.add(0, Types.STRING, "minecraft:entity"); } } - } else if (type == Types1_20_3.META_TYPES.poseType) { + } else if (type == Types1_20_3.ENTITY_DATA_TYPES.poseType) { final int pose = meta.value(); if (pose >= 15) { event.cancel(); } } - meta.setMetaType(Types1_20_2.META_TYPES.byId(type.typeId())); + meta.setDataType(Types1_20_2.ENTITY_DATA_TYPES.byId(type.typeId())); }); registerMetaTypeHandler( - Types1_20_2.META_TYPES.itemType, - Types1_20_2.META_TYPES.blockStateType, - Types1_20_2.META_TYPES.optionalBlockStateType, - Types1_20_2.META_TYPES.particleType, - Types1_20_2.META_TYPES.componentType, - Types1_20_2.META_TYPES.optionalComponentType + Types1_20_2.ENTITY_DATA_TYPES.itemType, + Types1_20_2.ENTITY_DATA_TYPES.blockStateType, + Types1_20_2.ENTITY_DATA_TYPES.optionalBlockStateType, + Types1_20_2.ENTITY_DATA_TYPES.particleType, + Types1_20_2.ENTITY_DATA_TYPES.componentType, + Types1_20_2.ENTITY_DATA_TYPES.optionalComponentType ); - filter().type(EntityTypes1_20_3.MINECART_ABSTRACT).index(11).handler((event, meta) -> { + filter().type(EntityTypes1_20_3.ABSTRACT_MINECART).index(11).handler((event, meta) -> { final int blockState = meta.value(); meta.setValue(protocol.getMappingData().getNewBlockStateId(blockState)); }); diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_2to1_20_3/storage/ResourcepackIDStorage.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_3to1_20_2/storage/ResourcepackIDStorage.java similarity index 93% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_2to1_20_3/storage/ResourcepackIDStorage.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_3to1_20_2/storage/ResourcepackIDStorage.java index 0c2ce1dd..99006958 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_2to1_20_3/storage/ResourcepackIDStorage.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_3to1_20_2/storage/ResourcepackIDStorage.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_20_2to1_20_3.storage; +package com.viaversion.viabackwards.protocol.v1_20_3to1_20_2.storage; import com.viaversion.viaversion.api.connection.StorableObject; import java.util.UUID; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_2to1_20_3/storage/SpawnPositionStorage.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_3to1_20_2/storage/SpawnPositionStorage.java similarity index 96% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_2to1_20_3/storage/SpawnPositionStorage.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_3to1_20_2/storage/SpawnPositionStorage.java index 38eecdd8..9b2b8363 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_2to1_20_3/storage/SpawnPositionStorage.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_3to1_20_2/storage/SpawnPositionStorage.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_20_2to1_20_3.storage; +package com.viaversion.viabackwards.protocol.v1_20_3to1_20_2.storage; import com.viaversion.viaversion.api.connection.StorableObject; import com.viaversion.viaversion.api.minecraft.Position; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_3to1_20_5/Protocol1_20_3To1_20_5.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_5to1_20_3/Protocol1_20_5To1_20_3.java similarity index 63% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_3to1_20_5/Protocol1_20_3To1_20_5.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_5to1_20_3/Protocol1_20_5To1_20_3.java index 65f24df4..b4a9a5cb 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_3to1_20_5/Protocol1_20_3To1_20_5.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_5to1_20_3/Protocol1_20_5To1_20_3.java @@ -15,18 +15,18 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_20_3to1_20_5; +package com.viaversion.viabackwards.protocol.v1_20_5to1_20_3; import com.viaversion.viabackwards.api.BackwardsProtocol; -import com.viaversion.viabackwards.api.data.BackwardsMappings; +import com.viaversion.viabackwards.api.data.BackwardsMappingData; import com.viaversion.viabackwards.api.rewriters.SoundRewriter; import com.viaversion.viabackwards.api.rewriters.TranslatableRewriter; -import com.viaversion.viabackwards.protocol.protocol1_20_3to1_20_5.provider.TransferProvider; -import com.viaversion.viabackwards.protocol.protocol1_20_3to1_20_5.rewriter.BlockItemPacketRewriter1_20_5; -import com.viaversion.viabackwards.protocol.protocol1_20_3to1_20_5.rewriter.EntityPacketRewriter1_20_5; -import com.viaversion.viabackwards.protocol.protocol1_20_3to1_20_5.storage.CookieStorage; -import com.viaversion.viabackwards.protocol.protocol1_20_3to1_20_5.storage.RegistryDataStorage; -import com.viaversion.viabackwards.protocol.protocol1_20_3to1_20_5.storage.SecureChatStorage; +import com.viaversion.viabackwards.protocol.v1_20_5to1_20_3.provider.TransferProvider; +import com.viaversion.viabackwards.protocol.v1_20_5to1_20_3.rewriter.BlockItemPacketRewriter1_20_5; +import com.viaversion.viabackwards.protocol.v1_20_5to1_20_3.rewriter.EntityPacketRewriter1_20_5; +import com.viaversion.viabackwards.protocol.v1_20_5to1_20_3.storage.CookieStorage; +import com.viaversion.viabackwards.protocol.v1_20_5to1_20_3.storage.RegistryDataStorage; +import com.viaversion.viabackwards.protocol.v1_20_5to1_20_3.storage.SecureChatStorage; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_20_5; @@ -36,40 +36,40 @@ import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; import com.viaversion.viaversion.api.protocol.packet.State; import com.viaversion.viaversion.api.protocol.packet.provider.PacketTypesProvider; import com.viaversion.viaversion.api.protocol.packet.provider.SimplePacketTypesProvider; -import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.data.entity.EntityTrackerBase; import com.viaversion.viaversion.protocols.base.ClientboundLoginPackets; import com.viaversion.viaversion.protocols.base.ServerboundLoginPackets; -import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.rewriter.CommandRewriter1_19_4; -import com.viaversion.viaversion.protocols.protocol1_20_2to1_20.packet.ServerboundConfigurationPackets1_20_2; -import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundConfigurationPackets1_20_3; -import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPacket1_20_3; -import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ClientboundPackets1_20_3; -import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ServerboundPacket1_20_3; -import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ServerboundPackets1_20_3; -import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.Protocol1_20_5To1_20_3; -import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundConfigurationPackets1_20_5; -import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundPacket1_20_5; -import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundPackets1_20_5; -import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ServerboundConfigurationPackets1_20_5; -import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ServerboundPacket1_20_5; -import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ServerboundPackets1_20_5; -import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.storage.BannerPatternStorage; +import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.rewriter.CommandRewriter1_19_4; +import com.viaversion.viaversion.protocols.v1_20to1_20_2.packet.ServerboundConfigurationPackets1_20_2; +import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.packet.ClientboundConfigurationPackets1_20_3; +import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.packet.ClientboundPacket1_20_3; +import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.packet.ClientboundPackets1_20_3; +import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.packet.ServerboundPacket1_20_3; +import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.packet.ServerboundPackets1_20_3; +import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.Protocol1_20_3To1_20_5; +import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ClientboundConfigurationPackets1_20_5; +import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ClientboundPacket1_20_5; +import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ClientboundPackets1_20_5; +import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ServerboundConfigurationPackets1_20_5; +import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ServerboundPacket1_20_5; +import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ServerboundPackets1_20_5; +import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.storage.BannerPatternStorage; import com.viaversion.viaversion.rewriter.ComponentRewriter.ReadType; import com.viaversion.viaversion.rewriter.StatisticsRewriter; import com.viaversion.viaversion.rewriter.TagRewriter; import static com.viaversion.viaversion.util.ProtocolUtil.packetTypeMap; -public final class Protocol1_20_3To1_20_5 extends BackwardsProtocol { +public final class Protocol1_20_5To1_20_3 extends BackwardsProtocol { - public static final BackwardsMappings MAPPINGS = new BackwardsMappings("1.20.5", "1.20.3", Protocol1_20_5To1_20_3.class); + public static final BackwardsMappingData MAPPINGS = new BackwardsMappingData("1.20.5", "1.20.3", Protocol1_20_3To1_20_5.class); private final EntityPacketRewriter1_20_5 entityRewriter = new EntityPacketRewriter1_20_5(this); private final BlockItemPacketRewriter1_20_5 itemRewriter = new BlockItemPacketRewriter1_20_5(this); private final TranslatableRewriter translatableRewriter = new TranslatableRewriter<>(this, ReadType.NBT); private final TagRewriter tagRewriter = new TagRewriter<>(this); - public Protocol1_20_3To1_20_5() { + public Protocol1_20_5To1_20_3() { super(ClientboundPacket1_20_5.class, ClientboundPacket1_20_3.class, ServerboundPacket1_20_5.class, ServerboundPacket1_20_3.class); } @@ -77,12 +77,12 @@ public final class Protocol1_20_3To1_20_5 extends BackwardsProtocol { // Send off registry data first final PacketWrapper registryDataPacket = wrapper.create(ClientboundConfigurationPackets1_20_3.REGISTRY_DATA); - registryDataPacket.write(Type.COMPOUND_TAG, wrapper.user().get(RegistryDataStorage.class).registryData().copy()); - registryDataPacket.send(Protocol1_20_3To1_20_5.class); + registryDataPacket.write(Types.COMPOUND_TAG, wrapper.user().get(RegistryDataStorage.class).registryData().copy()); + registryDataPacket.send(Protocol1_20_5To1_20_3.class); tagRewriter.getGenericHandler().handle(wrapper); }); @@ -90,47 +90,47 @@ public final class Protocol1_20_3To1_20_5 extends BackwardsProtocol wrapper.user().get(RegistryDataStorage.class).clear()); final SoundRewriter soundRewriter = new SoundRewriter<>(this); - soundRewriter.register1_19_3Sound(ClientboundPackets1_20_5.SOUND); - soundRewriter.register1_19_3Sound(ClientboundPackets1_20_5.ENTITY_SOUND); + soundRewriter.registerSound1_19_3(ClientboundPackets1_20_5.SOUND); + soundRewriter.registerSound1_19_3(ClientboundPackets1_20_5.SOUND_ENTITY); soundRewriter.registerStopSound(ClientboundPackets1_20_5.STOP_SOUND); - new StatisticsRewriter<>(this).register(ClientboundPackets1_20_5.STATISTICS); + new StatisticsRewriter<>(this).register(ClientboundPackets1_20_5.AWARD_STATS); - translatableRewriter.registerComponentPacket(ClientboundPackets1_20_5.ACTIONBAR); - translatableRewriter.registerComponentPacket(ClientboundPackets1_20_5.TITLE_TEXT); - translatableRewriter.registerComponentPacket(ClientboundPackets1_20_5.TITLE_SUBTITLE); - translatableRewriter.registerBossBar(ClientboundPackets1_20_5.BOSSBAR); + translatableRewriter.registerComponentPacket(ClientboundPackets1_20_5.SET_ACTION_BAR_TEXT); + translatableRewriter.registerComponentPacket(ClientboundPackets1_20_5.SET_TITLE_TEXT); + translatableRewriter.registerComponentPacket(ClientboundPackets1_20_5.SET_SUBTITLE_TEXT); + translatableRewriter.registerBossEvent(ClientboundPackets1_20_5.BOSS_EVENT); translatableRewriter.registerComponentPacket(ClientboundPackets1_20_5.DISCONNECT); translatableRewriter.registerTabList(ClientboundPackets1_20_5.TAB_LIST); - translatableRewriter.registerCombatKill1_20(ClientboundPackets1_20_5.COMBAT_KILL); + translatableRewriter.registerPlayerCombatKill1_20(ClientboundPackets1_20_5.PLAYER_COMBAT_KILL); translatableRewriter.registerComponentPacket(ClientboundPackets1_20_5.SYSTEM_CHAT); translatableRewriter.registerComponentPacket(ClientboundPackets1_20_5.DISGUISED_CHAT); translatableRewriter.registerPing(); registerClientbound(State.LOGIN, ClientboundLoginPackets.HELLO, wrapper -> { - wrapper.passthrough(Type.STRING); // Server ID - wrapper.passthrough(Type.BYTE_ARRAY_PRIMITIVE); // Public key - wrapper.passthrough(Type.BYTE_ARRAY_PRIMITIVE); // Challenge - wrapper.read(Type.BOOLEAN); // Authenticate + wrapper.passthrough(Types.STRING); // Server ID + wrapper.passthrough(Types.BYTE_ARRAY_PRIMITIVE); // Public key + wrapper.passthrough(Types.BYTE_ARRAY_PRIMITIVE); // Challenge + wrapper.read(Types.BOOLEAN); // Authenticate }); registerClientbound(ClientboundPackets1_20_5.SERVER_DATA, wrapper -> { - wrapper.passthrough(Type.TAG); // MOTD - wrapper.passthrough(Type.OPTIONAL_BYTE_ARRAY_PRIMITIVE); // Icon - wrapper.write(Type.BOOLEAN, wrapper.user().get(SecureChatStorage.class).enforcesSecureChat()); + wrapper.passthrough(Types.TAG); // MOTD + wrapper.passthrough(Types.OPTIONAL_BYTE_ARRAY_PRIMITIVE); // Icon + wrapper.write(Types.BOOLEAN, wrapper.user().get(SecureChatStorage.class).enforcesSecureChat()); }); registerServerbound(ServerboundPackets1_20_3.CHAT_COMMAND, ServerboundPackets1_20_5.CHAT_COMMAND_SIGNED, wrapper -> { - final String command = wrapper.passthrough(Type.STRING); // Command - wrapper.passthrough(Type.LONG); // Timestamp - wrapper.passthrough(Type.LONG); // Salt - final int signatures = wrapper.passthrough(Type.VAR_INT); // Signatures + final String command = wrapper.passthrough(Types.STRING); // Command + wrapper.passthrough(Types.LONG); // Timestamp + wrapper.passthrough(Types.LONG); // Salt + final int signatures = wrapper.passthrough(Types.VAR_INT); // Signatures if (signatures == 0) { wrapper.cancel(); final PacketWrapper chatCommand = wrapper.create(ServerboundPackets1_20_5.CHAT_COMMAND); - chatCommand.write(Type.STRING, command); - chatCommand.sendToServer(Protocol1_20_3To1_20_5.class); + chatCommand.write(Types.STRING, command); + chatCommand.sendToServer(Protocol1_20_5To1_20_3.class); } }); @@ -147,8 +147,8 @@ public final class Protocol1_20_3To1_20_5 extends BackwardsProtocol(this) { @@ -157,25 +157,25 @@ public final class Protocol1_20_3To1_20_5 extends BackwardsProtocol { - wrapper.passthrough(Type.UUID); // UUID - wrapper.passthrough(Type.STRING); // Name + wrapper.passthrough(Types.UUID); // UUID + wrapper.passthrough(Types.STRING); // Name - final int properties = wrapper.passthrough(Type.VAR_INT); + final int properties = wrapper.passthrough(Types.VAR_INT); for (int i = 0; i < properties; i++) { - wrapper.passthrough(Type.STRING); // Name - wrapper.passthrough(Type.STRING); // Value - wrapper.passthrough(Type.OPTIONAL_STRING); // Signature + wrapper.passthrough(Types.STRING); // Name + wrapper.passthrough(Types.STRING); // Value + wrapper.passthrough(Types.OPTIONAL_STRING); // Signature } - wrapper.read(Type.BOOLEAN); // Strict error handling + wrapper.read(Types.BOOLEAN); // Strict error handling }); cancelClientbound(ClientboundPackets1_20_5.PROJECTILE_POWER); @@ -185,8 +185,8 @@ public final class Protocol1_20_3To1_20_5 extends BackwardsProtocol 5120) { throw new IllegalArgumentException("Cookie data too large"); } @@ -197,19 +197,19 @@ public final class Protocol1_20_3To1_20_5 extends BackwardsProtocol. */ -package com.viaversion.viabackwards.protocol.protocol1_20_3to1_20_5.provider; +package com.viaversion.viabackwards.protocol.v1_20_5to1_20_3.provider; import com.viaversion.viaversion.api.connection.UserConnection; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_3to1_20_5/provider/TransferProvider.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_5to1_20_3/provider/TransferProvider.java similarity index 93% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_3to1_20_5/provider/TransferProvider.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_5to1_20_3/provider/TransferProvider.java index 127b4279..55686c29 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_3to1_20_5/provider/TransferProvider.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_5to1_20_3/provider/TransferProvider.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_20_3to1_20_5.provider; +package com.viaversion.viabackwards.protocol.v1_20_5to1_20_3.provider; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.platform.providers.Provider; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_3to1_20_5/rewriter/BlockItemPacketRewriter1_20_5.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_5to1_20_3/rewriter/BlockItemPacketRewriter1_20_5.java similarity index 61% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_3to1_20_5/rewriter/BlockItemPacketRewriter1_20_5.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_5to1_20_3/rewriter/BlockItemPacketRewriter1_20_5.java index d16664f2..545c90b1 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_3to1_20_5/rewriter/BlockItemPacketRewriter1_20_5.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_5to1_20_3/rewriter/BlockItemPacketRewriter1_20_5.java @@ -15,86 +15,87 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_20_3to1_20_5.rewriter; +package com.viaversion.viabackwards.protocol.v1_20_5to1_20_3.rewriter; import com.viaversion.viabackwards.api.rewriters.BackwardsStructuredItemRewriter; -import com.viaversion.viabackwards.protocol.protocol1_20_3to1_20_5.Protocol1_20_3To1_20_5; +import com.viaversion.viabackwards.protocol.v1_20_5to1_20_3.Protocol1_20_5To1_20_3; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.Particle; import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_20_2; import com.viaversion.viaversion.api.type.types.version.Types1_20_3; import com.viaversion.viaversion.api.type.types.version.Types1_20_5; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.IntArrayTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.ListTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.Tag; -import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ServerboundPacket1_20_3; -import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.packet.ServerboundPackets1_20_3; -import com.viaversion.viaversion.protocols.protocol1_20_3to1_20_2.rewriter.RecipeRewriter1_20_3; -import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.Protocol1_20_5To1_20_3; -import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.data.BannerPatterns1_20_5; -import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundPacket1_20_5; -import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundPackets1_20_5; -import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.rewriter.StructuredDataConverter; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.IntArrayTag; +import com.viaversion.nbt.tag.ListTag; +import com.viaversion.nbt.tag.StringTag; +import com.viaversion.nbt.tag.Tag; +import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.packet.ServerboundPacket1_20_3; +import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.packet.ServerboundPackets1_20_3; +import com.viaversion.viaversion.protocols.v1_20_2to1_20_3.rewriter.RecipeRewriter1_20_3; +import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.Protocol1_20_3To1_20_5; +import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.data.BannerPatterns1_20_5; +import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ClientboundPacket1_20_5; +import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ClientboundPackets1_20_5; +import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.rewriter.StructuredDataConverter; import com.viaversion.viaversion.rewriter.BlockRewriter; import com.viaversion.viaversion.util.Key; import org.checkerframework.checker.nullness.qual.Nullable; -public final class BlockItemPacketRewriter1_20_5 extends BackwardsStructuredItemRewriter { +public final class BlockItemPacketRewriter1_20_5 extends BackwardsStructuredItemRewriter { private static final StructuredDataConverter DATA_CONVERTER = new StructuredDataConverter(true); - private final Protocol1_20_5To1_20_3 vvProtocol = Via.getManager().getProtocolManager().getProtocol(Protocol1_20_5To1_20_3.class); + private final Protocol1_20_3To1_20_5 vvProtocol = Via.getManager().getProtocolManager().getProtocol(Protocol1_20_3To1_20_5.class); - public BlockItemPacketRewriter1_20_5(final Protocol1_20_3To1_20_5 protocol) { - super(protocol, Types1_20_5.ITEM, Types1_20_5.ITEM_ARRAY, Type.ITEM1_20_2, Type.ITEM1_20_2_ARRAY); + public BlockItemPacketRewriter1_20_5(final Protocol1_20_5To1_20_3 protocol) { + super(protocol, Types1_20_5.ITEM, Types1_20_5.ITEM_ARRAY, Types.ITEM1_20_2, Types.ITEM1_20_2_ARRAY); enchantmentRewriter.setRewriteIds(false); // Let VV handle it } @Override public void registerPackets() { final BlockRewriter blockRewriter = BlockRewriter.for1_20_2(protocol); - blockRewriter.registerBlockAction(ClientboundPackets1_20_5.BLOCK_ACTION); - blockRewriter.registerBlockChange(ClientboundPackets1_20_5.BLOCK_CHANGE); - blockRewriter.registerVarLongMultiBlockChange1_20(ClientboundPackets1_20_5.MULTI_BLOCK_CHANGE); - blockRewriter.registerEffect(ClientboundPackets1_20_5.EFFECT, 1010, 2001); - blockRewriter.registerChunkData1_19(ClientboundPackets1_20_5.CHUNK_DATA, ChunkType1_20_2::new, (user, blockEntity) -> updateBlockEntityTag(user, blockEntity.tag())); + blockRewriter.registerBlockEvent(ClientboundPackets1_20_5.BLOCK_EVENT); + blockRewriter.registerBlockUpdate(ClientboundPackets1_20_5.BLOCK_UPDATE); + blockRewriter.registerSectionBlocksUpdate1_20(ClientboundPackets1_20_5.SECTION_BLOCKS_UPDATE); + blockRewriter.registerLevelEvent(ClientboundPackets1_20_5.LEVEL_EVENT, 1010, 2001); + blockRewriter.registerLevelChunk1_19(ClientboundPackets1_20_5.LEVEL_CHUNK_WITH_LIGHT, ChunkType1_20_2::new, (user, blockEntity) -> updateBlockEntityTag(user, blockEntity.tag())); protocol.registerClientbound(ClientboundPackets1_20_5.BLOCK_ENTITY_DATA, wrapper -> { - wrapper.passthrough(Type.POSITION1_14); // Position - wrapper.passthrough(Type.VAR_INT); // Block entity type - final CompoundTag tag = wrapper.passthrough(Type.COMPOUND_TAG); + wrapper.passthrough(Types.BLOCK_POSITION1_14); // Position + wrapper.passthrough(Types.VAR_INT); // Block entity type + final CompoundTag tag = wrapper.passthrough(Types.COMPOUND_TAG); updateBlockEntityTag(wrapper.user(), tag); }); - registerSetCooldown(ClientboundPackets1_20_5.COOLDOWN); - registerWindowItems1_17_1(ClientboundPackets1_20_5.WINDOW_ITEMS); - registerSetSlot1_17_1(ClientboundPackets1_20_5.SET_SLOT); - registerAdvancements1_20_3(ClientboundPackets1_20_5.ADVANCEMENTS); - registerClickWindow1_17_1(ServerboundPackets1_20_3.CLICK_WINDOW); - registerWindowPropertyEnchantmentHandler(ClientboundPackets1_20_5.WINDOW_PROPERTY); - registerCreativeInvAction(ServerboundPackets1_20_3.CREATIVE_INVENTORY_ACTION); - protocol.registerServerbound(ServerboundPackets1_20_3.CLICK_WINDOW_BUTTON, wrapper -> { - final int containerId = wrapper.read(Type.BYTE) & 0xFF; - final int buttonId = wrapper.read(Type.BYTE) & 0xFF; - wrapper.write(Type.VAR_INT, containerId); - wrapper.write(Type.VAR_INT, buttonId); + registerCooldown(ClientboundPackets1_20_5.COOLDOWN); + registerSetContent1_17_1(ClientboundPackets1_20_5.CONTAINER_SET_CONTENT); + registerSetSlot1_17_1(ClientboundPackets1_20_5.CONTAINER_SET_SLOT); + registerAdvancements1_20_3(ClientboundPackets1_20_5.UPDATE_ADVANCEMENTS); + registerContainerClick1_17_1(ServerboundPackets1_20_3.CONTAINER_CLICK); + registerContainerSetData(ClientboundPackets1_20_5.CONTAINER_SET_DATA); + registerSetCreativeModeSlot(ServerboundPackets1_20_3.SET_CREATIVE_MODE_SLOT); + protocol.registerServerbound(ServerboundPackets1_20_3.CONTAINER_BUTTON_CLICK, wrapper -> { + final int containerId = wrapper.read(Types.BYTE) & 0xFF; + final int buttonId = wrapper.read(Types.BYTE) & 0xFF; + wrapper.write(Types.VAR_INT, containerId); + wrapper.write(Types.VAR_INT, buttonId); }); - protocol.registerClientbound(ClientboundPackets1_20_5.SPAWN_PARTICLE, wrapper -> { - wrapper.write(Type.VAR_INT, 0); // Write dummy value, set later + protocol.registerClientbound(ClientboundPackets1_20_5.LEVEL_PARTICLES, wrapper -> { + wrapper.write(Types.VAR_INT, 0); // Write dummy value, set later - wrapper.passthrough(Type.BOOLEAN); // Long Distance - wrapper.passthrough(Type.DOUBLE); // X - wrapper.passthrough(Type.DOUBLE); // Y - wrapper.passthrough(Type.DOUBLE); // Z - wrapper.passthrough(Type.FLOAT); // Offset X - wrapper.passthrough(Type.FLOAT); // Offset Y - wrapper.passthrough(Type.FLOAT); // Offset Z - final float data = wrapper.passthrough(Type.FLOAT); - wrapper.passthrough(Type.INT); // Particle Count + wrapper.passthrough(Types.BOOLEAN); // Long Distance + wrapper.passthrough(Types.DOUBLE); // X + wrapper.passthrough(Types.DOUBLE); // Y + wrapper.passthrough(Types.DOUBLE); // Z + wrapper.passthrough(Types.FLOAT); // Offset X + wrapper.passthrough(Types.FLOAT); // Offset Y + wrapper.passthrough(Types.FLOAT); // Offset Z + final float data = wrapper.passthrough(Types.FLOAT); + wrapper.passthrough(Types.INT); // Particle Count // Move it to the beginning, move out arguments here final Particle particle = wrapper.read(Types1_20_5.PARTICLE); @@ -103,85 +104,85 @@ public final class BlockItemPacketRewriter1_20_5 extends BackwardsStructuredItem // Remove color argument final int color = particle.removeArgument(0).getValue(); if (data == 0) { - wrapper.set(Type.FLOAT, 3, (float) color); + wrapper.set(Types.FLOAT, 3, (float) color); } } else if (particle.id() == protocol.getMappingData().getParticleMappings().mappedId("dust_color_transition")) { // fromColor, toColor, scale -> fromColor, scale, toColor - particle.add(3, Type.FLOAT, particle.removeArgument(6).getValue()); + particle.add(3, Types.FLOAT, particle.removeArgument(6).getValue()); } - wrapper.set(Type.VAR_INT, 0, particle.id()); + wrapper.set(Types.VAR_INT, 0, particle.id()); for (final Particle.ParticleData argument : particle.getArguments()) { argument.write(wrapper); } }); - protocol.registerClientbound(ClientboundPackets1_20_5.EXPLOSION, wrapper -> { - wrapper.passthrough(Type.DOUBLE); // X - wrapper.passthrough(Type.DOUBLE); // Y - wrapper.passthrough(Type.DOUBLE); // Z - wrapper.passthrough(Type.FLOAT); // Power - final int blocks = wrapper.passthrough(Type.VAR_INT); + protocol.registerClientbound(ClientboundPackets1_20_5.EXPLODE, wrapper -> { + wrapper.passthrough(Types.DOUBLE); // X + wrapper.passthrough(Types.DOUBLE); // Y + wrapper.passthrough(Types.DOUBLE); // Z + wrapper.passthrough(Types.FLOAT); // Power + final int blocks = wrapper.passthrough(Types.VAR_INT); for (int i = 0; i < blocks; i++) { - wrapper.passthrough(Type.BYTE); // Relative X - wrapper.passthrough(Type.BYTE); // Relative Y - wrapper.passthrough(Type.BYTE); // Relative Z + wrapper.passthrough(Types.BYTE); // Relative X + wrapper.passthrough(Types.BYTE); // Relative Y + wrapper.passthrough(Types.BYTE); // Relative Z } - wrapper.passthrough(Type.FLOAT); // Knockback X - wrapper.passthrough(Type.FLOAT); // Knockback Y - wrapper.passthrough(Type.FLOAT); // Knockback Z - wrapper.passthrough(Type.VAR_INT); // Block interaction type + wrapper.passthrough(Types.FLOAT); // Knockback X + wrapper.passthrough(Types.FLOAT); // Knockback Y + wrapper.passthrough(Types.FLOAT); // Knockback Z + wrapper.passthrough(Types.VAR_INT); // Block interaction type protocol.getEntityRewriter().rewriteParticle(wrapper, Types1_20_5.PARTICLE, Types1_20_3.PARTICLE); // Small explosion particle protocol.getEntityRewriter().rewriteParticle(wrapper, Types1_20_5.PARTICLE, Types1_20_3.PARTICLE); // Large explosion particle - int soundId = wrapper.read(Type.VAR_INT) - 1; + int soundId = wrapper.read(Types.VAR_INT) - 1; if (soundId == -1) { // Already followed by the resource location return; } soundId = protocol.getMappingData().getSoundMappings().getNewId(soundId); - final String soundKey = Protocol1_20_5To1_20_3.MAPPINGS.soundName(soundId); - wrapper.write(Type.STRING, soundKey != null ? soundKey : "minecraft:entity.generic.explode"); - wrapper.write(Type.OPTIONAL_FLOAT, null); // Fixed range + final String soundKey = Protocol1_20_3To1_20_5.MAPPINGS.soundName(soundId); + wrapper.write(Types.STRING, soundKey != null ? soundKey : "minecraft:entity.generic.explode"); + wrapper.write(Types.OPTIONAL_FLOAT, null); // Fixed range }); - protocol.registerClientbound(ClientboundPackets1_20_5.TRADE_LIST, wrapper -> { - wrapper.passthrough(Type.VAR_INT); // Container id - final int size = wrapper.passthrough(Type.VAR_INT); + protocol.registerClientbound(ClientboundPackets1_20_5.MERCHANT_OFFERS, wrapper -> { + wrapper.passthrough(Types.VAR_INT); // Container id + final int size = wrapper.passthrough(Types.VAR_INT); for (int i = 0; i < size; i++) { final Item input = handleItemToClient(wrapper.user(), wrapper.read(Types1_20_5.ITEM_COST)); cleanInput(input); - wrapper.write(Type.ITEM1_20_2, input); + wrapper.write(Types.ITEM1_20_2, input); final Item result = handleItemToClient(wrapper.user(), wrapper.read(Types1_20_5.ITEM)); - wrapper.write(Type.ITEM1_20_2, result); + wrapper.write(Types.ITEM1_20_2, result); final Item secondInput = handleItemToClient(wrapper.user(), wrapper.read(Types1_20_5.OPTIONAL_ITEM_COST)); cleanInput(secondInput); - wrapper.write(Type.ITEM1_20_2, secondInput); + wrapper.write(Types.ITEM1_20_2, secondInput); - wrapper.passthrough(Type.BOOLEAN); // Out of stock - wrapper.passthrough(Type.INT); // Number of trade uses - wrapper.passthrough(Type.INT); // Maximum number of trade uses - wrapper.passthrough(Type.INT); // XP - wrapper.passthrough(Type.INT); // Special price - wrapper.passthrough(Type.FLOAT); // Price multiplier - wrapper.passthrough(Type.INT); // Demand + wrapper.passthrough(Types.BOOLEAN); // Out of stock + wrapper.passthrough(Types.INT); // Number of trade uses + wrapper.passthrough(Types.INT); // Maximum number of trade uses + wrapper.passthrough(Types.INT); // XP + wrapper.passthrough(Types.INT); // Special price + wrapper.passthrough(Types.FLOAT); // Price multiplier + wrapper.passthrough(Types.INT); // Demand } }); final RecipeRewriter1_20_3 recipeRewriter = new RecipeRewriter1_20_3<>(protocol); - protocol.registerClientbound(ClientboundPackets1_20_5.DECLARE_RECIPES, wrapper -> { - final int size = wrapper.passthrough(Type.VAR_INT); + protocol.registerClientbound(ClientboundPackets1_20_5.UPDATE_RECIPES, wrapper -> { + final int size = wrapper.passthrough(Types.VAR_INT); for (int i = 0; i < size; i++) { // Change order and write the type as an int - final String recipeIdentifier = wrapper.read(Type.STRING); - final int serializerTypeId = wrapper.read(Type.VAR_INT); + final String recipeIdentifier = wrapper.read(Types.STRING); + final int serializerTypeId = wrapper.read(Types.VAR_INT); final String serializerType = protocol.getMappingData().getRecipeSerializerMappings().mappedIdentifier(serializerTypeId); - wrapper.write(Type.STRING, serializerType); - wrapper.write(Type.STRING, recipeIdentifier); + wrapper.write(Types.STRING, serializerType); + wrapper.write(Types.STRING, recipeIdentifier); recipeRewriter.handleRecipeType(wrapper, Key.stripMinecraftNamespace(serializerType)); } }); diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_3to1_20_5/rewriter/EntityPacketRewriter1_20_5.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_5to1_20_3/rewriter/EntityPacketRewriter1_20_5.java similarity index 69% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_3to1_20_5/rewriter/EntityPacketRewriter1_20_5.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_5to1_20_3/rewriter/EntityPacketRewriter1_20_5.java index 5e26ab85..66688247 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_3to1_20_5/rewriter/EntityPacketRewriter1_20_5.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_5to1_20_3/rewriter/EntityPacketRewriter1_20_5.java @@ -15,60 +15,61 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_20_3to1_20_5.rewriter; +package com.viaversion.viabackwards.protocol.v1_20_5to1_20_3.rewriter; import com.google.common.base.Preconditions; import com.viaversion.viabackwards.api.rewriters.EntityRewriter; -import com.viaversion.viabackwards.protocol.protocol1_20_3to1_20_5.Protocol1_20_3To1_20_5; -import com.viaversion.viabackwards.protocol.protocol1_20_3to1_20_5.storage.RegistryDataStorage; -import com.viaversion.viabackwards.protocol.protocol1_20_3to1_20_5.storage.SecureChatStorage; +import com.viaversion.viabackwards.protocol.v1_20_5to1_20_3.Protocol1_20_5To1_20_3; +import com.viaversion.viabackwards.protocol.v1_20_5to1_20_3.storage.RegistryDataStorage; +import com.viaversion.viabackwards.protocol.v1_20_5to1_20_3.storage.SecureChatStorage; import com.viaversion.viaversion.api.data.entity.DimensionData; import com.viaversion.viaversion.api.minecraft.Particle; import com.viaversion.viaversion.api.minecraft.RegistryEntry; import com.viaversion.viaversion.api.minecraft.entities.EntityType; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_20_5; import com.viaversion.viaversion.api.minecraft.item.Item; -import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.api.minecraft.entitydata.EntityData; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.version.Types1_20_3; import com.viaversion.viaversion.api.type.types.version.Types1_20_5; import com.viaversion.viaversion.data.entity.DimensionDataImpl; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.FloatTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.ListTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.NumberTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.Tag; -import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.Protocol1_20_5To1_20_3; -import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.data.Attributes1_20_5; -import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundConfigurationPackets1_20_5; -import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundPacket1_20_5; -import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundPackets1_20_5; -import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.storage.BannerPatternStorage; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.FloatTag; +import com.viaversion.nbt.tag.ListTag; +import com.viaversion.nbt.tag.NumberTag; +import com.viaversion.nbt.tag.StringTag; +import com.viaversion.nbt.tag.Tag; +import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.Protocol1_20_3To1_20_5; +import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.data.Attributes1_20_5; +import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ClientboundConfigurationPackets1_20_5; +import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ClientboundPacket1_20_5; +import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ClientboundPackets1_20_5; +import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.storage.BannerPatternStorage; import com.viaversion.viaversion.util.Key; import com.viaversion.viaversion.util.KeyMappings; import com.viaversion.viaversion.util.MathUtil; import java.util.HashMap; import java.util.Map; -public final class EntityPacketRewriter1_20_5 extends EntityRewriter { +public final class EntityPacketRewriter1_20_5 extends EntityRewriter { - public EntityPacketRewriter1_20_5(final Protocol1_20_3To1_20_5 protocol) { - super(protocol, Types1_20_3.META_TYPES.optionalComponentType, Types1_20_3.META_TYPES.booleanType); + public EntityPacketRewriter1_20_5(final Protocol1_20_5To1_20_3 protocol) { + super(protocol, Types1_20_3.ENTITY_DATA_TYPES.optionalComponentType, Types1_20_3.ENTITY_DATA_TYPES.booleanType); } @Override public void registerPackets() { - registerTrackerWithData1_19(ClientboundPackets1_20_5.SPAWN_ENTITY, EntityTypes1_20_5.FALLING_BLOCK); - registerMetadataRewriter(ClientboundPackets1_20_5.ENTITY_METADATA, Types1_20_5.METADATA_LIST, Types1_20_3.METADATA_LIST); + registerTrackerWithData1_19(ClientboundPackets1_20_5.ADD_ENTITY, EntityTypes1_20_5.FALLING_BLOCK); + registerSetEntityData(ClientboundPackets1_20_5.SET_ENTITY_DATA, Types1_20_5.ENTITY_DATA_LIST, Types1_20_3.ENTITY_DATA_LIST); registerRemoveEntities(ClientboundPackets1_20_5.REMOVE_ENTITIES); - protocol.registerClientbound(ClientboundPackets1_20_5.ENTITY_EQUIPMENT, wrapper -> { - wrapper.passthrough(Type.VAR_INT); // Entity id + protocol.registerClientbound(ClientboundPackets1_20_5.SET_EQUIPMENT, wrapper -> { + wrapper.passthrough(Types.VAR_INT); // Entity id byte slot; do { - slot = wrapper.read(Type.BYTE); + slot = wrapper.read(Types.BYTE); if (slot == 6) { //TODO // Body to... something else? the actual inventory slot is still broken for llamas @@ -76,24 +77,24 @@ public final class EntityPacketRewriter1_20_5 extends EntityRewriter { wrapper.cancel(); - final String registryKey = Key.stripMinecraftNamespace(wrapper.read(Type.STRING)); + final String registryKey = Key.stripMinecraftNamespace(wrapper.read(Types.STRING)); if (registryKey.equals("wolf_variant")) { // There's only one wolf variant now return; } final RegistryDataStorage registryDataStorage = wrapper.user().get(RegistryDataStorage.class); - final RegistryEntry[] entries = wrapper.read(Type.REGISTRY_ENTRY_ARRAY); + final RegistryEntry[] entries = wrapper.read(Types.REGISTRY_ENTRY_ARRAY); if (registryKey.equals("banner_pattern")) { // Track banner pattern and material ids for conversion in items final String[] keys = new String[entries.length]; @@ -152,7 +153,7 @@ public final class EntityPacketRewriter1_20_5 extends EntityRewriter { - final int dimensionId = wrapper.read(Type.VAR_INT); + final int dimensionId = wrapper.read(Types.VAR_INT); final RegistryDataStorage storage = wrapper.user().get(RegistryDataStorage.class); - wrapper.write(Type.STRING, storage.dimensionKeys()[dimensionId]); + wrapper.write(Types.STRING, storage.dimensionKeys()[dimensionId]); }); - map(Type.STRING); // World - map(Type.LONG); // Seed - map(Type.BYTE); // Gamemode - map(Type.BYTE); // Previous gamemode - map(Type.BOOLEAN); // Debug - map(Type.BOOLEAN); // Flat - map(Type.OPTIONAL_GLOBAL_POSITION); // Last death location - map(Type.VAR_INT); // Portal cooldown + map(Types.STRING); // World + map(Types.LONG); // Seed + map(Types.BYTE); // Gamemode + map(Types.BYTE); // Previous gamemode + map(Types.BOOLEAN); // Debug + map(Types.BOOLEAN); // Flat + map(Types.OPTIONAL_GLOBAL_POSITION); // Last death location + map(Types.VAR_INT); // Portal cooldown handler(wrapper -> { // Moved to server data - final boolean enforcesSecureChat = wrapper.read(Type.BOOLEAN); + final boolean enforcesSecureChat = wrapper.read(Types.BOOLEAN); wrapper.user().get(SecureChatStorage.class).setEnforcesSecureChat(enforcesSecureChat); }); handler(worldDataTrackerHandlerByKey()); // Tracks world height and name for chunk data and entity (un)tracking @@ -208,34 +209,34 @@ public final class EntityPacketRewriter1_20_5 extends EntityRewriter { - final int dimensionId = wrapper.read(Type.VAR_INT); + final int dimensionId = wrapper.read(Types.VAR_INT); final RegistryDataStorage storage = wrapper.user().get(RegistryDataStorage.class); - wrapper.write(Type.STRING, storage.dimensionKeys()[dimensionId]); + wrapper.write(Types.STRING, storage.dimensionKeys()[dimensionId]); }); - map(Type.STRING); // World + map(Types.STRING); // World handler(worldDataTrackerHandlerByKey()); // Tracks world height and name for chunk data and entity (un)tracking } }); - protocol.registerClientbound(ClientboundPackets1_20_5.ENTITY_EFFECT, wrapper -> { - wrapper.passthrough(Type.VAR_INT); // Entity ID - wrapper.passthrough(Type.VAR_INT); // Effect ID + protocol.registerClientbound(ClientboundPackets1_20_5.UPDATE_MOB_EFFECT, wrapper -> { + wrapper.passthrough(Types.VAR_INT); // Entity ID + wrapper.passthrough(Types.VAR_INT); // Effect ID - final int amplifier = wrapper.read(Type.VAR_INT); - wrapper.write(Type.BYTE, (byte) MathUtil.clamp(amplifier, Byte.MIN_VALUE, Byte.MAX_VALUE)); + final int amplifier = wrapper.read(Types.VAR_INT); + wrapper.write(Types.BYTE, (byte) MathUtil.clamp(amplifier, Byte.MIN_VALUE, Byte.MAX_VALUE)); - wrapper.passthrough(Type.VAR_INT); // Duration - wrapper.passthrough(Type.BYTE); // Flags - wrapper.write(Type.OPTIONAL_COMPOUND_TAG, null); // Add empty factor data + wrapper.passthrough(Types.VAR_INT); // Duration + wrapper.passthrough(Types.BYTE); // Flags + wrapper.write(Types.OPTIONAL_COMPOUND_TAG, null); // Add empty factor data }); - protocol.registerClientbound(ClientboundPackets1_20_5.ENTITY_PROPERTIES, wrapper -> { - final int entityId = wrapper.passthrough(Type.VAR_INT); - final int size = wrapper.passthrough(Type.VAR_INT); + protocol.registerClientbound(ClientboundPackets1_20_5.UPDATE_ATTRIBUTES, wrapper -> { + final int entityId = wrapper.passthrough(Types.VAR_INT); + final int size = wrapper.passthrough(Types.VAR_INT); int newSize = size; for (int i = 0; i < size; i++) { // From a registry int ID to a string - final int attributeId = wrapper.read(Type.VAR_INT); + final int attributeId = wrapper.read(Types.VAR_INT); final String attribute = Attributes1_20_5.idToKey(attributeId); int mappedId = protocol.getMappingData().getAttributeMappings().getNewId(attributeId); if ("generic.jump_strength".equals(attribute)) { @@ -250,28 +251,28 @@ public final class EntityPacketRewriter1_20_5 extends EntityRewriter { - if (typeId == Types1_20_5.META_TYPES.particlesType.typeId()) { + filter().mapDataType(typeId -> { + if (typeId == Types1_20_5.ENTITY_DATA_TYPES.particlesType.typeId()) { // Handled with living entity - return Types1_20_5.META_TYPES.particlesType; + return Types1_20_5.ENTITY_DATA_TYPES.particlesType; } int id = typeId; - if (typeId >= Types1_20_5.META_TYPES.wolfVariantType.typeId()) { + if (typeId >= Types1_20_5.ENTITY_DATA_TYPES.wolfVariantType.typeId()) { id--; } - if (typeId >= Types1_20_5.META_TYPES.armadilloState.typeId()) { + if (typeId >= Types1_20_5.ENTITY_DATA_TYPES.armadilloState.typeId()) { id--; } - if (typeId >= Types1_20_5.META_TYPES.particlesType.typeId()) { + if (typeId >= Types1_20_5.ENTITY_DATA_TYPES.particlesType.typeId()) { id--; } - return Types1_20_3.META_TYPES.byId(id); + return Types1_20_3.ENTITY_DATA_TYPES.byId(id); }); registerMetaTypeHandler1_20_3( - Types1_20_3.META_TYPES.itemType, - Types1_20_3.META_TYPES.blockStateType, - Types1_20_3.META_TYPES.optionalBlockStateType, - Types1_20_3.META_TYPES.particleType, + Types1_20_3.ENTITY_DATA_TYPES.itemType, + Types1_20_3.ENTITY_DATA_TYPES.blockStateType, + Types1_20_3.ENTITY_DATA_TYPES.optionalBlockStateType, + Types1_20_3.ENTITY_DATA_TYPES.particleType, null, - Types1_20_3.META_TYPES.componentType, - Types1_20_3.META_TYPES.optionalComponentType + Types1_20_3.ENTITY_DATA_TYPES.componentType, + Types1_20_3.ENTITY_DATA_TYPES.optionalComponentType ); - filter().type(EntityTypes1_20_5.LIVINGENTITY).index(10).handler((event, meta) -> { + filter().type(EntityTypes1_20_5.LIVING_ENTITY).index(10).handler((event, meta) -> { final Particle[] particles = meta.value(); int color = 0; for (final Particle particle : particles) { @@ -379,7 +380,7 @@ public final class EntityPacketRewriter1_20_5 extends EntityRewriterremoveArgument(0).getValue(); } } - meta.setTypeAndValue(Types1_20_3.META_TYPES.varIntType, removeAlpha(color)); + meta.setTypeAndValue(Types1_20_3.ENTITY_DATA_TYPES.varIntType, removeAlpha(color)); }); filter().type(EntityTypes1_20_5.AREA_EFFECT_CLOUD).addIndex(9); // Color @@ -388,11 +389,11 @@ public final class EntityPacketRewriter1_20_5 extends EntityRewriterremoveArgument(0).getValue(); - event.createExtraMeta(new Metadata(9, Types1_20_3.META_TYPES.varIntType, removeAlpha(color))); + event.createExtraData(new EntityData(9, Types1_20_3.ENTITY_DATA_TYPES.varIntType, removeAlpha(color))); } }); - filter().type(EntityTypes1_20_5.MINECART_ABSTRACT).index(11).handler((event, meta) -> { + filter().type(EntityTypes1_20_5.ABSTRACT_MINECART).index(11).handler((event, meta) -> { final int blockState = meta.value(); meta.setValue(protocol.getMappingData().getNewBlockStateId(blockState)); }); diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_3to1_20_5/storage/CookieStorage.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_5to1_20_3/storage/CookieStorage.java similarity index 93% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_3to1_20_5/storage/CookieStorage.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_5to1_20_3/storage/CookieStorage.java index be2fd0a5..153372b2 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_3to1_20_5/storage/CookieStorage.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_5to1_20_3/storage/CookieStorage.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_20_3to1_20_5.storage; +package com.viaversion.viabackwards.protocol.v1_20_5to1_20_3.storage; import com.viaversion.viaversion.api.connection.StorableObject; import java.util.HashMap; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_3to1_20_5/storage/RegistryDataStorage.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_5to1_20_3/storage/RegistryDataStorage.java similarity index 90% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_3to1_20_5/storage/RegistryDataStorage.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_5to1_20_3/storage/RegistryDataStorage.java index b438eac1..0ddbe402 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_3to1_20_5/storage/RegistryDataStorage.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_5to1_20_3/storage/RegistryDataStorage.java @@ -15,10 +15,10 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_20_3to1_20_5.storage; +package com.viaversion.viabackwards.protocol.v1_20_5to1_20_3.storage; import com.viaversion.viaversion.api.connection.StorableObject; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; +import com.viaversion.nbt.tag.CompoundTag; import org.checkerframework.checker.nullness.qual.Nullable; public final class RegistryDataStorage implements StorableObject { diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_3to1_20_5/storage/SecureChatStorage.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_5to1_20_3/storage/SecureChatStorage.java similarity index 93% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_3to1_20_5/storage/SecureChatStorage.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_5to1_20_3/storage/SecureChatStorage.java index cef08c77..38763f1c 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20_3to1_20_5/storage/SecureChatStorage.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20_5to1_20_3/storage/SecureChatStorage.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_20_3to1_20_5.storage; +package com.viaversion.viabackwards.protocol.v1_20_5to1_20_3.storage; import com.viaversion.viaversion.api.connection.StorableObject; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_4to1_20/Protocol1_19_4To1_20.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20to1_19_4/Protocol1_20To1_19_4.java similarity index 64% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_4to1_20/Protocol1_19_4To1_20.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_20to1_19_4/Protocol1_20To1_19_4.java index 15c286c2..03f760d3 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_4to1_20/Protocol1_19_4To1_20.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20to1_19_4/Protocol1_20To1_19_4.java @@ -15,35 +15,36 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_19_4to1_20; +package com.viaversion.viabackwards.protocol.v1_20to1_19_4; import com.viaversion.viabackwards.api.BackwardsProtocol; import com.viaversion.viabackwards.api.rewriters.SoundRewriter; import com.viaversion.viabackwards.api.rewriters.TranslatableRewriter; -import com.viaversion.viabackwards.protocol.protocol1_19_4to1_20.data.BackwardsMappings; -import com.viaversion.viabackwards.protocol.protocol1_19_4to1_20.packets.BlockItemPackets1_20; -import com.viaversion.viabackwards.protocol.protocol1_19_4to1_20.packets.EntityPackets1_20; +import com.viaversion.viabackwards.protocol.v1_20to1_19_4.data.BackwardsMappingData1_20; +import com.viaversion.viabackwards.protocol.v1_20to1_19_4.rewriter.BlockItemPacketRewriter1_20; +import com.viaversion.viabackwards.protocol.v1_20to1_19_4.rewriter.EntityPacketRewriter1_20; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.RegistryType; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_19_4; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.data.entity.EntityTrackerBase; -import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.ClientboundPackets1_19_4; -import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.ServerboundPackets1_19_4; +import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.packet.ClientboundPackets1_19_4; +import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.packet.ServerboundPackets1_19_4; import com.viaversion.viaversion.rewriter.ComponentRewriter; import com.viaversion.viaversion.rewriter.StatisticsRewriter; import com.viaversion.viaversion.rewriter.TagRewriter; import java.util.Arrays; -public final class Protocol1_19_4To1_20 extends BackwardsProtocol { +public final class Protocol1_20To1_19_4 extends BackwardsProtocol { - public static final BackwardsMappings MAPPINGS = new BackwardsMappings(); + public static final BackwardsMappingData1_20 MAPPINGS = new BackwardsMappingData1_20(); private final TranslatableRewriter translatableRewriter = new TranslatableRewriter<>(this, ComponentRewriter.ReadType.JSON); - private final EntityPackets1_20 entityRewriter = new EntityPackets1_20(this); - private final BlockItemPackets1_20 itemRewriter = new BlockItemPackets1_20(this); + private final EntityPacketRewriter1_20 entityRewriter = new EntityPacketRewriter1_20(this); + private final BlockItemPacketRewriter1_20 itemRewriter = new BlockItemPacketRewriter1_20(this); private final TagRewriter tagRewriter = new TagRewriter<>(this); - public Protocol1_19_4To1_20() { + public Protocol1_20To1_19_4() { super(ClientboundPackets1_19_4.class, ClientboundPackets1_19_4.class, ServerboundPackets1_19_4.class, ServerboundPackets1_19_4.class); } @@ -52,20 +53,20 @@ public final class Protocol1_19_4To1_20 extends BackwardsProtocol soundRewriter = new SoundRewriter<>(this); soundRewriter.registerStopSound(ClientboundPackets1_19_4.STOP_SOUND); - soundRewriter.register1_19_3Sound(ClientboundPackets1_19_4.SOUND); - soundRewriter.register1_19_3Sound(ClientboundPackets1_19_4.ENTITY_SOUND); + soundRewriter.registerSound1_19_3(ClientboundPackets1_19_4.SOUND); + soundRewriter.registerSound1_19_3(ClientboundPackets1_19_4.SOUND_ENTITY); - new StatisticsRewriter<>(this).register(ClientboundPackets1_19_4.STATISTICS); + new StatisticsRewriter<>(this).register(ClientboundPackets1_19_4.AWARD_STATS); //TODO open window - translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.ACTIONBAR); - translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.TITLE_TEXT); - translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.TITLE_SUBTITLE); - translatableRewriter.registerBossBar(ClientboundPackets1_19_4.BOSSBAR); + translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.SET_ACTION_BAR_TEXT); + translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.SET_TITLE_TEXT); + translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.SET_SUBTITLE_TEXT); + translatableRewriter.registerBossEvent(ClientboundPackets1_19_4.BOSS_EVENT); translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.DISCONNECT); translatableRewriter.registerTabList(ClientboundPackets1_19_4.TAB_LIST); translatableRewriter.registerComponentPacket(ClientboundPackets1_19_4.SYSTEM_CHAT); @@ -73,21 +74,21 @@ public final class Protocol1_19_4To1_20 extends BackwardsProtocol { - String[] enabledFeatures = wrapper.read(Type.STRING_ARRAY); + String[] enabledFeatures = wrapper.read(Types.STRING_ARRAY); final int length = enabledFeatures.length; enabledFeatures = Arrays.copyOf(enabledFeatures, length + 1); enabledFeatures[length] = "minecraft:update_1_20"; - wrapper.write(Type.STRING_ARRAY, enabledFeatures); + wrapper.write(Types.STRING_ARRAY, enabledFeatures); }); - registerClientbound(ClientboundPackets1_19_4.COMBAT_END, wrapper -> { - wrapper.passthrough(Type.VAR_INT); // Duration - wrapper.write(Type.INT, -1); // Killer ID - unused (who knows for how long?) + registerClientbound(ClientboundPackets1_19_4.PLAYER_COMBAT_END, wrapper -> { + wrapper.passthrough(Types.VAR_INT); // Duration + wrapper.write(Types.INT, -1); // Killer ID - unused (who knows for how long?) }); - registerClientbound(ClientboundPackets1_19_4.COMBAT_KILL, wrapper -> { - wrapper.passthrough(Type.VAR_INT); // Duration - wrapper.write(Type.INT, -1); // Killer ID - unused (who knows for how long?) - translatableRewriter.processText(wrapper.user(), wrapper.passthrough(Type.COMPONENT)); + registerClientbound(ClientboundPackets1_19_4.PLAYER_COMBAT_KILL, wrapper -> { + wrapper.passthrough(Types.VAR_INT); // Duration + wrapper.write(Types.INT, -1); // Killer ID - unused (who knows for how long?) + translatableRewriter.processText(wrapper.user(), wrapper.passthrough(Types.COMPONENT)); }); } @@ -97,17 +98,17 @@ public final class Protocol1_19_4To1_20 extends BackwardsProtocol. */ -package com.viaversion.viabackwards.protocol.protocol1_19_4to1_20.data; +package com.viaversion.viabackwards.protocol.v1_20to1_19_4.data; +import com.viaversion.viabackwards.api.data.BackwardsMappingData; import com.viaversion.viabackwards.api.data.BackwardsMappingDataLoader; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.protocols.protocol1_20to1_19_4.Protocol1_20To1_19_4; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.viaversion.protocols.v1_19_4to1_20.Protocol1_19_4To1_20; -public class BackwardsMappings extends com.viaversion.viabackwards.api.data.BackwardsMappings { +public class BackwardsMappingData1_20 extends BackwardsMappingData { private CompoundTag trimPatternRegistry; - public BackwardsMappings() { - super("1.20", "1.19.4", Protocol1_20To1_19_4.class); + public BackwardsMappingData1_20() { + super("1.20", "1.19.4", Protocol1_19_4To1_20.class); } @Override diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_4to1_20/packets/BlockItemPackets1_20.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20to1_19_4/rewriter/BlockItemPacketRewriter1_20.java similarity index 58% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_4to1_20/packets/BlockItemPackets1_20.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_20to1_19_4/rewriter/BlockItemPacketRewriter1_20.java index 23cfcbd5..d2936bb0 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_4to1_20/packets/BlockItemPackets1_20.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20to1_19_4/rewriter/BlockItemPacketRewriter1_20.java @@ -15,11 +15,11 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_19_4to1_20.packets; +package com.viaversion.viabackwards.protocol.v1_20to1_19_4.rewriter; import com.viaversion.viabackwards.api.rewriters.BackwardsItemRewriter; -import com.viaversion.viabackwards.protocol.protocol1_19_4to1_20.Protocol1_19_4To1_20; -import com.viaversion.viabackwards.protocol.protocol1_19_4to1_20.storage.BackSignEditStorage; +import com.viaversion.viabackwards.protocol.v1_20to1_19_4.Protocol1_20To1_19_4; +import com.viaversion.viabackwards.protocol.v1_20to1_19_4.storage.BackSignEditStorage; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.BlockChangeRecord; import com.viaversion.viaversion.api.minecraft.Position; @@ -27,14 +27,15 @@ import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntity; import com.viaversion.viaversion.api.minecraft.item.Item; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_18; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.ListTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.Tag; -import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.ClientboundPackets1_19_4; -import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.ServerboundPackets1_19_4; -import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.rewriter.RecipeRewriter1_19_4; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.ListTag; +import com.viaversion.nbt.tag.StringTag; +import com.viaversion.nbt.tag.Tag; +import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.packet.ClientboundPackets1_19_4; +import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.packet.ServerboundPackets1_19_4; +import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.rewriter.RecipeRewriter1_19_4; import com.viaversion.viaversion.rewriter.BlockRewriter; import com.viaversion.viaversion.util.Key; import java.util.Arrays; @@ -42,109 +43,109 @@ import java.util.HashSet; import java.util.Set; import org.checkerframework.checker.nullness.qual.Nullable; -public final class BlockItemPackets1_20 extends BackwardsItemRewriter { +public final class BlockItemPacketRewriter1_20 extends BackwardsItemRewriter { private static final Set NEW_TRIM_PATTERNS = new HashSet<>(Arrays.asList("host", "raiser", "shaper", "silence", "wayfinder")); - public BlockItemPackets1_20(final Protocol1_19_4To1_20 protocol) { - super(protocol, Type.ITEM1_13_2, Type.ITEM1_13_2_ARRAY); + public BlockItemPacketRewriter1_20(final Protocol1_20To1_19_4 protocol) { + super(protocol, Types.ITEM1_13_2, Types.ITEM1_13_2_ARRAY); } @Override public void registerPackets() { final BlockRewriter blockRewriter = BlockRewriter.for1_14(protocol); - blockRewriter.registerBlockAction(ClientboundPackets1_19_4.BLOCK_ACTION); - blockRewriter.registerBlockChange(ClientboundPackets1_19_4.BLOCK_CHANGE); - blockRewriter.registerEffect(ClientboundPackets1_19_4.EFFECT, 1010, 2001); + blockRewriter.registerBlockEvent(ClientboundPackets1_19_4.BLOCK_EVENT); + blockRewriter.registerBlockUpdate(ClientboundPackets1_19_4.BLOCK_UPDATE); + blockRewriter.registerLevelEvent(ClientboundPackets1_19_4.LEVEL_EVENT, 1010, 2001); blockRewriter.registerBlockEntityData(ClientboundPackets1_19_4.BLOCK_ENTITY_DATA, this::handleBlockEntity); - protocol.registerClientbound(ClientboundPackets1_19_4.CHUNK_DATA, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_19_4.LEVEL_CHUNK_WITH_LIGHT, new PacketHandlers() { @Override protected void register() { - handler(blockRewriter.chunkDataHandler1_19(ChunkType1_18::new, (user, blockEntity) -> handleBlockEntity(blockEntity))); - create(Type.BOOLEAN, true); // Trust edges + handler(blockRewriter.chunkHandler1_19(ChunkType1_18::new, (user, blockEntity) -> handleBlockEntity(blockEntity))); + create(Types.BOOLEAN, true); // Trust edges } }); - protocol.registerClientbound(ClientboundPackets1_19_4.UPDATE_LIGHT, wrapper -> { - wrapper.passthrough(Type.VAR_INT); // X - wrapper.passthrough(Type.VAR_INT); // Y - wrapper.write(Type.BOOLEAN, true); // Trust edges + protocol.registerClientbound(ClientboundPackets1_19_4.LIGHT_UPDATE, wrapper -> { + wrapper.passthrough(Types.VAR_INT); // X + wrapper.passthrough(Types.VAR_INT); // Y + wrapper.write(Types.BOOLEAN, true); // Trust edges }); - protocol.registerClientbound(ClientboundPackets1_19_4.MULTI_BLOCK_CHANGE, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_19_4.SECTION_BLOCKS_UPDATE, new PacketHandlers() { @Override public void register() { - map(Type.LONG); // Chunk position - create(Type.BOOLEAN, false); // Suppress light updates + map(Types.LONG); // Chunk position + create(Types.BOOLEAN, false); // Suppress light updates handler(wrapper -> { - for (final BlockChangeRecord record : wrapper.passthrough(Type.VAR_LONG_BLOCK_CHANGE_RECORD_ARRAY)) { + for (final BlockChangeRecord record : wrapper.passthrough(Types.VAR_LONG_BLOCK_CHANGE_ARRAY)) { record.setBlockId(protocol.getMappingData().getNewBlockStateId(record.getBlockId())); } }); } }); - registerOpenWindow(ClientboundPackets1_19_4.OPEN_WINDOW); - registerSetCooldown(ClientboundPackets1_19_4.COOLDOWN); - registerWindowItems1_17_1(ClientboundPackets1_19_4.WINDOW_ITEMS); - registerSetSlot1_17_1(ClientboundPackets1_19_4.SET_SLOT); - registerEntityEquipmentArray(ClientboundPackets1_19_4.ENTITY_EQUIPMENT); - registerClickWindow1_17_1(ServerboundPackets1_19_4.CLICK_WINDOW); - registerTradeList1_19(ClientboundPackets1_19_4.TRADE_LIST); - registerCreativeInvAction(ServerboundPackets1_19_4.CREATIVE_INVENTORY_ACTION); - registerWindowPropertyEnchantmentHandler(ClientboundPackets1_19_4.WINDOW_PROPERTY); - registerSpawnParticle1_19(ClientboundPackets1_19_4.SPAWN_PARTICLE); + registerOpenScreen(ClientboundPackets1_19_4.OPEN_SCREEN); + registerCooldown(ClientboundPackets1_19_4.COOLDOWN); + registerSetContent1_17_1(ClientboundPackets1_19_4.CONTAINER_SET_CONTENT); + registerSetSlot1_17_1(ClientboundPackets1_19_4.CONTAINER_SET_SLOT); + registerSetEquipment(ClientboundPackets1_19_4.SET_EQUIPMENT); + registerContainerClick1_17_1(ServerboundPackets1_19_4.CONTAINER_CLICK); + registerMerchantOffers1_19(ClientboundPackets1_19_4.MERCHANT_OFFERS); + registerSetCreativeModeSlot(ServerboundPackets1_19_4.SET_CREATIVE_MODE_SLOT); + registerContainerSetData(ClientboundPackets1_19_4.CONTAINER_SET_DATA); + registerLevelParticles1_19(ClientboundPackets1_19_4.LEVEL_PARTICLES); - protocol.registerClientbound(ClientboundPackets1_19_4.ADVANCEMENTS, wrapper -> { - wrapper.passthrough(Type.BOOLEAN); // Reset/clear - int size = wrapper.passthrough(Type.VAR_INT); // Mapping size + protocol.registerClientbound(ClientboundPackets1_19_4.UPDATE_ADVANCEMENTS, wrapper -> { + wrapper.passthrough(Types.BOOLEAN); // Reset/clear + int size = wrapper.passthrough(Types.VAR_INT); // Mapping size for (int i = 0; i < size; i++) { - wrapper.passthrough(Type.STRING); // Identifier - wrapper.passthrough(Type.OPTIONAL_STRING); // Parent + wrapper.passthrough(Types.STRING); // Identifier + wrapper.passthrough(Types.OPTIONAL_STRING); // Parent // Display data - if (wrapper.passthrough(Type.BOOLEAN)) { - wrapper.passthrough(Type.COMPONENT); // Title - wrapper.passthrough(Type.COMPONENT); // Description - handleItemToClient(wrapper.user(), wrapper.passthrough(Type.ITEM1_13_2)); // Icon - wrapper.passthrough(Type.VAR_INT); // Frame type - int flags = wrapper.passthrough(Type.INT); // Flags + if (wrapper.passthrough(Types.BOOLEAN)) { + wrapper.passthrough(Types.COMPONENT); // Title + wrapper.passthrough(Types.COMPONENT); // Description + handleItemToClient(wrapper.user(), wrapper.passthrough(Types.ITEM1_13_2)); // Icon + wrapper.passthrough(Types.VAR_INT); // Frame type + int flags = wrapper.passthrough(Types.INT); // Flags if ((flags & 1) != 0) { - wrapper.passthrough(Type.STRING); // Background texture + wrapper.passthrough(Types.STRING); // Background texture } - wrapper.passthrough(Type.FLOAT); // X - wrapper.passthrough(Type.FLOAT); // Y + wrapper.passthrough(Types.FLOAT); // X + wrapper.passthrough(Types.FLOAT); // Y } - wrapper.passthrough(Type.STRING_ARRAY); // Criteria + wrapper.passthrough(Types.STRING_ARRAY); // Criteria - int arrayLength = wrapper.passthrough(Type.VAR_INT); + int arrayLength = wrapper.passthrough(Types.VAR_INT); for (int array = 0; array < arrayLength; array++) { - wrapper.passthrough(Type.STRING_ARRAY); // String array + wrapper.passthrough(Types.STRING_ARRAY); // String array } - wrapper.read(Type.BOOLEAN); // Sends telemetry + wrapper.read(Types.BOOLEAN); // Sends telemetry } }); protocol.registerClientbound(ClientboundPackets1_19_4.OPEN_SIGN_EDITOR, wrapper -> { - final Position position = wrapper.passthrough(Type.POSITION1_14); - final boolean frontSide = wrapper.read(Type.BOOLEAN); + final Position position = wrapper.passthrough(Types.BLOCK_POSITION1_14); + final boolean frontSide = wrapper.read(Types.BOOLEAN); if (frontSide) { wrapper.user().remove(BackSignEditStorage.class); } else { wrapper.user().put(new BackSignEditStorage(position)); } }); - protocol.registerServerbound(ServerboundPackets1_19_4.UPDATE_SIGN, wrapper -> { - final Position position = wrapper.passthrough(Type.POSITION1_14); + protocol.registerServerbound(ServerboundPackets1_19_4.SIGN_UPDATE, wrapper -> { + final Position position = wrapper.passthrough(Types.BLOCK_POSITION1_14); final BackSignEditStorage backSignEditStorage = wrapper.user().remove(BackSignEditStorage.class); final boolean frontSide = backSignEditStorage == null || !backSignEditStorage.position().equals(position); - wrapper.write(Type.BOOLEAN, frontSide); + wrapper.write(Types.BOOLEAN, frontSide); }); - new RecipeRewriter1_19_4<>(protocol).register(ClientboundPackets1_19_4.DECLARE_RECIPES); + new RecipeRewriter1_19_4<>(protocol).register(ClientboundPackets1_19_4.UPDATE_RECIPES); } @Override diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_4to1_20/packets/EntityPackets1_20.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20to1_19_4/rewriter/EntityPacketRewriter1_20.java similarity index 59% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_4to1_20/packets/EntityPackets1_20.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_20to1_19_4/rewriter/EntityPacketRewriter1_20.java index d02a30ba..d23a5ccb 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_4to1_20/packets/EntityPackets1_20.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20to1_19_4/rewriter/EntityPacketRewriter1_20.java @@ -15,70 +15,71 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_19_4to1_20.packets; +package com.viaversion.viabackwards.protocol.v1_20to1_19_4.rewriter; import com.google.common.collect.Sets; import com.viaversion.viabackwards.api.rewriters.EntityRewriter; -import com.viaversion.viabackwards.protocol.protocol1_19_4to1_20.Protocol1_19_4To1_20; +import com.viaversion.viabackwards.protocol.v1_20to1_19_4.Protocol1_20To1_19_4; import com.viaversion.viaversion.api.minecraft.Quaternion; import com.viaversion.viaversion.api.minecraft.entities.EntityType; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_19_4; -import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.api.minecraft.entitydata.EntityData; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.version.Types1_19_4; import com.viaversion.viaversion.api.type.types.version.Types1_20; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.ListTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.Tag; -import com.viaversion.viaversion.protocols.protocol1_19_4to1_19_3.ClientboundPackets1_19_4; +import com.viaversion.viaversion.protocols.v1_19_3to1_19_4.packet.ClientboundPackets1_19_4; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.ListTag; +import com.viaversion.nbt.tag.StringTag; +import com.viaversion.nbt.tag.Tag; import com.viaversion.viaversion.util.Key; import java.util.Set; -public final class EntityPackets1_20 extends EntityRewriter { +public final class EntityPacketRewriter1_20 extends EntityRewriter { private final Set newTrimPatterns = Sets.newHashSet("host_armor_trim_smithing_template", "raiser_armor_trim_smithing_template", "silence_armor_trim_smithing_template", "shaper_armor_trim_smithing_template", "wayfinder_armor_trim_smithing_template"); private static final Quaternion Y_FLIPPED_ROTATION = new Quaternion(0, 1, 0, 0); - public EntityPackets1_20(final Protocol1_19_4To1_20 protocol) { - super(protocol, Types1_19_4.META_TYPES.optionalComponentType, Types1_19_4.META_TYPES.booleanType); + public EntityPacketRewriter1_20(final Protocol1_20To1_19_4 protocol) { + super(protocol, Types1_19_4.ENTITY_DATA_TYPES.optionalComponentType, Types1_19_4.ENTITY_DATA_TYPES.booleanType); } @Override public void registerPackets() { - registerTrackerWithData1_19(ClientboundPackets1_19_4.SPAWN_ENTITY, EntityTypes1_19_4.FALLING_BLOCK); - registerMetadataRewriter(ClientboundPackets1_19_4.ENTITY_METADATA, Types1_20.METADATA_LIST, Types1_19_4.METADATA_LIST); + registerTrackerWithData1_19(ClientboundPackets1_19_4.ADD_ENTITY, EntityTypes1_19_4.FALLING_BLOCK); + registerSetEntityData(ClientboundPackets1_19_4.SET_ENTITY_DATA, Types1_20.ENTITY_DATA_LIST, Types1_19_4.ENTITY_DATA_LIST); registerRemoveEntities(ClientboundPackets1_19_4.REMOVE_ENTITIES); - protocol.registerClientbound(ClientboundPackets1_19_4.JOIN_GAME, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_19_4.LOGIN, new PacketHandlers() { @Override public void register() { - map(Type.INT); // Entity id - map(Type.BOOLEAN); // Hardcore - map(Type.BYTE); // Gamemode - map(Type.BYTE); // Previous Gamemode - map(Type.STRING_ARRAY); // World List - map(Type.NAMED_COMPOUND_TAG); // Dimension registry - map(Type.STRING); // Dimension key - map(Type.STRING); // World - map(Type.LONG); // Seed - map(Type.VAR_INT); // Max players - map(Type.VAR_INT); // Chunk radius - map(Type.VAR_INT); // Simulation distance - map(Type.BOOLEAN); // Reduced debug info - map(Type.BOOLEAN); // Show death screen - map(Type.BOOLEAN); // Debug - map(Type.BOOLEAN); // Flat - map(Type.OPTIONAL_GLOBAL_POSITION); // Last death location - read(Type.VAR_INT); // Portal cooldown + map(Types.INT); // Entity id + map(Types.BOOLEAN); // Hardcore + map(Types.BYTE); // Gamemode + map(Types.BYTE); // Previous Gamemode + map(Types.STRING_ARRAY); // World List + map(Types.NAMED_COMPOUND_TAG); // Dimension registry + map(Types.STRING); // Dimension key + map(Types.STRING); // World + map(Types.LONG); // Seed + map(Types.VAR_INT); // Max players + map(Types.VAR_INT); // Chunk radius + map(Types.VAR_INT); // Simulation distance + map(Types.BOOLEAN); // Reduced debug info + map(Types.BOOLEAN); // Show death screen + map(Types.BOOLEAN); // Debug + map(Types.BOOLEAN); // Flat + map(Types.OPTIONAL_GLOBAL_POSITION); // Last death location + read(Types.VAR_INT); // Portal cooldown handler(dimensionDataHandler()); // Caches dimensions to access data like height later handler(biomeSizeTracker()); // Tracks the amount of biomes sent for chunk data handler(worldDataTrackerHandlerByKey()); // Tracks world height and name for chunk data and entity (un)tracking handler(wrapper -> { - final CompoundTag registry = wrapper.get(Type.NAMED_COMPOUND_TAG, 0); + final CompoundTag registry = wrapper.get(Types.NAMED_COMPOUND_TAG, 0); final ListTag values; // A 1.20 server can't send this element, and the 1.20 client still works, if the element is missing @@ -87,7 +88,7 @@ public final class EntityPackets1_20 extends EntityRewriter meta.setMetaType(Types1_19_4.META_TYPES.byId(meta.metaType().typeId()))); - registerMetaTypeHandler(Types1_19_4.META_TYPES.itemType, Types1_19_4.META_TYPES.blockStateType, Types1_19_4.META_TYPES.optionalBlockStateType, - Types1_19_4.META_TYPES.particleType, Types1_19_4.META_TYPES.componentType, Types1_19_4.META_TYPES.optionalComponentType); + filter().handler((event, meta) -> meta.setDataType(Types1_19_4.ENTITY_DATA_TYPES.byId(meta.dataType().typeId()))); + registerMetaTypeHandler(Types1_19_4.ENTITY_DATA_TYPES.itemType, Types1_19_4.ENTITY_DATA_TYPES.blockStateType, Types1_19_4.ENTITY_DATA_TYPES.optionalBlockStateType, + Types1_19_4.ENTITY_DATA_TYPES.particleType, Types1_19_4.ENTITY_DATA_TYPES.componentType, Types1_19_4.ENTITY_DATA_TYPES.optionalComponentType); - filter().type(EntityTypes1_19_4.MINECART_ABSTRACT).index(11).handler((event, meta) -> { + filter().type(EntityTypes1_19_4.ABSTRACT_MINECART).index(11).handler((event, meta) -> { final int blockState = meta.value(); meta.setValue(protocol.getMappingData().getNewBlockStateId(blockState)); }); // Rotate item display by 180 degrees around the Y axis filter().type(EntityTypes1_19_4.ITEM_DISPLAY).handler((event, meta) -> { - if (event.trackedEntity().hasSentMetadata() || event.hasExtraMeta()) { + if (event.trackedEntity().hasSentEntityData() || event.hasExtraData()) { return; } - if (event.metaAtIndex(12) == null) { - event.createExtraMeta(new Metadata(12, Types1_19_4.META_TYPES.quaternionType, Y_FLIPPED_ROTATION)); + if (event.dataAtIndex(12) == null) { + event.createExtraData(new EntityData(12, Types1_19_4.ENTITY_DATA_TYPES.quaternionType, Y_FLIPPED_ROTATION)); } }); filter().type(EntityTypes1_19_4.ITEM_DISPLAY).index(12).handler((event, meta) -> { diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_4to1_20/storage/BackSignEditStorage.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20to1_19_4/storage/BackSignEditStorage.java similarity index 93% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_4to1_20/storage/BackSignEditStorage.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_20to1_19_4/storage/BackSignEditStorage.java index 614541e3..3aaacae7 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_19_4to1_20/storage/BackSignEditStorage.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_20to1_19_4/storage/BackSignEditStorage.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_19_4to1_20.storage; +package com.viaversion.viabackwards.protocol.v1_20to1_19_4.storage; import com.viaversion.viaversion.api.connection.StorableObject; import com.viaversion.viaversion.api.minecraft.Position; diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_9to1_9_1/Protocol1_9To1_9_1.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_9_1to1_9/Protocol1_9_1To1_9.java similarity index 64% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_9to1_9_1/Protocol1_9To1_9_1.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_9_1to1_9/Protocol1_9_1To1_9.java index 5b05d6d4..ad577523 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_9to1_9_1/Protocol1_9To1_9_1.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_9_1to1_9/Protocol1_9_1To1_9.java @@ -15,48 +15,49 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_9to1_9_1; +package com.viaversion.viabackwards.protocol.v1_9_1to1_9; import com.viaversion.viaversion.api.protocol.AbstractProtocol; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.protocols.protocol1_9to1_8.ClientboundPackets1_9; -import com.viaversion.viaversion.protocols.protocol1_9to1_8.ServerboundPackets1_9; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.protocols.v1_8to1_9.packet.ClientboundPackets1_9; +import com.viaversion.viaversion.protocols.v1_8to1_9.packet.ServerboundPackets1_9; -public class Protocol1_9To1_9_1 extends AbstractProtocol { +public class Protocol1_9_1To1_9 extends AbstractProtocol { - public Protocol1_9To1_9_1() { + public Protocol1_9_1To1_9() { super(ClientboundPackets1_9.class, ClientboundPackets1_9.class, ServerboundPackets1_9.class, ServerboundPackets1_9.class); } @Override protected void registerPackets() { - registerClientbound(ClientboundPackets1_9.JOIN_GAME, new PacketHandlers() { + registerClientbound(ClientboundPackets1_9.LOGIN, new PacketHandlers() { @Override public void register() { - map(Type.INT); // 0 - Player ID - map(Type.UNSIGNED_BYTE); // 1 - Player Gamemode + map(Types.INT); // 0 - Player ID + map(Types.UNSIGNED_BYTE); // 1 - Player Gamemode // 1.9.1 PRE 2 Changed this - map(Type.INT, Type.BYTE); // 2 - Player Dimension - map(Type.UNSIGNED_BYTE); // 3 - World Difficulty - map(Type.UNSIGNED_BYTE); // 4 - Max Players (Tab) - map(Type.STRING); // 5 - Level Type - map(Type.BOOLEAN); // 6 - Reduced Debug info + map(Types.INT, Types.BYTE); // 2 - Player Dimension + map(Types.UNSIGNED_BYTE); // 3 - World Difficulty + map(Types.UNSIGNED_BYTE); // 4 - Max Players (Tab) + map(Types.STRING); // 5 - Level Type + map(Types.BOOLEAN); // 6 - Reduced Debug info } }); registerClientbound(ClientboundPackets1_9.SOUND, new PacketHandlers() { @Override public void register() { - map(Type.VAR_INT); // 0 - Sound ID + map(Types.VAR_INT); // 0 - Sound ID handler(wrapper -> { - int sound = wrapper.get(Type.VAR_INT, 0); + int sound = wrapper.get(Types.VAR_INT, 0); if (sound == 415) // Stop the Elytra sound for 1.9 (It's introduced in 1.9.2) wrapper.cancel(); else if (sound >= 416) // Act like the Elytra sound never existed - wrapper.set(Type.VAR_INT, 0, sound - 1); + wrapper.set(Types.VAR_INT, 0, sound - 1); }); } }); diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_9_1_2to1_9_3_4/Protocol1_9_1_2To1_9_3_4.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_9_3to1_9_1/Protocol1_9_3To1_9_1.java similarity index 67% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_9_1_2to1_9_3_4/Protocol1_9_1_2To1_9_3_4.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_9_3to1_9_1/Protocol1_9_3To1_9_1.java index 44d994cf..d1888984 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_9_1_2to1_9_3_4/Protocol1_9_1_2To1_9_3_4.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_9_3to1_9_1/Protocol1_9_3To1_9_1.java @@ -15,9 +15,9 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_9_1_2to1_9_3_4; +package com.viaversion.viabackwards.protocol.v1_9_3to1_9_1; -import com.viaversion.viabackwards.protocol.protocol1_9_1_2to1_9_3_4.chunks.BlockEntity; +import com.viaversion.viabackwards.protocol.v1_9_3to1_9_1.chunks.BlockEntity; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.ClientWorld; import com.viaversion.viaversion.api.minecraft.Position; @@ -25,18 +25,19 @@ import com.viaversion.viaversion.api.minecraft.chunks.Chunk; import com.viaversion.viaversion.api.protocol.AbstractProtocol; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_9_1; import com.viaversion.viaversion.api.type.types.chunk.ChunkType1_9_3; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag; -import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ClientboundPackets1_9_3; -import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ServerboundPackets1_9_3; -import com.viaversion.viaversion.protocols.protocol1_9to1_8.ClientboundPackets1_9; -import com.viaversion.viaversion.protocols.protocol1_9to1_8.ServerboundPackets1_9; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.StringTag; +import com.viaversion.viaversion.protocols.v1_8to1_9.packet.ClientboundPackets1_9; +import com.viaversion.viaversion.protocols.v1_8to1_9.packet.ServerboundPackets1_9; +import com.viaversion.viaversion.protocols.v1_9_1to1_9_3.packet.ClientboundPackets1_9_3; +import com.viaversion.viaversion.protocols.v1_9_1to1_9_3.packet.ServerboundPackets1_9_3; -public class Protocol1_9_1_2To1_9_3_4 extends AbstractProtocol { +public class Protocol1_9_3To1_9_1 extends AbstractProtocol { - public Protocol1_9_1_2To1_9_3_4() { + public Protocol1_9_3To1_9_1() { super(ClientboundPackets1_9_3.class, ClientboundPackets1_9.class, ServerboundPackets1_9_3.class, ServerboundPackets1_9.class); } @@ -45,30 +46,30 @@ public class Protocol1_9_1_2To1_9_3_4 extends AbstractProtocol { - if (wrapper.get(Type.UNSIGNED_BYTE, 0) == 9) { - Position position = wrapper.get(Type.POSITION1_8, 0); - CompoundTag tag = wrapper.get(Type.NAMED_COMPOUND_TAG, 0); + if (wrapper.get(Types.UNSIGNED_BYTE, 0) == 9) { + Position position = wrapper.get(Types.BLOCK_POSITION1_8, 0); + CompoundTag tag = wrapper.get(Types.NAMED_COMPOUND_TAG, 0); wrapper.clearPacket(); //Clear the packet wrapper.setPacketType(ClientboundPackets1_9.UPDATE_SIGN); - wrapper.write(Type.POSITION1_8, position); // Position + wrapper.write(Types.BLOCK_POSITION1_8, position); // Position for (int i = 1; i < 5; i++) { // Should technically be written as COMPONENT, but left as String for simplification/to remove redundant wrapping for VR StringTag textTag = tag.getStringTag("Text" + i); String line = textTag != null ? textTag.getValue() : ""; - wrapper.write(Type.STRING, line); // Sign line + wrapper.write(Types.STRING, line); // Sign line } } }); } }); - registerClientbound(ClientboundPackets1_9_3.CHUNK_DATA, wrapper -> { + registerClientbound(ClientboundPackets1_9_3.LEVEL_CHUNK, wrapper -> { ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); ChunkType1_9_3 newType = ChunkType1_9_3.forEnvironment(clientWorld.getEnvironment()); @@ -79,17 +80,17 @@ public class Protocol1_9_1_2To1_9_3_4 extends AbstractProtocol { ClientWorld clientChunks = wrapper.user().get(ClientWorld.class); - int dimensionId = wrapper.get(Type.INT, 1); + int dimensionId = wrapper.get(Types.INT, 1); clientChunks.setEnvironment(dimensionId); }); } @@ -98,12 +99,12 @@ public class Protocol1_9_1_2To1_9_3_4 extends AbstractProtocol { ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); - int dimensionId = wrapper.get(Type.INT, 0); + int dimensionId = wrapper.get(Types.INT, 0); clientWorld.setEnvironment(dimensionId); }); } diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_9_1_2to1_9_3_4/chunks/BlockEntity.java b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_9_3to1_9_1/chunks/BlockEntity.java similarity index 80% rename from common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_9_1_2to1_9_3_4/chunks/BlockEntity.java rename to common/src/main/java/com/viaversion/viabackwards/protocol/v1_9_3to1_9_1/chunks/BlockEntity.java index 3f1229e6..e279e84b 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_9_1_2to1_9_3_4/chunks/BlockEntity.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/v1_9_3to1_9_1/chunks/BlockEntity.java @@ -15,16 +15,16 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viabackwards.protocol.protocol1_9_1_2to1_9_3_4.chunks; - -import com.viaversion.viabackwards.protocol.protocol1_9_1_2to1_9_3_4.Protocol1_9_1_2To1_9_3_4; +package com.viaversion.viabackwards.protocol.v1_9_3to1_9_1.chunks; +import com.viaversion.viabackwards.protocol.v1_9_3to1_9_1.Protocol1_9_3To1_9_1; import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.Position; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.type.Type; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; -import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag; -import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ClientboundPackets1_9_3; +import com.viaversion.viaversion.api.type.Types; +import com.viaversion.viaversion.protocols.v1_9_1to1_9_3.packet.ClientboundPackets1_9_3; +import com.viaversion.nbt.tag.CompoundTag; +import com.viaversion.nbt.tag.StringTag; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -73,9 +73,9 @@ public class BlockEntity { private static void updateBlockEntity(Position pos, short id, CompoundTag tag, UserConnection connection) { PacketWrapper wrapper = PacketWrapper.create(ClientboundPackets1_9_3.BLOCK_ENTITY_DATA, null, connection); - wrapper.write(Type.POSITION1_8, pos); - wrapper.write(Type.UNSIGNED_BYTE, id); - wrapper.write(Type.NAMED_COMPOUND_TAG, tag); - wrapper.scheduleSend(Protocol1_9_1_2To1_9_3_4.class, false); + wrapper.write(Types.BLOCK_POSITION1_8, pos); + wrapper.write(Types.UNSIGNED_BYTE, id); + wrapper.write(Types.NAMED_COMPOUND_TAG, tag); + wrapper.scheduleSend(Protocol1_9_3To1_9_1.class, false); } } \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 60990dc1..08cd9c00 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -10,7 +10,6 @@ dependencyResolutionManagement { maven("https://oss.sonatype.org/content/repositories/snapshots/") maven("https://repo.spongepowered.org/maven") mavenCentral() - mavenLocal() } repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) } diff --git a/template/src/main/java/com/viaversion/viabackwards/template/protocol/Protocol1_98To1_99.java b/template/src/main/java/com/viaversion/viabackwards/template/protocol/Protocol1_98To1_99.java index b8d36bd3..a672da59 100644 --- a/template/src/main/java/com/viaversion/viabackwards/template/protocol/Protocol1_98To1_99.java +++ b/template/src/main/java/com/viaversion/viabackwards/template/protocol/Protocol1_98To1_99.java @@ -18,7 +18,7 @@ package com.viaversion.viabackwards.template.protocol; import com.viaversion.viabackwards.api.BackwardsProtocol; -import com.viaversion.viabackwards.api.data.BackwardsMappings; +import com.viaversion.viabackwards.api.data.BackwardsMappingData; import com.viaversion.viabackwards.api.rewriters.SoundRewriter; import com.viaversion.viabackwards.api.rewriters.TranslatableRewriter; import com.viaversion.viabackwards.template.protocol.rewriter.BlockItemPacketRewriter1_99; @@ -26,11 +26,11 @@ import com.viaversion.viabackwards.template.protocol.rewriter.EntityPacketRewrit import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_20_5; import com.viaversion.viaversion.data.entity.EntityTrackerBase; -import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.Protocol1_20_5To1_20_3; -import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundConfigurationPackets1_20_5; -import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundPacket1_20_5; -import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundPackets1_20_5; -import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ServerboundPacket1_20_5; +import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.Protocol1_20_3To1_20_5; +import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ClientboundConfigurationPackets1_20_5; +import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ClientboundPacket1_20_5; +import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ClientboundPackets1_20_5; +import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ServerboundPacket1_20_5; import com.viaversion.viaversion.rewriter.ComponentRewriter.ReadType; import com.viaversion.viaversion.rewriter.StatisticsRewriter; import com.viaversion.viaversion.rewriter.TagRewriter; @@ -47,7 +47,7 @@ import com.viaversion.viaversion.rewriter.TagRewriter; public final class Protocol1_98To1_99 extends BackwardsProtocol { // ViaBackwards uses its own mappings and also needs a translatablerewriter for translation mappings - public static final BackwardsMappings MAPPINGS = new BackwardsMappings("1.99", "1.98", Protocol1_20_5To1_20_3.class); + public static final BackwardsMappingData MAPPINGS = new BackwardsMappingData("1.99", "1.98", Protocol1_20_3To1_20_5.class); private final EntityPacketRewriter1_99 entityRewriter = new EntityPacketRewriter1_99(this); private final BlockItemPacketRewriter1_99 itemRewriter = new BlockItemPacketRewriter1_99(this); private final TranslatableRewriter translatableRewriter = new TranslatableRewriter<>(this, ReadType.NBT); @@ -61,26 +61,26 @@ public final class Protocol1_98To1_99 extends BackwardsProtocol soundRewriter = new SoundRewriter<>(this); - soundRewriter.register1_19_3Sound(ClientboundPackets1_20_5.SOUND); - soundRewriter.register1_19_3Sound(ClientboundPackets1_20_5.ENTITY_SOUND); + soundRewriter.registerSound1_19_3(ClientboundPackets1_20_5.SOUND); + soundRewriter.registerSound1_19_3(ClientboundPackets1_20_5.SOUND_ENTITY); soundRewriter.registerStopSound(ClientboundPackets1_20_5.STOP_SOUND); - new StatisticsRewriter<>(this).register(ClientboundPackets1_20_5.STATISTICS); + new StatisticsRewriter<>(this).register(ClientboundPackets1_20_5.AWARD_STATS); //new AttributeRewriter<>(this).register1_20_5(ClientboundPackets1_20_5.ENTITY_PROPERTIES); // Registers translatable mappings (missing a whole bunch still) //translatableRewriter.registerOpenWindow(ClientboundPackets1_20_5.OPEN_WINDOW); // Handled by registerOpenWindow in item rewriters - translatableRewriter.registerComponentPacket(ClientboundPackets1_20_5.ACTIONBAR); - translatableRewriter.registerComponentPacket(ClientboundPackets1_20_5.TITLE_TEXT); - translatableRewriter.registerComponentPacket(ClientboundPackets1_20_5.TITLE_SUBTITLE); - translatableRewriter.registerBossBar(ClientboundPackets1_20_5.BOSSBAR); + translatableRewriter.registerComponentPacket(ClientboundPackets1_20_5.SET_ACTION_BAR_TEXT); + translatableRewriter.registerComponentPacket(ClientboundPackets1_20_5.SET_TITLE_TEXT); + translatableRewriter.registerComponentPacket(ClientboundPackets1_20_5.SET_SUBTITLE_TEXT); + translatableRewriter.registerBossEvent(ClientboundPackets1_20_5.BOSS_EVENT); translatableRewriter.registerComponentPacket(ClientboundPackets1_20_5.DISCONNECT); translatableRewriter.registerTabList(ClientboundPackets1_20_5.TAB_LIST); - translatableRewriter.registerCombatKill1_20(ClientboundPackets1_20_5.COMBAT_KILL); + translatableRewriter.registerPlayerCombatKill1_20(ClientboundPackets1_20_5.PLAYER_COMBAT_KILL); translatableRewriter.registerComponentPacket(ClientboundPackets1_20_5.SYSTEM_CHAT); translatableRewriter.registerComponentPacket(ClientboundPackets1_20_5.DISGUISED_CHAT); translatableRewriter.registerPing(); @@ -92,7 +92,7 @@ public final class Protocol1_98To1_99 extends BackwardsProtocol blockRewriter = BlockRewriter.for1_20_2(protocol); - blockRewriter.registerBlockAction(ClientboundPackets1_20_5.BLOCK_ACTION); - blockRewriter.registerBlockChange(ClientboundPackets1_20_5.BLOCK_CHANGE); - blockRewriter.registerVarLongMultiBlockChange1_20(ClientboundPackets1_20_5.MULTI_BLOCK_CHANGE); - blockRewriter.registerEffect(ClientboundPackets1_20_5.EFFECT, 1010, 2001); - blockRewriter.registerChunkData1_19(ClientboundPackets1_20_5.CHUNK_DATA, ChunkType1_20_2::new); + blockRewriter.registerBlockEvent(ClientboundPackets1_20_5.BLOCK_EVENT); + blockRewriter.registerBlockUpdate(ClientboundPackets1_20_5.BLOCK_UPDATE); + blockRewriter.registerSectionBlocksUpdate1_20(ClientboundPackets1_20_5.SECTION_BLOCKS_UPDATE); + blockRewriter.registerLevelEvent(ClientboundPackets1_20_5.LEVEL_EVENT, 1010, 2001); + blockRewriter.registerLevelChunk1_19(ClientboundPackets1_20_5.LEVEL_CHUNK_WITH_LIGHT, ChunkType1_20_2::new); blockRewriter.registerBlockEntityData(ClientboundPackets1_20_5.BLOCK_ENTITY_DATA); // registerOpenWindow(ClientboundPackets1_20_5.OPEN_WINDOW); - registerSetCooldown(ClientboundPackets1_20_5.COOLDOWN); - registerWindowItems1_17_1(ClientboundPackets1_20_5.WINDOW_ITEMS); - registerSetSlot1_17_1(ClientboundPackets1_20_5.SET_SLOT); - registerAdvancements1_20_3(ClientboundPackets1_20_5.ADVANCEMENTS); - registerEntityEquipmentArray(ClientboundPackets1_20_5.ENTITY_EQUIPMENT); - registerClickWindow1_17_1(ServerboundPackets1_20_5.CLICK_WINDOW); - registerTradeList1_20_5(ClientboundPackets1_20_5.TRADE_LIST, Types1_20_5.ITEM_COST, Types1_20_5.ITEM_COST, Types1_20_5.OPTIONAL_ITEM_COST, Types1_20_5.OPTIONAL_ITEM_COST); - registerCreativeInvAction(ServerboundPackets1_20_5.CREATIVE_INVENTORY_ACTION); - registerWindowPropertyEnchantmentHandler(ClientboundPackets1_20_5.WINDOW_PROPERTY); - registerSpawnParticle1_20_5(ClientboundPackets1_20_5.SPAWN_PARTICLE, Types1_20_5.PARTICLE, Types1_20_5.PARTICLE); - registerExplosion(ClientboundPackets1_20_5.EXPLOSION, Types1_20_5.PARTICLE, Types1_20_5.PARTICLE); + registerCooldown(ClientboundPackets1_20_5.COOLDOWN); + registerSetContent1_17_1(ClientboundPackets1_20_5.CONTAINER_SET_CONTENT); + registerSetSlot1_17_1(ClientboundPackets1_20_5.CONTAINER_SET_SLOT); + registerAdvancements1_20_3(ClientboundPackets1_20_5.UPDATE_ADVANCEMENTS); + registerSetEquipment(ClientboundPackets1_20_5.SET_EQUIPMENT); + registerContainerClick1_17_1(ServerboundPackets1_20_5.CONTAINER_CLICK); + registerMerchantOffers1_20_5(ClientboundPackets1_20_5.MERCHANT_OFFERS, Types1_20_5.ITEM_COST, Types1_20_5.ITEM_COST, Types1_20_5.OPTIONAL_ITEM_COST, Types1_20_5.OPTIONAL_ITEM_COST); + registerSetCreativeModeSlot(ServerboundPackets1_20_5.SET_CREATIVE_MODE_SLOT); + registerContainerSetData(ClientboundPackets1_20_5.CONTAINER_SET_DATA); + registerLevelParticles1_20_5(ClientboundPackets1_20_5.LEVEL_PARTICLES, Types1_20_5.PARTICLE, Types1_20_5.PARTICLE); + registerExplosion(ClientboundPackets1_20_5.EXPLODE, Types1_20_5.PARTICLE, Types1_20_5.PARTICLE); - new RecipeRewriter1_20_3<>(protocol).register1_20_5(ClientboundPackets1_20_5.DECLARE_RECIPES); + new RecipeRewriter1_20_3<>(protocol).register1_20_5(ClientboundPackets1_20_5.UPDATE_RECIPES); } } \ No newline at end of file diff --git a/template/src/main/java/com/viaversion/viabackwards/template/protocol/rewriter/EntityPacketRewriter1_99.java b/template/src/main/java/com/viaversion/viabackwards/template/protocol/rewriter/EntityPacketRewriter1_99.java index 10f1b53f..59bd02c7 100644 --- a/template/src/main/java/com/viaversion/viabackwards/template/protocol/rewriter/EntityPacketRewriter1_99.java +++ b/template/src/main/java/com/viaversion/viabackwards/template/protocol/rewriter/EntityPacketRewriter1_99.java @@ -24,10 +24,11 @@ import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_20_5; import com.viaversion.viaversion.api.protocol.packet.State; import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.api.type.types.version.Types1_20_5; -import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundConfigurationPackets1_20_5; -import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundPacket1_20_5; -import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.ClientboundPackets1_20_5; +import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ClientboundConfigurationPackets1_20_5; +import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ClientboundPacket1_20_5; +import com.viaversion.viaversion.protocols.v1_20_3to1_20_5.packet.ClientboundPackets1_20_5; // Replace if needed // Types1_OLD @@ -35,39 +36,39 @@ import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.packet.Clientb public final class EntityPacketRewriter1_99 extends EntityRewriter { public EntityPacketRewriter1_99(final Protocol1_98To1_99 protocol) { - super(protocol, Types1_20_5.META_TYPES.optionalComponentType, Types1_20_5.META_TYPES.booleanType); + super(protocol, Types1_20_5.ENTITY_DATA_TYPES.optionalComponentType, Types1_20_5.ENTITY_DATA_TYPES.booleanType); } @Override public void registerPackets() { - registerTrackerWithData1_19(ClientboundPackets1_20_5.SPAWN_ENTITY, EntityTypes1_20_5.FALLING_BLOCK); - registerMetadataRewriter(ClientboundPackets1_20_5.ENTITY_METADATA, /*Types1_OLD.METADATA_LIST, */Types1_20_5.METADATA_LIST); // Specify old and new metadata list if changed + registerTrackerWithData1_19(ClientboundPackets1_20_5.ADD_ENTITY, EntityTypes1_20_5.FALLING_BLOCK); + registerSetEntityData(ClientboundPackets1_20_5.SET_ENTITY_DATA, /*Types1_OLD.METADATA_LIST, */Types1_20_5.ENTITY_DATA_LIST); // Specify old and new metadata list if changed registerRemoveEntities(ClientboundPackets1_20_5.REMOVE_ENTITIES); // TODO Item and sound id changes in registries, probably others as well protocol.registerClientbound(State.CONFIGURATION, ClientboundConfigurationPackets1_20_5.REGISTRY_DATA, new PacketHandlers() { @Override protected void register() { - map(Type.STRING); // Registry - map(Type.REGISTRY_ENTRY_ARRAY); // Data + map(Types.STRING); // Registry + map(Types.REGISTRY_ENTRY_ARRAY); // Data handler(registryDataHandler1_20_5()); // Caches dimensions to access data like height later and tracks the amount of biomes sent for chunk data } }); - protocol.registerClientbound(ClientboundPackets1_20_5.JOIN_GAME, new PacketHandlers() { + protocol.registerClientbound(ClientboundPackets1_20_5.LOGIN, new PacketHandlers() { @Override public void register() { - map(Type.INT); // Entity id - map(Type.BOOLEAN); // Hardcore - map(Type.STRING_ARRAY); // World List - map(Type.VAR_INT); // Max players - map(Type.VAR_INT); // View distance - map(Type.VAR_INT); // Simulation distance - map(Type.BOOLEAN); // Reduced debug info - map(Type.BOOLEAN); // Show death screen - map(Type.BOOLEAN); // Limited crafting - map(Type.VAR_INT); // Dimension key - map(Type.STRING); // World + map(Types.INT); // Entity id + map(Types.BOOLEAN); // Hardcore + map(Types.STRING_ARRAY); // World List + map(Types.VAR_INT); // Max players + map(Types.VAR_INT); // View distance + map(Types.VAR_INT); // Simulation distance + map(Types.BOOLEAN); // Reduced debug info + map(Types.BOOLEAN); // Show death screen + map(Types.BOOLEAN); // Limited crafting + map(Types.VAR_INT); // Dimension key + map(Types.STRING); // World handler(worldDataTrackerHandlerByKey1_20_5(3)); // Tracks world height and name for chunk data and entity (un)tracking } }); @@ -75,8 +76,8 @@ public final class EntityPacketRewriter1_99 extends EntityRewriter { + filter().type(EntityTypes1_20_5.ABSTRACT_MINECART).index(11).handler((event, meta) -> { final int blockState = meta.value(); meta.setValue(protocol.getMappingData().getNewBlockStateId(blockState)); });