Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme dans mon plugin minecraft 1.8.8

C est un plugin NuzlockeUHC

17 mai 2018 à 15:41:04

En gros comme vous avez pu le voir dans le titre je cree un plugin NuzlockeUHC pour ceux qui connaissent pas c'est un UHC avec les types de pokemons sauf que quand je veux random les types attribuer a chacun sachant que chaque personne a un type different mais ce code ne marche pas svp aidez moi genre ca fait une heure que j essaye de le debug. Voici mon code.

Explications : 

TypeList est le nom de ma classe enum ou il y a la liste des types avec genre leur couleur dans le tab leur prefix et tout.

playerInGame est la liste des joueurs que je recupere lorqu un joueur se co.

Merci d'avance pour avoir lu et essaye de resoudre mon probleme.

Si vous avez besoin de quelque chose d'autre j essayerai de vous repondre au plus vite !

-
Edité par Djphenix22 20 mai 2018 à 15:36:12

  • Partager sur Facebook
  • Partager sur Twitter
17 mai 2018 à 15:57:44

Bonjour,

Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

Pour plus d'informations, nous vous invitons à lire les règles générales du forum

Merci d'utiliser la mise en forme de code Image

Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour celà, il faut utiliser le bouton Image de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: c;">Votre code ici</pre>.

Mauvais titre

Le titre est un élément important qui ne doit pas être négligé. N'oubliez pas cette règle simple : le titre idéal résume la question que vous allez poser en une petite phrase. Il doit permettre aux visiteurs de se repérer facilement dans le forum visité et d'identifier le sujet à sa seule lecture.

Vous pouvez utiliser divers préfixes comme [Erreur], [MySQL], [Compatibilité], etc... Aussi, pensez à consulter les règles propres à chaque forum (visibles dans les topics épinglés en haut des sections).

De plus, choisir un bon titre permet de rendre plus faciles les recherches des autres membres.

Les titres de type "besoin d'aide" ou "problème" ne sont pas tolérés.

Pour modifier votre titre, éditez le premier message de votre sujet.

Pas d'urgence dans le forum d'OC

Vous êtes sur un forum d'entraide, pas sur un site de service. Ici les intervenants vous répondent quand ils le veulent, s'ils le veulent, sans aucune obligation. Aussi, ce genre d'indications rendent le forum moins agréable à utiliser et moins équitable. De ce fait, les mentions de quelconque "urgence" ne sont pas admises sur ce forum. La meilleure façon d'avoir de l'aide rapidement ici est de fournir toutes les informations nécessaires et de les présenter correctement. N'hésitez pas à lire les règles épinglés en haut des sections du forum, elles indiquent généralement ce qui est nécessaire.

  • Partager sur Facebook
  • Partager sur Twitter

Pas d'aide concernant le code par MP, le forum est là pour ça :)

18 mai 2018 à 14:58:04

Salut,

Je peux peut-être t'aider à résoudre les erreurs mais il faudrait que tu postes les erreurs que tu reçois dans la console.

  • Partager sur Facebook
  • Partager sur Twitter
Contrôleur programmeur des finances publiques depuis le 01/10/18
20 mai 2018 à 9:02:18

Bonjour Florent,

J avais oublie de poster comment j'executer la methode du premier poste et je fais cela grace a une commande. Voici son code:

	public Type(NuzlockeUHC nuzlockeUHC) {
		this.nuzlockeUHC = nuzlockeUHC;
	}

	public boolean onCommand(CommandSender s, Command c, String l, String[] a) {
		if(c.getName().equalsIgnoreCase("pkmn")){
			if(a[0].equalsIgnoreCase("type")){
				if(a[1].equalsIgnoreCase("set")){
					if(a[2].equalsIgnoreCase("random")){
						if(s instanceof Player){
							if(nuzlockeUHC.hasPowerInf((Player)s, 90))return sendMessage(s, "§cVous n'avez la permission de faire cela.");
						    }
						
						    if(a.length > 3){
						    	return sendMessage(s, "§c/pkmn type set random");
						    	}
						    for(UUID uuid2 : NuzlockeUHC.getInstance().playerInGame){
						    	Player pl2 = Bukkit.getPlayer(uuid2);
						    	NuzlockeUHC.getInstance().setRandomType(pl2);
						    	return true;
						    }
						
						    
					}
					
				}
				
			}

		}
		
		return true;
	}

