Customiser votre bloc
-
Voilà, tutoriel terminé. Si vous souhaitez apporter des exemples à la suite, faite, c’est toujours mieux avec des exemples.
-
Moyen de faire la même chose avec les items genre pour les effets d’items enchantés ou autre ?
-
Salut,
très bon tuto mais j’aimerais créer une led, noire lorsqu’elle est eteinte et verte lorsqu’elle est allumé mais je trouve pas comment faire, le code de la lampe de redstone n’est pas la même.Quelqu’un pourrait m’aider ? Merci
PS : je modde sur forge et j’aimerais changé juste la texture, pas créer un nouveau block. -
Si tu veux juste changer la texture, tu n’as pas besoin de mod pour ça, juste d’un ressourcepack.
-
Passe par un TileEntity
@Override public TileEntity createTileEntity(World world, int metadata) { return new TileEntityTutorial(); }public boolean hasTileEntity(int metadata) { return true; }@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 TileEntityTutorial) { TileEntityTutorial tetuto = (TileEntityTutorial)te; return te.isEnable() ? this.iconGreen : this.iconDark } return this.getIcon(side, blockaccess.getBlockMetadata(x, y, z)); }iconGreen et iconDark sont tes deux icônes. Ne supprime pas la méthode getIcon, elle est nécessaire pour l’icône en main, getBlockTexture ne fait que la texture sur le monde.
TileEntityTutorial ->
public class TileEntityTutorial extends TileEntity { private boolean enable; public void updateEntity() { enable = this.worldObj.isBlockIndirectlyGettingPowered(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.data); } }ÉDIT : n’oublie pas d’enregistrer ton TileEntity, sinon tu vas avoir des erreurs.
http://www.minecraftforgefrance.fr/showthread.php?tid=106 -
Dans le TileEntityLedVerte, il me met une erreur a .data : “this.readFromNBT(pkt.data);”
Ainsi que a isEnable, iconGreen, iconDark dans BlockLedVerte.Sinon, y a pas un moyen de le faire avec deux blocks ? Sa serais peut-être plus facile ?
-
Désolé, j’avais mal compris ta demande. Par contre, tu pourrais nous dire quelles sont tes erreurs?
-
Je les aie marqué dans le post précédent
-
Tu as bien préciser que iconGreen et iconBlack, correspondent aux bonnes textures?
-
Oups, c’est de ma faute. Dans ton TileEntity, ajoute :
public void readFromNBT(NBTTagCompound nbtTag) { super.readFromNBT(nbtTag); enable = nbtTag.getBoolean("enable"); } public void writeToNBT(NBTTagCompound nbtTag) { super.writeToNBT(nbtTag); nbtTag.setBoolean("enable", enable); } -
=> robin4002 : Y’a une erreur a setString
=> Superloup10 : Comment je fais pour mettre deux textures dans ma classe ?
Je suis sur forge 1.6.2 -
setBoolean*

-
Je dois mettre quoi pour iconGreen, iconDark, isEnable plz ?
Parce que je vois pas du tout comment faire.
Merci -
public void registerIcons(IconRegister iconRegister) { iconGreen = iconRegister.registerIcon("modid:TextureVerte"); iconDark = iconRegister.registerIcon("modid:TextureNoire"); }Voilà pour la gestion des textures, après à toi de faire en sorte que la TextureNoire soit celle, par défaut.
-
Merci mais l’on ne peut pas utiliser cette méthode ?
if(world.isBlockIndirectlyGettingPowered(x, y, z) && world.getBlockPowerInput(x, y, z) >
{
//Action à faire si le bloc est alimenté par un signale de redstone avec une force supérieur à 8.
}Parce que la je ne comprend pas le code que vous m’avez passé.
Il y a une erreur a " return te.enable() " -
-> return tetuto.isEnable()
À nouveau, fail de ma partEt sinon dans le tileEntiy :
public void updateEntity() { enable = this.worldObj.isBlockIndirectlyGettingPowered(this.xCoord, this.yCoord, this.zCoord) && this.worldObj.getBlockPowerInput(this.xCoord, this.yCoord, this.zCoord) > 8; } -
“Type mismatch: cannot convert from Object to Icon” pour ton erreur corrigé

et quand je change “tetuto.isEnable()” par “TileEntityLedVerte.isEnable()” parce que j’imagine que sa fait référence à mon TileEntity mais maintenant sa me marque “Cannot make a static reference to the non-static method isEnable() from the type TileEntityLedVerte” et quand je veut fixer l’erreur, je peut changer
"
public boolean isEnable()
{
return enable;
}
"
par
"
public static isEnable()
{
return enable;
}
"
mais y a d’autres erreurs qui apparaissent, bref sa fait une impasse d’erreur
Merci de ta patience
-
La méthode ne doit pas être static.
Envoie toute ta fonction getBlockTexture -
@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)tetuto; //return TileEntityLedVerte.isEnable() ? this.iconGreen : this.iconDark; } return this.getIcon(side, blockaccess.getBlockMetadata(x, y, z)); }La ou il y a les // de commentaire, c’est la ou il y a les erreurs.___
Je te met tous mes codes :
BlockLedVertepackage 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 Object iconDark; private Object iconGreen; public BlockLedVerte(int par1) { super(par1, Material.rock); this.setCreativeTab(ModAssabody.AssabodyCreativeTabs); } public void registerIcons(IconRegister iconRegister) { iconGreen = iconRegister.registerIcon("modid:TextureVerte"); iconDark = iconRegister.registerIcon("modid:TextureNoire"); } @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)tetuto; //return TileEntityLedVerte.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) { //par1World.setBlock(par2, par3, par4, ModAssabody.BlockSoin.blockID, 0, 2); } } 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() { enable = this.worldObj.isBlockIndirectlyGettingPowered(this.xCoord, this.yCoord, this.zCoord) && this.worldObj.getBlockPowerInput(this.xCoord, this.yCoord, this.zCoord) > 8; } 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.data); } public void readFromNBT(NBTTagCompound nbtTag) { super.readFromNBT(nbtTag); enable = nbtTag.getBoolean("enable"); } public void writeToNBT(NBTTagCompound nbtTag) { super.writeToNBT(nbtTag); nbtTag.setBoolean("enable", enable); } } -
TileEntityLedVerte tetuto = (TileEntityLedVerte)te; return tetuto.isEnable() ? this.iconGreen : this.iconDark;
