From 97fa0562a439952c7b80c269bfab6c12312ad205 Mon Sep 17 00:00:00 2001 From: Julian Krings Date: Tue, 23 Dec 2025 22:51:41 +0100 Subject: [PATCH] fix custom block data --- core/src/main/java/com/volmit/iris/Iris.java | 1 + .../core/link/data/ItemAdderDataProvider.java | 12 ++++++------ .../com/volmit/iris/util/data/IrisCustomData.java | 15 +++++---------- 3 files changed, 12 insertions(+), 16 deletions(-) diff --git a/core/src/main/java/com/volmit/iris/Iris.java b/core/src/main/java/com/volmit/iris/Iris.java index 0d952d534..fc9b4e55e 100644 --- a/core/src/main/java/com/volmit/iris/Iris.java +++ b/core/src/main/java/com/volmit/iris/Iris.java @@ -411,6 +411,7 @@ public class Iris extends VolmitPlugin implements Listener { pw.println(); pw.println(); } + pw.println("[%%__USER__%%,%%__RESOURCE__%%,%%__PRODUCT__%%,%%__BUILTBYBIT__%%]"); pw.close(); Iris.info("DUMPED! See " + fi.getAbsolutePath()); diff --git a/core/src/main/java/com/volmit/iris/core/link/data/ItemAdderDataProvider.java b/core/src/main/java/com/volmit/iris/core/link/data/ItemAdderDataProvider.java index 3dbdb0dbe..0f4495972 100644 --- a/core/src/main/java/com/volmit/iris/core/link/data/ItemAdderDataProvider.java +++ b/core/src/main/java/com/volmit/iris/core/link/data/ItemAdderDataProvider.java @@ -5,7 +5,6 @@ import com.volmit.iris.core.link.ExternalDataProvider; import com.volmit.iris.core.link.Identifier; import com.volmit.iris.engine.framework.Engine; import com.volmit.iris.util.collection.KMap; -import com.volmit.iris.util.collection.KSet; import com.volmit.iris.util.data.IrisCustomData; import dev.lone.itemsadder.api.CustomBlock; import dev.lone.itemsadder.api.CustomStack; @@ -19,12 +18,13 @@ import org.jetbrains.annotations.NotNull; import java.util.Collection; import java.util.List; import java.util.MissingResourceException; +import java.util.Set; import java.util.stream.Collectors; public class ItemAdderDataProvider extends ExternalDataProvider { - private final KSet itemNamespaces = new KSet<>(); - private final KSet blockNamespaces = new KSet<>(); + private volatile Set itemNamespaces = Set.of(); + private volatile Set blockNamespaces = Set.of(); public ItemAdderDataProvider() { super("ItemsAdder"); @@ -94,9 +94,9 @@ public class ItemAdderDataProvider extends ExternalDataProvider { private void updateNamespaces(DataType dataType) { var namespaces = getTypes(dataType).stream().map(Identifier::namespace).collect(Collectors.toSet()); - var currentNamespaces = dataType == DataType.ITEM ? itemNamespaces : blockNamespaces; - currentNamespaces.removeIf(n -> !namespaces.contains(n)); - currentNamespaces.addAll(namespaces); + if (dataType == DataType.ITEM) itemNamespaces = namespaces; + else blockNamespaces = namespaces; + Iris.debug("Updated ItemAdder namespaces: " + dataType + " - " + namespaces); } @Override diff --git a/core/src/main/java/com/volmit/iris/util/data/IrisCustomData.java b/core/src/main/java/com/volmit/iris/util/data/IrisCustomData.java index da60f704c..062cb50a1 100644 --- a/core/src/main/java/com/volmit/iris/util/data/IrisCustomData.java +++ b/core/src/main/java/com/volmit/iris/util/data/IrisCustomData.java @@ -16,7 +16,7 @@ public interface IrisCustomData extends BlockData { static IrisCustomData of(@NotNull BlockData base, @NotNull Identifier custom) { var clazz = base.getClass(); - var loader = clazz.getClassLoader(); + var loader = IrisCustomData.class.getClassLoader(); return (IrisCustomData) Proxy.newProxyInstance(loader, Internal.getInterfaces(loader, clazz), (proxy, method, args) -> switch (method.getName()) { case "getBase" -> base; @@ -44,15 +44,12 @@ public interface IrisCustomData extends BlockData { private static Class[] getInterfaces(ClassLoader loader, Class base) { return cache.computeIfAbsent(base, k -> { - Queue> queue = new LinkedList<>(); Set> set = new HashSet<>(); - queue.add(k); - while (!queue.isEmpty()) { - Class i = queue.poll(); - + Class i = base; + while (i != null) { if (!BlockData.class.isAssignableFrom(i)) - continue; + break; for (Class j : i.getInterfaces()) { if (j.isSealed() || j.isHidden()) @@ -64,9 +61,7 @@ public interface IrisCustomData extends BlockData { } catch (ClassNotFoundException ignored) {} } - var parent = i.getSuperclass(); - if (parent != null) - queue.add(parent); + i = i.getSuperclass(); } set.add(IrisCustomData.class);