Trop de blocs posés



  • Bonjour,

    J'ai créé un effet custom afin de poser des blocs de glace sous mes pieds :

    public void onTickPlayer(TickEvent.PlayerTickEvent event)
        {
                    event.player.worldObj.setBlock((int)event.player.posX+1, (int)event.player.posY-2, (int)event.player.posZ+1, Blocks.ice);
                    event.player.worldObj.setBlock((int)event.player.posX+1, (int)event.player.posY-2, (int)event.player.posZ, Blocks.ice);
                    event.player.worldObj.setBlock((int)event.player.posX, (int)event.player.posY-2, (int)event.player.posZ+1, Blocks.ice);
                    event.player.worldObj.setBlock((int)event.player.posX, (int)event.player.posY-2, (int)event.player.posZ, Blocks.ice);
        }
    

    Cependant, il me pose trop de blocs :

    Pouvez-vous m'aider ?

    Merci d'avance,
    LP



  • Il faut rajouter un compteur, une opération par modulo de World#getTotalWorldTime pourrait marcher.



  • J'ai pas trop compris ce que tu veux dire… Pourrais-tu me dis comment et pourquoi faire cela ?


  • Administrateurs

    if(event.player.worldObj.getTotalWorldTime() % 20 == 0)
    {
    // action
    C'est pour éviter de faire l'action à chaque tick.

    Je trouve ça étrange qu'il pose 3 couches en dessous du joueur, vu ton code il devrait que en avoir une.



  • Ouais 😕 Je vais voir si ton code marche robin

    EDIT : 
    Ca ne correspond pas a ce que je veux, maintenant il fait apparaître les trois couches tous les x ticks mais du coup si je me déplace, je risque de tomber de la plateforme créer. J'ai modifié "un peu" ma fonction :

    @SubscribeEvent
        public void onTickPlayer(TickEvent.PlayerTickEvent event)
        {
            if(event.player.isPotionActive(DeamonEffect.customEffectID))
            {
                if(event.player.inventory.getStackInSlot(8) == null)
                {
                    event.player.inventory.setInventorySlotContents(8, new ItemStack(Items.snowball,64));
                }
                else if(event.player.inventory.getStackInSlot(8).getItem() == Items.snowball)
                {
                    event.player.inventory.setInventorySlotContents(8, new ItemStack(Items.snowball,64));
                }
                else
                {
                    event.player.addChatMessage(new ChatComponentText("Merci de vider le 40ème slot qui est :"));
                    event.player.addChatMessage(new ChatComponentText(event.player.inventory.getStackInSlot(40).getItem().getUnlocalizedName()));
                }
    
                if(event.player.isSneaking())
                {
                    if(event.player.worldObj.getTotalWorldTime() % 20 == 0)
                    {
                        if(event.player.worldObj.getBlock((int)event.player.posX+1, (int)event.player.posY-2, (int)event.player.posZ+1)==Blocks.ice)
                        {
                            event.player.worldObj.setBlock((int)event.player.posX+1, (int)event.player.posY-2, (int)event.player.posZ+1, Blocks.air);
                            event.player.worldObj.setBlock((int)event.player.posX+1, (int)event.player.posY-3, (int)event.player.posZ+1, Blocks.ice);
                        }
                        if(event.player.worldObj.getBlock((int)event.player.posX+1, (int)event.player.posY-2, (int)event.player.posZ)==Blocks.ice)
                        {
                            event.player.worldObj.setBlock((int)event.player.posX+1, (int)event.player.posY-2, (int)event.player.posZ, Blocks.air);
                            event.player.worldObj.setBlock((int)event.player.posX+1, (int)event.player.posY-3, (int)event.player.posZ, Blocks.ice);
                        }
                        if(event.player.worldObj.getBlock((int)event.player.posX, (int)event.player.posY-2, (int)event.player.posZ+1)==Blocks.ice)
                        {
                            event.player.worldObj.setBlock((int)event.player.posX, (int)event.player.posY-2, (int)event.player.posZ+1, Blocks.air);
                            event.player.worldObj.setBlock((int)event.player.posX, (int)event.player.posY-3, (int)event.player.posZ+1, Blocks.ice);
                        }
                        if(event.player.worldObj.getBlock((int)event.player.posX, (int)event.player.posY-2, (int)event.player.posZ)==Blocks.ice)
                        {
                            event.player.worldObj.setBlock((int)event.player.posX, (int)event.player.posY-2, (int)event.player.posZ, Blocks.air);
                            event.player.worldObj.setBlock((int)event.player.posX, (int)event.player.posY-3, (int)event.player.posZ, Blocks.ice);
                        }
                    }
                }
                else
                {
                    if(event.player.worldObj.getTotalWorldTime() % 20 == 0)
                    {
                        event.player.worldObj.setBlock((int)event.player.posX+1, (int)event.player.posY-2, (int)event.player.posZ+1, Blocks.ice);
                        event.player.worldObj.setBlock((int)event.player.posX+1, (int)event.player.posY-2, (int)event.player.posZ, Blocks.ice);
                        event.player.worldObj.setBlock((int)event.player.posX, (int)event.player.posY-2, (int)event.player.posZ+1, Blocks.ice);
                        event.player.worldObj.setBlock((int)event.player.posX, (int)event.player.posY-2, (int)event.player.posZ, Blocks.ice);
                    }
                }
            }
        }