73 lines
2.7 KiB
Java
73 lines
2.7 KiB
Java
package rip.tilly.bedwars.mongo;
|
|
|
|
import com.mongodb.MongoClient;
|
|
import com.mongodb.MongoCredential;
|
|
import com.mongodb.ServerAddress;
|
|
import com.mongodb.client.MongoCollection;
|
|
import com.mongodb.client.MongoDatabase;
|
|
import lombok.Getter;
|
|
import org.bson.Document;
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.configuration.ConfigurationSection;
|
|
import rip.tilly.bedwars.BedWars;
|
|
import rip.tilly.bedwars.utils.CC;
|
|
|
|
import java.util.Collections;
|
|
|
|
/**
|
|
* Created by Lucanius
|
|
* Project: BedWars
|
|
*/
|
|
@Getter
|
|
public class MongoManager {
|
|
|
|
private final MongoManager instance;
|
|
private final BedWars plugin = BedWars.getInstance();
|
|
private final ConfigurationSection config = this.plugin.getConfig().getConfigurationSection("MONGO");
|
|
|
|
private MongoClient mongoClient;
|
|
private MongoDatabase mongoDatabase;
|
|
|
|
private final String host = config.getString("HOST");
|
|
private final int port = config.getInt("PORT");
|
|
private final String database = config.getString("DATABASE");
|
|
private final boolean auth = config.getBoolean("AUTH.ENABLED");
|
|
private final String user = config.getString("AUTH.USERNAME");
|
|
private final String password = config.getString("AUTH.PASSWORD");
|
|
private final String authDatabase = config.getString("AUTH.AUTH-DATABASE");
|
|
|
|
private boolean connected;
|
|
|
|
private MongoCollection<Document> players;
|
|
|
|
public MongoManager() {
|
|
instance = this;
|
|
try {
|
|
if (auth) {
|
|
final MongoCredential credential = MongoCredential.createCredential(user, authDatabase, password.toCharArray());
|
|
mongoClient = new MongoClient(new ServerAddress(host, port), Collections.singletonList(credential));
|
|
} else {
|
|
mongoClient = new MongoClient(host, port);
|
|
}
|
|
connected = true;
|
|
mongoDatabase = mongoClient.getDatabase(database);
|
|
Bukkit.getConsoleSender().sendMessage(CC.translate("&d[BedWars] &aSuccessfully connected to the database!"));
|
|
this.players = this.mongoDatabase.getCollection("players");
|
|
} catch (Exception exception) {
|
|
connected = false;
|
|
Bukkit.getConsoleSender().sendMessage(CC.translate("&d[BedWars] &cFailed to connect to the database!"));
|
|
exception.printStackTrace();
|
|
Bukkit.getPluginManager().disablePlugin(this.plugin);
|
|
Bukkit.getConsoleSender().sendMessage(CC.translate("&b[BedWars] &cDisabling BedWars..."));
|
|
}
|
|
}
|
|
|
|
public void disconnect() {
|
|
if (this.mongoClient != null) {
|
|
this.mongoClient.close();
|
|
this.connected = false;
|
|
Bukkit.getConsoleSender().sendMessage(CC.translate("&d[BedWars] &aSuccessfully disconnected from the database!"));
|
|
}
|
|
}
|
|
}
|