diff --git a/bukkit/compatibility/build.gradle.kts b/bukkit/compatibility/build.gradle.kts index 1ca637479..5d231402f 100644 --- a/bukkit/compatibility/build.gradle.kts +++ b/bukkit/compatibility/build.gradle.kts @@ -15,6 +15,7 @@ repositories { maven("https://repo.dmulloy2.net/repository/public/") // mcmmo required maven("https://repo.auxilor.io/repository/maven-public/") // eco maven("https://repo.hiusers.com/releases") // zaphkiel + maven("https://jitpack.io") // sxitem } dependencies { @@ -72,6 +73,10 @@ dependencies { compileOnly("ink.ptms:ZaphkielAPI:2.1.0") // WorldGuard compileOnly(files("${rootProject.rootDir}/libs/worldguard-bukkit-7.0.14-dist.jar")) + // HeadDatabase + compileOnly("com.arcaniax:HeadDatabase-API:1.3.2") + // SXItem + compileOnly("com.github.Saukiya:SX-Item:4.4.6") } java { diff --git a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/BukkitCompatibilityManager.java b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/BukkitCompatibilityManager.java index 3f6d91917..d4cf8bebb 100644 --- a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/BukkitCompatibilityManager.java +++ b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/BukkitCompatibilityManager.java @@ -263,6 +263,14 @@ public class BukkitCompatibilityManager implements CompatibilityManager { itemManager.registerExternalItemSource(new ZaphkielSource()); logHook("Zaphkiel"); } + if (this.isPluginEnabled("HeadDatabase")) { + itemManager.registerExternalItemSource(new HeadDatabaseSource()); + logHook("HeadDatabase"); + } + if (this.isPluginEnabled("SX-Item")) { + itemManager.registerExternalItemSource(new SXItemSource()); + logHook("SX-Item"); + } } private Plugin getPlugin(String name) { diff --git a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/item/HeadDatabaseSource.java b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/item/HeadDatabaseSource.java new file mode 100644 index 000000000..5c3bb87c6 --- /dev/null +++ b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/item/HeadDatabaseSource.java @@ -0,0 +1,33 @@ +package net.momirealms.craftengine.bukkit.compatibility.item; + +import net.momirealms.craftengine.core.item.ExternalItemSource; +import net.momirealms.craftengine.core.item.ItemBuildContext; +import me.arcaniax.hdb.api.HeadDatabaseAPI; +import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.Nullable; + +public class HeadDatabaseSource implements ExternalItemSource { + private HeadDatabaseAPI api; + + @Override + public String plugin() { + return "headdatabase"; + } + + @Nullable + @Override + public ItemStack build(String id, ItemBuildContext context) { + if (api == null) { + api = new HeadDatabaseAPI(); + } + return api.getItemHead(id); + } + + @Override + public String id(ItemStack item) { + if (api == null) { + api = new HeadDatabaseAPI(); + } + return api.getItemID(item); + } +} diff --git a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/item/SXItemSource.java b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/item/SXItemSource.java new file mode 100644 index 000000000..ca7ddbc59 --- /dev/null +++ b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/item/SXItemSource.java @@ -0,0 +1,29 @@ +package net.momirealms.craftengine.bukkit.compatibility.item; + +import github.saukiya.sxitem.SXItem; +import net.momirealms.craftengine.core.item.ExternalItemSource; +import net.momirealms.craftengine.core.item.ItemBuildContext; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.Nullable; + +import java.util.Optional; + +public class SXItemSource implements ExternalItemSource { + + @Override + public String plugin() { + return "sxitem"; + } + + @Nullable + @Override + public ItemStack build(String id, ItemBuildContext context) { + return SXItem.getItemManager().getItem(id, Optional.ofNullable(context.player()).map(p -> (Player) p.platformPlayer()).orElse(null)); + } + + @Override + public String id(ItemStack item) { + return SXItem.getItemManager().getItemKey(item); + } +}