TRUEC0DER
Пользователь
Один единственный @Getter ломает мне чтение информации из конфига (Вылезает ошибка java.lang.NullPointerException: Cannot invoke "org.bukkit.configuration.file.FileConfiguration.getString(String)" because "this.config" is null), а без него работает не так, как нужно (Просто вылезает ошибка при попытке взаимодействия с базой) (Мне нужно управлять базой вне основного класса, и методом гугла и изучения чужих плагинов я додумался до такого варианта).
Основной класс:
Класс команды:
Основной класс:
Java:
@Getter // Геттер, из-за которого всё не работает
public final class TestPlugin extends JavaPlugin {
Logger log = Logger.getLogger("Minecraft");
FileConfiguration config = getConfig();;
@Getter
public static TestPlugin instance;
private MongoClient mongoClient;
private MongoDatabase mongoDatabase;
private MongoCollection<Document> mongoCollection;
@Override
public void onEnable() {
instance = this;
saveDefaultConfig();
connect();
this.getCommand("testplugin").setExecutor(new CommandCode());
// Plugin startup logic
log.info(config.getString("messages.onLoadedPlugin"));
}
@Override
public void onDisable() {
// Plugin shutdown logic
log.info(config.getString("messages.onUnloadedPlugin"));
}
public void connect() {
String dbUri = config.getString("mongodb.database.uri");
String dbName = config.getString("mongodb.database.name");
String dbCollection = config.getString("mongodb.database.collection");
mongoClient = new MongoClient(new MongoClientURI(dbUri));
mongoDatabase = mongoClient.getDatabase(dbName);
mongoCollection = mongoDatabase.getCollection(dbCollection);
log.info(config.getString("messages.onLoadedDatabase"));
}
Класс команды:
Java:
public class CommandCode implements CommandExecutor {
FileConfiguration config = TestPlugin.getInstance().getConfig();
private final MongoCollection<Document> mongo = TestPlugin.getInstance().getMongoCollection();
// This method is called, when somebody uses our command
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (sender instanceof Player) {
Player player = (Player) sender;
Document user = new Document("user", "Nickname");
mongo.insertOne(user);
player.sendMessage("Я работаю");
}
return true;
}
}