Finished initial mechanical network packet and rotation system
This commit is contained in:
parent
19ee8e95d0
commit
5bc0d45912
22 changed files with 294 additions and 166 deletions
|
@ -11,6 +11,7 @@ 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 universalelectricity.api.energy.IEnergyNetwork;
|
||||||
import universalelectricity.api.net.IConnector;
|
import universalelectricity.api.net.IConnector;
|
||||||
import universalelectricity.api.net.INodeNetwork;
|
import universalelectricity.api.net.INodeNetwork;
|
||||||
import universalelectricity.api.vector.Vector3;
|
import universalelectricity.api.vector.Vector3;
|
||||||
|
@ -458,4 +459,10 @@ public abstract class PartFramedConnection<M extends Enum, C extends IConnector<
|
||||||
this.network = network;
|
this.network = network;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IConnector<N> getInstance(ForgeDirection dir)
|
||||||
|
{
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -8,6 +8,7 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraftforge.common.ForgeDirection;
|
import net.minecraftforge.common.ForgeDirection;
|
||||||
import resonantinduction.core.ResonantInduction;
|
import resonantinduction.core.ResonantInduction;
|
||||||
|
import resonantinduction.mechanical.network.IMechanical;
|
||||||
import universalelectricity.api.UniversalElectricity;
|
import universalelectricity.api.UniversalElectricity;
|
||||||
import universalelectricity.api.electricity.IVoltageInput;
|
import universalelectricity.api.electricity.IVoltageInput;
|
||||||
import universalelectricity.api.electricity.IVoltageOutput;
|
import universalelectricity.api.electricity.IVoltageOutput;
|
||||||
|
@ -194,4 +195,10 @@ public class TileBattery extends TileElectrical implements IConnector<BatteryNet
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IConnector<BatteryNetwork> getInstance(ForgeDirection from)
|
||||||
|
{
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,7 +69,7 @@ public class TileGenerator extends TileElectrical implements IMechanical, IRotat
|
||||||
{
|
{
|
||||||
float angularVelocity = extract / torqueRatio;
|
float angularVelocity = extract / torqueRatio;
|
||||||
long torque = (long) (extract / angularVelocity);
|
long torque = (long) (extract / angularVelocity);
|
||||||
energy.extractEnergy(((IMechanical) mechanical).getNetwork(outputDir.getOpposite()).onReceiveEnergy(((IMechanical) mechanical), torque, angularVelocity), true);
|
energy.extractEnergy(((IMechanical) mechanical).getInstance(outputDir.getOpposite()).getNetwork().onReceiveEnergy(((IMechanical) mechanical), torque, angularVelocity), true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -153,12 +153,6 @@ public class TileGenerator extends TileElectrical implements IMechanical, IRotat
|
||||||
return this.network;
|
return this.network;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public IMechanicalNetwork getNetwork(ForgeDirection from)
|
|
||||||
{
|
|
||||||
return getNetwork();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setNetwork(IMechanicalNetwork network)
|
public void setNetwork(IMechanicalNetwork network)
|
||||||
{
|
{
|
||||||
|
@ -166,9 +160,9 @@ public class TileGenerator extends TileElectrical implements IMechanical, IRotat
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean sendNetworkPacket(long torque, float angularVelocity)
|
public int[] getLocation()
|
||||||
{
|
{
|
||||||
return false;
|
return new int[] { xCoord, yCoord, zCoord, 0 };
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -13,6 +13,7 @@ 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.net.IConnector;
|
||||||
import universalelectricity.api.vector.Vector3;
|
import universalelectricity.api.vector.Vector3;
|
||||||
import universalelectricity.api.vector.VectorHelper;
|
import universalelectricity.api.vector.VectorHelper;
|
||||||
import codechicken.multipart.TMultiPart;
|
import codechicken.multipart.TMultiPart;
|
||||||
|
@ -170,6 +171,12 @@ public abstract class PartConductor extends PartAdvanced implements IConductor
|
||||||
super.preRemove();
|
super.preRemove();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IConnector<IEnergyNetwork> getInstance(ForgeDirection dir)
|
||||||
|
{
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void save(NBTTagCompound nbt)
|
public void save(NBTTagCompound nbt)
|
||||||
{
|
{
|
||||||
|
|
|
@ -18,6 +18,8 @@ import resonantinduction.electrical.wire.EnumWireMaterial;
|
||||||
import resonantinduction.electrical.wire.PartAdvancedWire;
|
import resonantinduction.electrical.wire.PartAdvancedWire;
|
||||||
import universalelectricity.api.CompatibilityModule;
|
import universalelectricity.api.CompatibilityModule;
|
||||||
import universalelectricity.api.energy.IConductor;
|
import universalelectricity.api.energy.IConductor;
|
||||||
|
import universalelectricity.api.energy.IEnergyNetwork;
|
||||||
|
import universalelectricity.api.net.IConnector;
|
||||||
import universalelectricity.api.vector.Vector3;
|
import universalelectricity.api.vector.Vector3;
|
||||||
import universalelectricity.api.vector.VectorHelper;
|
import universalelectricity.api.vector.VectorHelper;
|
||||||
import codechicken.lib.data.MCDataInput;
|
import codechicken.lib.data.MCDataInput;
|
||||||
|
@ -538,4 +540,5 @@ public class PartFramedWire extends PartAdvancedWire implements TSlottedPart, JN
|
||||||
this.getNetwork().setBufferFor(this, otherCable.getNetwork().getBufferOf(otherCable));
|
this.getNetwork().setBufferFor(this, otherCable.getNetwork().getBufferOf(otherCable));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -6,6 +6,7 @@ import java.util.Set;
|
||||||
import net.minecraftforge.common.ForgeDirection;
|
import net.minecraftforge.common.ForgeDirection;
|
||||||
import universalelectricity.api.energy.IConductor;
|
import universalelectricity.api.energy.IConductor;
|
||||||
import universalelectricity.api.energy.IEnergyNetwork;
|
import universalelectricity.api.energy.IEnergyNetwork;
|
||||||
|
import universalelectricity.api.net.IConnector;
|
||||||
import codechicken.multipart.TMultiPart;
|
import codechicken.multipart.TMultiPart;
|
||||||
import codechicken.multipart.TileMultipart;
|
import codechicken.multipart.TileMultipart;
|
||||||
|
|
||||||
|
@ -67,11 +68,6 @@ public class TraitConductor extends TileMultipart implements IConductor
|
||||||
@Override
|
@Override
|
||||||
public IEnergyNetwork getNetwork()
|
public IEnergyNetwork getNetwork()
|
||||||
{
|
{
|
||||||
for (IConductor conductor : this.ueInterfaces)
|
|
||||||
{
|
|
||||||
return conductor.getNetwork();
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -107,8 +103,6 @@ public class TraitConductor extends TileMultipart implements IConductor
|
||||||
if (this.partMap(from.ordinal()) == null)
|
if (this.partMap(from.ordinal()) == null)
|
||||||
{
|
{
|
||||||
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
|
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
|
||||||
{
|
|
||||||
// if (dir != from.getOpposite())
|
|
||||||
{
|
{
|
||||||
TMultiPart part = this.partMap(dir.ordinal());
|
TMultiPart part = this.partMap(dir.ordinal());
|
||||||
|
|
||||||
|
@ -118,7 +112,6 @@ public class TraitConductor extends TileMultipart implements IConductor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -164,4 +157,26 @@ public class TraitConductor extends TileMultipart implements IConductor
|
||||||
|
|
||||||
return capacitance;
|
return capacitance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IConnector<IEnergyNetwork> getInstance(ForgeDirection from)
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Try out different sides to try to inject energy into.
|
||||||
|
*/
|
||||||
|
if (this.partMap(from.ordinal()) == null)
|
||||||
|
{
|
||||||
|
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
|
||||||
|
{
|
||||||
|
TMultiPart part = this.partMap(dir.ordinal());
|
||||||
|
|
||||||
|
if (this.ueInterfaces.contains(part))
|
||||||
|
{
|
||||||
|
return ((IConductor) part).getInstance(from);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,8 @@ import resonantinduction.mechanical.logistic.BlockRejector;
|
||||||
import resonantinduction.mechanical.logistic.TileDetector;
|
import resonantinduction.mechanical.logistic.TileDetector;
|
||||||
import resonantinduction.mechanical.logistic.TileManipulator;
|
import resonantinduction.mechanical.logistic.TileManipulator;
|
||||||
import resonantinduction.mechanical.logistic.TileRejector;
|
import resonantinduction.mechanical.logistic.TileRejector;
|
||||||
|
import resonantinduction.mechanical.network.IMechanical;
|
||||||
|
import resonantinduction.mechanical.network.PacketNetwork;
|
||||||
import calclavia.lib.content.ContentRegistry;
|
import calclavia.lib.content.ContentRegistry;
|
||||||
import calclavia.lib.network.PacketHandler;
|
import calclavia.lib.network.PacketHandler;
|
||||||
import cpw.mods.fml.common.Mod;
|
import cpw.mods.fml.common.Mod;
|
||||||
|
@ -79,6 +81,8 @@ public class Mechanical
|
||||||
public static Item itemPipe;
|
public static Item itemPipe;
|
||||||
public static Item itemPipeGuage;
|
public static Item itemPipeGuage;
|
||||||
|
|
||||||
|
public static final PacketNetwork PACKET_NETWORK = new PacketNetwork(IMechanical.class, Reference.CHANNEL);
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void preInit(FMLPreInitializationEvent evt)
|
public void preInit(FMLPreInitializationEvent evt)
|
||||||
{
|
{
|
||||||
|
|
|
@ -259,7 +259,7 @@ public class TileConveyorBelt extends TileMechanical implements IBelt, IRotatabl
|
||||||
if (tile instanceof IBelt)
|
if (tile instanceof IBelt)
|
||||||
{
|
{
|
||||||
connections[dir.ordinal()] = tile;
|
connections[dir.ordinal()] = tile;
|
||||||
this.getNetwork().merge(((IBelt) tile).getNetwork());
|
getNetwork().merge(((IBelt) tile).getNetwork());
|
||||||
didRefresh = true;
|
didRefresh = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -282,13 +282,13 @@ public class TileConveyorBelt extends TileMechanical implements IBelt, IRotatabl
|
||||||
@Override
|
@Override
|
||||||
public void invalidate()
|
public void invalidate()
|
||||||
{
|
{
|
||||||
this.getNetwork().split(this);
|
getNetwork().split(this);
|
||||||
super.invalidate();
|
super.invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
public float getMoveVelocity()
|
public float getMoveVelocity()
|
||||||
{
|
{
|
||||||
return Math.max(this.getNetwork().getAngularVelocity(), this.getNetwork().getPrevAngularVelocity());
|
return Math.max(getNetwork().getAngularVelocity(), getNetwork().getPrevAngularVelocity());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -296,13 +296,4 @@ public class TileConveyorBelt extends TileMechanical implements IBelt, IRotatabl
|
||||||
{
|
{
|
||||||
return 0.5f;
|
return 0.5f;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public IMechanicalNetwork getNetwork(ForgeDirection from)
|
|
||||||
{
|
|
||||||
if (from != this.getDirection() && from != this.getDirection().getOpposite())
|
|
||||||
return getNetwork();
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@ import net.minecraftforge.fluids.FluidTankInfo;
|
||||||
import net.minecraftforge.fluids.IFluidHandler;
|
import net.minecraftforge.fluids.IFluidHandler;
|
||||||
import resonantinduction.api.fluid.IFluidConnector;
|
import resonantinduction.api.fluid.IFluidConnector;
|
||||||
import resonantinduction.api.fluid.IFluidNetwork;
|
import resonantinduction.api.fluid.IFluidNetwork;
|
||||||
|
import resonantinduction.api.fluid.IFluidPipe;
|
||||||
import universalelectricity.api.net.IUpdate;
|
import universalelectricity.api.net.IUpdate;
|
||||||
import universalelectricity.core.net.NetworkTickHandler;
|
import universalelectricity.core.net.NetworkTickHandler;
|
||||||
import universalelectricity.core.net.NodeNetwork;
|
import universalelectricity.core.net.NodeNetwork;
|
||||||
|
@ -186,6 +187,12 @@ public abstract class FluidNetwork extends NodeNetwork<IFluidNetwork, IFluidConn
|
||||||
return this.tank;
|
return this.tank;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class getConnectorClass()
|
||||||
|
{
|
||||||
|
return IFluidConnector.class;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FluidTankInfo[] getTankInfo()
|
public FluidTankInfo[] getTankInfo()
|
||||||
{
|
{
|
||||||
|
|
|
@ -11,6 +11,7 @@ import net.minecraftforge.fluids.IFluidHandler;
|
||||||
import resonantinduction.api.fluid.IFluidConnector;
|
import resonantinduction.api.fluid.IFluidConnector;
|
||||||
import resonantinduction.api.fluid.IFluidNetwork;
|
import resonantinduction.api.fluid.IFluidNetwork;
|
||||||
import resonantinduction.api.fluid.IFluidPipe;
|
import resonantinduction.api.fluid.IFluidPipe;
|
||||||
|
import universalelectricity.api.energy.IConductor;
|
||||||
import universalelectricity.api.vector.Vector3;
|
import universalelectricity.api.vector.Vector3;
|
||||||
import calclavia.lib.utility.FluidUtility;
|
import calclavia.lib.utility.FluidUtility;
|
||||||
|
|
||||||
|
@ -122,6 +123,12 @@ public class PipeNetwork extends FluidNetwork
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class getConnectorClass()
|
||||||
|
{
|
||||||
|
return IFluidPipe.class;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IFluidNetwork newInstance()
|
public IFluidNetwork newInstance()
|
||||||
{
|
{
|
||||||
|
|
|
@ -17,6 +17,7 @@ import resonantinduction.api.fluid.IFluidConnector;
|
||||||
import resonantinduction.api.fluid.IFluidNetwork;
|
import resonantinduction.api.fluid.IFluidNetwork;
|
||||||
import resonantinduction.core.ResonantInduction;
|
import resonantinduction.core.ResonantInduction;
|
||||||
import resonantinduction.mechanical.Mechanical;
|
import resonantinduction.mechanical.Mechanical;
|
||||||
|
import resonantinduction.mechanical.network.IMechanical;
|
||||||
import universalelectricity.api.vector.Vector3;
|
import universalelectricity.api.vector.Vector3;
|
||||||
import calclavia.lib.network.IPacketReceiverWithID;
|
import calclavia.lib.network.IPacketReceiverWithID;
|
||||||
import calclavia.lib.network.PacketHandler;
|
import calclavia.lib.network.PacketHandler;
|
||||||
|
@ -315,4 +316,9 @@ public abstract class TileFluidNetwork extends TileAdvanced implements IFluidCon
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IFluidConnector getInstance(ForgeDirection from)
|
||||||
|
{
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,7 +43,7 @@ public class TileTank extends TileFluidNetwork
|
||||||
{
|
{
|
||||||
if (tileEntity instanceof TileTank)
|
if (tileEntity instanceof TileTank)
|
||||||
{
|
{
|
||||||
this.getNetwork().merge(((IFluidConnector) tileEntity).getNetwork());
|
getNetwork().merge(((IFluidConnector) tileEntity).getNetwork());
|
||||||
this.setRenderSide(side, true);
|
this.setRenderSide(side, true);
|
||||||
connectedBlocks[side.ordinal()] = tileEntity;
|
connectedBlocks[side.ordinal()] = tileEntity;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package resonantinduction.mechanical.gear;
|
package resonantinduction.mechanical.gear;
|
||||||
|
|
||||||
|
import calclavia.lib.prefab.block.BlockAdvanced;
|
||||||
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.util.MovingObjectPosition;
|
import net.minecraft.util.MovingObjectPosition;
|
||||||
|
@ -48,10 +49,22 @@ public class PartGear extends PartMechanical implements IMechanical
|
||||||
{
|
{
|
||||||
System.out.println(world().isRemote + ": " + getNetwork());
|
System.out.println(world().isRemote + ": " + getNetwork());
|
||||||
|
|
||||||
|
if (BlockAdvanced.isUsableWrench(player, player.getCurrentEquippedItem(), tile().xCoord, tile().yCoord, tile().zCoord))
|
||||||
|
{
|
||||||
if (player.isSneaking())
|
if (player.isSneaking())
|
||||||
{
|
{
|
||||||
|
if (!world().isRemote)
|
||||||
|
{
|
||||||
|
setClockwise(!isClockwise());
|
||||||
|
player.addChatMessage("Flipped gear to rotate " + (isClockwise() ? "clockwise" : "anticlockwise") + ".");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
this.manualCrankTime = 20;
|
this.manualCrankTime = 20;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,13 +5,6 @@ import universalelectricity.api.net.IConnector;
|
||||||
|
|
||||||
public interface IMechanical extends IConnector<IMechanicalNetwork>
|
public interface IMechanical extends IConnector<IMechanicalNetwork>
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* Uses this connector to send a packet to the client for the network.
|
|
||||||
*
|
|
||||||
* @return True if the packet was successfully sent.
|
|
||||||
*/
|
|
||||||
public boolean sendNetworkPacket(long torque, float angularVelocity);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The percentage of resistance caused by this connector.
|
* The percentage of resistance caused by this connector.
|
||||||
*
|
*
|
||||||
|
@ -19,6 +12,12 @@ public interface IMechanical extends IConnector<IMechanicalNetwork>
|
||||||
*/
|
*/
|
||||||
public float getResistance();
|
public float getResistance();
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return int[4]: x,y,z,direction
|
||||||
|
*/
|
||||||
|
public int[] getLocation();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Is the mechanical machine going clockwise currently?
|
* @return Is the mechanical machine going clockwise currently?
|
||||||
*/
|
*/
|
||||||
|
@ -30,13 +29,4 @@ public interface IMechanical extends IConnector<IMechanicalNetwork>
|
||||||
* @return Return true if the mechanical block should have its rotation set inveresed.
|
* @return Return true if the mechanical block should have its rotation set inveresed.
|
||||||
*/
|
*/
|
||||||
public boolean isRotationInversed();
|
public boolean isRotationInversed();
|
||||||
|
|
||||||
public IMechanicalNetwork getNetwork(ForgeDirection from);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the instance of this mechanical through ForgeMultipart
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public IMechanical getInstance(ForgeDirection from);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,15 +2,22 @@ package resonantinduction.mechanical.network;
|
||||||
|
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.LinkedHashSet;
|
import java.util.LinkedHashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraftforge.common.ForgeDirection;
|
import net.minecraftforge.common.ForgeDirection;
|
||||||
|
import resonantinduction.mechanical.Mechanical;
|
||||||
import universalelectricity.api.net.IUpdate;
|
import universalelectricity.api.net.IUpdate;
|
||||||
import universalelectricity.core.net.Network;
|
import universalelectricity.core.net.Network;
|
||||||
import universalelectricity.core.net.NetworkTickHandler;
|
import universalelectricity.core.net.NetworkTickHandler;
|
||||||
|
import calclavia.lib.network.IPacketReceiver;
|
||||||
|
|
||||||
|
import com.google.common.io.ByteArrayDataInput;
|
||||||
|
|
||||||
|
import cpw.mods.fml.common.network.PacketDispatcher;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A mechanical network for translate speed and force using mechanical rotations.
|
* A mechanical network for translate speed and force using mechanical rotations.
|
||||||
|
@ -28,7 +35,7 @@ import universalelectricity.core.net.NetworkTickHandler;
|
||||||
*
|
*
|
||||||
* @author Calclavia
|
* @author Calclavia
|
||||||
*/
|
*/
|
||||||
public class MechanicalNetwork extends Network<IMechanicalNetwork, IMechanical> implements IMechanicalNetwork, IUpdate
|
public class MechanicalNetwork extends Network<IMechanicalNetwork, IMechanical> implements IMechanicalNetwork, IPacketReceiver, IUpdate
|
||||||
{
|
{
|
||||||
private long prevTorque = 0;
|
private long prevTorque = 0;
|
||||||
private float prevAngularVelocity = 0;
|
private float prevAngularVelocity = 0;
|
||||||
|
@ -72,9 +79,13 @@ public class MechanicalNetwork extends Network<IMechanicalNetwork, IMechanical>
|
||||||
|
|
||||||
for (IMechanical generatorNode : generators)
|
for (IMechanical generatorNode : generators)
|
||||||
{
|
{
|
||||||
PathfinderRotationManager rotationPathfinder = new PathfinderRotationManager(generatorNode, closedSet);
|
if (generatorNode != null)
|
||||||
|
{
|
||||||
|
PathfinderUpdateRotation rotationPathfinder = new PathfinderUpdateRotation(generatorNode, this, closedSet);
|
||||||
rotationPathfinder.findNodes(generatorNode);
|
rotationPathfinder.findNodes(generatorNode);
|
||||||
closedSet.addAll(rotationPathfinder.closedSet);
|
closedSet.addAll(rotationPathfinder.closedSet);
|
||||||
|
sendRotationUpdatePacket(generatorNode);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
generators.clear();
|
generators.clear();
|
||||||
|
@ -91,18 +102,10 @@ public class MechanicalNetwork extends Network<IMechanicalNetwork, IMechanical>
|
||||||
/**
|
/**
|
||||||
* Update all connectors
|
* Update all connectors
|
||||||
*/
|
*/
|
||||||
if (markPacketUpdate || getPrevTorque() != getTorque() || getPrevAngularVelocity() != getAngularVelocity())
|
if (getPrevTorque() != getTorque() || getPrevAngularVelocity() != getAngularVelocity())
|
||||||
{
|
{
|
||||||
/**
|
sendNetworkPacket();
|
||||||
* Send network update packet for connectors.
|
markPacketUpdate = false;
|
||||||
*/
|
|
||||||
for (IMechanical connector : this.getConnectors())
|
|
||||||
{
|
|
||||||
if (connector.sendNetworkPacket(torque, angularVelocity))
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
prevTorque = torque;
|
prevTorque = torque;
|
||||||
|
@ -123,6 +126,53 @@ public class MechanicalNetwork extends Network<IMechanicalNetwork, IMechanical>
|
||||||
return canUpdate();
|
return canUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send network update packet for connectors.
|
||||||
|
*/
|
||||||
|
public void sendNetworkPacket()
|
||||||
|
{
|
||||||
|
for (IMechanical connector : this.getConnectors())
|
||||||
|
{
|
||||||
|
if (connector instanceof TileEntity)
|
||||||
|
{
|
||||||
|
int[] location = connector.getLocation();
|
||||||
|
PacketDispatcher.sendPacketToAllPlayers(Mechanical.PACKET_NETWORK.getPacket(location[0], location[1], location[2], location[3], (byte) 0, torque, angularVelocity));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void sendRotationUpdatePacket(IMechanical connector)
|
||||||
|
{
|
||||||
|
int[] location = connector.getLocation();
|
||||||
|
PacketDispatcher.sendPacketToAllPlayers(Mechanical.PACKET_NETWORK.getPacket(location[0], location[1], location[2], location[3], (byte) 1, connector.isClockwise()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onReceivePacket(ByteArrayDataInput data, EntityPlayer player, Object... extra)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
switch (data.readByte())
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
setPower(data.readLong(), data.readFloat());
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
IMechanical updateNode = (IMechanical) extra[0];
|
||||||
|
updateNode.setClockwise(data.readBoolean());
|
||||||
|
PathfinderUpdateRotation rotationPathfinder = new PathfinderUpdateRotation(updateNode, this, null);
|
||||||
|
rotationPathfinder.findNodes(updateNode);
|
||||||
|
System.out.println("UPDATE");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Applies energy to the mechanical network this tick.
|
* Applies energy to the mechanical network this tick.
|
||||||
* Note: Server side only.
|
* Note: Server side only.
|
||||||
|
@ -182,7 +232,7 @@ public class MechanicalNetwork extends Network<IMechanicalNetwork, IMechanical>
|
||||||
// Reset
|
// Reset
|
||||||
prevTorque = torque = 0;
|
prevTorque = torque = 0;
|
||||||
prevAngularVelocity = angularVelocity = 0;
|
prevAngularVelocity = angularVelocity = 0;
|
||||||
load = 0;
|
load = 1;
|
||||||
|
|
||||||
super.reconstruct();
|
super.reconstruct();
|
||||||
}
|
}
|
||||||
|
@ -233,6 +283,12 @@ public class MechanicalNetwork extends Network<IMechanicalNetwork, IMechanical>
|
||||||
return new MechanicalNetwork();
|
return new MechanicalNetwork();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class getConnectorClass()
|
||||||
|
{
|
||||||
|
return IMechanical.class;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString()
|
public String toString()
|
||||||
{
|
{
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
package resonantinduction.mechanical.network;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.network.packet.Packet;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraftforge.common.ForgeDirection;
|
||||||
|
import universalelectricity.api.net.IConnector;
|
||||||
|
import calclavia.lib.network.IPacketReceiver;
|
||||||
|
import calclavia.lib.network.PacketType;
|
||||||
|
|
||||||
|
import com.google.common.io.ByteArrayDataInput;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Packet handler for a grid network.
|
||||||
|
*
|
||||||
|
* @author Calclavia
|
||||||
|
*/
|
||||||
|
public class PacketNetwork<C extends IConnector> extends PacketType
|
||||||
|
{
|
||||||
|
private Class connectorClass;
|
||||||
|
|
||||||
|
public PacketNetwork(Class networkClass, String channel)
|
||||||
|
{
|
||||||
|
super(channel);
|
||||||
|
this.connectorClass = networkClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Packet getPacket(int x, int y, int z, int dir, Object... args)
|
||||||
|
{
|
||||||
|
List newArgs = new ArrayList();
|
||||||
|
|
||||||
|
newArgs.add(x);
|
||||||
|
newArgs.add(y);
|
||||||
|
newArgs.add(z);
|
||||||
|
newArgs.add(dir);
|
||||||
|
|
||||||
|
for (Object obj : args)
|
||||||
|
{
|
||||||
|
newArgs.add(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
return super.getPacket(newArgs.toArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receivePacket(ByteArrayDataInput data, EntityPlayer player)
|
||||||
|
{
|
||||||
|
int x = data.readInt();
|
||||||
|
int y = data.readInt();
|
||||||
|
int z = data.readInt();
|
||||||
|
TileEntity tileEntity = player.worldObj.getBlockTileEntity(x, y, z);
|
||||||
|
|
||||||
|
if (tileEntity != null && connectorClass.isAssignableFrom(tileEntity.getClass()))
|
||||||
|
{
|
||||||
|
C instance = (C) ((C) tileEntity).getInstance(ForgeDirection.getOrientation(data.readInt()));
|
||||||
|
Object network = instance.getNetwork();
|
||||||
|
|
||||||
|
if (network instanceof IPacketReceiver)
|
||||||
|
{
|
||||||
|
((IPacketReceiver) network).onReceivePacket(data, player, instance);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -20,7 +20,6 @@ import codechicken.multipart.JCuboidPart;
|
||||||
import codechicken.multipart.JNormalOcclusion;
|
import codechicken.multipart.JNormalOcclusion;
|
||||||
import codechicken.multipart.TFacePart;
|
import codechicken.multipart.TFacePart;
|
||||||
import codechicken.multipart.TMultiPart;
|
import codechicken.multipart.TMultiPart;
|
||||||
import codechicken.multipart.TileMultipart;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* We assume all the force acting on the gear is 90 degrees.
|
* We assume all the force acting on the gear is 90 degrees.
|
||||||
|
@ -104,18 +103,16 @@ public abstract class PartMechanical extends JCuboidPart implements JNormalOcclu
|
||||||
public void refresh()
|
public void refresh()
|
||||||
{
|
{
|
||||||
/** Look for gears that are back-to-back with this gear. Equate torque. */
|
/** Look for gears that are back-to-back with this gear. Equate torque. */
|
||||||
universalelectricity.api.vector.Vector3 vec = new universalelectricity.api.vector.Vector3(tile()).translate(placementSide);
|
TileEntity tileBehind = new universalelectricity.api.vector.Vector3(tile()).translate(placementSide).getTileEntity(world());
|
||||||
|
|
||||||
TileEntity tile = vec.getTileEntity(world());
|
if (tileBehind instanceof IMechanical)
|
||||||
|
|
||||||
if (tile instanceof IMechanical)
|
|
||||||
{
|
{
|
||||||
IMechanicalNetwork networkToMerge = ((IMechanical) tile).getNetwork(this.placementSide.getOpposite());
|
IMechanical instance = (IMechanical) ((IMechanical) tileBehind).getInstance(placementSide.getOpposite());
|
||||||
|
|
||||||
if (networkToMerge != null)
|
if (instance != null && instance.canConnect(placementSide))
|
||||||
{
|
{
|
||||||
connections[this.placementSide.getOpposite().ordinal()] = ((IMechanical) tile).getInstance(this.placementSide.getOpposite());
|
connections[placementSide.getOpposite().ordinal()] = instance;
|
||||||
getNetwork().merge(networkToMerge);
|
getNetwork().merge(instance.getNetwork());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -124,18 +121,16 @@ public abstract class PartMechanical extends JCuboidPart implements JNormalOcclu
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
ForgeDirection checkDir = ForgeDirection.getOrientation(Rotation.rotateSide(this.placementSide.ordinal(), i));
|
ForgeDirection checkDir = ForgeDirection.getOrientation(Rotation.rotateSide(this.placementSide.ordinal(), i));
|
||||||
universalelectricity.api.vector.Vector3 checkVec = new universalelectricity.api.vector.Vector3(tile()).translate(checkDir);
|
TileEntity checkTile = new universalelectricity.api.vector.Vector3(tile()).translate(checkDir).getTileEntity(world());
|
||||||
|
|
||||||
TileEntity checkTile = checkVec.getTileEntity(world());
|
|
||||||
|
|
||||||
if (checkTile instanceof IMechanical)
|
if (checkTile instanceof IMechanical)
|
||||||
{
|
{
|
||||||
IMechanicalNetwork networkToMerge = ((IMechanical) checkTile).getNetwork(this.placementSide);
|
IMechanical instance = (IMechanical) ((IMechanical) checkTile).getInstance(placementSide);
|
||||||
|
|
||||||
if (networkToMerge != null)
|
if (instance != null && instance.canConnect(placementSide.getOpposite()))
|
||||||
{
|
{
|
||||||
connections[checkDir.ordinal()] = ((IMechanical) checkTile).getInstance(this.placementSide);
|
connections[checkDir.ordinal()] = instance;
|
||||||
getNetwork().merge(networkToMerge);
|
getNetwork().merge(instance.getNetwork());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -144,29 +139,22 @@ public abstract class PartMechanical extends JCuboidPart implements JNormalOcclu
|
||||||
for (int i = 0; i < 6; i++)
|
for (int i = 0; i < 6; i++)
|
||||||
{
|
{
|
||||||
ForgeDirection checkDir = ForgeDirection.getOrientation(i);
|
ForgeDirection checkDir = ForgeDirection.getOrientation(i);
|
||||||
IMechanicalNetwork networkToMerge = ((IMechanical) tile()).getNetwork(checkDir);
|
IMechanical instance = (IMechanical) ((IMechanical) tile()).getInstance(checkDir);
|
||||||
|
|
||||||
if (networkToMerge != null)
|
if (instance != null && instance.canConnect(checkDir.getOpposite()))
|
||||||
{
|
{
|
||||||
connections[checkDir.ordinal()] = ((IMechanical) tile()).getInstance(checkDir);
|
connections[checkDir.ordinal()] = instance;
|
||||||
getNetwork().merge(networkToMerge);
|
getNetwork().merge(instance.getNetwork());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
getNetwork().reconstruct();
|
getNetwork().reconstruct();
|
||||||
|
|
||||||
if (!world().isRemote)
|
if (!world().isRemote)
|
||||||
{
|
{
|
||||||
sendRefreshPacket();
|
sendRotationPacket();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public IMechanicalNetwork getNetwork(ForgeDirection from)
|
|
||||||
{
|
|
||||||
return getNetwork();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object[] getConnections()
|
public Object[] getConnections()
|
||||||
{
|
{
|
||||||
|
@ -180,23 +168,11 @@ public abstract class PartMechanical extends JCuboidPart implements JNormalOcclu
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Packet Code. */
|
/** Packet Code. */
|
||||||
|
public void sendRotationPacket()
|
||||||
@Override
|
|
||||||
public boolean sendNetworkPacket(long torque, float angularVelocity)
|
|
||||||
{
|
{
|
||||||
if (world() != null && !world().isRemote && tile() != null)
|
if (world() != null && !world().isRemote && tile() != null)
|
||||||
{
|
{
|
||||||
tile().getWriteStream(this).writeByte(0).writeLong(torque).writeFloat(angularVelocity).writeBoolean(isClockwise);
|
tile().getWriteStream(this).writeByte(0).writeBoolean(isClockwise);
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void sendRefreshPacket()
|
|
||||||
{
|
|
||||||
if (world() != null && !world().isRemote && tile() != null)
|
|
||||||
{
|
|
||||||
tile().getWriteStream(this).writeByte(1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -204,13 +180,9 @@ public abstract class PartMechanical extends JCuboidPart implements JNormalOcclu
|
||||||
{
|
{
|
||||||
if (packetID == 0)
|
if (packetID == 0)
|
||||||
{
|
{
|
||||||
getNetwork().setPower(packet.readLong(), packet.readFloat());
|
refresh();
|
||||||
isClockwise = packet.readBoolean();
|
isClockwise = packet.readBoolean();
|
||||||
}
|
}
|
||||||
else if (packetID == 1)
|
|
||||||
{
|
|
||||||
this.refresh();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -236,7 +208,7 @@ public abstract class PartMechanical extends JCuboidPart implements JNormalOcclu
|
||||||
@Override
|
@Override
|
||||||
public boolean canConnect(ForgeDirection direction)
|
public boolean canConnect(ForgeDirection direction)
|
||||||
{
|
{
|
||||||
return new universalelectricity.api.vector.Vector3(this.x() + direction.offsetX, this.y() + direction.offsetY, this.z() + direction.offsetZ).getTileEntity(this.world()) instanceof IMechanical;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -343,4 +315,9 @@ public abstract class PartMechanical extends JCuboidPart implements JNormalOcclu
|
||||||
return getItem();
|
return getItem();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int[] getLocation()
|
||||||
|
{
|
||||||
|
return new int[] { x(), y(), z(), placementSide.ordinal() };
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -19,35 +19,38 @@ import universalelectricity.core.net.ConnectionPathfinder;
|
||||||
* @author Calclavia
|
* @author Calclavia
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class PathfinderRotationManager extends ConnectionPathfinder<IMechanical>
|
public class PathfinderUpdateRotation extends ConnectionPathfinder<IMechanical>
|
||||||
{
|
{
|
||||||
private boolean currentIsClockwise = true;
|
private boolean currentRotationFlag = true;
|
||||||
private Set<IMechanical> prevClosedSet;
|
private Set<IMechanical> prevClosedSet;
|
||||||
|
private IMechanicalNetwork network;
|
||||||
|
|
||||||
public PathfinderRotationManager(IMechanical first, Set<IMechanical> prevClosedSet)
|
public PathfinderUpdateRotation(IMechanical first, IMechanicalNetwork network, Set<IMechanical> prevClosedSet)
|
||||||
{
|
{
|
||||||
super(first);
|
super(IMechanical.class, first);
|
||||||
this.currentIsClockwise = first.isClockwise();
|
this.currentRotationFlag = first.isClockwise();
|
||||||
this.prevClosedSet = prevClosedSet;
|
this.prevClosedSet = prevClosedSet;
|
||||||
|
this.network = network;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean findNodes(IMechanical currentNode)
|
public boolean findNodes(IMechanical currentNode)
|
||||||
{
|
{
|
||||||
this.closedSet.add(currentNode);
|
this.closedSet.add(currentNode);
|
||||||
|
|
||||||
currentNode.setClockwise(currentIsClockwise);
|
currentNode.setClockwise(currentRotationFlag);
|
||||||
|
|
||||||
for (IMechanical node : this.getConnectedNodes(currentNode))
|
for (IMechanical node : this.getConnectedNodes(currentNode))
|
||||||
{
|
{
|
||||||
if (!this.closedSet.contains(node))
|
if (!this.closedSet.contains(node))
|
||||||
{
|
{
|
||||||
if (prevClosedSet.contains(node) && node.isClockwise() != currentNode.isClockwise())
|
currentRotationFlag = (node.isRotationInversed() && currentNode.isRotationInversed()) ? !currentNode.isClockwise() : currentNode.isClockwise();
|
||||||
|
|
||||||
|
if ((prevClosedSet != null && prevClosedSet.contains(node)) && (node.isClockwise() != currentRotationFlag))
|
||||||
{
|
{
|
||||||
// We have conflicting gears. Network is now equal.
|
// We have conflicting rotations. Network is now stuck.
|
||||||
currentNode.getNetwork().setPower(0, 0);
|
network.setPower(0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
currentIsClockwise = (node.isRotationInversed() && currentNode.isRotationInversed()) ? !currentNode.isClockwise() : currentNode.isClockwise();
|
|
||||||
findNodes(node);
|
findNodes(node);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -12,12 +12,6 @@ public abstract class TileMechanical extends TileAdvanced implements IMechanical
|
||||||
|
|
||||||
private boolean isClockwise = false;
|
private boolean isClockwise = false;
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canConnect(ForgeDirection direction)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object[] getConnections()
|
public Object[] getConnections()
|
||||||
{
|
{
|
||||||
|
@ -42,9 +36,9 @@ public abstract class TileMechanical extends TileAdvanced implements IMechanical
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean sendNetworkPacket(long torque, float angularVelocity)
|
public int[] getLocation()
|
||||||
{
|
{
|
||||||
return false;
|
return new int[] { xCoord, yCoord, zCoord, 0 };
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -35,11 +35,8 @@ public class RenderGrinderWheel extends TileEntitySpecialRenderer
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
glTranslatef((float) x + 0.5F, (float) y + 0.5f, (float) z + 0.5F);
|
glTranslatef((float) x + 0.5F, (float) y + 0.5f, (float) z + 0.5F);
|
||||||
glScalef(0.51f, 0.51f, 0.51f);
|
glScalef(0.51f, 0.51f, 0.51f);
|
||||||
|
|
||||||
RenderUtility.rotateBlockBasedOnDirection(tile.getDirection());
|
RenderUtility.rotateBlockBasedOnDirection(tile.getDirection());
|
||||||
|
glRotatef((float) Math.toDegrees(tile.getNetwork().getRotation() * (tile.isClockwise() ? 1 : -1)), 0, 0, 1);
|
||||||
glRotatef((float) Math.toDegrees(tile.getNetwork().getRotation()) * (tile.isClockwise() ? 1 : -1), 0, 0, 1);
|
|
||||||
|
|
||||||
FMLClientHandler.instance().getClient().renderEngine.bindTexture(TEXTURE);
|
FMLClientHandler.instance().getClient().renderEngine.bindTexture(TEXTURE);
|
||||||
MODEL.renderAll();
|
MODEL.renderAll();
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
|
|
@ -179,10 +179,8 @@ public class TileGrinderWheel extends TileMechanical implements IRotatable
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IMechanicalNetwork getNetwork(ForgeDirection from)
|
public boolean canConnect(ForgeDirection from)
|
||||||
{
|
{
|
||||||
if (from != this.getDirection() && from != this.getDirection().getOpposite())
|
return from != this.getDirection() && from != this.getDirection().getOpposite();
|
||||||
return getNetwork();
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -88,18 +88,8 @@ public class TraitMechanical extends TileMultipart implements IMechanical
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IMechanicalNetwork getNetwork(ForgeDirection from)
|
public IMechanicalNetwork getNetwork()
|
||||||
{
|
{
|
||||||
TMultiPart part = this.partMap(from.ordinal());
|
|
||||||
|
|
||||||
if (part != null)
|
|
||||||
{
|
|
||||||
if (part instanceof IMechanical)
|
|
||||||
{
|
|
||||||
return ((IMechanical) part).getNetwork();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -117,12 +107,7 @@ public class TraitMechanical extends TileMultipart implements IMechanical
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public IMechanicalNetwork getNetwork()
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -131,12 +116,6 @@ public class TraitMechanical extends TileMultipart implements IMechanical
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean sendNetworkPacket(long torque, float angularVelocity)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float getResistance()
|
public float getResistance()
|
||||||
{
|
{
|
||||||
|
@ -148,4 +127,10 @@ public class TraitMechanical extends TileMultipart implements IMechanical
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int[] getLocation()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue