Fixed Gears not rotating correctly, and crashing when broken

This commit is contained in:
Robert S 2014-08-23 13:57:44 -04:00
parent e50b502335
commit 6b444dc5b7
4 changed files with 54 additions and 17 deletions

View file

@ -14,21 +14,45 @@ abstract class MultipartNode(parent: INodeProvider) extends NodeConnector(parent
{
override def world: World =
{
return if (parent.isInstanceOf[TMultiPart]) (parent.asInstanceOf[TMultiPart]).world else if (parent.isInstanceOf[TileEntity]) (parent.asInstanceOf[TileEntity]).getWorldObj else null
if(parent != null) {
if (parent.isInstanceOf[TMultiPart])
return parent.asInstanceOf[TMultiPart].world
else if (parent.isInstanceOf[TileEntity])
return parent.asInstanceOf[TileEntity].getWorldObj
}
return null
}
override def x: Double =
{
return if (parent.isInstanceOf[TMultiPart]) (parent.asInstanceOf[TMultiPart]).x else if (parent.isInstanceOf[TileEntity]) (parent.asInstanceOf[TileEntity]).xCoord else 0
if(parent != null) {
if (parent.isInstanceOf[TMultiPart])
return (parent.asInstanceOf[TMultiPart]).x
else if (parent.isInstanceOf[TileEntity])
return (parent.asInstanceOf[TileEntity]).xCoord
}
return 0
}
override def y: Double =
{
return if (parent.isInstanceOf[TMultiPart]) (parent.asInstanceOf[TMultiPart]).y else if (parent.isInstanceOf[TileEntity]) (parent.asInstanceOf[TileEntity]).yCoord else 0
if(parent != null) {
if (parent.isInstanceOf[TMultiPart])
return (parent.asInstanceOf[TMultiPart]).y
else if (parent.isInstanceOf[TileEntity])
return (parent.asInstanceOf[TileEntity]).yCoord
}
return 0
}
override def z: Double =
{
return if (parent.isInstanceOf[TMultiPart]) (parent.asInstanceOf[TMultiPart]).z else if (parent.isInstanceOf[TileEntity]) (parent.asInstanceOf[TileEntity]).zCoord else 0
if(parent != null) {
if (parent.isInstanceOf[TMultiPart])
return (parent.asInstanceOf[TMultiPart]).z
else if (parent.isInstanceOf[TileEntity])
return (parent.asInstanceOf[TileEntity]).zCoord
}
return 0
}
}

View file

@ -142,7 +142,7 @@ public class MechanicalNode extends MultipartNode implements IMechanicalNode, IS
Entry<Object, ForgeDirection> entry = it.next();
ForgeDirection dir = entry.getValue();
if (entry.getKey() instanceof Mechanical) adjacentMech = (MechanicalNode) entry.getKey();
if (entry.getKey() instanceof MechanicalNode) adjacentMech = (MechanicalNode) entry.getKey();
if (entry.getKey() instanceof INodeProvider)
{
INode node = ((INodeProvider) entry.getKey()).getNode(MechanicalNode.class, dir.getOpposite());

View file

@ -3,6 +3,7 @@ package resonantinduction.mechanical.energy.grid;
import java.util.ArrayList;
import java.util.List;
import codechicken.multipart.*;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
@ -12,10 +13,6 @@ import net.minecraft.util.MovingObjectPosition;
import net.minecraftforge.common.util.ForgeDirection;
import codechicken.lib.data.MCDataInput;
import codechicken.lib.data.MCDataOutput;
import codechicken.multipart.ControlKeyModifer;
import codechicken.multipart.JCuboidPart;
import codechicken.multipart.JNormalOcclusion;
import codechicken.multipart.TFacePart;
import resonant.engine.ResonantEngine;
import universalelectricity.api.core.grid.INode;
import universalelectricity.api.core.grid.INodeProvider;
@ -46,6 +43,23 @@ public abstract class PartMechanical extends JCuboidPart implements JNormalOcclu
this.tier = itemDamage;
}
@Override
public void onNeighborChanged()
{
super.onNeighborChanged();
node.reconstruct();
}
@Override
public void onPartChanged(TMultiPart part)
{
super.onPartChanged(part);
if(part instanceof INodeProvider)
{
node.reconstruct();
}
}
@Override
public void update()
{
@ -54,7 +68,6 @@ public abstract class PartMechanical extends JCuboidPart implements JNormalOcclu
{
ticks = 0;
}
//Make sure to update on both sides
this.node.update();
@ -112,7 +125,9 @@ public abstract class PartMechanical extends JCuboidPart implements JNormalOcclu
public INode getNode(Class<? extends INode> nodeType, ForgeDirection from)
{
if (nodeType.isAssignableFrom(node.getClass()))
{
return node;
}
return null;
}

View file

@ -37,13 +37,11 @@ public class GearNode extends MechanicalNode
angularVelocity = 0;
}
else
{
if (gear().tier == 10)
{
torque = 100;
angularVelocity = 100;
}
}
if (gear().tier == 10)
{
torque = 100;
angularVelocity = 100;
}
}
@Override