diff --git a/src/main/java/eu/pb4/graves/grave/Grave.java b/src/main/java/eu/pb4/graves/grave/Grave.java index 17ffd20..9a1b6f6 100644 --- a/src/main/java/eu/pb4/graves/grave/Grave.java +++ b/src/main/java/eu/pb4/graves/grave/Grave.java @@ -433,6 +433,7 @@ public ItemStack set(int index, ItemStack element) { var old = Grave.this.items.set(index, new PositionedItemStack(element, -1, VanillaInventoryMask.INSTANCE, null, Set.of())); if (old != null) { Grave.this.removeTaggedItem(old); + GraveManager.INSTANCE.markDirty(); return old.stack(); } return ItemStack.EMPTY; @@ -441,11 +442,13 @@ public ItemStack set(int index, ItemStack element) { public void add(int value, ItemStack element) { Validate.notNull(element); Grave.this.items.add(value, new PositionedItemStack(element, -1, VanillaInventoryMask.INSTANCE, null, Set.of())); + GraveManager.INSTANCE.markDirty(); } public ItemStack remove(int index) { var x = Grave.this.items.remove(index); Grave.this.removeTaggedItem(x); + GraveManager.INSTANCE.markDirty(); return x.stack(); } @@ -455,8 +458,9 @@ public int size() { public void clear() { Grave.this.items.clear(); + GraveManager.INSTANCE.markDirty(); } - }); + }, GraveManager.INSTANCE::markDirty); } public void tick(MinecraftServer server) { @@ -611,9 +615,11 @@ public void quickEquip(ServerPlayerEntity player) { this.xp = 0; this.tryBreak(player.getServer(), player); this.updateSelf(player.getServer()); + GraveManager.INSTANCE.markDirty(); } } catch (Exception e) { e.printStackTrace(); + GraveManager.INSTANCE.markDirty(); } } diff --git a/src/main/java/eu/pb4/graves/other/ImplementedInventory.java b/src/main/java/eu/pb4/graves/other/ImplementedInventory.java index 3926099..f182c21 100644 --- a/src/main/java/eu/pb4/graves/other/ImplementedInventory.java +++ b/src/main/java/eu/pb4/graves/other/ImplementedInventory.java @@ -18,13 +18,23 @@ public interface ImplementedInventory extends Inventory { DefaultedList getItems(); - static ImplementedInventory of(DefaultedList items) { - return () -> items; + static ImplementedInventory of(DefaultedList items, Runnable markDirty) { + return new ImplementedInventory() { + @Override + public DefaultedList getItems() { + return items; + } + + @Override + public void markDirty() { + markDirty.run(); + } + }; } static ImplementedInventory ofSize(int size) { - return of(DefaultedList.ofSize(size, ItemStack.EMPTY)); + return of(DefaultedList.ofSize(size, ItemStack.EMPTY), () -> {}); } @@ -82,8 +92,7 @@ default void clear() { } - @Override - default void markDirty() {} + void markDirty(); @Override