Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1748 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Noob] Appeler une méthode

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Noob] Appeler une méthode

n°2206529
splint33
Posté le 11-10-2013 à 20:42:19  profilanswer
 

Bonjours à tous, je suis entrains de m'arracher les cheveux...
Je suis un gros débutant en java, et je cherche simplement comment appeler une méthode d'une autre classe.
 
Je souhaite appeler la méthode "genCrystal()", contenue dans la class GenEnd que voici:
 

Code :
  1. package regen3000end;
  2. import org.bukkit.Location;
  3. import org.bukkit.Material;
  4. import org.bukkit.World;
  5. import org.bukkit.block.Block;
  6. import org.bukkit.craftbukkit.Main;
  7. import org.bukkit.entity.Entity;
  8. import org.bukkit.entity.EntityType;
  9. public class GenEnd
  10. {
  11. private Main plugin;
  12. public GenEnd(Main par0)
  13. {
  14.  this.plugin = par0;
  15. }
  16. public void genCrystal()
  17. {
  18.  World w = ((Entity) this.plugin).getServer().getWorld("world_the_end" );
  19.  Block b;
  20.                 if (w == null)
  21.                         return;
  22.  for (int z=-200; z < 200; z++)
  23.  {
  24.   for (int y=64; y < 150; y++)
  25.   {
  26.    for (int x=-200; x<200; x++)
  27.    {
  28.     b = w.getBlockAt(x, y, z);
  29.     if (b.getType().equals(Material.BEDROCK) && !crystalExist(w, x, y + 1, z))
  30.      w.spawnEntity(b.getLocation().add(0, 1, 0), EntityType.ENDER_CRYSTAL);
  31.    }
  32.   }
  33.  }
  34. }
  35. private boolean crystalExist(World w, int x, int y, int z)
  36. {
  37.                 Location loc;
  38.  for (Entity e : w.getEntities())
  39.  {
  40.   if (e.getType().equals(EntityType.ENDER_CRYSTAL))
  41.   {
  42.                                 loc = e.getLocation();
  43.    if (loc.getBlockX() == x && loc.getBlockY() == y && loc.getBlockZ() == z)
  44.     return true;
  45.   }
  46.  }
  47.  return false;
  48. }
  49. }


 
Je sais que normalement il faut faire  

Code :
  1. MaClasse  maclasse = new MaClasse(par1, par2);
  2. maclasse.maMethode(param1, param2);


 
Mais je galère avec ça, et je ne sais pas quoi mettre à la place des "par1, par2"...
 
Merci d'avance, pour avoir aider un gros débutant qui modifie des plugins en java et qui bloque là :)

mood
Publicité
Posté le 11-10-2013 à 20:42:19  profilanswer
 

n°2206538
olivthill
Posté le 11-10-2013 à 23:05:34  profilanswer
 

Tout d'abord, une question rituelle : "Quel est le message d'erreur ?"
 
Ensuite, par1 et par2, c'est juste un exemple pour montrer 2 paramètres.
Mais dans le cas présent, je ne vois aucune fonction ayant deux paramètres.
- public GenEnd(Main par0) a un seul paramètre.
- public void genCrystal() n'a pas de paramètre.
- private boolean crystalExist(World w, int x, int y, int z) a quatre paramètres.
 
Les paramètres nécessaires à la création d'une instance de l'objet GeEnd() sont les paramètres du constructeur souhaité.
Ici, il n'y a qu'un seul constructeur qui est public GenEnd(Main par0), et il a besoin d'un paramètre.
 
Ensuite pour l'appel de la fonction genCrystal(), il n'y a pas de paramètre à passer.

n°2206541
splint33
Posté le 12-10-2013 à 00:15:10  profilanswer
 

Je sais bien pour le GenCrystal, mais justement, je ne sais pas quel paramètre entrer pour GenEnd.
Au niveau des erreurs, bah aucune, je cherche juste le paramètre de GenEnd, car sans lui cela ne peux pas tourner...
Le problème, c'est que je ne sais pas lequel mettre

n°2206542
olivthill
Posté le 12-10-2013 à 01:05:03  profilanswer
 

La demande devient plus clair.  :)  
 
En théorie, il faut simplement faire :

private Main m = new Main();
GenEnd maclasse = new GenEnd(m);


Si ça ne marche pas, par exemple parce que cela ferait une sorte de boucle,
alors prendre la solution qui est indiquée en bas de la page https://forums.bukkit.org/threads/g [...] es.134366/


Message édité par olivthill le 12-10-2013 à 01:05:27
n°2206552
splint33
Posté le 12-10-2013 à 11:07:33  profilanswer
 

Je test ça, et je te dis :)
 
Edit: Avec cela, il appelle bien la méthode GenEnd, mais pas la méthode genCrystal, la plus importante.


Message édité par splint33 le 12-10-2013 à 11:23:11
n°2206565
olivthill
Posté le 12-10-2013 à 13:36:29  profilanswer
 

Ensuite : maclasse.maMethode(param1, param2);
C'est à dire : GenEnd.genCrystal(); ou autrenomdelinstanceGenEnd.genCrystal();

n°2206871
-Sniper-Wo​lf-
☢️ Mercenaire auꭗ RG ☢️
Posté le 16-10-2013 à 11:19:58  profilanswer
 

Attention, GenEnd(Main par0) est un constructeur (=/= méthode), c'est à dire une "fonction" qui construit une instance de la classe GenEnd.
 
Tu ne peux pas appeler genCrystal au début parce qu'il n'y a aucune instance de GenEnd, c'est à dire aucun objet de classe "GenEnd" qui pourrait effectuer cette méthode.
 
C'est pour cela qu'Olivthill t'a dit de créer un objet GenEnd (= faire une instance)
 
GenEnd genEnd= new GenEnd(m);
 
genEnd (minuscule au début, convention) est une variable, c'est un objet, de classe GenEnd (majuscule, convention aussi).
 
Maintenant que tu as un objet représentant de la classe GenEnd, qui en connaît les méthodes, tu peux lui demander, à lui, d'effectuer la méthode genCrystal(), comme dit au dessus :
 
genEnd.genCrystal();
 
Tu n'as rien à mettre entre les parenthèses puisque la description de la méthode genEnd() dans ton message commence par :
 
public void genCrystal()
 
C'est à dire une méthode publique (public), pouvant être appelée de n'importe où (par un représentant de GenEnd bien sûr), qui ne retourne rien (void) et qui ne prend pas de paramètre ( "()" ).


Message édité par -Sniper-Wolf- le 16-10-2013 à 11:24:33

---------------
⮚ Les Archives de Sniper ⮘
| Science!

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Noob] Appeler une méthode

 

Sujets relatifs
[Noob] Quel outil ou méthode de programmation pour ce projet ???Méthode de Runge-Kutta
Bouton a cassé méthode autofillutiliser la méthode POST et load('ur','div') en même temps
changer printf par une autre methodeProblème d'affectation ( methode hongroise )
Pourquoi un ajout obligatoire de méthode avec MouseListener ?Appeler label depuis un autre fichier batch
méthode de recherche récursive d'un noeud en XML avec JDOM 
Plus de sujets relatifs à : [Noob] Appeler une méthode


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR