mirror of
https://github.com/plexusorg/Plex.git
synced 2024-12-22 17:17:37 +00:00
packs is going to yell at me
Added custom Config classes Added Mongo / SQLite / SQL switches Setup main config.yml
This commit is contained in:
parent
cc40d83c95
commit
5162f3fcfb
38
pom.xml
38
pom.xml
@ -30,6 +30,18 @@
|
|||||||
<version>1.16.3-R0.1-SNAPSHOT</version>
|
<version>1.16.3-R0.1-SNAPSHOT</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok</artifactId>
|
||||||
|
<version>1.18.12</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>dev.morphia.morphia</groupId>
|
||||||
|
<artifactId>core</artifactId>
|
||||||
|
<version>1.5.2</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
@ -39,5 +51,31 @@
|
|||||||
<filtering>true</filtering>
|
<filtering>true</filtering>
|
||||||
</resource>
|
</resource>
|
||||||
</resources>
|
</resources>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<source>7</source>
|
||||||
|
<target>7</target>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-shade-plugin</artifactId>
|
||||||
|
<version>3.2.4</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>shade</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<createDependencyReducedPom>false</createDependencyReducedPom>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
</project>
|
</project>
|
@ -1,21 +1,55 @@
|
|||||||
package me.totalfreedom.plex;
|
package me.totalfreedom.plex;
|
||||||
|
|
||||||
|
import lombok.AccessLevel;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
import me.totalfreedom.plex.config.Config;
|
||||||
|
import me.totalfreedom.plex.config.YamlConfig;
|
||||||
|
import me.totalfreedom.plex.storage.MongoConnection;
|
||||||
|
import me.totalfreedom.plex.storage.SQLConnection;
|
||||||
|
import me.totalfreedom.plex.storage.StorageType;
|
||||||
|
import me.totalfreedom.plex.util.PlexLog;
|
||||||
|
import me.totalfreedom.plex.util.PlexUtils;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
public class Plex extends JavaPlugin
|
public class Plex extends JavaPlugin
|
||||||
{
|
{
|
||||||
|
@Setter(AccessLevel.NONE)
|
||||||
|
private static Plex plugin;
|
||||||
|
|
||||||
|
private StorageType storageType;
|
||||||
|
|
||||||
|
private SQLConnection sqlConnection;
|
||||||
|
private MongoConnection mongoConnection;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLoad()
|
public void onLoad()
|
||||||
{
|
{
|
||||||
|
plugin = this;
|
||||||
|
|
||||||
|
getConfig().options().copyDefaults(true);
|
||||||
|
saveConfig();
|
||||||
|
|
||||||
|
saveResource("database.db", false);
|
||||||
|
|
||||||
|
sqlConnection = new SQLConnection();
|
||||||
|
mongoConnection = new MongoConnection();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable()
|
public void onEnable()
|
||||||
{
|
{
|
||||||
|
PlexUtils.testConnections();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDisable()
|
public void onDisable()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Plex get() {
|
||||||
|
return plugin;
|
||||||
|
}
|
||||||
}
|
}
|
40
src/main/java/me/totalfreedom/plex/config/Config.java
Normal file
40
src/main/java/me/totalfreedom/plex/config/Config.java
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
package me.totalfreedom.plex.config;
|
||||||
|
|
||||||
|
import me.totalfreedom.plex.Plex;
|
||||||
|
import me.totalfreedom.plex.util.PlexLog;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public class Config
|
||||||
|
{
|
||||||
|
|
||||||
|
private File file;
|
||||||
|
|
||||||
|
|
||||||
|
public Config(String name, boolean copy)
|
||||||
|
{
|
||||||
|
if (copy)
|
||||||
|
{
|
||||||
|
Plex.get().saveResource(name, false);
|
||||||
|
} else {
|
||||||
|
file = new File(Plex.get().getDataFolder(), name);
|
||||||
|
if (!file.exists())
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
file.createNewFile();
|
||||||
|
PlexLog.log("Generating " + name + " configuration file!");
|
||||||
|
} catch (IOException e) {
|
||||||
|
PlexLog.error(String.format("An error occured trying to create the following file: %s", name));
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
PlexLog.log(name + " configuration file was loaded.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public File getFile() {
|
||||||
|
return file;
|
||||||
|
}
|
||||||
|
}
|
44
src/main/java/me/totalfreedom/plex/config/YamlConfig.java
Normal file
44
src/main/java/me/totalfreedom/plex/config/YamlConfig.java
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
package me.totalfreedom.plex.config;
|
||||||
|
|
||||||
|
import org.bukkit.configuration.InvalidConfigurationException;
|
||||||
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public class YamlConfig
|
||||||
|
{
|
||||||
|
|
||||||
|
private YamlConfiguration config;
|
||||||
|
private File file;
|
||||||
|
|
||||||
|
public YamlConfig(File file)
|
||||||
|
{
|
||||||
|
this.file = file;
|
||||||
|
this.config = YamlConfiguration.loadConfiguration(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
public YamlConfiguration get() {
|
||||||
|
return config;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void save()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
this.config.save(file);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void reload()
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
this.config.load(file);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (InvalidConfigurationException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
53
src/main/java/me/totalfreedom/plex/player/PlexPlayer.java
Normal file
53
src/main/java/me/totalfreedom/plex/player/PlexPlayer.java
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
package me.totalfreedom.plex.player;
|
||||||
|
|
||||||
|
import dev.morphia.annotations.Entity;
|
||||||
|
import dev.morphia.annotations.Id;
|
||||||
|
import dev.morphia.annotations.IndexOptions;
|
||||||
|
import dev.morphia.annotations.Indexed;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
import me.totalfreedom.plex.storage.MongoConnection;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
|
||||||
|
@Entity(value = "players", noClassnameStored = true)
|
||||||
|
public class PlexPlayer
|
||||||
|
{
|
||||||
|
@Id
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
@Indexed(options = @IndexOptions(unique = true))
|
||||||
|
private String uuid;
|
||||||
|
|
||||||
|
@Indexed
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
private List<String> ips;
|
||||||
|
|
||||||
|
private boolean muted;
|
||||||
|
private boolean frozen;
|
||||||
|
|
||||||
|
//insert Rank check
|
||||||
|
|
||||||
|
public PlexPlayer(){}
|
||||||
|
|
||||||
|
public PlexPlayer(UUID playerUUID)
|
||||||
|
{
|
||||||
|
this.uuid = playerUUID.toString();
|
||||||
|
|
||||||
|
this.id = uuid.substring(0, 8);
|
||||||
|
|
||||||
|
this.name = "";
|
||||||
|
|
||||||
|
this.ips = new ArrayList<>();
|
||||||
|
|
||||||
|
this.muted = false;
|
||||||
|
this.frozen = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,44 @@
|
|||||||
|
package me.totalfreedom.plex.storage;
|
||||||
|
|
||||||
|
import com.mongodb.MongoClient;
|
||||||
|
import com.mongodb.MongoClientURI;
|
||||||
|
import dev.morphia.Datastore;
|
||||||
|
import dev.morphia.Morphia;
|
||||||
|
import me.totalfreedom.plex.Plex;
|
||||||
|
import me.totalfreedom.plex.player.PlexPlayer;
|
||||||
|
|
||||||
|
public class MongoConnection
|
||||||
|
{
|
||||||
|
|
||||||
|
// USE MORPHIA API FOR MONGO <3
|
||||||
|
|
||||||
|
private Plex plugin = Plex.get();
|
||||||
|
|
||||||
|
public Datastore getDatastore()
|
||||||
|
{
|
||||||
|
if (!plugin.getConfig().getString("data.central.storage").equalsIgnoreCase("mongodb"))
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
String host = plugin.getConfig().getString("data.central.hostname");
|
||||||
|
int port = plugin.getConfig().getInt("data.central.port");
|
||||||
|
String username = plugin.getConfig().getString("data.central.user");
|
||||||
|
String password = plugin.getConfig().getString("data.central.password");
|
||||||
|
String database = plugin.getConfig().getString("data.central.database");
|
||||||
|
|
||||||
|
String connectionString = "mongodb://" + username + ":" + password + "@" + host + ":" + port + "/?authSource=" + database;
|
||||||
|
|
||||||
|
MongoClient client = new MongoClient(new MongoClientURI(connectionString));
|
||||||
|
|
||||||
|
Morphia morphia = new Morphia();
|
||||||
|
Datastore datastore = morphia.createDatastore(client, database);
|
||||||
|
|
||||||
|
datastore.getMapper().addMappedClass(PlexPlayer.class);
|
||||||
|
datastore.ensureIndexes();
|
||||||
|
|
||||||
|
plugin.setStorageType(StorageType.MONGO);
|
||||||
|
|
||||||
|
return datastore;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,42 @@
|
|||||||
|
package me.totalfreedom.plex.storage;
|
||||||
|
|
||||||
|
import me.totalfreedom.plex.Plex;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
|
public class SQLConnection
|
||||||
|
{
|
||||||
|
private Plex plugin = Plex.get();
|
||||||
|
|
||||||
|
private Connection connection;
|
||||||
|
|
||||||
|
public Connection getCon()
|
||||||
|
{
|
||||||
|
String host = plugin.getConfig().getString("data.central.hostname");
|
||||||
|
int port = plugin.getConfig().getInt("data.central.port");
|
||||||
|
String username = plugin.getConfig().getString("data.central.user");
|
||||||
|
String password = plugin.getConfig().getString("data.central.password");
|
||||||
|
String database = plugin.getConfig().getString("data.central.database");
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (plugin.getConfig().getString("data.central.storage").equalsIgnoreCase("sqlite"))
|
||||||
|
{
|
||||||
|
connection = DriverManager.getConnection("jdbc:sqlite:" + new File(plugin.getDataFolder(), "database.db").getAbsolutePath());
|
||||||
|
Plex.get().setStorageType(StorageType.SQLITE);
|
||||||
|
}
|
||||||
|
else if (plugin.getConfig().getString("data.central.storage").equalsIgnoreCase("mysql"))
|
||||||
|
{
|
||||||
|
connection = DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" + database, username, password);
|
||||||
|
Plex.get().setStorageType(StorageType.MONGO);
|
||||||
|
}
|
||||||
|
} catch (SQLException throwables) {
|
||||||
|
throwables.printStackTrace();
|
||||||
|
}
|
||||||
|
return connection;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package me.totalfreedom.plex.storage;
|
||||||
|
|
||||||
|
public enum StorageType
|
||||||
|
{
|
||||||
|
MONGO, SQL, SQLITE;
|
||||||
|
|
||||||
|
}
|
18
src/main/java/me/totalfreedom/plex/util/PlexLog.java
Normal file
18
src/main/java/me/totalfreedom/plex/util/PlexLog.java
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
package me.totalfreedom.plex.util;
|
||||||
|
|
||||||
|
import me.totalfreedom.plex.Plex;
|
||||||
|
|
||||||
|
public class PlexLog
|
||||||
|
{
|
||||||
|
|
||||||
|
public static void log(String message)
|
||||||
|
{
|
||||||
|
Plex.get().getServer().getConsoleSender().sendMessage(String.format("§e[Plex] §7%s", message));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(String message)
|
||||||
|
{
|
||||||
|
Plex.get().getServer().getConsoleSender().sendMessage(String.format("§c[Plex Error] §6%s", message));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
32
src/main/java/me/totalfreedom/plex/util/PlexUtils.java
Normal file
32
src/main/java/me/totalfreedom/plex/util/PlexUtils.java
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
package me.totalfreedom.plex.util;
|
||||||
|
|
||||||
|
import me.totalfreedom.plex.Plex;
|
||||||
|
import me.totalfreedom.plex.storage.StorageType;
|
||||||
|
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
|
public class PlexUtils
|
||||||
|
{
|
||||||
|
|
||||||
|
public static void testConnections()
|
||||||
|
{
|
||||||
|
if (Plex.get().getSqlConnection().getCon() != null)
|
||||||
|
{
|
||||||
|
if (Plex.get().getStorageType() == StorageType.SQL)
|
||||||
|
{
|
||||||
|
PlexLog.log("Successfully enabled MySQL!");
|
||||||
|
} else if (Plex.get().getStorageType() == StorageType.SQLITE)
|
||||||
|
{
|
||||||
|
PlexLog.log("Successfully enabled SQLite!");
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
Plex.get().getSqlConnection().getCon().close();
|
||||||
|
} catch (SQLException throwables) {
|
||||||
|
}
|
||||||
|
} else if (Plex.get().getMongoConnection() != null)
|
||||||
|
{
|
||||||
|
PlexLog.log("Successfully enabled MongoDB!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
26
src/main/resources/config.yml
Normal file
26
src/main/resources/config.yml
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# -------------------------------#
|
||||||
|
# #
|
||||||
|
# P L E X #
|
||||||
|
# #
|
||||||
|
# -------------------------------#
|
||||||
|
|
||||||
|
# ------------------------------ #
|
||||||
|
# #
|
||||||
|
# You can use MySQL, MongoDB #
|
||||||
|
# or SQLite for the data #
|
||||||
|
# type #
|
||||||
|
# -------------------------------#
|
||||||
|
|
||||||
|
data:
|
||||||
|
central:
|
||||||
|
storage: sqlite
|
||||||
|
user: ""
|
||||||
|
password: ""
|
||||||
|
hostname: 127.0.0.1
|
||||||
|
port: 27017
|
||||||
|
db: "plex"
|
||||||
|
side: # This is redis, leave password blank if auth is false
|
||||||
|
auth: true
|
||||||
|
hostname: 127.0.0.1
|
||||||
|
port: 6379
|
||||||
|
password: ""
|
0
src/main/resources/database.db
Normal file
0
src/main/resources/database.db
Normal file
@ -2,3 +2,4 @@ name: ${project.name}
|
|||||||
version: ${project.version}
|
version: ${project.version}
|
||||||
author: Telesphoreo
|
author: Telesphoreo
|
||||||
main: me.totalfreedom.plex.Plex
|
main: me.totalfreedom.plex.Plex
|
||||||
|
api-version: 1.16
|
||||||
|
Loading…
Reference in New Issue
Block a user