add early draft of Tiles API, remove IMachine
This commit is contained in:
parent
8b57b75edc
commit
9c31b0123b
23 changed files with 148 additions and 251 deletions
11
api/buildcraft/api/tiles/IControllable.java
Normal file
11
api/buildcraft/api/tiles/IControllable.java
Normal file
|
@ -0,0 +1,11 @@
|
|||
package buildcraft.api.tiles;
|
||||
|
||||
public interface IControllable {
|
||||
public enum Mode {
|
||||
Unknown, On, Off, Loop
|
||||
};
|
||||
|
||||
Mode getControlMode();
|
||||
void setControlMode(Mode mode);
|
||||
boolean acceptsControlMode(Mode mode);
|
||||
}
|
|
@ -71,6 +71,7 @@ import buildcraft.api.statements.ITriggerExternal;
|
|||
import buildcraft.api.statements.ITriggerInternal;
|
||||
import buildcraft.api.statements.StatementManager;
|
||||
import buildcraft.api.statements.StatementParameterItemStack;
|
||||
import buildcraft.api.tiles.IControllable;
|
||||
import buildcraft.core.BlockSpring;
|
||||
import buildcraft.core.BuildCraftConfiguration;
|
||||
import buildcraft.core.CommandBuildCraft;
|
||||
|
@ -99,7 +100,6 @@ import buildcraft.core.recipes.RefineryRecipeManager;
|
|||
import buildcraft.core.render.BlockHighlightHandler;
|
||||
import buildcraft.core.robots.EntityRobot;
|
||||
import buildcraft.core.statements.ActionMachineControl;
|
||||
import buildcraft.core.statements.ActionMachineControl.Mode;
|
||||
import buildcraft.core.statements.ActionRedstoneOutput;
|
||||
import buildcraft.core.statements.DefaultActionProvider;
|
||||
import buildcraft.core.statements.DefaultTriggerProvider;
|
||||
|
@ -196,10 +196,8 @@ public class BuildCraftCore extends BuildCraftMod {
|
|||
public static ITriggerExternal triggerFluidContainerBelow50 = new TriggerFluidContainerLevel(TriggerFluidContainerLevel.TriggerType.BELOW_50);
|
||||
public static ITriggerExternal triggerFluidContainerBelow75 = new TriggerFluidContainerLevel(TriggerFluidContainerLevel.TriggerType.BELOW_75);
|
||||
public static IActionInternal actionRedstone = new ActionRedstoneOutput();
|
||||
public static IActionExternal actionOn = new ActionMachineControl(Mode.On);
|
||||
public static IActionExternal actionOff = new ActionMachineControl(Mode.Off);
|
||||
public static IActionExternal actionLoop = new ActionMachineControl(Mode.Loop);
|
||||
|
||||
public static IActionExternal[] actionControl;
|
||||
|
||||
public static boolean loadDefaultRecipes = true;
|
||||
public static boolean consumeWaterSources = false;
|
||||
|
||||
|
@ -415,6 +413,13 @@ public class BuildCraftCore extends BuildCraftMod {
|
|||
BuildCraftAPI.isFluidSource = new WorldPropertyIsFluidSource();
|
||||
|
||||
ColorUtils.initialize();
|
||||
|
||||
actionControl = new IActionExternal[IControllable.Mode.values().length];
|
||||
for (IControllable.Mode mode : IControllable.Mode.values()) {
|
||||
if (mode != IControllable.Mode.Unknown) {
|
||||
actionControl[mode.ordinal()] = new ActionMachineControl(mode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Mod.EventHandler
|
||||
|
|
|
@ -74,7 +74,7 @@ public class BlockFiller extends BlockBuildCraft {
|
|||
if (tile != null && tile instanceof TileFiller) {
|
||||
TileFiller filler = (TileFiller) tile;
|
||||
if (side == 1 || side == 0) {
|
||||
if (!filler.isActive()) {
|
||||
if (!filler.hasWork()) {
|
||||
return textureTopOff;
|
||||
} else {
|
||||
return textureTopOn;
|
||||
|
|
|
@ -36,9 +36,9 @@ import buildcraft.api.robots.EntityRobotBase;
|
|||
import buildcraft.api.robots.IRequestProvider;
|
||||
import buildcraft.api.robots.StackRequest;
|
||||
import buildcraft.api.statements.IStatement;
|
||||
import buildcraft.api.tiles.IHasWork;
|
||||
import buildcraft.core.Box;
|
||||
import buildcraft.core.Box.Kind;
|
||||
import buildcraft.core.IMachine;
|
||||
import buildcraft.core.LaserData;
|
||||
import buildcraft.core.blueprints.Blueprint;
|
||||
import buildcraft.core.blueprints.BlueprintBase;
|
||||
|
@ -62,7 +62,7 @@ import buildcraft.core.network.RPCSide;
|
|||
import buildcraft.core.robots.ResourceIdRequest;
|
||||
import buildcraft.core.robots.RobotRegistry;
|
||||
|
||||
public class TileBuilder extends TileAbstractBuilder implements IMachine, IFluidHandler, IRequestProvider {
|
||||
public class TileBuilder extends TileAbstractBuilder implements IHasWork, IFluidHandler, IRequestProvider {
|
||||
|
||||
private static int POWER_ACTIVATION = 500;
|
||||
|
||||
|
@ -603,20 +603,10 @@ public class TileBuilder extends TileAbstractBuilder implements IMachine, IFluid
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean isActive() {
|
||||
public boolean hasWork() {
|
||||
return !done;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean manageFluids() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean manageSolids() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean isBuildingBlueprint() {
|
||||
return getStackInSlot(0) != null && getStackInSlot(0).getItem() instanceof ItemBlueprint;
|
||||
}
|
||||
|
@ -657,11 +647,6 @@ public class TileBuilder extends TileAbstractBuilder implements IMachine, IFluid
|
|||
return i != 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean allowAction(IStatement action) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasCustomInventoryName() {
|
||||
return false;
|
||||
|
|
|
@ -21,10 +21,11 @@ import buildcraft.api.filler.FillerManager;
|
|||
import buildcraft.api.statements.IActionReceptor;
|
||||
import buildcraft.api.statements.IStatement;
|
||||
import buildcraft.api.statements.IStatementParameter;
|
||||
import buildcraft.api.tiles.IControllable;
|
||||
import buildcraft.api.tiles.IHasWork;
|
||||
import buildcraft.builders.statements.ActionFiller;
|
||||
import buildcraft.core.Box;
|
||||
import buildcraft.core.Box.Kind;
|
||||
import buildcraft.core.IMachine;
|
||||
import buildcraft.core.blueprints.BptBuilderTemplate;
|
||||
import buildcraft.core.blueprints.BptContext;
|
||||
import buildcraft.core.builders.TileAbstractBuilder;
|
||||
|
@ -36,11 +37,9 @@ import buildcraft.core.network.PacketUpdate;
|
|||
import buildcraft.core.network.RPC;
|
||||
import buildcraft.core.network.RPCHandler;
|
||||
import buildcraft.core.network.RPCSide;
|
||||
import buildcraft.core.statements.ActionMachineControl;
|
||||
import buildcraft.core.statements.ActionMachineControl.Mode;
|
||||
import buildcraft.core.utils.Utils;
|
||||
|
||||
public class TileFiller extends TileAbstractBuilder implements IMachine, IActionReceptor {
|
||||
public class TileFiller extends TileAbstractBuilder implements IHasWork, IControllable {
|
||||
|
||||
private static int POWER_ACTIVATION = 500;
|
||||
|
||||
|
@ -51,7 +50,7 @@ public class TileFiller extends TileAbstractBuilder implements IMachine, IAction
|
|||
|
||||
private final Box box = new Box();
|
||||
private boolean done = false;
|
||||
private ActionMachineControl.Mode lastMode = ActionMachineControl.Mode.Unknown;
|
||||
private IControllable.Mode lastMode = IControllable.Mode.Unknown;
|
||||
private SimpleInventory inv = new SimpleInventory(27, "Filler", 64);
|
||||
|
||||
private NBTTagCompound initNBT = null;
|
||||
|
@ -291,20 +290,10 @@ public class TileFiller extends TileAbstractBuilder implements IMachine, IAction
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean isActive() {
|
||||
public boolean hasWork() {
|
||||
return !done && lastMode != Mode.Off;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean manageFluids() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean manageSolids() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void openInventory() {
|
||||
}
|
||||
|
@ -313,25 +302,6 @@ public class TileFiller extends TileAbstractBuilder implements IMachine, IAction
|
|||
public void closeInventory() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionActivated(IStatement action, IStatementParameter[] parameters) {
|
||||
if (action == BuildCraftCore.actionOn) {
|
||||
lastMode = ActionMachineControl.Mode.On;
|
||||
} else if (action == BuildCraftCore.actionOff) {
|
||||
lastMode = ActionMachineControl.Mode.Off;
|
||||
} else if (action == BuildCraftCore.actionLoop) {
|
||||
lastMode = ActionMachineControl.Mode.Loop;
|
||||
} else if (action instanceof ActionFiller) {
|
||||
ActionFiller actFill = (ActionFiller) action;
|
||||
setPattern(actFill.pattern);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean allowAction(IStatement action) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isItemValidForSlot(int slot, ItemStack stack) {
|
||||
return true;
|
||||
|
@ -366,4 +336,21 @@ public class TileFiller extends TileAbstractBuilder implements IMachine, IAction
|
|||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Mode getControlMode() {
|
||||
return this.lastMode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setControlMode(Mode mode) {
|
||||
this.lastMode = mode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean acceptsControlMode(Mode mode) {
|
||||
return mode == IControllable.Mode.On ||
|
||||
mode == IControllable.Mode.Off ||
|
||||
mode == IControllable.Mode.Loop;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -14,6 +14,7 @@ import net.minecraftforge.common.util.ForgeDirection;
|
|||
import buildcraft.api.statements.IActionExternal;
|
||||
import buildcraft.api.statements.IStatementContainer;
|
||||
import buildcraft.api.statements.IStatementParameter;
|
||||
import buildcraft.builders.TileFiller;
|
||||
import buildcraft.core.builders.patterns.FillerPattern;
|
||||
import buildcraft.core.statements.BCStatement;
|
||||
|
||||
|
@ -39,6 +40,8 @@ public class ActionFiller extends BCStatement implements IActionExternal {
|
|||
@Override
|
||||
public void actionActivate(TileEntity target, ForgeDirection side,
|
||||
IStatementContainer source, IStatementParameter[] parameters) {
|
||||
|
||||
if (target instanceof TileFiller) {
|
||||
((TileFiller) target).setPattern(pattern);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,10 +19,9 @@ import net.minecraft.item.ItemStack;
|
|||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import cpw.mods.fml.common.FMLCommonHandler;
|
||||
|
||||
import buildcraft.api.events.BlockPlacedDownEvent;
|
||||
import buildcraft.api.tiles.IHasWork;
|
||||
import buildcraft.core.utils.Utils;
|
||||
|
||||
public abstract class BlockBuildCraft extends BlockContainer {
|
||||
|
@ -60,7 +59,7 @@ public abstract class BlockBuildCraft extends BlockContainer {
|
|||
@Override
|
||||
public int getLightValue(IBlockAccess world, int x, int y, int z) {
|
||||
TileEntity tile = world.getTileEntity(x, y, z);
|
||||
if (tile instanceof IMachine && ((IMachine) tile).isActive()) {
|
||||
if (tile instanceof IHasWork && ((IHasWork) tile).hasWork()) {
|
||||
return super.getLightValue(world, x, y, z) + 8;
|
||||
} else {
|
||||
return super.getLightValue(world, x, y, z);
|
||||
|
|
|
@ -1,22 +0,0 @@
|
|||
/**
|
||||
* 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;
|
||||
|
||||
import buildcraft.api.statements.IStatement;
|
||||
|
||||
public interface IMachine {
|
||||
|
||||
boolean isActive();
|
||||
|
||||
boolean manageFluids();
|
||||
|
||||
boolean manageSolids();
|
||||
|
||||
boolean allowAction(IStatement action);
|
||||
}
|
|
@ -15,14 +15,11 @@ import net.minecraftforge.common.util.ForgeDirection;
|
|||
import buildcraft.api.statements.IActionExternal;
|
||||
import buildcraft.api.statements.IStatementContainer;
|
||||
import buildcraft.api.statements.IStatementParameter;
|
||||
import buildcraft.api.tiles.IControllable;
|
||||
import buildcraft.api.tiles.IControllable.Mode;
|
||||
import buildcraft.core.utils.StringUtils;
|
||||
|
||||
public class ActionMachineControl extends BCStatement implements IActionExternal {
|
||||
|
||||
public enum Mode {
|
||||
|
||||
Unknown, On, Off, Loop
|
||||
};
|
||||
public final Mode mode;
|
||||
|
||||
public ActionMachineControl(Mode mode) {
|
||||
|
@ -52,6 +49,8 @@ public class ActionMachineControl extends BCStatement implements IActionExternal
|
|||
@Override
|
||||
public void actionActivate(TileEntity target, ForgeDirection side,
|
||||
IStatementContainer source, IStatementParameter[] parameters) {
|
||||
|
||||
if (target instanceof IControllable) {
|
||||
((IControllable)target).setControlMode(mode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,8 +22,8 @@ import buildcraft.api.statements.IActionExternal;
|
|||
import buildcraft.api.statements.IActionInternal;
|
||||
import buildcraft.api.statements.IActionProvider;
|
||||
import buildcraft.api.statements.IStatementContainer;
|
||||
import buildcraft.api.tiles.IControllable;
|
||||
import buildcraft.api.transport.IPipeTile;
|
||||
import buildcraft.core.IMachine;
|
||||
|
||||
public class DefaultActionProvider implements IActionProvider {
|
||||
|
||||
|
@ -43,16 +43,12 @@ public class DefaultActionProvider implements IActionProvider {
|
|||
LinkedList<IActionExternal> res = new LinkedList<IActionExternal>();
|
||||
|
||||
try {
|
||||
if (tile instanceof IMachine) {
|
||||
IMachine machine = (IMachine) tile;
|
||||
if (machine.allowAction(BuildCraftCore.actionOn)) {
|
||||
res.add(BuildCraftCore.actionOn);
|
||||
}
|
||||
if (machine.allowAction(BuildCraftCore.actionOff)) {
|
||||
res.add(BuildCraftCore.actionOff);
|
||||
}
|
||||
if (machine.allowAction(BuildCraftCore.actionLoop)) {
|
||||
res.add(BuildCraftCore.actionLoop);
|
||||
if (tile instanceof IControllable) {
|
||||
for (IControllable.Mode mode : IControllable.Mode.values()) {
|
||||
if (mode != IControllable.Mode.Unknown &&
|
||||
((IControllable) tile).acceptsControlMode(mode)) {
|
||||
res.add(BuildCraftCore.actionControl[mode.ordinal()]);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Throwable error) {
|
||||
|
|
|
@ -22,8 +22,8 @@ import buildcraft.api.statements.IStatementContainer;
|
|||
import buildcraft.api.statements.ITriggerExternal;
|
||||
import buildcraft.api.statements.ITriggerInternal;
|
||||
import buildcraft.api.statements.ITriggerProvider;
|
||||
import buildcraft.api.tiles.IHasWork;
|
||||
import buildcraft.api.transport.IPipeTile;
|
||||
import buildcraft.core.IMachine;
|
||||
|
||||
public class DefaultTriggerProvider implements ITriggerProvider {
|
||||
|
||||
|
@ -54,7 +54,7 @@ public class DefaultTriggerProvider implements ITriggerProvider {
|
|||
}
|
||||
}
|
||||
|
||||
if (tile instanceof IMachine) {
|
||||
if (tile instanceof IHasWork) {
|
||||
res.add(BuildCraftCore.triggerMachineActive);
|
||||
res.add(BuildCraftCore.triggerMachineInactive);
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ import net.minecraftforge.common.util.ForgeDirection;
|
|||
import buildcraft.api.statements.IStatementContainer;
|
||||
import buildcraft.api.statements.IStatementParameter;
|
||||
import buildcraft.api.statements.ITriggerExternal;
|
||||
import buildcraft.core.IMachine;
|
||||
import buildcraft.api.tiles.IHasWork;
|
||||
import buildcraft.core.utils.StringUtils;
|
||||
|
||||
public class TriggerMachine extends BCStatement implements ITriggerExternal {
|
||||
|
@ -33,13 +33,13 @@ public class TriggerMachine extends BCStatement implements ITriggerExternal {
|
|||
|
||||
@Override
|
||||
public boolean isTriggerActive(TileEntity tile, ForgeDirection side, IStatementContainer container, IStatementParameter[] parameters) {
|
||||
if (tile instanceof IMachine) {
|
||||
IMachine machine = (IMachine) tile;
|
||||
if (tile instanceof IHasWork) {
|
||||
IHasWork machine = (IHasWork) tile;
|
||||
|
||||
if (active) {
|
||||
return machine.isActive();
|
||||
return machine.hasWork();
|
||||
} else {
|
||||
return !machine.isActive();
|
||||
return !machine.hasWork();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -18,13 +18,15 @@ import net.minecraftforge.common.util.ForgeDirection;
|
|||
import buildcraft.BuildCraftCore;
|
||||
import buildcraft.BuildCraftFactory;
|
||||
import buildcraft.api.statements.IStatement;
|
||||
import buildcraft.core.IMachine;
|
||||
import buildcraft.api.tiles.IHasWork;
|
||||
import buildcraft.api.transport.IPipeConnection;
|
||||
import buildcraft.api.transport.IPipeTile.PipeType;
|
||||
import buildcraft.core.RFBattery;
|
||||
import buildcraft.core.TileBuildCraft;
|
||||
import buildcraft.core.utils.BlockUtil;
|
||||
import buildcraft.core.utils.Utils;
|
||||
|
||||
public class TileMiningWell extends TileBuildCraft implements IMachine {
|
||||
public class TileMiningWell extends TileBuildCraft implements IHasWork, IPipeConnection {
|
||||
|
||||
boolean isDigging = true;
|
||||
|
||||
|
@ -118,22 +120,13 @@ public class TileMiningWell extends TileBuildCraft implements IMachine {
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean isActive() {
|
||||
public boolean hasWork() {
|
||||
return isDigging;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean manageFluids() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean manageSolids() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean allowAction(IStatement action) {
|
||||
return false;
|
||||
public ConnectOverride overridePipeConnection(PipeType type,
|
||||
ForgeDirection with) {
|
||||
return type == PipeType.ITEM ? ConnectOverride.CONNECT : ConnectOverride.DISCONNECT;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,9 +32,9 @@ import buildcraft.BuildCraftFactory;
|
|||
import buildcraft.api.core.BlockIndex;
|
||||
import buildcraft.api.core.SafeTimeTracker;
|
||||
import buildcraft.api.statements.IStatement;
|
||||
import buildcraft.api.tiles.IHasWork;
|
||||
import buildcraft.core.CoreConstants;
|
||||
import buildcraft.core.EntityBlock;
|
||||
import buildcraft.core.IMachine;
|
||||
import buildcraft.core.RFBattery;
|
||||
import buildcraft.core.TileBuffer;
|
||||
import buildcraft.core.TileBuildCraft;
|
||||
|
@ -46,7 +46,7 @@ import buildcraft.core.proxy.CoreProxy;
|
|||
import buildcraft.core.utils.BlockUtil;
|
||||
import buildcraft.core.utils.Utils;
|
||||
|
||||
public class TilePump extends TileBuildCraft implements IMachine, IFluidHandler {
|
||||
public class TilePump extends TileBuildCraft implements IHasWork, IFluidHandler {
|
||||
|
||||
public static final int REBUID_DELAY = 512;
|
||||
public static int MAX_LIQUID = FluidContainerRegistry.BUCKET_VOLUME * 16;
|
||||
|
@ -372,7 +372,7 @@ public class TilePump extends TileBuildCraft implements IMachine, IFluidHandler
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean isActive() {
|
||||
public boolean hasWork() {
|
||||
BlockIndex next = getNextIndexToPump(false);
|
||||
|
||||
if (next != null) {
|
||||
|
@ -441,21 +441,6 @@ public class TilePump extends TileBuildCraft implements IMachine, IFluidHandler
|
|||
destroyTube();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean manageFluids() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean manageSolids() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean allowAction(IStatement action) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// IFluidHandler implementation.
|
||||
@Override
|
||||
public int fill(ForgeDirection from, FluidStack resource, boolean doFill) {
|
||||
|
|
|
@ -37,11 +37,11 @@ import buildcraft.api.core.NetworkData;
|
|||
import buildcraft.api.core.SafeTimeTracker;
|
||||
import buildcraft.api.filler.FillerManager;
|
||||
import buildcraft.api.statements.IStatement;
|
||||
import buildcraft.api.tiles.IHasWork;
|
||||
import buildcraft.core.Box;
|
||||
import buildcraft.core.Box.Kind;
|
||||
import buildcraft.core.CoreConstants;
|
||||
import buildcraft.core.DefaultAreaProvider;
|
||||
import buildcraft.core.IMachine;
|
||||
import buildcraft.core.blueprints.Blueprint;
|
||||
import buildcraft.core.blueprints.BptBuilderBase;
|
||||
import buildcraft.core.blueprints.BptBuilderBlueprint;
|
||||
|
@ -52,7 +52,7 @@ import buildcraft.core.proxy.CoreProxy;
|
|||
import buildcraft.core.utils.BlockUtil;
|
||||
import buildcraft.core.utils.Utils;
|
||||
|
||||
public class TileQuarry extends TileAbstractBuilder implements IMachine, ISidedInventory {
|
||||
public class TileQuarry extends TileAbstractBuilder implements IHasWork, ISidedInventory {
|
||||
|
||||
private static enum Stage {
|
||||
BUILDING,
|
||||
|
@ -520,7 +520,7 @@ public class TileQuarry extends TileAbstractBuilder implements IMachine, ISidedI
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean isActive() {
|
||||
public boolean hasWork() {
|
||||
return stage != Stage.DONE;
|
||||
}
|
||||
|
||||
|
@ -666,16 +666,6 @@ public class TileQuarry extends TileAbstractBuilder implements IMachine, ISidedI
|
|||
initializeBlueprintBuilder();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean manageFluids() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean manageSolids() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSizeInventory() {
|
||||
return 1;
|
||||
|
@ -740,12 +730,7 @@ public class TileQuarry extends TileAbstractBuilder implements IMachine, ISidedI
|
|||
public boolean isBuildingMaterialSlot(int i) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean allowAction(IStatement action) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
public void moveHead(double instantSpeed) {
|
||||
int[] target = getTarget();
|
||||
double[] head = getHead();
|
||||
|
|
|
@ -31,7 +31,7 @@ import buildcraft.api.recipes.CraftingResult;
|
|||
import buildcraft.api.recipes.IFlexibleCrafter;
|
||||
import buildcraft.api.recipes.IFlexibleRecipe;
|
||||
import buildcraft.api.statements.IStatement;
|
||||
import buildcraft.core.IMachine;
|
||||
import buildcraft.api.tiles.IHasWork;
|
||||
import buildcraft.core.RFBattery;
|
||||
import buildcraft.core.TileBuildCraft;
|
||||
import buildcraft.core.fluids.SingleUseTank;
|
||||
|
@ -40,7 +40,7 @@ import buildcraft.core.network.PacketPayload;
|
|||
import buildcraft.core.network.PacketUpdate;
|
||||
import buildcraft.core.recipes.RefineryRecipeManager;
|
||||
|
||||
public class TileRefinery extends TileBuildCraft implements IFluidHandler, IInventory, IMachine, IFlexibleCrafter {
|
||||
public class TileRefinery extends TileBuildCraft implements IFluidHandler, IInventory, IHasWork, IFlexibleCrafter {
|
||||
|
||||
public static int LIQUID_PER_SLOT = FluidContainerRegistry.BUCKET_VOLUME * 4;
|
||||
|
||||
|
@ -178,20 +178,10 @@ public class TileRefinery extends TileBuildCraft implements IFluidHandler, IInve
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean isActive() {
|
||||
public boolean hasWork() {
|
||||
return isActive;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean manageFluids() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean manageSolids() {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound data) {
|
||||
super.readFromNBT(data);
|
||||
|
@ -285,11 +275,6 @@ public class TileRefinery extends TileBuildCraft implements IFluidHandler, IInve
|
|||
return tankManager.get(number).getAcceptedFluid();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean allowAction(IStatement action) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/* SMP GUI */
|
||||
public void getGUINetworkData(int id, int data) {
|
||||
switch (id) {
|
||||
|
|
|
@ -32,6 +32,7 @@ import net.minecraftforge.oredict.OreDictionary;
|
|||
import buildcraft.BuildCraftSilicon;
|
||||
import buildcraft.api.core.IInvSlot;
|
||||
import buildcraft.api.power.ILaserTarget;
|
||||
import buildcraft.api.tiles.IControllable;
|
||||
import buildcraft.core.TileBuffer;
|
||||
import buildcraft.core.inventory.InvUtils;
|
||||
import buildcraft.core.inventory.InventoryCopy;
|
||||
|
@ -241,7 +242,7 @@ public class TileAdvancedCraftingTable extends TileLaserTableBase implements IIn
|
|||
if (worldObj.isRemote) {
|
||||
return;
|
||||
}
|
||||
if (lastMode == ActionMachineControl.Mode.Off) {
|
||||
if (lastMode == IControllable.Mode.Off) {
|
||||
return;
|
||||
}
|
||||
updateRecipe();
|
||||
|
@ -452,12 +453,12 @@ public class TileAdvancedCraftingTable extends TileLaserTableBase implements IIn
|
|||
|
||||
@Override
|
||||
public boolean canCraft() {
|
||||
return craftable && !justCrafted && lastMode != ActionMachineControl.Mode.Off;
|
||||
return craftable && !justCrafted && lastMode != IControllable.Mode.Off;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isActive() {
|
||||
return requiresLaserEnergy() && super.isActive();
|
||||
public boolean hasWork() {
|
||||
return requiresLaserEnergy() && super.hasWork();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -26,7 +26,7 @@ import buildcraft.api.core.NetworkData;
|
|||
import buildcraft.api.recipes.CraftingResult;
|
||||
import buildcraft.api.recipes.IFlexibleCrafter;
|
||||
import buildcraft.api.recipes.IFlexibleRecipe;
|
||||
import buildcraft.core.IMachine;
|
||||
import buildcraft.api.tiles.IControllable;
|
||||
import buildcraft.core.network.PacketUpdate;
|
||||
import buildcraft.core.network.RPC;
|
||||
import buildcraft.core.network.RPCHandler;
|
||||
|
@ -39,7 +39,7 @@ import buildcraft.core.statements.ActionMachineControl;
|
|||
import buildcraft.core.utils.StringUtils;
|
||||
import buildcraft.core.utils.Utils;
|
||||
|
||||
public class TileAssemblyTable extends TileLaserTableBase implements IMachine, IInventory, IFlexibleCrafter {
|
||||
public class TileAssemblyTable extends TileLaserTableBase implements IInventory, IFlexibleCrafter {
|
||||
|
||||
@NetworkData
|
||||
public String currentRecipeId = "";
|
||||
|
@ -85,7 +85,7 @@ public class TileAssemblyTable extends TileLaserTableBase implements IMachine, I
|
|||
}
|
||||
|
||||
if (getEnergy() >= currentRecipe.craft(this, true).energyCost
|
||||
&& lastMode != ActionMachineControl.Mode.Off) {
|
||||
&& lastMode != IControllable.Mode.Off) {
|
||||
setEnergy(0);
|
||||
|
||||
if (currentRecipe.canBeCrafted(this)) {
|
||||
|
@ -288,13 +288,13 @@ public class TileAssemblyTable extends TileLaserTableBase implements IMachine, I
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean isActive() {
|
||||
return currentRecipe != null && super.isActive();
|
||||
public boolean hasWork() {
|
||||
return currentRecipe != null && super.hasWork();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canCraft() {
|
||||
return isActive();
|
||||
return hasWork();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -17,6 +17,7 @@ import buildcraft.api.recipes.CraftingResult;
|
|||
import buildcraft.api.recipes.IFlexibleCrafter;
|
||||
import buildcraft.api.recipes.IFlexibleRecipe;
|
||||
import buildcraft.api.recipes.IIntegrationRecipe;
|
||||
import buildcraft.api.tiles.IControllable;
|
||||
import buildcraft.core.inventory.ITransactor;
|
||||
import buildcraft.core.inventory.InventoryMapper;
|
||||
import buildcraft.core.inventory.SimpleInventory;
|
||||
|
@ -80,7 +81,7 @@ public class TileIntegrationTable extends TileLaserTableBase implements IFlexibl
|
|||
}
|
||||
|
||||
if (getEnergy() >= craftingPreview.energyCost
|
||||
&& lastMode != ActionMachineControl.Mode.Off) {
|
||||
&& lastMode != IControllable.Mode.Off) {
|
||||
setEnergy(0);
|
||||
craftingPreview = null;
|
||||
|
||||
|
@ -132,7 +133,7 @@ public class TileIntegrationTable extends TileLaserTableBase implements IFlexibl
|
|||
|
||||
@Override
|
||||
public boolean canCraft() {
|
||||
return isActive();
|
||||
return hasWork();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -184,8 +185,8 @@ public class TileIntegrationTable extends TileLaserTableBase implements IFlexibl
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean isActive() {
|
||||
return craftingPreview != null && super.isActive();
|
||||
public boolean hasWork() {
|
||||
return craftingPreview != null && super.hasWork();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -26,15 +26,16 @@ import buildcraft.api.statements.IActionInternal;
|
|||
import buildcraft.api.statements.IActionReceptor;
|
||||
import buildcraft.api.statements.IStatement;
|
||||
import buildcraft.api.statements.IStatementParameter;
|
||||
import buildcraft.api.tiles.IControllable;
|
||||
import buildcraft.api.tiles.IHasWork;
|
||||
import buildcraft.core.Box;
|
||||
import buildcraft.core.EntityLaser;
|
||||
import buildcraft.core.IMachine;
|
||||
import buildcraft.core.LaserData;
|
||||
import buildcraft.core.RFBattery;
|
||||
import buildcraft.core.TileBuildCraft;
|
||||
import buildcraft.core.statements.ActionMachineControl;
|
||||
|
||||
public class TileLaser extends TileBuildCraft implements IActionReceptor, IMachine {
|
||||
public class TileLaser extends TileBuildCraft implements IHasWork, IControllable {
|
||||
|
||||
private static final float LASER_OFFSET = 2.0F / 16.0F;
|
||||
private static final short POWER_AVERAGING = 100;
|
||||
|
@ -46,7 +47,7 @@ public class TileLaser extends TileBuildCraft implements IActionReceptor, IMachi
|
|||
private final SafeTimeTracker searchTracker = new SafeTimeTracker(100, 100);
|
||||
private final SafeTimeTracker networkTracker = new SafeTimeTracker(20, 3);
|
||||
private ILaserTarget laserTarget;
|
||||
private ActionMachineControl.Mode lastMode = ActionMachineControl.Mode.Unknown;
|
||||
private IControllable.Mode lastMode = IControllable.Mode.Unknown;
|
||||
private int powerIndex = 0;
|
||||
|
||||
@NetworkData
|
||||
|
@ -81,7 +82,7 @@ public class TileLaser extends TileBuildCraft implements IActionReceptor, IMachi
|
|||
}
|
||||
|
||||
// If a gate disabled us, remove laser and do nothing.
|
||||
if (lastMode == ActionMachineControl.Mode.Off) {
|
||||
if (lastMode == IControllable.Mode.Off) {
|
||||
removeLaser();
|
||||
return;
|
||||
}
|
||||
|
@ -280,34 +281,10 @@ public class TileLaser extends TileBuildCraft implements IActionReceptor, IMachi
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean isActive() {
|
||||
public boolean hasWork() {
|
||||
return isValidTable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean manageFluids() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean manageSolids() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean allowAction(IStatement action) {
|
||||
return action == BuildCraftCore.actionOn || action == BuildCraftCore.actionOff;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionActivated(IStatement action, IStatementParameter[] parameters) {
|
||||
if (action == BuildCraftCore.actionOn) {
|
||||
lastMode = ActionMachineControl.Mode.On;
|
||||
} else if (action == BuildCraftCore.actionOff) {
|
||||
lastMode = ActionMachineControl.Mode.Off;
|
||||
}
|
||||
}
|
||||
|
||||
private void pushPower(double received) {
|
||||
powerAverage -= power[powerIndex];
|
||||
powerAverage += received;
|
||||
|
@ -337,4 +314,20 @@ public class TileLaser extends TileBuildCraft implements IActionReceptor, IMachi
|
|||
public AxisAlignedBB getRenderBoundingBox() {
|
||||
return new Box(this).extendToEncompass(laser.tail).getBoundingBox();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Mode getControlMode() {
|
||||
return this.lastMode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setControlMode(Mode mode) {
|
||||
this.lastMode = mode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean acceptsControlMode(Mode mode) {
|
||||
return mode == IControllable.Mode.On ||
|
||||
mode == IControllable.Mode.Off;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,17 +19,19 @@ import buildcraft.api.power.ILaserTarget;
|
|||
import buildcraft.api.statements.IActionReceptor;
|
||||
import buildcraft.api.statements.IStatement;
|
||||
import buildcraft.api.statements.IStatementParameter;
|
||||
import buildcraft.core.IMachine;
|
||||
import buildcraft.api.tiles.IControllable;
|
||||
import buildcraft.api.tiles.IHasWork;
|
||||
import buildcraft.api.tiles.IControllable.Mode;
|
||||
import buildcraft.core.TileBuildCraft;
|
||||
import buildcraft.core.inventory.SimpleInventory;
|
||||
import buildcraft.core.statements.ActionMachineControl;
|
||||
import buildcraft.core.utils.AverageUtil;
|
||||
|
||||
public abstract class TileLaserTableBase extends TileBuildCraft implements ILaserTarget, IInventory, IActionReceptor, IMachine {
|
||||
public abstract class TileLaserTableBase extends TileBuildCraft implements ILaserTarget, IInventory, IHasWork, IControllable {
|
||||
|
||||
public int clientRequiredEnergy = 0;
|
||||
protected SimpleInventory inv = new SimpleInventory(getSizeInventory(), "inv", 64);
|
||||
protected ActionMachineControl.Mode lastMode = ActionMachineControl.Mode.Unknown;
|
||||
protected IControllable.Mode lastMode = IControllable.Mode.Unknown;
|
||||
private int energy = 0;
|
||||
private int recentEnergyAverage;
|
||||
private AverageUtil recentEnergyAverageUtil = new AverageUtil(20);
|
||||
|
@ -200,31 +202,23 @@ public abstract class TileLaserTableBase extends TileBuildCraft implements ILase
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean isActive() {
|
||||
return lastMode != ActionMachineControl.Mode.Off;
|
||||
public boolean hasWork() {
|
||||
return lastMode != IControllable.Mode.Off;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean manageFluids() {
|
||||
return false;
|
||||
public Mode getControlMode() {
|
||||
return this.lastMode;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean manageSolids() {
|
||||
return false;
|
||||
public void setControlMode(Mode mode) {
|
||||
this.lastMode = mode;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean allowAction(IStatement action) {
|
||||
return action == BuildCraftCore.actionOn || action == BuildCraftCore.actionOff;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionActivated(IStatement action, IStatementParameter[] parameters) {
|
||||
if (action == BuildCraftCore.actionOn) {
|
||||
lastMode = ActionMachineControl.Mode.On;
|
||||
} else if (action == BuildCraftCore.actionOff) {
|
||||
lastMode = ActionMachineControl.Mode.Off;
|
||||
}
|
||||
public boolean acceptsControlMode(Mode mode) {
|
||||
return mode == IControllable.Mode.On ||
|
||||
mode == IControllable.Mode.Off;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,7 +24,6 @@ import buildcraft.BuildCraftTransport;
|
|||
import buildcraft.api.core.SafeTimeTracker;
|
||||
import buildcraft.api.transport.IPipeTile.PipeType;
|
||||
import buildcraft.core.DefaultProps;
|
||||
import buildcraft.core.IMachine;
|
||||
import buildcraft.transport.network.PacketFluidUpdate;
|
||||
|
||||
public class PipeTransportFluids extends PipeTransport implements IFluidHandler {
|
||||
|
@ -524,7 +523,7 @@ public class PipeTransportFluids extends PipeTransport implements IFluidHandler
|
|||
}
|
||||
}
|
||||
|
||||
return tile instanceof TileGenericPipe || (tile instanceof IMachine && ((IMachine) tile).manageFluids());
|
||||
return tile instanceof TileGenericPipe;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -30,7 +30,6 @@ import buildcraft.api.core.BCLog;
|
|||
import buildcraft.api.core.Position;
|
||||
import buildcraft.api.transport.IPipeTile.PipeType;
|
||||
import buildcraft.core.DefaultProps;
|
||||
import buildcraft.core.IMachine;
|
||||
import buildcraft.core.inventory.Transactor;
|
||||
import buildcraft.core.utils.BlockUtil;
|
||||
import buildcraft.core.utils.MathUtils;
|
||||
|
@ -487,8 +486,7 @@ public class PipeTransportItems extends PipeTransport {
|
|||
return slots != null && slots.length > 0;
|
||||
}
|
||||
|
||||
return tile instanceof TileGenericPipe || (tile instanceof IInventory && ((IInventory) tile).getSizeInventory() > 0)
|
||||
|| (tile instanceof IMachine && ((IMachine) tile).manageSolids());
|
||||
return tile instanceof TileGenericPipe || (tile instanceof IInventory && ((IInventory) tile).getSizeInventory() > 0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue