working on start pump more

Doesn't work well or at all currently
This commit is contained in:
DarkGuardsman 2013-07-29 00:52:21 -04:00
parent 604703ab28
commit 4da59e8d3a
3 changed files with 46 additions and 119 deletions

View file

@ -119,17 +119,14 @@ public class FluidMech extends ModPrefab
proxy.Init();
/* TILE ENTITY REGISTER CALLS */
GameRegistry.registerTileEntity(TileEntityPipe.class, "lmPipeTile");
GameRegistry.registerTileEntity(TileEntityGenericPipe.class, "lmGenPipeTile");
GameRegistry.registerTileEntity(TileEntityStarterPump.class, "lmPumpTile");
//GameRegistry.registerTileEntity(TileEntityRod.class, "lmRodTile");
GameRegistry.registerTileEntity(TileEntityReleaseValve.class, "lmReleaseValve");
GameRegistry.registerTileEntity(TileEntityTank.class, "lmTank");
//GameRegistry.registerTileEntity(TileEntityGenerator.class, "lmGen");
GameRegistry.registerTileEntity(TileEntitySink.class, "lmSink");
GameRegistry.registerTileEntity(TileEntityDrain.class, "lmDrain");
GameRegistry.registerTileEntity(TileEntityConstructionPump.class, "lmConPump");
GameRegistry.registerTileEntity(TileEntityPipeWindow.class, "lmPipeWindow");
GameRegistry.registerTileEntity(TileEntityPipe.class, "FluidPipe");
GameRegistry.registerTileEntity(TileEntityGenericPipe.class, "ColoredPipe");
GameRegistry.registerTileEntity(TileEntityStarterPump.class, "starterPump");
GameRegistry.registerTileEntity(TileEntityReleaseValve.class, "ReleaseValve");
GameRegistry.registerTileEntity(TileEntityTank.class, "FluidTank");
GameRegistry.registerTileEntity(TileEntitySink.class, "FluidSink");
GameRegistry.registerTileEntity(TileEntityDrain.class, "FluidDrain");
GameRegistry.registerTileEntity(TileEntityConstructionPump.class, "ConstructionPump");
/* LANG LOADING */
FMLog.info(" Loaded: " + TranslationHelper.loadLanguages(LANGUAGE_PATH, LANGUAGES_SUPPORTED) + " Languages.");

View file

