Solved Spam with PlayerMoveEvent

Discussion in 'Plugin Development' started by To175, Jul 15, 2015.

Thread Status:
Not open for further replies.
  1. Offline

    To175

    Hi, help me please :)
    I'm checking distance between 2 points. If player is at 10, 20, 30 etc... their is a message.
    Problem : message is spamed 4 times when I walk on the block. :(

    Code:
    @EventHandler
        public void onPlayerMove(PlayerMoveEvent event) {
    //.......
            if (event.getFrom().getX() != event.getTo().getX() || event.getFrom().getY() != event.getTo().getY() || event.getFrom().getZ() != event.getTo().getZ()) {
                location2 = new Location(world, Integer.decode(HeartX), 67, Integer.decode(HeartZ));
                int distancei = (int) Math.round(location1.distance(location2));
                if(distancei%10==0){
                    event.getPlayer().sendMessage(ChatColor.GRAY + " distance : "+distancei);
                }
            }
        }
     
    Last edited: Jul 15, 2015
  2. You should check if they've moved blocks, not if they've moved X/Y/Z by even a tiny fraction.

    The way to do this is similar to yours, but just casting all the getX() and getY() and getZ() variables to ints:
    Code:
    if ((int) event.getFrom().getX() != (int) event.getTo().getX() || (int) event.getFrom().getY() != (int) event.getTo().getY() || (int) event.getFrom().getZ() != (int) event.getTo().getZ()) {
    
    Tip: Don't create a new instance of 'location2' each time if it's global.
     
  3. Offline

    To175

    Thanks awesome !
    location2 is variable.
     
Thread Status:
Not open for further replies.

Share This Page