Customiser votre bloc
-
public void updateEntity() { if(this.enable) { if(!this.worldObj.isBlockIndirectlyGettingPowered(this.xCoord, this.yCoord, this.zCoord) || this.worldObj.getBlockPowerInput(this.xCoord, this.yCoord, this.zCoord) <= 8) { this.enable = false; world.markBlockForUpdate(x, y, z); } } else { if(this.worldObj.isBlockIndirectlyGettingPowered(this.xCoord, this.yCoord, this.zCoord) && this.worldObj.getBlockPowerInput(this.xCoord, this.yCoord, this.zCoord) > 8) { this.enable = true; world.markBlockForUpdate(x, y, z); } } }Utilise plutôt ça, avec l’autre fonction que je t’ai donné ça envoyait pas un update du rendu.
-
Lol mon eclipse adore les erreurs, il m’en met sur world, x, y et z
-
Heu non, c’est pas ton eclipse qui adore les erreurs, c’est moi qui t’envoie des codes que je tape directement sur le forum x)
this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); -
Sa ne marche pas, le bloc ne change pas de texture. je ne sais pas pourquoi.
BlockLedVerte:package Assabody.mod; import java.util.Random; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Icon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class BlockLedVerte extends Block{ private Icon iconDark; private Icon iconGreen; public BlockLedVerte(int par1) { super(par1, Material.rock); this.setCreativeTab(ModAssabody.AssabodyCreativeTabs); } public void registerIcons(IconRegister iconRegister) { iconDark = iconRegister.registerIcon("mod-assabody:led_led_verte_on"); iconGreen = iconRegister.registerIcon("mod-assabody:led_led_verte_off"); } @Override public TileEntity createTileEntity(World world, int metadata) { return new TileEntityLedVerte(); } @SideOnly(Side.CLIENT) public Icon getBlockTexture(IBlockAccess blockaccess, int x, int y, int z, int side) { TileEntity te = blockaccess.getBlockTileEntity(x, y, z); if(te != null && te instanceof TileEntityLedVerte) { TileEntityLedVerte tetuto = (TileEntityLedVerte)te; return tetuto.isEnable() ? this.iconGreen : this.iconDark; } return this.getIcon(side, blockaccess.getBlockMetadata(x, y, z)); } public boolean hasTileEntity(int metadata) { return true; } public void onNeighborBlockChange(World world, int x, int y, int z, int neighborblockid, World par1World, int par2, int par3, int par4) { if(world.isBlockIndirectlyGettingPowered(x, y, z) && world.getBlockPowerInput(x, y, z) > 8) { } } public int idDropped(int par1, Random par2Random, int par3) { return this.blockID; } public boolean renderAsNormalBlock() { return true; } public boolean isOpaqueCube() { return false; } }TileEntityLedVerte:
package Assabody.mod; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.INetworkManager; import net.minecraft.network.packet.Packet; import net.minecraft.network.packet.Packet132TileEntityData; import net.minecraft.tileentity.TileEntity; public class TileEntityLedVerte extends TileEntity { private boolean enable; public void updateEntity() { if(this.enable) { if(!this.worldObj.isBlockIndirectlyGettingPowered(this.xCoord, this.yCoord, this.zCoord) || this.worldObj.getBlockPowerInput(this.xCoord, this.yCoord, this.zCoord) <= 8) { this.enable = false; this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); } } else { if(this.worldObj.isBlockIndirectlyGettingPowered(this.xCoord, this.yCoord, this.zCoord) && this.worldObj.getBlockPowerInput(this.xCoord, this.yCoord, this.zCoord) > 8) { this.enable = true; this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); } } } public boolean isEnable() { return enable; } public Packet getDescriptionPacket() { NBTTagCompound nbttagcompound = new NBTTagCompound(); this.writeToNBT(nbttagcompound); return new Packet132TileEntityData(this.xCoord, this.yCoord, this.zCoord, 4, nbttagcompound); } public void onDataPacket(INetworkManager net, Packet132TileEntityData pkt) { this.readFromNBT(pkt.customParam1); } public void readFromNBT(NBTTagCompound nbtTag) { super.readFromNBT(nbtTag); enable = nbtTag.getBoolean("enable"); } public void writeToNBT(NBTTagCompound nbtTag) { super.writeToNBT(nbtTag); nbtTag.setBoolean("enable", enable); } }Déclaration dans la classe principale :
Block BlockLedVerte = new BlockLedVerte(2004); GameRegistry.registerBlock(BlockLedVerte, "BlockLedVerte"); -
bloc :
package tutoriel.common; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Icon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class BlockLed extends Block { private Icon iconDark; private Icon iconGreen; public BlockLed(int id) { super(id, Material.rock); } public void registerIcons(IconRegister iconRegister) { iconDark = iconRegister.registerIcon("stone"); iconGreen = iconRegister.registerIcon("glass"); } @Override public TileEntity createTileEntity(World world, int metadata) { return new TileEntityLedVerte(); } @SideOnly(Side.CLIENT) @Override public Icon getBlockTexture(IBlockAccess blockaccess, int x, int y, int z, int side) { TileEntity te = blockaccess.getBlockTileEntity(x, y, z); if(te != null && te instanceof TileEntityLedVerte) { TileEntityLedVerte tetuto = (TileEntityLedVerte)te; return tetuto.isEnable() ? this.iconGreen : this.iconDark; } return this.getIcon(side, blockaccess.getBlockMetadata(x, y, z)); } public boolean hasTileEntity(int metadata) { return true; } @Override public void onNeighborBlockChange(World world, int x, int y, int z, int neighborblockid) { if(!world.isRemote) { TileEntity te = world.getBlockTileEntity(x, y, z); if( && te != null && te instanceof TileEntityLedVerte) { TileEntityLedVerte tetuto = (TileEntityLedVerte)te; if(world.getBlockPowerInput(x, y, z) > 8 || world.getBlockPowerInput(x, y + 1, z) > 8) { tetuto.setEnable(true); } else { tetuto.setEnable(false); } } } } }Tile entity :
package tutoriel.common; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.INetworkManager; import net.minecraft.network.packet.Packet; import net.minecraft.network.packet.Packet132TileEntityData; import net.minecraft.tileentity.TileEntity; public class TileEntityLedVerte extends TileEntity { private boolean enable; public void setEnable(boolean b) { enable = b; this.worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); } public boolean isEnable() { return enable; } public Packet getDescriptionPacket() { NBTTagCompound nbttagcompound = new NBTTagCompound(); this.writeToNBT(nbttagcompound); return new Packet132TileEntityData(this.xCoord, this.yCoord, this.zCoord, 4, nbttagcompound); } public void onDataPacket(INetworkManager net, Packet132TileEntityData pkt) { this.readFromNBT(pkt.customParam1); } public void readFromNBT(NBTTagCompound nbtTag) { super.readFromNBT(nbtTag); enable = nbtTag.getBoolean("enable"); } public void writeToNBT(NBTTagCompound nbtTag) { super.writeToNBT(nbtTag); nbtTag.setBoolean("enable", enable); } }Cette fois si j’ai fais les tests, ça fonctionne.
En revanche la fonction world.getBlockPowerInput(x, y, z) > 8 ne fonctionne que si tu as une poudre de redstone à côté, si tu mets une torche ça ne marchera pas. -
Ok merci beaucoup pour ton aide, je teste sa tout de suite___
MERCI BEAUCOUP
Sa marche !
Je vais enfin pouvoir finir ma salle de concert !!! -
Bonjour. est-ce qu’il y a une fonction pour empêcher que mon bloc puisse être poussé par un piston ? J’ai déjà regardé dans la class Block, et je n’ai rien trouvé.

-
En regardant dans le code du piston, on trouve :
private static boolean canPushBlock(int par0, World par1World, int par2, int par3, int par4, boolean par5) { if (par0 == Block.obsidian.blockID) { return false; } -
public int getMobilityFlag(){ return X; }X = 0 (laisse le bloc être poussé par un piston) ou 1 (droppe le bloc lorsqu’il est poussé) ou 2 (Le bloc ne peut pas être poussé par un piston).
-
+1 pour TheCreeper999, il te suffit de mettre cette fonction dans la classe du bloc alors qu’avec la réponse de Superloup10 tu aurai eu besoin de modifier la classe du piston.
-
A ma décharge, je n’ai pas regardé en détail comment le piston déplaçait les blocs, mais je me doutais qu’il y avait une fonction beaucoup plus simple.
-
Merci beaucoup
j’avais bien entendu regardé dans le code du piston. sauf que bien évidement, je ne touche pas aux class existantes, et que j’ai déjà tâtonné un peu du côté des event sans pour autant trouver quelque chose d’intéressant. Cette fonction est tout de même bien plus simple 
-
J’aimerai savoir comment donner un effet de potion (speed) quand on marche sur un bloc, j’ai essayer avec ceci
public void onEntityWalking(World par1World, int par2, int par3, int par4, Entity par5Entity){ if(par5Entity instanceof EntityLiving){ ((EntityLiving)par5Entity).addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(),200,10)); }Mais sa ne marche pas, alors si vous pouvez m’aider se serai super merci d’avance___
-
Je n’est jamais réussi à faire fontionner cette fonction donc j’utilise ça:
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { float var5 = 0.125F; return AxisAlignedBB.getAABBPool().getAABB((double)x - var5, (double)y - var5, (double)z - var5, (double)(x + 1) - var5, (double)((float)(y + 1) - var5), (double)(z + 1) - var5); } public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) { if(entity instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer)entity; player.addPotionEffect(new PotionEffect(Potion.confusion.id, 20, 10)); player.addPotionEffect(new PotionEffect(Potion.blindness.id, 200, 10)); player.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 200, 10)); player.addPotionEffect(new PotionEffect(Potion.digSlowdown.id, 200, 10)); player.addPotionEffect(new PotionEffect(Potion.hunger.id, 200, 10)); player.addPotionEffect(new PotionEffect(Potion.wither.id, 20, 10)); } } -
@‘fireblade51’:
J’aimerai savoir comment donner un effet de potion (speed) quand on marche sur un bloc, j’ai essayer avec ceci
public void onEntityWalking(World par1World, int par2, int par3, int par4, Entity par5Entity){ if(par5Entity instanceof EntityLiving){ ((EntityLiving)par5Entity).addPotionEffect(new PotionEffect(Potion.moveSpeed.getId(),200,10)); }Mais sa ne marche pas, alors si vous pouvez m’aider se serai super merci d’avance___
Quand tu es en créative apparemment ça ne marche pas.
-
Salut, j’ai une erreur sur pickaxe dans le code :
MinecraftForge.setBlockHarvestLevel(blockore1, 0, pickaxe, 2);Classe principale entière :
package alphis.common; import alphis.blocks.block1; import alphis.blocks.blockore1; import alphis.items.item1; import alphis.items.item2; import alphis.items.item3; import alphis.proxy.AlphisCommonProxy; import alphis.worldgen.WorldGeneratorCopper; import net.minecraft.block.Block; import net.minecraft.item.Item; import net.minecraftforge.common.MinecraftForge; 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.network.NetworkMod; import cpw.mods.fml.common.registry.GameRegistry; @Mod(modid = "AlphisMOD", name = "AlphisMOD", version = "1.0.0", acceptedMinecraftVersions = "[1.6.4,)") @NetworkMod(clientSideRequired = true, serverSideRequired = false) public class AlphisMOD { @SidedProxy(clientSide = "alphis.proxy.AlphisClientProxy", serverSide = "alphis.proxy.AlphisCommonProxy") public static AlphisCommonProxy proxy; @Instance("AlphisMOD") public static AlphisMOD instance; // Copper-Cuivre public static Block block1; public static Item item1; public static Block blockore1; // Sapphire-Saphir public static Block block2; public static Item item2; // Ruby-Rubis public static Block block3; public static Item item3; @EventHandler public void PreInit(FMLPreInitializationEvent event) { //Configuration //Blocks/Items - copper block1 = new block1(2001).setHardness(5.0F).setResistance(10.0F).setStepSound(Block.soundMetalFootstep).setUnlocalizedName("CopperBlock").setTextureName("alphismod:copper_block"); item1 = new item1(10001).setUnlocalizedName("CopperIngot").setTextureName("alphismod:copper_ingot"); blockore1 = new blockore1(2004).setHardness(3.0F).setResistance(5.0F).setStepSound(Block.soundStoneFootstep).setUnlocalizedName("CopperOre").setTextureName("alphismod:copper_ore"); //Blocks/Items - sapphire block2 = new alphis.blocks.block2(2002).setHardness(5.0F).setResistance(10.0F).setStepSound(Block.soundMetalFootstep).setUnlocalizedName("SapphireBlock").setTextureName("alphismod:sapphire_block"); item2 = new item2(10002).setUnlocalizedName("Sapphire").setTextureName("alphismod:sapphire"); //Blocks/Items - ruby block3 = new alphis.blocks.block3(2003).setHardness(5.0F).setResistance(10.0F).setStepSound(Block.soundMetalFootstep).setUnlocalizedName("RubyBlock").setTextureName("alphismod:ruby_block"); item3 = new item3(10003).setUnlocalizedName("Ruby").setTextureName("alphismod:ruby"); //Items //Achievements } @EventHandler public void Init(FMLInitializationEvent event) { //Registry GameRegistry.registerBlock(block1, "block1"); GameRegistry.registerItem(item1, "item1", "AlphisMOD"); GameRegistry.registerBlock(blockore1, "blockore1"); GameRegistry.registerBlock(block2, "block2"); GameRegistry.registerItem(item2, "item2", "AlphisMOD"); GameRegistry.registerBlock(block3, "block3"); GameRegistry.registerItem(item3, "item3", "AlphisMOD"); //WorldGenerator GameRegistry.registerWorldGenerator(new WorldGeneratorCopper()); //MinecraftForge MinecraftForge.setBlockHarvestLevel(blockore1, 0, pickaxe, 2); //Mobs //Render proxy.registerRender(); //NetWork //Recipe } @EventHandler public void PostInit(FMLPostInitializationEvent event) { //Intégration avec les autres mods } }Bye !
-
MinecraftForge.setBlockHarvestLevel(blockore1, 0, “pickaxe”, 2);
-
@‘robin4002’:
MinecraftForge.setBlockHarvestLevel(blockore1, 0, “pickaxe”, 2);
Merci sa marche très bien !
Je voudrais vous remercier pour l’aide que m’apport le forum dans mon mod même si il y a deux trois trucs que je comprend pas (dalles & escaliers ainsi que le drop qui viens d’un bloc)
GRAND MERCI A VOUS !!
-
C’est encore moi
! Je voudrais que mon minerai de saphir drop une gemme de saphir sa j’ai réussi. Ce que j’arrive pas à faire c’est que si la pioche est enchanté fortune on drop plus, le résultat est le même, enchant ou non le bloc drop 1 gemme. Il y a cela mais il y autre chose, j’ai cherché dans BlockOre.java, pour que mon minerai drop de l’exp sa c’est également fait, mon bloc drop de l’exp mais seulement quand il est cassé avec une pioche fortune.Classe de mon bloc :
package alphis.blocks; import java.util.Random; import alphis.common.AlphisMOD; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.util.MathHelper; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class blockore2 extends Block { public blockore2(int id) { super(id, Material.rock); this.setCreativeTab(CreativeTabs.tabBlock); } public int idDropped(int par1, Random par2Random, int par3) { return AlphisMOD.item2.itemID; } public int getExpDrop(World par1World, int par5, int par7) { if (this.idDropped(par5, par1World.rand, par7) != this.blockID) { int j1 = 0; if (AlphisMOD.blockore2.blockID == AlphisMOD.item2.itemID) { j1 = MathHelper.getRandomIntegerInRange(par1World.rand, 3, 7); } } return par7; } }Bye !
-
Ctrl + shift + F s’il te plait, ton code est pas vraiment lisible

