mirror of
https://github.com/Auxilor/Reforges.git
synced 2026-01-06 15:51:32 +00:00
Target will now use the eco item system
This commit is contained in:
@@ -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<String> addLore = new ArrayList<>();
|
||||
|
||||
|
||||
@@ -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<Material> materials;
|
||||
private final Set<TestableItem> 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<Material> materials) {
|
||||
@NotNull final Set<TestableItem> 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<ReforgeTarget> 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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ public class ReforgeHandler extends PluginDependent<EcoPlugin> {
|
||||
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<EcoPlugin> {
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user