mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-02-16 02:20:44 +00:00
fix custom block data
This commit is contained in:
@@ -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());
|
||||
|
||||
@@ -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<String> itemNamespaces = new KSet<>();
|
||||
private final KSet<String> blockNamespaces = new KSet<>();
|
||||
private volatile Set<String> itemNamespaces = Set.of();
|
||||
private volatile Set<String> 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
|
||||
|
||||
@@ -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<Class<?>> queue = new LinkedList<>();
|
||||
Set<Class<?>> 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);
|
||||
|
||||
Reference in New Issue
Block a user