From 4e2e84990a3c7973fd78f46ca5dd1bb73698acab Mon Sep 17 00:00:00 2001 From: Arona Jones Date: Sun, 1 Feb 2015 15:53:48 +0000 Subject: [PATCH 01/11] Add additional pipe sealant recipe using slimeballs --- common/buildcraft/BuildCraftTransport.java | 31 +++++++++++----------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/common/buildcraft/BuildCraftTransport.java b/common/buildcraft/BuildCraftTransport.java index 827e8758..6b8f5028 100644 --- a/common/buildcraft/BuildCraftTransport.java +++ b/common/buildcraft/BuildCraftTransport.java @@ -213,7 +213,7 @@ public class BuildCraftTransport extends BuildCraftMod { public static Item pipePowerDiamond; public static Item pipePowerEmerald; public static Item pipePowerSandstone; - + public static int groupItemsTrigger; public static String[] facadeBlacklist; @@ -238,7 +238,7 @@ public class BuildCraftTransport extends BuildCraftMod { public static boolean debugPrintFacadeList = false; public static float gateCostMultiplier = 1.0F; - + private static LinkedList pipeRecipes = new LinkedList(); public IIconProvider pipeIconProvider = new PipeIconProvider(); @@ -388,7 +388,7 @@ public class BuildCraftTransport extends BuildCraftMod { gateCopier = new ItemGateCopier(); CoreProxy.proxy.registerItem(gateCopier); - + for (PipeContents kind : PipeContents.values()) { triggerPipe[kind.ordinal()] = new TriggerPipeContents(kind); } @@ -452,7 +452,7 @@ public class BuildCraftTransport extends BuildCraftMod { StatementManager.registerParameterClass(ActionParameterSignal.class); StatementManager.registerTriggerProvider(new PipeTriggerProvider()); StatementManager.registerActionProvider(new PipeActionProvider()); - + PipeManager.registerStripesHandler(new StripesHandlerRightClick()); PipeManager.registerStripesHandler(new StripesHandlerBucket()); PipeManager.registerStripesHandler(new StripesHandlerArrow()); @@ -463,7 +463,7 @@ public class BuildCraftTransport extends BuildCraftMod { PipeManager.registerPipePluggable(LensPluggable.class, "lens"); PipeManager.registerPipePluggable(PlugPluggable.class, "plug"); PipeManager.registerPipePluggable(RobotStationPluggable.class, "robotStation"); - + if (BuildCraftCore.loadDefaultRecipes) { loadRecipes(); } @@ -475,7 +475,7 @@ public class BuildCraftTransport extends BuildCraftMod { @Mod.EventHandler public void postInit(FMLPostInitializationEvent evt) { facadeItem.initialize(); - + if (debugPrintFacadeList) { try { PrintWriter writer = new PrintWriter("FacadeDebug.txt", "UTF-8"); @@ -495,6 +495,7 @@ public class BuildCraftTransport extends BuildCraftMod { public void loadRecipes() { // Add base recipe for pipe waterproof. GameRegistry.addShapelessRecipe(new ItemStack(pipeWaterproof, 1), new ItemStack(Items.dye, 1, 2)); + GameRegistry.addShapelessRecipe(new ItemStack(pipeWaterproof, 1), new ItemStack(Items.slime_ball, 1, 2)); // Add pipe recipes for (PipeRecipe pipe : pipeRecipes) { @@ -506,7 +507,7 @@ public class BuildCraftTransport extends BuildCraftMod { } GameRegistry.addRecipe(new PipeColoringRecipe()); - + CoreProxy.proxy.addCraftingRecipe(new ItemStack(filteredBufferBlock, 1), "wdw", "wcw", "wpw", 'w', "plankWood", 'd', BuildCraftTransport.pipeItemsDiamond, 'c', Blocks.chest, 'p', @@ -525,7 +526,7 @@ public class BuildCraftTransport extends BuildCraftMod { if (Loader.isModLoaded("BuildCraft|Silicon")) { GameRegistry.addShapelessRecipe(new ItemStack(gateCopier, 1), new ItemStack(BuildCraftCore.wrenchItem), Chipset.RED.getStack(1)); - + // PIPE WIRE BuildcraftRecipeRegistry.assemblyTable.addRecipe("buildcraft:redWire", 5000, PipeWire.RED.getStack(8), "dyeRed", "dustRedstone", "ingotIron"); @@ -586,7 +587,7 @@ public class BuildCraftTransport extends BuildCraftMod { BuildcraftRecipeRegistry.assemblyTable.addRecipe("buildcraft:orGate" + materialName, energyCost, ItemGate.makeGateItem(material, GateLogic.OR), inputs); } - + @Mod.EventHandler public void processIMCRequests(IMCEvent event) { InterModComms.processIMC(event); @@ -597,19 +598,19 @@ public class BuildCraftTransport extends BuildCraftMod { Object... ingredients) { ItemPipe res = BlockGenericPipe.registerPipe(clas, creativeTab); res.setUnlocalizedName(clas.getSimpleName()); - + // Add appropriate recipes to temporary list if (ingredients.length == 3) { for (int i = 0; i < 17; i++) { PipeRecipe recipe = new PipeRecipe(); ItemStack glass; - + if (i == 0) { glass = new ItemStack(Blocks.glass); } else { glass = new ItemStack(Blocks.stained_glass, 1, i - 1); } - + recipe.result = new ItemStack(res, 8, i); recipe.input = new Object[]{"ABC", 'A', ingredients[0], 'B', glass, 'C', ingredients[2]}; @@ -618,20 +619,20 @@ public class BuildCraftTransport extends BuildCraftMod { } else if (ingredients.length == 2) { for (int i = 0; i < 17; i++) { PipeRecipe recipe = new PipeRecipe(); - + Object left = ingredients[0]; Object right = ingredients[1]; if (ingredients[1] instanceof ItemPipe) { right = new ItemStack((Item) right, 1, i); } - + recipe.isShapeless = true; recipe.result = new ItemStack(res, 1, i); recipe.input = new Object[]{left, right}; pipeRecipes.add(recipe); - + if (ingredients[1] instanceof ItemPipe) { PipeRecipe uncraft = new PipeRecipe(); uncraft.isShapeless = true; From 969dd1cae93afa2419be4a85f692765408229300 Mon Sep 17 00:00:00 2001 From: Arona Jones Date: Sun, 1 Feb 2015 15:57:36 +0000 Subject: [PATCH 02/11] Make new recipe configurable --- common/buildcraft/BuildCraftTransport.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/common/buildcraft/BuildCraftTransport.java b/common/buildcraft/BuildCraftTransport.java index 6b8f5028..374ad4c5 100644 --- a/common/buildcraft/BuildCraftTransport.java +++ b/common/buildcraft/BuildCraftTransport.java @@ -163,6 +163,7 @@ public class BuildCraftTransport extends BuildCraftMod { public static float pipeDurability; public static int pipeFluidsBaseFlowRate; public static boolean facadeTreatBlacklistAsWhitelist; + public static boolean additionalWaterproofingRecipe; public static BlockGenericPipe genericPipeBlock; public static BlockFilteredBuffer filteredBufferBlock; @@ -263,6 +264,10 @@ public class BuildCraftTransport extends BuildCraftMod { Property printFacadeList = BuildCraftCore.mainConfiguration.get("debug", "facades.printFacadeList", false); debugPrintFacadeList = printFacadeList.getBoolean(); + Property enableAdditionalWaterproofingRecipe = BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_GENERAL, "pipes.fluids.enableAdditionalWaterproofingRecipe", true); + enableAdditionalWaterproofingRecipe.comment = "Enable the slimeball based pipe waterproofing recipe"; + additionalWaterproofingRecipe = enableAdditionalWaterproofingRecipe.getBoolean(); + gateCostMultiplier = BuildCraftCore.mainConfiguration.getFloat("gate.recipeCostMultiplier", Configuration.CATEGORY_GENERAL, 1.0F, 0.001F, 1000.0F, "The multiplier for gate recipe cost."); filteredBufferBlock = new BlockFilteredBuffer(); @@ -495,6 +500,7 @@ public class BuildCraftTransport extends BuildCraftMod { public void loadRecipes() { // Add base recipe for pipe waterproof. GameRegistry.addShapelessRecipe(new ItemStack(pipeWaterproof, 1), new ItemStack(Items.dye, 1, 2)); + if(additionalWaterproofingRecipe) GameRegistry.addShapelessRecipe(new ItemStack(pipeWaterproof, 1), new ItemStack(Items.slime_ball, 1, 2)); // Add pipe recipes From 086e99b16740f0a39d2a3ab6416baa350f2b83de Mon Sep 17 00:00:00 2001 From: Arona Jones Date: Sun, 1 Feb 2015 16:03:40 +0000 Subject: [PATCH 03/11] Don't create facades for blocks not considered opaque cubes. I feel like there is a hidden reason why this hasn't been implemented, but I can't see it... --- common/buildcraft/transport/ItemFacade.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/common/buildcraft/transport/ItemFacade.java b/common/buildcraft/transport/ItemFacade.java index 8ed0344a..5ed7116a 100644 --- a/common/buildcraft/transport/ItemFacade.java +++ b/common/buildcraft/transport/ItemFacade.java @@ -426,6 +426,8 @@ public class ItemFacade extends ItemBuildCraft implements IFacadeItem, IPipePlug if (block == null) { return; } + if (!block.renderAsNormalBlock()) + return; String recipeId = "buildcraft:facade{" + Block.blockRegistry.getNameForObject(block) + "#" + itemStack.getItemDamage() + "}"; @@ -564,7 +566,7 @@ public class ItemFacade extends ItemBuildCraft implements IFacadeItem, IPipePlug public int getSpriteNumber() { return 0; } - + @Override public ItemStack getFacadeForBlock(Block block, int metadata) { return getFacade(FacadeState.create(block, metadata)); From a8da61a86bf11d2564631b97eecc170e92eaa9bb Mon Sep 17 00:00:00 2001 From: Arona Jones Date: Sun, 1 Feb 2015 16:11:18 +0000 Subject: [PATCH 04/11] Ah, that disallows transparant facades - check rendertype instead --- common/buildcraft/transport/ItemFacade.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/buildcraft/transport/ItemFacade.java b/common/buildcraft/transport/ItemFacade.java index 5ed7116a..952a8474 100644 --- a/common/buildcraft/transport/ItemFacade.java +++ b/common/buildcraft/transport/ItemFacade.java @@ -426,7 +426,7 @@ public class ItemFacade extends ItemBuildCraft implements IFacadeItem, IPipePlug if (block == null) { return; } - if (!block.renderAsNormalBlock()) + if (block.getRenderType() != 0) return; String recipeId = "buildcraft:facade{" + Block.blockRegistry.getNameForObject(block) + "#" From 8a43753090b0830a2ffbcc042a57ec1f822be139 Mon Sep 17 00:00:00 2001 From: Arona Jones Date: Sun, 1 Feb 2015 16:17:16 +0000 Subject: [PATCH 05/11] That's not gonna work - check if the blockmaterial is considered solid instead --- common/buildcraft/transport/ItemFacade.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/buildcraft/transport/ItemFacade.java b/common/buildcraft/transport/ItemFacade.java index 952a8474..37cc3441 100644 --- a/common/buildcraft/transport/ItemFacade.java +++ b/common/buildcraft/transport/ItemFacade.java @@ -426,7 +426,7 @@ public class ItemFacade extends ItemBuildCraft implements IFacadeItem, IPipePlug if (block == null) { return; } - if (block.getRenderType() != 0) + if (!block.getMaterial().blocksMovement()) return; String recipeId = "buildcraft:facade{" + Block.blockRegistry.getNameForObject(block) + "#" From f65a28b9682d02fe8cb0a633dfbd2629889b00ea Mon Sep 17 00:00:00 2001 From: big_Xplosion Date: Mon, 2 Feb 2015 16:16:21 +0100 Subject: [PATCH 06/11] Added IMC messages for adding or removing coolants --- common/buildcraft/core/InterModComms.java | 47 +++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/common/buildcraft/core/InterModComms.java b/common/buildcraft/core/InterModComms.java index ba7d9120..b7bc10f7 100644 --- a/common/buildcraft/core/InterModComms.java +++ b/common/buildcraft/core/InterModComms.java @@ -11,6 +11,8 @@ package buildcraft.core; import java.util.ArrayList; import java.util.List; +import buildcraft.api.fuels.ICoolant; +import buildcraft.energy.fuels.CoolantManager; import com.google.common.base.Splitter; import com.google.common.base.Strings; import com.google.common.collect.Iterables; @@ -25,6 +27,8 @@ import net.minecraft.world.biome.BiomeGenBase; import cpw.mods.fml.common.event.FMLInterModComms.IMCEvent; import cpw.mods.fml.common.event.FMLInterModComms.IMCMessage; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; import buildcraft.BuildCraftTransport; @@ -66,6 +70,10 @@ public final class InterModComms { processAssemblyRecipeRemoveIMC(event, m); } else if (m.key.equals("remove-refinery-recipe")) { processRefineryRecipeRemoveIMC(event, m); + } else if (m.key.equals("add-coolant")) { + processCoolantAddIMC(event, m); + } else if (m.key.equals("remove-coolant")) { + processCoolantRemoveIMC(event, m); } else { BCLog.logger.warn(String.format("Received an IMC message with unknown key ('%s') from %s!", new Object[]{m.key, m.getSender()})); } @@ -247,4 +255,43 @@ public final class InterModComms { } BCLog.logger.info(String.format("Received a successful oil-gen-exclude request %s from mod %s", m.getStringValue(), m.getSender())); } + + public static void processCoolantAddIMC(IMCEvent event, IMCMessage m) { + boolean failed = false; + if (!m.isNBTMessage()){ + failed = true; + } else { + NBTTagCompound tag = m.getNBTValue(); + if (!tag.hasKey("coolant") || !tag.hasKey("degrees", 3)) { + failed = true; + } else { + Fluid coolant = FluidRegistry.getFluid(tag.getString("coolant")); + if (coolant != null) { + CoolantManager.INSTANCE.addCoolant(coolant, tag.getInteger("degrees")); + } else { + failed = true; + } + } + } + if (failed) { + BCLog.logger.warn("Received invalid coolant IMC message from mod %s!", m.getSender()); + } + } + + public static void processCoolantRemoveIMC(IMCEvent event, IMCMessage m) { + boolean failed = false; + if (m.isStringMessage()) { + ICoolant coolant = CoolantManager.INSTANCE.getCoolant(FluidRegistry.getFluid(m.getStringValue())); + if (coolant != null) { + CoolantManager.INSTANCE.getCoolants().remove(coolant); + } else { + failed = true; + } + } else { + failed = true; + } + if (failed) { + BCLog.logger.warn("Received invalid coolant IMC message from mod %s!", m.getSender()); + } + } } From 57a608fbe8397be85b0e96784db596265f03b169 Mon Sep 17 00:00:00 2001 From: Hea3veN Date: Mon, 2 Feb 2015 07:44:52 -0300 Subject: [PATCH 07/11] added a registry for the robot AI classes --- api/buildcraft/api/robots/AIRobot.java | 20 ++- api/buildcraft/api/robots/AIRobotManager.java | 49 ++++++++ common/buildcraft/BuildCraftCore.java | 114 +++++++++++++++++- .../buildcraft/transport/TileGenericPipe.java | 3 +- 4 files changed, 181 insertions(+), 5 deletions(-) create mode 100644 api/buildcraft/api/robots/AIRobotManager.java diff --git a/api/buildcraft/api/robots/AIRobot.java b/api/buildcraft/api/robots/AIRobot.java index 47428c84..f03b6ad3 100755 --- a/api/buildcraft/api/robots/AIRobot.java +++ b/api/buildcraft/api/robots/AIRobot.java @@ -148,7 +148,7 @@ public class AIRobot { } public final void writeToNBT(NBTTagCompound nbt) { - nbt.setString("class", getClass().getCanonicalName()); + nbt.setString("aiName", AIRobotManager.getAIRobotName(getClass())); NBTTagCompound data = new NBTTagCompound(); writeSelfToNBT(data); @@ -169,7 +169,14 @@ public class AIRobot { NBTTagCompound sub = nbt.getCompoundTag("delegateAI"); try { - delegateAI = (AIRobot) Class.forName(sub.getString("class")).getConstructor(EntityRobotBase.class) + Class aiRobotClass = null; + if (sub.hasKey("class")) { + // Migration support for 6.4.x + aiRobotClass = AIRobotManager.getAIRobotByLegacyClassName(sub.getString("class")); + } else { + aiRobotClass = AIRobotManager.getAIRobotByName(sub.getString("aiName")); + } + delegateAI = (AIRobot) aiRobotClass.getConstructor(EntityRobotBase.class) .newInstance(robot); if (delegateAI.canLoadFromNBT()) { @@ -186,7 +193,14 @@ public class AIRobot { AIRobot ai = null; try { - ai = (AIRobot) Class.forName(nbt.getString("class")).getConstructor(EntityRobotBase.class) + Class aiRobotClass = null; + if (nbt.hasKey("class")) { + // Migration support for 6.4.x + aiRobotClass = AIRobotManager.getAIRobotByLegacyClassName(nbt.getString("class")); + } else { + aiRobotClass = AIRobotManager.getAIRobotByName(nbt.getString("aiName")); + } + ai = (AIRobot) aiRobotClass.getConstructor(EntityRobotBase.class) .newInstance(robot); ai.loadFromNBT(nbt); } catch (Throwable e) { diff --git a/api/buildcraft/api/robots/AIRobotManager.java b/api/buildcraft/api/robots/AIRobotManager.java new file mode 100644 index 00000000..927313c8 --- /dev/null +++ b/api/buildcraft/api/robots/AIRobotManager.java @@ -0,0 +1,49 @@ +/** + * 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.api.robots; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +public abstract class AIRobotManager { + + public static ArrayList> aiRobots = new ArrayList>(); + private static Map, String> aiRobotsNames = + new HashMap, String>(); + private static Map> aiRobotsByNames = + new HashMap>(); + private static Map> aiRobotsByLegacyClassNames = + new HashMap>(); + + public static void registerAIRobot(Class aiRobot, String name) { + registerAIRobot(aiRobot, name, null); + } + + public static void registerAIRobot(Class pluggable, String name, String legacyClassName) { + aiRobots.add(pluggable); + aiRobotsByNames.put(name, pluggable); + aiRobotsNames.put(pluggable, name); + if(legacyClassName != null) { + aiRobotsByLegacyClassNames.put(legacyClassName, pluggable); + } + } + + public static Class getAIRobotByName(String pluggableName) { + return aiRobotsByNames.get(pluggableName); + } + + public static String getAIRobotName(Class aClass) { + return aiRobotsNames.get(aClass); + } + + public static Class getAIRobotByLegacyClassName(String string) { + return aiRobotsByLegacyClassNames.get(string); + } +} diff --git a/common/buildcraft/BuildCraftCore.java b/common/buildcraft/BuildCraftCore.java index 002311c6..e4c21fd3 100644 --- a/common/buildcraft/BuildCraftCore.java +++ b/common/buildcraft/BuildCraftCore.java @@ -65,6 +65,7 @@ import buildcraft.api.core.IWorldProperty; import buildcraft.api.core.JavaTools; import buildcraft.api.fuels.BuildcraftFuelRegistry; import buildcraft.api.recipes.BuildcraftRecipeRegistry; +import buildcraft.api.robots.AIRobotManager; import buildcraft.api.statements.IActionExternal; import buildcraft.api.statements.IActionInternal; import buildcraft.api.statements.IStatement; @@ -97,7 +98,6 @@ import buildcraft.core.recipes.AssemblyRecipeManager; import buildcraft.core.recipes.IntegrationRecipeManager; import buildcraft.core.recipes.RefineryRecipeManager; import buildcraft.core.render.BlockHighlightHandler; -import buildcraft.robots.EntityRobot; import buildcraft.core.statements.ActionMachineControl; import buildcraft.core.statements.ActionRedstoneOutput; import buildcraft.core.statements.DefaultActionProvider; @@ -124,6 +124,62 @@ import buildcraft.core.utils.WorldPropertyIsSoft; import buildcraft.core.utils.WorldPropertyIsWood; import buildcraft.energy.fuels.CoolantManager; import buildcraft.energy.fuels.FuelManager; +import buildcraft.robots.EntityRobot; +import buildcraft.robots.ai.AIRobotAttack; +import buildcraft.robots.ai.AIRobotBreak; +import buildcraft.robots.ai.AIRobotCraftAssemblyTable; +import buildcraft.robots.ai.AIRobotCraftFurnace; +import buildcraft.robots.ai.AIRobotCraftWorkbench; +import buildcraft.robots.ai.AIRobotDeliverRequested; +import buildcraft.robots.ai.AIRobotDisposeItems; +import buildcraft.robots.ai.AIRobotFetchAndEquipItemStack; +import buildcraft.robots.ai.AIRobotFetchItem; +import buildcraft.robots.ai.AIRobotGoAndLinkToDock; +import buildcraft.robots.ai.AIRobotGoto; +import buildcraft.robots.ai.AIRobotGotoBlock; +import buildcraft.robots.ai.AIRobotGotoRandomGroundBlock; +import buildcraft.robots.ai.AIRobotGotoSleep; +import buildcraft.robots.ai.AIRobotGotoStation; +import buildcraft.robots.ai.AIRobotGotoStationAndLoad; +import buildcraft.robots.ai.AIRobotGotoStationAndLoadFluids; +import buildcraft.robots.ai.AIRobotGotoStationAndUnload; +import buildcraft.robots.ai.AIRobotGotoStationToLoad; +import buildcraft.robots.ai.AIRobotGotoStationToLoadFluids; +import buildcraft.robots.ai.AIRobotGotoStationToUnload; +import buildcraft.robots.ai.AIRobotGotoStationToUnloadFluids; +import buildcraft.robots.ai.AIRobotLoad; +import buildcraft.robots.ai.AIRobotLoadFluids; +import buildcraft.robots.ai.AIRobotMain; +import buildcraft.robots.ai.AIRobotPumpBlock; +import buildcraft.robots.ai.AIRobotRecharge; +import buildcraft.robots.ai.AIRobotSearchAndGotoStation; +import buildcraft.robots.ai.AIRobotSearchBlock; +import buildcraft.robots.ai.AIRobotSearchEntity; +import buildcraft.robots.ai.AIRobotSearchRandomGroundBlock; +import buildcraft.robots.ai.AIRobotSearchStackRequest; +import buildcraft.robots.ai.AIRobotSearchStation; +import buildcraft.robots.ai.AIRobotSleep; +import buildcraft.robots.ai.AIRobotStraightMoveTo; +import buildcraft.robots.ai.AIRobotUnload; +import buildcraft.robots.ai.AIRobotUnloadFluids; +import buildcraft.robots.ai.AIRobotUseToolOnBlock; +import buildcraft.robots.boards.BoardRobotBomber; +import buildcraft.robots.boards.BoardRobotBuilder; +import buildcraft.robots.boards.BoardRobotButcher; +import buildcraft.robots.boards.BoardRobotCarrier; +import buildcraft.robots.boards.BoardRobotCrafter; +import buildcraft.robots.boards.BoardRobotDelivery; +import buildcraft.robots.boards.BoardRobotFarmer; +import buildcraft.robots.boards.BoardRobotFluidCarrier; +import buildcraft.robots.boards.BoardRobotHarvester; +import buildcraft.robots.boards.BoardRobotKnight; +import buildcraft.robots.boards.BoardRobotLeaveCutter; +import buildcraft.robots.boards.BoardRobotLumberjack; +import buildcraft.robots.boards.BoardRobotMiner; +import buildcraft.robots.boards.BoardRobotPicker; +import buildcraft.robots.boards.BoardRobotPlanter; +import buildcraft.robots.boards.BoardRobotPump; +import buildcraft.robots.boards.BoardRobotShovelman; @Mod(name = "BuildCraft", version = Version.VERSION, useMetadata = false, modid = "BuildCraft|Core", acceptedMinecraftVersions = "[1.7.10,1.8)", dependencies = "required-after:Forge@[10.13.0.1207,)") public class BuildCraftCore extends BuildCraftMod { @@ -355,6 +411,62 @@ public class BuildCraftCore extends BuildCraftMod { StatementManager.registerTriggerProvider(new DefaultTriggerProvider()); StatementManager.registerActionProvider(new DefaultActionProvider()); + AIRobotManager.registerAIRobot(AIRobotMain.class, "aiRobotMain","buildcraft.core.robots.AIRobotMain"); + AIRobotManager.registerAIRobot(BoardRobotBomber.class, "boardRobotBomber", "buildcraft.core.robots.boards.BoardRobotBomber"); + AIRobotManager.registerAIRobot(BoardRobotBuilder.class, "boardRobotBuilder", "buildcraft.core.robots.boards.BoardRobotBuilder"); + AIRobotManager.registerAIRobot(BoardRobotButcher.class, "boardRobotButcher", "buildcraft.core.robots.boards.BoardRobotButcher"); + AIRobotManager.registerAIRobot(BoardRobotCarrier.class, "boardRobotCarrier", "buildcraft.core.robots.boards.BoardRobotCarrier"); + AIRobotManager.registerAIRobot(BoardRobotCrafter.class, "boardRobotCrafter", "buildcraft.core.robots.boards.BoardRobotCrafter"); + AIRobotManager.registerAIRobot(BoardRobotDelivery.class, "boardRobotDelivery", "buildcraft.core.robots.boards.BoardRobotDelivery"); + AIRobotManager.registerAIRobot(BoardRobotFarmer.class, "boardRobotFarmer", "buildcraft.core.robots.boards.BoardRobotFarmer"); + AIRobotManager.registerAIRobot(BoardRobotFluidCarrier.class, "boardRobotFluidCarrier", "buildcraft.core.robots.boards.BoardRobotFluidCarrier"); + AIRobotManager.registerAIRobot(BoardRobotHarvester.class, "boardRobotHarvester", "buildcraft.core.robots.boards.BoardRobotHarvester"); + AIRobotManager.registerAIRobot(BoardRobotKnight.class, "boardRobotKnight", "buildcraft.core.robots.boards.BoardRobotKnight"); + AIRobotManager.registerAIRobot(BoardRobotLeaveCutter.class, "boardRobotLeaveCutter", "buildcraft.core.robots.boards.BoardRobotLeaveCutter"); + AIRobotManager.registerAIRobot(BoardRobotLumberjack.class, "boardRobotLumberjack", "buildcraft.core.robots.boards.BoardRobotLumberjack"); + AIRobotManager.registerAIRobot(BoardRobotMiner.class, "boardRobotMiner", "buildcraft.core.robots.boards.BoardRobotMiner"); + AIRobotManager.registerAIRobot(BoardRobotPicker.class, "boardRobotPicker", "buildcraft.core.robots.boards.BoardRobotPicker"); + AIRobotManager.registerAIRobot(BoardRobotPlanter.class, "boardRobotPlanter", "buildcraft.core.robots.boards.BoardRobotPlanter"); + AIRobotManager.registerAIRobot(BoardRobotPump.class, "boardRobotPump", "buildcraft.core.robots.boards.BoardRobotPump"); + AIRobotManager.registerAIRobot(BoardRobotShovelman.class, "boardRobotShovelman", "buildcraft.core.robots.boards.BoardRobotShovelman"); + AIRobotManager.registerAIRobot(AIRobotAttack.class, "aiRobotAttack", "buildcraft.core.robots.AIRobotAttack"); + AIRobotManager.registerAIRobot(AIRobotBreak.class, "aiRobotBreak", "buildcraft.core.robots.AIRobotBreak"); + AIRobotManager.registerAIRobot(AIRobotCraftAssemblyTable.class, "aiRobotCraftAssemblyTable", "buildcraft.core.robots.AIRobotCraftAssemblyTable"); + AIRobotManager.registerAIRobot(AIRobotCraftFurnace.class, "aiRobotCraftFurnace", "buildcraft.core.robots.AIRobotCraftFurnace"); + AIRobotManager.registerAIRobot(AIRobotCraftWorkbench.class, "aiRobotCraftWorkbench", "buildcraft.core.robots.AIRobotCraftWorkbench"); + AIRobotManager.registerAIRobot(AIRobotDeliverRequested.class, "aiRobotDeliverRequested", "buildcraft.core.robots.AIRobotDeliverRequested"); + AIRobotManager.registerAIRobot(AIRobotDisposeItems.class, "aiRobotDisposeItems", "buildcraft.core.robots.AIRobotDisposeItems"); + AIRobotManager.registerAIRobot(AIRobotFetchAndEquipItemStack.class, "aiRobotFetchAndEquipItemStack", "buildcraft.core.robots.AIRobotFetchAndEquipItemStack"); + AIRobotManager.registerAIRobot(AIRobotFetchItem.class, "aiRobotFetchItem", "buildcraft.core.robots.AIRobotFetchItem"); + AIRobotManager.registerAIRobot(AIRobotGoAndLinkToDock.class, "aiRobotGoAndLinkToDock", "buildcraft.core.robots.AIRobotGoAndLinkToDock"); + AIRobotManager.registerAIRobot(AIRobotGoto.class, "aiRobotGoto", "buildcraft.core.robots.AIRobotGoto"); + AIRobotManager.registerAIRobot(AIRobotGotoBlock.class, "aiRobotGotoBlock", "buildcraft.core.robots.AIRobotGotoBlock"); + AIRobotManager.registerAIRobot(AIRobotGotoRandomGroundBlock.class, "aiRobotGotoRandomGroundBlock", "buildcraft.core.robots.AIRobotGotoRandomGroundBlock"); + AIRobotManager.registerAIRobot(AIRobotGotoSleep.class, "aiRobotGotoSleep", "buildcraft.core.robots.AIRobotGotoSleep"); + AIRobotManager.registerAIRobot(AIRobotGotoStation.class, "aiRobotGotoStation", "buildcraft.core.robots.AIRobotGotoStation"); + AIRobotManager.registerAIRobot(AIRobotGotoStationAndLoad.class, "aiRobotGotoStationAndLoad", "buildcraft.core.robots.AIRobotGotoStationAndLoad"); + AIRobotManager.registerAIRobot(AIRobotGotoStationAndLoadFluids.class, "aiRobotGotoStationAndLoadFluids", "buildcraft.core.robots.AIRobotGotoStationAndLoadFluids"); + AIRobotManager.registerAIRobot(AIRobotGotoStationAndUnload.class, "aiRobotGotoStationAndUnload", "buildcraft.core.robots.AIRobotGotoStationAndUnload"); + AIRobotManager.registerAIRobot(AIRobotGotoStationToLoad.class, "aiRobotGotoStationToLoad", "buildcraft.core.robots.AIRobotGotoStationToLoad"); + AIRobotManager.registerAIRobot(AIRobotGotoStationToLoadFluids.class, "aiRobotGotoStationToLoadFluids", "buildcraft.core.robots.AIRobotGotoStationToLoadFluids"); + AIRobotManager.registerAIRobot(AIRobotGotoStationToUnload.class, "aiRobotGotoStationToUnload", "buildcraft.core.robots.AIRobotGotoStationToUnload"); + AIRobotManager.registerAIRobot(AIRobotGotoStationToUnloadFluids.class, "aiRobotGotoStationToUnloadFluids", "buildcraft.core.robots.AIRobotGotoStationToUnloadFluids"); + AIRobotManager.registerAIRobot(AIRobotLoad.class, "aiRobotLoad", "buildcraft.core.robots.AIRobotLoad"); + AIRobotManager.registerAIRobot(AIRobotLoadFluids.class, "aiRobotLoadFluids", "buildcraft.core.robots.AIRobotLoadFluids"); + AIRobotManager.registerAIRobot(AIRobotPumpBlock.class, "aiRobotPumpBlock", "buildcraft.core.robots.AIRobotPumpBlock"); + AIRobotManager.registerAIRobot(AIRobotRecharge.class, "aiRobotRecharge", "buildcraft.core.robots.AIRobotRecharge"); + AIRobotManager.registerAIRobot(AIRobotSearchAndGotoStation.class, "aiRobotSearchAndGotoStation", "buildcraft.core.robots.AIRobotSearchAndGotoStation"); + AIRobotManager.registerAIRobot(AIRobotSearchBlock.class, "aiRobotSearchBlock", "buildcraft.core.robots.AIRobotSearchBlock"); + AIRobotManager.registerAIRobot(AIRobotSearchEntity.class, "aiRobotSearchEntity", "buildcraft.core.robots.AIRobotSearchEntity"); + AIRobotManager.registerAIRobot(AIRobotSearchRandomGroundBlock.class, "aiRobotSearchRandomGroundBlock", "buildcraft.core.robots.AIRobotSearchRandomGroundBlock"); + AIRobotManager.registerAIRobot(AIRobotSearchStackRequest.class, "aiRobotSearchStackRequest", "buildcraft.core.robots.AIRobotSearchStackRequest"); + AIRobotManager.registerAIRobot(AIRobotSearchStation.class, "aiRobotSearchStation", "buildcraft.core.robots.AIRobotSearchStation"); + AIRobotManager.registerAIRobot(AIRobotSleep.class, "aiRobotSleep", "buildcraft.core.robots.AIRobotSleep"); + AIRobotManager.registerAIRobot(AIRobotStraightMoveTo.class, "aiRobotStraightMoveTo", "buildcraft.core.robots.AIRobotStraightMoveTo"); + AIRobotManager.registerAIRobot(AIRobotUnload.class, "aiRobotUnload", "buildcraft.core.robots.AIRobotUnload"); + AIRobotManager.registerAIRobot(AIRobotUnloadFluids.class, "aiRobotUnloadFluids", "buildcraft.core.robots.AIRobotUnloadFluids"); + AIRobotManager.registerAIRobot(AIRobotUseToolOnBlock.class, "aiRobotUseToolOnBlock", "buildcraft.core.robots.AIRobotUseToolOnBlock"); + if (BuildCraftCore.modifyWorld) { MinecraftForge.EVENT_BUS.register(new SpringPopulate()); } diff --git a/common/buildcraft/transport/TileGenericPipe.java b/common/buildcraft/transport/TileGenericPipe.java index 89b9e2dc..0723645c 100644 --- a/common/buildcraft/transport/TileGenericPipe.java +++ b/common/buildcraft/transport/TileGenericPipe.java @@ -141,7 +141,8 @@ public class TileGenericPipe extends TileEntity implements IFluidHandler, pluggableClass = FacadePluggable.class; } else if ("buildcraft.transport.ItemPlug$PlugPluggable".equals(c)) { pluggableClass = PlugPluggable.class; - } else if ("buildcraft.transport.gates.ItemRobotStation$RobotStationPluggable".equals(c)) { + } else if ("buildcraft.transport.gates.ItemRobotStation$RobotStationPluggable".equals(c) + || "buildcraft.transport.ItemRobotStation$RobotStationPluggable".equals(c)) { pluggableClass = PipeManager.getPluggableByName("robotStation"); } } else { From c873857807f7a9983c7e35427c0189db49f14f2d Mon Sep 17 00:00:00 2001 From: Hea3veN Date: Mon, 2 Feb 2015 07:48:02 -0300 Subject: [PATCH 08/11] new path finding algorithm for the block breaking robots --- .../utils/concurrency/IIterableAlgorithm.java | 17 ++ .../IterableAlgorithmRunner.java} | 11 +- .../utils/{ => concurrency}/PathFinding.java | 91 +-------- .../utils/concurrency/PathFindingSearch.java | 188 ++++++++++++++++++ common/buildcraft/robots/EntityRobot.java | 4 + .../robots/ai/AIRobotGotoBlock.java | 8 +- .../ai/AIRobotGotoRandomGroundBlock.java | 8 +- .../robots/ai/AIRobotSearchBlock.java | 18 +- .../robots/boards/BoardRobotFarmer.java | 10 +- .../boards/BoardRobotGenericBreakBlock.java | 3 +- .../robots/boards/BoardRobotPlanter.java | 8 +- .../robots/boards/BoardRobotPump.java | 7 +- 12 files changed, 256 insertions(+), 117 deletions(-) create mode 100644 common/buildcraft/core/utils/concurrency/IIterableAlgorithm.java rename common/buildcraft/core/utils/{PathFindingJob.java => concurrency/IterableAlgorithmRunner.java} (80%) rename common/buildcraft/core/utils/{ => concurrency}/PathFinding.java (76%) create mode 100644 common/buildcraft/core/utils/concurrency/PathFindingSearch.java diff --git a/common/buildcraft/core/utils/concurrency/IIterableAlgorithm.java b/common/buildcraft/core/utils/concurrency/IIterableAlgorithm.java new file mode 100644 index 00000000..4bfe6427 --- /dev/null +++ b/common/buildcraft/core/utils/concurrency/IIterableAlgorithm.java @@ -0,0 +1,17 @@ +/** + * 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.utils.concurrency; + +public interface IIterableAlgorithm { + + abstract void iterate(); + + abstract boolean isDone(); + +} \ No newline at end of file diff --git a/common/buildcraft/core/utils/PathFindingJob.java b/common/buildcraft/core/utils/concurrency/IterableAlgorithmRunner.java similarity index 80% rename from common/buildcraft/core/utils/PathFindingJob.java rename to common/buildcraft/core/utils/concurrency/IterableAlgorithmRunner.java index 3febe645..0ca1d528 100755 --- a/common/buildcraft/core/utils/PathFindingJob.java +++ b/common/buildcraft/core/utils/concurrency/IterableAlgorithmRunner.java @@ -6,33 +6,32 @@ * 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.utils; +package buildcraft.core.utils.concurrency; import java.util.Date; -public class PathFindingJob extends Thread { +public class IterableAlgorithmRunner extends Thread { - private PathFinding pathFinding; + private IIterableAlgorithm pathFinding; private boolean stop = false; private int maxIterations; private boolean done = false; - public PathFindingJob(PathFinding iPathFinding, int iMaxIterations) { + public IterableAlgorithmRunner(IIterableAlgorithm iPathFinding, int iMaxIterations) { super("Path Finding"); pathFinding = iPathFinding; maxIterations = iMaxIterations; } - public PathFindingJob(PathFinding iPathFinding) { + public IterableAlgorithmRunner(IIterableAlgorithm iPathFinding) { this(iPathFinding, 1000); } @Override public void run() { try { - pathFinding.preRun(); for (int i = 0; i < maxIterations; ++i) { if (isTerminated() || pathFinding.isDone()) { break; diff --git a/common/buildcraft/core/utils/PathFinding.java b/common/buildcraft/core/utils/concurrency/PathFinding.java similarity index 76% rename from common/buildcraft/core/utils/PathFinding.java rename to common/buildcraft/core/utils/concurrency/PathFinding.java index 4ac5b5e1..427414c7 100755 --- a/common/buildcraft/core/utils/PathFinding.java +++ b/common/buildcraft/core/utils/concurrency/PathFinding.java @@ -6,7 +6,7 @@ * 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.utils; +package buildcraft.core.utils.concurrency; import java.util.ArrayList; import java.util.Collection; @@ -17,26 +17,23 @@ import net.minecraft.world.World; import buildcraft.api.core.BlockIndex; import buildcraft.api.core.BuildCraftAPI; import buildcraft.api.core.IZone; +import buildcraft.core.utils.IBlockFilter; /** * This class implements a 3D path finding based on the A* algorithm, following * guidelines documented on http://www.policyalmanac.org/games/aStarTutorial.htm * . */ -public class PathFinding { +public class PathFinding implements IIterableAlgorithm { public static int PATH_ITERATIONS = 1000; private World world; private BlockIndex start; private BlockIndex end; - private BlockIndex boxEnd; private IBlockFilter pathFound; - private float maxDistance = -1; - private float sqrMaxDistance = -1; private IZone zone; private double maxDistanceToEnd = 0; - private boolean targetNotFound; private HashMap openList = new HashMap(); private HashMap closedList = new HashMap(); @@ -68,58 +65,7 @@ public class PathFinding { maxDistanceToEnd = iMaxDistanceToEnd; } - // TODO: It's probably more efficient to start a search first, and then to - // compute the path, instead of computing all possible path from the get - // go. - public PathFinding(World iWorld, BlockIndex iStart, IBlockFilter iPathFound, float iMaxDistance, IZone iZone) { - world = iWorld; - start = iStart; - pathFound = iPathFound; - - Node startNode = new Node(); - startNode.parent = null; - startNode.movementCost = 0; - startNode.destinationCost = 0; - startNode.totalWeight = startNode.movementCost + startNode.destinationCost; - startNode.index = iStart; - openList.put(start, startNode); - nextIteration = startNode; - maxDistance = iMaxDistance; - sqrMaxDistance = maxDistance * maxDistance; - maxDistance = maxDistance * 1.25f; - zone = iZone; - targetNotFound = false; - } - - public void preRun() { - if (end == null) { - targetNotFound = searchForTarget(64); - } - } - - - private boolean searchForTarget(int range) { - for (int dx = -range; dx <= range; dx++) { - for (int dz = -range; dz <= range; dz++) { - int x = start.x + dx; - int z = start.z + dz; - if (world.getChunkProvider().chunkExists (x >> 4, z >> 4)) { - int height = world.getChunkFromChunkCoords(x >> 4, z >> 4).getHeightValue(x & 0xF, z & 0xF); - for (int dy = -range; dy <= height; dy++) { - int y = Math.max(0, start.y + dy); - if (zone != null && !zone.contains(x, y, z)) { - continue; - } - if (pathFound.matches(world, x, y, z)) { - return false; - } - } - } - } - } - return true; - } - + @Override public void iterate() { iterate(PATH_ITERATIONS); } @@ -145,8 +91,9 @@ public class PathFinding { } } + @Override public boolean isDone() { - return nextIteration == null || (end == null && targetNotFound); + return nextIteration == null; } public LinkedList getResult() { @@ -400,33 +347,7 @@ public class PathFinding { resultMoves[2][2][2] = 0; } - - if (maxDistance != -1) { - for (int dx = -1; dx <= +1; ++dx) { - for (int dy = -1; dy <= +1; ++dy) { - for (int dz = -1; dz <= +1; ++dz) { - int x = from.index.x + dx; - int y = from.index.y + dy; - int z = from.index.z + dz; - - float distX = x - start.x; - float distY = y - start.y; - float distZ = z - start.z; - float sqrDist = distX * distX + distY * distY + distZ * distZ; - - if (sqrDist > sqrMaxDistance) { - resultMoves[dx + 1][dy + 1][dz + 1] = 0; - } - } - } - } - } - return resultMoves; } - private boolean totalDistanceExceeded(Node nextNode) { - return maxDistance != -1 && nextNode.totalWeight > maxDistance; - } - } diff --git a/common/buildcraft/core/utils/concurrency/PathFindingSearch.java b/common/buildcraft/core/utils/concurrency/PathFindingSearch.java new file mode 100644 index 00000000..340d8236 --- /dev/null +++ b/common/buildcraft/core/utils/concurrency/PathFindingSearch.java @@ -0,0 +1,188 @@ +/** + * 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.utils.concurrency; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; + +import net.minecraft.world.World; + +import buildcraft.api.core.BlockIndex; +import buildcraft.api.core.BuildCraftAPI; +import buildcraft.api.core.IZone; +import buildcraft.core.utils.IBlockFilter; + +public class PathFindingSearch implements IIterableAlgorithm { + + public static int PATH_ITERATIONS = 1000; + + private static HashMap> reservations = new HashMap>(); + + private World world; + private BlockIndex start; + private List pathFinders; + private IBlockFilter pathFound; + private IZone zone; + + private int searchRadius; + private int searchX; + private int searchY; + private int searchZ; + private int searchHeight; + + public PathFindingSearch(World iWorld, BlockIndex iStart, IBlockFilter iPathFound, float iMaxDistance, IZone iZone) { + world = iWorld; + start = iStart; + pathFound = iPathFound; + + pathFinders = new LinkedList(); + searchRadius = 1; + searchX = -1; + searchY = -1; + searchZ = -1; + getSearchHeight(start.x + searchX, start.z + searchZ); + } + + @Override + public void iterate() { + if (pathFinders.size() < 5 && searchRadius < 64) { + iterateSearch(PATH_ITERATIONS * 50); + } + iteratePathFind(PATH_ITERATIONS); + } + + private void iterateSearch(int itNumber) { + for (int i = 0; i < itNumber; ++i) { + int currX = start.x + searchX; + int currY = start.y + searchY; + int currZ = start.z + searchZ; + if (0 <= currY && currY <= searchHeight) { + if (isTarget(currX, currY, currZ)) { + pathFinders.add(new PathFinding(world, start, new BlockIndex(currX, currY, currZ))); + } + } + + searchY += 1; + if (searchY > searchRadius) { + searchY = -searchRadius; + searchZ += 1; + if (searchZ > searchRadius) { + searchZ = -searchRadius; + searchX += 1; + if (searchX > searchRadius) { + searchRadius += 1; + searchX = -searchRadius; + searchY = -searchRadius; + searchZ = -searchRadius; + } + } + searchHeight = getSearchHeight(start.x + searchX, start.z + searchZ); + } + if (pathFinders.size() >= 5) { + return; + } + } + } + + private boolean isTarget(int x, int y, int z) { + if (zone != null && !zone.contains(x, y, z)) { + return false; + } + if (!pathFound.matches(world, x, y, z)) { + return false; + } + synchronized (reservations) { + if (reservations.containsKey(world.provider.dimensionId)) { + HashSet dimReservations = reservations + .get(world.provider.dimensionId); + if (dimReservations.contains(new BlockIndex(x, y, z))) { + return false; + } + } + } + if (!BuildCraftAPI.isSoftBlock(world, x - 1, y, z) + && !BuildCraftAPI.isSoftBlock(world, x + 1, y, z) + && !BuildCraftAPI.isSoftBlock(world, x, y, z - 1) + && !BuildCraftAPI.isSoftBlock(world, x, y, z + 1) + && !BuildCraftAPI.isSoftBlock(world, x, y - 1, z) + && !BuildCraftAPI.isSoftBlock(world, x, y + 1, z)) { + return false; + } + return true; + } + + private int getSearchHeight(int x, int z) { + if (world.getChunkProvider().chunkExists(x >> 4, z >> 4)) { + return 256; + } else { + return -1; + } + } + + public void iteratePathFind(int itNumber) { + for (PathFinding pathFinding : new ArrayList(pathFinders)) { + pathFinding.iterate(itNumber / pathFinders.size()); + if (pathFinding.isDone()) { + LinkedList path = pathFinding.getResult(); + if (path != null && path.size() > 0) { + if (reserve(path.getLast())) { + return; + } + } + pathFinders.remove(pathFinding); + } + } + } + + @Override + public boolean isDone() { + for (PathFinding pathFinding : pathFinders) { + if (pathFinding.isDone()) { + return true; + } + } + return searchRadius >= 64; + } + + public LinkedList getResult() { + for (PathFinding pathFinding : pathFinders) { + if (pathFinding.isDone()) { + return pathFinding.getResult(); + } + } + return new LinkedList(); + } + + private boolean reserve(BlockIndex block) { + synchronized (reservations) { + if (!reservations.containsKey(world.provider.dimensionId)) { + reservations.put(world.provider.dimensionId, + new HashSet()); + } + HashSet dimReservations = reservations + .get(world.provider.dimensionId); + if (dimReservations.contains(block)) { + return false; + } + dimReservations.add(block); + return true; + } + } + + public void unreserve(BlockIndex block) { + synchronized (reservations) { + if (reservations.containsKey(world.provider.dimensionId)) { + reservations.get(world.provider.dimensionId).remove(block); + } + } + } +} diff --git a/common/buildcraft/robots/EntityRobot.java b/common/buildcraft/robots/EntityRobot.java index b5b48692..426144d9 100644 --- a/common/buildcraft/robots/EntityRobot.java +++ b/common/buildcraft/robots/EntityRobot.java @@ -247,6 +247,7 @@ public class EntityRobot extends EntityRobotBase implements @Override public void onEntityUpdate() { + this.worldObj.theProfiler.startSection("bcEntityRobot"); if (!firstUpdateDone) { firstUpdate(); firstUpdateDone = true; @@ -305,7 +306,9 @@ public class EntityRobot extends EntityRobotBase implements } if (linkedDockingStation != null) { + this.worldObj.theProfiler.startSection("bcRobotAIMainCycle"); mainAI.cycle(); + this.worldObj.theProfiler.endSection(); if (energySpendPerCycle != mainAI.getActiveAI().getEnergyCost()) { energySpendPerCycle = mainAI.getActiveAI().getEnergyCost(); @@ -319,6 +322,7 @@ public class EntityRobot extends EntityRobotBase implements } super.onEntityUpdate(); + this.worldObj.theProfiler.endSection(); } @SideOnly(Side.CLIENT) private void spawnEnergyFX() { diff --git a/common/buildcraft/robots/ai/AIRobotGotoBlock.java b/common/buildcraft/robots/ai/AIRobotGotoBlock.java index 1ec5f66e..cb043a35 100755 --- a/common/buildcraft/robots/ai/AIRobotGotoBlock.java +++ b/common/buildcraft/robots/ai/AIRobotGotoBlock.java @@ -17,15 +17,15 @@ import net.minecraftforge.common.util.Constants; import buildcraft.api.core.BlockIndex; import buildcraft.api.robots.EntityRobotBase; -import buildcraft.core.utils.PathFinding; -import buildcraft.core.utils.PathFindingJob; +import buildcraft.core.utils.concurrency.IterableAlgorithmRunner; +import buildcraft.core.utils.concurrency.PathFinding; public class AIRobotGotoBlock extends AIRobotGoto { public boolean unreachable = false; private PathFinding pathSearch; - private PathFindingJob pathSearchJob; + private IterableAlgorithmRunner pathSearchJob; private LinkedList path; private double prevDistance = Double.MAX_VALUE; private float finalX, finalY, finalZ; @@ -70,7 +70,7 @@ public class AIRobotGotoBlock extends AIRobotGoto { (int) Math.floor(robot.posY), (int) Math.floor(robot.posZ)), new BlockIndex( (int) Math.floor(finalX), (int) Math.floor(finalY), (int) Math.floor(finalZ)), maxDistance); - pathSearchJob = new PathFindingJob(pathSearch, 100); + pathSearchJob = new IterableAlgorithmRunner(pathSearch, 100); pathSearchJob.start(); } else if (path != null) { double distance = robot.getDistance(nextX, nextY, nextZ); diff --git a/common/buildcraft/robots/ai/AIRobotGotoRandomGroundBlock.java b/common/buildcraft/robots/ai/AIRobotGotoRandomGroundBlock.java index 2b364cac..e8f69530 100755 --- a/common/buildcraft/robots/ai/AIRobotGotoRandomGroundBlock.java +++ b/common/buildcraft/robots/ai/AIRobotGotoRandomGroundBlock.java @@ -15,8 +15,8 @@ import buildcraft.api.core.IZone; import buildcraft.api.robots.AIRobot; import buildcraft.api.robots.EntityRobotBase; import buildcraft.core.utils.IBlockFilter; -import buildcraft.core.utils.PathFinding; -import buildcraft.core.utils.PathFindingJob; +import buildcraft.core.utils.concurrency.IterableAlgorithmRunner; +import buildcraft.core.utils.concurrency.PathFinding; public class AIRobotGotoRandomGroundBlock extends AIRobot { @@ -24,7 +24,7 @@ public class AIRobotGotoRandomGroundBlock extends AIRobot { private int range; private PathFinding pathFinding; - private PathFindingJob pathFindingJob; + private IterableAlgorithmRunner pathFindingJob; private IBlockFilter filter; private IZone zone; @@ -68,7 +68,7 @@ public class AIRobotGotoRandomGroundBlock extends AIRobot { blockFound = aiFind.blockFound; pathFinding = new PathFinding(robot.worldObj, new BlockIndex(robot), blockFound); - pathFindingJob = new PathFindingJob(pathFinding); + pathFindingJob = new IterableAlgorithmRunner(pathFinding); pathFindingJob.start(); } else if (ai instanceof AIRobotGotoBlock) { terminate(); diff --git a/common/buildcraft/robots/ai/AIRobotSearchBlock.java b/common/buildcraft/robots/ai/AIRobotSearchBlock.java index a2b69e5e..054a3d96 100755 --- a/common/buildcraft/robots/ai/AIRobotSearchBlock.java +++ b/common/buildcraft/robots/ai/AIRobotSearchBlock.java @@ -16,17 +16,16 @@ import buildcraft.api.core.BlockIndex; import buildcraft.api.robots.AIRobot; import buildcraft.api.robots.EntityRobotBase; import buildcraft.core.utils.IBlockFilter; -import buildcraft.core.utils.PathFinding; -import buildcraft.core.utils.PathFindingJob; +import buildcraft.core.utils.concurrency.IterableAlgorithmRunner; +import buildcraft.core.utils.concurrency.PathFindingSearch; public class AIRobotSearchBlock extends AIRobot { public BlockIndex blockFound; public LinkedList path; - private PathFinding blockScanner = null; - private PathFindingJob blockScannerJob; + private PathFindingSearch blockScanner = null; + private IterableAlgorithmRunner blockScannerJob; private IBlockFilter pathFound; - private int stopBefore = 0; public AIRobotSearchBlock(EntityRobotBase iRobot) { super(iRobot); @@ -36,13 +35,12 @@ public class AIRobotSearchBlock extends AIRobot { super(iRobot); pathFound = iPathFound; - stopBefore = 0; } @Override public void start() { - blockScanner = new PathFinding(robot.worldObj, new BlockIndex(robot), pathFound, 64, robot.getZoneToWork()); - blockScannerJob = new PathFindingJob(blockScanner); + blockScanner = new PathFindingSearch(robot.worldObj, new BlockIndex(robot), pathFound, 64, robot.getZoneToWork()); + blockScannerJob = new IterableAlgorithmRunner(blockScanner, 40000); blockScannerJob.start(); } @@ -94,4 +92,8 @@ public class AIRobotSearchBlock extends AIRobot { blockFound = new BlockIndex(nbt.getCompoundTag("blockFound")); } } + + public void unreserve() { + blockScanner.unreserve(blockFound); + } } diff --git a/common/buildcraft/robots/boards/BoardRobotFarmer.java b/common/buildcraft/robots/boards/BoardRobotFarmer.java index 1f74889b..1afbbb56 100644 --- a/common/buildcraft/robots/boards/BoardRobotFarmer.java +++ b/common/buildcraft/robots/boards/BoardRobotFarmer.java @@ -20,13 +20,13 @@ import buildcraft.api.core.BuildCraftAPI; import buildcraft.api.robots.AIRobot; import buildcraft.api.robots.EntityRobotBase; import buildcraft.core.inventory.filters.IStackFilter; +import buildcraft.core.utils.IBlockFilter; +import buildcraft.robots.ResourceIdBlock; import buildcraft.robots.ai.AIRobotFetchAndEquipItemStack; import buildcraft.robots.ai.AIRobotGotoBlock; import buildcraft.robots.ai.AIRobotGotoSleep; import buildcraft.robots.ai.AIRobotSearchBlock; import buildcraft.robots.ai.AIRobotUseToolOnBlock; -import buildcraft.core.utils.IBlockFilter; -import buildcraft.robots.ResourceIdBlock; import buildcraft.robots.RobotRegistry; public class BoardRobotFarmer extends RedstoneBoardRobot { @@ -71,6 +71,7 @@ public class BoardRobotFarmer extends RedstoneBoardRobot { if (searchAI.blockFound != null && RobotRegistry.getRegistry(robot.worldObj).take( new ResourceIdBlock(searchAI.blockFound), robot)) { + ((AIRobotSearchBlock) ai).unreserve(); if (blockFound != null) { robot.getRegistry().release(new ResourceIdBlock(blockFound)); @@ -79,11 +80,12 @@ public class BoardRobotFarmer extends RedstoneBoardRobot { blockFound = searchAI.blockFound; startDelegateAI(new AIRobotGotoBlock(robot, searchAI.path)); } else { + if (searchAI.blockFound != null) { + ((AIRobotSearchBlock) ai).unreserve(); + } startDelegateAI(new AIRobotGotoSleep(robot)); } } else if (ai instanceof AIRobotGotoBlock) { - AIRobotGotoBlock gotoBlock = (AIRobotGotoBlock) ai; - startDelegateAI(new AIRobotUseToolOnBlock(robot, blockFound)); } else if (ai instanceof AIRobotFetchAndEquipItemStack) { if (robot.getHeldItem() == null) { diff --git a/common/buildcraft/robots/boards/BoardRobotGenericBreakBlock.java b/common/buildcraft/robots/boards/BoardRobotGenericBreakBlock.java index f403f673..6228c6c5 100644 --- a/common/buildcraft/robots/boards/BoardRobotGenericBreakBlock.java +++ b/common/buildcraft/robots/boards/BoardRobotGenericBreakBlock.java @@ -23,13 +23,13 @@ import buildcraft.api.robots.EntityRobotBase; import buildcraft.api.statements.IStatementParameter; import buildcraft.api.statements.StatementParameterItemStack; import buildcraft.core.inventory.filters.IStackFilter; +import buildcraft.core.utils.IBlockFilter; import buildcraft.robots.ai.AIRobotBreak; import buildcraft.robots.ai.AIRobotFetchAndEquipItemStack; import buildcraft.robots.ai.AIRobotGotoBlock; import buildcraft.robots.ai.AIRobotGotoSleep; import buildcraft.robots.ai.AIRobotSearchBlock; import buildcraft.robots.DockingStation; -import buildcraft.core.utils.IBlockFilter; import buildcraft.robots.ResourceIdBlock; import buildcraft.robots.statements.ActionRobotFilter; import buildcraft.transport.gates.ActionIterator; @@ -104,6 +104,7 @@ public abstract class BoardRobotGenericBreakBlock extends RedstoneBoardRobot { if (robot.getRegistry().take(new ResourceIdBlock(indexStored), robot)) { startDelegateAI(new AIRobotGotoBlock(robot, ((AIRobotSearchBlock) ai).path)); } + ((AIRobotSearchBlock) ai).unreserve(); } } else if (ai instanceof AIRobotGotoBlock) { startDelegateAI(new AIRobotBreak(robot, indexStored)); diff --git a/common/buildcraft/robots/boards/BoardRobotPlanter.java b/common/buildcraft/robots/boards/BoardRobotPlanter.java index e9d0d393..c7db83a2 100644 --- a/common/buildcraft/robots/boards/BoardRobotPlanter.java +++ b/common/buildcraft/robots/boards/BoardRobotPlanter.java @@ -31,15 +31,14 @@ import buildcraft.core.inventory.filters.ArrayStackFilter; import buildcraft.core.inventory.filters.ArrayStackOrListFilter; import buildcraft.core.inventory.filters.CompositeFilter; import buildcraft.core.inventory.filters.IStackFilter; -import buildcraft.core.inventory.filters.OreStackFilter; import buildcraft.core.utils.IBlockFilter; +import buildcraft.robots.ResourceIdBlock; import buildcraft.robots.ai.AIRobotFetchAndEquipItemStack; import buildcraft.robots.ai.AIRobotGotoBlock; import buildcraft.robots.ai.AIRobotGotoRandomGroundBlock; import buildcraft.robots.ai.AIRobotGotoSleep; import buildcraft.robots.ai.AIRobotSearchBlock; import buildcraft.robots.ai.AIRobotUseToolOnBlock; -import buildcraft.robots.ResourceIdBlock; import buildcraft.robots.statements.ActionRobotFilter; public class BoardRobotPlanter extends RedstoneBoardRobot { @@ -140,10 +139,15 @@ public class BoardRobotPlanter extends RedstoneBoardRobot { robot.getRegistry().release(new ResourceIdBlock(blockFound)); } + ((AIRobotSearchBlock) ai).unreserve(); + blockFound = gotoBlock.blockFound; gotoBlock.path.removeLast(); startDelegateAI(new AIRobotGotoBlock(robot, gotoBlock.path)); } else { + if (gotoBlock.blockFound != null) { + gotoBlock.unreserve(); + } startDelegateAI(new AIRobotGotoSleep(robot)); } } else if (ai instanceof AIRobotGotoBlock) { diff --git a/common/buildcraft/robots/boards/BoardRobotPump.java b/common/buildcraft/robots/boards/BoardRobotPump.java index eabbb2bf..21e7abe3 100644 --- a/common/buildcraft/robots/boards/BoardRobotPump.java +++ b/common/buildcraft/robots/boards/BoardRobotPump.java @@ -28,14 +28,14 @@ import buildcraft.api.robots.AIRobot; import buildcraft.api.robots.EntityRobotBase; import buildcraft.api.statements.IStatementParameter; import buildcraft.api.statements.StatementParameterItemStack; +import buildcraft.core.utils.IBlockFilter; +import buildcraft.robots.DockingStation; +import buildcraft.robots.ResourceIdBlock; import buildcraft.robots.ai.AIRobotGotoBlock; import buildcraft.robots.ai.AIRobotGotoSleep; import buildcraft.robots.ai.AIRobotGotoStationAndUnloadFluids; import buildcraft.robots.ai.AIRobotPumpBlock; import buildcraft.robots.ai.AIRobotSearchBlock; -import buildcraft.robots.DockingStation; -import buildcraft.core.utils.IBlockFilter; -import buildcraft.robots.ResourceIdBlock; import buildcraft.robots.statements.ActionRobotFilter; import buildcraft.transport.gates.ActionIterator; import buildcraft.transport.gates.StatementSlot; @@ -92,6 +92,7 @@ public class BoardRobotPump extends RedstoneBoardRobot { } else { startDelegateAI(new AIRobotGotoBlock(robot, ((AIRobotSearchBlock) ai).path)); } + ((AIRobotSearchBlock) ai).unreserve(); } } else if (ai instanceof AIRobotGotoBlock) { if (!ai.success()) { From d362a062a932dbdb52c0ecf3f2dc7f36027e2caa Mon Sep 17 00:00:00 2001 From: Hea3veN Date: Tue, 3 Feb 2015 22:46:21 -0300 Subject: [PATCH 09/11] added a registry for the robot ResourceId classes --- api/buildcraft/api/robots/AIRobot.java | 10 +- api/buildcraft/api/robots/AIRobotManager.java | 49 -------- api/buildcraft/api/robots/ResourceId.java | 12 +- api/buildcraft/api/robots/RobotManager.java | 80 ++++++++++++ common/buildcraft/BuildCraftCore.java | 118 +++++++++--------- 5 files changed, 156 insertions(+), 113 deletions(-) delete mode 100644 api/buildcraft/api/robots/AIRobotManager.java create mode 100644 api/buildcraft/api/robots/RobotManager.java diff --git a/api/buildcraft/api/robots/AIRobot.java b/api/buildcraft/api/robots/AIRobot.java index f03b6ad3..68420eab 100755 --- a/api/buildcraft/api/robots/AIRobot.java +++ b/api/buildcraft/api/robots/AIRobot.java @@ -148,7 +148,7 @@ public class AIRobot { } public final void writeToNBT(NBTTagCompound nbt) { - nbt.setString("aiName", AIRobotManager.getAIRobotName(getClass())); + nbt.setString("aiName", RobotManager.getAIRobotName(getClass())); NBTTagCompound data = new NBTTagCompound(); writeSelfToNBT(data); @@ -172,9 +172,9 @@ public class AIRobot { Class aiRobotClass = null; if (sub.hasKey("class")) { // Migration support for 6.4.x - aiRobotClass = AIRobotManager.getAIRobotByLegacyClassName(sub.getString("class")); + aiRobotClass = RobotManager.getAIRobotByLegacyClassName(sub.getString("class")); } else { - aiRobotClass = AIRobotManager.getAIRobotByName(sub.getString("aiName")); + aiRobotClass = RobotManager.getAIRobotByName(sub.getString("aiName")); } delegateAI = (AIRobot) aiRobotClass.getConstructor(EntityRobotBase.class) .newInstance(robot); @@ -196,9 +196,9 @@ public class AIRobot { Class aiRobotClass = null; if (nbt.hasKey("class")) { // Migration support for 6.4.x - aiRobotClass = AIRobotManager.getAIRobotByLegacyClassName(nbt.getString("class")); + aiRobotClass = RobotManager.getAIRobotByLegacyClassName(nbt.getString("class")); } else { - aiRobotClass = AIRobotManager.getAIRobotByName(nbt.getString("aiName")); + aiRobotClass = RobotManager.getAIRobotByName(nbt.getString("aiName")); } ai = (AIRobot) aiRobotClass.getConstructor(EntityRobotBase.class) .newInstance(robot); diff --git a/api/buildcraft/api/robots/AIRobotManager.java b/api/buildcraft/api/robots/AIRobotManager.java deleted file mode 100644 index 927313c8..00000000 --- a/api/buildcraft/api/robots/AIRobotManager.java +++ /dev/null @@ -1,49 +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.api.robots; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; - -public abstract class AIRobotManager { - - public static ArrayList> aiRobots = new ArrayList>(); - private static Map, String> aiRobotsNames = - new HashMap, String>(); - private static Map> aiRobotsByNames = - new HashMap>(); - private static Map> aiRobotsByLegacyClassNames = - new HashMap>(); - - public static void registerAIRobot(Class aiRobot, String name) { - registerAIRobot(aiRobot, name, null); - } - - public static void registerAIRobot(Class pluggable, String name, String legacyClassName) { - aiRobots.add(pluggable); - aiRobotsByNames.put(name, pluggable); - aiRobotsNames.put(pluggable, name); - if(legacyClassName != null) { - aiRobotsByLegacyClassNames.put(legacyClassName, pluggable); - } - } - - public static Class getAIRobotByName(String pluggableName) { - return aiRobotsByNames.get(pluggableName); - } - - public static String getAIRobotName(Class aClass) { - return aiRobotsNames.get(aClass); - } - - public static Class getAIRobotByLegacyClassName(String string) { - return aiRobotsByLegacyClassNames.get(string); - } -} diff --git a/api/buildcraft/api/robots/ResourceId.java b/api/buildcraft/api/robots/ResourceId.java index a3fbf87e..ed353e16 100755 --- a/api/buildcraft/api/robots/ResourceId.java +++ b/api/buildcraft/api/robots/ResourceId.java @@ -47,7 +47,7 @@ public abstract class ResourceId { nbt.setTag("index", indexNBT); nbt.setByte("side", (byte) side.ordinal()); nbt.setInteger("localId", localId); - nbt.setString("class", getClass().getCanonicalName()); + nbt.setString("resourceName", RobotManager.getResourceIdName(getClass())); } protected void readFromNBT(NBTTagCompound nbt) { @@ -58,9 +58,15 @@ public abstract class ResourceId { public static ResourceId load(NBTTagCompound nbt) { try { - Class clas = Class.forName(nbt.getString("class")); + Class cls = null; + if (nbt.hasKey("class")) { + // Migration support for 6.4.x + cls = RobotManager.getResourceIdByLegacyClassName(nbt.getString("class")); + } else { + cls = RobotManager.getResourceIdByName("resourceName"); + } - ResourceId id = (ResourceId) clas.newInstance(); + ResourceId id = (ResourceId) cls.newInstance(); id.readFromNBT(nbt); return id; diff --git a/api/buildcraft/api/robots/RobotManager.java b/api/buildcraft/api/robots/RobotManager.java new file mode 100644 index 00000000..011d0676 --- /dev/null +++ b/api/buildcraft/api/robots/RobotManager.java @@ -0,0 +1,80 @@ +/** + * 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.api.robots; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +public abstract class RobotManager { + + public static ArrayList> aiRobots = new ArrayList>(); + private static Map, String> aiRobotsNames = + new HashMap, String>(); + private static Map> aiRobotsByNames = + new HashMap>(); + private static Map> aiRobotsByLegacyClassNames = + new HashMap>(); + + private static Map, String> resourceIdNames = + new HashMap, String>(); + private static Map> resourceIdByNames = + new HashMap>(); + private static Map> resourceIdLegacyClassNames = + new HashMap>(); + + public static void registerAIRobot(Class aiRobot, String name) { + registerAIRobot(aiRobot, name, null); + } + + public static void registerAIRobot(Class aiRobot, String name, String legacyClassName) { + aiRobots.add(aiRobot); + aiRobotsByNames.put(name, aiRobot); + aiRobotsNames.put(aiRobot, name); + if(legacyClassName != null) { + aiRobotsByLegacyClassNames.put(legacyClassName, aiRobot); + } + } + + public static Class getAIRobotByName(String aiRobotName) { + return aiRobotsByNames.get(aiRobotName); + } + + public static String getAIRobotName(Class aiRobotClass) { + return aiRobotsNames.get(aiRobotClass); + } + + public static Class getAIRobotByLegacyClassName(String aiRobotLegacyClassName) { + return aiRobotsByLegacyClassNames.get(aiRobotLegacyClassName); + } + + public static void registerResourceId(Class resourceId, String name) { + registerResourceId(resourceId, name, null); + } + + public static void registerResourceId(Class resourceId, String name, String legacyClassName) { + resourceIdByNames.put(name, resourceId); + resourceIdNames.put(resourceId, name); + if(legacyClassName != null) { + resourceIdLegacyClassNames.put(legacyClassName, resourceId); + } + } + + public static Class getResourceIdByName(String resourceIdName) { + return resourceIdByNames.get(resourceIdName); + } + + public static String getResourceIdName(Class resouceIdClass) { + return resourceIdNames.get(resouceIdClass); + } + + public static Class getResourceIdByLegacyClassName(String resourceIdLegacyClassName) { + return resourceIdLegacyClassNames.get(resourceIdLegacyClassName); + } +} diff --git a/common/buildcraft/BuildCraftCore.java b/common/buildcraft/BuildCraftCore.java index e4c21fd3..84636bd7 100644 --- a/common/buildcraft/BuildCraftCore.java +++ b/common/buildcraft/BuildCraftCore.java @@ -65,7 +65,7 @@ import buildcraft.api.core.IWorldProperty; import buildcraft.api.core.JavaTools; import buildcraft.api.fuels.BuildcraftFuelRegistry; import buildcraft.api.recipes.BuildcraftRecipeRegistry; -import buildcraft.api.robots.AIRobotManager; +import buildcraft.api.robots.RobotManager; import buildcraft.api.statements.IActionExternal; import buildcraft.api.statements.IActionInternal; import buildcraft.api.statements.IStatement; @@ -125,6 +125,9 @@ import buildcraft.core.utils.WorldPropertyIsWood; import buildcraft.energy.fuels.CoolantManager; import buildcraft.energy.fuels.FuelManager; import buildcraft.robots.EntityRobot; +import buildcraft.robots.ResourceIdAssemblyTable; +import buildcraft.robots.ResourceIdBlock; +import buildcraft.robots.ResourceIdRequest; import buildcraft.robots.ai.AIRobotAttack; import buildcraft.robots.ai.AIRobotBreak; import buildcraft.robots.ai.AIRobotCraftAssemblyTable; @@ -411,61 +414,64 @@ public class BuildCraftCore extends BuildCraftMod { StatementManager.registerTriggerProvider(new DefaultTriggerProvider()); StatementManager.registerActionProvider(new DefaultActionProvider()); - AIRobotManager.registerAIRobot(AIRobotMain.class, "aiRobotMain","buildcraft.core.robots.AIRobotMain"); - AIRobotManager.registerAIRobot(BoardRobotBomber.class, "boardRobotBomber", "buildcraft.core.robots.boards.BoardRobotBomber"); - AIRobotManager.registerAIRobot(BoardRobotBuilder.class, "boardRobotBuilder", "buildcraft.core.robots.boards.BoardRobotBuilder"); - AIRobotManager.registerAIRobot(BoardRobotButcher.class, "boardRobotButcher", "buildcraft.core.robots.boards.BoardRobotButcher"); - AIRobotManager.registerAIRobot(BoardRobotCarrier.class, "boardRobotCarrier", "buildcraft.core.robots.boards.BoardRobotCarrier"); - AIRobotManager.registerAIRobot(BoardRobotCrafter.class, "boardRobotCrafter", "buildcraft.core.robots.boards.BoardRobotCrafter"); - AIRobotManager.registerAIRobot(BoardRobotDelivery.class, "boardRobotDelivery", "buildcraft.core.robots.boards.BoardRobotDelivery"); - AIRobotManager.registerAIRobot(BoardRobotFarmer.class, "boardRobotFarmer", "buildcraft.core.robots.boards.BoardRobotFarmer"); - AIRobotManager.registerAIRobot(BoardRobotFluidCarrier.class, "boardRobotFluidCarrier", "buildcraft.core.robots.boards.BoardRobotFluidCarrier"); - AIRobotManager.registerAIRobot(BoardRobotHarvester.class, "boardRobotHarvester", "buildcraft.core.robots.boards.BoardRobotHarvester"); - AIRobotManager.registerAIRobot(BoardRobotKnight.class, "boardRobotKnight", "buildcraft.core.robots.boards.BoardRobotKnight"); - AIRobotManager.registerAIRobot(BoardRobotLeaveCutter.class, "boardRobotLeaveCutter", "buildcraft.core.robots.boards.BoardRobotLeaveCutter"); - AIRobotManager.registerAIRobot(BoardRobotLumberjack.class, "boardRobotLumberjack", "buildcraft.core.robots.boards.BoardRobotLumberjack"); - AIRobotManager.registerAIRobot(BoardRobotMiner.class, "boardRobotMiner", "buildcraft.core.robots.boards.BoardRobotMiner"); - AIRobotManager.registerAIRobot(BoardRobotPicker.class, "boardRobotPicker", "buildcraft.core.robots.boards.BoardRobotPicker"); - AIRobotManager.registerAIRobot(BoardRobotPlanter.class, "boardRobotPlanter", "buildcraft.core.robots.boards.BoardRobotPlanter"); - AIRobotManager.registerAIRobot(BoardRobotPump.class, "boardRobotPump", "buildcraft.core.robots.boards.BoardRobotPump"); - AIRobotManager.registerAIRobot(BoardRobotShovelman.class, "boardRobotShovelman", "buildcraft.core.robots.boards.BoardRobotShovelman"); - AIRobotManager.registerAIRobot(AIRobotAttack.class, "aiRobotAttack", "buildcraft.core.robots.AIRobotAttack"); - AIRobotManager.registerAIRobot(AIRobotBreak.class, "aiRobotBreak", "buildcraft.core.robots.AIRobotBreak"); - AIRobotManager.registerAIRobot(AIRobotCraftAssemblyTable.class, "aiRobotCraftAssemblyTable", "buildcraft.core.robots.AIRobotCraftAssemblyTable"); - AIRobotManager.registerAIRobot(AIRobotCraftFurnace.class, "aiRobotCraftFurnace", "buildcraft.core.robots.AIRobotCraftFurnace"); - AIRobotManager.registerAIRobot(AIRobotCraftWorkbench.class, "aiRobotCraftWorkbench", "buildcraft.core.robots.AIRobotCraftWorkbench"); - AIRobotManager.registerAIRobot(AIRobotDeliverRequested.class, "aiRobotDeliverRequested", "buildcraft.core.robots.AIRobotDeliverRequested"); - AIRobotManager.registerAIRobot(AIRobotDisposeItems.class, "aiRobotDisposeItems", "buildcraft.core.robots.AIRobotDisposeItems"); - AIRobotManager.registerAIRobot(AIRobotFetchAndEquipItemStack.class, "aiRobotFetchAndEquipItemStack", "buildcraft.core.robots.AIRobotFetchAndEquipItemStack"); - AIRobotManager.registerAIRobot(AIRobotFetchItem.class, "aiRobotFetchItem", "buildcraft.core.robots.AIRobotFetchItem"); - AIRobotManager.registerAIRobot(AIRobotGoAndLinkToDock.class, "aiRobotGoAndLinkToDock", "buildcraft.core.robots.AIRobotGoAndLinkToDock"); - AIRobotManager.registerAIRobot(AIRobotGoto.class, "aiRobotGoto", "buildcraft.core.robots.AIRobotGoto"); - AIRobotManager.registerAIRobot(AIRobotGotoBlock.class, "aiRobotGotoBlock", "buildcraft.core.robots.AIRobotGotoBlock"); - AIRobotManager.registerAIRobot(AIRobotGotoRandomGroundBlock.class, "aiRobotGotoRandomGroundBlock", "buildcraft.core.robots.AIRobotGotoRandomGroundBlock"); - AIRobotManager.registerAIRobot(AIRobotGotoSleep.class, "aiRobotGotoSleep", "buildcraft.core.robots.AIRobotGotoSleep"); - AIRobotManager.registerAIRobot(AIRobotGotoStation.class, "aiRobotGotoStation", "buildcraft.core.robots.AIRobotGotoStation"); - AIRobotManager.registerAIRobot(AIRobotGotoStationAndLoad.class, "aiRobotGotoStationAndLoad", "buildcraft.core.robots.AIRobotGotoStationAndLoad"); - AIRobotManager.registerAIRobot(AIRobotGotoStationAndLoadFluids.class, "aiRobotGotoStationAndLoadFluids", "buildcraft.core.robots.AIRobotGotoStationAndLoadFluids"); - AIRobotManager.registerAIRobot(AIRobotGotoStationAndUnload.class, "aiRobotGotoStationAndUnload", "buildcraft.core.robots.AIRobotGotoStationAndUnload"); - AIRobotManager.registerAIRobot(AIRobotGotoStationToLoad.class, "aiRobotGotoStationToLoad", "buildcraft.core.robots.AIRobotGotoStationToLoad"); - AIRobotManager.registerAIRobot(AIRobotGotoStationToLoadFluids.class, "aiRobotGotoStationToLoadFluids", "buildcraft.core.robots.AIRobotGotoStationToLoadFluids"); - AIRobotManager.registerAIRobot(AIRobotGotoStationToUnload.class, "aiRobotGotoStationToUnload", "buildcraft.core.robots.AIRobotGotoStationToUnload"); - AIRobotManager.registerAIRobot(AIRobotGotoStationToUnloadFluids.class, "aiRobotGotoStationToUnloadFluids", "buildcraft.core.robots.AIRobotGotoStationToUnloadFluids"); - AIRobotManager.registerAIRobot(AIRobotLoad.class, "aiRobotLoad", "buildcraft.core.robots.AIRobotLoad"); - AIRobotManager.registerAIRobot(AIRobotLoadFluids.class, "aiRobotLoadFluids", "buildcraft.core.robots.AIRobotLoadFluids"); - AIRobotManager.registerAIRobot(AIRobotPumpBlock.class, "aiRobotPumpBlock", "buildcraft.core.robots.AIRobotPumpBlock"); - AIRobotManager.registerAIRobot(AIRobotRecharge.class, "aiRobotRecharge", "buildcraft.core.robots.AIRobotRecharge"); - AIRobotManager.registerAIRobot(AIRobotSearchAndGotoStation.class, "aiRobotSearchAndGotoStation", "buildcraft.core.robots.AIRobotSearchAndGotoStation"); - AIRobotManager.registerAIRobot(AIRobotSearchBlock.class, "aiRobotSearchBlock", "buildcraft.core.robots.AIRobotSearchBlock"); - AIRobotManager.registerAIRobot(AIRobotSearchEntity.class, "aiRobotSearchEntity", "buildcraft.core.robots.AIRobotSearchEntity"); - AIRobotManager.registerAIRobot(AIRobotSearchRandomGroundBlock.class, "aiRobotSearchRandomGroundBlock", "buildcraft.core.robots.AIRobotSearchRandomGroundBlock"); - AIRobotManager.registerAIRobot(AIRobotSearchStackRequest.class, "aiRobotSearchStackRequest", "buildcraft.core.robots.AIRobotSearchStackRequest"); - AIRobotManager.registerAIRobot(AIRobotSearchStation.class, "aiRobotSearchStation", "buildcraft.core.robots.AIRobotSearchStation"); - AIRobotManager.registerAIRobot(AIRobotSleep.class, "aiRobotSleep", "buildcraft.core.robots.AIRobotSleep"); - AIRobotManager.registerAIRobot(AIRobotStraightMoveTo.class, "aiRobotStraightMoveTo", "buildcraft.core.robots.AIRobotStraightMoveTo"); - AIRobotManager.registerAIRobot(AIRobotUnload.class, "aiRobotUnload", "buildcraft.core.robots.AIRobotUnload"); - AIRobotManager.registerAIRobot(AIRobotUnloadFluids.class, "aiRobotUnloadFluids", "buildcraft.core.robots.AIRobotUnloadFluids"); - AIRobotManager.registerAIRobot(AIRobotUseToolOnBlock.class, "aiRobotUseToolOnBlock", "buildcraft.core.robots.AIRobotUseToolOnBlock"); + RobotManager.registerAIRobot(AIRobotMain.class, "aiRobotMain", "buildcraft.core.robots.AIRobotMain"); + RobotManager.registerAIRobot(BoardRobotBomber.class, "boardRobotBomber", "buildcraft.core.robots.boards.BoardRobotBomber"); + RobotManager.registerAIRobot(BoardRobotBuilder.class, "boardRobotBuilder", "buildcraft.core.robots.boards.BoardRobotBuilder"); + RobotManager.registerAIRobot(BoardRobotButcher.class, "boardRobotButcher", "buildcraft.core.robots.boards.BoardRobotButcher"); + RobotManager.registerAIRobot(BoardRobotCarrier.class, "boardRobotCarrier", "buildcraft.core.robots.boards.BoardRobotCarrier"); + RobotManager.registerAIRobot(BoardRobotCrafter.class, "boardRobotCrafter", "buildcraft.core.robots.boards.BoardRobotCrafter"); + RobotManager.registerAIRobot(BoardRobotDelivery.class, "boardRobotDelivery", "buildcraft.core.robots.boards.BoardRobotDelivery"); + RobotManager.registerAIRobot(BoardRobotFarmer.class, "boardRobotFarmer", "buildcraft.core.robots.boards.BoardRobotFarmer"); + RobotManager.registerAIRobot(BoardRobotFluidCarrier.class, "boardRobotFluidCarrier", "buildcraft.core.robots.boards.BoardRobotFluidCarrier"); + RobotManager.registerAIRobot(BoardRobotHarvester.class, "boardRobotHarvester", "buildcraft.core.robots.boards.BoardRobotHarvester"); + RobotManager.registerAIRobot(BoardRobotKnight.class, "boardRobotKnight", "buildcraft.core.robots.boards.BoardRobotKnight"); + RobotManager.registerAIRobot(BoardRobotLeaveCutter.class, "boardRobotLeaveCutter", "buildcraft.core.robots.boards.BoardRobotLeaveCutter"); + RobotManager.registerAIRobot(BoardRobotLumberjack.class, "boardRobotLumberjack", "buildcraft.core.robots.boards.BoardRobotLumberjack"); + RobotManager.registerAIRobot(BoardRobotMiner.class, "boardRobotMiner", "buildcraft.core.robots.boards.BoardRobotMiner"); + RobotManager.registerAIRobot(BoardRobotPicker.class, "boardRobotPicker", "buildcraft.core.robots.boards.BoardRobotPicker"); + RobotManager.registerAIRobot(BoardRobotPlanter.class, "boardRobotPlanter", "buildcraft.core.robots.boards.BoardRobotPlanter"); + RobotManager.registerAIRobot(BoardRobotPump.class, "boardRobotPump", "buildcraft.core.robots.boards.BoardRobotPump"); + RobotManager.registerAIRobot(BoardRobotShovelman.class, "boardRobotShovelman", "buildcraft.core.robots.boards.BoardRobotShovelman"); + RobotManager.registerAIRobot(AIRobotAttack.class, "aiRobotAttack", "buildcraft.core.robots.AIRobotAttack"); + RobotManager.registerAIRobot(AIRobotBreak.class, "aiRobotBreak", "buildcraft.core.robots.AIRobotBreak"); + RobotManager.registerAIRobot(AIRobotCraftAssemblyTable.class, "aiRobotCraftAssemblyTable", "buildcraft.core.robots.AIRobotCraftAssemblyTable"); + RobotManager.registerAIRobot(AIRobotCraftFurnace.class, "aiRobotCraftFurnace", "buildcraft.core.robots.AIRobotCraftFurnace"); + RobotManager.registerAIRobot(AIRobotCraftWorkbench.class, "aiRobotCraftWorkbench", "buildcraft.core.robots.AIRobotCraftWorkbench"); + RobotManager.registerAIRobot(AIRobotDeliverRequested.class, "aiRobotDeliverRequested", "buildcraft.core.robots.AIRobotDeliverRequested"); + RobotManager.registerAIRobot(AIRobotDisposeItems.class, "aiRobotDisposeItems", "buildcraft.core.robots.AIRobotDisposeItems"); + RobotManager.registerAIRobot(AIRobotFetchAndEquipItemStack.class, "aiRobotFetchAndEquipItemStack", "buildcraft.core.robots.AIRobotFetchAndEquipItemStack"); + RobotManager.registerAIRobot(AIRobotFetchItem.class, "aiRobotFetchItem", "buildcraft.core.robots.AIRobotFetchItem"); + RobotManager.registerAIRobot(AIRobotGoAndLinkToDock.class, "aiRobotGoAndLinkToDock", "buildcraft.core.robots.AIRobotGoAndLinkToDock"); + RobotManager.registerAIRobot(AIRobotGoto.class, "aiRobotGoto", "buildcraft.core.robots.AIRobotGoto"); + RobotManager.registerAIRobot(AIRobotGotoBlock.class, "aiRobotGotoBlock", "buildcraft.core.robots.AIRobotGotoBlock"); + RobotManager.registerAIRobot(AIRobotGotoRandomGroundBlock.class, "aiRobotGotoRandomGroundBlock", "buildcraft.core.robots.AIRobotGotoRandomGroundBlock"); + RobotManager.registerAIRobot(AIRobotGotoSleep.class, "aiRobotGotoSleep", "buildcraft.core.robots.AIRobotGotoSleep"); + RobotManager.registerAIRobot(AIRobotGotoStation.class, "aiRobotGotoStation", "buildcraft.core.robots.AIRobotGotoStation"); + RobotManager.registerAIRobot(AIRobotGotoStationAndLoad.class, "aiRobotGotoStationAndLoad", "buildcraft.core.robots.AIRobotGotoStationAndLoad"); + RobotManager.registerAIRobot(AIRobotGotoStationAndLoadFluids.class, "aiRobotGotoStationAndLoadFluids", "buildcraft.core.robots.AIRobotGotoStationAndLoadFluids"); + RobotManager.registerAIRobot(AIRobotGotoStationAndUnload.class, "aiRobotGotoStationAndUnload", "buildcraft.core.robots.AIRobotGotoStationAndUnload"); + RobotManager.registerAIRobot(AIRobotGotoStationToLoad.class, "aiRobotGotoStationToLoad", "buildcraft.core.robots.AIRobotGotoStationToLoad"); + RobotManager.registerAIRobot(AIRobotGotoStationToLoadFluids.class, "aiRobotGotoStationToLoadFluids", "buildcraft.core.robots.AIRobotGotoStationToLoadFluids"); + RobotManager.registerAIRobot(AIRobotGotoStationToUnload.class, "aiRobotGotoStationToUnload", "buildcraft.core.robots.AIRobotGotoStationToUnload"); + RobotManager.registerAIRobot(AIRobotGotoStationToUnloadFluids.class, "aiRobotGotoStationToUnloadFluids", "buildcraft.core.robots.AIRobotGotoStationToUnloadFluids"); + RobotManager.registerAIRobot(AIRobotLoad.class, "aiRobotLoad", "buildcraft.core.robots.AIRobotLoad"); + RobotManager.registerAIRobot(AIRobotLoadFluids.class, "aiRobotLoadFluids", "buildcraft.core.robots.AIRobotLoadFluids"); + RobotManager.registerAIRobot(AIRobotPumpBlock.class, "aiRobotPumpBlock", "buildcraft.core.robots.AIRobotPumpBlock"); + RobotManager.registerAIRobot(AIRobotRecharge.class, "aiRobotRecharge", "buildcraft.core.robots.AIRobotRecharge"); + RobotManager.registerAIRobot(AIRobotSearchAndGotoStation.class, "aiRobotSearchAndGotoStation", "buildcraft.core.robots.AIRobotSearchAndGotoStation"); + RobotManager.registerAIRobot(AIRobotSearchBlock.class, "aiRobotSearchBlock", "buildcraft.core.robots.AIRobotSearchBlock"); + RobotManager.registerAIRobot(AIRobotSearchEntity.class, "aiRobotSearchEntity", "buildcraft.core.robots.AIRobotSearchEntity"); + RobotManager.registerAIRobot(AIRobotSearchRandomGroundBlock.class, "aiRobotSearchRandomGroundBlock", "buildcraft.core.robots.AIRobotSearchRandomGroundBlock"); + RobotManager.registerAIRobot(AIRobotSearchStackRequest.class, "aiRobotSearchStackRequest", "buildcraft.core.robots.AIRobotSearchStackRequest"); + RobotManager.registerAIRobot(AIRobotSearchStation.class, "aiRobotSearchStation", "buildcraft.core.robots.AIRobotSearchStation"); + RobotManager.registerAIRobot(AIRobotSleep.class, "aiRobotSleep", "buildcraft.core.robots.AIRobotSleep"); + RobotManager.registerAIRobot(AIRobotStraightMoveTo.class, "aiRobotStraightMoveTo", "buildcraft.core.robots.AIRobotStraightMoveTo"); + RobotManager.registerAIRobot(AIRobotUnload.class, "aiRobotUnload", "buildcraft.core.robots.AIRobotUnload"); + RobotManager.registerAIRobot(AIRobotUnloadFluids.class, "aiRobotUnloadFluids", "buildcraft.core.robots.AIRobotUnloadFluids"); + RobotManager.registerAIRobot(AIRobotUseToolOnBlock.class, "aiRobotUseToolOnBlock", "buildcraft.core.robots.AIRobotUseToolOnBlock"); + RobotManager.registerResourceId(ResourceIdAssemblyTable.class, "resourceIdAssemblyTable", "buildcraft.core.robots.ResourceIdAssemblyTable"); + RobotManager.registerResourceId(ResourceIdBlock.class, "resourceIdBlock", "buildcraft.core.robots.ResourceIdBlock"); + RobotManager.registerResourceId(ResourceIdRequest.class, "resourceIdRequest", "buildcraft.core.robots.ResourceIdRequest"); if (BuildCraftCore.modifyWorld) { MinecraftForge.EVENT_BUS.register(new SpringPopulate()); From 2afa5ceea46cdcc5d6de0723d665a8b9d53ad12e Mon Sep 17 00:00:00 2001 From: Hea3veN Date: Wed, 4 Feb 2015 00:03:17 -0300 Subject: [PATCH 10/11] fix style --- api/buildcraft/api/filler/IFillerPattern.java | 4 --- api/buildcraft/api/robots/RobotManager.java | 4 +-- .../transport/pluggable/IFacadePluggable.java | 11 +++--- common/buildcraft/BuildCraftSilicon.java | 34 +++++++++---------- common/buildcraft/BuildCraftTransport.java | 9 ++--- common/buildcraft/builders/TileBuilder.java | 2 +- common/buildcraft/builders/gui/GuiFiller.java | 4 --- .../buildcraft/commander/TileRequester.java | 2 +- common/buildcraft/core/InterModComms.java | 6 ++-- .../core/gui/StatementParameterSlot.java | 2 -- common/buildcraft/core/gui/StatementSlot.java | 2 -- .../core/proxy/CoreProxyClient.java | 2 +- .../utils/concurrency/IIterableAlgorithm.java | 4 +-- common/buildcraft/robots/ItemRobot.java | 1 - .../robots/RobotIntegrationRecipe.java | 1 - common/buildcraft/robots/RobotUtils.java | 3 +- .../robots/ai/AIRobotCraftAssemblyTable.java | 4 +-- .../robots/boards/BoardRobotBomber.java | 2 +- .../robots/boards/BoardRobotButcher.java | 2 +- .../robots/boards/BoardRobotFarmer.java | 2 +- .../boards/BoardRobotGenericBreakBlock.java | 4 +-- .../robots/boards/BoardRobotKnight.java | 2 +- .../robots/boards/BoardRobotPickerNBT.java | 2 +- .../buildcraft/robots/render/RenderRobot.java | 2 +- .../robots/statements/ActionRobotFilter.java | 2 +- .../statements/ActionRobotGotoStation.java | 10 +++--- .../ActionStationAcceptItemsInv.java | 2 +- .../ActionStationAcceptItemsPipe.java | 2 +- .../statements/ActionStationForbidRobot.java | 4 +-- .../statements/ActionStationInputItems.java | 2 +- .../statements/ActionStationRequestItems.java | 2 +- .../statements/RobotsActionProvider.java | 1 - .../statements/RobotsTriggerProvider.java | 2 -- .../robots/statements/TriggerRobotSleep.java | 11 +++--- .../buildcraft/silicon/TileAssemblyTable.java | 4 +-- .../transport/BlockGenericPipe.java | 8 ++--- common/buildcraft/transport/ItemFacade.java | 3 +- .../transport/render/FacadeBlockAccess.java | 1 - .../transport/render/FacadeRenderHelper.java | 1 - 39 files changed, 73 insertions(+), 93 deletions(-) diff --git a/api/buildcraft/api/filler/IFillerPattern.java b/api/buildcraft/api/filler/IFillerPattern.java index da463747..c18e5c2a 100644 --- a/api/buildcraft/api/filler/IFillerPattern.java +++ b/api/buildcraft/api/filler/IFillerPattern.java @@ -8,10 +8,6 @@ */ package buildcraft.api.filler; -import net.minecraft.util.IIcon; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import buildcraft.api.statements.IStatement; public interface IFillerPattern extends IStatement { diff --git a/api/buildcraft/api/robots/RobotManager.java b/api/buildcraft/api/robots/RobotManager.java index 011d0676..0191b80d 100644 --- a/api/buildcraft/api/robots/RobotManager.java +++ b/api/buildcraft/api/robots/RobotManager.java @@ -37,7 +37,7 @@ public abstract class RobotManager { aiRobots.add(aiRobot); aiRobotsByNames.put(name, aiRobot); aiRobotsNames.put(aiRobot, name); - if(legacyClassName != null) { + if (legacyClassName != null) { aiRobotsByLegacyClassNames.put(legacyClassName, aiRobot); } } @@ -61,7 +61,7 @@ public abstract class RobotManager { public static void registerResourceId(Class resourceId, String name, String legacyClassName) { resourceIdByNames.put(name, resourceId); resourceIdNames.put(resourceId, name); - if(legacyClassName != null) { + if (legacyClassName != null) { resourceIdLegacyClassNames.put(legacyClassName, resourceId); } } diff --git a/api/buildcraft/api/transport/pluggable/IFacadePluggable.java b/api/buildcraft/api/transport/pluggable/IFacadePluggable.java index 08ae33f7..6289714a 100644 --- a/api/buildcraft/api/transport/pluggable/IFacadePluggable.java +++ b/api/buildcraft/api/transport/pluggable/IFacadePluggable.java @@ -3,8 +3,11 @@ package buildcraft.api.transport.pluggable; import net.minecraft.block.Block; public interface IFacadePluggable { - public Block getCurrentBlock(); - public int getCurrentMetadata(); - public boolean isTransparent(); - public boolean isHollow(); + Block getCurrentBlock(); + + int getCurrentMetadata(); + + boolean isTransparent(); + + boolean isHollow(); } diff --git a/common/buildcraft/BuildCraftSilicon.java b/common/buildcraft/BuildCraftSilicon.java index abc1ecae..cea3d6a9 100644 --- a/common/buildcraft/BuildCraftSilicon.java +++ b/common/buildcraft/BuildCraftSilicon.java @@ -42,10 +42,10 @@ import buildcraft.compat.CompatHooks; import buildcraft.core.DefaultProps; import buildcraft.core.InterModComms; import buildcraft.core.ItemBuildCraft; -import buildcraft.robots.ItemRobot; import buildcraft.core.Version; import buildcraft.core.network.BuildCraftChannelHandler; import buildcraft.core.proxy.CoreProxy; +import buildcraft.robots.ItemRobot; import buildcraft.robots.RobotIntegrationRecipe; import buildcraft.robots.boards.BoardRobotBomberNBT; import buildcraft.robots.boards.BoardRobotBuilderNBT; @@ -64,22 +64,6 @@ import buildcraft.robots.boards.BoardRobotPickerNBT; import buildcraft.robots.boards.BoardRobotPlanterNBT; import buildcraft.robots.boards.BoardRobotPumpNBT; import buildcraft.robots.boards.BoardRobotShovelmanNBT; -import buildcraft.silicon.BlockLaser; -import buildcraft.silicon.BlockLaserTable; -import buildcraft.silicon.GuiHandler; -import buildcraft.silicon.ItemLaserTable; -import buildcraft.silicon.ItemRedstoneBoard; -import buildcraft.silicon.ItemRedstoneChipset; -import buildcraft.silicon.ItemRedstoneChipset.Chipset; -import buildcraft.silicon.SiliconProxy; -import buildcraft.silicon.TileAdvancedCraftingTable; -import buildcraft.silicon.TileAssemblyTable; -import buildcraft.silicon.TileChargingTable; -import buildcraft.silicon.TileIntegrationTable; -import buildcraft.silicon.TileLaser; -import buildcraft.silicon.boards.BoardRecipe; -import buildcraft.silicon.boards.ImplRedstoneBoardRegistry; -import buildcraft.silicon.network.PacketHandlerSilicon; import buildcraft.robots.statements.ActionRobotFilter; import buildcraft.robots.statements.ActionRobotGotoStation; import buildcraft.robots.statements.ActionRobotWakeUp; @@ -96,6 +80,22 @@ import buildcraft.robots.statements.ActionStationRequestItemsMachine; import buildcraft.robots.statements.RobotsActionProvider; import buildcraft.robots.statements.RobotsTriggerProvider; import buildcraft.robots.statements.TriggerRobotSleep; +import buildcraft.silicon.BlockLaser; +import buildcraft.silicon.BlockLaserTable; +import buildcraft.silicon.GuiHandler; +import buildcraft.silicon.ItemLaserTable; +import buildcraft.silicon.ItemRedstoneBoard; +import buildcraft.silicon.ItemRedstoneChipset; +import buildcraft.silicon.ItemRedstoneChipset.Chipset; +import buildcraft.silicon.SiliconProxy; +import buildcraft.silicon.TileAdvancedCraftingTable; +import buildcraft.silicon.TileAssemblyTable; +import buildcraft.silicon.TileChargingTable; +import buildcraft.silicon.TileIntegrationTable; +import buildcraft.silicon.TileLaser; +import buildcraft.silicon.boards.BoardRecipe; +import buildcraft.silicon.boards.ImplRedstoneBoardRegistry; +import buildcraft.silicon.network.PacketHandlerSilicon; @Mod(name = "BuildCraft Silicon", version = Version.VERSION, useMetadata = false, modid = "BuildCraft|Silicon", dependencies = DefaultProps.DEPENDENCY_TRANSPORT) public class BuildCraftSilicon extends BuildCraftMod { diff --git a/common/buildcraft/BuildCraftTransport.java b/common/buildcraft/BuildCraftTransport.java index 374ad4c5..eafd99c9 100644 --- a/common/buildcraft/BuildCraftTransport.java +++ b/common/buildcraft/BuildCraftTransport.java @@ -56,6 +56,8 @@ import buildcraft.core.Version; import buildcraft.core.network.BuildCraftChannelHandler; import buildcraft.core.proxy.CoreProxy; import buildcraft.core.utils.ColorUtils; +import buildcraft.robots.ItemRobotStation; +import buildcraft.robots.RobotStationPluggable; import buildcraft.silicon.ItemRedstoneChipset.Chipset; import buildcraft.transport.BlockFilteredBuffer; import buildcraft.transport.BlockGenericPipe; @@ -120,10 +122,8 @@ import buildcraft.transport.pipes.PipePowerWood; import buildcraft.transport.pipes.PipeStructureCobblestone; import buildcraft.transport.pluggable.ItemLens; import buildcraft.transport.pluggable.ItemPlug; -import buildcraft.robots.ItemRobotStation; import buildcraft.transport.pluggable.LensPluggable; import buildcraft.transport.pluggable.PlugPluggable; -import buildcraft.robots.RobotStationPluggable; import buildcraft.transport.recipes.AdvancedFacadeRecipe; import buildcraft.transport.recipes.GateExpansionRecipe; import buildcraft.transport.recipes.GateLogicSwapRecipe; @@ -500,8 +500,9 @@ public class BuildCraftTransport extends BuildCraftMod { public void loadRecipes() { // Add base recipe for pipe waterproof. GameRegistry.addShapelessRecipe(new ItemStack(pipeWaterproof, 1), new ItemStack(Items.dye, 1, 2)); - if(additionalWaterproofingRecipe) - GameRegistry.addShapelessRecipe(new ItemStack(pipeWaterproof, 1), new ItemStack(Items.slime_ball, 1, 2)); + if (additionalWaterproofingRecipe) { + GameRegistry.addShapelessRecipe(new ItemStack(pipeWaterproof, 1), new ItemStack(Items.slime_ball, 1, 2)); + } // Add pipe recipes for (PipeRecipe pipe : pipeRecipes) { diff --git a/common/buildcraft/builders/TileBuilder.java b/common/buildcraft/builders/TileBuilder.java index 7afe5183..c6533f9b 100644 --- a/common/buildcraft/builders/TileBuilder.java +++ b/common/buildcraft/builders/TileBuilder.java @@ -64,9 +64,9 @@ import buildcraft.core.inventory.Transactor; import buildcraft.core.network.BuildCraftPacket; import buildcraft.core.network.CommandWriter; import buildcraft.core.network.PacketCommand; +import buildcraft.core.utils.Utils; import buildcraft.robots.ResourceIdRequest; import buildcraft.robots.RobotRegistry; -import buildcraft.core.utils.Utils; public class TileBuilder extends TileAbstractBuilder implements IHasWork, IFluidHandler, IRequestProvider, IControllable { diff --git a/common/buildcraft/builders/gui/GuiFiller.java b/common/buildcraft/builders/gui/GuiFiller.java index 99629a16..7b6f660a 100644 --- a/common/buildcraft/builders/gui/GuiFiller.java +++ b/common/buildcraft/builders/gui/GuiFiller.java @@ -9,9 +9,7 @@ package buildcraft.builders.gui; import net.minecraft.client.gui.GuiButton; -import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.inventory.IInventory; -import net.minecraft.util.IIcon; import net.minecraft.util.ResourceLocation; import buildcraft.api.filler.FillerManager; @@ -23,14 +21,12 @@ import buildcraft.core.DefaultProps; import buildcraft.core.builders.patterns.FillerPattern; import buildcraft.core.gui.AdvancedSlot; import buildcraft.core.gui.GuiAdvancedInterface; -import buildcraft.core.gui.GuiBuildCraft; import buildcraft.core.gui.GuiTools; import buildcraft.core.gui.StatementParameterSlot; import buildcraft.core.gui.StatementSlot; import buildcraft.core.gui.buttons.GuiBetterButton; import buildcraft.core.gui.buttons.StandardButtonTextureSets; import buildcraft.core.utils.StringUtils; -import buildcraft.transport.Pipe; public class GuiFiller extends GuiAdvancedInterface { class FillerParameterSlot extends StatementParameterSlot { diff --git a/common/buildcraft/commander/TileRequester.java b/common/buildcraft/commander/TileRequester.java index 5d1c0384..72021e8d 100755 --- a/common/buildcraft/commander/TileRequester.java +++ b/common/buildcraft/commander/TileRequester.java @@ -27,9 +27,9 @@ import buildcraft.core.inventory.StackHelper; import buildcraft.core.network.CommandWriter; import buildcraft.core.network.ICommandReceiver; import buildcraft.core.network.PacketCommand; +import buildcraft.core.utils.Utils; import buildcraft.robots.ResourceIdRequest; import buildcraft.robots.RobotRegistry; -import buildcraft.core.utils.Utils; public class TileRequester extends TileBuildCraft implements IInventory, IRequestProvider, ICommandReceiver { public static final int NB_ITEMS = 20; diff --git a/common/buildcraft/core/InterModComms.java b/common/buildcraft/core/InterModComms.java index b7bc10f7..637f6d27 100644 --- a/common/buildcraft/core/InterModComms.java +++ b/common/buildcraft/core/InterModComms.java @@ -11,8 +11,6 @@ package buildcraft.core; import java.util.ArrayList; import java.util.List; -import buildcraft.api.fuels.ICoolant; -import buildcraft.energy.fuels.CoolantManager; import com.google.common.base.Splitter; import com.google.common.base.Strings; import com.google.common.collect.Iterables; @@ -33,11 +31,13 @@ import net.minecraftforge.fluids.FluidStack; import buildcraft.BuildCraftTransport; import buildcraft.api.core.BCLog; +import buildcraft.api.fuels.ICoolant; import buildcraft.api.gates.GateExpansions; import buildcraft.api.gates.IGateExpansion; import buildcraft.core.recipes.AssemblyRecipeManager; import buildcraft.core.recipes.IntegrationRecipeManager; import buildcraft.core.recipes.RefineryRecipeManager; +import buildcraft.energy.fuels.CoolantManager; import buildcraft.energy.worldgen.OilPopulate; import buildcraft.transport.ItemFacade; import buildcraft.transport.recipes.GateExpansionRecipe; @@ -258,7 +258,7 @@ public final class InterModComms { public static void processCoolantAddIMC(IMCEvent event, IMCMessage m) { boolean failed = false; - if (!m.isNBTMessage()){ + if (!m.isNBTMessage()) { failed = true; } else { NBTTagCompound tag = m.getNBTValue(); diff --git a/common/buildcraft/core/gui/StatementParameterSlot.java b/common/buildcraft/core/gui/StatementParameterSlot.java index 00bd1830..719c3584 100644 --- a/common/buildcraft/core/gui/StatementParameterSlot.java +++ b/common/buildcraft/core/gui/StatementParameterSlot.java @@ -3,8 +3,6 @@ package buildcraft.core.gui; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import buildcraft.api.statements.IStatementParameter; -import buildcraft.transport.Pipe; -import buildcraft.transport.gui.GuiGateInterface; /** * Created by asie on 1/24/15. diff --git a/common/buildcraft/core/gui/StatementSlot.java b/common/buildcraft/core/gui/StatementSlot.java index 0e9ef022..37616ade 100644 --- a/common/buildcraft/core/gui/StatementSlot.java +++ b/common/buildcraft/core/gui/StatementSlot.java @@ -5,8 +5,6 @@ import net.minecraft.util.IIcon; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import buildcraft.api.statements.IStatement; -import buildcraft.transport.Pipe; -import buildcraft.transport.gui.GuiGateInterface; /** * Created by asie on 1/24/15. diff --git a/common/buildcraft/core/proxy/CoreProxyClient.java b/common/buildcraft/core/proxy/CoreProxyClient.java index 32884cd4..606bc954 100644 --- a/common/buildcraft/core/proxy/CoreProxyClient.java +++ b/common/buildcraft/core/proxy/CoreProxyClient.java @@ -34,10 +34,10 @@ import buildcraft.BuildCraftSilicon; import buildcraft.core.EntityBlock; import buildcraft.core.LaserKind; import buildcraft.core.render.RenderEntityBlock; -import buildcraft.robots.render.RenderRobot; import buildcraft.core.render.RenderingEntityBlocks; import buildcraft.core.render.RenderingMarkers; import buildcraft.robots.EntityRobot; +import buildcraft.robots.render.RenderRobot; import buildcraft.transport.render.TileEntityPickupFX; public class CoreProxyClient extends CoreProxy { diff --git a/common/buildcraft/core/utils/concurrency/IIterableAlgorithm.java b/common/buildcraft/core/utils/concurrency/IIterableAlgorithm.java index 4bfe6427..82b0272e 100644 --- a/common/buildcraft/core/utils/concurrency/IIterableAlgorithm.java +++ b/common/buildcraft/core/utils/concurrency/IIterableAlgorithm.java @@ -10,8 +10,8 @@ package buildcraft.core.utils.concurrency; public interface IIterableAlgorithm { - abstract void iterate(); + void iterate(); - abstract boolean isDone(); + boolean isDone(); } \ No newline at end of file diff --git a/common/buildcraft/robots/ItemRobot.java b/common/buildcraft/robots/ItemRobot.java index acd6fcb0..5b9fd035 100755 --- a/common/buildcraft/robots/ItemRobot.java +++ b/common/buildcraft/robots/ItemRobot.java @@ -30,7 +30,6 @@ import buildcraft.api.boards.RedstoneBoardRobotNBT; import buildcraft.api.robots.EntityRobotBase; import buildcraft.core.CreativeTabBuildCraft; import buildcraft.core.ItemBuildCraft; -import buildcraft.robots.EntityRobot; import buildcraft.core.utils.NBTUtils; public class ItemRobot extends ItemBuildCraft implements IEnergyContainerItem { diff --git a/common/buildcraft/robots/RobotIntegrationRecipe.java b/common/buildcraft/robots/RobotIntegrationRecipe.java index 821617ff..147229fa 100755 --- a/common/buildcraft/robots/RobotIntegrationRecipe.java +++ b/common/buildcraft/robots/RobotIntegrationRecipe.java @@ -12,7 +12,6 @@ import net.minecraft.item.ItemStack; import buildcraft.BuildCraftSilicon; import buildcraft.api.recipes.CraftingResult; -import buildcraft.robots.ItemRobot; import buildcraft.silicon.ItemRedstoneBoard; import buildcraft.silicon.TileIntegrationTable; import buildcraft.transport.recipes.IntegrationTableRecipe; diff --git a/common/buildcraft/robots/RobotUtils.java b/common/buildcraft/robots/RobotUtils.java index 1acdd83c..5631d944 100644 --- a/common/buildcraft/robots/RobotUtils.java +++ b/common/buildcraft/robots/RobotUtils.java @@ -2,12 +2,11 @@ package buildcraft.robots; import net.minecraftforge.common.util.ForgeDirection; import buildcraft.api.transport.IPipeTile; -import buildcraft.transport.TileGenericPipe; /** * Created by asie on 1/24/15. */ -public class RobotUtils { +public final class RobotUtils { private RobotUtils() { } diff --git a/common/buildcraft/robots/ai/AIRobotCraftAssemblyTable.java b/common/buildcraft/robots/ai/AIRobotCraftAssemblyTable.java index 56c8745c..81d954dd 100755 --- a/common/buildcraft/robots/ai/AIRobotCraftAssemblyTable.java +++ b/common/buildcraft/robots/ai/AIRobotCraftAssemblyTable.java @@ -34,10 +34,10 @@ import buildcraft.robots.IStationFilter; import buildcraft.robots.ResourceIdAssemblyTable; import buildcraft.robots.ResourceIdBlock; import buildcraft.robots.RobotRegistry; -import buildcraft.silicon.BlockLaserTable; -import buildcraft.silicon.TileAssemblyTable; import buildcraft.robots.statements.ActionRobotFilter; import buildcraft.robots.statements.ActionStationAllowCraft; +import buildcraft.silicon.BlockLaserTable; +import buildcraft.silicon.TileAssemblyTable; public class AIRobotCraftAssemblyTable extends AIRobotCraftGeneric { diff --git a/common/buildcraft/robots/boards/BoardRobotBomber.java b/common/buildcraft/robots/boards/BoardRobotBomber.java index 436d4571..edfb1bdd 100755 --- a/common/buildcraft/robots/boards/BoardRobotBomber.java +++ b/common/buildcraft/robots/boards/BoardRobotBomber.java @@ -24,11 +24,11 @@ import buildcraft.core.inventory.ITransactor; import buildcraft.core.inventory.Transactor; import buildcraft.core.inventory.filters.ArrayStackFilter; import buildcraft.core.inventory.filters.IStackFilter; +import buildcraft.core.utils.IBlockFilter; import buildcraft.robots.ai.AIRobotGotoBlock; import buildcraft.robots.ai.AIRobotGotoStationToLoad; import buildcraft.robots.ai.AIRobotLoad; import buildcraft.robots.ai.AIRobotSearchRandomGroundBlock; -import buildcraft.core.utils.IBlockFilter; public class BoardRobotBomber extends RedstoneBoardRobot { diff --git a/common/buildcraft/robots/boards/BoardRobotButcher.java b/common/buildcraft/robots/boards/BoardRobotButcher.java index 61baec29..39f1fbc0 100755 --- a/common/buildcraft/robots/boards/BoardRobotButcher.java +++ b/common/buildcraft/robots/boards/BoardRobotButcher.java @@ -18,11 +18,11 @@ import buildcraft.api.boards.RedstoneBoardRobotNBT; import buildcraft.api.robots.AIRobot; import buildcraft.api.robots.EntityRobotBase; import buildcraft.core.inventory.filters.IStackFilter; +import buildcraft.core.utils.IEntityFilter; import buildcraft.robots.ai.AIRobotAttack; import buildcraft.robots.ai.AIRobotFetchAndEquipItemStack; import buildcraft.robots.ai.AIRobotGotoSleep; import buildcraft.robots.ai.AIRobotSearchEntity; -import buildcraft.core.utils.IEntityFilter; public class BoardRobotButcher extends RedstoneBoardRobot { diff --git a/common/buildcraft/robots/boards/BoardRobotFarmer.java b/common/buildcraft/robots/boards/BoardRobotFarmer.java index 1afbbb56..63c0480b 100644 --- a/common/buildcraft/robots/boards/BoardRobotFarmer.java +++ b/common/buildcraft/robots/boards/BoardRobotFarmer.java @@ -22,12 +22,12 @@ import buildcraft.api.robots.EntityRobotBase; import buildcraft.core.inventory.filters.IStackFilter; import buildcraft.core.utils.IBlockFilter; import buildcraft.robots.ResourceIdBlock; +import buildcraft.robots.RobotRegistry; import buildcraft.robots.ai.AIRobotFetchAndEquipItemStack; import buildcraft.robots.ai.AIRobotGotoBlock; import buildcraft.robots.ai.AIRobotGotoSleep; import buildcraft.robots.ai.AIRobotSearchBlock; import buildcraft.robots.ai.AIRobotUseToolOnBlock; -import buildcraft.robots.RobotRegistry; public class BoardRobotFarmer extends RedstoneBoardRobot { diff --git a/common/buildcraft/robots/boards/BoardRobotGenericBreakBlock.java b/common/buildcraft/robots/boards/BoardRobotGenericBreakBlock.java index 6228c6c5..55fc50f7 100644 --- a/common/buildcraft/robots/boards/BoardRobotGenericBreakBlock.java +++ b/common/buildcraft/robots/boards/BoardRobotGenericBreakBlock.java @@ -24,13 +24,13 @@ import buildcraft.api.statements.IStatementParameter; import buildcraft.api.statements.StatementParameterItemStack; import buildcraft.core.inventory.filters.IStackFilter; import buildcraft.core.utils.IBlockFilter; +import buildcraft.robots.DockingStation; +import buildcraft.robots.ResourceIdBlock; import buildcraft.robots.ai.AIRobotBreak; import buildcraft.robots.ai.AIRobotFetchAndEquipItemStack; import buildcraft.robots.ai.AIRobotGotoBlock; import buildcraft.robots.ai.AIRobotGotoSleep; import buildcraft.robots.ai.AIRobotSearchBlock; -import buildcraft.robots.DockingStation; -import buildcraft.robots.ResourceIdBlock; import buildcraft.robots.statements.ActionRobotFilter; import buildcraft.transport.gates.ActionIterator; import buildcraft.transport.gates.StatementSlot; diff --git a/common/buildcraft/robots/boards/BoardRobotKnight.java b/common/buildcraft/robots/boards/BoardRobotKnight.java index bdb07bc7..fad0f148 100755 --- a/common/buildcraft/robots/boards/BoardRobotKnight.java +++ b/common/buildcraft/robots/boards/BoardRobotKnight.java @@ -18,11 +18,11 @@ import buildcraft.api.boards.RedstoneBoardRobotNBT; import buildcraft.api.robots.AIRobot; import buildcraft.api.robots.EntityRobotBase; import buildcraft.core.inventory.filters.IStackFilter; +import buildcraft.core.utils.IEntityFilter; import buildcraft.robots.ai.AIRobotAttack; import buildcraft.robots.ai.AIRobotFetchAndEquipItemStack; import buildcraft.robots.ai.AIRobotGotoSleep; import buildcraft.robots.ai.AIRobotSearchEntity; -import buildcraft.core.utils.IEntityFilter; public class BoardRobotKnight extends RedstoneBoardRobot { diff --git a/common/buildcraft/robots/boards/BoardRobotPickerNBT.java b/common/buildcraft/robots/boards/BoardRobotPickerNBT.java index 39684395..6703c6de 100755 --- a/common/buildcraft/robots/boards/BoardRobotPickerNBT.java +++ b/common/buildcraft/robots/boards/BoardRobotPickerNBT.java @@ -20,8 +20,8 @@ import net.minecraft.util.ResourceLocation; import buildcraft.api.boards.RedstoneBoardRobot; import buildcraft.api.boards.RedstoneBoardRobotNBT; import buildcraft.api.robots.EntityRobotBase; -import buildcraft.robots.EntityRobot; import buildcraft.core.utils.StringUtils; +import buildcraft.robots.EntityRobot; public final class BoardRobotPickerNBT extends RedstoneBoardRobotNBT { diff --git a/common/buildcraft/robots/render/RenderRobot.java b/common/buildcraft/robots/render/RenderRobot.java index 2124a2aa..ef5a42f4 100644 --- a/common/buildcraft/robots/render/RenderRobot.java +++ b/common/buildcraft/robots/render/RenderRobot.java @@ -31,8 +31,8 @@ import buildcraft.core.DefaultProps; import buildcraft.core.EntityLaser; import buildcraft.core.render.RenderLaser; import buildcraft.core.render.RenderUtils; -import buildcraft.robots.ItemRobot; import buildcraft.robots.EntityRobot; +import buildcraft.robots.ItemRobot; public class RenderRobot extends Render implements IItemRenderer { diff --git a/common/buildcraft/robots/statements/ActionRobotFilter.java b/common/buildcraft/robots/statements/ActionRobotFilter.java index b8c4c428..b45ba39e 100755 --- a/common/buildcraft/robots/statements/ActionRobotFilter.java +++ b/common/buildcraft/robots/statements/ActionRobotFilter.java @@ -29,9 +29,9 @@ import buildcraft.core.inventory.filters.IStackFilter; import buildcraft.core.inventory.filters.PassThroughFluidFilter; import buildcraft.core.inventory.filters.PassThroughStackFilter; import buildcraft.core.inventory.filters.StatementParameterStackFilter; -import buildcraft.robots.DockingStation; import buildcraft.core.statements.BCStatement; import buildcraft.core.utils.StringUtils; +import buildcraft.robots.DockingStation; import buildcraft.transport.Pipe; import buildcraft.transport.gates.ActionIterator; import buildcraft.transport.gates.StatementSlot; diff --git a/common/buildcraft/robots/statements/ActionRobotGotoStation.java b/common/buildcraft/robots/statements/ActionRobotGotoStation.java index 82c63bf0..2e43c076 100644 --- a/common/buildcraft/robots/statements/ActionRobotGotoStation.java +++ b/common/buildcraft/robots/statements/ActionRobotGotoStation.java @@ -21,15 +21,13 @@ import buildcraft.api.statements.IStatementParameter; import buildcraft.api.statements.StatementParameterItemStack; import buildcraft.api.transport.IPipeTile; import buildcraft.core.ItemMapLocation; -import buildcraft.robots.RobotUtils; -import buildcraft.robots.ai.AIRobotGoAndLinkToDock; +import buildcraft.core.statements.BCStatement; +import buildcraft.core.utils.StringUtils; import buildcraft.robots.DockingStation; import buildcraft.robots.EntityRobot; import buildcraft.robots.RobotRegistry; -import buildcraft.core.statements.BCStatement; -import buildcraft.core.utils.StringUtils; -import buildcraft.transport.Gate; -import buildcraft.transport.Pipe; +import buildcraft.robots.RobotUtils; +import buildcraft.robots.ai.AIRobotGoAndLinkToDock; public class ActionRobotGotoStation extends BCStatement implements IActionInternal { diff --git a/common/buildcraft/robots/statements/ActionStationAcceptItemsInv.java b/common/buildcraft/robots/statements/ActionStationAcceptItemsInv.java index 7b44b077..3007e9a8 100755 --- a/common/buildcraft/robots/statements/ActionStationAcceptItemsInv.java +++ b/common/buildcraft/robots/statements/ActionStationAcceptItemsInv.java @@ -20,9 +20,9 @@ import buildcraft.api.statements.IStatementParameter; import buildcraft.api.statements.StatementParameterItemStack; import buildcraft.core.inventory.ITransactor; import buildcraft.core.inventory.Transactor; +import buildcraft.core.utils.StringUtils; import buildcraft.robots.DockingStation; import buildcraft.robots.EntityRobot; -import buildcraft.core.utils.StringUtils; import buildcraft.transport.gates.StatementSlot; public class ActionStationAcceptItemsInv extends ActionStationInputItems { diff --git a/common/buildcraft/robots/statements/ActionStationAcceptItemsPipe.java b/common/buildcraft/robots/statements/ActionStationAcceptItemsPipe.java index 7b983fd8..1863c0ad 100755 --- a/common/buildcraft/robots/statements/ActionStationAcceptItemsPipe.java +++ b/common/buildcraft/robots/statements/ActionStationAcceptItemsPipe.java @@ -13,9 +13,9 @@ import net.minecraft.client.renderer.texture.IIconRegister; import buildcraft.api.core.IInvSlot; import buildcraft.api.statements.IStatementParameter; import buildcraft.api.statements.StatementParameterItemStack; +import buildcraft.core.utils.StringUtils; import buildcraft.robots.DockingStation; import buildcraft.robots.EntityRobot; -import buildcraft.core.utils.StringUtils; import buildcraft.transport.PipeTransportItems; import buildcraft.transport.TravelingItem; import buildcraft.transport.gates.StatementSlot; diff --git a/common/buildcraft/robots/statements/ActionStationForbidRobot.java b/common/buildcraft/robots/statements/ActionStationForbidRobot.java index b8c989d4..42f0203b 100755 --- a/common/buildcraft/robots/statements/ActionStationForbidRobot.java +++ b/common/buildcraft/robots/statements/ActionStationForbidRobot.java @@ -16,10 +16,10 @@ import buildcraft.api.statements.IActionInternal; import buildcraft.api.statements.IStatementContainer; import buildcraft.api.statements.IStatementParameter; import buildcraft.api.statements.StatementParameterItemStack; -import buildcraft.robots.ItemRobot; -import buildcraft.robots.DockingStation; import buildcraft.core.statements.BCStatement; import buildcraft.core.utils.StringUtils; +import buildcraft.robots.DockingStation; +import buildcraft.robots.ItemRobot; import buildcraft.transport.gates.ActionIterator; import buildcraft.transport.gates.StatementSlot; diff --git a/common/buildcraft/robots/statements/ActionStationInputItems.java b/common/buildcraft/robots/statements/ActionStationInputItems.java index 4db624f2..353d7e7e 100755 --- a/common/buildcraft/robots/statements/ActionStationInputItems.java +++ b/common/buildcraft/robots/statements/ActionStationInputItems.java @@ -13,9 +13,9 @@ import buildcraft.api.statements.IActionInternal; import buildcraft.api.statements.IStatementContainer; import buildcraft.api.statements.IStatementParameter; import buildcraft.core.inventory.filters.StatementParameterStackFilter; +import buildcraft.core.statements.BCStatement; import buildcraft.robots.DockingStation; import buildcraft.robots.EntityRobot; -import buildcraft.core.statements.BCStatement; import buildcraft.transport.gates.StatementSlot; public abstract class ActionStationInputItems extends BCStatement implements IActionInternal { diff --git a/common/buildcraft/robots/statements/ActionStationRequestItems.java b/common/buildcraft/robots/statements/ActionStationRequestItems.java index 2f84d5d5..668a3935 100755 --- a/common/buildcraft/robots/statements/ActionStationRequestItems.java +++ b/common/buildcraft/robots/statements/ActionStationRequestItems.java @@ -20,9 +20,9 @@ import buildcraft.api.statements.IStatementParameter; import buildcraft.api.statements.StatementParameterItemStack; import buildcraft.core.inventory.ITransactor; import buildcraft.core.inventory.Transactor; +import buildcraft.core.utils.StringUtils; import buildcraft.robots.DockingStation; import buildcraft.robots.EntityRobot; -import buildcraft.core.utils.StringUtils; import buildcraft.transport.gates.StatementSlot; public class ActionStationRequestItems extends ActionStationInputItems { diff --git a/common/buildcraft/robots/statements/RobotsActionProvider.java b/common/buildcraft/robots/statements/RobotsActionProvider.java index f62567b2..c3a23ebf 100755 --- a/common/buildcraft/robots/statements/RobotsActionProvider.java +++ b/common/buildcraft/robots/statements/RobotsActionProvider.java @@ -27,7 +27,6 @@ import buildcraft.api.statements.IActionExternal; import buildcraft.api.statements.IActionInternal; import buildcraft.api.statements.IActionProvider; import buildcraft.api.statements.IStatementContainer; -import buildcraft.api.transport.IPipe; import buildcraft.api.transport.IPipeTile; import buildcraft.robots.DockingStation; import buildcraft.robots.RobotUtils; diff --git a/common/buildcraft/robots/statements/RobotsTriggerProvider.java b/common/buildcraft/robots/statements/RobotsTriggerProvider.java index 6e11a72b..4d5e2014 100755 --- a/common/buildcraft/robots/statements/RobotsTriggerProvider.java +++ b/common/buildcraft/robots/statements/RobotsTriggerProvider.java @@ -17,7 +17,6 @@ import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; import buildcraft.BuildCraftSilicon; -import buildcraft.api.statements.IActionInternal; import buildcraft.api.statements.IStatementContainer; import buildcraft.api.statements.ITriggerExternal; import buildcraft.api.statements.ITriggerInternal; @@ -25,7 +24,6 @@ import buildcraft.api.statements.ITriggerProvider; import buildcraft.api.transport.IPipeTile; import buildcraft.robots.DockingStation; import buildcraft.robots.RobotUtils; -import buildcraft.transport.TileGenericPipe; public class RobotsTriggerProvider implements ITriggerProvider { diff --git a/common/buildcraft/robots/statements/TriggerRobotSleep.java b/common/buildcraft/robots/statements/TriggerRobotSleep.java index 8f23f68e..33880ac9 100755 --- a/common/buildcraft/robots/statements/TriggerRobotSleep.java +++ b/common/buildcraft/robots/statements/TriggerRobotSleep.java @@ -12,19 +12,16 @@ import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraftforge.common.util.ForgeDirection; -import buildcraft.api.gates.IGate; import buildcraft.api.statements.IStatementContainer; import buildcraft.api.statements.IStatementParameter; import buildcraft.api.statements.ITriggerInternal; import buildcraft.api.transport.IPipeTile; -import buildcraft.robots.RobotUtils; -import buildcraft.robots.ai.AIRobotSleep; -import buildcraft.robots.DockingStation; -import buildcraft.robots.EntityRobot; import buildcraft.core.statements.BCStatement; import buildcraft.core.utils.StringUtils; -import buildcraft.transport.Pipe; -import buildcraft.transport.TileGenericPipe; +import buildcraft.robots.DockingStation; +import buildcraft.robots.EntityRobot; +import buildcraft.robots.RobotUtils; +import buildcraft.robots.ai.AIRobotSleep; public class TriggerRobotSleep extends BCStatement implements ITriggerInternal { diff --git a/common/buildcraft/silicon/TileAssemblyTable.java b/common/buildcraft/silicon/TileAssemblyTable.java index 8a4accaf..e242e0ac 100644 --- a/common/buildcraft/silicon/TileAssemblyTable.java +++ b/common/buildcraft/silicon/TileAssemblyTable.java @@ -36,11 +36,11 @@ import buildcraft.core.network.CommandWriter; import buildcraft.core.network.ICommandReceiver; import buildcraft.core.network.PacketCommand; import buildcraft.core.recipes.AssemblyRecipeManager; +import buildcraft.core.utils.StringUtils; +import buildcraft.core.utils.Utils; import buildcraft.robots.EntityRobot; import buildcraft.robots.ResourceIdAssemblyTable; import buildcraft.robots.RobotRegistry; -import buildcraft.core.utils.StringUtils; -import buildcraft.core.utils.Utils; public class TileAssemblyTable extends TileLaserTableBase implements IInventory, IFlexibleCrafter, ICommandReceiver { public String currentRecipeId = ""; diff --git a/common/buildcraft/transport/BlockGenericPipe.java b/common/buildcraft/transport/BlockGenericPipe.java index e7fefd30..9f8b51c1 100644 --- a/common/buildcraft/transport/BlockGenericPipe.java +++ b/common/buildcraft/transport/BlockGenericPipe.java @@ -66,15 +66,15 @@ import buildcraft.core.BlockBuildCraft; import buildcraft.core.CoreConstants; import buildcraft.core.CreativeTabBuildCraft; import buildcraft.core.ItemMapLocation; -import buildcraft.robots.ItemRobot; import buildcraft.core.TileBuffer; -import buildcraft.robots.DockingStation; -import buildcraft.robots.EntityRobot; import buildcraft.core.utils.MatrixTranformations; import buildcraft.core.utils.Utils; +import buildcraft.robots.DockingStation; +import buildcraft.robots.EntityRobot; +import buildcraft.robots.ItemRobot; +import buildcraft.robots.RobotStationPluggable; import buildcraft.transport.gates.GateDefinition; import buildcraft.transport.gates.GatePluggable; -import buildcraft.robots.RobotStationPluggable; import buildcraft.transport.render.PipeRendererWorld; public class BlockGenericPipe extends BlockBuildCraft { diff --git a/common/buildcraft/transport/ItemFacade.java b/common/buildcraft/transport/ItemFacade.java index 37cc3441..da5702cd 100644 --- a/common/buildcraft/transport/ItemFacade.java +++ b/common/buildcraft/transport/ItemFacade.java @@ -426,8 +426,9 @@ public class ItemFacade extends ItemBuildCraft implements IFacadeItem, IPipePlug if (block == null) { return; } - if (!block.getMaterial().blocksMovement()) + if (!block.getMaterial().blocksMovement()) { return; + } String recipeId = "buildcraft:facade{" + Block.blockRegistry.getNameForObject(block) + "#" + itemStack.getItemDamage() + "}"; diff --git a/common/buildcraft/transport/render/FacadeBlockAccess.java b/common/buildcraft/transport/render/FacadeBlockAccess.java index f82aa0d6..9d205911 100644 --- a/common/buildcraft/transport/render/FacadeBlockAccess.java +++ b/common/buildcraft/transport/render/FacadeBlockAccess.java @@ -9,7 +9,6 @@ import net.minecraftforge.common.util.ForgeDirection; import buildcraft.api.transport.pluggable.IFacadePluggable; import buildcraft.api.transport.pluggable.PipePluggable; import buildcraft.transport.BlockGenericPipe; -import buildcraft.transport.FacadePluggable; import buildcraft.transport.TileGenericPipe; public class FacadeBlockAccess implements IBlockAccess { diff --git a/common/buildcraft/transport/render/FacadeRenderHelper.java b/common/buildcraft/transport/render/FacadeRenderHelper.java index 253a5291..bacfd249 100644 --- a/common/buildcraft/transport/render/FacadeRenderHelper.java +++ b/common/buildcraft/transport/render/FacadeRenderHelper.java @@ -22,7 +22,6 @@ import buildcraft.api.transport.pluggable.PipePluggable; import buildcraft.core.CoreConstants; import buildcraft.core.utils.MatrixTranformations; import buildcraft.transport.BlockGenericPipe; -import buildcraft.transport.FacadePluggable; import buildcraft.transport.PipeIconProvider; import buildcraft.transport.PipeRenderState; import buildcraft.transport.TileGenericPipe; From ac2bc7ab97348a42d89a226c754ddb3d87c408ba Mon Sep 17 00:00:00 2001 From: Hea3veN Date: Sun, 8 Feb 2015 10:27:42 -0300 Subject: [PATCH 11/11] fix wooden pipes not respecting blocking bluggables, fixes #2443 --- common/buildcraft/transport/pipes/PipeLogicWood.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/common/buildcraft/transport/pipes/PipeLogicWood.java b/common/buildcraft/transport/pipes/PipeLogicWood.java index 97ae5279..5f354389 100644 --- a/common/buildcraft/transport/pipes/PipeLogicWood.java +++ b/common/buildcraft/transport/pipes/PipeLogicWood.java @@ -37,8 +37,11 @@ public abstract class PipeLogicWood { break; } } + if (newFacing == null) { + newFacing = ForgeDirection.UNKNOWN; + } - if (newFacing != null && newFacing.ordinal() != meta) { + if (newFacing.ordinal() != meta) { pipe.container.getWorldObj().setBlockMetadataWithNotify(pipe.container.xCoord, pipe.container.yCoord, pipe.container.zCoord, newFacing.ordinal(), 3); pipe.container.scheduleRenderUpdate(); } @@ -67,6 +70,10 @@ public abstract class PipeLogicWood { return true; } + if (pipe.container.hasBlockingPluggable(side)) { + return false; + } + TileEntity tile = tileBuffer[side.ordinal()].getTile(); return isValidConnectingTile(tile); }