Bukkit 1.8.9 随机玩家选择插件 - 自动选取并执行命令
以下是一个适用于 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 并提示选中的两位玩家。在插件启动时,需要初始化玩家列表和选中的玩家变量。
需要注意的是,这个插件只是一个示例,可能存在一些安全问题和功能上的不足。具体使用时需要根据实际情况进行修改和完善。
原文地址: https://www.cveoy.top/t/topic/m7SM 著作权归作者所有。请勿转载和采集!