9
0
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:
Auxilor
2021-09-23 10:02:59 +01:00
parent b237ac4bcf
commit e1c564b9ca
4 changed files with 27 additions and 24 deletions

View File

@@ -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<>();

View File

@@ -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);
}
}

View File

@@ -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;
}

View File

@@ -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;
}
}