MFF

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

    Plusieurs questions/problèmes

    Planifier Épinglé Verrouillé Déplacé Résolu 1.8.x
    1.8
    95 Messages 9 Publieurs 15.5k 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.
    • RedRelayR Hors-ligne
      RedRelay Moddeurs confirmés
      dernière édition par

      Je vais corriger quelques trucs qui me semble faux ^^ Je peux me tromper ^^

      @‘BrokenSwing’:

      1. Changer les blocs devrait être un peu lourd, surtout si la map déjà générée est grande, et faudra aussi changer les blocs si un joueur génère du terrain

      Non parce que normalement tu n’as pas à modifier les chunks qui ne sont pas chargé, donc peut importe la taille de la map, il y a toujours le même nombre de chunk chargés.

      @‘BrokenSwing’:

      1. Celui-ci ne devrait pas être trop compliqué, tu récupère la liste des entitées du monde et tu check voir si il faut remplacer, un truc dans ce genre

      En utilisant des fonctionnalités Java 8, tu rends incompatible ton mod avec ceux qui n’ont pas un JRE >= 8 et beaucoup sont dans ce cas.

      @‘BrokenSwing’:

      1. je me disais qu’une solution pourrait être de créer ton propre liquide qui remplacerait l’eau dès la génération du monde

      Si tu fais ça tu lis ton monde a ton mods, tu supprime ton mods, tu n’a plus d’eau du tout dans toute ta dimension.

      @‘BrokenSwing’:

      Il faut que tu l’exécute dans une fonction qui prend le monde en paramètre, celle qui va déclencher l’apocalipse, au pire tu peut aussi utiliser “Minecraft.getMinecraft().theWorld;”

      Ne marche que coté client, donc ça fera crasher le jeu, tu aura une autre NullPointerException

      J’ai l’impression que tu t’y prend très mal.
      Le concept d’apocalypse et de dimension n’ont rien a voir et peuvent être clairement séparé.
      Tu as d’une part une dimension, ou tu va générer les structures et faire spawner le boss et d’autre part tout le système d’apocalypse.
      Sépare les deux, commence par l’un ou l’autre.

      • Créer une dimension, c’est très documenté, il n’y a pas grand chose a inventer, juste suivre les tutoriels ça suffit.
      • Créer le système d’apocalypse, ce n’est pas documenté, il va falloir que tu fasse tout de 0 quasiment. J’espère que tu as de bonnes bases.

      Je ne t’aiderai pas pour la dimension, il y a des tutos pour ça.
      Par contre pour bien comprendre le système d’apocalypse que tu veux mettre en place, tu as une analyse préalable a faire.
      Pose toi les bonnes question :

      • Qu’est ce qui déclenche l’apocalypse ? : l’entré dans une dimension
      • Qu’est ce qui termine l’apocalypse ? : la mort d’un boss
        Conclusion : tes 2 déclencheurs sont ponctuel et peuvent être simuler.

      Quand tu vas tester ton mod, tu vas t’amuser a créer une nouvelle dimension à chaque fois ? Puis a chaque fois tu va tuer le boss ? Tu n’as pas finis.
      Simplifie le problème, mets de coté les déclencheurs, la création de dimension et du boss. Ça, ça n’a rien a voir avec la fonctionnalité que tu souhaite implémenter. Concentrons nous sur l’apocalypse.
      On va simplifier les déclencheurs, on va créer des déclencheurs de tests :

      • Qu’est ce qui déclenche l’apocalypse ? : la commande /modid apocalypse-on
      • Qu’est ce qui termine l’apocalypse ? : la commande /modid apocalypse-off
        Conclusion : On a 2 déclencheurs ultra simple et rapide a implémenter et taper une simple commande suffit.

      Comme je te l’ai dit le système d’apocalypse est indépendant de la dimension, rien ne t’empêche d’avoir une apocalypse dans l’overworld.
      Restreindre ton apocalypse à ta dimension, ça sera une fonctionnalité que tu ajoutera par la suite.

      Tu dois ensuite te demander ce que tu dois faire lorsque tu déclenche une apocalypse, je vois plusieurs choses :
      1 - Modifier un flag pour indiquer que tu es en apocalypse, ce flag peut par exemple être un boolean dans un WorldSavedData.
      2 - Pour tout les chunk chargés, remplacer l’eau par de la lave.
      3 - Prévoir un handler qui écoute le chargement/déchargement de chunk, afin de remplacer l’eau par de la lave dès qu’un chunk est chargé et que le flag d’apocalypse est à true

      Ensuite tu te pose la même question lorsque l’apocalypse se termine :
      1 - Modifier un flag pour indiquer que tu n’es plus en apocalypse
      2 - Pour tout les chunk chargés, remplacer la lave par de l’eau.
      3 - Prévoir un handler qui écoute le chargement/déchargement de chunk, afin de remplacer la lave par l’eau dès qu’un chunk est chargé et que le flag d’apocalypse est à false

      La ça doit déjà te donner une idée de la structure de ton mods.
      Ensuite tu as plein d’optimisation et d’amélioration à faire :

      • Comment, lorsqu’on sort de l’apocalypse, remplacer uniquement la lave anciennement eau par de l’eau sans toucher à la lave qui était déjà lave à l’origine
      • Comment éviter de remplacer l’eau par la lave et inversement lorsque le traitement à déjà été fait.

      Fait déjà les premières étapes, ensuite je pourrais t’aiguiller d’avantage.
      Tu te lances dans un vrai mod, qui demande un bagage suffisamment solide, et beaucoup d’autonomie.
      Bon courage.

      –------------------------------------------------------------------------------------
      Si tu trouves mon intervention pertinente, n'hésite pas a m…

      1 réponse Dernière réponse Répondre Citer 1
      • BrokenSwingB Hors-ligne
        BrokenSwing Moddeurs confirmés Rédacteurs
        dernière édition par

        @Blackout
        Pour ce qui est de changer l’eau en lave j’avais dis que je savait pas trop
        Pour les entitées que proposes-tu ?
        Pour le Minecraft.getMinecraft().theWorld, c’est totalement vrai, faudrai que je m’y remette correctement avant de poster (je crois que c’est ce que je vais faire :P)

        Sinon les solutions que tu propose me semblent bien (très bien expliquées) et j’ai apprécié ta mise en forme

        1 réponse Dernière réponse Répondre Citer 0
        • RedRelayR Hors-ligne
          RedRelay Moddeurs confirmés
          dernière édition par

          @‘BrokenSwing’:

          @Blackout
          Pour les entitées que proposes-tu ?

          Une boucle toute simple, un for.

          –------------------------------------------------------------------------------------
          Si tu trouves mon intervention pertinente, n'hésite pas a m…

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

            Salut
            Désolé du temps de la réponse, j’étais pas mal occupée par le lycée et tout, et j’ai aussi chercher pourquoi mon monde marchait pas, même après recréation de zéro : c’est le World Provider

            Bref, j’ai suivi tes conseil et créé des commandes qui marchent toutes bien. Mais j’ai un problème bizarre quand je veux remplacer l’eau par de la lave (j’ai testé de mettre de la lave normal sans rien pour tester). J’ai mis ce code :

             @SubscribeEvent
             public void waterAndLava(ChunkEvent.Load event)
             {
              if(event.getChunk().isLoaded())
              {
               GameRegistry.registerWorldGenerator(new ApocalypseBlockChangeInWorldGenerator(), 0);
              }
             }
            ``` (c'est peut-être pas le bon évent mais à mon avis, si)
            
            Le ApocalypseBlockChangeInWorldGenerator :
            ```java
            package This_is_Halloween.Generation;
            
            import java.util.Random;
            
            import net.minecraft.util.BlockPos;
            import net.minecraft.world.World;
            import net.minecraft.world.chunk.IChunkProvider;
            import net.minecraftforge.fml.common.IWorldGenerator;
            
            public class ApocalypseBlockChangeInWorldGenerator implements IWorldGenerator
            {
             @Override
             public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider)
             {
              switch(world.provider.getDimensionId())
              {
              case 0:
               generateSurface(world, random, chunkX * 16, chunkZ * 16);
              }
             }
            
             private void generateSurface(World world, Random rand, int x, int z)
             {
              for(int i = 0; i < 40; i ++)
              {
               int randPosX = x + rand.nextInt(16);
               int randPosY = rand.nextInt(128);
               int randPosZ = z + rand.nextInt(16);
               (new ApocalypseBlocksChangeInWorld()).generate(world, rand, new BlockPos(randPosX, randPosY, randPosZ));
              }
             }
            }
            

            qui appelle ApocalypseBlocksChangeInWorld :

            package This_is_Halloween.Generation;
            
            import java.util.Random;
            
            import net.minecraft.block.state.IBlockState;
            import net.minecraft.init.Blocks;
            import net.minecraft.util.BlockPos;
            import net.minecraft.world.World;
            import net.minecraft.world.gen.feature.WorldGenerator;
            
            public class ApocalypseBlocksChangeInWorld extends WorldGenerator
            {
            public boolean generate(World world, Random random, BlockPos pos)
            {
            // There is Apocalypse ?
            if(This_is_Halloween.This_is_Halloween.apocalypse == true)
            {
            // WATER
            if((world.getBlockState(new BlockPos(pos.getX(), pos.getY(), pos.getZ())) == (IBlockState) Blocks.water.getDefaultState()))
            {
            //Still Water
            world.setBlockState(new BlockPos(pos.getX(), pos.getY(), pos.getZ()), Blocks.lava.getDefaultState());
            return true;
            }
            else if((world.getBlockState(new BlockPos(pos.getX(), pos.getY(), pos.getZ())) == (IBlockState) Blocks.flowing_water.getDefaultState()))
            {
            // Flowing Water
            world.setBlockState(new BlockPos(pos.getX(), pos.getY(), pos.getZ()), Blocks.flowing_lava.getDefaultState());
            return true;
            }
            }
            
            else if(This_is_Halloween.This_is_Halloween.apocalypse == false)
            {
            // LAVA
            if((world.getBlockState(new BlockPos(pos.getX(), pos.getY(), pos.getZ())) == (IBlockState) Blocks.lava.getDefaultState()))
            {
            //Still Lava
            world.setBlockState(new BlockPos(pos.getX(), pos.getY(), pos.getZ()), Blocks.water.getDefaultState());
            return true;
            }
            else if((world.getBlockState(new BlockPos(pos.getX(), pos.getY(), pos.getZ())) == (IBlockState) Blocks.flowing_lava.getDefaultState()))
            {
            // Flowing Lava
            world.setBlockState(new BlockPos(pos.getX(), pos.getY(), pos.getZ()), Blocks.flowing_water.getDefaultState());
            return true;
            }
            }
            return false;
            }
            }
            

            Pour moi, malgré les lags que j’étais presque sûr qu’ils existaient si y’avait une grande étendu d’eau (comme par exemple une mer), je pensais que ça changeait toute l’eau par de la lave. et bah voilà ce que ça me fait :

            Je sais pas si vous verrez, mais tout les blocks noirs dans l’eau, c’est de l’obsidienne, résultat de la transformation eau+lave.
            Du coup, ça change seulement une partie de l’eau et non toute

            Et quand j’ai testé de créer un monde uniquement avec de la lave, ça crash carrement à la création.
            Voilà le crash :

            [18:51:17] [main/INFO] [GradleStart]: Extra: []
            [18:51:17] [main/INFO] [GradleStart]: Running with arguments: [–userProperties, {}, --assetsDir, C:/Users/Antonin/.gradle/caches/minecraft/assets, --assetIndex, 1.8, --accessToken{REDACTED}, --version, 1.8, --tweakClass, net.minecraftforge.fml.common.launcher.FMLTweaker, --tweakClass, net.minecraftforge.gradle.tweakers.CoremodTweaker]
            [18:51:17] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
            [18:51:17] [main/INFO] [LaunchWrapper]: Using primary tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
            [18:51:17] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.CoremodTweaker
            [18:51:17] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLTweaker
            [18:51:17] [main/INFO] [FML]: Forge Mod Loader version 11.14.4.1563 for Minecraft 1.8 loading
            [18:51:17] [main/INFO] [FML]: Java is Java HotSpot(TM) 64-Bit Server VM, version 1.8.0_92, running on Windows 10:amd64:10.0, installed at G:\Programmes\Java\jre
            [18:51:17] [main/INFO] [FML]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation
            [18:51:17] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.CoremodTweaker
            [18:51:17] [main/INFO] [GradleStart]: Injecting location in coremod net.minecraftforge.fml.relauncher.FMLCorePlugin
            [18:51:17] [main/INFO] [GradleStart]: Injecting location in coremod net.minecraftforge.classloading.FMLForgePlugin
            [18:51:17] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
            [18:51:17] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLDeobfTweaker
            [18:51:17] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
            [18:51:17] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
            [18:51:17] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
            [18:51:17] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper
            [18:51:18] [main/ERROR] [FML]: The binary patch set is missing. Either you are in a development environment, or things are not going to work!
            [18:51:19] [main/ERROR] [FML]: FML appears to be missing any signature data. This is not a good thing
            [18:51:19] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper
            [18:51:19] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLDeobfTweaker
            [18:51:20] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.gradle.tweakers.AccessTransformerTweaker
            [18:51:20] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.TerminalTweaker
            [18:51:20] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.TerminalTweaker
            [18:51:20] [main/INFO] [LaunchWrapper]: Launching wrapped minecraft {net.minecraft.client.main.Main}
            [18:51:20] [Client thread/INFO]: Setting user: Player1
            [18:51:22] [Client thread/INFO]: LWJGL Version: 2.9.1
            [18:51:23] [Client thread/INFO] [STDOUT]: [net.minecraftforge.fml.client.SplashProgress:start:246]: –-- Minecraft Crash Report ----
            // Hey, that tickles! Hehehe!
            
            Time: 10/06/16 18:51
            Description: Loading screen debug info
            
            This is just a prompt for computer specs to be printed. THIS IS NOT A ERROR
            
            A detailed walkthrough of the error, its code path and all known details is as follows:
            ---------------------------------------------------------------------------------------
            
            -- System Details --
            Details:
            Minecraft Version: 1.8
            Operating System: Windows 10 (amd64) version 10.0
            Java Version: 1.8.0_92, Oracle Corporation
            Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
            Memory: 883830480 bytes (842 MB) / 1038876672 bytes (990 MB) up to 1038876672 bytes (990 MB)
            JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
            IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
            FML:
            Loaded coremods (and transformers):
            GL info: ' Vendor: 'ATI Technologies Inc.' Version: '4.5.13416 Compatibility Profile Context 15.300.1025.1001' Renderer: 'AMD Radeon R9 200 Series'
            [18:51:23] [Client thread/INFO] [MinecraftForge]: Attempting early MinecraftForge initialization
            [18:51:23] [Client thread/INFO] [FML]: MinecraftForge v11.14.4.1563 Initialized
            [18:51:23] [Client thread/INFO] [FML]: Replaced 204 ore recipies
            [18:51:23] [Client thread/INFO] [MinecraftForge]: Completed early MinecraftForge initialization
            [18:51:23] [Client thread/INFO] [FML]: Found 0 mods from the command line. Injecting into mod discoverer
            [18:51:23] [Client thread/INFO] [FML]: Searching G:\Codage\Minecraft\This_is_Halloween\v1.3\MC 1.8\run\mods for mods
            [18:51:25] [Client thread/INFO] [FML]: Forge Mod Loader has identified 4 mods to load
            [18:51:25] [Client thread/INFO] [FML]: Attempting connection with missing mods [mcp, FML, Forge, This_is_Halloween] at CLIENT
            [18:51:25] [Client thread/INFO] [FML]: Attempting connection with missing mods [mcp, FML, Forge, This_is_Halloween] at SERVER
            [18:51:25] [Client thread/INFO]: Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Minecraft Forge, FMLFileResourcePack:This_is_Halloween
            [18:51:25] [Client thread/INFO] [FML]: Processing ObjectHolder annotations
            [18:51:25] [Client thread/INFO] [FML]: Found 384 ObjectHolder annotations
            [18:51:25] [Client thread/INFO] [FML]: Identifying ItemStackHolder annotations
            [18:51:25] [Client thread/INFO] [FML]: Found 0 ItemStackHolder annotations
            [18:51:25] [Client thread/INFO] [FML]: Configured a dormant chunk cache size of 0
            [18:51:25] [Client thread/INFO] [FML]: Applying holder lookups
            [18:51:25] [Forge Version Check/INFO] [ForgeVersionCheck]: [Forge] Starting version check at http://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json
            [18:51:25] [Client thread/INFO] [FML]: Holder lookups applied
            [18:51:25] [Client thread/INFO] [FML]: Injecting itemstacks
            [18:51:25] [Client thread/INFO] [FML]: Itemstack injection complete
            [18:51:26] [Sound Library Loader/INFO]: Starting up SoundSystem…
            [18:51:26] [Thread-9/INFO]: Initializing LWJGL OpenAL
            [18:51:26] [Thread-9/INFO]: (The LWJGL binding of OpenAL.  For more information, see http://www.lwjgl.org)
            [18:51:26] [Thread-9/INFO]: OpenAL initialized.
            [18:51:26] [Forge Version Check/INFO] [ForgeVersionCheck]: [Forge] Found status: UP_TO_DATE Target: null
            [18:51:26] [Sound Library Loader/INFO]: Sound engine started
            [18:51:29] [Client thread/INFO] [FML]: Max texture size: 16384
            [18:51:29] [Client thread/INFO]: Created: 16x16 textures-atlas
            [18:51:30] [Client thread/INFO] [FML]: Injecting itemstacks
            [18:51:30] [Client thread/INFO] [FML]: Itemstack injection complete
            [18:51:30] [Client thread/INFO] [FML]: Forge Mod Loader has successfully loaded 4 mods
            [18:51:30] [Client thread/INFO]: Reloading ResourceManager: Default, FMLFileResourcePack:Forge Mod Loader, FMLFileResourcePack:Minecraft Forge, FMLFileResourcePack:This_is_Halloween
            [18:51:30] [Client thread/INFO]: SoundSystem shutting down…
            [18:51:30] [Client thread/WARN]: Author: Paul Lamb, www.paulscode.com
            [18:51:30] [Sound Library Loader/INFO]: Starting up SoundSystem…
            [18:51:30] [Thread-11/INFO]: Initializing LWJGL OpenAL
            [18:51:30] [Thread-11/INFO]: (The LWJGL binding of OpenAL.  For more information, see http://www.lwjgl.org)
            [18:51:30] [Thread-11/INFO]: OpenAL initialized.
            [18:51:30] [Sound Library Loader/INFO]: Sound engine started
            [18:51:32] [Client thread/INFO] [FML]: Max texture size: 16384
            [18:51:33] [Client thread/INFO]: Created: 512x512 textures-atlas
            [18:51:33] [Client thread/ERROR] [TEXTURE ERRORS]: +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
            [18:51:33] [Client thread/ERROR] [TEXTURE ERRORS]: The following texture errors were found.
            [18:51:33] [Client thread/ERROR] [TEXTURE ERRORS]: ==================================================
            [18:51:33] [Client thread/ERROR] [TEXTURE ERRORS]:   DOMAIN this_is_halloween
            [18:51:33] [Client thread/ERROR] [TEXTURE ERRORS]: –------------------------------------------------
            [18:51:33] [Client thread/ERROR] [TEXTURE ERRORS]:   domain this_is_halloween is missing 0 textures
            [18:51:33] [Client thread/ERROR] [TEXTURE ERRORS]:     domain this_is_halloween has 1 location:
            [18:51:33] [Client thread/ERROR] [TEXTURE ERRORS]:       mod This_is_Halloween resources at G:\Codage\Minecraft\This_is_Halloween\v1.3\MC 1.8\bin
            [18:51:33] [Client thread/ERROR] [TEXTURE ERRORS]: –-----------------------
            [18:51:33] [Client thread/ERROR] [TEXTURE ERRORS]:     The following other errors were reported for domain this_is_halloween:
            [18:51:33] [Client thread/ERROR] [TEXTURE ERRORS]: –-----------------------
            [18:51:33] [Client thread/ERROR] [TEXTURE ERRORS]:     Problem: broken aspect ratio and not an animation
            [18:51:33] [Client thread/ERROR] [TEXTURE ERRORS]:       textures/blocks/PortalUnderworld.png
            [18:51:33] [Client thread/ERROR] [TEXTURE ERRORS]: ==================================================
            [18:51:33] [Client thread/ERROR] [TEXTURE ERRORS]: +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
            [18:51:59] [Server thread/INFO]: Starting integrated minecraft server version 1.8
            [18:51:59] [Server thread/INFO]: Generating keypair
            [18:51:59] [Server thread/INFO]: Converting map!
            [18:51:59] [Server thread/INFO]: Scanning folders…
            [18:51:59] [Server thread/INFO]: Total conversion count is 0
            [18:51:59] [Server thread/INFO] [FML]: Injecting existing block and item data into this server instance
            [18:51:59] [Server thread/INFO] [FML]: Applying holder lookups
            [18:51:59] [Server thread/INFO] [FML]: Holder lookups applied
            [18:51:59] [Server thread/INFO] [FML]: Loading dimension 0 (New World) (net.minecraft.server.integrated.IntegratedServer@3c9d2074)
            [18:51:59] [Server thread/WARN]: Unable to find spawn biome
            [18:52:03] [Server thread/ERROR]: Encountered an unexpected exception
            net.minecraft.util.ReportedException: Exception initializing level
            at net.minecraft.world.WorldServer.initialize(WorldServer.java:851) ~[WorldServer.class:?]
            at net.minecraft.server.integrated.IntegratedServer.loadAllWorlds(IntegratedServer.java:92) ~[IntegratedServer.class:?]
            at net.minecraft.server.integrated.IntegratedServer.startServer(IntegratedServer.java:130) ~[IntegratedServer.class:?]
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:500) [MinecraftServer.class:?]
            at java.lang.Thread.run(Unknown Source) [?:1.8.0_92]
            Caused by: java.lang.NoClassDefFoundError: net/minecraft/crash/CrashReportCategory$4
            at net.minecraft.crash.CrashReportCategory.addBlockInfo(CrashReportCategory.java:280) ~[CrashReportCategory.class:?]
            at net.minecraft.world.World.notifyBlockOfStateChange(World.java:602) ~[World.class:?]
            at net.minecraft.world.World.notifyNeighborsOfStateChange(World.java:527) ~[World.class:?]
            at net.minecraft.world.World.notifyNeighborsRespectDebug(World.java:480) ~[World.class:?]
            at net.minecraft.world.World.markAndNotifyBlock(World.java:424) ~[World.class:?]
            at net.minecraft.world.World.setBlockState(World.java:406) ~[World.class:?]
            at net.minecraft.world.World.setBlockState(World.java:465) ~[World.class:?]
            at This_is_Halloween.Generation.ApocalypseBlocksChangeInWorld.generate(ApocalypseBlocksChangeInWorld.java:39) ~[ApocalypseBlocksChangeInWorld.class:?]
            at This_is_Halloween.Generation.ApocalypseBlockChangeInWorldGenerator.generateSurface(ApocalypseBlockChangeInWorldGenerator.java:29) ~[ApocalypseBlockChangeInWorldGenerator.class:?]
            at This_is_Halloween.Generation.ApocalypseBlockChangeInWorldGenerator.generate(ApocalypseBlockChangeInWorldGenerator.java:18) ~[ApocalypseBlockChangeInWorldGenerator.class:?]
            at net.minecraftforge.fml.common.registry.GameRegistry.generateWorld(GameRegistry.java:112) ~[GameRegistry.class:?]
            at net.minecraft.world.gen.ChunkProviderServer.populate(ChunkProviderServer.java:293) ~[ChunkProviderServer.class:?]
            at net.minecraft.world.chunk.Chunk.populateChunk(Chunk.java:1192) ~[Chunk.class:?]
            at net.minecraft.world.gen.ChunkProviderServer.originalLoadChunk(ChunkProviderServer.java:196) ~[ChunkProviderServer.class:?]
            at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:138) ~[ChunkProviderServer.class:?]
            at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:108) ~[ChunkProviderServer.class:?]
            at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:209) ~[ChunkProviderServer.class:?]
            at net.minecraft.world.World.getChunkFromChunkCoords(World.java:360) ~[World.class:?]
            at net.minecraft.world.World.getChunkFromBlockCoords(World.java:349) ~[World.class:?]
            at net.minecraft.world.World.getBlockState(World.java:902) ~[World.class:?]
            at net.minecraft.world.World.isAirBlock(World.java:271) ~[World.class:?]
            at net.minecraft.world.World.getGroundAboveSeaLevel(World.java:247) ~[World.class:?]
            at net.minecraft.world.WorldProvider.canCoordinateBeSpawn(WorldProvider.java:87) ~[WorldProvider.class:?]
            at net.minecraft.world.WorldServer.createSpawnPosition(WorldServer.java:910) ~[WorldServer.class:?]
            at net.minecraft.world.WorldServer.initialize(WorldServer.java:829) ~[WorldServer.class:?]
            … 4 more
            [18:52:03] [Server thread/ERROR]: This crash report has been saved to: G:\Codage\Minecraft\This_is_Halloween\v1.3\MC 1.8\run\.\crash-reports\crash-2016-06-10_18.52.03-server.txt
            [18:52:03] [Server thread/INFO] [FML]: Applying holder lookups
            [18:52:03] [Server thread/INFO] [FML]: Holder lookups applied
            [18:52:03] [Server thread/INFO] [FML]: The state engine was in incorrect state SERVER_STARTING and forced into state SERVER_STOPPED. Errors may have been discarded.
            [18:52:05] [Client thread/INFO] [STDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:663]: –-- Minecraft Crash Report ----
            // Don't be sad. I'll do better next time, I promise!
            
            Time: 10/06/16 18:52
            Description: Exception initializing level
            
            java.lang.NoClassDefFoundError: net/minecraft/crash/CrashReportCategory$4
            at net.minecraft.crash.CrashReportCategory.addBlockInfo(CrashReportCategory.java:280)
            at net.minecraft.world.World.notifyBlockOfStateChange(World.java:602)
            at net.minecraft.world.World.notifyNeighborsOfStateChange(World.java:527)
            at net.minecraft.world.World.notifyNeighborsRespectDebug(World.java:480)
            at net.minecraft.world.World.markAndNotifyBlock(World.java:424)
            at net.minecraft.world.World.setBlockState(World.java:406)
            at net.minecraft.world.World.setBlockState(World.java:465)
            at This_is_Halloween.Generation.ApocalypseBlocksChangeInWorld.generate(ApocalypseBlocksChangeInWorld.java:39)
            at This_is_Halloween.Generation.ApocalypseBlockChangeInWorldGenerator.generateSurface(ApocalypseBlockChangeInWorldGenerator.java:29)
            at This_is_Halloween.Generation.ApocalypseBlockChangeInWorldGenerator.generate(ApocalypseBlockChangeInWorldGenerator.java:18)
            at net.minecraftforge.fml.common.registry.GameRegistry.generateWorld(GameRegistry.java:112)
            at net.minecraft.world.gen.ChunkProviderServer.populate(ChunkProviderServer.java:293)
            at net.minecraft.world.chunk.Chunk.populateChunk(Chunk.java:1192)
            at net.minecraft.world.gen.ChunkProviderServer.originalLoadChunk(ChunkProviderServer.java:196)
            at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:138)
            at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:108)
            at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:209)
            at net.minecraft.world.World.getChunkFromChunkCoords(World.java:360)
            at net.minecraft.world.World.getChunkFromBlockCoords(World.java:349)
            at net.minecraft.world.World.getBlockState(World.java:902)
            at net.minecraft.world.World.isAirBlock(World.java:271)
            at net.minecraft.world.World.getGroundAboveSeaLevel(World.java:247)
            at net.minecraft.world.WorldProvider.canCoordinateBeSpawn(WorldProvider.java:87)
            at net.minecraft.world.WorldServer.createSpawnPosition(WorldServer.java:910)
            at net.minecraft.world.WorldServer.initialize(WorldServer.java:829)
            at net.minecraft.server.integrated.IntegratedServer.loadAllWorlds(IntegratedServer.java:92)
            at net.minecraft.server.integrated.IntegratedServer.startServer(IntegratedServer.java:130)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:500)
            at java.lang.Thread.run(Unknown Source)
            
            A detailed walkthrough of the error, its code path and all known details is as follows:
            ---------------------------------------------------------------------------------------
            
            -- Head --
            Stacktrace:
            at net.minecraft.crash.CrashReportCategory.addBlockInfo(CrashReportCategory.java:280)
            at net.minecraft.world.World.notifyBlockOfStateChange(World.java:602)
            at net.minecraft.world.World.notifyNeighborsOfStateChange(World.java:527)
            at net.minecraft.world.World.notifyNeighborsRespectDebug(World.java:480)
            at net.minecraft.world.World.markAndNotifyBlock(World.java:424)
            at net.minecraft.world.World.setBlockState(World.java:406)
            at net.minecraft.world.World.setBlockState(World.java:465)
            at This_is_Halloween.Generation.ApocalypseBlocksChangeInWorld.generate(ApocalypseBlocksChangeInWorld.java:39)
            at This_is_Halloween.Generation.ApocalypseBlockChangeInWorldGenerator.generateSurface(ApocalypseBlockChangeInWorldGenerator.java:29)
            at This_is_Halloween.Generation.ApocalypseBlockChangeInWorldGenerator.generate(ApocalypseBlockChangeInWorldGenerator.java:18)
            at net.minecraftforge.fml.common.registry.GameRegistry.generateWorld(GameRegistry.java:112)
            at net.minecraft.world.gen.ChunkProviderServer.populate(ChunkProviderServer.java:293)
            at net.minecraft.world.chunk.Chunk.populateChunk(Chunk.java:1192)
            at net.minecraft.world.gen.ChunkProviderServer.originalLoadChunk(ChunkProviderServer.java:196)
            at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:138)
            at net.minecraft.world.gen.ChunkProviderServer.loadChunk(ChunkProviderServer.java:108)
            at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:209)
            at net.minecraft.world.World.getChunkFromChunkCoords(World.java:360)
            at net.minecraft.world.World.getChunkFromBlockCoords(World.java:349)
            at net.minecraft.world.World.getBlockState(World.java:902)
            at net.minecraft.world.World.isAirBlock(World.java:271)
            at net.minecraft.world.World.getGroundAboveSeaLevel(World.java:247)
            at net.minecraft.world.WorldProvider.canCoordinateBeSpawn(WorldProvider.java:87)
            at net.minecraft.world.WorldServer.createSpawnPosition(WorldServer.java:910)
            
            -- Affected level --
            Details:
            Level name: New World
            All players: 0 total; []
            Chunk stats: ServerChunkCache: 1043 Drop: 0
            Level seed: -7992168318150346498
            Level generator: ID 01 - flat, ver 0\. Features enabled: true
            Level generator options: 3;minecraft:bedrock,5*minecraft:stone,5*minecraft:dirt,5*minecraft:sand,90*minecraft:lava;24;oceanmonument,biome_1
            Level spawn location: 0,00,0,00,0,00 - World: (0,0,0), Chunk: (at 0,0,0 in 0,0; contains blocks 0,0,0 to 15,255,15), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
            Level time: 0 game time, 0 day time
            Level dimension: 0
            Level storage version: 0x04ABD - Anvil
            Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
            Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: true
            Stacktrace:
            at net.minecraft.world.WorldServer.initialize(WorldServer.java:829)
            at net.minecraft.server.integrated.IntegratedServer.loadAllWorlds(IntegratedServer.java:92)
            at net.minecraft.server.integrated.IntegratedServer.startServer(IntegratedServer.java:130)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:500)
            at java.lang.Thread.run(Unknown Source)
            
            -- System Details --
            Details:
            Minecraft Version: 1.8
            Operating System: Windows 10 (amd64) version 10.0
            Java Version: 1.8.0_92, Oracle Corporation
            Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
            Memory: 659648672 bytes (629 MB) / 1038876672 bytes (990 MB) up to 1038876672 bytes (990 MB)
            JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
            IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
            FML: MCP v9.10 FML v8.0.99.99 Minecraft Forge 11.14.4.1563 4 mods loaded, 4 mods active
            States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
            UCHIJAA mcp{9.05} [Minecraft Coder Pack] (minecraft.jar)
            UCHIJAA FML{8.0.99.99} [Forge Mod Loader] (forgeSrc-1.8-11.14.4.1563.jar)
            UCHIJAA Forge{11.14.4.1563} [Minecraft Forge] (forgeSrc-1.8-11.14.4.1563.jar)
            UCHIJAA This_is_Halloween{1.3} [This_is_Halloween] (bin)
            Loaded coremods (and transformers):
            GL info: ~~ERROR~~ RuntimeException: No OpenGL context found in the current thread.
            Profiler Position: N/A (disabled)
            Player Count: 0 / 8; []
            Type: Integrated Server (map_client.txt)
            Is Modded: Definitely; Client brand changed to 'fml,forge'
            [18:52:05] [Client thread/INFO] [STDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:663]: #@!@# Game crashed! Crash report saved to: #@!@# .\crash-reports\crash-2016-06-10_18.52.03-server.txt
            AL lib: (EE) alc_cleanup: 1 device not closed
            Java HotSpot(TM) 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release
            
            

            Revoilà le fichier :

            package This_is_Halloween.Generation;
            
            import java.util.Random;
            
            import net.minecraft.block.state.IBlockState;
            import net.minecraft.init.Blocks;
            import net.minecraft.util.BlockPos;
            import net.minecraft.world.World;
            import net.minecraft.world.gen.feature.WorldGenerator;
            
            public class ApocalypseBlocksChangeInWorld extends WorldGenerator
            {
            public boolean generate(World world, Random random, BlockPos pos)
            {
            // There is Apocalypse ?
            if(This_is_Halloween.This_is_Halloween.apocalypse == true)
            {
            // WATER
            if((world.getBlockState(new BlockPos(pos.getX(), pos.getY(), pos.getZ())) == (IBlockState) Blocks.water.getDefaultState()))
            {
            //Still Water
            world.setBlockState(new BlockPos(pos.getX(), pos.getY(), pos.getZ()), Blocks.lava.getDefaultState());
            return true;
            }
            else if((world.getBlockState(new BlockPos(pos.getX(), pos.getY(), pos.getZ())) == (IBlockState) Blocks.flowing_water.getDefaultState()))
            {
            // Flowing Water
            world.setBlockState(new BlockPos(pos.getX(), pos.getY(), pos.getZ()), Blocks.flowing_lava.getDefaultState());
            return true;
            }
            }
            
            else if(This_is_Halloween.This_is_Halloween.apocalypse == false)
            {
            // LAVA
            if((world.getBlockState(new BlockPos(pos.getX(), pos.getY(), pos.getZ())) == (IBlockState) Blocks.lava.getDefaultState()))
            {
            //Still Lava
            world.setBlockState(new BlockPos(pos.getX(), pos.getY(), pos.getZ()), Blocks.water.getDefaultState());
            return true;
            }
            else if((world.getBlockState(new BlockPos(pos.getX(), pos.getY(), pos.getZ())) == (IBlockState) Blocks.flowing_lava.getDefaultState()))
            {
            // Flowing Lava
            world.setBlockState(new BlockPos(pos.getX(), pos.getY(), pos.getZ()), Blocks.flowing_water.getDefaultState());
            return true;
            }
            }
            return false;
            }
            }
            

            Ca pointe à cette ligne : ```java
            world.setBlockState(new BlockPos(pos.getX(), pos.getY(), pos.getZ()), Blocks.water.getDefaultState());

            
            Je comprend pas tout là : ça ne change que la moitié de l'eau par de la lave, mais ça veut pas changer la lave par l'eau.
            
            > - Comment, lorsqu'on sort de l'apocalypse, remplacer uniquement la lave anciennement eau par de l'eau sans toucher à la lave qui était déjà lave à l'origine
            > - Comment éviter de remplacer l'eau par la lave et inversement lorsque le traitement à déjà été fait.
            
            J'avais pensé à faire que si c'est l'apocalypse, ça change l'eau par la lave mais en enregistrant un Tag à l'intèrieur (je ne sais pas pour l'instant comment faire, mais je devrais trouvzer je pense). Quand l'apocalypse sera finie, ça changera la lave par l'eau uniquement si y'a le Tag, s'il n'y est pas, ça ne fait rien. Je ne sais pas si y'a une meilleur option, j'ai trouvé que ça (à part créer une lave custom que j'ai fait en 1.7 mais qui buguait, mais voilà qu'elle ne marche plus en 1.8, et aussi parce que
            
            > > BrokenSwing a écrit :
            > > 1) je me disais qu'une solution pourrait être de créer ton propre liquide qui remplacerait l'eau dès la génération du monde
            > 
            > Si tu fais ça tu lis ton monde a ton mods, tu supprime ton mods, tu n'a plus d'eau du tout dans toute ta dimension.
            
            )
            Vooilà, si vous  avez des idées/améliorations/conseils/solutions, n'hésitez pas.
            
            EDIT : Sinon, l'autrefois quand j'ai parcouru les tuto des membres et ceux non valides, j'ai vu un truc pour pouvoir changer les caractéristiques de l'eau. S'il n'y a vraiment pas d'autre moyen, je pourrais utiliser ça pour mettre des dégâts et le feu. Comme ça, plus de remplacement d'eau par de la lave et plus aucun lag, mais je trouve que ça fera moins bien en laissant la texture de l'eau. Mais en même temps, je me dit aussi qu'on peut laisser l'eau, comme ça, ça fera vraiment eau brulante dû au fait de la haute température (qui est de 5698°). A voir…
            1 réponse Dernière réponse Répondre Citer 0
            • robin4002R Hors-ligne
              robin4002 Moddeurs confirmés Rédacteurs Administrateurs
              dernière édition par

              Pour mettre un tag il faut un tile entity. Beaucoup trop lourd. Autant utiliser un bloc de lave custom.

              Remplacer avec le générateur ça ne va pas du tout, car ton code n’est pas exécuté pour toutes la maps mais avec des valeurs aléatoires.
              Il faudrait plutôt passer par un event.

              Et changer directement les propriétés de l’eau serait surement plus simple.

              1 réponse Dernière réponse Répondre Citer 0
              • RedRelayR Hors-ligne
                RedRelay Moddeurs confirmés
                dernière édition par

                Arrête d’utiliser des WorldGenerator, tu n’en a pas besoin dans un premier temps.
                Le WorldGenerator ce sera surement de l’optimisation lorsque tu auras compris les mécaniques internes de chargement de terrain Minecraft.
                Pour l’instant tu n’as besoin que de l’event [c]ChunkEvent.Load event[/c] et de la méthode getBlockState() / setBlockState() de l’attribut event.world.

                –------------------------------------------------------------------------------------
                Si tu trouves mon intervention pertinente, n'hésite pas a m…

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

                  Salut
                  Je vais juste ajouter des dégâts à l’eau, ça sera plus simple (je pourrai peut-être me permettre de remplacer l’eau par la lave plus tard, quand j’aurai plus de connaissances).

                  J’ai créer ma source de dégâts, mais je ne sais pas comment l’appliquer à l’eau. J’ai regardé la liste des events, mais rien ne semble pouvoir répondre à mon problème. J’ai donc pensé à mettre l’eau vanilla à null et la remplacer par une eau custom, mais 2 problèmes se sont posés à moi :

                  1. quand j’ai créer ma lave custom (que j’ai ensuite supprimer) en 1.7, j’ai peiné mais arrivé. Mais quand j’ai voulu la mettre en 1.8, les problèmes commencent. Mais ce n’est pas trop un problème, j’aurai juste qu’à chercher dans les classes vanilla et sur Internet.
                  2. comme dit ici

                  La réflexion, tu peux avoir quelques problèmes de communication, par exemple railcraft l’utilise pour modifier les items de cart, en conséquence si tu as railcraft en solo tu ne peux pas te connecté à un serveur forge qui n’a pas railcraft (donc pas très cool)

                  , ça ne sera pas très bien. Après, je pourrai faire (si c’est possible) une condition qui vérifie sur le serveur a le mod d’installé.

                  Du coup, je suis bloqué 😕

                  PS : j’aurai aussi une question. Quand j’ai créé mes dégâts, j’ai vu qu’on pouvait mettre .lava après waterDamageSource = new DamageSource(“waterDamageSource”);. Du coup, ça fait les mêmes dégâts que la lave ou pas ? Je voulais testé directement en jeu, mais vu mes problèmes ci-dessus, …

                  EDIT : D’ailleurs, même si je remplace l’eau vanilla par mon eau custom, je saurais quand même pas appliquer ma source de dégâts. Donc dans tous les cas, je sais pas comment faire …

                  1 réponse Dernière réponse Répondre Citer 0
                  • robin4002R Hors-ligne
                    robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                    dernière édition par

                    Avec LivingUpdateEvent, if(event.living.isInWater()) -> event.living.attackFrom(ton damage source)
                    Pas besoin de remplacer l’eau.

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

                      C’est tout ? J’avais cru que c’était plus compliqué
                      Je n’arrive pas à bien créer ma source de dégâts. J’arrive à faire en sorte que ça m’enlève un cœur mais je n’arrive pas à mettre le joueur en feu. J’ai testé :

                      .inFire , .onFire , .setFireDamage()
                      ``` mais rien ne marche
                      J'allais vous demander pourquoi quand je me suis dit que c'est de l'eau. Et le principe de l'eau, c'est d'éteindre le feu. Du coup, je sais pas si ça serait possible de mettre le joueur en feu quand il est dans l'eau.
                      
                      Concernant la question 2 du 1er post (changer un mob par un autre), j'ai réussi à récupérer la position et la rotation du mob et le tuer, mais je ne sais pas comment faire pour en faire spawner un autre. Voilà ce que j'ai utilisé (je pense que c'est le bon code, mais j'aimerai avoir une confirmation svp) :
                      ```java
                       @SubscribeEvent
                       public void apocalypseMobReplace(EntityJoinWorldEvent event)
                       {
                        if(This_is_Halloween.apocalypse == true)
                        {
                         if(event.entity instanceof EntityWolf) 
                         {
                          EntityWerewolf werewolf;
                          int x = event.entity.chunkCoordX;
                          int y = event.entity.chunkCoordY;
                          int z = event.entity.chunkCoordZ;
                          float rotateX = event.entity.rotationPitch;
                          float rotateY = event.entity.rotationYaw;
                      
                          event.entity.setDead();
                      
                         }
                        }
                       }
                      

                      Ensuite pour la question 4 (désactiver la pluie), j’utilise cette ligne :

                      BiomeGenBase.plains.setDisableRain();
                      ``` (je pense que c'est la bonne, je l'utilise pour mon mod de Noël. De plus, si je met juste celle-là, ça marche)
                      Mais dès que j'ajoute la condition :```java
                        if(This_is_Halloween.apocalypse == true)
                        {
                      
                        }
                      ```, ça marche plus. De plus, j'ai aussi mis un println, mais pas de trace du message. J'ai essayé de la mettre dans la fonction load de la classe principale, mais aussi dans le commonProxy. J'ai aussi essayer de remplacer if par while, mais sans succès. D'ailleurs (même si ce n'est qu'un détail), c'est peut être mieux de mettre while (qui pourrait se traduire par tant que); mais dans les deux cas c'est pareil).
                      
                      Pour la question 5 (afficher un message), il fallait juste que j'utilise l'event PlayerLoggedInEvent. Mais une autre peut marcher aussi je pense.
                      
                      Pour la 6 (remplacer le provider de base), j'avoue que j'ai pas du tout chercher. J'ai juste remplacer EntityPlayerMP par EntityPlayer dans la condition. On m'a aussi dit que ce n'est peut être pas l'event EntityJoinWorldEvent, mais si ce n'est pas ça, je ne sais pas laquelle ça serait. De toute façon, je ne peux pas tester pour l'instant puisque dans le code ```java
                             return Vec3.createVectorHelper((double)f3, (double)f4, (double)f5);
                      ``` createVectorHelper n'existe plus.
                      
                      Pour la 7 (remplacer la couleur de l'herbe), je bloque totalement pour un biome déjà existant.
                      
                      Et enfin pour la 8 (mettre la pluie quand l'apocalypse vient de finir, c'est à dire quand la variable apocalypse vient de passer à false), je n'est tout simplement pas chercher. Pour l'instant je m'intéresse plus aux problèmes déjà posées auquel vous m'avez répondu. Je feraient celui là ensuite.
                      
                      Merci d'avance
                      
                      PS : désolé d'avoir remis toutes les questions alors qu'au départ, on étais juste sur l'eau. C'est pour pouvoir avancé et éviter de vous embêter trop longtemps ;)
                      1 réponse Dernière réponse Répondre Citer 0
                      • robin4002R Hors-ligne
                        robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                        dernière édition par

                        En effet le joueur ne risque pas de prendre feu de l’eau.
                        Pour le spawn, world.spawnEntityInWorld(new TonEntité(….));
                        Pour la Q4, il faudrait désactiver la pluie quand tu actives l’apocalypse, et non le désactiver dans la classe principale si c’est l’apocalypse.

                        Pour les autres questions je ne sais pas non plus.

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

                          Pour mettre un joueur en feux : player.setOnFire(true) ?

                          if(This_is_Halloween.apocalypse == true) -> if(This_is_Halloween.apocalypse) d’ailleurs je crois que c’est pas la première fois que je le dis mais essaie de respecter la convention java. D’ailleurs je ne sais pas pourquoi tu appelles une valeur statique de ton mod, quel est l’utilité ?

                          Pour faire spawner un mob : world.spawnEntityInWorld(entity) ?

                          BiomeGenBase.plains.setDisableRain(); -> je doute que ce soit ça car accéder à un biome de façon statique ne risque pas de le changer dans le monde, est-ce que tu as regardé comment c’était fait dans les commandes de minecraft ?

                          remplacer la couleur de l’herbe -> fait une recherche sur le forum

                          Pour le reste j’attends que tu es un code un peu plus propre et moins de questions

                          Site web contenant mes scripts : http://SCAREXgaming.github.io

                          Pas de demandes de support par MP ni par skype SVP.
                          Je n'accepte sur skype que l…

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

                            Salut
                            Je vais essayer de respecter la convention java pour les nouveaux codes et de modifier les anciens.

                            Pour le remplacement d’un mob par un autre, y’a quelques problèmes : quand ce n’est pas l’apocalypse je fait spawner un loup ça marche. Jusque là, c’est logique. Mais quand je laisse le loup et que j’active l’apocalypse, le loup ne se transforme pas. Quand j’en fais spawner, il disparaissent à la seconde où ils apparaissent (logique) mais les loup-garoux n’apparaissent pas. J’utilise :

                            @SubscribeEvent
                             public void apocalypseMobReplace(EntityJoinWorldEvent event)
                             {
                              if(This_is_Halloween.apocalypse)
                              {
                               if(event.entity instanceof EntityWolf) 
                               {
                                EntityWerewolf werewolf = new EntityWerewolf(event.world);
                                int x = event.entity.chunkCoordX;
                                int y = event.entity.chunkCoordY;
                                int z = event.entity.chunkCoordZ;
                                float rotateX = event.entity.rotationPitch;
                                float rotateY = event.entity.rotationYaw;
                            
                                System.out.println(x);
                                System.out.println(rotateX);
                            
                                event.entity.setDead();
                            
                                event.world.spawnEntityInWorld(werewolf);
                                werewolf.setPositionAndRotation(x, y, z, rotateX, rotateY);
                               }
                              }
                             }
                            ``` J'ai essayer de faire logger les coord sur x et la rotation sur x du loup, mais rien. Du coup, je sais pas du tout si le loup-garou n'apparait pas, ou si il apparaît mais à des coord au hasard.
                            
                            Pour la pluie, ça marche bien tant que je ne redémarre pas le jeu. J'ai mis la ligne ```java
                            BiomeGenBase.plains.setDisableRain();
                            ``` dans la fonction juste après les commandes (en gros, quand je fait /halloween apocalypse enable). Quand je fais la commande, ça désactive bien la pluie, j'ai essayé de quitter et revenir dans le monde il ne pleut toujours pas, mais quand j'éteins et je rallume le jeu, il repleut (comme si c'est sauvegarder dans l'instance du jeu et non dans le monde).
                            
                            > D'ailleurs je ne sais pas pourquoi tu appelles une valeur statique de ton mod, quel est l'utilité ?
                            
                            C'est la variable qui définit si c'est l'apocalypse ou pas.
                            
                            Pour l'herbe, j'avais déjà trouvé [ce sujet](https://www.minecraftforgefrance.fr/showthread.php?tid=2117). Au départ, je savais pas comment faire pour un biome qui existe déjà (la plaine par exemple), même avec l'évent donné par Robin. Mais j'ai trouvé comment faire (même si c'est basique j'ai peiné). Mais la couleur de l'herbe ne change pas.
                            
                            Je continue de chercher pour les autres problèmes
                            Pour le feu, vu que c'est de l'eau ça éteint le feu. Mais ton code marche quand même quand l'entité sort de l'eau. Merci
                            1 réponse Dernière réponse Répondre Citer 0
                            • SCAREXS Hors-ligne
                              SCAREX
                              dernière édition par

                              Respecter la convention java -> tu peux toujours utiliser le refactor pour changer les noms plus facilement, exemple tu fais clique droit sur le nom du package puis refactor puis change name et tu le changes en thisishalloween (c’est la convention java)

                              l’entité ne se re-transforme pas -> où est le code pour faire ça ?

                              problème de position -> normal tu récupères les coordonnées du chunk et non de l’entité

                              pluie -> c’est pour ça que regarder comment c’est fait dans les commandes de minecraft est une bien meilleure idée

                              variable statique -> oui mais il se passe quoi si on redémarre le serveur ? Je te donne la réponse : ça ne marche pas, il faut mettre cette variable autre part, comme par exemple dans le monde : https://www.minecraftforgefrance.fr/showthread.php?tid=2444

                              pour l’herbe -> envoi le code correspondant

                              pour le feu -> sinon tu peux créer un nouveau type de dégâts mais ça va paraître étrange de mourir enflammer alors qu’on est dans l’eau

                              Site web contenant mes scripts : http://SCAREXgaming.github.io

                              Pas de demandes de support par MP ni par skype SVP.
                              Je n'accepte sur skype que l…

                              1 réponse Dernière réponse Répondre Citer 0
                              • robin4002R Hors-ligne
                                robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                                dernière édition par

                                event.world.spawnEntityInWorld(werewolf);
                                werewolf.setPositionAndRotation(x, y, z, rotateX, rotateY);
                                En plus de ce qu’a dit SCAREX, inverses ses deux lignes.

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

                                  Salut
                                  Pour les entités, ça marche mais ça en fait spawner 2. De plus, les loups ayant spawner avant l’apocalypse ne change pas.
                                  Quand je dit qu’elles se transforment, c’est qu’on à l’impression qu’elles se transforment (le loup meurt et le loup-garou apparaît à sa place) mais elles ne se transforment pas vraiment .

                                  Pour la pluie, j’ai testé ce que tu m’as dit, ça marche, mais pas comme je voudrais. Quand je désactivais la pluie via BiomeGenBase et que je “mettais” la pluie via la commande, il ne pleuvait plus (logique) mais le ciel était gris, et c’est ça que je veux. Mais je ne sais pas comment faire. (j’aimerais plus si c’est possible le ciel de l’orage). Mais j’ai cherché dans le BiomeGenBase, rien trouvé.

                                  Pour la variable apocalypse, merci de me l’avoir dit, je ne l’avais pas vu avant. J’avais déjà fait ce tuto et ça enregistre bien (j’ai regardé grâce à NBTExplorer). C’était un problème de chargement des données. C’est que en fait, le chargement des données, je l’avais mis dans le CommonProxy alors qu’il fallait le mettre dans la classe principale.

                                  Pour l’herbe, je ne suis pas du tout sûr de ce que j’ai mis, c’est ce que j’ai compris du post :

                                   @SubscribeEvent
                                   public int ApocalypseGrass(BiomeEvent.GetGrassColor event)
                                   {
                                    return 0x000000;
                                   }
                                  

                                  Pour le feu, j’avais idée de faire comme une eau à forte température qui enflamme, mais maintenant que tu me le dit, j’y pense et ça fait bizarre. Je vais laisser comme c’est là (c’est à dire qu’on perd de la vie quand on est dans l’eau et que ça nous enflamme quand y sort)

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • BrokenSwingB Hors-ligne
                                    BrokenSwing Moddeurs confirmés Rédacteurs
                                    dernière édition par

                                    Pour changer tout les loup en loup-garous, j’avais donné un code vers le début :

                                    
                                    final List <entity>toAdd = new ArrayList<entity>();
                                    for(int i = 0; i < getWorld().loadedEntityList.size(); i++) {
                                    if(getWorld().loadedEntityList.get(i) instanceof EntityWolf) {
                                    BlockPos pos = getWorld().loadedEntityList.get(i).getPosition();
                                    EntityZombie zombie = new EntityZombie(getWorld().loadedEntityList.get(i).getEntityWorld());
                                    zombie.setPosition(pos.getX(), pos.getY(), pos.getZ());
                                    zombie.setAngles(getWorld().loadedEntityList.get(i).rotationYaw, getWorld().loadedEntityList.get(i).rotationPitch);
                                    zombie.motionX = getWorld().loadedEntityList.get(i).motionX;
                                    zombie.motionY = getWorld().loadedEntityList.get(i).motionY;
                                    zombie.motionZ = getWorld().loadedEntityList.get(i).motionZ;
                                    toAdd.add(zombie);
                                    getWorld().loadedEntityList.get(i).setDead();
                                    }
                                    }
                                    for(int i = 0; i < toAdd.size(); i++) {
                                    this.getWorld().spawnEntityInWorld(toAdd.get(i));
                                    }
                                    
                                    

                                    J’ai pas testé mais ça devrait marcher, il faut le mettre lorsque l’apocalipse commence, qu’il ne s’exécute qu’une seule fois car tu gère déjà le cas où un loup spawn pendant l’apocalipse</entity></entity>

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

                                      Mais quand je testais, ça ne marchait pas. Blackout avait par ailleurs dit que si on utilisait ce code (qui est une exclusivité java8), ça ne ferait rien à ceux qui n’aurait pas java 8 (ce qui est mon cas apparemment vu que ca ne marche pas; c’est aussi le cas d’environ beaucoup de personne)

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

                                        Je ne voie pas de raison pour que ce code ne fonctionne pas sans java 8.
                                        Celui dans ce post ,pas celui d’encore avant je précise
                                        Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk

                                        Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                                        AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                                        Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                                        Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • BrokenSwingB Hors-ligne
                                          BrokenSwing Moddeurs confirmés Rédacteurs
                                          dernière édition par

                                          Je l’ai changé, dans mon premier message j’utilisai un consumer, si tu observes bien ici je le parcours avec une boucle for

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

                                            D’ailleurs il serait plus pratique d’avoir directement l’entité avec un for(Entity entity : world.loadedEntityList) plutôt que la get à chaque ligne.

                                            Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk

                                            Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                                            AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                                            Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                                            Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                                            1 réponse Dernière réponse Répondre Citer 0
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 5
                                            • 1 / 5
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            ContactMentions Légales

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB