Bukkit 1.8.9 随机玩家选择插件 - 随机选取两位玩家并发送消息
以下是一个适用于 Bukkit 1.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');
}
}
}
}
}
}
}
插件的功能如下:
- 玩家使用
/random指令可以从服务器中随机选取2名玩家; - 选取的两名玩家会被存储在
selectedPlayers列表中; - 当其他玩家右键点击石质按钮时,如果他是选取的两名玩家之一,那么就会以
OP的方式向选取的两名玩家发送HELLO WORLD的消息。
需要注意的是,在插件中使用了PlayerInteractEvent事件来监听玩家的交互事件。当玩家右键点击石质按钮时,会触发这个事件,然后判断该玩家是否为选取的两名玩家之一,如果是,则向选取的两名玩家发送消息。同时,需要注意取消事件的默认行为,否则玩家会打开按钮并触发红石信号。
原文地址: https://www.cveoy.top/t/topic/m7SW 著作权归作者所有。请勿转载和采集!