fixed detection of finished build process
This commit is contained in:
parent
f6e0d3a337
commit
d00dcf0314
5 changed files with 53 additions and 7 deletions
|
@ -16,9 +16,10 @@ import buildcraft.BuildCraftBuilders;
|
|||
import buildcraft.api.blueprints.IBuilderContext;
|
||||
import buildcraft.api.core.Position;
|
||||
import buildcraft.core.blueprints.BuildingSlot;
|
||||
import buildcraft.core.blueprints.IBuilder;
|
||||
import buildcraft.core.network.NetworkData;
|
||||
|
||||
public class BuildingItem {
|
||||
public class BuildingItem implements IBuilder {
|
||||
@NetworkData
|
||||
public Position origin, destination;
|
||||
|
||||
|
@ -143,4 +144,9 @@ public class BuildingItem {
|
|||
|
||||
return stacksToDisplay;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDone() {
|
||||
return isDone;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -325,7 +325,7 @@ public class TileBuilder extends TileBuildCraft implements IBuilderInventory, IM
|
|||
return;
|
||||
}
|
||||
|
||||
if (bluePrintBuilder == null || bluePrintBuilder.done) {
|
||||
if (bluePrintBuilder == null || bluePrintBuilder.isDone()) {
|
||||
if (path != null && path.size() > 1) {
|
||||
if (currentPathIterator == null) {
|
||||
Iterator<BlockIndex> it = path.iterator();
|
||||
|
@ -357,7 +357,7 @@ public class TileBuilder extends TileBuildCraft implements IBuilderInventory, IM
|
|||
done = true;
|
||||
}
|
||||
} else {
|
||||
if (bluePrintBuilder != null && bluePrintBuilder.done) {
|
||||
if (bluePrintBuilder != null && bluePrintBuilder.isDone()) {
|
||||
if (builderRobot != null) {
|
||||
//builderRobot.markEndOfBlueprint(bluePrintBuilder);
|
||||
}
|
||||
|
@ -543,7 +543,11 @@ public class TileBuilder extends TileBuildCraft implements IBuilderInventory, IM
|
|||
return;
|
||||
}
|
||||
|
||||
if ((bluePrintBuilder == null || bluePrintBuilder.done)
|
||||
if (bluePrintBuilder != null) {
|
||||
bluePrintBuilder.removeDoneBuilders();
|
||||
}
|
||||
|
||||
if ((bluePrintBuilder == null || bluePrintBuilder.isDone())
|
||||
&& box.isInitialized()
|
||||
//&& (builderRobot == null || builderRobot.done())
|
||||
) {
|
||||
|
@ -696,9 +700,10 @@ public class TileBuilder extends TileBuildCraft implements IBuilderInventory, IM
|
|||
i.stacksToBuild = slot.getRequirements(bluePrintBuilder.getContext());
|
||||
buildingItems.add(i);
|
||||
RPCHandler.rpcBroadcastPlayers(this, "launchItem", i);
|
||||
bluePrintBuilder.registerBuilder(i);
|
||||
}
|
||||
|
||||
if (slot == null || bluePrintBuilder.done) {
|
||||
if (bluePrintBuilder.isDone()) {
|
||||
// TODO: find a way to confirm that all agents are done before
|
||||
// calling post processing.
|
||||
bluePrintBuilder.postProcessing(worldObj);
|
||||
|
|
|
@ -124,7 +124,7 @@ public class TileFiller extends TileBuildCraft implements IBuilderInventory, IMa
|
|||
s.writeToWorld(context);
|
||||
}
|
||||
|
||||
if (!done && s == null || currentTemplate.done) {
|
||||
if (!done && s == null || currentTemplate.isDone()) {
|
||||
done = true;
|
||||
sendNetworkUpdate();
|
||||
}
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
*/
|
||||
package buildcraft.core.blueprints;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.world.World;
|
||||
import buildcraft.api.core.IAreaProvider;
|
||||
|
@ -18,9 +20,11 @@ public abstract class BptBuilderBase implements IAreaProvider {
|
|||
|
||||
public BlueprintBase blueprint;
|
||||
int x, y, z;
|
||||
public boolean done;
|
||||
protected boolean done;
|
||||
public BptContext context;
|
||||
|
||||
private ArrayList <IBuilder> buildersInAction = new ArrayList<IBuilder>();
|
||||
|
||||
public BptBuilderBase(BlueprintBase bluePrint, World world, int x, int y, int z) {
|
||||
this.blueprint = bluePrint;
|
||||
this.x = x;
|
||||
|
@ -82,4 +86,20 @@ public abstract class BptBuilderBase implements IAreaProvider {
|
|||
public BptContext getContext() {
|
||||
return context;
|
||||
}
|
||||
|
||||
public void registerBuilder (IBuilder builder) {
|
||||
buildersInAction.add(builder);
|
||||
}
|
||||
|
||||
public void removeDoneBuilders () {
|
||||
for (int i = buildersInAction.size() - 1; i >= 0; --i) {
|
||||
if (buildersInAction.get(i).isDone()) {
|
||||
buildersInAction.remove(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isDone () {
|
||||
return done && buildersInAction.size() == 0;
|
||||
}
|
||||
}
|
||||
|
|
15
common/buildcraft/core/blueprints/IBuilder.java
Executable file
15
common/buildcraft/core/blueprints/IBuilder.java
Executable file
|
@ -0,0 +1,15 @@
|
|||
/**
|
||||
* Copyright (c) 2011-2014, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
*
|
||||
* BuildCraft is distributed under the terms of the Minecraft Mod Public
|
||||
* License 1.0, or MMPL. Please check the contents of the license located in
|
||||
* http://www.mod-buildcraft.com/MMPL-1.0.txt
|
||||
*/
|
||||
package buildcraft.core.blueprints;
|
||||
|
||||
public interface IBuilder {
|
||||
|
||||
public boolean isDone ();
|
||||
|
||||
}
|
Loading…
Reference in a new issue