Identifiant de bloc



  • bonjour j'aimerai faire un bloc qui aurait un identifiant  (whaaa la découverte  😄 )  je m'explique : ce bloc posséderait un chiffre qui le différencierait d'un autre bloc du même type et cet identifiant pourrai être recyclé si je detruit le bloc cependant je ne vois pas comment faire merci de votre aide



  • avec les tab NBT



  • Pour ça il te faut passer par un TileEntity



  • ok merci


    heu désolé d'éditer le sujet mais après avoir réfléchi je ne vois pas comment faire une fois dans le tile entity pour avoir l'identifiant en chiffre



  • @'Asmath':

    ok merci


    heu désolé d'éditer le sujet mais après avoir réfléchi je ne vois pas comment faire une fois dans le tile entity pour avoir l'identifiant en chiffre

    Tu mets un public static int dans la classe de ton block que tu incrémentes à chaque fois.



  • si je le met dans la class du block c'est le même pour chaque bloc et si il est static il peut pas changer si j'ai bien compris



  • Bah les Tile Entity à mon avis, c'est une bonne solution 🙂



  • bonjour j'ai trouvé la solution je vous la donne pour que tout le monde puisse en profiter si quelqu'un en à besoin
    ma class pour les event

    package com.mathiasetampes.algorythme.common;
    
    import cpw.mods.fml.common.eventhandler.SubscribeEvent;
    import cpw.mods.fml.common.gameevent.TickEvent;
    import net.minecraft.block.Block;
    import net.minecraft.tileentity.TileEntity;
    import net.minecraftforge.event.entity.EntityJoinWorldEvent;
    import net.minecraftforge.event.world.BlockEvent;
    import net.minecraftforge.event.world.BlockEvent.PlaceEvent;
    
    public class AllEvent
    {
    int TabIds[] = new int[50];
    @SubscribeEvent
    public void PlaceEvent(PlaceEvent event)
    {
    TileEntity te = event.world.getTileEntity(event.x, event.y, event.z); // Obtient le tile entité du bloc
    if(te instanceof TileEntityAire)
    {
    for(int i = 0;i<50;i++)
    {
    TileEntityAire tileTuto = (TileEntityAire)te;
    if(TabIds*!=1)
    {
    tileTuto.UpIds(i);
    TabIds* = 1;
    break;
    }
    }
    }
    }
    public void BreakEvent(BlockEvent.BreakEvent event)
    {
    TileEntity te = event.world.getTileEntity(event.x, event.y, event.z); // Obtient le tile entité du bloc
    if(te instanceof TileEntityAire)
    {
    TileEntityAire tileTuto = (TileEntityAire)te;
    TabIds[tileTuto.getIds()] = 0;
    }
    }
    }
    

    la class de TileEntity

    package com.mathiasetampes.algorythme.common;
    
    import net.minecraft.nbt.NBTTagCompound;
    import net.minecraft.tileentity.TileEntity;
    
    public class TileEntityAire extends TileEntity
    {
    public int ids;
    public int identifiant;
    
    @Override
    public void readFromNBT(NBTTagCompound compound)
    {
    super.readFromNBT(compound);
    this.identifiant = compound.getInteger("Identifiant");
    }
    
    @Override
    public void writeToNBT(NBTTagCompound compound)
    {
    super.writeToNBT(compound);
    compound.setInteger("Identifiant", this.identifiant);
    }
    public void UpIds(int i)
    {
    this.ids=i;
    return;
    }
    public int getIds()
    {
    return this.ids;
    }
    }
    
    


  • @'Asmath':

    si je le met dans la class du block c'est le même pour chaque bloc et si il est static il peut pas changer si j'ai bien compris

    S'il est static, il n'y aura qu'une seule instance de celui-ci donc tu aurais juste à faire ClasseDeTonBlock.tonInt++ et il serais automatiquement incrémenté et près pour les autres blocs.



  • oui mais c'est pas ce que je voulais j'ai du mal m'expliquer