From 6bc4db05a70f09c28d3e58924f73e1f79735e4fb Mon Sep 17 00:00:00 2001 From: asiekierka Date: Wed, 28 Jan 2015 14:00:42 +0100 Subject: [PATCH 01/11] fix compatibility with Artifice --- common/buildcraft/BuildCraftEnergy.java | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/common/buildcraft/BuildCraftEnergy.java b/common/buildcraft/BuildCraftEnergy.java index 0c9283ad..651750e7 100644 --- a/common/buildcraft/BuildCraftEnergy.java +++ b/common/buildcraft/BuildCraftEnergy.java @@ -266,8 +266,12 @@ public class BuildCraftEnergy extends BuildCraftMod { } // BucketHandler ensures empty buckets fill with the correct liquid. - BucketHandler.INSTANCE.buckets.put(blockOil, bucketOil); - BucketHandler.INSTANCE.buckets.put(blockFuel, bucketFuel); + if (blockOil != null) { + BucketHandler.INSTANCE.buckets.put(blockOil, bucketOil); + } + if (blockFuel != null) { + BucketHandler.INSTANCE.buckets.put(blockFuel, bucketFuel); + } MinecraftForge.EVENT_BUS.register(BucketHandler.INSTANCE); BuildcraftRecipeRegistry.refinery.addRecipe("buildcraft:fuel", new FluidStack(fluidOil, 1), new FluidStack( @@ -369,9 +373,15 @@ public class BuildCraftEnergy extends BuildCraftMod { @SideOnly(Side.CLIENT) public void textureHook(TextureStitchEvent.Post event) { if (event.map.getTextureType() == 0) { - buildcraftFluidOil.setIcons(blockOil.getBlockTextureFromSide(1), blockOil.getBlockTextureFromSide(2)); - buildcraftFluidFuel.setIcons(blockFuel.getBlockTextureFromSide(1), blockFuel.getBlockTextureFromSide(2)); - buildcraftFluidRedPlasma.setIcons(blockRedPlasma.getBlockTextureFromSide(1), blockRedPlasma.getBlockTextureFromSide(2)); + if (buildcraftFluidOil != null) { + buildcraftFluidOil.setIcons(blockOil.getBlockTextureFromSide(1), blockOil.getBlockTextureFromSide(2)); + } + if (buildcraftFluidFuel != null) { + buildcraftFluidFuel.setIcons(blockFuel.getBlockTextureFromSide(1), blockFuel.getBlockTextureFromSide(2)); + } + if (buildcraftFluidRedPlasma != null) { + buildcraftFluidRedPlasma.setIcons(blockRedPlasma.getBlockTextureFromSide(1), blockRedPlasma.getBlockTextureFromSide(2)); + } } } From 5771b6b9e720e3b5f583a7cdab497bd00de25a61 Mon Sep 17 00:00:00 2001 From: asiekierka Date: Sat, 31 Jan 2015 00:42:54 +0100 Subject: [PATCH 02/11] BuildCraft 6.3.4, fix #2423 and #2419 --- build.gradle | 2 +- .../items/fillerParameters/arrow_down.png | Bin 0 -> 388 bytes .../textures/items/fillerParameters/arrow_up.png | Bin 0 -> 389 bytes buildcraft_resources/changelog/6.3.4 | 5 +++++ buildcraft_resources/versions.txt | 2 +- common/buildcraft/BuildCraftTransport.java | 1 + common/buildcraft/transport/ItemFacade.java | 2 +- .../transport/schematics/SchematicPipe.java | 2 +- 8 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 buildcraft_resources/assets/buildcraft/textures/items/fillerParameters/arrow_down.png create mode 100644 buildcraft_resources/assets/buildcraft/textures/items/fillerParameters/arrow_up.png create mode 100644 buildcraft_resources/changelog/6.3.4 diff --git a/build.gradle b/build.gradle index 01ac13ca..d96d05a1 100755 --- a/build.gradle +++ b/build.gradle @@ -22,7 +22,7 @@ apply plugin: 'forge' // adds the forge dependency apply plugin: 'maven' // for uploading to a maven repo apply plugin: 'checkstyle' -version = "6.3.3" +version = "6.3.4" group= "com.mod-buildcraft" archivesBaseName = "buildcraft" // the name that all artifacts will use as a base. artifacts names follow this pattern: [baseName]-[appendix]-[version]-[classifier].[extension] diff --git a/buildcraft_resources/assets/buildcraft/textures/items/fillerParameters/arrow_down.png b/buildcraft_resources/assets/buildcraft/textures/items/fillerParameters/arrow_down.png new file mode 100644 index 0000000000000000000000000000000000000000..6667e10ebd0851d25ca9592e404af2ce13ea4230 GIT binary patch literal 388 zcmV-~0ek+5P)f1H?>qYC_H}m8_^5Z?y!X5PGK`8-Z~++x zBmr577+gS(87d$E28;}>OfVH-J|hFS5{Rpe(4q$7^Rc5@tI3Y$Fl`+WsjH`N02MF< i5k|%)VE>q6dL00d4h7D>BPv+{0000f1H?>qYC_H}m8_^5Z?y!X5PGK`8-Z~++x z1`r=4!oVO45d-sqA`EiOPyv`0Rwgt7ZY2;`86lts;`6biS*yv8<}hs?5UH!DZvYiA j1QABYCSd=VVtO3_nFIySryA+$00000NkvXXu0mjfvJs+l literal 0 HcmV?d00001 diff --git a/buildcraft_resources/changelog/6.3.4 b/buildcraft_resources/changelog/6.3.4 new file mode 100644 index 00000000..08dfa774 --- /dev/null +++ b/buildcraft_resources/changelog/6.3.4 @@ -0,0 +1,5 @@ +Bugfixes: +[#2425] Crash with Artifice (asie) +[#2423] Builders use uncolored pipes for colored pipes (asie) +[#2419] No RecipeSorter configuration for PipeColoringRecipe (asie) +[#2418] Searchbar crash in creative mode (asie) diff --git a/buildcraft_resources/versions.txt b/buildcraft_resources/versions.txt index 9bf3fc34..e6f1a822 100755 --- a/buildcraft_resources/versions.txt +++ b/buildcraft_resources/versions.txt @@ -1,3 +1,3 @@ 1.6.4:BuildCraft:4.2.2 1.7.2:BuildCraft:6.0.16 -1.7.10:BuildCraft:6.3.3 +1.7.10:BuildCraft:6.3.4 diff --git a/common/buildcraft/BuildCraftTransport.java b/common/buildcraft/BuildCraftTransport.java index e941deb8..1e0169d5 100644 --- a/common/buildcraft/BuildCraftTransport.java +++ b/common/buildcraft/BuildCraftTransport.java @@ -506,6 +506,7 @@ public class BuildCraftTransport extends BuildCraftMod { } GameRegistry.addRecipe(new PipeColoringRecipe()); + RecipeSorter.register("buildcraft:pipecoloring", PipeColoringRecipe.class, RecipeSorter.Category.SHAPELESS, "after:minecraft:shapeless"); CoreProxy.proxy.addCraftingRecipe(new ItemStack(filteredBufferBlock, 1), "wdw", "wcw", "wpw", 'w', "plankWood", 'd', diff --git a/common/buildcraft/transport/ItemFacade.java b/common/buildcraft/transport/ItemFacade.java index 8ed0344a..14c42e37 100644 --- a/common/buildcraft/transport/ItemFacade.java +++ b/common/buildcraft/transport/ItemFacade.java @@ -171,7 +171,7 @@ public class ItemFacade extends ItemBuildCraft implements IFacadeItem, IPipePlug @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean debug) { for (FacadeState state : getFacadeStates(stack)) { - if (!state.transparent && state.block != null) { + if (state != null && !state.transparent && state.block != null && Item.getItemFromBlock(state.block) != null) { Item.getItemFromBlock(state.block).addInformation(new ItemStack(state.block, 1, state.metadata), player, list, debug); } } diff --git a/common/buildcraft/transport/schematics/SchematicPipe.java b/common/buildcraft/transport/schematics/SchematicPipe.java index c7910ad0..b14663da 100644 --- a/common/buildcraft/transport/schematics/SchematicPipe.java +++ b/common/buildcraft/transport/schematics/SchematicPipe.java @@ -183,7 +183,7 @@ public class SchematicPipe extends SchematicTile { storedRequirements = new ItemStack[items.size() + 1]; items.toArray(storedRequirements); storedRequirements[storedRequirements.length - 1] = new ItemStack( - pipe.item); + pipe.item, 1, pipe.container.getItemMetadata()); } } From d52aa024530235f70a86379249cca718cc802429 Mon Sep 17 00:00:00 2001 From: Hea3veN Date: Mon, 2 Feb 2015 19:54:39 -0300 Subject: [PATCH 03/11] fix lists only using the first stack per line, fixes #2422 --- common/buildcraft/core/ItemList.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/buildcraft/core/ItemList.java b/common/buildcraft/core/ItemList.java index 058c3853..87f12696 100644 --- a/common/buildcraft/core/ItemList.java +++ b/common/buildcraft/core/ItemList.java @@ -199,7 +199,7 @@ public class ItemList extends ItemBuildCraft { return oreMatch(stacks[0], item); } else { for (ItemStack stack : stacks) { - if (stack != null && StackHelper.isMatchingItemOrList(stacks[0], item)) { + if (stack != null && StackHelper.isMatchingItemOrList(stack, item)) { return true; } } From bda10c751378607a3fd9e35e33bf5ad4859fbed7 Mon Sep 17 00:00:00 2001 From: Hea3veN Date: Mon, 2 Feb 2015 20:21:17 -0300 Subject: [PATCH 04/11] fix sync issue of the accept equivalents button in lists, fixes #2411 --- common/buildcraft/core/ItemList.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/common/buildcraft/core/ItemList.java b/common/buildcraft/core/ItemList.java index 87f12696..7d2bc9e1 100644 --- a/common/buildcraft/core/ItemList.java +++ b/common/buildcraft/core/ItemList.java @@ -77,14 +77,18 @@ public class ItemList extends ItemBuildCraft { stacks[slot].stackSize = 1; } - if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT && slot == 0) { + if (slot == 0) { relatedItems.clear(); ores.clear(); if (stack == null) { isOre = false; } else { - setClientPreviewLists(); + if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) { + setClientPreviewLists(); + } else { + isOre = OreDictionary.getOreIDs(stacks[0]).length > 0; + } } } } From 671d964f33fc286fb8bd28618f409f916914cd9d Mon Sep 17 00:00:00 2001 From: Arona Jones Date: Mon, 2 Feb 2015 21:16:17 +0000 Subject: [PATCH 05/11] Fix #2426 and #2408. Partially Fix #2345. --- .../assets/buildcraft/lang/en_US.lang | 4 ++++ common/buildcraft/BuildCraftEnergy.java | 10 ++++----- common/buildcraft/core/CommandBuildCraft.java | 8 +++---- common/buildcraft/core/DefaultProps.java | 2 +- .../core/recipes/RefineryRecipeManager.java | 20 ++++++++++++++--- common/buildcraft/factory/BlockMiner.java | 2 +- common/buildcraft/factory/TileRefinery.java | 22 +++++++++++-------- 7 files changed, 45 insertions(+), 23 deletions(-) diff --git a/buildcraft_resources/assets/buildcraft/lang/en_US.lang b/buildcraft_resources/assets/buildcraft/lang/en_US.lang index 73f45871..50f3848c 100644 --- a/buildcraft_resources/assets/buildcraft/lang/en_US.lang +++ b/buildcraft_resources/assets/buildcraft/lang/en_US.lang @@ -406,3 +406,7 @@ bc_update.new_version=§cNew version of BuildCraft available: %s for Minecraft % bc_update.download=§cDownload from http://www.mod-buildcraft.com/download bc_update.once=This message only displays once bc_update.again=Type '/buildcraft version' if you want to see it again + +command.buildcraft.version=BuildCraft %s for Minecraft %s (Latest: %s). +command.buildcraft.versioninfo=Version information. +command.buildcraft.available=Available Commands: diff --git a/common/buildcraft/BuildCraftEnergy.java b/common/buildcraft/BuildCraftEnergy.java index 651750e7..77c9dcd6 100644 --- a/common/buildcraft/BuildCraftEnergy.java +++ b/common/buildcraft/BuildCraftEnergy.java @@ -151,11 +151,11 @@ public class BuildCraftEnergy extends BuildCraftMod { double fuelLavaMultiplier = BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_GENERAL, "fuel.lava.combustion", 1.0F, "adjust energy value of Lava in Combustion Engines").getDouble(1.0F); double fuelOilMultiplier = BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_GENERAL, "fuel.oil.combustion", 1.0F, "adjust energy value of Oil in Combustion Engines").getDouble(1.0F); double fuelFuelMultiplier = BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_GENERAL, "fuel.fuel.combustion", 1.0F, "adjust energy value of Fuel in Combustion Engines").getDouble(1.0F); - + int fuelLavaEnergyOutput = BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_GENERAL, "fuel.lava.combustion.energyOutput", 20, "adjust output energy by Lava in Combustion Engines").getInt(20); int fuelOilEnergyOutput = BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_GENERAL, "fuel.oil.combustion.energyOutput", 30, "adjust output energy by Oil in Combustion Engines").getInt(30); int fuelFuelEnergyOutput = BuildCraftCore.mainConfiguration.get(Configuration.CATEGORY_GENERAL, "fuel.fuel.combustion.energyOutput", 60, "adjust output energy by Fuel in Combustion Engines").getInt(60); - + BuildCraftCore.mainConfiguration.save(); if (oilDesertBiomeId > 0) { @@ -183,7 +183,7 @@ public class BuildCraftEnergy extends BuildCraftMod { // Oil and fuel if (!FluidRegistry.isFluidRegistered("oil")) { - buildcraftFluidOil = new Fluid("oil").setDensity(800).setViscosity(15000); + buildcraftFluidOil = new Fluid("oil").setDensity(800).setViscosity(10000); FluidRegistry.registerFluid(buildcraftFluidOil); } else { BCLog.logger.warn("Not using BuildCraft oil - issues might occur!"); @@ -349,7 +349,7 @@ public class BuildCraftEnergy extends BuildCraftMod { NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiHandler()); StatementManager.registerTriggerProvider(new EnergyStatementProvider()); - + BuilderAPI.schematicRegistry.registerSchematicBlock(engineBlock, SchematicEngine.class); if (BuildCraftCore.loadDefaultRecipes) { @@ -362,7 +362,7 @@ public class BuildCraftEnergy extends BuildCraftMod { @Mod.EventHandler public void postInit(FMLPostInitializationEvent evt) { - + if (BuildCraftCore.modifyWorld) { MinecraftForge.EVENT_BUS.register(OilPopulate.INSTANCE); MinecraftForge.TERRAIN_GEN_BUS.register(new BiomeInitializer()); diff --git a/common/buildcraft/core/CommandBuildCraft.java b/common/buildcraft/core/CommandBuildCraft.java index 142186b3..a7baaee2 100644 --- a/common/buildcraft/core/CommandBuildCraft.java +++ b/common/buildcraft/core/CommandBuildCraft.java @@ -15,7 +15,7 @@ import net.minecraft.command.ICommand; import net.minecraft.command.ICommandSender; import net.minecraft.command.WrongUsageException; import net.minecraft.util.ChatComponentText; - +import net.minecraft.util.StatCollector; import buildcraft.core.proxy.CoreProxy; public class CommandBuildCraft extends CommandBase { @@ -58,8 +58,8 @@ public class CommandBuildCraft extends CommandBase { return; } else if (arguments[0].matches("help")) { sender.addChatMessage(new ChatComponentText("Format: '" + this.getCommandName() + " '")); - sender.addChatMessage(new ChatComponentText("Available commands:")); - sender.addChatMessage(new ChatComponentText("- version : Version information.")); + sender.addChatMessage(new ChatComponentText(StatCollector.translateToLocal("command.buildcraft.available"))); + sender.addChatMessage(new ChatComponentText(" - version :" + StatCollector.translateToLocal("command.buildcraft.versioninfo"))); return; } @@ -69,7 +69,7 @@ public class CommandBuildCraft extends CommandBase { private void commandVersion(ICommandSender sender, String[] arguments) { String colour = Version.isOutdated() ? "\u00A7c" : "\u00A7a"; - sender.addChatMessage(new ChatComponentText(String.format(colour + "BuildCraft %s for Minecraft %s (Latest: %s).", Version.getVersion(), + sender.addChatMessage(new ChatComponentText(String.format(colour + StatCollector.translateToLocal("command.buildcraft.version"), Version.getVersion(), CoreProxy.proxy.getMinecraftVersion(), Version.getRecommendedVersion()))); // TODD This takes too much realstate. See how to improve diff --git a/common/buildcraft/core/DefaultProps.java b/common/buildcraft/core/DefaultProps.java index fe9a9049..68630ce4 100644 --- a/common/buildcraft/core/DefaultProps.java +++ b/common/buildcraft/core/DefaultProps.java @@ -16,7 +16,7 @@ public final class DefaultProps { public static final String DEPENDENCY_TRANSPORT = "required-after:BuildCraft|Transport@" + Version.VERSION; public static final String NET_CHANNEL_NAME = "BC"; - public static int NETWORK_UPDATE_RANGE = 128; + public static int NETWORK_UPDATE_RANGE = 64; public static int PIPE_CONTENTS_RENDER_DIST = 24; public static String TEXTURE_PATH_GUI = "textures/gui"; diff --git a/common/buildcraft/core/recipes/RefineryRecipeManager.java b/common/buildcraft/core/recipes/RefineryRecipeManager.java index ceead523..88cefc65 100644 --- a/common/buildcraft/core/recipes/RefineryRecipeManager.java +++ b/common/buildcraft/core/recipes/RefineryRecipeManager.java @@ -8,12 +8,12 @@ */ package buildcraft.core.recipes; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import net.minecraftforge.fluids.FluidStack; - import buildcraft.BuildCraftCore; import buildcraft.api.core.BCLog; import buildcraft.api.recipes.IFlexibleRecipe; @@ -23,6 +23,8 @@ public final class RefineryRecipeManager implements IRefineryRecipeManager { public static final RefineryRecipeManager INSTANCE = new RefineryRecipeManager(); private HashMap> recipes = new HashMap>(); + private ArrayList validFluids1 = new ArrayList(); + private ArrayList validFluids2 = new ArrayList(); private RefineryRecipeManager() { } @@ -38,6 +40,7 @@ public final class RefineryRecipeManager implements IRefineryRecipeManager { FlexibleRecipe recipe = new FlexibleRecipe(id, result, energy, delay, ingredient); recipes.put(id, recipe); + validFluids1.add(ingredient); } @Override @@ -48,7 +51,7 @@ public final class RefineryRecipeManager implements IRefineryRecipeManager { if (BuildCraftCore.recipesBlacklist.contains(name)) { return; } - + if (ingredient1 == null || ingredient2 == null || result == null) { BCLog.logger.warn("Rejected refinery recipe " + id + " due to a null FluidStack!"); } @@ -56,6 +59,8 @@ public final class RefineryRecipeManager implements IRefineryRecipeManager { FlexibleRecipe recipe = new FlexibleRecipe(id, result, energy, delay, ingredient1, ingredient2); recipes.put(id, recipe); + validFluids1.add(ingredient1); + validFluids2.add(ingredient2); } @Override @@ -67,7 +72,7 @@ public final class RefineryRecipeManager implements IRefineryRecipeManager { public IFlexibleRecipe getRecipe(String id) { return recipes.get(id); } - + @Override public void removeRecipe(IFlexibleRecipe recipe) { removeRecipe(recipe.getId()); @@ -77,4 +82,13 @@ public final class RefineryRecipeManager implements IRefineryRecipeManager { public void removeRecipe(String id) { recipes.remove(id); } + + public ArrayList getValidFluidStacks1() + { + return validFluids1; + } + public ArrayList getValidFluidStacks2() + { + return validFluids2; + } } diff --git a/common/buildcraft/factory/BlockMiner.java b/common/buildcraft/factory/BlockMiner.java index 4cf925ab..2134a627 100644 --- a/common/buildcraft/factory/BlockMiner.java +++ b/common/buildcraft/factory/BlockMiner.java @@ -75,7 +75,7 @@ public class BlockMiner { public void invalidate() { world.destroyBlockInWorldPartially(minerId, x, y, z, -1); } - + public int acceptEnergy(int offeredAmount) { energyRequired = BlockUtils.computeBlockBreakEnergy(world, x, y, z); diff --git a/common/buildcraft/factory/TileRefinery.java b/common/buildcraft/factory/TileRefinery.java index b2ed3f42..8e2c9e64 100644 --- a/common/buildcraft/factory/TileRefinery.java +++ b/common/buildcraft/factory/TileRefinery.java @@ -9,14 +9,12 @@ package buildcraft.factory; import io.netty.buffer.ByteBuf; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.ICrafting; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; - import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidContainerRegistry; @@ -24,8 +22,8 @@ import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidHandler; - import buildcraft.BuildCraftCore; +import buildcraft.BuildCraftEnergy; import buildcraft.api.core.SafeTimeTracker; import buildcraft.api.recipes.CraftingResult; import buildcraft.api.recipes.IFlexibleCrafter; @@ -62,8 +60,10 @@ public class TileRefinery extends TileBuildCraft implements IFluidHandler, IInve public TileRefinery() { super(); this.setBattery(new RFBattery(10000, 1500, 0)); + this.tanks[0].setAcceptedFluid(BuildCraftEnergy.fluidOil); + this.tanks[1].setAcceptedFluid(BuildCraftEnergy.fluidOil); } - + @Override public int getSizeInventory() { return 0; @@ -178,7 +178,7 @@ public class TileRefinery extends TileBuildCraft implements IFluidHandler, IInve public boolean hasWork() { return isActive; } - + @Override public void readFromNBT(NBTTagCompound data) { super.readFromNBT(data); @@ -299,10 +299,14 @@ public class TileRefinery extends TileBuildCraft implements IFluidHandler, IInve int used = 0; FluidStack resourceUsing = resource.copy(); - used += tanks[0].fill(resourceUsing, doFill); - resourceUsing.amount -= used; - used += tanks[1].fill(resourceUsing, doFill); - + if(RefineryRecipeManager.INSTANCE.getValidFluidStacks1().contains(resource)) { + used += tanks[0].fill(resourceUsing, doFill); + resourceUsing.amount -= used; + } + if(RefineryRecipeManager.INSTANCE.getValidFluidStacks2().contains(resource)) { + used += tanks[1].fill(resourceUsing, doFill); + resourceUsing.amount -= used; + } updateRecipe(); return used; From 76e01f100508a324a6f7c2216e3ee9f85285eca8 Mon Sep 17 00:00:00 2001 From: Hea3veN Date: Wed, 4 Feb 2015 23:48:18 -0300 Subject: [PATCH 06/11] add builder support for most of the blocks in the factory module, fixes #2430 --- common/buildcraft/BuildCraftBuilders.java | 1 + common/buildcraft/BuildCraftFactory.java | 10 ++- .../schematics/SchematicAutoWorkbench.java | 82 +++++++++++++++++++ ...ank.java => SchematicTileIgnoreState.java} | 2 +- 4 files changed, 92 insertions(+), 3 deletions(-) create mode 100644 common/buildcraft/factory/schematics/SchematicAutoWorkbench.java rename common/buildcraft/factory/schematics/{SchematicTank.java => SchematicTileIgnoreState.java} (94%) diff --git a/common/buildcraft/BuildCraftBuilders.java b/common/buildcraft/BuildCraftBuilders.java index d0ef0b3c..133b755d 100644 --- a/common/buildcraft/BuildCraftBuilders.java +++ b/common/buildcraft/BuildCraftBuilders.java @@ -324,6 +324,7 @@ public class BuildCraftBuilders extends BuildCraftMod { schemes.registerSchematicBlock(Blocks.furnace, SchematicRotateMeta.class, new int[]{2, 5, 3, 4}, true); schemes.registerSchematicBlock(Blocks.lit_furnace, SchematicRotateMeta.class, new int[]{2, 5, 3, 4}, true); schemes.registerSchematicBlock(Blocks.chest, SchematicRotateMeta.class, new int[]{2, 5, 3, 4}, true); + schemes.registerSchematicBlock(Blocks.trapped_chest, SchematicRotateMeta.class, new int[]{2, 5, 3, 4}, true); schemes.registerSchematicBlock(Blocks.dispenser, SchematicRotateMeta.class, new int[]{2, 5, 3, 4}, true); schemes.registerSchematicBlock(Blocks.dropper, SchematicRotateMeta.class, new int[]{2, 5, 3, 4}, true); diff --git a/common/buildcraft/BuildCraftFactory.java b/common/buildcraft/BuildCraftFactory.java index 2b322046..c690b365 100644 --- a/common/buildcraft/BuildCraftFactory.java +++ b/common/buildcraft/BuildCraftFactory.java @@ -37,6 +37,7 @@ import net.minecraftforge.common.config.Configuration; import net.minecraftforge.common.config.Property; import buildcraft.api.blueprints.BuilderAPI; +import buildcraft.api.blueprints.SchematicTile; import buildcraft.builders.schematics.SchematicIgnoreMeta; import buildcraft.compat.CompatHooks; import buildcraft.core.DefaultProps; @@ -68,9 +69,10 @@ import buildcraft.factory.TileQuarry; import buildcraft.factory.TileRefinery; import buildcraft.factory.TileTank; import buildcraft.factory.network.PacketHandlerFactory; +import buildcraft.factory.schematics.SchematicAutoWorkbench; import buildcraft.factory.schematics.SchematicPump; import buildcraft.factory.schematics.SchematicRefinery; -import buildcraft.factory.schematics.SchematicTank; +import buildcraft.factory.schematics.SchematicTileIgnoreState; @Mod(name = "BuildCraft Factory", version = Version.VERSION, useMetadata = false, modid = "BuildCraft|Factory", dependencies = DefaultProps.DEPENDENCY_CORE) public class BuildCraftFactory extends BuildCraftMod { @@ -160,9 +162,13 @@ public class BuildCraftFactory extends BuildCraftMod { FactoryProxy.proxy.initializeTileEntities(); BuilderAPI.schematicRegistry.registerSchematicBlock(refineryBlock, SchematicRefinery.class); - BuilderAPI.schematicRegistry.registerSchematicBlock(tankBlock, SchematicTank.class); + BuilderAPI.schematicRegistry.registerSchematicBlock(tankBlock, SchematicTileIgnoreState.class); BuilderAPI.schematicRegistry.registerSchematicBlock(frameBlock, SchematicIgnoreMeta.class); BuilderAPI.schematicRegistry.registerSchematicBlock(pumpBlock, SchematicPump.class); + BuilderAPI.schematicRegistry.registerSchematicBlock(miningWellBlock, SchematicTileIgnoreState.class); + BuilderAPI.schematicRegistry.registerSchematicBlock(floodGateBlock, SchematicTileIgnoreState.class); + BuilderAPI.schematicRegistry.registerSchematicBlock(autoWorkbenchBlock, SchematicAutoWorkbench.class); + BuilderAPI.schematicRegistry.registerSchematicBlock(hopperBlock, SchematicTile.class); if (BuildCraftCore.loadDefaultRecipes) { loadRecipes(); diff --git a/common/buildcraft/factory/schematics/SchematicAutoWorkbench.java b/common/buildcraft/factory/schematics/SchematicAutoWorkbench.java new file mode 100644 index 00000000..65c5ae78 --- /dev/null +++ b/common/buildcraft/factory/schematics/SchematicAutoWorkbench.java @@ -0,0 +1,82 @@ +/** + * 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.factory.schematics; + +import java.util.ArrayList; +import java.util.LinkedList; + +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; +import buildcraft.BuildCraftFactory; +import buildcraft.api.blueprints.IBuilderContext; +import buildcraft.api.blueprints.SchematicTile; +import buildcraft.api.core.IInvSlot; +import buildcraft.api.core.JavaTools; +import buildcraft.core.inventory.InventoryIterator; +import buildcraft.factory.TileAutoWorkbench; + +public class SchematicAutoWorkbench extends SchematicTile { + + @Override + public void storeRequirements(IBuilderContext context, int x, int y, int z) { + TileAutoWorkbench autoWb = getTile(context, x, y, z); + if (autoWb != null) { + ArrayList rqs = new ArrayList(); + rqs.add(new ItemStack(BuildCraftFactory.autoWorkbenchBlock)); + + for (IInvSlot slot : InventoryIterator.getIterable(autoWb.craftMatrix, ForgeDirection.UP)) { + ItemStack stack = slot.getStackInSlot(); + if (stack != null) { + stack = stack.copy(); + stack.stackSize = 1; + rqs.add(stack); + } + } + + storedRequirements = JavaTools.concat(storedRequirements, rqs + .toArray(new ItemStack[rqs.size()])); + } + } + + @Override + public void initializeFromObjectAt(IBuilderContext context, int x, int y, int z) { + super.initializeFromObjectAt(context, x, y, z); + + tileNBT.removeTag("Items"); + } + + @Override + public void placeInWorld(IBuilderContext context, int x, int y, int z, LinkedList stacks) { + super.placeInWorld(context, x, y, z, stacks); + + TileAutoWorkbench autoWb = getTile(context, x, y, z); + if (autoWb != null) { + for (IInvSlot slot : InventoryIterator.getIterable(autoWb.craftMatrix, ForgeDirection.UP)) { + ItemStack stack = slot.getStackInSlot(); + if (stack != null) { + stack.stackSize = 1; + } + } + } + } + + @Override + public BuildingStage getBuildStage() { + return BuildingStage.STANDALONE; + } + + private TileAutoWorkbench getTile(IBuilderContext context, int x, int y, int z) { + TileEntity tile = context.world().getTileEntity(x, y, z); + if (tile != null && tile instanceof TileAutoWorkbench) { + return (TileAutoWorkbench) tile; + } + return null; + } +} diff --git a/common/buildcraft/factory/schematics/SchematicTank.java b/common/buildcraft/factory/schematics/SchematicTileIgnoreState.java similarity index 94% rename from common/buildcraft/factory/schematics/SchematicTank.java rename to common/buildcraft/factory/schematics/SchematicTileIgnoreState.java index 2207aa7a..cf6ebcc0 100644 --- a/common/buildcraft/factory/schematics/SchematicTank.java +++ b/common/buildcraft/factory/schematics/SchematicTileIgnoreState.java @@ -15,7 +15,7 @@ import net.minecraft.item.ItemStack; import buildcraft.api.blueprints.IBuilderContext; import buildcraft.api.blueprints.SchematicTile; -public class SchematicTank extends SchematicTile { +public class SchematicTileIgnoreState extends SchematicTile { @Override public void getRequirementsForPlacement(IBuilderContext context, LinkedList requirements) { From 8d3cc1773203344bf560545ff94ed6f65901f23c Mon Sep 17 00:00:00 2001 From: asiekierka Date: Fri, 6 Feb 2015 18:49:55 +0100 Subject: [PATCH 07/11] shh... [fixed assembly table networking/GUI] --- .../buildcraft/silicon/TileAssemblyTable.java | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/common/buildcraft/silicon/TileAssemblyTable.java b/common/buildcraft/silicon/TileAssemblyTable.java index b571bf15..bb9a360f 100644 --- a/common/buildcraft/silicon/TileAssemblyTable.java +++ b/common/buildcraft/silicon/TileAssemblyTable.java @@ -46,6 +46,7 @@ public class TileAssemblyTable extends TileLaserTableBase implements IInventory, public String currentRecipeId = ""; public IFlexibleRecipe currentRecipe; private HashSet plannedOutput = new HashSet(); + private boolean queuedNetworkUpdate = false; public List> getPotentialOutputs() { List> result = new LinkedList>(); @@ -61,6 +62,10 @@ public class TileAssemblyTable extends TileLaserTableBase implements IInventory, return result; } + private void queueNetworkUpdate() { + queuedNetworkUpdate = true; + } + @Override public boolean canUpdate() { return !FMLCommonHandler.instance().getEffectiveSide().isClient(); @@ -70,6 +75,11 @@ public class TileAssemblyTable extends TileLaserTableBase implements IInventory, public void updateEntity() { // WARNING: run only server-side, see canUpdate() super.updateEntity(); + if (queuedNetworkUpdate) { + sendNetworkUpdate(); + queuedNetworkUpdate = false; + } + if (currentRecipe == null) { return; } @@ -145,6 +155,8 @@ public class TileAssemblyTable extends TileLaserTableBase implements IInventory, for (int i = 0; i < size; i++) { plannedOutput.add(Utils.readUTF(stream)); } + + currentRecipe = AssemblyRecipeManager.INSTANCE.getRecipe(currentRecipeId); } @Override @@ -155,8 +167,6 @@ public class TileAssemblyTable extends TileLaserTableBase implements IInventory, for (String s: plannedOutput) { Utils.writeUTF(stream, s); } - - currentRecipe = AssemblyRecipeManager.INSTANCE.getRecipe(currentRecipeId); } @Override public void readFromNBT(NBTTagCompound nbt) { @@ -220,7 +230,7 @@ public class TileAssemblyTable extends TileLaserTableBase implements IInventory, } if (worldObj != null && !worldObj.isRemote) { - sendNetworkUpdate(); + queueNetworkUpdate(); } } @@ -246,6 +256,8 @@ public class TileAssemblyTable extends TileLaserTableBase implements IInventory, if (!isAssembling(currentRecipe) || !isPlanned(currentRecipe)) { setCurrentRecipe(recipe); } + + queueNetworkUpdate(); } } @@ -259,6 +271,8 @@ public class TileAssemblyTable extends TileLaserTableBase implements IInventory, if (!plannedOutput.isEmpty()) { setCurrentRecipe(AssemblyRecipeManager.INSTANCE.getRecipe(plannedOutput.iterator().next())); } + + queueNetworkUpdate(); } public void setNextCurrentRecipe() { @@ -319,8 +333,6 @@ public class TileAssemblyTable extends TileLaserTableBase implements IInventory, cancelPlanOutput(recipe); } } - - sendNetworkUpdate(); } } From 0dd57e7f27ecd947d2c35231b0046c33aaa54552 Mon Sep 17 00:00:00 2001 From: asiekierka Date: Fri, 6 Feb 2015 19:39:24 +0100 Subject: [PATCH 08/11] BuildCraft 6.3.5 --- build.gradle | 2 +- buildcraft_resources/changelog/6.3.5 | 13 +++++++++++++ buildcraft_resources/versions.txt | 2 +- .../core/inventory/InventoryConcatenator.java | 3 +++ .../core/recipes/RefineryRecipeManager.java | 7 +++---- common/buildcraft/factory/TileAutoWorkbench.java | 10 +++++++--- common/buildcraft/factory/TileRefinery.java | 6 ++---- common/buildcraft/transport/BlockGenericPipe.java | 6 +++--- common/buildcraft/transport/PipeTransportItems.java | 3 +++ 9 files changed, 36 insertions(+), 16 deletions(-) create mode 100644 buildcraft_resources/changelog/6.3.5 diff --git a/build.gradle b/build.gradle index d96d05a1..0337a946 100755 --- a/build.gradle +++ b/build.gradle @@ -22,7 +22,7 @@ apply plugin: 'forge' // adds the forge dependency apply plugin: 'maven' // for uploading to a maven repo apply plugin: 'checkstyle' -version = "6.3.4" +version = "6.3.5" group= "com.mod-buildcraft" archivesBaseName = "buildcraft" // the name that all artifacts will use as a base. artifacts names follow this pattern: [baseName]-[appendix]-[version]-[classifier].[extension] diff --git a/buildcraft_resources/changelog/6.3.5 b/buildcraft_resources/changelog/6.3.5 new file mode 100644 index 00000000..20bb10a9 --- /dev/null +++ b/buildcraft_resources/changelog/6.3.5 @@ -0,0 +1,13 @@ +Additions: +[#2430] Support for most BuildCraft Factory blocks in the Builder (warlordjones) + +Bugfixes: +[#2445] Edge case bugs in Auto Workbenches +[#2428] Massive Refinery bandwidth usage +[#2426] Refinery accepts fuel as input (warlordjones) +[#2422] Lists only use the first stack in each line (hea3ven) +[#2411] Accept Equivalents button does not sync properly in Lists (hea3ven) +[#2408] Too high oil viscosity (warlordjones) +[#2345] Partial localization for BC commands (warlordjones) +Assembly Table GUI synchronization broken + diff --git a/buildcraft_resources/versions.txt b/buildcraft_resources/versions.txt index e6f1a822..f7ddfa51 100755 --- a/buildcraft_resources/versions.txt +++ b/buildcraft_resources/versions.txt @@ -1,3 +1,3 @@ 1.6.4:BuildCraft:4.2.2 1.7.2:BuildCraft:6.0.16 -1.7.10:BuildCraft:6.3.4 +1.7.10:BuildCraft:6.3.5 diff --git a/common/buildcraft/core/inventory/InventoryConcatenator.java b/common/buildcraft/core/inventory/InventoryConcatenator.java index 657efcd1..a1c07735 100644 --- a/common/buildcraft/core/inventory/InventoryConcatenator.java +++ b/common/buildcraft/core/inventory/InventoryConcatenator.java @@ -98,5 +98,8 @@ public final class InventoryConcatenator implements IInventory { @Override public void markDirty() { + for (IInventory inv : invMap) { + inv.markDirty(); + } } } diff --git a/common/buildcraft/core/recipes/RefineryRecipeManager.java b/common/buildcraft/core/recipes/RefineryRecipeManager.java index 88cefc65..aee15af7 100644 --- a/common/buildcraft/core/recipes/RefineryRecipeManager.java +++ b/common/buildcraft/core/recipes/RefineryRecipeManager.java @@ -83,12 +83,11 @@ public final class RefineryRecipeManager implements IRefineryRecipeManager { recipes.remove(id); } - public ArrayList getValidFluidStacks1() - { + public ArrayList getValidFluidStacks1() { return validFluids1; } - public ArrayList getValidFluidStacks2() - { + + public ArrayList getValidFluidStacks2() { return validFluids2; } } diff --git a/common/buildcraft/factory/TileAutoWorkbench.java b/common/buildcraft/factory/TileAutoWorkbench.java index 4621ac43..aaf9a9bd 100644 --- a/common/buildcraft/factory/TileAutoWorkbench.java +++ b/common/buildcraft/factory/TileAutoWorkbench.java @@ -98,6 +98,12 @@ public class TileAutoWorkbench extends TileBuildCraft implements ISidedInventory return CoreProxy.proxy.getBuildCraftPlayer((WorldServer) worldObj, xCoord, yCoord + 1, zCoord); } + @Override + public void markDirty() { + super.markDirty(); + inv.markDirty(); + } + @Override public int getSizeInventory() { return 10; @@ -214,9 +220,7 @@ public class TileAutoWorkbench extends TileBuildCraft implements ISidedInventory if (craftSlot == null) { craftSlot = new SlotCrafting(getInternalPlayer().get(), craftMatrix, craftResult, 0, 0, 0); } - if (resultInv.getStackInSlot(SLOT_RESULT) != null) { - return; - } + update++; if (update % UPDATE_TIME == 0) { updateCrafting(); diff --git a/common/buildcraft/factory/TileRefinery.java b/common/buildcraft/factory/TileRefinery.java index 8e2c9e64..61c92741 100644 --- a/common/buildcraft/factory/TileRefinery.java +++ b/common/buildcraft/factory/TileRefinery.java @@ -299,11 +299,11 @@ public class TileRefinery extends TileBuildCraft implements IFluidHandler, IInve int used = 0; FluidStack resourceUsing = resource.copy(); - if(RefineryRecipeManager.INSTANCE.getValidFluidStacks1().contains(resource)) { + if (RefineryRecipeManager.INSTANCE.getValidFluidStacks1().contains(resource)) { used += tanks[0].fill(resourceUsing, doFill); resourceUsing.amount -= used; } - if(RefineryRecipeManager.INSTANCE.getValidFluidStacks2().contains(resource)) { + if (RefineryRecipeManager.INSTANCE.getValidFluidStacks2().contains(resource)) { used += tanks[1].fill(resourceUsing, doFill); resourceUsing.amount -= used; } @@ -334,8 +334,6 @@ public class TileRefinery extends TileBuildCraft implements IFluidHandler, IInve break; } } - - sendNetworkUpdate(); } @Override diff --git a/common/buildcraft/transport/BlockGenericPipe.java b/common/buildcraft/transport/BlockGenericPipe.java index 14a99d0f..418b8651 100644 --- a/common/buildcraft/transport/BlockGenericPipe.java +++ b/common/buildcraft/transport/BlockGenericPipe.java @@ -432,9 +432,9 @@ public class BlockGenericPipe extends BlockBuildCraft { pipeRemoved.put(new BlockIndex(x, y, z), pipe); world.removeTileEntity(x, y, z); - - updateNeighbourSignalState(pipe); - + if (pipe != null) { + updateNeighbourSignalState(pipe); + } } @Override diff --git a/common/buildcraft/transport/PipeTransportItems.java b/common/buildcraft/transport/PipeTransportItems.java index 34e8a590..3bc163c7 100644 --- a/common/buildcraft/transport/PipeTransportItems.java +++ b/common/buildcraft/transport/PipeTransportItems.java @@ -230,6 +230,9 @@ public class PipeTransportItems extends PipeTransport { if (entity instanceof IPipeTile) { Pipe pipe = (Pipe) ((IPipeTile) entity).getPipe(); + if (pipe == null || pipe.transport == null) { + return false; + } //return !pipe.pipe.isClosed() && pipe.pipe.transport instanceof PipeTransportItems; return pipe.inputOpen(o.getOpposite()) && pipe.transport instanceof PipeTransportItems; From 86974d071e5fda1e7fd00a7a9b061c467e03e6e3 Mon Sep 17 00:00:00 2001 From: asiekierka Date: Fri, 6 Feb 2015 19:56:20 +0100 Subject: [PATCH 09/11] fix changelog --- buildcraft_resources/changelog/6.3.5 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/buildcraft_resources/changelog/6.3.5 b/buildcraft_resources/changelog/6.3.5 index 20bb10a9..3b592470 100644 --- a/buildcraft_resources/changelog/6.3.5 +++ b/buildcraft_resources/changelog/6.3.5 @@ -1,5 +1,6 @@ Additions: -[#2430] Support for most BuildCraft Factory blocks in the Builder (warlordjones) +[#2430] Support for most BuildCraft Factory blocks in the Builder (hea3ven) +Polish localization update (nister6000) Bugfixes: [#2445] Edge case bugs in Auto Workbenches From 20313b1e7fcc300786332a0116f8c946fdde2006 Mon Sep 17 00:00:00 2001 From: asiekierka Date: Fri, 6 Feb 2015 20:19:31 +0100 Subject: [PATCH 10/11] BuildCraft 6.3.6 - hotfix --- build.gradle | 2 +- buildcraft_resources/changelog/6.3.6 | 2 ++ buildcraft_resources/versions.txt | 2 +- common/buildcraft/factory/TileAutoWorkbench.java | 4 ++++ 4 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 buildcraft_resources/changelog/6.3.6 diff --git a/build.gradle b/build.gradle index 0337a946..c9c5f460 100755 --- a/build.gradle +++ b/build.gradle @@ -22,7 +22,7 @@ apply plugin: 'forge' // adds the forge dependency apply plugin: 'maven' // for uploading to a maven repo apply plugin: 'checkstyle' -version = "6.3.5" +version = "6.3.6" group= "com.mod-buildcraft" archivesBaseName = "buildcraft" // the name that all artifacts will use as a base. artifacts names follow this pattern: [baseName]-[appendix]-[version]-[classifier].[extension] diff --git a/buildcraft_resources/changelog/6.3.6 b/buildcraft_resources/changelog/6.3.6 new file mode 100644 index 00000000..63cb3b99 --- /dev/null +++ b/buildcraft_resources/changelog/6.3.6 @@ -0,0 +1,2 @@ +Bugfixes: +Revert Auto Workbench behaviour change diff --git a/buildcraft_resources/versions.txt b/buildcraft_resources/versions.txt index f7ddfa51..04649a27 100755 --- a/buildcraft_resources/versions.txt +++ b/buildcraft_resources/versions.txt @@ -1,3 +1,3 @@ 1.6.4:BuildCraft:4.2.2 1.7.2:BuildCraft:6.0.16 -1.7.10:BuildCraft:6.3.5 +1.7.10:BuildCraft:6.3.6 diff --git a/common/buildcraft/factory/TileAutoWorkbench.java b/common/buildcraft/factory/TileAutoWorkbench.java index aaf9a9bd..001c35bc 100644 --- a/common/buildcraft/factory/TileAutoWorkbench.java +++ b/common/buildcraft/factory/TileAutoWorkbench.java @@ -221,6 +221,10 @@ public class TileAutoWorkbench extends TileBuildCraft implements ISidedInventory craftSlot = new SlotCrafting(getInternalPlayer().get(), craftMatrix, craftResult, 0, 0, 0); } + if (resultInv.getStackInSlot(SLOT_RESULT) != null) { + return; + } + update++; if (update % UPDATE_TIME == 0) { updateCrafting(); From 696edcfe9627c24abecc51390ccd745d02c0d17d Mon Sep 17 00:00:00 2001 From: Hea3veN Date: Sat, 7 Feb 2015 14:12:25 -0300 Subject: [PATCH 11/11] fix the architect table sometimes modifiying the world when creating blueprints, fixes #2424 --- api/buildcraft/api/blueprints/SchematicTile.java | 1 + 1 file changed, 1 insertion(+) diff --git a/api/buildcraft/api/blueprints/SchematicTile.java b/api/buildcraft/api/blueprints/SchematicTile.java index e37bf490..b3f06f06 100755 --- a/api/buildcraft/api/blueprints/SchematicTile.java +++ b/api/buildcraft/api/blueprints/SchematicTile.java @@ -72,6 +72,7 @@ public class SchematicTile extends SchematicBlock { if (tile != null) { tile.writeToNBT(tileNBT); } + tileNBT = (NBTTagCompound) tileNBT.copy(); } }