fix custom block data

This commit is contained in:
Julian Krings
2025-12-23 22:51:41 +01:00
parent 3abe671851
commit 97fa0562a4
3 changed files with 12 additions and 16 deletions

View File

@@ -411,6 +411,7 @@ public class Iris extends VolmitPlugin implements Listener {
pw.println(); pw.println();
pw.println(); pw.println();
} }
pw.println("[%%__USER__%%,%%__RESOURCE__%%,%%__PRODUCT__%%,%%__BUILTBYBIT__%%]");
pw.close(); pw.close();
Iris.info("DUMPED! See " + fi.getAbsolutePath()); Iris.info("DUMPED! See " + fi.getAbsolutePath());

View File

@@ -5,7 +5,6 @@ import com.volmit.iris.core.link.ExternalDataProvider;
import com.volmit.iris.core.link.Identifier; import com.volmit.iris.core.link.Identifier;
import com.volmit.iris.engine.framework.Engine; import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.util.collection.KMap; import com.volmit.iris.util.collection.KMap;
import com.volmit.iris.util.collection.KSet;
import com.volmit.iris.util.data.IrisCustomData; import com.volmit.iris.util.data.IrisCustomData;
import dev.lone.itemsadder.api.CustomBlock; import dev.lone.itemsadder.api.CustomBlock;
import dev.lone.itemsadder.api.CustomStack; import dev.lone.itemsadder.api.CustomStack;
@@ -19,12 +18,13 @@ import org.jetbrains.annotations.NotNull;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.MissingResourceException; import java.util.MissingResourceException;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class ItemAdderDataProvider extends ExternalDataProvider { public class ItemAdderDataProvider extends ExternalDataProvider {
private final KSet<String> itemNamespaces = new KSet<>(); private volatile Set<String> itemNamespaces = Set.of();
private final KSet<String> blockNamespaces = new KSet<>(); private volatile Set<String> blockNamespaces = Set.of();
public ItemAdderDataProvider() { public ItemAdderDataProvider() {
super("ItemsAdder"); super("ItemsAdder");
@@ -94,9 +94,9 @@ public class ItemAdderDataProvider extends ExternalDataProvider {
private void updateNamespaces(DataType dataType) { private void updateNamespaces(DataType dataType) {
var namespaces = getTypes(dataType).stream().map(Identifier::namespace).collect(Collectors.toSet()); var namespaces = getTypes(dataType).stream().map(Identifier::namespace).collect(Collectors.toSet());
var currentNamespaces = dataType == DataType.ITEM ? itemNamespaces : blockNamespaces; if (dataType == DataType.ITEM) itemNamespaces = namespaces;
currentNamespaces.removeIf(n -> !namespaces.contains(n)); else blockNamespaces = namespaces;
currentNamespaces.addAll(namespaces); Iris.debug("Updated ItemAdder namespaces: " + dataType + " - " + namespaces);
} }
@Override @Override

View File

@@ -16,7 +16,7 @@ public interface IrisCustomData extends BlockData {
static IrisCustomData of(@NotNull BlockData base, @NotNull Identifier custom) { static IrisCustomData of(@NotNull BlockData base, @NotNull Identifier custom) {
var clazz = base.getClass(); 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) -> return (IrisCustomData) Proxy.newProxyInstance(loader, Internal.getInterfaces(loader, clazz), (proxy, method, args) ->
switch (method.getName()) { switch (method.getName()) {
case "getBase" -> base; case "getBase" -> base;
@@ -44,15 +44,12 @@ public interface IrisCustomData extends BlockData {
private static Class<?>[] getInterfaces(ClassLoader loader, Class<?> base) { private static Class<?>[] getInterfaces(ClassLoader loader, Class<?> base) {
return cache.computeIfAbsent(base, k -> { return cache.computeIfAbsent(base, k -> {
Queue<Class<?>> queue = new LinkedList<>();
Set<Class<?>> set = new HashSet<>(); Set<Class<?>> set = new HashSet<>();
queue.add(k); Class<?> i = base;
while (!queue.isEmpty()) { while (i != null) {
Class<?> i = queue.poll();
if (!BlockData.class.isAssignableFrom(i)) if (!BlockData.class.isAssignableFrom(i))
continue; break;
for (Class<?> j : i.getInterfaces()) { for (Class<?> j : i.getInterfaces()) {
if (j.isSealed() || j.isHidden()) if (j.isSealed() || j.isHidden())
@@ -64,9 +61,7 @@ public interface IrisCustomData extends BlockData {
} catch (ClassNotFoundException ignored) {} } catch (ClassNotFoundException ignored) {}
} }
var parent = i.getSuperclass(); i = i.getSuperclass();
if (parent != null)
queue.add(parent);
} }
set.add(IrisCustomData.class); set.add(IrisCustomData.class);