diff --git a/addon/reremake-migrator/pom.xml b/addon/reremake-migrator/pom.xml index 1927782551..86441aa4c5 100644 --- a/addon/reremake-migrator/pom.xml +++ b/addon/reremake-migrator/pom.xml @@ -155,7 +155,7 @@ net.minidev json-smart - 1.3.2 + 2.4.9 compile diff --git a/compatibility/oraxen/.gitignore b/compatibility/oraxen/.gitignore new file mode 100644 index 0000000000..4788b4b454 --- /dev/null +++ b/compatibility/oraxen/.gitignore @@ -0,0 +1,113 @@ +# User-specific stuff +.idea/ + +*.iml +*.ipr +*.iws + +# IntelliJ +out/ + +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +target/ + +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next + +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +.mvn/wrapper/maven-wrapper.jar +.flattened-pom.xml + +# Common working directory +run/ diff --git a/compatibility/oraxen/pom.xml b/compatibility/oraxen/pom.xml new file mode 100644 index 0000000000..f415e4e087 --- /dev/null +++ b/compatibility/oraxen/pom.xml @@ -0,0 +1,94 @@ + + + + 4.0.0 + + com.ghostchu + quickshop-hikari + 6.2.0.7 + ../../pom.xml + + com.ghostchu.quickshop.compatibility + oraxen + takari-jar + + Compat-Oraxen + + Compatibility module for Oraxen + + + + + org.apache.maven.plugins + maven-shade-plugin + + + + + + src/main/resources + true + + + + + + + oraxen-releases + https://repo.oraxen.com/releases + + + + + + org.spigotmc + spigot-api + + + com.ghostchu.quickshop.compatibility + common + ${project.parent.version} + compile + + + com.ghostchu + quickshop-bukkit + ${project.parent.version} + provided + + + io.th0rgal + oraxen + 1.182.0 + provided + + + oraxen + v1_20_R2 + + + oraxen + v1_20_R3 + + + oraxen + v1_20_R4 + + + oraxen + v1_21_R1 + + + com.github.Euphillya + Energie + + + me.gabytm.util + actions-spigot + + + + + diff --git a/compatibility/oraxen/src/main/java/com/ghostchu/quickshop/compatibility/oraxen/Main.java b/compatibility/oraxen/src/main/java/com/ghostchu/quickshop/compatibility/oraxen/Main.java new file mode 100644 index 0000000000..595fce729b --- /dev/null +++ b/compatibility/oraxen/src/main/java/com/ghostchu/quickshop/compatibility/oraxen/Main.java @@ -0,0 +1,55 @@ +package com.ghostchu.quickshop.compatibility.oraxen; + +import com.ghostchu.quickshop.QuickShop; +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 com.ghostchu.quickshop.compatibility.CompatibilityModule; +import io.th0rgal.oraxen.api.OraxenItems; +import io.th0rgal.oraxen.items.ItemBuilder; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.minimessage.MiniMessage; +import org.bukkit.inventory.ItemStack; +import org.bukkit.plugin.Plugin; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public final class Main extends CompatibilityModule implements ItemExpressionHandler { + + @Override + public void init() { + final Registry registry = QuickShop.getInstance().getRegistry().getRegistry(BuiltInRegistry.ITEM_EXPRESSION); + if(registry instanceof ItemExpressionRegistry itemExpressionRegistry) { + if(itemExpressionRegistry.registerHandlerSafely(this)) { + getLogger().info("Register Oraxen ItemExpressionHandler successfully!"); + } + } + } + + @Override + public @NotNull Plugin getPlugin() { + return this; + } + + @Override + public String getPrefix() { + return "oraxen"; + } + + @Override + public boolean match(final ItemStack stack, final String expression) { + return expression.equals(OraxenItems.getIdByItem(stack)); + } + + @Override + public @Nullable Component displayName(@NotNull ItemStack stack) { + final ItemBuilder builder = OraxenItems.getBuilderByItem(stack); + if (builder == null) { + return ItemExpressionHandler.super.displayName(stack); + } + + final String displayName = builder.getItemName(); + return displayName != null ? MiniMessage.miniMessage().deserialize(displayName) : ItemExpressionHandler.super.displayName(stack); + } +} diff --git a/compatibility/oraxen/src/main/resources/plugin.yml b/compatibility/oraxen/src/main/resources/plugin.yml new file mode 100644 index 0000000000..027d2393e0 --- /dev/null +++ b/compatibility/oraxen/src/main/resources/plugin.yml @@ -0,0 +1,9 @@ +name: qscompat-${project.artifactId} +version: '${project.version}' +main: com.ghostchu.quickshop.compatibility.${project.artifactId}.Main +api-version: 1.18 +depend: + - Oraxen + - QuickShop-Hikari +authors: [ NahuLD ] +description: Compatibility module for Oraxen diff --git a/pom.xml b/pom.xml index a0f5975f4b..9028cbfa40 100644 --- a/pom.xml +++ b/pom.xml @@ -436,6 +436,7 @@ compatibility/slimefun compatibility/itemsadder compatibility/voidchest + compatibility/oraxen addon/discordsrv addon/plan addon/discount diff --git a/quickshop-api/src/main/java/com/ghostchu/quickshop/api/registry/builtin/itemexpression/ItemExpressionHandler.java b/quickshop-api/src/main/java/com/ghostchu/quickshop/api/registry/builtin/itemexpression/ItemExpressionHandler.java index 2c07f48a14..ccb670a8fa 100644 --- a/quickshop-api/src/main/java/com/ghostchu/quickshop/api/registry/builtin/itemexpression/ItemExpressionHandler.java +++ b/quickshop-api/src/main/java/com/ghostchu/quickshop/api/registry/builtin/itemexpression/ItemExpressionHandler.java @@ -1,8 +1,10 @@ package com.ghostchu.quickshop.api.registry.builtin.itemexpression; +import net.kyori.adventure.text.Component; import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.Plugin; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public interface ItemExpressionHandler extends Comparable { @@ -18,6 +20,11 @@ default String getInternalPrefix0() { boolean match(ItemStack stack, String expression); + @Nullable + default Component displayName(@NotNull ItemStack stack) { + return null; + } + @Override int hashCode(); diff --git a/quickshop-api/src/main/java/com/ghostchu/quickshop/api/registry/builtin/itemexpression/ItemExpressionRegistry.java b/quickshop-api/src/main/java/com/ghostchu/quickshop/api/registry/builtin/itemexpression/ItemExpressionRegistry.java index 721041891c..9183c23813 100644 --- a/quickshop-api/src/main/java/com/ghostchu/quickshop/api/registry/builtin/itemexpression/ItemExpressionRegistry.java +++ b/quickshop-api/src/main/java/com/ghostchu/quickshop/api/registry/builtin/itemexpression/ItemExpressionRegistry.java @@ -2,8 +2,10 @@ import com.ghostchu.quickshop.api.registry.PrefixAlreadyRegisteredException; import com.ghostchu.quickshop.api.registry.Registry; +import net.kyori.adventure.text.Component; import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.Plugin; +import org.jetbrains.annotations.Nullable; import java.util.Set; @@ -13,6 +15,9 @@ public interface ItemExpressionRegistry extends Registry { boolean match(ItemStack stack, String expression); + @Nullable + Component displayName(ItemStack stack); + void registerHandler(ItemExpressionHandler handler) throws PrefixAlreadyRegisteredException; boolean registerHandlerSafely(ItemExpressionHandler handler); diff --git a/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/menu/browse/MainPage.java b/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/menu/browse/MainPage.java index 0620814b55..53c83e34a7 100644 --- a/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/menu/browse/MainPage.java +++ b/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/menu/browse/MainPage.java @@ -21,6 +21,7 @@ import com.ghostchu.quickshop.api.economy.AbstractEconomy; import com.ghostchu.quickshop.api.obj.QUser; import com.ghostchu.quickshop.api.shop.Shop; +import com.ghostchu.quickshop.util.Util; import net.kyori.adventure.text.Component; import net.tnemc.item.AbstractItemStack; import net.tnemc.item.bukkit.BukkitItemStack; @@ -150,6 +151,7 @@ public void handle(final PageOpenCallback callback) { final AbstractEconomy eco = QuickShop.getInstance().getEconomy(); final AbstractItemStack stack = new BukkitItemStack().of(shop.getItem().getType().getKey().toString(), shop.getShopStackingAmount()) + .display(Util.getItemStackName(shop.getItem())) .lore(getList(id, iconLore, shop.getOwner().getDisplay(), location, diff --git a/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/menu/trade/MainPage.java b/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/menu/trade/MainPage.java index f022079f9e..1be5501f38 100644 --- a/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/menu/trade/MainPage.java +++ b/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/menu/trade/MainPage.java @@ -81,7 +81,7 @@ public void handle(final PageOpenCallback open) { final int stock = (shop.get().isBuying())? -1 : shop.get().getRemainingStock(); final String stockString = (shop.get().isUnlimited())? "Unlimited" : stock + ""; - open.getPage().addIcon(new IconBuilder(new BukkitItemStack().of(shopItem)).withSlot(13).build()); + open.getPage().addIcon(new IconBuilder(new BukkitItemStack().of(shopItem).display(Util.getItemStackName(shopItem))).withSlot(13).build()); final String lore = (shop.get().isSelling())? "gui.trade.custom.lore-buy" : "gui.trade.custom.lore-sell"; final String enter = (shop.get().isSelling())? "gui.trade.custom.enter-buy" : "gui.trade.custom.enter-sell"; diff --git a/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/registry/builtin/itemexpression/SimpleItemExpressionRegistry.java b/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/registry/builtin/itemexpression/SimpleItemExpressionRegistry.java index 96b13a7f5b..4676bfeada 100644 --- a/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/registry/builtin/itemexpression/SimpleItemExpressionRegistry.java +++ b/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/registry/builtin/itemexpression/SimpleItemExpressionRegistry.java @@ -5,9 +5,11 @@ import com.ghostchu.quickshop.api.registry.builtin.itemexpression.ItemExpressionHandler; import com.ghostchu.quickshop.api.registry.builtin.itemexpression.ItemExpressionRegistry; import com.google.common.collect.ImmutableSet; +import net.kyori.adventure.text.Component; import org.apache.commons.lang3.StringUtils; import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.Plugin; +import org.jetbrains.annotations.Nullable; import java.util.Set; import java.util.concurrent.ConcurrentSkipListSet; @@ -41,6 +43,17 @@ public boolean match(final ItemStack stack, final String expression) { return false; } + @Override + public @Nullable Component displayName(ItemStack stack) { + for (ItemExpressionHandler handler : handlers) { + final Component component = handler.displayName(stack); + if (component != null) { + return component; + } + } + return null; + } + @Override public void registerHandler(final ItemExpressionHandler handler) throws PrefixAlreadyRegisteredException { diff --git a/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java b/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java index 5b16e0a1f9..1bebb5cb41 100644 --- a/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java +++ b/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java @@ -4,6 +4,8 @@ import com.ghostchu.quickshop.api.inventory.CountableInventoryWrapper; import com.ghostchu.quickshop.api.inventory.InventoryWrapper; import com.ghostchu.quickshop.api.inventory.InventoryWrapperIterator; +import com.ghostchu.quickshop.api.registry.BuiltInRegistry; +import com.ghostchu.quickshop.api.registry.builtin.itemexpression.ItemExpressionRegistry; import com.ghostchu.quickshop.api.shop.ItemMatcher; import com.ghostchu.quickshop.api.shop.Shop; import com.ghostchu.quickshop.api.shop.permission.BuiltInShopPermission; @@ -503,6 +505,11 @@ public static Component getItemStackName(@NotNull final ItemStack itemStack) { @Nullable public static Component getItemCustomName(@NotNull final ItemStack itemStack) { + final ItemExpressionRegistry registry = (ItemExpressionRegistry) plugin.getRegistry().getRegistry(BuiltInRegistry.ITEM_EXPRESSION); + final Component displayName = registry.displayName(itemStack); + if (displayName != null) { + return displayName; + } if(useEnchantmentForEnchantedBook() && itemStack.getType() == Material.ENCHANTED_BOOK) { final ItemMeta meta = itemStack.getItemMeta();