OnPlayerMove Enable and Disable

Discussion in 'Plugin Development' started by lbjdaking23, Aug 17, 2011.

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

    lbjdaking23

    How can I make if a player puts /grass then it will do and they can activate and deactivate
    Code:
    package grass.LBJDaKing23.replace;
    
    import org.bukkit.Material;
    import org.bukkit.block.Block;
    import org.bukkit.event.player.PlayerListener;
    import org.bukkit.event.player.PlayerMoveEvent;
    
    public class listener extends PlayerListener {
        public static replace plugin;
        listener(replace instance) {
            plugin = instance;
        }
     
        public void onPlayerMove(PlayerMoveEvent event) {
            Block block = event.getPlayer().getWorld().getBlockAt(event.getPlayer().getLocation().getBlockX(), event.getPlayer().getLocation().getBlockY() - 1, event.getPlayer().getLocation().getBlockZ());
            if ((block.getType() == Material.DIRT)){
                block.setType(Material.GRASS);
            }
        }
    }
     
  2. Offline

    bassfader

    Put in a boolean variable to enable / disable it, and set it from the command handler to either true or false. Or even better make a List containing all players that have enabled the command and make your method from the listener check if the person who moved is in that list.
     
  3. Offline

    K900

    Code:
            Block block = event.getPlayer().getWorld().getBlockAt(event.getPlayer().getLocation().getBlockX(), event.getPlayer().getLocation().getBlockY() - 1, event.getPlayer().getLocation().getBlockZ());
    
    Can be simplified to a getRelative call.
     
  4. Offline

    Shamebot

    I suggest a HashSet.
     
  5. Offline

    lbjdaking23

    I got it by watching a tutorial
    Code:
    package grass.LBJDaKing23.replace;
    import java.util.HashSet;
    import java.util.Set;
    import java.util.logging.Logger;
    
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.Event;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class replace extends JavaPlugin {
    Logger log = Logger.getLogger("Minecraft");
    private final listener playerListener = new listener(this);
    private Set<Player> grass = new HashSet<Player>();
    
        public void onDisable() {
            log.info("Dirt Replacement Enabled!");
        }
    
        public void onEnable() {
            log.info("Dirt Replacement Enabled!");
            PluginManager pm = getServer().getPluginManager();
    
            pm.registerEvent(Event.Type.PLAYER_MOVE, playerListener, Event.Priority.Highest, this);
        }
    
        @Override
        public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
            if(!(sender instanceof Player)){
                return false;
            }
            if(label.equalsIgnoreCase("grass")){
                if (sender instanceof Player){
                    Player player = (Player)sender;
                    setGrass(player, !hasGrass(player));
                } else {
                    sender.sendMessage(ChatColor.RED + "Who are you? You don't get grass!");
                }
    
            }
            return true;
        }
    
        public boolean hasGrass(Player player) {
           return grass.contains(player);
        }
    
        public void setGrass(Player player, boolean enabled) {
           if (enabled){
           grass.add(player);
           player.sendMessage(ChatColor.YELLOW + "[Dirt Replace] Dirt will now turn into grass!");
           } else {
           grass.remove(player);
           player.sendMessage(ChatColor.YELLOW + "[Dirt Replace] Dirt will stay normal!");
        }
        }
    }
    Code:
    package grass.LBJDaKing23.replace;
    import org.bukkit.Material;
    import org.bukkit.block.Block;
    import org.bukkit.block.BlockFace;
    import org.bukkit.entity.Player;
    import org.bukkit.event.player.PlayerEggThrowEvent;
    import org.bukkit.event.player.PlayerListener;
    import org.bukkit.event.player.PlayerMoveEvent;
    
    public class listener extends PlayerListener {
    
        public static replace plugin;
        listener(replace instance) {
            plugin = instance;
        }
    
        public void onPlayerMove(PlayerMoveEvent event) {
            Player player = event.getPlayer();
            if (!plugin.hasGrass(player)){
                return;
            }
              Block block = player.getLocation().getBlock().getRelative(BlockFace.DOWN);
              if ((block.getType() == Material.DIRT)){
                block.setType(Material.GRASS);
            }
        }
    }
     
Thread Status:
Not open for further replies.

Share This Page