Command Serveur
-
Bonjours,
Je revient vers vous pour mais commandes via un bouton.
J’ai recu de l’aide de Robin pour se code, le probleme qui reste c’est que sa ecrie bien la command dans la consol mais sa ne l’execute pas.package fr.darkvince.facrpg; import java.awt.Desktop; import java.awt.Menu; import java.io.IOException; import java.net.URI; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiOptions; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.multiplayer.WorldClient; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.resources.I18n; import net.minecraft.command.ICommandSender; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.server.MinecraftServer; import net.minecraft.util.EnumChatFormatting; public class GuiGrade extends GuiScreen { private int xSize; private int ySize; protected int guiLeft; int displayX; int displayY; protected int guiTop; private float xSize_lo; private float ySize_lo; private Minecraft minecraft; private EntityPlayer player; private int field_146445_a; private int field_146444_f; private static final String __OBFID = "CL_00000703"; public GuiGrade(Minecraft minecraft, EntityPlayer entityplayer, GuiScreen par1GuiScreen, InventoryPlayer inventory) { this.displayX = (this.width - this.xSize) / 2; this.displayY = (this.height - this.ySize) / 2; this.xSize = 250; this.ySize = 202; this.mc = minecraft; this.player = entityplayer; } /** * Adds the buttons (and other controls) to the screen in question. */ public void initGui() { this.field_146445_a = 0; this.buttonList.clear(); boolean var1 = true; boolean var2 = true; this.buttonList.add(new GuiButton(0, this.width / 2 + 70, this.height - 110, 98, 20, I18n.format("Druide", new Object[0]))); this.buttonList.add(new GuiButton(1, this.width / 2 + 70,this.height - 80, 98, 20, I18n.format("Paladin", new Object[0]))); this.buttonList.add(new GuiButton(2, this.width / 2 -170,this.height - 80, 98, 20, I18n.format("Mage", new Object[0]))); this.buttonList.add(new GuiButton(3, this.width / 2 -170,this.height - 110, 98, 20, I18n.format("Néogicien", new Object[0]))); this.buttonList.add(new GuiButton(4, this.width / 2 -170,this.height - 50, 98, 20, I18n.format("Guerrier", new Object[0]))); this.buttonList.add(new GuiButton(5, this.width / 2 + 70,this.height - 50, 98, 20, I18n.format("Assasin", new Object[0]))); } protected void actionPerformed(GuiButton p_146284_1_) { switch (p_146284_1_.id) { case 0: Main.message.sendToServer(new MyMessage("/manuadd " + this.mc.getSession().getUsername() + " Druide")); Main.message.sendToServer(new MyMessage("/broadcast " + this.mc.getSession().getUsername() + " A choisi la classe Druide")); player.closeScreen(); player.inventory.setInventorySlotContents(player.inventory.clearInventory(Main.itemGrade, 1), null); this.openUrl("http://ultrafight.fr/"); break; case 1: Main.message.sendToServer(new MyMessage("manuadd " + this.mc.getSession().getUsername() + " Paladin")); Main.message.sendToServer(new MyMessage("broadcast " + this.mc.getSession().getUsername() + " A choisi la classe Paladin")); player.closeScreen(); player.inventory.setInventorySlotContents(player.inventory.clearInventory(Main.itemGrade, 1), null); this.openUrl("http://ultrafight.fr/"); break; case 2: Main.message.sendToServer(new MyMessage("/manuadd " + this.mc.getSession().getUsername() + " Mage")); Main.message.sendToServer(new MyMessage("/broadcast " + this.mc.getSession().getUsername() + " A choisi la classe Mage")); player.closeScreen(); player.inventory.setInventorySlotContents(player.inventory.clearInventory(Main.itemGrade, 1), null); this.openUrl("http://ultrafight.fr/"); break; case 3: Main.message.sendToServer(new MyMessage("/manuadd " + this.mc.getSession().getUsername() + " Neogicien")); Main.message.sendToServer(new MyMessage("/broadcast " + this.mc.getSession().getUsername() + " A choisi la classe Neogicien")); player.closeScreen(); player.inventory.setInventorySlotContents(player.inventory.clearInventory(Main.itemGrade, 1), null); this.openUrl("http://ultrafight.fr/"); break; case 4: Main.message.sendToServer(new MyMessage("/manuadd " + this.mc.getSession().getUsername() + " Guerrier")); Main.message.sendToServer(new MyMessage("/broadcast " + this.mc.getSession().getUsername() + " A choisi la classe Guerrier")); player.closeScreen(); player.inventory.setInventorySlotContents(player.inventory.clearInventory(Main.itemGrade, 1), null); this.openUrl("http://ultrafight.fr/"); break; case 5: Main.message.sendToServer(new MyMessage("/manuadd " + this.mc.getSession().getUsername() + " Assasin")); Main.message.sendToServer(new MyMessage("/broadcast " + this.mc.getSession().getUsername() + " A choisi la classe Assasin")); player.closeScreen(); player.inventory.setInventorySlotContents(player.inventory.clearInventory(Main.itemGrade, 1), null); this.openUrl("http://ultrafight.fr/"); break; } } public void openUrl(String url) { if (Desktop.isDesktopSupported()) { try { URI uri = URI.create(url); Desktop.getDesktop().browse(uri); } catch (IOException e) { e.printStackTrace(); } } } public static void drawPlayerOnGui(Minecraft par0Minecraft, int par1, int par2, int par3, float par4, float par5) { GL11.glEnable(GL11.GL_COLOR_MATERIAL); GL11.glPushMatrix(); GL11.glTranslatef((float)par1, (float)par2, 100.0F); GL11.glScalef((float)(-par3), (float)par3, (float)par3); GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F); float var6 = par0Minecraft.thePlayer.renderYawOffset; float var7 = par0Minecraft.thePlayer.rotationYaw; float var8 = par0Minecraft.thePlayer.rotationPitch; GL11.glRotatef(135.0F, 0.0F, 1.0F, 0.0F); RenderHelper.enableStandardItemLighting(); GL11.glRotatef(-135.0F, 0.0F, 1.0F, 0.0F); GL11.glRotatef(-((float)Math.atan((double)(par5 / 40.0F))) * 20.0F, 1.0F, 0.0F, 0.0F); par0Minecraft.thePlayer.renderYawOffset = (float)Math.atan((double)(par4 / 40.0F)) * 20.0F; par0Minecraft.thePlayer.rotationYaw = (float)Math.atan((double)(par4 / 40.0F)) * 40.0F; par0Minecraft.thePlayer.rotationPitch = -((float)Math.atan((double)(par5 / 40.0F))) * 20.0F; par0Minecraft.thePlayer.rotationYawHead = par0Minecraft.thePlayer.rotationYaw; GL11.glTranslatef(0.0F, par0Minecraft.thePlayer.yOffset, 0.0F); RenderManager.instance.playerViewY = 180.0F; RenderManager.instance.renderEntityWithPosYaw(par0Minecraft.thePlayer, 0.0D, 0.0D, 0.0D, 0.0F, 1.0F); par0Minecraft.thePlayer.renderYawOffset = var6; par0Minecraft.thePlayer.rotationYaw = var7; par0Minecraft.thePlayer.rotationPitch = var8; GL11.glPopMatrix(); RenderHelper.disableStandardItemLighting(); GL11.glDisable(GL12.GL_RESCALE_NORMAL); OpenGlHelper.setActiveTexture(OpenGlHelper.lightmapTexUnit); GL11.glDisable(GL11.GL_TEXTURE_2D); OpenGlHelper.setActiveTexture(OpenGlHelper.defaultTexUnit); } /** * 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) { drawRect(0, this.height - 120, this.width, this.height, -1728053248); drawRect(0, 0, this.width, 15, -1728053248); drawRect(this.width / 2 - 60, this.height - 170, this.width / 2 + 60, this.height - 120, -1728053248); drawRect(this.width / 2 - 50, this.height - 160, this.width / 2 + 50, this.height - 30, 1728053248); String var4 = EnumChatFormatting.AQUA + "Bienvenue sur le menu " + EnumChatFormatting.GREEN + this.mc.getSession().getUsername() + EnumChatFormatting.AQUA + ", choisi ta Classe ?"; this.drawString(this.fontRendererObj, var4, this.width / 2 - this.fontRendererObj.getStringWidth(var4) / 2, 4, -1); drawPlayerOnGui(this.mc, this.width / 2 - 0, this.height - 40, 60, (float)(this.width / 2 + 51) - (float)par1, (float)(this.height + 0 - 100) - (float)par2); super.drawScreen(par1, par2, par3); } }
package fr.darkvince.facrpg; import cpw.mods.fml.common.network.ByteBufUtils; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; import io.netty.buffer.ByteBuf; import net.minecraft.server.MinecraftServer; import net.minecraft.util.ChatComponentText; import net.minecraft.util.ChatComponentTranslation; public class MyMessage implements IMessage { private String text; public MyMessage() { } public MyMessage(String text) { this.text = text; } @Override public void fromBytes(ByteBuf buf) { text = ByteBufUtils.readUTF8String(buf); } @Override public void toBytes(ByteBuf buf) { ByteBufUtils.writeUTF8String(buf, text); } public static class Handler implements IMessageHandler <mymessage, imessage="">{ @Override public IMessage onMessage(MyMessage message, MessageContext ctx) { //MinecraftServer.getServer().getUserMessage(); MinecraftServer.getServer().addChatMessage(new ChatComponentText(message.text)); return null; } } }
Je pense que enfaite on fait juste ecrie un text dans la consol pour sa que sa marche pas donc j’ai chercher pour executé la commande mais rien ne marche</mymessage,>
-
MinecraftServer.getServer().getCommandManager().executeCommand(MinecraftServer.getServer(), message.text);
-
@‘robin4002’:
MinecraftServer.getServer().getCommandManager().executeCommand(MinecraftServer.getServer(), message.text);
Sa marche pas sa execute plus dans la consol
-
J’ai regardé au niveau du code de Minecraft, c’est exactement ce que le serveur fait lorsqu’on entre une commande depuis l’interface.
-
@‘robin4002’:
J’ai regardé au niveau du code de Minecraft, c’est exactement ce que le serveur fait lorsqu’on entre une commande depuis l’interface.
Alors je doit avoir un probleme quelle que part car la y a plus rien qui se passe
-
Si tu fais ça :
MinecraftServer.getServer().getCommandManager().executeCommand(MinecraftServer.getServer(), “say message de test”);
ça fonctionne ? -
@‘robin4002’:
Si tu fais ça :
MinecraftServer.getServer().getCommandManager().executeCommand(MinecraftServer.getServer(), “say message de test”);
ça fonctionne ?Sa marche pas non plus mais je remarquer que dans ma console maintenant sa me mais /help 2 fois
Edit:
Je pense que sa doit marher en faire sa me mais le /help car il va chercher sa
Main.message.sendToServer(new MyMessage(“/manuadd " + this.mc.getSession().getUsername() + " Druide”));
Main.message.sendToServer(new MyMessage(“/broadcast " + this.mc.getSession().getUsername() + " A choisi la classe Druide”));puis mais sa a la suite say message de test
Enfin je pense
-
J’ai pas tout comprit x)
-
@‘robin4002’:
J’ai pas tout comprit x)
Moi non plus je me comprend pas la dessus.
J’ai essayé se que tu ma donner sa ne marche pas non plus.
Mais dans la console du serveur quand j’appuie sur le bouton j’ai de /help qui s’affiche
-
Remets ça :
MinecraftServer.getServer().getCommandManager().executeCommand(MinecraftServer.getServer(), message.text);
Et retires les / de tes commandes. -
Darkvince si la console te dit commande inconnu c’est quel reçoit bien la commande mais qu’il ne la comprend pas, quand tu es sur ta console tu ne met pas le “/”
tu met juste “broadcast nanana” donc comme te le dit robin plus haut si tu enleve le “/” la console va comprendre “/broadcast nanana” et pas “//broadcast nanana” -
@‘robin4002’:
Remets ça :
MinecraftServer.getServer().getCommandManager().executeCommand(MinecraftServer.getServer(), message.text);
Et retires les / de tes commandes.Déjà essayé sa marcher pas tu peut voir que sur le Paladin y a pas de / pour essayé des 2 façon
-
A la place de addChatMessage, essaie : player.sendChatMessage(“/taCommande”);
Dans le handler de ton packet… -
Son but est d’exécuter la commande directement côté serveur en temps que op.
Donc ce que tu proposes n’est pas bon.EDIT :
Le problème vient de ton côté, la fonction que je t’ai donné fait ce qu’il faut.
Code de test :package fr.minecraftforgefrance.test; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.InputEvent; import cpw.mods.fml.common.network.ByteBufUtils; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; import net.minecraft.client.settings.GameSettings; import net.minecraft.server.MinecraftServer; import net.minecraftforge.common.MinecraftForge; @Mod(modid = "test", name = "Test") public class Main { @Instance("test") public static Main instance; public static SimpleNetworkWrapper network; @EventHandler public void init(FMLInitializationEvent event) { FMLCommonHandler.instance().bus().register(this); network = NetworkRegistry.INSTANCE.newSimpleChannel("test"); network.registerMessage(PaquetCommand.Handler.class, PaquetCommand.class, 0, Side.SERVER); } @SubscribeEvent @SideOnly(Side.CLIENT) public void onInput(InputEvent.KeyInputEvent event) { if(GameSettings.isKeyDown(Minecraft.getMinecraft().gameSettings.keyBindSneak)) { System.out.println("sneak !"); network.sendToServer(new PaquetCommand("tp " + Minecraft.getMinecraft().thePlayer.getCommandSenderName() + " 0 128 0")); } } public static class PaquetCommand implements IMessage { private String command; public PaquetCommand(String command) { this.command = command; } public PaquetCommand() { } @Override public void fromBytes(ByteBuf buf) { this.command = ByteBufUtils.readUTF8String(buf); } @Override public void toBytes(ByteBuf buf) { ByteBufUtils.writeUTF8String(buf, this.command); } public static class Handler implements IMessageHandler <paquetcommand, imessage="">{ @Override public IMessage onMessage(PaquetCommand message, MessageContext ctx) { MinecraftServer.getServer().getCommandManager().executeCommand(MinecraftServer.getServer(), message.command); return null; } } } } ```</paquetcommand,>
-
@‘robin4002’:
Son but est d’exécuter la commande directement côté serveur en temps que op.
Donc ce que tu proposes n’est pas bon.EDIT :
Le problème vient de ton côté, la fonction que je t’ai donné fait ce qu’il faut.
Code de test :package fr.minecraftforgefrance.test; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.InputEvent; import cpw.mods.fml.common.network.ByteBufUtils; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; import net.minecraft.client.settings.GameSettings; import net.minecraft.server.MinecraftServer; import net.minecraftforge.common.MinecraftForge; @Mod(modid = "test", name = "Test") public class Main { @Instance("test") public static Main instance; public static SimpleNetworkWrapper network; @EventHandler public void init(FMLInitializationEvent event) { FMLCommonHandler.instance().bus().register(this); network = NetworkRegistry.INSTANCE.newSimpleChannel("test"); network.registerMessage(PaquetCommand.Handler.class, PaquetCommand.class, 0, Side.SERVER); } @SubscribeEvent @SideOnly(Side.CLIENT) public void onInput(InputEvent.KeyInputEvent event) { if(GameSettings.isKeyDown(Minecraft.getMinecraft().gameSettings.keyBindSneak)) { System.out.println("sneak !"); network.sendToServer(new PaquetCommand("tp " + Minecraft.getMinecraft().thePlayer.getCommandSenderName() + " 0 128 0")); } } public static class PaquetCommand implements IMessage { private String command; public PaquetCommand(String command) { this.command = command; } public PaquetCommand() { } @Override public void fromBytes(ByteBuf buf) { this.command = ByteBufUtils.readUTF8String(buf); } @Override public void toBytes(ByteBuf buf) { ByteBufUtils.writeUTF8String(buf, this.command); } public static class Handler implements IMessageHandler <paquetcommand, imessage="">{ @Override public IMessage onMessage(PaquetCommand message, MessageContext ctx) { MinecraftServer.getServer().getCommandManager().executeCommand(MinecraftServer.getServer(), message.command); return null; } } } } ```</paquetcommand,>
Alors la je comprend pas j’ai fait pareil que toi exactement mais sa marche pas
[21:46:51] [Server thread/INFO]: Unknown command. Try /help for a list of commands [21:46:51] [Server thread/INFO]: Unknown command. Try /help for a list of commands
-
Peut-être un bug de la 1.7.2 alors.
Je suis en 1.7.10. -
@‘robin4002’:
Peut-être un bug de la 1.7.2 alors.
Je suis en 1.7.10.Enfaite je code en 1.7.10 car plus fiable mais pour un serveur 1.7.2 sa peut venir de sa peut etre
-
System out se qui est écris dans la console et regarde vois a partir de ça
-
Oui j’ai bien le message qui se mais les autre commands se mais en /help
-
Peut être tu as un mod ou un plugin qui modifie cette commande, non ?