From 63d7bdab6bbb491d00b14d4671a189d230615a3c Mon Sep 17 00:00:00 2001 From: Auxilor Date: Thu, 7 Oct 2021 13:58:42 +0100 Subject: [PATCH] Re-Added Head Database integration --- eco-core/core-plugin/build.gradle | 1 + .../com/willfp/eco/spigot/EcoSpigotPlugin.kt | 4 +- .../customitems/CustomItemsHeadDatabase.kt | 59 +++++++++++++++++++ .../customitems/CustomItemsItemsAdder.kt | 5 +- .../core-plugin/src/main/resources/plugin.yml | 1 + 5 files changed, 66 insertions(+), 4 deletions(-) create mode 100644 eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/integrations/customitems/CustomItemsHeadDatabase.kt diff --git a/eco-core/core-plugin/build.gradle b/eco-core/core-plugin/build.gradle index 19395a17..4f40ad74 100644 --- a/eco-core/core-plugin/build.gradle +++ b/eco-core/core-plugin/build.gradle @@ -29,6 +29,7 @@ dependencies { compileOnly 'com.willfp:Oraxen:e1f4003d8d' compileOnly 'com.github.brcdev-minecraft:shopgui-api:2.2.0' compileOnly 'com.github.LoneDev6:API-ItemsAdder:2.4.7' + compileOnly 'com.arcaniax:HeadDatabase-API:1.3.0' // CombatLogX V10 + NewbieHelper Expansion compileOnly 'com.SirBlobman.combatlogx:CombatLogX-API:10.0.0.0-SNAPSHOT' diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/EcoSpigotPlugin.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/EcoSpigotPlugin.kt index 2e362db2..d8164290 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/EcoSpigotPlugin.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/EcoSpigotPlugin.kt @@ -30,6 +30,7 @@ import com.willfp.eco.spigot.eventlisteners.armor.ArmorListener import com.willfp.eco.spigot.gui.GUIListener import com.willfp.eco.spigot.integrations.anticheat.* import com.willfp.eco.spigot.integrations.antigrief.* +import com.willfp.eco.spigot.integrations.customitems.CustomItemsHeadDatabase import com.willfp.eco.spigot.integrations.customitems.CustomItemsItemsAdder import com.willfp.eco.spigot.integrations.customitems.CustomItemsOraxen import com.willfp.eco.spigot.integrations.mcmmo.McmmoIntegrationImpl @@ -142,7 +143,8 @@ abstract class EcoSpigotPlugin : EcoPlugin( // Custom Items IntegrationLoader("Oraxen") { CustomItemsManager.register(CustomItemsOraxen()) }, - IntegrationLoader("ItemsAdder") { CustomItemsManager.register(CustomItemsItemsAdder(this)) }, + IntegrationLoader("ItemsAdder") { CustomItemsManager.register(CustomItemsItemsAdder()) }, + IntegrationLoader("HeadDatabase") { CustomItemsManager.register(CustomItemsHeadDatabase(this)) }, // Shop IntegrationLoader("ShopGUIPlus") { ShopManager.register(ShopShopGuiPlus()) }, diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/integrations/customitems/CustomItemsHeadDatabase.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/integrations/customitems/CustomItemsHeadDatabase.kt new file mode 100644 index 00000000..6051d202 --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/integrations/customitems/CustomItemsHeadDatabase.kt @@ -0,0 +1,59 @@ +package com.willfp.eco.spigot.integrations.customitems + +import com.willfp.eco.core.EcoPlugin +import com.willfp.eco.core.integrations.customitems.CustomItemsWrapper +import com.willfp.eco.core.items.CustomItem +import com.willfp.eco.core.items.Items +import com.willfp.eco.core.items.TestableItem +import com.willfp.eco.core.items.provider.ItemProvider +import com.willfp.eco.util.NamespacedKeyUtils +import me.arcaniax.hdb.api.DatabaseLoadEvent +import me.arcaniax.hdb.api.HeadDatabaseAPI +import org.bukkit.event.EventHandler +import org.bukkit.event.Listener +import org.bukkit.inventory.ItemStack +import java.util.function.Predicate + +class CustomItemsHeadDatabase( + plugin: EcoPlugin +) : CustomItemsWrapper { + private val provider = HeadDBProvider() + + init { + plugin.eventManager.registerListener(provider) + } + + override fun registerAllItems() { + Items.registerItemProvider(HeadDBProvider()) + } + + override fun getPluginName(): String { + return "HeadDatabase" + } + + private inner class HeadDBProvider : ItemProvider("headdb"), Listener { + private lateinit var api: HeadDatabaseAPI + + override fun provideForKey(key: String): TestableItem? { + if (this::api.isInitialized) { + return null + } + + val head = api.getItemHead(key) ?: return null + val namespacedKey = NamespacedKeyUtils.create("headdb", key) + return CustomItem( + namespacedKey, + Predicate { test: ItemStack -> + val found = api.getItemID(test) ?: return@Predicate false + found == key + }, + head + ) + } + + @EventHandler + fun onLoad(event: DatabaseLoadEvent) { + api = HeadDatabaseAPI() + } + } +} \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/integrations/customitems/CustomItemsItemsAdder.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/integrations/customitems/CustomItemsItemsAdder.kt index ba7aa120..dbf21688 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/integrations/customitems/CustomItemsItemsAdder.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/integrations/customitems/CustomItemsItemsAdder.kt @@ -5,7 +5,6 @@ import com.willfp.eco.core.items.CustomItem import com.willfp.eco.core.items.Items import com.willfp.eco.core.items.TestableItem import com.willfp.eco.core.items.provider.ItemProvider -import com.willfp.eco.core.recipe.parts.EmptyTestableItem import com.willfp.eco.util.NamespacedKeyUtils import dev.lone.itemsadder.api.CustomStack import org.bukkit.inventory.ItemStack @@ -21,8 +20,8 @@ class CustomItemsItemsAdder : CustomItemsWrapper { } private class ItemsAdderProvider : ItemProvider("itemsadder") { - override fun provideForKey(key: String): TestableItem { - val item = CustomStack.getInstance("itemsadder:$key") ?: return EmptyTestableItem() + override fun provideForKey(key: String): TestableItem? { + val item = CustomStack.getInstance("itemsadder:$key") ?: return null val id = item.id val namespacedKey = NamespacedKeyUtils.create("itemsadder", key) val stack = item.itemStack diff --git a/eco-core/core-plugin/src/main/resources/plugin.yml b/eco-core/core-plugin/src/main/resources/plugin.yml index c33ab22f..39634b9b 100644 --- a/eco-core/core-plugin/src/main/resources/plugin.yml +++ b/eco-core/core-plugin/src/main/resources/plugin.yml @@ -24,6 +24,7 @@ softdepend: - ShopGUIPlus - ItemsAdder - Oraxen + - HeadDatabase libraries: - 'org.reflections:reflections:0.9.12' - 'org.apache.maven:maven-artifact:3.0.3'