From 93690b766c41bde28af3f207bb1defa163f8766a Mon Sep 17 00:00:00 2001 From: CrazyDev22 Date: Mon, 1 Apr 2024 17:26:33 +0200 Subject: [PATCH] implement MMOItemsDataProvider --- core/build.gradle | 5 ++ .../iris/core/link/MMOItemsDataProvider.java | 84 +++++++++++++++++++ .../iris/core/service/ExternalDataSVC.java | 4 + 3 files changed, 93 insertions(+) create mode 100644 core/src/main/java/com/volmit/iris/core/link/MMOItemsDataProvider.java diff --git a/core/build.gradle b/core/build.gradle index 76d773096..b15995f34 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -33,6 +33,10 @@ compileJava { options.encoding = "UTF-8" } +repositories { + maven { url 'https://nexus.phoenixdevt.fr/repository/maven-public/'} +} + /** * Dependencies. * @@ -61,6 +65,7 @@ dependencies { compileOnly 'com.github.LoneDev6:api-itemsadder:3.4.1-r4' compileOnly 'com.github.PlaceholderAPI:placeholderapi:2.11.3' compileOnly 'com.github.Ssomar-Developement:SCore:4.23.10.8' + compileOnly 'net.Indyuce:MMOItems-API:6.9.5-SNAPSHOT' //implementation files('libs/CustomItems.jar') } diff --git a/core/src/main/java/com/volmit/iris/core/link/MMOItemsDataProvider.java b/core/src/main/java/com/volmit/iris/core/link/MMOItemsDataProvider.java new file mode 100644 index 000000000..b57a8c664 --- /dev/null +++ b/core/src/main/java/com/volmit/iris/core/link/MMOItemsDataProvider.java @@ -0,0 +1,84 @@ +package com.volmit.iris.core.link; + +import com.volmit.iris.Iris; +import com.volmit.iris.util.collection.KList; +import net.Indyuce.mmoitems.MMOItems; +import net.Indyuce.mmoitems.api.Type; +import net.Indyuce.mmoitems.api.block.CustomBlock; +import org.bukkit.block.data.BlockData; +import org.bukkit.inventory.ItemStack; + +import java.util.MissingResourceException; + +public class MMOItemsDataProvider extends ExternalDataProvider { + + public MMOItemsDataProvider() { + super("MMOItems"); + } + + @Override + public void init() { + Iris.info("Setting up MMOItems Link..."); + } + + @Override + public BlockData getBlockData(Identifier blockId) throws MissingResourceException { + int id = -1; + try { + id = Integer.parseInt(blockId.key()); + } catch (NumberFormatException ignored) {} + CustomBlock block = api().getCustomBlocks().getBlock(id); + if (block == null) throw new MissingResourceException("Failed to find BlockData!", blockId.namespace(), blockId.key()); + return block.getState().getBlockData(); + } + + @Override + public ItemStack getItemStack(Identifier itemId) throws MissingResourceException { + String[] parts = itemId.namespace().split("_", 2); + if (parts.length != 2) + throw new MissingResourceException("Failed to find ItemData!", itemId.namespace(), itemId.key()); + ItemStack item = api().getItem(parts[1], itemId.key()); + if (item == null) + throw new MissingResourceException("Failed to find ItemData!", itemId.namespace(), itemId.key()); + return item; + } + + @Override + public Identifier[] getBlockTypes() { + KList names = new KList<>(); + for (Integer id : api().getCustomBlocks().getBlockIds()) { + try { + Identifier key = new Identifier("mmoitems", String.valueOf(id)); + if (getBlockData(key) != null) + names.add(key); + } catch (MissingResourceException ignored) { + } + } + return names.toArray(new Identifier[0]); + } + + @Override + public Identifier[] getItemTypes() { + KList names = new KList<>(); + for (Type type : api().getTypes().getAll()) { + for (String name : api().getTemplates().getTemplateNames(type)) { + try { + Identifier key = new Identifier("mmoitems_" + type, name); + if (getItemStack(key) != null) + names.add(key); + } catch (MissingResourceException ignored) { + } + } + } + return names.toArray(new Identifier[0]); + } + + @Override + public boolean isValidProvider(Identifier id, boolean isItem) { + return isItem ? id.namespace().split("_", 2).length == 2 : id.namespace().equals("mmoitems"); + } + + private MMOItems api() { + return MMOItems.plugin; + } +} 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 cda593408..00bc519c1 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 @@ -60,6 +60,10 @@ public class ExternalDataSVC implements IrisService { if (Bukkit.getPluginManager().getPlugin("HMCLeaves") != null) { Iris.info("BlockAdder found, loading HMCLeavesDataProvider..."); } + providers.add(new MMOItemsDataProvider()); + if (Bukkit.getPluginManager().getPlugin("MMOItems") != null) { + Iris.info("MMOItems found, loading MMOItemsDataProvider..."); + } for (ExternalDataProvider p : providers) { if (p.isReady()) {