Un four "entité" qui ne fonctionne pas



  • Bien le bonjoir !

    Je cherche à faire un piti mod sympa, et j'aimerais que mon entité puisse fonctionner comme le four, avec la cuisson des items, leurs sauvegardes etc…

    Le problème c'est que je me suis inspiré de la tile entity du four son container et son gui, et que les item une fois dans les slots dédiés ne cuisent pas et quand je quitte le gui ne se sauvegarde pas dedans.

    Je suis conscient que le problème viens des nbt, mais les nbt et moi ça fait deux...

    Je vous donne mes classes:

    Le code est pas parfait, mais il est suffisamment lisible 😉

    Merci de votre aide !


  • Administrateurs

    Pour les NBT je ne sais pas.
    Par contre pour la cuisson il faudrait peut-être appeler la fonction smeltItem dans onUpdate non ?


  • Rédacteurs

    Tu cherche à faire un four ?
    [1.7]http://www.minecraftforgefrance.fr/showthread.php?tid=2017
    [1.8]http://www.minecraftforgefrance.fr/showthread.php?tid=2716

    Non c'est pas de la pub ….

    Après si tu cherche pas à faire un four bah c'est que j'ai pas compris

    EDIT : tu m'as l'air d'être en 1.8 vu qu'il y a l'interface IBlockState



  • Bon j'ai repris le code de A à Z du de la tile entity du four, et c'est pareil, ça ne cuit pas, ni ne sauvegarde les items dans ce dernier:

    Le code:


  • Rédacteurs

    C'est quoi la classe EntityUtilitiesBlock ?

    (Genre niveau extends, implements)



  • extends EntityTameable (pour pouvoir faire en sorte que mon entité me suive dans le futur)

    quelques nbt pour sauvegarder le rendu 3D de mon entité "block" (via les json donc)

    et c'est tout 🙂

    Oui je donne pas mon code tout fait sait-on jamais car c'est stylé une entité avec un rendu json 😉


  • Rédacteurs

    Ok, je suis en train de voir comment faire pour résoudre ton problème

    EDIT : J'ai pas fini mais dans j'ai vu que dans la fonction d'update on utilise this.isBurning() qui n'as pas la même signification pour l'entité et le tileEntity du four


  • Rédacteurs

    Je sais pas ce que ça peut donner, dites-moi si il y a moyen que ça marche ou pas du tout (actuellement ça marche pas, je suis d'accord mais bon …) mais je voyait un truc comme ça :

    
    public class EntityMobFurnace extends EntityCreature {
    
    private TileEntityFurnace tile;
    
    public EntityMobFurnace(World world) {
    super(world);
    }
    
    @Override
    public boolean interact(EntityPlayer player)
    {
    if(tile == null)
    {
    tile = new TileEntityFurnace();
    this.worldObj.setTileEntity(new BlockPos(this.posX, this.posY, this.posZ), tile);
    }
    if(this.worldObj.isRemote)
    {
    player.displayGUIChest(tile);
    return true;
    }
    return true;
    }
    
    @Override
    public void onUpdate()
    {
    if(tile != null)
    {
    tile.setPos(new BlockPos(this.posX, this.posY, this.posZ));
    tile.update();
    }
    }
    
    @Override
    public void writeToNBT(NBTTagCompound compound)
    {
    super.writeToNBT(compound);
    if(tile != null)
    {
    NBTTagCompound furnace = new NBTTagCompound();
    tile.writeToNBT(furnace);
    compound.setTag("furnace", furnace);
    }
    }
    
    @Override
    public void readFromNBT(NBTTagCompound compound)
    {
    super.readFromNBT(compound);
    NBTTagCompound furnace = (NBTTagCompound)compound.getTag("furnace");
    tile.readFromNBT(furnace);
    }
    
    }
    
    

    Donc dites-moi se que vous en pensez



  • ça ne fonctionne pas


  • Rédacteurs

    Je sais, je l'ai dit mais je demandais ce que vous en pensiez, si ça pouvait marcher avec des modifications et si c'était juste impossible de faire de cette manière



  • Moi, pour mon four ambulant, j'ai fait comme dans ton premier code, mais j'ai mis des ItemStack a part (pas dans des Arrays), après cela plus besoin de plein de méthodes en plus. Comme l'a dis BrokenSwing, change le nom de la méthode isBurning, car ce nom est déjà utilisé pour savoir si l'entité brûle. Sinon, je pense que ton entité sera en feu quand tu l'utilise 😄
    Je n'utilise par contre ni container ni gui, j'ai fait directement un interact. En parlant d'interact, ce qui est peut-être ton seul problème, si tu veut un Gui, dans la méthode interact de ton entité, tu ouvres un gui 🙂



  • Tu aurais éventuellement un bout de classe à me montrer ?
    #JeSuisChiant



  • Problème résolu !

    Il manquait une implémentation