Timer drop item



  • Bonsoir,

    je souhaiterai faire que mon item puisse se lancer seulement 3 secondes après l'avoir récupéré !

    pour celà, j'ai imaginé 2 solutions, une qui jette l'item 3 secondes après l'avoir demandé

    l'autre qui lance un timer quand on le récupère

    J'ai essayé la première solution mais sans succès !

    voici mon code si quelqu'un peut m'aider :

    package com.mod.ciolmod.items;
    
    import net.minecraft.entity.Entity;
    import net.minecraft.entity.item.EntityItem;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemStack;
    import net.minecraft.world.World;
    
    public class ItemBackpack extends Item {
    
    public int drop = 0;
    public int timer = 0;
    public int dodrop = 0;
    
    public boolean onDroppedByPlayer(ItemStack item, EntityPlayer player)
    {
    drop = 1;
    if(dodrop == 1)
    {
    return true;
    }
    
    if(dodrop == 0)
    {
    return false;
    }
    return bFull3D;
    
    }
    
    public void onUpdate(ItemStack stack, World world, Entity entity, int par4, int par5)
    {
    if(drop == 1)
    {
    timer++;
    if(timer <= 20)
    {
    drop = 0;
    timer = 0;
    dodrop = 1;
    }
    }
    }
    
    }
    
    

    Merci encore de votre réponse !



  • deja si tes variables son instancées dans la class de litem ca va affecté tout les itemstack de la game faut stocké le timer dans les nbt du stack a drop sinon ca va pas marché


  • Administrateurs

    @SpyMan Pas tout à fait.
    Ce serait le cas uniquement si les variables sont statiques, mais comme ce n'est pas le cas, ça ne concernera qu'une seule instance et pas toutes les instances.
    En revanche, il faut bien mettre stocké le timer dans les NBT, sinon il y aura un problème lors d'une déco/reco.



  • Ok merci beaucoup je ferme



  • Et comme les Items sont des classes Singleton tout comme les Blocks, les variables, statiques ou non, auraient en effet les mêmes valeurs pour chaque Itemstack de la map jouée par le joueur.


  • Administrateurs

    @Plaigon les items et les blocs ne sont pas des singletons, si c'était le cas, tu ne pourrais pas avoir de new TonItem() dans les classes de ton mod, tu ne pourrais l'avoir que dans la classe de l'item en question.


  • Administrateurs

    Si si ils le sont, de même que le rendu des entités.