Skip to content

Commit 2528bdb

Browse files
committed
fix(repair): add onlyPlayers() to prevent NPE and fix countRepairItems UNREPAIRABLE_KEY check
1 parent c5a603a commit 2528bdb

2 files changed

Lines changed: 7 additions & 1 deletion

File tree

src/main/java/fr/maxlego08/essentials/commands/commands/utils/CommandRepair.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public CommandRepair(EssentialsPlugin plugin) {
1919
super(plugin);
2020
this.setPermission(Permission.ESSENTIALS_REPAIR);
2121
this.setDescription(Message.DESCRIPTION_REPAIR);
22+
onlyPlayers();
2223
}
2324

2425
@Override

src/main/java/fr/maxlego08/essentials/zutils/utils/ZUtils.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.bukkit.Bukkit;
77
import org.bukkit.Location;
88
import org.bukkit.Material;
9+
import org.bukkit.NamespacedKey;
910
import org.bukkit.World;
1011
import org.bukkit.block.Block;
1112
import org.bukkit.block.BlockFace;
@@ -18,6 +19,7 @@
1819
import org.bukkit.metadata.FixedMetadataValue;
1920
import org.bukkit.metadata.MetadataValue;
2021
import org.bukkit.permissions.Permissible;
22+
import org.bukkit.persistence.PersistentDataContainer;
2123

2224
import java.lang.reflect.Array;
2325
import java.lang.reflect.Constructor;
@@ -44,6 +46,8 @@ public abstract class ZUtils extends MessageUtils {
4446

4547
private static final Set<UUID> VANISHED_PLAYERS = ConcurrentHashMap.newKeySet();
4648

49+
private static final NamespacedKey UNREPAIRABLE_KEY = new NamespacedKey("zitems", "unrepairable");
50+
4751
public boolean shouldFlyBasedOnLocation(final Location location) {
4852
final World world = location.getWorld();
4953
int y = (int) Math.floor(location.getY());
@@ -460,7 +464,8 @@ protected int countRepairItems(Inventory inventory) {
460464
if (itemStack != null && itemStack.hasItemMeta()) {
461465
ItemMeta itemMeta = itemStack.getItemMeta();
462466
if (itemMeta instanceof Damageable damageable) {
463-
if (damageable.hasDamage()) {
467+
PersistentDataContainer persistentDataContainer = itemMeta.getPersistentDataContainer();
468+
if (damageable.hasDamage() && !persistentDataContainer.has(UNREPAIRABLE_KEY)) {
464469
amount++;
465470
}
466471
}

0 commit comments

Comments
 (0)