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 ddb892f..3fbc153 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 @@ -33,7 +33,7 @@ public class ReforgesDisplay extends DisplayModule { @Override public void display(@NotNull final ItemStack itemStack, @NotNull final Object... args) { - ReforgeTarget target = ReforgeTarget.getForMaterial(itemStack.getType()); + ReforgeTarget target = ReforgeTarget.getForItem(itemStack); if (target == null && itemStack.getType() != Material.PLAYER_HEAD) { return; @@ -48,7 +48,7 @@ public class ReforgesDisplay extends DisplayModule { Reforge reforge = ReforgeUtils.getReforge(meta); Reforge stone = ReforgeUtils.getReforgeStone(meta); - if (reforge == null && stone == null && itemStack.getType() != Material.PLAYER_HEAD) { + if (reforge == null && stone == null && target != null) { if (this.getPlugin().getConfigYml().getBool("reforge.show-reforgable")) { List addLore = new ArrayList<>(); 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 a8d770c..bc01a32 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 @@ -2,14 +2,17 @@ package com.willfp.reforges.reforges.meta; import com.google.common.collect.ImmutableSet; import com.willfp.eco.core.config.updating.ConfigUpdater; +import com.willfp.eco.core.items.Items; +import com.willfp.eco.core.items.TestableItem; +import com.willfp.eco.core.recipe.parts.EmptyTestableItem; import com.willfp.reforges.ReforgesPlugin; import lombok.Getter; import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.HashSet; -import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; @@ -75,19 +78,19 @@ public class ReforgeTarget { * The materials of the target. */ @Getter - private final Set materials; + private final Set items; /** * Create new target. * - * @param name The name of the target. - * @param materials The items for the target. + * @param name The name of the target. + * @param items The items for the target. */ public ReforgeTarget(@NotNull final String name, - @NotNull final Set materials) { + @NotNull final Set items) { this.name = name; - materials.removeIf(Objects::isNull); - this.materials = materials; + items.removeIf(item -> item instanceof EmptyTestableItem); + this.items = items; } /** @@ -97,7 +100,7 @@ public class ReforgeTarget { */ public ReforgeTarget(@NotNull final String name) { this.name = name; - this.materials = new HashSet<>(); + this.items = new HashSet<>(); update(); } @@ -106,10 +109,10 @@ public class ReforgeTarget { * Update the configs. */ public void update() { - this.materials.clear(); - this.materials.addAll(ReforgesPlugin.getInstance().getConfigYml().getStrings("targets." + name, false).stream().map( - s -> Material.getMaterial(s.toUpperCase()) - ).collect(Collectors.toSet())); + this.items.clear(); + this.items.addAll(ReforgesPlugin.getInstance().getConfigYml().getStrings("targets." + name, false).stream() + .map(Items::lookup) + .collect(Collectors.toSet())); } /** @@ -124,16 +127,16 @@ public class ReforgeTarget { } /** - * Get target from material. + * Get target from item. * - * @param material The material. + * @param item The item. * @return The target. */ @Nullable - public static ReforgeTarget getForMaterial(@NotNull final Material material) { + public static ReforgeTarget getForItem(@NotNull final ItemStack item) { Optional matching = REGISTERED.stream() .filter(rarity -> !rarity.getName().equalsIgnoreCase("all")) - .filter(rarity -> rarity.getMaterials().contains(material)).findFirst(); + .filter(rarity -> rarity.getItems().stream().anyMatch(testableItem -> testableItem.matches(item))).findFirst(); return matching.orElse(null); } @@ -144,14 +147,14 @@ public class ReforgeTarget { */ @ConfigUpdater public static void update(@NotNull final ReforgesPlugin plugin) { - ALL.materials.clear(); + ALL.items.clear(); for (ReforgeTarget reforgeTarget : REGISTERED) { if (reforgeTarget.name.equals("all")) { continue; } reforgeTarget.update(); - ALL.materials.addAll(reforgeTarget.materials); + ALL.items.addAll(reforgeTarget.items); } } 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 4f22208..75f289e 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 @@ -34,7 +34,7 @@ public class ReforgeHandler extends PluginDependent { return; } - ReforgeTarget target = ReforgeTarget.getForMaterial(toReforge.getType()); + ReforgeTarget target = ReforgeTarget.getForItem(toReforge.getType()); assert target != null; Reforge reforge = null; @@ -43,7 +43,7 @@ public class ReforgeHandler extends PluginDependent { if (menu.getCaptiveItems(player).size() == 2) { Reforge stone = ReforgeUtils.getReforgeStone(menu.getCaptiveItems(player).get(1)); if (stone != null) { - if (Arrays.stream(stone.getTarget()).anyMatch(reforgeTarget -> reforgeTarget.getMaterials().contains(toReforge.getType()))) { + if (Arrays.stream(stone.getTarget()).anyMatch(reforgeTarget -> reforgeTarget.getItems().contains(toReforge.getType()))) { reforge = stone; usedStone = true; } 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 dfcba8c..d4d935e 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 @@ -75,7 +75,7 @@ public class ReforgeUtils { if (toReforge == null || toReforge.getType() == Material.AIR) { status = ReforgeStatus.NO_ITEM; } else { - target = ReforgeTarget.getForMaterial(toReforge.getType()); + target = ReforgeTarget.getForItem(toReforge); if (target == null) { status = ReforgeStatus.INVALID_ITEM; } @@ -87,7 +87,7 @@ public class ReforgeUtils { if (status == ReforgeStatus.ALLOW) { Reforge reforgeStone = getReforgeStone(stone); - if (reforgeStone != null && Arrays.stream(reforgeStone.getTarget()).anyMatch(reforgeTarget -> reforgeTarget.getMaterials().contains(toReforge.getType()))) { + if (reforgeStone != null && Arrays.stream(reforgeStone.getTarget()).anyMatch(reforgeTarget -> reforgeTarget.getItems().contains(toReforge.getType()))) { status = ReforgeStatus.ALLOW_STONE; } }