[En Cours] Génération de Structures 1.7.10

Besoin d'aide ? c'est par ici ;)
Règles du forum
[En Attente] - Qui est défini par défaut à l'ouverture de la demande d'aide
[En Cours] - Qui est à mettre lorsque vous venez d'avoir une réponse à votre demande d'aide
[Résolu] - Qui est à mettre lorsque votre problème est résolu
Merci de respecter ce modèle pour toutes demandes d'assistances !
Merci de mettre votre code dans les balises code prévus à cet effet, icon </>
Version de Minecraft:
Version de Forge: (Il s'agit du numéro de version indiqué sur le nom de votre dossier forge téléchargé)

Description du problème:
(Un maximum d'informations sera utile, quel code fait crash ?, quand cela ce produit ?, ne pas hésiter à mettre des captures d'écran et fichiers de log en pièces jointes)
Répondre
Raven
Messages : 6
Inscription : 14 avr. 2020 14:22

Génération de Structures 1.7.10

Message par Raven »

Bonjour , j'ai un problème vis a vis de ma génération de structure. J'ai mis un sysout pour voir si la structure se générait :
Premièrement : le sysout s'active bien à la génération du monde on le voit dans la console mais je continue de jouer et les sysout persistent un problème avec la boucle ? je ne sais pas
Deuxièmement : j'ai réussi à trouver ma structure mais elle est concentré dans un seul chunk et comme le code de génération continue je vois ma structure poppé à l'infini juste dans ce chunk
Quelqu'un peut m'expliquer ? (j'ai suivi le tuto de Checconio)

Ma classe pour générer mes minerais et ma structure :

Code : Tout sélectionner

package raven.tacoscraft;

import java.util.Random;

import cpw.mods.fml.common.IWorldGenerator;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraft.world.gen.feature.WorldGenMinable;
import raven.tacoscraft.structure.SapphireCastle;

public class FactoriteGeneration implements IWorldGenerator {
	
	
	
	
	
	
	@Override
	public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) {

		switch (world.provider.dimensionId) {
		case -1:
			generateNether(world, random, chunkX, chunkZ);
			break;
		case 0:
			generateOverworld(world, random, chunkX, chunkZ);
			break;
		case 1:
			generateEnd(world, random, chunkX, chunkZ);
			break;
		}
	}

	public void generateNether(World world, Random rand, int x, int z) {
		
		generateOre(Factoria.blockNetherVoltiteOre, world, rand, x, z, 3 , 9, 2, 20, 100, Blocks.netherrack);
	}
	
	
	private void addStruture(String string, Random rand, World world, int posX , int posZ, int minY, int maxY, int spawnChance) 
	{	
		
		for(int i = 0; i < spawnChance ; i++) {
			
			int chunkSize = 16;
			int x = posX + rand.nextInt(chunkSize);
		    int y = minY + rand.nextInt(maxY - minY);
		    int z = posZ + rand.nextInt(chunkSize);
		    
		    new SapphireCastle().init(world, rand, x, y, z);
		    System.out.println("structure généré");
		}
	}
	
	public void generateOverworld(World world, Random rand, int x, int z) {
		generateOre(Factoria.blockFactoriteOre, world, rand, x, z, 1 , 6, 2, 4, 8, Blocks.stone);
		
		generateOre(Factoria.blockTinOre, world, rand, x, z, 2 , 9, 3, 12, 18, Blocks.stone);
		
		generateOre(Factoria.blockLithiumOre, world, rand, x, z, 1 , 8, 2, 4, 12, Blocks.stone);
		
		this.addStruture("sapphireCastle", rand, world, x, z, 50, 128, 60);
		}
		


	public void generateEnd(World world, Random rand, int X, int Z) {

	}

	public void generateOre(Block block, World world, Random random, int chunkX, int chunkZ, int minVienSize,
			int maxVienSize, int chance, int minY, int maxY, Block generateIn) {
		int vienSize = minVienSize + random.nextInt(maxVienSize - minVienSize);
		int heightRange = maxY - minY;
		WorldGenMinable gen = new WorldGenMinable(block, vienSize, generateIn);
		for (int i = 0; i < chance; i++) {
			int xRand = chunkX * 16 + random.nextInt(16);
			int yRand = random.nextInt(heightRange) + minY;
			int zRand = chunkZ * 16 + random.nextInt(16);
			gen.generate(world, random, xRand, yRand, zRand);
			System.out.println("minerai généré");
		}

	}
}

La classe StructureGen :

Code : Tout sélectionner

package raven.tacoscraft.structure;

import java.util.Random;

import net.minecraft.world.World;

public class StructureGen {
	
	public static final String sapphireCastle = "sapphireCastle";
	
	public boolean generate(String name, World world, Random rand, int x , int y ,int z )
	{
		switch(name) 
		{
			case sapphireCastle:
				SapphireCastle.init(world, rand, x, y, z);
				break;
				
		}
		
		
		
		return true;
		
	}

}
La classe de ma structure :

Code : Tout sélectionner

package raven.tacoscraft.structure;

import java.util.Random;

import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraft.world.gen.feature.WorldGenerator;
import raven.tacoscraft.Factoria;
import raven.tacoscraft.entity.EntityCorruptedBot;
import cpw.mods.fml.common.IWorldGenerator;
 
public class SapphireCastle
{	
	
	
	
	
    public static void init(World world, Random rand, int x, int y, int z)
    {	
    	
    	if(world.getBlock(x, y - 1 , z) == Blocks.grass && world.isAirBlock(x, y + 1, z) ) {
    	
    	//Diagonals
    	
    	//Up Left
    	//B2
    	world.setBlock(x + 1, y , z + 1, Blocks.stonebrick);
    	//A1
    	world.setBlock(x + 2, y, z + 2, Blocks.stonebrick);
    	
    	//Up Right
    	//D2
    	world.setBlock(x + 1, y, z - 1, Blocks.stonebrick);
    	//E1
    	world.setBlock(x + 2, y, z - 2, Blocks.stonebrick);
    	
    	//Down Left
    	//B4
    	world.setBlock(x - 1, y, z + 1, Blocks.stonebrick);
    	//A5
    	world.setBlock(x - 2, y, z + 2, Blocks.stonebrick);
    	
    	//Down Right
    	//B4
    	world.setBlock(x - 1, y, z + 1, Blocks.stonebrick);
    	//A5
    	world.setBlock(x - 2, y , z + 2, Blocks.stonebrick);
    	
    	//B Fill
    	//B1
    	world.setBlock(x + 2, y, z + 1, Blocks.stonebrick);
    	//B5
    	world.setBlock(x - 2, y, z + 1, Blocks.stonebrick);
    	//D Fill
    	//D1
    	world.setBlock(x + 2, y, z - 1, Blocks.stonebrick);
    	//D5
    	world.setBlock(x - 2, y, z - 1, Blocks.stonebrick);
    	//A Fill
    	//A2
    	world.setBlock(x + 1, y, z + 2, Blocks.stonebrick);
    	//A4
    	world.setBlock(x - 1, y, z + 2, Blocks.stonebrick);
    	//E Fill
    	//E2
    	world.setBlock(x + 1, y, z - 2, Blocks.stonebrick);
    	//E4
    	world.setBlock(x - 1, y, z - 2, Blocks.stonebrick);
    	
    	//Center
    	world.setBlock(x, y, z, Factoria.blockLithium);
    	
    	
    	//Straight
    	//Forward
    	//C2 
    	world.setBlock(x + 1 , y , z, Blocks.stonebrick);
    	//C1
    	world.setBlock(x + 2, y , z, Blocks.stonebrick);
    	
    	//Backwards
    	//C4
    	world.setBlock(x - 1 , y , z, Blocks.stonebrick);
    	//C5
    	world.setBlock(x - 2, y , z, Blocks.stonebrick);
    	
    	//Left
    	//B3
    	world.setBlock(x, y , z + 1, Blocks.stonebrick);
    	//A3
    	world.setBlock(x, y , z + 2, Blocks.stonebrick);
    	
    	//Right
    	//D3
    	world.setBlock(x , y , z - 1, Blocks.stonebrick);
    	//E3
    	world.setBlock(x, y , z - 2, Blocks.stonebrick);
    	
    	
        EntityCorruptedBot bot = new EntityCorruptedBot(world);
        
        bot.setPosition(x, y + 1, z);
        
        world.spawnEntityInWorld(bot);
		
    	
    	}
    	
    	
    	
    }


	
}


Un screen sur ce que ça me donnait :
Capture d’écran (44).png
(La structure est différente c'était mon premier test)
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Raven le 14 avr. 2020 15:14, modifié 1 fois.
Avatar de l’utilisateur
Checconio
Site Admin
Messages : 660
Inscription : 20 juil. 2019 18:53
Localisation : Istres
Contact :

Re: Génération de Structures 1.7.10

Message par Checconio »

Dans ta class de génération tu as fait un

Code : Tout sélectionner

new SapphireCastle().init
dans la boucle structure au lieu de

Code : Tout sélectionner

StructureGen().generate
ce qui fait que tu as initialiser directement ta class strcuture au lieu de la class qui s'occupe de la génération des structures

Tu peux passer ton sujet en [En Cours] ou [Résolu]
Tu veux des réductions et du cashback ? passe par iGraal ;)
3€ Offert en passant par mon lien :)

