From 7b0160d6c3a2a8febc0f87a16c019b831eb3dc97 Mon Sep 17 00:00:00 2001 From: Nassim Jahnke Date: Fri, 31 Mar 2023 16:41:06 +0200 Subject: [PATCH 1/3] Fix redstone blockconnections Fixes #3281 --- .../viaversion/data/blockConnections.nbt | Bin 55747 -> 60634 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/common/src/main/resources/assets/viaversion/data/blockConnections.nbt b/common/src/main/resources/assets/viaversion/data/blockConnections.nbt index 50cb500dab2397a76f3b78b34788e376cd6940db..de3adb767a836b968c60ae6c215a3146eff4e45d 100644 GIT binary patch delta 5279 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 delta 126 zcmcb0llkywW_~UP22KW+l*E!mAd97HBY%X{*Cl>S^u+0L_*w9RL6T From 8864b161f9b8c7748b2095d9768d67d389b96c54 Mon Sep 17 00:00:00 2001 From: Nassim Jahnke Date: Sun, 2 Apr 2023 09:40:35 +0200 Subject: [PATCH 2/3] Print plugin name in unsupported software matching --- .../api/platform/UnsupportedSoftware.java | 13 ++++++++++++- .../com/viaversion/viaversion/ViaManagerImpl.java | 5 +++-- .../viaversion/unsupported/UnsupportedPlugin.java | 7 ++++--- .../unsupported/UnsupportedServerSoftware.java | 9 +++++---- 4 files changed, 24 insertions(+), 10 deletions(-) diff --git a/api/src/main/java/com/viaversion/viaversion/api/platform/UnsupportedSoftware.java b/api/src/main/java/com/viaversion/viaversion/api/platform/UnsupportedSoftware.java index 69f5ba382..20ef96404 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/platform/UnsupportedSoftware.java +++ b/api/src/main/java/com/viaversion/viaversion/api/platform/UnsupportedSoftware.java @@ -22,6 +22,8 @@ */ package com.viaversion.viaversion.api.platform; +import org.checkerframework.checker.nullness.qual.Nullable; + public interface UnsupportedSoftware { /** @@ -38,10 +40,19 @@ public interface UnsupportedSoftware { */ String getReason(); + /** + * Returns the name of unsupported software if present. + * + * @return name of unsupported software if it is matched, else null + */ + @Nullable String match(); + /** * Returns whether the unsupported software is present. * * @return true if the unsupported software is found */ - boolean findMatch(); + default boolean findMatch() { + return match() != null; + } } diff --git a/common/src/main/java/com/viaversion/viaversion/ViaManagerImpl.java b/common/src/main/java/com/viaversion/viaversion/ViaManagerImpl.java index 72d97ebc3..ff0142339 100644 --- a/common/src/main/java/com/viaversion/viaversion/ViaManagerImpl.java +++ b/common/src/main/java/com/viaversion/viaversion/ViaManagerImpl.java @@ -237,7 +237,8 @@ public class ViaManagerImpl implements ViaManager { private void unsupportedSoftwareWarning() { boolean found = false; for (final UnsupportedSoftware software : platform.getUnsupportedSoftwareClasses()) { - if (!software.findMatch()) { + final String match = software.match(); + if (match == null) { continue; } @@ -249,7 +250,7 @@ public class ViaManagerImpl implements ViaManager { found = true; } - platform.getLogger().severe("We strongly advise against using " + software.getName() + ":"); + platform.getLogger().severe("We strongly advise against using " + match + ":"); platform.getLogger().severe(software.getReason()); platform.getLogger().severe(""); } diff --git a/common/src/main/java/com/viaversion/viaversion/unsupported/UnsupportedPlugin.java b/common/src/main/java/com/viaversion/viaversion/unsupported/UnsupportedPlugin.java index 95da11a3b..9e496e4dc 100644 --- a/common/src/main/java/com/viaversion/viaversion/unsupported/UnsupportedPlugin.java +++ b/common/src/main/java/com/viaversion/viaversion/unsupported/UnsupportedPlugin.java @@ -23,6 +23,7 @@ import com.viaversion.viaversion.api.platform.UnsupportedSoftware; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import org.checkerframework.checker.nullness.qual.Nullable; public final class UnsupportedPlugin implements UnsupportedSoftware { @@ -50,13 +51,13 @@ public final class UnsupportedPlugin implements UnsupportedSoftware { } @Override - public final boolean findMatch() { + public final @Nullable String match() { for (final String identifier : identifiers) { if (Via.getPlatform().hasPlugin(identifier)) { - return true; + return identifier; } } - return false; + return null; } public static final class Builder { diff --git a/common/src/main/java/com/viaversion/viaversion/unsupported/UnsupportedServerSoftware.java b/common/src/main/java/com/viaversion/viaversion/unsupported/UnsupportedServerSoftware.java index cebe298b0..3972c4f62 100644 --- a/common/src/main/java/com/viaversion/viaversion/unsupported/UnsupportedServerSoftware.java +++ b/common/src/main/java/com/viaversion/viaversion/unsupported/UnsupportedServerSoftware.java @@ -24,6 +24,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.List; +import org.checkerframework.checker.nullness.qual.Nullable; public final class UnsupportedServerSoftware implements UnsupportedSoftware { @@ -53,20 +54,20 @@ public final class UnsupportedServerSoftware implements UnsupportedSoftware { } @Override - public final boolean findMatch() { + public final @Nullable String match() { for (String className : classNames) { try { Class.forName(className); - return true; + return name; } catch (ClassNotFoundException ignored) { } } for (UnsupportedMethods method : methods) { if (method.findMatch()) { - return true; + return name; } } - return false; + return null; } public static final class Builder { From 1a46346789c8037a3d8fe6267e98edf5ffa5a910 Mon Sep 17 00:00:00 2001 From: Nassim Jahnke Date: Tue, 18 Apr 2023 13:34:20 +0200 Subject: [PATCH 3/3] Handle optional block state entity meta --- .../packets/EntityPackets.java | 2 +- .../packets/EntityPackets.java | 2 +- .../packets/EntityPackets.java | 2 +- .../packets/EntityPackets.java | 2 +- .../packets/EntityPackets.java | 2 +- .../viaversion/rewriter/EntityRewriter.java | 21 ++++++++++++------- 6 files changed, 19 insertions(+), 12 deletions(-) diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/packets/EntityPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/packets/EntityPackets.java index ef34a4a6e..7c155aa37 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/packets/EntityPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_17to1_16_4/packets/EntityPackets.java @@ -162,7 +162,7 @@ public final class EntityPackets extends EntityRewriter= 2 ? id + 1 : id)); // long added }); - registerMetaTypeHandler(Types1_19_3.META_TYPES.itemType, Types1_19_3.META_TYPES.blockStateType, Types1_19_3.META_TYPES.particleType); + registerMetaTypeHandler(Types1_19_3.META_TYPES.itemType, Types1_19_3.META_TYPES.blockStateType, null, Types1_19_3.META_TYPES.particleType); filter().index(6).handler((event, meta) -> { // Sitting pose added diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_4to1_19_3/packets/EntityPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_4to1_19_3/packets/EntityPackets.java index d6465d2d2..f8f8b2974 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_4to1_19_3/packets/EntityPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_4to1_19_3/packets/EntityPackets.java @@ -208,7 +208,7 @@ public final class EntityPackets extends EntityRewriter { final int blockState = meta.value(); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/packets/EntityPackets.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/packets/EntityPackets.java index f9036a05a..9ca898f40 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/packets/EntityPackets.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19to1_18_2/packets/EntityPackets.java @@ -355,7 +355,7 @@ public final class EntityPackets extends EntityRewriter meta.setMetaType(Types1_19.META_TYPES.byId(meta.metaType().typeId()))); - registerMetaTypeHandler(Types1_19.META_TYPES.itemType, Types1_19.META_TYPES.blockStateType, Types1_19.META_TYPES.particleType); + registerMetaTypeHandler(Types1_19.META_TYPES.itemType, Types1_19.META_TYPES.blockStateType, null, Types1_19.META_TYPES.particleType); filter().filterFamily(Entity1_19Types.MINECART_ABSTRACT).index(11).handler((event, meta) -> { // Convert to new block id diff --git a/common/src/main/java/com/viaversion/viaversion/rewriter/EntityRewriter.java b/common/src/main/java/com/viaversion/viaversion/rewriter/EntityRewriter.java index 1cb4bb636..a4a30439e 100644 --- a/common/src/main/java/com/viaversion/viaversion/rewriter/EntityRewriter.java +++ b/common/src/main/java/com/viaversion/viaversion/rewriter/EntityRewriter.java @@ -234,18 +234,25 @@ public abstract class EntityRewriter { - if (itemType != null && meta.metaType() == itemType) { + final MetaType type = meta.metaType(); + if (type == itemType) { protocol.getItemRewriter().handleItemToClient(meta.value()); - } else if (blockType != null && meta.metaType() == blockType) { + } else if (type == blockStateType) { int data = meta.value(); meta.setValue(protocol.getMappingData().getNewBlockStateId(data)); - } else if (particleType != null && meta.metaType() == particleType) { + } else if (type == optionalBlockStateType) { + int data = meta.value(); + if (data != 0) { + meta.setValue(protocol.getMappingData().getNewBlockStateId(data)); + } + } else if (type == particleType) { rewriteParticle(meta.value()); } });