Compiling fixes
This commit is contained in:
parent
3feb1d19ff
commit
0718d8ec03
|
@ -1,6 +1,5 @@
|
||||||
package org.samo_lego.simpleauth;
|
package org.samo_lego.simpleauth;
|
||||||
|
|
||||||
import com.google.gson.JsonObject;
|
|
||||||
import net.fabricmc.api.DedicatedServerModInitializer;
|
import net.fabricmc.api.DedicatedServerModInitializer;
|
||||||
import net.fabricmc.fabric.api.command.v1.CommandRegistrationCallback;
|
import net.fabricmc.fabric.api.command.v1.CommandRegistrationCallback;
|
||||||
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
|
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
|
||||||
|
@ -16,15 +15,14 @@ import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.registry.Registry;
|
import net.minecraft.util.registry.Registry;
|
||||||
import net.minecraft.util.registry.RegistryKey;
|
import net.minecraft.util.registry.RegistryKey;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import org.iq80.leveldb.WriteBatch;
|
|
||||||
import org.samo_lego.simpleauth.commands.*;
|
import org.samo_lego.simpleauth.commands.*;
|
||||||
import org.samo_lego.simpleauth.event.AuthEventHandler;
|
import org.samo_lego.simpleauth.event.AuthEventHandler;
|
||||||
import org.samo_lego.simpleauth.event.entity.player.*;
|
import org.samo_lego.simpleauth.event.entity.player.*;
|
||||||
import org.samo_lego.simpleauth.event.item.DropItemCallback;
|
import org.samo_lego.simpleauth.event.item.DropItemCallback;
|
||||||
import org.samo_lego.simpleauth.event.item.TakeItemCallback;
|
import org.samo_lego.simpleauth.event.item.TakeItemCallback;
|
||||||
import org.samo_lego.simpleauth.storage.AuthConfig;
|
import org.samo_lego.simpleauth.storage.AuthConfig;
|
||||||
import org.samo_lego.simpleauth.storage.PlayerCache;
|
|
||||||
import org.samo_lego.simpleauth.storage.DBHelper;
|
import org.samo_lego.simpleauth.storage.DBHelper;
|
||||||
|
import org.samo_lego.simpleauth.storage.PlayerCache;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileReader;
|
import java.io.FileReader;
|
||||||
|
@ -38,7 +36,6 @@ import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import static org.iq80.leveldb.impl.Iq80DBFactory.bytes;
|
|
||||||
import static org.samo_lego.simpleauth.utils.CarpetHelper.isPlayerCarpetFake;
|
import static org.samo_lego.simpleauth.utils.CarpetHelper.isPlayerCarpetFake;
|
||||||
import static org.samo_lego.simpleauth.utils.SimpleLogger.logError;
|
import static org.samo_lego.simpleauth.utils.SimpleLogger.logError;
|
||||||
import static org.samo_lego.simpleauth.utils.SimpleLogger.logInfo;
|
import static org.samo_lego.simpleauth.utils.SimpleLogger.logInfo;
|
||||||
|
@ -136,30 +133,7 @@ public class SimpleAuth implements DedicatedServerModInitializer {
|
||||||
*/
|
*/
|
||||||
private void onStopServer(MinecraftServer server) {
|
private void onStopServer(MinecraftServer server) {
|
||||||
logInfo("Shutting down SimpleAuth.");
|
logInfo("Shutting down SimpleAuth.");
|
||||||
|
DB.saveAll(playerCacheMap);
|
||||||
WriteBatch batch = DB.getLevelDBStore().createWriteBatch();
|
|
||||||
// Updating player data.
|
|
||||||
playerCacheMap.forEach((uuid, playerCache) -> {
|
|
||||||
JsonObject data = new JsonObject();
|
|
||||||
data.addProperty("password", playerCache.password);
|
|
||||||
|
|
||||||
JsonObject lastLocation = new JsonObject();
|
|
||||||
lastLocation.addProperty("dim", playerCache.lastDim);
|
|
||||||
lastLocation.addProperty("x", playerCache.lastX);
|
|
||||||
lastLocation.addProperty("y", playerCache.lastY);
|
|
||||||
lastLocation.addProperty("z", playerCache.lastZ);
|
|
||||||
|
|
||||||
data.addProperty("lastLocation", lastLocation.toString());
|
|
||||||
|
|
||||||
batch.put(bytes("UUID:" + uuid), bytes("data:" + data.toString()));
|
|
||||||
});
|
|
||||||
try {
|
|
||||||
// Writing and closing batch
|
|
||||||
DB.getLevelDBStore().write(batch);
|
|
||||||
batch.close();
|
|
||||||
} catch (IOException e) {
|
|
||||||
logError("Error saving player data! " + e.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Closing threads
|
// Closing threads
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -3,7 +3,10 @@ package org.samo_lego.simpleauth.storage;
|
||||||
import org.samo_lego.simpleauth.storage.database.LevelDB;
|
import org.samo_lego.simpleauth.storage.database.LevelDB;
|
||||||
import org.samo_lego.simpleauth.storage.database.MongoDB;
|
import org.samo_lego.simpleauth.storage.database.MongoDB;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
import static org.samo_lego.simpleauth.SimpleAuth.config;
|
import static org.samo_lego.simpleauth.SimpleAuth.config;
|
||||||
|
import static org.samo_lego.simpleauth.utils.SimpleLogger.logInfo;
|
||||||
|
|
||||||
public class DBHelper {
|
public class DBHelper {
|
||||||
|
|
||||||
|
@ -21,8 +24,8 @@ public class DBHelper {
|
||||||
* Closes database connection.
|
* Closes database connection.
|
||||||
*/
|
*/
|
||||||
public void close() {
|
public void close() {
|
||||||
if(!config.main.useMongoDB)
|
if(config.main.useMongoDB && MongoDB.close() || LevelDB.close())
|
||||||
LevelDB.close();
|
logInfo("Database connection closed successfully.");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -65,9 +68,9 @@ public class DBHelper {
|
||||||
*/
|
*/
|
||||||
public void deleteUserData(String uuid) {
|
public void deleteUserData(String uuid) {
|
||||||
if(config.main.useMongoDB)
|
if(config.main.useMongoDB)
|
||||||
MongoDB.isUserRegistered(uuid);
|
MongoDB.deleteUserData(uuid);
|
||||||
else
|
else
|
||||||
LevelDB.isUserRegistered(uuid);
|
LevelDB.deleteUserData(uuid);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -92,4 +95,12 @@ public class DBHelper {
|
||||||
public String getUserData(String uuid){
|
public String getUserData(String uuid){
|
||||||
return config.main.useMongoDB ? MongoDB.getUserData(uuid) : LevelDB.getUserData(uuid);
|
return config.main.useMongoDB ? MongoDB.getUserData(uuid) : LevelDB.getUserData(uuid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void saveAll(HashMap<String, PlayerCache> playerCacheMap) {
|
||||||
|
// Saving player data.
|
||||||
|
if(config.main.useMongoDB)
|
||||||
|
MongoDB.saveFromCache(playerCacheMap);
|
||||||
|
else
|
||||||
|
LevelDB.saveFromCache(playerCacheMap);
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -133,4 +133,25 @@ public class PlayerCache {
|
||||||
if(config.experimental.debugMode)
|
if(config.experimental.debugMode)
|
||||||
logInfo("Cache created. Registered: " + this.isRegistered + ", hashed password: " + this.password);
|
logInfo("Cache created. Registered: " + this.isRegistered + ", hashed password: " + this.password);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static PlayerCache fromJson(String json) {
|
||||||
|
PlayerCache playerCache = gson.fromJson(json, PlayerCache.class);
|
||||||
|
System.out.println(playerCache);
|
||||||
|
return playerCache;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JsonObject toJson() {
|
||||||
|
JsonObject cacheJson = new JsonObject();
|
||||||
|
cacheJson.addProperty("password", this.password);
|
||||||
|
|
||||||
|
JsonObject lastLocation = new JsonObject();
|
||||||
|
lastLocation.addProperty("dim", this.lastDim);
|
||||||
|
lastLocation.addProperty("x", this.lastX);
|
||||||
|
lastLocation.addProperty("y", this.lastY);
|
||||||
|
lastLocation.addProperty("z", this.lastZ);
|
||||||
|
|
||||||
|
cacheJson.addProperty("lastLocation", lastLocation.toString());
|
||||||
|
|
||||||
|
return cacheJson;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,25 +1,24 @@
|
||||||
package org.samo_lego.simpleauth.storage.database;
|
package org.samo_lego.simpleauth.storage.database;
|
||||||
|
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
import org.iq80.leveldb.DB;
|
import org.iq80.leveldb.DB;
|
||||||
import org.iq80.leveldb.DBException;
|
import org.iq80.leveldb.DBException;
|
||||||
import org.iq80.leveldb.Options;
|
import org.iq80.leveldb.Options;
|
||||||
|
import org.iq80.leveldb.WriteBatch;
|
||||||
import org.samo_lego.simpleauth.SimpleAuth;
|
import org.samo_lego.simpleauth.SimpleAuth;
|
||||||
|
import org.samo_lego.simpleauth.storage.PlayerCache;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
import static org.iq80.leveldb.impl.Iq80DBFactory.bytes;
|
import static org.iq80.leveldb.impl.Iq80DBFactory.bytes;
|
||||||
import static org.iq80.leveldb.impl.Iq80DBFactory.factory;
|
import static org.iq80.leveldb.impl.Iq80DBFactory.factory;
|
||||||
import static org.samo_lego.simpleauth.utils.SimpleLogger.logError;
|
import static org.samo_lego.simpleauth.utils.SimpleLogger.logError;
|
||||||
import static org.samo_lego.simpleauth.utils.SimpleLogger.logInfo;
|
|
||||||
|
|
||||||
public class LevelDB {
|
public class LevelDB {
|
||||||
private static DB levelDBStore;
|
private static DB levelDBStore;
|
||||||
|
|
||||||
public static DB getLevelDBStore() {
|
|
||||||
return levelDBStore;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Connects to the LevelDB.
|
* Connects to the LevelDB.
|
||||||
*/
|
*/
|
||||||
|
@ -35,15 +34,16 @@ public class LevelDB {
|
||||||
/**
|
/**
|
||||||
* Closes database connection.
|
* Closes database connection.
|
||||||
*/
|
*/
|
||||||
public static void close() {
|
public static boolean close() {
|
||||||
if (levelDBStore != null) {
|
if (levelDBStore != null) {
|
||||||
try {
|
try {
|
||||||
levelDBStore.close();
|
levelDBStore.close();
|
||||||
logInfo("Database connection closed successfully.");
|
return true;
|
||||||
} catch (Error | IOException e) {
|
} catch (Error | IOException e) {
|
||||||
logError(e.getMessage());
|
logError(e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -133,4 +133,20 @@ public class LevelDB {
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void saveFromCache(HashMap<String, PlayerCache> playerCacheMap) {
|
||||||
|
WriteBatch batch = levelDBStore.createWriteBatch();
|
||||||
|
// Updating player data.
|
||||||
|
playerCacheMap.forEach((uuid, playerCache) -> {
|
||||||
|
JsonObject data = playerCache.toJson();
|
||||||
|
batch.put(bytes("UUID:" + uuid), bytes("data:" + data.toString()));
|
||||||
|
});
|
||||||
|
try {
|
||||||
|
// Writing and closing batch
|
||||||
|
levelDBStore.write(batch);
|
||||||
|
batch.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
logError("Error saving player data! " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,25 +1,27 @@
|
||||||
package org.samo_lego.simpleauth.storage.database;
|
package org.samo_lego.simpleauth.storage.database;
|
||||||
|
|
||||||
|
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
import com.mongodb.client.MongoClient;
|
import com.mongodb.client.MongoClient;
|
||||||
import com.mongodb.client.MongoClients;
|
import com.mongodb.client.MongoClients;
|
||||||
import com.mongodb.client.MongoCollection;
|
import com.mongodb.client.MongoCollection;
|
||||||
import com.mongodb.client.MongoDatabase;
|
import com.mongodb.client.MongoDatabase;
|
||||||
|
import com.mongodb.client.model.ReplaceOneModel;
|
||||||
import org.bson.Document;
|
import org.bson.Document;
|
||||||
import org.iq80.leveldb.DBException;
|
import org.iq80.leveldb.DBException;
|
||||||
|
import org.samo_lego.simpleauth.storage.PlayerCache;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import javax.print.Doc;
|
import java.util.HashMap;
|
||||||
import java.io.IOException;
|
import java.util.List;
|
||||||
|
|
||||||
import static com.mongodb.client.model.Filters.eq;
|
import static com.mongodb.client.model.Filters.eq;
|
||||||
import static org.iq80.leveldb.impl.Iq80DBFactory.bytes;
|
|
||||||
import static org.samo_lego.simpleauth.SimpleAuth.config;
|
import static org.samo_lego.simpleauth.SimpleAuth.config;
|
||||||
import static org.samo_lego.simpleauth.utils.SimpleLogger.logError;
|
import static org.samo_lego.simpleauth.utils.SimpleLogger.logError;
|
||||||
import static org.samo_lego.simpleauth.utils.SimpleLogger.logInfo;
|
|
||||||
|
|
||||||
public class MongoDB {
|
public class MongoDB {
|
||||||
private static MongoCollection<Document> collection;
|
private static MongoCollection<Document> collection;
|
||||||
|
private static MongoClient mongoClient;
|
||||||
|
|
||||||
public static void initialize() {
|
public static void initialize() {
|
||||||
/*mongoClient = MongoClients.create(
|
/*mongoClient = MongoClients.create(
|
||||||
|
@ -33,7 +35,7 @@ public class MongoDB {
|
||||||
|
|
||||||
)
|
)
|
||||||
);*/
|
);*/
|
||||||
MongoClient mongoClient = MongoClients.create(String.format("mongodb://%s:%s", config.mongoDBCredentials.host, config.mongoDBCredentials.port));
|
mongoClient = MongoClients.create(String.format("mongodb://%s:%s", config.mongoDBCredentials.host, config.mongoDBCredentials.port));
|
||||||
MongoDatabase database = mongoClient.getDatabase(config.mongoDBCredentials.databaseName);
|
MongoDatabase database = mongoClient.getDatabase(config.mongoDBCredentials.databaseName);
|
||||||
collection = database.getCollection("players");
|
collection = database.getCollection("players");
|
||||||
}
|
}
|
||||||
|
@ -66,8 +68,21 @@ public class MongoDB {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getUserData(String uuid){
|
public static String getUserData(String uuid){
|
||||||
if(isUserRegistered(uuid))
|
return isUserRegistered(uuid) ? collection.find(eq("UUID", uuid)).iterator().next().getString(uuid) : "";
|
||||||
return collection.find(eq("UUID", uuid)).iterator().next().getString(uuid);
|
}
|
||||||
return "";
|
|
||||||
|
public static void saveFromCache(HashMap<String, PlayerCache> playerCacheMap) {
|
||||||
|
List<ReplaceOneModel<Document>> list = new ArrayList<>();
|
||||||
|
playerCacheMap.forEach((uuid, playerCache) -> {
|
||||||
|
JsonObject data = playerCache.toJson();
|
||||||
|
list.add(new ReplaceOneModel<>(eq("UUID", uuid), new Document(uuid, data.toString())));
|
||||||
|
});
|
||||||
|
|
||||||
|
collection.bulkWrite(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean close() {
|
||||||
|
mongoClient.close();
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue