Résolu Problème Plantes Houblons et Cannabis [1.7.10]
-
Bonjour, jessaye de faire des plante de cannabis et houblons pour mon serveur MC, mais jarrive pas surtous sur le repeat quand je casse la plante, voila le Code :
Base pour les plantes :
package com.nostalgie.mod.nrpp.block; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.BlockBush; import net.minecraft.block.IGrowable; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; import net.minecraft.world.World; public class RecipeBlockCrops extends BlockBush implements IGrowable { protected int maxGrowthStage = 7; protected int repeat = 0; protected int repeatI = 0; protected String plant = ""; protected Block canPlace; protected Item drop; @SideOnly(Side.CLIENT) protected IIcon[] iIcon; public RecipeBlockCrops(String plantA, int repeatA, Block canPlaceA, Item dropA) { // Basic block setup setTickRandomly(true); float f = 0.5F; setBlockBounds(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, 0.25F, 0.5F + f); setCreativeTab((CreativeTabs)null); setHardness(0.0F); setStepSound(soundTypeGrass); disableStats(); plant = plantA; repeat = repeatA; canPlace = canPlaceA; drop = dropA; } /** * le block que vous voulez pouvoir le placer dessu, aka de l'herbe (grass) */ @Override protected boolean canPlaceBlockOn(Block parBlock) { return parBlock == Blocks.grass; } public void incrementGrowStage(World parWorld, Random parRand, int parX, int parY, int parZ) { int growStage = parWorld.getBlockMetadata(parX, parY, parZ) + MathHelper.getRandomIntegerInRange(parRand, 2, 5); if (growStage > maxGrowthStage) { growStage = maxGrowthStage; } parWorld.setBlockMetadataWithNotify(parX, parY, parZ, growStage, 2); } @Override public Item getItemDropped(int p_149650_1_, Random parRand, int parFortune) { return Item.getItemFromBlock(this); } /** * comment vous voulez que il safiche */ @Override public int getRenderType() { return 1; // croix comme une fleur } public void func_149674_a(World parWorld, int parX, int parY, int parZ, Random parRand) { if (repeatI == 0) { super.func_149674_a(parWorld, parX, parY, parZ, parRand); int growStage = parWorld.getBlockMetadata(parX, parY, parZ) + 1; if (growStage > 7) { growStage = 7; } parWorld.setBlockMetadataWithNotify(parX, parY, parZ, growStage, 2); repeatI = repeat; } else { repeatI -= 1; } } /** * Texture du block. Args: side, meta */ @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int parSide, int parGrowthStage) { return iIcon[parGrowthStage]; } /* * Need to implement the IGrowable interface methods */ /* * (non-Javadoc) * @see net.minecraft.block.IGrowable#func_149851_a(net.minecraft.world.World, * int, int, int, boolean) */ @Override // Verifie que ca a fini de pousser (Stage 7 es le stat final) public boolean func_149851_a(World parWorld, int parX, int parY, int parZ, boolean p_149851_5_) { return parWorld.getBlockMetadata(parX, parY, parZ) != 7; } /* * (non-Javadoc) * @see net.minecraft.block.IGrowable#func_149852_a(net.minecraft.world.World, * java.util.Random, int, int, int) */ @Override public boolean func_149852_a(World p_149852_1_, Random parRand, int p_149852_3_, int p_149852_4_, int p_149852_5_) { return true; } /* * (non-Javadoc) * @see net.minecraft.block.IGrowable#func_149853_b(net.minecraft.world.World, * java.util.Random, int, int, int) */ @Override public void func_149853_b(World parWorld, Random parRand, int parX, int parY, int parZ) { incrementGrowStage(parWorld, parRand, parX, parY, parZ); } }
Cannabis :
package com.nostalgie.mod.nrpp.block; import java.util.Random; import com.nostalgie.mod.nrpp.init.ItemMod; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockCrops; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.util.IIcon; import net.minecraft.world.World; public class CannabisCrops extends RecipeBlockCrops { public CannabisCrops() { // Setup basique du block setBlockName("CannabisCrops"); setBlockTextureName("nrpp:CannabisCrops_stage_0"); } /** * les graine que ca vas drop */ @Override public int quantityDropped(int parMetadata, int parFortune, Random parRand) { return (parMetadata/7); } @Override public Item getItemDropped(int parMetadata, Random parRand, int parFortune) { // DEBUG System.out.println("CannabisCrops getItemDropped()"); return (ItemMod.cannabis_leaf); } @Override public void updateTick(World parWorld, int parX, int parY, int parZ, Random parRand) { super.updateTick(parWorld, parX, parY, parZ, parRand); int growStage = parWorld.getBlockMetadata(parX, parY, parZ) + 1; if (growStage > 7) { growStage = 7; } parWorld.setBlockMetadataWithNotify(parX, parY, parZ, growStage, 2); } @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister parIIconRegister) { iIcon = new IIcon[maxGrowthStage+1]; // les plante ont 8 etapes, donc tu peux repeter des etape comme 0, 0, 0, 1, 1, 1, // pour donner l'impression que c'est plus lent iIcon[0] = parIIconRegister.registerIcon("nrpp:CannabisCrops_stage_0"); iIcon[1] = parIIconRegister.registerIcon("nrpp:CannabisCrops_stage_1"); iIcon[2] = parIIconRegister.registerIcon("nrpp:CannabisCrops_stage_2"); iIcon[3] = parIIconRegister.registerIcon("nrpp:CannabisCrops_stage_3"); iIcon[4] = parIIconRegister.registerIcon("nrpp:CannabisCrops_stage_4"); iIcon[5] = parIIconRegister.registerIcon("nrpp:CannabisCrops_stage_5"); iIcon[6] = parIIconRegister.registerIcon("nrpp:CannabisCrops_stage_6"); iIcon[7] = parIIconRegister.registerIcon("nrpp:CannabisCrops_stage_7"); } }
Houblons :
package com.nostalgie.mod.nrpp.block; import java.util.Random; import com.nostalgie.mod.nrpp.init.ItemMod; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockCrops; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.util.IIcon; import net.minecraft.world.World; public class HoublonsCrops extends RecipeBlockCrops { public HoublonsCrops() { // Setup basique du block setBlockName("HoublonsCrops"); setBlockTextureName("nrpp:houblons_stage_0"); } /** * a quelle etape ca vas drop l'item */ @Override public int quantityDropped(int parMetadata, int parFortune, Random parRand) { return (parMetadata/7); } @Override public Item getItemDropped(int parMetadata, Random parRand, int parFortune) { // DEBUG System.out.println("HoublonsCrops getItemDropped()"); return (ItemMod.houblons_leaf); } @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister parIIconRegister) { iIcon = new IIcon[maxGrowthStage+1]; // les plante ont 8 etapes, donc tu peux repeter des etape comme 0, 0, 0, 1, 1, 1, // pour donner l'impression que c'est plus lent iIcon[0] = parIIconRegister.registerIcon("nrpp:houblons_stage_0"); iIcon[1] = parIIconRegister.registerIcon("nrpp:houblons_stage_1"); iIcon[2] = parIIconRegister.registerIcon("nrpp:houblons_stage_2"); iIcon[3] = parIIconRegister.registerIcon("nrpp:houblons_stage_3"); iIcon[4] = parIIconRegister.registerIcon("nrpp:houblons_stage_5"); iIcon[6] = parIIconRegister.registerIcon("nrpp:houblons_stage_6"); iIcon[7] = parIIconRegister.registerIcon("nrpp:houblons_stage_7"); } }
jai aussi un probleme avec la texture de stage 5 de mon houblons, il se mes en texture noir et rose alors que ca texture es dans le dossier blocks
(desoler si il y a des faute d’orthographe),
AZ_The_Froggie
-
ok, jai trouvee le debut du probleme qui ete de changer
public void func_149674_a(World parWorld, int parX, int parY, int parZ, Random parRand) { if (repeatI == 0) { super.func_149674_a(parWorld, parX, parY, parZ, parRand); int growStage = parWorld.getBlockMetadata(parX, parY, parZ) + 1; if (growStage > 7) { growStage = 7; } parWorld.setBlockMetadataWithNotify(parX, parY, parZ, growStage, 2); repeatI = repeat; } else { repeatI -= 1; } }
Func_149674_a par updateTick
mais mtn les crops de canna et houblons me dit :AZ_the_froggie
-
Ta classe hérite de quelle classe ?
Car visiblement la classe parent a besoin d’un constructeur différent, il faut ajoutersuper(...);
au début du constructeur. -
@robin4002 du constructeur de RecipeBlockCrops ?
-
Ce message a été supprimé ! -
c’est bon jai compris, il faut mettre par example :
super("HoublonsCrops", 7, null, ItemMod.houblons_leaf);
au debut de la classe cannabis ou houblons, mais ca ne fait pas se que je croyer que ca aller faire, si vous savez comment le faire, c’est quand le crop es dans un stage entre 0 et 7, quand tu le casse, si c’est stage entre 0 a 6 ca vas re mettre le stage 0 et si c’est stage 7, ca re mes au stage 0 en droppend l’item demander (encore deso pour les faute d’orthographe)
-
Ce message a été supprimé ! -
comme je sais pas si c comprehensible, voici un schema (a la rache) :
-
Il faut override la fonction onBlockDestroyed et replacer le bloc dans cette dernière (avec un world.setBlock)
-
Tu ferais mieux d’en faire pousser dans ton jardin que sur Minecraft.
-
@isador34 au moin sur mc j’aurais pas de probleme :')
-
@robin4002 donc il faut faire quel’que chose comme ca ?
@Override public void onBlockDestroyed() { world.setBlock HoublonsCrops; }
si c ca, il me donne une erreur sur le world, et jai mis ce morceaux de code dans le code du HoublonsCrops
-
En effet comme cela ça ne risque pas de fonctionner …
Déjà pour override la méthode onBlockDestroyed il faut les bons arguments, donc commence par regarder dans la classe Block.java à quoi ressemble la fonction.
Et ensuite world.setBlock sans parenthèse après, ce n’est pas comme ça qu’on appelle une fonction en Java.
-
Merci, jai chercher dqans le block.class et jai trouvee ca (modifier pour mes plante) :
@Override public void onBlockDestroyedByPlayer(World world, int x, int y, int z, int p_149664_5_) { world.setBlock(x, y, z, NostalgieRPPlants.CannabisCrops, 0, 2); }
Mais la texture 5 de mon houblons ne veux pas safficher alors que il es bien mis dans le dossier blocks avec les texture du cannabis, si on peux m’aider, ca serrais la joie, vrm merci @robin4002
-
je cherche aussi pour change le temp de croissance des plante si vous savez .-.
-
La texture 5 ne s’affiche pas, c’est à dire ? Il y a un texture noir / violet ? Ou elle n’apparait juste jamais (et la plante reste sur la texture 4 pour toujours ?)
-
nan c’est bon jai regle ca, javais delete une etape et non, ca me donnait une texture noir et rose et apres ca changais quand ca grandissais, tous se que il me manque c’est le temp custom de croissance,
-
De mémoire il suffit de changer la méthode tickRate (ou un truc du genre)
-
donc il faudrais que je @Override le TickRate, je vais voir ca
-
je comprend pas le tickrate(); .-. sa se trouve c tous con mais voilah.