Survie corrompue/perdue ?

  • Auteur de la discussion Auteur de la discussion Xaki00
  • Date de début Date de début

Xaki00

Aventurier
25 Août 2024
5
0
1
17
Bonjour je joue sur un monde survie avec pas mal de mod, hélas j'ai voulu ouvrir le monde hier mais il m'a mis une erreur dans les datapacks, sauf que j'ai énormement de mods actifs (103 mods) et je sais pas le quel pose problème, et j'aimerais VRAIMENT pas perdre ce monde j'y ai passé des heures, je sais pas du tout quoi faire. Ca me fait pareil aussi avec tout mes autres mondes, ducoup je suis en train de perdre aussi un autre monde survie et un monde BIEN avancé en créatif.
 

Fichiers joints

  • image_2024-08-25_135645884.png
    image_2024-08-25_135645884.png
    57.5 KB · Vues : 30
Bonjour,

Faut une copie du dossier du monde si pas déjà fait, puis envoie en pièce jointe les logs du jeu après avoir eu le message d'erreur.

Si tu utilises le launcher officiel, les logs sont dans « %appdata%\.minecraft\logs\latest.log » ; si tu utilises CurseForge, elles sont dans « %userprofile%\curseforge\minecraft\Instances\<le modpack>\logs\latest.log ».

Cordialement,
ShE3py
 
  • J'aime
Reactions: Xaki00
Bonjour,
Dans ce log je vois une erreur du mod "skinlayers" par contre je n'ai pas l'impression qu'il ait un monde en erreur.
On voit que tu as joué sur le monde "Nouveau monde", sans erreur.

Comment s'appelle le monde corrompu ? Est-ce que tu y joues via un autre launcher que le launcher officiel (par exemple avec curseforge) ?
 
Le « nouveau monde » c’est un monde que j’ai vite fait créé aujourd’hui dans l’après midi pour voir si ça me faisait encore le message d’erreur, et je joue sur Tlauncher

et le monde corrompu s’appelait « Survie 2 »
 
C'est pas très évident de trouver sur le Web dans quel dossier le jeu est installé par les launchers tiers, mais tu peux :
  1. Lancer le jeu et charge le monde erroné ;
  2. Après avoir eu le message d'erreur, retourner dans le menu principal ;
  3. Aller dans Options > Packs de ressources > Ouvrir le dossier du jeu ;
  4. Remonter dans le dossier parent, puis descendre dans le dossier logs/ ;
  5. Fermer le jeu, puis envoyer en pièce jointe le fichier latest.log (c'est possible qu'il s'appelle simplement latest).
 
Code:
[15:07:38] [Render thread/WARN]: Failed to load level data or datapacks, can't proceed with server load
java.util.concurrent.ExecutionException: java.lang.IllegalStateException: Overworld settings missing
	at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396) ~[?:?]
	at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2073) ~[?:?]
	at net.minecraft.client.gui.screens.worldselection.WorldOpenFlows.m_246486_(WorldOpenFlows.java:164) ~[client-1.20.1-20230612.114412-srg.jar%23310!/:?]
	at net.minecraft.client.gui.screens.worldselection.WorldOpenFlows.m_233122_(WorldOpenFlows.java:113) ~[client-1.20.1-20230612.114412-srg.jar%23310!/:?]
	at net.minecraft.client.gui.screens.worldselection.WorldOpenFlows.doLoadLevel(WorldOpenFlows.java:181) ~[client-1.20.1-20230612.114412-srg.jar%23310!/:?]
Le monde ne se charge pas car il manque les paramètres de l'overworld. Je ne sais pas du tout à quoi cela correspond, mais comme ça je dirai que c'est surement le fichier level.dat qui est corrompu :/
Je n'ai pas le temps d'investiguer plus ce soir ni demain, éventuellement jeudi je peux regarder dans le code de Minecraft à quoi cela correspond et si j'ai une solution.
 
Explication :
Bon j'ai regardé un peu d'où cela peut venir :
L'erreur est déclenché car il n'y a pas de paramètre pour l'overworld.
Java:
   public WorldDimensions {
      LevelStem levelstem = dimensions.get(LevelStem.OVERWORLD);
      if (levelstem == null) {
         throw new IllegalStateException("Overworld settings missing");
      }
   }
En regardant plus long dans le stack trace d'où cela vient :

