diff options
author | bartimaeusnek <33183715+bartimaeusnek@users.noreply.github.com> | 2020-04-14 18:24:58 +0200 |
---|---|---|
committer | bartimaeusnek <33183715+bartimaeusnek@users.noreply.github.com> | 2020-04-14 18:24:58 +0200 |
commit | 9b05c6573762117ab1b60ef195e8be321b6e2bb8 (patch) | |
tree | 3f0ce41d73b1fd15a36db8cc8b60bbe47bc55926 /src/main/java/gregtech/api/threads | |
parent | 78ab6155eeafa0e7b4494de3967343921d15eb82 (diff) | |
download | GT5-Unofficial-9b05c6573762117ab1b60ef195e8be321b6e2bb8.tar.gz GT5-Unofficial-9b05c6573762117ab1b60ef195e8be321b6e2bb8.tar.bz2 GT5-Unofficial-9b05c6573762117ab1b60ef195e8be321b6e2bb8.zip |
crashfix
+ Added a new Thread every time a world is loaded
Signed-off-by: bartimaeusnek <33183715+bartimaeusnek@users.noreply.github.com>
Diffstat (limited to 'src/main/java/gregtech/api/threads')
-rw-r--r-- | src/main/java/gregtech/api/threads/GT_Runnable_MachineBlockUpdate.java | 35 |
1 files changed, 20 insertions, 15 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 5e7081e3c2..c811f3a614 100644 --- a/src/main/java/gregtech/api/threads/GT_Runnable_MachineBlockUpdate.java +++ b/src/main/java/gregtech/api/threads/GT_Runnable_MachineBlockUpdate.java @@ -27,7 +27,7 @@ public class GT_Runnable_MachineBlockUpdate implements Runnable { //Threading private static boolean allowedToRun; //makes if this thread is idle private static final Queue<Coordinates> toUpdate = new ConcurrentLinkedQueue<>(); //blocks added while this thread ran - private static final Thread INSTANCETHREAD = new Thread(new GT_Runnable_MachineBlockUpdate(), "Machine Block Updates"); //Instance of this thread + private static Thread INSTANCETHREAD; //Instance of this thread //This class should never be initiated outside of this class! private GT_Runnable_MachineBlockUpdate() { @@ -62,15 +62,15 @@ public class GT_Runnable_MachineBlockUpdate implements Runnable { * Never call this Method without checking if the thead is NOT allowed to run! */ private static void setMachineUpdateValuesUnsafe(World aWorld, int aX, int aY, int aZ){ - GT_Runnable_MachineBlockUpdate.setmZ(aZ); - GT_Runnable_MachineBlockUpdate.setmY(aY); - GT_Runnable_MachineBlockUpdate.setmX(aX); - GT_Runnable_MachineBlockUpdate.setmWorld(aWorld); - GT_Runnable_MachineBlockUpdate.resetVisited(); - GT_Runnable_MachineBlockUpdate.setAllowedToRun(true); + setmZ(aZ); + setmY(aY); + setmX(aX); + setmWorld(aWorld); + resetVisited(); + setAllowedToRun(true); synchronized (toUpdate) { - if (GT_Runnable_MachineBlockUpdate.INSTANCETHREAD.getState() == Thread.State.WAITING) - GT_Runnable_MachineBlockUpdate.toUpdate.notify(); + if (getINSTANCETHREAD().getState() == Thread.State.WAITING) + toUpdate.notify(); } } @@ -85,12 +85,12 @@ public class GT_Runnable_MachineBlockUpdate implements Runnable { } } - private static class Coordinates { + public static class Coordinates { - private final int mX; - private final int mY; - private final int mZ; - private final World mWorld; + protected final int mX; + protected final int mY; + protected final int mZ; + protected final World mWorld; public Coordinates(int mX, int mY, int mZ, World mWorld) { this.mX = mX; @@ -115,7 +115,12 @@ public class GT_Runnable_MachineBlockUpdate implements Runnable { GT_Runnable_MachineBlockUpdate.allowedToRun = unlocked; } - public static Thread getINSTANCETHREAD() { + public static synchronized void initThread() { + GT_Runnable_MachineBlockUpdate.INSTANCETHREAD = new Thread(new GT_Runnable_MachineBlockUpdate(), "GT Machine Block Updates"); + GT_Runnable_MachineBlockUpdate.INSTANCETHREAD.start(); + } + + public static synchronized Thread getINSTANCETHREAD() { return INSTANCETHREAD; } |