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