写一个适用于bukkit189的插件。功能是当有玩家加入服务器随机选取2人。当其他人右键其中一位选取的两人后始终保持选取的两人不变并且右键选取的那个人以op的方式执行say HELLO WORLD
以下是一个适用于bukkit1.8.9的Java代码示例:
package com.example.randompicker;
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.PlayerInteractEntityEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;
public class RandomPickerPlugin extends JavaPlugin implements Listener {
private List<Player> players;
private Player player1;
private Player player2;
@Override
public void onEnable() {
players = new ArrayList<Player>();
Bukkit.getPluginManager().registerEvents(this, this);
}
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
players.add(player);
if (players.size() == 2) {
pickRandomPlayers();
}
}
@EventHandler
public void onPlayerInteractEntity(PlayerInteractEntityEvent event) {
if (event.getRightClicked() instanceof Player) {
Player clickedPlayer = (Player) event.getRightClicked();
if (clickedPlayer.equals(player1) || clickedPlayer.equals(player2)) {
event.setCancelled(true);
clickedPlayer.setOp(true);
clickedPlayer.sendMessage(ChatColor.GREEN + "HELLO WORLD");
}
}
}
private void pickRandomPlayers() {
Random random = new Random();
player1 = players.get(random.nextInt(players.size()));
players.remove(player1);
player2 = players.get(random.nextInt(players.size()));
players.remove(player2);
Bukkit.broadcastMessage(ChatColor.YELLOW + "The random players are " + player1.getName() + " and " + player2.getName());
}
}
解释一下以上代码的实现:
- 插件启用时注册事件监听器。
- 当有玩家加入服务器时,将该玩家添加到玩家列表中,并检查玩家数量是否已达到2人。如果是,则选取2个随机玩家,并在服务器广播消息告知这两个玩家的名字。
- 当玩家右键点击另一个玩家时,检查该被右键点击的玩家是否为选取的两个随机玩家之一。如果是,则取消事件,将该被右键点击的玩家设为OP,并向该被右键点击的玩家发送“HELLO WORLD”的消息。
原文地址: http://www.cveoy.top/t/topic/bDir 著作权归作者所有。请勿转载和采集!