diff --git a/src/main/java/com/minelittlepony/unicopia/client/gui/spellbook/SpellbookScreen.java b/src/main/java/com/minelittlepony/unicopia/client/gui/spellbook/SpellbookScreen.java index 772518c1..cafee812 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/gui/spellbook/SpellbookScreen.java +++ b/src/main/java/com/minelittlepony/unicopia/client/gui/spellbook/SpellbookScreen.java @@ -134,6 +134,9 @@ public class SpellbookScreen extends HandledScreen imple @Override public void render(MatrixStack matrices, int mouseX, int mouseY, float partialTicks) { + if (getState().isDirty()) { + clearAndInit(); + } super.render(matrices, mouseX, mouseY, partialTicks); drawMouseoverTooltip(matrices, mouseX, mouseY); } diff --git a/src/main/java/com/minelittlepony/unicopia/container/SpellbookState.java b/src/main/java/com/minelittlepony/unicopia/container/SpellbookState.java index 1d49de44..c616a8a1 100644 --- a/src/main/java/com/minelittlepony/unicopia/container/SpellbookState.java +++ b/src/main/java/com/minelittlepony/unicopia/container/SpellbookState.java @@ -15,8 +15,16 @@ import net.minecraft.util.math.MathHelper; public class SpellbookState extends Synchronizable implements NbtSerialisable { private Optional currentPageId = Optional.empty(); + private boolean dirty; + private final Map states = new HashMap<>(); + public boolean isDirty() { + boolean isDirty = dirty; + dirty = false; + return isDirty; + } + public Optional getCurrentPageId() { return currentPageId; } @@ -34,6 +42,7 @@ public class SpellbookState extends Synchronizable implements Nb public void copyFrom(SpellbookState state) { currentPageId = state.currentPageId; state.states.forEach((id, page) -> getState(id).copyFrom(page)); + dirty = true; } public void toPacket(PacketByteBuf buf) {