From d0506b8a4948d638e211d5dd6a5d60e1d9ba68ef Mon Sep 17 00:00:00 2001 From: asiekierka Date: Sat, 1 Nov 2014 22:25:29 +0100 Subject: [PATCH] fix a lot of Builder bugginess --- api/buildcraft/api/core/BlockMetaPair.java | 53 ------------------- build.gradle | 2 +- common/buildcraft/BuildCraftBuilders.java | 5 +- common/buildcraft/BuildCraftTransport.java | 4 +- .../builders/HeuristicBlockDetection.java | 23 +++----- .../builders/TileBlueprintLibrary.java | 6 ++- .../buildcraft/core/blueprints/Blueprint.java | 3 -- .../core/blueprints/SchematicRegistry.java | 35 ++++++------ .../core/statements/ActionMachineControl.java | 2 +- .../StatementParameterDirection.java | 1 - ...tatementParameterRedstoneGateSideOnly.java | 1 - .../transport/gui/ContainerGateInterface.java | 1 - .../statements/ActionParameterSignal.java | 1 - .../statements/TriggerParameterSignal.java | 1 - 14 files changed, 32 insertions(+), 106 deletions(-) delete mode 100644 api/buildcraft/api/core/BlockMetaPair.java diff --git a/api/buildcraft/api/core/BlockMetaPair.java b/api/buildcraft/api/core/BlockMetaPair.java deleted file mode 100644 index d83c1da8..00000000 --- a/api/buildcraft/api/core/BlockMetaPair.java +++ /dev/null @@ -1,53 +0,0 @@ -package buildcraft.api.core; - -import net.minecraft.block.Block; -import net.minecraftforge.oredict.OreDictionary; - -public class BlockMetaPair implements Comparable { - private int id, meta; - - public BlockMetaPair(Block block, int meta) { - this.id = Block.getIdFromBlock(block); - this.meta = meta; - } - - public Block getBlock() { - return Block.getBlockById(id); - } - - public int meta() { - return meta; - } - - @Override - public int hashCode() { - return 17 * meta + id; - } - - @Override - public boolean equals(Object other) { - if (other == null || !(other instanceof BlockMetaPair)) { - return false; - } - - return ((BlockMetaPair) other).id == id && ((BlockMetaPair) other).meta == meta; - } - - @Override - public int compareTo(BlockMetaPair arg) { - if (arg.id != id) { - return (id - arg.id) * 16; - } else { - return meta - arg.meta; - } - } - - @Override - public String toString() { - if (this.getBlock() == null) { - return "invalid"; - } - - return Block.blockRegistry.getNameForObject(this.getBlock()) + ":" + (this.meta == OreDictionary.WILDCARD_VALUE ? "*" : this.meta); - } -} diff --git a/build.gradle b/build.gradle index 75a63f35..b4169c72 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.1.3" +version = "6.1.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/common/buildcraft/BuildCraftBuilders.java b/common/buildcraft/BuildCraftBuilders.java index 9655201c..5741bb15 100644 --- a/common/buildcraft/BuildCraftBuilders.java +++ b/common/buildcraft/BuildCraftBuilders.java @@ -49,7 +49,6 @@ import buildcraft.api.blueprints.SchematicEntity; import buildcraft.api.blueprints.SchematicFactory; import buildcraft.api.blueprints.SchematicMask; import buildcraft.api.core.BCLog; -import buildcraft.api.core.BlockMetaPair; import buildcraft.api.core.JavaTools; import buildcraft.api.filler.FillerManager; import buildcraft.api.filler.IFillerPattern; @@ -261,8 +260,8 @@ public class BuildCraftBuilders extends BuildCraftMod { PrintWriter writer = new PrintWriter("SchematicDebug.txt", "UTF-8"); writer.println("*** REGISTERED SCHEMATICS ***"); SchematicRegistry reg = (SchematicRegistry) BuilderAPI.schematicRegistry; - for (BlockMetaPair p : reg.schematicBlocks.keySet()) { - writer.println(p.toString() + " -> " + reg.schematicBlocks.get(p).clazz.getCanonicalName()); + for (String s : reg.schematicBlocks.keySet()) { + writer.println(s + " -> " + reg.schematicBlocks.get(s).clazz.getCanonicalName()); } writer.close(); } catch (Exception e) { diff --git a/common/buildcraft/BuildCraftTransport.java b/common/buildcraft/BuildCraftTransport.java index 6e09f019..d0434276 100644 --- a/common/buildcraft/BuildCraftTransport.java +++ b/common/buildcraft/BuildCraftTransport.java @@ -35,7 +35,6 @@ import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.oredict.RecipeSorter; import buildcraft.api.blueprints.BuilderAPI; -import buildcraft.api.core.BlockMetaPair; import buildcraft.api.core.EnumColor; import buildcraft.api.core.IIconProvider; import buildcraft.api.core.JavaTools; @@ -518,8 +517,7 @@ public class BuildCraftTransport extends BuildCraftMod { writer.println("*** REGISTERED FACADES ***"); for (ItemStack stack : facadeItem.allFacades) { if (facadeItem.getBlocksForFacade(stack).length > 0) { - BlockMetaPair bmp = new BlockMetaPair(facadeItem.getBlocksForFacade(stack)[0], facadeItem.getMetaValuesForFacade(stack)[0]); - writer.println(bmp.toString()); + writer.println(Block.blockRegistry.getNameForObject(facadeItem.getBlocksForFacade(stack)[0]) + ":" + facadeItem.getMetaValuesForFacade(stack)[0]); } } writer.close(); diff --git a/common/buildcraft/builders/HeuristicBlockDetection.java b/common/buildcraft/builders/HeuristicBlockDetection.java index f3ce9bc4..f78c4127 100644 --- a/common/buildcraft/builders/HeuristicBlockDetection.java +++ b/common/buildcraft/builders/HeuristicBlockDetection.java @@ -1,8 +1,10 @@ package buildcraft.builders; import java.util.BitSet; +import java.util.Iterator; import net.minecraft.block.Block; +import net.minecraft.init.Blocks; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; @@ -42,14 +44,13 @@ public final class HeuristicBlockDetection { } // Register blocks - for (Object o : Block.blockRegistry.getKeys()) { - Block block = (Block) Block.blockRegistry.getObject(o); - if (block == null) { + Iterator i = Block.blockRegistry.iterator(); + while (i.hasNext()) { + Block block = (Block) i.next(); + if (block == null || block == Blocks.air) { continue; } - BitSet regularBlockMeta = new BitSet(16); - for (int meta = 0; meta < 16; meta++) { if (!SchematicRegistry.INSTANCE.isSupported(block, meta)) { if (block.hasTileEntity(meta)) { @@ -65,23 +66,13 @@ public final class HeuristicBlockDetection { if (creativeOnly) { SchematicRegistry.INSTANCE.registerSchematicBlock(block, meta, SchematicBlockCreative.class); } else { - regularBlockMeta.set(meta); + SchematicRegistry.INSTANCE.registerSchematicBlock(block, meta, SchematicBlock.class); } } catch (Exception e) { e.printStackTrace(); } } } - - if (regularBlockMeta.cardinality() == 16) { - SchematicRegistry.INSTANCE.registerSchematicBlock(block, SchematicBlock.class); - } else { - for (int i = 0; i < 16; i++) { - if (regularBlockMeta.get(i)) { - SchematicRegistry.INSTANCE.registerSchematicBlock(block, i, SchematicBlock.class); - } - } - } } } diff --git a/common/buildcraft/builders/TileBlueprintLibrary.java b/common/buildcraft/builders/TileBlueprintLibrary.java index 28b0b55a..18d16499 100644 --- a/common/buildcraft/builders/TileBlueprintLibrary.java +++ b/common/buildcraft/builders/TileBlueprintLibrary.java @@ -208,7 +208,11 @@ public class TileBlueprintLibrary extends TileBuildCraft implements IInventory { } if (progressOut > 0 && progressOut < PROGRESS_TIME) { - progressOut++; + if (selected == -1) { + progressOut++; + } else { + progressOut = 1; + } } // On progress IN, we'll download the blueprint from the server to the diff --git a/common/buildcraft/core/blueprints/Blueprint.java b/common/buildcraft/core/blueprints/Blueprint.java index 6dd5026b..6f680d86 100644 --- a/common/buildcraft/core/blueprints/Blueprint.java +++ b/common/buildcraft/core/blueprints/Blueprint.java @@ -226,9 +226,6 @@ public class Blueprint extends BlueprintBase { case ALL: break; case CREATIVE_ONLY: - //System.out.println("FOUND CREATIVE BUILDING PERMISSION"); - //System.out.println("- block: " + Block.blockRegistry.getNameForObject(block)); - //System.out.println("- meta: " + meta); if (buildingPermission == BuildingPermission.ALL) { buildingPermission = BuildingPermission.CREATIVE_ONLY; } diff --git a/common/buildcraft/core/blueprints/SchematicRegistry.java b/common/buildcraft/core/blueprints/SchematicRegistry.java index 2ff41d90..d880b6d3 100644 --- a/common/buildcraft/core/blueprints/SchematicRegistry.java +++ b/common/buildcraft/core/blueprints/SchematicRegistry.java @@ -18,21 +18,19 @@ import net.minecraft.entity.Entity; import net.minecraft.init.Blocks; import net.minecraftforge.common.config.Configuration; import net.minecraftforge.common.config.Property; -import net.minecraftforge.oredict.OreDictionary; import buildcraft.api.blueprints.ISchematicRegistry; import buildcraft.api.blueprints.Schematic; import buildcraft.api.blueprints.SchematicBlock; import buildcraft.api.blueprints.SchematicEntity; import buildcraft.api.core.BCLog; -import buildcraft.api.core.BlockMetaPair; import buildcraft.api.core.JavaTools; public final class SchematicRegistry implements ISchematicRegistry { public static SchematicRegistry INSTANCE = new SchematicRegistry(); - public final HashMap schematicBlocks = - new HashMap(); + public final HashMap schematicBlocks = + new HashMap(); public final HashMap, SchematicConstructor> schematicEntities = new HashMap, SchematicConstructor>(); @@ -91,7 +89,9 @@ public final class SchematicRegistry implements ISchematicRegistry { } public void registerSchematicBlock(Block block, Class clazz, Object... params) { - registerSchematicBlock(block, OreDictionary.WILDCARD_VALUE, clazz, params); + for (int i = 0; i < 16; i++) { + registerSchematicBlock(block, i, clazz, params); + } } public void registerSchematicBlock(Block block, int meta, Class clazz, Object... params) { @@ -99,10 +99,11 @@ public final class SchematicRegistry implements ISchematicRegistry { BCLog.logger.warn("Mod tried to register block with null name! Ignoring."); return; } - if (schematicBlocks.containsKey(new BlockMetaPair(block, meta))) { + if (schematicBlocks.containsKey(toStringKey(block, meta))) { throw new RuntimeException("Block " + Block.blockRegistry.getNameForObject(block) + " is already associated with a schematic."); } - schematicBlocks.put(new BlockMetaPair(block, meta), new SchematicConstructor(clazz, params)); + + schematicBlocks.put(toStringKey(block, meta), new SchematicConstructor(clazz, params)); } public void registerSchematicEntity( @@ -115,20 +116,11 @@ public final class SchematicRegistry implements ISchematicRegistry { } public SchematicBlock createSchematicBlock(Block block, int metadata) { - if (block == Blocks.air) { + if (block == null || block == Blocks.air || metadata < 0 || metadata >= 16) { return null; } - BlockMetaPair pairWildcard = new BlockMetaPair(block, OreDictionary.WILDCARD_VALUE); - BlockMetaPair pair = new BlockMetaPair(block, metadata); - - SchematicConstructor c = null; - - if (schematicBlocks.containsKey(pair)) { - c = schematicBlocks.get(pair); - } else if (schematicBlocks.containsKey(pairWildcard)) { - c = schematicBlocks.get(pairWildcard); - } + SchematicConstructor c = schematicBlocks.get(toStringKey(block, metadata)); if (c == null) { return null; @@ -175,8 +167,7 @@ public final class SchematicRegistry implements ISchematicRegistry { } public boolean isSupported(Block block, int metadata) { - return schematicBlocks.containsKey(new BlockMetaPair(block, OreDictionary.WILDCARD_VALUE)) - || schematicBlocks.containsKey(new BlockMetaPair(block, metadata)); + return schematicBlocks.containsKey(toStringKey(block, metadata)); } public boolean isAllowedForBuilding(Block block, int metadata) { @@ -206,4 +197,8 @@ public final class SchematicRegistry implements ISchematicRegistry { } } } + + private String toStringKey(Block block, int meta) { + return Block.blockRegistry.getNameForObject(block) + ":" + meta; + } } diff --git a/common/buildcraft/core/statements/ActionMachineControl.java b/common/buildcraft/core/statements/ActionMachineControl.java index e1d9a8d7..b9f8667b 100644 --- a/common/buildcraft/core/statements/ActionMachineControl.java +++ b/common/buildcraft/core/statements/ActionMachineControl.java @@ -12,9 +12,9 @@ import java.util.Locale; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.util.ForgeDirection; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraftforge.common.util.ForgeDirection; import buildcraft.api.statements.IActionExternal; import buildcraft.api.statements.IStatementContainer; import buildcraft.api.statements.IStatementParameter; diff --git a/common/buildcraft/core/statements/StatementParameterDirection.java b/common/buildcraft/core/statements/StatementParameterDirection.java index b3fec104..04501f14 100644 --- a/common/buildcraft/core/statements/StatementParameterDirection.java +++ b/common/buildcraft/core/statements/StatementParameterDirection.java @@ -13,7 +13,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.IIcon; import net.minecraftforge.common.util.ForgeDirection; -import buildcraft.api.core.NetworkData; import buildcraft.api.statements.IStatement; import buildcraft.api.statements.IStatementContainer; import buildcraft.api.statements.IStatementParameter; diff --git a/common/buildcraft/core/statements/StatementParameterRedstoneGateSideOnly.java b/common/buildcraft/core/statements/StatementParameterRedstoneGateSideOnly.java index b0f6c9d8..1d3d97e5 100644 --- a/common/buildcraft/core/statements/StatementParameterRedstoneGateSideOnly.java +++ b/common/buildcraft/core/statements/StatementParameterRedstoneGateSideOnly.java @@ -4,7 +4,6 @@ import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.IIcon; -import buildcraft.api.core.NetworkData; import buildcraft.api.statements.IStatement; import buildcraft.api.statements.IStatementContainer; import buildcraft.api.statements.IStatementParameter; diff --git a/common/buildcraft/transport/gui/ContainerGateInterface.java b/common/buildcraft/transport/gui/ContainerGateInterface.java index 97bd59b2..c4dfabd0 100644 --- a/common/buildcraft/transport/gui/ContainerGateInterface.java +++ b/common/buildcraft/transport/gui/ContainerGateInterface.java @@ -18,7 +18,6 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ICrafting; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Slot; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; import buildcraft.api.statements.IStatement; import buildcraft.api.statements.IStatementParameter; diff --git a/common/buildcraft/transport/statements/ActionParameterSignal.java b/common/buildcraft/transport/statements/ActionParameterSignal.java index 023f618d..6aee70b2 100644 --- a/common/buildcraft/transport/statements/ActionParameterSignal.java +++ b/common/buildcraft/transport/statements/ActionParameterSignal.java @@ -14,7 +14,6 @@ import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.IIcon; -import buildcraft.api.core.NetworkData; import buildcraft.api.statements.IStatement; import buildcraft.api.statements.IStatementContainer; import buildcraft.api.statements.IStatementParameter; diff --git a/common/buildcraft/transport/statements/TriggerParameterSignal.java b/common/buildcraft/transport/statements/TriggerParameterSignal.java index 152a7b9f..99862cf5 100644 --- a/common/buildcraft/transport/statements/TriggerParameterSignal.java +++ b/common/buildcraft/transport/statements/TriggerParameterSignal.java @@ -14,7 +14,6 @@ import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.IIcon; -import buildcraft.api.core.NetworkData; import buildcraft.api.statements.IStatement; import buildcraft.api.statements.IStatementContainer; import buildcraft.api.statements.IStatementParameter;