9
0
mirror of https://github.com/Auxilor/Reforges.git synced 2026-01-06 15:51:32 +00:00

Reworked getting a reforge for an item

This commit is contained in:
Auxilor
2021-10-31 11:00:25 +00:00
parent 5bf4dee034
commit d45546bd1d
3 changed files with 18 additions and 18 deletions

View File

@@ -4,12 +4,10 @@ import com.google.common.collect.ImmutableSet;
import com.willfp.eco.core.config.updating.ConfigUpdater;
import com.willfp.eco.core.items.TestableItem;
import com.willfp.eco.core.recipe.parts.EmptyTestableItem;
import com.willfp.eco.util.NumberUtils;
import com.willfp.reforges.ReforgesPlugin;
import lombok.Getter;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.HashMap;
@@ -17,6 +15,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
public class ReforgeTarget {
/**
@@ -99,14 +98,11 @@ public class ReforgeTarget {
* @param item The item.
* @return The target.
*/
@Nullable
public static ReforgeTarget getForItem(@NotNull final ItemStack item) {
List<ReforgeTarget> matching = REGISTERED.values().stream()
public static List<ReforgeTarget> getForItem(@NotNull final ItemStack item) {
return REGISTERED.values().stream()
.filter(target -> !target.getName().equalsIgnoreCase("all"))
.filter(target -> target.matches(item))
.toList();
return matching.isEmpty() ? null : matching.get(NumberUtils.randInt(0, matching.size() - 1));
.collect(Collectors.toList());
}
/**

View File

@@ -13,6 +13,8 @@ import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
import java.util.List;
public class ReforgeHandler extends PluginDependent<EcoPlugin> {
/**
* Pass an {@link EcoPlugin} in order to interface with it.
@@ -32,8 +34,7 @@ public class ReforgeHandler extends PluginDependent<EcoPlugin> {
return;
}
ReforgeTarget target = ReforgeTarget.getForItem(toReforge);
assert target != null;
List<ReforgeTarget> target = ReforgeTarget.getForItem(toReforge);
Reforge reforge = null;
boolean usedStone = false;

View File

@@ -16,6 +16,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
@@ -44,14 +45,16 @@ public class ReforgeUtils {
/**
* Get a random reforge for a target.
*
* @param target The target.
* @param targets The targets.
*/
public static Reforge getRandomReforge(@NotNull final ReforgeTarget target) {
public static Reforge getRandomReforge(@NotNull final Collection<ReforgeTarget> targets) {
List<Reforge> applicable = new ArrayList<>();
for (Reforge reforge : Reforges.values()) {
if (reforge.getTargets().contains(target) && !reforge.getRequiresStone()) {
applicable.add(reforge);
for (ReforgeTarget target : targets) {
if (reforge.getTargets().contains(target) && !reforge.getRequiresStone()) {
applicable.add(reforge);
}
}
}
@@ -69,18 +72,18 @@ public class ReforgeUtils {
ItemStack stone = captive.size() == 2 ? captive.get(1) : null;
ReforgeStatus status = null;
ReforgeTarget target = null;
List<ReforgeTarget> target = new ArrayList<>();
if (toReforge == null || toReforge.getType() == Material.AIR) {
status = ReforgeStatus.NO_ITEM;
} else {
target = ReforgeTarget.getForItem(toReforge);
if (target == null) {
target.addAll(ReforgeTarget.getForItem(toReforge));
if (target.isEmpty()) {
status = ReforgeStatus.INVALID_ITEM;
}
}
if (target != null) {
if (!target.isEmpty()) {
status = ReforgeStatus.ALLOW;
}