MFF

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

    Supprimer des biomes

    Planifier Épinglé Verrouillé Déplacé Résolu 1.8.x
    1.8.9
    27 Messages 5 Publieurs 5.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.
    • DylemD Hors-ligne
      Dylem
      dernière édition par

      Je n’avais pas vu que tu étais en 1.8. Dans cette “vieille” version, il faut utiliser le WorldChunkManager.

      Si je t'ai aidé, n'hésite pas à cliquer sur le nombre vert en dessous de mon image de profil, pour me le faire savoir. Ca me motive pour continuer …

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

        A la place de BiomeManager ?

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

          @‘elx9000’:

          A la place de BiomeManager ?

          Quelque chose comme ça :

          
          [font=-apple-system, BlinkMacSystemFont,public] static void removeSpawnBiome(BiomeGenBase biome)
          
             {
          
                 if (WorldChunkManager.allowedBiomes.contains(biome))
          
                 {
          
                     WorldChunkManager.allowedBiomes.remove(biome);
          
                 }
          
             }
          
          

          Si je t'ai aidé, n'hésite pas à cliquer sur le nombre vert en dessous de mon image de profil, pour me le faire savoir. Ca me motive pour continuer …

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

            J’ai fait ça :

            
                   removeSpawnBiome(BiomeGenBase.birchForest);
                   removeSpawnBiome(BiomeGenBase.birchForestHills);
                   removeSpawnBiome(BiomeGenBase.coldBeach);
                   removeSpawnBiome(BiomeGenBase.coldTaiga);
                   removeSpawnBiome(BiomeGenBase.coldTaigaHills);
                   removeSpawnBiome(BiomeGenBase.deepOcean);
                   removeSpawnBiome(BiomeGenBase.desert);
                   removeSpawnBiome(BiomeGenBase.desertHills);
                   removeSpawnBiome(BiomeGenBase.extremeHills);
                   removeSpawnBiome(BiomeGenBase.extremeHillsEdge);
                   removeSpawnBiome(BiomeGenBase.extremeHillsPlus);
                   removeSpawnBiome(BiomeGenBase.forest);
                   removeSpawnBiome(BiomeGenBase.forestHills);
                   removeSpawnBiome(BiomeGenBase.frozenOcean);
                   removeSpawnBiome(BiomeGenBase.frozenRiver);
                   removeSpawnBiome(BiomeGenBase.hell);
                   removeSpawnBiome(BiomeGenBase.iceMountains);
                   removeSpawnBiome(BiomeGenBase.icePlains);
                   removeSpawnBiome(BiomeGenBase.jungle);
                   removeSpawnBiome(BiomeGenBase.jungleEdge);
                   removeSpawnBiome(BiomeGenBase.jungleHills);
                   removeSpawnBiome(BiomeGenBase.megaTaiga);
                   removeSpawnBiome(BiomeGenBase.megaTaigaHills);
                   removeSpawnBiome(BiomeGenBase.mesa);
                   removeSpawnBiome(BiomeGenBase.mesaPlateau);
                   removeSpawnBiome(BiomeGenBase.mesaPlateau_F);
                   removeSpawnBiome(BiomeGenBase.mushroomIsland);
                   removeSpawnBiome(BiomeGenBase.mushroomIslandShore);
                   removeSpawnBiome(BiomeGenBase.plains);
                   removeSpawnBiome(BiomeGenBase.river);
                   removeSpawnBiome(BiomeGenBase.roofedForest);
                   removeSpawnBiome(BiomeGenBase.savanna);
                   removeSpawnBiome(BiomeGenBase.savannaPlateau);
                   removeSpawnBiome(BiomeGenBase.stoneBeach);
                   removeSpawnBiome(BiomeGenBase.swampland);
                   removeSpawnBiome(BiomeGenBase.taiga);
                   removeSpawnBiome(BiomeGenBase.taigaHills);
               }
            
               public static void removeSpawnBiome(BiomeGenBase biome)
               {
                   if (WorldChunkManager.allowedBiomes.contains(biome))
                   {
                       WorldChunkManager.allowedBiomes.remove(biome);
                   }
               }
            
            

            Ceci se trouve dans la classe ou j’enregistre les biomes. Elle est enregistré dans le clientProxy dans registerRenders, qui est enregistré dans la partie init de la classe principale.
            Pourtant, ça ne fonctionne toujours pas ? Comment faire ?
            Merci par avance.

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

              Pas d’idée ?

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

                @‘elx9000’:

                Ceci se trouve dans la classe ou j’enregistre les biomes. Elle est enregistré dans le clientProxy dans registerRenders, qui est enregistré dans la partie init de la classe principale.

                Cela n’a rien à voir avec les renders alors ça n’a rien à faire dans la fonction registerRenders et supprimer les biomes côté client seulement ne sert à rien à part faire cracher Minecraft. Donc tu devrais plutôt le mettre dans le common proxy ou dans la class principale.(dans init, je pense que c’est bien)

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

                  J’ai mis le code précédent dans la classe principale, dans le init comme tu me l’as conseillé (sauf la méthode removeSpawnBiome). Mais ça ne fonctionne toujours pas, les biomes enlevé spawn toujours.

                  Merci d’avance.

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

                    Si tu veux tous les enlever, il devrait y avoir une fonction removeAll dans biomeManager. Je ne peux malheureusement pas tester, car ma version de Minecraft est différente de la tienne.

                    Si je t'ai aidé, n'hésite pas à cliquer sur le nombre vert en dessous de mon image de profil, pour me le faire savoir. Ca me motive pour continuer …

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

                      Tous les biomes se trouvent dans le field biomeList,* *dans la class BiomeGenBase.
                      biomeList étant private, static et final, tu doit la modifier en utilisant la Reflection :

                      
                      @EventHandler
                      public void preInit (FMLPreInitializationEvent event) {    
                         try {
                           Field field = BiomeGenBase.class.getDeclaredFields()[14];
                           field.setAccessible(true);
                           Field modifiersField = Field.class.getDeclaredField("modifiers");
                           modifiersField.setAccessible(true);
                           modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
                           field.set(BiomeGenBase.birchForest, new BiomeGenBase[256]);
                         } catch(Exception e){
                            e.printStackTrace();
                         }
                      }
                      
                      

                      Source : https://stackoverflow.com/questions/3301635/change-private-static-final-field-using-java-reflection

                      Pour avoir testé, on apparaît dans un monde remplis d’eau et dans le biome Plains, qui doit être le valeur par défaut.

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

                        J’ai du mal à comprendre la ligne :

                        field.set(BiomeGenBase.[color=#0000c0birchForest], [color=#7f0055new] BiomeGenBase[256]);

                        Le 256 correspond à quoi ?

                        Je voit effectivement qu’on apparaît dans un monde rempli d’eau, avec F3 il y a aussi écrit que je suis dans un biome plaine. Comment changer ceci pour afficher le biome océan ?

                        Est-ce que ceci enlève les biomes custom ?

                        Merci d’avance.

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

                          @‘elx9000’:

                          J’ai du mal à comprendre la ligne :

                          field.set(BiomeGenBase.[color=#0000c0birchForest], [color=#7f0055new] BiomeGenBase[256]);

                          Le 256 correspond à quoi ?

                          La capacité du tableau. Je te conseil de (re)voir les bases du Java : https://openclassrooms.com/courses/apprenez-a-programmer-en-java/les-tableaux-3

                          @‘elx9000’:

                          Je voit effectivement qu’on apparaît dans un monde rempli d’eau, avec F3 il y a aussi écrit que je suis dans un biome plaine. Comment changer ceci pour afficher le biome océan ?

                          2 solutions, une simple, l’autre laborieuse :
                          -Rajouter le biome Océan dans le tableau;
                          -Modifier le F3 (en utilisant l’event RenderGameOverlayEvent.Text, tu vérifies que gameSettings.showDebugInfo est sur true, puis tu cherches la ligne où se trouve le biome dans la variable event.left et tu le remplaces).

                          @‘elx9000’:

                          Est-ce que ceci enlève les biomes custom ?

                          Ça dépend si les biomes sont rajoutées avant ou après field.set(BiomeGenBase.birchForest, new BiomeGenBase[256]);

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

                            Oui, je sais ce qu’est un tableau. Je voulait savoir pourquoi c’est 256 et pas 302 par exemple.
                            Ensuite, comment j’ajoute le biome océan au tableau (j’ai était voir sur classroom mais j’ai rien trouvé sur l’ajout de valeur). De telle sorte qu’il n’y ai que mon biome custom et le biome océan.

                            Merci d’avance.

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

                              La classe ArrayUtils devrait pouvoir t’aider 😉

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

                                J’ai rajouté cette ligne avant le field.set(…) :

                                ArrayUtils.add([color=#7f0055new] BiomeGenBase[256], 0, BiomeGenBase.[color=#0000c0ocean]);

                                Mais le F3 me considère toujours dans le biome plaine.

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

                                  Je ne vois pas de ce qui a de compliqué :

                                  
                                  BiomeGenBase[] biomes = new BiomeGenBase[256];
                                  biomes[0] = BiomeGenBase.ocean;
                                  biomes[1] = <ton biome="">;
                                  field.set(BiomeGenBase.birchForest, biomes);
                                  
                                  ```</ton>
                                  1 réponse Dernière réponse Répondre Citer 0
                                  • E Hors-ligne
                                    elx9000
                                    dernière édition par

                                    Effectivement, c’est pas compliqué une fois qu’on a compris.
                                    Il n’y a bien que mon biome et le biome océan qui spawnent.
                                    Ensuite, comment faire pour que le player spawn dans mon biome et pas dans le biome océan ?
                                    –-----------------
                                    Rectification : on ne peut pas changer le fait qu’on spawn dans un monde rempli d’eau et n’avoir que le biome custom sur le monde ?

                                    Merci d’avance.

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

                                      BiomeProvider#findBiomePosition devrait trouver l’endroit le plus près du spawn où il y a ton biome. Tu peux le tp là-bas.

                                      Si je t'ai aidé, n'hésite pas à cliquer sur le nombre vert en dessous de mon image de profil, pour me le faire savoir. Ca me motive pour continuer …

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

                                        Il semblerait qu’en 1.8.9 la classe BiomeProvider n’existe pas. Comment faire ?
                                        Ne peut-on pas modifier la taille du biome océan ?

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

                                          Pas d’idée pour changer la taille du biome océan ?

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

                                            Avec un peu de recherche, j’ai réussi à trouver comment faire :

                                            
                                            @SubscribeEvent
                                            public void onGuiOpen(GuiOpenEvent e) {
                                               if(e.gui instanceof GuiCreateWorld) {
                                                  GuiCreateWorld guiCreateWorld = (GuiCreateWorld) e.gui;
                                                  guiCreateWorld.chunkProviderSettingsJson = "{\"coordinateScale\":684.412,\"heightScale\":684.412,\"lowerLimitScale\":512.0,\"upperLimitScale\":512.0,\"depthNoiseScaleX\":200.0,\"depthNoiseScaleZ\":200.0,\"depthNoiseScaleExponent\":0.5,\"mainNoiseScaleX\":80.0,\"mainNoiseScaleY\":160.0,\"mainNoiseScaleZ\":80.0,\"baseSize\":8.5,\"stretchY\":12.0,\"biomeDepthWeight\":1.0,\"biomeDepthOffset\":0.0,\"biomeScaleWeight\":1.0,\"biomeScaleOffset\":0.0,\"seaLevel\":63,\"useCaves\":true,\"useDungeons\":true,\"dungeonChance\":8,\"useStrongholds\":true,\"useVillages\":true,\"useMineShafts\":true,\"useTemples\":true,\"useMonuments\":true,\"useRavines\":true,\"useWaterLakes\":true,\"waterLakeChance\":4,\"useLavaLakes\":true,\"lavaLakeChance\":80,\"useLavaOceans\":false,\"fixedBiome\":0,\"biomeSize\":8,\"riverSize\":4,\"dirtSize\":33,\"dirtCount\":10,\"dirtMinHeight\":0,\"dirtMaxHeight\":256,\"gravelSize\":33,\"gravelCount\":8,\"gravelMinHeight\":0,\"gravelMaxHeight\":256,\"graniteSize\":33,\"graniteCount\":10,\"graniteMinHeight\":0,\"graniteMaxHeight\":80,\"dioriteSize\":33,\"dioriteCount\":10,\"dioriteMinHeight\":0,\"dioriteMaxHeight\":80,\"andesiteSize\":33,\"andesiteCount\":10,\"andesiteMinHeight\":0,\"andesiteMaxHeight\":80,\"coalSize\":17,\"coalCount\":20,\"coalMinHeight\":0,\"coalMaxHeight\":128,\"ironSize\":9,\"ironCount\":20,\"ironMinHeight\":0,\"ironMaxHeight\":64,\"goldSize\":9,\"goldCount\":2,\"goldMinHeight\":0,\"goldMaxHeight\":32,\"redstoneSize\":8,\"redstoneCount\":8,\"redstoneMinHeight\":0,\"redstoneMaxHeight\":16,\"diamondSize\":8,\"diamondCount\":1,\"diamondMinHeight\":0,\"diamondMaxHeight\":16,\"lapisSize\":7,\"lapisCount\":1,\"lapisCenterHeight\":16,\"lapisSpread\":16}";
                                                  ObfuscationReflectionHelper.setPrivateValue(GuiCreateWorld.class, guiCreateWorld, 4, 24);
                                               }
                                            }
                                            
                                            

                                            Il faudra que tu remplaces le nombre de "fixedBiome":0 par l’ID de ton biome.
                                            Aussi, même si le biome size est élevé, je n’exclue pas le fait qu’un océan puisse apparaître, mais pour avoir testé, j’en ai pas trouvé.

                                            Et pour que ton joueur apparaisse sur ton biome :

                                            
                                            @EventHandler
                                            public void preInit(FMLPreInitializationEvent event) {
                                               WorldChunkManager.allowedBiomes.clear();
                                               WorldChunkManager.allowedBiomes.add(<ton biome="">);
                                            }
                                            
                                            ```</ton>
                                            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