Got multimeter working with IC2 and BuildCraft machines

This commit is contained in:
Calclavia 2013-08-27 21:48:31 +08:00
parent 02c44613d4
commit 1b8ed1d8b8
4 changed files with 24 additions and 5 deletions

View file

@ -596,7 +596,7 @@ public class TileEntityBattery extends TileEntityUniversalElectrical implements
@Override
public float getRequest(ForgeDirection direction)
{
return this.getMaxEnergyStored() - this.getEnergyStored();
return Math.min(this.getMaxEnergyStored() - this.getEnergyStored(), this.transferThreshold);
}
@Override

View file

@ -10,6 +10,7 @@ import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeDirection;
/**
* ItemBlock for the Multimeter
@ -49,7 +50,7 @@ public class ItemBlockMultimeter extends ItemBlock
{
// if (!world.isRemote)
{
par2EntityPlayer.addChatMessage("Energy: " + TileEntityMultimeter.getDetectedEnergy(world.getBlockTileEntity(x, y, z)) + " J");
par2EntityPlayer.addChatMessage("Energy: " + TileEntityMultimeter.getDetectedEnergy(ForgeDirection.getOrientation(par7), world.getBlockTileEntity(x, y, z)) + " J");
}
return true;

View file

@ -3,6 +3,8 @@
*/
package resonantinduction.multimeter;
import ic2.api.tile.IEnergyStorage;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
@ -22,6 +24,7 @@ import universalelectricity.core.grid.IElectricityNetwork;
import universalelectricity.prefab.tile.IRotatable;
import universalelectricity.prefab.tile.TileEntityAdvanced;
import universalelectricity.prefab.tile.TileEntityElectrical;
import buildcraft.api.power.IPowerReceptor;
import com.google.common.io.ByteArrayDataInput;
@ -157,10 +160,10 @@ public class TileEntityMultimeter extends TileEntityAdvanced implements IPacketR
{
ForgeDirection direction = this.getDirection();
TileEntity tileEntity = this.worldObj.getBlockTileEntity(this.xCoord + direction.offsetX, this.yCoord + direction.offsetY, this.zCoord + direction.offsetZ);
return getDetectedEnergy(tileEntity);
return getDetectedEnergy(direction.getOpposite(), tileEntity);
}
public static float getDetectedEnergy(TileEntity tileEntity)
public static float getDetectedEnergy(ForgeDirection side, TileEntity tileEntity)
{
if (tileEntity instanceof TileEntityElectrical)
{
@ -179,6 +182,21 @@ public class TileEntityMultimeter extends TileEntityAdvanced implements IPacketR
return MultimeterEventHandler.getCache(tileEntity.worldObj).get(network);
}
}
else if (tileEntity instanceof IEnergyStorage)
{
return ((IEnergyStorage) tileEntity).getStored();
}
else if (tileEntity instanceof IEnergyStorage)
{
return ((IEnergyStorage) tileEntity).getStored();
}
else if (tileEntity instanceof IPowerReceptor)
{
if (((IPowerReceptor) tileEntity).getPowerReceiver(side) != null)
{
return ((IPowerReceptor) tileEntity).getPowerReceiver(side).getEnergyStored();
}
}
return 0;
}

View file

@ -51,7 +51,7 @@ public class BlockWire extends BlockConductor
tileEntity.setDye(entityPlayer.getCurrentEquippedItem().getItemDamage());
return true;
}
else if (entityPlayer.getCurrentEquippedItem().itemID == Block.cloth.blockID)
else if (entityPlayer.getCurrentEquippedItem().itemID == Block.cloth.blockID && !tileEntity.isInsulated)
{
tileEntity.setInsulated();
tileEntity.setDye(BlockColored.getDyeFromBlock(entityPlayer.getCurrentEquippedItem().getItemDamage()));