Node now uses INode interface

This commit is contained in:
Calclavia 2014-03-12 18:22:31 +08:00
parent ab9de9b555
commit 747c851a8c
68 changed files with 357 additions and 360 deletions

View file

@ -1,10 +1,11 @@
package resonantinduction.archaic.crate; package resonantinduction.archaic.crate;
import net.minecraft.tileentity.TileEntity;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
import calclavia.lib.utility.LanguageUtility;
import net.minecraft.tileentity.TileEntity;
import resonantinduction.core.render.RenderItemOverlayTile; import resonantinduction.core.render.RenderItemOverlayTile;
import calclavia.lib.utility.LanguageUtility;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;

View file

@ -14,9 +14,6 @@ import calclavia.lib.utility.inventory.IExtendedStorage;
import com.google.common.io.ByteArrayDataInput; import com.google.common.io.ByteArrayDataInput;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.relauncher.Side;
/** /**
* Basic single stack inventory. * Basic single stack inventory.
* *

View file

@ -29,7 +29,6 @@ import resonantinduction.core.prefab.imprint.ItemImprint;
import resonantinduction.core.render.RenderItemOverlayTile; import resonantinduction.core.render.RenderItemOverlayTile;
import universalelectricity.api.vector.Vector2; import universalelectricity.api.vector.Vector2;
import universalelectricity.api.vector.Vector3; import universalelectricity.api.vector.Vector3;
import universalelectricity.api.vector.VectorWorld;
import calclavia.lib.content.module.TileRender; import calclavia.lib.content.module.TileRender;
import calclavia.lib.content.module.prefab.TileInventory; import calclavia.lib.content.module.prefab.TileInventory;
import calclavia.lib.gui.ContainerDummy; import calclavia.lib.gui.ContainerDummy;
@ -114,7 +113,7 @@ public class TileEngineeringTable extends TileInventory implements IPacketReceiv
{ {
if (this instanceof IInventory) if (this instanceof IInventory)
{ {
IInventory inventory = (IInventory) this; IInventory inventory = this;
// Don't drop the output, so subtract by one. // Don't drop the output, so subtract by one.
for (int i = 0; i < inventory.getSizeInventory() - 1; ++i) for (int i = 0; i < inventory.getSizeInventory() - 1; ++i)

View file

@ -483,6 +483,7 @@ public class TileGrate extends TilePressureNode implements IRotatable
this.iterations = iterations; this.iterations = iterations;
} }
@Override
public int compareTo(Object obj) public int compareTo(Object obj)
{ {
ComparableVector wr = (ComparableVector) obj; ComparableVector wr = (ComparableVector) obj;

View file

@ -1,12 +1,8 @@
package resonantinduction.archaic.fluid.gutter; package resonantinduction.archaic.fluid.gutter;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.fluids.IFluidHandler;
import resonantinduction.archaic.fluid.grate.TileGrate;
import resonantinduction.core.grid.fluid.IPressureNodeProvider;
import resonantinduction.core.grid.fluid.FluidPressureNode; import resonantinduction.core.grid.fluid.FluidPressureNode;
import calclavia.lib.utility.WorldUtility; import resonantinduction.core.grid.fluid.IPressureNodeProvider;
public class FluidGravityNode extends FluidPressureNode public class FluidGravityNode extends FluidPressureNode
{ {

View file

@ -24,14 +24,14 @@ import net.minecraftforge.fluids.IFluidTank;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
import resonantinduction.api.recipe.MachineRecipes; import resonantinduction.api.recipe.MachineRecipes;
import resonantinduction.api.recipe.RecipeResource;
import resonantinduction.api.recipe.MachineRecipes.RecipeType; import resonantinduction.api.recipe.MachineRecipes.RecipeType;
import resonantinduction.api.recipe.RecipeResource;
import resonantinduction.archaic.fluid.grate.TileGrate; import resonantinduction.archaic.fluid.grate.TileGrate;
import resonantinduction.core.Reference; import resonantinduction.core.Reference;
import resonantinduction.core.ResonantInduction; import resonantinduction.core.ResonantInduction;
import resonantinduction.core.fluid.TilePressureNode; import resonantinduction.core.fluid.TilePressureNode;
import resonantinduction.core.grid.fluid.IPressureNodeProvider;
import resonantinduction.core.grid.fluid.FluidPressureNode; import resonantinduction.core.grid.fluid.FluidPressureNode;
import resonantinduction.core.grid.fluid.IPressureNodeProvider;
import universalelectricity.api.vector.Vector3; import universalelectricity.api.vector.Vector3;
import calclavia.lib.content.module.TileRender; import calclavia.lib.content.module.TileRender;
import calclavia.lib.prefab.vector.Cuboid; import calclavia.lib.prefab.vector.Cuboid;
@ -271,6 +271,7 @@ public class TileGutter extends TilePressureNode
} }
} }
@Override
protected void onWorldJoin() protected void onWorldJoin()
{ {
onNeighborChanged(); onNeighborChanged();

View file

@ -9,8 +9,6 @@ import net.minecraftforge.fluids.FluidStack;
import resonantinduction.core.fluid.FluidDistributionetwork; import resonantinduction.core.fluid.FluidDistributionetwork;
import resonantinduction.core.fluid.IFluidDistribution; import resonantinduction.core.fluid.IFluidDistribution;
import calclavia.lib.utility.FluidUtility; import calclavia.lib.utility.FluidUtility;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.relauncher.Side;
/** /**
* Network that handles connected tanks * Network that handles connected tanks

View file

@ -29,6 +29,7 @@ public class TileTank extends TileFluidDistribution implements IComparatorInputO
itemBlock = ItemBlockFluidContainer.class; itemBlock = ItemBlockFluidContainer.class;
} }
@Override
protected boolean use(EntityPlayer player, int side, Vector3 vector3) protected boolean use(EntityPlayer player, int side, Vector3 vector3)
{ {
if (!world().isRemote) if (!world().isRemote)

View file

@ -18,7 +18,6 @@ import resonantinduction.electrical.render.FXElectricBolt;
import resonantinduction.electrical.tesla.RenderTesla; import resonantinduction.electrical.tesla.RenderTesla;
import resonantinduction.electrical.tesla.TileTesla; import resonantinduction.electrical.tesla.TileTesla;
import resonantinduction.electrical.transformer.RenderTransformer; import resonantinduction.electrical.transformer.RenderTransformer;
import resonantinduction.mechanical.energy.gear.RenderGear;
import resonantinduction.quantum.gate.RenderQuantumGlyph; import resonantinduction.quantum.gate.RenderQuantumGlyph;
import universalelectricity.api.vector.Vector3; import universalelectricity.api.vector.Vector3;
import calclavia.lib.render.item.GlobalItemRenderer; import calclavia.lib.render.item.GlobalItemRenderer;

View file

@ -22,128 +22,130 @@ import calclavia.lib.utility.inventory.InventoryUtility;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
/** A block that detects power. /**
* A block that detects power.
* *
* @author Calclavia */ * @author Calclavia
*/
public class BlockBattery extends BlockSidedIO implements ITileEntityProvider public class BlockBattery extends BlockSidedIO implements ITileEntityProvider
{ {
public BlockBattery(int id) public BlockBattery(int id)
{ {
super(id, UniversalElectricity.machine); super(id, UniversalElectricity.machine);
setTextureName(Reference.PREFIX + "material_metal_side"); setTextureName(Reference.PREFIX + "material_metal_side");
} }
@Override @Override
public void onBlockAdded(World world, int x, int y, int z) public void onBlockAdded(World world, int x, int y, int z)
{ {
if (!world.isRemote) if (!world.isRemote)
{ {
TileEnergyDistribution distribution = (TileEnergyDistribution) world.getBlockTileEntity(x, y, z); TileEnergyDistribution distribution = (TileEnergyDistribution) world.getBlockTileEntity(x, y, z);
distribution.updateStructure(); distribution.updateStructure();
} }
} }
@Override @Override
public void onNeighborBlockChange(World world, int x, int y, int z, int id) public void onNeighborBlockChange(World world, int x, int y, int z, int id)
{ {
TileEntity tileEntity = world.getBlockTileEntity(x, y, z); TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
if (!world.isRemote && tileEntity instanceof TileEnergyDistribution) if (!world.isRemote && tileEntity instanceof TileEnergyDistribution)
{ {
TileEnergyDistribution distribution = (TileEnergyDistribution) tileEntity; TileEnergyDistribution distribution = (TileEnergyDistribution) tileEntity;
distribution.updateStructure(); distribution.updateStructure();
} }
} }
@Override @Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entityliving, ItemStack itemStack) public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entityliving, ItemStack itemStack)
{ {
if (!world.isRemote && itemStack.getItem() instanceof ItemBlockBattery) if (!world.isRemote && itemStack.getItem() instanceof ItemBlockBattery)
{ {
ItemBlockBattery itemBlock = (ItemBlockBattery) itemStack.getItem(); ItemBlockBattery itemBlock = (ItemBlockBattery) itemStack.getItem();
TileBattery battery = (TileBattery) world.getBlockTileEntity(x, y, z); TileBattery battery = (TileBattery) world.getBlockTileEntity(x, y, z);
battery.energy.setCapacity(TileBattery.getEnergyForTier(ItemBlockBattery.getTier(itemStack))); battery.energy.setCapacity(TileBattery.getEnergyForTier(ItemBlockBattery.getTier(itemStack)));
battery.energy.setEnergy(itemBlock.getEnergy(itemStack)); battery.energy.setEnergy(itemBlock.getEnergy(itemStack));
battery.updateStructure(); battery.updateStructure();
world.setBlockMetadataWithNotify(x, y, z, ItemBlockBattery.getTier(itemStack), 3); world.setBlockMetadataWithNotify(x, y, z, ItemBlockBattery.getTier(itemStack), 3);
} }
} }
@Override @Override
public boolean onSneakUseWrench(World world, int x, int y, int z, EntityPlayer entityPlayer, int side, float hitX, float hitY, float hitZ) public boolean onSneakUseWrench(World world, int x, int y, int z, EntityPlayer entityPlayer, int side, float hitX, float hitY, float hitZ)
{ {
if (!world.isRemote) if (!world.isRemote)
{ {
InventoryUtility.dropBlockAsItem(world, x, y, z, true); InventoryUtility.dropBlockAsItem(world, x, y, z, true);
} }
return true; return true;
} }
@Override @Override
public void breakBlock(World world, int x, int y, int z, int par5, int par6) public void breakBlock(World world, int x, int y, int z, int par5, int par6)
{ {
super.breakBlock(world, x, y, z, par5, par6); super.breakBlock(world, x, y, z, par5, par6);
} }
@Override @Override
public ArrayList<ItemStack> getBlockDropped(World world, int x, int y, int z, int metadata, int fortune) public ArrayList<ItemStack> getBlockDropped(World world, int x, int y, int z, int metadata, int fortune)
{ {
ArrayList<ItemStack> ret = new ArrayList<ItemStack>(); ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
ItemStack itemStack = new ItemStack(this, 1); ItemStack itemStack = new ItemStack(this, 1);
if (world.getBlockTileEntity(x, y, z) instanceof TileBattery) if (world.getBlockTileEntity(x, y, z) instanceof TileBattery)
{ {
TileBattery battery = (TileBattery) world.getBlockTileEntity(x, y, z); TileBattery battery = (TileBattery) world.getBlockTileEntity(x, y, z);
ItemBlockBattery itemBlock = (ItemBlockBattery) itemStack.getItem(); ItemBlockBattery itemBlock = (ItemBlockBattery) itemStack.getItem();
ItemBlockBattery.setTier(itemStack, (byte) world.getBlockMetadata(x, y, z)); ItemBlockBattery.setTier(itemStack, (byte) world.getBlockMetadata(x, y, z));
itemBlock.setEnergy(itemStack, battery.energy.getEnergy()); itemBlock.setEnergy(itemStack, battery.energy.getEnergy());
} }
ret.add(itemStack); ret.add(itemStack);
return ret; return ret;
} }
@Override @Override
public boolean renderAsNormalBlock() public boolean renderAsNormalBlock()
{ {
return false; return false;
} }
@Override @Override
public boolean isOpaqueCube() public boolean isOpaqueCube()
{ {
return false; return false;
} }
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public int getRenderType() public int getRenderType()
{ {
return BlockRenderingHandler.INSTANCE.getRenderId(); return BlockRenderingHandler.INSTANCE.getRenderId();
} }
@Override @Override
public TileEntity createNewTileEntity(World world) public TileEntity createNewTileEntity(World world)
{ {
return new TileBattery(); return new TileBattery();
} }
@Override @Override
public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z) public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z)
{ {
int id = idPicked(world, x, y, z); int id = idPicked(world, x, y, z);
if (id == 0) if (id == 0)
{ {
return null; return null;
} }
Item item = Item.itemsList[id]; Item item = Item.itemsList[id];
if (item == null) if (item == null)
{ {
return null; return null;
} }
TileBattery battery = (TileBattery) world.getBlockTileEntity(x, y, z); TileBattery battery = (TileBattery) world.getBlockTileEntity(x, y, z);
return CompatibilityModule.getItemWithCharge(ItemBlockBattery.setTier(new ItemStack(id, 1, 0), (byte) world.getBlockMetadata(x, y, z)), battery.energy.getEnergy()); return CompatibilityModule.getItemWithCharge(ItemBlockBattery.setTier(new ItemStack(id, 1, 0), (byte) world.getBlockMetadata(x, y, z)), battery.energy.getEnergy());
} }
} }

