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();
|
pw.println();
|
||||||
}
|
}
|
||||||
|
pw.println("[%%__USER__%%,%%__RESOURCE__%%,%%__PRODUCT__%%,%%__BUILTBYBIT__%%]");
|
||||||
|
|
||||||
pw.close();
|
pw.close();
|
||||||
Iris.info("DUMPED! See " + fi.getAbsolutePath());
|
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.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
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user