Problème de drop random Item sur block
-
il drop quel item pour le coup ?
-
private Item droppedItem = listItems[rand.nextInt(listItems.length)];
Devrait être une variable local dans ta fonction onBlockActivated.
Car actuellement la valeur est initialisé en même temps que le bloc et ne change plus le temps que le jeu n’est pas relancé. -
@‘robin4002’:
private Item droppedItem = listItems[rand.nextInt(listItems.length)];
Devrait être une variable local dans ta fonction onBlockActivated.
Car actuellement la valeur est initialisé en même temps que le bloc et ne change plus le temps que le jeu n’est pas relancé.Ok ça marche super merci Robin
Et Diangle c’était souvent la blaze rod qu’il me droppait
-
J’avais juste une autre question au passage avant de passer ça en résolu.
Quand je fais clique droit plusieurs y’a que 2 ou 3 fois où l’item apparaît dans mon inventaire. Les autre fois je suis obligé de déco-reco pour voir ce qui m’a été givé. Je crois qu’il faut mettre à jour l’inventaire mais je ne me souviens plus de la méthode exacte.
Merci d’avance -
player.inventory.makeDirty() ? Je ne suis pas sûr.
-
Tu mets if(player.adddItem…) et ensuite tu fais else if(!player.addItem…) ça doit être juste un else car là tu ajoutes 2 fois l’Item.
-
Voici ma méthode actuelle toujours avec le même problème de mise à joru de l’inventaire :
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_) { TileEntity tile = world.getTileEntity(x, y, z); if(tile instanceof TileEntityValise) { if(((TileEntityValise)tile).isChecked()) { player.addChatComponentMessage(new ChatComponentTranslation(EnumChatFormatting.AQUA + "Cette valise a déjà été fouillée. Revenez plus tard", new Object[0])); } else { if (!world.isRemote) { Item droppedItem = listItems[rand.nextInt(listItems.length)]; if (player.inventory.addItemStackToInventory(new ItemStack(droppedItem))) { //player.dropItem(droppedItem, 1); System.out.println("Item bien reçu ?"); player.inventory.markDirty(); } } } } return true; }Ok, c’est bon prob réglé juste la condition du isRemote à changer

-
if (!player.inventory.addItemStackToInventory(new ItemStack(droppedItem))) { player.dropItem(droppedItem, 1); } player.inventory.markDirty();Sinon tu vire le !world.isRemote, ça règle aussi le problème.
-
Non ça ne le règle pas car la méthode dropItem bug lorsqu’elle est appelée par les 2 Sides. Sa fait apparaître 2 fois l’item mais y’en a 1 qui est bugué et non-ramassable. Je viens de tester à l’instant.
-
Ah oui, pour le spawn d’une entité il faut toujours la condition.