Caused by: java.lang.IllegalStateException: Overworld settings missing
at net.minecraft.world.level.levelgen.WorldDimensions.<init>(WorldDimensions.java:50) ~[client-1.20.1-20230612.114412-srg.jar%23310!/:?]
at com.mojang.serialization.codecs.RecordCodecBuilder$Instance$1.lambda$decode$0(RecordCodecBuilder.java:185) ~[datafixerupper-6.0.8.jar%23114!/:?]
at com.mojang.datafixers.util.Either$Left.mapBoth(Either.java:33) ~[datafixerupper-6.0.8.jar%23114!/:?]
at com.mojang.serialization.DataResult.map(DataResult.java:111) ~[datafixerupper-6.0.8.jar%23114!/:?]
at com.mojang.serialization.codecs.RecordCodecBuilder$Instance$1.lambda$decode$1(RecordCodecBuilder.java:184) ~[datafixerupper-6.0.8.jar%23114!/:?]
at com.mojang.serialization.DataResult.lambda$flatMap$15(DataResult.java:144) ~[datafixerupper-6.0.8.jar%23114!/:?]
at java.util.Optional.map(Optional.java:260) ~[?:?]
at com.mojang.serialization.DataResult.lambda$flatMap$17(DataResult.java:143) ~[datafixerupper-6.0.8.jar%23114!/:?]
at com.mojang.datafixers.util.Either$Right.map(Either.java:99) ~[datafixerupper-6.0.8.jar%23114!/:?]
at com.mojang.serialization.DataResult.flatMap(DataResult.java:137) ~[datafixerupper-6.0.8.jar%23114!/:?]
at com.mojang.serialization.codecs.RecordCodecBuilder$Instance$1.decode(RecordCodecBuilder.java:183) ~[datafixerupper-6.0.8.jar%23114!/:?]
at com.mojang.serialization.codecs.RecordCodecBuilder$2.decode(RecordCodecBuilder.java:107) ~[datafixerupper-6.0.8.jar%23114!/:?]
at com.mojang.serialization.codecs.RecordCodecBuilder$Instance$3.decode(RecordCodecBuilder.java:249) ~[datafixerupper-6.0.8.jar%23114!/:?]
at com.mojang.serialization.codecs.RecordCodecBuilder$2.decode(RecordCodecBuilder.java:107) ~[datafixerupper-6.0.8.jar%23114!/:?]
at com.mojang.serialization.MapDecoder.lambda$compressedDecode$1(MapDecoder.java:52) ~[datafixerupper-6.0.8.jar%23114!/:?]
at com.mojang.serialization.DataResult.lambda$flatMap$11(DataResult.java:139) ~[datafixerupper-6.0.8.jar%23114!/:?]
at com.mojang.datafixers.util.Either$Left.map(Either.java:38) ~[datafixerupper-6.0.8.jar%23114!/:?]
at com.mojang.serialization.DataResult.flatMap(DataResult.java:137) ~[datafixerupper-6.0.8.jar%23114!/:?]
at com.mojang.serialization.MapDecoder.compressedDecode(MapDecoder.java:52) ~[datafixerupper-6.0.8.jar%23114!/:?]
at com.mojang.serialization.MapCodec$MapCodecCodec.decode(MapCodec.java:91) ~[datafixerupper-6.0.8.jar%23114!/:?]
at com.mojang.serialization.Decoder.decode(Decoder.java:22) ~[datafixerupper-6.0.8.jar%23114!/:?]
at com.mojang.serialization.Decoder.parse(Decoder.java:26) ~[datafixerupper-6.0.8.jar%23114!/:?]
at net.minecraft.world.level.storage.LevelStorageSource.m_247212_(LevelStorageSource.java:129) ~[client-1.20.1-20230612.114412-srg.jar%23310!/:?]
at net.minecraft.world.level.storage.LevelStorageSource.m_264027_(LevelStorageSource.java:244) ~[client-1.20.1-20230612.114412-srg.jar%23310!/:?]
at net.minecraft.world.level.storage.LevelStorageSource.m_230817_(LevelStorageSource.java:202) ~[client-1.20.1-20230612.114412-srg.jar%23310!/:?]
at net.minecraft.world.level.storage.LevelStorageSource$LevelStorageAccess.m_246049_(LevelStorageSource.java:439) ~[client-1.20.1-20230612.114412-srg.jar%23310!/:?]
J'ai trouvé qu'il cherche la propriété WorldGenSettings :
Java:
   private static <T> DataResult<WorldGenSettings> readWorldGenSettings(Dynamic<T> p_251661_, DataFixer p_251712_, int p_250368_) {
      Dynamic<T> dynamic = p_251661_.get("WorldGenSettings").orElseEmptyMap();

      for(String s : OLD_SETTINGS_KEYS) {
         Optional<Dynamic<T>> optional = p_251661_.get(s).result();
         if (optional.isPresent()) {
            dynamic = dynamic.set(s, optional.get());
         }
      }

      Dynamic<T> dynamic1 = DataFixTypes.WORLD_GEN_SETTINGS.updateToCurrentVersion(p_251712_, dynamic, p_250368_);
      return WorldGenSettings.CODEC.parse(dynamic1);
   }




Solution :

Télécharge l'outil NBTExplorer : https://github.com/jaquadro/NBTExplorer/releases
Lance-le et ouvre le fichier level.dat qui se trouve dans le dossier de ton monde Minecraft corrompu.
Déroule "Data" puis "WorldGenSettings" et enfin dimensions :
1725723110699.png

Sur un monde sain, il y a une dimension minecraft:overworld. Sur ton monde planté, je pense que tout ce tag est manquant. Si c'est bien cela, tu peux le copier depuis un monde fonctionnel à l'intérieur de ton monde corrompu et cela devrait le réparer.
Si tu es dans un autre cas, envoie une capture d'écran du nbt de ton monde. Ou alors envoie-moi tout le fichier level.dat.
 
Malheureusement ça n'a pas marché, en allant dans le nbt du monde et avoir fait toute la démarche, j'ai vu que le minecraft overworld y était déja, je l'ai supprimé et remplacé par un venant d'un monde sain que j'ai créé il y a quelques jours, mais ça n'a quand même rien changé ? voila une capture du nbt
 

Fichiers joints

  • image_2024-09-07_192154241.png
    image_2024-09-07_192154241.png
    11.9 KB · Vues : 16