Plusieurs questions/problèmes
-
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 ProviderBref, 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 touteEt 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 releaseRevoilà 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… -
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.
-
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. -
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 :
- 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.
- 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 …
-
Avec LivingUpdateEvent, if(event.living.isInWater()) -> event.living.attackFrom(ton damage source)
Pas besoin de remplacer l’eau. -
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 ;) -
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.
-
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
-
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 -
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
-
event.world.spawnEntityInWorld(werewolf);
werewolf.setPositionAndRotation(x, y, z, rotateX, rotateY);
En plus de ce qu’a dit SCAREX, inverses ses deux lignes. -
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)
-
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>
-
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)
-
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 -
Je l’ai changé, dans mon premier message j’utilisai un consumer, si tu observes bien ici je le parcours avec une boucle for
-
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
-
Oui, faites comme vous voulez, ça va pas changer grand chose
-
Niveau utilisation des ressources, ceci devrait être mieux :
for(Entity entity : getWorld().loadedEntityList) { if(entity instanceof EntityWolf) { EntityZombie zombie = new EntityZombie(entity.getEntityWorld()); zombie.setPosition(entity.posX, entity.posY, entity.posZ); zombie.setAngles(entity.rotationYaw, entity.rotationPitch); zombie.motionX = entity.motionX; zombie.motionY = entity.motionY; zombie.motionZ = entity.motionZ; entity.setDead(); getWorld().spawnEntityInWorld(zombie); } }Code non testé mais doit fonctionner.
-
BrokenSwing : Désolé, en voyant le code et sa disposition j’avais cru que c’était le code que t’avais donné en 1ère page. Mais en le testant, j’ai des erreurs sur ce qui concerne la position, le mouvement et l’orientation (getPosition(), getEntityWorld(), rotationYaw, rotationPitch, et les 3 motion). De plus, je n’ai pas compris certaines parties du code.
Mais j’ai préféré prendre le code d’AymericRed, je le comprend mieux (je préfère comprendre un code avant de l’utiliser). Mais merci quand même
Pour la boucle que tu m’a donné Aymeric (je peux t’appelé comme ca ?), sur la ligne ```java
event.world.loadedEntityListMerci d'avance