以下是一个适用于bukkit1.8.9的插件功能的代码示例:

import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class RandomPlayerPlugin extends JavaPlugin implements CommandExecutor {
    private List<Player> selectedPlayers = new ArrayList<>();
    private Random random = new Random();

    @Override
    public void onEnable() {
        getCommand("random").setExecutor(this);
        getServer().getPluginManager().registerEvents(new PlayerInteractListener(), this);
    }

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (cmd.getName().equalsIgnoreCase("random")) {
            selectedPlayers.clear();
            Player[] players = Bukkit.getOnlinePlayers().toArray(new Player[0]);
            if (players.length < 2) {
                sender.sendMessage("At least 2 players are required");
                return true;
            }
            selectedPlayers.add(players[random.nextInt(players.length)]);
            selectedPlayers.add(players[random.nextInt(players.length)]);
            sender.sendMessage(String.format("Selected players: %s and %s", selectedPlayers.get(0).getName(), selectedPlayers.get(1).getName()));
            return true;
        }
        return false;
    }

    private class PlayerInteractListener implements org.bukkit.event.Listener {
        @org.bukkit.event.EventHandler
        public void onPlayerInteract(org.bukkit.event.player.PlayerInteractEvent event) {
            if (event.getAction() == org.bukkit.event.block.Action.RIGHT_CLICK_BLOCK) {
                if (event.getClickedBlock().getType() == org.bukkit.Material.STONE_BUTTON) {
                    Player player = event.getPlayer();
                    if (selectedPlayers.contains(player)) {
                        event.setCancelled(true);
                        for (Player selectedPlayer : selectedPlayers) {
                            selectedPlayer.sendMessage("HELLO WORLD");
                        }
                    }
                }
            }
        }
    }
}

插件的功能如下:

  1. 玩家使用/random指令可以从服务器中随机选取2名玩家;
  2. 选取的两名玩家会被存储在selectedPlayers列表中;
  3. 当其他玩家右键点击石质按钮时,如果他是选取的两名玩家之一,那么就会以OP的方式向选取的两名玩家发送HELLO WORLD的消息。

需要注意的是,在插件中使用了PlayerInteractEvent事件来监听玩家的交互事件。当玩家右键点击石质按钮时,会触发这个事件,然后判断该玩家是否为选取的两名玩家之一,如果是,则向选取的两名玩家发送消息。同时,需要注意取消事件的默认行为,否则玩家会打开按钮并触发红石信号。

写一个适用于bukkit189的插件功能是使用random指令从服务器中随机选取2人。当其他人右键选取的两人后始终保持选取的两人不变并且以op的方式执行say HELLO WORLD

原文地址: http://www.cveoy.top/t/topic/bDqH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录