- Баллы
- 173
- Имя в Minecraft
- _Dereku
YMLConfiguration user;
user.saveConfig();
Хотя даже специально пересмотрел реализацию конфигов. Нету там таких методов.
Прекращайте давать вредные советы.
Последнее редактирование:
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
YMLConfiguration user;
user.saveConfig();
java.lang.NullPointerException
at ru.EnderBro3D.AntiAcc.MainClass.onDisable(MainClass.java:64) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:294) ~[spigot-1.9-R0.1-SNAPSHOT.jar:git-Spigot-2038f4a-15222c8]
at org.bukkit.plugin.java.JavaPluginLoader.disablePlugin(JavaPluginLoader.java:364) [spigot-1.9-R0.1-SNAPSHOT.jar:git-Spigot-2038f4a-15222c8]
at org.bukkit.plugin.SimplePluginManager.disablePlugin(SimplePluginManager.java:424) [spigot-1.9-R0.1-SNAPSHOT.jar:git-Spigot-2038f4a-15222c8]
at org.bukkit.plugin.SimplePluginManager.disablePlugins(SimplePluginManager.java:417) [spigot-1.9-R0.1-SNAPSHOT.jar:git-Spigot-2038f4a-15222c8]
at org.bukkit.plugin.SimplePluginManager.clearPlugins(SimplePluginManager.java:458) [spigot-1.9-R0.1-SNAPSHOT.jar:git-Spigot-2038f4a-15222c8]
at org.bukkit.craftbukkit.v1_9_R1.CraftServer.reload(CraftServer.java:712) [spigot-1.9-R0.1-SNAPSHOT.jar:git-Spigot-2038f4a-15222c8]
at org.bukkit.Bukkit.reload(Bukkit.java:539) [spigot-1.9-R0.1-SNAPSHOT.jar:git-Spigot-2038f4a-15222c8]
at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:25) [spigot-1.9-R0.1-SNAPSHOT.jar:git-Spigot-2038f4a-15222c8]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [spigot-1.9-R0.1-SNAPSHOT.jar:git-Spigot-2038f4a-15222c8]
at org.bukkit.craftbukkit.v1_9_R1.CraftServer.dispatchCommand(CraftServer.java:645) [spigot-1.9-R0.1-SNAPSHOT.jar:git-Spigot-2038f4a-15222c8]
at org.bukkit.craftbukkit.v1_9_R1.CraftServer.dispatchServerCommand(CraftServer.java:631) [spigot-1.9-R0.1-SNAPSHOT.jar:git-Spigot-2038f4a-15222c8]
at net.minecraft.server.v1_9_R1.DedicatedServer.aL(DedicatedServer.java:438) [spigot-1.9-R0.1-SNAPSHOT.jar:git-Spigot-2038f4a-15222c8]
at net.minecraft.server.v1_9_R1.DedicatedServer.D(DedicatedServer.java:401) [spigot-1.9-R0.1-SNAPSHOT.jar:git-Spigot-2038f4a-15222c8]
at net.minecraft.server.v1_9_R1.MinecraftServer.C(MinecraftServer.java:660) [spigot-1.9-R0.1-SNAPSHOT.jar:git-Spigot-2038f4a-15222c8]
at net.minecraft.server.v1_9_R1.MinecraftServer.run(MinecraftServer.java:559) [spigot-1.9-R0.1-SNAPSHOT.jar:git-Spigot-2038f4a-15222c8]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_101]
users.save("users.yml");
public static YamlConfiguration getConfig(JavaPlugin plugin, String configName) {
File file = new File(plugin.getDataFolder(), configName);
if (file.isDirectory()) {
file.delete();
}
if (!file.exists()) {
/* try {
file.getParentFile().mkdirs();
file.createNewFile();
} catch (IOException ex) {
plugin.getLogger().log(Level.WARNING, "Ошибка при создании файла " + configName, ex);
} */
try (InputStream i = plugin.getClass().getClassLoader().getResourceAsStream(configName)) {
FileUtils.copyInputStreamToFile(i, file);
} catch (IOException e) {
plugin.getLogger().log(Level.WARNING, "Ошибка при создании файла " + configName);
}
return new YamlConfiguration();
}
return YamlConfiguration.loadConfiguration(file);
}
public static YamlConfiguration getConfig(JavaPlugin plugin, String configName) {
File file = new File(plugin.getDataFolder(), configName);
if (file.isDirectory()) {
file.delete();
}
if (!file.exists()) {
try {
file.getParentFile().mkdirs();
file.createNewFile();
} catch (IOException ex) {
plugin.getLogger().log(Level.WARNING, "Ошибка при создании файла " + configName, ex);
}
/* try (InputStream i = plugin.getClass().getClassLoader().getResourceAsStream(configName)) {
FileUtils.copyInputStreamToFile(i, file);
} catch (IOException e) {
plugin.getLogger().log(Level.WARNING, "Ошибка при создании файла " + configName);
} */
return new YamlConfiguration();
}
return YamlConfiguration.loadConfiguration(file);
}
По подробнее. Я чайник. Я умею только издавать звуки. ТЮХ ТЮХusers == null
Без кода я могу только залить в тебя воду и поставить кипятиться.По подробнее. Я чайник. Я умею только издавать звуки. ТЮХ ТЮХ
package ru.EnderBro3D.AntiAcc;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Level;
import org.apache.commons.io.FileUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;
public class MainClass extends JavaPlugin implements Listener {
//Configuration
private YamlConfiguration users;
private YamlConfiguration config;
private YamlConfiguration messages;
public static YamlConfiguration getConfig(JavaPlugin plugin, String configName) {
File file = new File(plugin.getDataFolder(), configName);
if (file.isDirectory()) {
file.delete();
}
if (!file.exists()) {
/* try {
file.getParentFile().mkdirs();
file.createNewFile();
} catch (IOException ex) {
plugin.getLogger().log(Level.WARNING, "Ошибка при создании файла " + configName, ex);
} */
try (InputStream i = plugin.getClass().getClassLoader().getResourceAsStream(configName)) {
FileUtils.copyInputStreamToFile(i, file);
} catch (IOException e) {
plugin.getLogger().log(Level.WARNING, "Ошибка при создании файла " + configName);
}
return new YamlConfiguration();
}
return YamlConfiguration.loadConfiguration(file);
}
@SuppressWarnings("unused")
@Override
public void onEnable() {
Bukkit.getServer().getPluginManager().registerEvents(this, this);
YamlConfiguration config = getConfig(this, "config.yml");
YamlConfiguration users = getConfig(this, "users.yml");
YamlConfiguration messages = getConfig(this, "messages.yml");
}
@Override
public void onDisable() {
try {
users.save("users.yml");
config.save("config.yml");
messages.save("messages.yml");
} catch (IOException ex) {
this.getLogger().log(Level.WARNING, "Ошибка при сохранении конфигов", ex);
}
}
private void executeCommand (Player p, boolean console, String cmd) {
CommandSender sender = console ? getServer().getConsoleSender() : p;
getServer().dispatchCommand(sender, ChatColor.translateAlternateColorCodes('&', cmd.replaceAll("%player%", p.getName())));
}
@EventHandler
public void onJoin(PlayerJoinEvent event) {
Player p = event.getPlayer();
String pname = p.getName();
String GetPlayerIP = p.getAddress().getHostName();
if(users.getConfigurationSection("users").isConfigurationSection(GetPlayerIP)) {
String owner = users.getString("users."+GetPlayerIP+".ownerIP");
if(owner == pname) {
p.sendMessage(">> \u00a7cAntiAcc\u00a7f] \u00a7eТы проверен на мульти акк. Результат = \u00a7aTRUE");
} else {
String cmd = config.getString("defaultCommand");
String time = config.getString("defaultTime");
String reason = config.getString("defaultReason");
cmd = cmd.replace("<time>", time);
cmd = cmd.replace("<reason>", reason);
cmd = cmd.replace("<player>", p.getName());
executeCommand(p, true, cmd);
}
} else {
users.set("users."+GetPlayerIP+".OwnerIP", pname);
p.sendMessage(">> \u00a7cAntiAcc\u00a7f] \u00a7eТы новый пользователь, твои данные записаны.");
}
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if(cmd.getName().equalsIgnoreCase("antiacc")) {
String noperms = messages.getString("noperms");
noperms = noperms.replace("&", "\u00a7");
if(args.length < 2) {
if(!sender.hasPermission("AntiAcc.cmd.main")) {
sender.sendMessage(">\0aa7cУ тебя недостаточно прав!");
return false;
}
sender.sendMessage("<<<\u00a73AUTHOR: ENDERBRO3D\u00a7f>>>");
sender.sendMessage(">\u00a7c/antiacc protect <\u00a7fenable/disable/status\u00a7c> \u00a7f- \u00a7eвключить/отключить/узнать статус защиты");
return true;
}
if(args[0].equalsIgnoreCase("protect")) {
if(args[1].equalsIgnoreCase("enable")) {
if(!sender.hasPermission("AntiAcc.protection.enable")) {
sender.sendMessage(">\0aa7cУ тебя недостаточно прав!");
return false;
}
config.set("enabled", true);
reloadConfig();
return true;
}
if(args[1].equalsIgnoreCase("disable")) {
if(!sender.hasPermission("AntiAcc.protection.disable")) {
sender.sendMessage(">\0aa7cУ тебя недостаточно прав!");
return false;
}
config.set("enabled", false);
reloadConfig();
return true;
}
if(args[1].equalsIgnoreCase("status")) {
if(!sender.hasPermission("AntiAcc.protection.status")) {
sender.sendMessage(">\0aa7cУ тебя недостаточно прав!");
return false;
}
boolean status = config.getBoolean("enabled");
String StatusStr = (status ? "aВключена" : "cВыключена");
sender.sendMessage(">> \u00a7eЗащита " + StatusStr);
return true;
}
}
return true;
}
return false;
}
}
package ru.EnderBro3D.AntiAcc;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Level;
import org.apache.commons.io.FileUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;
public class MainClass extends JavaPlugin implements Listener {
//Configuration
private YamlConfiguration users;
private YamlConfiguration config;
private YamlConfiguration messages;
public static YamlConfiguration getConfig(JavaPlugin plugin, String configName) {
File file = new File(plugin.getDataFolder(), configName);
if (file.isDirectory()) {
file.delete();
}
if (!file.exists()) {
/* try {
file.getParentFile().mkdirs();
file.createNewFile();
} catch (IOException ex) {
plugin.getLogger().log(Level.WARNING, "Ошибка при создании файла " + configName, ex);
} */
try (InputStream i = plugin.getClass().getClassLoader().getResourceAsStream(configName)) {
FileUtils.copyInputStreamToFile(i, file);
} catch (IOException e) {
plugin.getLogger().log(Level.WARNING, "Ошибка при создании файла " + configName);
}
return new YamlConfiguration();
}
return YamlConfiguration.loadConfiguration(file);
}
@SuppressWarnings("unused")
@Override
public void onEnable() {
Bukkit.getServer().getPluginManager().registerEvents(this, this);
config = getConfig(this, "config.yml");
users = getConfig(this, "users.yml");
messages = getConfig(this, "messages.yml");
}
@Override
public void onDisable() {
try {
users.save("users.yml");
config.save("config.yml");
messages.save("messages.yml");
} catch (IOException ex) {
this.getLogger().log(Level.WARNING, "Ошибка при сохранении конфигов", ex);
}
}
private void executeCommand (Player p, boolean console, String cmd) {
CommandSender sender = console ? getServer().getConsoleSender() : p;
getServer().dispatchCommand(sender, ChatColor.translateAlternateColorCodes('&', cmd.replaceAll("%player%", p.getName())));
}
@EventHandler
public void onJoin(PlayerJoinEvent event) {
Player p = event.getPlayer();
String pname = p.getName();
String GetPlayerIP = p.getAddress().getHostName();
if(users.getConfigurationSection("users").isConfigurationSection(GetPlayerIP)) {
String owner = users.getString("users."+GetPlayerIP+".ownerIP");
if(owner == pname) {
p.sendMessage(">> \u00a7cAntiAcc\u00a7f] \u00a7eТы проверен на мульти акк. Результат = \u00a7aTRUE");
} else {
String cmd = config.getString("defaultCommand");
String time = config.getString("defaultTime");
String reason = config.getString("defaultReason");
cmd = cmd.replace("<time>", time);
cmd = cmd.replace("<reason>", reason);
cmd = cmd.replace("<player>", p.getName());
executeCommand(p, true, cmd);
}
} else {
users.set("users."+GetPlayerIP+".OwnerIP", pname);
p.sendMessage(">> \u00a7cAntiAcc\u00a7f] \u00a7eТы новый пользователь, твои данные записаны.");
}
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if(cmd.getName().equalsIgnoreCase("antiacc")) {
String noperms = messages.getString("noperms");
noperms = noperms.replace("&", "\u00a7");
if(args.length < 2) {
if(!sender.hasPermission("AntiAcc.cmd.main")) {
sender.sendMessage(">\0aa7cУ тебя недостаточно прав!");
return false;
}
sender.sendMessage("<<<\u00a73AUTHOR: ENDERBRO3D\u00a7f>>>");
sender.sendMessage(">\u00a7c/antiacc protect <\u00a7fenable/disable/status\u00a7c> \u00a7f- \u00a7eвключить/отключить/узнать статус защиты");
return true;
}
if(args[0].equalsIgnoreCase("protect")) {
if(args[1].equalsIgnoreCase("enable")) {
if(!sender.hasPermission("AntiAcc.protection.enable")) {
sender.sendMessage(">\0aa7cУ тебя недостаточно прав!");
return false;
}
config.set("enabled", true);
reloadConfig();
return true;
}
if(args[1].equalsIgnoreCase("disable")) {
if(!sender.hasPermission("AntiAcc.protection.disable")) {
sender.sendMessage(">\0aa7cУ тебя недостаточно прав!");
return false;
}
config.set("enabled", false);
reloadConfig();
return true;
}
if(args[1].equalsIgnoreCase("status")) {
if(!sender.hasPermission("AntiAcc.protection.status")) {
sender.sendMessage(">\0aa7cУ тебя недостаточно прав!");
return false;
}
boolean status = config.getBoolean("enabled");
String StatusStr = (status ? "aВключена" : "cВыключена");
sender.sendMessage(">> \u00a7eЗащита " + StatusStr);
return true;
}
}
return true;
}
return false;
}
}
спасибо, надеюсь поможет.Java:package ru.EnderBro3D.AntiAcc; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.logging.Level; import org.apache.commons.io.FileUtils; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.plugin.java.JavaPlugin; public class MainClass extends JavaPlugin implements Listener { //Configuration private YamlConfiguration users; private YamlConfiguration config; private YamlConfiguration messages; public static YamlConfiguration getConfig(JavaPlugin plugin, String configName) { File file = new File(plugin.getDataFolder(), configName); if (file.isDirectory()) { file.delete(); } if (!file.exists()) { /* try { file.getParentFile().mkdirs(); file.createNewFile(); } catch (IOException ex) { plugin.getLogger().log(Level.WARNING, "Ошибка при создании файла " + configName, ex); } */ try (InputStream i = plugin.getClass().getClassLoader().getResourceAsStream(configName)) { FileUtils.copyInputStreamToFile(i, file); } catch (IOException e) { plugin.getLogger().log(Level.WARNING, "Ошибка при создании файла " + configName); } return new YamlConfiguration(); } return YamlConfiguration.loadConfiguration(file); } @SuppressWarnings("unused") @Override public void onEnable() { Bukkit.getServer().getPluginManager().registerEvents(this, this); config = getConfig(this, "config.yml"); users = getConfig(this, "users.yml"); messages = getConfig(this, "messages.yml"); } @Override public void onDisable() { try { users.save("users.yml"); config.save("config.yml"); messages.save("messages.yml"); } catch (IOException ex) { this.getLogger().log(Level.WARNING, "Ошибка при сохранении конфигов", ex); } } private void executeCommand (Player p, boolean console, String cmd) { CommandSender sender = console ? getServer().getConsoleSender() : p; getServer().dispatchCommand(sender, ChatColor.translateAlternateColorCodes('&', cmd.replaceAll("%player%", p.getName()))); } @EventHandler public void onJoin(PlayerJoinEvent event) { Player p = event.getPlayer(); String pname = p.getName(); String GetPlayerIP = p.getAddress().getHostName(); if(users.getConfigurationSection("users").isConfigurationSection(GetPlayerIP)) { String owner = users.getString("users."+GetPlayerIP+".ownerIP"); if(owner == pname) { p.sendMessage(">> \u00a7cAntiAcc\u00a7f] \u00a7eТы проверен на мульти акк. Результат = \u00a7aTRUE"); } else { String cmd = config.getString("defaultCommand"); String time = config.getString("defaultTime"); String reason = config.getString("defaultReason"); cmd = cmd.replace("<time>", time); cmd = cmd.replace("<reason>", reason); cmd = cmd.replace("<player>", p.getName()); executeCommand(p, true, cmd); } } else { users.set("users."+GetPlayerIP+".OwnerIP", pname); p.sendMessage(">> \u00a7cAntiAcc\u00a7f] \u00a7eТы новый пользователь, твои данные записаны."); } } @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if(cmd.getName().equalsIgnoreCase("antiacc")) { String noperms = messages.getString("noperms"); noperms = noperms.replace("&", "\u00a7"); if(args.length < 2) { if(!sender.hasPermission("AntiAcc.cmd.main")) { sender.sendMessage(">\0aa7cУ тебя недостаточно прав!"); return false; } sender.sendMessage("<<<\u00a73AUTHOR: ENDERBRO3D\u00a7f>>>"); sender.sendMessage(">\u00a7c/antiacc protect <\u00a7fenable/disable/status\u00a7c> \u00a7f- \u00a7eвключить/отключить/узнать статус защиты"); return true; } if(args[0].equalsIgnoreCase("protect")) { if(args[1].equalsIgnoreCase("enable")) { if(!sender.hasPermission("AntiAcc.protection.enable")) { sender.sendMessage(">\0aa7cУ тебя недостаточно прав!"); return false; } config.set("enabled", true); reloadConfig(); return true; } if(args[1].equalsIgnoreCase("disable")) { if(!sender.hasPermission("AntiAcc.protection.disable")) { sender.sendMessage(">\0aa7cУ тебя недостаточно прав!"); return false; } config.set("enabled", false); reloadConfig(); return true; } if(args[1].equalsIgnoreCase("status")) { if(!sender.hasPermission("AntiAcc.protection.status")) { sender.sendMessage(">\0aa7cУ тебя недостаточно прав!"); return false; } boolean status = config.getBoolean("enabled"); String StatusStr = (status ? "aВключена" : "cВыключена"); sender.sendMessage(">> \u00a7eЗащита " + StatusStr); return true; } } return true; } return false; } }
Например: sender.sendmessage(ChatColor.translateAlternateColorCodes("&", test.getString("fortest"))); ?ChatColor.translateAlternateColorCodes(char, String)