MFF

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

    Savoir si un coffre est vide ou plein

    Planifier Épinglé Verrouillé Déplacé Résolu 1.8.x
    1.8
    37 Messages 4 Publieurs 6.9k Vues 1 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.
    • AmaA Hors-ligne
      Ama
      dernière édition par

      SCAREX, non mon problème persiste toujours !

      Je remet mon code au cas où avec deux trois modif’s

      ​@SideOnly(Side.CLIENT)
      
          @SubscribeEvent
          public void renderContainerMessage(RenderGameOverlayEvent.Text event)
          {    
              MovingObjectPosition movingObjPos = this.mc.thePlayer.rayTrace(2D, event.partialTicks);
      
              int width = event.resolution.getScaledWidth(); //EntityRenderer
      
              int height = event.resolution.getScaledHeight();
      
              EntityPlayer player = Minecraft.getMinecraft().thePlayer;
              World world = Minecraft.getMinecraft().theWorld;
              MovingObjectPosition mov = player.rayTrace(2D, event.partialTicks);
      
              if(this.mc.objectMouseOver != null && mov != null && mov.typeOfHit == MovingObjectType.BLOCK)
              {
                  BlockPos blockpos = this.mc.objectMouseOver.getBlockPos();
                  Block block = world.getBlockState(blockpos).getBlock();
      
              String getOpeningMessage = EnumChatFormatting.BOLD + "Right Click" + EnumChatFormatting.RESET + " to open";
      
              String getContainerBlockName = block.getLocalizedName();
              String isEmpty = "(Empty)";
              String getIfIsLocked = EnumChatFormatting.DARK_RED + "Locked";
      
              TileEntityChest tile = (TileEntityChest)this.mc.theWorld.getTileEntity(blockpos);
              boolean flag = true;
      
                  if((block) instanceof BlockChest)
                  {
                  this.drawCenteredString(this.mc.fontRendererObj, getOpeningMessage, width / 2 + 30, height / 2 + 8, new Color(255,255,255).getRGB());
                  this.drawCenteredString(this.mc.fontRendererObj, getContainerBlockName, width / 2 + 30, height / 2 + 22, new Color(255,255,255).getRGB());
      
                  if(tile.isLocked())
                  {
                  this.drawCenteredString(this.mc.fontRendererObj, getIfIsLocked, width / 2 - 20, height / 2 - 10, new Color(255,255,255).getRGB());
                  }
      
                  for (int i = 0; i < tile.getSizeInventory(); i++)
                  {
                  if (tile.getStackInSlot(i) != null) 
                  {
                  flag = false;
                  }
                  }
                  if(flag)
                  {
                  System.out.println("container vide");
                  }
                  else
                  {
                  System.out.println("container non-vide");
                  }
      
                  }
              }
          }
      

      Si je t'ai filé un coup de main n'oublie pas le + / -
      Par contre évite les demandes d'aides en MP, tu sera sympa'

      La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

      Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

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

        Essaie avec çà plutôt :

        
        ​@SideOnly(Side.CLIENT)
        
        @SubscribeEvent
        public void renderContainerMessage(RenderGameOverlayEvent.Post event)
        {
        if (event.type == RenderGameOverlayEvent.ElementType.TEXT) {
        MovingObjectPosition movingObjPos = this.mc.thePlayer.rayTrace(2D, event.partialTicks);
        
        int width = event.resolution.getScaledWidth(); //EntityRenderer
        
        int height = event.resolution.getScaledHeight();
        
        EntityPlayer player = Minecraft.getMinecraft().thePlayer;
        World world = Minecraft.getMinecraft().theWorld;
        MovingObjectPosition mov = player.rayTrace(2D, event.partialTicks);
        
        if(this.mc.objectMouseOver != null && mov != null && mov.typeOfHit == MovingObjectType.BLOCK)
        {
        BlockPos blockpos = this.mc.objectMouseOver.getBlockPos();
        Block block = world.getBlockState(blockpos).getBlock();
        
        String getOpeningMessage = EnumChatFormatting.BOLD + "Right Click" + EnumChatFormatting.RESET + " to open";
        
        String getContainerBlockName = block.getLocalizedName();
        String isEmpty = "(Empty)";
        String getIfIsLocked = EnumChatFormatting.DARK_RED + "Locked";
        
        TileEntityChest tile = (TileEntityChest)this.mc.theWorld.getTileEntity(blockpos);
        boolean flag = true;
        
        if((block) instanceof BlockChest)
        {
        this.drawCenteredString(this.mc.fontRendererObj, getOpeningMessage, width / 2 + 30, height / 2 + 8, new Color(255,255,255).getRGB());
        this.drawCenteredString(this.mc.fontRendererObj, getContainerBlockName, width / 2 + 30, height / 2 + 22, new Color(255,255,255).getRGB());
        
        if(tile.isLocked())
        {
        this.drawCenteredString(this.mc.fontRendererObj, getIfIsLocked, width / 2 - 20, height / 2 - 10, new Color(255,255,255).getRGB());
        }
        
        for (int i = 0; i < tile.getSizeInventory(); i++)
        {
        if (tile.getStackInSlot(i) != null)
        {
        flag = false;
        }
        }
        if(flag)
        {
        System.out.println("container vide");
        }
        else
        {
        System.out.println("container non-vide");
        }
        
        }
        }
        }
        }
        

        Site web contenant mes scripts : http://SCAREXgaming.github.io

        Pas de demandes de support par MP ni par skype SVP.
        Je n'accepte sur skype que l…

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

          Toujours Pareil

          Si je t'ai filé un coup de main n'oublie pas le + / -
          Par contre évite les demandes d'aides en MP, tu sera sympa'

          La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

          Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

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

            @‘ZeAmateis’:

            Toujours Pareil

            Et si tu mets tout ce code en commentaire ?

            Site web contenant mes scripts : http://SCAREXgaming.github.io

            Pas de demandes de support par MP ni par skype SVP.
            Je n'accepte sur skype que l…

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

              ça marche normalement ^^ Normal non ? ^^’

              Si je t'ai filé un coup de main n'oublie pas le + / -
              Par contre évite les demandes d'aides en MP, tu sera sympa'

              La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

              Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

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

                Dans quelle classe se trouve cette fonction ?

                Après plusieurs tests, voici mes résultats :
                1-Ta fonction est dans une classe Gui (ou GuiScreen), ce qui est une mauvaise manie
                2-Le container est toujours vide car tu récupère un WorldClient et non un WorldServer donc ta tileEntity est vide. Il faut faire une synchronisation client / serveur.

                Site web contenant mes scripts : http://SCAREXgaming.github.io

                Pas de demandes de support par MP ni par skype SVP.
                Je n'accepte sur skype que l…

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

                  une classe ou des events côté clients sont chargés

                  Si je t'ai filé un coup de main n'oublie pas le + / -
                  Par contre évite les demandes d'aides en MP, tu sera sympa'

                  La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

                  Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

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

                    Petit up, une petite idée ?

                    Quel serait le code alors ?

                    @‘SCAREX’:

                    Dans quelle classe se trouve cette fonction ?

                    Après plusieurs tests, voici mes résultats :
                    1-Ta fonction est dans une classe Gui (ou GuiScreen), ce qui est une mauvaise manie
                    2-Le container est toujours vide car tu récupère un WorldClient et non un WorldServer donc ta tileEntity est vide. Il faut faire une synchronisation client / serveur.

                    Si je t'ai filé un coup de main n'oublie pas le + / -
                    Par contre évite les demandes d'aides en MP, tu sera sympa'

                    La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

                    Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

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

                      @‘robin4002’:

                      Envoie le rapport.

                      J’ai fait :

                      for (int i = 0; i < tile.getSizeInventory(); i++)
                      
                                  {
                              System.out.println(tile.getStackInSlot(i));
                      
                                  if (tile.getStackInSlot(i) != null)
                                  {
                                  flag = false;
                                  }
                                  }
                      

                      Le:

                      System.out.println(tile.getStackInSlot(i));
                      

                      Me donne

                      [18:16:59] [Client thread/INFO] [STDOUT]: [fr.zeamateis.tesm.module.client.guis.client.gui.GuiInGame:renderContainerMessage:88]: null

                      Pas normal ?

                      Si je t'ai filé un coup de main n'oublie pas le + / -
                      Par contre évite les demandes d'aides en MP, tu sera sympa'

                      La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

                      Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

                      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

                        Tout le temps ? car normalement comme la boucle va de 0 à la taille de l’inventaire ça devrait afficher plusieurs null.  (et au contraire un truc non null si il y a quelques choses dans le IInventory).

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

                          ça l’affiche tout le temps oui effectivement

                          Si je t'ai filé un coup de main n'oublie pas le + / -
                          Par contre évite les demandes d'aides en MP, tu sera sympa'

                          La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

                          Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

                          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

                            Bon c’est ce que je craignais. Côté client getStackInSlot return toujours null, le client ne sait pas ce qu’il y a dans le coffre temps qu’il ne l’ouvre pas (c’est à ce moment que le contenu est synchronisé).

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

                              Problème résolu grâce à Dermensolf sur IC

                              Si je t'ai filé un coup de main n'oublie pas le + / -
                              Par contre évite les demandes d'aides en MP, tu sera sympa'

                              La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

                              Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

                              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

                                Le code qu’il a donné ne fonctionnera pas sur un serveur dédiée. Il ne fonctionne que en solo.

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

                                MINECRAFT FORGE FRANCE © 2024

                                Powered by NodeBB