@ -21,7 +21,7 @@ public class BlockPumpMachine extends BlockFM
public BlockPumpMachine(int id)
{
super("FluidMachine", id, Material.iron);
super("StarterPump", id, Material.iron);
this.setHardness(1f);
this.setResistance(5f);
}
@ -46,13 +46,9 @@ public class BlockPumpMachine extends BlockFM
@Override
public int damageDropped(int meta)
{
if (meta < 4)
{
return 0;
}
return meta;
}
@Override
public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z)
@ -62,56 +58,17 @@ public class BlockPumpMachine extends BlockFM
if (meta < 4)
{
new ItemStack(FluidMech.recipeLoader.blockMachine, 1, 0);
return new ItemStack(FluidMech.recipeLoader.blockMachine, 1, 0);
}
return null;
}
@Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase p, ItemStack itemStack)
{
int meta = world.getBlockMetadata(x, y, z);
int angle = MathHelper.floor_double((p.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
TileEntity ent = world.getBlockTileEntity(x, y, z);
world.setBlockMetadataWithNotify(x, y, z, angle + MetaGroup.getGroupStartMeta(MetaGroup.getGrouping(meta)), 3);
world.notifyBlocksOfNeighborChange(x, y, z, this.blockID);
if (p instanceof EntityPlayer)
{
// ((EntityPlayer) p).sendChatToPlayer("meta:" +
// world.getBlockMetadata(x, y, z));
}
}
@Override
public TileEntity createNewTileEntity(World world)
{
// TODO Auto-generated method stub
return null;
}
@Override
public TileEntity createTileEntity(World var1, int meta)
{
if (meta >= 12)
{
}
else if (meta >= 8)
{
}
else if (meta >= 4)
{
}
else
{
return new TileEntityStarterPump();
}
return null;
}
@Override
public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List)
@ -119,26 +76,4 @@ public class BlockPumpMachine extends BlockFM
par3List.add(new ItemStack(par1, 1, 0));
}
public boolean onUseWrench(World par1World, int x, int y, int z, EntityPlayer par5EntityPlayer, int side, float hitX, float hitY, float hitZ)
{
int meta = par1World.getBlockMetadata(x, y, z);
int g = MetaGroup.getGrouping(meta);
TileEntity ent = par1World.getBlockTileEntity(x, y, z);
int angle = MathHelper.floor_double((par5EntityPlayer.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
if (meta == (g * 4) + 3)
{
par1World.setBlockMetadataWithNotify(x, y, z, (g * 4), 3);
}
else
{
par1World.setBlockMetadataWithNotify(x, y, z, meta + 1, 3);
}
if (ent instanceof TileEntityStarterPump)
{
((TileEntityStarterPump) ent).getConnections();
}
return true;
}
}

View file

@ -33,18 +33,16 @@ import dark.core.helpers.MetaGroup;
import dark.core.helpers.Pair;
import dark.fluid.common.FluidMech;
public class TileEntityStarterPump extends TileEntityMachine implements IPacketReceiver, IToolReadOut, ITileConnector
public class TileEntityStarterPump extends TileEntityMachine implements IToolReadOut, ITileConnector
{
public final static float WATTS_PER_TICK = 20;
private int currentWorldEdits = 0;
private static final int MAX_WORLD_EDITS_PER_PROCESS = 30;
private static final int MAX_WORLD_EDITS_PER_PROCESS = 5;
private List<Vector3> updateQue = new ArrayList<Vector3>();
private LiquidPathFinder pathLiquid;
public int pos = 0;
public boolean running = false;
@Override
public void initiate()
@ -66,16 +64,17 @@ public class TileEntityStarterPump extends TileEntityMachine implements IPacketR
{
super.updateEntity();
if (!this.worldObj.isRemote && !this.isDisabled() && this.ticks % 20 == 0 && !worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, yCoord))
if (!this.worldObj.isRemote && !this.isDisabled() && this.ticks % 20 == 0)
{
this.currentWorldEdits = 0;
if (this.canRun())
{
if (this.getLiquidFinder().results.size() < TileEntityDrain.MAX_WORLD_EDITS_PER_PROCESS + 10)
{
this.getLiquidFinder().start(new Vector3(this).modifyPositionFromSide(ForgeDirection.DOWN), false);
}
boolean prevRun = this.running;
if (this.canRun())
{
this.running = true;
if (this.getLiquidFinder().results.size() > 0)
{
System.out.println("StartPump>>DrainArea>>Targets>" + this.getLiquidFinder().results.size());
@ -84,19 +83,22 @@ public class TileEntityStarterPump extends TileEntityMachine implements IPacketR
while (fluidList.hasNext())
{
System.out.println("StartPump>>DrainArea>>Draining>>NextFluidBlock");
Vector3 drainLocation = fluidList.next();
FluidStack drainStack = FluidHelper.drainBlock(this.worldObj, drainLocation, false);
System.out.println("StartPump>>DrainArea>>Draining>>NextFluidBlock>" + (drainStack == null ? "Null" : drainStack.amount + "mb of " + drainStack.getFluid().getName()));
if (this.currentWorldEdits >= MAX_WORLD_EDITS_PER_PROCESS)
{
break;
}
if (drainStack != null && FluidHelper.fillTanksAllSides(worldObj, new Vector3(this), drainStack, false, ForgeDirection.DOWN) >= drainStack.amount)
int fillV = FluidHelper.fillTanksAllSides(worldObj, new Vector3(this), drainStack, false, ForgeDirection.DOWN);
System.out.println("StartPump>>DrainArea>>Draining>>NextFluidBlock>Filled>" + fillV + "mb");
if (drainStack != null && fillV >= drainStack.amount)
{
System.out.println("StartPump>>DrainArea>>Draining>>Fluid>" + drainLocation.toString());
/* REMOVE BLOCK */
FluidHelper.drainBlock(this.worldObj, drainLocation, true);
FluidHelper.fillTanksAllSides(worldObj, new Vector3(this), drainStack, true, ForgeDirection.DOWN);
this.currentWorldEdits++;
fluidList.remove();
/* ADD TO UPDATE QUE */
@ -108,39 +110,32 @@ public class TileEntityStarterPump extends TileEntityMachine implements IPacketR
}
}
}
else
if (this.updateQue.size() > 0)
{
this.running = false;
for (Vector3 vec : this.updateQue)
{
this.worldObj.markBlockForUpdate(vec.intX(), vec.intY(), vec.intZ());
for (ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS)
{
Vector3 veb = vec.clone().modifyPositionFromSide(direction);
if (!updateQue.contains(veb))
{
updateQue.add(veb);
this.worldObj.markBlockForUpdate(veb.intX(), veb.intY(), veb.intZ());
}
if (running != prevRun)
{
worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
}
}
this.updateQue.clear();
}
}
}
@Override
public Packet getDescriptionPacket()
public boolean canRun()
{
return PacketManager.getPacket(FluidMech.CHANNEL, this, this.running);
}
@Override
public void handlePacketData(INetworkManager network, int packetType, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput data)
{
try
{
if (worldObj.isRemote)
{
this.running = data.readBoolean();
}
}
catch (Exception e)
{
e.printStackTrace();
}
return super.canRun() && !worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord);
}
@Override
@ -152,7 +147,7 @@ public class TileEntityStarterPump extends TileEntityMachine implements IPacketR
@Override
public String getMeterReading(EntityPlayer user, ForgeDirection side, EnumTools tool)
{
return String.format("%.2f/%.2fWatts %f SourceBlocks", this.getEnergyStored(), this.getMaxEnergyStored(), this.getLiquidFinder().results.size());
return String.format("%.2f/%.2fWatts %d SourceBlocks", this.getEnergyStored(), this.getMaxEnergyStored(), this.getLiquidFinder().results.size());
}
@Override