More work, and more errors
This commit is contained in:
parent
dba9e66cd8
commit
0f17ae4269
10 changed files with 144 additions and 23 deletions
|
@ -4,22 +4,31 @@ import codechicken.multipart.TMultiPart
|
||||||
import net.minecraft.tileentity.TileEntity
|
import net.minecraft.tileentity.TileEntity
|
||||||
import net.minecraft.world.World
|
import net.minecraft.world.World
|
||||||
import universalelectricity.api.core.grid.INodeProvider
|
import universalelectricity.api.core.grid.INodeProvider
|
||||||
import universalelectricity.core.grid.Node
|
import universalelectricity.core.grid.node.NodeConnector
|
||||||
import universalelectricity.core.transform.vector.VectorWorld
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A node that works with Forge Multipart
|
* A node that works with Forge Multipart
|
||||||
* @author Calclavia
|
* @author Calclavia
|
||||||
*/
|
*/
|
||||||
abstract class MultipartNode[N](parent: INodeProvider) extends Node[N](parent)
|
abstract class MultipartNode(parent: INodeProvider) extends NodeConnector(parent)
|
||||||
{
|
{
|
||||||
override def world: World =
|
override def world: World =
|
||||||
{
|
{
|
||||||
return if (parent.isInstanceOf[TMultiPart]) (parent.asInstanceOf[TMultiPart]).world else if (parent.isInstanceOf[TileEntity]) (parent.asInstanceOf[TileEntity]).getWorldObj else null
|
return if (parent.isInstanceOf[TMultiPart]) (parent.asInstanceOf[TMultiPart]).world else if (parent.isInstanceOf[TileEntity]) (parent.asInstanceOf[TileEntity]).getWorldObj else null
|
||||||
}
|
}
|
||||||
|
|
||||||
override def position: VectorWorld =
|
override def x: Double =
|
||||||
{
|
{
|
||||||
return if (parent.isInstanceOf[TMultiPart]) new VectorWorld(parent.asInstanceOf[TMultiPart].world, parent.asInstanceOf[TMultiPart].x, parent.asInstanceOf[TMultiPart].y, parent.asInstanceOf[TMultiPart].z) else if (parent.isInstanceOf[TileEntity]) new VectorWorld(parent.asInstanceOf[TileEntity]) else null
|
return if (parent.isInstanceOf[TMultiPart]) (parent.asInstanceOf[TMultiPart]).x else if (parent.isInstanceOf[TileEntity]) (parent.asInstanceOf[TileEntity]).xCoord else null
|
||||||
|
}
|
||||||
|
|
||||||
|
override def y: Double =
|
||||||
|
{
|
||||||
|
return if (parent.isInstanceOf[TMultiPart]) (parent.asInstanceOf[TMultiPart]).y else if (parent.isInstanceOf[TileEntity]) (parent.asInstanceOf[TileEntity]).yCoord else null
|
||||||
|
}
|
||||||
|
|
||||||
|
override def z: Double =
|
||||||
|
{
|
||||||
|
return if (parent.isInstanceOf[TMultiPart]) (parent.asInstanceOf[TMultiPart]).z else if (parent.isInstanceOf[TileEntity]) (parent.asInstanceOf[TileEntity]).zCoord else null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,14 +3,14 @@ package resonantinduction.core.grid.fluid.distribution
|
||||||
import net.minecraftforge.common.util.ForgeDirection
|
import net.minecraftforge.common.util.ForgeDirection
|
||||||
import net.minecraftforge.fluids._
|
import net.minecraftforge.fluids._
|
||||||
import resonantinduction.core.grid.fluid.TileTankNode
|
import resonantinduction.core.grid.fluid.TileTankNode
|
||||||
import universalelectricity.core.grid.{TickingGrid, UpdateTicker}
|
import universalelectricity.core.grid.{GridTicking, UpdateTicker}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used for multiblock tanks to distribute fluid.
|
* Used for multiblock tanks to distribute fluid.
|
||||||
*
|
*
|
||||||
* @author DarkCow, Calclavia
|
* @author DarkCow, Calclavia
|
||||||
*/
|
*/
|
||||||
abstract class FluidDistributionGrid extends TickingGrid[TankNode](classOf[TankNode]) with IFluidHandler
|
abstract class FluidDistributionGrid extends GridTicking[TankNode](classOf[TankNode]) with IFluidHandler
|
||||||
{
|
{
|
||||||
val tank = new FluidTank(0)
|
val tank = new FluidTank(0)
|
||||||
var needsUpdate = false
|
var needsUpdate = false
|
||||||
|
|
|
@ -5,9 +5,9 @@ import net.minecraftforge.common.util.ForgeDirection
|
||||||
import net.minecraftforge.fluids.{Fluid, FluidStack, FluidTankInfo, IFluidHandler}
|
import net.minecraftforge.fluids.{Fluid, FluidStack, FluidTankInfo, IFluidHandler}
|
||||||
import resonant.lib.utility.WorldUtility
|
import resonant.lib.utility.WorldUtility
|
||||||
import resonantinduction.core.grid.MultipartNode
|
import resonantinduction.core.grid.MultipartNode
|
||||||
import universalelectricity.api.core.grid.INodeProvider
|
import universalelectricity.api.core.grid.{ISave, IGridNode, INodeProvider}
|
||||||
|
|
||||||
class TankNode(parent: INodeProvider) extends MultipartNode[Any](parent) with IFluidHandler
|
class TankNode(parent: INodeProvider) extends MultipartNode(parent) with IFluidHandler with ISave with IGridNode
|
||||||
{
|
{
|
||||||
var maxFlowRate: Int = 20
|
var maxFlowRate: Int = 20
|
||||||
var maxPressure: Int = 100
|
var maxPressure: Int = 100
|
||||||
|
@ -80,15 +80,13 @@ class TankNode(parent: INodeProvider) extends MultipartNode[Any](parent) with IF
|
||||||
|
|
||||||
override protected def newGrid() = new TankGrid
|
override protected def newGrid() = new TankGrid
|
||||||
|
|
||||||
override def load(nbt: NBTTagCompound)
|
def load(nbt: NBTTagCompound)
|
||||||
{
|
{
|
||||||
super.load(nbt)
|
|
||||||
pressure = nbt.getInteger("pressure")
|
pressure = nbt.getInteger("pressure")
|
||||||
}
|
}
|
||||||
|
|
||||||
override def save(nbt: NBTTagCompound)
|
def save(nbt: NBTTagCompound)
|
||||||
{
|
{
|
||||||
super.save(nbt)
|
|
||||||
nbt.setInteger("pressure", pressure)
|
nbt.setInteger("pressure", pressure)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
79
src/main/scala/resonantinduction/core/prefab/NodeTank.java
Normal file
79
src/main/scala/resonantinduction/core/prefab/NodeTank.java
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
package resonantinduction.core.prefab;
|
||||||
|
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
import net.minecraftforge.fluids.FluidTank;
|
||||||
|
import net.minecraftforge.fluids.IFluidHandler;
|
||||||
|
import universalelectricity.api.core.grid.IConnector;
|
||||||
|
import universalelectricity.api.core.grid.INode;
|
||||||
|
import universalelectricity.api.core.grid.INodeProvider;
|
||||||
|
import universalelectricity.core.grid.Node;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by robert on 8/14/2014.
|
||||||
|
*/
|
||||||
|
public class NodeTank extends FluidTank implements INode, IConnector {
|
||||||
|
|
||||||
|
protected INodeProvider parent = null;
|
||||||
|
protected Map<Object, ForgeDirection> connections = null;
|
||||||
|
|
||||||
|
public NodeTank(INodeProvider parent, int cap)
|
||||||
|
{
|
||||||
|
super(cap);
|
||||||
|
this.parent = parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void reconstruct()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deconstruct()
|
||||||
|
{
|
||||||
|
connections = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void recache()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<Object, ForgeDirection> getConnections(Class<? extends INode> node)
|
||||||
|
{
|
||||||
|
if(node.isAssignableFrom(getClass()))
|
||||||
|
{
|
||||||
|
return connections;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canConnect(ForgeDirection direction, Object object)
|
||||||
|
{
|
||||||
|
return connections != null && connections.containsKey(object);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(double deltaTime) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void load(NBTTagCompound nbt)
|
||||||
|
{
|
||||||
|
super.readFromNBT(nbt);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void save(NBTTagCompound nbt)
|
||||||
|
{
|
||||||
|
super.writeToNBT(nbt);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
package resonantinduction.core.prefab
|
||||||
|
|
||||||
|
import net.minecraftforge.common.util.ForgeDirection
|
||||||
|
import net.minecraftforge.fluids._
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by robert on 8/14/2014.
|
||||||
|
*/
|
||||||
|
trait TFluidHandler extends IFluidHandler
|
||||||
|
{
|
||||||
|
var fluidTank : FluidTank = new FluidTank(FluidContainerRegistry.BUCKET_VOLUME)
|
||||||
|
|
||||||
|
override def fill(from: ForgeDirection, resource: FluidStack, doFill: Boolean): Int = fluidTank.fill(resource, doFill)
|
||||||
|
|
||||||
|
override def drain(from: ForgeDirection, resource: FluidStack, doDrain: Boolean): FluidStack =
|
||||||
|
{
|
||||||
|
if(resource != null && resource.isFluidEqual(fluidTank.getFluid))
|
||||||
|
{
|
||||||
|
return drain(from, resource.amount, doDrain)
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
override def drain(from: ForgeDirection, maxDrain: Int, doDrain: Boolean): FluidStack = fluidTank.drain(maxDrain, doDrain)
|
||||||
|
|
||||||
|
override def canFill(from: ForgeDirection, fluid: Fluid): Boolean = true
|
||||||
|
|
||||||
|
override def canDrain(from: ForgeDirection, fluid: Fluid): Boolean = true
|
||||||
|
|
||||||
|
override def getTankInfo(from: ForgeDirection): Array[FluidTankInfo] = Array[FluidTankInfo](fluidTank.getInfo)
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
package resonantinduction.core.prefab
|
||||||
|
|
||||||
|
import universalelectricity.api.core.grid.INodeProvider
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by robert on 8/14/2014.
|
||||||
|
*/
|
||||||
|
trait TFluidNode extends TFluidHandler with INodeProvider {
|
||||||
|
|
||||||
|
}
|
|
@ -4,12 +4,8 @@ import java.util.Arrays;
|
||||||
import java.util.LinkedHashSet;
|
import java.util.LinkedHashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import scala.reflect.ClassTag;
|
|
||||||
import universalelectricity.api.core.grid.electric.IEnergyNode;
|
|
||||||
import universalelectricity.core.grid.Grid;
|
import universalelectricity.core.grid.Grid;
|
||||||
import universalelectricity.core.grid.NodeGrid;
|
import universalelectricity.core.grid.node.NodeEnergy;
|
||||||
import universalelectricity.core.grid.TickingGrid;
|
|
||||||
import universalelectricity.core.grid.node.EnergyNode;
|
|
||||||
|
|
||||||
/** Energy network designed to allow several tiles to act as if they share the same energy
|
/** Energy network designed to allow several tiles to act as if they share the same energy
|
||||||
* level */
|
* level */
|
||||||
|
@ -20,7 +16,7 @@ public class EnergyDistributionNetwork extends Grid<TileEnergyDistribution>
|
||||||
|
|
||||||
public EnergyDistributionNetwork()
|
public EnergyDistributionNetwork()
|
||||||
{
|
{
|
||||||
super(EnergyNode.class);
|
super(NodeEnergy.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void redistribute(TileEnergyDistribution... exclusion)
|
public void redistribute(TileEnergyDistribution... exclusion)
|
||||||
|
|
|
@ -10,7 +10,6 @@ import resonant.lib.utility.LanguageUtility;
|
||||||
import universalelectricity.api.UnitDisplay;
|
import universalelectricity.api.UnitDisplay;
|
||||||
import universalelectricity.api.core.grid.IUpdate;
|
import universalelectricity.api.core.grid.IUpdate;
|
||||||
import universalelectricity.core.grid.Grid;
|
import universalelectricity.core.grid.Grid;
|
||||||
import universalelectricity.core.grid.TickingGrid;
|
|
||||||
import universalelectricity.core.grid.UpdateTicker;
|
import universalelectricity.core.grid.UpdateTicker;
|
||||||
import universalelectricity.core.transform.vector.Vector3;
|
import universalelectricity.core.transform.vector.Vector3;
|
||||||
|
|
||||||
|
|
|
@ -4,13 +4,13 @@ import net.minecraft.tileentity.TileEntity
|
||||||
import net.minecraftforge.common.util.ForgeDirection
|
import net.minecraftforge.common.util.ForgeDirection
|
||||||
import universalelectricity.api.core.grid.INodeProvider
|
import universalelectricity.api.core.grid.INodeProvider
|
||||||
import universalelectricity.compatibility.Compatibility
|
import universalelectricity.compatibility.Compatibility
|
||||||
import universalelectricity.core.grid.node.ElectricNode
|
import universalelectricity.core.grid.node.NodeElectric
|
||||||
import universalelectricity.core.transform.vector.VectorWorld
|
import universalelectricity.core.transform.vector.VectorWorld
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by robert on 8/11/2014.
|
* Created by robert on 8/11/2014.
|
||||||
*/
|
*/
|
||||||
class ElectricTransformerNode(parent: INodeProvider) extends ElectricNode(parent: INodeProvider)
|
class ElectricTransformerNode(parent: INodeProvider) extends NodeElectric(parent: INodeProvider)
|
||||||
{
|
{
|
||||||
var connectionDirection : ForgeDirection = ForgeDirection.NORTH
|
var connectionDirection : ForgeDirection = ForgeDirection.NORTH
|
||||||
var input : Boolean = true;
|
var input : Boolean = true;
|
||||||
|
|
|
@ -41,7 +41,6 @@ public class PartPipe extends PartFramedNode<EnumPipeMaterial> implements TSlott
|
||||||
public void setMaterial(int i)
|
public void setMaterial(int i)
|
||||||
{
|
{
|
||||||
setMaterial(EnumPipeMaterial.values()[i]);
|
setMaterial(EnumPipeMaterial.values()[i]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in a new issue