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 8352b75..20ebaed 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 @@ -30,6 +30,11 @@ public class ReforgesPlugin extends EcoPlugin { instance = this; } + @Override + protected void handleEnable() { + this.getLogger().info(Reforges.values().size() + " Reforges Loaded"); + } + @Override protected void handleReload() { for (Reforge reforge : Reforges.values()) { diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/display/ReforgesDisplay.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/display/ReforgesDisplay.java index fa7682d..e4a9e86 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/reforges/display/ReforgesDisplay.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/reforges/display/ReforgesDisplay.java @@ -1,16 +1,18 @@ package com.willfp.reforges.display; import com.willfp.eco.core.EcoPlugin; +import com.willfp.eco.core.display.Display; import com.willfp.eco.core.display.DisplayModule; import com.willfp.eco.core.display.DisplayPriority; -import com.willfp.eco.core.fast.FastItemStack; import com.willfp.reforges.reforges.Reforge; import com.willfp.reforges.reforges.meta.ReforgeTarget; import com.willfp.reforges.reforges.util.ReforgeUtils; +import org.bukkit.Bukkit; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.jetbrains.annotations.NotNull; +import java.util.ArrayList; import java.util.List; public class ReforgesDisplay extends DisplayModule { @@ -28,31 +30,43 @@ public class ReforgesDisplay extends DisplayModule { @NotNull final Object... args) { ReforgeTarget target = ReforgeTarget.getForMaterial(itemStack.getType()); + Bukkit.getLogger().info(target + " hmm"); + if (target == null) { return; } - Reforge reforge = ReforgeUtils.getReforge(itemStack); + ItemMeta meta = itemStack.getItemMeta(); + assert meta != null; - if (reforge == null) { - return; + Reforge reforge = ReforgeUtils.getReforge(meta); + + Bukkit.getLogger().info(reforge + " yes?"); + + List lore = meta.hasLore() ? meta.getLore() : new ArrayList<>(); + assert lore != null; + + if (reforge != null) { + if (this.getPlugin().getConfigYml().getBool("reforge.display-in-lore")) { + List addLore = this.getPlugin().getConfigYml().getStrings("reforge.lore-suffix"); + + addLore.replaceAll(s -> Display.PREFIX + s); + addLore.replaceAll(s -> s.replace("%reforge%", reforge.getName())); + addLore.replaceAll(s -> s.replace("%description%", reforge.getDescription())); + lore.addAll(addLore); + } } - FastItemStack fastItemStack = FastItemStack.wrap(itemStack); + if (reforge == null && this.getPlugin().getConfigYml().getBool("reforge.show-reforgable")) { + List addLore = this.getPlugin().getConfigYml().getStrings("reforge.reforgable-suffix"); - List lore = fastItemStack.getLore(); - - if (this.getPlugin().getConfigYml().getBool("reforge.display-in-lore")) { - List addLore = this.getPlugin().getConfigYml().getStrings("reforge.lore-suffix"); - - addLore.replaceAll(s -> s.replace("%reforge%", reforge.getName())); - addLore.replaceAll(s -> s.replace("%description%", reforge.getDescription())); + addLore.replaceAll(s -> Display.PREFIX + s); + Bukkit.getLogger().info(addLore.toString()); lore.addAll(addLore); } - fastItemStack.setLore(lore); + meta.setLore(lore); - ItemMeta meta = itemStack.getItemMeta(); - assert meta != null; + itemStack.setItemMeta(meta); } } 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 21ed346..b16173e 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 @@ -54,10 +54,12 @@ public class ReforgeGUI { .setDisplayName("&r") .build() ).setModifier((player, menu, previous) -> { - if (menu.getCaptiveItems(player).isEmpty()) { - previous.setType(Material.RED_STAINED_GLASS_PANE); - } else { + + ReforgeStatus status = ReforgeUtils.getStatus(menu.getCaptiveItems(player)); + if (status == ReforgeStatus.ALLOW) { previous.setType(Material.LIME_STAINED_GLASS_PANE); + } else { + previous.setType(Material.RED_STAINED_GLASS_PANE); } }).build(); @@ -77,23 +79,7 @@ public class ReforgeGUI { return; } - ItemStack toReforge = menu.getCaptiveItems(player).isEmpty() ? null : menu.getCaptiveItems(player).get(0); - ReforgeStatus status = null; - - ReforgeTarget target = null; - - if (toReforge == null) { - status = ReforgeStatus.NO_ITEM; - } else { - target = ReforgeTarget.getForMaterial(toReforge.getType()); - if (target == null) { - status = ReforgeStatus.INVALID_ITEM; - } - } - - if (target != null) { - status = ReforgeStatus.ALLOW; - } + ReforgeStatus status = ReforgeUtils.getStatus(menu.getCaptiveItems(player)); switch (status) { case INVALID_ITEM -> { @@ -126,6 +112,11 @@ public class ReforgeGUI { assert target != null; Reforge reforge = ReforgeUtils.getRandomReforge(target); + + if (reforge == null) { + return; + } + ReforgeUtils.setReforge(toReforge, reforge); player.playSound( diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/meta/ReforgeTarget.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/meta/ReforgeTarget.java index 5c1fa7e..93e8b81 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/meta/ReforgeTarget.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/meta/ReforgeTarget.java @@ -119,7 +119,9 @@ public class ReforgeTarget { */ @Nullable public static ReforgeTarget getForMaterial(@NotNull final Material material) { - Optional matching = REGISTERED.stream().filter(rarity -> rarity.getMaterials().contains(material)).findFirst(); + Optional matching = REGISTERED.stream() + .filter(rarity -> !rarity.getName().equalsIgnoreCase("all")) + .filter(rarity -> rarity.getMaterials().contains(material)).findFirst(); return matching.orElse(null); } 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 bff73ec..750807a 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 @@ -2,6 +2,7 @@ package com.willfp.reforges.reforges.util; import com.willfp.eco.core.EcoPlugin; import com.willfp.reforges.ReforgesPlugin; +import com.willfp.reforges.gui.ReforgeStatus; import com.willfp.reforges.reforges.Reforge; import com.willfp.reforges.reforges.Reforges; import com.willfp.reforges.reforges.meta.ReforgeTarget; @@ -46,9 +47,35 @@ public class ReforgeUtils { Collections.shuffle(applicable); + if (applicable.isEmpty()) { + return null; + } + return applicable.get(0); } + public static ReforgeStatus getStatus(@NotNull final List captive) { + ItemStack toReforge = captive.isEmpty() ? null : captive.get(0); + ReforgeStatus status = null; + + ReforgeTarget target = null; + + if (toReforge == null) { + status = ReforgeStatus.NO_ITEM; + } else { + target = ReforgeTarget.getForMaterial(toReforge.getType()); + if (target == null) { + status = ReforgeStatus.INVALID_ITEM; + } + } + + if (target != null) { + status = ReforgeStatus.ALLOW; + } + + return status; + } + /** * Get reforge on an item. * @@ -82,6 +109,10 @@ public class ReforgeUtils { PersistentDataContainer container = meta.getPersistentDataContainer(); + if (!container.has(REFORGE_KEY, PersistentDataType.STRING)) { + return null; + } + String active = container.get(REFORGE_KEY, PersistentDataType.STRING); return Reforges.getByKey(active); diff --git a/eco-core/core-plugin/src/main/resources/config.yml b/eco-core/core-plugin/src/main/resources/config.yml index 8f22657..f278c66 100644 --- a/eco-core/core-plugin/src/main/resources/config.yml +++ b/eco-core/core-plugin/src/main/resources/config.yml @@ -32,7 +32,7 @@ gui: sound: id: BLOCK_ANVIL_USE - pitch: 0.8 + pitch: 1 reforge: cost: 5000 @@ -40,10 +40,16 @@ reforge: display-in-item-name: true display-in-lore: true + show-reforgable: true + + reforgable-suffix: + - "" + - "&8This item can be reforged!" + lore-suffix: - "" - - "&fReforge: %name%" - - "&8&o%description" + - "%reforge%" + - "&7&o%description%" targets: melee: diff --git a/eco-core/core-plugin/src/main/resources/reforges/sharp.yml b/eco-core/core-plugin/src/main/resources/reforges/sharp.yml index 0d83533..2a8c6af 100644 --- a/eco-core/core-plugin/src/main/resources/reforges/sharp.yml +++ b/eco-core/core-plugin/src/main/resources/reforges/sharp.yml @@ -2,9 +2,9 @@ # Sharp Reforge # -name: "&6Sharp" +name: "Sharp" enabled: true -description: "Deal &a3%&8&o more damage" +description: "Deal &a3%&7&o more damage" config: multiplier: 1.03 # Damage multiplier \ No newline at end of file