Fixed IC2 integration :)

This commit is contained in:
Aidan Brady 2013-08-30 15:20:52 -04:00
parent f373b06218
commit 8509eaf0ad
8 changed files with 75 additions and 25 deletions

View file

@ -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);

View file

@ -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));
}
}
}
}
}

View file

@ -70,23 +70,27 @@ public final class MekanismHooks
for(Map.Entry<IRecipeInput, RecipeOutput> 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);

View file

@ -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)
{
}
}

View file

@ -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));
}
}
}

View file

@ -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;

View file

@ -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)
{

View file

@ -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<EnergyNetwor
if(!worldObj.isRemote)
{
getTransmitterNetwork().split(this);
if(Mekanism.hooks.IC2Loaded)
{
MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this));
}
}
super.invalidate();
@ -174,7 +181,7 @@ public class TileEntityUniversalCable extends TileEntityTransmitter<EnergyNetwor
{
ArrayList list = new ArrayList();
list.add(Object3D.get(this).getFromSide(direction).getTileEntity(worldObj));
return getTransmitterNetwork().emit(i, list);
return i - (getTransmitterNetwork().emit(i*Mekanism.FROM_IC2, list)*Mekanism.TO_IC2);
}
@Override
@ -248,7 +255,6 @@ public class TileEntityUniversalCable extends TileEntityTransmitter<EnergyNetwor
public class FakeUENetwork implements IElectricityNetwork
{
@Override
public void split(IConductor connection) {}