View file

@ -70,7 +70,7 @@ public class EnergyDistributionNetwork extends Network<EnergyDistributionNetwork
/** /**
* Apply energy loss. * Apply energy loss.
*/ */
double percentageLoss = 0;//Math.max(0, (1 - (getConnectors().size() * 6 / 100d))); double percentageLoss = 0;// Math.max(0, (1 - (getConnectors().size() * 6 / 100d)));
long energyLoss = (long) (percentageLoss * 100); long energyLoss = (long) (percentageLoss * 100);
totalEnergy -= energyLoss; totalEnergy -= energyLoss;

View file

@ -70,7 +70,10 @@ public class RenderBattery extends TileEntitySpecialRenderer implements ISimpleI
{ {
final String[][] partToDisable = new String[][] { new String[] { "bottom" }, new String[] { "top" }, new String[] { "frame1", "frame2" }, new String[] { "frame3", "frame4" }, new String[] { "frame4", "frame1" }, new String[] { "frame2", "frame3" } }; final String[][] partToDisable = new String[][] { new String[] { "bottom" }, new String[] { "top" }, new String[] { "frame1", "frame2" }, new String[] { "frame3", "frame4" }, new String[] { "frame4", "frame1" }, new String[] { "frame2", "frame3" } };
final String[][] connectionPartToEnable = new String[][] { null, null, new String[] { "frame1con", "frame2con" }, new String[] { "frame3con", "frame4con" }, new String[] { "frame4con", "frame1con" }, new String[] { "frame2con", "frame3con" } }; final String[][] connectionPartToEnable = new String[][] { null, null, new String[] { "frame1con", "frame2con" }, new String[] { "frame3con", "frame4con" }, new String[] { "frame4con", "frame1con" }, new String[] { "frame2con", "frame3con" } };
//final String[][] connectionPartSideToEnable = new String[][] { null, null, new String[] { "frame1conSide", "frame2conSide" }, new String[] { "frame3conSide", "frame4conSide" }, new String[] { "frame4conSide", "frame1conSide" }, new String[] { "frame2conSide", "frame3conSide" } }; // final String[][] connectionPartSideToEnable = new String[][] { null, null, new String[] {
// "frame1conSide", "frame2conSide" }, new String[] { "frame3conSide", "frame4conSide" },
// new String[] { "frame4conSide", "frame1conSide" }, new String[] { "frame2conSide",
// "frame3conSide" } };
GL11.glPushMatrix(); GL11.glPushMatrix();
GL11.glTranslated(x + 0.5, y + 0.5, z + 0.5); GL11.glTranslated(x + 0.5, y + 0.5, z + 0.5);
@ -109,7 +112,7 @@ public class RenderBattery extends TileEntitySpecialRenderer implements ISimpleI
if (new Vector3(t).translate(sideCheck).getTileEntity(t.worldObj) instanceof TileBattery) if (new Vector3(t).translate(sideCheck).getTileEntity(t.worldObj) instanceof TileBattery)
{ {
connectionParts.removeAll(Arrays.asList(connectionPartToEnable[sideCheck.ordinal()])); connectionParts.removeAll(Arrays.asList(connectionPartToEnable[sideCheck.ordinal()]));
//connectionParts.addAll(Arrays.asList(connectionPartSideToEnable[sideCheck.ordinal()])); // connectionParts.addAll(Arrays.asList(connectionPartSideToEnable[sideCheck.ordinal()]));
} }
} }
} }

View file

@ -48,7 +48,7 @@ public class TileBattery extends TileEnergyDistribution implements IVoltageInput
*/ */
public static long getEnergyForTier(int tier) public static long getEnergyForTier(int tier)
{ {
return (long) (Math.round(Math.pow(500000000, (tier / (MAX_TIER + 0.7f)) + 1) / (500000000)) * (500000000)); return Math.round(Math.pow(500000000, (tier / (MAX_TIER + 0.7f)) + 1) / (500000000)) * (500000000);
} }
@Override @Override

View file

