added variable timeout for schematic, down to 1. close #1971
This commit is contained in:
parent
2c5c282f2f
commit
1ec9d92699
11 changed files with 51 additions and 15 deletions
|
@ -275,4 +275,12 @@ public abstract class Schematic {
|
||||||
public void readFromNBT(NBTTagCompound nbt, MappingRegistry registry) {
|
public void readFromNBT(NBTTagCompound nbt, MappingRegistry registry) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the number of cycles to wait after building this schematic. Tiles
|
||||||
|
* and entities typically require more wait, around 5 cycles.
|
||||||
|
*/
|
||||||
|
public int buildTime() {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -214,4 +214,8 @@ public class SchematicEntity extends Schematic {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int buildTime() {
|
||||||
|
return 5;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -112,4 +112,9 @@ public class SchematicTile extends SchematicBlock {
|
||||||
|
|
||||||
tileNBT = nbt.getCompoundTag("blockCpt");
|
tileNBT = nbt.getCompoundTag("blockCpt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int buildTime() {
|
||||||
|
return 5;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,6 @@ import net.minecraft.nbt.NBTTagCompound;
|
||||||
import buildcraft.api.blueprints.ITileBuilder;
|
import buildcraft.api.blueprints.ITileBuilder;
|
||||||
import buildcraft.api.blueprints.SchematicRegistry;
|
import buildcraft.api.blueprints.SchematicRegistry;
|
||||||
import buildcraft.api.core.NetworkData;
|
import buildcraft.api.core.NetworkData;
|
||||||
import buildcraft.api.core.SafeTimeTracker;
|
|
||||||
import buildcraft.core.IBoxProvider;
|
import buildcraft.core.IBoxProvider;
|
||||||
import buildcraft.core.LaserData;
|
import buildcraft.core.LaserData;
|
||||||
import buildcraft.core.RFBattery;
|
import buildcraft.core.RFBattery;
|
||||||
|
@ -42,8 +41,6 @@ public abstract class TileAbstractBuilder extends TileBuildCraft implements ITil
|
||||||
|
|
||||||
public ArrayList<BuildingItem> buildersInAction = new ArrayList<BuildingItem>();
|
public ArrayList<BuildingItem> buildersInAction = new ArrayList<BuildingItem>();
|
||||||
|
|
||||||
protected SafeTimeTracker buildTracker = new SafeTimeTracker(5);
|
|
||||||
|
|
||||||
private int rfPrev = 0;
|
private int rfPrev = 0;
|
||||||
private int rfUnchangedCycles = 0;
|
private int rfUnchangedCycles = 0;
|
||||||
|
|
||||||
|
|
|
@ -695,14 +695,10 @@ public class TileBuilder extends TileAbstractBuilder implements IMachine, IFluid
|
||||||
}
|
}
|
||||||
|
|
||||||
public void build () {
|
public void build () {
|
||||||
if (!buildTracker.markTimeIfDelay(worldObj)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (currentBuilder != null) {
|
if (currentBuilder != null) {
|
||||||
currentBuilder.buildNextSlot(worldObj, this, xCoord, yCoord, zCoord);
|
if (currentBuilder.buildNextSlot(worldObj, this, xCoord, yCoord, zCoord)) {
|
||||||
|
updateRequirements();
|
||||||
updateRequirements();
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -112,7 +112,7 @@ public class TileFiller extends TileAbstractBuilder implements IMachine, IAction
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getBattery().getEnergyStored() < POWER_ACTIVATION || !buildTracker.markTimeIfDelay(worldObj)) {
|
if (getBattery().getEnergyStored() < POWER_ACTIVATION) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -46,6 +46,8 @@ public abstract class BptBuilderBase implements IAreaProvider {
|
||||||
protected int x, y, z;
|
protected int x, y, z;
|
||||||
protected boolean initialized = false;
|
protected boolean initialized = false;
|
||||||
|
|
||||||
|
private long nextBuildDate = 0;
|
||||||
|
|
||||||
public BptBuilderBase(BlueprintBase bluePrint, World world, int x, int y, int z) {
|
public BptBuilderBase(BlueprintBase bluePrint, World world, int x, int y, int z) {
|
||||||
this.blueprint = bluePrint;
|
this.blueprint = bluePrint;
|
||||||
this.x = x;
|
this.x = x;
|
||||||
|
@ -71,13 +73,23 @@ public abstract class BptBuilderBase implements IAreaProvider {
|
||||||
initialized = true;
|
initialized = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (world.getTotalWorldTime() < nextBuildDate) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
BuildingSlot slot = getNextBlock(world, builder);
|
BuildingSlot slot = getNextBlock(world, builder);
|
||||||
|
|
||||||
return buildSlot(world, builder, slot, x + 0.5F, y + 0.5F, z + 0.5F);
|
if (buildSlot(world, builder, slot, x + 0.5F, y + 0.5F, z + 0.5F)) {
|
||||||
|
nextBuildDate = world.getTotalWorldTime() + slot.buildTime();
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean buildSlot(World world, IBuildingItemsProvider builder, BuildingSlot slot, double x, double y,
|
public boolean buildSlot(World world, IBuildingItemsProvider builder, BuildingSlot slot, double x, double y,
|
||||||
double z) {
|
double z) {
|
||||||
|
|
||||||
if (!initialized) {
|
if (!initialized) {
|
||||||
initialize();
|
initialize();
|
||||||
initialized = true;
|
initialized = true;
|
||||||
|
|
|
@ -67,4 +67,6 @@ public abstract class BuildingSlot {
|
||||||
|
|
||||||
public abstract int getEnergyRequirement();
|
public abstract int getEnergyRequirement();
|
||||||
|
|
||||||
|
public abstract int buildTime();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -176,4 +176,13 @@ public class BuildingSlotBlock extends BuildingSlot {
|
||||||
return schematic.getEnergyRequirement(stackConsumed);
|
return schematic.getEnergyRequirement(stackConsumed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int buildTime() {
|
||||||
|
if (schematic == null) {
|
||||||
|
return 1;
|
||||||
|
} else {
|
||||||
|
return schematic.buildTime();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,4 +85,9 @@ public class BuildingSlotEntity extends BuildingSlot {
|
||||||
public int getEnergyRequirement() {
|
public int getEnergyRequirement() {
|
||||||
return schematic.getEnergyRequirement(stackConsumed);
|
return schematic.getEnergyRequirement(stackConsumed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int buildTime() {
|
||||||
|
return schematic.buildTime();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -167,9 +167,7 @@ public class TileQuarry extends TileAbstractBuilder implements IMachine {
|
||||||
|
|
||||||
if (stage == Stage.BUILDING) {
|
if (stage == Stage.BUILDING) {
|
||||||
if (builder != null && !builder.isDone(this)) {
|
if (builder != null && !builder.isDone(this)) {
|
||||||
if (buildTracker.markTimeIfDelay(worldObj)) {
|
builder.buildNextSlot(worldObj, this, xCoord, yCoord, zCoord);
|
||||||
builder.buildNextSlot(worldObj, this, xCoord, yCoord, zCoord);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
stage = Stage.IDLE;
|
stage = Stage.IDLE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue