Jump to content

jackey8616

Members
  • Posts

    3
  • Joined

  • Last visited

Converted

  • Gender
    Undisclosed
  • Personal Text
    I am new!

jackey8616's Achievements

Tree Puncher

Tree Puncher (2/8)

0

Reputation

  1. You can read this. And try more search. http://www.minecraftforge.net/wiki/Basic_Blocks
  2. How guys, I'm modding with Forge-10.13.2.1230 on Eclipse. Here is the case, i modded a custom inventory which i want to cover the original one with Key 'E'. And i read some tutorials about "IExtendedProperites", and i did make one. But here comes some problems. When I test in the Eclipse ( open server and client in the same and log in with IP:127.0.0.1), items in custom inventory works good. but when i separate code and compile into two jar file which just for client and server, and then log in. First time i clicked item in custom inventory, i can move , drag, click the item. After i place down a item into slot , second time i clicked it, the item just disappear strangely. RPGContainer.class package org.mocraft.Inventory; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; public class ContainerRPGPlayer extends Container { private final EntityPlayer player; private InventoryRPGPlayer rpgInventory; public ContainerRPGPlayer(EntityPlayer player, InventoryRPGPlayer rpgInventory) { this.player = player; this.rpgInventory = rpgInventory; for(int i = 0; i < 4; ++i) { for(int j = 0; j < 9; ++j) { this.addSlotToContainer(new RPGSlot(rpgInventory, i * 9 + j, 8 + j * 18, 84 + i * 18)); } } } @Override public boolean canInteractWith(EntityPlayer player) { return true; } } RPGExtendedProperites.class package org.mocraft.Inventory; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import net.minecraftforge.common.IExtendedEntityProperties; public class ExtendedRPGPlayer implements IExtendedEntityProperties { private final static String EXT_PROP_NAME = "ExtendedRPGPlayer"; private EntityPlayer player; public final InventoryRPGPlayer inventory = new InventoryRPGPlayer(); public ExtendedRPGPlayer(EntityPlayer player) { this.player = player; } public static final void register(EntityPlayer player) { player.registerExtendedProperties(EXT_PROP_NAME, new ExtendedRPGPlayer(player)); } public static final ExtendedRPGPlayer get(EntityPlayer player) { return (ExtendedRPGPlayer) player.getExtendedProperties(EXT_PROP_NAME); } @Override public void saveNBTData(NBTTagCompound compound) { NBTTagCompound properties = new NBTTagCompound(); inventory.writeToNBT(properties); compound.setTag(EXT_PROP_NAME, properties); } @Override public void loadNBTData(NBTTagCompound compound) { NBTTagCompound properties = (NBTTagCompound) compound.getTag(EXT_PROP_NAME); this.inventory.readFromNBT(properties); } @Override public void init(Entity entity, World world) { } } RPGGui.class package org.mocraft.Inventory; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.entity.player.EntityPlayer; public class GuiRPGInventory extends GuiContainer { public GuiRPGInventory(EntityPlayer player, InventoryRPGPlayer rpgInventory) { super(new ContainerRPGPlayer(player, rpgInventory)); } @Override protected void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) { } } RPGInventory.class package org.mocraft.Inventory; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; public class InventoryRPGPlayer implements IInventory { private final String tagName = "RPGInventory"; public ItemStack[] inventory = new ItemStack[36]; public EntityPlayer player; public InventoryRPGPlayer() { } public int getFirstEmptySlot() { for(int i = 0; i < this.inventory.length; ++i) { if(this.inventory[i] == null) { return i; } } return -1; } private int storeItemStack(ItemStack itemStack) { for (int i = 0; i < this.inventory.length; ++i) { if (this.inventory[i] != null && this.inventory[i].getItem() == itemStack.getItem() && this.inventory[i].isStackable() && this.inventory[i].stackSize < this.inventory[i].getMaxStackSize() && this.inventory[i].stackSize < this.getInventoryStackLimit() && (!this.inventory[i].getHasSubtypes() || this.inventory[i].getItemDamage() == itemStack.getItemDamage()) && ItemStack.areItemStackTagsEqual(this.inventory[i], itemStack)) { return i; } } return -1; } @Override public int getSizeInventory() { return this.inventory.length; } @Override public ItemStack getStackInSlot(int slot) { return this.inventory[slot]; } @Override public ItemStack decrStackSize(int slot, int amount) { if(inventory[slot] == null) { return null; } if(inventory[slot].stackSize >= amount) { inventory[slot].stackSize -= amount; return inventory[slot]; } else { inventory[slot] = null; return null; } } @Override public ItemStack getStackInSlotOnClosing(int slot) { return null; } @Override public void setInventorySlotContents(int slot, ItemStack itemStack) { this.inventory[slot] = itemStack; } @Override public String getInventoryName() { return "container.mocraftInventory"; } @Override public boolean hasCustomInventoryName() { return false; } @Override public int getInventoryStackLimit() { return 64; } @Override public void markDirty() { } @Override public boolean isUseableByPlayer(EntityPlayer player) { return (this.player.isDead ? false : player.getDistanceSqToEntity(this.player) <= 64.0D); } @Override public void openInventory() { } @Override public void closeInventory() { } @Override public boolean isItemValidForSlot(int slot, ItemStack itemStack) { return true; } public void writeToNBT(NBTTagCompound compound) { NBTTagList items = new NBTTagList(); for(int i = 0; i < getSizeInventory(); ++i) { if(getStackInSlot(i) != null) { NBTTagCompound item = new NBTTagCompound(); item.setByte("Slot", (byte) i); getStackInSlot(i).writeToNBT(item); items.appendTag(item); } } compound.setTag(tagName, items); return; } public void readFromNBT(NBTTagCompound compound) { NBTTagList items = compound.getTagList(tagName, 10); for(int i = 0; i < items.tagCount(); ++i) { NBTTagCompound item = (NBTTagCompound) items.getCompoundTagAt(i); byte slotNum = item.getByte("Slot"); if(slotNum >= 0 && slotNum < getSizeInventory()) { this.inventory[slotNum] = ItemStack.loadItemStackFromNBT(item); } } return; } } Thx a lot if any once can solve it! if any thing is incorrect plz let me know! -Clode
×
×
  • Create New...

Important Information

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