public boolean sendMessage(CommandSender s, String msg){
		s.sendMessage(nuzlockeUHC.getPrefix()+msg);
		return true;
	}

Comme tu me l as demande voici la console:

-
Edité par Djphenix22 20 mai 2018 à 15:38:38

  • Partager sur Facebook
  • Partager sur Twitter
20 mai 2018 à 9:09:35

Bonjour,

merci de prendre en compte mon message plus haut, les titres en gros en gras et centrés ne sont pas là pour faire joli.

  • Partager sur Facebook
  • Partager sur Twitter

Pas d'aide concernant le code par MP, le forum est là pour ça :)

20 mai 2018 à 15:37:42

Bonjour Lamecarlate,

Je ne savais pas qu'on pouvais changer le titre si cela ne te convient toujours pas merci de m'en faire part par mp.

Encore désolé.

  • Partager sur Facebook
  • Partager sur Twitter
20 mai 2018 à 16:32:23

Ton erreur se situe dans la classe Type, méthode onCommand(), à la ligne 40. Une NullPointerException est levée. Je t'invite à re-vérifier cette ligne et à la recopier ici vu que je ne sais pas laquelle il s'agit... 

  • Partager sur Facebook
  • Partager sur Twitter
Contrôleur programmeur des finances publiques depuis le 01/10/18
23 mai 2018 à 16:11:13

Bonjour Florent,

Désolé d'avoir pris autant de temps mais j ai de gros problemes de connexion en ce moment donc comme tu me l as demandé.

Voici la 40eme ligne:

						    for(UUID uuid2 : NuzlockeUHC.getInstance().playerInGame){
						    	Player pl2 = Bukkit.getPlayer(uuid2);
						    	NuzlockeUHC.getInstance().setRandomType(pl2);
						    	return true;
						    }

La premiere ligne que j ai envoye est la 40eme.

NuzlockeUHC.getInstance me permet de recuperer la classe NuzlockeUHC.

Encore merci de vouloir m'aider et a bientot.

  • Partager sur Facebook
  • Partager sur Twitter
23 mai 2018 à 20:00:08

Salut,

Lorsque tu récupères le joueur en utilisant la méthode getPlayer() de Bukkit, il faut toujours vérifier qu'il n'est pas null. En particulier parce que la méthode renvoie null si le joueur existe mais qu'il n'est pas connecté. A tous les coups tu es dans ce cas de figure.

Je ne comprends pas à quoi sert "NuzlockeUHC.getInstance().playerInGame". Pour récupérer les joueurs connectés, il existe déjà Bukkit.getOnlinePlayers(), pourquoi n'utilises-tu pas cette méthode ???

Je ne comprends pas non plus ta méthode setRandomType(). Tu prends un joueur en paramètre donc a priori tu comptes agir sur un seul joueur. Mais derrière tu fais 50 boucles pour agir sur tous les joueurs.

Bref en résumé, je ne comprends la logique de ton plugin. Pour moi le plus simple serait de repartir de 0 et de tout refaire étapes par étapes. Pourquoi ne pas simplement utiliser l’événement PlayerJoinEvent et donner un type à la connexion ? En le gardant en mémoire dans une hashmap. Ce serait beaucoup plus simple et compréhensible...

  • Partager sur Facebook
  • Partager sur Twitter
Contrôleur programmeur des finances publiques depuis le 01/10/18
23 mai 2018 à 20:17:29

Merci de ta réponse Florent,

Je n'utilise pas la méthode Bukkit.getOnlinePlayers car il y a des joueurs connectes qui vont juste etre spectateur.

Lorsqu'il se connecte le joueur a le type de base Inconnu. Mais j ai une commande /pkmn type set Player Type qui me permet de changer le type du joueur. Et ce type est sauvegardé dans ma config que j ai cree pas celle de base.

Je n'ai pas compris ce que tu voulais dire dans le 3eme paragraphe. Pourquoi ferais-je 50 boucle est ce que ca ne fait pas juste le randomType pour chaque joueur et que des que ca a random tout les joueur cela se stop?

Encore merci pour ton aide.

  • Partager sur Facebook
  • Partager sur Twitter