Event Drops EntityItem



  • Bonjour alors voila je cherche a faire en sorte que quand le joueur drop un item (une golden apple normal) et bien que il se produise quelque chose, mais le problème c'est que je voudrais que cela fonctionne qu'avec la golden apple normal et non l'autre, et c'est là que je n'y arrive pas.
    Le code s'execute mais la condition qui check l'entityItem ne prend pas en compte la metedata.

    @SubscribeEvent
    public void onItemDrop(ItemTossEvent event)
    {
       World world = event.getEntityItem().getEntityWorld();
       ItemStack itemGoldApple = new ItemStack(Items.GOLDEN_APPLE, 1, 0);
       ItemStack itemStack = event.getEntityItem().getEntityItem();
       int entityItemPosX = event.getEntityItem().getPosition().getX();
       int entityItemPosY = event.getEntityItem().getPosition().getY();
       int entityItemPosZ = event.getEntityItem().getPosition().getZ();
       BlockPos goldBlockPos = new BlockPos(entityItemPosX, entityItemPosY - 2, entityItemPosZ);
    
       if (itemStack == itemGoldApple)
       {
           if (world.getBlockState(goldBlockPos).getBlock() == Blocks.GOLD_BLOCK)
           {
                // ici il va ce passer quelque chose 
           }
       }
    }
    

  • Rédacteurs

    if(itemStack.getItem() == Items.GOLDEN_APPLE && itemStack.getMetadata() == 0)
    


  • Je suis vraiment pas doué, j'ai tout essayé sauf ça 😕
    Et aussi un autre truc, quand je fait spawn un éclair j'entend le bruit mais je le vois pas 😕
    voici l'instruction

    world.spawnEntityInWorld(new EntityLightningBolt(world, entityItemPosX, entityItemPosY, entityItemPosZ, true));
    


  • @'SpyMan':

    Je suis vraiment pas doué, j'ai tout essayé sauf ça 😕
    Et aussi un autre truc, quand je fait spawn un éclair j'entend le bruit mais je le vois pas 😕
    voici l'instruction

    world.spawnEntityInWorld(new EntityLightningBolt(world, entityItemPosX, entityItemPosY, entityItemPosZ, true));
    

    il me semble que il faut un !world.isremote .



  • Non, si tu met un !world.isRemote il ne se pas plus rien, parce que l’éclair est coté client et server



  • Essaie de le faire spawn uniquement côté client



  • Non plus…
    Le truc c'est que je comprend pas vraiment pourquoi ça fait ça



  • Okay j'ai fait une recherche et j'ai trouvé.
    Le spawn doit tout comme les autres entités se faire uniquement côté serveur. En revanche les éclairs ne doivent pas être spawn à l'aide de World#spawnEntityInWorld, mais plutôt World#addWeatherEffect 😃



  • Merci ça fonctionne mieux, en revanche je comprend pas pourquoi  quand je fais ça :

           int entityItemPosX = event.getEntityItem().getPosition().getX();
           int entityItemPosY = event.getEntityItem().getPosition().getY();
           int entityItemPosZ = event.getEntityItem().getPosition().getZ();
    

    cela me retourne la position du joueur de non de mon EntityItem


  • Administrateurs

    Car il renvoie les coordonnées de l'item au moment où il est lancé et au moment où il est lancé par le joueur l'item se trouve aux mêmes coordonnées que le joueur.



  • Ok merci, je comprenais pas pourquoi c'était comme cela


Log in to reply