Résolu Problème ajout d'ItemStack dans l'inventaire
-
Voilà, le problème est très simple, j’ai créé ce bloc qui s’appelle sceau parce que c’est un bloc pour tester au propre le code qui bug
public class BlockSceau extends Block { public BlockSceau() { super(Material.iron); this.setUnlocalizedName("sceau"); } @Override public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumFacing side, float hitX, float hitY, float hitZ) { if(!world.isRemote && player.getHeldItem() != null && (player.getHeldItem().getItem() == Items.water_bucket || player.getHeldItem().getItem() == Items.bucket)) { if(player.getHeldItem().getItem() == Items.bucket) { if(–player.inventory.mainInventory[player.inventory.currentItem].stackSize <= 0) { player.inventory.mainInventory[player.inventory.currentItem] = new ItemStack(Items.water_bucket, 1, 0); } else { if(!player.inventory.addItemStackToInventory(new ItemStack(Items.water_bucket))) { player.dropPlayerItemWithRandomChoice(new ItemStack(Items.water_bucket, 1, 0), false); } } return true; } else if(player.getHeldItem().getItem() == Items.water_bucket) { if(–player.inventory.mainInventory[player.inventory.currentItem].stackSize <= 0) { player.inventory.mainInventory[player.inventory.currentItem] = new ItemStack(Items.bucket, 1, 0); } else { if(!player.inventory.addItemStackToInventory(new ItemStack(Items.bucket))) { player.dropPlayerItemWithRandomChoice(new ItemStack(Items.bucket, 1, 0), false); } } return true; } } return true; } }
Et donc le problème est que lorsque j’ai plusieurs sceaux vides stackés et que je fais clique droit ça m’enlève bien un sceau vide mais le sceau plein n’apparaît nul part dans mon inventaire mais y est bien présent, en effet si je fait un /kill les sceaux d’eau dropent et je peux les ramasser comme si de rien n’était
-
Essaie sans le if (!world.isRemote), si çà ne marche pas sans, à la fin de ton code fait un player.detectAndSendChanges
-
Et essaie aussi à la suite de ton code qui donne le seau cette méthode, on sait jamais
player.inventory.markDirty(); -
Ah bah oui, ça marche sans le !world.isRemote, c’est tout bête.
MerciEDIT : player.inventory.markDirty() ne marche pas, j’avais déjà essayé