diff --git a/api/forestry b/api/forestry index 5c3dc357e..d0444f3ca 160000 --- a/api/forestry +++ b/api/forestry @@ -1 +1 @@ -Subproject commit 5c3dc357e8a4e0b3da8790d43dcfda147a9f64e5 +Subproject commit d0444f3ca9372e591129421d01b02881709bcd53 diff --git a/lang b/lang index 2518a210e..fc688b758 160000 --- a/lang +++ b/lang @@ -1 +1 @@ -Subproject commit 2518a210e797f436a2c2a3d4a6eed20a51644140 +Subproject commit fc688b758945d873fdebdf7966d86edf767e8e28 diff --git a/src/main/java/forestry/core/circuits/CircuitBoard.java b/src/main/java/forestry/core/circuits/CircuitBoard.java index 562b200f0..e4165f590 100755 --- a/src/main/java/forestry/core/circuits/CircuitBoard.java +++ b/src/main/java/forestry/core/circuits/CircuitBoard.java @@ -20,6 +20,7 @@ import forestry.api.circuits.ChipsetManager; import forestry.api.circuits.ICircuit; import forestry.api.circuits.ICircuitBoard; import forestry.api.circuits.ICircuitLayout; +import forestry.api.circuits.ICircuitSocketType; import forestry.core.proxy.Proxies; import forestry.core.utils.StringUtil; @@ -170,4 +171,9 @@ public class CircuitBoard implements ICircuitBoard { public ICircuit[] getCircuits() { return circuits; } + + @Override + public ICircuitSocketType getSocketType() { + return layout.getSocketType(); + } } diff --git a/src/main/java/forestry/core/circuits/CircuitLayout.java b/src/main/java/forestry/core/circuits/CircuitLayout.java index 5a76358de..f15cbb7e4 100755 --- a/src/main/java/forestry/core/circuits/CircuitLayout.java +++ b/src/main/java/forestry/core/circuits/CircuitLayout.java @@ -11,14 +11,17 @@ package forestry.core.circuits; import forestry.api.circuits.ICircuitLayout; +import forestry.api.circuits.ICircuitSocketType; import forestry.core.utils.StringUtil; public class CircuitLayout implements ICircuitLayout { private final String uid; + private final ICircuitSocketType socketType; - public CircuitLayout(String uid) { + public CircuitLayout(String uid, ICircuitSocketType socketType) { this.uid = uid; + this.socketType = socketType; } @Override @@ -35,4 +38,9 @@ public class CircuitLayout implements ICircuitLayout { public String getUsage() { return StringUtil.localize("circuit.layout." + this.uid + ".usage"); } + + @Override + public ICircuitSocketType getSocketType() { + return socketType; + } } diff --git a/src/main/java/forestry/core/circuits/CircuitRegistry.java b/src/main/java/forestry/core/circuits/CircuitRegistry.java index 75858360a..6cc24172a 100755 --- a/src/main/java/forestry/core/circuits/CircuitRegistry.java +++ b/src/main/java/forestry/core/circuits/CircuitRegistry.java @@ -17,6 +17,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +import forestry.api.circuits.CircuitSocketType; import forestry.api.circuits.ICircuit; import forestry.api.circuits.ICircuitBoard; import forestry.api.circuits.ICircuitLayout; @@ -26,7 +27,7 @@ import forestry.core.config.ForestryItem; public class CircuitRegistry implements ICircuitRegistry { - public static final ICircuitLayout DUMMY_LAYOUT = new CircuitLayout("dummy"); + public static final ICircuitLayout DUMMY_LAYOUT = new CircuitLayout("dummy", CircuitSocketType.NONE); private static final Map DUMMY_MAP = new LinkedHashMap(); private final Map layoutMap = new LinkedHashMap(); private final Map circuitMap = new LinkedHashMap(); diff --git a/src/main/java/forestry/core/circuits/GuiSolderingIron.java b/src/main/java/forestry/core/circuits/GuiSolderingIron.java index 9dd3267ce..f5e359498 100755 --- a/src/main/java/forestry/core/circuits/GuiSolderingIron.java +++ b/src/main/java/forestry/core/circuits/GuiSolderingIron.java @@ -10,10 +10,16 @@ ******************************************************************************/ package forestry.core.circuits; +import java.util.Locale; + import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import forestry.api.circuits.CircuitSocketType; import forestry.api.circuits.ICircuitLayout; +import forestry.api.circuits.ICircuitSocketType; +import forestry.api.farming.FarmDirection; import forestry.core.circuits.ItemSolderingIron.CircuitRecipe; import forestry.core.circuits.ItemSolderingIron.SolderingInventory; import forestry.core.config.Constants; @@ -37,17 +43,32 @@ public class GuiSolderingIron extends GuiForestry impleme return; } + if (!ChipsetManager.circuitRegistry.isChipset(itemstack)) { + return; + } + + ICircuitBoard circuitBoard = ChipsetManager.circuitRegistry.getCircuitboard(itemstack); + if (circuitBoard == null) { + return; + } + + try { + if (!tile.getSocketType().equals(circuitBoard.getSocketType())) { + return; + } + } catch (Throwable ignored) { + // older circuitBoards don't have getSocketType() + } + ItemStack toSocket = itemstack.copy(); toSocket.stackSize = 1; tile.setSocket(slot, toSocket); diff --git a/src/main/java/forestry/energy/tiles/TileEngineElectric.java b/src/main/java/forestry/energy/tiles/TileEngineElectric.java index 313d4cb8a..be3e564d0 100644 --- a/src/main/java/forestry/energy/tiles/TileEngineElectric.java +++ b/src/main/java/forestry/energy/tiles/TileEngineElectric.java @@ -18,7 +18,9 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import forestry.api.circuits.ChipsetManager; +import forestry.api.circuits.CircuitSocketType; import forestry.api.circuits.ICircuitBoard; +import forestry.api.circuits.ICircuitSocketType; import forestry.api.core.ForestryAPI; import forestry.api.core.IErrorLogic; import forestry.core.circuits.ISocketable; @@ -309,6 +311,11 @@ public class TileEngineElectric extends TileEngine implements ISocketable, IInve } } + @Override + public ICircuitSocketType getSocketType() { + return CircuitSocketType.ELECTRIC_ENGINE; + } + private static class EngineTinInventoryAdapter extends TileInventoryAdapter { public EngineTinInventoryAdapter(TileEngineElectric engineTin) { super(engineTin, 1, "electrical"); diff --git a/src/main/java/forestry/factory/tiles/TileCentrifuge.java b/src/main/java/forestry/factory/tiles/TileCentrifuge.java index 42318e138..7b7acfa28 100644 --- a/src/main/java/forestry/factory/tiles/TileCentrifuge.java +++ b/src/main/java/forestry/factory/tiles/TileCentrifuge.java @@ -35,7 +35,9 @@ import net.minecraftforge.common.util.ForgeDirection; import cpw.mods.fml.common.Optional; import forestry.api.circuits.ChipsetManager; +import forestry.api.circuits.CircuitSocketType; import forestry.api.circuits.ICircuitBoard; +import forestry.api.circuits.ICircuitSocketType; import forestry.api.core.ForestryAPI; import forestry.api.core.IErrorLogic; import forestry.api.recipes.ICentrifugeManager; @@ -282,6 +284,11 @@ public class TileCentrifuge extends TilePowered implements ISocketable, ISidedIn } } + @Override + public ICircuitSocketType getSocketType() { + return CircuitSocketType.MACHINE; + } + /* RECIPE MANAGEMENT */ public static class CentrifugeRecipe implements ICentrifugeRecipe { diff --git a/src/main/java/forestry/factory/tiles/TileSqueezer.java b/src/main/java/forestry/factory/tiles/TileSqueezer.java index 195752ca7..728db3295 100644 --- a/src/main/java/forestry/factory/tiles/TileSqueezer.java +++ b/src/main/java/forestry/factory/tiles/TileSqueezer.java @@ -33,7 +33,9 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTankInfo; import forestry.api.circuits.ChipsetManager; +import forestry.api.circuits.CircuitSocketType; import forestry.api.circuits.ICircuitBoard; +import forestry.api.circuits.ICircuitSocketType; import forestry.api.core.ForestryAPI; import forestry.api.core.IErrorLogic; import forestry.api.recipes.ISqueezerManager; @@ -315,6 +317,11 @@ public class TileSqueezer extends TilePowered implements ISocketable, ISidedInve } } + @Override + public ICircuitSocketType getSocketType() { + return CircuitSocketType.MACHINE; + } + public static class SqueezerInventory extends TileInventoryAdapter { public static final short SLOT_RESOURCE_1 = 0; public static final short SLOTS_RESOURCE_COUNT = 9; diff --git a/src/main/java/forestry/farming/gui/GuiFarm.java b/src/main/java/forestry/farming/gui/GuiFarm.java index 00e2058a5..e14d6e69d 100755 --- a/src/main/java/forestry/farming/gui/GuiFarm.java +++ b/src/main/java/forestry/farming/gui/GuiFarm.java @@ -42,8 +42,8 @@ public class GuiFarm extends GuiForestry { widgetManager.add(new FarmLogicSlot(widgetManager, 69, 22, FarmDirection.NORTH)); widgetManager.add(new FarmLogicSlot(widgetManager, 69, 58, FarmDirection.SOUTH)); - widgetManager.add(new FarmLogicSlot(widgetManager, 51, 40, FarmDirection.EAST)); - widgetManager.add(new FarmLogicSlot(widgetManager, 87, 40, FarmDirection.WEST)); + widgetManager.add(new FarmLogicSlot(widgetManager, 51, 40, FarmDirection.WEST)); + widgetManager.add(new FarmLogicSlot(widgetManager, 87, 40, FarmDirection.EAST)); this.xSize = 216; this.ySize = 220; diff --git a/src/main/java/forestry/farming/multiblock/FakeFarmController.java b/src/main/java/forestry/farming/multiblock/FakeFarmController.java index f935f7c15..f9bee3181 100644 --- a/src/main/java/forestry/farming/multiblock/FakeFarmController.java +++ b/src/main/java/forestry/farming/multiblock/FakeFarmController.java @@ -19,6 +19,8 @@ import net.minecraft.world.World; import net.minecraftforge.fluids.FluidStack; +import forestry.api.circuits.CircuitSocketType; +import forestry.api.circuits.ICircuitSocketType; import forestry.api.core.EnumHumidity; import forestry.api.core.EnumTemperature; import forestry.api.core.IErrorLogic; @@ -152,6 +154,11 @@ public class FakeFarmController implements IFarmController { } + @Override + public ICircuitSocketType getSocketType() { + return CircuitSocketType.NONE; + } + @Override public IErrorLogic getErrorLogic() { return FakeErrorLogic.instance; diff --git a/src/main/java/forestry/farming/multiblock/FarmController.java b/src/main/java/forestry/farming/multiblock/FarmController.java index cc61e76dc..92f064461 100644 --- a/src/main/java/forestry/farming/multiblock/FarmController.java +++ b/src/main/java/forestry/farming/multiblock/FarmController.java @@ -35,7 +35,9 @@ import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; import forestry.api.circuits.ChipsetManager; +import forestry.api.circuits.CircuitSocketType; import forestry.api.circuits.ICircuitBoard; +import forestry.api.circuits.ICircuitSocketType; import forestry.api.core.EnumHumidity; import forestry.api.core.EnumTemperature; import forestry.api.core.IErrorLogic; @@ -848,4 +850,8 @@ public class FarmController extends RectangularMultiblockControllerBase implemen } } + @Override + public ICircuitSocketType getSocketType() { + return CircuitSocketType.FARM; + } } diff --git a/src/main/java/forestry/farming/tiles/TileFarm.java b/src/main/java/forestry/farming/tiles/TileFarm.java index a5b7090ba..5c506a5b9 100644 --- a/src/main/java/forestry/farming/tiles/TileFarm.java +++ b/src/main/java/forestry/farming/tiles/TileFarm.java @@ -18,6 +18,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ChunkCoordinates; import net.minecraft.util.StatCollector; +import forestry.api.circuits.ICircuitSocketType; import forestry.api.core.ForestryAPI; import forestry.api.core.IErrorLogic; import forestry.api.core.IErrorLogicSource; @@ -178,6 +179,11 @@ public abstract class TileFarm extends RectangularMultiblockTileEntityBase imple getFarmController().setSocket(slot, stack); } + @Override + public ICircuitSocketType getSocketType() { + return getFarmController().getSocketType(); + } + /* IStreamableGui */ @Override public ChunkCoordinates getCoordinates() { diff --git a/src/main/java/forestry/plugins/PluginFactory.java b/src/main/java/forestry/plugins/PluginFactory.java index bcc867f0b..e3c663f48 100644 --- a/src/main/java/forestry/plugins/PluginFactory.java +++ b/src/main/java/forestry/plugins/PluginFactory.java @@ -23,6 +23,7 @@ import net.minecraftforge.oredict.OreDictionary; import cpw.mods.fml.common.network.IGuiHandler; import forestry.api.circuits.ChipsetManager; +import forestry.api.circuits.CircuitSocketType; import forestry.api.circuits.ICircuitLayout; import forestry.api.recipes.RecipeManagers; import forestry.core.blocks.BlockBase; @@ -234,7 +235,7 @@ public class PluginFactory extends ForestryPlugin { 'C', "chestWood")) .setFaces(0, 1, 2, 3, 4, 4)); - ICircuitLayout layoutMachineUpgrade = new CircuitLayout("machine.upgrade"); + ICircuitLayout layoutMachineUpgrade = new CircuitLayout("machine.upgrade", CircuitSocketType.MACHINE); ChipsetManager.circuitRegistry.registerLayout(layoutMachineUpgrade); } diff --git a/src/main/java/forestry/plugins/PluginFarming.java b/src/main/java/forestry/plugins/PluginFarming.java index 34b7c3ddd..9461fbb27 100644 --- a/src/main/java/forestry/plugins/PluginFarming.java +++ b/src/main/java/forestry/plugins/PluginFarming.java @@ -32,6 +32,7 @@ import cpw.mods.fml.common.registry.GameData; import cpw.mods.fml.common.registry.GameRegistry; import forestry.api.circuits.ChipsetManager; +import forestry.api.circuits.CircuitSocketType; import forestry.api.circuits.ICircuitLayout; import forestry.api.farming.Farmables; import forestry.api.farming.IFarmable; @@ -135,9 +136,9 @@ public class PluginFarming extends ForestryPlugin { proxy.initializeRendering(); // Layouts - ICircuitLayout layoutManaged = new CircuitLayout("farms.managed"); + ICircuitLayout layoutManaged = new CircuitLayout("farms.managed", CircuitSocketType.FARM); ChipsetManager.circuitRegistry.registerLayout(layoutManaged); - ICircuitLayout layoutManual = new CircuitLayout("farms.manual"); + ICircuitLayout layoutManual = new CircuitLayout("farms.manual", CircuitSocketType.FARM); ChipsetManager.circuitRegistry.registerLayout(layoutManual); } diff --git a/src/main/java/forestry/plugins/PluginIC2.java b/src/main/java/forestry/plugins/PluginIC2.java index 6b19794bc..7bc7eb822 100644 --- a/src/main/java/forestry/plugins/PluginIC2.java +++ b/src/main/java/forestry/plugins/PluginIC2.java @@ -25,6 +25,7 @@ import cpw.mods.fml.common.event.FMLInterModComms; import cpw.mods.fml.common.registry.GameData; import forestry.api.circuits.ChipsetManager; +import forestry.api.circuits.CircuitSocketType; import forestry.api.circuits.ICircuitLayout; import forestry.api.fuels.EngineBronzeFuel; import forestry.api.fuels.FuelManager; @@ -169,7 +170,7 @@ public class PluginIC2 extends ForestryPlugin { Circuit.farmRubberManual = new CircuitFarmLogic("manualRubber", FarmLogicRubber.class); - ICircuitLayout layoutEngineTin = new CircuitLayout("engine.tin"); + ICircuitLayout layoutEngineTin = new CircuitLayout("engine.tin", CircuitSocketType.ELECTRIC_ENGINE); ChipsetManager.circuitRegistry.registerLayout(layoutEngineTin); }