MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Souris qui n'apparait pas dans un GUI

    Planifier Épinglé Verrouillé Déplacé Résolu 1.12.x
    1.12.2
    5 Messages 2 Publieurs 309 Vues 2 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • C Hors-ligne
      Cobra45
      dernière édition par Cobra45

      Bonjour, j’ai crée un GUI simple qui affiche une petite texture en haut à gauche de l’écran.
      Cependant, j’aimerai que la souris soit visible (pour cliquer sur des boutons par exemple), mais la souris n’apparaît pas et je comprends pas trop pourquoi.

      Gui

      public class GuiLobby extends GuiScreen {
      	
      	Minecraft mc = Minecraft.getMinecraft();
      	
      	@Override
      	public void drawScreen(int x, int y, float ticks)
      	{
      		mc.getTextureManager().bindTexture(new ResourceLocation(Base.MODID, "textures/gui/texture.png"));
      		mc.ingameGUI.drawTexturedModalRect(0, 0, 0, 0, 50, 50);
      		
      		super.drawScreen(x, y, ticks);
      
      	}
      	
      	@Override
      	public void initGui()
      	{
      		super.initGui();
      	}
      	
      	@Override
      	protected void actionPerformed(GuiButton B)
      	{
      
      	}
      	
      	@Override
      	protected void keyTyped(char typedChar, int KeyCode) throws IOException 
      	{
      		super.keyTyped(typedChar, KeyCode);
      	}
      	
      	@Override
      	protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException 
      	{
      		super.mouseClicked(mouseX, mouseY, mouseButton);
      	}
      	 
      	@Override
      	public void updateScreen() 
      	{
      		super.updateScreen();
      	}
      

      Merci d’avance !

      1 réponse Dernière réponse Répondre Citer 0
      • robin4002R Hors-ligne
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs
        dernière édition par robin4002

        Je comprends donc pourquoi tu as ce souci.

        En faisant ça tu ouvres le gui dans le thread de netty, ce qui cause des problèmes.
        Il faut faire ainsi pour ouvrir le gui dans le thread de Minecraft :

                    IThreadListener thread = FMLCommonHandler.instance().getWorldThread(ctx.netHandler);
                    thread.addScheduledTask(() -> {
                         Minecraft.getMinecraft().displayGuiScreen(new GuiLobby());
                    });
        
        C 1 réponse Dernière réponse Répondre Citer 1
        • robin4002R Hors-ligne
          robin4002 Moddeurs confirmés Rédacteurs Administrateurs
          dernière édition par

          Bonsoir,

          Tu ouvres comment le gui ?

          1 réponse Dernière réponse Répondre Citer 0
          • C Hors-ligne
            Cobra45
            dernière édition par Cobra45

            Bonsoir,
            avec une commande qui envoi un packet et qui ouvre le GUI.

            Commande

            public class Commands extends CommandBase {
            	
                @Override
                public String getName() {
                    return "gui";
                }
                
            	@Override
            	public String getUsage(ICommandSender sender) {
            		return null;
            	}
                
                @Override
                public boolean checkPermission(MinecraftServer server, ICommandSender sender) {
                    return true;
                }
                
                @Override
                public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
                    if(sender instanceof EntityPlayer) {;
                    	if(args[0].matches("lobby")) {
                    		Base.network.sendTo(new PacketGui(args[0], "", ""), (EntityPlayerMP) sender);
                    	}
            

            Packet

            public class PacketGui implements IMessage {
            	
            private static String arg1, arg2, arg3;
            
            public PacketGui() { }
            
            public PacketGui(String arg1, String arg2, String arg3) {
            	this.arg1 = arg1;
            	this.arg2 = arg2;
            	this.arg3 = arg3;
            }
            
            @Override
            public void fromBytes(ByteBuf buf) {
            	arg1 = ByteBufUtils.readUTF8String(buf);
            	arg2 = ByteBufUtils.readUTF8String(buf);
            	arg3 = ByteBufUtils.readUTF8String(buf);
            }
            
            @Override
            public void toBytes(ByteBuf buf) {
            	ByteBufUtils.writeUTF8String(buf, arg1);
            	ByteBufUtils.writeUTF8String(buf, arg2);
            	ByteBufUtils.writeUTF8String(buf, arg3);
            }
            
            public static class Handler implements IMessageHandler<PacketGui, IMessage> {
            
            @SideOnly(Side.CLIENT)
            @Override
            public IMessage onMessage(PacketGui message, MessageContext ctx) {
            	
            	if(arg1.equals("lobby")) {
            		Minecraft.getMinecraft().displayGuiScreen(new GuiLobby());
            	}
                    return null;
            }
            }
            
            1 réponse Dernière réponse Répondre Citer 0
            • robin4002R Hors-ligne
              robin4002 Moddeurs confirmés Rédacteurs Administrateurs
              dernière édition par robin4002

              Je comprends donc pourquoi tu as ce souci.

              En faisant ça tu ouvres le gui dans le thread de netty, ce qui cause des problèmes.
              Il faut faire ainsi pour ouvrir le gui dans le thread de Minecraft :

                          IThreadListener thread = FMLCommonHandler.instance().getWorldThread(ctx.netHandler);
                          thread.addScheduledTask(() -> {
                               Minecraft.getMinecraft().displayGuiScreen(new GuiLobby());
                          });
              
              C 1 réponse Dernière réponse Répondre Citer 1
              • C Hors-ligne
                Cobra45 @robin4002
                dernière édition par

                @robin4002 Merci, effectivement ça fonctionne maintenant

                1 réponse Dernière réponse Répondre Citer 0
                • 1 / 1
                • Premier message
                  Dernier message
                Design by Woryk
                ContactMentions Légales

                MINECRAFT FORGE FRANCE © 2024

                Powered by NodeBB