Fixed gear shaft external connections
This commit is contained in:
parent
05b903f07b
commit
ef4322338e
5 changed files with 27 additions and 22 deletions
|
@ -155,7 +155,7 @@ public class PartGear extends PartMechanical implements IMechanical, IMultiBlock
|
|||
{
|
||||
IMechanical instance = ((IMechanical) tileBehind).getInstance(placementSide.getOpposite());
|
||||
|
||||
if (instance != null && instance.canConnect(placementSide, this))
|
||||
if (instance != null && instance != this && instance.canConnect(placementSide, this))
|
||||
{
|
||||
connections[placementSide.getOpposite().ordinal()] = instance;
|
||||
getNetwork().merge(instance.getNetwork());
|
||||
|
@ -178,7 +178,7 @@ public class PartGear extends PartMechanical implements IMechanical, IMultiBlock
|
|||
|
||||
IMechanical instance = ((IMechanical) tile()).getInstance(checkDir == placementSide.getOpposite() ? ForgeDirection.UNKNOWN : checkDir);
|
||||
|
||||
if (connections[checkDir.ordinal()] == null && checkDir != placementSide && instance != null && instance.canConnect(checkDir.getOpposite(), this))
|
||||
if (connections[checkDir.ordinal()] == null && instance != this && checkDir != placementSide && instance != null && instance.canConnect(checkDir.getOpposite(), this))
|
||||
{
|
||||
connections[checkDir.ordinal()] = instance;
|
||||
getNetwork().merge(instance.getNetwork());
|
||||
|
@ -203,7 +203,7 @@ public class PartGear extends PartMechanical implements IMechanical, IMultiBlock
|
|||
{
|
||||
IMechanical instance = (IMechanical) ((IMechanical) checkTile).getInstance(placementSide);
|
||||
|
||||
if (instance != null && instance.canConnect(checkDir.getOpposite(), this))
|
||||
if (instance != null && instance != this && instance.canConnect(checkDir.getOpposite(), this))
|
||||
{
|
||||
connections[checkDir.ordinal()] = instance;
|
||||
getNetwork().merge(instance.getNetwork());
|
||||
|
|
|
@ -37,6 +37,12 @@ public class PartGearShaft extends PartMechanical
|
|||
sides[6] = new IndexedCuboid6(6, new Cuboid6(0.36, 0.36, 0.36, 0.64, 0.64, 0.64));
|
||||
}
|
||||
|
||||
public void preparePlacement(int side, int itemDamage)
|
||||
{
|
||||
ForgeDirection dir = ForgeDirection.getOrientation((byte) (side ^ 1));
|
||||
this.placementSide = ForgeDirection.getOrientation(!(dir.ordinal() % 2 == 0) ? dir.ordinal() - 1 : dir.ordinal());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update()
|
||||
{
|
||||
|
@ -65,9 +71,8 @@ public class PartGearShaft extends PartMechanical
|
|||
if (checkDir == placementSide || checkDir == placementSide.getOpposite())
|
||||
{
|
||||
IMechanical instance = ((IMechanical) tile()).getInstance(checkDir);
|
||||
System.out.println("FOUND POSSIBLE CHECK"+instance);
|
||||
|
||||
if (instance != null && instance.canConnect(checkDir.getOpposite(), this))
|
||||
if (instance != null && instance != this && instance.canConnect(checkDir.getOpposite(), this))
|
||||
{
|
||||
connections[checkDir.ordinal()] = instance;
|
||||
getNetwork().merge(instance.getNetwork());
|
||||
|
@ -76,19 +81,19 @@ public class PartGearShaft extends PartMechanical
|
|||
}
|
||||
|
||||
/** Look for connections outside this block space, the relative FRONT and BACK */
|
||||
for (int i = 0; i < 4; i++)
|
||||
for (int i = 0; i < 6; i++)
|
||||
{
|
||||
ForgeDirection checkDir = ForgeDirection.getOrientation(Rotation.rotateSide(this.placementSide.ordinal(), i));
|
||||
|
||||
ForgeDirection checkDir = ForgeDirection.getOrientation(i);
|
||||
|
||||
if (connections[checkDir.ordinal()] == null && (checkDir == placementSide || checkDir == placementSide.getOpposite()))
|
||||
{
|
||||
TileEntity checkTile = new universalelectricity.api.vector.Vector3(tile()).translate(checkDir).getTileEntity(world());
|
||||
|
||||
if (checkTile instanceof IMechanical)
|
||||
{
|
||||
IMechanical instance = (IMechanical) ((IMechanical) checkTile).getInstance(placementSide);
|
||||
IMechanical instance = (IMechanical) ((IMechanical) checkTile).getInstance(checkDir.getOpposite());
|
||||
|
||||
if (instance != null && instance.canConnect(checkDir.getOpposite(), this))
|
||||
if (instance != null && instance != this && instance.canConnect(checkDir.getOpposite(), this))
|
||||
{
|
||||
connections[checkDir.ordinal()] = instance;
|
||||
getNetwork().merge(instance.getNetwork());
|
||||
|
@ -152,7 +157,7 @@ public class PartGearShaft extends PartMechanical
|
|||
@Override
|
||||
public boolean inverseRotation(ForgeDirection dir)
|
||||
{
|
||||
return false;
|
||||
return dir == placementSide;
|
||||
}
|
||||
|
||||
}
|
|
@ -36,7 +36,6 @@ public class RenderGearShaft
|
|||
GL11.glPushMatrix();
|
||||
|
||||
ForgeDirection dir = part.placementSide;
|
||||
dir = ForgeDirection.getOrientation(!(dir.ordinal() % 2 == 0) ? dir.ordinal() - 1 : dir.ordinal());
|
||||
|
||||
switch (dir)
|
||||
{
|
||||
|
|
|
@ -81,6 +81,7 @@ public class MechanicalNetwork extends Network<IMechanicalNetwork, IMechanical>
|
|||
long torque = mechanical.getTorque();
|
||||
|
||||
boolean inverseRotation = mechanical.inverseRotation(dir) && adjacentMech.inverseRotation(dir.getOpposite());
|
||||
|
||||
int inversion = inverseRotation ? -1 : 1;
|
||||
|
||||
if (Math.abs(torque + inversion * (adjacentMech.getTorque() / ratio * ACCELERATION)) < Math.abs(adjacentMech.getTorque() / ratio))
|
||||
|
|
|
@ -58,16 +58,6 @@ public class TraitMechanical extends TileMultipart implements IMechanical
|
|||
@Override
|
||||
public boolean canConnect(ForgeDirection from)
|
||||
{
|
||||
TMultiPart part = this.partMap(from.ordinal());
|
||||
|
||||
if (part != null)
|
||||
{
|
||||
if (this.mechanicalInterfaces.contains(part))
|
||||
{
|
||||
return ((IMechanical) part).canConnect(from);
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -88,6 +78,11 @@ public class TraitMechanical extends TileMultipart implements IMechanical
|
|||
{
|
||||
TMultiPart part = this.partMap(from.ordinal());
|
||||
|
||||
if (part == null)
|
||||
{
|
||||
part = partMap(PartMap.CENTER.ordinal());
|
||||
}
|
||||
|
||||
if (part != null)
|
||||
{
|
||||
if (part instanceof IMechanical)
|
||||
|
@ -148,4 +143,9 @@ public class TraitMechanical extends TileMultipart implements IMechanical
|
|||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean inverseRotation(ForgeDirection dir)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue