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;
import net.minecraft.tileentity.TileEntity;
import org.lwjgl.opengl.GL11;
import calclavia.lib.utility.LanguageUtility;
import net.minecraft.tileentity.TileEntity;
import resonantinduction.core.render.RenderItemOverlayTile;
import calclavia.lib.utility.LanguageUtility;
import cpw.mods.fml.relauncher.Side;
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 cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.relauncher.Side;
/**
* Basic single stack inventory.
*

View file

@ -29,7 +29,6 @@ import resonantinduction.core.prefab.imprint.ItemImprint;
import resonantinduction.core.render.RenderItemOverlayTile;
import universalelectricity.api.vector.Vector2;
import universalelectricity.api.vector.Vector3;
import universalelectricity.api.vector.VectorWorld;
import calclavia.lib.content.module.TileRender;
import calclavia.lib.content.module.prefab.TileInventory;
import calclavia.lib.gui.ContainerDummy;
@ -114,7 +113,7 @@ public class TileEngineeringTable extends TileInventory implements IPacketReceiv
{
if (this instanceof IInventory)
{
IInventory inventory = (IInventory) this;
IInventory inventory = this;
// Don't drop the output, so subtract by one.
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;
}
@Override
public int compareTo(Object obj)
{
ComparableVector wr = (ComparableVector) obj;

View file

@ -1,12 +1,8 @@
package resonantinduction.archaic.fluid.gutter;
import net.minecraft.tileentity.TileEntity;
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 calclavia.lib.utility.WorldUtility;
import resonantinduction.core.grid.fluid.IPressureNodeProvider;
public class FluidGravityNode extends FluidPressureNode
{

View file

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

View file

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

View file

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

View file

@ -18,7 +18,6 @@ import resonantinduction.electrical.render.FXElectricBolt;
import resonantinduction.electrical.tesla.RenderTesla;
import resonantinduction.electrical.tesla.TileTesla;
import resonantinduction.electrical.transformer.RenderTransformer;
import resonantinduction.mechanical.energy.gear.RenderGear;
import resonantinduction.quantum.gate.RenderQuantumGlyph;
import universalelectricity.api.vector.Vector3;
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.SideOnly;
/** A block that detects power.
/**
* A block that detects power.
*
* @author Calclavia */
* @author Calclavia
*/
public class BlockBattery extends BlockSidedIO implements ITileEntityProvider
{
public BlockBattery(int id)
{
super(id, UniversalElectricity.machine);
setTextureName(Reference.PREFIX + "material_metal_side");
}
public BlockBattery(int id)
{
super(id, UniversalElectricity.machine);
setTextureName(Reference.PREFIX + "material_metal_side");
}
@Override
public void onBlockAdded(World world, int x, int y, int z)
{
if (!world.isRemote)
{
TileEnergyDistribution distribution = (TileEnergyDistribution) world.getBlockTileEntity(x, y, z);
distribution.updateStructure();
}
}
@Override
public void onBlockAdded(World world, int x, int y, int z)
{
if (!world.isRemote)
{
TileEnergyDistribution distribution = (TileEnergyDistribution) world.getBlockTileEntity(x, y, z);
distribution.updateStructure();
}
}
@Override
public void onNeighborBlockChange(World world, int x, int y, int z, int id)
{
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
@Override
public void onNeighborBlockChange(World world, int x, int y, int z, int id)
{
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
if (!world.isRemote && tileEntity instanceof TileEnergyDistribution)
{
TileEnergyDistribution distribution = (TileEnergyDistribution) tileEntity;
distribution.updateStructure();
}
}
if (!world.isRemote && tileEntity instanceof TileEnergyDistribution)
{
TileEnergyDistribution distribution = (TileEnergyDistribution) tileEntity;
distribution.updateStructure();
}
}
@Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entityliving, ItemStack itemStack)
{
if (!world.isRemote && itemStack.getItem() instanceof ItemBlockBattery)
{
ItemBlockBattery itemBlock = (ItemBlockBattery) itemStack.getItem();
TileBattery battery = (TileBattery) world.getBlockTileEntity(x, y, z);
battery.energy.setCapacity(TileBattery.getEnergyForTier(ItemBlockBattery.getTier(itemStack)));
battery.energy.setEnergy(itemBlock.getEnergy(itemStack));
battery.updateStructure();
world.setBlockMetadataWithNotify(x, y, z, ItemBlockBattery.getTier(itemStack), 3);
}
}
@Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entityliving, ItemStack itemStack)
{
if (!world.isRemote && itemStack.getItem() instanceof ItemBlockBattery)
{
ItemBlockBattery itemBlock = (ItemBlockBattery) itemStack.getItem();
TileBattery battery = (TileBattery) world.getBlockTileEntity(x, y, z);
battery.energy.setCapacity(TileBattery.getEnergyForTier(ItemBlockBattery.getTier(itemStack)));
battery.energy.setEnergy(itemBlock.getEnergy(itemStack));
battery.updateStructure();
world.setBlockMetadataWithNotify(x, y, z, ItemBlockBattery.getTier(itemStack), 3);
}
}
@Override
public boolean onSneakUseWrench(World world, int x, int y, int z, EntityPlayer entityPlayer, int side, float hitX, float hitY, float hitZ)
{
if (!world.isRemote)
{
InventoryUtility.dropBlockAsItem(world, x, y, z, true);
}
return true;
}
@Override
public boolean onSneakUseWrench(World world, int x, int y, int z, EntityPlayer entityPlayer, int side, float hitX, float hitY, float hitZ)
{
if (!world.isRemote)
{
InventoryUtility.dropBlockAsItem(world, x, y, z, true);
}
return true;
}
@Override
public void breakBlock(World world, int x, int y, int z, int par5, int par6)
{
super.breakBlock(world, x, y, z, par5, par6);
}
@Override
public void breakBlock(World world, int x, int y, int z, int par5, int par6)
{
super.breakBlock(world, x, y, z, par5, par6);
}
@Override
public ArrayList<ItemStack> getBlockDropped(World world, int x, int y, int z, int metadata, int fortune)
{
ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
ItemStack itemStack = new ItemStack(this, 1);
@Override
public ArrayList<ItemStack> getBlockDropped(World world, int x, int y, int z, int metadata, int fortune)
{
ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
ItemStack itemStack = new ItemStack(this, 1);
if (world.getBlockTileEntity(x, y, z) instanceof TileBattery)
{
TileBattery battery = (TileBattery) world.getBlockTileEntity(x, y, z);
ItemBlockBattery itemBlock = (ItemBlockBattery) itemStack.getItem();
ItemBlockBattery.setTier(itemStack, (byte) world.getBlockMetadata(x, y, z));
itemBlock.setEnergy(itemStack, battery.energy.getEnergy());
}
ret.add(itemStack);
return ret;
}
if (world.getBlockTileEntity(x, y, z) instanceof TileBattery)
{
TileBattery battery = (TileBattery) world.getBlockTileEntity(x, y, z);
ItemBlockBattery itemBlock = (ItemBlockBattery) itemStack.getItem();
ItemBlockBattery.setTier(itemStack, (byte) world.getBlockMetadata(x, y, z));
itemBlock.setEnergy(itemStack, battery.energy.getEnergy());
}
ret.add(itemStack);
return ret;
}
@Override
public boolean renderAsNormalBlock()
{
return false;
}
@Override
public boolean renderAsNormalBlock()
{
return false;
}
@Override
public boolean isOpaqueCube()
{
return false;
}
@Override
public boolean isOpaqueCube()
{
return false;
}
@Override
@SideOnly(Side.CLIENT)
public int getRenderType()
{
return BlockRenderingHandler.INSTANCE.getRenderId();
}
@Override
@SideOnly(Side.CLIENT)
public int getRenderType()
{
return BlockRenderingHandler.INSTANCE.getRenderId();
}
@Override
public TileEntity createNewTileEntity(World world)
{
return new TileBattery();
}
@Override
public TileEntity createNewTileEntity(World world)
{
return new TileBattery();
}
@Override
public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z)
{
int id = idPicked(world, x, y, z);
@Override
public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z)
{
int id = idPicked(world, x, y, z);
if (id == 0)
{
return null;
}
if (id == 0)
{
return null;
}
Item item = Item.itemsList[id];
if (item == null)
{
return null;
}
Item item = Item.itemsList[id];
if (item == null)
{
return null;
}
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());
}
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());
}
}

View file

@ -70,7 +70,7 @@ public class EnergyDistributionNetwork extends Network<EnergyDistributionNetwork
/**
* 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);
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[][] 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.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)
{
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)
{
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

View file

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

View file

@ -1,12 +1,9 @@
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.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.client.model.AdvancedModelLoader;
import net.minecraftforge.client.model.IModelCustom;
import net.minecraftforge.common.ForgeDirection;

View file

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

View file

@ -86,6 +86,6 @@ public abstract class Graph<V extends Comparable<V>>
public abstract NBTTagCompound save();
public abstract double getDouble();
public abstract V getAverage();
}

View file

@ -2,8 +2,6 @@ package resonantinduction.electrical.multimeter;
import java.util.List;
import org.lwjgl.input.Keyboard;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
@ -11,11 +9,11 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Icon;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import org.lwjgl.input.Keyboard;
import resonantinduction.core.prefab.part.IHighlight;
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.utility.LanguageUtility;
import codechicken.lib.vec.BlockCoord;

View file

@ -4,7 +4,6 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import calclavia.lib.utility.LanguageUtility;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import universalelectricity.api.energy.UnitDisplay;
@ -13,6 +12,7 @@ import universalelectricity.api.net.IUpdate;
import universalelectricity.api.vector.Vector3;
import universalelectricity.core.net.Network;
import universalelectricity.core.net.NetworkTickHandler;
import calclavia.lib.utility.LanguageUtility;
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.fluids.FluidTankInfo;
import net.minecraftforge.fluids.IFluidHandler;
import resonantinduction.api.IMechanicalNode;
import resonantinduction.core.ResonantInduction;
import resonantinduction.core.grid.INodeProvider;
import resonantinduction.core.grid.fluid.IPressureNodeProvider;
import resonantinduction.core.grid.fluid.FluidPressureNode;
import resonantinduction.core.grid.fluid.IPressureNodeProvider;
import resonantinduction.core.prefab.part.PartFace;
import resonantinduction.electrical.Electrical;
import resonantinduction.mechanical.energy.grid.MechanicalNode;
import universalelectricity.api.CompatibilityModule;
import universalelectricity.api.electricity.IElectricalNetwork;
import universalelectricity.api.energy.IConductor;
@ -271,7 +271,7 @@ public class PartMultimeter extends PartFace implements IConnector<MultimeterNet
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())
{
@ -280,7 +280,7 @@ public class PartMultimeter extends PartFace implements IConnector<MultimeterNet
break;
}
instance = ((INodeProvider) tileEntity).getNode(MechanicalNode.class, dir);
instance = ((INodeProvider) tileEntity).getNode(IMechanicalNode.class, dir);
}
if (instance != null)
@ -370,28 +370,34 @@ public class PartMultimeter extends PartFace implements IConnector<MultimeterNet
public void read(MCDataInput packet, int packetID)
{
if (packetID == 0)
switch (packetID)
{
placementSide = ForgeDirection.getOrientation(packet.readByte());
facing = packet.readByte();
detectMode = DetectMode.values()[packet.readByte()];
detectType = packet.readByte();
graphType = packet.readByte();
getNetwork().center = new universalelectricity.api.vector.Vector3(packet.readNBTTagCompound());
getNetwork().size = new universalelectricity.api.vector.Vector3(packet.readNBTTagCompound());
getNetwork().isEnabled = packet.readBoolean();
refresh();
}
else if (packetID == 1)
{
redstoneTriggerLimit = packet.readLong();
}
else if (packetID == 2)
{
isPrimary = packet.readBoolean();
case 0:
{
placementSide = ForgeDirection.getOrientation(packet.readByte());
facing = packet.readByte();
detectMode = DetectMode.values()[packet.readByte()];
detectType = packet.readByte();
graphType = packet.readByte();
getNetwork().center = new universalelectricity.api.vector.Vector3(packet.readNBTTagCompound());
getNetwork().size = new universalelectricity.api.vector.Vector3(packet.readNBTTagCompound());
getNetwork().isEnabled = packet.readBoolean();
refresh();
break;
}
case 1:
{
redstoneTriggerLimit = packet.readLong();
break;
}
case 2:
{
isPrimary = packet.readBoolean();
if (isPrimary)
getNetwork().load(packet.readNBTTagCompound());
if (isPrimary)
getNetwork().load(packet.readNBTTagCompound());
break;
}
}
}
@ -485,6 +491,7 @@ public class PartMultimeter extends PartFace implements IConnector<MultimeterNet
return true;
}
@Override
protected ItemStack getItem()
{
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) */
public byte multiplier = 2;
@Override
public void preparePlacement(int side, int facing)
{
this.placementSide = ForgeDirection.getOrientation(side);
@ -71,6 +72,7 @@ public class PartTransformer extends PartFace implements IVoltageOutput, IEnergy
return false;
}
@Override
protected ItemStack getItem()
{
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.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.common.Configuration;
import net.minecraftforge.common.ForgeDirection;
import org.lwjgl.input.Keyboard;
import resonantinduction.core.MultipartUtility;
import resonantinduction.core.Reference;
import resonantinduction.core.Settings;
import resonantinduction.core.TabRI;
import resonantinduction.electrical.wire.flat.PartFlatWire;
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.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Icon;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeDirection;
@ -21,13 +20,11 @@ import net.minecraftforge.common.MinecraftForge;
import resonantinduction.core.prefab.part.PartFramedConnection;
import resonantinduction.electrical.Electrical;
import resonantinduction.electrical.wire.EnumWireMaterial;
import resonantinduction.electrical.wire.PartAdvancedWire;
import universalelectricity.api.CompatibilityModule;
import universalelectricity.api.UniversalClass;
import universalelectricity.api.energy.EnergyNetworkLoader;
import universalelectricity.api.energy.IConductor;
import universalelectricity.api.energy.IEnergyNetwork;
import universalelectricity.api.vector.Vector3;
import codechicken.lib.lighting.LazyLightMatrix;
import codechicken.lib.render.CCRenderState;
import codechicken.lib.render.IconTransformation;
@ -36,7 +33,6 @@ import codechicken.lib.vec.BlockCoord;
import codechicken.lib.vec.Cuboid6;
import codechicken.lib.vec.Translation;
import codechicken.microblock.IHollowConnect;
import codechicken.multipart.JIconHitEffects;
import codechicken.multipart.JNormalOcclusion;
import codechicken.multipart.MultiPartRegistry;
import codechicken.multipart.PartMap;

View file

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

View file

@ -68,7 +68,7 @@ public class ItemQuantumGlyph extends JItemMultiPart implements IHighlight
}
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)
{

View file

@ -1,11 +1,6 @@
package resonantinduction.quantum.gate;
import java.util.ArrayList;
import java.util.Arrays;
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.EntityList;
@ -13,9 +8,7 @@ import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.world.Teleporter;
import net.minecraft.world.World;
import net.minecraft.world.WorldServer;
import universalelectricity.api.vector.Vector3;
import universalelectricity.api.vector.VectorWorld;
public class QuantumGateManager
@ -93,7 +86,7 @@ public class QuantumGateManager
{
ChunkCoordinates chunkcoordinates = worldserver1.getSpawnPoint();
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);

View file

@ -3,19 +3,13 @@ package resonantinduction.quantum.gate;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.texture.TextureMap;
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 codechicken.lib.vec.Cuboid6;
import codechicken.lib.vec.Vector3;
import resonantinduction.core.Reference;
import resonantinduction.electrical.Electrical;
import calclavia.lib.render.RenderUtility;
import calclavia.lib.render.item.ISimpleItemRenderer;
import cpw.mods.fml.client.FMLClientHandler;
import codechicken.lib.vec.Cuboid6;
public class RenderQuantumGlyph implements ISimpleItemRenderer
{

View file

@ -1,24 +1,14 @@
package resonantinduction.quantum.gate;
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.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidContainerRegistry;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTank;
import net.minecraftforge.fluids.FluidTankInfo;
import universalelectricity.api.vector.VectorWorld;
import codechicken.multipart.TMultiPart;
import codechicken.multipart.TileMultipart;

View file

@ -6,14 +6,17 @@ import net.minecraft.item.ItemStack;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.oredict.OreDictionary;
import net.minecraftforge.oredict.ShapedOreRecipe;
import resonantinduction.api.IMechanicalNode;
import resonantinduction.core.Reference;
import resonantinduction.core.ResonantInduction;
import resonantinduction.core.Settings;
import resonantinduction.core.TabRI;
import resonantinduction.core.grid.NodeRegistry;
import resonantinduction.mechanical.belt.BlockConveyorBelt;
import resonantinduction.mechanical.belt.TileConveyorBelt;
import resonantinduction.mechanical.energy.gear.ItemGear;
import resonantinduction.mechanical.energy.gear.ItemGearShaft;
import resonantinduction.mechanical.energy.grid.MechanicalNode;
import resonantinduction.mechanical.energy.turbine.BlockWaterTurbine;
import resonantinduction.mechanical.energy.turbine.BlockWindTurbine;
import resonantinduction.mechanical.energy.turbine.SchematicWaterTurbine;
@ -55,7 +58,7 @@ import cpw.mods.fml.common.registry.GameRegistry;
*
* @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)
public class Mechanical
{
@ -104,6 +107,8 @@ public class Mechanical
MinecraftForge.EVENT_BUS.register(new MicroblockHighlightHandler());
BlockCreativeBuilder.register(new SchematicWindTurbine());
BlockCreativeBuilder.register(new SchematicWaterTurbine());
NodeRegistry.register(IMechanicalNode.class, MechanicalNode.class);
Settings.CONFIGURATION.load();
itemGear = contentRegistry.createItem(ItemGear.class);

View file

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

View file

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

View file

@ -7,6 +7,7 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeDirection;
import resonantinduction.api.IMechanicalNode;
import resonantinduction.core.ResonantInduction;
import resonantinduction.core.grid.INodeProvider;
import resonantinduction.core.grid.Node;
@ -51,6 +52,7 @@ public class MechanicalNode extends Node<INodeProvider, TickingGrid, MechanicalN
super(parent);
}
@Override
public MechanicalNode setLoad(double 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.
*/
@Override
public void recache()
{
synchronized (connections)

View file

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

View file

@ -5,8 +5,8 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.ForgeDirection;
import resonantinduction.core.ResonantInduction;
import resonantinduction.core.grid.INode;
import resonantinduction.core.grid.INodeProvider;
import resonantinduction.core.grid.Node;
import resonantinduction.mechanical.Mechanical;
import universalelectricity.api.vector.Vector3;
import calclavia.lib.content.module.TileBase;
@ -82,7 +82,7 @@ public abstract class TileMechanical extends TileBase implements INodeProvider,
}
@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()))
return (N) mechanicalNode;

View file

@ -48,7 +48,7 @@ public class RenderWaterTurbine extends TileEntitySpecialRenderer implements ISi
public void renderInventoryItem(ItemStack itemStack)
{
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);
GL11.glPopMatrix();
}

View file

@ -3,8 +3,8 @@ package resonantinduction.mechanical.energy.turbine;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection;
import resonantinduction.core.grid.INode;
import resonantinduction.core.grid.INodeProvider;
import resonantinduction.core.grid.Node;
import resonantinduction.mechanical.energy.grid.MechanicalNode;
import universalelectricity.api.energy.EnergyStorageHandler;
import calclavia.lib.network.Synced.SyncedInput;
@ -77,7 +77,7 @@ public class TileMechanicalTurbine extends TileTurbine implements INodeProvider
}
@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()))
return (N) ((TileMechanicalTurbine) getMultiBlock().get()).mechanicalNode;

View file

@ -2,17 +2,17 @@ package resonantinduction.mechanical.fluid.pipe;
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.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
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.Vector3;
import codechicken.multipart.JItemMultiPart;

View file

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

View file

@ -118,7 +118,7 @@ public class RenderPipe implements ISimpleItemRenderer
GL11.glColor4f(material.color.getRed() / 255f, material.color.getGreen() / 255f, material.color.getBlue() / 255f, 1);
MODEL.renderOnly("Mid");
/**
* Render each side
*/

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 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)
{
TilePump tile = (TilePump) tileEntity;

View file

@ -7,10 +7,9 @@ import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTank;
import net.minecraftforge.fluids.FluidTankInfo;
import net.minecraftforge.fluids.IFluidHandler;
import resonantinduction.core.Reference;
import resonantinduction.core.grid.Node;
import resonantinduction.core.grid.fluid.IPressureNodeProvider;
import resonantinduction.core.grid.INode;
import resonantinduction.core.grid.fluid.FluidPressureNode;
import resonantinduction.core.grid.fluid.IPressureNodeProvider;
import resonantinduction.mechanical.energy.grid.TileMechanical;
import universalelectricity.api.UniversalElectricity;
import universalelectricity.api.vector.Vector3;
@ -154,7 +153,7 @@ public class TilePump extends TileMechanical implements IPressureNodeProvider, I
}
@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()))
return (N) pressureNode;

