• Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    Solved Supprimer des biomes

    1.8.x
    1.8.9
    5
    27
    4116
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • E
      elx9000 last edited by

      Bonjour à tous, je viens vers vous parce que je n’arrive pas a trouver comment on peut supprimer un ou plusieurs biomes vanilla. Je pensait à BiomeManager.removeSpawnBiome mais ça ne fonctionne pas et BiomeManager.removeBiome ne semble pas fonctionner non plus. Je m’y suis peut-être mal pris. Donc comment supprimer un biome ?

      Merci par avance pour votre aide.

      1 Reply Last reply Reply Quote 0
      • Dylem
        Dylem last edited by

        Ta fonction doit être appelée dans “public void init”.

        Exemple :

        
        @EventHandler
        public void init(FMLInitializationEvent event) {
        
            proxy.init(event);
        
            Biome biome = Biomes.OCEAN;
            BiomeManager.removeSpawnBiome(biome);
        }
        
        

        J’ai testé, et dans une map superflat avec que de l’eau ça donne une map dans le vide.

        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 Reply Last reply Reply Quote 0
        • E
          elx9000 last edited by

          J’ai mis ça dans public void init :

          
                 BiomeManager.removeSpawnBiome(BiomeGenBase.birchForest);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.birchForestHills);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.coldBeach);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.coldTaiga);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.coldTaigaHills);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.deepOcean);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.desert);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.desertHills);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.extremeHills);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.extremeHillsEdge);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.extremeHillsPlus);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.forest);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.forestHills);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.frozenOcean);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.frozenRiver);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.hell);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.iceMountains);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.icePlains);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.jungle);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.jungleEdge);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.jungleHills);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.megaTaiga);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.megaTaigaHills);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.mesa);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.mesaPlateau);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.mesaPlateau_F);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.mushroomIsland);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.mushroomIslandShore);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.plains);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.river);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.roofedForest);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.savanna);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.savannaPlateau);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.stoneBeach);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.swampland);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.taiga);
                 BiomeManager.removeSpawnBiome(BiomeGenBase.taigaHills);
          
          

          Vu que je n’est pas la class Biomes j’ai mis BiomeGenBase. Le problèmes c’est que ça ne fonctionne toujours pas. Par exemple le biome plaine est bien généré alors qu’il ne devrait pas.

          1 Reply Last reply Reply Quote 0
          • Dylem
            Dylem last edited by

            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 Reply Last reply Reply Quote 0
            • E
              elx9000 last edited by

              A la place de BiomeManager ?

              1 Reply Last reply Reply Quote 0
              • Dylem
                Dylem last edited by

                @‘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 Reply Last reply Reply Quote 0
                • E
                  elx9000 last edited by

                  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 Reply Last reply Reply Quote 0
                  • E
                    elx9000 last edited by

                    Pas d’idée ?

                    1 Reply Last reply Reply Quote 0
                    • LeBossMax2
                      LeBossMax2 last edited by

                      @‘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 Reply Last reply Reply Quote 0
                      • E
                        elx9000 last edited by

                        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 Reply Last reply Reply Quote 0
                        • Dylem
                          Dylem last edited by

                          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 Reply Last reply Reply Quote 0
                          • Alexandre1156
                            Alexandre1156 last edited by

                            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 Reply Last reply Reply Quote 0
                            • E
                              elx9000 last edited by

                              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 Reply Last reply Reply Quote 0
                              • Alexandre1156
                                Alexandre1156 last edited by

                                @‘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 Reply Last reply Reply Quote 0
                                • E
                                  elx9000 last edited by

                                  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 Reply Last reply Reply Quote 0
                                  • Deleted
                                    Deleted last edited by

                                    La classe ArrayUtils devrait pouvoir t’aider 😉

                                    1 Reply Last reply Reply Quote 0
                                    • E
                                      elx9000 last edited by

                                      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 Reply Last reply Reply Quote 0
                                      • Alexandre1156
                                        Alexandre1156 last edited by

                                        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 Reply Last reply Reply Quote 0
                                        • E
                                          elx9000 last edited by

                                          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 Reply Last reply Reply Quote 0
                                          • Dylem
                                            Dylem last edited by

                                            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 Reply Last reply Reply Quote 0
                                            • 1
                                            • 2
                                            • 1 / 2
                                            • First post
                                              Last post
                                            Design by Woryk
                                            Contact / Mentions Légales

                                            MINECRAFT FORGE FRANCE © 2018

                                            Powered by NodeBB