Durability check

This commit is contained in:
Roch 2022-10-26 18:56:13 +02:00
parent bc59bb1788
commit ecf884918f

View File

@ -3,6 +3,7 @@ package net.Indyuce.mmoitems.listener;
import io.lumine.mythic.lib.api.item.NBTItem; import io.lumine.mythic.lib.api.item.NBTItem;
import io.lumine.mythic.lib.api.util.ui.SilentNumbers; import io.lumine.mythic.lib.api.util.ui.SilentNumbers;
import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOItems;
import net.Indyuce.mmoitems.api.interaction.util.DurabilityItem;
import net.Indyuce.mmoitems.api.util.MMOItemReforger; import net.Indyuce.mmoitems.api.util.MMOItemReforger;
import net.Indyuce.mmoitems.listener.reforging.*; import net.Indyuce.mmoitems.listener.reforging.*;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@ -25,7 +26,9 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
public class ItemListener implements Listener { public class ItemListener implements Listener {
@ -60,21 +63,31 @@ public class ItemListener implements Listener {
inv.setResult(air); inv.setResult(air);
Bukkit.getScheduler().runTaskLater(MMOItems.plugin, () -> { Bukkit.getScheduler().runTaskLater(MMOItems.plugin, () -> {
boolean repairDisabled = Arrays.stream(inv.getMatrix()) List<ItemStack> items = Arrays.stream(inv.getMatrix())
.filter(Objects::nonNull) .filter(Objects::nonNull)
.filter(itemStack -> !itemStack.getType().isAir()) .filter(itemStack -> !itemStack.getType().isAir())
.collect(Collectors.toList());
boolean repairDisabled = items.stream()
.allMatch(itemStack -> { .allMatch(itemStack -> {
final NBTItem nbtItem = NBTItem.get(itemStack); final NBTItem nbtItem = NBTItem.get(itemStack);
return nbtItem.hasTag("MMOITEMS_DISABLE_REPAIRING") && nbtItem.getBoolean("MMOITEMS_DISABLE_REPAIRING"); return nbtItem.hasTag("MMOITEMS_DISABLE_REPAIRING") && nbtItem.getBoolean("MMOITEMS_DISABLE_REPAIRING");
}); });
if (repairDisabled) { boolean hasDurability = items.stream().allMatch(itemStack -> new DurabilityItem(player, itemStack).isValid());
inv.setItem(0, air); ItemStack result;
player.updateInventory(); if (repairDisabled || !hasDurability)
System.out.println("YEAH"); result = air;
return; else {
result = items.get(0);
DurabilityItem durabilityItem = new DurabilityItem(player, result);
int durability = items.stream()
.map(itemStack -> new DurabilityItem(player, itemStack))
.map(DurabilityItem::getDurability)
.reduce(0, Integer::sum);
durabilityItem.addDurability(durabilityItem.getMaxDurability() - Math.min(durabilityItem.getMaxDurability(), durability));
result = durabilityItem.toItem();
} }
System.out.println("NOPE"); inv.setItem(0, result);
// TODO: repair player.updateInventory();
}, 1); }, 1);
} }