Fixed gears not connecting to gearshafts
This commit is contained in:
parent
9f4c9edf7d
commit
898f471c7a
2 changed files with 36 additions and 28 deletions
|
@ -170,43 +170,52 @@ public class GearNode extends MechanicalNode
|
||||||
{
|
{
|
||||||
INodeProvider parent = ((MechanicalNode) with).getParent();
|
INodeProvider parent = ((MechanicalNode) with).getParent();
|
||||||
|
|
||||||
/** Check for flat connections (gear face on gear face) */
|
/** Check for flat connections (gear face on gear face) to make sure it's actually on
|
||||||
|
* this gear block. */
|
||||||
if (from == gear().placementSide.getOpposite())
|
if (from == gear().placementSide.getOpposite())
|
||||||
{
|
{
|
||||||
if (parent instanceof PartGear)
|
if (parent instanceof PartGear || parent instanceof PartGearShaft)
|
||||||
{
|
{
|
||||||
if (((PartGear) parent).tile() == gear().tile() && !gear().getMultiBlock().isConstructed())
|
if (parent instanceof PartGearShaft)
|
||||||
{
|
{
|
||||||
return true;
|
PartGearShaft shaft = (PartGearShaft) parent;
|
||||||
|
return shaft.tile().partMap(from.getOpposite().ordinal()) == gear() && Math.abs(shaft.placementSide.offsetX) == Math.abs(gear().placementSide.offsetX) && Math.abs(shaft.placementSide.offsetY) == Math.abs(gear().placementSide.offsetY) && Math.abs(shaft.placementSide.offsetZ) == Math.abs(gear().placementSide.offsetZ);
|
||||||
}
|
}
|
||||||
|
else if (parent instanceof PartGear)
|
||||||
if (((PartGear) parent).placementSide != gear().placementSide)
|
|
||||||
{
|
{
|
||||||
TMultiPart part = gear().tile().partMap(((PartGear) parent).placementSide.ordinal());
|
if (((PartGear) parent).tile() == gear().tile() && !gear().getMultiBlock().isConstructed())
|
||||||
|
|
||||||
if (part instanceof PartGear)
|
|
||||||
{
|
{
|
||||||
/** Case when we connect gears via edges internally. Large gear attempt
|
return true;
|
||||||
* to connect to small gear. */
|
|
||||||
PartGear sourceGear = (PartGear) part;
|
|
||||||
|
|
||||||
if (sourceGear.isCenterMultiBlock() && !sourceGear.getMultiBlock().isPrimary())
|
|
||||||
{
|
|
||||||
// For large gear to small gear on edge connection.
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
/** Small gear attempting to connect to large gear. */
|
|
||||||
if (gear().getMultiBlock().isConstructed())
|
|
||||||
{
|
|
||||||
TMultiPart checkPart = ((PartGear) parent).tile().partMap(gear().placementSide.ordinal());
|
|
||||||
|
|
||||||
if (checkPart instanceof PartGear)
|
if (((PartGear) parent).placementSide != gear().placementSide)
|
||||||
|
{
|
||||||
|
TMultiPart part = gear().tile().partMap(((PartGear) parent).placementSide.ordinal());
|
||||||
|
|
||||||
|
if (part instanceof PartGear)
|
||||||
|
{
|
||||||
|
/** Case when we connect gears via edges internally. Large gear
|
||||||
|
* attempt to connect to small gear. */
|
||||||
|
PartGear sourceGear = (PartGear) part;
|
||||||
|
|
||||||
|
if (sourceGear.isCenterMultiBlock() && !sourceGear.getMultiBlock().isPrimary())
|
||||||
{
|
{
|
||||||
ForgeDirection requiredDirection = ((PartGear) checkPart).getPosition().subtract(position()).toForgeDirection();
|
// For large gear to small gear on edge connection.
|
||||||
return ((PartGear) checkPart).isCenterMultiBlock() && ((PartGear) parent).placementSide == requiredDirection;
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/** Small gear attempting to connect to large gear. */
|
||||||
|
if (gear().getMultiBlock().isConstructed())
|
||||||
|
{
|
||||||
|
TMultiPart checkPart = ((PartGear) parent).tile().partMap(gear().placementSide.ordinal());
|
||||||
|
|
||||||
|
if (checkPart instanceof PartGear)
|
||||||
|
{
|
||||||
|
ForgeDirection requiredDirection = ((PartGear) checkPart).getPosition().subtract(position()).toForgeDirection();
|
||||||
|
return ((PartGear) checkPart).isCenterMultiBlock() && ((PartGear) parent).placementSide == requiredDirection;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,6 @@ public class PartGearShaft extends PartMechanical
|
||||||
public PartGearShaft()
|
public PartGearShaft()
|
||||||
{
|
{
|
||||||
super();
|
super();
|
||||||
|
|
||||||
node = new GearShaftNode(this);
|
node = new GearShaftNode(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue