-
et comment on utilisa sa svp je débute un peut en java

-
Regardes dans le code du tile entity du coffre.
-
ok je vais regarder
-
dans le tile ya pas de onBlockActivated
et dans la clase du block chest sa resemble a sa!
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { if (worldIn.isRemote) { return true; } else { ILockableContainer ilockablecontainer = this.getLockableContainer(worldIn, pos); if (ilockablecontainer != null) { playerIn.displayGUIChest(ilockablecontainer); if (this.chestType == BlockChest.Type.BASIC) { playerIn.addStat(StatList.CHEST_OPENED); } else if (this.chestType == BlockChest.Type.TRAP) { playerIn.addStat(StatList.TRAPPED_CHEST_TRIGGERED); } } return true; } }ses pas du tous la même chose
-
Le problème ne se trouve pas dans ton bloc mais dans ton tile entity.
-
package fr.thexrayfr.familygame.tile; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ItemStackHelper; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; public class TileEntityBarrel extends TileEntityStorage { public int getSizeInventory() { return 18; } @Override public boolean isEmpty() { return false; } @Override public ItemStack getStackInSlot(int index) { return null; } @Override public ItemStack decrStackSize(int index, int count) { return null; } @Override public ItemStack removeStackFromSlot(int index) { return null; } @Override public int getInventoryStackLimit() { return 0; } @Override public boolean isUsableByPlayer(EntityPlayer player) { return false; } @Override public void openInventory(EntityPlayer player) { } @Override public void closeInventory(EntityPlayer player) { } @Override public boolean isItemValidForSlot(int index, ItemStack stack) { return false; } @Override public int getField(int id) { return 0; } @Override public void setField(int id, int value) { } @Override public int getFieldCount() { return 0; } @Override public void clear() { } public void readFromNBT(NBTTagCompound compound) { super.readFromNBT(compound); ItemStackHelper.loadAllItems(compound, this.stacks); } public NBTTagCompound writeToNBT(NBTTagCompound compound) { ItemStackHelper.saveAllItems(compound, this.stacks); return super.writeToNBT(compound); } @Override public String getName() { return null; } @Override public boolean hasCustomName() { return false; } }il ma demander quand je lais mise a joue d’importer ca donc apret
-
TileEntityStorage contient quoi ?
Et tu as pleins de fonction non implémenté qui retourne null, ce n’est pas bon. getStackInSlot, decrStackSize, removeStackFromSlot etc.
-
package fr.thexrayfr.familygame.tile; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ItemStackHelper; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.NonNullList; public abstract class TileEntityStorage extends TileEntity implements IInventory { public NonNullList<ItemStack> stacks = NonNullList.withSize(getSizeInventory(), ItemStack.EMPTY); public String getName() { return null; } public boolean hasCustomName() { return false; } public boolean isEmpty() { for (ItemStack itemstack : this.stacks) { if (!itemstack.isEmpty()) { return false; } } return true; } public ItemStack getStackInSlot(int index) { return (ItemStack)this.stacks.get(index); } public ItemStack decrStackSize(int index, int count) { return ItemStackHelper.getAndSplit(this.stacks, index, count); } public ItemStack removeStackFromSlot(int index) { this.stacks.set(index, ItemStack.EMPTY); return getStackInSlot(index); } public void setInventorySlotContents(int index, ItemStack stack) { this.stacks.set(index, stack); } public int getInventoryStackLimit() { return 64; } public boolean isUsableByPlayer(EntityPlayer player) { if (this.world.getTileEntity(this.pos) != this) { return false; } return player.getDistanceSq(this.pos.getX() + 0.5D, this.pos.getY() + 0.5D, this.pos.getZ() + 0.5D) <= 64.0D; } public void openInventory(EntityPlayer player) {} public void closeInventory(EntityPlayer player) {} public boolean isItemValidForSlot(int index, ItemStack stack) { return true; } public int getField(int id) { return 0; } public void setField(int id, int value) {} public int getFieldCount() { return 0; } public void clear() { this.stacks.clear(); } } -
jais fait le ménage
package fr.thexrayfr.familygame.tile; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ItemStackHelper; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; public class TileEntityBarrel extends TileEntityStorage { public int getSizeInventory() { return 18; } @Override public boolean isEmpty() { return false; } @Override public int getInventoryStackLimit() { return 0; } @Override public boolean isUsableByPlayer(EntityPlayer player) { return false; } @Override public void openInventory(EntityPlayer player) { } @Override public void closeInventory(EntityPlayer player) { } @Override public boolean isItemValidForSlot(int index, ItemStack stack) { return false; } @Override public int getField(int id) { return 0; } @Override public void setField(int id, int value) { } @Override public int getFieldCount() { return 0; } @Override public void clear() { } public void readFromNBT(NBTTagCompound compound) { super.readFromNBT(compound); ItemStackHelper.loadAllItems(compound, this.stacks); } public NBTTagCompound writeToNBT(NBTTagCompound compound) { ItemStackHelper.saveAllItems(compound, this.stacks); return super.writeToNBT(compound); } @Override public boolean hasCustomName() { return false; } } -
déja sa crash plus sa ouvre et referme le gui
-
-
Ta fonction
isUsableByPlayerretourne toujours faux, c’est pour ça que cela ne fonctionne pas. -
une petite vidéo pour te montrer se qui se passe
-
ses bon le hui s’ouvre mes maintenant ses le snift clique qui pose problème
-
ses pas du au:
public ItemStack transferStackInSlot(EntityPlayer playerIn, int index) { ItemStack itemstack = ItemStack.EMPTY; Slot slot = (Slot) this.inventorySlots.get(index); if ((slot != null) && (slot.getHasStack())) { ItemStack itemstack1 = slot.getStack(); itemstack = itemstack1.copy(); if (index < 9) { if (!mergeItemStack(itemstack1, 18, this.inventorySlots.size(), true)) { return ItemStack.EMPTY; } } else if (!mergeItemStack(itemstack1, 0, 18, false)) { return ItemStack.EMPTY; } if (itemstack1.isEmpty()) { slot.putStack(ItemStack.EMPTY); } else { slot.onSlotChanged(); } } return itemstack; }???
-
Si c’est bien cette fonction qui gère le shift clic.
-
@robin4002
je comprent pas pourquoi il bug quand je shift click sa crash -
@robin4002 tu ses a peut prêt dout sa peut être ?
-
Tu peux envoyer le rapport de crash ?
-
@robin4002 il en na pas