Minecraft Spigot插件代码 如何让玩家执行gamemode时判断执行的对象是否是列表a内的某个人如果是驳回请求如果不是执行请求实体选择器的name=也要检测execute指令也要检测是否run了gamemode来达到执行对象是列表a内某个人的效果
你可以使用以下代码来实现你的需求:
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 java.util.ArrayList;
import java.util.List;
public class GamemodeCommand implements CommandExecutor {
private List<String> playerList; // 存储玩家名字的列表
public GamemodeCommand() {
playerList = new ArrayList<>();
playerList.add("Player1");
playerList.add("Player2");
// 添加更多玩家名字到列表
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (cmd.getName().equalsIgnoreCase("gamemode")) {
if (!(sender instanceof Player)) {
sender.sendMessage("该命令只能由玩家执行!");
return true;
}
Player player = (Player) sender;
// 检查玩家是否在列表中
if (!playerList.contains(player.getName())) {
// 执行请求
// 这里可以根据需要来执行你的gamemode代码,例如:
player.setGameMode(GameMode.CREATIVE);
sender.sendMessage("已切换到创造模式!");
} else {
// 驳回请求
sender.sendMessage("你不能执行该命令!");
}
}
return true;
}
}
这个代码是一个自定义的命令执行器,用于处理/gamemode命令。在该代码中,你需要将玩家名字添加到playerList列表中。
然后,你可以在插件的主类中注册这个命令执行器:
import org.bukkit.plugin.java.JavaPlugin;
public class YourPlugin extends JavaPlugin {
@Override
public void onEnable() {
// 注册gamemode命令
getCommand("gamemode").setExecutor(new GamemodeCommand());
}
}
这样,当玩家执行/gamemode命令时,将会根据玩家是否在playerList列表中来决定是否执行请求。如果玩家在列表中,将会驳回请求;否则,将会执行gamemode切换代码
原文地址: https://www.cveoy.top/t/topic/iKzo 著作权归作者所有。请勿转载和采集!