@ -47,6 +47,7 @@ public class TileEnergyDistribution extends TileElectrical implements IConnector
{ {
return getNetwork().totalEnergy; return getNetwork().totalEnergy;
} }
@Override @Override
public long getEnergyCapacity(ForgeDirection from) public long getEnergyCapacity(ForgeDirection from)
{ {
@ -54,7 +55,6 @@ public class TileEnergyDistribution extends TileElectrical implements IConnector
} }
@Override @Override
public long onReceiveEnergy(ForgeDirection from, long receive, boolean doReceive) public long onReceiveEnergy(ForgeDirection from, long receive, boolean doReceive)
{ {

View file

@ -1,12 +1,9 @@
package resonantinduction.electrical.generator; package resonantinduction.electrical.generator;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.client.model.AdvancedModelLoader; import net.minecraftforge.client.model.AdvancedModelLoader;
import net.minecraftforge.client.model.IModelCustom; import net.minecraftforge.client.model.IModelCustom;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;

View file

@ -4,8 +4,10 @@ import java.util.EnumSet;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
import resonantinduction.api.IMechanicalNode;
import resonantinduction.core.grid.INode;
import resonantinduction.core.grid.INodeProvider; import resonantinduction.core.grid.INodeProvider;
import resonantinduction.core.grid.Node; import resonantinduction.core.grid.NodeRegistry;
import resonantinduction.mechanical.energy.grid.MechanicalNode; import resonantinduction.mechanical.energy.grid.MechanicalNode;
import universalelectricity.api.energy.EnergyStorageHandler; import universalelectricity.api.energy.EnergyStorageHandler;
import calclavia.lib.prefab.tile.IRotatable; import calclavia.lib.prefab.tile.IRotatable;
@ -18,15 +20,7 @@ import calclavia.lib.prefab.tile.TileElectrical;
*/ */
public class TileGenerator extends TileElectrical implements IRotatable, INodeProvider public class TileGenerator extends TileElectrical implements IRotatable, INodeProvider
{ {
protected MechanicalNode node = new MechanicalNode(this) protected IMechanicalNode node;
{
@Override
public boolean canConnect(ForgeDirection from, Object source)
{
return from == getDirection() || from == getDirection().getOpposite();
}
}.setLoad(0.5f);
/** Generator turns KE -> EE. Inverted one will turn EE -> KE. */ /** Generator turns KE -> EE. Inverted one will turn EE -> KE. */
public boolean isInversed = true; public boolean isInversed = true;
@ -35,6 +29,10 @@ public class TileGenerator extends TileElectrical implements IRotatable, INodePr
public TileGenerator() public TileGenerator()
{ {
energy = new EnergyStorageHandler(1000000); energy = new EnergyStorageHandler(1000000);
node = NodeRegistry.get(this, IMechanicalNode.class);
if (node != null)
node.setLoad(0.5);
} }
public byte toggleGearRatio() public byte toggleGearRatio()
@ -61,29 +59,30 @@ public class TileGenerator extends TileElectrical implements IRotatable, INodePr
{ {
super.updateEntity(); super.updateEntity();
if (!isInversed) if (node != null)
{ {
receiveMechanical(); if (!isInversed)
produce(); {
receiveMechanical();
produce();
}
else
{
produceMechanical();
}
} }
else
{
produceMechanical();
}
} }
public void receiveMechanical() public void receiveMechanical()
{ {
double power = node.getEnergy(); double power = node.getEnergy();
// System.out.println(power);
long receive = energy.receiveEnergy((long) power, true); long receive = energy.receiveEnergy((long) power, true);
if (receive > 0) if (receive > 0)
{ {
double percentageUsed = (double) receive / (double) power; double percentageUsed = receive / power;
node.torque = (node.getTorque() - (node.getTorque() * percentageUsed)); node.apply(-node.getTorque() * percentageUsed, -node.getAngularVelocity() * percentageUsed);
node.angularVelocity = (node.getAngularVelocity() - (node.getAngularVelocity() * percentageUsed));
} }
} }
@ -99,7 +98,7 @@ public class TileGenerator extends TileElectrical implements IRotatable, INodePr
{ {
final double maxAngularVelocity = extract / (float) torqueRatio; final double maxAngularVelocity = extract / (float) torqueRatio;
final double maxTorque = ((double) extract) / maxAngularVelocity; final double maxTorque = (extract) / maxAngularVelocity;
double setAngularVelocity = maxAngularVelocity; double setAngularVelocity = maxAngularVelocity;
double setTorque = maxTorque; double setTorque = maxTorque;
@ -113,8 +112,7 @@ public class TileGenerator extends TileElectrical implements IRotatable, INodePr
if (currentVelo != 0) if (currentVelo != 0)
setAngularVelocity = Math.min(+setAngularVelocity, maxAngularVelocity) * (node.getAngularVelocity() / currentVelo); setAngularVelocity = Math.min(+setAngularVelocity, maxAngularVelocity) * (node.getAngularVelocity() / currentVelo);
node.torque = setTorque; node.apply(setTorque - node.getTorque(), setAngularVelocity - node.getAngularVelocity());
node.angularVelocity = setAngularVelocity;
energy.extractEnergy((long) Math.abs(setTorque * setAngularVelocity), true); energy.extractEnergy((long) Math.abs(setTorque * setAngularVelocity), true);
} }
} }
@ -165,10 +163,14 @@ public class TileGenerator extends TileElectrical implements IRotatable, INodePr
} }
@Override @Override
public <N extends Node> N getNode(Class<? super N> nodeType, ForgeDirection from) public <N extends INode> N getNode(Class<? super N> nodeType, ForgeDirection from)
{ {
if (nodeType.isAssignableFrom(node.getClass())) if (from == getDirection() || from == getDirection().getOpposite())
return (N) node; {
if (nodeType.isAssignableFrom(node.getClass()))
return (N) node;
}
return null; return null;
} }
} }

View file

@ -2,8 +2,6 @@ package resonantinduction.electrical.multimeter;
import java.util.List; import java.util.List;
import org.lwjgl.input.Keyboard;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
@ -11,11 +9,11 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Icon; import net.minecraft.util.Icon;
import net.minecraft.util.MathHelper; import net.minecraft.util.MathHelper;
import net.minecraft.world.World; import net.minecraft.world.World;
import org.lwjgl.input.Keyboard;
import resonantinduction.core.prefab.part.IHighlight; import resonantinduction.core.prefab.part.IHighlight;
import resonantinduction.electrical.wire.EnumWireMaterial; import resonantinduction.electrical.wire.EnumWireMaterial;
import resonantinduction.mechanical.energy.gear.PartGearShaft;
import universalelectricity.api.energy.UnitDisplay;
import universalelectricity.api.energy.UnitDisplay.Unit;
import calclavia.lib.render.EnumColor; import calclavia.lib.render.EnumColor;
import calclavia.lib.utility.LanguageUtility; import calclavia.lib.utility.LanguageUtility;
import codechicken.lib.vec.BlockCoord; import codechicken.lib.vec.BlockCoord;

View file

