Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package dk.MathiasVO053.RobinsamseCraft.blocks;
- import java.util.Random;
- import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
- import cpw.mods.fml.relauncher.Side;
- import cpw.mods.fml.relauncher.SideOnly;
- import dk.MathiasVO053.RobinsamseCraft.BlockReg;
- import dk.MathiasVO053.RobinsamseCraft.Main;
- import dk.MathiasVO053.RobinsamseCraft.Strings;
- import dk.MathiasVO053.RobinsamseCraft.tile_entity.TileEntityInfuser2;
- import net.minecraft.block.Block;
- import net.minecraft.block.BlockContainer;
- import net.minecraft.block.material.Material;
- import net.minecraft.client.renderer.texture.IIconRegister;
- import net.minecraft.entity.EntityLivingBase;
- import net.minecraft.entity.item.EntityItem;
- import net.minecraft.entity.player.EntityPlayer;
- import net.minecraft.item.Item;
- import net.minecraft.item.ItemStack;
- import net.minecraft.nbt.NBTTagCompound;
- import net.minecraft.tileentity.TileEntity;
- import net.minecraft.util.IIcon;
- import net.minecraft.util.MathHelper;
- import net.minecraft.world.World;
- public class Infuser2 extends BlockContainer {
- private final boolean isActive;
- @SideOnly(Side.CLIENT)
- private IIcon iconFront;
- @SideOnly(Side.CLIENT)
- private IIcon iconTop;
- private static boolean keepInventory;
- private Random rand = new Random();
- public Infuser2(boolean isActive) {
- super(Material.iron);
- this.isActive = isActive;
- }
- @SideOnly(Side.CLIENT)
- public void registerBlockIcons(IIconRegister iconRegister) {
- this.blockIcon = iconRegister.registerIcon(Strings.MODID + ":" + (this.isActive ? "InfuserSideActive" : "InfuserSide"));
- this.iconFront = iconRegister.registerIcon(Strings.MODID + ":" + (this.isActive ? "InfuserFrontActive" : "InfuserFront"));
- this.iconTop = iconRegister.registerIcon(Strings.MODID + ":" + (this.isActive ? "InfuserTopActive" : "InfuserTop"));
- }
- @SideOnly(Side.CLIENT)
- public IIcon getIcon(int side, int metadata) {
- return metadata == 0 && side == 3 ? this.iconFront : side == 1 ? this.iconTop : (side == 0 ? this.iconTop : (side == metadata ? this.iconFront : this.blockIcon));
- }
- public Item getItemDropped(int i, Random random, int j) {
- return Item.getItemFromBlock(BlockReg.Infuser2);
- }
- public void onBlockAdded(World world, int x, int y, int z) {
- super.onBlockAdded(world, x, y, z);
- this.setDefaultDirection(world, x, y, z);
- }
- private void setDefaultDirection(World world, int x, int y, int z) {
- if(!world.isRemote) {
- Block b1 = world.getBlock(x, y, z - 1);
- Block b2 = world.getBlock(x, y, z + 1);
- Block b3 = world.getBlock(x - 1, y, z);
- Block b4 = world.getBlock(x + 1, y, z);
- byte b0 = 3;
- if(b1.func_149730_j() && !b2.func_149730_j()) {
- b0 = 3;
- }
- if(b2.func_149730_j() && !b1.func_149730_j()) {
- b0 = 2;
- }
- if(b3.func_149730_j() && !b4.func_149730_j()) {
- b0 = 5;
- }
- if(b4.func_149730_j() && !b3.func_149730_j()) {
- b0 = 4;
- }
- world.setBlockMetadataWithNotify(x, y, x, b0, 2);
- }
- }
- public boolean onBlockActivated(World w, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ){
- if(w.isRemote){
- return true;
- }else if(!player.isSneaking()){
- TileEntityInfuser2 entity = (TileEntityInfuser2) w.getTileEntity(x, y, z);
- if(entity != null){
- FMLNetworkHandler.openGui(player, Main.instance, Main.guiIDInfuserMk2, w, x, y, z);
- }
- return true;
- }else{
- return false;
- }
- }
- @Override
- public TileEntity createNewTileEntity(World world, int i) {
- return new TileEntityInfuser2();
- }
- @SideOnly(Side.CLIENT)
- public void randomDisplayTick(World world, int x, int y, int z, Random random) {
- if(this.isActive) {
- int direction = world.getBlockMetadata(x, y, z);
- float x1 = (float)x + 0.5F;
- float y1 = (float)y + random.nextFloat();
- float z1 = (float)z + 0.5F;
- float f = 0.52F;
- float f1 = random.nextFloat() * 0.6F - 0.3F;
- }
- }
- public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entityplayer, ItemStack itemstack) {
- int l = MathHelper.floor_double((double)(entityplayer.rotationYaw * 4.0F / 360.F) + 0.5D) & 3;
- if(l == 0) {
- world.setBlockMetadataWithNotify(x, y, z, 2, 2);
- }
- if(l == 1) {
- world.setBlockMetadataWithNotify(x, y, z, 5, 2);
- }
- if(l == 2) {
- world.setBlockMetadataWithNotify(x, y, z, 3, 2);
- }
- if(l == 3) {
- world.setBlockMetadataWithNotify(x, y, z, 4, 2);
- }
- if(itemstack.hasDisplayName()) {
- ((TileEntityInfuser2)world.getTileEntity(x, y, z)).setGuiDisplayName(itemstack.getDisplayName());
- }
- }
- public static void updateInfuserBlockState(boolean active, World worldObj, int xCoord, int yCoord, int zCoord) {
- int i = worldObj.getBlockMetadata(xCoord, yCoord, zCoord);
- TileEntity tileentity = worldObj.getTileEntity(xCoord, yCoord, zCoord);
- keepInventory = true;
- if(active) {
- worldObj.setBlock(xCoord, yCoord, zCoord, BlockReg.Infuser2Active);
- }else{
- worldObj.setBlock(xCoord, yCoord, zCoord, BlockReg.Infuser2);
- }
- keepInventory = false;
- worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, i, 2);
- if(tileentity != null) {
- tileentity.validate();
- worldObj.setTileEntity(xCoord, yCoord, zCoord, tileentity);
- }
- }
- public void breakBlock(World world, int x, int y, int z, Block oldblock, int oldMetadata) {
- if(!keepInventory) {
- TileEntityInfuser2 tileentity = (TileEntityInfuser2) world.getTileEntity(x, y, z);
- if(tileentity != null) {
- for(int i = 0; i < tileentity.getSizeInventory(); i++) {
- ItemStack itemstack = tileentity.getStackInSlot(i);
- if(itemstack != null) {
- float f = this.rand.nextFloat() * 0.8F + 0.1F;
- float f1 = this.rand.nextFloat() * 0.8F + 0.1F;
- float f2 = this.rand.nextFloat() * 0.8F + 0.1F;
- while(itemstack.stackSize > 0) {
- int j = this.rand.nextInt(21) + 10;
- if(j > itemstack.stackSize) {
- j = itemstack.stackSize;
- }
- itemstack.stackSize -= j;
- EntityItem item = new EntityItem(world, (double)((float)x + f), (double)((float)y + f1), (double)((float)z + f2), new ItemStack(itemstack.getItem(), j, itemstack.getItemDamage()));
- if(itemstack.hasTagCompound()) {
- item.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy());
- }
- world.spawnEntityInWorld(item);
- }
- }
- }
- world.func_147453_f(x, y, z, oldblock);
- }
- }
- super.breakBlock(world, x, y, z, oldblock, oldMetadata);
- }
- public Item getItem(World world, int x, int y, int z) {
- return Item.getItemFromBlock(BlockReg.Infuser2);
- }
- }
- ---------------------------------------------------------------------------------------------------------------------------------
- package dk.MathiasVO053.RobinsamseCraft.tile_entity;
- import cpw.mods.fml.common.registry.GameRegistry;
- import dk.MathiasVO053.RobinsamseCraft.ItemReg;
- import dk.MathiasVO053.RobinsamseCraft.Crafting.InfuserRecipes;
- import dk.MathiasVO053.RobinsamseCraft.blocks.Infuser2;
- import net.minecraft.block.Block;
- import net.minecraft.entity.player.EntityPlayer;
- import net.minecraft.init.Blocks;
- import net.minecraft.init.Items;
- import net.minecraft.inventory.ISidedInventory;
- import net.minecraft.item.Item;
- import net.minecraft.item.ItemBlock;
- import net.minecraft.item.ItemStack;
- import net.minecraft.nbt.NBTTagCompound;
- import net.minecraft.nbt.NBTTagList;
- import net.minecraft.tileentity.TileEntity;
- public class TileEntityInfuser2 extends TileEntity implements ISidedInventory {
- private String localizedName;
- private static final int[] slots_top = new int[]{0};
- private static final int[] slots_bottom = new int[]{2, 1};
- private static final int[] slots_side = new int[]{1};
- public static final int maxInfucium = 900;
- public static final int maxFuel = 900;
- private ItemStack[] slots = new ItemStack [5];
- public int furnaceSpeed = 150;
- public int currentItemBurnTime;
- public int cookTime;
- public int FuelCount;
- public int InfuciumCount;
- public void setGuiDisplayName(String displayName) {
- this.localizedName = displayName;
- }
- public String getInventoryName() {
- return this.hasCustomInventoryName() ? this.localizedName : "container.Infuser";
- }
- public boolean hasCustomInventoryName() {
- return this.localizedName != null && this.localizedName.length() > 0;
- }
- public int getSizeInventory() {
- return this.slots.length;
- }
- @Override
- public ItemStack getStackInSlot(int var1) {
- return this.slots[var1];
- }
- @Override
- public ItemStack decrStackSize(int var1, int var2) {
- if(this.slots[var1] != null){
- ItemStack itemstack;
- if(this.slots[var1].stackSize <= var2 ){
- itemstack = this.slots[var1];
- this.slots[var1] = null;
- return itemstack;
- }else{
- itemstack = this.slots[var1].splitStack(var2);
- if(this.slots[var1].stackSize == 0) {
- this.slots[var1] = null;
- }
- return itemstack;
- }
- }else{
- return null;
- }
- }
- @Override
- public ItemStack getStackInSlotOnClosing(int i) {
- if(this.slots[i]!= null) {
- ItemStack itemstack = this.slots[i];
- this.slots[i] = null;
- return itemstack;
- }
- return null;
- }
- @Override
- public void setInventorySlotContents(int i, ItemStack itemstack) {
- this.slots[i] = itemstack;
- if(itemstack != null && itemstack.stackSize > this.getInventoryStackLimit()) {
- itemstack.stackSize = this.getInventoryStackLimit();
- }
- }
- @Override
- public int getInventoryStackLimit() {
- return 64;
- }
- @Override
- public boolean isUseableByPlayer(EntityPlayer entityplayer) {
- return this.worldObj.getTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : entityplayer.getDistanceSq((double)this.xCoord + 0.5D, (double)this.yCoord + 0.5D, (double)this.zCoord + 0.5D) <= 64.0D;
- }
- public void openInventory() {}
- public void closeInventory() {}
- @Override
- public boolean isItemValidForSlot(int i, ItemStack itemstack) {
- return i == 2 ? false : (i == 1 ? hasItemPower(itemstack) : true);
- }
- private static int getItemInfucium(ItemStack itemstack) {
- if(itemstack == null){
- return 0;
- }else{
- Item item = itemstack.getItem();
- if(item instanceof ItemBlock && Block.getBlockFromItem(item) != Blocks.air) {
- Block block = Block.getBlockFromItem(item);
- //if(block == Blocks.sapling) return 100;
- }
- if(item == ItemReg.InfuciumMk2) return 100;
- }
- return GameRegistry.getFuelValue(itemstack);
- }
- private static int getItemPower(ItemStack itemstack) {
- if(itemstack == null){
- return 0;
- }else{
- Item item = itemstack.getItem();
- if(item instanceof ItemBlock && Block.getBlockFromItem(item) != Blocks.air) {
- Block block = Block.getBlockFromItem(item);
- //if(block == Blocks.sapling) return 100;
- }
- if(item == ItemReg.RainbowPowder) return 100;
- }
- return GameRegistry.getFuelValue(itemstack);
- }
- public boolean hasItemPower(ItemStack itemstack) {
- return getItemPower(itemstack) > 0;
- }
- public boolean hasItemInfucium(ItemStack itemstack) {
- return getItemInfucium(itemstack) > 0;
- }
- public int getFuelRemainingScaled(int i) {
- return (FuelCount * i) / maxFuel;
- }
- public int getInfuciumRemainingScaled(int i) {
- return (InfuciumCount * i) / maxInfucium;
- }
- public boolean hasEnergy() {
- return FuelCount > 0;
- }
- public boolean hasInfucium() {
- return InfuciumCount > 0;
- }
- public void updateEntity() {
- boolean flag = this.hasEnergy();
- boolean flag1 = false;
- boolean flag2 = false;
- if(hasEnergy() && this.isBurning()){
- this.FuelCount--;
- this.InfuciumCount--;
- }
- if(!worldObj.isRemote){
- if(this.hasItemInfucium(this.slots[3]) && this.InfuciumCount < (this.maxInfucium - this.getItemInfucium(this.slots[3]))){
- this.InfuciumCount += getItemInfucium(this.slots[3]);
- if(this.slots[3] != null){
- flag2 = true;
- this.slots[3].stackSize--;
- if(this.slots[3].stackSize == 0){
- this.slots[3] = this.slots[3].getItem().getContainerItem(this.slots[3]);
- }
- }
- }
- if(!worldObj.isRemote){
- if(this.hasItemPower(this.slots[4]) && this.FuelCount < (this.maxFuel - this.getItemPower(this.slots[4]))){
- this.FuelCount += getItemPower(this.slots[4]);
- if(this.slots[4] != null){
- flag1 = true;
- this.slots[4].stackSize--;
- if(this.slots[4].stackSize == 0){
- this.slots[4] = this.slots[4].getItem().getContainerItem(this.slots[4]);
- }
- }
- }
- if(hasEnergy() && canSmelt()){
- cookTime++;
- if(this.cookTime == this.furnaceSpeed){
- this.cookTime = 0;
- this.smeltItem();
- flag1 = true;
- flag2 = true;
- }else{
- cookTime = 0;
- }
- if(flag != this.hasEnergy()){
- flag1 = true;
- flag2 = true;
- Infuser2.updateInfuserBlockState(this.hasEnergy(), worldObj, xCoord, yCoord, zCoord);
- }
- }
- if(flag1 && flag2){
- this.markDirty();
- }
- }
- }
- }
- public boolean canSmelt() {
- if (this.slots[0] == null) {
- return false;
- }else{
- ItemStack itemstack = InfuserRecipes.smelting().getSmeltingResult(this.slots[0]);
- if(itemstack == null) return false;
- if(this.slots[2] == null) return true;
- if(!this.slots[2].isItemEqual(itemstack)) return false;
- int result = this.slots[2].stackSize + itemstack.stackSize;
- return (result <= getInventoryStackLimit() && result <= itemstack.getMaxStackSize());
- }
- }
- public void smeltItem() {
- if(this.canSmelt()) {
- ItemStack itemstack = InfuserRecipes.smelting().getSmeltingResult(this.slots[0]);
- if(this.slots[2] == null) {
- this.slots[2] = itemstack.copy();
- }else if(this.slots[2].isItemEqual(itemstack)) {
- this.slots[2].stackSize += itemstack.stackSize;
- }
- this.slots[0].stackSize--;
- if(this.slots[0].stackSize <= 0) {
- this.slots[0] = null;
- }
- }
- }
- @Override
- public int[] getAccessibleSlotsFromSide(int var1) {
- return var1 == 0 ? slots_bottom : (var1 == 1 ? slots_top : slots_side);
- }
- @Override
- public boolean canInsertItem(int i, ItemStack itemstack, int j) {
- return this.isItemValidForSlot(i, itemstack);
- }
- @Override
- public boolean canExtractItem(int i, ItemStack itemstack, int j) {
- return j != 0 || i != 1 || itemstack.getItem() == Items.bucket;
- }
- public boolean isBurning(){
- return this.cookTime > 0;
- }
- public int getCookProgressScaled(int i) {
- return this.cookTime * i / this.furnaceSpeed;
- }
- public void readFromNBT(NBTTagCompound nbt) {
- super.readFromNBT(nbt);
- NBTTagList list = nbt.getTagList("Items", 10);
- this.slots = new ItemStack[this.getSizeInventory()];
- for(int i = 0; i < list.tagCount(); i++) {
- NBTTagCompound compound = (NBTTagCompound) list.getCompoundTagAt(i);
- byte b = compound.getByte("Slot");
- if(b >= 0 && b < this.slots.length) {
- this.slots[b] = ItemStack.loadItemStackFromNBT(compound);
- }
- }
- this.cookTime = (int)nbt.getShort("CookTime");
- this.currentItemBurnTime = (int)nbt.getShort("CurrentBurnTime");
- this.InfuciumCount = (int)nbt.getShort("InfuciumCount");
- this.FuelCount = (int)nbt.getShort("FuelCount");
- if(nbt.hasKey("CustomName")) {
- this.localizedName = nbt.getString("CustomName");
- }
- }
- public void writeToNBT(NBTTagCompound nbt) {
- super.writeToNBT(nbt);
- nbt.setShort("CookTime", (short)this.cookTime);
- nbt.setShort("CurrentBurnTime", (short)this.currentItemBurnTime);
- nbt.setShort("InfuciumCount", (short)this.InfuciumCount);
- nbt.setShort("FuelCount", (short)this.FuelCount);
- NBTTagList list = new NBTTagList();
- for (int i = 0; i < this.slots.length; i++) {
- if(this.slots[i] != null) {
- NBTTagCompound compound = new NBTTagCompound();
- compound.setByte("Slot", (byte)i);
- this.slots[i].writeToNBT(compound);
- list.appendTag(compound);
- }
- }
- nbt.setTag("Items", list);
- if (this.hasCustomInventoryName()) {
- nbt.setString("CustomName", this.localizedName);
- }
- }
- }
- ------------------------------------------------------------------------------------------------------------------------------
- package dk.MathiasVO053.RobinsamseCraft.inventory;
- import org.lwjgl.opengl.GL11;
- import dk.MathiasVO053.RobinsamseCraft.Strings;
- import dk.MathiasVO053.RobinsamseCraft.tile_entity.TileEntityInfuser2;
- import net.minecraft.client.Minecraft;
- import net.minecraft.client.gui.inventory.GuiContainer;
- import net.minecraft.client.resources.I18n;
- import net.minecraft.entity.player.InventoryPlayer;
- import net.minecraft.util.ResourceLocation;
- public class InfuserGui2 extends GuiContainer {
- public static final ResourceLocation bground = new ResourceLocation(Strings.MODID + ":" + "textures/gui/InfuserMk2Gui.png");
- public TileEntityInfuser2 Infuser;
- public InfuserGui2(InventoryPlayer inventoryPlayer, TileEntityInfuser2 entity) {
- super(new InfuserContainer2(inventoryPlayer, entity));
- this.Infuser = entity;
- this.xSize = 176;
- this.ySize = 166;
- }
- public void drawGuiContainerForegroundLayer(int par1, int par2) {
- String name = "InfuserMk2";
- this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
- this.fontRendererObj.drawString(I18n.format("container.inventory", new Object[0]), 118, this.ySize - 96 + 2, 4210752);
- }
- @Override
- protected void drawGuiContainerBackgroundLayer(float var1, int var2, int var3) {
- GL11.glColor4f(1F, 1F, 1F, 1F);
- Minecraft.getMinecraft().getTextureManager().bindTexture(bground);
- drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
- if (Infuser.hasEnergy())
- {
- int i1 = Infuser.getFuelRemainingScaled(48);
- drawTexturedModalRect(guiLeft + 10, guiTop + 62 - i1, 180, 101 - i1, 16, i1);
- }
- if (Infuser.hasInfucium())
- {
- int i2 = Infuser.getInfuciumRemainingScaled(48);
- drawTexturedModalRect(guiLeft + 150, guiTop + 62 - i2, 198, 101 - i2, 16, i2);
- }
- int k = this.Infuser.getCookProgressScaled(52);
- drawTexturedModalRect(guiLeft + 82, guiTop + 19, 176, 0, k + 1, 50);
- }
- }
- ------------------------------------------------------------------------------------------------------------------------------
- package dk.MathiasVO053.RobinsamseCraft.inventory;
- import net.minecraft.entity.player.EntityPlayer;
- import net.minecraft.entity.player.InventoryPlayer;
- import net.minecraft.inventory.Container;
- import net.minecraft.inventory.ICrafting;
- import net.minecraft.inventory.Slot;
- import net.minecraft.inventory.SlotFurnace;
- import net.minecraft.item.ItemStack;
- import cpw.mods.fml.relauncher.Side;
- import cpw.mods.fml.relauncher.SideOnly;
- import dk.MathiasVO053.RobinsamseCraft.Crafting.InfuserRecipes;
- import dk.MathiasVO053.RobinsamseCraft.tile_entity.TileEntityInfuser2;
- public class InfuserContainer2 extends Container{
- private TileEntityInfuser2 Infuser;
- public int fuelCount;
- public int infuciumCount;
- public int lastCookTime;
- public InfuserContainer2(InventoryPlayer inventory, TileEntityInfuser2 tileentity) {
- this.Infuser = tileentity;
- this.addSlotToContainer(new Slot(tileentity, 0, 66, 16)); /*input 1*/
- this.addSlotToContainer(new Slot(tileentity, 1, 66, 56)); /*input 2*/
- this.addSlotToContainer(new SlotFurnace(inventory.player, tileentity, 2, 113, 36)); /*output*/
- this.addSlotToContainer(new Slot(tileentity, 3, 150, 65)); /*infucium*/
- this.addSlotToContainer(new Slot(tileentity, 4, 10, 65)); /*fuel*/
- for(int i = 0; i < 3; i++) {
- for(int j = 0; j < 9; j++) {
- this.addSlotToContainer(new Slot(inventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));
- }
- }
- for(int i = 0; i < 9; i++) {
- this.addSlotToContainer(new Slot(inventory, i, 8 + i * 18, 142));
- }
- }
- public void addCraftingToCrafters (ICrafting icrafting) {
- super.addCraftingToCrafters(icrafting);
- icrafting.sendProgressBarUpdate(this, 1, this.Infuser.cookTime);
- icrafting.sendProgressBarUpdate(this, 2, this.Infuser.currentItemBurnTime);
- icrafting.sendProgressBarUpdate(this, 3, this.Infuser.FuelCount);
- icrafting.sendProgressBarUpdate(this, 4, this.Infuser.InfuciumCount);
- }
- public void detectAndSendChanges() {
- super.detectAndSendChanges();
- for(int i = 0; i < this.crafters.size(); i++) {
- ICrafting icrafting = (ICrafting) this.crafters.get(i);
- if(this.lastCookTime != this.Infuser.cookTime) {
- icrafting.sendProgressBarUpdate(this, 1, this.Infuser.cookTime);
- }
- if(this.fuelCount != this.Infuser.FuelCount) {
- icrafting.sendProgressBarUpdate(this, 2, this.Infuser.FuelCount);
- }
- if(this.infuciumCount != this.Infuser.InfuciumCount) {
- icrafting.sendProgressBarUpdate(this, 3, this.Infuser.InfuciumCount);
- }
- }
- this.lastCookTime = this.Infuser.cookTime;
- this.infuciumCount = this.Infuser.InfuciumCount;
- this.fuelCount = this.Infuser.FuelCount;
- }
- @SideOnly(Side.CLIENT)
- public void updateProgressBar(int i, int j){
- if(i == 1){
- Infuser.cookTime = j;
- }
- if(i == 2){
- Infuser.FuelCount = j;
- }
- if(i == 3){
- Infuser.InfuciumCount = j;
- }
- }
- public boolean canInteractWith(EntityPlayer var1) {
- return true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment