Minecraft Spigot 插件:限制特定玩家执行游戏模式命令
你可以使用以下代码来实现你的需求:
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/qqOo 著作权归作者所有。请勿转载和采集!