diff options
author | Jordan Byrne <draknyte1@hotmail.com> | 2018-02-08 22:42:37 +1000 |
---|---|---|
committer | Jordan Byrne <draknyte1@hotmail.com> | 2018-02-08 22:42:37 +1000 |
commit | 03bcdb88d8c71fcb7c61817722e11882d0fb1a62 (patch) | |
tree | 3a73587a17548c9f3f021fb3daaa831185e5347c | |
parent | b25d1fc64cb590cccd6b9218567d476fe3e00351 (diff) | |
download | GT5-Unofficial-03bcdb88d8c71fcb7c61817722e11882d0fb1a62.tar.gz GT5-Unofficial-03bcdb88d8c71fcb7c61817722e11882d0fb1a62.tar.bz2 GT5-Unofficial-03bcdb88d8c71fcb7c61817722e11882d0fb1a62.zip |
$ Tried fixing errors with chunkloader not correctly force loading chunks on server restarts.
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)); } } |