Problème génération biome
-
Je parlais de le mettre avant la ligne ou il y a le “aint1[j1 + i1 * par3] = ((BiomeEntry)WeightedRandom”, mais en tout cas la liste a l’air bonne, don retire le /10 et * 10.
-
toujours pas ::(
–-- Minecraft Crash Report ---- // I'm sorry, Dave. Time: 23/06/16 17:37 Description: Exception initializing level java.lang.NullPointerException: Exception initializing level at fr.craftesys.craftesys.generation.BiomeTestLayer.getInts(BiomeTestLayer.java:97) at net.minecraft.world.gen.layer.GenLayerZoom.getInts(GenLayerZoom.java:23) at net.minecraft.world.gen.layer.GenLayerZoom.getInts(GenLayerZoom.java:23) at net.minecraft.world.gen.layer.GenLayerBiomeEdge.getInts(GenLayerBiomeEdge.java:21) at net.minecraft.world.gen.layer.GenLayerHills.getInts(GenLayerHills.java:26) at net.minecraft.world.gen.layer.GenLayerRareBiome.getInts(GenLayerRareBiome.java:21) at net.minecraft.world.gen.layer.GenLayerZoom.getInts(GenLayerZoom.java:23) at net.minecraft.world.gen.layer.GenLayerAddIsland.getInts(GenLayerAddIsland.java:23) at net.minecraft.world.gen.layer.GenLayerZoom.getInts(GenLayerZoom.java:23) at net.minecraft.world.gen.layer.GenLayerShore.getInts(GenLayerShore.java:23) at net.minecraft.world.gen.layer.GenLayerZoom.getInts(GenLayerZoom.java:23) at net.minecraft.world.gen.layer.GenLayerZoom.getInts(GenLayerZoom.java:23) at net.minecraft.world.gen.layer.GenLayerSmooth.getInts(GenLayerSmooth.java:23) at net.minecraft.world.gen.layer.GenLayerRiverMix.getInts(GenLayerRiverMix.java:35) at net.minecraft.world.biome.WorldChunkManager.findBiomePosition(WorldChunkManager.java:250) at net.minecraft.world.WorldServer.createSpawnPosition(WorldServer.java:777) at net.minecraft.world.WorldServer.initialize(WorldServer.java:757) at net.minecraft.world.World.<init>(World.java:296) at net.minecraft.world.WorldServer.<init>(WorldServer.java:102) at net.minecraft.server.integrated.IntegratedServer.loadAllWorlds(IntegratedServer.java:63) at net.minecraft.server.integrated.IntegratedServer.startServer(IntegratedServer.java:96) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:445) at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Stacktrace: at fr.craftesys.craftesys.generation.BiomeTestLayer.getInts(BiomeTestLayer.java:97) at net.minecraft.world.gen.layer.GenLayerZoom.getInts(GenLayerZoom.java:23) at net.minecraft.world.gen.layer.GenLayerZoom.getInts(GenLayerZoom.java:23) at net.minecraft.world.gen.layer.GenLayerBiomeEdge.getInts(GenLayerBiomeEdge.java:21) at net.minecraft.world.gen.layer.GenLayerHills.getInts(GenLayerHills.java:26) at net.minecraft.world.gen.layer.GenLayerRareBiome.getInts(GenLayerRareBiome.java:21) at net.minecraft.world.gen.layer.GenLayerZoom.getInts(GenLayerZoom.java:23) at net.minecraft.world.gen.layer.GenLayerAddIsland.getInts(GenLayerAddIsland.java:23) at net.minecraft.world.gen.layer.GenLayerZoom.getInts(GenLayerZoom.java:23) at net.minecraft.world.gen.layer.GenLayerShore.getInts(GenLayerShore.java:23) at net.minecraft.world.gen.layer.GenLayerZoom.getInts(GenLayerZoom.java:23) at net.minecraft.world.gen.layer.GenLayerZoom.getInts(GenLayerZoom.java:23) at net.minecraft.world.gen.layer.GenLayerSmooth.getInts(GenLayerSmooth.java:23) at net.minecraft.world.gen.layer.GenLayerRiverMix.getInts(GenLayerRiverMix.java:35) at net.minecraft.world.biome.WorldChunkManager.findBiomePosition(WorldChunkManager.java:250) at net.minecraft.world.WorldServer.createSpawnPosition(WorldServer.java:777) at net.minecraft.world.WorldServer.initialize(WorldServer.java:757) -- Affected level -- Details: Level name: New Worldgergg All players: 0 total; [] Chunk stats: ServerChunkCache: 0 Drop: 0 Level seed: 5599626093747522092 Level generator: ID 04 - giant, ver 0\. Features enabled: true Level generator options: Level spawn location: 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.World.<init>(World.java:296) at net.minecraft.world.WorldServer.<init>(WorldServer.java:102) at net.minecraft.server.integrated.IntegratedServer.loadAllWorlds(IntegratedServer.java:63) at net.minecraft.server.integrated.IntegratedServer.startServer(IntegratedServer.java:96) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:445) at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:752) -- System Details -- Details: Minecraft Version: 1.7.10 Operating System: Windows 10 (amd64) version 10.0 Java Version: 1.8.0_91, Oracle Corporation Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 888162432 bytes (847 MB) / 1037959168 bytes (989 MB) up to 1037959168 bytes (989 MB) JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used IntCache: cache: 0, tcache: 0, allocated: 4, tallocated: 19 FML: MCP v9.05 FML v7.10.99.99 Minecraft Forge 10.13.4.1558 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{7.10.99.99} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.4.1558-1.7.10.jar) UCHIJAA Forge{10.13.4.1558} [Minecraft Forge] (forgeSrc-1.7.10-10.13.4.1558-1.7.10.jar) UCHIJAA craftesys{1.0.0} [craftesys] (bin) 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'et ma class :
package fr.craftesys.craftesys.generation; import java.util.ArrayList; import java.util.List; import net.minecraft.util.WeightedRandom; import net.minecraft.world.WorldType; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.gen.layer.GenLayer; import net.minecraft.world.gen.layer.IntCache; import net.minecraftforge.common.BiomeManager; import net.minecraftforge.common.BiomeManager.BiomeEntry; public class BiomeTestLayer extends GenLayer { private List <biomeentry>desertBiomes = new ArrayList<biomeentry>(); private List <biomeentry>warmBiomes = new ArrayList<biomeentry>(); private List <biomeentry>coolBiomes = new ArrayList<biomeentry>(); private List <biomeentry>icyBiomes = new ArrayList<biomeentry>(); public BiomeTestLayer(long par1, GenLayer layer, WorldType worldType) { super(par1); this.parent = layer; this.desertBiomes.addAll(BiomeManager.desertBiomes); this.warmBiomes.addAll(BiomeManager.warmBiomes); this.coolBiomes.addAll(BiomeManager.coolBiomes); this.icyBiomes.addAll(BiomeManager.icyBiomes); if (worldType == WorldType.DEFAULT) { desertBiomes.add(new BiomeEntry(BiomeGenBase.desert, 10)); desertBiomes.add(new BiomeEntry(BiomeGenBase.forest, 10)); desertBiomes.add(new BiomeEntry(BiomeGenBase.extremeHills, 10)); desertBiomes.add(new BiomeEntry(BiomeGenBase.swampland, 10)); desertBiomes.add(new BiomeEntry(BiomeGenBase.plains, 10)); desertBiomes.add(new BiomeEntry(BiomeGenBase.taiga, 10)); desertBiomes.add(new BiomeEntry(BiomeRegistry.biomeTest, 50)); } else { desertBiomes.add(new BiomeEntry(BiomeGenBase.desert, 30)); desertBiomes.add(new BiomeEntry(BiomeGenBase.savanna, 20)); desertBiomes.add(new BiomeEntry(BiomeGenBase.plains, 10)); desertBiomes.add(new BiomeEntry(BiomeRegistry.biomeTest, 50)); } } public int[] getInts(int par1, int par2, int par3, int par4) { int[] aint = this.parent.getInts(par1, par2, par3, par4); int[] aint1 = IntCache.getIntCache(par3 * par4); for (int i1 = 0; i1 < par4; ++i1) { for (int j1 = 0; j1 < par3; ++j1) { this.initChunkSeed((long)(j1 + par1), (long)(i1 + par2)); int k1 = aint[j1 + i1 * par3]; int l1 = (k1 & 3840) >> 8; k1 &= -3841; if (isBiomeOceanic(k1)) { aint1[j1 + i1 * par3] = k1; } else if (k1 == BiomeGenBase.mushroomIsland.biomeID) { aint1[j1 + i1 * par3] = k1; } else if (k1 == 1) { if (l1 > 0) { if (this.nextInt(3) == 0) { aint1[j1 + i1 * par3] = BiomeGenBase.mesaPlateau.biomeID; } else { aint1[j1 + i1 * par3] = BiomeGenBase.mesaPlateau_F.biomeID; } } else { System.out.println(desertBiomes); aint1[j1 + i1 * par3] = ((BiomeEntry)WeightedRandom .getItem(this .desertBiomes, (int)(this .nextLong(WeightedRandom .getTotalWeight(this .desertBiomes))))) .biome .biomeID; } } else if (k1 == 2) { if (l1 > 0) { aint1[j1 + i1 * par3] = BiomeGenBase.jungle.biomeID; } else { aint1[j1 + i1 * par3] = ((BiomeEntry)WeightedRandom.getItem(this.warmBiomes, (int)(this.nextLong(WeightedRandom.getTotalWeight(this.warmBiomes) / 10) * 10))).biome.biomeID; } } else if (k1 == 3) { if (l1 > 0) { aint1[j1 + i1 * par3] = BiomeGenBase.megaTaiga.biomeID; } else { aint1[j1 + i1 * par3] = ((BiomeEntry)WeightedRandom.getItem(this.coolBiomes, (int)(this.nextLong(WeightedRandom.getTotalWeight(this.coolBiomes) / 10) * 10))).biome.biomeID; } } else if (k1 == 4) { aint1[j1 + i1 * par3] = ((BiomeEntry)WeightedRandom.getItem(this.icyBiomes, (int)(this.nextLong(WeightedRandom.getTotalWeight(this.icyBiomes) / 10) * 10))).biome.biomeID; } else { aint1[j1 + i1 * par3] = BiomeGenBase.mushroomIsland.biomeID; } } } return aint1; } }note à l’avenir, ne pas register deux fois le même biome dans deux class différentes


autre petite question, j’ai ajouté cela dans ma class :
public int getBiomeGrassColor()
{return 0xFF0C00;
}mais l’herbe ne change pas de couleur</biomeentry></biomeentry></biomeentry></biomeentry></biomeentry></biomeentry></biomeentry></biomeentry></init></init></init></init>
-
Fais une recherche sur le forum, plusieurs personnes ont déjà eu ce problème
-
Change ça :
System.out.println(desertBiomes); aint1[j1 + i1 * par3] = ((BiomeEntry)WeightedRandom .getItem(this .desertBiomes, (int)(this .nextLong(WeightedRandom .getTotalWeight(this .desertBiomes))))) .biome .biomeID;par ça :
BiomeGenBase biome = ((BiomeEntry)WeightedRandom.getItem(this.desertBiomes, (int)(this.nextLong(WeightedRandom.getTotalWeight(this.desertBiomes))))).biome; if(biome == null) biome = leBiomeQueTuVeuxMettreSiçaRisqueDePlanter(MetUnBiomeDeLaCatégorieDesDésets).biomeID; aint1[j1 + i1 * par3] = biome.biomeID;Et pour la couleur, met un @Override au dessus de la fonction.
-
sauf que quand je met le override, la fonction ne passe pas et me dit de supprimer le @Override

si je met ça :
BiomeGenBase biome = ((BiomeEntry)WeightedRandom.getItem(this.desertBiomes, (int)(this.nextLong(WeightedRandom.getTotalWeight(this.desertBiomes))))).biome;
if(biome == null) biome = (BiomeGenBase)(desertBiomes).biomeID;
aint1[j1 + i1 * par3] = biome.biomeID;alors le biomeID est en erreur

-
“(BiomeGenBase)(desertBiomes)”, il faut que tu remplace ça par un biome fasant partie de la catégorie des déserts, donc BiomeGenBase.desert par exemple.
L’erreur sur le Override indique que tu as mal écrit la fonction, déjà vérifies que t’es dans la classe de ton biome, puis, fais ctrl+space et commence à écrire le nom de la fonction.
-
si j’écris ça : if(biome == null) biome = BiomeGenBase.desert.biomeID;
ça me demande de changer le type en “int” et ma fonction est écrite comme cela :
@Override
public int getBiomeGrassColor(int p_150558_1_, int p_150558_2_, int p_150558_3_) {return super.getBiomeGrassColor(p_150558_1_, p_150558_2_, p_150558_3_);
}voila ce que ça me dit, mais je vois pas a quoi correspondent les trois variables ^^
-
Retire le .biomeID, je me suis trompé.
Les variables sont x, y et z. -
X y z pour des couleurs ?
-
x y et z sont toujours des coordonnées de blocs ou d’entités
-
La fonction à X, y et z comme paramètre pour que tu puisse retourner une couleur en fonction de la position si tu le souhaites.
Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk
-
Mais avec les coordonnés, je vois pas le rapport avec la couleur du bloc

-
Va demander à Mojang.
Je pense que dans des rares cas c’est utile, je crois que c’est utilisé pour le “dégradé entre les biomes”.Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk
-
@Override
public int getModdedBiomeGrassColor(int i )
{
return 0x76785A;
}voila la fonction que je devais utilisé, (je laisse ce topic ouvert pour mes futurs autres problèmes concernant le biome :D)
-
Nan il ne faut mieux pas le laisser ouvert pour plusieurs raisons. premièrement le titre n’est pas explicite, et il me semble que tu as rencontré plusieurs problèmes différents en rapport avec ton biome, n’est-ce pas ? Alors comment veux-tu que quelqu’un ayant un ou les mêmes probs que toi le retrouve ?? Il faut renommer le titre. D’autre part il fait 9 pages, ce qui est déjà beaucoup pour un poste dans “support pour les moddeurs” (enfin on a déjà vu pire, je te rassure x))
Alors si tu as d’autres problèmes, faudra mieux recréer un autre poste comportant un titre bien précis, plutôt que de continuer sur celui-ci, au risque qu’il ne devienne + un roman qu’une simple demande d’aide ^^’ -
Merci Plaigon, tu m’as éviter de rédiger un petit paragraphe d’explication

(je pense que je vais ajouter ça dans le règlement de la section).