Ne pas avoir 2backpack dans l'inv
-
Tu es assez bien partie.
Au dessus de la for ajoutes :
int count = 0;
dans la condition if(player.inventory.getStackInSlot(i).getItem() instanceof ItemBackPack à la place de :
if(i >= 2)
{
player.addChatComponentMessage(new ChatComponentText(“Interdit”).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.DARK_RED)));
}
mets :
count ++;enfin, à la fin de la boucle for mets le if d’avant en remplaçant i >= 2 par count >= 2
-
merci beaucoup, est-il possible de faire la même chose pour l’ender-chest et la mon backpack?
de plus je veux faire drop mon item, j’utilise cette ligne player.dropItem(ItemMod.backpack, count); sauf que ca me drop des items a l’infinie x)
-
player.dropItem(ItemMod.backpack, count - 1); pour en regarder un dans l’inventaire non ?
Pour éviter qu’il le ramasse à nouveau, il faut passer par l’event PickupItemEvent et le cancel si le joueur a déjà un sac dans l’event.Pour le back pack dans l’enderchest ça me semble plus compliqué …
-
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