Résolu Une question sur un event
-
Si tu as accès à l’item que tu veux tracker, tu n’as pas besoin d’events le plus souvent
-
@‘SCAREX’:
Si tu as accès à l’item que tu veux tracker, tu n’as pas besoin d’events le plus souvent
Ben la si je ne vois pas d’autre solutions que de véfier à chaque fois qu’il attaque ou fais un clic droit s’il peut utiliser cette item donc via un event
-
Un truc m’échappe… Tu veux que si le joueurs utilise l’arme, mais qu’il n’as pas l’autorisation, une action X à lieu…
Hors, tes armes sont toutes custom non ? Alors pourquoi te faire chier avec les évents ?
Tu créer une bête fonction qui vérifie si le joueurs à l’autorisation d’utilisé l’arme, ou non (un fonction public static boolean check(Entity e, ItemStack i) )
Puis tu rajoute une bête condition if(check(entity, itemStack) sur toute les fonctions de l’armes qui ont un rapport avec l’utilisation (onRightClick, onUse, etc…) -
@‘Jodge’:
Un truc m’échappe… Tu veux que si le joueurs utilise l’arme, mais qu’il n’as pas l’autorisation, une action X à lieu…
Hors, tes armes sont toutes custom non ? Alors pourquoi te faire chier avec les évents ?
Tu créer une bête fonction qui vérifie si le joueurs à l’autorisation d’utilisé l’arme, ou non (un fonction public static boolean check(Entity e, ItemStack i) )
Puis tu rajoute une bête condition if(check(entity, itemStack) sur toute les fonctions de l’armes qui ont un rapport avec l’utilisation (onRightClick, onUse, etc…)Le soucie c’est que je sais utiliser quand il fais un clic droit mais pas un clic gauche ou autre, je connais pas onUse que tu vient de citer mais je voudrais quel que chose comme onrightclic mais sois aussi pour le clic gauche ou quand il a l’arme en main.
-
Vas sur la classe Item, tu a plein de fonction. Cherche celle en rapport avec onItemUse, onItemStartUse (me souvient plus des nom exacte) mais tu as 3 ou 4 fonctions différentes lever à différent stade lors de l’appuie sur un clic gauche. La fonction OnItemLeftClick n’est disponible qu’as partir de la 1.10, en deça, il faut improvisé avec les méthode appeler.
-
@‘Jodge’:
Vas sur la classe Item, tu a plein de fonction. Cherche celle en rapport avec onItemUse, onItemStartUse (me souvient plus des nom exacte) mais tu as 3 ou 4 fonctions différentes lever à différent stade lors de l’appuie sur un clic gauche. La fonction OnItemLeftClick n’est disponible qu’as partir de la 1.10, en deça, il faut improvisé avec les méthode appeler.
Ah merci j’ais trouvé deux fonctions qui me vont à merveille sauf que j’ais deux soucis que je comprends pas. Le code :
public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity) { if(stack != null){ if (player!=null){ Fo props = Fo.get(player); if (props.Check(force)){ player.addChatMessage(new ChatComponentText("force")); } else {player.addChatMessage(new ChatComponentText("force insuffisant"));}}} return null != null; } public ItemStack onItemRightClick(ItemStack Stack,World world,EntityPlayer player){ if (!world.isRemote){ Fo props = Fo.get(player); if (props.Check(force)){ player.addChatMessage(new ChatComponentText("force")); } else {player.addChatMessage(new ChatComponentText("force insuffisant"));}} return super.onItemRightClick(Stack,world,player); } public boolean onBlockStartBreak(ItemStack itemstack, int X, int Y, int Z, EntityPlayer player){ if(itemstack!=null){ if (player!=null){ Fo props = Fo.get(player); if (props.Check(force)){ player.addChatMessage(new ChatComponentText("force")); } else {player.addChatMessage(new ChatComponentText("force insuffisant"));}}} return true; }
le clic droit marche trés bien(envoie “force”), mais les deux autres récupérer sur la classe item pas trop.
Le props.check envoie true normalement enfin le fais via le clic droit. Pour la fonction qui casse un bloc cela envoie juste force insuffisant et celle pour les entité envoie ‘force insuffisant’ puis ‘force’ et je ne comprend pas pourquoi. -
Normal. Si tu fais un System.ou.println, je pense que tu verrai deux fois le message, venu du client et du serveur.
Sur onItemRightclick, tu fait un “if (!world.isRemote)”. sur tes autres fonction, tu dois faire la même chose, seulement pour obtenir la variable, il faut passer par l’entité :public boolean check(ItemStack stack, EntityPlayer player, World world) { if (!world.isRemote) { Fo props = Fo.get(player); if (props.Check(force)) { System.out.println("Force"); player.addChatMessage(new ChatComponentText("Force")); return true; } else { System.out.println("Force insuffisant"); player.addChatMessage(new ChatComponentText("Force insuffisant")); return false; } } } public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity) { return check(stack, player, player.worldObj) && super.onLeftClickEntity(stack, player, entity); } public ItemStack onItemRightClick(ItemStack Stack, World world,EntityPlayer player) { return check(stack, player, world) && super.onItemRightClick(Stack,world,player); } public boolean onBlockStartBreak(ItemStack itemstack, int X, int Y, int Z, EntityPlayer player) { return check(itemstack, player, player.worldObj) && super.onBlockStartBreak(itemstack, X, Y, Z, player); }
-
@‘Jodge’:
Normal. Si tu fais un System.ou.println, je pense que tu verrai deux fois le message, venu du client et du serveur.
Sur onItemRightclick, tu fait un “if (!world.isRemote)”. sur tes autres fonction, tu dois faire la même chose, seulement pour obtenir la variable, il faut passer par l’entité :public boolean check(ItemStack stack, EntityPlayer player, World world) { if (!world.isRemote) { Fo props = Fo.get(player); if (props.Check(force)) { System.out.println("Force"); player.addChatMessage(new ChatComponentText("Force")); return true; } else { System.out.println("Force insuffisant"); player.addChatMessage(new ChatComponentText("Force insuffisant")); return false; } } } public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity) { return check(stack, player, player.worldObj) && super.onLeftClickEntity(stack, player, entity); } public ItemStack onItemRightClick(ItemStack Stack, World world,EntityPlayer player) { return check(stack, player, world) && super.onItemRightClick(Stack,world,player); } public boolean onBlockStartBreak(ItemStack itemstack, int X, int Y, int Z, EntityPlayer player) { return check(itemstack, player, player.worldObj) && super.onBlockStartBreak(itemstack, X, Y, Z, player); }
merci mon probléme est résolue grace à toi