Résolu Ne pas avoir 2backpack dans l'inv
-
Bonjour l’autre jour j’ai creer un post cf.https://www.minecraftforgefrance.fr/showthread.php?tid=4821&page=2
ou a la fin on me propose des lignes de codes qui ont l’air d’être bonne sauf que quand je les utilise et que je register l’event rien ne se passe
ma class event : https://pastebin.com/D6E9ni6w
ma class principale : https://pastebin.com/6E6n7iBs -
Salut,
PlayerTickEvent est un event FML et non un event Forge. -
et du coup si je veux que ca face ca que si j’ai 2Items je fais un =2 ? Oo
-
Ça veut dire que tu dois utiliser FMLCommonHandler.instance().bus().register(new EventTest()); et non MinecraftForge.EVENT_BUS
-
j’avais compris merci robin x) je l’avais fait avant
ps: le tuto sur les event ma éte utile
et du coup si je veux que ca face ca que si j’ai 2Items je fais un =2 ? Oo
-
Pour savoir s’il y a plus de deux fois l’item dans l’inventaire il faut parcourir tout l’inventaire avec une boucle for et compter.
-
https://pastebin.com/Bk5xmb19 euh je pense avoir fait n’importe quoi… des que j’ai un backpack ca m’affiche le message
-
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?