diff --git a/src/main/java/storagecraft/block/BlockController.java b/src/main/java/storagecraft/block/BlockController.java index 6e50dfc69..8145e51b1 100755 --- a/src/main/java/storagecraft/block/BlockController.java +++ b/src/main/java/storagecraft/block/BlockController.java @@ -1,10 +1,14 @@ package storagecraft.block; import net.minecraft.block.properties.IProperty; +import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.properties.PropertyInteger; import net.minecraft.block.state.BlockState; import net.minecraft.block.state.IBlockState; +import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.BlockPos; import net.minecraft.util.EnumFacing; @@ -14,8 +18,11 @@ import storagecraft.StorageCraft; import storagecraft.StorageCraftGUI; import storagecraft.tile.TileController; +import java.util.List; + public class BlockController extends BlockBase { + public static final PropertyEnum TYPE = PropertyEnum.create("type", EnumControllerType.class); public static final PropertyInteger ENERGY = PropertyInteger.create("energy", 0, 8); public BlockController() @@ -23,16 +30,38 @@ public class BlockController extends BlockBase super("controller"); } + @Override + public void getSubBlocks(Item item, CreativeTabs tab, List subItems) + { + for (int i = 0; i <= 1; i++) + { + subItems.add(new ItemStack(item, 1, i)); + } + } + @Override protected BlockState createBlockState() { return new BlockState(this, new IProperty[] { DIRECTION, + TYPE, ENERGY }); } + @Override + public IBlockState getStateFromMeta(int meta) + { + return getDefaultState().withProperty(TYPE, meta == 0 ? EnumControllerType.NORMAL : EnumControllerType.CREATIVE); + } + + @Override + public int getMetaFromState(IBlockState state) + { + return state.getValue(TYPE) == EnumControllerType.NORMAL ? 0 : 1; + } + @Override public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos) { diff --git a/src/main/java/storagecraft/block/EnumControllerType.java b/src/main/java/storagecraft/block/EnumControllerType.java new file mode 100755 index 000000000..533efb6ad --- /dev/null +++ b/src/main/java/storagecraft/block/EnumControllerType.java @@ -0,0 +1,35 @@ +package storagecraft.block; + +import net.minecraft.util.IStringSerializable; + +public enum EnumControllerType implements IStringSerializable +{ + NORMAL(0, "normal"), + CREATIVE(1, "creative"); + + private int id; + private String name; + + EnumControllerType(int id, String name) + { + this.id = id; + this.name = name; + } + + @Override + public String getName() + { + return name; + } + + public int getId() + { + return id; + } + + @Override + public String toString() + { + return name; + } +} diff --git a/src/main/java/storagecraft/gui/GuiController.java b/src/main/java/storagecraft/gui/GuiController.java index 697218ad6..dd7532251 100755 --- a/src/main/java/storagecraft/gui/GuiController.java +++ b/src/main/java/storagecraft/gui/GuiController.java @@ -46,7 +46,7 @@ public class GuiController extends GuiBase @Override public void drawForeground(int mouseX, int mouseY) { - drawString(7, 7, t("gui.storagecraft:controller")); + drawString(7, 7, t("gui.storagecraft:controller." + controller.getType().getId())); drawString(7, 87, t("container.inventory")); drawString(31, 20, t("misc.storagecraft:energy_usage", controller.getEnergyUsage())); diff --git a/src/main/java/storagecraft/item/ItemBlockController.java b/src/main/java/storagecraft/item/ItemBlockController.java new file mode 100755 index 000000000..c40971830 --- /dev/null +++ b/src/main/java/storagecraft/item/ItemBlockController.java @@ -0,0 +1,11 @@ +package storagecraft.item; + +import net.minecraft.block.Block; + +public class ItemBlockController extends ItemBlockBase +{ + public ItemBlockController(Block block) + { + super(block); + } +} diff --git a/src/main/java/storagecraft/proxy/ClientProxy.java b/src/main/java/storagecraft/proxy/ClientProxy.java index 9c0e2bb4c..a11e68a68 100755 --- a/src/main/java/storagecraft/proxy/ClientProxy.java +++ b/src/main/java/storagecraft/proxy/ClientProxy.java @@ -11,6 +11,8 @@ import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import storagecraft.StorageCraftBlocks; import storagecraft.StorageCraftItems; +import storagecraft.block.BlockController; +import storagecraft.block.EnumControllerType; import storagecraft.block.EnumGridType; import storagecraft.item.ItemCore; import storagecraft.item.ItemProcessor; @@ -106,6 +108,7 @@ public class ClientProxy extends CommonProxy mesher.register(Item.getItemFromBlock(StorageCraftBlocks.IMPORTER), 0, new ModelResourceLocation("storagecraft:importer", "inventory")); mesher.register(Item.getItemFromBlock(StorageCraftBlocks.EXTERNAL_STORAGE), 0, new ModelResourceLocation("storagecraft:external_storage", "inventory")); mesher.register(Item.getItemFromBlock(StorageCraftBlocks.DRIVE), 0, new ModelResourceLocation("storagecraft:drive", "inventory")); - mesher.register(Item.getItemFromBlock(StorageCraftBlocks.CONTROLLER), 0, new ModelResourceLocation("storagecraft:controller", "inventory")); + mesher.register(Item.getItemFromBlock(StorageCraftBlocks.CONTROLLER), EnumControllerType.NORMAL.getId(), new ModelResourceLocation("storagecraft:controller", "inventory")); + mesher.register(Item.getItemFromBlock(StorageCraftBlocks.CONTROLLER), EnumControllerType.CREATIVE.getId(), new ModelResourceLocation("storagecraft:controller", "inventory")); } } diff --git a/src/main/java/storagecraft/proxy/CommonProxy.java b/src/main/java/storagecraft/proxy/CommonProxy.java index 46e118e67..daaea3ee8 100755 --- a/src/main/java/storagecraft/proxy/CommonProxy.java +++ b/src/main/java/storagecraft/proxy/CommonProxy.java @@ -12,11 +12,13 @@ import net.minecraftforge.fml.relauncher.Side; import storagecraft.StorageCraft; import storagecraft.StorageCraftBlocks; import storagecraft.StorageCraftItems; +import storagecraft.block.EnumGridType; import storagecraft.gui.GuiHandler; import storagecraft.item.*; import storagecraft.network.*; import storagecraft.tile.*; import storagecraft.tile.solderer.*; +import storagecraft.block.EnumControllerType; public class CommonProxy { @@ -48,7 +50,7 @@ public class CommonProxy GameRegistry.registerTileEntity(TileDestructor.class, "destructor"); GameRegistry.registerTileEntity(TileConstructor.class, "constructor"); - GameRegistry.registerBlock(StorageCraftBlocks.CONTROLLER, "controller"); + GameRegistry.registerBlock(StorageCraftBlocks.CONTROLLER, ItemBlockController.class, "controller"); GameRegistry.registerBlock(StorageCraftBlocks.CABLE, ItemBlockCable.class, "cable"); GameRegistry.registerBlock(StorageCraftBlocks.GRID, ItemBlockGrid.class, "grid"); GameRegistry.registerBlock(StorageCraftBlocks.DRIVE, "drive"); @@ -115,7 +117,7 @@ public class CommonProxy ); // Controller - GameRegistry.addRecipe(new ItemStack(StorageCraftBlocks.CONTROLLER), + GameRegistry.addRecipe(new ItemStack(StorageCraftBlocks.CONTROLLER, 1, EnumControllerType.NORMAL.getId()), "EDE", "SRS", "ESE", @@ -154,7 +156,7 @@ public class CommonProxy ); // Grid - GameRegistry.addRecipe(new ItemStack(StorageCraftBlocks.GRID, 1, 0), + GameRegistry.addRecipe(new ItemStack(StorageCraftBlocks.GRID, 1, EnumGridType.NORMAL.getId()), "ECE", "PMP", "EDE", diff --git a/src/main/java/storagecraft/tile/TileController.java b/src/main/java/storagecraft/tile/TileController.java index aafbfe3b9..f1f93e1e7 100755 --- a/src/main/java/storagecraft/tile/TileController.java +++ b/src/main/java/storagecraft/tile/TileController.java @@ -9,6 +9,8 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.BlockPos; import net.minecraft.util.EnumFacing; import storagecraft.StorageCraftBlocks; +import storagecraft.block.BlockController; +import storagecraft.block.EnumControllerType; import storagecraft.storage.IStorage; import storagecraft.storage.IStorageProvider; import storagecraft.storage.StorageItem; @@ -28,7 +30,7 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor private List visitedCables = new ArrayList(); - private EnergyStorage energy = new EnergyStorage(1000); + private EnergyStorage energy = new EnergyStorage(32000); private int energyUsage; private boolean destroyed = false; @@ -113,7 +115,14 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor } } - energy.extractEnergy(energyUsage, false); + switch (getType()){ + case NORMAL: + energy.extractEnergy(energyUsage, false); + break; + case CREATIVE: + energy.setEnergyStored(energy.getMaxEnergyStored()); + break; + } if (lastEnergy != energy.getEnergyStored()) { worldObj.markBlockForUpdate(pos); @@ -122,6 +131,10 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor } } + public EnumControllerType getType() { + return (EnumControllerType) worldObj.getBlockState(pos).getValue(BlockController.TYPE); + } + public void onDestroyed() { disconnectAll(); diff --git a/src/main/java/storagecraft/tile/solderer/SoldererRecipeCraftingGrid.java b/src/main/java/storagecraft/tile/solderer/SoldererRecipeCraftingGrid.java index c5f8eeb0e..88916e4d3 100755 --- a/src/main/java/storagecraft/tile/solderer/SoldererRecipeCraftingGrid.java +++ b/src/main/java/storagecraft/tile/solderer/SoldererRecipeCraftingGrid.java @@ -4,6 +4,7 @@ import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import storagecraft.StorageCraftBlocks; import storagecraft.StorageCraftItems; +import storagecraft.block.EnumGridType; import storagecraft.item.ItemProcessor; public class SoldererRecipeCraftingGrid implements ISoldererRecipe @@ -30,7 +31,7 @@ public class SoldererRecipeCraftingGrid implements ISoldererRecipe @Override public ItemStack getResult() { - return new ItemStack(StorageCraftBlocks.GRID, 1, 1); + return new ItemStack(StorageCraftBlocks.GRID, 1, EnumGridType.CRAFTING.getId()); } @Override diff --git a/src/main/resources/assets/storagecraft/blockstates/controller.json b/src/main/resources/assets/storagecraft/blockstates/controller.json index 53ec13fa3..a38949d98 100755 --- a/src/main/resources/assets/storagecraft/blockstates/controller.json +++ b/src/main/resources/assets/storagecraft/blockstates/controller.json @@ -11,10 +11,20 @@ "variants": { "inventory": [ { - "y": 0 + "y": 0, + "textures": { + "side": "storagecraft:blocks/side", + "top": "storagecraft:blocks/side", + "front": "storagecraft:blocks/controller_0" + } }, { - "y": 0 + "y": 0, + "textures": { + "front": "storagecraft:blocks/controller_creative_front", + "top": "storagecraft:blocks/controller_creative_side", + "side": "storagecraft:blocks/controller_creative_side" + } } ], "energy": { @@ -64,6 +74,17 @@ } } }, + "type": { + "normal": { + }, + "creative": { + "textures": { + "front": "storagecraft:blocks/controller_creative_front", + "top": "storagecraft:blocks/controller_creative_side", + "side": "storagecraft:blocks/controller_creative_side" + } + } + }, "direction": { "north": { "y": 0 diff --git a/src/main/resources/assets/storagecraft/lang/en_US.lang b/src/main/resources/assets/storagecraft/lang/en_US.lang index 29f7a90b1..2312f9a15 100755 --- a/src/main/resources/assets/storagecraft/lang/en_US.lang +++ b/src/main/resources/assets/storagecraft/lang/en_US.lang @@ -1,6 +1,7 @@ itemGroup.storagecraft=StorageCraft -gui.storagecraft:controller=Controller +gui.storagecraft:controller.0=Controller +gui.storagecraft:controller.1=Creative Controller gui.storagecraft:grid=Grid gui.storagecraft:drive=Drive gui.storagecraft:external_storage=External Storage @@ -56,7 +57,8 @@ sidebutton.storagecraft:detector.mode.0=Under the amount sidebutton.storagecraft:detector.mode.1=On the amount sidebutton.storagecraft:detector.mode.2=Above the amount -block.storagecraft:controller.name=Controller +block.storagecraft:controller.0.name=Controller +block.storagecraft:controller.1.name=Creative Controller block.storagecraft:cable.0.name=Cable block.storagecraft:cable.1.name=Sensitive Cable block.storagecraft:grid.0.name=Grid