diff options
author | Alkalus <3060479+draknyte1@users.noreply.github.com> | 2019-04-26 00:37:36 +1000 |
---|---|---|
committer | Alkalus <3060479+draknyte1@users.noreply.github.com> | 2019-04-26 00:37:36 +1000 |
commit | 866b2aee8b00f39c30728612dcdf3f10722e57f1 (patch) | |
tree | ca06770214724bf410ede0b12dfc7959c360310b /src/Java/gtPlusPlus/api/objects | |
parent | e9f05b60123ad5f5a855c1896e4e5a120e55d8c9 (diff) | |
download | GT5-Unofficial-866b2aee8b00f39c30728612dcdf3f10722e57f1.tar.gz GT5-Unofficial-866b2aee8b00f39c30728612dcdf3f10722e57f1.tar.bz2 GT5-Unofficial-866b2aee8b00f39c30728612dcdf3f10722e57f1.zip |
$ Fixed the Tree Farm.
Diffstat (limited to 'src/Java/gtPlusPlus/api/objects')
-rw-r--r-- | src/Java/gtPlusPlus/api/objects/minecraft/FakeWorld.java | 39 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/api/objects/minecraft/ThreadFakeWorldGenerator.java | 61 |
2 files changed, 89 insertions, 11 deletions
diff --git a/src/Java/gtPlusPlus/api/objects/minecraft/FakeWorld.java b/src/Java/gtPlusPlus/api/objects/minecraft/FakeWorld.java index 21e7a7d331..800d8afaa4 100644 --- a/src/Java/gtPlusPlus/api/objects/minecraft/FakeWorld.java +++ b/src/Java/gtPlusPlus/api/objects/minecraft/FakeWorld.java @@ -18,6 +18,8 @@ import net.minecraftforge.common.util.ForgeDirection; public class FakeWorld implements IBlockAccess { + public static HashMap<String, FakeBlockPos> mStaticFakeWorldData; + public HashMap<String, FakeBlockPos> mFakeWorldData = new HashMap<String, FakeBlockPos>(); /** @@ -45,22 +47,36 @@ public class FakeWorld implements IBlockAccess { init(); } - private void init() { - Logger.INFO("Setting all Blocks in Fake World to Air."); - for (int y=0;y<=aWorldHeight;y++) { - for (int x=-aDistanceFromOrigin;x<=aDistanceFromOrigin;x++) { - for (int z=-aDistanceFromOrigin;z<=aDistanceFromOrigin;z++) { - FakeBlockPos aTempPos = new FakeBlockPos(x, y, z, Blocks.air, 0); - mFakeWorldData.put(aTempPos.getLocationString(), aTempPos); + public void init() { + + /*if (mStaticFakeWorldData == null) { + Logger.INFO("Setting all Blocks in Fake World to Air."); + mStaticFakeWorldData = new HashMap<String, FakeBlockPos>(); + for (int y=0;y<=aWorldHeight;y++) { + for (int x=-aDistanceFromOrigin;x<=aDistanceFromOrigin;x++) { + for (int z=-aDistanceFromOrigin;z<=aDistanceFromOrigin;z++) { + FakeBlockPos aTempPos = new FakeBlockPos(x, y, z, Blocks.air, 0); + mStaticFakeWorldData.put(aTempPos.getLocationString(), aTempPos); + } } } - } - Logger.INFO("Initialisation of FakeWorld is now complete."); + }*/ + //if (mStaticFakeWorldData != null) { + //Logger.INFO(" Instancing static air world."); + mFakeWorldData = new HashMap<String, FakeBlockPos>(); + //mFakeWorldData = (HashMap<String, FakeBlockPos>) mStaticFakeWorldData.clone(); + //} + + + //Logger.INFO("Initialisation of FakeWorld is now complete."); } public FakeBlockPos getBlockAtCoords(int x, int y, int z) { String S = ""+x+"@"+y+"@"+z; - FakeBlockPos aBlock = mFakeWorldData.get(S); + FakeBlockPos aBlock = mFakeWorldData.get(S); + if (aBlock == null) { + return new FakeBlockPos(x, y, z, Blocks.air, 0); + } return aBlock; } @@ -73,12 +89,13 @@ public class FakeWorld implements IBlockAccess { public AutoMap<ItemStack> getAllBlocksStoredInFakeWorld(){ AutoMap<ItemStack> aOutput = new AutoMap<ItemStack>(); for (FakeBlockPos aPos : mFakeWorldData.values()) { - if (aPos.getBlockAtPos() == Blocks.air) { + if (aPos == null || aPos.getBlockAtPos() == Blocks.air) { continue; } else { ItemStack aTempStack = ItemUtils.simpleMetaStack(aPos.getBlockAtPos(), aPos.getMetaAtPos(), 1); if (ItemUtils.checkForInvalidItems(aTempStack)) { + //Logger.INFO("Output: "+aTempStack.getDisplayName()); aOutput.put(aTempStack); } } diff --git a/src/Java/gtPlusPlus/api/objects/minecraft/ThreadFakeWorldGenerator.java b/src/Java/gtPlusPlus/api/objects/minecraft/ThreadFakeWorldGenerator.java new file mode 100644 index 0000000000..393d3260b5 --- /dev/null +++ b/src/Java/gtPlusPlus/api/objects/minecraft/ThreadFakeWorldGenerator.java @@ -0,0 +1,61 @@ +package gtPlusPlus.api.objects.minecraft; + +import gtPlusPlus.xmod.gregtech.common.helpers.treefarm.TreeGenerator; + +public class ThreadFakeWorldGenerator extends Thread { + + public boolean canRun = true; + public boolean isRunning = false; + + private static final long INIT_TIME; + private static long internalTickCounter = 0; + + public TreeGenerator mGenerator; + + private static final ThreadFakeWorldGenerator mThread; + + static { + mThread = new ThreadFakeWorldGenerator(); + INIT_TIME = (System.currentTimeMillis()); + } + + public ThreadFakeWorldGenerator() { + setName("gtpp.handler.fakeworldtrees"); + run(); + } + + public static ThreadFakeWorldGenerator getInstance() { + return mThread; + } + + public static void stopThread() { + mThread.canRun = false; + } + + + @Override + public void run() { + + if (!isRunning) { + isRunning = true; + } + else { + return; + } + + if (canRun){ + if (mGenerator == null) { + mGenerator = new TreeGenerator(); + } + } + + while (mGenerator == null) { + if (mGenerator != null) { + break; + } + } + stopThread(); + } + + +} |