aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Java/gtPlusPlus/GTplusplus.java38
-rw-r--r--src/Java/gtPlusPlus/api/objects/ChunkManager.java117
-rw-r--r--src/Java/gtPlusPlus/api/objects/DimChunkPos.java53
-rw-r--r--src/Java/gtPlusPlus/core/util/array/BlockPos.java4
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java2
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaTileEntityChunkLoader.java117
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechTieredChunkloaders.java12
7 files changed, 294 insertions, 49 deletions
diff --git a/src/Java/gtPlusPlus/GTplusplus.java b/src/Java/gtPlusPlus/GTplusplus.java
index 69c491edc9..b06ca00752 100644
--- a/src/Java/gtPlusPlus/GTplusplus.java
+++ b/src/Java/gtPlusPlus/GTplusplus.java
@@ -1,11 +1,13 @@
package gtPlusPlus;
+import static gtPlusPlus.api.objects.ChunkManager.mChunkLoaderManagerMap;
import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableCustomCapes;
import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableUpdateChecker;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Collection;
+import java.util.Timer;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
@@ -20,6 +22,8 @@ import gregtech.api.util.Recipe_GT;
import gregtech.api.util.GT_Recipe.GT_Recipe_Map;
import gtPlusPlus.api.analytics.SegmentAnalytics;
import gtPlusPlus.api.analytics.SegmentHelper;
+import gtPlusPlus.api.objects.ChunkManager;
+import gtPlusPlus.api.objects.DimChunkPos;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.commands.CommandMath;
import gtPlusPlus.core.common.CommonProxy;
@@ -32,6 +36,7 @@ import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.material.Material;
import gtPlusPlus.core.material.nuclear.FLUORIDES;
import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.array.Triplet;
import gtPlusPlus.core.util.geo.GeoUtils;
import gtPlusPlus.core.util.item.ItemUtils;
import gtPlusPlus.core.util.networking.NetworkUtils;
@@ -40,8 +45,12 @@ import gtPlusPlus.plugin.manager.Core_Manager;
import gtPlusPlus.xmod.gregtech.common.Meta_GT_Proxy;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtTools;
+import gtPlusPlus.xmod.gregtech.common.tileentities.machines.basic.GregtechMetaTileEntityChunkLoader;
import gtPlusPlus.xmod.gregtech.loaders.GT_Material_Loader;
import net.minecraft.launchwrapper.Launch;
+import net.minecraft.world.chunk.Chunk;
+import net.minecraftforge.common.ForgeChunkManager;
+import net.minecraftforge.common.ForgeChunkManager.Ticket;
import net.minecraftforge.oredict.OreDictionary;
@MCVersion(value = "1.7.10")
@@ -51,7 +60,7 @@ public class GTplusplus implements ActionListener {
//Mod Instance
@Mod.Instance(CORE.MODID)
public static GTplusplus instance;
-
+
//Material Loader
public static GT_Material_Loader mGregMatLoader;
@@ -149,6 +158,11 @@ public class GTplusplus implements ActionListener {
@EventHandler
public void serverStarting(final FMLServerStartingEvent event) {
event.registerServerCommand(new CommandMath());
+
+ //Chunk Loading
+ Timer h = ChunkManager.createChunkQueue();
+
+
}
@Mod.EventHandler
@@ -160,7 +174,13 @@ public class GTplusplus implements ActionListener {
SegmentAnalytics.LOG("Cleaned up Analytics Data for player "+sa.mLocalName+".");
}
}
-
+
+ //Chunkload Handler
+ if (ChunkManager.mChunkLoaderManagerMap.size() > 0) {
+ Logger.INFO("Clearing Chunk Loaders.");
+ ChunkManager.mChunkLoaderManagerMap.clear();
+ }
+
}
@Override
@@ -191,7 +211,7 @@ public class GTplusplus implements ActionListener {
}
new SegmentHelper();
}
-
+
private static final boolean setupMaterialBlacklist(){
int ID = 0;
Material.invalidMaterials.put(ID++, Materials._NULL);
@@ -205,7 +225,7 @@ public class GTplusplus implements ActionListener {
Material.invalidMaterials.put(ID++, Materials.InfusedEarth);
Material.invalidMaterials.put(ID++, Materials.InfusedFire);
Material.invalidMaterials.put(ID++, Materials.InfusedWater);
-
+
//EIO Materials
Material.invalidMaterials.put(ID++, Materials.SoulSand);
Material.invalidMaterials.put(ID++, Materials.EnderPearl);
@@ -214,24 +234,24 @@ public class GTplusplus implements ActionListener {
Material.invalidMaterials.put(ID++, Materials.Glowstone);
Material.invalidMaterials.put(ID++, Materials.Soularium);
Material.invalidMaterials.put(ID++, Materials.PhasedIron);
-
+
if (Material.invalidMaterials.size() > 0){
return true;
}
return false;
-
+
}
private void setupMaterialWhitelist() {
-
+
mGregMatLoader = new GT_Material_Loader();
-
+
//Non GTNH Materials
if (!CORE.GTNH){
//Mithril - Random Dungeon Loot
mGregMatLoader.enableMaterial(Materials.Mithril);
}
-
+
//Force - Alloying
mGregMatLoader.enableMaterial(Materials.Force);
}
diff --git a/src/Java/gtPlusPlus/api/objects/ChunkManager.java b/src/Java/gtPlusPlus/api/objects/ChunkManager.java
index d9c54aa1c7..0bace04bf8 100644
--- a/src/Java/gtPlusPlus/api/objects/ChunkManager.java
+++ b/src/Java/gtPlusPlus/api/objects/ChunkManager.java
@@ -11,23 +11,28 @@ package gtPlusPlus.api.objects;
import com.google.common.collect.LinkedListMultimap;
import com.google.common.collect.ListMultimap;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
+import gtPlusPlus.GTplusplus;
import gtPlusPlus.core.util.array.BlockPos;
+import gtPlusPlus.core.util.array.Triplet;
import gtPlusPlus.xmod.gregtech.common.tileentities.machines.basic.GregtechMetaTileEntityChunkLoader;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
-import java.util.Map;
import java.util.Set;
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.concurrent.ConcurrentHashMap;
import net.minecraft.world.ChunkCoordIntPair;
import net.minecraft.entity.Entity;
import net.minecraft.world.World;
+import net.minecraft.world.chunk.Chunk;
import net.minecraftforge.common.ForgeChunkManager;
import net.minecraftforge.common.ForgeChunkManager.LoadingCallback;
import net.minecraftforge.common.ForgeChunkManager.OrderedLoadingCallback;
import net.minecraftforge.common.ForgeChunkManager.Ticket;
+import net.minecraftforge.common.ForgeChunkManager.Type;
import net.minecraftforge.event.entity.EntityEvent;
/**
@@ -37,7 +42,8 @@ public class ChunkManager implements LoadingCallback, OrderedLoadingCallback, Fo
private static ChunkManager instance;
- public static Map<BlockPos, GregtechMetaTileEntityChunkLoader> mChunkLoaders = new HashMap<BlockPos, GregtechMetaTileEntityChunkLoader>();
+ public static ConcurrentHashMap<BlockPos, Triplet<Integer, GregtechMetaTileEntityChunkLoader, DimChunkPos>> mChunkLoaderManagerMap = new ConcurrentHashMap<BlockPos, Triplet<Integer, GregtechMetaTileEntityChunkLoader, DimChunkPos>>();
+
public static ChunkManager getInstance() {
if (instance == null) {
@@ -139,6 +145,9 @@ public class ChunkManager implements LoadingCallback, OrderedLoadingCallback, Fo
@Override
public void ticketsLoaded(List<Ticket> tickets, World world) {
+
+ if (world.isRemote) return;
+
// System.out.println("Callback 2");
for (Ticket ticket : tickets) {
if (ticket.isPlayerTicket())
@@ -151,17 +160,62 @@ public class ChunkManager implements LoadingCallback, OrderedLoadingCallback, Fo
if (y >= 0) {
BlockPos tile = new BlockPos(x, y, z);
+
+ Ticket H = tryForceLoadChunk(new DimChunkPos(world, tile).getChunk());
- if (!mChunkLoaders.isEmpty()) {
- GregtechMetaTileEntityChunkLoader f = mChunkLoaders.get(tile);
+ int jhg = 0;
+ while (jhg < 50) {
+ jhg++;
+ }
+
+ if (!mChunkLoaderManagerMap.isEmpty()) {
+ GregtechMetaTileEntityChunkLoader f = mChunkLoaderManagerMap.get(tile).getValue_2();
+ int timeout = 0;
+ while (f == null) {
+ if (timeout > 5000) {
+ Logger.INFO("[Chunk Loader] Timed out");
+ break;
+ }
+ else {
+ GregtechMetaTileEntityChunkLoader g;
+ if (!mChunkLoaderManagerMap.isEmpty()) {
+ g = mChunkLoaderManagerMap.get(tile).getValue_2();
+ if (g == null) {
+ timeout++;
+ }
+ else {
+ Logger.INFO("[Chunk Loader]Tile became Valid");
+ f = g;
+ break;
+ }
+ }
+ }
+ }
try {
- f.forceChunkLoading(ticket);
- printAnchor("Force Chunk Loading. Chunk Loader has ID of "+f.getLoaderID()+". ",x,y,z);
+ if (f != null) {
+
+
+ if (H != null) {
+ ForgeChunkManager.releaseTicket(H);
+ }
+
+ f.forceChunkLoading(ticket);
+ printAnchor("Force Chunk Loading. Chunk Loader has ID of "+f.getLoaderID()+". ",x,y,z);
+ }
+ else {
+ Logger.INFO("Tile Entity is null.");
+ }
}
catch (Throwable t) {
t.printStackTrace();
Logger.INFO("Mild problem with chunk loading, nothing to worry about.");
}
+
+
+ if (H != null) {
+ ForgeChunkManager.releaseTicket(H);
+ }
+
}
/*if (tile instanceof IGregTechTileEntity) {
@@ -205,4 +259,51 @@ public class ChunkManager implements LoadingCallback, OrderedLoadingCallback, Fo
public ListMultimap<String, Ticket> playerTicketsLoaded(ListMultimap<String, Ticket> tickets, World world) {
return LinkedListMultimap.create();
}
-}
+
+
+ public static Timer createChunkQueue() {
+ return ChunkTimerLoader();
+ }
+
+ public static Ticket tryForceLoadChunk(Chunk c) {
+ Ticket T = getTicketFromForge(c.worldObj);
+ ForgeChunkManager.forceChunk(T, c.getChunkCoordIntPair());
+ Logger.INFO("[Chunk Loader] Trying to force load a chunk that holds a chunkloader.");
+ return T;
+ }
+
+ public static Ticket getTicketFromForge(World world) {
+ return ForgeChunkManager.requestTicket(GTplusplus.instance, world, Type.NORMAL);
+ }
+
+ static Timer ChunkTimerLoader() {
+ Timer timer;
+ timer = new Timer();
+ timer.schedule(new ChunkCache(), 10 * 1000);
+ return timer;
+ }
+
+ //Timer Task for notifying the player.
+ static class ChunkCache extends TimerTask {
+ public ChunkCache() {
+
+ }
+
+ @Override
+ public void run() {
+ if (mChunkLoaderManagerMap.size() > 0) {
+ for (Triplet<Integer, GregtechMetaTileEntityChunkLoader, DimChunkPos> j : mChunkLoaderManagerMap.values()) {
+ Ticket T;
+ Chunk C;
+ T = j.getValue_2().getTicketFromForge();
+ C = j.getValue_3().getChunk();
+ ForgeChunkManager.forceChunk(T, C.getChunkCoordIntPair());
+ Logger.INFO("[Chunk Loader] Trying to force load a chunk that holds a chunkloader.");
+ }
+ }
+ else {
+ Logger.INFO("[Chunk Loader] No chunks to try to force load chunks that hold chunkloaders.");
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/api/objects/DimChunkPos.java b/src/Java/gtPlusPlus/api/objects/DimChunkPos.java
new file mode 100644
index 0000000000..bea0a4ec3b
--- /dev/null
+++ b/src/Java/gtPlusPlus/api/objects/DimChunkPos.java
@@ -0,0 +1,53 @@
+package gtPlusPlus.api.objects;
+
+import gtPlusPlus.core.util.array.BlockPos;
+import net.minecraft.client.Minecraft;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+import net.minecraft.world.chunk.Chunk;
+
+public class DimChunkPos {
+
+ public final int dimension;
+ public final int xPos;
+ public final int zPos;
+ public final Chunk mainChunk;
+
+
+ public DimChunkPos(World world, BlockPos block){
+ this.dimension = world.provider.dimensionId;
+ this.mainChunk = world.getChunkFromBlockCoords(block.xPos, block.zPos);
+ this.xPos = this.mainChunk.xPosition;
+ this.zPos = this.mainChunk.zPosition;
+ }
+
+
+ public DimChunkPos(TileEntity tile){
+ this.dimension = tile.getWorldObj().provider.dimensionId;
+ this.mainChunk = tile.getWorldObj().getChunkFromBlockCoords(tile.xCoord, tile.zCoord);
+ this.xPos = this.mainChunk.xPosition;
+ this.zPos = this.mainChunk.zPosition;
+ }
+
+ public DimChunkPos(int dim, int x, int z){
+ this.dimension = dim;
+ this.xPos = x;
+ this.zPos = z;
+ Chunk h = Minecraft.getMinecraft().getIntegratedServer().worldServerForDimension(dim).getChunkFromChunkCoords(xPos, zPos);
+ if (h == null) {
+ this.mainChunk = null;
+ }
+ else {
+ this.mainChunk = h;
+ }
+ }
+
+ public Chunk getChunk() {
+ if (this.mainChunk != null) {
+ return this.mainChunk;
+ }
+ Chunk h = Minecraft.getMinecraft().getIntegratedServer().worldServerForDimension(this.dimension).getChunkFromChunkCoords(xPos, zPos);
+ return h;
+ }
+
+}
diff --git a/src/Java/gtPlusPlus/core/util/array/BlockPos.java b/src/Java/gtPlusPlus/core/util/array/BlockPos.java
index b4f6f65086..b625ebec54 100644
--- a/src/Java/gtPlusPlus/core/util/array/BlockPos.java
+++ b/src/Java/gtPlusPlus/core/util/array/BlockPos.java
@@ -18,4 +18,8 @@ public class BlockPos {
this.dim = dim;
}
+ public String getLocationString() {
+ return "[X: "+this.xPos+"][Y: "+this.yPos+"][Z: "+this.zPos+"]";
+ }
+
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java b/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
index bcf4777acd..1a9dbffa0b 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
@@ -287,7 +287,7 @@ public enum GregtechItemList implements GregtechItemContainer {
Casing_FishPond, Industrial_FishingPond,
//Chunkloader
- GT_Chunkloader_HV,
+ GT_Chunkloader_HV, GT_Chunkloader_EV, GT_Chunkloader_IV,
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaTileEntityChunkLoader.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaTileEntityChunkLoader.java
index 2307c95fcf..df8f40e633 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaTileEntityChunkLoader.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaTileEntityChunkLoader.java
@@ -1,13 +1,12 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.basic;
import static gregtech.api.enums.GT_Values.V;
-import static gtPlusPlus.api.objects.ChunkManager.mChunkLoaders;
-
+import static gtPlusPlus.api.objects.ChunkManager.mChunkLoaderManagerMap;
+import java.io.File;
import java.io.IOException;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
-
import com.google.common.collect.MapMaker;
import gregtech.api.enums.Textures;
@@ -16,12 +15,14 @@ import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_TieredMachineBlock;
import gregtech.api.objects.GT_RenderedTexture;
-import gregtech.api.util.GT_SpawnEventHandler;
import gtPlusPlus.GTplusplus;
import gtPlusPlus.api.interfaces.IChunkLoader;
import gtPlusPlus.api.objects.ChunkManager;
+import gtPlusPlus.api.objects.DimChunkPos;
import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.core.util.array.BlockPos;
+import gtPlusPlus.core.util.array.Triplet;
+import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.ChunkCoordIntPair;
@@ -113,12 +114,12 @@ public class GregtechMetaTileEntityChunkLoader extends GT_MetaTileEntity_TieredM
@Override
public void onFirstTick(final IGregTechTileEntity aBaseMetaTileEntity) {
- registerLoader();
+ validate();
}
@Override
public void onRemoval() {
- ChunkManager.mChunkLoaders.remove(new BlockPos(this.xCoord, this.yCoord, this.zCoord, this.getBaseMetaTileEntity().getWorld().provider.dimensionId));
+ ChunkManager.mChunkLoaderManagerMap.remove(new BlockPos(this.xCoord, this.yCoord, this.zCoord, this.getBaseMetaTileEntity().getWorld().provider.dimensionId));
}
@Override
@@ -206,13 +207,37 @@ public class GregtechMetaTileEntityChunkLoader extends GT_MetaTileEntity_TieredM
private short mChunkLoaderMapID = -1;
public void registerLoader() {
- short mSize = (short) ChunkManager.mChunkLoaders.size();
+ short mSize = (short) mChunkLoaderManagerMap.size();
this.mChunkLoaderMapID = mSize;
- if (!mChunkLoaders.containsValue(this)) {
- mChunkLoaders.put(new BlockPos(this.xCoord, this.yCoord, this.zCoord, this.getBaseMetaTileEntity().getWorld().provider.dimensionId),this);
+ if (this != null && this.getBaseMetaTileEntity() != null) {
+ if (!isRegistered()) {
+ BlockPos thisPos = new BlockPos(this.xCoord, this.yCoord, this.zCoord, this.getBaseMetaTileEntity().getWorld().provider.dimensionId);
+ Triplet<Integer, GregtechMetaTileEntityChunkLoader, DimChunkPos> loaderData = new Triplet<Integer, GregtechMetaTileEntityChunkLoader, DimChunkPos>((int) this.mChunkLoaderMapID, this, new DimChunkPos(this.getBaseMetaTileEntity().getWorld(), thisPos));
+ mChunkLoaderManagerMap.put(thisPos, loaderData);
+ Logger.INFO("[Chunk Loader] Registered Chunk loader ["+this.mChunkLoaderMapID+"]"+thisPos.getLocationString());
+ //mChunkLoaders.put(new BlockPos(this.xCoord, this.yCoord, this.zCoord, this.getBaseMetaTileEntity().getWorld().provider.dimensionId),this);
+ }
}
}
+
+ public void unregisterLoader() {
+ if (this != null && this.getBaseMetaTileEntity() != null) {
+ if (isRegistered()) {
+ BlockPos thisPos = new BlockPos(this.xCoord, this.yCoord, this.zCoord, this.getBaseMetaTileEntity().getWorld().provider.dimensionId);
+ mChunkLoaderManagerMap.remove(thisPos);
+ Logger.INFO("[Chunk Loader] Removed Chunk loader ["+this.mChunkLoaderMapID+"]"+thisPos.getLocationString());
+ //mChunkLoaders.put(new BlockPos(this.xCoord, this.yCoord, this.zCoord, this.getBaseMetaTileEntity().getWorld().provider.dimensionId),this);
+ }
+ }
+ }
+
+ public boolean isRegistered() {
+ BlockPos j = new BlockPos(this.xCoord, this.yCoord, this.zCoord, this.getBaseMetaTileEntity().getWorld().provider.dimensionId);
+ return mChunkLoaderManagerMap.containsKey(j);
+ //return mChunkLoaders.containsValue(this);
+ }
+
public short getLoaderID() {
return this.mChunkLoaderMapID;
}
@@ -223,15 +248,20 @@ public class GregtechMetaTileEntityChunkLoader extends GT_MetaTileEntity_TieredM
public void invalidate() {
refreshTicket = true;
+ unregisterLoader();
}
public void validate() {
+ if (!isRegistered()) {
+ registerLoader();
+ }
refreshTicket = true;
}
protected void releaseTicket() {
refreshTicket = false;
setTicket(null);
+ unregisterLoader();
}
protected void requestTicket() {
@@ -242,8 +272,10 @@ public class GregtechMetaTileEntityChunkLoader extends GT_MetaTileEntity_TieredM
}
}
- protected Ticket getTicketFromForge() {
- return ForgeChunkManager.requestTicket(GTplusplus.instance, this.getBaseMetaTileEntity().getWorld(), Type.NORMAL);
+ public Ticket getTicketFromForge() {
+ if (this.getBaseMetaTileEntity().getWorld() != null)
+ return ForgeChunkManager.requestTicket(GTplusplus.instance, this.getBaseMetaTileEntity().getWorld(), Type.NORMAL);
+ return null;
}
protected void setTicketData(Ticket chunkTicket) {
@@ -290,16 +322,16 @@ public class GregtechMetaTileEntityChunkLoader extends GT_MetaTileEntity_TieredM
public void forceChunkLoading(Ticket ticket) {
try {
- setTicket(ticket);
+ setTicket(ticket);
- setupChunks();
+ setupChunks();
- if (chunks != null) {
- for (ChunkCoordIntPair chunk : chunks) {
- ForgeChunkManager.forceChunk(ticket, chunk);
+ if (chunks != null) {
+ for (ChunkCoordIntPair chunk : chunks) {
+ ForgeChunkManager.forceChunk(ticket, chunk);
+ }
}
}
- }
catch (Throwable t){
t.printStackTrace();
}
@@ -308,39 +340,44 @@ public class GregtechMetaTileEntityChunkLoader extends GT_MetaTileEntity_TieredM
public void setupChunks() {
if (!hasTicket)
chunks = null;
- else
- chunks = ChunkManager.getInstance().getChunksAround(this.getBaseMetaTileEntity().getXCoord() >> 4, this.getBaseMetaTileEntity().getZCoord() >> 4, ANCHOR_RADIUS);
+ else {
+ if (this.mTier == 3) {
+ chunks = ChunkManager.getInstance().getChunksAround(this.getBaseMetaTileEntity().getXCoord() >> 4, this.getBaseMetaTileEntity().getZCoord() >> 4, ANCHOR_RADIUS);
+ }
+ else if (this.mTier == 4) {
+ chunks = ChunkManager.getInstance().getChunksAround(this.getBaseMetaTileEntity().getXCoord() >> 4 >> 4, (this.getBaseMetaTileEntity().getZCoord() >> 4) >> 4, ANCHOR_RADIUS);
+ }
+ else if (this.mTier == 5) {
+ chunks = ChunkManager.getInstance().getChunksAround(this.getBaseMetaTileEntity().getXCoord() >> 4 >> 4 >> 4, ((this.getBaseMetaTileEntity().getZCoord() >> 4) >> 4) >> 4, ANCHOR_RADIUS);
+ }
+ }
}
@Override
public Chunk loadChunk(World p_75815_1_, int p_75815_2_, int p_75815_3_) throws IOException {
- // TODO Auto-generated method stub
+ Logger.INFO("1");
return null;
}
@Override
public void saveChunk(World p_75816_1_, Chunk p_75816_2_) throws MinecraftException, IOException {
- // TODO Auto-generated method stub
-
+ Logger.INFO("2");
}
@Override
public void saveExtraChunkData(World p_75819_1_, Chunk p_75819_2_) {
- // TODO Auto-generated method stub
-
+ Logger.INFO("3");
}
@Override
public void chunkTick() {
- // TODO Auto-generated method stub
-
+ Logger.INFO("4");
}
@Override
public void saveExtraData() {
- // TODO Auto-generated method stub
-
+ Logger.INFO("5");
}
@Override
@@ -398,4 +435,28 @@ public class GregtechMetaTileEntityChunkLoader extends GT_MetaTileEntity_TieredM
"chunks: "+this.chunks.size()};
}
+ @Override
+ public void onCreated(ItemStack aStack, World aWorld, EntityPlayer aPlayer) {
+ validate();
+ super.onCreated(aStack, aWorld, aPlayer);
+ }
+
+ @Override
+ public void onServerStart() {
+ validate();
+ super.onServerStart();
+ }
+
+ @Override
+ public void onWorldLoad(File aSaveDirectory) {
+ validate();
+ super.onWorldLoad(aSaveDirectory);
+ }
+
+ @Override
+ public void onWorldSave(File aSaveDirectory) {
+ validate();
+ super.onWorldSave(aSaveDirectory);
+ }
+
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechTieredChunkloaders.java b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechTieredChunkloaders.java
index 6e5274536f..3b1f1d8f5f 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechTieredChunkloaders.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechTieredChunkloaders.java
@@ -17,9 +17,15 @@ public class GregtechTieredChunkloaders {
}
private static void run1() {
- int ID = 945;
+ int ID = 943;
GregtechItemList.GT_Chunkloader_HV
- .set(new GregtechMetaTileEntityChunkLoader(ID++, "chunkloader.tier.00", "Chunkloader MK I", 4)
- .getStackForm(1L));
+ .set(new GregtechMetaTileEntityChunkLoader(ID++, "chunkloader.tier.01", "Chunkloader MK I", 3)
+ .getStackForm(1L));
+ GregtechItemList.GT_Chunkloader_EV
+ .set(new GregtechMetaTileEntityChunkLoader(ID++, "chunkloader.tier.02", "Chunkloader MK II", 4)
+ .getStackForm(1L));
+ GregtechItemList.GT_Chunkloader_IV
+ .set(new GregtechMetaTileEntityChunkLoader(ID++, "chunkloader.tier.03", "Chunkloader MK III", 5)
+ .getStackForm(1L));
}
}