以下是一个适用于 Bukkit 1.8.9 版本的插件代码,实现了上述功能:

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.plugin.java.JavaPlugin;

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

public class RandomPlayerSelectPlugin extends JavaPlugin implements Listener {
    private List<Player> players;
    private Player selectedPlayer1;
    private Player selectedPlayer2;

    @Override
    public void onEnable() {
        players = new ArrayList<>();
        selectedPlayer1 = null;
        selectedPlayer2 = null;
        Bukkit.getPluginManager().registerEvents(this, this);
    }

    @EventHandler
    public void onPlayerJoin(PlayerJoinEvent event) {
        Player player = event.getPlayer();
        if (!players.contains(player)) {
            players.add(player);
        }
        if (players.size() >= 2 && (selectedPlayer1 == null || selectedPlayer2 == null)) {
            // 随机选取两个玩家
            Random random = new Random();
            int index1 = random.nextInt(players.size());
            selectedPlayer1 = players.get(index1);
            int index2 = index1;
            while (index2 == index1) {
                index2 = random.nextInt(players.size());
            }
            selectedPlayer2 = players.get(index2);
            // 提示选中的两个玩家
            Bukkit.broadcastMessage(ChatColor.GREEN + "选出了两位幸运玩家:" + selectedPlayer1.getName() + " 和 " + selectedPlayer2.getName());
        }
    }

    @EventHandler
    public void onPlayerInteract(PlayerInteractEvent event) {
        Player player = event.getPlayer();
        if (player.isOp() && selectedPlayer1 != null && selectedPlayer2 != null) {
            // 如果当前已经选中了两个玩家,且玩家是op,则执行say HELLO WORLD
            if (player == selectedPlayer1 || player == selectedPlayer2) {
                player.sendMessage(ChatColor.RED + "你不能选取自己!");
            } else {
                Bukkit.broadcastMessage(ChatColor.YELLOW + player.getName() + " 选中了两位玩家:" + selectedPlayer1.getName() + " 和 " + selectedPlayer2.getName());
                Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "say HELLO WORLD");
            }
        }
    }
}

插件的主要逻辑在 onPlayerJoin 和 onPlayerInteract 方法中。onPlayerJoin 方法在有新玩家加入服务器时触发,会从当前在线玩家中随机选取两个玩家作为幸运玩家,并提示选中的玩家。onPlayerInteract 方法在玩家右键选取其他玩家时触发,如果选中的两个玩家已经被确定,且当前玩家是op,则执行 say HELLO WORLD 并提示选中的两位玩家。在插件启动时,需要初始化玩家列表和选中的玩家变量。

需要注意的是,这个插件只是一个示例,可能存在一些安全问题和功能上的不足。具体使用时需要根据实际情况进行修改和完善。

Bukkit 1.8.9 随机玩家选择插件 -  自动选取并执行命令

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

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