From 9b89ae7846beb79ca334d72584d413e4fbc305b7 Mon Sep 17 00:00:00 2001 From: CrazyDev22 Date: Sun, 31 Dec 2023 19:13:57 +0100 Subject: [PATCH 1/2] reimplement IrisCompat --- build.gradle | 2 +- .../volmit/iris/engine/object/IrisCompat.java | 22 +++++++--- .../object/IrisCompatabilityBlockFilter.java | 4 +- .../java/com/volmit/iris/util/data/B.java | 41 +++++++++++++------ .../volmit/iris/util/nbt/mca/NBTWorld.java | 2 +- 5 files changed, 48 insertions(+), 23 deletions(-) diff --git a/build.gradle b/build.gradle index 3f1a11541..6755dc2df 100644 --- a/build.gradle +++ b/build.gradle @@ -44,7 +44,7 @@ registerCustomOutputTaskUnix('PsychoLT', '/Volumes/PRO-G40/Minecraft/MinecraftDe // ============================================================== def NMS_BINDINGS = Map.of( -// "v1_20_R3", "1.20.4-R0.1-SNAPSHOT", + "v1_20_R3", "1.20.4-R0.1-SNAPSHOT", "v1_20_R2", "1.20.2-R0.1-SNAPSHOT", "v1_20_R1", "1.20.1-R0.1-SNAPSHOT", "v1_19_R3", "1.19.4-R0.1-SNAPSHOT", diff --git a/core/src/main/java/com/volmit/iris/engine/object/IrisCompat.java b/core/src/main/java/com/volmit/iris/engine/object/IrisCompat.java index 6ff2975ee..7f2d8ed73 100644 --- a/core/src/main/java/com/volmit/iris/engine/object/IrisCompat.java +++ b/core/src/main/java/com/volmit/iris/engine/object/IrisCompat.java @@ -234,7 +234,7 @@ private static KList getDefaultBlockCompatabilityF filters.add(new IrisCompatabilityBlockFilter("ACACIA_WALL_SIGN", "LEGACY_WALL_SIGN")); filters.add(new IrisCompatabilityBlockFilter("ACACIA_SIGN", "LEGACY_SIGN_POST")); filters.add(new IrisCompatabilityBlockFilter("SCAFFOLDING", "BIRCH_FENCE")); - filters.add(new IrisCompatabilityBlockFilter("LOOM", "LOOM")); + //filters.add(new IrisCompatabilityBlockFilter("LOOM", "LOOM")); filters.add(new IrisCompatabilityBlockFilter("LECTERN", "BOOKSHELF")); filters.add(new IrisCompatabilityBlockFilter("LANTERN", "REDSTONE_LAMP")); filters.add(new IrisCompatabilityBlockFilter("JIGSAW", "AIR")); @@ -254,6 +254,7 @@ private static KList getDefaultBlockCompatabilityF filters.add(new IrisCompatabilityBlockFilter("BAMBOO", "BIRCH_FENCE")); filters.add(new IrisCompatabilityBlockFilter("BAMBOO_SAPLING", "BIRCH_SAPLING")); filters.add(new IrisCompatabilityBlockFilter("POTTED_BAMBOO", "POTTED_BIRCH_SAPLING")); + filters.add(new IrisCompatabilityBlockFilter("GRASS", "SHORT_GRASS")); return filters; } @@ -262,7 +263,7 @@ public BlockData getBlock(String n) { String buf = n; int err = 16; - BlockData tx = B.getOrNull(buf); + BlockData tx = B.getOrNull(buf, false); if (tx != null) { return tx; @@ -271,11 +272,19 @@ public BlockData getBlock(String n) { searching: while (true) { if (err-- <= 0) { - return B.get("STONE"); + Iris.error("Can't find block data for " + n); + return B.getNoCompat("STONE"); + } + String m = buf; + if (m.contains("[")) { + m = m.split("\\Q[\\E")[0]; + } + if (m.contains(":")) { + m = m.split("\\Q:\\E", 2)[1]; } for (IrisCompatabilityBlockFilter i : blockFilters) { - if (i.getWhen().equalsIgnoreCase(buf)) { + if (i.getWhen().equalsIgnoreCase(i.isExact() ? buf : m)) { BlockData b = i.getReplace(); if (b != null) { @@ -287,7 +296,8 @@ public BlockData getBlock(String n) { } } - return B.get("STONE"); + Iris.error("Can't find block data for " + n); + return B.getNoCompat("STONE"); } } @@ -330,7 +340,7 @@ public Material getItem(String n) { } buf = n; - BlockData tx = B.getOrNull(buf); + BlockData tx = B.getOrNull(buf, false); if (tx != null) { return tx.getMaterial(); diff --git a/core/src/main/java/com/volmit/iris/engine/object/IrisCompatabilityBlockFilter.java b/core/src/main/java/com/volmit/iris/engine/object/IrisCompatabilityBlockFilter.java index 4c4520f3a..379a72e24 100644 --- a/core/src/main/java/com/volmit/iris/engine/object/IrisCompatabilityBlockFilter.java +++ b/core/src/main/java/com/volmit/iris/engine/object/IrisCompatabilityBlockFilter.java @@ -57,13 +57,13 @@ public BlockData getFind() { public BlockData getReplace() { return replaceData.aquire(() -> { - BlockData b = B.getOrNull(supplement); + BlockData b = B.getOrNull(supplement, false); if (b == null) { return null; } - Iris.warn("Compat: Using " + supplement + " in place of " + when + " since this server doesnt support '" + supplement + "'"); + Iris.warn("Compat: Using '%s' in place of '%s' since this server doesnt support '%s'", supplement, when, when); return b; }); diff --git a/core/src/main/java/com/volmit/iris/util/data/B.java b/core/src/main/java/com/volmit/iris/util/data/B.java index efa7d52d2..74e277aab 100644 --- a/core/src/main/java/com/volmit/iris/util/data/B.java +++ b/core/src/main/java/com/volmit/iris/util/data/B.java @@ -22,6 +22,7 @@ import com.volmit.iris.core.IrisSettings; import com.volmit.iris.core.link.Identifier; import com.volmit.iris.core.service.ExternalDataSVC; +import com.volmit.iris.engine.object.IrisCompat; import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.collection.KMap; import com.volmit.iris.util.scheduling.ChronoLatch; @@ -406,7 +407,7 @@ public static boolean isSolid(BlockData mat) { return mat.getMaterial().isSolid(); } - public static BlockData getOrNull(String bdxf) { + public static BlockData getOrNull(String bdxf, boolean warn) { try { String bd = bdxf.trim(); @@ -422,9 +423,9 @@ public static BlockData getOrNull(String bdxf) { return DIRT_PATH.createBlockData(); } - BlockData bdx = parseBlockData(bd); + BlockData bdx = parseBlockData(bd, warn); - if (bdx == null) { + if (bdx == null && warn) { if (clw.flip()) { Iris.warn("Unknown Block Data '" + bd + "'"); } @@ -443,8 +444,8 @@ public static BlockData getOrNull(String bdxf) { return null; } - public static BlockData get(String bdxf) { - BlockData bd = getOrNull(bdxf); + public static BlockData getNoCompat(String bdxf) { + BlockData bd = getOrNull(bdxf, true); if (bd != null) { return bd; @@ -453,20 +454,34 @@ public static BlockData get(String bdxf) { return AIR; } - private static synchronized BlockData createBlockData(String s) { + public static BlockData get(String bdxf) { + if (bdxf.contains(":")) { + if (bdxf.startsWith("minecraft:")) { + return Iris.compat.getBlock(bdxf); + } else { + return getNoCompat(bdxf); + } + } else { + return Iris.compat.getBlock(bdxf); + } + } + + private static synchronized BlockData createBlockData(String s, boolean warn) { try { return Bukkit.createBlockData(s); } catch (IllegalArgumentException e) { if (s.contains("[")) { - return createBlockData(s.split("\\Q[\\E")[0]); + return createBlockData(s.split("\\Q[\\E")[0], warn); } } - Iris.error("Can't find block data for " + s); + if (warn) { + Iris.error("Can't find block data for " + s); + } return null; } - private static BlockData parseBlockData(String ix) { + private static BlockData parseBlockData(String ix, boolean warn) { try { BlockData bx = null; @@ -480,7 +495,7 @@ private static BlockData parseBlockData(String ix) { if (bx == null) { try { - bx = createBlockData(ix.toLowerCase()); + bx = createBlockData(ix.toLowerCase(), warn); } catch (Throwable e) { e.printStackTrace(); } @@ -488,7 +503,7 @@ private static BlockData parseBlockData(String ix) { if (bx == null) { try { - bx = createBlockData("minecraft:" + ix.toLowerCase()); + bx = createBlockData("minecraft:" + ix.toLowerCase(), warn); } catch (Throwable e) { } @@ -548,7 +563,7 @@ private static BlockData parseBlockData(String ix) { for (String key : stateMap.keySet()) { //Iterate through every state and check if its valid try { String newState = block + "[" + key + "=" + stateMap.get(key) + "]"; - createBlockData(newState); + createBlockData(newState, warn); newStates.put(key, stateMap.get(key)); } catch (IllegalArgumentException ignored) { @@ -562,7 +577,7 @@ private static BlockData parseBlockData(String ix) { Iris.debug("Converting " + ix + " to " + newBlock); try { - return createBlockData(newBlock); + return createBlockData(newBlock, warn); } catch (Throwable e1) { Iris.reportError(e1); } diff --git a/core/src/main/java/com/volmit/iris/util/nbt/mca/NBTWorld.java b/core/src/main/java/com/volmit/iris/util/nbt/mca/NBTWorld.java index a4e0ad58b..bc77bf299 100644 --- a/core/src/main/java/com/volmit/iris/util/nbt/mca/NBTWorld.java +++ b/core/src/main/java/com/volmit/iris/util/nbt/mca/NBTWorld.java @@ -107,7 +107,7 @@ public static BlockData getBlockData(CompoundTag tag) { p.deleteCharAt(p.length() - 1).append(']'); } - BlockData b = B.getOrNull(p.toString()); + BlockData b = B.getOrNull(p.toString(), true); if (b == null) { return B.getAir(); From 82640de06bf54d29aee5ed7195315f5e11103ea5 Mon Sep 17 00:00:00 2001 From: Julian Krings <47589149+CrazyDev05@users.noreply.github.com> Date: Thu, 25 Jan 2024 14:47:19 +0100 Subject: [PATCH 2/2] v+ --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 6755dc2df..ea7d53891 100644 --- a/build.gradle +++ b/build.gradle @@ -25,7 +25,7 @@ plugins { id "de.undercouch.download" version "5.0.1" } -version '3.0.0-1.19.2-1.20.2' +version '3.0.0-1.19.2-1.20.4' def specialSourceVersion = '1.11.0' //[NMS] // ADD YOURSELF AS A NEW LINE IF YOU WANT YOUR OWN BUILD TASK GENERATED @@ -344,4 +344,4 @@ def registerCustomOutputTaskUnix(name, path) { } } -tasks.build.dependsOn(shadowJar) \ No newline at end of file +tasks.build.dependsOn(shadowJar)