Jump to content

avaikulis

Members
  • Posts

    7
  • Joined

  • Last visited

Everything posted by avaikulis

  1. on line return new com.allans.Gui.inventory.GuiContainer(new com.allans.Gui.CustContainerWorkBench(new InventoryPlayer(player),world,x,y,z)); it shows an error in my gui handler i am trying to make guihandler show a gui that will open my customworkbench and for that i used original minecraft files can you please say to me how i can fix error :Cannot instantiate the type GuiContainer Here my full guihandler package com.allans.Gui; import com.allans.Gui.inventory.GuiContainer; import com.typesafe.config.Config; import cpw.mods.fml.common.network.IGuiHandler; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; public class GuiHandler implements IGuiHandler { @Override public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { // TODO Auto-generated method stub return null; } @Override public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z){ if (ID == GuiContainer.GUI_ID){ return new com.allans.Gui.inventory.GuiContainer(new com.allans.Gui.CustContainerWorkBench(new InventoryPlayer(player),world,x,y,z)); return null; } } } 0
  2. I am trying to create custom workbench using minecraft source classes but i dont understand either it my code failing at guiHandler or I am doing something wrong , can someone check whats wrong and tell me so i know how to fix it as i am trying to do custom WorkBench for 2 days. All_Mod_Block import com.allans.lib.RefStrings; import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.util.IIcon; public class All_Mod_Blocks { public static void mainRegistry(){ IntItem(); registerItem(); } public static Block ReCraftingTableDef; //Defines Re Crafting Table Continues In ReCraftingTable public IIcon[] icons = new IIcon[6]; public static void IntItem(){ ReCraftingTableDef = new ReCraftingTableDef(); } public static void registerItem(){ GameRegistry.registerBlock(ReCraftingTableDef, ReCraftingTableDef.getUnlocalizedName()); } } ReCraftingTableDef.class package com.allans.Blocks; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.util.IIcon; import net.minecraft.world.World; public class ReCraftingTableDef extends Block { @SideOnly(Side.CLIENT) private IIcon field_150035_a; @SideOnly(Side.CLIENT) private IIcon field_150034_b; private static final String __OBFID = "CL_00000221"; protected ReCraftingTableDef() { super(Material.iron); this.setCreativeTab(CreativeTabs.tabBlock); setBlockName("ReCraftingTableDef"); } /** * Gets the block's texture. Args: side, meta */ @SideOnly(Side.CLIENT) public IIcon getIcon(int p_149691_1_, int p_149691_2_) { return p_149691_1_ == 1 ? this.field_150035_a : (p_149691_1_ == 0 ? Blocks.planks.getBlockTextureFromSide(p_149691_1_) : (p_149691_1_ != 2 && p_149691_1_ != 4 ? this.blockIcon : this.field_150034_b)); } @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister p_149651_1_) { this.blockIcon = p_149651_1_.registerIcon(this.getTextureName() + "_side"); this.field_150035_a = p_149651_1_.registerIcon(this.getTextureName() + "_top"); this.field_150034_b = p_149651_1_.registerIcon(this.getTextureName() + "_front"); } /** * Called upon block activation (right click on the block.) */ public boolean onBlockActivated(World world, int var1, int var2, int var3, EntityPlayer player, int var4, float var5, float var6, float var7) { if (world.isRemote) { return true; } else { player.displayGUIWorkbench(var1, var2, var3); return true; } } } CustContainerWorkBench package com.allans.Gui; import com.allans.Blocks.All_Mod_Blocks; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.InventoryCraftResult; import net.minecraft.inventory.Slot; import net.minecraft.inventory.SlotCrafting; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.CraftingManager; import net.minecraft.world.World; public class CustContainerWorkBench extends Container { /** The crafting matrix inventory (3x3). */ public net.minecraft.inventory.InventoryCrafting craftMatrix = new net.minecraft.inventory.InventoryCrafting(this, 3, 3); public IInventory craftResult = new InventoryCraftResult(); private World worldObj; private int posX; private int posY; private int posZ; private static final String __OBFID = "CL_00001744"; public CustContainerWorkBench(InventoryPlayer p_i1808_1_, World p_i1808_2_, int p_i1808_3_, int p_i1808_4_, int p_i1808_5_) { this.worldObj = p_i1808_2_; this.posX = p_i1808_3_; this.posY = p_i1808_4_; this.posZ = p_i1808_5_; this.addSlotToContainer(new SlotCrafting(p_i1808_1_.player, this.craftMatrix, this.craftResult, 0, 124, 35)); int l; int i1; for (l = 0; l < 3; ++l) { for (i1 = 0; i1 < 3; ++i1) { this.addSlotToContainer(new Slot(this.craftMatrix, i1 + l * 3, 30 + i1 * 18, 17 + l * 18)); } } for (l = 0; l < 3; ++l) { for (i1 = 0; i1 < 9; ++i1) { this.addSlotToContainer(new Slot(p_i1808_1_, i1 + l * 9 + 9, 8 + i1 * 18, 84 + l * 18)); } } for (l = 0; l < 9; ++l) { this.addSlotToContainer(new Slot(p_i1808_1_, l, 8 + l * 18, 142)); } this.onCraftMatrixChanged(this.craftMatrix); } /** * Callback for when the crafting matrix is changed. */ public void onCraftMatrixChanged(IInventory p_75130_1_) { this.craftResult.setInventorySlotContents(0, com.allans.lib.ReCustCraftingManager.getInstance().findMatchingRecipe(this.craftMatrix, this.worldObj)); } /** * Called when the container is closed. */ public void onContainerClosed(EntityPlayer p_75134_1_) { super.onContainerClosed(p_75134_1_); if (!this.worldObj.isRemote) { for (int i = 0; i < 9; ++i) { ItemStack itemstack = this.craftMatrix.getStackInSlotOnClosing(i); if (itemstack != null) { p_75134_1_.dropPlayerItemWithRandomChoice(itemstack, false); } } } } public boolean canInteractWith(EntityPlayer p_75145_1_) { return this.worldObj.getBlock(this.posX, this.posY, this.posZ) != All_Mod_Blocks.ReCraftingTableDef ? false : p_75145_1_.getDistanceSq((double) this.posX + 0.5D, (double) this.posY + 0.5D, (double) this.posZ + 0.5D) <= 64.0D; } /** * Called when a player shift-clicks on a slot. You must override this or * you will crash when someone does that. */ public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int p_82846_2_) { ItemStack itemstack = null; Slot slot = (Slot) this.inventorySlots.get(p_82846_2_); if (slot != null && slot.getHasStack()) { ItemStack itemstack1 = slot.getStack(); itemstack = itemstack1.copy(); if (p_82846_2_ == 0) { if (!this.mergeItemStack(itemstack1, 10, 46, true)) { return null; } slot.onSlotChange(itemstack1, itemstack); } else if (p_82846_2_ >= 10 && p_82846_2_ < 37) { if (!this.mergeItemStack(itemstack1, 37, 46, false)) { return null; } } else if (p_82846_2_ >= 37 && p_82846_2_ < 46) { if (!this.mergeItemStack(itemstack1, 10, 37, false)) { return null; } } else if (!this.mergeItemStack(itemstack1, 10, 46, false)) { return null; } if (itemstack1.stackSize == 0) { slot.putStack((ItemStack) null); } else { slot.onSlotChanged(); } if (itemstack1.stackSize == itemstack.stackSize) { return null; } slot.onPickupFromSlot(p_82846_1_, itemstack1); } return itemstack; } public boolean func_94530_a(ItemStack p_94530_1_, Slot p_94530_2_) { return p_94530_2_.inventory != this.craftResult && super.func_94530_a(p_94530_1_, p_94530_2_); } } GuiHandler package com.allans.Gui; import com.allans.Gui.inventory.GuiContainer; import com.typesafe.config.Config; import cpw.mods.fml.common.network.IGuiHandler; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; public class GuiHandler implements IGuiHandler { @Override public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { // TODO Auto-generated method stub return null; } @Override public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { if (ID == com.allans.Gui.inventory.GuiContainer.GUI_ID) { System.out.print("create gui.\n"); return new Gui(); } return null; } } ReTableCraftingGui package com.allans.Gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.ContainerWorkbench; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import java.awt.Container; import org.lwjgl.opengl.GL11; import com.allans.Gui.inventory.GuiContainer; @SideOnly(Side.CLIENT) public class ReTableCraftingGui extends GuiContainer { private static final ResourceLocation craftingTableGuiTextures = new ResourceLocation("textures/gui/container/crafting_table.png"); private static final String __OBFID = "CL_00000750"; public ReTableCraftingGui(InventoryPlayer p_i1084_1_, World p_i1084_2_, int p_i1084_3_, int p_i1084_4_, int p_i1084_5_) { super(new CustContainerWorkBench(p_i1084_1_, p_i1084_2_, p_i1084_3_, p_i1084_4_, p_i1084_5_)); } /** * Draw the foreground layer for the GuiContainer (everything in front of the items) */ protected void drawGuiContainerForegroundLayer(int p_146979_1_, int p_146979_2_) { this.fontRendererObj.drawString(I18n.format("container.crafting", new Object[0]), 28, 6, 4210752); this.fontRendererObj.drawString(I18n.format("container.inventory", new Object[0]), 8, this.ySize - 96 + 2, 4210752); } protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); this.mc.getTextureManager().bindTexture(craftingTableGuiTextures); int k = (this.width - this.xSize) / 2; int l = (this.height - this.ySize) / 2; this.drawTexturedModalRect(k, l, 0, 0, this.xSize, this.ySize); } } GuiContainer package com.allans.Gui.inventory; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; @SideOnly(Side.CLIENT) public abstract class GuiContainer extends GuiScreen { protected static final ResourceLocation field_147001_a = new ResourceLocation("textures/gui/container/inventory.png"); /** The X size of the inventory window in pixels. */ protected int xSize = 176; /** The Y size of the inventory window in pixels. */ protected int ySize = 166; /** A list of the players inventory slots */ public Container inventorySlots; /** Starting X position for the Gui. Inconsistent use for Gui backgrounds. */ protected int guiLeft; /** Starting Y position for the Gui. Inconsistent use for Gui backgrounds. */ protected int guiTop; private Slot theSlot; /** Used when touchscreen is enabled. */ private Slot clickedSlot; /** Used when touchscreen is enabled. */ private boolean isRightMouseClick; /** Used when touchscreen is enabled */ private ItemStack draggedStack; private int field_147011_y; private int field_147010_z; private Slot returningStackDestSlot; private long returningStackTime; /** Used when touchscreen is enabled */ private ItemStack returningStack; private Slot field_146985_D; private long field_146986_E; protected final Set field_147008_s = new HashSet(); protected boolean field_147007_t; private int field_146987_F; private int field_146988_G; private boolean field_146995_H; private int field_146996_I; private long field_146997_J; private Slot field_146998_K; private int field_146992_L; private boolean field_146993_M; private ItemStack field_146994_N; private static final String __OBFID = "CL_00000737"; public GuiContainer(Container p_i1072_1_) { this.inventorySlots = p_i1072_1_; this.field_146995_H = true; } /** * Adds the buttons (and other controls) to the screen in question. */ public void initGui() { super.initGui(); this.mc.thePlayer.openContainer = this.inventorySlots; this.guiLeft = (this.width - this.xSize) / 2; this.guiTop = (this.height - this.ySize) / 2; } /** * Draws the screen and all the components in it. */ public void drawScreen(int p_73863_1_, int p_73863_2_, float p_73863_3_) { this.drawDefaultBackground(); int k = this.guiLeft; int l = this.guiTop; this.drawGuiContainerBackgroundLayer(p_73863_3_, p_73863_1_, p_73863_2_); GL11.glDisable(GL12.GL_RESCALE_NORMAL); RenderHelper.disableStandardItemLighting(); GL11.glDisable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_DEPTH_TEST); super.drawScreen(p_73863_1_, p_73863_2_, p_73863_3_); RenderHelper.enableGUIStandardItemLighting(); GL11.glPushMatrix(); GL11.glTranslatef((float)k, (float)l, 0.0F); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glEnable(GL12.GL_RESCALE_NORMAL); this.theSlot = null; short short1 = 240; short short2 = 240; OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)short1 / 1.0F, (float)short2 / 1.0F); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); int k1; for (int i1 = 0; i1 < this.inventorySlots.inventorySlots.size(); ++i1) { Slot slot = (Slot)this.inventorySlots.inventorySlots.get(i1); this.func_146977_a(slot); if (this.isMouseOverSlot(slot, p_73863_1_, p_73863_2_) && slot.func_111238_b()) { this.theSlot = slot; GL11.glDisable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_DEPTH_TEST); int j1 = slot.xDisplayPosition; k1 = slot.yDisplayPosition; GL11.glColorMask(true, true, true, false); this.drawGradientRect(j1, k1, j1 + 16, k1 + 16, -2130706433, -2130706433); GL11.glColorMask(true, true, true, true); GL11.glEnable(GL11.GL_LIGHTING); GL11.glEnable(GL11.GL_DEPTH_TEST); } } //Forge: Force lighting to be disabled as there are some issue where lighting would //incorrectly be applied based on items that are in the inventory. GL11.glDisable(GL11.GL_LIGHTING); this.drawGuiContainerForegroundLayer(p_73863_1_, p_73863_2_); GL11.glEnable(GL11.GL_LIGHTING); InventoryPlayer inventoryplayer = this.mc.thePlayer.inventory; ItemStack itemstack = this.draggedStack == null ? inventoryplayer.getItemStack() : this.draggedStack; if (itemstack != null) { byte b0 = 8; k1 = this.draggedStack == null ? 8 : 16; String s = null; if (this.draggedStack != null && this.isRightMouseClick) { itemstack = itemstack.copy(); itemstack.stackSize = MathHelper.ceiling_float_int((float)itemstack.stackSize / 2.0F); } else if (this.field_147007_t && this.field_147008_s.size() > 1) { itemstack = itemstack.copy(); itemstack.stackSize = this.field_146996_I; if (itemstack.stackSize == 0) { s = "" + EnumChatFormatting.YELLOW + "0"; } } this.drawItemStack(itemstack, p_73863_1_ - k - b0, p_73863_2_ - l - k1, s); } if (this.returningStack != null) { float f1 = (float)(Minecraft.getSystemTime() - this.returningStackTime) / 100.0F; if (f1 >= 1.0F) { f1 = 1.0F; this.returningStack = null; } k1 = this.returningStackDestSlot.xDisplayPosition - this.field_147011_y; int j2 = this.returningStackDestSlot.yDisplayPosition - this.field_147010_z; int l1 = this.field_147011_y + (int)((float)k1 * f1); int i2 = this.field_147010_z + (int)((float)j2 * f1); this.drawItemStack(this.returningStack, l1, i2, (String)null); } GL11.glPopMatrix(); if (inventoryplayer.getItemStack() == null && this.theSlot != null && this.theSlot.getHasStack()) { ItemStack itemstack1 = this.theSlot.getStack(); this.renderToolTip(itemstack1, p_73863_1_, p_73863_2_); } GL11.glEnable(GL11.GL_LIGHTING); GL11.glEnable(GL11.GL_DEPTH_TEST); RenderHelper.enableStandardItemLighting(); } private void drawItemStack(ItemStack p_146982_1_, int p_146982_2_, int p_146982_3_, String p_146982_4_) { GL11.glTranslatef(0.0F, 0.0F, 32.0F); this.zLevel = 200.0F; itemRender.zLevel = 200.0F; FontRenderer font = null; if (p_146982_1_ != null) font = p_146982_1_.getItem().getFontRenderer(p_146982_1_); if (font == null) font = fontRendererObj; itemRender.renderItemAndEffectIntoGUI(font, this.mc.getTextureManager(), p_146982_1_, p_146982_2_, p_146982_3_); itemRender.renderItemOverlayIntoGUI(font, this.mc.getTextureManager(), p_146982_1_, p_146982_2_, p_146982_3_ - (this.draggedStack == null ? 0 : , p_146982_4_); this.zLevel = 0.0F; itemRender.zLevel = 0.0F; } /** * Draw the foreground layer for the GuiContainer (everything in front of the items) */ protected void drawGuiContainerForegroundLayer(int p_146979_1_, int p_146979_2_) {} protected abstract void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_); private void func_146977_a(Slot p_146977_1_) { int i = p_146977_1_.xDisplayPosition; int j = p_146977_1_.yDisplayPosition; ItemStack itemstack = p_146977_1_.getStack(); boolean flag = false; boolean flag1 = p_146977_1_ == this.clickedSlot && this.draggedStack != null && !this.isRightMouseClick; ItemStack itemstack1 = this.mc.thePlayer.inventory.getItemStack(); String s = null; if (p_146977_1_ == this.clickedSlot && this.draggedStack != null && this.isRightMouseClick && itemstack != null) { itemstack = itemstack.copy(); itemstack.stackSize /= 2; } else if (this.field_147007_t && this.field_147008_s.contains(p_146977_1_) && itemstack1 != null) { if (this.field_147008_s.size() == 1) { return; } if (Container.func_94527_a(p_146977_1_, itemstack1, true) && this.inventorySlots.canDragIntoSlot(p_146977_1_)) { itemstack = itemstack1.copy(); flag = true; Container.func_94525_a(this.field_147008_s, this.field_146987_F, itemstack, p_146977_1_.getStack() == null ? 0 : p_146977_1_.getStack().stackSize); if (itemstack.stackSize > itemstack.getMaxStackSize()) { s = EnumChatFormatting.YELLOW + "" + itemstack.getMaxStackSize(); itemstack.stackSize = itemstack.getMaxStackSize(); } if (itemstack.stackSize > p_146977_1_.getSlotStackLimit()) { s = EnumChatFormatting.YELLOW + "" + p_146977_1_.getSlotStackLimit(); itemstack.stackSize = p_146977_1_.getSlotStackLimit(); } } else { this.field_147008_s.remove(p_146977_1_); this.func_146980_g(); } } this.zLevel = 100.0F; itemRender.zLevel = 100.0F; if (itemstack == null) { IIcon iicon = p_146977_1_.getBackgroundIconIndex(); if (iicon != null) { GL11.glDisable(GL11.GL_LIGHTING); GL11.glEnable(GL11.GL_BLEND); // Forge: Blending needs to be enabled for this. this.mc.getTextureManager().bindTexture(TextureMap.locationItemsTexture); this.drawTexturedModelRectFromIcon(i, j, iicon, 16, 16); GL11.glDisable(GL11.GL_BLEND); // Forge: And clean that up GL11.glEnable(GL11.GL_LIGHTING); flag1 = true; } } if (!flag1) { if (flag) { drawRect(i, j, i + 16, j + 16, -2130706433); } GL11.glEnable(GL11.GL_DEPTH_TEST); itemRender.renderItemAndEffectIntoGUI(this.fontRendererObj, this.mc.getTextureManager(), itemstack, i, j); itemRender.renderItemOverlayIntoGUI(this.fontRendererObj, this.mc.getTextureManager(), itemstack, i, j, s); } itemRender.zLevel = 0.0F; this.zLevel = 0.0F; } private void func_146980_g() { ItemStack itemstack = this.mc.thePlayer.inventory.getItemStack(); if (itemstack != null && this.field_147007_t) { this.field_146996_I = itemstack.stackSize; ItemStack itemstack1; int i; for (Iterator iterator = this.field_147008_s.iterator(); iterator.hasNext(); this.field_146996_I -= itemstack1.stackSize - i) { Slot slot = (Slot)iterator.next(); itemstack1 = itemstack.copy(); i = slot.getStack() == null ? 0 : slot.getStack().stackSize; Container.func_94525_a(this.field_147008_s, this.field_146987_F, itemstack1, i); if (itemstack1.stackSize > itemstack1.getMaxStackSize()) { itemstack1.stackSize = itemstack1.getMaxStackSize(); } if (itemstack1.stackSize > slot.getSlotStackLimit()) { itemstack1.stackSize = slot.getSlotStackLimit(); } } } } /** * Returns the slot at the given coordinates or null if there is none. */ private Slot getSlotAtPosition(int p_146975_1_, int p_146975_2_) { for (int k = 0; k < this.inventorySlots.inventorySlots.size(); ++k) { Slot slot = (Slot)this.inventorySlots.inventorySlots.get(k); if (this.isMouseOverSlot(slot, p_146975_1_, p_146975_2_)) { return slot; } } return null; } /** * Called when the mouse is clicked. */ protected void mouseClicked(int p_73864_1_, int p_73864_2_, int p_73864_3_) { super.mouseClicked(p_73864_1_, p_73864_2_, p_73864_3_); boolean flag = p_73864_3_ == this.mc.gameSettings.keyBindPickBlock.getKeyCode() + 100; Slot slot = this.getSlotAtPosition(p_73864_1_, p_73864_2_); long l = Minecraft.getSystemTime(); this.field_146993_M = this.field_146998_K == slot && l - this.field_146997_J < 250L && this.field_146992_L == p_73864_3_; this.field_146995_H = false; if (p_73864_3_ == 0 || p_73864_3_ == 1 || flag) { int i1 = this.guiLeft; int j1 = this.guiTop; boolean flag1 = p_73864_1_ < i1 || p_73864_2_ < j1 || p_73864_1_ >= i1 + this.xSize || p_73864_2_ >= j1 + this.ySize; int k1 = -1; if (slot != null) { k1 = slot.slotNumber; } if (flag1) { k1 = -999; } if (this.mc.gameSettings.touchscreen && flag1 && this.mc.thePlayer.inventory.getItemStack() == null) { this.mc.displayGuiScreen((GuiScreen)null); return; } if (k1 != -1) { if (this.mc.gameSettings.touchscreen) { if (slot != null && slot.getHasStack()) { this.clickedSlot = slot; this.draggedStack = null; this.isRightMouseClick = p_73864_3_ == 1; } else { this.clickedSlot = null; } } else if (!this.field_147007_t) { if (this.mc.thePlayer.inventory.getItemStack() == null) { if (p_73864_3_ == this.mc.gameSettings.keyBindPickBlock.getKeyCode() + 100) { this.handleMouseClick(slot, k1, p_73864_3_, 3); } else { boolean flag2 = k1 != -999 && (Keyboard.isKeyDown(42) || Keyboard.isKeyDown(54)); byte b0 = 0; if (flag2) { this.field_146994_N = slot != null && slot.getHasStack() ? slot.getStack() : null; b0 = 1; } else if (k1 == -999) { b0 = 4; } this.handleMouseClick(slot, k1, p_73864_3_, b0); } this.field_146995_H = true; } else { this.field_147007_t = true; this.field_146988_G = p_73864_3_; this.field_147008_s.clear(); if (p_73864_3_ == 0) { this.field_146987_F = 0; } else if (p_73864_3_ == 1) { this.field_146987_F = 1; } } } } } this.field_146998_K = slot; this.field_146997_J = l; this.field_146992_L = p_73864_3_; } /** * Called when a mouse button is pressed and the mouse is moved around. Parameters are : mouseX, mouseY, * lastButtonClicked & timeSinceMouseClick. */ protected void mouseClickMove(int p_146273_1_, int p_146273_2_, int p_146273_3_, long p_146273_4_) { Slot slot = this.getSlotAtPosition(p_146273_1_, p_146273_2_); ItemStack itemstack = this.mc.thePlayer.inventory.getItemStack(); if (this.clickedSlot != null && this.mc.gameSettings.touchscreen) { if (p_146273_3_ == 0 || p_146273_3_ == 1) { if (this.draggedStack == null) { if (slot != this.clickedSlot) { this.draggedStack = this.clickedSlot.getStack().copy(); } } else if (this.draggedStack.stackSize > 1 && slot != null && Container.func_94527_a(slot, this.draggedStack, false)) { long i1 = Minecraft.getSystemTime(); if (this.field_146985_D == slot) { if (i1 - this.field_146986_E > 500L) { this.handleMouseClick(this.clickedSlot, this.clickedSlot.slotNumber, 0, 0); this.handleMouseClick(slot, slot.slotNumber, 1, 0); this.handleMouseClick(this.clickedSlot, this.clickedSlot.slotNumber, 0, 0); this.field_146986_E = i1 + 750L; --this.draggedStack.stackSize; } } else { this.field_146985_D = slot; this.field_146986_E = i1; } } } } else if (this.field_147007_t && slot != null && itemstack != null && itemstack.stackSize > this.field_147008_s.size() && Container.func_94527_a(slot, itemstack, true) && slot.isItemValid(itemstack) && this.inventorySlots.canDragIntoSlot(slot)) { this.field_147008_s.add(slot); this.func_146980_g(); } } /** * Called when the mouse is moved or a mouse button is released. Signature: (mouseX, mouseY, which) which==-1 is * mouseMove, which==0 or which==1 is mouseUp */ protected void mouseMovedOrUp(int p_146286_1_, int p_146286_2_, int p_146286_3_) { super.mouseMovedOrUp(p_146286_1_, p_146286_2_, p_146286_3_); //Forge, Call parent to release buttons Slot slot = this.getSlotAtPosition(p_146286_1_, p_146286_2_); int l = this.guiLeft; int i1 = this.guiTop; boolean flag = p_146286_1_ < l || p_146286_2_ < i1 || p_146286_1_ >= l + this.xSize || p_146286_2_ >= i1 + this.ySize; int j1 = -1; if (slot != null) { j1 = slot.slotNumber; } if (flag) { j1 = -999; } Slot slot1; Iterator iterator; if (this.field_146993_M && slot != null && p_146286_3_ == 0 && this.inventorySlots.func_94530_a((ItemStack)null, slot)) { if (isShiftKeyDown()) { if (slot != null && slot.inventory != null && this.field_146994_N != null) { iterator = this.inventorySlots.inventorySlots.iterator(); while (iterator.hasNext()) { slot1 = (Slot)iterator.next(); if (slot1 != null && slot1.canTakeStack(this.mc.thePlayer) && slot1.getHasStack() && slot1.inventory == slot.inventory && Container.func_94527_a(slot1, this.field_146994_N, true)) { this.handleMouseClick(slot1, slot1.slotNumber, p_146286_3_, 1); } } } } else { this.handleMouseClick(slot, j1, p_146286_3_, 6); } this.field_146993_M = false; this.field_146997_J = 0L; } else { if (this.field_147007_t && this.field_146988_G != p_146286_3_) { this.field_147007_t = false; this.field_147008_s.clear(); this.field_146995_H = true; return; } if (this.field_146995_H) { this.field_146995_H = false; return; } boolean flag1; if (this.clickedSlot != null && this.mc.gameSettings.touchscreen) { if (p_146286_3_ == 0 || p_146286_3_ == 1) { if (this.draggedStack == null && slot != this.clickedSlot) { this.draggedStack = this.clickedSlot.getStack(); } flag1 = Container.func_94527_a(slot, this.draggedStack, false); if (j1 != -1 && this.draggedStack != null && flag1) { this.handleMouseClick(this.clickedSlot, this.clickedSlot.slotNumber, p_146286_3_, 0); this.handleMouseClick(slot, j1, 0, 0); if (this.mc.thePlayer.inventory.getItemStack() != null) { this.handleMouseClick(this.clickedSlot, this.clickedSlot.slotNumber, p_146286_3_, 0); this.field_147011_y = p_146286_1_ - l; this.field_147010_z = p_146286_2_ - i1; this.returningStackDestSlot = this.clickedSlot; this.returningStack = this.draggedStack; this.returningStackTime = Minecraft.getSystemTime(); } else { this.returningStack = null; } } else if (this.draggedStack != null) { this.field_147011_y = p_146286_1_ - l; this.field_147010_z = p_146286_2_ - i1; this.returningStackDestSlot = this.clickedSlot; this.returningStack = this.draggedStack; this.returningStackTime = Minecraft.getSystemTime(); } this.draggedStack = null; this.clickedSlot = null; } } else if (this.field_147007_t && !this.field_147008_s.isEmpty()) { this.handleMouseClick((Slot)null, -999, Container.func_94534_d(0, this.field_146987_F), 5); iterator = this.field_147008_s.iterator(); while (iterator.hasNext()) { slot1 = (Slot)iterator.next(); this.handleMouseClick(slot1, slot1.slotNumber, Container.func_94534_d(1, this.field_146987_F), 5); } this.handleMouseClick((Slot)null, -999, Container.func_94534_d(2, this.field_146987_F), 5); } else if (this.mc.thePlayer.inventory.getItemStack() != null) { if (p_146286_3_ == this.mc.gameSettings.keyBindPickBlock.getKeyCode() + 100) { this.handleMouseClick(slot, j1, p_146286_3_, 3); } else { flag1 = j1 != -999 && (Keyboard.isKeyDown(42) || Keyboard.isKeyDown(54)); if (flag1) { this.field_146994_N = slot != null && slot.getHasStack() ? slot.getStack() : null; } this.handleMouseClick(slot, j1, p_146286_3_, flag1 ? 1 : 0); } } } if (this.mc.thePlayer.inventory.getItemStack() == null) { this.field_146997_J = 0L; } this.field_147007_t = false; } /** * Returns if the passed mouse position is over the specified slot. */ private boolean isMouseOverSlot(Slot p_146981_1_, int p_146981_2_, int p_146981_3_) { return this.func_146978_c(p_146981_1_.xDisplayPosition, p_146981_1_.yDisplayPosition, 16, 16, p_146981_2_, p_146981_3_); } protected boolean func_146978_c(int p_146978_1_, int p_146978_2_, int p_146978_3_, int p_146978_4_, int p_146978_5_, int p_146978_6_) { int k1 = this.guiLeft; int l1 = this.guiTop; p_146978_5_ -= k1; p_146978_6_ -= l1; return p_146978_5_ >= p_146978_1_ - 1 && p_146978_5_ < p_146978_1_ + p_146978_3_ + 1 && p_146978_6_ >= p_146978_2_ - 1 && p_146978_6_ < p_146978_2_ + p_146978_4_ + 1; } protected void handleMouseClick(Slot p_146984_1_, int p_146984_2_, int p_146984_3_, int p_146984_4_) { if (p_146984_1_ != null) { p_146984_2_ = p_146984_1_.slotNumber; } this.mc.playerController.windowClick(this.inventorySlots.windowId, p_146984_2_, p_146984_3_, p_146984_4_, this.mc.thePlayer); } /** * Fired when a key is typed. This is the equivalent of KeyListener.keyTyped(KeyEvent e). */ protected void keyTyped(char p_73869_1_, int p_73869_2_) { if (p_73869_2_ == 1 || p_73869_2_ == this.mc.gameSettings.keyBindInventory.getKeyCode()) { this.mc.thePlayer.closeScreen(); } this.checkHotbarKeys(p_73869_2_); if (this.theSlot != null && this.theSlot.getHasStack()) { if (p_73869_2_ == this.mc.gameSettings.keyBindPickBlock.getKeyCode()) { this.handleMouseClick(this.theSlot, this.theSlot.slotNumber, 0, 3); } else if (p_73869_2_ == this.mc.gameSettings.keyBindDrop.getKeyCode()) { this.handleMouseClick(this.theSlot, this.theSlot.slotNumber, isCtrlKeyDown() ? 1 : 0, 4); } } } /** * This function is what controls the hotbar shortcut check when you press a number key when hovering a stack. */ protected boolean checkHotbarKeys(int p_146983_1_) { if (this.mc.thePlayer.inventory.getItemStack() == null && this.theSlot != null) { for (int j = 0; j < 9; ++j) { if (p_146983_1_ == this.mc.gameSettings.keyBindsHotbar[j].getKeyCode()) { this.handleMouseClick(this.theSlot, this.theSlot.slotNumber, j, 2); return true; } } } return false; } /** * Called when the screen is unloaded. Used to disable keyboard repeat events */ public void onGuiClosed() { if (this.mc.thePlayer != null) { this.inventorySlots.onContainerClosed(this.mc.thePlayer); } } /** * Returns true if this GUI should pause the game when it is displayed in single-player */ public boolean doesGuiPauseGame() { return false; } /** * Called from the main game loop to update the screen. */ public void updateScreen() { super.updateScreen(); if (!this.mc.thePlayer.isEntityAlive() || this.mc.thePlayer.isDead) { this.mc.thePlayer.closeScreen(); } } } ReCustCraftingManager package com.allans.lib; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; import net.minecraft.inventory.InventoryCrafting; import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; import net.minecraft.item.crafting.ShapedRecipes; import net.minecraft.item.crafting.ShapelessRecipes; import net.minecraft.world.World; public class ReCustCraftingManager { /** The static instance of this class */ private static final ReCustCraftingManager instance = new ReCustCraftingManager(); /** A list of all the recipes added */ private List recipes = new ArrayList(); private static final String __OBFID = "CL_00000090"; /**` * Returns the static instance of this class */ public static final ReCustCraftingManager getInstance() { /** The static instance of this class */ return instance; } private ReCustCraftingManager() { this.addRecipe(new ItemStack(Blocks.hopper), new Object[] {"I I", "ICI", " I ", 'I', Items.iron_ingot, 'C', Blocks.chest}); Collections.sort(this.recipes, new Comparator() { private static final String __OBFID = "CL_00000091"; public int compare(IRecipe p_compare_1_, IRecipe p_compare_2_) { return p_compare_1_ instanceof ShapelessRecipes && p_compare_2_ instanceof ShapedRecipes ? 1 : (p_compare_2_ instanceof ShapelessRecipes && p_compare_1_ instanceof ShapedRecipes ? -1 : (p_compare_2_.getRecipeSize() < p_compare_1_.getRecipeSize() ? -1 : (p_compare_2_.getRecipeSize() > p_compare_1_.getRecipeSize() ? 1 : 0))); } public int compare(Object p_compare_1_, Object p_compare_2_) { return this.compare((IRecipe)p_compare_1_, (IRecipe)p_compare_2_); } }); } public ShapedRecipes addRecipe(ItemStack p_92103_1_, Object ... p_92103_2_) { String s = ""; int i = 0; int j = 0; int k = 0; if (p_92103_2_[i] instanceof String[]) { String[] astring = (String[])((String[])p_92103_2_[i++]); for (int l = 0; l < astring.length; ++l) { String s1 = astring[l]; ++k; j = s1.length(); s = s + s1; } } else { while (p_92103_2_[i] instanceof String) { String s2 = (String)p_92103_2_[i++]; ++k; j = s2.length(); s = s + s2; } } HashMap hashmap; for (hashmap = new HashMap(); i < p_92103_2_.length; i += 2) { Character character = (Character)p_92103_2_[i]; ItemStack itemstack1 = null; if (p_92103_2_[i + 1] instanceof Item) { itemstack1 = new ItemStack((Item)p_92103_2_[i + 1]); } else if (p_92103_2_[i + 1] instanceof Block) { itemstack1 = new ItemStack((Block)p_92103_2_[i + 1], 1, 32767); } else if (p_92103_2_[i + 1] instanceof ItemStack) { itemstack1 = (ItemStack)p_92103_2_[i + 1]; } hashmap.put(character, itemstack1); } ItemStack[] aitemstack = new ItemStack[j * k]; for (int i1 = 0; i1 < j * k; ++i1) { char c0 = s.charAt(i1); if (hashmap.containsKey(Character.valueOf(c0))) { aitemstack[i1] = ((ItemStack)hashmap.get(Character.valueOf(c0))).copy(); } else { aitemstack[i1] = null; } } ShapedRecipes shapedrecipes = new ShapedRecipes(j, k, aitemstack, p_92103_1_); this.recipes.add(shapedrecipes); return shapedrecipes; } public void addShapelessRecipe(ItemStack p_77596_1_, Object ... p_77596_2_) { ArrayList arraylist = new ArrayList(); Object[] aobject = p_77596_2_; int i = p_77596_2_.length; for (int j = 0; j < i; ++j) { Object object1 = aobject[j]; if (object1 instanceof ItemStack) { arraylist.add(((ItemStack)object1).copy()); } else if (object1 instanceof Item) { arraylist.add(new ItemStack((Item)object1)); } else { if (!(object1 instanceof Block)) { throw new RuntimeException("Invalid shapeless recipy!"); } arraylist.add(new ItemStack((Block)object1)); } } this.recipes.add(new ShapelessRecipes(p_77596_1_, arraylist)); } public ItemStack findMatchingRecipe(net.minecraft.inventory.InventoryCrafting p_82787_1_, World p_82787_2_) { int i = 0; ItemStack itemstack = null; ItemStack itemstack1 = null; int j; for (j = 0; j < p_82787_1_.getSizeInventory(); ++j) { ItemStack itemstack2 = p_82787_1_.getStackInSlot(j); if (itemstack2 != null) { if (i == 0) { itemstack = itemstack2; } if (i == 1) { itemstack1 = itemstack2; } ++i; } } if (i == 2 && itemstack.getItem() == itemstack1.getItem() && itemstack.stackSize == 1 && itemstack1.stackSize == 1 && itemstack.getItem().isRepairable()) { Item item = itemstack.getItem(); int j1 = item.getMaxDamage() - itemstack.getItemDamageForDisplay(); int k = item.getMaxDamage() - itemstack1.getItemDamageForDisplay(); int l = j1 + k + item.getMaxDamage() * 5 / 100; int i1 = item.getMaxDamage() - l; if (i1 < 0) { i1 = 0; } return new ItemStack(itemstack.getItem(), 1, i1); } else { for (j = 0; j < this.recipes.size(); ++j) { IRecipe irecipe = (IRecipe)this.recipes.get(j); if (irecipe.matches(p_82787_1_, p_82787_2_)) { return irecipe.getCraftingResult(p_82787_1_); } } return null; } } /** * returns the List<> of all recipes */ public List getRecipeList() { return this.recipes; } } RefStrings package com.allans.lib; public class RefStrings { public static final String MODID = "techniziummain"; public static final String NAME = "Technizium - Main Lib"; public static final String VERSION = "0.1"; public static final String CLIENTSIDE = "com.allans.Main.ClientProxy"; public static final String SERVERSIDE = "com.allans.Main.ServerProxy"; } MainRegistry package com.allans.Main; import com.allans.Blocks.All_Mod_Blocks; import com.allans.Blocks.ReCraftingTableDef; import com.allans.Gui.GuiHandler; import com.allans.Items.All_Mod_Items; import com.allans.World.World; import com.allans.lib.RefStrings; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.network.IGuiHandler; import cpw.mods.fml.common.network.NetworkRegistry; @Mod(modid = RefStrings.MODID , name = RefStrings.NAME , version = RefStrings.VERSION) public class MainRegistry { @Mod.Instance(RefStrings.MODID) public static MainRegistry instance; @EventHandler public static void PreLoad(FMLPreInitializationEvent PreEvent){ All_Mod_Items.mainRegistry(); //Starts All Items All_Mod_Blocks.mainRegistry(); //Starts Ender Block Registry World.MainRigistry(); } @EventHandler public static void load(FMLInitializationEvent event){ NetworkRegistry.INSTANCE.registerGuiHandler(RefStrings.MODID, (IGuiHandler) new GuiHandler()); } @EventHandler public static void PostLoad(FMLPostInitializationEvent PostEvent){ } } ServerProxy package com.allans.Main; import com.allans.Gui.GuiHandler; import com.allans.lib.RefStrings; import cpw.mods.fml.common.network.IGuiHandler; import cpw.mods.fml.common.network.NetworkRegistry; public class ServerProxy { public void registerRenderInfo(){ } } ClientProxy package com.allans.Main; import com.allans.Blocks.All_Mod_Blocks; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.entity.RenderItem; public class ClientProxy extends ServerProxy { public void registerRenderInfo(){ } } RecipeSorter package com.allans.oredict; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Set; import com.google.common.collect.Lists; import com.allans.lib.ReCustCraftingManager; import com.google.common.base.Joiner; import com.google.common.collect.Maps; import cpw.mods.fml.common.FMLLog; import cpw.mods.fml.common.toposort.TopologicalSort; import cpw.mods.fml.common.toposort.TopologicalSort.DirectedGraph; import net.minecraft.item.crafting.IRecipe; import net.minecraft.item.crafting.RecipeBookCloning; import net.minecraft.item.crafting.RecipeFireworks; import net.minecraft.item.crafting.RecipesArmorDyes; import net.minecraft.item.crafting.RecipesMapCloning; import net.minecraft.item.crafting.RecipesMapExtending; import net.minecraft.item.crafting.ShapedRecipes; import net.minecraft.item.crafting.ShapelessRecipes; import net.minecraftforge.oredict.ShapedOreRecipe; import net.minecraftforge.oredict.ShapelessOreRecipe; import com.google.common.collect.Sets; import static com.allans.oredict.RecipeSorter.Category.*; @SuppressWarnings("rawtypes") public class RecipeSorter implements Comparator<IRecipe> { public enum Category { UNKNOWN, SHAPELESS, SHAPED }; private static class SortEntry { private String name; private Class<?> cls; private Category cat; List<String> before = Lists.newArrayList(); List<String> after = Lists.newArrayList(); private SortEntry(String name, Class<?> cls, Category cat, String deps) { this.name = name; this.cls = cls; this.cat = cat; parseDepends(deps); } private void parseDepends(String deps) { if (deps.isEmpty()) return; for (String dep : deps.split(" ")) { if (dep.startsWith("before:")) { before.add(dep.substring(7)); } else if (dep.startsWith("after:")) { after.add(dep.substring(6)); } else { throw new IllegalArgumentException("Invalid dependancy: " + dep); } } } @Override public String toString() { StringBuilder buf = new StringBuilder(); buf.append("RecipeEntry(\"").append(name).append("\", "); buf.append(cat.name()).append(", "); buf.append(cls == null ? "" : cls.getName()).append(")"); if (before.size() > 0) { buf.append(" Before: ").append(Joiner.on(", ").join(before)); } if (after.size() > 0) { buf.append(" After: ").append(Joiner.on(", ").join(after)); } return buf.toString(); } @Override public int hashCode() { return name.hashCode(); } }; private static Map<Class, Category> categories = Maps.newHashMap(); //private static Map<String, Class> types = Maps.newHashMap(); private static Map<String, SortEntry> entries = Maps.newHashMap(); private static Map<Class, Integer> priorities = Maps.newHashMap(); public static RecipeSorter INSTANCE = new RecipeSorter(); private static boolean isDirty = true; private static SortEntry before = new SortEntry("Before", null, UNKNOWN, ""); private static SortEntry after = new SortEntry("After", null, UNKNOWN, ""); private RecipeSorter() { register("minecraft:shaped", ShapedRecipes.class, SHAPED, "before:minecraft:shapeless"); register("minecraft:mapextending", RecipesMapExtending.class, SHAPED, "after:minecraft:shaped before:minecraft:shapeless"); register("minecraft:shapeless", ShapelessRecipes.class, SHAPELESS, "after:minecraft:shaped"); register("minecraft:bookcloning", RecipeBookCloning.class, SHAPELESS, "after:minecraft:shapeless"); //Size 9 register("minecraft:fireworks", RecipeFireworks.class, SHAPELESS, "after:minecraft:shapeless"); //Size 10 register("minecraft:armordyes", RecipesArmorDyes.class, SHAPELESS, "after:minecraft:shapeless"); //Size 10 register("minecraft:mapcloning", RecipesMapCloning.class, SHAPELESS, "after:minecraft:shapeless"); //Size 10 register("forge:shapedore", ShapedOreRecipe.class, SHAPED, "after:minecraft:shaped before:minecraft:shapeless"); register("forge:shapelessore", ShapelessOreRecipe.class, SHAPELESS, "after:minecraft:shapeless"); } @Override public int compare(IRecipe r1, IRecipe r2) { Category c1 = getCategory(r1); Category c2 = getCategory(r2); if (c1 == SHAPELESS && c2 == SHAPED) return 1; if (c1 == SHAPED && c2 == SHAPELESS) return -1; if (r2.getRecipeSize() < r1.getRecipeSize()) return -1; if (r2.getRecipeSize() > r1.getRecipeSize()) return 1; return getPriority(r2) - getPriority(r1); // high priority value first! } private static Set<Class> warned = Sets.newHashSet(); @SuppressWarnings("unchecked") public static void sortCraftManager() { bake(); FMLLog.fine("Sorting recipies"); warned.clear(); Collections.sort(ReCustCraftingManager.getInstance().getRecipeList(), INSTANCE); } public static void register(String name, Class<?> recipe, Category category, String dependancies) { assert(category != UNKNOWN) : "Category must not be unknown!"; isDirty = true; SortEntry entry = new SortEntry(name, recipe, category, dependancies); entries.put(name, entry); setCategory(recipe, category); } public static void setCategory(Class<?> recipe, Category category) { assert(category != UNKNOWN) : "Category must not be unknown!"; categories.put(recipe, category); } public static Category getCategory(IRecipe recipe) { return getCategory(recipe.getClass()); } public static Category getCategory(Class<?> recipe) { Class<?> cls = recipe; Category ret = categories.get(cls); if (ret == null) { while (cls != Object.class) { cls = cls.getSuperclass(); ret = categories.get(cls); if (ret != null) { categories.put(recipe, ret); return ret; } } } return ret == null ? UNKNOWN : ret; } private static int getPriority(IRecipe recipe) { Class<?> cls = recipe.getClass(); Integer ret = priorities.get(cls); if (ret == null) { if (!warned.contains(cls)) { FMLLog.info(" Unknown recipe class! %s Modder please refer to %s", cls.getName(), RecipeSorter.class.getName()); warned.add(cls); } cls = cls.getSuperclass(); while (cls != Object.class) { ret = priorities.get(cls); if (ret != null) { priorities.put(recipe.getClass(), ret); FMLLog.fine(" Parent Found: %d - %s", ret.intValue(), cls.getName()); return ret.intValue(); } } } return ret == null ? 0 : ret.intValue(); } private static void bake() { if (!isDirty) return; FMLLog.fine("Forge RecipeSorter Baking:"); DirectedGraph<SortEntry> sorter = new DirectedGraph<SortEntry>(); sorter.addNode(before); sorter.addNode(after); sorter.addEdge(before, after); for (Map.Entry<String, SortEntry> entry : entries.entrySet()) { sorter.addNode(entry.getValue()); } for (Map.Entry<String, SortEntry> e : entries.entrySet()) { SortEntry entry = e.getValue(); boolean postAdded = false; sorter.addEdge(before, entry); for (String dep : entry.after) { if (entries.containsKey(dep)) { sorter.addEdge(entries.get(dep), entry); } } for (String dep : entry.before) { postAdded = true; sorter.addEdge(entry, after); if (entries.containsKey(dep)) { sorter.addEdge(entry, entries.get(dep)); } } if (!postAdded) { sorter.addEdge(entry, after); } } List<SortEntry> sorted = TopologicalSort.topologicalSort(sorter); int x = sorted.size(); for (SortEntry entry : sorted) { FMLLog.fine(" %d: %s", x, entry); priorities.put(entry.cls, x--); } } }
  3. Between /B And /B its code with squiggly line under. for fontRendererObj fontRendererObj cannot be resolved or is not a field for ySize its ySize cannot be resolved or is not a field for mc its mc cannot be resolved or is not a field for all of them after its same
  4. i tried that but when i make gui from GuiCrafing class it gives an squiggly line under fontRendererObj and ySize as well as some others see code bellow package com.allans.Gui; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.ContainerWorkbench; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import org.lwjgl.opengl.GL11; @SideOnly(Side.CLIENT) public class ReTableCraftingGui extends CustContainerWorkBench { private static final ResourceLocation craftingTableGuiTextures = new ResourceLocation("textures/gui/container/crafting_table.png"); private static final String __OBFID = "CL_00000750"; public ReTableCraftingGui(InventoryPlayer p_i1084_1_, World p_i1084_2_, int p_i1084_3_, int p_i1084_4_, int p_i1084_5_) { super(new CustContainerWorkBench(p_i1084_1_, p_i1084_2_, p_i1084_3_, p_i1084_4_, p_i1084_5_)); } /** * Draw the foreground layer for the GuiContainer (everything in front of the items) */ protected void drawGuiContainerForegroundLayer(int p_146979_1_, int p_146979_2_) { this.[b]fontRendererObj[/b].drawString(I18n.format("container.crafting", new Object[0]), 28, 6, 4210752); this.[b]fontRendererObj[/b].drawString(I18n.format("container.inventory", new Object[0]), 8, this.[b]ySize[/b] - 96 + 2, 4210752); } protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); this.[b]mc[/b].getTextureManager().bindTexture(craftingTableGuiTextures); int k = (this.[b]width [/b]- this.[b]xSize[/b]) / 2; int l = (this.[b]height [/b]- this.[b]ySize[/b]) / 2; this.drawTexturedModalRect(k, l, 0, 0, this.[b]xSize[/b], this.[b]ySize[/b]); } }
  5. I want to create custom workbench that has custom recipes and does not accept vanilla workbench recipes and vice versa(custom recipes for this custom workbench cant be crafted in normal workbench) I am new at coding with Elcipse/Java so please can you explain.(If you can please show code) PS: I have tried multiple guides but they were outdated so it did not work just wasted 3 hours and also please test before posting how to do it, it will be greatly appreciated thx Edit:New Info I am trying to create custom workbench using minecraft source classes but i dont understand either it my code failing at guiHandler or I am doing something wrong , can someone check whats wrong and tell me so i know how to fix it as i am trying to do custom WorkBench for 2 days.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.