From c9d26c47faa8a6d0ea6632eec6efa7d37bbd01e1 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Fri, 8 Oct 2021 19:15:31 +0100 Subject: [PATCH 01/29] Fixed crafting not working --- .../src/main/kotlin/com/willfp/reforges/reforges/Reforge.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/Reforge.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/Reforge.kt index 03efc74..2aee9de 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/Reforge.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/Reforge.kt @@ -59,12 +59,12 @@ class Reforge( stone ).register() - if (config.getBool("craftable")) { + if (config.getBool("stone.craftable")) { Recipes.createAndRegisterRecipe( plugin, "stone_" + this.id, stone, - config.getStrings("recipe", false) + config.getStrings("stone.recipe", false) ) } } From a40c0b86df4b1f1a386ba9aea5850670d726e6ea Mon Sep 17 00:00:00 2001 From: Auxilor Date: Fri, 8 Oct 2021 19:15:48 +0100 Subject: [PATCH 02/29] Updated to 3.3.1 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index a435798..fcc36e5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -version = 3.3.0 +version = 3.3.1 plugin-name = Reforges \ No newline at end of file From 9b77fa2d21ee4e40325269c84c62081c7ec1b613 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Mon, 11 Oct 2021 12:00:15 +0100 Subject: [PATCH 03/29] Fixed reforge name duplication --- .../reforges/display/ReforgesDisplay.kt | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/display/ReforgesDisplay.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/display/ReforgesDisplay.kt index 98993cb..93e5ac1 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/display/ReforgesDisplay.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/display/ReforgesDisplay.kt @@ -13,17 +13,26 @@ import com.willfp.reforges.reforges.util.ReforgeUtils import net.kyori.adventure.text.Component import net.kyori.adventure.text.TextReplacementConfig import net.kyori.adventure.text.format.TextDecoration +import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer import org.bukkit.Material import org.bukkit.inventory.ItemStack import org.bukkit.inventory.meta.SkullMeta +import org.bukkit.persistence.PersistentDataType @Suppress("DEPRECATION") class ReforgesDisplay(private val plugin: ReforgesPlugin) : DisplayModule(plugin, DisplayPriority.HIGHEST) { + /** + * Deprecated + */ + @Deprecated("Use PDC components!") private val replacement = TextReplacementConfig.builder() .match("§w(.+)§w") .replacement("") .build() + private val originalComponentKey = plugin.namespacedKeyFactory.create("real_name") + private val serializer = GsonComponentSerializer.gson() + override fun display( itemStack: ItemStack, vararg args: Any @@ -76,12 +85,13 @@ class ReforgesDisplay(private val plugin: ReforgesPlugin) : DisplayModule(plugin lore.addAll(addLore) } if (plugin.configYml.getBool("reforge.display-in-name") && Prerequisite.HAS_PAPER.isMet) { - val displayName = - (if (meta.hasDisplayName()) meta.displayName()!! else Component.translatable(itemStack)) - .replaceText( - replacement - ) - val newName = StringUtils.toComponent("§w${reforge.name} §w") + val displayName = (meta.displayName() ?: Component.translatable(itemStack)).replaceText(replacement) + meta.persistentDataContainer.set( + originalComponentKey, + PersistentDataType.STRING, + serializer.serialize(displayName) + ) + val newName = StringUtils.toComponent("${reforge.name} ") .decoration(TextDecoration.ITALIC, false).append(displayName) meta.displayName(newName) } @@ -96,12 +106,10 @@ class ReforgesDisplay(private val plugin: ReforgesPlugin) : DisplayModule(plugin val meta = itemStack.itemMeta ?: return if (plugin.configYml.getBool("reforge.display-in-name") && Prerequisite.HAS_PAPER.isMet) { - val displayName = meta.displayName() ?: return - meta.displayName( - displayName.replaceText( - replacement - ) - ) + val originalName = + meta.persistentDataContainer.get(originalComponentKey, PersistentDataType.STRING) ?: return + meta.persistentDataContainer.remove(originalComponentKey) + meta.displayName(serializer.deserialize(originalName).replaceText(replacement)) } itemStack.itemMeta = meta From af6b9818157f83626650a2ebcdc25d338563088d Mon Sep 17 00:00:00 2001 From: Auxilor Date: Mon, 11 Oct 2021 12:00:26 +0100 Subject: [PATCH 04/29] Updated to 3.3.1 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index a435798..fcc36e5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -version = 3.3.0 +version = 3.3.1 plugin-name = Reforges \ No newline at end of file From 387eaff23db8e018a1a61bfa2cc99916167aa2c1 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Mon, 11 Oct 2021 12:02:11 +0100 Subject: [PATCH 05/29] Updated to 3.3.2 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index fcc36e5..2b3be14 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -version = 3.3.1 +version = 3.3.2 plugin-name = Reforges \ No newline at end of file From c5f47ac51d87146c1f655ea8ce790fcfdabfbf14 Mon Sep 17 00:00:00 2001 From: Will FP <38837418+WillFP@users.noreply.github.com> Date: Tue, 12 Oct 2021 20:12:25 +0100 Subject: [PATCH 06/29] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0eca83e..2bfc4c5 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@


- Reforges logo + Reforges logo

From 83762773e985620e59a6a4d5266acda2bf7dfeba Mon Sep 17 00:00:00 2001 From: Auxilor Date: Wed, 13 Oct 2021 10:49:25 +0100 Subject: [PATCH 07/29] Fixed stone bug --- .../src/main/kotlin/com/willfp/reforges/reforges/Reforge.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/Reforge.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/Reforge.kt index 2aee9de..6f04b24 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/Reforge.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/Reforge.kt @@ -59,7 +59,7 @@ class Reforge( stone ).register() - if (config.getBool("stone.craftable")) { + if (config.getBool("stone.craftable") && config.getBool("stone.enabled")) { Recipes.createAndRegisterRecipe( plugin, "stone_" + this.id, From 8d8d6dd247b4cd948f2628342ec463a42578b27a Mon Sep 17 00:00:00 2001 From: Auxilor Date: Wed, 13 Oct 2021 10:56:31 +0100 Subject: [PATCH 08/29] Added option to set stone cost --- .../main/java/com/willfp/reforges/gui/ReforgeGUI.java | 10 +++++++--- .../reforges/reforges/util/MetadatedReforgeStatus.java | 7 +++++++ .../willfp/reforges/reforges/util/ReforgeHandler.java | 3 +++ .../willfp/reforges/reforges/util/ReforgeUtils.java | 6 ++++-- .../kotlin/com/willfp/reforges/reforges/Reforge.kt | 2 ++ 5 files changed, 23 insertions(+), 5 deletions(-) create mode 100644 eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/MetadatedReforgeStatus.java diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/gui/ReforgeGUI.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/gui/ReforgeGUI.java index 9b87faf..9a26d78 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/reforges/gui/ReforgeGUI.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/reforges/gui/ReforgeGUI.java @@ -10,6 +10,7 @@ import com.willfp.eco.core.gui.slot.Slot; import com.willfp.eco.core.items.builder.ItemStackBuilder; import com.willfp.eco.util.NumberUtils; import com.willfp.reforges.ReforgesPlugin; +import com.willfp.reforges.reforges.util.MetadatedReforgeStatus; import com.willfp.reforges.reforges.util.ReforgeHandler; import com.willfp.reforges.reforges.util.ReforgeStatus; import com.willfp.reforges.reforges.util.ReforgeUtils; @@ -49,13 +50,16 @@ public class ReforgeGUI { return; } - ReforgeStatus status = ReforgeUtils.getStatus(menu.getCaptiveItems(player)); + MetadatedReforgeStatus metadatedReforgeStatus = ReforgeUtils.getStatus(menu.getCaptiveItems(player)); + ReforgeStatus status = metadatedReforgeStatus.status(); double cost = plugin.getConfigYml().getDouble("reforge.cost"); if (status == ReforgeStatus.ALLOW) { ItemStack item = menu.getCaptiveItems(player).get(0); int reforges = ReforgeUtils.getReforges(item); cost *= Math.pow(plugin.getConfigYml().getDouble("reforge.cost-exponent"), reforges); + } else if (status == ReforgeStatus.ALLOW_STONE) { + cost = metadatedReforgeStatus.cost(); } int xpcost = plugin.getConfigYml().getInt("reforge.xp-cost"); @@ -72,7 +76,7 @@ public class ReforgeGUI { List lore = new ArrayList<>(); for (String string : plugin.getConfigYml().getStrings("gui.invalid-item.lore")) { lore.add(string.replace("%cost%", NumberUtils.format(cost)) - .replace("%xpcost%", NumberUtils.format(xpcost))); + .replace("%xpcost%", NumberUtils.format(xpcost))); } meta.setLore(lore); } @@ -146,7 +150,7 @@ public class ReforgeGUI { .setDisplayName("&r") .build() ).setModifier((player, menu, previous) -> { - ReforgeStatus status = ReforgeUtils.getStatus(menu.getCaptiveItems(player)); + ReforgeStatus status = ReforgeUtils.getStatus(menu.getCaptiveItems(player)).status(); if (status == ReforgeStatus.ALLOW || status == ReforgeStatus.ALLOW_STONE) { previous.setType(allowMaterial); } else { diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/MetadatedReforgeStatus.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/MetadatedReforgeStatus.java new file mode 100644 index 0000000..9275c9f --- /dev/null +++ b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/MetadatedReforgeStatus.java @@ -0,0 +1,7 @@ +package com.willfp.reforges.reforges.util; + +import org.jetbrains.annotations.NotNull; + +public record MetadatedReforgeStatus(@NotNull ReforgeStatus status, + double cost) { +} diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/ReforgeHandler.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/ReforgeHandler.java index 250b27c..fde5cae 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/ReforgeHandler.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/ReforgeHandler.java @@ -61,6 +61,9 @@ public class ReforgeHandler extends PluginDependent { double cost = this.getPlugin().getConfigYml().getDouble("reforge.cost"); int reforges = ReforgeUtils.getReforges(toReforge); cost *= Math.pow(this.getPlugin().getConfigYml().getDouble("reforge.cost-exponent"), reforges); + if (reforge.getRequiresStone() && reforge.getStonePrice() != -1) { + cost = reforge.getStonePrice(); + } if (!EconomyHandler.getInstance().has(player, cost)) { player.sendMessage(this.getPlugin().getLangYml().getMessage("insufficient-money")); diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/ReforgeUtils.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/ReforgeUtils.java index 7cad42d..ff2bffc 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/ReforgeUtils.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/ReforgeUtils.java @@ -64,7 +64,7 @@ public class ReforgeUtils { return applicable.get(0); } - public static ReforgeStatus getStatus(@NotNull final List captive) { + public static MetadatedReforgeStatus getStatus(@NotNull final List captive) { ItemStack toReforge = captive.isEmpty() ? null : captive.get(0); ItemStack stone = captive.size() == 2 ? captive.get(1) : null; ReforgeStatus status = null; @@ -84,16 +84,18 @@ public class ReforgeUtils { status = ReforgeStatus.ALLOW; } + double cost = 0; if (status == ReforgeStatus.ALLOW) { Reforge reforgeStone = getReforgeStone(stone); if (reforgeStone != null && reforgeStone.getTargets().stream() .anyMatch(reforgeTarget -> reforgeTarget.getItems().stream() .anyMatch(item -> item.matches(toReforge)))) { + cost = reforgeStone.getStonePrice(); status = ReforgeStatus.ALLOW_STONE; } } - return status; + return new MetadatedReforgeStatus(status, cost); } /** diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/Reforge.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/Reforge.kt index 6f04b24..65a6956 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/Reforge.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/Reforge.kt @@ -50,6 +50,8 @@ class Reforge( } }.build() + val stonePrice = config.getIntOrNull("stone.price") ?: -1 + init { ReforgeUtils.setReforgeStone(stone, this) From 48a761df8ce888dd4cf5bf92be1c3f52d96d739b Mon Sep 17 00:00:00 2001 From: Auxilor Date: Wed, 13 Oct 2021 10:56:39 +0100 Subject: [PATCH 09/29] Updated to 3.4.0 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 2b3be14..305bccf 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -version = 3.3.2 +version = 3.4.0 plugin-name = Reforges \ No newline at end of file From 7d6eba866f2f1a4172d48dd4def8ac652e16a737 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Thu, 14 Oct 2021 10:52:07 +0100 Subject: [PATCH 10/29] Recoded Reforge GUI --- .../com/willfp/reforges/gui/ReforgeGUI.java | 206 ------------------ .../reforges/util/MetadatedReforgeStatus.java | 7 - .../com/willfp/reforges/gui/ReforgeGUI.kt | 187 ++++++++++++++++ .../reforges/util/MetadatedReforgeStatus.kt | 3 + .../core-plugin/src/main/resources/config.yml | 4 + 5 files changed, 194 insertions(+), 213 deletions(-) delete mode 100644 eco-core/core-plugin/src/main/java/com/willfp/reforges/gui/ReforgeGUI.java delete mode 100644 eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/MetadatedReforgeStatus.java create mode 100644 eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/gui/ReforgeGUI.kt create mode 100644 eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/util/MetadatedReforgeStatus.kt diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/gui/ReforgeGUI.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/gui/ReforgeGUI.java deleted file mode 100644 index 9a26d78..0000000 --- a/eco-core/core-plugin/src/main/java/com/willfp/reforges/gui/ReforgeGUI.java +++ /dev/null @@ -1,206 +0,0 @@ -package com.willfp.reforges.gui; - -import com.willfp.eco.core.EcoPlugin; -import com.willfp.eco.core.config.updating.ConfigUpdater; -import com.willfp.eco.core.drops.DropQueue; -import com.willfp.eco.core.gui.menu.Menu; -import com.willfp.eco.core.gui.slot.FillerMask; -import com.willfp.eco.core.gui.slot.MaskMaterials; -import com.willfp.eco.core.gui.slot.Slot; -import com.willfp.eco.core.items.builder.ItemStackBuilder; -import com.willfp.eco.util.NumberUtils; -import com.willfp.reforges.ReforgesPlugin; -import com.willfp.reforges.reforges.util.MetadatedReforgeStatus; -import com.willfp.reforges.reforges.util.ReforgeHandler; -import com.willfp.reforges.reforges.util.ReforgeStatus; -import com.willfp.reforges.reforges.util.ReforgeUtils; -import lombok.Getter; -import lombok.experimental.UtilityClass; -import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; - -@SuppressWarnings("deprecation") -@UtilityClass -public class ReforgeGUI { - /** - * The reforge GUI. - */ - @Getter - private static Menu menu; - - /** - * Update the GUI. - * - * @param plugin The plugin. - */ - @ConfigUpdater - public static void update(@NotNull final EcoPlugin plugin) { - ReforgeHandler handler = new ReforgeHandler(plugin); - Slot activatorSlot = Slot.builder(new ItemStack(Material.ANVIL)) - .setModifier((player, menu, previous) -> { - ItemMeta meta = previous.getItemMeta(); - if (meta == null) { - return; - } - - MetadatedReforgeStatus metadatedReforgeStatus = ReforgeUtils.getStatus(menu.getCaptiveItems(player)); - ReforgeStatus status = metadatedReforgeStatus.status(); - - double cost = plugin.getConfigYml().getDouble("reforge.cost"); - if (status == ReforgeStatus.ALLOW) { - ItemStack item = menu.getCaptiveItems(player).get(0); - int reforges = ReforgeUtils.getReforges(item); - cost *= Math.pow(plugin.getConfigYml().getDouble("reforge.cost-exponent"), reforges); - } else if (status == ReforgeStatus.ALLOW_STONE) { - cost = metadatedReforgeStatus.cost(); - } - - int xpcost = plugin.getConfigYml().getInt("reforge.xp-cost"); - if (status == ReforgeStatus.ALLOW) { - ItemStack item = menu.getCaptiveItems(player).get(0); - int reforges = ReforgeUtils.getReforges(item); - xpcost *= Math.pow(plugin.getConfigYml().getDouble("reforge.cost-exponent"), reforges); - } - - switch (status) { - case INVALID_ITEM -> { - previous.setType(Objects.requireNonNull(Material.getMaterial(plugin.getConfigYml().getString("gui.invalid-item.material").toUpperCase()))); - meta.setDisplayName(plugin.getConfigYml().getString("gui.invalid-item.name")); - List lore = new ArrayList<>(); - for (String string : plugin.getConfigYml().getStrings("gui.invalid-item.lore")) { - lore.add(string.replace("%cost%", NumberUtils.format(cost)) - .replace("%xpcost%", NumberUtils.format(xpcost))); - } - meta.setLore(lore); - } - case ALLOW -> { - previous.setType(Objects.requireNonNull(Material.getMaterial(plugin.getConfigYml().getString("gui.allow.material").toUpperCase()))); - meta.setDisplayName(plugin.getConfigYml().getString("gui.allow.name")); - List lore = new ArrayList<>(); - for (String string : plugin.getConfigYml().getStrings("gui.allow.lore")) { - lore.add(string.replace("%cost%", NumberUtils.format(cost)) - .replace("%xpcost%", NumberUtils.format(xpcost))); - } - meta.setLore(lore); - } - case ALLOW_STONE -> { - previous.setType(Objects.requireNonNull(Material.getMaterial(plugin.getConfigYml().getString("gui.allow-stone.material").toUpperCase()))); - meta.setDisplayName(plugin.getConfigYml().getString("gui.allow-stone.name")); - List lore = new ArrayList<>(); - for (String string : plugin.getConfigYml().getStrings("gui.allow-stone.lore")) { - lore.add(string.replace("%cost%", NumberUtils.format(cost)) - .replace("%xpcost%", NumberUtils.format(xpcost)) - .replace("%stone%", ReforgeUtils.getReforgeStone(menu.getCaptiveItems(player).get(1)).getName())); - } - meta.setLore(lore); - } - default -> { - previous.setType(Objects.requireNonNull(Material.getMaterial(plugin.getConfigYml().getString("gui.no-item.material").toUpperCase()))); - meta.setDisplayName(plugin.getConfigYml().getString("gui.no-item.name")); - List lore = new ArrayList<>(); - for (String string : plugin.getConfigYml().getStrings("gui.no-item.lore")) { - lore.add(string.replace("%cost%", NumberUtils.format(cost)) - .replace("%xpcost%", NumberUtils.format(xpcost))); - } - meta.setLore(lore); - } - } - - previous.setItemMeta(meta); - }) - .onLeftClick(handler::handleReforgeClick) - .build(); - - String[] maskPattern = plugin.getConfigYml().getStrings("gui.mask.pattern", false).toArray(new String[0]); - Material[] maskMaterials = plugin.getConfigYml() - .getStrings("gui.mask.materials", false) - .stream() - .map(string -> Material.getMaterial(string.toUpperCase())) - .filter(Objects::nonNull) - .toArray(Material[]::new); - - Material allowMaterial = Material.getMaterial(plugin.getConfigYml().getString("gui.show-allowed.allow-material", false).toUpperCase()); - Material denyMaterial = Material.getMaterial(plugin.getConfigYml().getString("gui.show-allowed.deny-material", false).toUpperCase()); - assert allowMaterial != null; - assert denyMaterial != null; - - Material closeMaterial = Material.getMaterial(plugin.getConfigYml().getString("gui.close.material", false).toUpperCase()); - assert closeMaterial != null; - - menu = Menu.builder(plugin.getConfigYml().getInt("gui.rows")) - .setTitle(plugin.getLangYml().getString("menu.title")) - .setMask( - new FillerMask( - new MaskMaterials( - maskMaterials - ), - maskPattern - ) - ) - .modfiy(builder -> { - Slot slot = Slot.builder( - new ItemStackBuilder(Material.BLACK_STAINED_GLASS_PANE) - .setDisplayName("&r") - .build() - ).setModifier((player, menu, previous) -> { - ReforgeStatus status = ReforgeUtils.getStatus(menu.getCaptiveItems(player)).status(); - if (status == ReforgeStatus.ALLOW || status == ReforgeStatus.ALLOW_STONE) { - previous.setType(allowMaterial); - } else { - previous.setType(denyMaterial); - } - }).build(); - - List allowedPattern = plugin.getConfigYml().getStrings("gui.show-allowed.pattern"); - - for (int i = 1; i <= allowedPattern.size(); i++) { - String row = allowedPattern.get(i - 1); - for (int j = 1; j <= 9; j++) { - if (row.charAt(j - 1) != '0') { - builder.setSlot(i, j, slot); - } - } - } - }) - .setSlot(plugin.getConfigYml().getInt("gui.item-slot.row"), - plugin.getConfigYml().getInt("gui.item-slot.column"), - Slot.builder() - .setCaptive() - .build() - ) - .setSlot(plugin.getConfigYml().getInt("gui.stone-slot.row"), - plugin.getConfigYml().getInt("gui.stone-slot.column"), - Slot.builder() - .setCaptive() - .build() - ) - .setSlot(2, 5, activatorSlot) - .setSlot(plugin.getConfigYml().getInt("gui.close.location.row"), - plugin.getConfigYml().getInt("gui.close.location.column"), - Slot.builder( - new ItemStackBuilder(closeMaterial) - .setDisplayName(plugin.getLangYml().getString("menu.close")) - .build() - ).onLeftClick((event, slot, menu) -> { - event.getWhoClicked().closeInventory(); - }).build() - ).onClose((event, menu) -> { - new DropQueue((Player) event.getPlayer()) - .addItems(menu.getCaptiveItems((Player) event.getPlayer())) - .setLocation(event.getPlayer().getEyeLocation()) - .push(); - }) - .build(); - } - - static { - update(ReforgesPlugin.getInstance()); - } -} diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/MetadatedReforgeStatus.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/MetadatedReforgeStatus.java deleted file mode 100644 index 9275c9f..0000000 --- a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/MetadatedReforgeStatus.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.willfp.reforges.reforges.util; - -import org.jetbrains.annotations.NotNull; - -public record MetadatedReforgeStatus(@NotNull ReforgeStatus status, - double cost) { -} diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/gui/ReforgeGUI.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/gui/ReforgeGUI.kt new file mode 100644 index 0000000..ca08c83 --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/gui/ReforgeGUI.kt @@ -0,0 +1,187 @@ +package com.willfp.reforges.gui + +import com.willfp.eco.core.EcoPlugin +import com.willfp.eco.core.config.updating.ConfigUpdater +import com.willfp.eco.core.drops.DropQueue +import com.willfp.eco.core.gui.menu.Menu +import com.willfp.eco.core.gui.slot.FillerMask +import com.willfp.eco.core.gui.slot.MaskMaterials +import com.willfp.eco.core.gui.slot.Slot +import com.willfp.eco.core.items.builder.ItemStackBuilder +import com.willfp.eco.util.NumberUtils +import com.willfp.reforges.ReforgesPlugin +import com.willfp.reforges.reforges.util.ReforgeHandler +import com.willfp.reforges.reforges.util.ReforgeStatus +import com.willfp.reforges.reforges.util.ReforgeUtils +import org.bukkit.Material +import org.bukkit.entity.Player +import org.bukkit.inventory.ItemStack +import kotlin.math.pow + +@Suppress("DEPRECATION") +object ReforgeGUI { + @JvmStatic + lateinit var menu: Menu + + init { + update(ReforgesPlugin.getInstance()) + } + + @ConfigUpdater + fun update(plugin: EcoPlugin) { + val handler = ReforgeHandler(plugin) + + val activatorSlot = Slot.builder( + ItemStack(Material.ANVIL) + ).apply { + setModifier { player, menu, previous -> + val meta = previous.itemMeta ?: return@setModifier + + val (status, specialCost) = ReforgeUtils.getStatus(menu.getCaptiveItems(player)) + + val cost: Double = when (status) { + ReforgeStatus.ALLOW -> { + val amountOfReforges = ReforgeUtils.getReforges(menu.getCaptiveItems(player)[0]) + plugin.configYml.getDouble("reforge.cost") * + plugin.configYml.getDouble("reforge.cost-exponent").pow(amountOfReforges) + } + ReforgeStatus.ALLOW_STONE -> { + specialCost + } + else -> 0.0 // Never used, but at least kotlin can shut up + } + + var xpCost = plugin.configYml.getInt("reforge.xp-cost") + if (status == ReforgeStatus.ALLOW) { + val item = menu.getCaptiveItems(player)[0] + val reforges = ReforgeUtils.getReforges(item) + xpCost *= plugin.configYml.getDouble("reforge.cost-exponent").pow(reforges.toDouble()).toInt() + } + + when (status) { + ReforgeStatus.INVALID_ITEM -> { + previous.type = Material.getMaterial( + plugin.configYml.getString("gui.invalid-item.material").uppercase() + )!! + meta.setDisplayName(plugin.configYml.getString("gui.invalid-item.name")) + meta.lore = plugin.configYml.getStrings("gui.invalid-item.lore").map { + it.replace("%cost%", NumberUtils.format(cost)) + .replace("%xpcost%", NumberUtils.format(xpCost.toDouble())) + } + } + ReforgeStatus.ALLOW -> { + previous.type = Material.getMaterial( + plugin.configYml.getString("gui.allow.material").uppercase() + )!! + meta.setDisplayName(plugin.configYml.getString("gui.allow.name")) + meta.lore = plugin.configYml.getStrings("gui.allow.lore").map { + it.replace("%cost%", NumberUtils.format(cost)) + .replace("%xpcost%", NumberUtils.format(xpCost.toDouble())) + } + } + ReforgeStatus.ALLOW_STONE -> { + previous.type = Material.getMaterial( + plugin.configYml.getString("gui.allow-stone.material").uppercase() + )!! + meta.setDisplayName(plugin.configYml.getString("gui.allow-stone.name")) + meta.lore = plugin.configYml.getStrings("gui.allow-stone.lore").map { + it.replace("%cost%", NumberUtils.format(cost)) + .replace("%xpcost%", NumberUtils.format(xpCost.toDouble())) + .replace("%stone%", ReforgeUtils.getReforgeStone(menu.getCaptiveItems(player)[1]).name) + } + } + ReforgeStatus.NO_ITEM -> { + previous.type = Material.getMaterial( + plugin.configYml.getString("gui.no-item.material").uppercase() + )!! + meta.setDisplayName(plugin.configYml.getString("gui.no-item.name")) + meta.lore = plugin.configYml.getStrings("gui.no-item.lore").map { + it.replace("%cost%", NumberUtils.format(cost)) + .replace("%xpcost%", NumberUtils.format(xpCost.toDouble())) + } + } + } + } + onLeftClick(handler::handleReforgeClick) + }.build() + + val maskPattern = plugin.configYml.getStrings("gui.mask.pattern", false).toTypedArray() + + val maskMaterials = plugin.configYml.getStrings("gui.mask.materials", false) + .mapNotNull { Material.getMaterial(it.uppercase()) } + .toTypedArray() + + val allowMaterial = + Material.getMaterial(plugin.configYml.getString("gui.show-allowed.allow-material", false).uppercase())!! + val denyMaterial = + Material.getMaterial(plugin.configYml.getString("gui.show-allowed.deny-material", false).uppercase())!! + val closeMaterial = + Material.getMaterial(plugin.configYml.getString("gui.close.material", false).toUpperCase())!! + + menu = Menu.builder(plugin.configYml.getInt("gui.rows")).apply { + setTitle(plugin.langYml.getString("menu.title")) + setMask(FillerMask(MaskMaterials(*maskMaterials), *maskPattern)) + modfiy { builder -> + val slot = Slot.builder( + ItemStackBuilder(Material.BLACK_STAINED_GLASS_PANE) + .setDisplayName("&r") + .build() + ).apply { + setModifier { player, menu, previous -> + val status = ReforgeUtils.getStatus( + menu.getCaptiveItems(player) + ).status + + if (status == ReforgeStatus.ALLOW || status == ReforgeStatus.ALLOW_STONE) { + previous.type = allowMaterial + } else { + previous.type = denyMaterial + } + } + }.build() + + val allowedPattern = plugin.configYml.getStrings("gui.show-allowed.pattern") + for (i in 1..allowedPattern.size) { + val row = allowedPattern[i - 1] + for (j in 1..9) { + if (row[j - 1] != '0') { + builder.setSlot(i, j, slot) + } + } + } + } + setSlot( + plugin.configYml.getInt("gui.item-slot.row"), + plugin.configYml.getInt("gui.item-slot.column"), + Slot.builder().setCaptive().build() + ) + setSlot( + plugin.configYml.getInt("gui.stone-slot.row"), + plugin.configYml.getInt("gui.stone-slot.column"), + Slot.builder().setCaptive().build() + ) + setSlot( + plugin.configYml.getInt("gui.activator-slot.row"), + plugin.configYml.getInt("gui.activator-slot.column"), + activatorSlot + ) + setSlot( + plugin.configYml.getInt("gui.close.location.row"), + plugin.configYml.getInt("gui.close.location.column"), + Slot.builder( + ItemStackBuilder(closeMaterial) + .setDisplayName(plugin.langYml.getString("menu.close")) + .build() + ).onLeftClick { event, _, _ -> + event.whoClicked.closeInventory() + }.build() + ) + onClose { event, menu -> + DropQueue(event.player as Player) + .addItems(menu.getCaptiveItems(event.player as Player)) + .setLocation(event.player.eyeLocation) + .push() + } + }.build() + } +} \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/util/MetadatedReforgeStatus.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/util/MetadatedReforgeStatus.kt new file mode 100644 index 0000000..dc68dbf --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/util/MetadatedReforgeStatus.kt @@ -0,0 +1,3 @@ +package com.willfp.reforges.reforges.util + +data class MetadatedReforgeStatus(val status: ReforgeStatus, val cost: Double) diff --git a/eco-core/core-plugin/src/main/resources/config.yml b/eco-core/core-plugin/src/main/resources/config.yml index ba87f91..7d8848a 100644 --- a/eco-core/core-plugin/src/main/resources/config.yml +++ b/eco-core/core-plugin/src/main/resources/config.yml @@ -43,6 +43,10 @@ gui: - "100000001" - "100000001" + activator-slot: + row: 2 + column: 5 + stone-slot: row: 4 column: 7 From d172160f97f5685a4bffb3c03bbece2635a39beb Mon Sep 17 00:00:00 2001 From: Auxilor Date: Thu, 14 Oct 2021 12:36:34 +0100 Subject: [PATCH 11/29] Lots of under-the-hood work --- .../java/com/willfp/reforges/reforges/Reforges.java | 2 +- .../com/willfp/reforges/display/ReforgesDisplay.kt | 10 ++++++---- .../main/kotlin/com/willfp/reforges/gui/ReforgeGUI.kt | 9 ++++++--- .../kotlin/com/willfp/reforges/reforges/Reforge.kt | 4 ++++ 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/Reforges.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/Reforges.java index 57a377c..3f4c4ff 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/Reforges.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/Reforges.java @@ -60,7 +60,7 @@ public class Reforges { } for (JSONConfig config : plugin.getReforgesJson().getSubsections("reforges")) { - addNewReforge(new Reforge(config, plugin)); + new Reforge(config, plugin); } } diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/display/ReforgesDisplay.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/display/ReforgesDisplay.kt index 93e5ac1..8a620cd 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/display/ReforgesDisplay.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/display/ReforgesDisplay.kt @@ -65,10 +65,12 @@ class ReforgesDisplay(private val plugin: ReforgesPlugin) : DisplayModule(plugin if (stone != null) { meta.setDisplayName(plugin.configYml.getString("reforge.stone.name").replace("%reforge%", stone.name)) - SkullUtils.setSkullTexture( - meta as SkullMeta, - stone.config.getString("stone.texture") - ) + if (stone.config.has("stone.texture") && stone.config.getString("stone.texture").isNotEmpty()) { + SkullUtils.setSkullTexture( + meta as SkullMeta, + stone.config.getString("stone.texture") + ) + } itemStack.itemMeta = meta val stoneLore = plugin.configYml.getStrings("reforge.stone.lore").map { "${Display.PREFIX}${it.replace("%reforge%", stone.name)}" diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/gui/ReforgeGUI.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/gui/ReforgeGUI.kt index ca08c83..168099d 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/gui/ReforgeGUI.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/gui/ReforgeGUI.kt @@ -27,6 +27,7 @@ object ReforgeGUI { update(ReforgesPlugin.getInstance()) } + @JvmStatic @ConfigUpdater fun update(plugin: EcoPlugin) { val handler = ReforgeHandler(plugin) @@ -39,13 +40,13 @@ object ReforgeGUI { val (status, specialCost) = ReforgeUtils.getStatus(menu.getCaptiveItems(player)) - val cost: Double = when (status) { - ReforgeStatus.ALLOW -> { + val cost: Double = when { + status == ReforgeStatus.ALLOW || (status == ReforgeStatus.ALLOW_STONE && specialCost < 0) -> { val amountOfReforges = ReforgeUtils.getReforges(menu.getCaptiveItems(player)[0]) plugin.configYml.getDouble("reforge.cost") * plugin.configYml.getDouble("reforge.cost-exponent").pow(amountOfReforges) } - ReforgeStatus.ALLOW_STONE -> { + status == ReforgeStatus.ALLOW_STONE -> { specialCost } else -> 0.0 // Never used, but at least kotlin can shut up @@ -101,6 +102,8 @@ object ReforgeGUI { } } } + + previous.itemMeta = meta } onLeftClick(handler::handleReforgeClick) }.build() diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/Reforge.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/Reforge.kt index 65a6956..51ac8dc 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/Reforge.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/Reforge.kt @@ -53,8 +53,12 @@ class Reforge( val stonePrice = config.getIntOrNull("stone.price") ?: -1 init { + Reforges.addNewReforge(this) + ReforgeUtils.setReforgeStone(stone, this) + Display.display(stone) + CustomItem( plugin.namespacedKeyFactory.create("stone_" + this.id), { test -> ReforgeUtils.getReforgeStone(test) == this }, From e721a0aa2c9da9fbbb3e3564f179a3985896e012 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Thu, 14 Oct 2021 12:38:34 +0100 Subject: [PATCH 12/29] Fixed stone bug --- .../src/main/kotlin/com/willfp/reforges/reforges/Reforge.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/Reforge.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/Reforge.kt index 51ac8dc..10b6c35 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/Reforge.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/Reforge.kt @@ -44,7 +44,7 @@ class Reforge( val stone: ItemStack = SkullBuilder().apply { if (config.getBool("stone.enabled")) { setSkullTexture(config.getString("stone.texture")) - setDisplayName(plugin.configYml.getString("stone.name").replace("%reforge%", name)) + setDisplayName(plugin.configYml.getString("reforge.stone.name").replace("%reforge%", name)) addLoreLines( plugin.configYml.getStrings("stone.lore").map { "${Display.PREFIX}${it.replace("%reforge%", name)}" }) } From bfd29af3a8129418c03044a86d3541a9fd4be0ab Mon Sep 17 00:00:00 2001 From: Auxilor Date: Thu, 14 Oct 2021 12:38:48 +0100 Subject: [PATCH 13/29] Updated to 3.6.0 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 305bccf..489ec85 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -version = 3.4.0 +version = 3.5.0 plugin-name = Reforges \ No newline at end of file From a2de449d3951937d13371141d4f0957acc343b11 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Thu, 14 Oct 2021 13:01:36 +0100 Subject: [PATCH 14/29] Added extra safety checks --- .../java/com/willfp/reforges/ReforgesPlugin.java | 13 +++++++++++++ .../integrations/ecoskills/EffectAddStat.kt | 1 + 2 files changed, 14 insertions(+) diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/ReforgesPlugin.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/ReforgesPlugin.java index 3447c43..5007ddf 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/reforges/ReforgesPlugin.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/reforges/ReforgesPlugin.java @@ -10,11 +10,13 @@ import com.willfp.reforges.commands.CommandReforges; import com.willfp.reforges.config.ReforgesJson; import com.willfp.reforges.config.TargetYml; import com.willfp.reforges.display.ReforgesDisplay; +import com.willfp.reforges.effects.ConfiguredEffect; import com.willfp.reforges.effects.Effect; import com.willfp.reforges.effects.Effects; import com.willfp.reforges.integrations.aureliumskills.AureliumSkillsIntegration; import com.willfp.reforges.integrations.ecoskills.EcoSkillsIntegration; import com.willfp.reforges.integrations.talismans.TalismansIntegration; +import com.willfp.reforges.reforges.Reforge; import com.willfp.reforges.reforges.Reforges; import com.willfp.reforges.reforges.util.ReforgeArgParser; import com.willfp.reforges.reforges.util.ReforgeEnableListeners; @@ -66,6 +68,17 @@ public class ReforgesPlugin extends EcoPlugin { Items.registerArgParser(new ReforgeArgParser()); } + @Override + protected void handleDisable() { + for (Player player : Bukkit.getOnlinePlayers()) { + for (Reforge value : Reforges.values()) { + for (ConfiguredEffect effect : value.getEffects()) { + effect.getEffect().handleDisabling(player); + } + } + } + } + @Override protected void handleAfterLoad() { EconomyHandler.setEnabled(EconomyHandler.init()); diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/integrations/ecoskills/EffectAddStat.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/integrations/ecoskills/EffectAddStat.kt index 175544b..90a1ddd 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/integrations/ecoskills/EffectAddStat.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/integrations/ecoskills/EffectAddStat.kt @@ -6,6 +6,7 @@ import com.willfp.ecoskills.api.modifier.PlayerStatModifier import com.willfp.ecoskills.stats.Stats import com.willfp.reforges.effects.Effect import com.willfp.reforges.effects.getEffectAmount +import org.bukkit.Bukkit import org.bukkit.entity.Player class EffectAddStat : Effect("add_stat") { From 1f7866eba4e6c0148dbaf0ab7e7fb9640306f9d2 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Fri, 15 Oct 2021 09:41:32 +0100 Subject: [PATCH 15/29] Fixed reward_kill after much pain --- .../reforges/effects/effects/EffectRewardBlockBreak.kt | 2 +- .../reforges/effects/effects/EffectRewardKill.kt | 10 ++++------ .../willfp/reforges/reforges/util/WatcherTriggers.kt | 2 +- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/effects/effects/EffectRewardBlockBreak.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/effects/effects/EffectRewardBlockBreak.kt index 8cdc4f9..b376d4a 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/effects/effects/EffectRewardBlockBreak.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/effects/effects/EffectRewardBlockBreak.kt @@ -7,7 +7,7 @@ import org.bukkit.block.Block import org.bukkit.entity.Player import org.bukkit.event.block.BlockBreakEvent -class EffectRewardBlockBreak : Effect("reward_kill") { +class EffectRewardBlockBreak : Effect("reward_block_break") { override fun onBlockBreak( player: Player, block: Block, diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/effects/effects/EffectRewardKill.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/effects/effects/EffectRewardKill.kt index 31a77fa..a6b6a38 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/effects/effects/EffectRewardKill.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/effects/effects/EffectRewardKill.kt @@ -8,12 +8,10 @@ import org.bukkit.entity.LivingEntity import org.bukkit.entity.Player class EffectRewardKill : Effect("reward_kill") { - override fun onKill( - killer: Player, - victim: LivingEntity, - event: EntityDeathByEntityEvent, - config: JSONConfig - ) { + override fun onKill(killer: Player, + victim: LivingEntity, + event: EntityDeathByEntityEvent, + config: JSONConfig) { if (EconomyHandler.isEnabled()) { EconomyHandler.getInstance().depositPlayer(killer, config.getDouble("amount")) } diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/util/WatcherTriggers.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/util/WatcherTriggers.kt index b0531c1..07c4c45 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/util/WatcherTriggers.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/util/WatcherTriggers.kt @@ -222,7 +222,7 @@ class WatcherTriggers( if (NumberUtils.randFloat(0.0, 100.0) > config.getDoubleOrNull("chance") ?: 100.0) { continue } - effect.onKill(killer, victim, event, config) + (effect as Watcher).onKill(killer, victim, event, config) } } } From 48b5a32615df9c4dc29d60e5fef2a99ba5a13a8f Mon Sep 17 00:00:00 2001 From: Auxilor Date: Fri, 15 Oct 2021 09:42:01 +0100 Subject: [PATCH 16/29] Updated to 3.5.1 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 489ec85..33b674e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -version = 3.5.0 +version = 3.5.1 plugin-name = Reforges \ No newline at end of file From 9796254f6aa53445937122ee98b112b5ea0f654b Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sun, 17 Oct 2021 11:39:21 +0100 Subject: [PATCH 17/29] Rename .java to .kt --- .../com/willfp/reforges/reforges/util/ReforgeArgParser.kt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename eco-core/core-plugin/src/main/{java/com/willfp/reforges/reforges/util/ReforgeArgParser.java => kotlin/com/willfp/reforges/reforges/util/ReforgeArgParser.kt} (100%) diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/ReforgeArgParser.java b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/util/ReforgeArgParser.kt similarity index 100% rename from eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/ReforgeArgParser.java rename to eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/util/ReforgeArgParser.kt From f0a6b85dd852cf41e4c1be2650b65393a8a0fc06 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sun, 17 Oct 2021 11:39:21 +0100 Subject: [PATCH 18/29] Internal changes --- .../reforges/util/ReforgeArgParser.kt | 69 ++++---- .../willfp/reforges/reforges/util/Watcher.kt} | 157 ++++++++++-------- 2 files changed, 116 insertions(+), 110 deletions(-) rename eco-core/core-plugin/src/main/{java/com/willfp/reforges/reforges/util/Watcher.java => kotlin/com/willfp/reforges/reforges/util/Watcher.kt} (50%) diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/util/ReforgeArgParser.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/util/ReforgeArgParser.kt index b4f0fd1..af7872b 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/util/ReforgeArgParser.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/util/ReforgeArgParser.kt @@ -1,49 +1,36 @@ -package com.willfp.reforges.reforges.util; +package com.willfp.reforges.reforges.util -import com.willfp.eco.core.items.args.LookupArgParser; -import com.willfp.reforges.reforges.Reforge; -import com.willfp.reforges.reforges.Reforges; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import com.willfp.eco.core.items.args.LookupArgParser +import com.willfp.reforges.reforges.Reforge +import com.willfp.reforges.reforges.Reforges +import org.bukkit.inventory.ItemStack +import org.bukkit.inventory.meta.ItemMeta +import java.util.function.Predicate -import java.util.function.Predicate; +class ReforgeArgParser : LookupArgParser { + override fun parseArguments( + args: Array, + meta: ItemMeta + ): Predicate? { + var reforge: Reforge? = null -public class ReforgeArgParser implements LookupArgParser { - @Override - public @Nullable Predicate parseArguments(@NotNull final String[] args, - @NotNull final ItemMeta meta) { - Reforge reforge = null; - for (String arg : args) { - String[] split = arg.split(":"); - if (split.length == 1 || !split[0].equalsIgnoreCase("reforge")) { - continue; + for (arg in args) { + val split = arg.split(":").toTypedArray() + if (split.size == 1 || !split[0].equals("reforge", ignoreCase = true)) { + continue } - - Reforge match = Reforges.getByKey(split[1].toLowerCase()); - if (match == null) { - continue; - } - - reforge = match; - break; + val match = Reforges.getByKey(split[1].lowercase()) ?: continue + reforge = match + break } - if (reforge == null) { - return null; + reforge ?: return null + + ReforgeUtils.setReforge(meta, reforge) + + return Predicate { test -> + val testMeta = test.itemMeta ?: return@Predicate false + reforge == ReforgeUtils.getReforge(testMeta) } - - ReforgeUtils.setReforge(meta, reforge); - - Reforge finalReforge = reforge; - return test -> { - ItemMeta testMeta = test.getItemMeta(); - if (testMeta == null) { - return false; - } - - return finalReforge.equals(ReforgeUtils.getReforge(testMeta)); - }; } -} +} \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/Watcher.java b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/util/Watcher.kt similarity index 50% rename from eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/Watcher.java rename to eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/util/Watcher.kt index 777293d..065f768 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/Watcher.java +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/util/Watcher.kt @@ -1,25 +1,18 @@ -package com.willfp.reforges.reforges.util; +package com.willfp.reforges.reforges.util -import com.willfp.eco.core.config.interfaces.JSONConfig; -import com.willfp.eco.core.events.EntityDeathByEntityEvent; -import org.bukkit.block.Block; -import org.bukkit.entity.Arrow; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Player; -import org.bukkit.entity.Projectile; -import org.bukkit.entity.Trident; -import org.bukkit.event.block.BlockBreakEvent; -import org.bukkit.event.entity.EntityDamageByEntityEvent; -import org.bukkit.event.entity.EntityDamageEvent; -import org.bukkit.event.entity.ProjectileHitEvent; -import org.bukkit.event.entity.ProjectileLaunchEvent; -import org.bukkit.event.player.PlayerItemDamageEvent; -import org.bukkit.event.player.PlayerMoveEvent; -import org.jetbrains.annotations.NotNull; - -@SuppressWarnings("unused") -public interface Watcher { +import com.willfp.eco.core.config.interfaces.JSONConfig +import com.willfp.eco.core.events.EntityDeathByEntityEvent +import org.bukkit.block.Block +import org.bukkit.entity.* +import org.bukkit.event.block.BlockBreakEvent +import org.bukkit.event.entity.EntityDamageByEntityEvent +import org.bukkit.event.entity.EntityDamageEvent +import org.bukkit.event.entity.ProjectileHitEvent +import org.bukkit.event.entity.ProjectileLaunchEvent +import org.bukkit.event.player.PlayerItemDamageEvent +import org.bukkit.event.player.PlayerMoveEvent +interface Watcher { /** * Called when a player breaks a block. * @@ -28,10 +21,12 @@ public interface Watcher { * @param event The event that called this watcher. * @param config The effect config. */ - default void onBlockBreak(@NotNull final Player player, - @NotNull final Block block, - @NotNull final BlockBreakEvent event, - @NotNull final JSONConfig config) { + fun onBlockBreak( + player: Player, + block: Block, + event: BlockBreakEvent, + config: JSONConfig + ) { // Empty default as effects only override required watchers. } @@ -43,10 +38,12 @@ public interface Watcher { * @param event The event. * @param config The effect config. */ - default void onAnyDamage(@NotNull final Player attacker, - @NotNull final LivingEntity victim, - @NotNull final EntityDamageByEntityEvent event, - @NotNull final JSONConfig config) { + fun onAnyDamage( + attacker: Player, + victim: LivingEntity, + event: EntityDamageByEntityEvent, + config: JSONConfig + ) { // Empty default as effects only override required watchers. } @@ -59,11 +56,13 @@ public interface Watcher { * @param event The event that called this watcher. * @param config The effect config. */ - default void onArrowDamage(@NotNull final Player attacker, - @NotNull final LivingEntity victim, - @NotNull final Arrow arrow, - @NotNull final EntityDamageByEntityEvent event, - @NotNull final JSONConfig config) { + fun onArrowDamage( + attacker: Player, + victim: LivingEntity, + arrow: Arrow, + event: EntityDamageByEntityEvent, + config: JSONConfig + ) { // Empty default as effects only override required watchers. } @@ -76,11 +75,13 @@ public interface Watcher { * @param event The event that called this watcher. * @param config The effect config. */ - default void onTridentDamage(@NotNull final Player attacker, - @NotNull final LivingEntity victim, - @NotNull final Trident trident, - @NotNull final EntityDamageByEntityEvent event, - @NotNull final JSONConfig config) { + fun onTridentDamage( + attacker: Player, + victim: LivingEntity, + trident: Trident, + event: EntityDamageByEntityEvent, + config: JSONConfig + ) { // Empty default as effects only override required watchers. } @@ -91,9 +92,11 @@ public interface Watcher { * @param event The event that called this watcher. * @param config The effect config. */ - default void onJump(@NotNull final Player player, - @NotNull final PlayerMoveEvent event, - @NotNull final JSONConfig config) { + fun onJump( + player: Player, + event: PlayerMoveEvent, + config: JSONConfig + ) { // Empty default as effects only override required watchers. } @@ -105,10 +108,12 @@ public interface Watcher { * @param event The event that called this watcher. * @param config The effect config. */ - default void onMeleeAttack(@NotNull final Player attacker, - @NotNull final LivingEntity victim, - @NotNull final EntityDamageByEntityEvent event, - @NotNull final JSONConfig config) { + fun onMeleeAttack( + attacker: Player, + victim: LivingEntity, + event: EntityDamageByEntityEvent, + config: JSONConfig + ) { // Empty default as effects only override required watchers. } @@ -120,10 +125,12 @@ public interface Watcher { * @param event The event that called this watcher. * @param config The effect config. */ - default void onProjectileLaunch(@NotNull final Player shooter, - @NotNull final Projectile projectile, - @NotNull final ProjectileLaunchEvent event, - @NotNull final JSONConfig config) { + fun onProjectileLaunch( + shooter: Player, + projectile: Projectile, + event: ProjectileLaunchEvent, + config: JSONConfig + ) { // Empty default as effects only override required watchers. } @@ -134,9 +141,11 @@ public interface Watcher { * @param event The event that called this watcher. * @param config The effect config. */ - default void onFallDamage(@NotNull final Player faller, - @NotNull final EntityDamageEvent event, - @NotNull final JSONConfig config) { + fun onFallDamage( + faller: Player, + event: EntityDamageEvent, + config: JSONConfig + ) { // Empty default as effects only override required watchers. } @@ -147,9 +156,11 @@ public interface Watcher { * @param event The event that called this watcher. * @param config The effect config. */ - default void onProjectileHit(@NotNull final Player shooter, - @NotNull final ProjectileHitEvent event, - @NotNull final JSONConfig config) { + fun onProjectileHit( + shooter: Player, + event: ProjectileHitEvent, + config: JSONConfig + ) { // Empty default as effects only override required watchers. } @@ -161,10 +172,12 @@ public interface Watcher { * @param event The event. * @param config The effect config. */ - default void onKill(@NotNull final Player killer, - @NotNull final LivingEntity victim, - @NotNull final EntityDeathByEntityEvent event, - @NotNull final JSONConfig config) { + fun onKill( + killer: Player, + victim: LivingEntity, + event: EntityDeathByEntityEvent, + config: JSONConfig + ) { // Empty default as effects only override required watchers. } @@ -175,9 +188,11 @@ public interface Watcher { * @param event The event that called this watcher. * @param config The effect config. */ - default void onDamageWearingArmor(@NotNull final Player victim, - @NotNull final EntityDamageEvent event, - @NotNull final JSONConfig config) { + fun onDamageWearingArmor( + victim: Player, + event: EntityDamageEvent, + config: JSONConfig + ) { // Empty default as effects only override required watchers. } @@ -189,10 +204,12 @@ public interface Watcher { * @param event The event that called this watcher. * @param config The effect config. */ - default void onTridentLaunch(@NotNull final Player shooter, - @NotNull final Trident trident, - @NotNull final ProjectileLaunchEvent event, - @NotNull final JSONConfig config) { + fun onTridentLaunch( + shooter: Player, + trident: Trident, + event: ProjectileLaunchEvent, + config: JSONConfig + ) { // Empty default as effects only override required watchers. } @@ -202,8 +219,10 @@ public interface Watcher { * @param event The event that called this watcher. * @param config The effect config. */ - default void onDurabilityDamage(@NotNull final PlayerItemDamageEvent event, - @NotNull final JSONConfig config) { + fun onDurabilityDamage( + event: PlayerItemDamageEvent, + config: JSONConfig + ) { // Empty default as effects only override required watchers. } -} +} \ No newline at end of file From a9be4aa66fc0838d2531c3c0e5e9badf84b06ad3 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sun, 17 Oct 2021 11:39:35 +0100 Subject: [PATCH 19/29] Updated to 3.5.2 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 33b674e..a4dbd92 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -version = 3.5.1 +version = 3.5.2 plugin-name = Reforges \ No newline at end of file From f9931c37a25a3f6f34d3c974eca38a04c68129f0 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Mon, 18 Oct 2021 12:52:01 +0100 Subject: [PATCH 20/29] Un-moved watcher to kt --- .../reforges/reforges/util/Watcher.java} | 157 ++++++++---------- 1 file changed, 69 insertions(+), 88 deletions(-) rename eco-core/core-plugin/src/main/{kotlin/com/willfp/reforges/reforges/util/Watcher.kt => java/com/willfp/reforges/reforges/util/Watcher.java} (50%) diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/util/Watcher.kt b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/Watcher.java similarity index 50% rename from eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/util/Watcher.kt rename to eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/Watcher.java index 065f768..777293d 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/reforges/util/Watcher.kt +++ b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/Watcher.java @@ -1,18 +1,25 @@ -package com.willfp.reforges.reforges.util +package com.willfp.reforges.reforges.util; -import com.willfp.eco.core.config.interfaces.JSONConfig -import com.willfp.eco.core.events.EntityDeathByEntityEvent -import org.bukkit.block.Block -import org.bukkit.entity.* -import org.bukkit.event.block.BlockBreakEvent -import org.bukkit.event.entity.EntityDamageByEntityEvent -import org.bukkit.event.entity.EntityDamageEvent -import org.bukkit.event.entity.ProjectileHitEvent -import org.bukkit.event.entity.ProjectileLaunchEvent -import org.bukkit.event.player.PlayerItemDamageEvent -import org.bukkit.event.player.PlayerMoveEvent +import com.willfp.eco.core.config.interfaces.JSONConfig; +import com.willfp.eco.core.events.EntityDeathByEntityEvent; +import org.bukkit.block.Block; +import org.bukkit.entity.Arrow; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; +import org.bukkit.entity.Projectile; +import org.bukkit.entity.Trident; +import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.entity.ProjectileHitEvent; +import org.bukkit.event.entity.ProjectileLaunchEvent; +import org.bukkit.event.player.PlayerItemDamageEvent; +import org.bukkit.event.player.PlayerMoveEvent; +import org.jetbrains.annotations.NotNull; + +@SuppressWarnings("unused") +public interface Watcher { -interface Watcher { /** * Called when a player breaks a block. * @@ -21,12 +28,10 @@ interface Watcher { * @param event The event that called this watcher. * @param config The effect config. */ - fun onBlockBreak( - player: Player, - block: Block, - event: BlockBreakEvent, - config: JSONConfig - ) { + default void onBlockBreak(@NotNull final Player player, + @NotNull final Block block, + @NotNull final BlockBreakEvent event, + @NotNull final JSONConfig config) { // Empty default as effects only override required watchers. } @@ -38,12 +43,10 @@ interface Watcher { * @param event The event. * @param config The effect config. */ - fun onAnyDamage( - attacker: Player, - victim: LivingEntity, - event: EntityDamageByEntityEvent, - config: JSONConfig - ) { + default void onAnyDamage(@NotNull final Player attacker, + @NotNull final LivingEntity victim, + @NotNull final EntityDamageByEntityEvent event, + @NotNull final JSONConfig config) { // Empty default as effects only override required watchers. } @@ -56,13 +59,11 @@ interface Watcher { * @param event The event that called this watcher. * @param config The effect config. */ - fun onArrowDamage( - attacker: Player, - victim: LivingEntity, - arrow: Arrow, - event: EntityDamageByEntityEvent, - config: JSONConfig - ) { + default void onArrowDamage(@NotNull final Player attacker, + @NotNull final LivingEntity victim, + @NotNull final Arrow arrow, + @NotNull final EntityDamageByEntityEvent event, + @NotNull final JSONConfig config) { // Empty default as effects only override required watchers. } @@ -75,13 +76,11 @@ interface Watcher { * @param event The event that called this watcher. * @param config The effect config. */ - fun onTridentDamage( - attacker: Player, - victim: LivingEntity, - trident: Trident, - event: EntityDamageByEntityEvent, - config: JSONConfig - ) { + default void onTridentDamage(@NotNull final Player attacker, + @NotNull final LivingEntity victim, + @NotNull final Trident trident, + @NotNull final EntityDamageByEntityEvent event, + @NotNull final JSONConfig config) { // Empty default as effects only override required watchers. } @@ -92,11 +91,9 @@ interface Watcher { * @param event The event that called this watcher. * @param config The effect config. */ - fun onJump( - player: Player, - event: PlayerMoveEvent, - config: JSONConfig - ) { + default void onJump(@NotNull final Player player, + @NotNull final PlayerMoveEvent event, + @NotNull final JSONConfig config) { // Empty default as effects only override required watchers. } @@ -108,12 +105,10 @@ interface Watcher { * @param event The event that called this watcher. * @param config The effect config. */ - fun onMeleeAttack( - attacker: Player, - victim: LivingEntity, - event: EntityDamageByEntityEvent, - config: JSONConfig - ) { + default void onMeleeAttack(@NotNull final Player attacker, + @NotNull final LivingEntity victim, + @NotNull final EntityDamageByEntityEvent event, + @NotNull final JSONConfig config) { // Empty default as effects only override required watchers. } @@ -125,12 +120,10 @@ interface Watcher { * @param event The event that called this watcher. * @param config The effect config. */ - fun onProjectileLaunch( - shooter: Player, - projectile: Projectile, - event: ProjectileLaunchEvent, - config: JSONConfig - ) { + default void onProjectileLaunch(@NotNull final Player shooter, + @NotNull final Projectile projectile, + @NotNull final ProjectileLaunchEvent event, + @NotNull final JSONConfig config) { // Empty default as effects only override required watchers. } @@ -141,11 +134,9 @@ interface Watcher { * @param event The event that called this watcher. * @param config The effect config. */ - fun onFallDamage( - faller: Player, - event: EntityDamageEvent, - config: JSONConfig - ) { + default void onFallDamage(@NotNull final Player faller, + @NotNull final EntityDamageEvent event, + @NotNull final JSONConfig config) { // Empty default as effects only override required watchers. } @@ -156,11 +147,9 @@ interface Watcher { * @param event The event that called this watcher. * @param config The effect config. */ - fun onProjectileHit( - shooter: Player, - event: ProjectileHitEvent, - config: JSONConfig - ) { + default void onProjectileHit(@NotNull final Player shooter, + @NotNull final ProjectileHitEvent event, + @NotNull final JSONConfig config) { // Empty default as effects only override required watchers. } @@ -172,12 +161,10 @@ interface Watcher { * @param event The event. * @param config The effect config. */ - fun onKill( - killer: Player, - victim: LivingEntity, - event: EntityDeathByEntityEvent, - config: JSONConfig - ) { + default void onKill(@NotNull final Player killer, + @NotNull final LivingEntity victim, + @NotNull final EntityDeathByEntityEvent event, + @NotNull final JSONConfig config) { // Empty default as effects only override required watchers. } @@ -188,11 +175,9 @@ interface Watcher { * @param event The event that called this watcher. * @param config The effect config. */ - fun onDamageWearingArmor( - victim: Player, - event: EntityDamageEvent, - config: JSONConfig - ) { + default void onDamageWearingArmor(@NotNull final Player victim, + @NotNull final EntityDamageEvent event, + @NotNull final JSONConfig config) { // Empty default as effects only override required watchers. } @@ -204,12 +189,10 @@ interface Watcher { * @param event The event that called this watcher. * @param config The effect config. */ - fun onTridentLaunch( - shooter: Player, - trident: Trident, - event: ProjectileLaunchEvent, - config: JSONConfig - ) { + default void onTridentLaunch(@NotNull final Player shooter, + @NotNull final Trident trident, + @NotNull final ProjectileLaunchEvent event, + @NotNull final JSONConfig config) { // Empty default as effects only override required watchers. } @@ -219,10 +202,8 @@ interface Watcher { * @param event The event that called this watcher. * @param config The effect config. */ - fun onDurabilityDamage( - event: PlayerItemDamageEvent, - config: JSONConfig - ) { + default void onDurabilityDamage(@NotNull final PlayerItemDamageEvent event, + @NotNull final JSONConfig config) { // Empty default as effects only override required watchers. } -} \ No newline at end of file +} From 8c6240219d19bdd080f9cf03f758d3b8e1eab5a4 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Mon, 18 Oct 2021 12:52:11 +0100 Subject: [PATCH 21/29] Updated to 3.5.3 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index a4dbd92..7e6302c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -version = 3.5.2 +version = 3.5.3 plugin-name = Reforges \ No newline at end of file From e529fd44fcfa63a38dfe2ae1272daef467b46f15 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Mon, 25 Oct 2021 10:34:57 +0100 Subject: [PATCH 22/29] Moved commands to kotlin --- .../willfp/reforges/commands/CommandGive.java | 151 ------------------ .../willfp/reforges/commands/CommandOpen.java | 67 -------- .../reforges/commands/CommandReforge.java | 36 ----- .../reforges/commands/CommandReforges.java | 29 ---- .../reforges/commands/CommandReload.java | 30 ---- .../willfp/reforges/commands/CommandGive.kt | 114 +++++++++++++ .../willfp/reforges/commands/CommandOpen.kt | 50 ++++++ .../reforges/commands/CommandReforge.kt | 25 +++ .../reforges/commands/CommandReforges.kt | 21 +++ .../willfp/reforges/commands/CommandReload.kt | 14 ++ 10 files changed, 224 insertions(+), 313 deletions(-) delete mode 100644 eco-core/core-plugin/src/main/java/com/willfp/reforges/commands/CommandGive.java delete mode 100644 eco-core/core-plugin/src/main/java/com/willfp/reforges/commands/CommandOpen.java delete mode 100644 eco-core/core-plugin/src/main/java/com/willfp/reforges/commands/CommandReforge.java delete mode 100644 eco-core/core-plugin/src/main/java/com/willfp/reforges/commands/CommandReforges.java delete mode 100644 eco-core/core-plugin/src/main/java/com/willfp/reforges/commands/CommandReload.java create mode 100644 eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/commands/CommandGive.kt create mode 100644 eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/commands/CommandOpen.kt create mode 100644 eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/commands/CommandReforge.kt create mode 100644 eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/commands/CommandReforges.kt create mode 100644 eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/commands/CommandReload.kt diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/commands/CommandGive.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/commands/CommandGive.java deleted file mode 100644 index 02c3c2d..0000000 --- a/eco-core/core-plugin/src/main/java/com/willfp/reforges/commands/CommandGive.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.willfp.reforges.commands; - - -import com.willfp.eco.core.EcoPlugin; -import com.willfp.eco.core.command.CommandHandler; -import com.willfp.eco.core.command.TabCompleteHandler; -import com.willfp.eco.core.command.impl.Subcommand; -import com.willfp.eco.core.config.updating.ConfigUpdater; -import com.willfp.reforges.reforges.Reforge; -import com.willfp.reforges.reforges.Reforges; -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; -import org.bukkit.util.StringUtil; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.stream.Collectors; - -public class CommandGive extends Subcommand { - /** - * The cached names. - */ - private static final List STONE_NAMES = new ArrayList<>(); - - /** - * The cached numbers. - */ - private static final List NUMBERS = Arrays.asList( - "1", - "2", - "3", - "4", - "5", - "10", - "32", - "64" - ); - - /** - * Instantiate a new command handler. - * - * @param plugin The plugin for the commands to listen for. - */ - public CommandGive(@NotNull final EcoPlugin plugin) { - super(plugin, "give", "reforges.command.give", false); - } - - /** - * Called on reload. - */ - @ConfigUpdater - public static void reload() { - STONE_NAMES.clear(); - STONE_NAMES.addAll(Reforges.values().stream() - .filter(Reforge::getRequiresStone) - .map(Reforge::getId) - .collect(Collectors.toList())); - } - - @Override - public CommandHandler getHandler() { - return (sender, args) -> { - if (args.isEmpty()) { - sender.sendMessage(this.getPlugin().getLangYml().getMessage("needs-player")); - return; - } - - if (args.size() == 1) { - sender.sendMessage(this.getPlugin().getLangYml().getMessage("needs-stone")); - return; - } - - int amount = 1; - - if (args.size() > 2) { - try { - amount = Integer.parseInt(args.get(2)); - } catch (NumberFormatException ignored) { - // do nothing - } - } - - String recieverName = args.get(0); - Player reciever = Bukkit.getPlayer(recieverName); - - if (reciever == null) { - sender.sendMessage(this.getPlugin().getLangYml().getMessage("invalid-player")); - return; - } - - String key = args.get(1); - - Reforge reforge = Reforges.getByKey(key); - - if (reforge == null) { - sender.sendMessage(this.getPlugin().getLangYml().getMessage("invalid-stone")); - return; - } - - String message = this.getPlugin().getLangYml().getMessage("give-success"); - message = message.replace("%reforge%", reforge.getName()).replace("%recipient%", reciever.getName()); - sender.sendMessage(message); - - ItemStack itemStack = reforge.getStone(); - itemStack.setAmount(amount); - reciever.getInventory().addItem(itemStack); - }; - } - - @Override - public TabCompleteHandler getTabCompleter() { - return (sender, args) -> { - List completions = new ArrayList<>(); - - if (args.isEmpty()) { - // Currently, this case is not ever reached - return STONE_NAMES; - } - - if (args.size() == 1) { - StringUtil.copyPartialMatches(args.get(0), Bukkit.getOnlinePlayers().stream().map(Player::getName).collect(Collectors.toList()), completions); - return completions; - } - - if (args.size() == 2) { - StringUtil.copyPartialMatches(args.get(1), STONE_NAMES, completions); - - Collections.sort(completions); - return completions; - } - - if (args.size() == 3) { - StringUtil.copyPartialMatches(args.get(2), NUMBERS, completions); - - completions.sort((s1, s2) -> { - int t1 = Integer.parseInt(s1); - int t2 = Integer.parseInt(s2); - return t1 - t2; - }); - - return completions; - } - - return new ArrayList<>(0); - }; - } -} diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/commands/CommandOpen.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/commands/CommandOpen.java deleted file mode 100644 index e58db84..0000000 --- a/eco-core/core-plugin/src/main/java/com/willfp/reforges/commands/CommandOpen.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.willfp.reforges.commands; - - -import com.willfp.eco.core.EcoPlugin; -import com.willfp.eco.core.command.CommandHandler; -import com.willfp.eco.core.command.TabCompleteHandler; -import com.willfp.eco.core.command.impl.PluginCommand; -import com.willfp.reforges.gui.ReforgeGUI; -import org.bukkit.Bukkit; -import org.bukkit.Sound; -import org.bukkit.entity.Player; -import org.bukkit.util.StringUtil; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; - -public class CommandOpen extends PluginCommand { - /** - * Instantiate a new command handler. - * - * @param plugin The plugin for the commands to listen for. - */ - public CommandOpen(@NotNull final EcoPlugin plugin) { - super(plugin, "open", "reforges.command.open", false); - } - - @Override - public CommandHandler getHandler() { - return (sender, args) -> { - if (args.isEmpty()) { - sender.sendMessage(this.getPlugin().getLangYml().getMessage("needs-player")); - return; - } - - Player player = Bukkit.getPlayer(args.get(0)); - - if (player == null) { - sender.sendMessage(this.getPlugin().getLangYml().getMessage("invalid-player")); - return; - } - - player.playSound( - player.getLocation(), - Sound.valueOf(this.getPlugin().getConfigYml().getString("gui.open-sound.id").toUpperCase()), - 1f, - (float) this.getPlugin().getConfigYml().getDouble("gui.open-sound.pitch") - ); - ReforgeGUI.getMenu().open(player); - }; - } - - @Override - public TabCompleteHandler getTabCompleter() { - return (sender, args) -> { - List completions = new ArrayList<>(); - - if (args.size() == 1) { - StringUtil.copyPartialMatches(args.get(0), Bukkit.getOnlinePlayers().stream().map(Player::getName).collect(Collectors.toList()), completions); - return completions; - } - - return new ArrayList<>(0); - }; - } -} diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/commands/CommandReforge.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/commands/CommandReforge.java deleted file mode 100644 index 4af39cc..0000000 --- a/eco-core/core-plugin/src/main/java/com/willfp/reforges/commands/CommandReforge.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.willfp.reforges.commands; - - -import com.willfp.eco.core.EcoPlugin; -import com.willfp.eco.core.command.CommandHandler; -import com.willfp.eco.core.command.impl.PluginCommand; -import com.willfp.reforges.gui.ReforgeGUI; -import org.bukkit.Sound; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; - -public class CommandReforge extends PluginCommand { - /** - * Instantiate a new command handler. - * - * @param plugin The plugin for the commands to listen for. - */ - public CommandReforge(@NotNull final EcoPlugin plugin) { - super(plugin, "reforge", "reforges.command.reforge", true); - } - - @Override - public CommandHandler getHandler() { - return (sender, args) -> { - Player player = (Player) sender; - - player.playSound( - player.getLocation(), - Sound.valueOf(this.getPlugin().getConfigYml().getString("gui.open-sound.id").toUpperCase()), - 1f, - (float) this.getPlugin().getConfigYml().getDouble("gui.open-sound.pitch") - ); - ReforgeGUI.getMenu().open(player); - }; - } -} diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/commands/CommandReforges.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/commands/CommandReforges.java deleted file mode 100644 index dd88391..0000000 --- a/eco-core/core-plugin/src/main/java/com/willfp/reforges/commands/CommandReforges.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.willfp.reforges.commands; - - -import com.willfp.eco.core.EcoPlugin; -import com.willfp.eco.core.command.CommandHandler; -import com.willfp.eco.core.command.impl.PluginCommand; -import org.jetbrains.annotations.NotNull; - -public class CommandReforges extends PluginCommand { - /** - * Instantiate a new command handler. - * - * @param plugin The plugin for the commands to listen for. - */ - public CommandReforges(@NotNull final EcoPlugin plugin) { - super(plugin, "reforges", "reforges.command.reforges", false); - - this.addSubcommand(new CommandReload(plugin)) - .addSubcommand(new CommandGive(plugin)) - .addSubcommand(new CommandOpen(plugin)); - } - - @Override - public CommandHandler getHandler() { - return (sender, args) -> { - sender.sendMessage(this.getPlugin().getLangYml().getMessage("invalid-command")); - }; - } -} diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/commands/CommandReload.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/commands/CommandReload.java deleted file mode 100644 index b5381d4..0000000 --- a/eco-core/core-plugin/src/main/java/com/willfp/reforges/commands/CommandReload.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.willfp.reforges.commands; - - -import com.willfp.eco.core.EcoPlugin; -import com.willfp.eco.core.command.CommandHandler; -import com.willfp.eco.core.command.impl.Subcommand; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -public class CommandReload extends Subcommand { - /** - * Instantiate a new command handler. - * - * @param plugin The plugin for the commands to listen for. - */ - public CommandReload(@NotNull final EcoPlugin plugin) { - super(plugin, "reload", "reforges.command.reload", false); - } - - @Override - public CommandHandler getHandler() { - return (sender, args) -> { - this.getPlugin().reload(); - sender.sendMessage(this.getPlugin().getLangYml().getMessage("reloaded")); - }; - } -} diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/commands/CommandGive.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/commands/CommandGive.kt new file mode 100644 index 0000000..2e7f380 --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/commands/CommandGive.kt @@ -0,0 +1,114 @@ +package com.willfp.reforges.commands + +import com.willfp.eco.core.EcoPlugin +import com.willfp.eco.core.command.CommandHandler +import com.willfp.eco.core.command.TabCompleteHandler +import com.willfp.eco.core.command.impl.Subcommand +import com.willfp.eco.core.config.updating.ConfigUpdater +import com.willfp.reforges.reforges.Reforge +import com.willfp.reforges.reforges.Reforges +import org.bukkit.Bukkit +import org.bukkit.util.StringUtil +import java.util.* +import java.util.stream.Collectors + +class CommandGive( + plugin: EcoPlugin +) : Subcommand(plugin, "give", "reforges.command.give", false) { + private val numbers = listOf( + "1", + "2", + "3", + "4", + "5", + "10", + "32", + "64" + ) + + override fun getHandler(): CommandHandler { + return CommandHandler { sender, args -> + if (args.isEmpty()) { + sender.sendMessage(plugin.langYml.getMessage("needs-player")) + return@CommandHandler + } + + if (args.size == 1) { + sender.sendMessage(plugin.langYml.getMessage("needs-stone")) + return@CommandHandler + } + + val amount = if (args.size > 2) args[2].toIntOrNull() ?: 1 else 1 + val recieverName = args[0] + val reciever = Bukkit.getPlayer(recieverName) + if (reciever == null) { + sender.sendMessage(plugin.langYml.getMessage("invalid-player")) + return@CommandHandler + } + val key = args[1] + val reforge = Reforges.getByKey(key) + if (reforge == null) { + sender.sendMessage(plugin.langYml.getMessage("invalid-stone")) + return@CommandHandler + } + var message = plugin.langYml.getMessage("give-success") + message = message.replace("%reforge%", reforge.name).replace("%recipient%", reciever.name) + sender.sendMessage(message) + val itemStack = reforge.stone + itemStack.amount = amount + reciever.inventory.addItem(itemStack) + } + } + + override fun getTabCompleter(): TabCompleteHandler { + return TabCompleteHandler { _, args -> + val completions = mutableListOf() + if (args.isEmpty()) { + // Currently, this case is not ever reached + return@TabCompleteHandler stoneNames + } + if (args.size == 1) { + StringUtil.copyPartialMatches( + args[0], + Bukkit.getOnlinePlayers().map { it.name }, + completions + ) + return@TabCompleteHandler completions + } + if (args.size == 2) { + StringUtil.copyPartialMatches(args[1], stoneNames, completions) + Collections.sort(completions) + return@TabCompleteHandler completions + } + if (args.size == 3) { + StringUtil.copyPartialMatches(args[2], numbers, completions) + completions.sortWith { s1, s2 -> + val t1 = s1.toInt() + val t2 = s2.toInt() + t1 - t2 + } + return@TabCompleteHandler completions + } + emptyList() + } + } + + companion object { + private val stoneNames = mutableListOf() + + /** + * Called on reload. + */ + @ConfigUpdater + @JvmStatic + fun reload() { + stoneNames.clear() + stoneNames.addAll( + Reforges.values().stream() + .filter(Reforge::requiresStone) + .map(Reforge::id) + .collect(Collectors.toList()) + ) + } + } +} \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/commands/CommandOpen.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/commands/CommandOpen.kt new file mode 100644 index 0000000..e718c74 --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/commands/CommandOpen.kt @@ -0,0 +1,50 @@ +package com.willfp.reforges.commands + +import com.willfp.eco.core.EcoPlugin +import com.willfp.eco.core.command.CommandHandler +import com.willfp.eco.core.command.TabCompleteHandler +import com.willfp.eco.core.command.impl.PluginCommand +import com.willfp.reforges.gui.ReforgeGUI.menu +import org.bukkit.Bukkit +import org.bukkit.Sound +import org.bukkit.util.StringUtil + +class CommandOpen( + plugin: EcoPlugin +) : PluginCommand(plugin, "open", "reforges.command.open", false) { + override fun getHandler(): CommandHandler { + return CommandHandler { sender, args -> + if (args.isEmpty()) { + sender.sendMessage(plugin.langYml.getMessage("needs-player")) + return@CommandHandler + } + val player = Bukkit.getPlayer(args[0]) + if (player == null) { + sender.sendMessage(plugin.langYml.getMessage("invalid-player")) + return@CommandHandler + } + player.playSound( + player.location, + Sound.valueOf(plugin.configYml.getString("gui.open-sound.id").uppercase()), + 1f, + plugin.configYml.getDouble("gui.open-sound.pitch").toFloat() + ) + menu.open(player) + } + } + + override fun getTabCompleter(): TabCompleteHandler { + return TabCompleteHandler { _, args -> + val completions = mutableListOf() + if (args.size == 1) { + StringUtil.copyPartialMatches( + args[0], + Bukkit.getOnlinePlayers().map { it.name }, + completions + ) + return@TabCompleteHandler completions + } + emptyList() + } + } +} \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/commands/CommandReforge.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/commands/CommandReforge.kt new file mode 100644 index 0000000..d086268 --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/commands/CommandReforge.kt @@ -0,0 +1,25 @@ +package com.willfp.reforges.commands + +import com.willfp.eco.core.EcoPlugin +import com.willfp.eco.core.command.CommandHandler +import com.willfp.eco.core.command.impl.PluginCommand +import com.willfp.reforges.gui.ReforgeGUI.menu +import org.bukkit.Sound +import org.bukkit.entity.Player + +class CommandReforge( + plugin: EcoPlugin +) : PluginCommand(plugin, "reforge", "reforges.command.reforge", true) { + override fun getHandler(): CommandHandler { + return CommandHandler { player, _ -> + player as Player + player.playSound( + player.location, + Sound.valueOf(plugin.configYml.getString("gui.open-sound.id").uppercase()), + 1f, + plugin.configYml.getDouble("gui.open-sound.pitch").toFloat() + ) + menu.open(player) + } + } +} \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/commands/CommandReforges.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/commands/CommandReforges.kt new file mode 100644 index 0000000..3ead430 --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/commands/CommandReforges.kt @@ -0,0 +1,21 @@ +package com.willfp.reforges.commands + +import com.willfp.eco.core.EcoPlugin +import com.willfp.eco.core.command.CommandHandler +import com.willfp.eco.core.command.impl.PluginCommand + +class CommandReforges(plugin: EcoPlugin) : PluginCommand(plugin, "reforges", "reforges.command.reforges", false) { + override fun getHandler(): CommandHandler { + return CommandHandler { sender, _ -> + sender.sendMessage( + plugin.langYml.getMessage("invalid-command") + ) + } + } + + init { + addSubcommand(CommandReload(plugin)) + .addSubcommand(CommandGive(plugin)) + .addSubcommand(CommandOpen(plugin)) + } +} \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/commands/CommandReload.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/commands/CommandReload.kt new file mode 100644 index 0000000..2bda176 --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/commands/CommandReload.kt @@ -0,0 +1,14 @@ +package com.willfp.reforges.commands + +import com.willfp.eco.core.EcoPlugin +import com.willfp.eco.core.command.CommandHandler +import com.willfp.eco.core.command.impl.Subcommand + +class CommandReload(plugin: EcoPlugin) : Subcommand(plugin, "reload", "reforges.command.reload", false) { + override fun getHandler(): CommandHandler { + return CommandHandler { sender, _ -> + plugin.reload() + sender.sendMessage(plugin.langYml.getMessage("reloaded")) + } + } +} \ No newline at end of file From 8d8ad52563d1b48abc12eb45ccafe49a44767393 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Mon, 25 Oct 2021 10:35:09 +0100 Subject: [PATCH 23/29] Updated to 3.5.4 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 7e6302c..ba3dc10 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -version = 3.5.3 +version = 3.5.4 plugin-name = Reforges \ No newline at end of file From a212cebe0df54391d3ad8903f3de6f1c2f4a6883 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Mon, 25 Oct 2021 10:54:41 +0100 Subject: [PATCH 24/29] Fixed kotlin update bug --- .../willfp/reforges/commands/CommandGive.kt | 33 ++++--------------- 1 file changed, 7 insertions(+), 26 deletions(-) diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/commands/CommandGive.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/commands/CommandGive.kt index 2e7f380..c907c3b 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/commands/CommandGive.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/reforges/commands/CommandGive.kt @@ -4,13 +4,9 @@ import com.willfp.eco.core.EcoPlugin import com.willfp.eco.core.command.CommandHandler import com.willfp.eco.core.command.TabCompleteHandler import com.willfp.eco.core.command.impl.Subcommand -import com.willfp.eco.core.config.updating.ConfigUpdater -import com.willfp.reforges.reforges.Reforge import com.willfp.reforges.reforges.Reforges import org.bukkit.Bukkit import org.bukkit.util.StringUtil -import java.util.* -import java.util.stream.Collectors class CommandGive( plugin: EcoPlugin @@ -65,7 +61,7 @@ class CommandGive( val completions = mutableListOf() if (args.isEmpty()) { // Currently, this case is not ever reached - return@TabCompleteHandler stoneNames + return@TabCompleteHandler Reforges.values().filter { it.requiresStone }.map { it.id } } if (args.size == 1) { StringUtil.copyPartialMatches( @@ -76,8 +72,12 @@ class CommandGive( return@TabCompleteHandler completions } if (args.size == 2) { - StringUtil.copyPartialMatches(args[1], stoneNames, completions) - Collections.sort(completions) + StringUtil.copyPartialMatches( + args[1], + Reforges.values().filter { it.requiresStone }.map { it.id }, + completions + ) + completions.sort() return@TabCompleteHandler completions } if (args.size == 3) { @@ -92,23 +92,4 @@ class CommandGive( emptyList() } } - - companion object { - private val stoneNames = mutableListOf() - - /** - * Called on reload. - */ - @ConfigUpdater - @JvmStatic - fun reload() { - stoneNames.clear() - stoneNames.addAll( - Reforges.values().stream() - .filter(Reforge::requiresStone) - .map(Reforge::id) - .collect(Collectors.toList()) - ) - } - } } \ No newline at end of file From e06885df90d17c99e8f439e9e0346a027adf4bce Mon Sep 17 00:00:00 2001 From: Auxilor Date: Mon, 25 Oct 2021 10:54:49 +0100 Subject: [PATCH 25/29] Updated to 3.5.5 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index ba3dc10..4b6637d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -version = 3.5.4 +version = 3.5.5 plugin-name = Reforges \ No newline at end of file From 7a211da7fd67f3bd2092adb80ea30bcf0c244fc6 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Tue, 26 Oct 2021 15:41:49 +0100 Subject: [PATCH 26/29] Fixed insufficient exp withdrawing money while failing --- .../reforges/reforges/util/ReforgeHandler.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/ReforgeHandler.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/ReforgeHandler.java index fde5cae..90f3018 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/ReforgeHandler.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/ReforgeHandler.java @@ -56,14 +56,15 @@ public class ReforgeHandler extends PluginDependent { return; } - + double cost = 0; if (EconomyHandler.isEnabled()) { - double cost = this.getPlugin().getConfigYml().getDouble("reforge.cost"); + cost = this.getPlugin().getConfigYml().getDouble("reforge.cost"); int reforges = ReforgeUtils.getReforges(toReforge); cost *= Math.pow(this.getPlugin().getConfigYml().getDouble("reforge.cost-exponent"), reforges); if (reforge.getRequiresStone() && reforge.getStonePrice() != -1) { cost = reforge.getStonePrice(); } + if (!EconomyHandler.getInstance().has(player, cost)) { player.sendMessage(this.getPlugin().getLangYml().getMessage("insufficient-money")); @@ -76,9 +77,6 @@ public class ReforgeHandler extends PluginDependent { return; } - - - EconomyHandler.getInstance().withdrawPlayer(player, cost); } int xpCost = this.getPlugin().getConfigYml().getInt("reforge.xp-cost"); @@ -97,6 +95,10 @@ public class ReforgeHandler extends PluginDependent { return; } + if (EconomyHandler.isEnabled()) { + EconomyHandler.getInstance().withdrawPlayer(player, cost); + } + player.setLevel(player.getLevel() - xpCost); player.sendMessage(this.getPlugin().getLangYml().getMessage("applied-reforge").replace("%reforge%", reforge.getName())); From 174d2c89d5895a987d6b20b9e8edc533466d7299 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Tue, 26 Oct 2021 15:41:58 +0100 Subject: [PATCH 27/29] Updated to 3.5.4 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 7e6302c..ba3dc10 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -version = 3.5.3 +version = 3.5.4 plugin-name = Reforges \ No newline at end of file From 8b331bd369b1965cedd1ae6a0f4436f2309e95f4 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Tue, 26 Oct 2021 15:42:14 +0100 Subject: [PATCH 28/29] Updated to 3.5.5 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index ba3dc10..4b6637d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -version = 3.5.4 +version = 3.5.5 plugin-name = Reforges \ No newline at end of file From e4a6a9fe39681254416e61e09aae542f1257f4bb Mon Sep 17 00:00:00 2001 From: Auxilor Date: Tue, 26 Oct 2021 15:42:49 +0100 Subject: [PATCH 29/29] Updated to 3.5.6 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 4b6637d..ca28d14 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -version = 3.5.5 +version = 3.5.6 plugin-name = Reforges \ No newline at end of file