diff --git a/common/mekanism/api/transmitters/TransmitterNetworkRegistry.java b/common/mekanism/api/transmitters/TransmitterNetworkRegistry.java index e82b57ecb..a1654a09e 100644 --- a/common/mekanism/api/transmitters/TransmitterNetworkRegistry.java +++ b/common/mekanism/api/transmitters/TransmitterNetworkRegistry.java @@ -113,14 +113,17 @@ public class TransmitterNetworkRegistry implements ITickHandler { int x = event.getChunk().xPosition; int z = event.getChunk().zPosition; + IChunkProvider cProvider = event.getChunk().worldObj.getChunkProvider(); Chunk[] neighbors = new Chunk[5]; neighbors[0] = event.getChunk(); + if(cProvider.chunkExists(x + 1, z)) neighbors[1] = cProvider.provideChunk(x + 1, z); if(cProvider.chunkExists(x - 1, z)) neighbors[2] = cProvider.provideChunk(x - 1, z); if(cProvider.chunkExists(x, z + 1)) neighbors[3] = cProvider.provideChunk(x, z + 1); if(cProvider.chunkExists(x, z - 1)) neighbors[4] = cProvider.provideChunk(x, z - 1); + for(Chunk c : neighbors) { refreshChunk(c); diff --git a/common/mekanism/common/Mekanism.java b/common/mekanism/common/Mekanism.java index a2ae05312..a3c1c063c 100644 --- a/common/mekanism/common/Mekanism.java +++ b/common/mekanism/common/Mekanism.java @@ -1,5 +1,7 @@ package mekanism.common; +import ic2.api.energy.event.EnergyTileLoadEvent; +import ic2.api.energy.tile.IEnergyTile; import ic2.api.recipe.RecipeInputItemStack; import ic2.api.recipe.Recipes; @@ -72,9 +74,11 @@ import mekanism.common.network.PacketTransmitterTransferUpdate.TransmitterTransf import mekanism.common.network.PacketWeather; import mekanism.common.tileentity.TileEntityBoundingBlock; import mekanism.common.tileentity.TileEntityControlPanel; +import mekanism.common.tileentity.TileEntityElectricBlock; import mekanism.common.tileentity.TileEntityEnergyCube; import mekanism.common.tileentity.TileEntityGasTank; import mekanism.common.tileentity.TileEntityTeleporter; +import mekanism.common.tileentity.TileEntityUniversalCable; import mekanism.common.util.MekanismUtils; import mekanism.common.util.MekanismUtils.ResourceType; import net.minecraft.block.Block; @@ -82,9 +86,11 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.CraftingManager; import net.minecraft.item.crafting.FurnaceRecipes; +import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.Configuration; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.ForgeSubscribe; +import net.minecraftforge.event.world.ChunkEvent; import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.oredict.ShapelessOreRecipe; import rebelkeithy.mods.metallurgy.api.IOreInfo; @@ -1279,4 +1285,21 @@ public class Mekanism PacketHandler.sendPacket(Transmission.ALL_CLIENTS, new PacketTransmitterTransferUpdate().setParams(TransmitterTransferType.FLUID, event.fluidNetwork.transmitters.iterator().next(), event.fluidSent)); } catch(Exception e) {} } + + @ForgeSubscribe + public void onChunkLoad(ChunkEvent.Load event) + { + for(Object obj : event.getChunk().chunkTileEntityMap.values()) + { + TileEntity tileEntity = (TileEntity)obj; + + if(tileEntity != null) + { + if(tileEntity instanceof TileEntityElectricBlock || tileEntity instanceof TileEntityUniversalCable) + { + MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent((IEnergyTile)tileEntity)); + } + } + } + } } \ No newline at end of file diff --git a/common/mekanism/common/MekanismHooks.java b/common/mekanism/common/MekanismHooks.java index 36b76079b..48a10dfff 100644 --- a/common/mekanism/common/MekanismHooks.java +++ b/common/mekanism/common/MekanismHooks.java @@ -70,23 +70,27 @@ public final class MekanismHooks for(Map.Entry entry : Recipes.macerator.getRecipes().entrySet()) { - if(MekanismUtils.getName(entry.getKey().getInputs().get(0)).startsWith("ore")) + if(!entry.getKey().getInputs().isEmpty()) { - if(!Recipe.ENRICHMENT_CHAMBER.containsRecipe(entry.getKey().getInputs().get(0))) + if(MekanismUtils.getName(entry.getKey().getInputs().get(0)).startsWith("ore")) { - RecipeHandler.addEnrichmentChamberRecipe(entry.getKey().getInputs().get(0), entry.getValue().items.get(0)); + if(!Recipe.ENRICHMENT_CHAMBER.containsRecipe(entry.getKey().getInputs().get(0))) + { + RecipeHandler.addEnrichmentChamberRecipe(entry.getKey().getInputs().get(0), entry.getValue().items.get(0)); + } } - } - else if(MekanismUtils.getName(entry.getKey().getInputs().get(0)).startsWith("ingot")) - { - if(!Recipe.CRUSHER.containsRecipe(entry.getKey().getInputs().get(0))) + else if(MekanismUtils.getName(entry.getKey().getInputs().get(0)).startsWith("ingot")) { - RecipeHandler.addCrusherRecipe(entry.getKey().getInputs().get(0), entry.getValue().items.get(0)); + if(!Recipe.CRUSHER.containsRecipe(entry.getKey().getInputs().get(0))) + { + RecipeHandler.addCrusherRecipe(entry.getKey().getInputs().get(0), entry.getValue().items.get(0)); + } } } } NBTTagCompound tag = new NBTTagCompound(); + tag.setInteger("amplification", 50000); Recipes.matterAmplifier.addRecipe(new RecipeInputItemStack(new ItemStack(Mekanism.EnrichedAlloy), 1), tag); diff --git a/common/mekanism/common/TransporterStack.java b/common/mekanism/common/TransporterStack.java new file mode 100644 index 000000000..67936bcfb --- /dev/null +++ b/common/mekanism/common/TransporterStack.java @@ -0,0 +1,19 @@ +package mekanism.common; + +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; + +public class TransporterStack +{ + public ItemStack transferStack; + + public void write(NBTTagCompound nbtTags) + { + + } + + public void read(NBTTagCompound nbtTags) + { + + } +} diff --git a/common/mekanism/common/block/BlockTransmitter.java b/common/mekanism/common/block/BlockTransmitter.java index 2a9aa0bd5..bd68217df 100644 --- a/common/mekanism/common/block/BlockTransmitter.java +++ b/common/mekanism/common/block/BlockTransmitter.java @@ -1,5 +1,8 @@ package mekanism.common.block; +import ic2.api.energy.event.EnergyTileLoadEvent; +import ic2.api.energy.tile.IEnergyTile; + import java.util.Arrays; import java.util.List; @@ -29,6 +32,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; +import net.minecraftforge.common.MinecraftForge; import buildcraft.api.tools.IToolWrench; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -283,6 +287,11 @@ public class BlockTransmitter extends Block if(!world.isRemote) { ((ITransmitter)tileEntity).refreshTransmitterNetwork(); + + if(tileEntity instanceof TileEntityUniversalCable) + { + MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent((IEnergyTile)tileEntity)); + } } } diff --git a/common/mekanism/common/tileentity/TileEntityBasicBlock.java b/common/mekanism/common/tileentity/TileEntityBasicBlock.java index 579a46234..0d40b6252 100644 --- a/common/mekanism/common/tileentity/TileEntityBasicBlock.java +++ b/common/mekanism/common/tileentity/TileEntityBasicBlock.java @@ -22,9 +22,6 @@ import com.google.common.io.ByteArrayDataInput; public abstract class TileEntityBasicBlock extends TileEntity implements IWrenchable, ITileNetwork { - /** Whether or not this machine has initialized and registered with other mods. */ - public boolean initialized; - /** The direction this block is facing. */ public int facing; diff --git a/common/mekanism/common/tileentity/TileEntityElectricBlock.java b/common/mekanism/common/tileentity/TileEntityElectricBlock.java index 9d2ebf0d6..525667fec 100644 --- a/common/mekanism/common/tileentity/TileEntityElectricBlock.java +++ b/common/mekanism/common/tileentity/TileEntityElectricBlock.java @@ -1,6 +1,5 @@ package mekanism.common.tileentity; -import ic2.api.energy.event.EnergyTileLoadEvent; import ic2.api.energy.event.EnergyTileUnloadEvent; import ic2.api.energy.tile.IEnergyTile; import ic2.api.tile.IWrenchable; @@ -56,16 +55,6 @@ public abstract class TileEntityElectricBlock extends TileEntityContainerBlock i { if(!worldObj.isRemote) { - if(!initialized) - { - if(Mekanism.hooks.IC2Loaded) - { - MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this)); - } - - initialized = true; - } - if(getEnergy() < getMaxEnergy() && powerHandler.getEnergyStored() > 0) { setEnergy(getEnergy() + powerHandler.useEnergy(0, (float)((getMaxEnergy()-getEnergy())*Mekanism.TO_BC), true)*Mekanism.FROM_BC); @@ -131,7 +120,7 @@ public abstract class TileEntityElectricBlock extends TileEntityContainerBlock i @Override public void invalidate() { - if(initialized && !worldObj.isRemote) + if(!worldObj.isRemote) { if(Mekanism.hooks.IC2Loaded) { diff --git a/common/mekanism/common/tileentity/TileEntityUniversalCable.java b/common/mekanism/common/tileentity/TileEntityUniversalCable.java index 4eacf656c..cb50f34da 100644 --- a/common/mekanism/common/tileentity/TileEntityUniversalCable.java +++ b/common/mekanism/common/tileentity/TileEntityUniversalCable.java @@ -1,5 +1,6 @@ package mekanism.common.tileentity; +import ic2.api.energy.event.EnergyTileUnloadEvent; import ic2.api.energy.tile.IEnergySink; import ic2.api.energy.tile.IEnergyTile; @@ -20,6 +21,7 @@ import mekanism.common.util.CableUtils; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; +import net.minecraftforge.common.MinecraftForge; import buildcraft.api.power.IPowerReceptor; import buildcraft.api.power.PowerHandler; import buildcraft.api.power.PowerHandler.PowerReceiver; @@ -99,6 +101,11 @@ public class TileEntityUniversalCable extends TileEntityTransmitter