From e1f2f151c995b13d358278bc25975b543f549301 Mon Sep 17 00:00:00 2001 From: Nassim Jahnke Date: Sat, 16 Mar 2024 23:11:38 +0100 Subject: [PATCH] 24w11a --- .../api/rewriters/EntityRewriterBase.java | 19 +++-- .../api/rewriters/SoundRewriter.java | 4 +- .../Protocol1_20_3To1_20_5.java | 2 + .../BlockItemPacketRewriter1_20_5.java | 2 +- .../rewriter/EntityPacketRewriter1_20_5.java | 75 ++++++++++++++---- .../data/mappings-1.20.5to1.20.3.nbt | Bin 114168 -> 114990 bytes gradle.properties | 2 +- gradle/libs.versions.toml | 2 +- .../rewriter/EntityPacketRewriter1_99.java | 2 +- 9 files changed, 80 insertions(+), 28 deletions(-) diff --git a/common/src/main/java/com/viaversion/viabackwards/api/rewriters/EntityRewriterBase.java b/common/src/main/java/com/viaversion/viabackwards/api/rewriters/EntityRewriterBase.java index 24d38b97..6451e89a 100644 --- a/common/src/main/java/com/viaversion/viabackwards/api/rewriters/EntityRewriterBase.java +++ b/common/src/main/java/com/viaversion/viabackwards/api/rewriters/EntityRewriterBase.java @@ -27,6 +27,7 @@ import com.viaversion.viaversion.api.data.Int2IntMapMappings; import com.viaversion.viaversion.api.data.entity.StoredEntityData; import com.viaversion.viaversion.api.data.entity.TrackedEntity; import com.viaversion.viaversion.api.minecraft.ClientWorld; +import com.viaversion.viaversion.api.minecraft.Particle; import com.viaversion.viaversion.api.minecraft.entities.EntityType; import com.viaversion.viaversion.api.minecraft.metadata.MetaType; import com.viaversion.viaversion.api.minecraft.metadata.Metadata; @@ -210,12 +211,13 @@ public abstract class EntityRewriterBase { MetaType type = meta.metaType(); @@ -231,6 +233,11 @@ public abstract class EntityRewriterBase extends com.viaversi } if (mappedId != soundEventHolder.id()) { - soundEventHolder = new Holder<>(mappedId); + soundEventHolder = Holder.of(mappedId); } wrapper.write(Type.SOUND_EVENT, soundEventHolder); @@ -128,7 +128,7 @@ public class SoundRewriter extends com.viaversi final String mappedIdentifier = protocol.getMappingData().getMappedNamedSound(soundEvent.identifier()); if (mappedIdentifier != null) { if (!mappedIdentifier.isEmpty()) { - return new Holder<>(soundEvent.withIdentifier(mappedIdentifier)); + return Holder.of(soundEvent.withIdentifier(mappedIdentifier)); } wrapper.cancel(); } 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/protocol1_20_3to1_20_5/Protocol1_20_3To1_20_5.java index 7e1ab9f2..798d0127 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/protocol1_20_3to1_20_5/Protocol1_20_3To1_20_5.java @@ -74,6 +74,8 @@ public final class Protocol1_20_3To1_20_5 extends BackwardsProtocol tagRewriter = new TagRewriter<>(this); 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/protocol1_20_3to1_20_5/rewriter/BlockItemPacketRewriter1_20_5.java index c26ec1da..8dbc653b 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/protocol1_20_3to1_20_5/rewriter/BlockItemPacketRewriter1_20_5.java @@ -166,7 +166,7 @@ public final class BlockItemPacketRewriter1_20_5 extends BackwardsStructuredItem if (item == null) return null; // Convert to structured item first - final Item structuredItem = vvProtocol.getItemRewriter().toStructuredItem(item, false); + final Item structuredItem = vvProtocol.getItemRewriter().toStructuredItem(item); return super.handleItemToServer(structuredItem); } } \ No newline at end of file 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/protocol1_20_3to1_20_5/rewriter/EntityPacketRewriter1_20_5.java index 0ef40375..314e9dfd 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/protocol1_20_3to1_20_5/rewriter/EntityPacketRewriter1_20_5.java @@ -23,6 +23,7 @@ import com.viaversion.viabackwards.protocol.protocol1_20_3to1_20_5.Protocol1_20_ 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.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; @@ -34,7 +35,9 @@ 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.ListTag; -import com.viaversion.viaversion.protocols.protocol1_20_5to1_20_3.data.AttributeMappings; +import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag; +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; @@ -79,9 +82,14 @@ public final class EntityPacketRewriter1_20_5 extends EntityRewriter { final String registryKey = Key.stripMinecraftNamespace(wrapper.read(Type.STRING)); - final RegistryEntry[] entries = wrapper.read(Type.REGISTRY_ENTRY_ARRAY); + // TODO Track banner pattern/material ids + if (registryKey.equals("wolf_variant") || registryKey.equals("banner_pattern") || registryKey.equals("banner_material")) { + wrapper.cancel(); + return; + } // Track data + final RegistryEntry[] entries = wrapper.read(Type.REGISTRY_ENTRY_ARRAY); final RegistryDataStorage registryDataStorage = wrapper.user().get(RegistryDataStorage.class); if (registryKey.equals("worldgen/biome")) { tracker(wrapper.user()).setBiomesSent(entries.length); @@ -109,6 +117,15 @@ public final class EntityPacketRewriter1_20_5 extends EntityRewriter { - wrapper.passthrough(Type.VAR_INT); // Entity ID + final int entityId = wrapper.passthrough(Type.VAR_INT); final int size = wrapper.passthrough(Type.VAR_INT); int newSize = size; for (int i = 0; i < size; i++) { // From a registry int ID to a string - int id = protocol.getMappingData().getAttributeMappings().getNewId(wrapper.read(Type.VAR_INT)); - final String attribute = AttributeMappings.attribute(id); - if ("horse.jump_strength".equals(attribute)) { - // Jump strength only applies to horses in old versions - id = -1; + final int attributeId = wrapper.read(Type.VAR_INT); + final String attribute = Attributes1_20_5.idToKey(attributeId); + int mappedId = protocol.getMappingData().getAttributeMappings().getNewId(attributeId); + if ("generic.jump_strength".equals(attribute)) { + final EntityType type = tracker(wrapper.user()).entityType(entityId); + if (type == null || !type.isOrHasParent(EntityTypes1_20_5.HORSE)) { + // Jump strength only applies to horses in old versions + mappedId = -1; + } } - if (id == -1) { + if (mappedId == -1) { // Remove new attributes from the list newSize--; @@ -227,25 +249,38 @@ public final class EntityPacketRewriter1_20_5 extends EntityRewriter { + if (typeId == Types1_20_5.META_TYPES.particlesType.typeId()) { + return Types1_20_5.META_TYPES.particlesType; + } + int id = typeId; + if (typeId >= Types1_20_5.META_TYPES.wolfVariantType.typeId()) { + id--; + } if (typeId >= Types1_20_5.META_TYPES.armadilloState.typeId()) { id--; } - if (typeId >= Types1_20_5.META_TYPES.wolfVariantType.typeId()) { + if (typeId >= Types1_20_5.META_TYPES.particlesType.typeId()) { id--; } return Types1_20_3.META_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.META_TYPES.componentType, - Types1_20_3.META_TYPES.optionalComponentType + Types1_20_3.META_TYPES.itemType, + Types1_20_3.META_TYPES.blockStateType, + Types1_20_3.META_TYPES.optionalBlockStateType, + Types1_20_3.META_TYPES.particleType, + null, + Types1_20_3.META_TYPES.componentType, + Types1_20_3.META_TYPES.optionalComponentType ); + filter().type(EntityTypes1_20_5.LIVINGENTITY).index(10).handler((event, meta) -> { + final Particle[] particles = meta.value(); + meta.setTypeAndValue(Types1_20_3.META_TYPES.varIntType, 0); // TODO + }); + filter().type(EntityTypes1_20_5.MINECART_ABSTRACT).index(11).handler((event, meta) -> { final int blockState = meta.value(); meta.setValue(protocol.getMappingData().getNewBlockStateId(blockState)); @@ -256,6 +291,14 @@ public final class EntityPacketRewriter1_20_5 extends EntityRewriterfKZ_c;U93PD>o*taAOzZLQ!M%%(Mlygv6VCnaO$m&OK*l{l|{kyE`BD z6Omt9B0ipZNgmxPEtbgY;~qFtfd7EMenL)?qnmZ+OYa&zzwq#T^F+vt4d9Y20BA$5 zAfo{84x|$~gnUBQkT1wr08b2wBLm1FGKjB6KZ00@pEs#_7k?IBFd}x8(=7Hy= z)$eY`091CPvillx9a%@d@wEkVcxI-#W6vtq`ha{yN;6`sZ&$UuI6qS$>OQnDV~=z8 zuu$_pe^Venw7M+YVjp~8=gS2$Qf$Hvk>jk|3l70K_E3{Zs#@B15dLbBd?sPOvPAr( zkH1|ao$aS#e?SO|LYQ7P)Cqdl)C|)Lo`5Jucw>=t<%4~&yAm-f#2(L_d?(&>OKd%+b6Z|I$8(v4{vH_UQgGz1Nmyo*xOu?3tsDzx$WzoDvP%sjL?mz1|*Q6t+qS1t=SZPI< z=?K#@s$@CJ!ANf`|%w+5)qnC|T@m7(ndHiimw-jqykQok2NeWZAp0V+qnYFmKLb|r` z7ayz;ndH6DJgyqaNg-|TXDo^P5ynj>O#*n~V2x`+QdQgItMQ~2{JpoThEq=niCq1BkTZV|M6!sW10iu$#DH6~gYJ6B99fVN7B?1r-Vy51ltEPq`{&I}+8@g$VpISC diff --git a/gradle.properties b/gradle.properties index 1b8863ab..9af899ab 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -projectVersion=4.10.0-24w10a-SNAPSHOT +projectVersion=4.10.0-24w11a-SNAPSHOT # Smile emoji mcVersions=1.20.4, 1.20.3, 1.20.2, 1.20.1, 1.20, 1.19.4, 1.19.3, 1.19.2, 1.19.1, 1.19, 1.18.2, 1.18.1, 1.18, 1.17.1, 1.17, 1.16.5, 1.16.4, 1.16.3, 1.16.2, 1.16.1, 1.16, 1.15.2, 1.15.1, 1.15, 1.14.4, 1.14.3, 1.14.2, 1.14.1, 1.14, 1.13.2, 1.13.1, 1.13, 1.12.2, 1.12.1, 1.12, 1.11.2, 1.11.1, 1.11, 1.10.2, 1.10.1, 1.10 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 180ff3e6..0ea6442e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ metadata.format.version = "1.1" [versions] # ViaVersion -viaver = "4.10.0-24w10a-SNAPSHOT" +viaver = "4.10.0-24w11a-SNAPSHOT" # Common provided netty = "4.0.20.Final" 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 521da2d9..87211206 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 @@ -99,7 +99,7 @@ public final class EntityPacketRewriter1_99 extends EntityRewriter