From 49d58af604b1fcb495f31eac1ece4d2a5214a549 Mon Sep 17 00:00:00 2001 From: TheBrokenRail Date: Wed, 22 Jul 2020 19:55:32 -0400 Subject: [PATCH] Fix Bug --- .../core/EnergyProviderBlockEntity.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/thebrokenrail/energonrelics/energy/core/EnergyProviderBlockEntity.java b/src/main/java/com/thebrokenrail/energonrelics/energy/core/EnergyProviderBlockEntity.java index c017cac..d0cc03d 100644 --- a/src/main/java/com/thebrokenrail/energonrelics/energy/core/EnergyProviderBlockEntity.java +++ b/src/main/java/com/thebrokenrail/energonrelics/energy/core/EnergyProviderBlockEntity.java @@ -26,19 +26,34 @@ import java.util.List; import java.util.Objects; public class EnergyProviderBlockEntity extends BlockEntity implements EnergyProvider, BlockEntityClientSerializable, Tickable { + private static volatile boolean isTicking = false; + private static final List scheduledTicks = new ArrayList<>(); + private static final List scheduledTicksNext = new ArrayList<>(); public static void tickScheduled() { + isTicking = true; Collections.shuffle(scheduledTicks); for (EnergyProviderBlockEntity provider : scheduledTicks) { provider.serverTick(); } scheduledTicks.clear(); + isTicking = false; + for (EnergyProviderBlockEntity entity : scheduledTicksNext) { + entity.schedule(); + } + scheduledTicksNext.clear(); } private void schedule() { - if (!scheduledTicks.contains(this)) { - scheduledTicks.add(this); + List list; + if (isTicking) { + list = scheduledTicksNext; + } else { + list = scheduledTicks; + } + if (!list.contains(this)) { + list.add(this); } }