Petits problèmes plutôt ennuyant
-
Hello tout le monde ça fait longtemps que je n’ai plus poster de sujet
Mais je reviens avec quelques petits problème que j’arrive pas à résoudre par tout les moyens …
Voila j’ai créer un arbre et lorsque qu’on le casse avec une hache spécial il drop random , soit rien , soit de la seve , soit de la seve avec un moustique pré-historique , le problème c’est que du coup il ne drop pas mon bloc wood,
public boolean onBlockDestroyed(ItemStack stack, World world, Block block, int x, int y, int z, EntityLivingBase living) { if (world.getBlock(x, y, z) == ModMinecraft.BlockTronc) { System.out.println("je vais drop"); world.setBlockToAir(x, y, z); if ((living instanceof EntityPlayer)) { EntityPlayer player = (EntityPlayer)living; int randInt = world.rand.nextInt(11); if (randInt == 0) { float f = 0.7F; double d0 = world.rand.nextFloat() * f + (1.0F - f) * 0.5D; double d1 = world.rand.nextFloat() * f + (1.0F - f) * 0.5D; double d2 = world.rand.nextFloat() * f + (1.0F - f) * 0.5D; EntityItem entityitem = new EntityItem(world, x + d0, y + d1, z + d2, new ItemStack(ModMinecraft.itemSeve, 1)); entityitem.delayBeforeCanPickup = 10; world.spawnEntityInWorld(entityitem); } else if (randInt == 1) { float f = 0.7F; double d0 = world.rand.nextFloat() * f + (1.0F - f) * 0.5D; double d1 = world.rand.nextFloat() * f + (1.0F - f) * 0.5D; double d2 = world.rand.nextFloat() * f + (1.0F - f) * 0.5D; EntityItem entityitem = new EntityItem(world, x + d0, y + d1, z + d2, new ItemStack(ModMinecraft.itemSeve, 1)); entityitem.delayBeforeCanPickup = 10; world.spawnEntityInWorld(entityitem); } else if (randInt == 2) { float f = 0.7F; double d0 = world.rand.nextFloat() * f + (1.0F - f) * 0.5D; double d1 = world.rand.nextFloat() * f + (1.0F - f) * 0.5D; double d2 = world.rand.nextFloat() * f + (1.0F - f) * 0.5D; EntityItem entityitem = new EntityItem(world, x + d0, y + d1, z + d2, new ItemStack(ModMinecraft.itemSevewithmosquito, 1)); entityitem.delayBeforeCanPickup = 10; world.spawnEntityInWorld(entityitem); } else if (randInt == 3) { float f = 0.7F; double d0 = world.rand.nextFloat() * f + (1.0F - f) * 0.5D; double d1 = world.rand.nextFloat() * f + (1.0F - f) * 0.5D; double d2 = world.rand.nextFloat() * f + (1.0F - f) * 0.5D; EntityItem entityitem = new EntityItem(world, x + d0, y + d1, z + d2, new ItemStack(ModMinecraft.itemSeve, 1)); entityitem.delayBeforeCanPickup = 10; world.spawnEntityInWorld(entityitem); } else if (randInt != 4) { if (randInt != 5) { if (randInt != 6) { if (randInt != 7) { if (randInt == 8) { float f = 0.7F; double d0 = world.rand.nextFloat() * f + (1.0F - f) * 0.5D; double d1 = world.rand.nextFloat() * f + (1.0F - f) * 0.5D; double d2 = world.rand.nextFloat() * f + (1.0F - f) * 0.5D; EntityItem entityitem = new EntityItem(world, x + d0, y + d1, z + d2, new ItemStack(ModMinecraft.itemSeve, 1)); entityitem.delayBeforeCanPickup = 10; world.spawnEntityInWorld(entityitem); } else if (randInt == 9) { float f = 0.7F; double d0 = world.rand.nextFloat() * f + (1.0F - f) * 0.5D; double d1 = world.rand.nextFloat() * f + (1.0F - f) * 0.5D; double d2 = world.rand.nextFloat() * f + (1.0F - f) * 0.5D; EntityItem entityitem = new EntityItem(world, x + d0, y + d1, z + d2, new ItemStack(ModMinecraft.itemSeve, 1)); entityitem.delayBeforeCanPickup = 10; world.spawnEntityInWorld(entityitem); } else if (randInt == 10) { float f = 0.7F; double d0 = world.rand.nextFloat() * f + (1.0F - f) * 0.5D; double d1 = world.rand.nextFloat() * f + (1.0F - f) * 0.5D; double d2 = world.rand.nextFloat() * f + (1.0F - f) * 0.5D; EntityItem entityitem = new EntityItem(world, x + d0, y + d1, z + d2, new ItemStack(ModMinecraft.itemSeve, 1)); entityitem.delayBeforeCanPickup = 10; world.spawnEntityInWorld(entityitem); } } } } } } } else { System.out.println("le bloc correspond pas, je drop rien " + world.getBlock(x, y, z).getUnlocalizedName()); } return super.onBlockDestroyed(stack, world, block, x, y, z, living); }
Voici le code , je ne sais pas comment faire j’ai essayer d’ajouter dans la classe du block tronc un ligne pour qu’il drop justement à chaque fois le bloc avec la seve mais impossible
De plus j’ai créer mon propre WorldType mais j’aimerais que mes nouveaux arbres créer spawn dans mon biome , le problème c’est que quand j’essaye de mettre mon biome dans cette ligne de code :
**if**(world.getBiomeGenForCoords(x, z).equals(BiomeGenBase.//Votre biome.)) { }
Mais mon biome n’est pas trouvé et si j’essaye autre chose sa ne marche pas… /=
Voila voila , merci à ceux qui m’aiderons
( Désoler si les questions on déjà été posé j’ai regardé mais je n’ai pas trouvé )
-
Pourquoi utiliser onBlockDestroyed alors qu’il y a déjà quantityDropped et getItemDropped pour ça ?
if(world.getBiomeGenForCoords(x, z).equals(ClassePrincipale.biome)
C’est la base de java putain, quand vous cherchez un objet, il faut mettre le nom de la classe où il est déclaré et pas sont type u_U
SÉRIEUSEMENT, APPRENEZ LE JAVA !!! -
Euh j’avais demander sur le forum je crois que c’est toi qui m’avais dis cela et m’avais donner le code , et oui j’ai déjà essayer ModMinecraft.AncientBiome , le Ancient Biome se souligne en rouge me demandant soit de créer constant ou field
-
Ton biome est déclaré où ?
-
Justement je pense que c’est sa le problème, le fait que je ne l’ai pas enregistré car je veut qu’il se génère dans mon World Type pas dans le monde normal …
-
Non mais on s’en fou de l’enregistrement, je parles de la déclaration.
C’est à dire
public static BiomeBase blabla; -
Ah oui il n’était pas déclarer et je sais pas pourquoi car il me semblait l’avoir fait O.o Bon du coup désoler de cette bête question et merci
j’ai rajouter ceci :
public static BiomeGenBase AncientBiome;
Mais l’arbre ne se génère pas , pourtant aucune erreur …
-
Heu tu l’a aussi initialisé ?
-
Alors , j’ai re regarder le tuto et j’espère que c’est bien ca , car ca ne se génère toujours pas
Donc voici ma classe principale :
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.minecraft.world.biome.BiomeGenBase; 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 BiomeGenBase AncientBiome; 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"); AncientBiome = new AncientBiome(50).setBiomeName("AncientBiome").setTemperatureRainfall(0.8F, 0.4F); 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 Generator(), 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(); } }
-
Le biome m’a l’air ok, le reste je ne sais pas.
-
Ce n’est pas a cause que ce soit dans un WorldType ?
-
Normalement non, on arrive très bien a gérer des arbres custom dans une dimension custom (qui utilise un world type custom) sur nanotech mod et le biome n’est pas enregistré.
-
Bizarre
Euuh , je vais relire encore une fois le tuto , voir si j’ai rien manquer et je te tiens au courant
EDIT EDIT : J’ai relu et tout me semble OK. /:
-
Tu génère ton arbre avec quel code ?
-
Fait voir la classe generator avec la classe de génération de ton arbre.
-
Voici :
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(ModMinecraft.AncientBiome)) { 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) { } }
-
Petit UP du sujet
-
UP
-
Up . . .
-
Tu peux aussi arrêter de spam –’