Ne pas avoir 2backpack dans l'inv
-
bonjour, pour le drop ca me drop toujours un backpack a l’infini même en survival x)
-
Quand tu dis à l’infini, c’est que tu le drop puis le ramasse à nouveau, etc . ou qu’il se drop sans se retirer de l’inventaire ?
-
il se drop sans se retirer de l’inv et du coup ca drop des milliers de backpack
-
Et tu arrives à ramasser les backpack ?
-
oui, dans tout les cas ça drop a l’infinie donc ça en crée à l’infinie
et l’event de pickup n’est pas reconnu
-
Faudrait voir s’il y a autre chose pour le dropper, car la clairement la fonction ne fonctionne pas comme prévu.
-
En c’est normal, dropItem fait apparaitre un nouvel item.
Il faudrait faire comme ça :@SubscribeEvent public void tickEvent(PlayerTickEvent event) { EntityPlayer player = event.player; // Tu récupères le player par l'event int count = 0; for(int i = 0; i < player.inventory.getSizeInventory(); i++) // Boucle ou l'on crée une variable i qui représente les slots de l'inventaire du joueur { if(player.inventory.getStackInSlot(i) != null) // Si le slot n'est pas null alors on passe au prochain { if(player.inventory.getStackInSlot(i).getItem() instanceof ItemBackPack) // Si l'item dans le slot est l'instance de ton item alors tu exécutes quelque chose { count++; if(count >= 2) { player.inventory.setStackInSlot(i, null); player.drop(ItemMod.backpack, 1); player.addChatComponentMessage(new ChatComponentText("Interdit").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.DARK_RED))); } } } } } -
merci beaucoup robin, mais j’ai un probleme, http://prntscr.com/g4qizt
-
Essaye avec
player.inventory.setInventorySlotContents(i, null); -
merci, ca marche comme ca a part que ca fait un bug graphique ou ca fait des fake bag au sol x) mais des que je deco reco le truc reviens a la normal
et du coup est-il possible de le faire pour mon backpack (interdire des items dedans de la même maniere) et dans l’enderchest?
-
Remplaces if(count >= 2)
par
if(count >= 2 && !player.worldObj.isRemote)
pour éviter l’item buggué au sol.Pour l’ender chest je ne sais pas comment faire

-
si je refais un enderchest c’est possible?
de plus ton event pour ne pas recup ne marche pas
-
Je pense avoir une idée.
Toujours dans le tick event, lorsque le joueur a un enderchest ouvert (ou n’importe quel autre container) la variable player.openContainer vaut le container ouvert.
Donc tu vérifies que player.openContainer instanceof ContainerChest (ou ContainerEnderChest, je ne sais plus si l’enderchest à son propre container, mais il me semble que non) et depuis ça tu pourra get le TileEntityChest. à ce moment tu pourra vérifier contenu et le modifier si besoin, de la même façon que pour l’inventaire du joueur. -
ok je vais essayer, merci

bon bah a chaque fois je dois rajouter des cast x)
-
Le TileEntity de l’enderchest n’est utilsé que pour le rendu du coffre. Tu peux accéder à l’inventaire de l’enderchest d’un joueur grâce à l’instance d’un joueur.
Je ne sais pas si il y a un getter en 1.7.10 (sûrement pas) mais en 1.11.2 la fonction est :player.getInventoryEnderChest();Après tu as toutes les fonctions de IInventory à ta disposition et même peut-être plus. Tu as juste à utiliser la même technique que pour l’inventaire de base du joueur mais en testant pour l’inventaire de l’enderchest
-
je ne connais pas du tout ce qui touche aux enderchest désole
est-il possible de bloquer le clique dans les slot avec un certaines item?
-
Sûrement possible dans le container ou avec une classe custom de GuiSlot
-
La solution que j’ai indiqué est la bonne, il faut juste chercher plus loin que le bout de son nez. J’ai dit qu’en 1.7.10 il n’y avait certainement pas de getter
-
*getInventoryEnderChest *existe belle et bien en 1.7.10, c’est juste qu’ici tu es dans une boucle **for **qui demande un nombre, normal donc que tu ai une erreur.
for(int i = 0; i < player.getInventoryEnderChest().getSizeInventory(); i++) { … } -
quelque chose dans ce style la ? https://pastebin.com/YZ96UBAN
du coup j’ai une erreur sur le .getItem()