August 2, 20169 yr I did:D package com.verdure.mod.contaier; import com.verdure.mod.entity.VDEntity_raw_furnace; import com.verdure.mod.recipte.VDraw_furnace_smelting; 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.IInventory; import net.minecraft.inventory.Slot; import net.minecraft.inventory.SlotFurnaceFuel; import net.minecraft.inventory.SlotFurnaceOutput; import net.minecraft.item.ItemStack; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; public class VDContainer_raw_furance extends Container { private final IInventory tileFurnace; private int field_178152_f; private int field_178153_g; private int field_178154_h; private int field_178155_i; public VDContainer_raw_furance(InventoryPlayer playerInventory, IInventory furnaceInventory) { this.tileFurnace = furnaceInventory; this.addSlotToContainer(new Slot(furnaceInventory, 0, 56, 17)); this.addSlotToContainer(new SlotFurnaceFuel(furnaceInventory, 1, 56, 53)); this.addSlotToContainer(new SlotFurnaceOutput(playerInventory.player, furnaceInventory, 2, 116, 35)); for (int i = 0; i < 3; ++i) { for (int j = 0; j < 9; ++j) { this.addSlotToContainer(new Slot(playerInventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); } } for (int k = 0; k < 9; ++k) { this.addSlotToContainer(new Slot(playerInventory, k, 8 + k * 18, 142)); } } public void onCraftGuiOpened(ICrafting listener) { super.onCraftGuiOpened(listener); listener.sendAllWindowProperties(this, this.tileFurnace); } /** * Looks for changes made in the container, sends them to every listener. */ public void detectAndSendChanges() { super.detectAndSendChanges(); for (int i = 0; i < this.crafters.size(); ++i) { ICrafting icrafting = (ICrafting)this.crafters.get(i); if (this.field_178152_f != this.tileFurnace.getField(2)) { icrafting.sendProgressBarUpdate(this, 2, this.tileFurnace.getField(2)); } if (this.field_178154_h != this.tileFurnace.getField(0)) { icrafting.sendProgressBarUpdate(this, 0, this.tileFurnace.getField(0)); } if (this.field_178155_i != this.tileFurnace.getField(1)) { icrafting.sendProgressBarUpdate(this, 1, this.tileFurnace.getField(1)); } if (this.field_178153_g != this.tileFurnace.getField(3)) { icrafting.sendProgressBarUpdate(this, 3, this.tileFurnace.getField(3)); } } this.field_178152_f = this.tileFurnace.getField(2); this.field_178154_h = this.tileFurnace.getField(0); this.field_178155_i = this.tileFurnace.getField(1); this.field_178153_g = this.tileFurnace.getField(3); } @SideOnly(Side.CLIENT) public void updateProgressBar(int id, int data) { this.tileFurnace.setField(id, data); } public boolean canInteractWith(EntityPlayer playerIn) { return this.tileFurnace.isUseableByPlayer(playerIn); } /** * Take a stack from the specified inventory slot. */ public ItemStack transferStackInSlot(EntityPlayer playerIn, int index) { ItemStack itemstack = null; Slot slot = (Slot)this.inventorySlots.get(index); if (slot != null && slot.getHasStack()) { ItemStack itemstack1 = slot.getStack(); itemstack = itemstack1.copy(); if (index == 2) { if (!this.mergeItemStack(itemstack1, 3, 39, true)) { return null; } slot.onSlotChange(itemstack1, itemstack); } else if (index != 1 && index != 0) { if (VDraw_furnace_smelting.instance().getSmeltingResult(itemstack1) != null) { if (!this.mergeItemStack(itemstack1, 0, 1, false)) { return null; } } else if (VDEntity_raw_furnace.isItemFuel(itemstack1)) { if (!this.mergeItemStack(itemstack1, 1, 2, false)) { return null; } } else if (index >= 3 && index < 30) { if (!this.mergeItemStack(itemstack1, 30, 39, false)) { return null; } } else if (index >= 30 && index < 39 && !this.mergeItemStack(itemstack1, 3, 30, false)) { return null; } } else if (!this.mergeItemStack(itemstack1, 3, 39, false)) { return null; } if (itemstack1.stackSize == 0) { slot.putStack((ItemStack)null); } else { slot.onSlotChanged(); } if (itemstack1.stackSize == itemstack.stackSize) { return null; } slot.onPickupFromSlot(playerIn, itemstack1); } return itemstack; } } package com.verdure.mod.gui; import com.verdure.mod.contaier.VDContainer_raw_furance; import com.verdure.mod.entity.VDEntity_raw_furnace; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class VDGui_raw_furnace extends GuiContainer { private static final ResourceLocation furnaceGuiTextures = new ResourceLocation("textures/gui/container/furnace.png"); /** The player inventory bound to this GUI. */ private final InventoryPlayer playerInventory; private IInventory tileFurnace; public VDGui_raw_furnace(InventoryPlayer playerInv, IInventory furnaceInv) { super(new VDContainer_raw_furance(playerInv, furnaceInv)); this.playerInventory = playerInv; this.tileFurnace = furnaceInv; } /** * Draw the foreground layer for the GuiContainer (everything in front of the items). Args : mouseX, mouseY */ protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { String s = this.tileFurnace.getDisplayName().getUnformattedText(); this.fontRendererObj.drawString(s, this.xSize / 2 - this.fontRendererObj.getStringWidth(s) / 2, 6, 4210752); this.fontRendererObj.drawString(this.playerInventory.getDisplayName().getUnformattedText(), 8, this.ySize - 96 + 2, 4210752); } /** * Args : renderPartialTicks, mouseX, mouseY */ protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) { GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); this.mc.getTextureManager().bindTexture(furnaceGuiTextures); int i = (this.width - this.xSize) / 2; int j = (this.height - this.ySize) / 2; this.drawTexturedModalRect(i, j, 0, 0, this.xSize, this.ySize); if ( VDEntity_raw_furnace.isBurning(this.tileFurnace)) { int k = this.getBurnLeftScaled(13); this.drawTexturedModalRect(i + 56, j + 36 + 12 - k, 176, 12 - k, 14, k + 1); } int l = this.getCookProgressScaled(24); this.drawTexturedModalRect(i + 79, j + 34, 176, 14, l + 1, 16); } private int getCookProgressScaled(int pixels) { int i = this.tileFurnace.getField(2); int j = this.tileFurnace.getField(3); return j != 0 && i != 0 ? i * pixels / j : 0; } private int getBurnLeftScaled(int pixels) { int i = this.tileFurnace.getField(1); if (i == 0) { i = 200; } return this.tileFurnace.getField(0) * pixels / i; } }
August 2, 20169 yr Well since you copied them...I doubt you know what they do.... But now you need to make new Slot classes one for Output and one for FuelInput unless you are using the Normal Furnaces Fuel. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
August 3, 20169 yr some on methods i understand but no all because i started to learn java some days ago. I just want to use my ricepts not fuel just my ricepts!
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.