• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Résolu Anti Xray?

    1.7.x
    1.7.10
    8
    50
    8954
    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.
    • Maxx_Qc
      Maxx_Qc dernière édition par

      Salut à tous, je cherche un bloc anti stone transparent (anti xray pour les hacks et textures pack).
      Il y a celui-ci mais il ne fonctionne pas en 1.7.10 (sauf si j’ai fait une fausse manip) : http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/1288033-1-7-2-1-6-2-admin-anti-transparent-anti-xray
      Merci de votre aide

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

        Salut,
        Pourquoi avoir posté dans support pour les moddeurs ? Il n’y a aucun rapport avec la programmation, si ?
        Le mod modifie directement les fichiers de Minecraft, ce qui n’est pas bon, c’est pour ça qu’il ne fonctionne pas.
        Il faudrait son code source pour le mettre à jour.

        ÉDIT : en fait je crois savoir comment faire sans modifier les classes de Minecraft. Il faudrait vérifier que les blocs de base (terre, herbe, stone) ne contiennent pas de transparence. Si c’est le cas on kick le client.
        Ça va m’être utile pour NHG ça, je vais voir pour coder ça dans la soiré ou demain et je te passe le code (du-coup maintenant je comprends l’intérêt de mettre cette demande dans support pour les moddeurs).

        1 réponse Dernière réponse Répondre Citer 0
        • Maxx_Qc
          Maxx_Qc dernière édition par

          @‘robin4002’:

          Salut,
          Pourquoi avoir posté dans support pour les moddeurs ? Il n’y a aucun rapport avec la programmation, si ?
          Le mod modifie directement les fichiers de Minecraft, ce qui n’est pas bon, c’est pour ça qu’il ne fonctionne pas.
          Il faudrait son code source pour le mettre à jour.

          ÉDIT : en fait je crois savoir comment faire sans modifier les classes de Minecraft. Il faudrait vérifier que les blocs de base (terre, herbe, stone) ne contiennent pas de transparence. Si c’est le cas on kick le client.
          Ça va m’être utile pour NHG ça, je vais voir pour coder ça dans la soiré ou demain et je te passe le code (du-coup maintenant je comprends l’intérêt de mettre cette demande dans support pour les moddeurs).

          Merci à toi de ton aide, que ce soit un mod ou bien que ce soit des classes qui modifie le code source directement ça ne me dérange pas en fait tant que ça fonctionne.
          D’accord, j’attends patiemment alors, reviens moi vite là-dessus 🙂
          Cordialement, Maxx_Qc

          1 réponse Dernière réponse Répondre Citer 0
          • RedRelay
            RedRelay Moddeurs confirmés dernière édition par

            N’importe qui peut changer la texture de ses blocs en une image transparente, tu ne peux pas empêcher ça.
            Le serveur envoie au client une copie partiel du monde, donc le seul moyen que tu puisse avoir, c’est réécrire tout le système de synchronisation du monde client/serveur pour n’envoyer que les blocs visibles par le client.

            –------------------------------------------------------------------------------------
            Si tu trouves mon intervention pertinente, n'hésite pas a m…

            1 réponse Dernière réponse Répondre Citer 0
            • Maxx_Qc
              Maxx_Qc dernière édition par

              @‘Blackout’:

              N’importe qui peut changer la texture de ses blocs en une image transparente, tu ne peux pas empêcher ça.
              Le serveur envoie au client une copie partiel du monde, donc le seul moyen que tu puisse avoir, c’est réécrire tout le système de synchronisation du monde client/serveur pour n’envoyer que les blocs visibles par le client.

              On peut empêcher ça, va voir le lien du poste initial.
              Mon serveur est moddé et sous launcher donc pas besoin de synchro client/serveur.

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

                L’objectif est de faire ça côté client dans un mod qui sera préinstallé sur le client et nécessaire pour se connecter sur le serveur (puisque des blocs et items sont présents dans le mod).
                Après si la personne qui souhaiter tricher est compétente elle peut s’amuser à modifier le mod via ASM mais la probabilité qu’un joueur est les compétences pour et l’envie de tricher est franchement faible voire nul.

                Je suis du-coup à la recherche d’un moyen pour get l’alpha d’une texture. Si quelqu’un a une idée.

                1 réponse Dernière réponse Répondre Citer 0
                • Maxx_Qc
                  Maxx_Qc dernière édition par

                  @‘robin4002’:

                  L’objectif est de faire ça côté client dans un mod qui sera préinstallé sur le client et nécessaire pour se connecter sur le serveur (puisque des blocs et items sont présents dans le mod).
                  Après si la personne qui souhaiter tricher est compétente elle peut s’amuser à modifier le mod via ASM mais la probabilité qu’un joueur est les compétences pour et l’envie de tricher est franchement faible voire nul.

                  Sur mon serveur le launcher purge les mods et aussi il est compliqué de décompiler mon mod 😛
                  C’est rare que ceux qui veulent vraiment gâcher le jeu vont se rendre au point de modifier un mod, surtout que la plupart sont jeunes et ne connaissent rien en code/programmation comme que tu l’as dit.

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

                        public static boolean hasIllegalTexture()
                        {
                            ResourceLocation r = new ResourceLocation("minecraft:textures/blocks/stone.png");
                            ITextureObject textureObject = Minecraft.getMinecraft().getTextureManager().getTexture(r );
                            if(textureObject == null)
                            {
                                textureObject = new SimpleTexture(r);
                                Minecraft.getMinecraft().getTextureManager().loadTexture(r, textureObject);
                            }
                            int id = textureObject.getGlTextureId();
                            try
                            {
                                int[] textureData = TextureUtil.readImageData(Minecraft.getMinecraft().getResourceManager(), r);
                                for(int color : textureData)
                                {
                                    int alpha = color >> 24 & 0xFF;
                                    if(alpha != 255)
                                    {
                                        return true;
                                    }
                                }
                            }
                            catch(IOException e)
                            {
                                e.printStackTrace();
                            }
                            return false;
                        }
                    

                    J’ai fait ça en 1.8.9 donc dit-moi si ça fonctionne aussi en 1.7.10, si ce n’est pas le cas j’irai voir comment adapter.
                    La fonction renvoie false si c’est bon, true si c’est pas bon.
                    Je check la stone, tu peux faire de même avec l’herbe et la terre si besoin.

                    1 réponse Dernière réponse Répondre Citer 0
                    • Maxx_Qc
                      Maxx_Qc dernière édition par

                      @‘robin4002’:

                          public static boolean hasIllegalTexture()
                          {
                              ResourceLocation r = new ResourceLocation("minecraft:textures/blocks/stone.png");
                              ITextureObject textureObject = Minecraft.getMinecraft().getTextureManager().getTexture(r );
                              if(textureObject == null)
                              {
                                  textureObject = new SimpleTexture(r);
                                  Minecraft.getMinecraft().getTextureManager().loadTexture(r, textureObject);
                              }
                              int id = textureObject.getGlTextureId();
                              try
                              {
                                  int[] textureData = TextureUtil.readImageData(Minecraft.getMinecraft().getResourceManager(), r);
                                  for(int color : textureData)
                                  {
                                      int alpha = color >> 24 & 0xFF;
                                      if(alpha != 255)
                                      {
                                          return true;
                                      }
                                  }
                              }
                              catch(IOException e)
                              {
                                  e.printStackTrace();
                              }
                              return false;
                          }
                      

                      J’ai fait ça en 1.8.9 donc dit-moi si ça fonctionne aussi en 1.7.10, si ce n’est pas le cas j’irai voir comment adapter.
                      La fonction renvoie false si c’est bon, true si c’est pas bon.
                      Je check la stone, tu peux faire de même avec l’herbe et la terre si besoin.

                      Tu utilises quel(s) event(s)?
                      Sinon merci 😄
                      Je vais tester ça
                      Cordialement

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

                        Alors moi j’ai appelé cette fonction dans ClientTickEvent (avec un timer pour éviter que ce soit appelé tous les ticks).
                        J’ai fais comme ça car mon code est un peu différent :

                           public static boolean hasIllegalTexture()
                           {
                               TextureAtlasSprite sprite = Minecraft.getMinecraft().getBlockRendererDispatcher().getBlockModelShapes().getTexture(Blocks.stone.getDefaultState());
                        
                               if(sprite != null)
                               {
                        
                                   String iconName = sprite.getIconName();
                                   String[] strs = iconName.split(":");
                                   if(strs.length > 1)
                                   {
                                       String resource = strs[0] + ":textures/" + strs[1] + ".png";
                                       ResourceLocation r = new ResourceLocation(resource);
                                       ITextureObject textureObject = Minecraft.getMinecraft().getTextureManager().getTexture(r);
                                       if(textureObject == null)
                                       {
                                           textureObject = new SimpleTexture(r );
                                           Minecraft.getMinecraft().getTextureManager().loadTexture(r, textureObject);
                                       }
                                       int id = textureObject.getGlTextureId();
                                       try
                                       {
                                           int[] textureData = TextureUtil.readImageData(Minecraft.getMinecraft().getResourceManager(), r);
                                           for(int color : textureData)
                                           {
                                               int alpha = color >> 24 & 0xFF;
                                               if(alpha != 255)
                                               {
                                                   return true;
                                               }
                                           }
                                       }
                                       catch(IOException e)
                                       {
                                           e.printStackTrace();
                                       }
                                   }
                               }
                               return false;
                           }
                        

                        Comme en 1.8 un pack de ressource peut via le json changer le chemin des textures je ne voulais pas prendre de risque avec directement un resourcelocation, je passe par
                               TextureAtlasSprite sprite = Minecraft.getMinecraft().getBlockRendererDispatcher().getBlockModelShapes().getTexture(Blocks.stone.getDefaultState());
                        pour avoir le chemin de la texture.
                        Le problème c’est que ça me retourne un missing texture si j’appelle ça dans l’event TextureSwitch ou dans postInit. D’où mon message par ClientTickEvent qui n’est pas forcement le plus optimal. J’ai du-coup fait que ça coupe la connexion et affiche un gui custom :

                                   if(this.cheatTimer <= 0)
                                   {
                                       if(CheatBlocker.hasIllegalTexture() && this.mc.theWorld != null)
                                       {
                                           this.mc.theWorld.sendQuittingDisconnectingPacket();
                                           this.mc.loadWorld((WorldClient)null);
                                           this.mc.displayGuiScreen(new GuiIllegalResourcePack());
                                       }
                                       this.cheatTimer = 600;
                                   }
                                   else
                                   {
                                       this.cheatTimer–;
                                   }
                        

                        Dans ton cas tu peux check dans l’event TextureSwitchEvent, ça me semble la meilleur idée comme il est appelé lors du changement de pack de ressource.
                        Si mc.theWorld n’est pas null tu coupe la connexion, sinon ça veut dire que le joueur n’est pas un jeu et donc tu peux faire une variable booléenne cheat sur true et faire que si cette boolean est sur true le bouton de connexion au serveur est off.

                        1 réponse Dernière réponse Répondre Citer 1
                        • Maxx_Qc
                          Maxx_Qc dernière édition par

                          Sauf que le problème c’est que le joueur peut définir le texture pack depuis le fichier options

                          1 réponse Dernière réponse Répondre Citer 0
                          • DiabolicaTrix
                            DiabolicaTrix Correcteurs Moddeurs confirmés dernière édition par

                            Dans ce cas, tu peux le vérifier au lancement du jeu ou à la connexion au serveur.

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

                              @‘robin4002’:

                              Dans ton cas tu peux check dans l’event TextureSwitchEvent, ça me semble la meilleur idée comme il est appelé lors du changement de pack de ressource.
                              Si mc.theWorld n’est pas null tu coupe la connexion, sinon ça veut dire que le joueur n’est pas un jeu et donc tu peux faire une variable booléenne cheat sur true et faire que si cette boolean est sur true le bouton de connexion au serveur est off.

                              Les deux situations sont couvertes. S’il est en jeu tu le kick. S’il n’était pas en jeu tu bloque la connexion au serveur.

                              1 réponse Dernière réponse Répondre Citer 0
                              • RedRelay
                                RedRelay Moddeurs confirmés dernière édition par

                                @‘Maxx_Qc’:

                                @‘Blackout’:

                                N’importe qui peut changer la texture de ses blocs en une image transparente, tu ne peux pas empêcher ça.
                                Le serveur envoie au client une copie partiel du monde, donc le seul moyen que tu puisse avoir, c’est réécrire tout le système de synchronisation du monde client/serveur pour n’envoyer que les blocs visibles par le client.

                                On peut empêcher ça, va voir le lien du poste initial.
                                Mon serveur est moddé et sous launcher donc pas besoin de synchro client/serveur.

                                Non, le post initial considère le client comme étant un joueur gentils. Ça va te filtrer uniquement les petits trolls à 2 balles.
                                Tu n’as même pas besoin de texture pack ou de quoi que se soit de visuel pour déterminer l’emplacement des minerais, donjons, coffres etc …
                                Un simple sniffer ou un simple mod qui permet de d’analyser les blocs du monde via un world.getBlockState() suffit. Et ça, pas besoin d’être expert pour le faire.
                                Ensuite quand quelqu’un triche, il fait rarement son X-Ray lui-même. Il télécharge un soft de triche qui est fait par quelqu’un de compétent et qui sait déjouer se genre de sécurité très facilement.
                                Tu n’as donc AUCUN moyen sûr d’empêcher un tricheur déterminé d’utiliser un X-Ray.

                                La seule chose que tu puisses mettre en place, ce sont des outils de surveillance comportementale pour détecter quand un joueur triche.

                                –------------------------------------------------------------------------------------
                                Si tu trouves mon intervention pertinente, n'hésite pas a m…

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

                                  En effet arrêter quelqu’un de déterminé et compétente est impossible dans ce cas.

                                  Mais l’utilisateur normal qui veut tricher va tenter l’installation d’un pack de ressource et l’installation d’un mod xray.
                                  Les deux cas peuvent être bloqué, le premier avec mon petit code et l’autre avec un launcher ou installateur qui supprime les mods intrus.

                                  Quelqu’un de compétent ira plus long en cherchant un moyen pour contourner la suppression de mod intrus (pas trop compliqué à notre niveau, il suffit juste de reprendre les mods et les lancer depuis le launcher officiel et s’il y a quelque chose qui empêche de lancer le jeu si ce n’est pas fait depuis l’installateur/le launcher du serveur c’est toujours contournable).
                                  Voire si la personne est vraiment motivé s’amuser à regarder directement ce qui se trouve dans la ram (ou directement regarder les valeurs qui se trouve dans le heap de la JVM si c’est possible).

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • Maxx_Qc
                                    Maxx_Qc dernière édition par

                                    @‘Blackout’:

                                    @‘Maxx_Qc’:

                                    @‘Blackout’:

                                    N’importe qui peut changer la texture de ses blocs en une image transparente, tu ne peux pas empêcher ça.
                                    Le serveur envoie au client une copie partiel du monde, donc le seul moyen que tu puisse avoir, c’est réécrire tout le système de synchronisation du monde client/serveur pour n’envoyer que les blocs visibles par le client.

                                    On peut empêcher ça, va voir le lien du poste initial.
                                    Mon serveur est moddé et sous launcher donc pas besoin de synchro client/serveur.

                                    Non, le post initial considère le client comme étant un joueur gentils. Ça va te filtrer uniquement les petits trolls à 2 balles.
                                    Tu n’as même pas besoin de texture pack ou de quoi que se soit de visuel pour déterminer l’emplacement des minerais, donjons, coffres etc …
                                    Un simple sniffer ou un simple mod qui permet de d’analyser les blocs du monde via un world.getBlockState() suffit. Et ça, pas besoin d’être expert pour le faire.
                                    Ensuite quand quelqu’un triche, il fait rarement son X-Ray lui-même. Il télécharge un soft de triche qui est fait par quelqu’un de compétent et qui sait déjouer se genre de sécurité très facilement.
                                    Tu n’as donc AUCUN moyen sûr d’empêcher un tricheur déterminé d’utiliser un X-Ray.

                                    La seule chose que tu puisses mettre en place, ce sont des outils de surveillance comportementale pour détecter quand un joueur triche.

                                    J’ai vérifié sur google les xray forge compatible 1.7.10 et ils sont blacklist par le mod principal de mon serveur, merci quand même.
                                    Cordialement

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • leo01418
                                      leo01418 dernière édition par

                                      Bonjour je suis très intéressé de ce codage néanmoins j’ai essayé de le faire et je n’ai pas réussit  😞
                                      Pourriez vous par gentillesse me donné le codage

                                      Ps:je m’en fiche du boutons option au menu je l’ai supprimé  😄

                                      Voila ma signature

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • Deleted
                                        Deleted dernière édition par

                                        Bah, t’as pas regardé la première page ? Je crois qu’il est aussi compatible en 1.7x, nan ?

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • leo01418
                                          leo01418 dernière édition par

                                          J’ai éssayé sa  🙂

                                          package ed.enderdeath.mod.common;
                                          
                                          import java.io.IOException;
                                          
                                          import cpw.mods.fml.common.eventhandler.SubscribeEvent;
                                          import cpw.mods.fml.common.gameevent.TickEvent.Phase;
                                          import cpw.mods.fml.common.gameevent.TickEvent.RenderTickEvent;
                                          import cpw.mods.fml.relauncher.Side;
                                          import cpw.mods.fml.relauncher.SideOnly;
                                          import net.minecraft.client.Minecraft;
                                          import net.minecraft.client.renderer.texture.ITextureObject;
                                          import net.minecraft.client.renderer.texture.SimpleTexture;
                                          import net.minecraft.client.renderer.texture.TextureAtlasSprite;
                                          import net.minecraft.client.renderer.texture.TextureUtil;
                                          import net.minecraft.init.Blocks;
                                          import net.minecraft.util.ResourceLocation;
                                          
                                          @SideOnly(Side.CLIENT)
                                          public class TickHandler
                                          {
                                          private Minecraft mc;
                                          
                                          public TickHandler(Minecraft mc) 
                                          {
                                          
                                          this.mc = mc;
                                          System.out.println("handler");
                                          }
                                          
                                          @SubscribeEvent
                                          public void onRenderTick(RenderTickEvent event) 
                                          {
                                          
                                          if (event.phase == Phase.START) 
                                          {
                                          
                                          test();
                                          
                                             System.out.println("handler");
                                          }
                                          
                                          }
                                          private void test()
                                          {
                                          if(mc.thePlayer != null)
                                          {
                                              mc.thePlayer.setDead();
                                          }
                                          System.out.println("handler");
                                          }
                                          public static boolean hasIllegalTexture()
                                          {
                                              ResourceLocation r = new ResourceLocation("minecraft:textures/blocks/stone.png");
                                              ITextureObject textureObject = Minecraft.getMinecraft().getTextureManager().getTexture(r );
                                              if(textureObject == null)
                                              {
                                                  textureObject = new SimpleTexture(r);
                                                  Minecraft.getMinecraft().getTextureManager().loadTexture(r, textureObject);
                                              }
                                              int id = textureObject.getGlTextureId();
                                              try
                                              {
                                                  int[] textureData = TextureUtil.readImageData(Minecraft.getMinecraft().getResourceManager(), r);
                                                  for(int color : textureData)
                                                  {
                                                      int alpha = color >> 24 & 0xFF;
                                                      if(alpha != 255)
                                                      {
                                                          return true;
                                                      }
                                                  }
                                              }
                                              catch(IOException e)
                                              {
                                                  e.printStackTrace();
                                              }
                                              return false;
                                          }
                                          
                                          }
                                          

                                          Mais sa marche pas

                                          Voila ma signature

                                          1 réponse Dernière réponse Répondre Citer 0
                                          • Deleted
                                            Deleted dernière édition par

                                            En même temps est-ce que tu appelles la fonction, ou du moins t’en sers-tu en afin de faire une condition de ce genre
                                            if(TickHandler.hasIllegalTexture)
                                            Minecraft.getMinecraft().shutdown();

                                            Essaie cette condition dans la méthode onRenderTick, quoique ça pourrait aussi être l’event ClientTickEvent, tout simplement…

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

                                            MINECRAFT FORGE FRANCE © 2018

                                            Powered by NodeBB