View file

@ -74,7 +74,7 @@ public class BlockDetector extends BlockImprintable
((TileDetector) tileEntity).toggleInversion();
return true;
}
return false;
}

View file

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

View file

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

View file

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

View file

@ -22,7 +22,7 @@ import cpw.mods.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
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
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.

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;
public interface IMechanicalNode extends IEnergyNode
@ -13,4 +14,6 @@ public interface IMechanicalNode extends IEnergyNode
public float getRatio(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.logging.Logger;
import calclavia.lib.configurable.ConfigHandler;
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.MinecraftForge;
@ -22,6 +21,7 @@ import resonantinduction.core.resource.ResourceGenerator;
import resonantinduction.core.resource.TileMaterial;
import resonantinduction.core.resource.fluid.ItemOreResourceBucket;
import resonantinduction.core.resource.fluid.TileFluidMixture;
import calclavia.lib.configurable.ConfigHandler;
import calclavia.lib.content.ContentRegistry;
import calclavia.lib.network.PacketAnnotation;
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.FMLPostInitializationEvent;
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.NetworkRegistry;
import cpw.mods.fml.common.registry.GameRegistry;

View file

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

View file

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

View file

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

View file

@ -6,9 +6,9 @@ import net.minecraftforge.fluids.FluidContainerRegistry;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTank;
import net.minecraftforge.fluids.FluidTankInfo;
import resonantinduction.core.grid.Node;
import resonantinduction.core.grid.fluid.IPressureNodeProvider;
import resonantinduction.core.grid.INode;
import resonantinduction.core.grid.fluid.FluidPressureNode;
import resonantinduction.core.grid.fluid.IPressureNodeProvider;
import calclavia.lib.network.IPacketReceiverWithID;
/**
@ -95,7 +95,7 @@ public abstract class TilePressureNode extends TileFluidNode implements IPressur
}
@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()))
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.
* @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.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;
@ -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()
{
synchronized (connections)

View file

@ -17,13 +17,13 @@ public class NodeRegistry
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);
try
{
return (Class<? extends N>) nodeClass.getConstructor(INodeProvider.class).newInstance(parent);
return (N) nodeClass.getConstructor(INodeProvider.class).newInstance(parent);
}
catch (Exception e)
{

View file

@ -1,7 +1,6 @@
package resonantinduction.core.grid;
import universalelectricity.api.net.IUpdate;
import universalelectricity.core.net.NetworkTickHandler;
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
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());

View file

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

View file

@ -27,7 +27,7 @@ public class TextureHookHandler
RenderUtility.registerIcon(Reference.PREFIX + "glyph_1", event.map);
RenderUtility.registerIcon(Reference.PREFIX + "glyph_2", event.map);
RenderUtility.registerIcon(Reference.PREFIX + "glyph_3", event.map);
RenderUtility.registerIcon(Reference.PREFIX + "mixture_flow", event.map);
RenderUtility.registerIcon(Reference.PREFIX + "molten_flow", event.map);
RenderUtility.registerIcon(Reference.PREFIX + "multimeter_screen", event.map);

View file

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

View file

@ -4,7 +4,6 @@ import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import net.minecraft.client.particle.EffectRenderer;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
@ -24,8 +23,6 @@ import codechicken.lib.render.RenderUtils;
import codechicken.lib.vec.Cuboid6;
import codechicken.lib.vec.Translation;
import codechicken.microblock.IHollowConnect;
import codechicken.multipart.IconHitEffects;
import codechicken.multipart.JIconHitEffects;
import codechicken.multipart.JNormalOcclusion;
import codechicken.multipart.NormalOcclusionTest;
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.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Icon;
import net.minecraft.util.MovingObjectPosition;
import net.minecraftforge.common.ForgeDirection;
import resonantinduction.core.grid.INode;
import resonantinduction.core.grid.INodeProvider;
import resonantinduction.core.grid.Node;
import universalelectricity.api.vector.Vector3;
import universalelectricity.api.vector.VectorHelper;
import codechicken.lib.data.MCDataInput;
import codechicken.lib.data.MCDataOutput;
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()
{
return (byte) (currentConnections);
return (currentConnections);
}
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")
@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()))
return (N) node;

View file

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

View file

@ -160,30 +160,28 @@ public class ResourceGenerator implements IVirtualObject
ResonantInduction.blockMixtureFluids.put(getID(materialName), blockFluidMixture);
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)
{
OreDictionary.registerOre("dust" + nameCaps, ResonantInduction.itemDust.getStackFromMaterial(materialName));
OreDictionary.registerOre("rubble" + nameCaps, ResonantInduction.itemRubble.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.MIXER, "dust" + nameCaps, "dustRefined" + nameCaps);
MachineRecipes.INSTANCE.addRecipe(RecipeType.GRINDER, "rubble" + nameCaps, dust, dust);
MachineRecipes.INSTANCE.addRecipe(RecipeType.MIXER, "dust" + nameCaps, refinedDust);
MachineRecipes.INSTANCE.addRecipe(RecipeType.SMELTER, new FluidStack(fluidMolten, FluidContainerRegistry.BUCKET_VOLUME), "ingot" + nameCaps);
}
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.MIXER, dust, refinedDust);
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);
ItemStack refinedDust = ResonantInduction.itemRefinedDust.getStackFromMaterial(materialName);
ItemStack smeltResult = OreDictionary.getOres("ingot" + nameCaps).get(0).copy();
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,
* world, entityPlayer
*/
@Override
public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer entityPlayer)
{
String materialName = ResourceGenerator.getName(itemStack.getItemDamage());