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:
@@ -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());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user