Crée une structure massif
-
Pour ceux qui souhaite voir la méthode aux quelle je fait référence sur le site la voici mais elle fais une centaine de ligne !
/** * Populates chunk with ores etc etc */ public void populate(IChunkProvider p_73153_1_, int p_73153_2_, int p_73153_3_) { BlockFalling.fallInstantly = true; int k = p_73153_2_ * 16; int l = p_73153_3_ * 16; BiomeGenBase biomegenbase = this.worldObj.getBiomeGenForCoords(k + 16, l + 16); this.rand.setSeed(this.worldObj.getSeed()); long i1 = this.rand.nextLong() / 2L * 2L + 1L; long j1 = this.rand.nextLong() / 2L * 2L + 1L; this.rand.setSeed((long)p_73153_2_ * i1 + (long)p_73153_3_ * j1 ^ this.worldObj.getSeed()); boolean flag = false; MinecraftForge.EVENT_BUS.post(new PopulateChunkEvent.Pre(p_73153_1_, worldObj, rand, p_73153_2_, p_73153_3_, flag)); if (this.mapFeaturesEnabled) { this.mineshaftGenerator.generateStructuresInChunk(this.worldObj, this.rand, p_73153_2_, p_73153_3_); flag = this.villageGenerator.generateStructuresInChunk(this.worldObj, this.rand, p_73153_2_, p_73153_3_); this.strongholdGenerator.generateStructuresInChunk(this.worldObj, this.rand, p_73153_2_, p_73153_3_); this.scatteredFeatureGenerator.generateStructuresInChunk(this.worldObj, this.rand, p_73153_2_, p_73153_3_); } int k1; int l1; int i2; if (biomegenbase != BiomeGenBase.desert && biomegenbase != BiomeGenBase.desertHills && !flag && this.rand.nextInt(4) == 0 && TerrainGen.populate(p_73153_1_, worldObj, rand, p_73153_2_, p_73153_3_, flag, LAKE)) { k1 = k + this.rand.nextInt(16) + 8; l1 = this.rand.nextInt(256); i2 = l + this.rand.nextInt(16) + 8; (new WorldGenLakes(Blocks.water)).generate(this.worldObj, this.rand, k1, l1, i2); } if (TerrainGen.populate(p_73153_1_, worldObj, rand, p_73153_2_, p_73153_3_, flag, LAVA) && !flag && this.rand.nextInt(8) == 0) { k1 = k + this.rand.nextInt(16) + 8; l1 = this.rand.nextInt(this.rand.nextInt(248) + 8); i2 = l + this.rand.nextInt(16) + 8; if (l1 < 63 || this.rand.nextInt(10) == 0) { (new WorldGenLakes(Blocks.lava)).generate(this.worldObj, this.rand, k1, l1, i2); } } boolean doGen = TerrainGen.populate(p_73153_1_, worldObj, rand, p_73153_2_, p_73153_3_, flag, DUNGEON); for (k1 = 0; doGen && k1 < 8; ++k1) { l1 = k + this.rand.nextInt(16) + 8; i2 = this.rand.nextInt(256); int j2 = l + this.rand.nextInt(16) + 8; (new WorldGenDungeons()).generate(this.worldObj, this.rand, l1, i2, j2); } biomegenbase.decorate(this.worldObj, this.rand, k, l); if (TerrainGen.populate(p_73153_1_, worldObj, rand, p_73153_2_, p_73153_3_, flag, ANIMALS)) { SpawnerAnimals.performWorldGenSpawning(this.worldObj, biomegenbase, k + 8, l + 8, 16, 16, this.rand); } k += 8; l += 8; doGen = TerrainGen.populate(p_73153_1_, worldObj, rand, p_73153_2_, p_73153_3_, flag, ICE); for (k1 = 0; doGen && k1 < 16; ++k1) { for (l1 = 0; l1 < 16; ++l1) { i2 = this.worldObj.getPrecipitationHeight(k + k1, l + l1); if (this.worldObj.isBlockFreezable(k1 + k, i2 - 1, l1 + l)) { this.worldObj.setBlock(k1 + k, i2 - 1, l1 + l, Blocks.ice, 0, 2); } if (this.worldObj.func_147478_e(k1 + k, i2, l1 + l, true)) { this.worldObj.setBlock(k1 + k, i2, l1 + l, Blocks.snow_layer, 0, 2); } } } MinecraftForge.EVENT_BUS.post(new PopulateChunkEvent.Post(p_73153_1_, worldObj, rand, p_73153_2_, p_73153_3_, flag)); BlockFalling.fallInstantly = false; } -
Logiquement avec l’event PopulateChunkEvent.Pre ou PopulateChunkEvent.Post tu devrais pouvoir faire la même chose que les générateurs pour les villages, les mines, etc …
-
Oui mais si j’utilise un simple copiez coller des algorithme en plus de faire n’importe-quoi !
En plus je ne comprendrais pas la Logic du code !Surtout qui en plus par rapport à la méthode vanille il y a 1 objet IChunkProvider en plus.
Donc la même logic ne peut donc pas forcément fonctionner puisque l’implémentation de mas génération n’est pas du même type que celle de la vanilleP.S Des fois je voudrais postez une image mais il faux l’importez d’un autre site.
Vous avez des référence à me conseiller . -
imgur, sinon tu as les pièces jointes du forum.
-
perso j’ai testé ta class structurgenerator et ça marche chez moi (enfin ça se met sur plusieurs chunck)
-
@‘sventus’:
perso j’ai testé ta class structurgenerator et ça marche chez moi (enfin ça se met sur plusieurs chunck)
Bon Comme je l’ai déjà expliquez le code fonction mais difficilement.
Chez moi on se retrouve à attendre à la bordure des chunck que minecraft génère les chunck!
Lors de la génération il y a des bug de MAJ de lumière sur les block! On peut voir que ces bugs sont en rapport avec le chargement des chunck!Je fournie les image en pièce jointe! WizardIceTeaMcFCSM.zip
WizardIceTeaMcFCSM01

