diff --git a/bukkit/compatibility/build.gradle.kts b/bukkit/compatibility/build.gradle.kts index 520da0749..df485034a 100644 --- a/bukkit/compatibility/build.gradle.kts +++ b/bukkit/compatibility/build.gradle.kts @@ -16,6 +16,7 @@ repositories { maven("https://repo.auxilor.io/repository/maven-public/") // eco maven("https://repo.hiusers.com/releases") // zaphkiel maven("https://jitpack.io") // sxitem slimefun + maven("https://repo.codemc.io/repository/maven-public/") // quickshop } dependencies { @@ -79,6 +80,8 @@ dependencies { compileOnly("com.github.Saukiya:SX-Item:4.4.6") // Slimefun compileOnly("io.github.Slimefun:Slimefun4:RC-32") + // QuickShop + compileOnly("com.ghostchu:quickshop-api:6.2.0.10") } 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 f35396548..79df69a97 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 @@ -12,6 +12,7 @@ import net.momirealms.craftengine.bukkit.compatibility.mythicmobs.MythicItemDrop import net.momirealms.craftengine.bukkit.compatibility.mythicmobs.MythicSkillHelper; import net.momirealms.craftengine.bukkit.compatibility.papi.PlaceholderAPIUtils; import net.momirealms.craftengine.bukkit.compatibility.permission.LuckPermsEventListeners; +import net.momirealms.craftengine.bukkit.compatibility.quickshop.QuickShopItemExpressionHandler; import net.momirealms.craftengine.bukkit.compatibility.region.WorldGuardRegionCondition; import net.momirealms.craftengine.bukkit.compatibility.skript.SkriptHook; import net.momirealms.craftengine.bukkit.compatibility.slimeworld.SlimeFormatStorageAdaptor; @@ -141,6 +142,10 @@ public class BukkitCompatibilityManager implements CompatibilityManager { ModelEngineUtils.registerConstantBlockEntityRender(); logHook("ModelEngine"); } + if (this.isPluginEnabled("QuickShop-Hikari")) { + new QuickShopItemExpressionHandler(this.plugin); + logHook("QuickShop-Hikari"); + } } @Override diff --git a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/quickshop/QuickShopItemExpressionHandler.java b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/quickshop/QuickShopItemExpressionHandler.java new file mode 100644 index 000000000..36919172f --- /dev/null +++ b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/quickshop/QuickShopItemExpressionHandler.java @@ -0,0 +1,56 @@ +package net.momirealms.craftengine.bukkit.compatibility.quickshop; + +import com.ghostchu.quickshop.api.QuickShopAPI; +import com.ghostchu.quickshop.api.event.QSConfigurationReloadEvent; +import com.ghostchu.quickshop.api.registry.BuiltInRegistry; +import com.ghostchu.quickshop.api.registry.Registry; +import com.ghostchu.quickshop.api.registry.builtin.itemexpression.ItemExpressionHandler; +import com.ghostchu.quickshop.api.registry.builtin.itemexpression.ItemExpressionRegistry; +import net.momirealms.craftengine.bukkit.api.CraftEngineItems; +import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine; +import net.momirealms.craftengine.core.util.Key; +import org.bukkit.Bukkit; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.inventory.ItemStack; +import org.bukkit.plugin.Plugin; +import org.jetbrains.annotations.NotNull; + +public class QuickShopItemExpressionHandler implements ItemExpressionHandler, Listener { + private final BukkitCraftEngine plugin; + + public QuickShopItemExpressionHandler(BukkitCraftEngine plugin) { + this.plugin = plugin; + Bukkit.getPluginManager().registerEvents(this, plugin.javaPlugin()); + init(); + } + + public void init() { + Registry registry = QuickShopAPI.getInstance().getRegistry().getRegistry(BuiltInRegistry.ITEM_EXPRESSION); + if (!(registry instanceof ItemExpressionRegistry itemExpressionRegistry)) return; + if (!itemExpressionRegistry.registerHandlerSafely(this)) return; + this.plugin.logger().info("[Compatibility] Successfully registered CraftEngine ItemExpressionHandler to QuickShop-Hikari"); + } + + @EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR) + public void onQuickShopReload(final QSConfigurationReloadEvent event) { + init(); + } + + @Override + public @NotNull Plugin getPlugin() { + return this.plugin.javaPlugin(); + } + + @Override + public String getPrefix() { + return "craftengine"; + } + + @Override + public boolean match(ItemStack itemStack, String id) { + Key customId = CraftEngineItems.getCustomItemId(itemStack); + return customId != null && id.equals(customId.asString()); + } +} diff --git a/bukkit/paper-loader/build.gradle.kts b/bukkit/paper-loader/build.gradle.kts index 293cfb09f..9b04d929d 100644 --- a/bukkit/paper-loader/build.gradle.kts +++ b/bukkit/paper-loader/build.gradle.kts @@ -75,6 +75,7 @@ paper { } register("LuckPerms") { required = false } register("ViaVersion") { required = false } + register("QuickShop-Hikari") { required = false } // external models register("ModelEngine") { required = false }