diff --git a/api/buildcraft/api/statements/StatementSlot.java b/api/buildcraft/api/statements/StatementSlot.java index 6639bc51..6d8c1c2c 100755 --- a/api/buildcraft/api/statements/StatementSlot.java +++ b/api/buildcraft/api/statements/StatementSlot.java @@ -24,6 +24,9 @@ public class StatementSlot { for (int i = 0; i < parameters.length; i++) { IStatementParameter p1 = parameters[i]; IStatementParameter p2 = s.parameters[i]; + if (p1 == null && p2 != null) { + return false; + } if (!(p1.equals(p2))) { return false; } diff --git a/common/buildcraft/BuildCraftBuilders.java b/common/buildcraft/BuildCraftBuilders.java index 76a2b819..888c1f12 100644 --- a/common/buildcraft/BuildCraftBuilders.java +++ b/common/buildcraft/BuildCraftBuilders.java @@ -82,7 +82,6 @@ import buildcraft.builders.TilePathMarker; import buildcraft.builders.blueprints.RealBlueprintDeployer; import buildcraft.builders.schematics.SchematicAir; import buildcraft.builders.schematics.SchematicBed; -import buildcraft.core.builders.schematics.SchematicBlockCreative; import buildcraft.builders.schematics.SchematicCactus; import buildcraft.builders.schematics.SchematicCustomStack; import buildcraft.builders.schematics.SchematicDirt; @@ -96,7 +95,6 @@ import buildcraft.builders.schematics.SchematicFire; import buildcraft.builders.schematics.SchematicGlassPane; import buildcraft.builders.schematics.SchematicGravel; import buildcraft.builders.schematics.SchematicHanging; -import buildcraft.core.builders.schematics.SchematicIgnore; import buildcraft.builders.schematics.SchematicLever; import buildcraft.builders.schematics.SchematicMinecart; import buildcraft.builders.schematics.SchematicPiston; @@ -106,16 +104,12 @@ import buildcraft.builders.schematics.SchematicRail; import buildcraft.builders.schematics.SchematicRedstoneDiode; import buildcraft.builders.schematics.SchematicRedstoneLamp; import buildcraft.builders.schematics.SchematicRedstoneWire; -import buildcraft.core.builders.schematics.SchematicRotateMeta; import buildcraft.builders.schematics.SchematicSeeds; import buildcraft.builders.schematics.SchematicSign; import buildcraft.builders.schematics.SchematicSkull; import buildcraft.builders.schematics.SchematicStairs; -import buildcraft.core.builders.schematics.SchematicStandalone; import buildcraft.builders.schematics.SchematicStone; -import buildcraft.core.builders.schematics.SchematicTileCreative; import buildcraft.builders.schematics.SchematicTripWireHook; -import buildcraft.core.builders.schematics.SchematicWallSide; import buildcraft.builders.statements.BuildersActionProvider; import buildcraft.builders.urbanism.BlockUrbanist; import buildcraft.builders.urbanism.TileUrbanist; @@ -137,6 +131,12 @@ import buildcraft.core.builders.patterns.PatternHorizon; import buildcraft.core.builders.patterns.PatternParameterYDir; import buildcraft.core.builders.patterns.PatternPyramid; import buildcraft.core.builders.patterns.PatternStairs; +import buildcraft.core.builders.schematics.SchematicBlockCreative; +import buildcraft.core.builders.schematics.SchematicIgnore; +import buildcraft.core.builders.schematics.SchematicRotateMeta; +import buildcraft.core.builders.schematics.SchematicStandalone; +import buildcraft.core.builders.schematics.SchematicTileCreative; +import buildcraft.core.builders.schematics.SchematicWallSide; import buildcraft.core.proxy.CoreProxy; @Mod(name = "BuildCraft Builders", version = Version.VERSION, useMetadata = false, modid = "BuildCraft|Builders", dependencies = DefaultProps.DEPENDENCY_CORE) diff --git a/common/buildcraft/BuildCraftFactory.java b/common/buildcraft/BuildCraftFactory.java index cc65d048..eef0c85e 100644 --- a/common/buildcraft/BuildCraftFactory.java +++ b/common/buildcraft/BuildCraftFactory.java @@ -33,11 +33,11 @@ import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.config.Property; import buildcraft.api.blueprints.BuilderAPI; import buildcraft.api.blueprints.SchematicTile; -import buildcraft.core.builders.schematics.SchematicIgnoreMeta; import buildcraft.core.CompatHooks; import buildcraft.core.DefaultProps; import buildcraft.core.InterModComms; import buildcraft.core.Version; +import buildcraft.core.builders.schematics.SchematicIgnoreMeta; import buildcraft.core.lib.network.ChannelHandler; import buildcraft.core.lib.network.PacketHandler; import buildcraft.core.lib.utils.ConfigUtils; diff --git a/common/buildcraft/BuildCraftRobotics.java b/common/buildcraft/BuildCraftRobotics.java index 71a4cd51..ebaab463 100644 --- a/common/buildcraft/BuildCraftRobotics.java +++ b/common/buildcraft/BuildCraftRobotics.java @@ -39,7 +39,6 @@ import buildcraft.api.statements.IActionInternal; import buildcraft.api.statements.ITriggerInternal; import buildcraft.api.statements.StatementManager; import buildcraft.api.transport.PipeManager; -import buildcraft.builders.urbanism.UrbanistToolsIconProvider; import buildcraft.core.BCCreativeTab; import buildcraft.core.CompatHooks; import buildcraft.core.DefaultProps; diff --git a/common/buildcraft/BuildCraftSilicon.java b/common/buildcraft/BuildCraftSilicon.java index b7f806c3..463fda8e 100644 --- a/common/buildcraft/BuildCraftSilicon.java +++ b/common/buildcraft/BuildCraftSilicon.java @@ -25,11 +25,11 @@ import net.minecraftforge.oredict.OreDictionary; import buildcraft.api.blueprints.BuilderAPI; import buildcraft.api.recipes.BuildcraftRecipeRegistry; import buildcraft.api.robots.RobotManager; -import buildcraft.core.builders.schematics.SchematicRotateMeta; import buildcraft.core.CompatHooks; import buildcraft.core.DefaultProps; import buildcraft.core.InterModComms; import buildcraft.core.Version; +import buildcraft.core.builders.schematics.SchematicRotateMeta; import buildcraft.core.lib.items.ItemBuildCraft; import buildcraft.core.lib.network.ChannelHandler; import buildcraft.core.proxy.CoreProxy; diff --git a/common/buildcraft/BuildCraftTransport.java b/common/buildcraft/BuildCraftTransport.java index cc7dc621..9e44a548 100644 --- a/common/buildcraft/BuildCraftTransport.java +++ b/common/buildcraft/BuildCraftTransport.java @@ -32,11 +32,15 @@ import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.event.FMLServerStartingEvent; import cpw.mods.fml.common.event.FMLServerStoppingEvent; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.TickEvent; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.common.DimensionManager; +import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.config.Property; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.oredict.RecipeSorter; @@ -84,6 +88,7 @@ import buildcraft.transport.TileGenericPipe; import buildcraft.transport.TransportGuiHandler; import buildcraft.transport.TransportProxy; import buildcraft.transport.WireIconProvider; +import buildcraft.transport.gates.GateDefinition; import buildcraft.transport.gates.GateDefinition.GateLogic; import buildcraft.transport.gates.GateDefinition.GateMaterial; import buildcraft.transport.gates.GateExpansionLightSensor; @@ -467,6 +472,7 @@ public class BuildCraftTransport extends BuildCraftMod { @Mod.EventHandler public void init(FMLInitializationEvent evt) { transportChannelHandler = new ChannelHandler(); + MinecraftForge.EVENT_BUS.register(this); transportChannelHandler.registerPacketType(PacketFluidUpdate.class); transportChannelHandler.registerPacketType(PacketPipeTransportItemStack.class); @@ -565,6 +571,33 @@ public class BuildCraftTransport extends BuildCraftMod { } } + @SubscribeEvent + @SideOnly(Side.CLIENT) + public void textureHook(TextureStitchEvent.Pre event) { + if (event.map.getTextureType() == 0) { + for (Item i : BlockGenericPipe.pipes.keySet()) { + Pipe dummyPipe = BlockGenericPipe.createPipe(i); + if (dummyPipe != null) { + dummyPipe.getIconProvider().registerIcons(event.map); + } + } + + wireIconProvider.registerIcons(event.map); + + for (GateDefinition.GateMaterial material : GateDefinition.GateMaterial.VALUES) { + material.registerBlockIcon(event.map); + } + + for (GateDefinition.GateLogic logic : GateDefinition.GateLogic.VALUES) { + logic.registerBlockIcon(event.map); + } + + for (IGateExpansion expansion : GateExpansions.getExpansions()) { + expansion.registerBlockOverlay(event.map); + } + } + } + @Mod.EventHandler public void serverLoading(FMLServerStartingEvent event) { pipeExtensionListener = new PipeExtensionListener(); diff --git a/common/buildcraft/builders/HeuristicBlockDetection.java b/common/buildcraft/builders/HeuristicBlockDetection.java index ea1bff93..ef730c95 100644 --- a/common/buildcraft/builders/HeuristicBlockDetection.java +++ b/common/buildcraft/builders/HeuristicBlockDetection.java @@ -8,9 +8,9 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.IFluidBlock; import buildcraft.api.blueprints.SchematicBlock; import buildcraft.api.blueprints.SchematicFluid; +import buildcraft.core.blueprints.SchematicRegistry; import buildcraft.core.builders.schematics.SchematicBlockCreative; import buildcraft.core.builders.schematics.SchematicTileCreative; -import buildcraft.core.blueprints.SchematicRegistry; public final class HeuristicBlockDetection { diff --git a/common/buildcraft/robotics/map/MapRegion.java b/common/buildcraft/robotics/map/MapRegion.java index 3eb0c3ab..d31c2cc5 100644 --- a/common/buildcraft/robotics/map/MapRegion.java +++ b/common/buildcraft/robotics/map/MapRegion.java @@ -2,6 +2,7 @@ package buildcraft.robotics.map; import net.minecraft.nbt.NBTTagCompound; import buildcraft.api.core.INBTStoreable; + import gnu.trove.map.hash.TIntObjectHashMap; public class MapRegion implements INBTStoreable { diff --git a/common/buildcraft/robotics/map/MapWorld.java b/common/buildcraft/robotics/map/MapWorld.java index f49413be..321112e7 100644 --- a/common/buildcraft/robotics/map/MapWorld.java +++ b/common/buildcraft/robotics/map/MapWorld.java @@ -15,6 +15,7 @@ import java.util.Set; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import buildcraft.core.lib.utils.NBTUtils; + import gnu.trove.map.hash.TLongObjectHashMap; public class MapWorld { diff --git a/common/buildcraft/silicon/TileAssemblyTable.java b/common/buildcraft/silicon/TileAssemblyTable.java index f756439f..104645bf 100644 --- a/common/buildcraft/silicon/TileAssemblyTable.java +++ b/common/buildcraft/silicon/TileAssemblyTable.java @@ -93,11 +93,13 @@ public class TileAssemblyTable extends TileLaserTableBase implements IInventory, if (currentRecipe.canBeCrafted(this)) { ItemStack remaining = currentRecipe.craft(this, false).crafted.copy(); - EntityRobotBase robot = RobotManager.registryProvider.getRegistry(worldObj) - .robotTaking(new ResourceIdAssemblyTable(this)); + if (RobotManager.registryProvider != null) { + EntityRobotBase robot = RobotManager.registryProvider.getRegistry(worldObj) + .robotTaking(new ResourceIdAssemblyTable(this)); - if (robot != null) { - remaining = robot.receiveItem(this, remaining); + if (robot != null) { + remaining = robot.receiveItem(this, remaining); + } } if (remaining != null && remaining.stackSize > 0) { diff --git a/common/buildcraft/transport/BlockGenericPipe.java b/common/buildcraft/transport/BlockGenericPipe.java index bfdcb7c1..7281f13a 100644 --- a/common/buildcraft/transport/BlockGenericPipe.java +++ b/common/buildcraft/transport/BlockGenericPipe.java @@ -47,8 +47,6 @@ import buildcraft.api.blocks.IColorRemovable; import buildcraft.api.core.BCLog; import buildcraft.api.core.BlockIndex; import buildcraft.api.events.PipePlacedEvent; -import buildcraft.api.gates.GateExpansions; -import buildcraft.api.gates.IGateExpansion; import buildcraft.api.items.IMapLocation; import buildcraft.api.tools.IToolWrench; import buildcraft.api.transport.IPipe; @@ -62,7 +60,6 @@ import buildcraft.core.lib.TileBuffer; import buildcraft.core.lib.block.BlockBuildCraft; import buildcraft.core.lib.utils.MatrixTranformations; import buildcraft.core.lib.utils.Utils; -import buildcraft.transport.gates.GateDefinition; import buildcraft.transport.gates.GatePluggable; import buildcraft.transport.render.PipeRendererWorld; @@ -99,8 +96,6 @@ public class BlockGenericPipe extends BlockBuildCraft implements IColorRemovable } } - private boolean skippedFirstIconRegister; - /* Defined subprograms ************************************************* */ public BlockGenericPipe() { super(Material.glass); @@ -907,31 +902,7 @@ public class BlockGenericPipe extends BlockBuildCraft implements IColorRemovable @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { - if (!skippedFirstIconRegister) { - skippedFirstIconRegister = true; - return; - } - BuildCraftTransport.instance.wireIconProvider.registerIcons(iconRegister); - - for (Item i : pipes.keySet()) { - Pipe dummyPipe = createPipe(i); - if (dummyPipe != null) { - dummyPipe.getIconProvider().registerIcons(iconRegister); - } - } - - for (GateDefinition.GateMaterial material : GateDefinition.GateMaterial.VALUES) { - material.registerBlockIcon(iconRegister); - } - - for (GateDefinition.GateLogic logic : GateDefinition.GateLogic.VALUES) { - logic.registerBlockIcon(iconRegister); - } - - for (IGateExpansion expansion : GateExpansions.getExpansions()) { - expansion.registerBlockOverlay(iconRegister); - } } /** diff --git a/common/buildcraft/transport/render/FacadeItemRenderer.java b/common/buildcraft/transport/render/FacadeItemRenderer.java index c938d0de..e6d96016 100644 --- a/common/buildcraft/transport/render/FacadeItemRenderer.java +++ b/common/buildcraft/transport/render/FacadeItemRenderer.java @@ -171,9 +171,7 @@ public class FacadeItemRenderer implements IItemRenderer { block = BuildCraftTransport.genericPipeBlock; IIcon textureID = BuildCraftTransport.instance.pipeIconProvider.getIcon(PipeIconProvider.TYPE.PipeStructureCobblestone.ordinal()); // Structure pipe - block.setBlockBounds(CoreConstants.PIPE_MIN_POS, CoreConstants.PIPE_MIN_POS, CoreConstants.PIPE_MIN_POS, CoreConstants.PIPE_MAX_POS, CoreConstants.PIPE_MAX_POS, CoreConstants.PIPE_MAX_POS - 1F / 16F); - block.setBlockBoundsForItemRender(); - render.setRenderBoundsFromBlock(block); + render.setRenderBounds(CoreConstants.PIPE_MIN_POS, CoreConstants.PIPE_MIN_POS, CoreConstants.PIPE_MIN_POS, CoreConstants.PIPE_MAX_POS, CoreConstants.PIPE_MAX_POS, CoreConstants.PIPE_MAX_POS - 1F / 16F); GL11.glTranslatef(translateX, translateY, translateZ + 0.25F); tessellator.startDrawingQuads(); @@ -202,7 +200,6 @@ public class FacadeItemRenderer implements IItemRenderer { tessellator.draw(); } GL11.glTranslatef(0.5F, 0.5F, 0.5F); - block.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); } @Override