Vous y voyez le dessous de mas structure!WizardIceTeaMcFCSM02

L’ombre de ma structure!WizardIceTeaMcFCSM03

La on vois ma structure de cotée Je rappel se sont que des test pour le moment génération!
Pour rappelle il y a des bug d’éclairage ou on vois carrément que c’est le jour et la nuit c’est bug ci se règle avec une MAJ des block .
Je ne parle jamais de ces bug ci mais des lumières qui rance perce ma structure et déforme sont ombreWizardIceTeaMcFCSM04

Sur l’image citez ci dessus et dessous je mesure l’écart entre certaine anomalie et on vois qu’il font bien la taille des chunckWizardIceTeaMcFCSM05

L’explication et simple les zone éclairez on été générée avent ma structure quand ma structure c’est générée par dessus il n’a MAJ la luminosité que dans les chunck ou sa génération à étée lancée et ceux qui ce sont générée en même temps.
Voilà ce que je voulais dire par fonctionne MAL . :@
Je ne veut plus m’expliquez encore sur les que je rencontre !Surtout que ce n’est n’y intéressent n’y constructif de le répétez !!
Alors pitez plus de "ça marche chez moi "
-
et tu penses pas que ça peut venir tout simplement d’éclipse qui à trop de mal à générer la structure et du génère les bugs, sur un serveur, il n’y aura pas forcément ces bugs
-
Eclipse ne fait rien tourner du tout …
C’est ton processeur qui fait tourner minecraft. Donc si sur un serveur ça fonctionne mieux, c’est parce que le cpu du serveur est plus performant.Et corriger un problème d’optimisation en utilisant une machine plus perf, ce n’est pas un vrai correctif.
Ce qu’il faudrait faire c’est diviser la structure en plusieurs morceaux de 16x16 et générer morceau par morceau sur chaque chunk.
-
Tu as aussi moyen de demander manuellement une update de la luminosité dans chaque chunk (voire plus d’une si il le faut) après avoir généré toute la structure via la fonction de la classe World (je sais plus son nom par contre).
-
Diviser la structure en plusieurs morceaux de 16x16 et générer morceau par morceau sur chaque chunk.
Est la chose la plus sensé à faire mais je n’ai pas trouvez comment.
Ils fraudais crée une zone mémoire qui contiendrais le plans de ma structure, mais je ne vois pas comment créée cette zone car il faudrait la sauvegardez dans un fichez
Problème je ne sait pas si minecraft peut proposer de fonction de sauvegarde de donner supplémentaire.A défaut de trouvez des formas de donnée propre à minecraft. Je devrais donc constituez les miens !
Si quel qu’un peut m’indiquez la zone de minecraft ou les fonction de sauvegarde ? Que je puise reprendre la même logic .Si vous trouvez une autre solution que de crée une zone tampon avent génération cela m’intéresse !
Pour finir je pence qu’après ce serra la fin de ce sujet .
Car basiquement sur ce point c’est de la programmation classic.
Je serais plongez dans mon livre de code pour trouvez comment sauvegardez des donnez .
Et je serais sur openclassroom pour trouvez des solution de bibliothèque java.D’avance je remercie tous ceux qui mon aidez sur ce projet qui et plus dure que je ne le pensais !
Mais je n’abondons rien ! Je verrais si je peut vous tenir de l’agencement de mon projet .Une MAJ de la lumière sa parais difficile puisque c’est la lumière du jour qui passa aux travers de mes bock !
-
C’est AnvilSaveHandler qui gère la sauvegarde je crois.
Mais après si tu force Minecraft à recalculer toute la lumière (blocks+ciel), ça devrait être bon.Ou alors j’avais déjà fait un système de sauvegarde de structure dans des fichiers (parce que le la flemme des world.setBlock/des boucles par dizaines ^^), donc sinon on peut voir en mp.
PS: je précise que tout est généré d’un coup sans découpage ^^ mais après j’ai jamais fait de structure aussi grosse avec mon système.
-
@‘AymericRed’:
C’est AnvilSaveHandler qui gère la sauvegarde je crois.
Mais après si tu force Minecraft à recalculer toute la lumière (blocks+ciel), ça devrait être bon.Ou alors j’avais déjà fait un système de sauvegarde de structure dans des fichiers (parce que le la flemme des world.setBlock/des boucles par dizaines ^^), donc sinon on peut voir en mp.
PS: je précise que tout est généré d’un coup sans découpage ^^ mais après j’ai jamais fait de structure aussi grosse avec mon système.
ça peut m’intéresser ça aussi

-
Go en mp alors
