diff --git a/src/main/java/techreborn/blocks/machine/BlockChargeBench.java b/src/main/java/techreborn/blocks/machine/BlockChargeBench.java new file mode 100644 index 000000000..d67dbd77d --- /dev/null +++ b/src/main/java/techreborn/blocks/machine/BlockChargeBench.java @@ -0,0 +1,73 @@ +package techreborn.blocks.machine; + +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; +import techreborn.Core; +import techreborn.blocks.BlockMachineBase; +import techreborn.client.GuiHandler; +import techreborn.tiles.TileAlloyFurnace; +import techreborn.tiles.TileChargeBench; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class BlockChargeBench extends BlockMachineBase { + + @SideOnly(Side.CLIENT) + private IIcon iconFront; + + @SideOnly(Side.CLIENT) + private IIcon iconFrontOn; + + @SideOnly(Side.CLIENT) + private IIcon iconTop; + + @SideOnly(Side.CLIENT) + private IIcon iconBottom; + + public BlockChargeBench(Material material) + { + super(material); + setBlockName("techreborn.chargebench"); + } + + @Override + public TileEntity createNewTileEntity(World world, int p_149915_2_) + { + return new TileChargeBench(); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) + { + if (!player.isSneaking()) + player.openGui(Core.INSTANCE, GuiHandler.chargeBench, world, x, y, + z); + return true; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister icon) + { + this.blockIcon = icon.registerIcon("techreborn:machine/machine_side"); + this.iconFront = icon.registerIcon("techreborn:machine/machine_side"); + this.iconFrontOn = icon.registerIcon("techreborn:machine/machine_side"); + this.iconTop = icon.registerIcon("techreborn:machine/machine_side"); + this.iconBottom = icon.registerIcon("techreborn:machine/machine_side"); + } + + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) + { + return metadata == 0 && side == 3 ? this.iconFront + : side == 1 ? this.iconTop : + side == 0 ? this.iconBottom: (side == 0 ? this.iconTop + : (side == metadata ? this.iconFront : this.blockIcon)); + + } + +} diff --git a/src/main/java/techreborn/client/GuiHandler.java b/src/main/java/techreborn/client/GuiHandler.java index 416c2a960..9e27afd3d 100644 --- a/src/main/java/techreborn/client/GuiHandler.java +++ b/src/main/java/techreborn/client/GuiHandler.java @@ -39,6 +39,7 @@ public class GuiHandler implements IGuiHandler { public static final int destructoPackID = 25; public static final int lesuID = 26; public static final int idsuID = 27; + public static final int chargeBench = 28; @Override public Object getServerGuiElement(int ID, EntityPlayer player, World world, @@ -145,7 +146,10 @@ public class GuiHandler implements IGuiHandler { return new ContainerLesu((TileLesu) world.getTileEntity(x, y, z), player); } else if (ID == idsuID) { return new ContainerIDSU((TileIDSU) world.getTileEntity(x, y, z), player); + } else if (ID == chargeBench) { + return new ContainerChargeBench((TileChargeBench) world.getTileEntity(x, y, z), player); } + return null; } @@ -255,6 +259,8 @@ public class GuiHandler implements IGuiHandler { return new GuiLesu(player, (TileLesu)world.getTileEntity(x, y, z)); } else if (ID == idsuID) { return new GuiIDSU(player, (TileIDSU)world.getTileEntity(x, y, z)); + } else if (ID == chargeBench) { + return new GuiChargeBench(player, (TileChargeBench)world.getTileEntity(x, y, z)); } return null; } diff --git a/src/main/java/techreborn/client/container/ContainerChargeBench.java b/src/main/java/techreborn/client/container/ContainerChargeBench.java new file mode 100644 index 000000000..91a0cc1a2 --- /dev/null +++ b/src/main/java/techreborn/client/container/ContainerChargeBench.java @@ -0,0 +1,51 @@ +package techreborn.client.container; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Slot; +import techreborn.client.SlotOutput; +import techreborn.tiles.TileAlloySmelter; +import techreborn.tiles.TileChargeBench; + +public class ContainerChargeBench extends TechRebornContainer { + + EntityPlayer player; + + TileChargeBench tile; + + @Override + public boolean canInteractWith(EntityPlayer player) + { + return true; + } + + public int tickTime; + + public ContainerChargeBench(TileChargeBench tileChargeBench, EntityPlayer player) + { + tile = tileChargeBench; + this.player = player; + + this.addSlotToContainer(new Slot(tileChargeBench.inventory, 0, 62, 21)); + this.addSlotToContainer(new Slot(tileChargeBench.inventory, 1, 80, 21)); + this.addSlotToContainer(new Slot(tileChargeBench.inventory, 2, 98, 21)); + this.addSlotToContainer(new Slot(tileChargeBench.inventory, 3, 62, 39)); + this.addSlotToContainer(new Slot(tileChargeBench.inventory, 4, 80, 39)); + this.addSlotToContainer(new Slot(tileChargeBench.inventory, 5, 98, 39)); + + int i; + + for (i = 0; i < 3; ++i) + { + for (int j = 0; j < 9; ++j) + { + this.addSlotToContainer(new Slot(player.inventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + } + } + + for (i = 0; i < 9; ++i) + { + this.addSlotToContainer(new Slot(player.inventory, i, 8 + i * 18, 142)); + } + } + +} diff --git a/src/main/java/techreborn/client/gui/GuiChargeBench.java b/src/main/java/techreborn/client/gui/GuiChargeBench.java new file mode 100644 index 000000000..455419d6e --- /dev/null +++ b/src/main/java/techreborn/client/gui/GuiChargeBench.java @@ -0,0 +1,47 @@ +package techreborn.client.gui; + +import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.StatCollector; +import techreborn.client.container.ContainerAlloySmelter; +import techreborn.client.container.ContainerChargeBench; +import techreborn.tiles.TileAlloySmelter; +import techreborn.tiles.TileChargeBench; + +public class GuiChargeBench extends GuiContainer { + + private static final ResourceLocation texture = new ResourceLocation("techreborn", "textures/gui/chargebench.png"); + + TileChargeBench chargebench; + + public GuiChargeBench(EntityPlayer player, TileChargeBench tile) { + super(new ContainerChargeBench(tile, player)); + this.xSize = 176; + this.ySize = 167; + chargebench = tile; + } + + @Override + public void initGui() { + int k = (this.width - this.xSize) / 2; + int l = (this.height - this.ySize) / 2; + super.initGui(); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + this.mc.getTextureManager().bindTexture(texture); + int k = (this.width - this.xSize) / 2; + int l = (this.height - this.ySize) / 2; + this.drawTexturedModalRect(k, l, 0, 0, this.xSize, this.ySize); + } + + protected void drawGuiContainerForegroundLayer(int p_146979_1_, int p_146979_2_) { + String name = StatCollector.translateToLocal("tile.techreborn.chargebench.name"); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory", new Object[0]), 8, this.ySize - 96 + 2, 4210752); + } +} diff --git a/src/main/java/techreborn/init/ModBlocks.java b/src/main/java/techreborn/init/ModBlocks.java index 276ad564b..560fce8a8 100644 --- a/src/main/java/techreborn/init/ModBlocks.java +++ b/src/main/java/techreborn/init/ModBlocks.java @@ -21,6 +21,7 @@ import techreborn.blocks.machine.BlockAlloySmelter; import techreborn.blocks.machine.BlockAssemblingMachine; import techreborn.blocks.machine.BlockBlastFurnace; import techreborn.blocks.machine.BlockCentrifuge; +import techreborn.blocks.machine.BlockChargeBench; import techreborn.blocks.machine.BlockChemicalReactor; import techreborn.blocks.machine.BlockDistillationTower; import techreborn.blocks.machine.BlockGrinder; @@ -89,6 +90,7 @@ public class ModBlocks { public static Block LightningRod; public static Block heatGenerator; public static Block industrialSawmill; + public static Block chargeBench; public static Block ore; public static Block storage; @@ -143,6 +145,10 @@ public class ModBlocks { ChunkLoader = new BlockChunkLoader(Material.rock); GameRegistry.registerBlock(ChunkLoader, "chunkloader"); GameRegistry.registerTileEntity(TileChunkLoader.class, "TileChunkLoaderTR"); + + chargeBench = new BlockChargeBench(Material.rock); + GameRegistry.registerBlock(chargeBench, "chargebench"); + GameRegistry.registerTileEntity(TileChargeBench.class, "TileChargeBench"); MachineCasing = new BlockMachineCasing(Material.rock); GameRegistry.registerBlock(MachineCasing, ItemBlockMachineCasing.class, "machinecasing"); diff --git a/src/main/java/techreborn/tiles/TileChargeBench.java b/src/main/java/techreborn/tiles/TileChargeBench.java new file mode 100644 index 000000000..98cb3a6aa --- /dev/null +++ b/src/main/java/techreborn/tiles/TileChargeBench.java @@ -0,0 +1,202 @@ +package techreborn.tiles; + +import ic2.api.energy.prefab.BasicSink; +import ic2.api.energy.tile.IEnergyTile; +import ic2.api.item.ElectricItem; +import ic2.api.item.IElectricItem; +import ic2.api.tile.IWrenchable; +import ic2.core.item.ElectricItemManager; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.common.util.ForgeDirection; +import techreborn.api.recipe.RecipeCrafter; +import techreborn.api.upgrade.UpgradeHandler; +import techreborn.client.hud.ChargeHud; +import techreborn.init.ModBlocks; +import techreborn.util.Inventory; + +import java.util.List; + +public class TileChargeBench extends TileMachineBase implements IWrenchable, IEnergyTile, IInventory { + + public BasicSink energy; + public Inventory inventory = new Inventory(6, "TileChargeBench", 64); + public int capacity = 100000; + public int[] chargeSlot = {0, 1, 2, 3, 4, 5}; + + public TileChargeBench(){ + energy = new BasicSink(this, capacity, 3); + } + + @Override + public void updateEntity(){ + super.updateEntity(); + energy.updateEntity(); + if(inventory.getStackInSlot(0) != null) + { + if(inventory.getStackInSlot(0).getItem() instanceof IElectricItem) + { + ItemStack stack = inventory.getStackInSlot(0); + double MaxCharge = ((IElectricItem) stack.getItem()).getMaxCharge(stack); + double CurrentCharge = ElectricItem.manager.getCharge(stack); + if(CurrentCharge != MaxCharge) + { + ElectricItem.manager.charge(stack, MaxCharge - CurrentCharge, 2, false, false); + energy.useEnergy(128); + } + } + } + } + + @Override + public boolean wrenchCanSetFacing(EntityPlayer entityPlayer, int side){ + return false; + } + + @Override + public short getFacing(){ + return 0; + } + + @Override + public void setFacing(short facing){ + } + + @Override + public boolean wrenchCanRemove(EntityPlayer entityPlayer){ + if (entityPlayer.isSneaking()){ + return true; + } + return false; + } + + @Override + public float getWrenchDropRate(){ + return 1.0F; + } + + @Override + public ItemStack getWrenchDrop(EntityPlayer entityPlayer){ + return new ItemStack(ModBlocks.chargeBench, 1); + } + + public boolean isComplete(){ + return false; + } + + @Override + public void readFromNBT(NBTTagCompound tagCompound){ + super.readFromNBT(tagCompound); + inventory.readFromNBT(tagCompound); + energy.readFromNBT(tagCompound); + } + + @Override + public void writeToNBT(NBTTagCompound tagCompound){ + super.writeToNBT(tagCompound); + inventory.writeToNBT(tagCompound); + energy.writeToNBT(tagCompound); + } + + @Override + public void invalidate() + { + energy.invalidate(); + super.invalidate(); + } + @Override + public void onChunkUnload() + { + energy.onChunkUnload(); + super.onChunkUnload(); + } + + @Override + public int getSizeInventory() { + return inventory.getSizeInventory(); + } + + @Override + public ItemStack getStackInSlot(int slot) { + return inventory.getStackInSlot(slot); + } + + @Override + public ItemStack decrStackSize(int slot, int amount) { + return inventory.decrStackSize(slot, amount); + } + + @Override + public ItemStack getStackInSlotOnClosing(int slot) { + return inventory.getStackInSlotOnClosing(slot); + } + + @Override + public void setInventorySlotContents(int slot, ItemStack stack) { + inventory.setInventorySlotContents(slot, stack); + } + + @Override + public String getInventoryName() { + return inventory.getInventoryName(); + } + + @Override + public boolean hasCustomInventoryName() { + return inventory.hasCustomInventoryName(); + } + + @Override + public int getInventoryStackLimit() { + return inventory.getInventoryStackLimit(); + } + + @Override + public boolean isUseableByPlayer(EntityPlayer player) { + return inventory.isUseableByPlayer(player); + } + + @Override + public void openInventory() { + inventory.openInventory(); + } + + @Override + public void closeInventory() { + inventory.closeInventory(); + } + + @Override + public boolean isItemValidForSlot(int slot, ItemStack stack) { + return inventory.isItemValidForSlot(slot, stack); + } + + // ISidedInventory +// @Override +// public int[] getAccessibleSlotsFromSide(int side) +// { +// return side == ForgeDirection.DOWN.ordinal() ? new int[]{0, 1, 2} : new int[]{0, 1, 2}; +// } +// +// @Override +// public boolean canInsertItem(int slotIndex, ItemStack itemStack, int side) +// { +// if (slotIndex == 2) +// return false; +// return isItemValidForSlot(slotIndex, itemStack); +// } +// +// @Override +// public boolean canExtractItem(int slotIndex, ItemStack itemStack, int side) +// { +// return slotIndex == 2; +// } +// +// public int getEnergyScaled(int scale) { +// return (int)energy.getEnergyStored() * scale / energy.getCapacity(); +// } +} diff --git a/src/main/resources/assets/techreborn/textures/gui/chargebench.png b/src/main/resources/assets/techreborn/textures/gui/chargebench.png new file mode 100644 index 000000000..3613a38e3 Binary files /dev/null and b/src/main/resources/assets/techreborn/textures/gui/chargebench.png differ