Créer un arbre
-
Bon je crois que je suis perdu ^^ , quesque tu entend par il te manque le worldGenerator , la classe worldGenerator ? ou autre chose car la je vois pas du tout …
-
Il manque une classse comme la génération de minerai ^^.
public class Generator implements IWorldGenerator { @Override public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) { switch (world.provider.dimensionId) { //0 = dimID case 0: generateOverworld(world, random, chunkX * 16, chunkZ * 16); } } private void generateOverworld(World world, Random random, int x, int z) { //50 = rarity for (int i = 0; i < 50; i++) { int x1 = x + rand.nextInt(16); int y1 = rand.nextInt(128); int z1 = z + rand.nextInt(16); //classe de génération de l'arbre (new WorldGenerationTutoTree()).generate(world, rand, x1, y1, z1); } } }
Le code viens de ma tête il se peux que je me soit tromper.
-
Oké j’ai mes deux classes ! Sans aucune erreur donc je suis déjà super content le probleme suivant est le GameRegistry.registerWorldGenerator(new WorldGeneration(), 0); registerWorldGenerator reste souligner en rouge
-
Quelle est le message ?
-
Voilà l’erreur.
-
Ta classe WorldGeneration n’implémente pas l’interface IWorldGenerator …
-
Tu as créé la classe que j ai faite ? Si oui change la classe en ma classe (le nom dans la classe principale). Sinon crer la ou retourne. Voir le tuto
-
Si j’implente IWorldGeneration, WorldGeneration se souligne en rouge…
Voici mes classes :
Classe principale ```java
package mod.common;import cpw.mods.fml.common.IWorldGenerator;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.registry.EntityRegistry;
import cpw.mods.fml.common.registry.GameRegistry;import java.awt.Color;
import mod.proxy.CommonProxy;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.Item.ToolMaterial;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.EnumHelper;@Mod(modid=“modminecraft”, name=“Mod Minecraft”, version=“1.0”)
public class ModMinecraft
{
public static Item itemFlechette;
public static Item itemSarbacane;
public static Item itemSeve;
public static Item itemSevewithmosquito;
public static Item itemFrogLegs;
public static Item itemFlechetteEmpty;
public static Item itemFrogLegsCooked;
public static Item itemSyringe;
public static Item itemSyringewithblood;
public static Item itemADNofFrog;
public static Item itemSuperAxe;
public static Block BlockBarriere;
public static Block BlockTronc;
public static Block BlockFeuille;
public static Block BlockPousse;
public static Item.ToolMaterial toolAxe = EnumHelper.addToolMaterial(“toolAxe”, 2, 400, 12.0F, 4.0F, 18);@Mod.Instance(“modminecraft”)
public static ModMinecraft instance;
public static final String MODID = “modminecraft”;@SidedProxy(clientSide=“mod.proxy.ClientProxy”, serverSide=“mod.proxy.CommonProxy”)
public static CommonProxy proxy;@Mod.EventHandler
public void preInit(FMLPreInitializationEvent event) { itemFlechette = new DinoItem().setUnlocalizedName(“itemFlechette”).setCreativeTab(CreativeTabs.tabCombat);
itemSarbacane = new SarbacaneItem().setUnlocalizedName(“itemSarbacane”).setCreativeTab(CreativeTabs.tabCombat);
itemSeve = new SeveItem().setUnlocalizedName(“itemSeve”).setCreativeTab(CreativeTabs.tabMaterials);
itemSevewithmosquito = new ItemSevewithmosquito().setUnlocalizedName(“itemSevewithmosquito”).setCreativeTab(CreativeTabs.tabMaterials);
itemFrogLegs = new itemFrogLegs().setUnlocalizedName(“itemFrogLegs”).setCreativeTab(CreativeTabs.tabFood);
itemFlechetteEmpty = new itemFlechetteEmpty().setUnlocalizedName(“itemFlechetteEmpty”).setCreativeTab(CreativeTabs.tabMaterials);
itemFrogLegsCooked = new itemFrogLegsCooked(8, 0.3F, false).setUnlocalizedName(“itemFrogLegsCooked”).setCreativeTab(CreativeTabs.tabFood);
itemSyringe = new itemSyringe().setUnlocalizedName(“itemSyringe”).setCreativeTab(CreativeTabs.tabTools).setMaxStackSize(1);
itemSyringewithblood = new itemSyringewithblood().setUnlocalizedName(“itemSyringeWithBlood”).setCreativeTab(CreativeTabs.tabMaterials).setMaxStackSize(1);
itemADNofFrog = new itemADNofFrog().setUnlocalizedName(“itemADNofFrog”).setCreativeTab(CreativeTabs.tabMaterials).setMaxStackSize(1);
itemSuperAxe = new itemSuperAxe(toolAxe).setUnlocalizedName(“itemsuperAxe”).setCreativeTab(CreativeTabs.tabTools).setMaxStackSize(1);
BlockBarriere = new BlockBarriere(Material.rock).setBlockName(“blockBarriere”).setCreativeTab(CreativeTabs.tabBlock);
BlockTronc = new BlockTronc().setBlockName(“blockTronc”).setCreativeTab(CreativeTabs.tabBlock).setHardness(2.0F).setBlockTextureName(“modminecraft:blockTronc”);
BlockFeuille = new BlockFeuille().setBlockName(“blockFeuille”).setCreativeTab(CreativeTabs.tabBlock).setHardness(0.1F).setBlockTextureName(“modminecraft:blockFeuille”);
BlockPousse = new BlockPousse().setBlockName(“blockPousse”).setHardness(0.5F).setBlockTextureName(“modminecraft:blockPousse”);
Ruins structureGenerator = new Ruins();GameRegistry.registerItem(itemFlechette, “item_Flechette”);
GameRegistry.registerItem(itemSarbacane, “item_Sarbacane”);
GameRegistry.registerItem(itemSeve, “item_Seve”);
GameRegistry.registerItem(itemSevewithmosquito, “item_Sevewithmosquito”);
GameRegistry.registerItem(itemFrogLegs, “item_FrogLegs”);
GameRegistry.registerItem(itemFlechetteEmpty, “item_FlechetteEmpty”);
GameRegistry.registerItem(itemFrogLegsCooked, “item_FrogLegsCooked”);
GameRegistry.registerItem(itemSyringe, “item_Syringe”);
GameRegistry.registerItem(itemSyringewithblood, “item_SyringeWithBlood”);
GameRegistry.registerItem(itemADNofFrog, “item_ADNofFrog”);
GameRegistry.registerBlock(BlockBarriere, “block_barriere”);
GameRegistry.registerItem(itemSuperAxe, “item_SuperAxe”);
GameRegistry.registerBlock(BlockTronc, “block_tronc”);
GameRegistry.registerBlock(BlockFeuille, “block_feuille”);
GameRegistry.registerBlock(BlockPousse, “block_pousse”);GameRegistry.registerWorldGenerator(new WorldGeneration(), 0);
GameRegistry.registerTileEntity(TileEntityBarriere.class, “Barriere”);
}@Mod.EventHandler
public void init(FMLInitializationEvent event)
{
proxy.registerRender();
proxy.registerTileEntityRender();GameRegistry.addRecipe(new ItemStack(itemFlechette, 4), new Object[] { "ZX “, “XYX”, " XE”, Character.valueOf(‘X’), Items.stick,
Character.valueOf(‘Y’), new ItemStack(Items.potionitem, 1, 16426), Character.valueOf(‘Z’), Items.iron_ingot, Character.valueOf(‘E’), new ItemStack(Blocks.wool, 1, 14) });
GameRegistry.addShapelessRecipe(new ItemStack(itemFlechette, 1), new Object[] { new ItemStack(Items.potionitem, 1, 16426), new ItemStack(itemFlechetteEmpty, 1) });
GameRegistry.addRecipe(new ItemStack(itemSarbacane), new Object[] { "XZ “, “ZXZ”, " ZX”, Character.valueOf(‘X’), Items.reeds, Character.valueOf(‘Z’), Items.string });
GameRegistry.addRecipe(new ItemStack(itemSyringe), new Object[] { “ZX “, “X X”, " XY”, Character.valueOf(‘Z’), Items.iron_ingot, Character.valueOf(‘Y’), Items.stick, Character.valueOf(‘X’), new ItemStack(Blocks.glass, 1) });
GameRegistry.addRecipe(new ItemStack(itemFlechetteEmpty, 4), new Object[] { “ZX “, “X X”, " XE”, Character.valueOf(‘X’), Items.stick, Character.valueOf(‘Y’), new ItemStack(Items.potionitem, 1, 16426), Character.valueOf(‘Z’), Items.iron_ingot, Character.valueOf(‘E’), new ItemStack(Blocks.wool, 1, 14) });
GameRegistry.addRecipe(new ItemStack(itemSuperAxe), new Object[] { " XX”, " ZX”, " ", Character.valueOf(‘Z’), Items.diamond_axe, Character.valueOf(‘X’), Items.diamond });GameRegistry.addRecipe(new ItemStack(BlockBarriere, 2), new Object[] { “XXX”, “YYY”, “XXX”, Character.valueOf(‘X’), Items.iron_ingot, Character.valueOf(‘Y’), Blocks.iron_bars });
GameRegistry.addSmelting(itemFrogLegs, new ItemStack(itemFrogLegsCooked, 1), 0.1F);
EntityRegistry.registerGlobalEntityID(EntityFrog.class, “EntityFrog”, EntityRegistry.findGlobalUniqueEntityId(), new Color(0, 255, 0).getRGB(), new Color(255, 0, 0).getRGB());
EntityRegistry.registerModEntity(EntityFrog.class, “EntityFrog”, 420, instance, 40, 1, true);EntityRegistry.registerGlobalEntityID(EntityFlechette.class, “RenderFlechetteun”, EntityRegistry.findGlobalUniqueEntityId());
EntityRegistry.registerModEntity(EntityFlechette.class, “RenderFlechetteun”, 421, instance, 40, 1, true);EntityRegistry.registerGlobalEntityID(EntityBrachiosaurus.class, “EntityBrachiosaurus”, EntityRegistry.findGlobalUniqueEntityId(), new Color(4, 52, 91).getRGB(), new Color(119, 175, 219).getRGB());
EntityRegistry.registerModEntity(EntityBrachiosaurus.class, “EntityBrachiosaurus”, 422, instance, 40, 1, true);GameRegistry.registerTileEntity(TileEntityBarriere.class, “TileEntityBarriere”);
BiomeListTuto.BiomeList();
}@Mod.EventHandler
public void postInit(FMLPostInitializationEvent event)
{
BiomeListTuto.worldTypeTuto = new WorldTypeTuto();
}WorldGeneration ```java package mod.common; import java.util.Random; import cpw.mods.fml.common.IWorldGenerator; import net.minecraft.init.Blocks; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; public class WorldGeneration extends WorldGenerator { @Override public boolean generate(World world, Random random, int x, int y, int z) { if(world.getBlock(x, y - 1, z) == Blocks.grass && world.isAirBlock(x, y , z)) { new mod.common.WorldGenAncientAcacia(true).generate(world, random, x, y, z); return true; } else { return false; } } }
Generator ( comme pour les minerais )
package mod.common; import java.util.Random; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.chunk.IChunkProvider; import cpw.mods.fml.common.IWorldGenerator; public class Generator implements IWorldGenerator { @Override public void generate(Random rand, int X, int Z, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) { switch(world.provider.dimensionId) { case -1: this.generateNether(world, X * 16, Z * 16, rand); case 0: this.generateSurface(world, X * 16, Z * 16, rand); case 1: this.generateEnd(world, X * 16, Z * 16, rand); } } private void generateSurface(World world, int x, int z, Random rand) { if(world.getBiomeGenForCoords(x, z).equals(BiomeGenBase.savanna)) { } if(world.getBiomeGenForCoords(x, z).equals(BiomeGenBase.savannaPlateau)) { } for (int i = 0; i < 50; i++) { int x1 = x + rand.nextInt(16); int y1 = rand.nextInt(128); int z1 = z + rand.nextInt(16); (new WorldGeneration()).generate(world, rand, x1, y1, z1); } } private void generateEnd(World world, int x, int z, Random rand) { } private void generateNether(World world, int x, int z, Random rand) { } }
-
La classe WorldGeneration ne doit pas être enregistré, seule Generator doit l’être.
-
Ah oui je me suis trompé merci !
-
De rien, et j’en profite pour demander si le tuto serait passable dans la section de génération.
-
Super tuto !
-
une question pourquoi ne pas avoir mit le tuto dans la catégorie génération et dimension, ce serait plus logic
-
Je suis d’accord avec toi.___@‘Diangle’:
De rien, et j’en profite pour demander si le tuto serait passable dans la section de génération.
pulganr, lis les derniers posts avant de poster, tu as dis la même chose que Diangle. ^^
-
@‘pulganr’:
une question pourquoi ne pas avoir mit le tuto dans la catégorie génération et dimension, ce serait plus logic
A vrai dire, le tuto est dans les deux. Donc ça ne gène pas.
-
Bonjour,
J’ai un problème dans la classe de la pousse:
@Override public void func_149878_d(World world, int x, int y, int z, Random random) { int l = world.getBlockMetadata(x, y, z) & 3; world.setBlockToAir(x, y, z); Object obj = null; obj = new ClassDeGeneration(true); if(!((WorldGenerator)(obj)).generate(world, random, x, y, z)) { world.setBlock(x, y, z, this, l, 3); } }
ClassDeGeneration() est souligné en rouge, il me dit que ça n’existe pas.
Merci d’avance,
rovergames -
Il faut que tu remplace par le nom de ta classe de génération de l’arbre
-
@‘BrokenSwing’:
Il faut que tu remplace par le nom de ta classe de génération de l’arbre
Ah d’accord merci
-
Je voudrais savoir à quand une version pour la 1.8.9
-
Surement pas de sitôt puisque personne n’a entreprit de le faire.
Par ailleurs ça m’étonnerait que beaucoup de choses changent à travers la réalisation…