Problème de GUI / Commandes / Packets



  • Bonsoir,

    Je ne comprend pas, j'ai un soucis que je n'arrive pas à règler, j'ai créer un gui avec un bouton, lorsque l'on clique dessus,
    cela ferme le Gui et execute une commande dans la console avec un packet, alors cela marche avec le debugger (serveur + client)
    mais sur mon serveur cela ne fonctionne pas et je ne comprend pas pourquoi

    Voici mes classe:

    Classe GuiJobs :

    package fr.askip.testing.gui.f4menu.jobs;
    
    import org.lwjgl.opengl.GL11;
    
    import com.mojang.realmsclient.gui.ChatFormatting;
    
    import fr.askip.testing.Main;
    import fr.askip.testing.gui.CustomButton;
    import fr.askip.testing.gui.f4menu.F4Menu;
    import fr.askip.testing.gui.f4menu.achat.GuiAchats;
    import fr.askip.testing.gui.f4menu.commands.GuiCommands;
    import fr.askip.testing.gui.f4menu.regles.GuiRegles;
    import fr.askip.testing.packets.PacketCmdServer;
    import fr.askip.testing.utils.Refs;
    import net.minecraft.client.Minecraft;
    import net.minecraft.client.gui.GuiButton;
    import net.minecraft.client.gui.GuiScreen;
    import net.minecraft.server.MinecraftServer;
    import net.minecraft.util.ResourceLocation;
    
    public class GuiJobs extends GuiScreen {
    
    int guiWidth = 250;
    int guiHeight = 250;
    
    private ResourceLocation ressource = new ResourceLocation(Refs.MODID + ":textures/gui/menuf4.png");
    
    private int citoyen;
    
    @Override
    public void initGui() {
    
        this.citoyen = 1;
    
    this.buttonList.add(new CustomButton(this.citoyen, this.width / 2 - 19, this.height / 2 - 50, 40, 20, ChatFormatting.GREEN + "- Citoyen"));
    
    }
    
    @Override
    protected void actionPerformed(GuiButton button) {
    
    if(button.id == this.citoyen) {
    Minecraft.getMinecraft().displayGuiScreen(null);
    Main.network.sendToServer(new PacketCmdServer(0));
    
    } 
    
    super.actionPerformed(button);
    }
    
    @Override
    public void drawScreen(int x, int y, float ticks) {
    
    int guiX = (width - guiWidth) / 2;
    int guiY = (height - guiHeight) / 2;
    GL11.glColor4f(1, 1, 1, 1);
    drawDefaultBackground();
    mc.renderEngine.bindTexture(ressource);
    drawTexturedModalRect(guiX, guiY, 0, 0, guiWidth, guiHeight);
    
    super.drawScreen(x, y, ticks);
    }
    
    }
    

    Classe Main :

    package fr.askip.testing;
    
    import cpw.mods.fml.common.Mod;
    import cpw.mods.fml.common.SidedProxy;
    import cpw.mods.fml.common.event.FMLInitializationEvent;
    import cpw.mods.fml.common.event.FMLPostInitializationEvent;
    import cpw.mods.fml.common.event.FMLPreInitializationEvent;
    import cpw.mods.fml.common.event.FMLServerStartingEvent;
    import cpw.mods.fml.common.network.NetworkRegistry;
    import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper;
    import cpw.mods.fml.relauncher.Side;
    import fr.askip.testing.init.CombinedBlocks;
    import fr.askip.testing.listeners.Events;
    import fr.askip.testing.packets.PacketCmdServer;
    import fr.askip.testing.proxy.CommonProxy;
    import fr.askip.testing.utils.Refs;
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.init.Items;
    import net.minecraft.item.Item;
    import net.minecraftforge.common.MinecraftForge;
    
    @Mod(modid = Refs.MODID, name = Refs.MOD_NAME, version = Refs.VERSION)
    public class Main {
    
    @SidedProxy(clientSide = Refs.CLIENT_PROXY, serverSide = Refs.SERVER_PROXY)
    public static CommonProxy proxy;
    public static SimpleNetworkWrapper network;
    
    public static CreativeTabs CombinedTabs = new CreativeTabs("Combined RP") {
    @Override
    public Item getTabIconItem() {
    return Items.apple;
    }
    };
    
    @Mod.EventHandler
    public void onServerStarting(FMLServerStartingEvent e) {
    
    }
    
    @Mod.EventHandler
    public void preInit(FMLPreInitializationEvent e) {
    proxy.preInit(e.getSuggestedConfigurationFile());
    
    CombinedBlocks.init();
    CombinedBlocks.register();
    
    network = NetworkRegistry.INSTANCE.newSimpleChannel("combinedrp:");
    network.registerMessage(PacketCmdServer.Handler.class, PacketCmdServer.class, 0, Side.SERVER);
    }
    
    @Mod.EventHandler
    public void init(FMLInitializationEvent e) {
    proxy.init();
    MinecraftForge.EVENT_BUS.register(new Events());
    }
    
    @Mod.EventHandler
    public void postInit(FMLPostInitializationEvent e) {
    
    }
    
    }
    
    

    Classe PacketCmdServer:

    package fr.askip.testing.packets;
    
    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;
    
    public class PacketCmdServer implements IMessage {
    
    private Integer integer;
    
    public PacketCmdServer() {
    }
    
    public PacketCmdServer(Integer i) {
    this.integer = i;
    }
    
    @Override
    public void fromBytes(ByteBuf buf) {
    this.integer = Integer.valueOf(buf.readInt());
    }
    
    @Override
    public void toBytes(ByteBuf buf) {
    buf.writeInt(this.integer.intValue());
    }
    
    public static class Handler implements IMessageHandler <packetcmdserver, imessage="">{
    
    @Override
    public IMessage onMessage(PacketCmdServer message, MessageContext ctx) {
    switch (message.integer.intValue()) {
    
    //GUI JOBS 1
    
    case 0:
    ctx.getServerHandler().playerEntity.mcServer.getCommandManager().executeCommand(ctx.getServerHandler().playerEntity.mcServer, "citoyen_job " + ctx.getServerHandler().playerEntity.getDisplayName());
    ctx.getServerHandler().playerEntity.mcServer.getCommandManager().executeCommand(ctx.getServerHandler().playerEntity.mcServer, "say Salut " + ctx.getServerHandler().playerEntity.getDisplayName());
    break;
    
    }
    return null;
    }
    
    }
    
    }
    
    

    Cordialement AzTick_</packetcmdserver,>


  • Moddeurs confirmés Rédacteurs Administrateurs

    Salut,
    J'imagine que ton serveur en prod est sous Thermos ou Caudron ?

    Si oui, le système d’exécution de commande n'est pas le même et il n'y a rien qui gère la compatibilité entre le système de base de mc et celui de bukkit.

    Plutôt qu'utiliser un paquet et tenter d'exécuter la commande, envoies un simple message de chat directement depuis le client (avec la même fonction que celle utilisé dans GuiChat).


Log in to reply