https://fr.igraal.com/?parrain=AG_577542b686c1d
Image
Raven
Messages : 6
Inscription : 14 avr. 2020 14:22

Re: Génération de Structures 1.7.10

Message par Raven »

Merci ! J'ai fais ce que vous avez dit mais j'ai la même chose : la structures se génère dans un seul chunk et les mobs spawn à l'inifini.
Capture d’écran (46).png
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Avatar de l’utilisateur
Checconio
Site Admin
Messages : 660
Inscription : 20 juil. 2019 18:53
Localisation : Istres
Contact :

Re: Génération de Structures 1.7.10

Message par Checconio »

sachant que les chunck font 16 block, ta génération est bien plus grande.

SI tu te déplace sur ta map tu n'a pas plus de génération ?
Tu veux des réductions et du cashback ? passe par iGraal ;)
3€ Offert en passant par mon lien :)

https://fr.igraal.com/?parrain=AG_577542b686c1d
Image
Raven
Messages : 6
Inscription : 14 avr. 2020 14:22

Re: Génération de Structures 1.7.10

Message par Raven »

C'est à dire ?
Raven
Messages : 6
Inscription : 14 avr. 2020 14:22

Re: Génération de Structures 1.7.10

Message par Raven »

Ce qui se passe(en gros) c'est à chaque fois que je crée un monde à environ 200 blocks de là ou j'ai spawné je trouve au moins une trentaines de mes structures condensé dans un seul chunk + elle continue à se générer dans ce chunk
Avatar de l’utilisateur
Checconio
Site Admin
Messages : 660
Inscription : 20 juil. 2019 18:53
Localisation : Istres
Contact :

Re: Génération de Structures 1.7.10

Message par Checconio »

Baisse ton spawnchance, car 60 signifie que tu peux avoir 60 structures sur un même chunk et comme elles peuvent se générer qu'à la surface elles sont les unes sur les autres.
Tu veux des réductions et du cashback ? passe par iGraal ;)
3€ Offert en passant par mon lien :)

https://fr.igraal.com/?parrain=AG_577542b686c1d
Image
Répondre