Worked on generator rotation logic
This commit is contained in:
parent
20dcbce5c5
commit
1ab4bd3a3f
2 changed files with 106 additions and 98 deletions
|
@ -15,6 +15,7 @@ public class BlockGenerator extends BlockRIRotatable
|
|||
{
|
||||
super("generator");
|
||||
setTextureName(Reference.PREFIX + "material_steel");
|
||||
rotationMask = 0b111111;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -3,18 +3,18 @@ package resonantinduction.electrical.generator;
|
|||
import java.util.EnumSet;
|
||||
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
import resonantinduction.mechanical.network.IMechanical;
|
||||
import universalelectricity.api.energy.EnergyStorageHandler;
|
||||
import universalelectricity.api.vector.Vector3;
|
||||
import calclavia.lib.prefab.tile.IRotatable;
|
||||
import calclavia.lib.prefab.tile.TileElectrical;
|
||||
|
||||
/**
|
||||
* A kinetic energy to electrical energy converter.
|
||||
/** A kinetic energy to electrical energy converter.
|
||||
*
|
||||
* @author Calclavia
|
||||
*/
|
||||
public class TileGenerator extends TileElectrical implements IMechanical
|
||||
* @author Calclavia */
|
||||
public class TileGenerator extends TileElectrical implements IMechanical, IRotatable
|
||||
{
|
||||
/** Generator turns KE -> EE. Inverted one will turn EE -> KE. */
|
||||
public boolean isInversed = false;
|
||||
|
@ -43,8 +43,8 @@ public class TileGenerator extends TileElectrical implements IMechanical
|
|||
}
|
||||
else
|
||||
{
|
||||
Vector3 outputVector = new Vector3(this).modifyPositionFromSide(getOuputDirection());
|
||||
Object mechanical = outputVector.getTileEntity(worldObj);
|
||||
Vector3 outputVector = new Vector3(this).modifyPositionFromSide(this.getDirection().getOpposite());
|
||||
TileEntity mechanical = outputVector.getTileEntity(worldObj);
|
||||
|
||||
if (mechanical instanceof IMechanical)
|
||||
{
|
||||
|
@ -54,7 +54,7 @@ public class TileGenerator extends TileElectrical implements IMechanical
|
|||
{
|
||||
float angularVelocity = extract / torqueRatio;
|
||||
long torque = (long) (extract / angularVelocity);
|
||||
((IMechanical) mechanical).onReceiveEnergy(getOuputDirection().getOpposite(), torque, angularVelocity, true);
|
||||
((IMechanical) mechanical).onReceiveEnergy(this.getDirection().getOpposite(), torque, angularVelocity, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -64,29 +64,31 @@ public class TileGenerator extends TileElectrical implements IMechanical
|
|||
@Override
|
||||
public EnumSet<ForgeDirection> getInputDirections()
|
||||
{
|
||||
EnumSet<ForgeDirection> dirs = EnumSet.noneOf(ForgeDirection.class);
|
||||
dirs.add(getInputDirection());
|
||||
return dirs;
|
||||
return this.getOutputDirections();
|
||||
}
|
||||
|
||||
@Override
|
||||
public EnumSet<ForgeDirection> getOutputDirections()
|
||||
{
|
||||
EnumSet<ForgeDirection> dirs = EnumSet.noneOf(ForgeDirection.class);
|
||||
dirs.add(getOuputDirection());
|
||||
EnumSet<ForgeDirection> dirs = EnumSet.allOf(ForgeDirection.class);
|
||||
dirs.remove(this.getDirection());
|
||||
dirs.remove(this.getDirection().ordinal());
|
||||
return dirs;
|
||||
}
|
||||
|
||||
public ForgeDirection getInputDirection()
|
||||
{
|
||||
return ForgeDirection.getOrientation(this.getBlockMetadata()).getOpposite();
|
||||
}
|
||||
|
||||
public ForgeDirection getOuputDirection()
|
||||
@Override
|
||||
public ForgeDirection getDirection()
|
||||
{
|
||||
return ForgeDirection.getOrientation(this.getBlockMetadata());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDirection(ForgeDirection dir)
|
||||
{
|
||||
this.worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, dir.ordinal(), 3);
|
||||
|
||||
}
|
||||
|
||||
private boolean isFunctioning()
|
||||
{
|
||||
return true;
|
||||
|
@ -94,9 +96,13 @@ public class TileGenerator extends TileElectrical implements IMechanical
|
|||
|
||||
@Override
|
||||
public long onReceiveEnergy(ForgeDirection from, long torque, float angularVelocity, boolean doReceive)
|
||||
{
|
||||
if (!this.isInversed)
|
||||
{
|
||||
return energy.receiveEnergy((long) (torque * angularVelocity), doReceive);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt)
|
||||
|
@ -125,4 +131,5 @@ public class TileGenerator extends TileElectrical implements IMechanical
|
|||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue