Clean up Recipe API
This commit is contained in:
parent
09ef987875
commit
cc0298ce5b
20 changed files with 495 additions and 421 deletions
|
@ -1,14 +1,12 @@
|
||||||
/**
|
/**
|
||||||
* BuildCraft is open-source. It is distributed under the terms of the
|
* BuildCraft is open-source. It is distributed under the terms of the
|
||||||
* BuildCraft Open Source License. It grants rights to read, modify, compile
|
* BuildCraft Open Source License. It grants rights to read, modify, compile or
|
||||||
* or run the code. It does *NOT* grant the right to redistribute this software
|
* run the code. It does *NOT* grant the right to redistribute this software or
|
||||||
* or its modifications in any form, binary or source, except if expressively
|
* its modifications in any form, binary or source, except if expressively
|
||||||
* granted by the copyright holder.
|
* granted by the copyright holder.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package buildcraft;
|
package buildcraft;
|
||||||
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
|
|
||||||
|
@ -29,6 +27,8 @@ import net.minecraftforge.fluids.IFluidBlock;
|
||||||
import buildcraft.api.core.BuildCraftAPI;
|
import buildcraft.api.core.BuildCraftAPI;
|
||||||
import buildcraft.api.core.IIconProvider;
|
import buildcraft.api.core.IIconProvider;
|
||||||
import buildcraft.api.gates.ActionManager;
|
import buildcraft.api.gates.ActionManager;
|
||||||
|
import buildcraft.api.recipes.BuildcraftRecipes;
|
||||||
|
import buildcraft.core.recipes.RefineryRecipeManager;
|
||||||
import buildcraft.core.BlockIndex;
|
import buildcraft.core.BlockIndex;
|
||||||
import buildcraft.core.BlockSpring;
|
import buildcraft.core.BlockSpring;
|
||||||
import buildcraft.core.BuildCraftConfiguration;
|
import buildcraft.core.BuildCraftConfiguration;
|
||||||
|
@ -64,6 +64,7 @@ import buildcraft.core.triggers.TriggerInventoryLevel;
|
||||||
import buildcraft.core.triggers.TriggerMachine;
|
import buildcraft.core.triggers.TriggerMachine;
|
||||||
import buildcraft.core.utils.BCLog;
|
import buildcraft.core.utils.BCLog;
|
||||||
import buildcraft.core.utils.Localization;
|
import buildcraft.core.utils.Localization;
|
||||||
|
import buildcraft.core.recipes.AssemblyRecipeManager;
|
||||||
import buildcraft.transport.triggers.TriggerRedstoneInput;
|
import buildcraft.transport.triggers.TriggerRedstoneInput;
|
||||||
import cpw.mods.fml.common.Mod;
|
import cpw.mods.fml.common.Mod;
|
||||||
import cpw.mods.fml.common.Mod.EventHandler;
|
import cpw.mods.fml.common.Mod.EventHandler;
|
||||||
|
@ -81,61 +82,47 @@ import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
@Mod(name = "BuildCraft", version = Version.VERSION, useMetadata = false, modid = "BuildCraft|Core", acceptedMinecraftVersions = "[1.6.4,1.7)", dependencies = "required-after:Forge@[9.11.1.953,)")
|
@Mod(name = "BuildCraft", version = Version.VERSION, useMetadata = false, modid = "BuildCraft|Core", acceptedMinecraftVersions = "[1.6.4,1.7)", dependencies = "required-after:Forge@[9.11.1.953,)")
|
||||||
@NetworkMod(channels = { DefaultProps.NET_CHANNEL_NAME }, packetHandler = PacketHandler.class, clientSideRequired = true, serverSideRequired = true)
|
@NetworkMod(channels = {DefaultProps.NET_CHANNEL_NAME}, packetHandler = PacketHandler.class, clientSideRequired = true, serverSideRequired = true)
|
||||||
public class BuildCraftCore {
|
public class BuildCraftCore {
|
||||||
|
|
||||||
public static enum RenderMode {
|
public static enum RenderMode {
|
||||||
|
|
||||||
Full, NoDynamic
|
Full, NoDynamic
|
||||||
};
|
};
|
||||||
|
|
||||||
public static RenderMode render = RenderMode.Full;
|
public static RenderMode render = RenderMode.Full;
|
||||||
|
|
||||||
public static boolean debugMode = false;
|
public static boolean debugMode = false;
|
||||||
public static boolean modifyWorld = false;
|
public static boolean modifyWorld = false;
|
||||||
public static boolean trackNetworkUsage = false;
|
public static boolean trackNetworkUsage = false;
|
||||||
public static boolean colorBlindMode = false;
|
public static boolean colorBlindMode = false;
|
||||||
|
|
||||||
public static boolean dropBrokenBlocks = true; // Set to false to prevent the filler from dropping broken blocks.
|
public static boolean dropBrokenBlocks = true; // Set to false to prevent the filler from dropping broken blocks.
|
||||||
|
|
||||||
public static int itemLifespan = 1200;
|
public static int itemLifespan = 1200;
|
||||||
|
|
||||||
public static int updateFactor = 10;
|
public static int updateFactor = 10;
|
||||||
|
|
||||||
public static long longUpdateFactor = 40;
|
public static long longUpdateFactor = 40;
|
||||||
|
|
||||||
public static BuildCraftConfiguration mainConfiguration;
|
public static BuildCraftConfiguration mainConfiguration;
|
||||||
|
|
||||||
public static TreeMap<BlockIndex, PacketUpdate> bufferedDescriptions = new TreeMap<BlockIndex, PacketUpdate>();
|
public static TreeMap<BlockIndex, PacketUpdate> bufferedDescriptions = new TreeMap<BlockIndex, PacketUpdate>();
|
||||||
|
|
||||||
public static final int trackedPassiveEntityId = 156;
|
public static final int trackedPassiveEntityId = 156;
|
||||||
|
|
||||||
public static boolean continuousCurrentModel;
|
public static boolean continuousCurrentModel;
|
||||||
|
|
||||||
public static Block springBlock;
|
public static Block springBlock;
|
||||||
|
|
||||||
public static Item woodenGearItem;
|
public static Item woodenGearItem;
|
||||||
public static Item stoneGearItem;
|
public static Item stoneGearItem;
|
||||||
public static Item ironGearItem;
|
public static Item ironGearItem;
|
||||||
public static Item goldGearItem;
|
public static Item goldGearItem;
|
||||||
public static Item diamondGearItem;
|
public static Item diamondGearItem;
|
||||||
public static Item wrenchItem;
|
public static Item wrenchItem;
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public static Icon redLaserTexture;
|
public static Icon redLaserTexture;
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public static Icon blueLaserTexture;
|
public static Icon blueLaserTexture;
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public static Icon stripesLaserTexture;
|
public static Icon stripesLaserTexture;
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public static Icon transparentTexture;
|
public static Icon transparentTexture;
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
@SideOnly(Side.CLIENT)
|
public static IIconProvider iconProvider;
|
||||||
public static IIconProvider iconProvider;
|
|
||||||
|
|
||||||
public static int blockByEntityModel;
|
public static int blockByEntityModel;
|
||||||
public static int legacyPipeModel;
|
public static int legacyPipeModel;
|
||||||
public static int markerModel;
|
public static int markerModel;
|
||||||
public static int oilModel;
|
public static int oilModel;
|
||||||
|
|
||||||
public static BCTrigger triggerMachineActive = new TriggerMachine(DefaultProps.TRIGGER_MACHINE_ACTIVE, true);
|
public static BCTrigger triggerMachineActive = new TriggerMachine(DefaultProps.TRIGGER_MACHINE_ACTIVE, true);
|
||||||
public static BCTrigger triggerMachineInactive = new TriggerMachine(DefaultProps.TRIGGER_MACHINE_INACTIVE, false);
|
public static BCTrigger triggerMachineInactive = new TriggerMachine(DefaultProps.TRIGGER_MACHINE_INACTIVE, false);
|
||||||
public static BCTrigger triggerEmptyInventory = new TriggerInventory(DefaultProps.TRIGGER_EMPTY_INVENTORY, TriggerInventory.State.Empty);
|
public static BCTrigger triggerEmptyInventory = new TriggerInventory(DefaultProps.TRIGGER_EMPTY_INVENTORY, TriggerInventory.State.Empty);
|
||||||
|
@ -148,30 +135,28 @@ public class BuildCraftCore {
|
||||||
public static BCTrigger triggerFullFluid = new TriggerFluidContainer(DefaultProps.TRIGGER_FULL_LIQUID, TriggerFluidContainer.State.Full);
|
public static BCTrigger triggerFullFluid = new TriggerFluidContainer(DefaultProps.TRIGGER_FULL_LIQUID, TriggerFluidContainer.State.Full);
|
||||||
public static BCTrigger triggerRedstoneActive = new TriggerRedstoneInput(DefaultProps.TRIGGER_REDSTONE_ACTIVE, true);
|
public static BCTrigger triggerRedstoneActive = new TriggerRedstoneInput(DefaultProps.TRIGGER_REDSTONE_ACTIVE, true);
|
||||||
public static BCTrigger triggerRedstoneInactive = new TriggerRedstoneInput(DefaultProps.TRIGGER_REDSTONE_INACTIVE, false);
|
public static BCTrigger triggerRedstoneInactive = new TriggerRedstoneInput(DefaultProps.TRIGGER_REDSTONE_INACTIVE, false);
|
||||||
|
|
||||||
public static BCTrigger triggerInventoryBelow25 = new TriggerInventoryLevel(TriggerInventoryLevel.TriggerType.BELOW_25);
|
public static BCTrigger triggerInventoryBelow25 = new TriggerInventoryLevel(TriggerInventoryLevel.TriggerType.BELOW_25);
|
||||||
public static BCTrigger triggerInventoryBelow50 = new TriggerInventoryLevel(TriggerInventoryLevel.TriggerType.BELOW_50);
|
public static BCTrigger triggerInventoryBelow50 = new TriggerInventoryLevel(TriggerInventoryLevel.TriggerType.BELOW_50);
|
||||||
public static BCTrigger triggerInventoryBelow75 = new TriggerInventoryLevel(TriggerInventoryLevel.TriggerType.BELOW_75);
|
public static BCTrigger triggerInventoryBelow75 = new TriggerInventoryLevel(TriggerInventoryLevel.TriggerType.BELOW_75);
|
||||||
|
|
||||||
public static BCAction actionRedstone = new ActionRedstoneOutput(DefaultProps.ACTION_REDSTONE);
|
public static BCAction actionRedstone = new ActionRedstoneOutput(DefaultProps.ACTION_REDSTONE);
|
||||||
public static BCAction actionOn = new ActionMachineControl(DefaultProps.ACTION_ON, Mode.On);
|
public static BCAction actionOn = new ActionMachineControl(DefaultProps.ACTION_ON, Mode.On);
|
||||||
public static BCAction actionOff = new ActionMachineControl(DefaultProps.ACTION_OFF, Mode.Off);
|
public static BCAction actionOff = new ActionMachineControl(DefaultProps.ACTION_OFF, Mode.Off);
|
||||||
public static BCAction actionLoop = new ActionMachineControl(DefaultProps.ACTION_LOOP, Mode.Loop);
|
public static BCAction actionLoop = new ActionMachineControl(DefaultProps.ACTION_LOOP, Mode.Loop);
|
||||||
|
|
||||||
public static boolean loadDefaultRecipes = true;
|
public static boolean loadDefaultRecipes = true;
|
||||||
public static boolean forcePneumaticPower = true;
|
public static boolean forcePneumaticPower = true;
|
||||||
public static boolean consumeWaterSources = false;
|
public static boolean consumeWaterSources = false;
|
||||||
|
|
||||||
public static BptItem[] itemBptProps = new BptItem[Item.itemsList.length];
|
public static BptItem[] itemBptProps = new BptItem[Item.itemsList.length];
|
||||||
|
|
||||||
@Instance("BuildCraft|Core")
|
@Instance("BuildCraft|Core")
|
||||||
public static BuildCraftCore instance;
|
public static BuildCraftCore instance;
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void loadConfiguration(FMLPreInitializationEvent evt) {
|
public void loadConfiguration(FMLPreInitializationEvent evt) {
|
||||||
|
|
||||||
BCLog.initLog();
|
BCLog.initLog();
|
||||||
|
|
||||||
|
BuildcraftRecipes.assemblyTable = AssemblyRecipeManager.INSTANCE;
|
||||||
|
BuildcraftRecipes.refinery = RefineryRecipeManager.INSTANCE;
|
||||||
|
|
||||||
mainConfiguration = new BuildCraftConfiguration(new File(evt.getModConfigurationDirectory(), "buildcraft/main.conf"));
|
mainConfiguration = new BuildCraftConfiguration(new File(evt.getModConfigurationDirectory(), "buildcraft/main.conf"));
|
||||||
try {
|
try {
|
||||||
mainConfiguration.load();
|
mainConfiguration.load();
|
||||||
|
@ -233,7 +218,7 @@ public class BuildCraftCore {
|
||||||
consumeWaterSources = consumeWater.getBoolean(consumeWaterSources);
|
consumeWaterSources = consumeWater.getBoolean(consumeWaterSources);
|
||||||
consumeWater.comment = "set to true if the Pump should consume water";
|
consumeWater.comment = "set to true if the Pump should consume water";
|
||||||
|
|
||||||
if(BuildCraftCore.modifyWorld) {
|
if (BuildCraftCore.modifyWorld) {
|
||||||
springBlock = new BlockSpring(springId.getInt()).setUnlocalizedName("eternalSpring");
|
springBlock = new BlockSpring(springId.getInt()).setUnlocalizedName("eternalSpring");
|
||||||
CoreProxy.proxy.registerBlock(springBlock, ItemSpring.class);
|
CoreProxy.proxy.registerBlock(springBlock, ItemSpring.class);
|
||||||
}
|
}
|
||||||
|
@ -276,8 +261,8 @@ public class BuildCraftCore {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void initialize(FMLInitializationEvent evt) {
|
public void initialize(FMLInitializationEvent evt) {
|
||||||
// MinecraftForge.registerConnectionHandler(new ConnectionHandler());
|
// MinecraftForge.registerConnectionHandler(new ConnectionHandler());
|
||||||
ActionManager.registerTriggerProvider(new DefaultTriggerProvider());
|
ActionManager.registerTriggerProvider(new DefaultTriggerProvider());
|
||||||
ActionManager.registerActionProvider(new DefaultActionProvider());
|
ActionManager.registerActionProvider(new DefaultActionProvider());
|
||||||
|
@ -321,29 +306,29 @@ public class BuildCraftCore {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void serverStarting(FMLServerStartingEvent event) {
|
public void serverStarting(FMLServerStartingEvent event) {
|
||||||
event.registerServerCommand(new CommandBuildCraft());
|
event.registerServerCommand(new CommandBuildCraft());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ForgeSubscribe
|
@ForgeSubscribe
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public void textureHook(TextureStitchEvent.Pre event){
|
public void textureHook(TextureStitchEvent.Pre event) {
|
||||||
if (event.map.textureType == 1) {
|
if (event.map.textureType == 1) {
|
||||||
iconProvider = new CoreIconProvider();
|
iconProvider = new CoreIconProvider();
|
||||||
iconProvider.registerIcons(event.map);
|
iconProvider.registerIcons(event.map);
|
||||||
ActionTriggerIconProvider.INSTANCE.registerIcons(event.map);
|
ActionTriggerIconProvider.INSTANCE.registerIcons(event.map);
|
||||||
} else if (event.map.textureType == 0) {
|
} else if (event.map.textureType == 0) {
|
||||||
BuildCraftCore.redLaserTexture = event.map.registerIcon("buildcraft:blockRedLaser");
|
BuildCraftCore.redLaserTexture = event.map.registerIcon("buildcraft:blockRedLaser");
|
||||||
BuildCraftCore.blueLaserTexture = event.map.registerIcon("buildcraft:blockBlueLaser");
|
BuildCraftCore.blueLaserTexture = event.map.registerIcon("buildcraft:blockBlueLaser");
|
||||||
BuildCraftCore.stripesLaserTexture = event.map.registerIcon("buildcraft:blockStripesLaser");
|
BuildCraftCore.stripesLaserTexture = event.map.registerIcon("buildcraft:blockStripesLaser");
|
||||||
BuildCraftCore.transparentTexture = event.map.registerIcon("buildcraft:blockTransparentLaser");
|
BuildCraftCore.transparentTexture = event.map.registerIcon("buildcraft:blockTransparentLaser");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void loadRecipes() {
|
public void loadRecipes() {
|
||||||
CoreProxy.proxy.addCraftingRecipe(new ItemStack(wrenchItem), "I I", " G ", " I ", 'I', Item.ingotIron, 'G', stoneGearItem);
|
CoreProxy.proxy.addCraftingRecipe(new ItemStack(wrenchItem), "I I", " G ", " I ", 'I', Item.ingotIron, 'G', stoneGearItem);
|
||||||
CoreProxy.proxy.addCraftingRecipe(new ItemStack(woodenGearItem), " S ", "S S", " S ", 'S', "stickWood");
|
CoreProxy.proxy.addCraftingRecipe(new ItemStack(woodenGearItem), " S ", "S S", " S ", 'S', "stickWood");
|
||||||
CoreProxy.proxy.addCraftingRecipe(new ItemStack(stoneGearItem), " I ", "IGI", " I ", 'I', "cobblestone", 'G',
|
CoreProxy.proxy.addCraftingRecipe(new ItemStack(stoneGearItem), " I ", "IGI", " I ", 'I', "cobblestone", 'G',
|
||||||
woodenGearItem);
|
woodenGearItem);
|
||||||
|
@ -353,7 +338,7 @@ public class BuildCraftCore {
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void processIMCRequests(FMLInterModComms.IMCEvent event) {
|
public void processIMCRequests(FMLInterModComms.IMCEvent event) {
|
||||||
InterModComms.processIMC(event);
|
InterModComms.processIMC(event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,8 @@ package buildcraft;
|
||||||
|
|
||||||
import buildcraft.api.fuels.IronEngineCoolant;
|
import buildcraft.api.fuels.IronEngineCoolant;
|
||||||
import buildcraft.api.fuels.IronEngineFuel;
|
import buildcraft.api.fuels.IronEngineFuel;
|
||||||
import buildcraft.api.recipes.RefineryRecipes;
|
import buildcraft.api.recipes.BuildcraftRecipes;
|
||||||
|
import buildcraft.core.recipes.RefineryRecipeManager;
|
||||||
import buildcraft.core.BlockIndex;
|
import buildcraft.core.BlockIndex;
|
||||||
import buildcraft.core.BlockSpring;
|
import buildcraft.core.BlockSpring;
|
||||||
import buildcraft.core.DefaultProps;
|
import buildcraft.core.DefaultProps;
|
||||||
|
@ -81,7 +82,7 @@ public class BuildCraftEnergy {
|
||||||
public static Item bucketFuel;
|
public static Item bucketFuel;
|
||||||
public static Item fuel;
|
public static Item fuel;
|
||||||
public static boolean canOilBurn;
|
public static boolean canOilBurn;
|
||||||
public static double oilWellScalar;
|
public static double oilWellScalar = 1.0;
|
||||||
public static TreeMap<BlockIndex, Integer> saturationStored = new TreeMap<BlockIndex, Integer>();
|
public static TreeMap<BlockIndex, Integer> saturationStored = new TreeMap<BlockIndex, Integer>();
|
||||||
public static BCTrigger triggerBlueEngineHeat = new TriggerEngineHeat(DefaultProps.TRIGGER_BLUE_ENGINE_HEAT, EnergyStage.BLUE, "buildcraft.engine.stage.blue");
|
public static BCTrigger triggerBlueEngineHeat = new TriggerEngineHeat(DefaultProps.TRIGGER_BLUE_ENGINE_HEAT, EnergyStage.BLUE, "buildcraft.engine.stage.blue");
|
||||||
public static BCTrigger triggerGreenEngineHeat = new TriggerEngineHeat(DefaultProps.TRIGGER_GREEN_ENGINE_HEAT, EnergyStage.GREEN, "buildcraft.engine.stage.green");
|
public static BCTrigger triggerGreenEngineHeat = new TriggerEngineHeat(DefaultProps.TRIGGER_GREEN_ENGINE_HEAT, EnergyStage.GREEN, "buildcraft.engine.stage.green");
|
||||||
|
@ -207,7 +208,7 @@ public class BuildCraftEnergy {
|
||||||
BucketHandler.INSTANCE.buckets.put(blockFuel, bucketFuel);
|
BucketHandler.INSTANCE.buckets.put(blockFuel, bucketFuel);
|
||||||
MinecraftForge.EVENT_BUS.register(BucketHandler.INSTANCE);
|
MinecraftForge.EVENT_BUS.register(BucketHandler.INSTANCE);
|
||||||
|
|
||||||
RefineryRecipes.addRecipe(new FluidStack(fluidOil, 1), new FluidStack(fluidFuel, 1), 12, 1);
|
BuildcraftRecipes.refinery.addRecipe(new FluidStack(fluidOil, 1), new FluidStack(fluidFuel, 1), 12, 1);
|
||||||
|
|
||||||
// Iron Engine Fuels
|
// Iron Engine Fuels
|
||||||
// IronEngineFuel.addFuel("lava", 1, 20000);
|
// IronEngineFuel.addFuel("lava", 1, 20000);
|
||||||
|
|
|
@ -9,7 +9,8 @@ package buildcraft;
|
||||||
|
|
||||||
import buildcraft.api.bptblocks.BptBlockInventory;
|
import buildcraft.api.bptblocks.BptBlockInventory;
|
||||||
import buildcraft.api.bptblocks.BptBlockRotateMeta;
|
import buildcraft.api.bptblocks.BptBlockRotateMeta;
|
||||||
import buildcraft.api.recipes.AssemblyRecipe;
|
import buildcraft.api.recipes.BuildcraftRecipes;
|
||||||
|
import buildcraft.core.recipes.AssemblyRecipeManager;
|
||||||
import buildcraft.core.DefaultProps;
|
import buildcraft.core.DefaultProps;
|
||||||
import buildcraft.core.InterModComms;
|
import buildcraft.core.InterModComms;
|
||||||
import buildcraft.core.ItemRedstoneChipset;
|
import buildcraft.core.ItemRedstoneChipset;
|
||||||
|
@ -141,95 +142,65 @@ public class BuildCraftSilicon {
|
||||||
new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 6)});
|
new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 6)});
|
||||||
|
|
||||||
// / REDSTONE CHIPSETS
|
// / REDSTONE CHIPSETS
|
||||||
AssemblyRecipe.assemblyRecipes.add(new AssemblyRecipe(new ItemStack[]{new ItemStack(Item.redstone)}, 10000, new ItemStack(redstoneChipset, 1, 0)));
|
|
||||||
CoreProxy.proxy.addName(new ItemStack(redstoneChipset, 1, 0), "Redstone Chipset");
|
CoreProxy.proxy.addName(new ItemStack(redstoneChipset, 1, 0), "Redstone Chipset");
|
||||||
AssemblyRecipe.assemblyRecipes.add(new AssemblyRecipe(new ItemStack[]{new ItemStack(Item.redstone), new ItemStack(Item.ingotIron)}, 20000,
|
|
||||||
new ItemStack(redstoneChipset, 1, 1)));
|
|
||||||
CoreProxy.proxy.addName(new ItemStack(redstoneChipset, 1, 1), "Redstone Iron Chipset");
|
CoreProxy.proxy.addName(new ItemStack(redstoneChipset, 1, 1), "Redstone Iron Chipset");
|
||||||
AssemblyRecipe.assemblyRecipes.add(new AssemblyRecipe(new ItemStack[]{new ItemStack(Item.redstone), new ItemStack(Item.ingotGold)}, 40000,
|
|
||||||
new ItemStack(redstoneChipset, 1, 2)));
|
|
||||||
CoreProxy.proxy.addName(new ItemStack(redstoneChipset, 1, 2), "Redstone Golden Chipset");
|
CoreProxy.proxy.addName(new ItemStack(redstoneChipset, 1, 2), "Redstone Golden Chipset");
|
||||||
AssemblyRecipe.assemblyRecipes.add(new AssemblyRecipe(new ItemStack[]{new ItemStack(Item.redstone), new ItemStack(Item.diamond)}, 80000,
|
|
||||||
new ItemStack(redstoneChipset, 1, 3)));
|
|
||||||
CoreProxy.proxy.addName(new ItemStack(redstoneChipset, 1, 3), "Redstone Diamond Chipset");
|
CoreProxy.proxy.addName(new ItemStack(redstoneChipset, 1, 3), "Redstone Diamond Chipset");
|
||||||
// PULSATING CHIPSETS
|
|
||||||
AssemblyRecipe.assemblyRecipes.add(new AssemblyRecipe(new ItemStack[]{new ItemStack(Item.redstone), new ItemStack(Item.enderPearl)}, 40000,
|
|
||||||
new ItemStack(redstoneChipset, 2, 4)));
|
|
||||||
CoreProxy.proxy.addName(new ItemStack(redstoneChipset, 1, 4), "Pulsating Chipset");
|
CoreProxy.proxy.addName(new ItemStack(redstoneChipset, 1, 4), "Pulsating Chipset");
|
||||||
|
|
||||||
|
BuildcraftRecipes.assemblyTable.addRecipe(10000, new ItemStack(redstoneChipset, 1, 0), Item.redstone);
|
||||||
|
BuildcraftRecipes.assemblyTable.addRecipe(20000, new ItemStack(redstoneChipset, 1, 1), Item.redstone, Item.ingotIron);
|
||||||
|
BuildcraftRecipes.assemblyTable.addRecipe(40000, new ItemStack(redstoneChipset, 1, 2), Item.redstone, Item.ingotGold);
|
||||||
|
BuildcraftRecipes.assemblyTable.addRecipe(80000, new ItemStack(redstoneChipset, 1, 3), Item.redstone, Item.diamond);
|
||||||
|
BuildcraftRecipes.assemblyTable.addRecipe(40000, new ItemStack(redstoneChipset, 2, 4), Item.redstone, Item.enderPearl);
|
||||||
|
|
||||||
// / REDSTONE GATES
|
// / REDSTONE GATES
|
||||||
AssemblyRecipe.assemblyRecipes.add(new AssemblyRecipe(new ItemStack[]{new ItemStack(redstoneChipset, 1, 0)}, 20000, new ItemStack(
|
|
||||||
BuildCraftTransport.pipeGate, 1, 0)));
|
|
||||||
CoreProxy.proxy.addName(new ItemStack(BuildCraftTransport.pipeGate, 1, 0), "Gate");
|
CoreProxy.proxy.addName(new ItemStack(BuildCraftTransport.pipeGate, 1, 0), "Gate");
|
||||||
AssemblyRecipe.assemblyRecipes
|
|
||||||
.add(new AssemblyRecipe(new ItemStack[]{new ItemStack(BuildCraftTransport.pipeGate, 1, 0), new ItemStack(redstoneChipset, 1, 4),
|
|
||||||
new ItemStack(redstoneChipset, 1, 1)}, 10000, new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 0)));
|
|
||||||
CoreProxy.proxy.addName(new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 0), "Autarchic Gate");
|
|
||||||
|
|
||||||
// / IRON AND GATES
|
|
||||||
AssemblyRecipe.assemblyRecipes.add(new AssemblyRecipe(new ItemStack[]{new ItemStack(redstoneChipset, 1, 1),
|
|
||||||
new ItemStack(BuildCraftTransport.redPipeWire)}, 40000, new ItemStack(BuildCraftTransport.pipeGate, 1, 1)));
|
|
||||||
CoreProxy.proxy.addName(new ItemStack(BuildCraftTransport.pipeGate, 1, 1), "Iron AND Gate");
|
CoreProxy.proxy.addName(new ItemStack(BuildCraftTransport.pipeGate, 1, 1), "Iron AND Gate");
|
||||||
AssemblyRecipe.assemblyRecipes
|
|
||||||
.add(new AssemblyRecipe(new ItemStack[]{new ItemStack(BuildCraftTransport.pipeGate, 1, 1), new ItemStack(redstoneChipset, 1, 4),
|
|
||||||
new ItemStack(redstoneChipset, 1, 1)}, 20000, new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 1)));
|
|
||||||
CoreProxy.proxy.addName(new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 1), "Autarchic Iron AND Gate");
|
|
||||||
|
|
||||||
// / IRON OR GATES
|
|
||||||
AssemblyRecipe.assemblyRecipes.add(new AssemblyRecipe(new ItemStack[]{new ItemStack(redstoneChipset, 1, 1),
|
|
||||||
new ItemStack(BuildCraftTransport.redPipeWire)}, 40000, new ItemStack(BuildCraftTransport.pipeGate, 1, 2)));
|
|
||||||
CoreProxy.proxy.addName(new ItemStack(BuildCraftTransport.pipeGate, 1, 2), "Iron OR Gate");
|
|
||||||
AssemblyRecipe.assemblyRecipes
|
|
||||||
.add(new AssemblyRecipe(new ItemStack[]{new ItemStack(BuildCraftTransport.pipeGate, 1, 2), new ItemStack(redstoneChipset, 1, 4),
|
|
||||||
new ItemStack(redstoneChipset, 1, 1)}, 20000, new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 2)));
|
|
||||||
CoreProxy.proxy.addName(new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 2), "Autarchic Iron OR Gate");
|
|
||||||
|
|
||||||
// / GOLD AND GATES
|
|
||||||
AssemblyRecipe.assemblyRecipes.add(new AssemblyRecipe(new ItemStack[]{new ItemStack(redstoneChipset, 1, 2),
|
|
||||||
new ItemStack(BuildCraftTransport.redPipeWire), new ItemStack(BuildCraftTransport.bluePipeWire)}, 80000, new ItemStack(
|
|
||||||
BuildCraftTransport.pipeGate, 1, 3)));
|
|
||||||
CoreProxy.proxy.addName(new ItemStack(BuildCraftTransport.pipeGate, 1, 3), "Gold AND Gate");
|
CoreProxy.proxy.addName(new ItemStack(BuildCraftTransport.pipeGate, 1, 3), "Gold AND Gate");
|
||||||
AssemblyRecipe.assemblyRecipes
|
|
||||||
.add(new AssemblyRecipe(new ItemStack[]{new ItemStack(BuildCraftTransport.pipeGate, 1, 3), new ItemStack(redstoneChipset, 1, 4),
|
|
||||||
new ItemStack(redstoneChipset, 1, 1)}, 40000, new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 3)));
|
|
||||||
CoreProxy.proxy.addName(new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 3), "Autarchic Gold AND Gate");
|
|
||||||
|
|
||||||
// / GOLD OR GATES
|
|
||||||
AssemblyRecipe.assemblyRecipes.add(new AssemblyRecipe(new ItemStack[]{new ItemStack(redstoneChipset, 1, 2),
|
|
||||||
new ItemStack(BuildCraftTransport.redPipeWire), new ItemStack(BuildCraftTransport.bluePipeWire)}, 80000, new ItemStack(
|
|
||||||
BuildCraftTransport.pipeGate, 1, 4)));
|
|
||||||
CoreProxy.proxy.addName(new ItemStack(BuildCraftTransport.pipeGate, 1, 4), "Gold OR Gate");
|
|
||||||
AssemblyRecipe.assemblyRecipes
|
|
||||||
.add(new AssemblyRecipe(new ItemStack[]{new ItemStack(BuildCraftTransport.pipeGate, 1, 4), new ItemStack(redstoneChipset, 1, 4),
|
|
||||||
new ItemStack(redstoneChipset, 1, 1)}, 40000, new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 4)));
|
|
||||||
CoreProxy.proxy.addName(new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 4), "Autarchic Gold OR Gate");
|
|
||||||
|
|
||||||
// / DIAMOND AND GATES
|
|
||||||
AssemblyRecipe.assemblyRecipes.add(new AssemblyRecipe(new ItemStack[]{new ItemStack(redstoneChipset, 1, 3),
|
|
||||||
new ItemStack(BuildCraftTransport.redPipeWire), new ItemStack(BuildCraftTransport.bluePipeWire),
|
|
||||||
new ItemStack(BuildCraftTransport.greenPipeWire), new ItemStack(BuildCraftTransport.yellowPipeWire)}, 160000, new ItemStack(
|
|
||||||
BuildCraftTransport.pipeGate, 1, 5)));
|
|
||||||
CoreProxy.proxy.addName(new ItemStack(BuildCraftTransport.pipeGate, 1, 5), "Diamond AND Gate");
|
CoreProxy.proxy.addName(new ItemStack(BuildCraftTransport.pipeGate, 1, 5), "Diamond AND Gate");
|
||||||
AssemblyRecipe.assemblyRecipes
|
CoreProxy.proxy.addName(new ItemStack(BuildCraftTransport.pipeGate, 1, 2), "Iron OR Gate");
|
||||||
.add(new AssemblyRecipe(new ItemStack[]{new ItemStack(BuildCraftTransport.pipeGate, 1, 5), new ItemStack(redstoneChipset, 1, 4),
|
CoreProxy.proxy.addName(new ItemStack(BuildCraftTransport.pipeGate, 1, 4), "Gold OR Gate");
|
||||||
new ItemStack(redstoneChipset, 1, 1)}, 80000, new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 5)));
|
|
||||||
CoreProxy.proxy.addName(new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 5), "Autarchic Diamond AND Gate");
|
|
||||||
|
|
||||||
// / DIAMOND OR GATES
|
|
||||||
AssemblyRecipe.assemblyRecipes.add(new AssemblyRecipe(new ItemStack[]{new ItemStack(redstoneChipset, 1, 3),
|
|
||||||
new ItemStack(BuildCraftTransport.redPipeWire), new ItemStack(BuildCraftTransport.bluePipeWire),
|
|
||||||
new ItemStack(BuildCraftTransport.greenPipeWire), new ItemStack(BuildCraftTransport.yellowPipeWire)}, 160000, new ItemStack(
|
|
||||||
BuildCraftTransport.pipeGate, 1, 6)));
|
|
||||||
CoreProxy.proxy.addName(new ItemStack(BuildCraftTransport.pipeGate, 1, 6), "Diamond OR Gate");
|
CoreProxy.proxy.addName(new ItemStack(BuildCraftTransport.pipeGate, 1, 6), "Diamond OR Gate");
|
||||||
AssemblyRecipe.assemblyRecipes
|
CoreProxy.proxy.addName(new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 0), "Autarchic Gate");
|
||||||
.add(new AssemblyRecipe(new ItemStack[]{new ItemStack(BuildCraftTransport.pipeGate, 1, 6), new ItemStack(redstoneChipset, 1, 4),
|
CoreProxy.proxy.addName(new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 1), "Autarchic Iron AND Gate");
|
||||||
new ItemStack(redstoneChipset, 1, 1)}, 80000, new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 6)));
|
CoreProxy.proxy.addName(new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 3), "Autarchic Gold AND Gate");
|
||||||
|
CoreProxy.proxy.addName(new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 5), "Autarchic Diamond AND Gate");
|
||||||
|
CoreProxy.proxy.addName(new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 2), "Autarchic Iron OR Gate");
|
||||||
|
CoreProxy.proxy.addName(new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 4), "Autarchic Gold OR Gate");
|
||||||
CoreProxy.proxy.addName(new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 6), "Autarchic Diamond OR Gate");
|
CoreProxy.proxy.addName(new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 6), "Autarchic Diamond OR Gate");
|
||||||
|
|
||||||
|
// BuildcraftRecipes.assemblyTable.addRecipe(new ItemStack(BuildCraftTransport.pipeGate, 1, 0), 20000, new ItemStack(redstoneChipset, 1, 0));
|
||||||
|
// BuildcraftRecipes.assemblyTable.addRecipe(new ItemStack(BuildCraftTransport.pipeGate, 1, 1), 40000, new ItemStack(redstoneChipset, 1, 1), new ItemStack(BuildCraftTransport.redPipeWire));
|
||||||
|
// BuildcraftRecipes.assemblyTable.addRecipe(new ItemStack(BuildCraftTransport.pipeGate, 1, 2), 40000, new ItemStack(redstoneChipset, 1, 1), new ItemStack(BuildCraftTransport.redPipeWire));
|
||||||
|
// BuildcraftRecipes.assemblyTable.addRecipe(new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 0), 10000, new ItemStack(BuildCraftTransport.pipeGate, 1, 0), new ItemStack(redstoneChipset, 1, 4), new ItemStack(redstoneChipset, 1, 1));
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// BuildcraftRecipes.assemblyTable.addRecipe(new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 1), 20000, new ItemStack(BuildCraftTransport.pipeGate, 1, 1), new ItemStack(redstoneChipset, 1, 4), new ItemStack(redstoneChipset, 1, 1));
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// BuildcraftRecipes.assemblyTable.addRecipe(new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 2), 20000, new ItemStack(BuildCraftTransport.pipeGate, 1, 2), new ItemStack(redstoneChipset, 1, 4), new ItemStack(redstoneChipset, 1, 1));
|
||||||
|
//
|
||||||
|
// // / GOLD AND GATES
|
||||||
|
// BuildcraftRecipes.assemblyTable.addRecipe(new ItemStack(BuildCraftTransport.pipeGate, 1, 3), 80000, new ItemStack(redstoneChipset, 1, 2), new ItemStack(BuildCraftTransport.redPipeWire), new ItemStack(BuildCraftTransport.bluePipeWire));
|
||||||
|
// BuildcraftRecipes.assemblyTable.addRecipe(new ItemStack[]{new ItemStack(BuildCraftTransport.pipeGate, 1, 3), new ItemStack(redstoneChipset, 1, 4), new ItemStack(redstoneChipset, 1, 1)}, 40000, new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 3)));
|
||||||
|
//
|
||||||
|
// // / GOLD OR GATES
|
||||||
|
// BuildcraftRecipes.assemblyTable.addRecipe(new ItemStack[]{new ItemStack(redstoneChipset, 1, 2), new ItemStack(BuildCraftTransport.redPipeWire), new ItemStack(BuildCraftTransport.bluePipeWire)}, 80000, new ItemStack( BuildCraftTransport.pipeGate, 1, 4)));
|
||||||
|
// BuildcraftRecipes.assemblyTable.addRecipe(new ItemStack[]{new ItemStack(BuildCraftTransport.pipeGate, 1, 4), new ItemStack(redstoneChipset, 1, 4), new ItemStack(redstoneChipset, 1, 1)}, 40000, new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 4)));
|
||||||
|
//
|
||||||
|
// // / DIAMOND AND GATES
|
||||||
|
// BuildcraftRecipes.assemblyTable.addRecipe(new ItemStack[]{new ItemStack(redstoneChipset, 1, 3), new ItemStack(BuildCraftTransport.redPipeWire), new ItemStack(BuildCraftTransport.bluePipeWire),new ItemStack(BuildCraftTransport.greenPipeWire), new ItemStack(BuildCraftTransport.yellowPipeWire)}, 160000, new ItemStack(BuildCraftTransport.pipeGate, 1, 5)));
|
||||||
|
// BuildcraftRecipes.assemblyTable.addRecipe(new ItemStack[]{new ItemStack(BuildCraftTransport.pipeGate, 1, 5), new ItemStack(redstoneChipset, 1, 4), new ItemStack(redstoneChipset, 1, 1)}, 80000, new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 5)));
|
||||||
|
//
|
||||||
|
// // / DIAMOND OR GATES
|
||||||
|
// BuildcraftRecipes.assemblyTable.addRecipe(new ItemStack[]{new ItemStack(redstoneChipset, 1, 3), new ItemStack(BuildCraftTransport.redPipeWire), new ItemStack(BuildCraftTransport.bluePipeWire), new ItemStack(BuildCraftTransport.greenPipeWire), new ItemStack(BuildCraftTransport.yellowPipeWire)}, 160000, new ItemStack(BuildCraftTransport.pipeGate, 1, 6)));
|
||||||
|
// BuildcraftRecipes.assemblyTable.addRecipe(new ItemStack[]{new ItemStack(BuildCraftTransport.pipeGate, 1, 6), new ItemStack(redstoneChipset, 1, 4), new ItemStack(redstoneChipset, 1, 1)}, 80000, new ItemStack(BuildCraftTransport.pipeGateAutarchic, 1, 6)));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void processIMCRequests(FMLInterModComms.IMCEvent event) {
|
public void processIMCRequests(FMLInterModComms.IMCEvent event) {
|
||||||
InterModComms.processIMC(event);
|
InterModComms.processIMC(event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,8 @@ package buildcraft;
|
||||||
import buildcraft.api.core.IIconProvider;
|
import buildcraft.api.core.IIconProvider;
|
||||||
import buildcraft.api.filler.IFillerPattern;
|
import buildcraft.api.filler.IFillerPattern;
|
||||||
import buildcraft.api.gates.ActionManager;
|
import buildcraft.api.gates.ActionManager;
|
||||||
import buildcraft.api.recipes.AssemblyRecipe;
|
import buildcraft.api.recipes.BuildcraftRecipes;
|
||||||
|
import buildcraft.core.recipes.AssemblyRecipeManager;
|
||||||
import buildcraft.api.transport.IExtractionHandler;
|
import buildcraft.api.transport.IExtractionHandler;
|
||||||
import buildcraft.api.transport.IPipe;
|
import buildcraft.api.transport.IPipe;
|
||||||
import buildcraft.api.transport.PipeManager;
|
import buildcraft.api.transport.PipeManager;
|
||||||
|
@ -450,13 +451,13 @@ public class BuildCraftTransport {
|
||||||
|
|
||||||
// Assembly table recipes, moved from PreInit phase to Init, all mods should be done adding to the OreDictionary by now
|
// Assembly table recipes, moved from PreInit phase to Init, all mods should be done adding to the OreDictionary by now
|
||||||
try {
|
try {
|
||||||
AssemblyRecipe.assemblyRecipes.add(new AssemblyRecipe(500, new ItemStack(redPipeWire, 8), "dyeRed", 1, new ItemStack(Item.redstone), new ItemStack(Item.ingotIron)));
|
BuildcraftRecipes.assemblyTable.addRecipe(500, new ItemStack(redPipeWire, 8), "dyeRed", 1, new ItemStack(Item.redstone), new ItemStack(Item.ingotIron));
|
||||||
AssemblyRecipe.assemblyRecipes.add(new AssemblyRecipe(500, new ItemStack(bluePipeWire, 8), "dyeBlue", 1, new ItemStack(Item.redstone), new ItemStack(Item.ingotIron)));
|
BuildcraftRecipes.assemblyTable.addRecipe(500, new ItemStack(bluePipeWire, 8), "dyeBlue", 1, new ItemStack(Item.redstone), new ItemStack(Item.ingotIron));
|
||||||
AssemblyRecipe.assemblyRecipes.add(new AssemblyRecipe(500, new ItemStack(greenPipeWire, 8), "dyeGreen", 1, new ItemStack(Item.redstone), new ItemStack(Item.ingotIron)));
|
BuildcraftRecipes.assemblyTable.addRecipe(500, new ItemStack(greenPipeWire, 8), "dyeGreen", 1, new ItemStack(Item.redstone), new ItemStack(Item.ingotIron));
|
||||||
AssemblyRecipe.assemblyRecipes.add(new AssemblyRecipe(500, new ItemStack(yellowPipeWire, 8), "dyeYellow", 1, new ItemStack(Item.redstone), new ItemStack(Item.ingotIron)));
|
BuildcraftRecipes.assemblyTable.addRecipe(500, new ItemStack(yellowPipeWire, 8), "dyeYellow", 1, new ItemStack(Item.redstone), new ItemStack(Item.ingotIron));
|
||||||
AssemblyRecipe.assemblyRecipes.add(new AssemblyRecipe(new ItemStack[]{new ItemStack(pipeStructureCobblestone)}, 1000, new ItemStack(plugItem, 8)));
|
BuildcraftRecipes.assemblyTable.addRecipe(1000, new ItemStack(plugItem, 8), new ItemStack(pipeStructureCobblestone));
|
||||||
} catch (Error error) {
|
} catch (Error error) {
|
||||||
BCLog.logErrorAPI("Buildcraft", error, AssemblyRecipe.class);
|
BCLog.logErrorAPI("Buildcraft", error, BuildcraftRecipes.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
package buildcraft.api.inventory;
|
|
||||||
|
|
||||||
import net.minecraftforge.common.ForgeDirection;
|
|
||||||
|
|
||||||
public interface ISecuredInventory {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param name
|
|
||||||
* @return true if the user/player with the given name has access permissions on this machine.
|
|
||||||
*/
|
|
||||||
boolean canAccess(String name);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Informs the inventory with whose permissions the next item or liquid transaction will be performed. It is up to the inventory to determine the effect.
|
|
||||||
*
|
|
||||||
* @param orientation
|
|
||||||
* Orientation the transaction will be performed from.
|
|
||||||
* @param name
|
|
||||||
* Name of the user/player who owns the transaction.
|
|
||||||
*/
|
|
||||||
void prepareTransaction(ForgeDirection orientation, String name);
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
package buildcraft.api.inventory;
|
|
||||||
|
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraftforge.common.ForgeDirection;
|
|
||||||
|
|
||||||
public interface ISelectiveInventory extends ISpecialInventory {
|
|
||||||
/**
|
|
||||||
* Requests specified items to be extracted from the inventory
|
|
||||||
*
|
|
||||||
* @param desired
|
|
||||||
* Array which can contain ItemStacks, Items, or classes describing the type of item accepted or excluded.
|
|
||||||
* @param exclusion
|
|
||||||
* If true desired items are not eligible for returning.
|
|
||||||
* @param doRemove
|
|
||||||
* If false no actual extraction may occur.
|
|
||||||
* @param from
|
|
||||||
* Orientation the ItemStack is requested from.
|
|
||||||
* @param maxItemCount
|
|
||||||
* Maximum amount of items to extract (spread over all returned item stacks)
|
|
||||||
* @return Array of item stacks extracted from the inventory
|
|
||||||
*/
|
|
||||||
ItemStack[] extractItem(Object[] desired, boolean exclusion, boolean doRemove, ForgeDirection from, int maxItemCount);
|
|
||||||
}
|
|
|
@ -1,88 +0,0 @@
|
||||||
package buildcraft.api.recipes;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.LinkedList;
|
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraftforge.oredict.OreDictionary;
|
|
||||||
|
|
||||||
public class AssemblyRecipe {
|
|
||||||
|
|
||||||
public static LinkedList<AssemblyRecipe> assemblyRecipes = new LinkedList<AssemblyRecipe>();
|
|
||||||
public final Object[] input;
|
|
||||||
public final ItemStack output;
|
|
||||||
public final float energy;
|
|
||||||
|
|
||||||
public AssemblyRecipe(ItemStack[] input, int energy, ItemStack output) {
|
|
||||||
this.input = input;
|
|
||||||
this.output = output;
|
|
||||||
this.energy = energy;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This version of AssemblyRecipe supports the OreDictionary
|
|
||||||
*
|
|
||||||
* @param input Object... containing either an ItemStack, or a paired string
|
|
||||||
* and integer(ex: "dyeBlue", 1)
|
|
||||||
* @param energy MJ cost to produce
|
|
||||||
* @param output resulting ItemStack
|
|
||||||
*/
|
|
||||||
public AssemblyRecipe(int energy, ItemStack output, Object... input) {
|
|
||||||
this.output = output;
|
|
||||||
this.energy = energy;
|
|
||||||
this.input = input;
|
|
||||||
|
|
||||||
for (int i = 0; i < input.length; i++) {
|
|
||||||
if (input[i] instanceof String) {
|
|
||||||
input[i] = OreDictionary.getOres((String) input[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canBeDone(ItemStack... items) {
|
|
||||||
for (int i = 0; i < input.length; i++) {
|
|
||||||
if (input[i] == null)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (input[i] instanceof ItemStack) {
|
|
||||||
ItemStack requirement = (ItemStack) input[i];
|
|
||||||
int found = 0; // Amount of ingredient found in inventory
|
|
||||||
int expected = requirement.stackSize;
|
|
||||||
for (ItemStack item : items) {
|
|
||||||
if (item == null)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (item.isItemEqual(requirement))
|
|
||||||
found += item.stackSize; // Adds quantity of stack to amount found
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return false if the amount of ingredient found
|
|
||||||
// is not enough
|
|
||||||
if (found < expected)
|
|
||||||
return false;
|
|
||||||
} else if (input[i] instanceof ArrayList) {
|
|
||||||
ArrayList<ItemStack> oreList = (ArrayList<ItemStack>) input[i];
|
|
||||||
int found = 0; // Amount of ingredient found in inventory
|
|
||||||
int expected = (Integer) input[i++ + 1];
|
|
||||||
|
|
||||||
for (ItemStack item : items) {
|
|
||||||
if (item == null)
|
|
||||||
continue;
|
|
||||||
for (ItemStack oreItem : oreList) {
|
|
||||||
if (OreDictionary.itemMatches(oreItem, item, true)) {
|
|
||||||
found += item.stackSize;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return false if the amount of ingredient found
|
|
||||||
// is not enough
|
|
||||||
if (found < expected)
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
22
common/buildcraft/api/recipes/BuildcraftRecipes.java
Normal file
22
common/buildcraft/api/recipes/BuildcraftRecipes.java
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) SpaceToad, 2011-2012
|
||||||
|
* 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.recipes;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author CovertJaguar <http://www.railcraft.info/>
|
||||||
|
*/
|
||||||
|
public final class BuildcraftRecipes {
|
||||||
|
|
||||||
|
public static IAssemblyRecipeManager assemblyTable;
|
||||||
|
public static IRefineryRecipeManager refinery;
|
||||||
|
|
||||||
|
private BuildcraftRecipes() {
|
||||||
|
}
|
||||||
|
}
|
40
common/buildcraft/api/recipes/IAssemblyRecipeManager.java
Normal file
40
common/buildcraft/api/recipes/IAssemblyRecipeManager.java
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) SpaceToad, 2011-2012
|
||||||
|
* 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.recipes;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author CovertJaguar <http://www.railcraft.info/>
|
||||||
|
*/
|
||||||
|
public interface IAssemblyRecipeManager {
|
||||||
|
|
||||||
|
public static interface IAssemblyRecipe {
|
||||||
|
|
||||||
|
ItemStack getOutput();
|
||||||
|
|
||||||
|
Object[] getInputs();
|
||||||
|
|
||||||
|
double getEnergyCost();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add an Assembly Table recipe.
|
||||||
|
*
|
||||||
|
* @param input Object... containing either an ItemStack, or a paired string
|
||||||
|
* and integer(ex: "dyeBlue", 1)
|
||||||
|
* @param energy MJ cost to produce
|
||||||
|
* @param output resulting ItemStack
|
||||||
|
*/
|
||||||
|
void addRecipe(double energyCost, ItemStack output, Object... input);
|
||||||
|
|
||||||
|
List<? extends IAssemblyRecipe> getRecipes();
|
||||||
|
}
|
40
common/buildcraft/api/recipes/IRefineryRecipeManager.java
Normal file
40
common/buildcraft/api/recipes/IRefineryRecipeManager.java
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) SpaceToad, 2011-2012
|
||||||
|
* 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.recipes;
|
||||||
|
|
||||||
|
import java.util.SortedSet;
|
||||||
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author CovertJaguar <http://www.railcraft.info/>
|
||||||
|
*/
|
||||||
|
public interface IRefineryRecipeManager {
|
||||||
|
|
||||||
|
void addRecipe(FluidStack ingredient, FluidStack result, int energy, int delay);
|
||||||
|
|
||||||
|
void addRecipe(FluidStack ingredient1, FluidStack ingredient2, FluidStack result, int energy, int delay);
|
||||||
|
|
||||||
|
SortedSet<? extends IRefineryRecipe> getRecipes();
|
||||||
|
|
||||||
|
IRefineryRecipe findRefineryRecipe(FluidStack ingredient1, FluidStack ingredient2);
|
||||||
|
|
||||||
|
public static interface IRefineryRecipe {
|
||||||
|
|
||||||
|
FluidStack getIngredient1();
|
||||||
|
|
||||||
|
FluidStack getIngredient2();
|
||||||
|
|
||||||
|
FluidStack getResult();
|
||||||
|
|
||||||
|
int getEnergyCost();
|
||||||
|
|
||||||
|
int getTimeRequired();
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,3 +1,3 @@
|
||||||
@API(apiVersion="1.0",owner="BuildCraftAPI|core",provides="BuildCraftAPI|recipes")
|
@API(apiVersion="2.0",owner="BuildCraftAPI|core",provides="BuildCraftAPI|recipes")
|
||||||
package buildcraft.api.recipes;
|
package buildcraft.api.recipes;
|
||||||
import cpw.mods.fml.common.API;
|
import cpw.mods.fml.common.API;
|
148
common/buildcraft/core/recipes/AssemblyRecipeManager.java
Normal file
148
common/buildcraft/core/recipes/AssemblyRecipeManager.java
Normal file
|
@ -0,0 +1,148 @@
|
||||||
|
package buildcraft.core.recipes;
|
||||||
|
|
||||||
|
import buildcraft.api.recipes.IAssemblyRecipeManager;
|
||||||
|
import buildcraft.core.inventory.ITransactor;
|
||||||
|
import buildcraft.core.inventory.InventoryIterator;
|
||||||
|
import buildcraft.core.inventory.InventoryIterator.IInvSlot;
|
||||||
|
import buildcraft.core.inventory.Transactor;
|
||||||
|
import buildcraft.core.inventory.filters.ArrayStackFilter;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
import net.minecraft.inventory.IInventory;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraftforge.common.ForgeDirection;
|
||||||
|
import net.minecraftforge.oredict.OreDictionary;
|
||||||
|
|
||||||
|
public class AssemblyRecipeManager implements IAssemblyRecipeManager {
|
||||||
|
|
||||||
|
public static final AssemblyRecipeManager INSTANCE = new AssemblyRecipeManager();
|
||||||
|
private List<AssemblyRecipe> assemblyRecipes = new LinkedList<AssemblyRecipe>();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addRecipe(double energyCost, ItemStack output, Object... input) {
|
||||||
|
assemblyRecipes.add(new AssemblyRecipe(output, energyCost, input));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<AssemblyRecipe> getRecipes() {
|
||||||
|
return assemblyRecipes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class AssemblyRecipe implements IAssemblyRecipe {
|
||||||
|
|
||||||
|
public final ItemStack output;
|
||||||
|
public final double energyCost;
|
||||||
|
private final Object[] originalInput;
|
||||||
|
private final Object[] processedInput;
|
||||||
|
|
||||||
|
public AssemblyRecipe(ItemStack output, double energyCost, Object... inputs) {
|
||||||
|
this.output = output.copy();
|
||||||
|
this.energyCost = energyCost;
|
||||||
|
this.originalInput = inputs;
|
||||||
|
|
||||||
|
processedInput = new Object[inputs.length];
|
||||||
|
for (int i = 0; i < inputs.length; i++) {
|
||||||
|
if (inputs[i] instanceof String)
|
||||||
|
processedInput[i] = OreDictionary.getOres((String) inputs[i]);
|
||||||
|
if (inputs[i] instanceof Item)
|
||||||
|
processedInput[i] = new ItemStack((Item) inputs[i]);
|
||||||
|
else
|
||||||
|
processedInput[i] = inputs[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack getOutput() {
|
||||||
|
return output.copy();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object[] getInputs() {
|
||||||
|
return originalInput;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getEnergyCost() {
|
||||||
|
return energyCost;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean canBeDone(IInventory inv) {
|
||||||
|
for (int i = 0; i < processedInput.length; i++) {
|
||||||
|
if (processedInput[i] == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (processedInput[i] instanceof ItemStack) {
|
||||||
|
ItemStack requirement = (ItemStack) processedInput[i];
|
||||||
|
int found = 0; // Amount of ingredient found in inventory
|
||||||
|
int expected = requirement.stackSize;
|
||||||
|
for (IInvSlot slot : InventoryIterator.getIterable(inv, ForgeDirection.UNKNOWN)) {
|
||||||
|
ItemStack item = slot.getStackInSlot();
|
||||||
|
if (item == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (item.isItemEqual(requirement))
|
||||||
|
found += item.stackSize; // Adds quantity of stack to amount found
|
||||||
|
|
||||||
|
if (found >= expected)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return false if the amount of ingredient found
|
||||||
|
// is not enough
|
||||||
|
if (found < expected)
|
||||||
|
return false;
|
||||||
|
} else if (processedInput[i] instanceof List) {
|
||||||
|
List<ItemStack> oreList = (List<ItemStack>) processedInput[i];
|
||||||
|
int found = 0; // Amount of ingredient found in inventory
|
||||||
|
int expected = (Integer) processedInput[i++ + 1];
|
||||||
|
|
||||||
|
for (IInvSlot slot : InventoryIterator.getIterable(inv, ForgeDirection.UNKNOWN)) {
|
||||||
|
ItemStack item = slot.getStackInSlot();
|
||||||
|
if (item == null)
|
||||||
|
continue;
|
||||||
|
for (ItemStack oreItem : oreList) {
|
||||||
|
if (OreDictionary.itemMatches(oreItem, item, true)) {
|
||||||
|
found += item.stackSize;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (found >= expected)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return false if the amount of ingredient found
|
||||||
|
// is not enough
|
||||||
|
if (found < expected)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void useItems(IInventory inv) {
|
||||||
|
ITransactor tran = Transactor.getTransactorFor(inv);
|
||||||
|
Object[] input = processedInput;
|
||||||
|
for (int i = 0; i < input.length; i++) {
|
||||||
|
if (input[i] instanceof ItemStack) {
|
||||||
|
ItemStack requirement = (ItemStack) input[i];
|
||||||
|
for (int num = 0; num < requirement.stackSize; num++) {
|
||||||
|
tran.remove(new ArrayStackFilter(requirement), ForgeDirection.UNKNOWN, true);
|
||||||
|
}
|
||||||
|
} else if (input[i] instanceof List) {
|
||||||
|
List<ItemStack> oreList = (List<ItemStack>) input[i];
|
||||||
|
int required = (Integer) input[i + 1];
|
||||||
|
for (ItemStack ore : oreList) {
|
||||||
|
for (int num = 0; num < required; num++) {
|
||||||
|
if (tran.remove(new ArrayStackFilter(ore), ForgeDirection.UNKNOWN, true) != null)
|
||||||
|
required--;
|
||||||
|
}
|
||||||
|
if (required <= 0)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,33 +5,40 @@
|
||||||
* 1.0, or MMPL. Please check the contents of the license located in
|
* 1.0, or MMPL. Please check the contents of the license located in
|
||||||
* http://www.mod-buildcraft.com/MMPL-1.0.txt
|
* http://www.mod-buildcraft.com/MMPL-1.0.txt
|
||||||
*/
|
*/
|
||||||
package buildcraft.api.recipes;
|
package buildcraft.core.recipes;
|
||||||
|
|
||||||
|
import buildcraft.api.recipes.IRefineryRecipeManager;
|
||||||
|
import buildcraft.api.recipes.IRefineryRecipeManager.IRefineryRecipe;
|
||||||
import com.google.common.base.Objects;
|
import com.google.common.base.Objects;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.SortedSet;
|
import java.util.SortedSet;
|
||||||
import java.util.TreeSet;
|
import java.util.TreeSet;
|
||||||
import net.minecraftforge.fluids.FluidStack;
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
|
|
||||||
public final class RefineryRecipes {
|
public final class RefineryRecipeManager implements IRefineryRecipeManager {
|
||||||
|
|
||||||
private static SortedSet<Recipe> recipes = new TreeSet<Recipe>();
|
public static final RefineryRecipeManager INSTANCE = new RefineryRecipeManager();
|
||||||
|
private SortedSet<RefineryRecipe> recipes = new TreeSet<RefineryRecipe>();
|
||||||
|
|
||||||
public static void addRecipe(FluidStack ingredient, FluidStack result, int energy, int delay) {
|
@Override
|
||||||
|
public void addRecipe(FluidStack ingredient, FluidStack result, int energy, int delay) {
|
||||||
addRecipe(ingredient, null, result, energy, delay);
|
addRecipe(ingredient, null, result, energy, delay);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void addRecipe(FluidStack ingredient1, FluidStack ingredient2, FluidStack result, int energy, int delay) {
|
@Override
|
||||||
Recipe recipe = new Recipe(ingredient1, ingredient2, result, energy, delay);
|
public void addRecipe(FluidStack ingredient1, FluidStack ingredient2, FluidStack result, int energy, int delay) {
|
||||||
|
RefineryRecipe recipe = new RefineryRecipe(ingredient1, ingredient2, result, energy, delay);
|
||||||
recipes.add(recipe);
|
recipes.add(recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static SortedSet<Recipe> getRecipes() {
|
@Override
|
||||||
|
public SortedSet<RefineryRecipe> getRecipes() {
|
||||||
return Collections.unmodifiableSortedSet(recipes);
|
return Collections.unmodifiableSortedSet(recipes);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Recipe findRefineryRecipe(FluidStack liquid1, FluidStack liquid2) {
|
@Override
|
||||||
for (Recipe recipe : recipes) {
|
public RefineryRecipe findRefineryRecipe(FluidStack liquid1, FluidStack liquid2) {
|
||||||
|
for (RefineryRecipe recipe : recipes) {
|
||||||
if (recipe.matches(liquid1, liquid2))
|
if (recipe.matches(liquid1, liquid2))
|
||||||
return recipe;
|
return recipe;
|
||||||
}
|
}
|
||||||
|
@ -39,25 +46,25 @@ public final class RefineryRecipes {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private RefineryRecipes() {
|
private RefineryRecipeManager() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final class Recipe implements Comparable<Recipe> {
|
public static final class RefineryRecipe implements IRefineryRecipe, Comparable<RefineryRecipe> {
|
||||||
|
|
||||||
public final FluidStack ingredient1;
|
public final FluidStack ingredient1;
|
||||||
public final FluidStack ingredient2;
|
public final FluidStack ingredient2;
|
||||||
public final FluidStack result;
|
public final FluidStack result;
|
||||||
public final int energy;
|
public final int energyCost;
|
||||||
public final int delay;
|
public final int timeRequired;
|
||||||
|
|
||||||
private Recipe(FluidStack ingredient1, FluidStack ingredient2, FluidStack result, int energy, int delay) {
|
private RefineryRecipe(FluidStack ingredient1, FluidStack ingredient2, FluidStack result, int energy, int delay) {
|
||||||
if (ingredient1 == null)
|
if (ingredient1 == null)
|
||||||
throw new IllegalArgumentException("First Ingredient cannot be null!");
|
throw new IllegalArgumentException("First Ingredient cannot be null!");
|
||||||
this.ingredient1 = ingredient1;
|
this.ingredient1 = ingredient1;
|
||||||
this.ingredient2 = ingredient2;
|
this.ingredient2 = ingredient2;
|
||||||
this.result = result;
|
this.result = result;
|
||||||
this.energy = energy;
|
this.energyCost = energy;
|
||||||
this.delay = delay;
|
this.timeRequired = delay;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean matches(FluidStack liquid1, FluidStack liquid2) {
|
public boolean matches(FluidStack liquid1, FluidStack liquid2) {
|
||||||
|
@ -90,7 +97,7 @@ public final class RefineryRecipes {
|
||||||
// We consider non-null < null in order that one-ingredient recipe is checked after
|
// We consider non-null < null in order that one-ingredient recipe is checked after
|
||||||
// the failure of matching two-ingredient recipes which include that liquid.
|
// the failure of matching two-ingredient recipes which include that liquid.
|
||||||
@Override
|
@Override
|
||||||
public int compareTo(Recipe other) {
|
public int compareTo(RefineryRecipe other) {
|
||||||
if (other == null)
|
if (other == null)
|
||||||
return -1;
|
return -1;
|
||||||
else if (ingredient1.getFluid() != other.ingredient1.getFluid())
|
else if (ingredient1.getFluid() != other.ingredient1.getFluid())
|
||||||
|
@ -112,9 +119,9 @@ public final class RefineryRecipes {
|
||||||
// equals() should be consistent with compareTo().
|
// equals() should be consistent with compareTo().
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object obj) {
|
public boolean equals(Object obj) {
|
||||||
return obj instanceof Recipe
|
return obj instanceof RefineryRecipe
|
||||||
&& Objects.equal(ingredient1, ((Recipe) obj).ingredient1)
|
&& Objects.equal(ingredient1, ((RefineryRecipe) obj).ingredient1)
|
||||||
&& Objects.equal(ingredient2, ((Recipe) obj).ingredient2);
|
&& Objects.equal(ingredient2, ((RefineryRecipe) obj).ingredient2);
|
||||||
}
|
}
|
||||||
|
|
||||||
// hashCode() should be overridden because equals() was overridden.
|
// hashCode() should be overridden because equals() was overridden.
|
||||||
|
@ -122,5 +129,30 @@ public final class RefineryRecipes {
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return Objects.hashCode(ingredient1, ingredient2);
|
return Objects.hashCode(ingredient1, ingredient2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FluidStack getIngredient1() {
|
||||||
|
return ingredient1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FluidStack getIngredient2() {
|
||||||
|
return ingredient2;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FluidStack getResult() {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getEnergyCost() {
|
||||||
|
return energyCost;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getTimeRequired() {
|
||||||
|
return timeRequired;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -14,8 +14,8 @@ import buildcraft.api.power.IPowerReceptor;
|
||||||
import buildcraft.api.power.PowerHandler;
|
import buildcraft.api.power.PowerHandler;
|
||||||
import buildcraft.api.power.PowerHandler.PowerReceiver;
|
import buildcraft.api.power.PowerHandler.PowerReceiver;
|
||||||
import buildcraft.api.power.PowerHandler.Type;
|
import buildcraft.api.power.PowerHandler.Type;
|
||||||
import buildcraft.api.recipes.RefineryRecipes;
|
import buildcraft.core.recipes.RefineryRecipeManager;
|
||||||
import buildcraft.api.recipes.RefineryRecipes.Recipe;
|
import buildcraft.core.recipes.RefineryRecipeManager.RefineryRecipe;
|
||||||
import buildcraft.core.IMachine;
|
import buildcraft.core.IMachine;
|
||||||
import buildcraft.core.TileBuildCraft;
|
import buildcraft.core.TileBuildCraft;
|
||||||
import buildcraft.core.fluids.SingleUseTank;
|
import buildcraft.core.fluids.SingleUseTank;
|
||||||
|
@ -130,7 +130,7 @@ public class TileRefinery extends TileBuildCraft implements IFluidHandler, IPowe
|
||||||
|
|
||||||
isActive = false;
|
isActive = false;
|
||||||
|
|
||||||
Recipe currentRecipe = RefineryRecipes.findRefineryRecipe(tank1.getFluid(), tank2.getFluid());
|
RefineryRecipe currentRecipe = RefineryRecipeManager.INSTANCE.findRefineryRecipe(tank1.getFluid(), tank2.getFluid());
|
||||||
|
|
||||||
if (currentRecipe == null) {
|
if (currentRecipe == null) {
|
||||||
decreaseAnimation();
|
decreaseAnimation();
|
||||||
|
@ -149,16 +149,16 @@ public class TileRefinery extends TileBuildCraft implements IFluidHandler, IPowe
|
||||||
|
|
||||||
isActive = true;
|
isActive = true;
|
||||||
|
|
||||||
if (powerHandler.getEnergyStored() >= currentRecipe.energy) {
|
if (powerHandler.getEnergyStored() >= currentRecipe.energyCost) {
|
||||||
increaseAnimation();
|
increaseAnimation();
|
||||||
} else {
|
} else {
|
||||||
decreaseAnimation();
|
decreaseAnimation();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!time.markTimeIfDelay(worldObj, currentRecipe.delay))
|
if (!time.markTimeIfDelay(worldObj, currentRecipe.timeRequired))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
float energyUsed = powerHandler.useEnergy(currentRecipe.energy, currentRecipe.energy, true);
|
float energyUsed = powerHandler.useEnergy(currentRecipe.energyCost, currentRecipe.energyCost, true);
|
||||||
|
|
||||||
if (energyUsed != 0) {
|
if (energyUsed != 0) {
|
||||||
if (consumeInput(currentRecipe.ingredient1) && consumeInput(currentRecipe.ingredient2)) {
|
if (consumeInput(currentRecipe.ingredient1) && consumeInput(currentRecipe.ingredient2)) {
|
||||||
|
|
|
@ -1,16 +1,14 @@
|
||||||
/**
|
/**
|
||||||
* Copyright (c) SpaceToad, 2011
|
* Copyright (c) SpaceToad, 2011 http://www.mod-buildcraft.com
|
||||||
* http://www.mod-buildcraft.com
|
|
||||||
*
|
*
|
||||||
* BuildCraft is distributed under the terms of the Minecraft Mod Public
|
* BuildCraft is distributed under the terms of the Minecraft Mod Public License
|
||||||
* License 1.0, or MMPL. Please check the contents of the license located in
|
* 1.0, or MMPL. Please check the contents of the license located in
|
||||||
* http://www.mod-buildcraft.com/MMPL-1.0.txt
|
* http://www.mod-buildcraft.com/MMPL-1.0.txt
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package buildcraft.factory.gui;
|
package buildcraft.factory.gui;
|
||||||
|
|
||||||
import buildcraft.api.recipes.RefineryRecipes;
|
import buildcraft.core.recipes.RefineryRecipeManager;
|
||||||
import buildcraft.api.recipes.RefineryRecipes.Recipe;
|
import buildcraft.core.recipes.RefineryRecipeManager.RefineryRecipe;
|
||||||
import buildcraft.core.DefaultProps;
|
import buildcraft.core.DefaultProps;
|
||||||
import buildcraft.core.gui.GuiAdvancedInterface;
|
import buildcraft.core.gui.GuiAdvancedInterface;
|
||||||
import buildcraft.core.utils.StringUtils;
|
import buildcraft.core.utils.StringUtils;
|
||||||
|
@ -116,7 +114,7 @@ public class GuiRefinery extends GuiAdvancedInterface {
|
||||||
liquid1 = new FluidStack(filter1, FluidContainerRegistry.BUCKET_VOLUME);
|
liquid1 = new FluidStack(filter1, FluidContainerRegistry.BUCKET_VOLUME);
|
||||||
}
|
}
|
||||||
|
|
||||||
Recipe recipe = RefineryRecipes.findRefineryRecipe(liquid0, liquid1);
|
RefineryRecipe recipe = RefineryRecipeManager.INSTANCE.findRefineryRecipe(liquid0, liquid1);
|
||||||
|
|
||||||
if (recipe != null) {
|
if (recipe != null) {
|
||||||
((FluidSlot) slots[2]).fluid = recipe.result.getFluid();
|
((FluidSlot) slots[2]).fluid = recipe.result.getFluid();
|
||||||
|
@ -124,5 +122,4 @@ public class GuiRefinery extends GuiAdvancedInterface {
|
||||||
((FluidSlot) slots[2]).fluid = null;
|
((FluidSlot) slots[2]).fluid = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,22 +1,20 @@
|
||||||
package buildcraft.silicon;
|
package buildcraft.silicon;
|
||||||
|
|
||||||
|
import buildcraft.core.recipes.AssemblyRecipeManager;
|
||||||
import buildcraft.api.power.ILaserTarget;
|
import buildcraft.api.power.ILaserTarget;
|
||||||
import buildcraft.api.gates.IAction;
|
import buildcraft.api.gates.IAction;
|
||||||
import buildcraft.api.recipes.AssemblyRecipe;
|
|
||||||
import buildcraft.core.DefaultProps;
|
import buildcraft.core.DefaultProps;
|
||||||
import buildcraft.core.IMachine;
|
import buildcraft.core.IMachine;
|
||||||
import buildcraft.core.inventory.ITransactor;
|
|
||||||
import buildcraft.core.inventory.StackHelper;
|
|
||||||
import buildcraft.core.inventory.Transactor;
|
|
||||||
import buildcraft.core.inventory.filters.ArrayStackFilter;
|
|
||||||
import buildcraft.core.network.PacketIds;
|
import buildcraft.core.network.PacketIds;
|
||||||
import buildcraft.core.network.PacketNBT;
|
import buildcraft.core.network.PacketNBT;
|
||||||
import buildcraft.core.proxy.CoreProxy;
|
import buildcraft.core.proxy.CoreProxy;
|
||||||
import buildcraft.core.utils.Utils;
|
import buildcraft.core.utils.Utils;
|
||||||
|
import buildcraft.core.recipes.AssemblyRecipeManager.AssemblyRecipe;
|
||||||
import cpw.mods.fml.common.FMLCommonHandler;
|
import cpw.mods.fml.common.FMLCommonHandler;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.LinkedHashSet;
|
import java.util.LinkedHashSet;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
import net.minecraft.entity.item.EntityItem;
|
import net.minecraft.entity.item.EntityItem;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.inventory.Container;
|
import net.minecraft.inventory.Container;
|
||||||
|
@ -31,11 +29,11 @@ import net.minecraftforge.common.ForgeDirection;
|
||||||
public class TileAssemblyTable extends TileEntity implements IMachine, IInventory, ILaserTarget {
|
public class TileAssemblyTable extends TileEntity implements IMachine, IInventory, ILaserTarget {
|
||||||
|
|
||||||
ItemStack[] items = new ItemStack[12];
|
ItemStack[] items = new ItemStack[12];
|
||||||
LinkedHashSet<AssemblyRecipe> plannedOutput = new LinkedHashSet<AssemblyRecipe>();
|
Set<AssemblyRecipe> plannedOutput = new LinkedHashSet<AssemblyRecipe>();
|
||||||
public AssemblyRecipe currentRecipe;
|
public AssemblyRecipe currentRecipe;
|
||||||
private float currentRequiredEnergy = 0;
|
private double currentRequiredEnergy = 0;
|
||||||
private float energyStored = 0;
|
private float energyStored = 0;
|
||||||
private float[] recentEnergy = new float[20];
|
private double[] recentEnergy = new double[20];
|
||||||
private int tick = 0;
|
private int tick = 0;
|
||||||
private int recentEnergyAverage;
|
private int recentEnergyAverage;
|
||||||
|
|
||||||
|
@ -60,13 +58,12 @@ public class TileAssemblyTable extends TileEntity implements IMachine, IInventor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public LinkedList<AssemblyRecipe> getPotentialOutputs() {
|
public List<AssemblyRecipe> getPotentialOutputs() {
|
||||||
LinkedList<AssemblyRecipe> result = new LinkedList<AssemblyRecipe>();
|
List<AssemblyRecipe> result = new LinkedList<AssemblyRecipe>();
|
||||||
|
|
||||||
for (AssemblyRecipe recipe : AssemblyRecipe.assemblyRecipes) {
|
for (AssemblyRecipe recipe : AssemblyRecipeManager.INSTANCE.getRecipes()) {
|
||||||
if (recipe.canBeDone(items)) {
|
if (recipe.canBeDone(this))
|
||||||
result.add(recipe);
|
result.add(recipe);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
@ -86,19 +83,19 @@ public class TileAssemblyTable extends TileEntity implements IMachine, IInventor
|
||||||
if (currentRecipe == null)
|
if (currentRecipe == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!currentRecipe.canBeDone(items)) {
|
if (!currentRecipe.canBeDone(this)) {
|
||||||
setNextCurrentRecipe();
|
setNextCurrentRecipe();
|
||||||
|
|
||||||
if (currentRecipe == null)
|
if (currentRecipe == null)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (energyStored >= currentRecipe.energy) {
|
if (energyStored >= currentRecipe.getEnergyCost()) {
|
||||||
energyStored = 0;
|
energyStored = 0;
|
||||||
|
|
||||||
if (currentRecipe.canBeDone(items)) {
|
if (currentRecipe.canBeDone(this)) {
|
||||||
|
|
||||||
useItems();
|
currentRecipe.useItems(this);
|
||||||
|
|
||||||
ItemStack remaining = currentRecipe.output.copy();
|
ItemStack remaining = currentRecipe.output.copy();
|
||||||
remaining.stackSize -= Utils.addToRandomInventoryAround(worldObj, xCoord, yCoord, zCoord, remaining);
|
remaining.stackSize -= Utils.addToRandomInventoryAround(worldObj, xCoord, yCoord, zCoord, remaining);
|
||||||
|
@ -118,31 +115,7 @@ public class TileAssemblyTable extends TileEntity implements IMachine, IInventor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void useItems() {
|
public double getCompletionRatio(float ratio) {
|
||||||
ITransactor tran = Transactor.getTransactorFor(this);
|
|
||||||
Object[] input = currentRecipe.input;
|
|
||||||
for (int i = 0; i < input.length; i++) {
|
|
||||||
if (input[i] instanceof ItemStack) {
|
|
||||||
ItemStack requirement = (ItemStack) input[i];
|
|
||||||
for (int num = 0; num < requirement.stackSize; num++) {
|
|
||||||
tran.remove(new ArrayStackFilter(requirement), ForgeDirection.UNKNOWN, true);
|
|
||||||
}
|
|
||||||
} else if (input[i] instanceof ArrayList) {
|
|
||||||
ArrayList<ItemStack> oreList = (ArrayList<ItemStack>) input[i];
|
|
||||||
int required = (Integer) input[i + 1];
|
|
||||||
for (ItemStack ore : oreList) {
|
|
||||||
for (int num = 0; num < required; num++) {
|
|
||||||
if (tran.remove(new ArrayStackFilter(ore), ForgeDirection.UNKNOWN, true) != null)
|
|
||||||
required--;
|
|
||||||
}
|
|
||||||
if (required <= 0)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getCompletionRatio(float ratio) {
|
|
||||||
if (currentRecipe == null)
|
if (currentRecipe == null)
|
||||||
return 0;
|
return 0;
|
||||||
else if (energyStored >= currentRequiredEnergy)
|
else if (energyStored >= currentRequiredEnergy)
|
||||||
|
@ -214,21 +187,21 @@ public class TileAssemblyTable extends TileEntity implements IMachine, IInventor
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void readFromNBT(NBTTagCompound nbttagcompound) {
|
public void readFromNBT(NBTTagCompound nbt) {
|
||||||
super.readFromNBT(nbttagcompound);
|
super.readFromNBT(nbt);
|
||||||
|
|
||||||
Utils.readStacksFromNBT(nbttagcompound, "items", items);
|
Utils.readStacksFromNBT(nbt, "items", items);
|
||||||
|
|
||||||
energyStored = nbttagcompound.getFloat("energyStored");
|
energyStored = nbt.getFloat("energyStored");
|
||||||
|
|
||||||
NBTTagList list = nbttagcompound.getTagList("planned");
|
NBTTagList list = nbt.getTagList("planned");
|
||||||
|
|
||||||
for (int i = 0; i < list.tagCount(); ++i) {
|
for (int i = 0; i < list.tagCount(); ++i) {
|
||||||
NBTTagCompound cpt = (NBTTagCompound) list.tagAt(i);
|
NBTTagCompound cpt = (NBTTagCompound) list.tagAt(i);
|
||||||
|
|
||||||
ItemStack stack = ItemStack.loadItemStackFromNBT(cpt);
|
ItemStack stack = ItemStack.loadItemStackFromNBT(cpt);
|
||||||
|
|
||||||
for (AssemblyRecipe r : AssemblyRecipe.assemblyRecipes) {
|
for (AssemblyRecipe r : AssemblyRecipeManager.INSTANCE.getRecipes()) {
|
||||||
if (r.output.itemID == stack.itemID && r.output.getItemDamage() == stack.getItemDamage()) {
|
if (r.output.itemID == stack.itemID && r.output.getItemDamage() == stack.getItemDamage()) {
|
||||||
plannedOutput.add(r);
|
plannedOutput.add(r);
|
||||||
break;
|
break;
|
||||||
|
@ -236,8 +209,8 @@ public class TileAssemblyTable extends TileEntity implements IMachine, IInventor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nbttagcompound.hasKey("recipe")) {
|
if (nbt.hasKey("recipe")) {
|
||||||
ItemStack stack = ItemStack.loadItemStackFromNBT(nbttagcompound.getCompoundTag("recipe"));
|
ItemStack stack = ItemStack.loadItemStackFromNBT(nbt.getCompoundTag("recipe"));
|
||||||
|
|
||||||
for (AssemblyRecipe r : plannedOutput) {
|
for (AssemblyRecipe r : plannedOutput) {
|
||||||
if (r.output.itemID == stack.itemID && r.output.getItemDamage() == stack.getItemDamage()) {
|
if (r.output.itemID == stack.itemID && r.output.getItemDamage() == stack.getItemDamage()) {
|
||||||
|
@ -249,12 +222,12 @@ public class TileAssemblyTable extends TileEntity implements IMachine, IInventor
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeToNBT(NBTTagCompound nbttagcompound) {
|
public void writeToNBT(NBTTagCompound nbt) {
|
||||||
super.writeToNBT(nbttagcompound);
|
super.writeToNBT(nbt);
|
||||||
|
|
||||||
Utils.writeStacksToNBT(nbttagcompound, "items", items);
|
Utils.writeStacksToNBT(nbt, "items", items);
|
||||||
|
|
||||||
nbttagcompound.setFloat("energyStored", energyStored);
|
nbt.setFloat("energyStored", energyStored);
|
||||||
|
|
||||||
NBTTagList list = new NBTTagList();
|
NBTTagList list = new NBTTagList();
|
||||||
|
|
||||||
|
@ -264,12 +237,12 @@ public class TileAssemblyTable extends TileEntity implements IMachine, IInventor
|
||||||
list.appendTag(cpt);
|
list.appendTag(cpt);
|
||||||
}
|
}
|
||||||
|
|
||||||
nbttagcompound.setTag("planned", list);
|
nbt.setTag("planned", list);
|
||||||
|
|
||||||
if (currentRecipe != null) {
|
if (currentRecipe != null) {
|
||||||
NBTTagCompound recipe = new NBTTagCompound();
|
NBTTagCompound recipe = new NBTTagCompound();
|
||||||
currentRecipe.output.writeToNBT(recipe);
|
currentRecipe.output.writeToNBT(recipe);
|
||||||
nbttagcompound.setTag("recipe", recipe);
|
nbt.setTag("recipe", recipe);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -287,7 +260,7 @@ public class TileAssemblyTable extends TileEntity implements IMachine, IInventor
|
||||||
private void setCurrentRecipe(AssemblyRecipe recipe) {
|
private void setCurrentRecipe(AssemblyRecipe recipe) {
|
||||||
this.currentRecipe = recipe;
|
this.currentRecipe = recipe;
|
||||||
if (recipe != null) {
|
if (recipe != null) {
|
||||||
this.currentRequiredEnergy = recipe.energy;
|
this.currentRequiredEnergy = recipe.getEnergyCost();
|
||||||
} else {
|
} else {
|
||||||
this.currentRequiredEnergy = 0;
|
this.currentRequiredEnergy = 0;
|
||||||
}
|
}
|
||||||
|
@ -321,14 +294,14 @@ public class TileAssemblyTable extends TileEntity implements IMachine, IInventor
|
||||||
for (AssemblyRecipe recipe : plannedOutput) {
|
for (AssemblyRecipe recipe : plannedOutput) {
|
||||||
if (recipe == currentRecipe) {
|
if (recipe == currentRecipe) {
|
||||||
takeNext = true;
|
takeNext = true;
|
||||||
} else if (takeNext && recipe.canBeDone(items)) {
|
} else if (takeNext && recipe.canBeDone(this)) {
|
||||||
setCurrentRecipe(recipe);
|
setCurrentRecipe(recipe);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (AssemblyRecipe recipe : plannedOutput) {
|
for (AssemblyRecipe recipe : plannedOutput) {
|
||||||
if (recipe.canBeDone(items)) {
|
if (recipe.canBeDone(this)) {
|
||||||
setCurrentRecipe(recipe);
|
setCurrentRecipe(recipe);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -338,7 +311,7 @@ public class TileAssemblyTable extends TileEntity implements IMachine, IInventor
|
||||||
}
|
}
|
||||||
|
|
||||||
public void handleSelectionMessage(SelectionMessage message) {
|
public void handleSelectionMessage(SelectionMessage message) {
|
||||||
for (AssemblyRecipe recipe : AssemblyRecipe.assemblyRecipes) {
|
for (AssemblyRecipe recipe : AssemblyRecipeManager.INSTANCE.getRecipes()) {
|
||||||
if (recipe.output.isItemEqual(message.stack) && ItemStack.areItemStackTagsEqual(recipe.output, message.stack)) {
|
if (recipe.output.isItemEqual(message.stack) && ItemStack.areItemStackTagsEqual(recipe.output, message.stack)) {
|
||||||
if (message.select) {
|
if (message.select) {
|
||||||
planOutput(recipe);
|
planOutput(recipe);
|
||||||
|
@ -352,12 +325,12 @@ public class TileAssemblyTable extends TileEntity implements IMachine, IInventor
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendSelectionTo(EntityPlayer player) {
|
public void sendSelectionTo(EntityPlayer player) {
|
||||||
for (AssemblyRecipe r : AssemblyRecipe.assemblyRecipes) {
|
for (AssemblyRecipe recipe : AssemblyRecipeManager.INSTANCE.getRecipes()) {
|
||||||
SelectionMessage message = new SelectionMessage();
|
SelectionMessage message = new SelectionMessage();
|
||||||
|
|
||||||
message.stack = r.output;
|
message.stack = recipe.output;
|
||||||
|
|
||||||
if (isPlanned(r)) {
|
if (isPlanned(recipe)) {
|
||||||
message.select = true;
|
message.select = true;
|
||||||
} else {
|
} else {
|
||||||
message.select = false;
|
message.select = false;
|
||||||
|
@ -446,7 +419,7 @@ public class TileAssemblyTable extends TileEntity implements IMachine, IInventor
|
||||||
return energyStored;
|
return energyStored;
|
||||||
}
|
}
|
||||||
|
|
||||||
public float getRequiredEnergy() {
|
public double getRequiredEnergy() {
|
||||||
return currentRequiredEnergy;
|
return currentRequiredEnergy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -484,7 +457,6 @@ public class TileAssemblyTable extends TileEntity implements IMachine, IInventor
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isItemValidForSlot(int i, ItemStack itemstack) {
|
public boolean isItemValidForSlot(int i, ItemStack itemstack) {
|
||||||
// TODO Auto-generated method stub
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,16 +1,13 @@
|
||||||
/**
|
/**
|
||||||
* Copyright (c) SpaceToad, 2011
|
* Copyright (c) SpaceToad, 2011 http://www.mod-buildcraft.com
|
||||||
* http://www.mod-buildcraft.com
|
|
||||||
*
|
*
|
||||||
* BuildCraft is distributed under the terms of the Minecraft Mod Public
|
* BuildCraft is distributed under the terms of the Minecraft Mod Public License
|
||||||
* License 1.0, or MMPL. Please check the contents of the license located in
|
* 1.0, or MMPL. Please check the contents of the license located in
|
||||||
* http://www.mod-buildcraft.com/MMPL-1.0.txt
|
* http://www.mod-buildcraft.com/MMPL-1.0.txt
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package buildcraft.silicon.gui;
|
package buildcraft.silicon.gui;
|
||||||
|
|
||||||
import buildcraft.BuildCraftCore;
|
import buildcraft.BuildCraftCore;
|
||||||
import buildcraft.api.recipes.AssemblyRecipe;
|
|
||||||
import buildcraft.core.CoreIconProvider;
|
import buildcraft.core.CoreIconProvider;
|
||||||
import buildcraft.core.DefaultProps;
|
import buildcraft.core.DefaultProps;
|
||||||
import buildcraft.core.gui.GuiAdvancedInterface;
|
import buildcraft.core.gui.GuiAdvancedInterface;
|
||||||
|
@ -19,10 +16,11 @@ import buildcraft.core.network.PacketIds;
|
||||||
import buildcraft.core.network.PacketNBT;
|
import buildcraft.core.network.PacketNBT;
|
||||||
import buildcraft.core.proxy.CoreProxy;
|
import buildcraft.core.proxy.CoreProxy;
|
||||||
import buildcraft.core.utils.StringUtils;
|
import buildcraft.core.utils.StringUtils;
|
||||||
|
import buildcraft.core.recipes.AssemblyRecipeManager.AssemblyRecipe;
|
||||||
import buildcraft.silicon.TileAssemblyTable;
|
import buildcraft.silicon.TileAssemblyTable;
|
||||||
import buildcraft.silicon.TileAssemblyTable.SelectionMessage;
|
import buildcraft.silicon.TileAssemblyTable.SelectionMessage;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.LinkedList;
|
import java.util.List;
|
||||||
import net.minecraft.client.renderer.texture.TextureMap;
|
import net.minecraft.client.renderer.texture.TextureMap;
|
||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
@ -30,10 +28,12 @@ import net.minecraft.util.ResourceLocation;
|
||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
public class GuiAssemblyTable extends GuiAdvancedInterface {
|
public class GuiAssemblyTable extends GuiAdvancedInterface {
|
||||||
private static final ResourceLocation TEXTURE = new ResourceLocation("buildcraft",DefaultProps.TEXTURE_PATH_GUI + "/assembly_table.png");
|
|
||||||
|
private static final ResourceLocation TEXTURE = new ResourceLocation("buildcraft", DefaultProps.TEXTURE_PATH_GUI + "/assembly_table.png");
|
||||||
TileAssemblyTable assemblyTable;
|
TileAssemblyTable assemblyTable;
|
||||||
|
|
||||||
class AssemblyLedger extends Ledger {
|
class AssemblyLedger extends Ledger {
|
||||||
|
|
||||||
int headerColour = 0xe1c92f;
|
int headerColour = 0xe1c92f;
|
||||||
int subheaderColour = 0xaaafb8;
|
int subheaderColour = 0xaaafb8;
|
||||||
int textColour = 0x000000;
|
int textColour = 0x000000;
|
||||||
|
@ -50,7 +50,7 @@ public class GuiAssemblyTable extends GuiAdvancedInterface {
|
||||||
drawBackground(x, y);
|
drawBackground(x, y);
|
||||||
|
|
||||||
// Draw icon
|
// Draw icon
|
||||||
mc.renderEngine.bindTexture(TextureMap.locationItemsTexture);
|
mc.renderEngine.bindTexture(TextureMap.locationItemsTexture);
|
||||||
drawIcon(BuildCraftCore.iconProvider.getIcon(CoreIconProvider.ENERGY), x + 3, y + 4);
|
drawIcon(BuildCraftCore.iconProvider.getIcon(CoreIconProvider.ENERGY), x + 3, y + 4);
|
||||||
|
|
||||||
if (!isFullyOpened())
|
if (!isFullyOpened())
|
||||||
|
@ -70,7 +70,6 @@ public class GuiAssemblyTable extends GuiAdvancedInterface {
|
||||||
public String getTooltip() {
|
public String getTooltip() {
|
||||||
return String.format("%3.2f MJ/t", assemblyTable.getRecentEnergyAverage() / 100.0f);
|
return String.format("%3.2f MJ/t", assemblyTable.getRecentEnergyAverage() / 100.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class RecipeSlot extends AdvancedSlot {
|
class RecipeSlot extends AdvancedSlot {
|
||||||
|
@ -84,7 +83,7 @@ public class GuiAssemblyTable extends GuiAdvancedInterface {
|
||||||
@Override
|
@Override
|
||||||
public ItemStack getItemStack() {
|
public ItemStack getItemStack() {
|
||||||
if (this.recipe != null)
|
if (this.recipe != null)
|
||||||
return this.recipe.output;
|
return this.recipe.getOutput();
|
||||||
else
|
else
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -118,15 +117,16 @@ public class GuiAssemblyTable extends GuiAdvancedInterface {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateRecipes() {
|
public void updateRecipes() {
|
||||||
LinkedList<AssemblyRecipe> potentialRecipes = assemblyTable.getPotentialOutputs();
|
List<AssemblyRecipe> potentialRecipes = assemblyTable.getPotentialOutputs();
|
||||||
Iterator<AssemblyRecipe> cur = potentialRecipes.iterator();
|
Iterator<AssemblyRecipe> cur = potentialRecipes.iterator();
|
||||||
|
|
||||||
for (int p = 0; p < 8; ++p)
|
for (int p = 0; p < 8; ++p) {
|
||||||
if (cur.hasNext()) {
|
if (cur.hasNext()) {
|
||||||
((RecipeSlot) slots[p]).recipe = cur.next();
|
((RecipeSlot) slots[p]).recipe = cur.next();
|
||||||
} else {
|
} else {
|
||||||
((RecipeSlot) slots[p]).recipe = null;
|
((RecipeSlot) slots[p]).recipe = null;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -140,7 +140,7 @@ public class GuiAssemblyTable extends GuiAdvancedInterface {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void drawGuiContainerBackgroundLayer(float f, int x, int y) {
|
protected void drawGuiContainerBackgroundLayer(float f, int x, int y) {
|
||||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||||
mc.renderEngine.bindTexture(TEXTURE);
|
mc.renderEngine.bindTexture(TEXTURE);
|
||||||
int cornerX = (width - xSize) / 2;
|
int cornerX = (width - xSize) / 2;
|
||||||
int cornerY = (height - ySize) / 2;
|
int cornerY = (height - ySize) / 2;
|
||||||
|
|
|
@ -2,7 +2,7 @@ package buildcraft.transport;
|
||||||
|
|
||||||
import buildcraft.BuildCraftTransport;
|
import buildcraft.BuildCraftTransport;
|
||||||
import buildcraft.api.core.Position;
|
import buildcraft.api.core.Position;
|
||||||
import buildcraft.api.recipes.AssemblyRecipe;
|
import buildcraft.api.recipes.BuildcraftRecipes;
|
||||||
import buildcraft.core.CreativeTabBuildCraft;
|
import buildcraft.core.CreativeTabBuildCraft;
|
||||||
import buildcraft.core.ItemBuildCraft;
|
import buildcraft.core.ItemBuildCraft;
|
||||||
import buildcraft.core.proxy.CoreProxy;
|
import buildcraft.core.proxy.CoreProxy;
|
||||||
|
@ -160,8 +160,7 @@ public class ItemFacade extends ItemBuildCraft {
|
||||||
facade6.stackSize = 6;
|
facade6.stackSize = 6;
|
||||||
|
|
||||||
// 3 Structurepipes + this block makes 6 facades
|
// 3 Structurepipes + this block makes 6 facades
|
||||||
AssemblyRecipe.assemblyRecipes.add(new AssemblyRecipe(new ItemStack[]{new ItemStack(BuildCraftTransport.pipeStructureCobblestone, 3), itemStack},
|
BuildcraftRecipes.assemblyTable.addRecipe(8000, facade6, new ItemStack(BuildCraftTransport.pipeStructureCobblestone, 3), itemStack);
|
||||||
8000, facade6));
|
|
||||||
if (itemStack.itemID < Block.blocksList.length && Block.blocksList[itemStack.itemID] != null) {
|
if (itemStack.itemID < Block.blocksList.length && Block.blocksList[itemStack.itemID] != null) {
|
||||||
Block bl = Block.blocksList[itemStack.itemID];
|
Block bl = Block.blocksList[itemStack.itemID];
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,6 @@ import net.minecraft.nbt.NBTBase;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraftforge.common.ForgeDirection;
|
import net.minecraftforge.common.ForgeDirection;
|
||||||
import buildcraft.BuildCraftTransport;
|
import buildcraft.BuildCraftTransport;
|
||||||
import buildcraft.api.inventory.ISelectiveInventory;
|
|
||||||
import buildcraft.api.inventory.ISpecialInventory;
|
import buildcraft.api.inventory.ISpecialInventory;
|
||||||
import buildcraft.core.GuiIds;
|
import buildcraft.core.GuiIds;
|
||||||
import buildcraft.core.gui.buttons.IButtonTextureSet;
|
import buildcraft.core.gui.buttons.IButtonTextureSet;
|
||||||
|
@ -108,23 +107,24 @@ public class PipeItemsEmerald extends PipeItemsWood implements IClientState, IGu
|
||||||
@Override
|
@Override
|
||||||
public ItemStack[] checkExtract(IInventory inventory, boolean doRemove, ForgeDirection from) {
|
public ItemStack[] checkExtract(IInventory inventory, boolean doRemove, ForgeDirection from) {
|
||||||
|
|
||||||
/* ISELECTIVEINVENTORY */
|
// ISELECTIVEINVENTORY
|
||||||
// non blocking mode is not implemented for ISelectiveInventory yet
|
// non blocking mode is not implemented for ISelectiveInventory yet
|
||||||
if (inventory instanceof ISelectiveInventory) {
|
// if (inventory instanceof ISelectiveInventory) {
|
||||||
ItemStack[] stacks = ((ISelectiveInventory) inventory).extractItem(new ItemStack[]{getCurrentFilter()}, false, doRemove, from, (int) powerHandler.getEnergyStored());
|
// ItemStack[] stacks = ((ISelectiveInventory) inventory).extractItem(new ItemStack[]{getCurrentFilter()}, false, doRemove, from, (int) powerHandler.getEnergyStored());
|
||||||
if (doRemove) {
|
// if (doRemove) {
|
||||||
for (ItemStack stack : stacks) {
|
// for (ItemStack stack : stacks) {
|
||||||
if (stack != null) {
|
// if (stack != null) {
|
||||||
powerHandler.useEnergy(stack.stackSize, stack.stackSize, true);
|
// powerHandler.useEnergy(stack.stackSize, stack.stackSize, true);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
incrementFilter();
|
// incrementFilter();
|
||||||
}
|
// }
|
||||||
return stacks;
|
// return stacks;
|
||||||
|
// } else
|
||||||
|
|
||||||
/* ISPECIALINVENTORY */
|
// ISPECIALINVENTORY
|
||||||
// non blocking mode is not needed for ISpecialInventory since its not round robin anyway
|
// non blocking mode is not needed for ISpecialInventory since its not round robin anyway
|
||||||
} else if (inventory instanceof ISpecialInventory) {
|
if (inventory instanceof ISpecialInventory) {
|
||||||
ItemStack[] stacks = ((ISpecialInventory) inventory).extractItem(false, from, (int) powerHandler.getEnergyStored());
|
ItemStack[] stacks = ((ISpecialInventory) inventory).extractItem(false, from, (int) powerHandler.getEnergyStored());
|
||||||
if (stacks != null) {
|
if (stacks != null) {
|
||||||
for (ItemStack stack : stacks) {
|
for (ItemStack stack : stacks) {
|
||||||
|
|
|
@ -21,7 +21,6 @@ import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraftforge.common.ForgeDirection;
|
import net.minecraftforge.common.ForgeDirection;
|
||||||
import buildcraft.BuildCraftTransport;
|
import buildcraft.BuildCraftTransport;
|
||||||
import buildcraft.api.gates.IAction;
|
import buildcraft.api.gates.IAction;
|
||||||
import buildcraft.api.inventory.ISelectiveInventory;
|
|
||||||
import buildcraft.api.inventory.ISpecialInventory;
|
import buildcraft.api.inventory.ISpecialInventory;
|
||||||
import buildcraft.core.GuiIds;
|
import buildcraft.core.GuiIds;
|
||||||
import buildcraft.core.inventory.SimpleInventory;
|
import buildcraft.core.inventory.SimpleInventory;
|
||||||
|
@ -103,19 +102,20 @@ public class PipeItemsEmzuli extends PipeItemsWood implements IGuiReturnHandler
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ISELECTIVEINVENTORY */
|
/* ISELECTIVEINVENTORY */
|
||||||
if (inventory instanceof ISelectiveInventory) {
|
// if (inventory instanceof ISelectiveInventory) {
|
||||||
ItemStack[] stacks = ((ISelectiveInventory) inventory).extractItem(new ItemStack[]{getCurrentFilter()}, false, doRemove, from, (int) powerHandler.getEnergyStored());
|
// ItemStack[] stacks = ((ISelectiveInventory) inventory).extractItem(new ItemStack[]{getCurrentFilter()}, false, doRemove, from, (int) powerHandler.getEnergyStored());
|
||||||
if (doRemove) {
|
// if (doRemove) {
|
||||||
for (ItemStack stack : stacks) {
|
// for (ItemStack stack : stacks) {
|
||||||
if (stack != null) {
|
// if (stack != null) {
|
||||||
powerHandler.useEnergy(stack.stackSize, stack.stackSize, true);
|
// powerHandler.useEnergy(stack.stackSize, stack.stackSize, true);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
return stacks;
|
// return stacks;
|
||||||
|
// } else
|
||||||
|
|
||||||
/* ISPECIALINVENTORY */
|
/* ISPECIALINVENTORY */
|
||||||
} else if (inventory instanceof ISpecialInventory) {
|
if (inventory instanceof ISpecialInventory) {
|
||||||
ItemStack[] stacks = ((ISpecialInventory) inventory).extractItem(false, from, (int) powerHandler.getEnergyStored());
|
ItemStack[] stacks = ((ISpecialInventory) inventory).extractItem(false, from, (int) powerHandler.getEnergyStored());
|
||||||
if (stacks != null) {
|
if (stacks != null) {
|
||||||
for (ItemStack stack : stacks) {
|
for (ItemStack stack : stacks) {
|
||||||
|
|
Loading…
Reference in a new issue