写一个适用于bukkit189的插件。功能是当有新的玩家加入服务器重新随机选取2人。当其他人右键其中一位选取的两人后始终保持选取的两人不变并且右键选取的那个人以op的方式执行say HELLO WORLD
首先,需要创建一个Java类,命名为PlayerSelectorPlugin,然后在这个类中添加以下代码:
package com.example.playerselector;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
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.event.player.PlayerQuitEvent;
import org.bukkit.plugin.java.JavaPlugin;
public class PlayerSelectorPlugin extends JavaPlugin implements Listener {
private List<String> selectedPlayers = new ArrayList<String>();
private Random random = new Random();
@Override
public void onEnable() {
// 注册事件监听器
Bukkit.getPluginManager().registerEvents(this, this);
}
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
// 当有玩家加入服务器时,重新随机选取2个玩家
selectedPlayers.clear();
List<Player> players = new ArrayList<Player>(Bukkit.getOnlinePlayers());
for (int i = 0; i < 2; i++) {
int index = random.nextInt(players.size());
selectedPlayers.add(players.get(index).getName());
players.remove(index);
}
}
@EventHandler
public void onPlayerInteract(PlayerInteractEvent event) {
// 当有玩家右键另一个玩家时,判断是否是选中的玩家,并执行相应操作
Player clickedPlayer = event.getClickedBlock().getLocation().getWorld().getPlayer(event.getPlayer().getUniqueId());
if (clickedPlayer == null) {
return;
}
if (selectedPlayers.contains(clickedPlayer.getName())) {
Player selectedPlayer = null;
for (String playerName : selectedPlayers) {
if (!playerName.equals(clickedPlayer.getName())) {
selectedPlayer = Bukkit.getPlayerExact(playerName);
break;
}
}
if (selectedPlayer == null) {
return;
}
selectedPlayer.performCommand("say HELLO WORLD");
event.getPlayer().sendMessage(ChatColor.GREEN + "你选择了" + selectedPlayer.getName() + "和" + clickedPlayer.getName());
}
}
@EventHandler
public void onPlayerQuit(PlayerQuitEvent event) {
// 当有玩家退出服务器时,重新随机选取2个玩家
selectedPlayers.clear();
List<Player> players = new ArrayList<Player>(Bukkit.getOnlinePlayers());
for (int i = 0; i < 2; i++) {
int index = random.nextInt(players.size());
selectedPlayers.add(players.get(index).getName());
players.remove(index);
}
}
}
接下来,在plugin.yml文件中添加以下内容:
name: PlayerSelectorPlugin
version: 1.0
main: com.example.playerselector.PlayerSelectorPlugin
最后,将这个Java类和plugin.yml文件打包成一个jar文件,并将其放入服务器的plugins文件夹中。重新启动服务器,插件就会生效了。
当有新的玩家加入服务器时,插件会重新随机选取2个玩家。其他玩家右键其中一个选取的玩家时,插件会判断是否是选中的玩家,并执行相应操作。同时,当有玩家退出服务器时,插件也会重新随机选取2个玩家。
原文地址: http://www.cveoy.top/t/topic/bDiA 著作权归作者所有。请勿转载和采集!