9
0
mirror of https://github.com/WiIIiam278/HuskSync.git synced 2025-12-19 14:59:21 +00:00

fix: stat syncing not checking material validity, close #537

This commit is contained in:
William278
2025-08-12 23:34:45 +01:00
parent 24545563fa
commit 0e96374a03

View File

@@ -366,7 +366,7 @@ public abstract class BukkitData implements Data {
// Set player experience and level (prevent advancement awards applying twice), reset game rule // Set player experience and level (prevent advancement awards applying twice), reset game rule
if (!toAward.isEmpty() if (!toAward.isEmpty()
&& (player.getLevel() != expLevel || player.getExp() != expProgress)) { && (player.getLevel() != expLevel || player.getExp() != expProgress)) {
player.setLevel(expLevel); player.setLevel(expLevel);
player.setExp(expProgress); player.setExp(expProgress);
} }
@@ -486,8 +486,13 @@ public abstract class BukkitData implements Data {
@NotNull Map<String, Map<String, Integer>> map) { @NotNull Map<String, Map<String, Integer>> map) {
registry.forEach(i -> { registry.forEach(i -> {
try { try {
final int stat = i instanceof Material m ? p.getStatistic(id, m) : int stat = 0;
(i instanceof EntityType e ? p.getStatistic(id, e) : -1); 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) { if (stat != 0) {
map.compute(id.getKey().getKey(), (k, v) -> v == null ? Maps.newHashMap() : v) map.compute(id.getKey().getKey(), (k, v) -> v == null ? Maps.newHashMap() : v)
.put(i.getKey().getKey(), stat); .put(i.getKey().getKey(), stat);