Résolu Envoyer commande en jeu en cliquant sur un bouton
-
Je suis en 1.7.2
et l’erreur est “player cannot be resolved”
j’ai remarqué aussi que dans la classe ServerConfigurationManager il n 'y a pas de méthode appelée func_152596_g… -
faut voir ca avec kevin
-
Car 1.7.2 il n’y a pas encore le système de game profile, la méthode s’appelle surement autrement.
-
d’accord, je viens de voir que cette méthode était pour la 1.7.10 !
du coup, j’ai trouvé une autre ligne qui fait la meme chose mais avec une autre méthode :if ( MinecraftServer.getServer().getConfigurationManager().isPlayerOpped(player.getDisplayName()) )
mais le problème est le même au niveau du “player” !
-
Tu sais envoyer la classe dans la qu’elle tu met cela s’il te plait je pense savoir
-
C’est une classe modifiée et qui n’est pas finie mais voici la partie intéressante :
package fr.used2craft.launcher.proxy; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiMainMenu; import net.minecraft.client.gui.GuiOptions; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiShareToLan; import net.minecraft.client.gui.achievement.GuiAchievements; import net.minecraft.client.gui.achievement.GuiStats; import net.minecraft.client.multiplayer.WorldClient; import net.minecraft.client.resources.I18n; import net.minecraft.server.MinecraftServer; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class GuiCustomInGameMenu extends GuiScreen { private int field_146445_a; private int field_146444_f; private static final String __OBFID = "CL_00000703"; private int niveau = 0 /** * Adds the buttons (and other controls) to the screen in question. */ public void initGui() { this.buttonList.clear(); if (niveau == 0) { this.field_146445_a = 0; byte b0 = -16; boolean flag = true; this.buttonList.add(new GuiButton(1, this.width / 2 - 100, this.height / 4 + 120 + b0, I18n.format("menu.returnToMenu", new Object[0]))); if (!this.mc.isIntegratedServerRunning()) { ((GuiButton)this.buttonList.get(0)).displayString = I18n.format("menu.disconnect", new Object[0]); } this.buttonList.add(new GuiButton(4, this.width / 2 - 100, this.height / 4 + 24 + b0, I18n.format("menu.returnToGame", new Object[0]))); this.buttonList.add(new GuiButton(0, this.width / 2 - 100, this.height / 4 + 96 + b0, 98, 20, I18n.format("menu.options", new Object[0]))); //this.buttonList.add(new GuiButton(12, this.width / 2 + 2, this.height / 4 + 96 + b0, 98, 20, "Mod Options…")); GuiButton guibutton; this.buttonList.add(guibutton = new GuiButton(7, this.width / 2 - 100, this.height / 4 + 72 + b0, 200, 20, I18n.format("menu.shareToLan", new Object[0]))); this.buttonList.add(new GuiButton(5, this.width / 2 - 100, this.height / 4 + 48 + b0, 98, 20, I18n.format("gui.achievements", new Object[0]))); this.buttonList.add(new GuiButton(6, this.width / 2 + 2, this.height / 4 + 48 + b0, 98, 20, I18n.format("gui.stats", new Object[0]))); guibutton.enabled = this.mc.isSingleplayer() && !this.mc.getIntegratedServer().getPublic(); } this.newMenu(); } public void newMenu() { if ( MinecraftServer.getServer().getConfigurationManager().isPlayerOpped(player.getDisplayName()) ) { //Ici le code a exécuter si le joueur est op } } protected void actionPerformed(GuiButton p_146284_1_) { switch (p_146284_1_.id) { case 0: this.mc.displayGuiScreen(new GuiOptions(this, this.mc.gameSettings)); break; case 1: p_146284_1_.enabled = false; this.mc.theWorld.sendQuittingDisconnectingPacket(); this.mc.loadWorld((WorldClient)null); this.mc.displayGuiScreen(new GuiMainMenu()); case 2: case 3: default: break; case 4: this.mc.displayGuiScreen((GuiScreen)null); this.mc.setIngameFocus(); break; case 5: if (this.mc.thePlayer != null) this.mc.displayGuiScreen(new GuiAchievements(this, this.mc.thePlayer.getStatFileWriter())); break; case 6: if (this.mc.thePlayer != null) this.mc.displayGuiScreen(new GuiStats(this, this.mc.thePlayer.getStatFileWriter())); break; case 7: this.mc.displayGuiScreen(new GuiShareToLan(this)); break; //case 12: //FMLClientHandler.instance().showInGameModOptions(this); //break; case 8: mc.thePlayer.sendChatMessage((new StringBuilder()).append("/gm 1").toString()); //Envoie une commande dans le chat qui est /gm mc.thePlayer.closeScreen(); //Ferme le gui break; } } /** * Called from the main game loop to update the screen. */ public void updateScreen() { super.updateScreen(); ++this.field_146444_f; } /** * Draws the screen and all the components in it. */ public void drawScreen(int par1, int par2, float par3) { String test = String.valueOf(niveau); this.drawDefaultBackground(); if (niveau == 0) this.drawCenteredString(this.fontRendererObj, "Game menu", this.width / 2, 40, 16777215); super.drawScreen(par1, par2, par3); } }
Je pense qu’il faut mettre le nom du joueur en string dans la variable player mais je cherche le code pour le récupérer…
-
Je ne suis pas un pro pro , donc j’essaye d’aider mais je ne garantie rien , si tu change cette ligne :
public void newMenu()
par
public void newMenu(Player player)
et import le Player est-ce que tout est résolu niveau erreurs ?
Je ne garantis rien J’essaye de moi même trouver les erreurs et j’essaye de corriger…
-
effectivement, ça fonctionne mieux mais maintenant c’est la méthode getDisplayName qui n’est pas reconnue parce qu’il me semble que ce n’est plus celle la, mais j’arrive pas à retrouver la méthode qui récupère le nom du joueur
-
Esssaye de remplacer le code par celui-ci:
public void newMenu(EntityPlayer entityplayer) { byte b0 = -16; if ( MinecraftServer.getServer().getConfigurationManager().isPlayerOpped((entityplayer.getDisplayName()))) { } }
Cher moi je n’ai plus d’erreur , j’espère ne pas te faire perdre ton temps ^^
-
Ouep, j’ai plus d’erreur !!
Merci grandement ^^
par contre, j’ai un souci au niveau de l’appel de la méthode dans mon autre méthode mais je pense pouvoir régler ce problème…
je m’y remettrai demainmerci encore
-
Pas de soucis content que ca marche , n’hésite pas tester sur ton serveur avec une bête fonction du genre drop d’item pour voir si le bouton marche bien pour vérifier si le joueur est op etc , fin pour que tous soit ok
De rien
-
Ça ne fonctionnera pas.
MinecraftServer.getServer() n’existe que côté serveur, sur un gui ça va crasher.
Il n’est pas possible de savoir si un joueur est op depuis le menu principal. -
Arf, ok
J’aurais essayé !
Merci quand même pour le coup de main ! -
si il y a un moyen, faut que tu fasse un mod serveur qui check la liste des op et l’écris sur ton site internet, et la tu pourra ensuite récupérer la liste et regarder si le joueur est dedans
-
Ou tu utilise un packet …., le client demande si le joueur est op et le serveur lui répond.
-
Mouai, je m’y remettrai peut être plus tard, mais pour le moment, je pense que je vais laisser tomber !
Je chercherais du coté des packets quand je m’y remettrais (si je m’y remet ^^)
Merci encore