Empêcher d'installer d'autres mods /texturespack
-
Bonjour à tous, comme le titre l’indique je cherche à mettre, sur un mod un système pour empêcher les gens de tricher comme par exemple xray j’ai fait cela : mais cela ne donne rien et on peut, via le dossier mods de mon .serveur y ajouter ce qu’on veut
if(event.getSide().isClient()) { if(!Minecraft.getMinecraft().mcDataDir.getAbsolutePath().contains("Craftesys") && !Minecraft.getMinecraft().mcDataDir.equals(new File("."))) { Throwables.propagate(new Exception("java.lang.Throwable$WrappedPrintStream:println:7490")); } } if (Loader.isModLoaded("cheatingessentials")) { Throwables.propagate(new Exception("java.io.FileNotFoundException.4")); } if (Loader.isModLoaded("hud")) { Throwables.propagate(new Exception("java.io.FileNotFoundException.4")); } if (Loader.isModLoaded("XaeroMinimap")) { Throwables.propagate(new Exception("java.io.FileNotFoundException.4")); } if (Loader.isModLoaded("XaeroBetterPvP")) { Throwables.propagate(new Exception("java.io.FileNotFoundException.4")); } if (Loader.isModLoaded("EllianMaterialDetector")) { Throwables.propagate(new Exception("java.io.FileNotFoundException.4")); } if (Loader.isModLoaded("CJB|Cheats")) { Throwables.propagate(new Exception("java.io.FileNotFoundException.4")); } if (Loader.isModLoaded("DirectionHUD")) { Throwables.propagate(new Exception("java.io.FileNotFoundException.4")); } if (Loader.isModLoaded("alluwant")) { Throwables.propagate(new Exception("java.io.FileNotFoundException.4")); } if (Loader.isModLoaded("VoxelMap")) { Throwables.propagate(new Exception("java.io.FileNotFoundException.4")); } if (Loader.isModLoaded("thebombzenapi")) { Throwables.propagate(new Exception("java.io.FileNotFoundException.4")); }
merci d’avance,
cordiamelement,
Sventus -
System.exit(-1);
plus radical.Ah et :
if(!Minecraft.getMinecraft().mcDataDir.getAbsolutePath().contains("Craftesys") && !Minecraft.getMinecraft().mcDataDir.equals(new File(".")))
->
if(!Minecraft.getMinecraft().mcDataDir.getAbsolutePath().contains("Craftesys") || !Minecraft.getMinecraft().mcDataDir.equals(new File(".")))
et tu peux également retrouvé toutes tes conditions en une avec des ||
-
tu me conseils de mettre System.exit(1) à la place de : Throwables.propagate(new Exception(“java.io.FileNotFoundException.4”)); ??
puis xray devrait être supprimé de mon serveur avec ce code la du coup ?
je viens d’essayer et ça ne fait absolument rien, j’ai installé mon xray et j’arrive toujours à l’utiliser
j’ai d’ailleurs ce message d’erreur dans les logs :
[00:30:25] [Client thread/WARN] [FML/craftesys]: ============================================================= [00:30:25] [Client thread/WARN] [FML/craftesys]: MOD HAS DIRECT REFERENCE System.exit() THIS IS NOT ALLOWED REROUTING TO FML! [00:30:25] [Client thread/WARN] [FML/craftesys]: Offendor: fr/craftesys/craftesys/common/Mods.preInit(Lcpw/mods/fml/common/event/FMLPreInitializationEvent;)V [00:30:25] [Client thread/WARN] [FML/craftesys]: Use FMLCommonHandler.exitJava instead [00:30:25] [Client thread/WARN] [FML/craftesys]: =============================================================
Si je fais : if !=(load.modloades(“modid”) {
[size=largeMinecraft.getMinecraft().shutdown()]
[size=large}][size=largeÇa va ?]
-
ah oui c’est vrai que FML interdit le System.shutdown( );
Minecraft.getMinecraft().shutdown() devrait fonctionner. -
f (Loader.isModLoaded(“Craftesys”)) {
Minecraft.getMinecraft().shutdown();}
j’ai donc essayé cela, en sachant que Craftesys c’est le nom de mon mod de base donc en théorie je devrais être déco pendant le chargement et pourtant ça ne fait rien (en sachant que le mod est sur le serveur et pas encore sur le launcher)
de plus si je fais cela comme ça :
if (!Loader.isModLoaded(“Anticheat”) || (!Loader.isModLoaded(“ccc”) || (!Loader.isModLoaded(“Craftesys”) || (!Loader.isModLoaded(“nei”) || (!Loader.isModLoaded(“Anticheat”)))))) {
Minecraft.getMinecraft().shutdown();
}cela devrait faire crash non ? si l’on ajoute autre chose
-
Non …
Cette ligne va couper le jeu si un des mods de cette liste n’est pas présent.
Si tu veux bloquer le jeu en cas d’ajout d’un mod regarde le nombre de mod présent. Si c’est supérieur au nombre voulu coupe le jeu. -
ce qui devrait donner quoi car Loader.ModLoader(=>5) ne marche pas ^^
pis je dois avoir ModLoader sur le serveur aussi non ?
-
… Non.
Et si tu as écrit “Loader.ModLoader(=>5)” c’est normal que ça ne fonctionne pas … -
Bah faut mettre quoi alors
Mais on est d’accord qu’il faut le mettre sur le launcher et non pas sur le serveur car c’est le launcher qui doit se fermer
-
Tu as déjà la condition if(event.getSide().isClient()) qui permet de check que tu es côté client et non côté serveur.
if(event.getSide().isClient()) { if(Loader.instance().getActiveModList().size() > nbrDeMod) { try { throw new Exception("mod interdit détecté"); } catch(Exception e) { FMLClientHandler.instance().getClient().shutdown(); e.printStackTrace(); } } }
Attention aux nombres de mod, certains mod contient des sous mods. Il ne faut pas oublier de les compter (au pire lances le jeu avec les mods voulus tu verra bien dans le menu le nombre de mod actif en bas à gauche).
Rien d’avec Forge tu en as 3 (mcp, fml et Forge) -
on a 4 mods installé
je vais donc essayer de mettre 4 en nombre max et d’ajouter xray pour voir si cela fonctionne
j’ai compris le soucis, en réalité on met un nombre précis de mods mais le truc c’est que le launcher ne retourne pas dans le .serveur pour voir si d’autres mods on été ajouté.
ou en faite quand on ajoute xray dans le dossier mods du serveur, le mod qui est sensé analyser ne le reconnait pas comme étant un mod car j’ai essayé d’installer ModControl qui permet de faire une whitelist des mods que j’autorise et il bloque tout mes mods, les uns après les autres (que j’autorise au fur et à mesure) sauf qu’il ne bloque pas xray !
Pourtant quand j’essaye de supprimer un mod, que je relance le launcher et que j’essaye de me connecter, j’ai bien un message d’erreur me disant qu’il manque un mod ….
je viens d’essayer de le mettre dans la blacklist et il ne reconnait pas Xray comme étant un mod …
-
désolé de faire un repost mais comme j’ai changé mon message entre temps, je sais pas si tu vois les édits que je fais, je pense donc avoir compris le soucis entre temps comme expliqué au-dessus
-
Surement car le mod xray n’est pas un mod mais un plugin FML et que l’auteur n’a pas ajouté ce qu’il faut pour être reconnu en temps que mod.
Du-coup le seul moyen de vérifier ça présence et de regarder si une de ses classes est présente dans le classpath. -
et faut faire cela comment ??
car pour voir les class il suffit d’ouvrir avec winrar et j’ai vu un XRayInstaller.class ou encore XRayTweaker.class
XRay18.class
-
try { Class.forName("nom.du.package.NomDeLaClasse"); // on essaie de trouver la classe // ajouter ici le code pour quitter le jeu } catch( ClassNotFoundException e ) { // la classe n'existe pas, on ne fait rien }
-
donc j’ai trouvé un système pour trouver les package, mais du coup si d’autres mods ne sont pas considéré comme tels, ça sera toujours pareil, donc il n’est pas possible de faire en sorte d’interdire l’ajout de toutes genre de choses à l’intérieur du dossier mods ? ou de réinstaller les dossiers à chaque lancement (ce qui devrait être rapide normalement si aucun fichier n’a changé)
-
Tu peux gérer ça depuis le launcher / depuis mon installateur.
-
depuis le launcher je peux gérer ce qui est dans mods ?
-
Normalement oui. Tu télécharges bien les mods depuis le launcher ? Donc tu peux aussi supprimer les mods indésirable.
Il suffit de comparer les mods locales et les mods distant. C’est ce que je fais avec mon installateur.
https://github.com/FFMT/ModPackInstaller/tree/master/src/main/java/fr/minecraftforgefrance/common -
oui les mods sont installés depuis le launcher donc une de tes classes du lien permet de supprimer les choses non voulues