Drop d'item



  • Boujours,

    J'ai un petit problème, je fais un outil qui doit faire spawn un item au sol quand on clic-(droit) sur un block, ça fonctionne mais il y a deux items qui tombent dont un qui est irrécupérable. 😕

        public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer entity, int par6, float pX, float pY, float pZ)
    {
    ItemStack itemStack = entity.getCurrentEquippedItem();
    ItemStack drop = new ItemStack(Items.wheat, 1);
    if(itemStack != null)
    {
    Item item = itemStack.getItem();
    if(item == ItemsH.Faux)
    {
    if(world.getBlockMetadata(x, y, z) >= 1)
    {
    EntityItem entityitem = new EntityItem(world, x, y + 0, z, drop);
    world.setBlockToAir(x, y, z);
    world.spawnEntityInWorld(entityitem);
    }
    }
    }
    return true;
    }
    

    De plus mes items sont éjecté a 2 ou 3 blocs, j'aimerais bien savoir si l'on peu faire en sorte qu'ils soient plus près.

    Merci pour votre aide.
    Vebert

    edit : problème résolu 😛 plus vite que prévu

    public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer entity, int par6, float pX, float pY, float pZ)
    {
    if(!world.isRemote)
    {
    ItemStack itemStack = entity.getCurrentEquippedItem();
    ItemStack drop = new ItemStack(Items.wheat, 1);
    if(itemStack != null)
    {
    Item item = itemStack.getItem();
    if(item == ItemsH.Faux)
    {
    if(world.getBlockMetadata(x, y, z) >= 1)
    {
    EntityItem entityitem = new EntityItem(world, x, y + 0, z, drop);
    world.setBlockToAir(x, y, z);
    world.spawnEntityInWorld(entityitem);
    }
    }
    }
    }
    return true;
    }
    

    Il fallait rajouter le test !world.isRemote, mais je n'ais pas compris à quoi ça servait.


  • Moddeurs confirmés Rédacteurs Administrateurs

    Salut,
    EntityItem entityitem = new EntityItem(world, x + 0.5D, y + 0.5D, z + 0.5D, drop);
    Avec ça, ça devrait être centré au bloc.

    Pour les loots invisible, ajoute la condition !world.isRemote

    ÉDIT : trop lent.
    Explication :
    world.isRemote = celui qui gère le rendu
    !world.isRemote = world server, celui qui gère le reste


Log in to reply