寒雨_Moro
本帖最后由 寒雨_Moro 于 2020-4-17 09:49 编辑

[code] package cc.Moro.BridgeTestPlugin;

import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.event.Listener;
import java.io.File;


public final class BridgeTestPlugin extends JavaPlugin implements Listener {


    @Override
    public void onLoad() {
        getLogger().info("onLoad has been invoked!");
    }

    @Override
    public void onEnable() {
        if(!getDataFolder().exists()) {
            getDataFolder().mkdir();
        }
        File file=new File(getDataFolder(),"config.yml");
        if (!(file.exists())) {saveDefaultConfig();}
        reloadConfig();
        getLogger().info("BridgeTestPlugin 已启用!");
        Bukkit.getPluginManager().registerEvents(this, this);
        Bukkit.getPluginCommand("BridgeTestCommand").setExecutor(this);
        FileConfiguration config = getConfig();
        getLogger().info("name: " + config.getString("name"));
        getLogger().info("displayName: " + config.getString("displayName"));
        getLogger().info("age: " + config.getInt("age"));
        getLogger().info("health: " + config.getDouble("health"));
        getLogger().info("Introduction: " + config.getString("Introduction"));
        getLogger().info("开始写入数据...");
        config.set("qq", 1335014319);
        config.set("email", "[email protected]");
        saveConfig();
    }

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        FileConfiguration config = getConfig();
        if (command.getName().equalsIgnoreCase("BridgeTestCommand")) {
            if (!(sender instanceof Player)) {
                sender.sendMessage("§7§l[§f§lBridgeTestPlugin§7§l] §c你必须是一名玩家!");
                sender.sendMessage("§7§l[§f§lBridgeTestPlugin§7§l] §7插件作者: " + config.getString("name"));
                return true;
            }
            Player player = (Player) sender;
            player.sendMessage("§7§l[§f§lBridgeTestPlugin§7§l] §7你成功的执行了指令/BridgeTestCommand");
            player.sendMessage("§7§l[§f§lBridgeTestPlugin§7§l] §7插件作者: §3" + config.getString("name"));
        }
        if (command.getName().equalsIgnoreCase("inform")) {
            if (!(sender instanceof Player)) {
                sender.sendMessage("§7§l[§f§lBridgeTestPlugin§7§l] §c你怎么可以在后台举报呢?ban就完事了啊!");
                return true;
            }
            Player player = (Player) sender;
            Player p = (Player) getServer().getOnlinePlayers();
            if (args.length != 1) {
                player.sendMessage("§7§l[§f§lBridgeTestPlugin§7§l] §c指令用法/inform 内容");
                return true;
            }
            else{
                String str = args[0];
                getLogger().info("§7§l[§f§lBridgeTestPlugin§7§l] §c来自§f " + player.getName() + " §c的举报:§r " + str.replaceAll("&", "§"));
                sender.sendMessage("§7§l[§f§lBridgeTestPlugin§7§l] §7举报已经发送");
                if (p.isOp()){
                    p.sendMessage("§7§l[§f§lBridgeTestPlugin§7§l] §c来自§f " + player.getName() + " §c的举报:§r " + str.replaceAll("&", "§"));
                }
                return true;
                }
            }
        return false;
        }

    @Override
    public void onDisable() {
        getLogger().info("BridgeTestPlugin 已卸载!");
    }
} [/code]刚开始学插件,想写个玩家输入/inform 内容 发送给在线op举报信息的插件,但是上面的内容编译出来的插件一输入/inform 内容 就会报错,请问上面的代码有什么问题吗,烦请各位大佬指点明津

2021.12 数据,可能有更多内容[code] package cc.Moro.BridgeTestPlugin;

import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.event.Listener;
import java.io.File;


public final class BridgeTestPlugin extends JavaPlugin implements Listener {


    @Override
    public void onLoad() {
  getLogger().info("onLoad has been invoked!");
    }


