Improved grinder direction
This commit is contained in:
parent
a7f19b20a2
commit
be722cc586
5 changed files with 18 additions and 49 deletions
|
@ -35,7 +35,7 @@ public class TileGenerator extends TileElectrical implements IMechanical, IRotat
|
|||
|
||||
public float toggleRatio()
|
||||
{
|
||||
return torqueRatio = (torqueRatio + 1000) % energy.getMaxExtract();
|
||||
return torqueRatio = (torqueRatio + 1000) % energy.getMaxExtract() + 1000;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -85,7 +85,7 @@ public class TileGenerator extends TileElectrical implements IMechanical, IRotat
|
|||
{
|
||||
EnumSet<ForgeDirection> dirs = EnumSet.allOf(ForgeDirection.class);
|
||||
dirs.remove(this.getDirection());
|
||||
dirs.remove(this.getDirection().ordinal());
|
||||
dirs.remove(this.getDirection().getOpposite());
|
||||
return dirs;
|
||||
}
|
||||
|
||||
|
|
|
@ -226,7 +226,7 @@ public class TileConveyorBelt extends TileMechanical implements IBelt, IRotatabl
|
|||
for (int i = 2; i < 6; i++)
|
||||
{
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(i);
|
||||
Vector3 pos = new Vector3(this).modifyPositionFromSide(dir);
|
||||
Vector3 pos = new Vector3(this).translate(dir);
|
||||
TileEntity tile = pos.getTileEntity(this.worldObj);
|
||||
|
||||
if (dir == this.getDirection() || dir == this.getDirection().getOpposite())
|
||||
|
@ -265,8 +265,13 @@ public class TileConveyorBelt extends TileMechanical implements IBelt, IRotatabl
|
|||
}
|
||||
else if (tile instanceof IMechanical)
|
||||
{
|
||||
// TODO: Fix split connection in network.
|
||||
// connections[dir.ordinal()] = tile;
|
||||
IMechanical mechanical = (IMechanical) ((IMechanical) tile).getInstance(dir.getOpposite());
|
||||
|
||||
if (mechanical != null)
|
||||
{
|
||||
connections[dir.ordinal()] = mechanical;
|
||||
getNetwork().merge(mechanical.getNetwork());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -75,7 +75,7 @@ public class MechanicalNetwork extends Network<IMechanicalNetwork, IMechanical>
|
|||
* Calculation rotations of all generators.
|
||||
*/
|
||||
if (!(prevGenerators.equals(generators)) && generators.size() > 0)
|
||||
{System.out.println("UPDA PATH");
|
||||
{
|
||||
Set<IMechanical> closedSet = new LinkedHashSet<IMechanical>();
|
||||
|
||||
for (IMechanical generatorNode : generators)
|
||||
|
@ -90,9 +90,10 @@ public class MechanicalNetwork extends Network<IMechanicalNetwork, IMechanical>
|
|||
}
|
||||
|
||||
prevGenerators = new LinkedHashSet<>(generators);
|
||||
generators.clear();
|
||||
}
|
||||
|
||||
generators.clear();
|
||||
|
||||
/**
|
||||
* Calculate load
|
||||
*/
|
||||
|
|
|
@ -33,43 +33,6 @@ public class BlockGrinderWheel extends BlockRIRotatable implements ITileEntityPr
|
|||
return RIBlockRenderingHandler.ID;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockAdded(World world, int x, int y, int z)
|
||||
{
|
||||
this.checkConflicts(world, x, y, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNeighborBlockChange(World world, int x, int y, int z, int par5)
|
||||
{
|
||||
this.checkConflicts(world, x, y, z);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks for any conflicting directions with other grinders.
|
||||
*/
|
||||
private void checkConflicts(World world, int x, int y, int z)
|
||||
{
|
||||
ForgeDirection facing = this.getDirection(world, x, y, z);
|
||||
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
|
||||
{
|
||||
if (dir == facing || dir == facing.getOpposite())
|
||||
{
|
||||
VectorWorld checkPos = (VectorWorld) new VectorWorld(world, x, y, z).modifyPositionFromSide(dir);
|
||||
TileEntity tileEntity = checkPos.getTileEntity();
|
||||
|
||||
if (tileEntity instanceof TileGrinderWheel)
|
||||
{
|
||||
if (this.getDirection(world, checkPos.intX(), checkPos.intY(), checkPos.intZ()) == facing)
|
||||
{
|
||||
this.dropBlockAsItem(world, x, y, z, 0, 0);
|
||||
world.setBlockToAir(x, y, z);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity)
|
||||
{
|
||||
|
@ -111,10 +74,10 @@ public class BlockGrinderWheel extends BlockRIRotatable implements ITileEntityPr
|
|||
{
|
||||
// Move entity based on the direction of the block.
|
||||
ForgeDirection dir = this.getDirection(world, x, y, z);
|
||||
entity.motionX += dir.offsetX * tile.getNetwork().getAngularVelocity() / 20;
|
||||
entity.motionZ += dir.offsetZ * tile.getNetwork().getAngularVelocity() / 20;
|
||||
entity.motionY += Math.random() * tile.getNetwork().getAngularVelocity() / 20;
|
||||
entity.isAirBorne = true;
|
||||
dir = ForgeDirection.getOrientation(!(dir.ordinal() % 2 == 0) ? dir.ordinal() - 1 : dir.ordinal());
|
||||
int inversion = tile.isClockwise() ? -1 : 1;
|
||||
float speed = tile.getNetwork().getAngularVelocity() / 20;
|
||||
entity.addVelocity(inversion * dir.offsetX * speed, inversion * dir.offsetZ * speed, Math.random() * speed);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -136,7 +136,7 @@ public class TileGrinderWheel extends TileMechanical implements IRotatable
|
|||
{
|
||||
if (!this.worldObj.isRemote)
|
||||
{
|
||||
EntityItem entityItem = new EntityItem(this.worldObj, entity.posX, entity.posY, entity.posZ, ((ItemStackResource) resource).itemStack.copy());
|
||||
EntityItem entityItem = new EntityItem(this.worldObj, entity.posX, entity.posY - 1.2, entity.posZ, ((ItemStackResource) resource).itemStack.copy());
|
||||
entityItem.delayBeforeCanPickup = 20;
|
||||
entityItem.motionX = 0;
|
||||
entityItem.motionY = 0;
|
||||
|
|
Loading…
Add table
Reference in a new issue