Comment interdir l'ajout d'autres mods dans le dossier
-
Sinon, un coremod qui check tous les MD5 ou les noms de fichiers dès l’instanciation du coremod.
package ton.package; // Ctrl+Maj+O public class ModChecker implements IFMLLoadingPlugin { private static Map <string, string="">validMD5sMap = new HashMap<string, string="">(); private static List <string>validMD5sList = new ArrayList<string>(); public ModChecker() { buildMap(); checkMods(); } public static void buildMap() { // Entre ici tous tes noms de fichiers à whitelist // Ex : Whitelist de NEI version 1.0.3.67 validMD5sMap.put("NotEnoughItems-1.7.10-1.0.3.67-universal.jar", "B0431D2D45BFBAD636F5C7C9357A3660"); validMD5sList.add("B0431D2D45BFBAD636F5C7C9357A3660"); } public static void checkMods() { for (File f : new File("mods")) { if (!isValidMD5(f)) { f.delete(); } } for (File f : new File("mods/1.7.10") { if (!isValidMD5(f)) { f.delete(); } } } public static boolean isValidMD5(File f) { String MD5 = DigestUtils.md5Hex(new BufferedInputStream(new FileInputStream(f))); return (validMD5sMap.hasKey(f.getName()) && validMD5sMap.get(f.getName()).equalsIgnoreCase(MD5)) || validMD5sList.contains(MD5); } }
Je te conseille le site http://onlinemd5.com pour trouver les MD5.</string></string></string,></string,>
-
@‘galaxyoyo’:
Sinon, un coremod qui check tous les MD5 ou les noms de fichiers dès l’instanciation du coremod.
package ton.package; // Ctrl+Maj+O public class ModChecker implements IFMLLoadingPlugin { private static Map <string, string="">validMD5sMap = new HashMap<string, string="">(); private static List <string>validMD5sList = new ArrayList<string>(); public ModChecker() { buildMap(); checkMods(); } public static void buildMap() { // Entre ici tous tes noms de fichiers à whitelist // Ex : Whitelist de NEI version 1.0.3.67 validMD5sMap.put("NotEnoughItems-1.7.10-1.0.3.67-universal.jar", "B0431D2D45BFBAD636F5C7C9357A3660"); validMD5sList.add("B0431D2D45BFBAD636F5C7C9357A3660"); } public static void checkMods() { for (File f : new File("mods")) { if (!isValidMD5(f)) { f.delete(); } } for (File f : new File("mods/1.7.10") { if (!isValidMD5(f)) { f.delete(); } } } public static boolean isValidMD5(File f) { String MD5 = DigestUtils.md5Hex(new BufferedInputStream(new FileInputStream(f))); return (validMD5sMap.hasKey(f.getName()) && validMD5sMap.get(f.getName()).equalsIgnoreCase(MD5)) || validMD5sList.contains(MD5); } }
Je te conseille le site http://onlinemd5.com pour trouver les MD5.</string></string></string,></string,>
En utilisant cela comment faire pour que ça retélécharge les mod où alors que ça fasse crasher le jeu ?
-
FMLCommonHandler.instance().handleExit(0);
-
Merci à tous,
mais je n’ai pas compris une chose comment créer votre ''white-list ‘’.
Faire un nouveau mod? Si oui pourriez vous m’expliquer comment faire car je débute.
Merci vraiment pour vos réponses. -
Tu mets ça, dans la fonction post-init dans ta classe principale:
if (!Loader.isModLoaded("modid")) //Vous aurez l'ID du mod dans le mcmod.info qui ce trouve dans l'archive du mod elle contient l'ID du mod, généralement en minuscule, à la ligne "modid" { System.out.println("Vous avez ajouter un mod, il est interdit de faire ça ! Tant qu'un mod extérieur a ceux du serveur sera présent, le jeu ne se lancera pas.");//Affiche un message dans la console du jeu FMLClientHandler.instance().getClient().shutdown(); //Fait crash le jeu }
Donc si le jeu charge un mod avec un modid different de ce que tu as mis dans
Loader.isModLoaded(“modid”)
Alors il met un message dans la console puis fait crash ton jeu.
Tu peux faire qu’il crash que si il charge un mod que tu veux pas genre, un mod qui permet d’exploiter un bug sur ton mod/serveur moddé, pour cela il faut enlever le “!” devant Loader.isModLoaded dans la condition.
J’espère avoir était claire, si ce n’est pas le cas, n’hésites pas à me demander des précisions… -
Merci je vais essayer demain ou mercredi je vous tient au courant