From 0e96374a03fff4666f5d7ec8d726413dee748dfc Mon Sep 17 00:00:00 2001 From: William278 Date: Tue, 12 Aug 2025 23:34:45 +0100 Subject: [PATCH] fix: stat syncing not checking material validity, close #537 --- .../java/net/william278/husksync/data/BukkitData.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/bukkit/src/main/java/net/william278/husksync/data/BukkitData.java b/bukkit/src/main/java/net/william278/husksync/data/BukkitData.java index 3470f5c9..93af6963 100644 --- a/bukkit/src/main/java/net/william278/husksync/data/BukkitData.java +++ b/bukkit/src/main/java/net/william278/husksync/data/BukkitData.java @@ -366,7 +366,7 @@ public abstract class BukkitData implements Data { // Set player experience and level (prevent advancement awards applying twice), reset game rule if (!toAward.isEmpty() - && (player.getLevel() != expLevel || player.getExp() != expProgress)) { + && (player.getLevel() != expLevel || player.getExp() != expProgress)) { player.setLevel(expLevel); player.setExp(expProgress); } @@ -486,8 +486,13 @@ public abstract class BukkitData implements Data { @NotNull Map> map) { registry.forEach(i -> { try { - final int stat = i instanceof Material m ? p.getStatistic(id, m) : - (i instanceof EntityType e ? p.getStatistic(id, e) : -1); + int stat = 0; + if (i instanceof Material mat && ((id.getType() == Statistic.Type.BLOCK && mat.isBlock()) + || (id.getType() == Statistic.Type.ITEM && mat.isItem()))) { + stat = p.getStatistic(id, mat); + } else if (i instanceof EntityType ent && id.getType() == Statistic.Type.ENTITY) { + stat = p.getStatistic(id, ent); + } if (stat != 0) { map.compute(id.getKey().getKey(), (k, v) -> v == null ? Maps.newHashMap() : v) .put(i.getKey().getKey(), stat);