本帖最后由 寒雨_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 内容 就会报错,请问上面的代码有什么问题吗,烦请各位大佬指点明津
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 内容 就会报错,请问上面的代码有什么问题吗,烦请各位大佬指点明津
[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 内容 就会报错,请问上面的代码有什么问题吗,烦请各位大佬指点明津
getOnlinePlayers获取的不是玩家,是一个玩家的List...
你应该循环遍历获取到所有的op发送信息
你应该循环遍历获取到所有的op发送信息
if (!(file.exists())) {saveDefaultConfig();}
我记得saveDefaultConfig方法好像是自带了判断config.yml是否存在的吧
其次就是getOnlinePlayers返回的是java.util.Collection<? extends Player>
这玩意并不能说是一个list
但是lz的用法肯定是错的,因为这是一个集合
然后
java.util.Set<OfflinePlayer> getOperators()
获取服务器的所有OP(管理员).
这才是获取管理员
但是管理员不一定在线,你要手动判断是不是在线