diff options
Diffstat (limited to 'src/main/java/gregtech/api/threads')
-rw-r--r-- | src/main/java/gregtech/api/threads/GT_Runnable_MachineBlockUpdate.java | 22 |
1 files changed, 3 insertions, 19 deletions
diff --git a/src/main/java/gregtech/api/threads/GT_Runnable_MachineBlockUpdate.java b/src/main/java/gregtech/api/threads/GT_Runnable_MachineBlockUpdate.java index 6564cf316a..3ce1daf9b2 100644 --- a/src/main/java/gregtech/api/threads/GT_Runnable_MachineBlockUpdate.java +++ b/src/main/java/gregtech/api/threads/GT_Runnable_MachineBlockUpdate.java @@ -1,11 +1,9 @@ package gregtech.api.threads; - -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.common.gameevent.TickEvent; import gregtech.GT_Mod; import gregtech.api.GregTech_API; import gregtech.api.interfaces.tileentity.IMachineBlockUpdateable; +import gregtech.common.GT_Proxy; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChunkCoordinates; import net.minecraft.world.World; @@ -18,7 +16,6 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; -import java.util.concurrent.locks.ReentrantLock; public class GT_Runnable_MachineBlockUpdate implements Runnable { // used by runner thread @@ -27,9 +24,6 @@ public class GT_Runnable_MachineBlockUpdate implements Runnable { private final Set<ChunkCoordinates> visited = new HashSet<>(80); private final Queue<ChunkCoordinates> tQueue = new LinkedList<>(); - // Locking - private static ReentrantLock lock = new ReentrantLock(); - // Threading private static final ThreadFactory THREAD_FACTORY = r -> { Thread thread = new Thread(r); @@ -47,16 +41,6 @@ public class GT_Runnable_MachineBlockUpdate implements Runnable { } - @SubscribeEvent - public void onServerTick(TickEvent.ServerTickEvent aEvent) { - // Using onServerTick because there's race conditions in updateTrackedEntities() which is called AFTER the END phase of onWorldTick - if (aEvent.phase == TickEvent.Phase.START) { - lock.lock(); - } else { - lock.unlock(); - } - } - public static boolean isEnabled() { return isEnabled; } @@ -123,12 +107,12 @@ public class GT_Runnable_MachineBlockUpdate implements Runnable { // This might load a chunk... which might load a TileEntity... which might get added to `loadedTileEntityList`... which might be in the process // of being iterated over during `UpdateEntities()`... which might cause a ConcurrentModificationException. So, lock that shit. - lock.lock(); + GT_Proxy.TICK_LOCK.lock(); try { tTileEntity = world.getTileEntity(aCoords.posX, aCoords.posY, aCoords.posZ); isMachineBlock = GregTech_API.isMachineBlock(world.getBlock(aCoords.posX, aCoords.posY, aCoords.posZ), world.getBlockMetadata(aCoords.posX, aCoords.posY, aCoords.posZ)); } finally { - lock.unlock(); + GT_Proxy.TICK_LOCK.unlock(); } // See if the block itself needs an update |