    @Override
    public void onEnable() {
  if(!getDataFolder().exists()) {
   getDataFolder().mkdir();
  }
  File file=new File(getDataFolder(),"config.yml");
  if (!(file.exists())) {saveDefaultConfig();}
  reloadConfig();
  getLogger().info("BridgeTestPlugin 已启用!");
  Bukkit.getPluginManager().registerEvents(this, this);
  Bukkit.getPluginCommand("BridgeTestCommand").setExecutor(this);
  FileConfiguration config = getConfig();
  getLogger().info("name: " + config.getString("name"));
  getLogger().info("displayName: " + config.getString("displayName"));
  getLogger().info("age: " + config.getInt("age"));
  getLogger().info("health: " + config.getDouble("health"));
  getLogger().info("Introduction: " + config.getString("Introduction"));
  getLogger().info("开始写入数据...");
  config.set("qq", 1335014319);
  config.set("email", "[email protected]");
  saveConfig();
    }


    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  FileConfiguration config = getConfig();
  if (command.getName().equalsIgnoreCase("BridgeTestCommand")) {
   if (!(sender instanceof Player)) {
    sender.sendMessage("§7§l[§f§lBridgeTestPlugin§7§l] §c你必须是一名玩家!");
    sender.sendMessage("§7§l[§f§lBridgeTestPlugin§7§l] §7插件作者: " + config.getString("name"));
    return true;
   }
   Player player = (Player) sender;
   player.sendMessage("§7§l[§f§lBridgeTestPlugin§7§l] §7你成功的执行了指令/BridgeTestCommand");
   player.sendMessage("§7§l[§f§lBridgeTestPlugin§7§l] §7插件作者: §3" + config.getString("name"));
  }
  if (command.getName().equalsIgnoreCase("inform")) {
   if (!(sender instanceof Player)) {
    sender.sendMessage("§7§l[§f§lBridgeTestPlugin§7§l] §c你怎么可以在后台举报呢?ban就完事了啊!");
    return true;
   }
   Player player = (Player) sender;
   Player p = (Player) getServer().getOnlinePlayers();
   if (args.length != 1) {
    player.sendMessage("§7§l[§f§lBridgeTestPlugin§7§l] §c指令用法/inform 内容");
    return true;
   }
   else{
    String str = args[0];
    getLogger().info("§7§l[§f§lBridgeTestPlugin§7§l] §c来自§f " + player.getName() + " §c的举报:§r " + str.replaceAll("&", "§"));
    sender.sendMessage("§7§l[§f§lBridgeTestPlugin§7§l] §7举报已经发送");
    if (p.isOp()){
  p.sendMessage("§7§l[§f§lBridgeTestPlugin§7§l] §c来自§f " + player.getName() + " §c的举报:§r " + str.replaceAll("&", "§"));
    }
    return true;
    }
   }
  return false;
  }


    @Override
    public void onDisable() {
  getLogger().info("BridgeTestPlugin 已卸载!");
    }
} [/code]刚开始学插件,想写个玩家输入/inform 内容 发送给在线op举报信息的插件,但是上面的内容编译出来的插件一输入/inform 内容 就会报错,请问上面的代码有什么问题吗,烦请各位大佬指点明津

java30433
getOnlinePlayers获取的不是玩家,是一个玩家的List...
你应该循环遍历获取到所有的op发送信息


William_Shi

        if (!(file.exists())) {saveDefaultConfig();}

我记得saveDefaultConfig方法好像是自带了判断config.yml是否存在的吧

其次就是getOnlinePlayers返回的是java.util.Collection<? extends Player>
这玩意并不能说是一个list
但是lz的用法肯定是错的,因为这是一个集合

然后
java.util.Set<OfflinePlayer>        getOperators()
获取服务器的所有OP(管理员).

这才是获取管理员
但是管理员不一定在线,你要手动判断是不是在线

第一页 上一页 下一页 最后一页