diff --git a/core/build.gradle b/core/build.gradle index 300825e97..76a806aa6 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -58,6 +58,7 @@ dependencies { implementation 'com.github.oraxen:oraxen:1.158.0' implementation 'com.github.LoneDev6:api-itemsadder:3.4.1-r4' implementation 'com.github.PlaceholderAPI:placeholderapi:2.11.3' + implementation 'com.github.Ssomar-Developement:SCore:4.23.10.8' //implementation files('libs/CustomItems.jar') } diff --git a/core/src/main/java/com/volmit/iris/core/link/ExecutableItemsDataProvider.java b/core/src/main/java/com/volmit/iris/core/link/ExecutableItemsDataProvider.java new file mode 100644 index 000000000..8112a4595 --- /dev/null +++ b/core/src/main/java/com/volmit/iris/core/link/ExecutableItemsDataProvider.java @@ -0,0 +1,58 @@ +package com.volmit.iris.core.link; + +import com.ssomar.score.api.executableitems.ExecutableItemsAPI; +import com.volmit.iris.Iris; +import com.volmit.iris.util.collection.KList; +import org.bukkit.block.data.BlockData; +import org.bukkit.inventory.ItemStack; + +import java.util.MissingResourceException; +import java.util.Optional; + +public class ExecutableItemsDataProvider extends ExternalDataProvider { + public ExecutableItemsDataProvider() { + super("ExecutableItems"); + } + + @Override + public void init() { + Iris.info("Setting up ExecutableItems Link..."); + } + + @Override + public BlockData getBlockData(Identifier blockId) throws MissingResourceException { + throw new MissingResourceException("Failed to find BlockData!", blockId.namespace(), blockId.key()); + } + + @Override + public ItemStack getItemStack(Identifier itemId) throws MissingResourceException { + return ExecutableItemsAPI.getExecutableItemsManager().getExecutableItem(itemId.key()) + .map(item -> item.buildItem(1, Optional.empty())) + .orElseThrow(() -> new MissingResourceException("Failed to find ItemData!", itemId.namespace(), itemId.key())); + } + + @Override + public Identifier[] getBlockTypes() { + return new Identifier[0]; + } + + @Override + public Identifier[] getItemTypes() { + KList names = new KList<>(); + for (String name : ExecutableItemsAPI.getExecutableItemsManager().getExecutableItemIdsList()) { + try { + Identifier key = new Identifier("executable_items", name); + if (getItemStack(key) != null) + names.add(key); + } catch (MissingResourceException ignored) { + } + } + + return names.toArray(new Identifier[0]); + } + + @Override + public boolean isValidProvider(Identifier key, boolean isItem) { + return key.namespace().equalsIgnoreCase("executable_items") && isItem; + } +} diff --git a/core/src/main/java/com/volmit/iris/core/service/ExternalDataSVC.java b/core/src/main/java/com/volmit/iris/core/service/ExternalDataSVC.java index 04606f179..de6d2ac81 100644 --- a/core/src/main/java/com/volmit/iris/core/service/ExternalDataSVC.java +++ b/core/src/main/java/com/volmit/iris/core/service/ExternalDataSVC.java @@ -19,10 +19,7 @@ package com.volmit.iris.core.service; import com.volmit.iris.Iris; -import com.volmit.iris.core.link.ExternalDataProvider; -import com.volmit.iris.core.link.Identifier; -import com.volmit.iris.core.link.ItemAdderDataProvider; -import com.volmit.iris.core.link.OraxenDataProvider; +import com.volmit.iris.core.link.*; import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.plugin.IrisService; import lombok.Data; @@ -53,6 +50,10 @@ public class ExternalDataSVC implements IrisService { if (Bukkit.getPluginManager().getPlugin("ItemAdder") != null) { Iris.info("ItemAdder found, loading ItemAdderDataProvider..."); } + providers.add(new ExecutableItemsDataProvider()); + if (Bukkit.getPluginManager().getPlugin("ExecutableItems") != null) { + Iris.info("ExecutableItems found, loading ExecutableItemsDataProvider..."); + } for (ExternalDataProvider p : providers) { if (p.isReady()) {