@ -4,7 +4,6 @@ import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import calclavia.lib.utility.LanguageUtility;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList; import net.minecraft.nbt.NBTTagList;
import universalelectricity.api.energy.UnitDisplay; import universalelectricity.api.energy.UnitDisplay;
@ -13,6 +12,7 @@ import universalelectricity.api.net.IUpdate;
import universalelectricity.api.vector.Vector3; import universalelectricity.api.vector.Vector3;
import universalelectricity.core.net.Network; import universalelectricity.core.net.Network;
import universalelectricity.core.net.NetworkTickHandler; import universalelectricity.core.net.NetworkTickHandler;
import calclavia.lib.utility.LanguageUtility;
public class MultimeterNetwork extends Network<MultimeterNetwork, PartMultimeter> implements IUpdate public class MultimeterNetwork extends Network<MultimeterNetwork, PartMultimeter> implements IUpdate
{ {

View file

@ -11,13 +11,13 @@ import net.minecraft.util.MovingObjectPosition;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.FluidTankInfo;
import net.minecraftforge.fluids.IFluidHandler; import net.minecraftforge.fluids.IFluidHandler;
import resonantinduction.api.IMechanicalNode;
import resonantinduction.core.ResonantInduction; import resonantinduction.core.ResonantInduction;
import resonantinduction.core.grid.INodeProvider; import resonantinduction.core.grid.INodeProvider;
import resonantinduction.core.grid.fluid.IPressureNodeProvider;
import resonantinduction.core.grid.fluid.FluidPressureNode; import resonantinduction.core.grid.fluid.FluidPressureNode;
import resonantinduction.core.grid.fluid.IPressureNodeProvider;
import resonantinduction.core.prefab.part.PartFace; import resonantinduction.core.prefab.part.PartFace;
import resonantinduction.electrical.Electrical; import resonantinduction.electrical.Electrical;
import resonantinduction.mechanical.energy.grid.MechanicalNode;
import universalelectricity.api.CompatibilityModule; import universalelectricity.api.CompatibilityModule;
import universalelectricity.api.electricity.IElectricalNetwork; import universalelectricity.api.electricity.IElectricalNetwork;
import universalelectricity.api.energy.IConductor; import universalelectricity.api.energy.IConductor;
@ -271,7 +271,7 @@ public class PartMultimeter extends PartFace implements IConnector<MultimeterNet
if (tileEntity instanceof INodeProvider) if (tileEntity instanceof INodeProvider)
{ {
MechanicalNode instance = ((INodeProvider) tileEntity).getNode(MechanicalNode.class, receivingSide); IMechanicalNode instance = ((INodeProvider) tileEntity).getNode(IMechanicalNode.class, receivingSide);
for (ForgeDirection dir : ForgeDirection.values()) for (ForgeDirection dir : ForgeDirection.values())
{ {
@ -280,7 +280,7 @@ public class PartMultimeter extends PartFace implements IConnector<MultimeterNet
break; break;
} }
instance = ((INodeProvider) tileEntity).getNode(MechanicalNode.class, dir); instance = ((INodeProvider) tileEntity).getNode(IMechanicalNode.class, dir);
} }
if (instance != null) if (instance != null)
@ -370,28 +370,34 @@ public class PartMultimeter extends PartFace implements IConnector<MultimeterNet
public void read(MCDataInput packet, int packetID) public void read(MCDataInput packet, int packetID)
{ {
if (packetID == 0) switch (packetID)
{ {
placementSide = ForgeDirection.getOrientation(packet.readByte()); case 0:
facing = packet.readByte(); {
detectMode = DetectMode.values()[packet.readByte()]; placementSide = ForgeDirection.getOrientation(packet.readByte());
detectType = packet.readByte(); facing = packet.readByte();
graphType = packet.readByte(); detectMode = DetectMode.values()[packet.readByte()];
getNetwork().center = new universalelectricity.api.vector.Vector3(packet.readNBTTagCompound()); detectType = packet.readByte();
getNetwork().size = new universalelectricity.api.vector.Vector3(packet.readNBTTagCompound()); graphType = packet.readByte();
getNetwork().isEnabled = packet.readBoolean(); getNetwork().center = new universalelectricity.api.vector.Vector3(packet.readNBTTagCompound());
refresh(); getNetwork().size = new universalelectricity.api.vector.Vector3(packet.readNBTTagCompound());
} getNetwork().isEnabled = packet.readBoolean();
else if (packetID == 1) refresh();
{ break;
redstoneTriggerLimit = packet.readLong(); }
} case 1:
else if (packetID == 2) {
{ redstoneTriggerLimit = packet.readLong();
isPrimary = packet.readBoolean(); break;
}
case 2:
{
isPrimary = packet.readBoolean();
if (isPrimary) if (isPrimary)
getNetwork().load(packet.readNBTTagCompound()); getNetwork().load(packet.readNBTTagCompound());
break;
}
} }
} }
@ -485,6 +491,7 @@ public class PartMultimeter extends PartFace implements IConnector<MultimeterNet
return true; return true;
} }
@Override
protected ItemStack getItem() protected ItemStack getItem()
{ {
return new ItemStack(Electrical.itemMultimeter); return new ItemStack(Electrical.itemMultimeter);

View file

@ -40,6 +40,7 @@ public class PartTransformer extends PartFace implements IVoltageOutput, IEnergy
/** Amount to mulitply the step by (up x2. down /2) */ /** Amount to mulitply the step by (up x2. down /2) */
public byte multiplier = 2; public byte multiplier = 2;
@Override
public void preparePlacement(int side, int facing) public void preparePlacement(int side, int facing)
{ {
this.placementSide = ForgeDirection.getOrientation(side); this.placementSide = ForgeDirection.getOrientation(side);
@ -71,6 +72,7 @@ public class PartTransformer extends PartFace implements IVoltageOutput, IEnergy
return false; return false;
} }
@Override
protected ItemStack getItem() protected ItemStack getItem()
{ {
return new ItemStack(Electrical.itemTransformer); return new ItemStack(Electrical.itemTransformer);

View file

@ -8,14 +8,12 @@ import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.Configuration;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
import org.lwjgl.input.Keyboard; import org.lwjgl.input.Keyboard;
import resonantinduction.core.MultipartUtility; import resonantinduction.core.MultipartUtility;
import resonantinduction.core.Reference; import resonantinduction.core.Reference;
import resonantinduction.core.Settings;
import resonantinduction.core.TabRI; import resonantinduction.core.TabRI;
import resonantinduction.electrical.wire.flat.PartFlatWire; import resonantinduction.electrical.wire.flat.PartFlatWire;
import resonantinduction.electrical.wire.flat.RenderFlatWire; import resonantinduction.electrical.wire.flat.RenderFlatWire;

View file

@ -13,7 +13,6 @@ import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Icon;
import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
@ -21,13 +20,11 @@ import net.minecraftforge.common.MinecraftForge;
import resonantinduction.core.prefab.part.PartFramedConnection; import resonantinduction.core.prefab.part.PartFramedConnection;
import resonantinduction.electrical.Electrical; import resonantinduction.electrical.Electrical;
import resonantinduction.electrical.wire.EnumWireMaterial; import resonantinduction.electrical.wire.EnumWireMaterial;
import resonantinduction.electrical.wire.PartAdvancedWire;
import universalelectricity.api.CompatibilityModule; import universalelectricity.api.CompatibilityModule;
import universalelectricity.api.UniversalClass; import universalelectricity.api.UniversalClass;
import universalelectricity.api.energy.EnergyNetworkLoader; import universalelectricity.api.energy.EnergyNetworkLoader;
import universalelectricity.api.energy.IConductor; import universalelectricity.api.energy.IConductor;
import universalelectricity.api.energy.IEnergyNetwork; import universalelectricity.api.energy.IEnergyNetwork;
import universalelectricity.api.vector.Vector3;
import codechicken.lib.lighting.LazyLightMatrix; import codechicken.lib.lighting.LazyLightMatrix;
import codechicken.lib.render.CCRenderState; import codechicken.lib.render.CCRenderState;
import codechicken.lib.render.IconTransformation; import codechicken.lib.render.IconTransformation;
@ -36,7 +33,6 @@ import codechicken.lib.vec.BlockCoord;
import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Cuboid6;
import codechicken.lib.vec.Translation; import codechicken.lib.vec.Translation;
import codechicken.microblock.IHollowConnect; import codechicken.microblock.IHollowConnect;
import codechicken.multipart.JIconHitEffects;
import codechicken.multipart.JNormalOcclusion; import codechicken.multipart.JNormalOcclusion;
import codechicken.multipart.MultiPartRegistry; import codechicken.multipart.MultiPartRegistry;
import codechicken.multipart.PartMap; import codechicken.multipart.PartMap;

View file

@ -5,7 +5,6 @@ import net.minecraft.entity.Entity;
import net.minecraft.inventory.ISidedInventory; import net.minecraft.inventory.ISidedInventory;
import net.minecraftforge.fluids.FluidTank; import net.minecraftforge.fluids.FluidTank;
import net.minecraftforge.fluids.IFluidHandler; import net.minecraftforge.fluids.IFluidHandler;
import calclavia.lib.utility.inventory.IExternalInventoryBox;
/** /**
* Only TileEntities should implement this. * Only TileEntities should implement this.

View file

@ -68,7 +68,7 @@ public class ItemQuantumGlyph extends JItemMultiPart implements IHighlight
} }
else else
{ {
//pos.offset(side); // pos.offset(side);
} }
} }

View file

@ -110,7 +110,7 @@ public class PartQuantumGlyph extends JCuboidPart implements TSlottedPart, JNorm
} }
} }
gates.remove((IQuantumGate) tile()); gates.remove(tile());
if (gates.size() > 0) if (gates.size() > 0)
{ {

View file

@ -1,11 +1,6 @@
package resonantinduction.quantum.gate; package resonantinduction.quantum.gate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityList; import net.minecraft.entity.EntityList;
@ -13,9 +8,7 @@ import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.server.MinecraftServer; import net.minecraft.server.MinecraftServer;
import net.minecraft.util.ChunkCoordinates; import net.minecraft.util.ChunkCoordinates;
import net.minecraft.world.Teleporter; import net.minecraft.world.Teleporter;
import net.minecraft.world.World;
import net.minecraft.world.WorldServer; import net.minecraft.world.WorldServer;
import universalelectricity.api.vector.Vector3;
import universalelectricity.api.vector.VectorWorld; import universalelectricity.api.vector.VectorWorld;
public class QuantumGateManager public class QuantumGateManager
@ -93,7 +86,7 @@ public class QuantumGateManager
{ {
ChunkCoordinates chunkcoordinates = worldserver1.getSpawnPoint(); ChunkCoordinates chunkcoordinates = worldserver1.getSpawnPoint();
chunkcoordinates.posY = currentEntity.worldObj.getTopSolidOrLiquidBlock(chunkcoordinates.posX, chunkcoordinates.posZ); chunkcoordinates.posY = currentEntity.worldObj.getTopSolidOrLiquidBlock(chunkcoordinates.posX, chunkcoordinates.posZ);
entity.setLocationAndAngles((double) chunkcoordinates.posX, (double) chunkcoordinates.posY, (double) chunkcoordinates.posZ, entity.rotationYaw, entity.rotationPitch); entity.setLocationAndAngles(chunkcoordinates.posX, chunkcoordinates.posY, chunkcoordinates.posZ, entity.rotationYaw, entity.rotationPitch);
} }
worldserver1.spawnEntityInWorld(entity); worldserver1.spawnEntityInWorld(entity);

View file

@ -3,19 +3,13 @@ package resonantinduction.quantum.gate;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.model.AdvancedModelLoader;
import net.minecraftforge.client.model.IModelCustom;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
import codechicken.lib.vec.Cuboid6;
import codechicken.lib.vec.Vector3;
import resonantinduction.core.Reference; import resonantinduction.core.Reference;
import resonantinduction.electrical.Electrical;
import calclavia.lib.render.RenderUtility; import calclavia.lib.render.RenderUtility;
import calclavia.lib.render.item.ISimpleItemRenderer; import calclavia.lib.render.item.ISimpleItemRenderer;
import cpw.mods.fml.client.FMLClientHandler; import codechicken.lib.vec.Cuboid6;
public class RenderQuantumGlyph implements ISimpleItemRenderer public class RenderQuantumGlyph implements ISimpleItemRenderer
{ {

View file

@ -1,24 +1,14 @@
package resonantinduction.quantum.gate; package resonantinduction.quantum.gate;
import icbm.api.IBlockFrequency; import icbm.api.IBlockFrequency;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import calclavia.lib.utility.inventory.IExternalInventoryBox;
import mffs.api.fortron.FrequencyGrid;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidContainerRegistry;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTank; import net.minecraftforge.fluids.FluidTank;
import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.FluidTankInfo;
import universalelectricity.api.vector.VectorWorld;
import codechicken.multipart.TMultiPart; import codechicken.multipart.TMultiPart;
import codechicken.multipart.TileMultipart; import codechicken.multipart.TileMultipart;

View file

@ -6,14 +6,17 @@ import net.minecraft.item.ItemStack;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.oredict.OreDictionary;
import net.minecraftforge.oredict.ShapedOreRecipe; import net.minecraftforge.oredict.ShapedOreRecipe;
import resonantinduction.api.IMechanicalNode;
import resonantinduction.core.Reference; import resonantinduction.core.Reference;
import resonantinduction.core.ResonantInduction; import resonantinduction.core.ResonantInduction;
import resonantinduction.core.Settings; import resonantinduction.core.Settings;
import resonantinduction.core.TabRI; import resonantinduction.core.TabRI;
import resonantinduction.core.grid.NodeRegistry;
import resonantinduction.mechanical.belt.BlockConveyorBelt; import resonantinduction.mechanical.belt.BlockConveyorBelt;
import resonantinduction.mechanical.belt.TileConveyorBelt; import resonantinduction.mechanical.belt.TileConveyorBelt;
import resonantinduction.mechanical.energy.gear.ItemGear; import resonantinduction.mechanical.energy.gear.ItemGear;
import resonantinduction.mechanical.energy.gear.ItemGearShaft; import resonantinduction.mechanical.energy.gear.ItemGearShaft;
import resonantinduction.mechanical.energy.grid.MechanicalNode;
import resonantinduction.mechanical.energy.turbine.BlockWaterTurbine; import resonantinduction.mechanical.energy.turbine.BlockWaterTurbine;
import resonantinduction.mechanical.energy.turbine.BlockWindTurbine; import resonantinduction.mechanical.energy.turbine.BlockWindTurbine;
import resonantinduction.mechanical.energy.turbine.SchematicWaterTurbine; import resonantinduction.mechanical.energy.turbine.SchematicWaterTurbine;
@ -55,7 +58,7 @@ import cpw.mods.fml.common.registry.GameRegistry;
* *
* @author DarkCow, Calclavia * @author DarkCow, Calclavia
*/ */
@Mod(modid = Mechanical.ID, name = Mechanical.NAME, version = Reference.VERSION, dependencies = "before:ThermalExpansion;required-after:" + ResonantInduction.ID) @Mod(modid = Mechanical.ID, name = Mechanical.NAME, version = Reference.VERSION, dependencies = "before:ThermalExpansion;required-after:" + ResonantInduction.ID + ";after:ResonantInduction|Archaic")
@NetworkMod(channels = Reference.CHANNEL, clientSideRequired = true, serverSideRequired = false, packetHandler = PacketHandler.class) @NetworkMod(channels = Reference.CHANNEL, clientSideRequired = true, serverSideRequired = false, packetHandler = PacketHandler.class)
public class Mechanical public class Mechanical
{ {
@ -104,6 +107,8 @@ public class Mechanical
MinecraftForge.EVENT_BUS.register(new MicroblockHighlightHandler()); MinecraftForge.EVENT_BUS.register(new MicroblockHighlightHandler());
BlockCreativeBuilder.register(new SchematicWindTurbine()); BlockCreativeBuilder.register(new SchematicWindTurbine());
BlockCreativeBuilder.register(new SchematicWaterTurbine()); BlockCreativeBuilder.register(new SchematicWaterTurbine());
NodeRegistry.register(IMechanicalNode.class, MechanicalNode.class);
Settings.CONFIGURATION.load(); Settings.CONFIGURATION.load();
itemGear = contentRegistry.createItem(ItemGear.class); itemGear = contentRegistry.createItem(ItemGear.class);

View file

@ -9,8 +9,8 @@ import org.lwjgl.opengl.GL11;
import resonantinduction.core.prefab.part.IHighlight; import resonantinduction.core.prefab.part.IHighlight;
import codechicken.lib.render.RenderUtils; import codechicken.lib.render.RenderUtils;
import codechicken.lib.vec.Vector3; import codechicken.lib.vec.Vector3;
import codechicken.microblock.FacePlacementGrid$;
import codechicken.microblock.CornerPlacementGrid$; import codechicken.microblock.CornerPlacementGrid$;
import codechicken.microblock.FacePlacementGrid$;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;

View file

@ -12,8 +12,8 @@ import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
import resonantinduction.core.Reference; import resonantinduction.core.Reference;
import resonantinduction.core.grid.INode;
import resonantinduction.core.grid.INodeProvider; import resonantinduction.core.grid.INodeProvider;
import resonantinduction.core.grid.Node;
import resonantinduction.core.resource.ItemHandCrank; import resonantinduction.core.resource.ItemHandCrank;
import resonantinduction.mechanical.Mechanical; import resonantinduction.mechanical.Mechanical;
import resonantinduction.mechanical.energy.grid.MechanicalNode; import resonantinduction.mechanical.energy.grid.MechanicalNode;
@ -344,7 +344,7 @@ public class PartGear extends PartMechanical implements IMultiBlockStructure<Par
{ {
if (manualCrankTime > 0) if (manualCrankTime > 0)
{ {
node.apply(isClockwiseCrank ? 2 : -2, isClockwiseCrank ? 0.02f : -0.02f); node.apply(isClockwiseCrank ? 5 : -5, isClockwiseCrank ? 0.025f : -0.025f);
manualCrankTime--; manualCrankTime--;
} }
@ -528,7 +528,7 @@ public class PartGear extends PartMechanical implements IMultiBlockStructure<Par
} }
@Override @Override
public <N extends Node> N getNode(Class<? super N> nodeType, ForgeDirection from) public <N extends INode> N getNode(Class<? super N> nodeType, ForgeDirection from)
{ {
if (nodeType.isAssignableFrom(node.getClass())) if (nodeType.isAssignableFrom(node.getClass()))
return (N) getMultiBlock().get().node; return (N) getMultiBlock().get().node;

View file

@ -7,6 +7,7 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
import resonantinduction.api.IMechanicalNode;
import resonantinduction.core.ResonantInduction; import resonantinduction.core.ResonantInduction;
import resonantinduction.core.grid.INodeProvider; import resonantinduction.core.grid.INodeProvider;
import resonantinduction.core.grid.Node; import resonantinduction.core.grid.Node;
@ -51,6 +52,7 @@ public class MechanicalNode extends Node<INodeProvider, TickingGrid, MechanicalN
super(parent); super(parent);
} }
@Override
public MechanicalNode setLoad(double load) public MechanicalNode setLoad(double load)
{ {
this.load = load; this.load = load;
@ -196,6 +198,7 @@ public class MechanicalNode extends Node<INodeProvider, TickingGrid, MechanicalN
/** /**
* Recache the connections. This is the default connection implementation. * Recache the connections. This is the default connection implementation.
*/ */
@Override
public void recache() public void recache()
{ {
synchronized (connections) synchronized (connections)

View file

@ -7,9 +7,8 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.MovingObjectPosition;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
import resonantinduction.core.grid.INode;
import resonantinduction.core.grid.INodeProvider; import resonantinduction.core.grid.INodeProvider;
import resonantinduction.core.grid.Node;
import resonantinduction.mechanical.energy.turbine.TileMechanicalTurbine;
import codechicken.lib.data.MCDataInput; import codechicken.lib.data.MCDataInput;
import codechicken.lib.data.MCDataOutput; import codechicken.lib.data.MCDataOutput;
import codechicken.multipart.JCuboidPart; import codechicken.multipart.JCuboidPart;
@ -71,7 +70,7 @@ public abstract class PartMechanical extends JCuboidPart implements JNormalOcclu
} }
@Override @Override
public <N extends Node> N getNode(Class<? super N> nodeType, ForgeDirection from) public <N extends INode> N getNode(Class<? super N> nodeType, ForgeDirection from)
{ {
if (nodeType.isAssignableFrom(node.getClass())) if (nodeType.isAssignableFrom(node.getClass()))
return (N) node; return (N) node;
@ -95,18 +94,23 @@ public abstract class PartMechanical extends JCuboidPart implements JNormalOcclu
{ {
if (world() != null && !world().isRemote) if (world() != null && !world().isRemote)
{ {
sendDescUpdate(); getWriteStream().writeByte(1).writeDouble(node.angularVelocity);
// TODO: Make packets more efficient.
// getWriteStream().writeByte(1).writeFloat(angularVelocity);
} }
} }
/** Packet Code. */
@Override
public void read(MCDataInput packet)
{
read(packet, packet.readUByte());
}
public void read(MCDataInput packet, int packetID) public void read(MCDataInput packet, int packetID)
{ {
switch (packetID) switch (packetID)
{ {
case 0: case 0:
readDesc(packet); load(packet.readNBTTagCompound());
break; break;
case 1: case 1:
node.angularVelocity = packet.readDouble(); node.angularVelocity = packet.readDouble();
@ -114,29 +118,22 @@ public abstract class PartMechanical extends JCuboidPart implements JNormalOcclu
} }
} }
/** Packet Code. */
@Override @Override
public void readDesc(MCDataInput packet) public void readDesc(MCDataInput packet)
{ {
packet.readByte();
load(packet.readNBTTagCompound()); load(packet.readNBTTagCompound());
} }
@Override @Override
public void writeDesc(MCDataOutput packet) public void writeDesc(MCDataOutput packet)
{ {
// packet.writeByte(0); packet.writeByte(0);
NBTTagCompound nbt = new NBTTagCompound(); NBTTagCompound nbt = new NBTTagCompound();
save(nbt); save(nbt);
packet.writeNBTTagCompound(nbt); packet.writeNBTTagCompound(nbt);
} }
@Override
public void read(MCDataInput packet)
{
super.read(packet);
// read(packet, packet.readUByte());
}
@Override @Override
public int redstoneConductionMap() public int redstoneConductionMap()
{ {

View file

@ -5,8 +5,8 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
import resonantinduction.core.ResonantInduction; import resonantinduction.core.ResonantInduction;
import resonantinduction.core.grid.INode;
import resonantinduction.core.grid.INodeProvider; import resonantinduction.core.grid.INodeProvider;
import resonantinduction.core.grid.Node;
import resonantinduction.mechanical.Mechanical; import resonantinduction.mechanical.Mechanical;
import universalelectricity.api.vector.Vector3; import universalelectricity.api.vector.Vector3;
import calclavia.lib.content.module.TileBase; import calclavia.lib.content.module.TileBase;
@ -82,7 +82,7 @@ public abstract class TileMechanical extends TileBase implements INodeProvider,
} }
@Override @Override
public <N extends Node> N getNode(Class<? super N> nodeType, ForgeDirection from) public <N extends INode> N getNode(Class<? super N> nodeType, ForgeDirection from)
{ {
if (nodeType.isAssignableFrom(mechanicalNode.getClass())) if (nodeType.isAssignableFrom(mechanicalNode.getClass()))
return (N) mechanicalNode; return (N) mechanicalNode;

View file

@ -48,7 +48,7 @@ public class RenderWaterTurbine extends TileEntitySpecialRenderer implements ISi
public void renderInventoryItem(ItemStack itemStack) public void renderInventoryItem(ItemStack itemStack)
{ {
GL11.glPushMatrix(); GL11.glPushMatrix();
GL11.glTranslatef((float) 0.5f, (float) 0.5f, (float) 0.5f); GL11.glTranslatef(0.5f, 0.5f, 0.5f);
renderWaterTurbine(itemStack.getItemDamage(), 1, false); renderWaterTurbine(itemStack.getItemDamage(), 1, false);
GL11.glPopMatrix(); GL11.glPopMatrix();
} }

View file

@ -3,8 +3,8 @@ package resonantinduction.mechanical.energy.turbine;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
import resonantinduction.core.grid.INode;
import resonantinduction.core.grid.INodeProvider; import resonantinduction.core.grid.INodeProvider;
import resonantinduction.core.grid.Node;
import resonantinduction.mechanical.energy.grid.MechanicalNode; import resonantinduction.mechanical.energy.grid.MechanicalNode;
import universalelectricity.api.energy.EnergyStorageHandler; import universalelectricity.api.energy.EnergyStorageHandler;
import calclavia.lib.network.Synced.SyncedInput; import calclavia.lib.network.Synced.SyncedInput;
@ -77,7 +77,7 @@ public class TileMechanicalTurbine extends TileTurbine implements INodeProvider
} }
@Override @Override
public <N extends Node> N getNode(Class<? super N> nodeType, ForgeDirection from) public <N extends INode> N getNode(Class<? super N> nodeType, ForgeDirection from)
{ {
if (nodeType.isAssignableFrom(mechanicalNode.getClass())) if (nodeType.isAssignableFrom(mechanicalNode.getClass()))
return (N) ((TileMechanicalTurbine) getMultiBlock().get()).mechanicalNode; return (N) ((TileMechanicalTurbine) getMultiBlock().get()).mechanicalNode;

View file

@ -2,17 +2,17 @@ package resonantinduction.mechanical.fluid.pipe;
import java.util.List; import java.util.List;
import org.lwjgl.input.Keyboard;
import resonantinduction.electrical.wire.EnumWireMaterial;
import universalelectricity.api.energy.UnitDisplay;
import universalelectricity.api.energy.UnitDisplay.Unit;
import calclavia.lib.render.EnumColor;
import calclavia.lib.utility.LanguageUtility;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.world.World; import net.minecraft.world.World;
import org.lwjgl.input.Keyboard;
import universalelectricity.api.energy.UnitDisplay;
import universalelectricity.api.energy.UnitDisplay.Unit;
import calclavia.lib.render.EnumColor;
import calclavia.lib.utility.LanguageUtility;
import codechicken.lib.vec.BlockCoord; import codechicken.lib.vec.BlockCoord;
import codechicken.lib.vec.Vector3; import codechicken.lib.vec.Vector3;
import codechicken.multipart.JItemMultiPart; import codechicken.multipart.JItemMultiPart;

View file

@ -12,8 +12,8 @@ import net.minecraftforge.fluids.FluidTank;
import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.FluidTankInfo;
import net.minecraftforge.fluids.IFluidHandler; import net.minecraftforge.fluids.IFluidHandler;
import resonantinduction.core.ResonantInduction; import resonantinduction.core.ResonantInduction;
import resonantinduction.core.grid.fluid.IPressureNodeProvider;
import resonantinduction.core.grid.fluid.FluidPressureNode; import resonantinduction.core.grid.fluid.FluidPressureNode;
import resonantinduction.core.grid.fluid.IPressureNodeProvider;
import resonantinduction.core.prefab.part.PartFramedNode; import resonantinduction.core.prefab.part.PartFramedNode;
import resonantinduction.mechanical.Mechanical; import resonantinduction.mechanical.Mechanical;
import calclavia.lib.utility.WorldUtility; import calclavia.lib.utility.WorldUtility;

View file

@ -19,6 +19,7 @@ public class RenderPump extends TileEntitySpecialRenderer
public static final IModelCustom MODEL = AdvancedModelLoader.loadModel(Reference.MODEL_DIRECTORY + "pump.tcn"); public static final IModelCustom MODEL = AdvancedModelLoader.loadModel(Reference.MODEL_DIRECTORY + "pump.tcn");
public static final ResourceLocation TEXTURE = new ResourceLocation(Reference.DOMAIN, Reference.MODEL_PATH + "pump.png"); public static final ResourceLocation TEXTURE = new ResourceLocation(Reference.DOMAIN, Reference.MODEL_PATH + "pump.png");
@Override
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f)
{ {
TilePump tile = (TilePump) tileEntity; TilePump tile = (TilePump) tileEntity;

View file

@ -7,10 +7,9 @@ import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTank; import net.minecraftforge.fluids.FluidTank;
import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.FluidTankInfo;
import net.minecraftforge.fluids.IFluidHandler; import net.minecraftforge.fluids.IFluidHandler;
import resonantinduction.core.Reference; import resonantinduction.core.grid.INode;
import resonantinduction.core.grid.Node;
import resonantinduction.core.grid.fluid.IPressureNodeProvider;
import resonantinduction.core.grid.fluid.FluidPressureNode; import resonantinduction.core.grid.fluid.FluidPressureNode;
import resonantinduction.core.grid.fluid.IPressureNodeProvider;
import resonantinduction.mechanical.energy.grid.TileMechanical; import resonantinduction.mechanical.energy.grid.TileMechanical;
import universalelectricity.api.UniversalElectricity; import universalelectricity.api.UniversalElectricity;
import universalelectricity.api.vector.Vector3; import universalelectricity.api.vector.Vector3;
@ -154,7 +153,7 @@ public class TilePump extends TileMechanical implements IPressureNodeProvider, I
} }
@Override @Override
public <N extends Node> N getNode(Class<? super N> nodeType, ForgeDirection from) public <N extends INode> N getNode(Class<? super N> nodeType, ForgeDirection from)
{ {
if (nodeType.isAssignableFrom(pressureNode.getClass())) if (nodeType.isAssignableFrom(pressureNode.getClass()))
return (N) pressureNode; return (N) pressureNode;

View file

@ -1,7 +1,6 @@
package resonantinduction.mechanical.logistic.belt; package resonantinduction.mechanical.logistic.belt;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List; import java.util.List;
import net.minecraft.block.Block; import net.minecraft.block.Block;
@ -20,7 +19,6 @@ import net.minecraftforge.common.ForgeDirection;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
import resonantinduction.api.IFilterable;
import resonantinduction.core.Reference; import resonantinduction.core.Reference;
import resonantinduction.core.prefab.imprint.ItemImprint; import resonantinduction.core.prefab.imprint.ItemImprint;
import universalelectricity.api.UniversalElectricity; import universalelectricity.api.UniversalElectricity;
@ -55,6 +53,7 @@ public class TileSorter extends TileInventory
return interactCurrentItem(side, player); return interactCurrentItem(side, player);
} }
@Override
protected boolean configure(EntityPlayer player, int side, Vector3 vector3) protected boolean configure(EntityPlayer player, int side, Vector3 vector3)
{ {
isInverted = !isInverted; isInverted = !isInverted;
@ -134,7 +133,7 @@ public class TileSorter extends TileInventory
int blockID = position().translate(dir).getBlockID(world()); int blockID = position().translate(dir).getBlockID(world());
Block block = Block.blocksList[blockID]; Block block = Block.blocksList[blockID];
if (block == null || !block.isNormalCube(blockID)) if (block == null || !Block.isNormalCube(blockID))
{ {
possibleDirections.add(dir); possibleDirections.add(dir);
} }
@ -152,7 +151,7 @@ public class TileSorter extends TileInventory
int blockID = position().translate(dir).getBlockID(world()); int blockID = position().translate(dir).getBlockID(world());
Block block = Block.blocksList[blockID]; Block block = Block.blocksList[blockID];
if (block == null || !block.isNormalCube(blockID)) if (block == null || !Block.isNormalCube(blockID))
{ {
possibleDirections.add(dir); possibleDirections.add(dir);
} }

View file

@ -7,7 +7,6 @@ import resonantinduction.core.prefab.part.PartFramedConnection;
import resonantinduction.mechanical.fluid.pipe.EnumPipeMaterial; import resonantinduction.mechanical.fluid.pipe.EnumPipeMaterial;
import universalelectricity.api.net.INodeNetwork; import universalelectricity.api.net.INodeNetwork;
import codechicken.microblock.IHollowConnect; import codechicken.microblock.IHollowConnect;
import codechicken.multipart.JIconHitEffects;
import codechicken.multipart.JNormalOcclusion; import codechicken.multipart.JNormalOcclusion;
import codechicken.multipart.TSlottedPart; import codechicken.multipart.TSlottedPart;

View file

@ -9,7 +9,6 @@ import net.minecraftforge.client.model.IModelCustom;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
import resonantinduction.core.Reference; import resonantinduction.core.Reference;
import resonantinduction.core.grid.fluid.FluidPressureNode;
import calclavia.lib.render.RenderUtility; import calclavia.lib.render.RenderUtility;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;

View file

@ -22,7 +22,7 @@ import cpw.mods.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public class RenderGrindingWheel extends TileEntitySpecialRenderer public class RenderGrindingWheel extends TileEntitySpecialRenderer
{ {
public static final IModelCustom MODEL = AdvancedModelLoader.loadModel(Reference.MODEL_DIRECTORY + "grinder.obj"); public static final IModelCustom MODEL = AdvancedModelLoader.loadModel(Reference.MODEL_DIRECTORY + "grinder.obj");
@Override @Override
public void renderTileEntityAt(TileEntity t, double x, double y, double z, float f) public void renderTileEntityAt(TileEntity t, double x, double y, double z, float f)

View file

@ -1,6 +1,8 @@
package resonantinduction.mechanical.energy.grid; package resonantinduction.api;
public interface IEnergyNode import resonantinduction.core.grid.INode;
public interface IEnergyNode extends INode
{ {
/** /**
* @return Gets the power of this node. Note that power by definition is energy per second. * @return Gets the power of this node. Note that power by definition is energy per second.

View file

@ -1,5 +1,6 @@
package resonantinduction.mechanical.energy.grid; package resonantinduction.api;
import resonantinduction.mechanical.energy.grid.MechanicalNode;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
public interface IMechanicalNode extends IEnergyNode public interface IMechanicalNode extends IEnergyNode
@ -13,4 +14,6 @@ public interface IMechanicalNode extends IEnergyNode
public float getRatio(ForgeDirection dir, MechanicalNode with); public float getRatio(ForgeDirection dir, MechanicalNode with);
public boolean inverseRotation(ForgeDirection dir, MechanicalNode with); public boolean inverseRotation(ForgeDirection dir, MechanicalNode with);
public IMechanicalNode setLoad(double load);
} }

View file

@ -3,7 +3,6 @@ package resonantinduction.core;
import java.util.HashMap; import java.util.HashMap;
import java.util.logging.Logger; import java.util.logging.Logger;
import calclavia.lib.configurable.ConfigHandler;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
@ -22,6 +21,7 @@ import resonantinduction.core.resource.ResourceGenerator;
import resonantinduction.core.resource.TileMaterial; import resonantinduction.core.resource.TileMaterial;
import resonantinduction.core.resource.fluid.ItemOreResourceBucket; import resonantinduction.core.resource.fluid.ItemOreResourceBucket;
import resonantinduction.core.resource.fluid.TileFluidMixture; import resonantinduction.core.resource.fluid.TileFluidMixture;
import calclavia.lib.configurable.ConfigHandler;
import calclavia.lib.content.ContentRegistry; import calclavia.lib.content.ContentRegistry;
import calclavia.lib.network.PacketAnnotation; import calclavia.lib.network.PacketAnnotation;
import calclavia.lib.network.PacketHandler; import calclavia.lib.network.PacketHandler;
@ -37,8 +37,6 @@ import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.event.FMLServerStartingEvent;
import cpw.mods.fml.common.event.FMLServerStoppingEvent;
import cpw.mods.fml.common.network.NetworkMod; import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.GameRegistry;

View file

@ -3,9 +3,9 @@ package resonantinduction.core;
import java.io.File; import java.io.File;
import java.util.Arrays; import java.util.Arrays;
import calclavia.lib.configurable.Config;
import net.minecraft.server.MinecraftServer; import net.minecraft.server.MinecraftServer;
import net.minecraftforge.common.Configuration; import net.minecraftforge.common.Configuration;
import calclavia.lib.configurable.Config;
import calclavia.lib.content.IDManager; import calclavia.lib.content.IDManager;
import calclavia.lib.utility.LanguageUtility; import calclavia.lib.utility.LanguageUtility;
import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.FMLCommonHandler;

View file

@ -11,6 +11,7 @@ public class FluidColored extends Fluid
super(fluidName); super(fluidName);
} }
@Override
public int getColor() public int getColor()
{ {
return color; return color;

View file

@ -123,6 +123,7 @@ public abstract class FluidDistributionetwork extends NodeNetwork<FluidDistribut
return this.tank; return this.tank;
} }
@Override
public Class getConnectorClass() public Class getConnectorClass()
{ {
return IFluidDistribution.class; return IFluidDistribution.class;

View file

@ -6,9 +6,9 @@ import net.minecraftforge.fluids.FluidContainerRegistry;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTank; import net.minecraftforge.fluids.FluidTank;
import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.FluidTankInfo;
import resonantinduction.core.grid.Node; import resonantinduction.core.grid.INode;
import resonantinduction.core.grid.fluid.IPressureNodeProvider;
import resonantinduction.core.grid.fluid.FluidPressureNode; import resonantinduction.core.grid.fluid.FluidPressureNode;
import resonantinduction.core.grid.fluid.IPressureNodeProvider;
import calclavia.lib.network.IPacketReceiverWithID; import calclavia.lib.network.IPacketReceiverWithID;
/** /**
@ -95,7 +95,7 @@ public abstract class TilePressureNode extends TileFluidNode implements IPressur
} }
@Override @Override
public <N extends Node> N getNode(Class<? super N> nodeType, ForgeDirection from) public <N extends INode> N getNode(Class<? super N> nodeType, ForgeDirection from)
{ {
if (nodeType.isAssignableFrom(node.getClass())) if (nodeType.isAssignableFrom(node.getClass()))
return (N) node; return (N) node;

View file

@ -0,0 +1,26 @@
package resonantinduction.core.grid;
public interface INode
{
/**
* Called to reconstruct and reset all connections for this node/
*/
public void reconstruct();
/**
* This destroys the node, removing it from the grid and also destroying all references to it.
*/
public void deconstruct();
/**
* Clears all the node's cache.
*/
public void recache();
/**
* Called to update the node.
*
* @param deltaTime - Time in seconds that has passed compared to the last update time.
*/
public void update(float deltaTime);
}

View file

@ -14,5 +14,5 @@ public interface INodeProvider
* @param from - The direction. * @param from - The direction.
* @return Returns the node object. * @return Returns the node object.
*/ */
public <N extends Node> N getNode(Class<? super N> nodeType, ForgeDirection from); public <N extends INode> N getNode(Class<? super N> nodeType, ForgeDirection from);
} }

View file

@ -6,7 +6,7 @@ import java.util.WeakHashMap;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
public abstract class Node<P extends INodeProvider, G extends Grid, N> public abstract class Node<P extends INodeProvider, G extends Grid, N> implements INode
{ {
public final P parent; public final P parent;
@ -54,9 +54,6 @@ public abstract class Node<P extends INodeProvider, G extends Grid, N>
} }
} }
/**
* This destroys the node, removing it from the grid and also destroying all references to it.
*/
public void deconstruct() public void deconstruct()
{ {
synchronized (connections) synchronized (connections)

View file

@ -17,13 +17,13 @@ public class NodeRegistry
INTERFACE_NODE_MAP.put(nodeInterface, nodeClass); INTERFACE_NODE_MAP.put(nodeInterface, nodeClass);
} }
public static <N> Class<? extends N> get(INodeProvider parent, Class<N> nodeInterface) public static <N extends INode> N get(INodeProvider parent, Class<N> nodeInterface)
{ {
Class nodeClass = INTERFACE_NODE_MAP.get(nodeInterface); Class nodeClass = INTERFACE_NODE_MAP.get(nodeInterface);
try try
{ {
return (Class<? extends N>) nodeClass.getConstructor(INodeProvider.class).newInstance(parent); return (N) nodeClass.getConstructor(INodeProvider.class).newInstance(parent);
} }
catch (Exception e) catch (Exception e)
{ {

View file

@ -1,7 +1,6 @@
package resonantinduction.core.grid; package resonantinduction.core.grid;
import universalelectricity.api.net.IUpdate; import universalelectricity.api.net.IUpdate;
import universalelectricity.core.net.NetworkTickHandler;
public class TickingGrid<N extends Node> extends NodeGrid<N> implements IUpdate public class TickingGrid<N extends Node> extends NodeGrid<N> implements IUpdate
{ {

View file

@ -53,7 +53,7 @@ public class TraitNodeProvider extends TileMultipart implements INodeProvider
} }
@Override @Override
public <N extends Node> N getNode(Class<? super N> nodeType, ForgeDirection from) public <N extends INode> N getNode(Class<? super N> nodeType, ForgeDirection from)
{ {
TMultiPart part = this.partMap(from.ordinal()); TMultiPart part = this.partMap(from.ordinal());

View file

@ -202,6 +202,7 @@ public class FluidPressureNode extends Node<IPressureNodeProvider, TickingGrid,
/** /**
* Recache the connections. This is the default connection implementation. * Recache the connections. This is the default connection implementation.
*/ */
@Override
public void recache() public void recache()
{ {
synchronized (connections) synchronized (connections)

View file

@ -6,8 +6,6 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import calclavia.lib.utility.LanguageUtility;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.gui.inventory.GuiContainer;
@ -20,6 +18,7 @@ import resonantinduction.api.recipe.RecipeResource.FluidStackResource;
import resonantinduction.api.recipe.RecipeResource.ItemStackResource; import resonantinduction.api.recipe.RecipeResource.ItemStackResource;
import resonantinduction.api.recipe.RecipeResource.OreDictResource; import resonantinduction.api.recipe.RecipeResource.OreDictResource;
import resonantinduction.core.Reference; import resonantinduction.core.Reference;
import calclavia.lib.utility.LanguageUtility;
import codechicken.core.gui.GuiDraw; import codechicken.core.gui.GuiDraw;
import codechicken.nei.PositionedStack; import codechicken.nei.PositionedStack;
import codechicken.nei.recipe.GuiRecipe; import codechicken.nei.recipe.GuiRecipe;
@ -112,55 +111,55 @@ public abstract class RITemplateRecipeHandler extends TemplateRecipeHandler
} }
} }
@Override @Override
public List<String> handleTooltip(GuiRecipe gui, List<String> currenttip, int recipeID) public List<String> handleTooltip(GuiRecipe gui, List<String> currenttip, int recipeID)
{ {
if(currenttip.size() == 0) if (currenttip.size() == 0)
{ {
Point offset = gui.getRecipePosition(recipeID); Point offset = gui.getRecipePosition(recipeID);
Point mouse = GuiDraw.getMousePosition(); Point mouse = GuiDraw.getMousePosition();
CachedRecipe cachedRecipe = this.arecipes.get(recipeID); CachedRecipe cachedRecipe = this.arecipes.get(recipeID);
if (cachedRecipe instanceof CachedRIRecipe) if (cachedRecipe instanceof CachedRIRecipe)
{ {
CachedRIRecipe recipe = (CachedRIRecipe) cachedRecipe; CachedRIRecipe recipe = (CachedRIRecipe) cachedRecipe;
FluidStack fluid; FluidStack fluid;
Rectangle rect; Rectangle rect;
for (int i = 0; i < recipe.inputFluids.length; i++) for (int i = 0; i < recipe.inputFluids.length; i++)
{ {
fluid = recipe.inputFluids[i]; fluid = recipe.inputFluids[i];
if (fluid == null) if (fluid == null)
break; break;
rect = new Rectangle(offset.x + inputSlots[i][0] - 1, offset.y + inputSlots[i][1] - 1, 18, 18); rect = new Rectangle(offset.x + inputSlots[i][0] - 1, offset.y + inputSlots[i][1] - 1, 18, 18);
if (rect.contains(mouse)) if (rect.contains(mouse))
{ {
currenttip.add(fluid.getFluid().getLocalizedName()); currenttip.add(fluid.getFluid().getLocalizedName());
currenttip.add(LanguageUtility.getLocal("tooltip.ri.amount").replace("%s", fluid.amount + "")); currenttip.add(LanguageUtility.getLocal("tooltip.ri.amount").replace("%s", fluid.amount + ""));
return currenttip; return currenttip;
} }
} }
for (int i = 0; i < recipe.outputFluids.length; i++) for (int i = 0; i < recipe.outputFluids.length; i++)
{ {
fluid = recipe.outputFluids[i]; fluid = recipe.outputFluids[i];
if (fluid == null) if (fluid == null)
break; break;
rect = new Rectangle(offset.x + outputSlots[i][0] - 1, offset.y + outputSlots[i][1] - 1, 18, 18); rect = new Rectangle(offset.x + outputSlots[i][0] - 1, offset.y + outputSlots[i][1] - 1, 18, 18);
if (rect.contains(mouse)) if (rect.contains(mouse))
{ {
currenttip.add(fluid.getFluid().getLocalizedName()); currenttip.add(fluid.getFluid().getLocalizedName());
currenttip.add(LanguageUtility.getLocal("tooltip.ri.amount").replace("%s", fluid.amount + "")); currenttip.add(LanguageUtility.getLocal("tooltip.ri.amount").replace("%s", fluid.amount + ""));
return currenttip; return currenttip;
} }
} }
} }
} }
return currenttip; return currenttip;
} }
@Override @Override
public void loadCraftingRecipes(ItemStack result) public void loadCraftingRecipes(ItemStack result)

View file

@ -4,7 +4,6 @@ import java.util.Collection;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
import net.minecraft.client.particle.EffectRenderer;
import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
@ -24,8 +23,6 @@ import codechicken.lib.render.RenderUtils;
import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Cuboid6;
import codechicken.lib.vec.Translation; import codechicken.lib.vec.Translation;
import codechicken.microblock.IHollowConnect; import codechicken.microblock.IHollowConnect;
import codechicken.multipart.IconHitEffects;
import codechicken.multipart.JIconHitEffects;
import codechicken.multipart.JNormalOcclusion; import codechicken.multipart.JNormalOcclusion;
import codechicken.multipart.NormalOcclusionTest; import codechicken.multipart.NormalOcclusionTest;
import codechicken.multipart.PartMap; import codechicken.multipart.PartMap;

View file

@ -8,14 +8,12 @@ import net.minecraft.client.particle.EffectRenderer;
import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Icon; import net.minecraft.util.Icon;
import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.MovingObjectPosition;
import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.ForgeDirection;
import resonantinduction.core.grid.INode;
import resonantinduction.core.grid.INodeProvider; import resonantinduction.core.grid.INodeProvider;
import resonantinduction.core.grid.Node; import resonantinduction.core.grid.Node;
import universalelectricity.api.vector.Vector3;
import universalelectricity.api.vector.VectorHelper;
import codechicken.lib.data.MCDataInput; import codechicken.lib.data.MCDataInput;
import codechicken.lib.data.MCDataOutput; import codechicken.lib.data.MCDataOutput;
import codechicken.lib.raytracer.IndexedCuboid6; import codechicken.lib.raytracer.IndexedCuboid6;
@ -192,7 +190,7 @@ public abstract class PartFramedNode<M extends Enum, N extends Node, T extends I
public byte getAllCurrentConnections() public byte getAllCurrentConnections()
{ {
return (byte) (currentConnections); return (currentConnections);
} }
public static boolean connectionMapContainsSide(byte connections, ForgeDirection side) public static boolean connectionMapContainsSide(byte connections, ForgeDirection side)
@ -282,7 +280,7 @@ public abstract class PartFramedNode<M extends Enum, N extends Node, T extends I
@SuppressWarnings("hiding") @SuppressWarnings("hiding")
@Override @Override
public <N extends Node> N getNode(Class<? super N> nodeType, ForgeDirection from) public <N extends INode> N getNode(Class<? super N> nodeType, ForgeDirection from)
{ {
if (nodeType.isAssignableFrom(node.getClass())) if (nodeType.isAssignableFrom(node.getClass()))
return (N) node; return (N) node;

View file

@ -12,7 +12,6 @@ import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import resonantinduction.core.Reference; import resonantinduction.core.Reference;
import resonantinduction.core.ResonantInduction; import resonantinduction.core.ResonantInduction;
import scala.annotation.meta.setter;
import calclavia.lib.prefab.block.BlockTile; import calclavia.lib.prefab.block.BlockTile;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
@ -250,6 +249,7 @@ public class BlockDust extends BlockTile
return damageDropped(0); return damageDropped(0);
} }
@Override
public int damageDropped(int par1) public int damageDropped(int par1)
{ {
return nextDropMaterialID; return nextDropMaterialID;

View file

@ -160,30 +160,28 @@ public class ResourceGenerator implements IVirtualObject
ResonantInduction.blockMixtureFluids.put(getID(materialName), blockFluidMixture); ResonantInduction.blockMixtureFluids.put(getID(materialName), blockFluidMixture);
FluidContainerRegistry.registerFluidContainer(fluidMixture, ResonantInduction.itemBucketMixture.getStackFromMaterial(materialName)); FluidContainerRegistry.registerFluidContainer(fluidMixture, ResonantInduction.itemBucketMixture.getStackFromMaterial(materialName));
ItemStack dust = ResonantInduction.itemDust.getStackFromMaterial(materialName);
ItemStack rubble = ResonantInduction.itemRubble.getStackFromMaterial(materialName);
ItemStack refinedDust = ResonantInduction.itemRefinedDust.getStackFromMaterial(materialName);
if (allowOreDictCompatibility) if (allowOreDictCompatibility)
{ {
OreDictionary.registerOre("dust" + nameCaps, ResonantInduction.itemDust.getStackFromMaterial(materialName)); OreDictionary.registerOre("dust" + nameCaps, ResonantInduction.itemDust.getStackFromMaterial(materialName));
OreDictionary.registerOre("rubble" + nameCaps, ResonantInduction.itemRubble.getStackFromMaterial(materialName)); OreDictionary.registerOre("rubble" + nameCaps, ResonantInduction.itemRubble.getStackFromMaterial(materialName));
OreDictionary.registerOre("dustRefined" + nameCaps, ResonantInduction.itemRefinedDust.getStackFromMaterial(materialName)); OreDictionary.registerOre("dustRefined" + nameCaps, ResonantInduction.itemRefinedDust.getStackFromMaterial(materialName));
MachineRecipes.INSTANCE.addRecipe(RecipeType.GRINDER, "rubble" + nameCaps, "dust" + nameCaps, "dust" + nameCaps); MachineRecipes.INSTANCE.addRecipe(RecipeType.GRINDER, "rubble" + nameCaps, dust, dust);
MachineRecipes.INSTANCE.addRecipe(RecipeType.MIXER, "dust" + nameCaps, "dustRefined" + nameCaps); MachineRecipes.INSTANCE.addRecipe(RecipeType.MIXER, "dust" + nameCaps, refinedDust);
MachineRecipes.INSTANCE.addRecipe(RecipeType.SMELTER, new FluidStack(fluidMolten, FluidContainerRegistry.BUCKET_VOLUME), "ingot" + nameCaps); MachineRecipes.INSTANCE.addRecipe(RecipeType.SMELTER, new FluidStack(fluidMolten, FluidContainerRegistry.BUCKET_VOLUME), "ingot" + nameCaps);
} }
else else
{ {
ItemStack dust = ResonantInduction.itemDust.getStackFromMaterial(materialName);
ItemStack rubble = ResonantInduction.itemRubble.getStackFromMaterial(materialName);
ItemStack refinedDust = ResonantInduction.itemRefinedDust.getStackFromMaterial(materialName);
MachineRecipes.INSTANCE.addRecipe(RecipeType.GRINDER, rubble, dust, dust); MachineRecipes.INSTANCE.addRecipe(RecipeType.GRINDER, rubble, dust, dust);
MachineRecipes.INSTANCE.addRecipe(RecipeType.MIXER, dust, refinedDust); MachineRecipes.INSTANCE.addRecipe(RecipeType.MIXER, dust, refinedDust);
MachineRecipes.INSTANCE.addRecipe(RecipeType.SMELTER, new FluidStack(fluidMolten, FluidContainerRegistry.BUCKET_VOLUME), "ingot" + nameCaps); MachineRecipes.INSTANCE.addRecipe(RecipeType.SMELTER, new FluidStack(fluidMolten, FluidContainerRegistry.BUCKET_VOLUME), "ingot" + nameCaps);
} }
ItemStack dust = ResonantInduction.itemDust.getStackFromMaterial(materialName);
FurnaceRecipes.smelting().addSmelting(dust.itemID, dust.getItemDamage(), OreDictionary.getOres("ingot" + nameCaps).get(0).copy(), 0.7f); FurnaceRecipes.smelting().addSmelting(dust.itemID, dust.getItemDamage(), OreDictionary.getOres("ingot" + nameCaps).get(0).copy(), 0.7f);
ItemStack refinedDust = ResonantInduction.itemRefinedDust.getStackFromMaterial(materialName);
ItemStack smeltResult = OreDictionary.getOres("ingot" + nameCaps).get(0).copy(); ItemStack smeltResult = OreDictionary.getOres("ingot" + nameCaps).get(0).copy();
FurnaceRecipes.smelting().addSmelting(refinedDust.itemID, refinedDust.getItemDamage(), smeltResult, 0.7f); FurnaceRecipes.smelting().addSmelting(refinedDust.itemID, refinedDust.getItemDamage(), smeltResult, 0.7f);

View file

@ -67,6 +67,7 @@ public class ItemOreResourceBucket extends Item
* Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack,
* world, entityPlayer * world, entityPlayer
*/ */
@Override
public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer entityPlayer) public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer entityPlayer)
{ {
String materialName = ResourceGenerator.getName(itemStack.getItemDamage()); String materialName = ResourceGenerator.getName(itemStack.getItemDamage());