mirror of
https://github.com/plexusorg/Plex.git
synced 2026-06-04 05:26:55 +00:00
More modernization for the database
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
package dev.plex;
|
||||
|
||||
import dev.plex.cache.DataUtils;
|
||||
import dev.plex.cache.PlayerCache;
|
||||
import dev.plex.config.Config;
|
||||
import dev.plex.handlers.CommandHandler;
|
||||
@@ -8,15 +7,20 @@ import dev.plex.handlers.ListenerHandler;
|
||||
import dev.plex.hook.CoreProtectHook;
|
||||
import dev.plex.hook.PrismHook;
|
||||
import dev.plex.module.ModuleManager;
|
||||
import dev.plex.player.PlayerService;
|
||||
import dev.plex.player.PlexPlayer;
|
||||
import dev.plex.punishment.PunishmentManager;
|
||||
import dev.plex.services.ServiceManager;
|
||||
import dev.plex.storage.RedisConnection;
|
||||
import dev.plex.storage.SQLConnection;
|
||||
import dev.plex.storage.StorageExecutor;
|
||||
import dev.plex.storage.StorageType;
|
||||
import dev.plex.storage.player.SQLPlayerData;
|
||||
import dev.plex.storage.punishment.SQLNotes;
|
||||
import dev.plex.storage.punishment.SQLPunishment;
|
||||
import dev.plex.storage.repository.NoteRepository;
|
||||
import dev.plex.storage.repository.PlayerRepository;
|
||||
import dev.plex.storage.repository.PunishmentRepository;
|
||||
import dev.plex.util.BuildInfo;
|
||||
import dev.plex.util.BungeeUtil;
|
||||
import dev.plex.util.PlexLog;
|
||||
@@ -52,10 +56,11 @@ public class Plex extends JavaPlugin
|
||||
private RedisConnection redisConnection;
|
||||
|
||||
private PlayerCache playerCache;
|
||||
private SQLPlayerData sqlPlayerData;
|
||||
private PlayerRepository playerRepository;
|
||||
private PlayerService playerService;
|
||||
|
||||
private SQLPunishment sqlPunishment;
|
||||
private SQLNotes sqlNotes;
|
||||
private PunishmentRepository punishmentRepository;
|
||||
private NoteRepository noteRepository;
|
||||
|
||||
private ModuleManager moduleManager;
|
||||
private ServiceManager serviceManager;
|
||||
@@ -90,7 +95,7 @@ public class Plex extends JavaPlugin
|
||||
modulesFolder.mkdir();
|
||||
}
|
||||
|
||||
moduleManager = new ModuleManager();
|
||||
moduleManager = new ModuleManager(this);
|
||||
moduleManager.loadAllModules();
|
||||
moduleManager.loadModules();
|
||||
|
||||
@@ -101,21 +106,23 @@ public class Plex extends JavaPlugin
|
||||
public void onEnable()
|
||||
{
|
||||
config.load();
|
||||
PlexLog.setDebugEnabled(config.getBoolean("debug"));
|
||||
messages.load();
|
||||
PlexUtils.configure(config, messages);
|
||||
toggles.load();
|
||||
|
||||
// Don't add default entries to these files
|
||||
indefBans.load(false);
|
||||
|
||||
sqlConnection = new SQLConnection();
|
||||
redisConnection = new RedisConnection();
|
||||
sqlConnection = new SQLConnection(this);
|
||||
redisConnection = new RedisConnection(this);
|
||||
|
||||
playerCache = new PlayerCache();
|
||||
|
||||
PlexLog.log("Attempting to connect to DB: {0}", plugin.config.getString("data.db.name"));
|
||||
try
|
||||
{
|
||||
PlexUtils.testConnections();
|
||||
PlexUtils.testConnections(this);
|
||||
PlexLog.log("Connected to " + storageType.name().toUpperCase());
|
||||
}
|
||||
catch (Exception e)
|
||||
@@ -160,7 +167,7 @@ public class Plex extends JavaPlugin
|
||||
PlexLog.debug("Not hooking into SuperVanish / PremiumVanish");
|
||||
}
|
||||
|
||||
updateChecker = new UpdateChecker();
|
||||
updateChecker = new UpdateChecker(this);
|
||||
PlexLog.log("Update checking enabled");
|
||||
|
||||
// https://bstats.org/plugin/bukkit/Plex/14143
|
||||
@@ -171,7 +178,7 @@ public class Plex extends JavaPlugin
|
||||
{
|
||||
redisConnection.getJedis();
|
||||
PlexLog.log("Connected to Redis!");
|
||||
MessageUtil.subscribe();
|
||||
MessageUtil.subscribe(this);
|
||||
|
||||
}
|
||||
else
|
||||
@@ -179,14 +186,15 @@ public class Plex extends JavaPlugin
|
||||
PlexLog.log("Redis is disabled in the configuration file, not connecting.");
|
||||
}
|
||||
|
||||
sqlPlayerData = new SQLPlayerData();
|
||||
sqlPunishment = new SQLPunishment();
|
||||
sqlNotes = new SQLNotes();
|
||||
punishmentRepository = new SQLPunishment(sqlConnection.getConnectionSource());
|
||||
playerRepository = new SQLPlayerData(sqlConnection.getConnectionSource(), punishmentRepository);
|
||||
noteRepository = new SQLNotes(sqlConnection.getConnectionSource());
|
||||
playerService = new PlayerService(playerCache, playerRepository);
|
||||
|
||||
new ListenerHandler();
|
||||
new CommandHandler();
|
||||
new ListenerHandler(this);
|
||||
new CommandHandler(this);
|
||||
|
||||
punishmentManager = new PunishmentManager();
|
||||
punishmentManager = new PunishmentManager(this);
|
||||
punishmentManager.mergeIndefiniteBans();
|
||||
PlexLog.log("Punishment System initialized");
|
||||
|
||||
@@ -196,7 +204,7 @@ public class Plex extends JavaPlugin
|
||||
generateWorlds();
|
||||
}
|
||||
|
||||
serviceManager = new ServiceManager();
|
||||
serviceManager = new ServiceManager(this);
|
||||
PlexLog.log("Service Manager initialized");
|
||||
serviceManager.startServices();
|
||||
PlexLog.log("Started " + serviceManager.serviceCount() + " services.");
|
||||
@@ -215,12 +223,11 @@ public class Plex extends JavaPlugin
|
||||
Bukkit.getOnlinePlayers().forEach(player ->
|
||||
{
|
||||
PlexPlayer plexPlayer = playerCache.getPlexPlayerMap().get(player.getUniqueId()); //get the player because it's literally impossible for them to not have an object
|
||||
sqlPlayerData.update(plexPlayer);
|
||||
playerRepository.update(plexPlayer);
|
||||
});
|
||||
if (redisConnection != null && redisConnection.isEnabled() && redisConnection.getJedis().isConnected())
|
||||
if (redisConnection != null && redisConnection.isEnabled())
|
||||
{
|
||||
PlexLog.log("Disabling Redis/Jedis. No memory leaks in this Anarchy server!");
|
||||
redisConnection.getJedis().close();
|
||||
}
|
||||
|
||||
this.getServer().getMessenger().unregisterOutgoingPluginChannel(this);
|
||||
@@ -231,6 +238,7 @@ public class Plex extends JavaPlugin
|
||||
{
|
||||
sqlConnection.close();
|
||||
}
|
||||
StorageExecutor.shutdown();
|
||||
}
|
||||
|
||||
private void generateWorlds()
|
||||
@@ -238,7 +246,7 @@ public class Plex extends JavaPlugin
|
||||
PlexLog.log("Generating any worlds if needed...");
|
||||
for (String key : config.getConfigurationSection("worlds").getKeys(false))
|
||||
{
|
||||
CustomWorld.generateConfigFlatWorld(key);
|
||||
CustomWorld.generateConfigFlatWorld(this, key);
|
||||
}
|
||||
PlexLog.log("Finished with world generation!");
|
||||
}
|
||||
@@ -247,7 +255,7 @@ public class Plex extends JavaPlugin
|
||||
{
|
||||
Bukkit.getOnlinePlayers().forEach(player ->
|
||||
{
|
||||
PlexPlayer plexPlayer = DataUtils.getPlayer(player.getUniqueId());
|
||||
PlexPlayer plexPlayer = playerService.getPlayer(player.getUniqueId());
|
||||
playerCache.getPlexPlayerMap().put(player.getUniqueId(), plexPlayer); //put them into the cache
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
package dev.plex;
|
||||
|
||||
public interface PlexBase
|
||||
{
|
||||
Plex plugin = Plex.get();
|
||||
}
|
||||
-103
@@ -1,103 +0,0 @@
|
||||
package dev.plex.cache;
|
||||
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.player.PlexPlayer;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* Parent cache class
|
||||
*/
|
||||
public class DataUtils
|
||||
{
|
||||
/**
|
||||
* Checks if the player has been on the server before
|
||||
*
|
||||
* @param uuid The unique ID of the player
|
||||
* @return true if the player is registered in the database
|
||||
*/
|
||||
public static boolean hasPlayedBefore(UUID uuid)
|
||||
{
|
||||
return Plex.get().getSqlPlayerData().exists(uuid);
|
||||
}
|
||||
|
||||
public static boolean hasPlayedBefore(String username)
|
||||
{
|
||||
return Plex.get().getSqlPlayerData().exists(username);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a player from cache or from the database
|
||||
*
|
||||
* @param uuid The unique ID of the player
|
||||
* @return a PlexPlayer object
|
||||
* @see PlexPlayer
|
||||
*/
|
||||
public static PlexPlayer getPlayer(UUID uuid)
|
||||
{
|
||||
return getPlayer(uuid, true);
|
||||
}
|
||||
|
||||
public static PlexPlayer getPlayer(UUID uuid, boolean loadExtraData)
|
||||
{
|
||||
if (Plex.get().getPlayerCache().getPlexPlayerMap().containsKey(uuid))
|
||||
{
|
||||
return Plex.get().getPlayerCache().getPlexPlayerMap().get(uuid);
|
||||
}
|
||||
|
||||
return Plex.get().getSqlPlayerData().getByUUID(uuid, loadExtraData);
|
||||
}
|
||||
|
||||
public static PlexPlayer getPlayer(String username)
|
||||
{
|
||||
return getPlayer(username, true);
|
||||
}
|
||||
|
||||
public static PlexPlayer getPlayer(String username, boolean loadExtraData)
|
||||
{
|
||||
Optional<PlexPlayer> plexPlayer = Plex.get().getPlayerCache().getPlexPlayerMap().values().stream().filter(player -> player.getName().equalsIgnoreCase(username)).findFirst();
|
||||
return plexPlayer.orElseGet(() -> Plex.get().getSqlPlayerData().getByName(username, loadExtraData));
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a player from cache or from the database
|
||||
*
|
||||
* @param ip The IP address of the player.
|
||||
* @return a PlexPlayer object
|
||||
* @see PlexPlayer
|
||||
*/
|
||||
public static PlexPlayer getPlayerByIP(String ip)
|
||||
{
|
||||
PlexPlayer player = Plex.get().getPlayerCache().getPlexPlayerMap().values().stream().filter(plexPlayer -> plexPlayer.getIps().contains(ip)).findFirst().orElse(null);
|
||||
if (player != null)
|
||||
{
|
||||
return player;
|
||||
}
|
||||
|
||||
return Plex.get().getSqlPlayerData().getByIP(ip);
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates a player's information in the database
|
||||
*
|
||||
* @param plexPlayer The PlexPlayer to update
|
||||
* @see PlexPlayer
|
||||
*/
|
||||
public static void update(PlexPlayer plexPlayer)
|
||||
{
|
||||
Plex.get().getSqlPlayerData().update(plexPlayer);
|
||||
}
|
||||
|
||||
/**
|
||||
* Inserts a player's information in the database
|
||||
*
|
||||
* @param plexPlayer The PlexPlayer to insert
|
||||
* @see PlexPlayer
|
||||
*/
|
||||
public static void insert(PlexPlayer plexPlayer)
|
||||
{
|
||||
Plex.get().getSqlPlayerData().insert(plexPlayer);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2,7 +2,6 @@ package dev.plex.command;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.cache.DataUtils;
|
||||
import dev.plex.command.annotation.CommandParameters;
|
||||
import dev.plex.command.annotation.CommandPermissions;
|
||||
import dev.plex.command.exception.CommandFailException;
|
||||
@@ -43,7 +42,7 @@ public abstract class PlexCommand extends Command implements PluginIdentifiableC
|
||||
/**
|
||||
* Returns the instance of the plugin
|
||||
*/
|
||||
protected static Plex plugin = Plex.get();
|
||||
protected final Plex plugin;
|
||||
|
||||
/**
|
||||
* The parameters for the command
|
||||
@@ -66,6 +65,7 @@ public abstract class PlexCommand extends Command implements PluginIdentifiableC
|
||||
public PlexCommand(boolean register)
|
||||
{
|
||||
super("");
|
||||
this.plugin = Plex.get();
|
||||
this.params = getClass().getAnnotation(CommandParameters.class);
|
||||
this.perms = getClass().getAnnotation(CommandPermissions.class);
|
||||
|
||||
@@ -149,7 +149,7 @@ public abstract class PlexCommand extends Command implements PluginIdentifiableC
|
||||
|
||||
if (sender instanceof ConsoleCommandSender && !sender.getName().equalsIgnoreCase("console")) //telnet
|
||||
{
|
||||
PlexPlayer plexPlayer = DataUtils.getPlayer(sender.getName());
|
||||
PlexPlayer plexPlayer = plugin.getPlayerService().getPlayer(sender.getName());
|
||||
|
||||
if (!perms.permission().isEmpty() && !plugin.getPermissions().playerHas(null, Bukkit.getPlayer(plexPlayer.getName()), perms.permission()))
|
||||
{
|
||||
@@ -218,7 +218,7 @@ public abstract class PlexCommand extends Command implements PluginIdentifiableC
|
||||
*/
|
||||
protected PlexPlayer getPlexPlayer(@NotNull Player player)
|
||||
{
|
||||
return DataUtils.getPlayer(player.getUniqueId());
|
||||
return plugin.getPlayerService().getPlayer(player.getUniqueId());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -431,7 +431,7 @@ public abstract class PlexCommand extends Command implements PluginIdentifiableC
|
||||
|
||||
protected PlexPlayer getOfflinePlexPlayer(UUID uuid)
|
||||
{
|
||||
PlexPlayer plexPlayer = DataUtils.getPlayer(uuid);
|
||||
PlexPlayer plexPlayer = plugin.getPlayerService().getPlayer(uuid);
|
||||
if (plexPlayer == null)
|
||||
{
|
||||
throw new PlayerNotFoundException();
|
||||
@@ -478,6 +478,6 @@ public abstract class PlexCommand extends Command implements PluginIdentifiableC
|
||||
|
||||
public CommandMap getMap()
|
||||
{
|
||||
return Plex.get().getServer().getCommandMap();
|
||||
return plugin.getServer().getCommandMap();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ public class AdminChatCMD extends PlexCommand
|
||||
PlexLog.debug("admin chat prefix: {0}", prefix);
|
||||
String message = StringUtils.join(args, " ");
|
||||
plugin.getServer().getConsoleSender().sendMessage(messageComponent("adminChatFormat", sender.getName(), prefix, message));
|
||||
MessageUtil.sendStaffChat(sender, SafeMiniMessage.mmDeserialize(message), PlexUtils.adminChat(sender.getName(), prefix, message).toArray(UUID[]::new));
|
||||
MessageUtil.sendStaffChat(plugin, sender, SafeMiniMessage.mmDeserialize(message), PlexUtils.adminChat(sender.getName(), prefix, message).toArray(UUID[]::new));
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.plex.command.impl;
|
||||
|
||||
import dev.plex.cache.DataUtils;
|
||||
|
||||
import dev.plex.command.PlexCommand;
|
||||
import dev.plex.command.annotation.CommandParameters;
|
||||
import dev.plex.command.annotation.CommandPermissions;
|
||||
@@ -45,7 +45,7 @@ public class BanCMD extends PlexCommand
|
||||
return usage();
|
||||
}
|
||||
|
||||
final PlexPlayer plexPlayer = DataUtils.getPlayer(args[0]);
|
||||
final PlexPlayer plexPlayer = plugin.getPlayerService().getPlayer(args[0]);
|
||||
|
||||
if (plexPlayer == null)
|
||||
{
|
||||
@@ -88,7 +88,7 @@ public class BanCMD extends PlexCommand
|
||||
{
|
||||
if (player != null)
|
||||
{
|
||||
BungeeUtil.kickPlayer(player, Punishment.generateBanMessage(punishment));
|
||||
BungeeUtil.kickPlayer(plugin, player, Punishment.generateBanMessage(punishment, plugin.config.getString("banning.ban_url"), plugin.getPlayerService()));
|
||||
}
|
||||
});
|
||||
PlexLog.debug("(From /ban command) PunishedPlayer UUID: " + plexPlayer.getUuid());
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.plex.command.impl;
|
||||
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import dev.plex.cache.DataUtils;
|
||||
import dev.plex.command.PlexCommand;
|
||||
import dev.plex.command.annotation.CommandParameters;
|
||||
import dev.plex.command.annotation.CommandPermissions;
|
||||
@@ -31,7 +31,7 @@ public class BcastLoginMessageCMD extends PlexCommand
|
||||
return usage();
|
||||
}
|
||||
|
||||
PlexPlayer plexPlayer = DataUtils.getPlayer(args[0]);
|
||||
PlexPlayer plexPlayer = plugin.getPlayerService().getPlayer(args[0]);
|
||||
|
||||
if (plexPlayer == null)
|
||||
{
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.plex.command.impl;
|
||||
|
||||
import dev.plex.cache.DataUtils;
|
||||
|
||||
import dev.plex.command.PlexCommand;
|
||||
import dev.plex.command.annotation.CommandParameters;
|
||||
import dev.plex.command.annotation.CommandPermissions;
|
||||
@@ -27,7 +27,7 @@ public class CommandSpyCMD extends PlexCommand
|
||||
{
|
||||
PlexPlayer plexPlayer = plugin.getPlayerCache().getPlexPlayer(playerSender.getUniqueId());
|
||||
plexPlayer.setCommandSpy(!plexPlayer.isCommandSpy());
|
||||
DataUtils.update(plexPlayer);
|
||||
plugin.getPlayerService().update(plexPlayer);
|
||||
send(sender, messageComponent("toggleCommandSpy")
|
||||
.append(Component.space())
|
||||
.append(plexPlayer.isCommandSpy() ? messageComponent("enabled") : messageComponent("disabled")));
|
||||
|
||||
@@ -38,9 +38,9 @@ public class DebugCMD extends PlexCommand
|
||||
if (args.length == 2)
|
||||
{
|
||||
Player player = getNonNullPlayer(args[1]);
|
||||
if (plugin.getRedisConnection().getJedis().exists(player.getUniqueId().toString()))
|
||||
if (plugin.getRedisConnection().query(jedis -> jedis.exists(player.getUniqueId().toString())))
|
||||
{
|
||||
plugin.getRedisConnection().getJedis().del(player.getUniqueId().toString());
|
||||
plugin.getRedisConnection().execute(jedis -> jedis.del(player.getUniqueId().toString()));
|
||||
return messageComponent("redisResetSuccessful", player.getName());
|
||||
}
|
||||
return messageComponent("redisResetPlayerNotFound");
|
||||
@@ -50,7 +50,7 @@ public class DebugCMD extends PlexCommand
|
||||
{
|
||||
for (World world : Bukkit.getWorlds())
|
||||
{
|
||||
GameRuleUtil.commitGlobalGameRules(world);
|
||||
GameRuleUtil.commitGlobalGameRules(plugin, world);
|
||||
PlexLog.log("Set global gamerules for world: " + world.getName());
|
||||
}
|
||||
for (String world : plugin.config.getConfigurationSection("worlds").getKeys(false))
|
||||
@@ -58,7 +58,7 @@ public class DebugCMD extends PlexCommand
|
||||
World bukkitWorld = Bukkit.getWorld(world);
|
||||
if (bukkitWorld != null)
|
||||
{
|
||||
GameRuleUtil.commitSpecificGameRules(bukkitWorld);
|
||||
GameRuleUtil.commitSpecificGameRules(plugin, bukkitWorld);
|
||||
PlexLog.log("Set specific gamerules for world: " + world.toLowerCase(Locale.ROOT));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.plex.command.impl;
|
||||
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import dev.plex.cache.DataUtils;
|
||||
import dev.plex.command.PlexCommand;
|
||||
import dev.plex.command.annotation.CommandParameters;
|
||||
import dev.plex.command.annotation.CommandPermissions;
|
||||
@@ -38,7 +38,7 @@ public class KickCMD extends PlexCommand
|
||||
return usage();
|
||||
}
|
||||
|
||||
PlexPlayer plexPlayer = DataUtils.getPlayer(args[0]);
|
||||
PlexPlayer plexPlayer = plugin.getPlayerService().getPlayer(args[0]);
|
||||
String reason = messageString("noReasonProvided");
|
||||
|
||||
if (plexPlayer == null)
|
||||
@@ -66,7 +66,7 @@ public class KickCMD extends PlexCommand
|
||||
punishment.setIp(player.getAddress().getAddress().getHostAddress().trim());
|
||||
plugin.getPunishmentManager().punish(plexPlayer, punishment);
|
||||
PlexUtils.broadcast(messageComponent("kickedPlayer", sender.getName(), plexPlayer.getName()));
|
||||
BungeeUtil.kickPlayer(player, Punishment.generateKickMessage(punishment));
|
||||
BungeeUtil.kickPlayer(plugin, player, Punishment.generateKickMessage(punishment, plugin.getPlayerService()));
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.plex.command.impl;
|
||||
|
||||
import dev.plex.cache.DataUtils;
|
||||
|
||||
import dev.plex.command.PlexCommand;
|
||||
import dev.plex.command.annotation.CommandParameters;
|
||||
import dev.plex.command.annotation.CommandPermissions;
|
||||
@@ -36,7 +36,7 @@ public class NotesCMD extends PlexCommand
|
||||
return usage();
|
||||
}
|
||||
|
||||
PlexPlayer plexPlayer = DataUtils.getPlayer(args[0]);
|
||||
PlexPlayer plexPlayer = plugin.getPlayerService().getPlayer(args[0]);
|
||||
|
||||
if (plexPlayer == null)
|
||||
{
|
||||
@@ -47,7 +47,7 @@ public class NotesCMD extends PlexCommand
|
||||
{
|
||||
case "list":
|
||||
{
|
||||
plugin.getSqlNotes().getNotes(plexPlayer.getUuid()).whenComplete((notes, ex) ->
|
||||
plugin.getNoteRepository().getNotes(plexPlayer.getUuid()).whenComplete((notes, ex) ->
|
||||
{
|
||||
if (notes.isEmpty())
|
||||
{
|
||||
@@ -69,7 +69,7 @@ public class NotesCMD extends PlexCommand
|
||||
{
|
||||
Note note = new Note(plexPlayer.getUuid(), content, playerSender.getUniqueId(), ZonedDateTime.now(ZoneId.of(TimeUtils.TIMEZONE)));
|
||||
plexPlayer.getNotes().add(note);
|
||||
plugin.getSqlNotes().addNote(note);
|
||||
plugin.getNoteRepository().addNote(note);
|
||||
return messageComponent("noteAdded");
|
||||
}
|
||||
}
|
||||
@@ -88,14 +88,14 @@ public class NotesCMD extends PlexCommand
|
||||
{
|
||||
return messageComponent("unableToParseNumber", args[2]);
|
||||
}
|
||||
plugin.getSqlNotes().getNotes(plexPlayer.getUuid()).whenComplete((notes, ex) ->
|
||||
plugin.getNoteRepository().getNotes(plexPlayer.getUuid()).whenComplete((notes, ex) ->
|
||||
{
|
||||
boolean deleted = false;
|
||||
for (Note note : notes)
|
||||
{
|
||||
if (note.getId() == id)
|
||||
{
|
||||
plugin.getSqlNotes().deleteNote(id, plexPlayer.getUuid()).whenComplete((notes1, ex1) ->
|
||||
plugin.getNoteRepository().deleteNote(id, plexPlayer.getUuid()).whenComplete((notes1, ex1) ->
|
||||
send(sender, messageComponent("removedNote", id)));
|
||||
deleted = true;
|
||||
}
|
||||
@@ -112,7 +112,7 @@ public class NotesCMD extends PlexCommand
|
||||
{
|
||||
int count = plexPlayer.getNotes().size();
|
||||
plexPlayer.getNotes().clear();
|
||||
DataUtils.update(plexPlayer);
|
||||
plugin.getPlayerService().update(plexPlayer);
|
||||
return messageComponent("clearedNotes", count);
|
||||
}
|
||||
default:
|
||||
@@ -127,7 +127,7 @@ public class NotesCMD extends PlexCommand
|
||||
AtomicReference<Component> noteList = new AtomicReference<>(messageComponent("notesHeader", plexPlayer.getName()));
|
||||
for (Note note : notes)
|
||||
{
|
||||
Component noteLine = messageComponent("notePrefix", note.getId(), DataUtils.getPlayer(note.getWrittenBy()).getName(), TimeUtils.useTimezone(note.getTimestamp()));
|
||||
Component noteLine = messageComponent("notePrefix", note.getId(), plugin.getPlayerService().getPlayer(note.getWrittenBy()).getName(), TimeUtils.useTimezone(note.getTimestamp()));
|
||||
noteLine = noteLine.append(messageComponent("noteLine", note.getNote()));
|
||||
noteList.set(noteList.get().append(Component.newline()));
|
||||
noteList.set(noteList.get().append(noteLine));
|
||||
|
||||
@@ -8,6 +8,7 @@ import dev.plex.command.source.RequiredCommandSource;
|
||||
import dev.plex.module.PlexModule;
|
||||
import dev.plex.module.PlexModuleFile;
|
||||
import dev.plex.util.BuildInfo;
|
||||
import dev.plex.util.PlexLog;
|
||||
import dev.plex.util.PlexUtils;
|
||||
import dev.plex.util.TimeUtils;
|
||||
|
||||
@@ -47,8 +48,10 @@ public class PlexCMD extends PlexCommand
|
||||
{
|
||||
checkPermission(sender, "plex.reload");
|
||||
plugin.config.load();
|
||||
PlexLog.setDebugEnabled(plugin.config.getBoolean("debug"));
|
||||
send(sender, "Reloaded config file");
|
||||
plugin.messages.load();
|
||||
PlexUtils.configure(plugin.config, plugin.messages);
|
||||
send(sender, "Reloaded messages file");
|
||||
plugin.indefBans.load(false);
|
||||
plugin.getPunishmentManager().mergeIndefiniteBans();
|
||||
@@ -72,10 +75,10 @@ public class PlexCMD extends PlexCommand
|
||||
{
|
||||
throw new CommandFailException("&cRedis is not enabled.");
|
||||
}
|
||||
plugin.getRedisConnection().getJedis().set("test", "123");
|
||||
plugin.getRedisConnection().execute(jedis -> jedis.set("test", "123"));
|
||||
send(sender, "Set test to 123. Now outputting key test...");
|
||||
send(sender, plugin.getRedisConnection().getJedis().get("test"));
|
||||
plugin.getRedisConnection().getJedis().close();
|
||||
String test = plugin.getRedisConnection().query(jedis -> jedis.get("test"));
|
||||
send(sender, test);
|
||||
return null;
|
||||
}
|
||||
else if (args[0].equalsIgnoreCase("modules"))
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.plex.command.impl;
|
||||
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import dev.plex.cache.DataUtils;
|
||||
import dev.plex.command.PlexCommand;
|
||||
import dev.plex.command.annotation.CommandParameters;
|
||||
import dev.plex.command.annotation.CommandPermissions;
|
||||
@@ -31,11 +31,11 @@ public class PunishmentsCMD extends PlexCommand
|
||||
{
|
||||
if (args.length == 0)
|
||||
{
|
||||
new PunishmentMenu().open(playerSender);
|
||||
new PunishmentMenu(plugin.getPlayerService()).open(playerSender);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!DataUtils.hasPlayedBefore(args[0]))
|
||||
if (!plugin.getPlayerService().hasPlayedBefore(args[0]))
|
||||
{
|
||||
throw new PlayerNotFoundException();
|
||||
}
|
||||
@@ -43,7 +43,7 @@ public class PunishmentsCMD extends PlexCommand
|
||||
final OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(args[0]);
|
||||
final PlexPlayer player = offlinePlayer.isOnline() ? getOnlinePlexPlayer(args[0]) : getOfflinePlexPlayer(offlinePlayer.getUniqueId());
|
||||
|
||||
new PunishedPlayerMenu(player).open(playerSender);
|
||||
new PunishedPlayerMenu(player, plugin.getPlayerService()).open(playerSender);
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.plex.command.impl;
|
||||
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import dev.plex.cache.DataUtils;
|
||||
import dev.plex.command.PlexCommand;
|
||||
import dev.plex.command.annotation.CommandParameters;
|
||||
import dev.plex.command.annotation.CommandPermissions;
|
||||
@@ -42,7 +42,7 @@ public class RemoveLoginMessageCMD extends PlexCommand
|
||||
return messageComponent("specifyPlayer");
|
||||
}
|
||||
|
||||
PlexPlayer plexPlayer = DataUtils.getPlayer(args[1]);
|
||||
PlexPlayer plexPlayer = plugin.getPlayerService().getPlayer(args[1]);
|
||||
if (plexPlayer == null)
|
||||
{
|
||||
return messageComponent("playerNotFound");
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.plex.command.impl;
|
||||
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import dev.plex.cache.DataUtils;
|
||||
import dev.plex.command.PlexCommand;
|
||||
import dev.plex.command.annotation.CommandParameters;
|
||||
import dev.plex.command.annotation.CommandPermissions;
|
||||
@@ -48,7 +48,7 @@ public class SetLoginMessageCMD extends PlexCommand
|
||||
{
|
||||
return messageComponent("specifyLoginMessage");
|
||||
}
|
||||
PlexPlayer plexPlayer = DataUtils.getPlayer(args[1]);
|
||||
PlexPlayer plexPlayer = plugin.getPlayerService().getPlayer(args[1]);
|
||||
if (plexPlayer == null)
|
||||
{
|
||||
return messageComponent("playerNotFound");
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.plex.command.impl;
|
||||
|
||||
import dev.plex.cache.DataUtils;
|
||||
|
||||
import dev.plex.command.PlexCommand;
|
||||
import dev.plex.command.annotation.CommandParameters;
|
||||
import dev.plex.command.annotation.CommandPermissions;
|
||||
@@ -45,7 +45,7 @@ public class TagCMD extends PlexCommand
|
||||
return messageComponent("noPermissionConsole");
|
||||
}
|
||||
assert playerSender != null;
|
||||
PlexPlayer player = DataUtils.getPlayer(playerSender.getUniqueId());
|
||||
PlexPlayer player = plugin.getPlayerService().getPlayer(playerSender.getUniqueId());
|
||||
if (args.length < 2)
|
||||
{
|
||||
return usage("/tag set <prefix>");
|
||||
@@ -59,7 +59,7 @@ public class TagCMD extends PlexCommand
|
||||
}
|
||||
|
||||
player.setPrefix(MiniMessage.miniMessage().serialize(convertedComponent));
|
||||
DataUtils.update(player);
|
||||
plugin.getPlayerService().update(player);
|
||||
return messageComponent("prefixSetTo", MiniMessage.miniMessage().serialize(convertedComponent));
|
||||
}
|
||||
|
||||
@@ -77,16 +77,16 @@ public class TagCMD extends PlexCommand
|
||||
return null;
|
||||
}
|
||||
|
||||
PlexPlayer player = DataUtils.getPlayer(playerSender.getUniqueId());
|
||||
PlexPlayer player = plugin.getPlayerService().getPlayer(playerSender.getUniqueId());
|
||||
player.setPrefix(null);
|
||||
DataUtils.update(player);
|
||||
plugin.getPlayerService().update(player);
|
||||
return messageComponent("prefixCleared");
|
||||
}
|
||||
checkPermission(sender, "plex.tag.clear.others");
|
||||
Player target = getNonNullPlayer(args[1]);
|
||||
PlexPlayer plexTarget = DataUtils.getPlayer(target.getUniqueId());
|
||||
PlexPlayer plexTarget = plugin.getPlayerService().getPlayer(target.getUniqueId());
|
||||
plexTarget.setPrefix(null);
|
||||
DataUtils.update(plexTarget);
|
||||
plugin.getPlayerService().update(plexTarget);
|
||||
return messageComponent("otherPrefixCleared", target.getName());
|
||||
}
|
||||
return usage();
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.plex.command.impl;
|
||||
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import dev.plex.cache.DataUtils;
|
||||
import dev.plex.command.PlexCommand;
|
||||
import dev.plex.command.annotation.CommandParameters;
|
||||
import dev.plex.command.annotation.CommandPermissions;
|
||||
@@ -39,7 +39,7 @@ public class TempbanCMD extends PlexCommand
|
||||
return usage();
|
||||
}
|
||||
|
||||
PlexPlayer target = DataUtils.getPlayer(args[0]);
|
||||
PlexPlayer target = plugin.getPlayerService().getPlayer(args[0]);
|
||||
String reason;
|
||||
|
||||
if (target == null)
|
||||
@@ -78,7 +78,7 @@ public class TempbanCMD extends PlexCommand
|
||||
PlexUtils.broadcast(messageComponent("banningPlayer", sender.getName(), target.getName()));
|
||||
if (player != null)
|
||||
{
|
||||
BungeeUtil.kickPlayer(player, Punishment.generateBanMessage(punishment));
|
||||
BungeeUtil.kickPlayer(plugin, player, Punishment.generateBanMessage(punishment, plugin.config.getString("banning.ban_url"), plugin.getPlayerService()));
|
||||
}
|
||||
if (rollBack)
|
||||
{
|
||||
|
||||
@@ -70,7 +70,7 @@ public class ToggleCMD extends PlexCommand
|
||||
}
|
||||
}
|
||||
}
|
||||
new ToggleMenu().open(playerSender);
|
||||
new ToggleMenu(plugin).open(playerSender);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.plex.command.impl;
|
||||
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import dev.plex.cache.DataUtils;
|
||||
import dev.plex.command.PlexCommand;
|
||||
import dev.plex.command.annotation.CommandParameters;
|
||||
import dev.plex.command.annotation.CommandPermissions;
|
||||
@@ -34,7 +34,7 @@ public class UnbanCMD extends PlexCommand
|
||||
|
||||
if (args.length == 1)
|
||||
{
|
||||
PlexPlayer target = DataUtils.getPlayer(args[0]);
|
||||
PlexPlayer target = plugin.getPlayerService().getPlayer(args[0]);
|
||||
|
||||
if (target == null)
|
||||
{
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.plex.command.impl;
|
||||
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import dev.plex.cache.DataUtils;
|
||||
import dev.plex.command.PlexCommand;
|
||||
import dev.plex.command.annotation.CommandParameters;
|
||||
import dev.plex.command.annotation.CommandPermissions;
|
||||
@@ -30,7 +30,7 @@ public class UnfreezeCMD extends PlexCommand
|
||||
{
|
||||
return usage();
|
||||
}
|
||||
PlexPlayer punishedPlayer = DataUtils.getPlayer(args[0]);
|
||||
PlexPlayer punishedPlayer = plugin.getPlayerService().getPlayer(args[0]);
|
||||
if (punishedPlayer == null)
|
||||
{
|
||||
throw new PlayerNotFoundException();
|
||||
@@ -44,7 +44,7 @@ public class UnfreezeCMD extends PlexCommand
|
||||
punishedPlayer.getPunishments().stream().filter(punishment -> punishment.getType() == PunishmentType.FREEZE && punishment.isActive()).forEach(punishment ->
|
||||
{
|
||||
punishment.setActive(false);
|
||||
plugin.getSqlPunishment().updatePunishment(punishment.getType(), false, punishment.getPunished());
|
||||
plugin.getPunishmentRepository().updatePunishment(punishment.getType(), false, punishment.getPunished());
|
||||
});
|
||||
PlexUtils.broadcast(messageComponent("unfrozePlayer", sender.getName(), punishedPlayer.getName()));
|
||||
return null;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.plex.command.impl;
|
||||
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import dev.plex.cache.DataUtils;
|
||||
import dev.plex.command.PlexCommand;
|
||||
import dev.plex.command.annotation.CommandParameters;
|
||||
import dev.plex.command.annotation.CommandPermissions;
|
||||
@@ -30,7 +30,7 @@ public class UnmuteCMD extends PlexCommand
|
||||
{
|
||||
return usage();
|
||||
}
|
||||
PlexPlayer punishedPlayer = DataUtils.getPlayer(args[0]);
|
||||
PlexPlayer punishedPlayer = plugin.getPlayerService().getPlayer(args[0]);
|
||||
if (punishedPlayer == null)
|
||||
{
|
||||
throw new PlayerNotFoundException();
|
||||
@@ -44,7 +44,7 @@ public class UnmuteCMD extends PlexCommand
|
||||
punishedPlayer.getPunishments().stream().filter(punishment -> punishment.getType() == PunishmentType.MUTE && punishment.isActive()).forEach(punishment ->
|
||||
{
|
||||
punishment.setActive(false);
|
||||
plugin.getSqlPunishment().updatePunishment(punishment.getType(), false, punishment.getPunished());
|
||||
plugin.getPunishmentRepository().updatePunishment(punishment.getType(), false, punishment.getPunished());
|
||||
});
|
||||
PlexUtils.broadcast(messageComponent("unmutedPlayer", sender.getName(), punishedPlayer.getName()));
|
||||
return null;
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package dev.plex.command.impl;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.command.PlexCommand;
|
||||
import dev.plex.command.annotation.CommandParameters;
|
||||
import dev.plex.command.annotation.CommandPermissions;
|
||||
@@ -36,7 +35,7 @@ public class WorldCMD extends PlexCommand
|
||||
|
||||
World world = getNonNullWorld(args[0]);
|
||||
boolean playerWorld = args[0].matches("[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}");
|
||||
if (playerWorld && Plex.get().getModuleManager().getModules().stream().anyMatch(plexModule -> plexModule.getPlexModuleFile().getName().equalsIgnoreCase("Module-TFMExtras")))
|
||||
if (playerWorld && plugin.getModuleManager().getModules().stream().anyMatch(plexModule -> plexModule.getPlexModuleFile().getName().equalsIgnoreCase("Module-TFMExtras")))
|
||||
{
|
||||
checkPermission(playerSender, "plex.world.playerworlds");
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.plex.handlers;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import dev.plex.PlexBase;
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.command.PlexCommand;
|
||||
import dev.plex.command.impl.DebugCMD;
|
||||
import dev.plex.util.PlexLog;
|
||||
@@ -11,10 +11,13 @@ import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class CommandHandler implements PlexBase
|
||||
public class CommandHandler
|
||||
{
|
||||
public CommandHandler()
|
||||
private final Plex plugin;
|
||||
|
||||
public CommandHandler(Plex plugin)
|
||||
{
|
||||
this.plugin = plugin;
|
||||
Set<Class<? extends PlexCommand>> commandSet = ReflectionsUtil.getClassesBySubType("dev.plex.command.impl", PlexCommand.class);
|
||||
List<PlexCommand> commands = Lists.newArrayList();
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.plex.handlers;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import dev.plex.PlexBase;
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.listener.PlexListener;
|
||||
import dev.plex.listener.annotation.Toggleable;
|
||||
import dev.plex.util.PlexLog;
|
||||
@@ -11,10 +11,13 @@ import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class ListenerHandler implements PlexBase
|
||||
public class ListenerHandler
|
||||
{
|
||||
public ListenerHandler()
|
||||
private final Plex plugin;
|
||||
|
||||
public ListenerHandler(Plex plugin)
|
||||
{
|
||||
this.plugin = plugin;
|
||||
Set<Class<? extends PlexListener>> listenerSet = ReflectionsUtil.getClassesBySubType("dev.plex.listener.impl", PlexListener.class);
|
||||
List<PlexListener> listeners = Lists.newArrayList();
|
||||
|
||||
|
||||
@@ -1,12 +1,20 @@
|
||||
package dev.plex.listener;
|
||||
|
||||
import dev.plex.PlexBase;
|
||||
import dev.plex.Plex;
|
||||
import org.bukkit.event.Listener;
|
||||
|
||||
public abstract class PlexListener implements Listener, PlexBase
|
||||
public abstract class PlexListener implements Listener
|
||||
{
|
||||
protected final Plex plugin;
|
||||
|
||||
public PlexListener()
|
||||
{
|
||||
this(Plex.get());
|
||||
}
|
||||
|
||||
protected PlexListener(Plex plugin)
|
||||
{
|
||||
this.plugin = plugin;
|
||||
plugin.getServer().getPluginManager().registerEvents(this, plugin);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package dev.plex.listener.impl;
|
||||
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.cache.DataUtils;
|
||||
import dev.plex.listener.PlexListener;
|
||||
import dev.plex.player.PlexPlayer;
|
||||
import dev.plex.punishment.Punishment;
|
||||
@@ -20,7 +18,7 @@ public class BanListener extends PlexListener
|
||||
if (uuidBan != null)
|
||||
{
|
||||
event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_BANNED,
|
||||
!uuidBan.getReason().isEmpty() ? Punishment.generateIndefBanMessageWithReason("UUID", uuidBan.getReason()) : Punishment.generateIndefBanMessage("UUID"));
|
||||
!uuidBan.getReason().isEmpty() ? Punishment.generateIndefBanMessageWithReason("UUID", plugin.config.getString("banning.ban_url"), uuidBan.getReason()) : Punishment.generateIndefBanMessage("UUID", plugin.config.getString("banning.ban_url")));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -28,7 +26,7 @@ public class BanListener extends PlexListener
|
||||
if (ipBan != null)
|
||||
{
|
||||
event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_BANNED,
|
||||
!ipBan.getReason().isEmpty() ? Punishment.generateIndefBanMessageWithReason("IP", ipBan.getReason()) : Punishment.generateIndefBanMessage("IP"));
|
||||
!ipBan.getReason().isEmpty() ? Punishment.generateIndefBanMessageWithReason("IP", plugin.config.getString("banning.ban_url"), ipBan.getReason()) : Punishment.generateIndefBanMessage("IP", plugin.config.getString("banning.ban_url")));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -37,32 +35,32 @@ public class BanListener extends PlexListener
|
||||
if (userBan != null)
|
||||
{
|
||||
event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_BANNED,
|
||||
!userBan.getReason().isEmpty() ? Punishment.generateIndefBanMessageWithReason("username", userBan.getReason()) : Punishment.generateIndefBanMessage("username"));
|
||||
!userBan.getReason().isEmpty() ? Punishment.generateIndefBanMessageWithReason("username", plugin.config.getString("banning.ban_url"), userBan.getReason()) : Punishment.generateIndefBanMessage("username", plugin.config.getString("banning.ban_url")));
|
||||
return;
|
||||
}
|
||||
|
||||
if (plugin.getPunishmentManager().isBanned(event.getUniqueId()))
|
||||
{
|
||||
if (Plex.get().getPermissions() != null && Plex.get().getPermissions().playerHas(null, Bukkit.getOfflinePlayer(event.getUniqueId()), "plex.ban.bypass"))
|
||||
if (plugin.getPermissions() != null && plugin.getPermissions().playerHas(null, Bukkit.getOfflinePlayer(event.getUniqueId()), "plex.ban.bypass"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
PlexPlayer player = DataUtils.getPlayer(event.getUniqueId());
|
||||
PlexPlayer player = plugin.getPlayerService().getPlayer(event.getUniqueId());
|
||||
player.getPunishments().stream().filter(punishment -> (punishment.getType() == PunishmentType.BAN || punishment.getType() == PunishmentType.TEMPBAN) && punishment.isActive()).findFirst().ifPresent(punishment ->
|
||||
event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_BANNED,
|
||||
Punishment.generateBanMessage(punishment)));
|
||||
Punishment.generateBanMessage(punishment, plugin.config.getString("banning.ban_url"), plugin.getPlayerService())));
|
||||
return;
|
||||
}
|
||||
Punishment ipBannedPunishment = plugin.getPunishmentManager().getBanByIP(event.getAddress().getHostAddress());
|
||||
if (ipBannedPunishment != null)
|
||||
{
|
||||
// Don't check if the other account that's banned has bypass abilities, check if current has only
|
||||
if (Plex.get().getPermissions() != null && Plex.get().getPermissions().playerHas(null, Bukkit.getOfflinePlayer(event.getUniqueId()), "plex.ban.bypass"))
|
||||
if (plugin.getPermissions() != null && plugin.getPermissions().playerHas(null, Bukkit.getOfflinePlayer(event.getUniqueId()), "plex.ban.bypass"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_BANNED,
|
||||
Punishment.generateBanMessage(ipBannedPunishment));
|
||||
Punishment.generateBanMessage(ipBannedPunishment, plugin.config.getString("banning.ban_url"), plugin.getPlayerService()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -38,16 +38,15 @@ public class ChatListener extends PlexListener
|
||||
public static BiConsumer<AsyncChatEvent, PlexPlayer> PRE_RENDERER = ChatListener::defaultChatProcessing;
|
||||
private final PlexChatRenderer renderer = new PlexChatRenderer();
|
||||
|
||||
private static final Component format = SafeMiniMessage.mmDeserialize(plugin.config.getString("chat.format"));
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public void onChat(AsyncChatEvent event)
|
||||
{
|
||||
PlexPlayer plexPlayer = plugin.getPlayerCache().getPlexPlayerMap().get(event.getPlayer().getUniqueId());
|
||||
renderer.format = SafeMiniMessage.mmDeserialize(plugin.config.getString("chat.format"));
|
||||
if (plexPlayer.isStaffChat())
|
||||
{
|
||||
String prefix = PlexUtils.mmSerialize(VaultHook.getPrefix(event.getPlayer())); // Don't use PlexPlayer#getPrefix because that returns their custom set prefix and not their group's
|
||||
MessageUtil.sendStaffChat(event.getPlayer(), event.message(), PlexUtils.adminChat(event.getPlayer().getName(), prefix, SafeMiniMessage.mmSerialize(event.message())).toArray(UUID[]::new));
|
||||
MessageUtil.sendStaffChat(plugin, event.getPlayer(), event.message(), PlexUtils.adminChat(event.getPlayer().getName(), prefix, SafeMiniMessage.mmSerialize(event.message())).toArray(UUID[]::new));
|
||||
plugin.getServer().getConsoleSender().sendMessage(PlexUtils.messageComponent("adminChatFormat", event.getPlayer().getName(), prefix, SafeMiniMessage.mmSerialize(event.message().replaceText(URL_REPLACEMENT_CONFIG))));
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
@@ -74,6 +73,7 @@ public class ChatListener extends PlexListener
|
||||
{
|
||||
public boolean hasPrefix;
|
||||
public Component prefix;
|
||||
public Component format;
|
||||
public Supplier<Component> before = null;
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.plex.listener.impl;
|
||||
|
||||
import dev.plex.cache.DataUtils;
|
||||
|
||||
import dev.plex.listener.PlexListener;
|
||||
import dev.plex.player.PlexPlayer;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@@ -12,7 +12,7 @@ public class FreezeListener extends PlexListener
|
||||
@EventHandler
|
||||
public void onPlayerMove(PlayerMoveEvent e)
|
||||
{
|
||||
PlexPlayer player = DataUtils.getPlayer(e.getPlayer().getUniqueId());
|
||||
PlexPlayer player = plugin.getPlayerService().getPlayer(e.getPlayer().getUniqueId());
|
||||
if (player.isFrozen())
|
||||
{
|
||||
e.setCancelled(true);
|
||||
@@ -22,7 +22,7 @@ public class FreezeListener extends PlexListener
|
||||
@EventHandler
|
||||
public void onPlayerTeleport(PlayerTeleportEvent e)
|
||||
{
|
||||
PlexPlayer player = DataUtils.getPlayer(e.getPlayer().getUniqueId());
|
||||
PlexPlayer player = plugin.getPlayerService().getPlayer(e.getPlayer().getUniqueId());
|
||||
if (player.isFrozen())
|
||||
{
|
||||
e.setCancelled(true);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.plex.listener.impl;
|
||||
|
||||
import dev.plex.cache.DataUtils;
|
||||
|
||||
import dev.plex.listener.PlexListener;
|
||||
import dev.plex.meta.PlayerMeta;
|
||||
import dev.plex.player.PlexPlayer;
|
||||
@@ -27,17 +27,17 @@ public class PlayerListener extends PlexListener
|
||||
Player player = event.getPlayer();
|
||||
PlexPlayer plexPlayer;
|
||||
|
||||
if (!DataUtils.hasPlayedBefore(player.getUniqueId()))
|
||||
if (!plugin.getPlayerService().hasPlayedBefore(player.getUniqueId()))
|
||||
{
|
||||
PlexLog.log("A player with this name has not joined the server before, creating new entry.");
|
||||
plexPlayer = new PlexPlayer(player.getUniqueId()); // it doesn't! okay so now create the object
|
||||
plexPlayer.setName(player.getName()); // set the name of the player
|
||||
plexPlayer.setIps(List.of(player.getAddress().getAddress().getHostAddress().trim())); // set the arraylist of ips
|
||||
DataUtils.insert(plexPlayer); // insert data in some wack db
|
||||
plugin.getPlayerService().insert(plexPlayer); // insert data in some wack db
|
||||
}
|
||||
else
|
||||
{
|
||||
plexPlayer = DataUtils.getPlayer(player.getUniqueId());
|
||||
plexPlayer = plugin.getPlayerService().getPlayer(player.getUniqueId());
|
||||
List<String> ips = plexPlayer.getIps();
|
||||
String currentIP = player.getAddress().getAddress().getHostAddress().trim();
|
||||
if (!ips.contains(currentIP))
|
||||
@@ -45,13 +45,13 @@ public class PlayerListener extends PlexListener
|
||||
PlexLog.debug("New IP address detected for player: " + player.getName() + ". Adding " + currentIP + " to the database.");
|
||||
ips.add(currentIP);
|
||||
plexPlayer.setIps(ips);
|
||||
DataUtils.update(plexPlayer);
|
||||
plugin.getPlayerService().update(plexPlayer);
|
||||
}
|
||||
if (!plexPlayer.getName().equals(player.getName()))
|
||||
{
|
||||
PlexLog.log(plexPlayer.getName() + " has a new name. Changing it to " + player.getName());
|
||||
plexPlayer.setName(player.getName());
|
||||
DataUtils.update(plexPlayer);
|
||||
plugin.getPlayerService().update(plexPlayer);
|
||||
}
|
||||
}
|
||||
plugin.getPlayerCache().getPlexPlayerMap().put(player.getUniqueId(), plexPlayer);
|
||||
@@ -66,9 +66,7 @@ public class PlayerListener extends PlexListener
|
||||
PlexUtils.broadcast(PlexUtils.stringToComponent(loginMessage));
|
||||
}
|
||||
|
||||
plexPlayer.loadNotes();
|
||||
|
||||
plugin.getSqlNotes().getNotes(plexPlayer.getUuid()).whenComplete((notes, ex) ->
|
||||
plugin.getNoteRepository().getNotes(plexPlayer.getUuid()).whenComplete((notes, ex) ->
|
||||
{
|
||||
if (!notes.isEmpty())
|
||||
{
|
||||
@@ -82,14 +80,14 @@ public class PlayerListener extends PlexListener
|
||||
public void onPlayerSave(PlayerQuitEvent event)
|
||||
{
|
||||
PlexPlayer plexPlayer = plugin.getPlayerCache().getPlexPlayerMap().get(event.getPlayer().getUniqueId()); //get the player because it's literally impossible for them to not have an object
|
||||
DataUtils.update(plexPlayer);
|
||||
plugin.getPlayerService().update(plexPlayer);
|
||||
plugin.getPlayerCache().getPlexPlayerMap().remove(event.getPlayer().getUniqueId()); //remove them from cache
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onPlayerInventoryClose(InventoryCloseEvent event)
|
||||
{
|
||||
PlexPlayer player = DataUtils.getPlayer(event.getPlayer().getUniqueId());
|
||||
PlexPlayer player = plugin.getPlayerService().getPlayer(event.getPlayer().getUniqueId());
|
||||
if (player.isLockedUp())
|
||||
{
|
||||
Bukkit.getGlobalRegionScheduler().runDelayed(plugin, (scheduledTask) -> event.getPlayer().openInventory(event.getInventory()), 1L);
|
||||
@@ -99,7 +97,7 @@ public class PlayerListener extends PlexListener
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onInventoryClick(InventoryClickEvent event)
|
||||
{
|
||||
PlexPlayer player = DataUtils.getPlayer(event.getWhoClicked().getUniqueId());
|
||||
PlexPlayer player = plugin.getPlayerService().getPlayer(event.getWhoClicked().getUniqueId());
|
||||
if (player.isLockedUp())
|
||||
{
|
||||
event.setCancelled(true);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.plex.listener.impl;
|
||||
|
||||
import dev.plex.cache.DataUtils;
|
||||
|
||||
import dev.plex.hook.VaultHook;
|
||||
import dev.plex.listener.PlexListener;
|
||||
import dev.plex.meta.PlayerMeta;
|
||||
@@ -18,7 +18,7 @@ public class TabListener extends PlexListener
|
||||
public void onPlayerJoin(PlayerJoinEvent event)
|
||||
{
|
||||
Player player = event.getPlayer();
|
||||
PlexPlayer plexPlayer = DataUtils.getPlayer(player.getUniqueId());
|
||||
player.playerListName(PlexUtils.mmDeserialize(PlayerMeta.getColor(plexPlayer) + player.getName()));
|
||||
PlexPlayer plexPlayer = plugin.getPlayerService().getPlayer(player.getUniqueId());
|
||||
player.playerListName(PlexUtils.mmDeserialize(PlayerMeta.getColor(plugin.config, plexPlayer) + player.getName()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package dev.plex.listener.impl;
|
||||
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.listener.PlexListener;
|
||||
import dev.plex.util.PlexUtils;
|
||||
import io.papermc.paper.event.player.AsyncChatEvent;
|
||||
@@ -80,7 +79,7 @@ public class TogglesListener extends PlexListener
|
||||
public void onChat(AsyncChatEvent event)
|
||||
{
|
||||
Player player = event.getPlayer();
|
||||
if (!plugin.toggles.getBoolean("chat") && !Plex.get().getPermissions().has(player, "plex.mute.bypass"))
|
||||
if (!plugin.toggles.getBoolean("chat") && !plugin.getPermissions().has(player, "plex.mute.bypass"))
|
||||
{
|
||||
event.getPlayer().sendMessage(PlexUtils.messageComponent("chatIsOff"));
|
||||
event.setCancelled(true);
|
||||
@@ -91,7 +90,7 @@ public class TogglesListener extends PlexListener
|
||||
public void onCommand(PlayerCommandPreprocessEvent event)
|
||||
{
|
||||
Player player = event.getPlayer();
|
||||
if (!plugin.toggles.getBoolean("chat") && !Plex.get().getPermissions().has(player, "plex.mute.bypass"))
|
||||
if (!plugin.toggles.getBoolean("chat") && !plugin.getPermissions().has(player, "plex.mute.bypass"))
|
||||
{
|
||||
String message = event.getMessage();
|
||||
message = message.replaceAll("\\s.*", "").replaceFirst("/", "");
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package dev.plex.listener.impl;
|
||||
|
||||
|
||||
import de.myzelyam.api.vanish.PlayerShowEvent;
|
||||
import dev.plex.cache.DataUtils;
|
||||
import dev.plex.listener.PlexListener;
|
||||
import dev.plex.meta.PlayerMeta;
|
||||
import dev.plex.player.PlexPlayer;
|
||||
@@ -22,7 +22,7 @@ public class VanishListener extends PlexListener
|
||||
{
|
||||
return;
|
||||
}
|
||||
PlexPlayer plexPlayer = DataUtils.getPlayer(event.getPlayer().getUniqueId());
|
||||
PlexPlayer plexPlayer = plugin.getPlayerService().getPlayer(event.getPlayer().getUniqueId());
|
||||
String loginMessage = PlayerMeta.getLoginMessage(plexPlayer);
|
||||
if (!loginMessage.isEmpty())
|
||||
{
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package dev.plex.menu.impl;
|
||||
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.menu.AbstractMenu;
|
||||
import dev.plex.menu.pagination.PageableMenu;
|
||||
import dev.plex.player.PlayerService;
|
||||
import dev.plex.player.PlexPlayer;
|
||||
import dev.plex.punishment.Punishment;
|
||||
import dev.plex.util.TimeUtils;
|
||||
@@ -16,11 +16,13 @@ import org.bukkit.inventory.ItemStack;
|
||||
public class PunishedPlayerMenu extends PageableMenu<Punishment>
|
||||
{
|
||||
private final PlexPlayer punishedPlayer;
|
||||
private final PlayerService playerService;
|
||||
|
||||
public PunishedPlayerMenu(PlexPlayer player)
|
||||
public PunishedPlayerMenu(PlexPlayer player, PlayerService playerService)
|
||||
{
|
||||
super("<red><bold>Punishments - " + player.getName(), AbstractMenu.Rows.SIX);
|
||||
this.punishedPlayer = player;
|
||||
this.playerService = playerService;
|
||||
onClick((inventoryView, itemStacks, player1, itemStack) -> true);
|
||||
this.init();
|
||||
}
|
||||
@@ -28,7 +30,7 @@ public class PunishedPlayerMenu extends PageableMenu<Punishment>
|
||||
@Override
|
||||
protected ItemStack toItem(Punishment object)
|
||||
{
|
||||
return new ItemBuilder(Material.PAPER).displayName("<!italic><red>" + object.getType().name()).lore("<!italic><red>By: <gold>" + (object.getPunisher() == null ? "CONSOLE" : Plex.get().getSqlPlayerData().getNameByUUID(object.getPunisher())), "<!italic><red>Issued: <gold>" + TimeUtils.useTimezone(object.getIssueDate()), "<!italic><red>Expire(d/s): <gold>" + TimeUtils.useTimezone(object.getEndDate()), "<!italic><red>Reason: <gold>" + object.getReason()).build();
|
||||
return new ItemBuilder(Material.PAPER).displayName("<!italic><red>" + object.getType().name()).lore("<!italic><red>By: <gold>" + (object.getPunisher() == null ? "CONSOLE" : playerService.getNameByUUID(object.getPunisher())), "<!italic><red>Issued: <gold>" + TimeUtils.useTimezone(object.getIssueDate()), "<!italic><red>Expire(d/s): <gold>" + TimeUtils.useTimezone(object.getEndDate()), "<!italic><red>Reason: <gold>" + object.getReason()).build();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package dev.plex.menu.impl;
|
||||
|
||||
import dev.plex.cache.DataUtils;
|
||||
import dev.plex.menu.AbstractMenu;
|
||||
import dev.plex.menu.pagination.PageableMenu;
|
||||
import dev.plex.player.PlayerService;
|
||||
import dev.plex.player.PlexPlayer;
|
||||
import dev.plex.util.PlexLog;
|
||||
import dev.plex.util.item.ItemBuilder;
|
||||
@@ -20,9 +20,12 @@ import org.bukkit.inventory.meta.SkullMeta;
|
||||
|
||||
public class PunishmentMenu extends PageableMenu<Player>
|
||||
{
|
||||
public PunishmentMenu()
|
||||
private final PlayerService playerService;
|
||||
|
||||
public PunishmentMenu(PlayerService playerService)
|
||||
{
|
||||
super("<aqua><bold>Punishments", AbstractMenu.Rows.SIX);
|
||||
this.playerService = playerService;
|
||||
PlexLog.debug("list: {0}", list().size());
|
||||
onClick((inventoryView, itemStacks, player, itemStack) ->
|
||||
{
|
||||
@@ -35,14 +38,14 @@ public class PunishmentMenu extends PageableMenu<Player>
|
||||
{
|
||||
meta.setOwningPlayer(Bukkit.getOfflinePlayer("markbyron"));
|
||||
}
|
||||
PlexPlayer punishedPlayer = DataUtils.getPlayer(meta.getOwningPlayer().getUniqueId());
|
||||
PlexPlayer punishedPlayer = playerService.getPlayer(meta.getOwningPlayer().getUniqueId());
|
||||
if (punishedPlayer == null)
|
||||
{
|
||||
player.sendMessage(Component.text("This player does not exist. Try doing /punishments <player> instead.").color(NamedTextColor.RED));
|
||||
player.closeInventory();
|
||||
return true;
|
||||
}
|
||||
new PunishedPlayerMenu(punishedPlayer).open(player);
|
||||
new PunishedPlayerMenu(punishedPlayer, playerService).open(player);
|
||||
return true;
|
||||
});
|
||||
|
||||
|
||||
@@ -18,10 +18,10 @@ public class ToggleMenu extends AbstractMenu
|
||||
{
|
||||
private final Plex plugin;
|
||||
|
||||
public ToggleMenu()
|
||||
public ToggleMenu(Plex plugin)
|
||||
{
|
||||
super("<green><bold>Toggles", Rows.ONE);
|
||||
this.plugin = Plex.get();
|
||||
this.plugin = plugin;
|
||||
resetExplosionItem(this.inventory());
|
||||
resetFluidspreadItem(this.inventory());
|
||||
resetDropsItem(this.inventory());
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.plex.meta;
|
||||
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.config.Config;
|
||||
import dev.plex.hook.VaultHook;
|
||||
import dev.plex.player.PlexPlayer;
|
||||
import dev.plex.util.PlexUtils;
|
||||
@@ -68,16 +68,16 @@ public class PlayerMeta
|
||||
return "";
|
||||
}
|
||||
|
||||
public static String getColor(PlexPlayer plexPlayer)
|
||||
public static String getColor(Config config, PlexPlayer plexPlayer)
|
||||
{
|
||||
if (PlexUtils.DEVELOPERS.contains(plexPlayer.getUuid().toString())) // don't remove or we will front door ur mother
|
||||
{
|
||||
return "<dark_purple>";
|
||||
}
|
||||
String group = VaultHook.getPermission().getPrimaryGroup(null, plexPlayer.getPlayer());
|
||||
if (Plex.get().getConfig().isSet("colors." + group))
|
||||
if (config.isSet("colors." + group))
|
||||
{
|
||||
return PlexUtils.mmSerialize(PlexUtils.mmDeserialize(Plex.get().getConfig().getString("colors." + group)));
|
||||
return PlexUtils.mmSerialize(PlexUtils.mmDeserialize(config.getString("colors." + group)));
|
||||
}
|
||||
return "<white>";
|
||||
}
|
||||
|
||||
@@ -23,17 +23,19 @@ import org.bukkit.configuration.file.YamlConfiguration;
|
||||
@Getter
|
||||
public class ModuleManager
|
||||
{
|
||||
private final Plex plugin;
|
||||
private final List<PlexModule> modules = Lists.newArrayList();
|
||||
|
||||
public ModuleManager()
|
||||
public ModuleManager(Plex plugin)
|
||||
{
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
public void loadAllModules()
|
||||
{
|
||||
this.modules.clear();
|
||||
PlexLog.debug(String.valueOf(Plex.get().getModulesFolder().listFiles().length));
|
||||
Arrays.stream(Plex.get().getModulesFolder().listFiles()).forEach(file ->
|
||||
PlexLog.debug(String.valueOf(plugin.getModulesFolder().listFiles().length));
|
||||
Arrays.stream(plugin.getModulesFolder().listFiles()).forEach(file ->
|
||||
{
|
||||
if (file.getName().endsWith(".jar"))
|
||||
{
|
||||
@@ -68,10 +70,10 @@ public class ModuleManager
|
||||
Class<? extends PlexModule> module = (Class<? extends PlexModule>) Class.forName(main, true, loader);
|
||||
|
||||
PlexModule plexModule = module.getConstructor().newInstance();
|
||||
plexModule.setPlex(Plex.get());
|
||||
plexModule.setPlex(plugin);
|
||||
plexModule.setPlexModuleFile(plexModuleFile);
|
||||
|
||||
plexModule.setDataFolder(new File(Plex.get().getModulesFolder() + File.separator + plexModuleFile.getName()));
|
||||
plexModule.setDataFolder(new File(plugin.getModulesFolder() + File.separator + plexModuleFile.getName()));
|
||||
if (!plexModule.getDataFolder().exists())
|
||||
{
|
||||
plexModule.getDataFolder().mkdir();
|
||||
@@ -116,17 +118,17 @@ public class ModuleManager
|
||||
module.getCommands().stream().toList().forEach(plexCommand ->
|
||||
{
|
||||
module.unregisterCommand(plexCommand);
|
||||
Plex.get().getServer().getCommandMap().getKnownCommands().remove(plexCommand.getName());
|
||||
plexCommand.unregister(Plex.get().getServer().getCommandMap());
|
||||
plugin.getServer().getCommandMap().getKnownCommands().remove(plexCommand.getName());
|
||||
plexCommand.unregister(plugin.getServer().getCommandMap());
|
||||
try
|
||||
{
|
||||
Plex.get().getServer().getCommandMap().getCommand(plexCommand.getName()).unregister(Plex.get().getServer().getCommandMap());
|
||||
plugin.getServer().getCommandMap().getCommand(plexCommand.getName()).unregister(plugin.getServer().getCommandMap());
|
||||
}
|
||||
catch (Exception ignored)
|
||||
{
|
||||
|
||||
}
|
||||
plexCommand.getAliases().forEach(alias -> Plex.get().getServer().getCommandMap().getKnownCommands().remove(alias));
|
||||
plexCommand.getAliases().forEach(alias -> plugin.getServer().getCommandMap().getKnownCommands().remove(alias));
|
||||
});
|
||||
module.getListeners().stream().toList().forEach(module::unregisterListener);
|
||||
module.disable();
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
package dev.plex.player;
|
||||
|
||||
import dev.plex.cache.PlayerCache;
|
||||
import dev.plex.storage.repository.PlayerRepository;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
public class PlayerService
|
||||
{
|
||||
private final PlayerCache playerCache;
|
||||
private final PlayerRepository playerRepository;
|
||||
|
||||
public PlayerService(PlayerCache playerCache, PlayerRepository playerRepository)
|
||||
{
|
||||
this.playerCache = playerCache;
|
||||
this.playerRepository = playerRepository;
|
||||
}
|
||||
|
||||
public boolean hasPlayedBefore(UUID uuid)
|
||||
{
|
||||
return playerRepository.exists(uuid);
|
||||
}
|
||||
|
||||
public boolean hasPlayedBefore(String username)
|
||||
{
|
||||
return playerRepository.exists(username);
|
||||
}
|
||||
|
||||
public PlexPlayer getPlayer(UUID uuid)
|
||||
{
|
||||
return getPlayer(uuid, true);
|
||||
}
|
||||
|
||||
public PlexPlayer getPlayer(UUID uuid, boolean loadExtraData)
|
||||
{
|
||||
if (playerCache.getPlexPlayerMap().containsKey(uuid))
|
||||
{
|
||||
return playerCache.getPlexPlayerMap().get(uuid);
|
||||
}
|
||||
|
||||
return playerRepository.getByUUID(uuid, loadExtraData);
|
||||
}
|
||||
|
||||
public PlexPlayer getPlayer(String username)
|
||||
{
|
||||
return getPlayer(username, true);
|
||||
}
|
||||
|
||||
public PlexPlayer getPlayer(String username, boolean loadExtraData)
|
||||
{
|
||||
Optional<PlexPlayer> plexPlayer = playerCache.getPlexPlayerMap().values().stream().filter(player -> player.getName().equalsIgnoreCase(username)).findFirst();
|
||||
return plexPlayer.orElseGet(() -> playerRepository.getByName(username, loadExtraData));
|
||||
}
|
||||
|
||||
public PlexPlayer getPlayerByIP(String ip)
|
||||
{
|
||||
PlexPlayer player = playerCache.getPlexPlayerMap().values().stream().filter(plexPlayer -> plexPlayer.getIps().contains(ip)).findFirst().orElse(null);
|
||||
if (player != null)
|
||||
{
|
||||
return player;
|
||||
}
|
||||
|
||||
return playerRepository.getByIP(ip);
|
||||
}
|
||||
|
||||
public String getNameByUUID(UUID uuid)
|
||||
{
|
||||
PlexPlayer player = playerCache.getPlexPlayer(uuid);
|
||||
if (player != null)
|
||||
{
|
||||
return player.getName();
|
||||
}
|
||||
return playerRepository.getNameByUUID(uuid);
|
||||
}
|
||||
|
||||
public void update(PlexPlayer plexPlayer)
|
||||
{
|
||||
playerRepository.update(plexPlayer);
|
||||
}
|
||||
|
||||
public void insert(PlexPlayer plexPlayer)
|
||||
{
|
||||
playerRepository.insert(plexPlayer);
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,6 @@ package dev.plex.player;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.punishment.Punishment;
|
||||
import dev.plex.punishment.PunishmentType;
|
||||
import dev.plex.punishment.extra.Note;
|
||||
@@ -70,9 +69,7 @@ public class PlexPlayer
|
||||
|
||||
if (loadPunishments)
|
||||
{
|
||||
this.loadPunishments();
|
||||
this.checkMutesAndFreeze();
|
||||
// this.permissions.addAll(Plex.get().getSqlPermissions().getPermissions(this.uuid));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,16 +90,6 @@ public class PlexPlayer
|
||||
this.frozen = this.punishments.stream().filter(punishment -> punishment.getType() == PunishmentType.FREEZE).anyMatch(punishment -> punishment.isActive() && now.isBefore(punishment.getEndDate()));
|
||||
}
|
||||
|
||||
public void loadPunishments()
|
||||
{
|
||||
this.setPunishments(Plex.get().getSqlPunishment().getPunishments(this.getUuid()));
|
||||
}
|
||||
|
||||
public void loadNotes()
|
||||
{
|
||||
Plex.get().getSqlNotes().getNotes(this.getUuid());
|
||||
}
|
||||
|
||||
public String toJSON()
|
||||
{
|
||||
return new GsonBuilder().registerTypeAdapter(ZonedDateTime.class, new ZonedDateTimeAdapter()).create().toJson(this);
|
||||
|
||||
@@ -2,7 +2,7 @@ package dev.plex.punishment;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.player.PlayerService;
|
||||
import dev.plex.util.PlexUtils;
|
||||
import dev.plex.util.TimeUtils;
|
||||
import dev.plex.util.adapter.ZonedDateTimeAdapter;
|
||||
@@ -21,7 +21,6 @@ import org.jetbrains.annotations.NotNull;
|
||||
public class Punishment
|
||||
{
|
||||
private static final Gson gson = new GsonBuilder().registerTypeAdapter(ZonedDateTime.class, new ZonedDateTimeAdapter()).create();
|
||||
private static final String banUrl = Plex.get().config.getString("banning.ban_url");
|
||||
@NotNull
|
||||
private final UUID punished;
|
||||
private final UUID punisher;
|
||||
@@ -45,14 +44,14 @@ public class Punishment
|
||||
this.issueDate = ZonedDateTime.now(ZoneId.of(TimeUtils.TIMEZONE));
|
||||
}
|
||||
|
||||
public static Component generateBanMessage(Punishment punishment)
|
||||
public static Component generateBanMessage(Punishment punishment, String banUrl, PlayerService playerService)
|
||||
{
|
||||
return PlexUtils.messageComponent("banMessage", banUrl, punishment.getReason(), TimeUtils.useTimezone(punishment.getEndDate()), punisherDisplayName(punishment));
|
||||
return PlexUtils.messageComponent("banMessage", banUrl, punishment.getReason(), TimeUtils.useTimezone(punishment.getEndDate()), punisherDisplayName(punishment, playerService));
|
||||
}
|
||||
|
||||
public static Component generateKickMessage(Punishment punishment)
|
||||
public static Component generateKickMessage(Punishment punishment, PlayerService playerService)
|
||||
{
|
||||
return PlexUtils.messageComponent("kickMessage", punishment.getReason(), punisherDisplayName(punishment));
|
||||
return PlexUtils.messageComponent("kickMessage", punishment.getReason(), punisherDisplayName(punishment, playerService));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -62,20 +61,20 @@ public class Punishment
|
||||
* back to a UUID lookup, and finally "CONSOLE" when the punisher is
|
||||
* truly unknown.
|
||||
*/
|
||||
public static String punisherDisplayName(Punishment punishment)
|
||||
public static String punisherDisplayName(Punishment punishment, PlayerService playerService)
|
||||
{
|
||||
String explicit = punishment.getPunisherName();
|
||||
if (explicit != null && !explicit.isEmpty()) return explicit;
|
||||
if (punishment.getPunisher() == null) return "CONSOLE";
|
||||
return Plex.get().getSqlPlayerData().getNameByUUID(punishment.getPunisher());
|
||||
return playerService.getNameByUUID(punishment.getPunisher());
|
||||
}
|
||||
|
||||
public static Component generateIndefBanMessageWithReason(String type, String reason)
|
||||
public static Component generateIndefBanMessageWithReason(String type, String banUrl, String reason)
|
||||
{
|
||||
return PlexUtils.messageComponent("indefBanMessageReason", type, banUrl, reason);
|
||||
}
|
||||
|
||||
public static Component generateIndefBanMessage(String type)
|
||||
public static Component generateIndefBanMessage(String type, String banUrl)
|
||||
{
|
||||
return PlexUtils.messageComponent("indefBanMessage", type, banUrl);
|
||||
}
|
||||
|
||||
@@ -4,9 +4,8 @@ import com.google.common.collect.Lists;
|
||||
import com.google.common.reflect.TypeToken;
|
||||
import com.google.gson.Gson;
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.PlexBase;
|
||||
import dev.plex.cache.DataUtils;
|
||||
import dev.plex.player.PlexPlayer;
|
||||
import dev.plex.storage.StorageExecutor;
|
||||
import dev.plex.util.PlexLog;
|
||||
import dev.plex.util.PlexUtils;
|
||||
import dev.plex.util.TimeUtils;
|
||||
@@ -29,29 +28,35 @@ import org.bukkit.Bukkit;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class PunishmentManager implements PlexBase
|
||||
public class PunishmentManager
|
||||
{
|
||||
private final Plex plugin;
|
||||
|
||||
public PunishmentManager(Plex plugin)
|
||||
{
|
||||
this.plugin = plugin;
|
||||
}
|
||||
@Getter
|
||||
private final List<IndefiniteBan> indefiniteBans = Lists.newArrayList();
|
||||
|
||||
public void mergeIndefiniteBans()
|
||||
{
|
||||
this.indefiniteBans.clear();
|
||||
Plex.get().indefBans.getKeys(false).forEach(key ->
|
||||
plugin.indefBans.getKeys(false).forEach(key ->
|
||||
{
|
||||
IndefiniteBan ban = new IndefiniteBan(Plex.get().getIndefBans().getString("reason", ""));
|
||||
ban.ips.addAll(Plex.get().getIndefBans().getStringList(key + ".ips"));
|
||||
ban.usernames.addAll(Plex.get().getIndefBans().getStringList(key + ".users"));
|
||||
ban.uuids.addAll(Plex.get().getIndefBans().getStringList(key + ".uuids").stream().map(UUID::fromString).toList());
|
||||
IndefiniteBan ban = new IndefiniteBan(plugin.getIndefBans().getString("reason", ""));
|
||||
ban.ips.addAll(plugin.getIndefBans().getStringList(key + ".ips"));
|
||||
ban.usernames.addAll(plugin.getIndefBans().getStringList(key + ".users"));
|
||||
ban.uuids.addAll(plugin.getIndefBans().getStringList(key + ".uuids").stream().map(UUID::fromString).toList());
|
||||
this.indefiniteBans.add(ban);
|
||||
});
|
||||
|
||||
PlexLog.log("Loaded {0} UUID(s), {1} IP(s), and {2} username(s) as indefinitely banned", this.indefiniteBans.stream().map(IndefiniteBan::getUuids).mapToLong(Collection::size).sum(), this.indefiniteBans.stream().map(IndefiniteBan::getIps).mapToLong(Collection::size).sum(), this.indefiniteBans.stream().map(IndefiniteBan::getUsernames).mapToLong(Collection::size).sum());
|
||||
|
||||
if (Plex.get().getRedisConnection().isEnabled())
|
||||
if (plugin.getRedisConnection().isEnabled())
|
||||
{
|
||||
PlexLog.log("Asynchronously uploading all indefinite bans to Redis");
|
||||
Plex.get().getRedisConnection().runAsync(jedis ->
|
||||
plugin.getRedisConnection().runAsync(jedis ->
|
||||
{
|
||||
jedis.set("indefbans", new Gson().toJson(indefiniteBans));
|
||||
});
|
||||
@@ -61,12 +66,10 @@ public class PunishmentManager implements PlexBase
|
||||
@Nullable
|
||||
public IndefiniteBan getIndefiniteBanByUUID(UUID uuid)
|
||||
{
|
||||
if (Plex.get().getRedisConnection().isEnabled())
|
||||
if (plugin.getRedisConnection().isEnabled())
|
||||
{
|
||||
PlexLog.debug("Checking if UUID is banned in Redis");
|
||||
List<IndefiniteBan> bans = new Gson().fromJson(Plex.get().getRedisConnection().getJedis().get("indefbans"), new TypeToken<List<IndefiniteBan>>()
|
||||
{
|
||||
}.getType());
|
||||
List<IndefiniteBan> bans = redisIndefiniteBans();
|
||||
return bans.stream().filter(indefiniteBan -> indefiniteBan.getUuids().contains(uuid)).findFirst().orElse(null);
|
||||
}
|
||||
return this.indefiniteBans.stream().filter(indefiniteBan -> indefiniteBan.getUuids().contains(uuid)).findFirst().orElse(null);
|
||||
@@ -74,12 +77,10 @@ public class PunishmentManager implements PlexBase
|
||||
|
||||
public IndefiniteBan getIndefiniteBanByIP(String ip)
|
||||
{
|
||||
if (Plex.get().getRedisConnection().isEnabled())
|
||||
if (plugin.getRedisConnection().isEnabled())
|
||||
{
|
||||
PlexLog.debug("Checking if IP is banned in Redis");
|
||||
List<IndefiniteBan> bans = new Gson().fromJson(Plex.get().getRedisConnection().getJedis().get("indefbans"), new TypeToken<List<IndefiniteBan>>()
|
||||
{
|
||||
}.getType());
|
||||
List<IndefiniteBan> bans = redisIndefiniteBans();
|
||||
return bans.stream().filter(indefiniteBan -> indefiniteBan.getIps().contains(ip)).findFirst().orElse(null);
|
||||
}
|
||||
return this.indefiniteBans.stream().filter(indefiniteBan -> indefiniteBan.getIps().contains(ip)).findFirst().orElse(null);
|
||||
@@ -87,12 +88,10 @@ public class PunishmentManager implements PlexBase
|
||||
|
||||
public IndefiniteBan getIndefiniteBanByUsername(String username)
|
||||
{
|
||||
if (Plex.get().getRedisConnection().isEnabled())
|
||||
if (plugin.getRedisConnection().isEnabled())
|
||||
{
|
||||
PlexLog.debug("Checking if username is banned in Redis");
|
||||
List<IndefiniteBan> bans = new Gson().fromJson(Plex.get().getRedisConnection().getJedis().get("indefbans"), new TypeToken<List<IndefiniteBan>>()
|
||||
{
|
||||
}.getType());
|
||||
List<IndefiniteBan> bans = redisIndefiniteBans();
|
||||
return bans.stream().filter(indefiniteBan -> indefiniteBan.getUsernames().contains(username)).findFirst().orElse(null);
|
||||
}
|
||||
return this.indefiniteBans.stream().filter(indefiniteBan -> indefiniteBan.getUsernames().contains(username)).findFirst().orElse(null);
|
||||
@@ -101,7 +100,16 @@ public class PunishmentManager implements PlexBase
|
||||
public void issuePunishment(PlexPlayer plexPlayer, Punishment punishment)
|
||||
{
|
||||
plexPlayer.getPunishments().add(punishment);
|
||||
Plex.get().getSqlPunishment().insertPunishment(punishment);
|
||||
plugin.getPunishmentRepository().insertPunishment(punishment);
|
||||
}
|
||||
|
||||
private List<IndefiniteBan> redisIndefiniteBans()
|
||||
{
|
||||
String json = plugin.getRedisConnection().query(jedis -> jedis.get("indefbans"));
|
||||
List<IndefiniteBan> bans = new Gson().fromJson(json, new TypeToken<List<IndefiniteBan>>()
|
||||
{
|
||||
}.getType());
|
||||
return bans == null ? Lists.newArrayList() : bans;
|
||||
}
|
||||
|
||||
private boolean isNotEmpty(File file)
|
||||
@@ -121,29 +129,27 @@ public class PunishmentManager implements PlexBase
|
||||
{
|
||||
return CompletableFuture.supplyAsync(() ->
|
||||
{
|
||||
if (!DataUtils.hasPlayedBefore(uuid))
|
||||
if (!plugin.getPlayerService().hasPlayedBefore(uuid))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
PlexPlayer player = DataUtils.getPlayer(uuid);
|
||||
player.loadPunishments();
|
||||
return player.getPunishments().stream().anyMatch(punishment -> (punishment.getType() == PunishmentType.BAN || punishment.getType() == PunishmentType.TEMPBAN) && punishment.isActive());
|
||||
});
|
||||
return plugin.getPunishmentRepository().getPunishments(uuid).stream().anyMatch(punishment -> (punishment.getType() == PunishmentType.BAN || punishment.getType() == PunishmentType.TEMPBAN) && punishment.isActive());
|
||||
}, StorageExecutor.io());
|
||||
}
|
||||
|
||||
public boolean isBanned(UUID uuid)
|
||||
{
|
||||
if (!DataUtils.hasPlayedBefore(uuid))
|
||||
if (!plugin.getPlayerService().hasPlayedBefore(uuid))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return DataUtils.getPlayer(uuid).getPunishments().stream().anyMatch(punishment -> (punishment.getType() == PunishmentType.BAN || punishment.getType() == PunishmentType.TEMPBAN) && punishment.isActive());
|
||||
return plugin.getPlayerService().getPlayer(uuid).getPunishments().stream().anyMatch(punishment -> (punishment.getType() == PunishmentType.BAN || punishment.getType() == PunishmentType.TEMPBAN) && punishment.isActive());
|
||||
}
|
||||
|
||||
public Punishment getBanByIP(String ip)
|
||||
{
|
||||
return plugin.getSqlPunishment().getPunishments(ip).stream().filter(punishment -> punishment.getType() == PunishmentType.TEMPBAN || punishment.getType() == PunishmentType.BAN).filter(Punishment::isActive).filter(punishment -> punishment.getIp().equals(ip)).findFirst().orElse(null);
|
||||
return plugin.getPunishmentRepository().getPunishments(ip).stream().filter(punishment -> punishment.getType() == PunishmentType.TEMPBAN || punishment.getType() == PunishmentType.BAN).filter(Punishment::isActive).filter(punishment -> punishment.getIp().equals(ip)).findFirst().orElse(null);
|
||||
}
|
||||
|
||||
public boolean isBanned(PlexPlayer player)
|
||||
@@ -155,7 +161,7 @@ public class PunishmentManager implements PlexBase
|
||||
{
|
||||
//PlexLog.debug("Checking active bans mysql");
|
||||
CompletableFuture<List<Punishment>> future = new CompletableFuture<>();
|
||||
Plex.get().getSqlPunishment().getPunishments().whenComplete((punishments, throwable) ->
|
||||
plugin.getPunishmentRepository().getPunishments().whenComplete((punishments, throwable) ->
|
||||
{
|
||||
//PlexLog.debug("Received Punishments");
|
||||
List<Punishment> punishmentList = punishments.stream().filter(Punishment::isActive).filter(punishment -> punishment.getType() == PunishmentType.BAN || punishment.getType() == PunishmentType.TEMPBAN).toList();
|
||||
@@ -172,7 +178,7 @@ public class PunishmentManager implements PlexBase
|
||||
|
||||
public CompletableFuture<Void> unban(UUID uuid)
|
||||
{
|
||||
return Plex.get().getSqlPunishment().removeBan(uuid);
|
||||
return plugin.getPunishmentRepository().removeBan(uuid);
|
||||
}
|
||||
|
||||
public void updateOutdatedPunishments(PlexPlayer player)
|
||||
@@ -193,7 +199,7 @@ public class PunishmentManager implements PlexBase
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
PlexPlayer afterPlayer = DataUtils.getPlayer(player.getUuid());
|
||||
PlexPlayer afterPlayer = plugin.getPlayerService().getPlayer(player.getUuid());
|
||||
if (!afterPlayer.isFrozen())
|
||||
{
|
||||
this.cancel();
|
||||
@@ -201,12 +207,12 @@ public class PunishmentManager implements PlexBase
|
||||
}
|
||||
afterPlayer.setFrozen(false);
|
||||
punishment.setActive(false);
|
||||
plugin.getSqlPunishment().updatePunishment(punishment.getType(), false, punishment.getPunished());
|
||||
plugin.getPunishmentRepository().updatePunishment(punishment.getType(), false, punishment.getPunished());
|
||||
|
||||
DataUtils.update(afterPlayer);
|
||||
plugin.getPlayerService().update(afterPlayer);
|
||||
Bukkit.broadcast(PlexUtils.messageComponent("unfrozePlayer", "Plex", Bukkit.getOfflinePlayer(afterPlayer.getUuid()).getName()));
|
||||
}
|
||||
}.runTaskLater(Plex.get(), 20 * seconds);
|
||||
}.runTaskLater(plugin, 20 * seconds);
|
||||
}
|
||||
else if (punishment.getType() == PunishmentType.MUTE)
|
||||
{
|
||||
@@ -219,7 +225,7 @@ public class PunishmentManager implements PlexBase
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
PlexPlayer afterPlayer = DataUtils.getPlayer(player.getUuid());
|
||||
PlexPlayer afterPlayer = plugin.getPlayerService().getPlayer(player.getUuid());
|
||||
if (!afterPlayer.isMuted())
|
||||
{
|
||||
this.cancel();
|
||||
@@ -227,11 +233,11 @@ public class PunishmentManager implements PlexBase
|
||||
}
|
||||
afterPlayer.setMuted(false);
|
||||
punishment.setActive(false);
|
||||
plugin.getSqlPunishment().updatePunishment(punishment.getType(), false, punishment.getPunished());
|
||||
plugin.getPunishmentRepository().updatePunishment(punishment.getType(), false, punishment.getPunished());
|
||||
|
||||
Bukkit.broadcast(PlexUtils.messageComponent("unmutedPlayer", "Plex", Bukkit.getOfflinePlayer(afterPlayer.getUuid()).getName()));
|
||||
}
|
||||
}.runTaskLater(Plex.get(), 20 * seconds);
|
||||
}.runTaskLater(plugin, 20 * seconds);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,16 +1,18 @@
|
||||
package dev.plex.services;
|
||||
|
||||
import dev.plex.PlexBase;
|
||||
import dev.plex.Plex;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
public abstract class AbstractService implements IService, PlexBase
|
||||
public abstract class AbstractService implements IService
|
||||
{
|
||||
protected final Plex plugin;
|
||||
private final boolean asynchronous;
|
||||
private final boolean repeating;
|
||||
|
||||
public AbstractService(boolean repeating, boolean async)
|
||||
public AbstractService(Plex plugin, boolean repeating, boolean async)
|
||||
{
|
||||
this.plugin = plugin;
|
||||
this.repeating = repeating;
|
||||
this.asynchronous = async;
|
||||
}
|
||||
|
||||
@@ -15,15 +15,17 @@ import org.bukkit.Bukkit;
|
||||
|
||||
public class ServiceManager
|
||||
{
|
||||
private final Plex plugin;
|
||||
private final List<AbstractService> services = Lists.newArrayList();
|
||||
|
||||
public ServiceManager()
|
||||
public ServiceManager(Plex plugin)
|
||||
{
|
||||
registerService(new AutoWipeService());
|
||||
registerService(new BanService());
|
||||
registerService(new GameRuleService());
|
||||
registerService(new TimingService());
|
||||
registerService(new UpdateCheckerService());
|
||||
this.plugin = plugin;
|
||||
registerService(new AutoWipeService(plugin));
|
||||
registerService(new BanService(plugin));
|
||||
registerService(new GameRuleService(plugin));
|
||||
registerService(new TimingService(plugin));
|
||||
registerService(new UpdateCheckerService(plugin));
|
||||
}
|
||||
|
||||
public void startServices()
|
||||
@@ -48,20 +50,20 @@ public class ServiceManager
|
||||
int time = service.repeatInSeconds();
|
||||
if (time == 0)
|
||||
{
|
||||
Bukkit.getGlobalRegionScheduler().run(Plex.get(), service::run);
|
||||
Bukkit.getGlobalRegionScheduler().run(plugin, service::run);
|
||||
}
|
||||
else
|
||||
{
|
||||
Bukkit.getAsyncScheduler().runDelayed(Plex.get(), service::run, time, TimeUnit.SECONDS);
|
||||
Bukkit.getAsyncScheduler().runDelayed(plugin, service::run, time, TimeUnit.SECONDS);
|
||||
}
|
||||
}
|
||||
else if (service.isRepeating() && service.isAsynchronous())
|
||||
{
|
||||
Bukkit.getAsyncScheduler().runAtFixedRate(Plex.get(), service::run, 1, service.repeatInSeconds(), TimeUnit.SECONDS);
|
||||
Bukkit.getAsyncScheduler().runAtFixedRate(plugin, service::run, 1, service.repeatInSeconds(), TimeUnit.SECONDS);
|
||||
}
|
||||
else if (service.isRepeating() && !service.isAsynchronous())
|
||||
{
|
||||
Bukkit.getGlobalRegionScheduler().runAtFixedRate(Plex.get(), service::run, 1, 20L * service.repeatInSeconds());
|
||||
Bukkit.getGlobalRegionScheduler().runAtFixedRate(plugin, service::run, 1, 20L * service.repeatInSeconds());
|
||||
}
|
||||
if (!services.contains(service))
|
||||
{
|
||||
@@ -72,8 +74,8 @@ public class ServiceManager
|
||||
|
||||
public void endService(AbstractService service, boolean remove)
|
||||
{
|
||||
Bukkit.getGlobalRegionScheduler().cancelTasks(Plex.get());
|
||||
Bukkit.getAsyncScheduler().cancelTasks(Plex.get());
|
||||
Bukkit.getGlobalRegionScheduler().cancelTasks(plugin);
|
||||
Bukkit.getAsyncScheduler().cancelTasks(plugin);
|
||||
service.onEnd();
|
||||
if (remove)
|
||||
{
|
||||
|
||||
@@ -12,15 +12,15 @@ import org.bukkit.entity.Entity;
|
||||
|
||||
public class AutoWipeService extends AbstractService
|
||||
{
|
||||
public AutoWipeService()
|
||||
public AutoWipeService(Plex plugin)
|
||||
{
|
||||
super(true, false);
|
||||
super(plugin, true, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(ScheduledTask task)
|
||||
{
|
||||
if (Plex.get().config.getBoolean("autowipe.enabled"))
|
||||
if (plugin.config.getBoolean("autowipe.enabled"))
|
||||
{
|
||||
List<String> entities = plugin.config.getStringList("autowipe.entities");
|
||||
|
||||
@@ -30,7 +30,7 @@ public class AutoWipeService extends AbstractService
|
||||
{
|
||||
if (entities.stream().anyMatch(entityName -> entityName.equalsIgnoreCase(entity.getType().name())))
|
||||
{
|
||||
Bukkit.getRegionScheduler().run(Plex.get(), entity.getLocation(), this::entityRun);
|
||||
Bukkit.getRegionScheduler().run(plugin, entity.getLocation(), this::entityRun);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,21 +13,21 @@ import org.bukkit.Bukkit;
|
||||
|
||||
public class BanService extends AbstractService
|
||||
{
|
||||
public BanService()
|
||||
public BanService(Plex plugin)
|
||||
{
|
||||
super(true, true);
|
||||
super(plugin, true, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(ScheduledTask task)
|
||||
{
|
||||
Plex.get().getPunishmentManager().getActiveBans().whenComplete((punishments, throwable) ->
|
||||
plugin.getPunishmentManager().getActiveBans().whenComplete((punishments, throwable) ->
|
||||
{
|
||||
punishments.forEach(punishment ->
|
||||
{
|
||||
if (ZonedDateTime.now(ZoneId.of(TimeUtils.TIMEZONE)).isAfter(punishment.getEndDate()))
|
||||
{
|
||||
Plex.get().getPunishmentManager().unban(punishment);
|
||||
plugin.getPunishmentManager().unban(punishment);
|
||||
Bukkit.broadcast(PlexUtils.messageComponent("banExpiredBroadcast", Bukkit.getOfflinePlayer(punishment.getPunished()).getName()));
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package dev.plex.services.impl;
|
||||
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.services.AbstractService;
|
||||
import dev.plex.util.GameRuleUtil;
|
||||
import dev.plex.util.PlexLog;
|
||||
@@ -12,9 +13,9 @@ import org.bukkit.World;
|
||||
|
||||
public class GameRuleService extends AbstractService
|
||||
{
|
||||
public GameRuleService()
|
||||
public GameRuleService(Plex plugin)
|
||||
{
|
||||
super(false, true);
|
||||
super(plugin, false, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -22,7 +23,7 @@ public class GameRuleService extends AbstractService
|
||||
{
|
||||
for (World world : Bukkit.getWorlds())
|
||||
{
|
||||
GameRuleUtil.commitGlobalGameRules(world);
|
||||
GameRuleUtil.commitGlobalGameRules(plugin, world);
|
||||
PlexLog.log("Set global gamerules for world: " + world.getName());
|
||||
}
|
||||
for (String world : plugin.config.getConfigurationSection("worlds").getKeys(false))
|
||||
@@ -30,7 +31,7 @@ public class GameRuleService extends AbstractService
|
||||
World bukkitWorld = Bukkit.getWorld(world);
|
||||
if (bukkitWorld != null)
|
||||
{
|
||||
GameRuleUtil.commitSpecificGameRules(bukkitWorld);
|
||||
GameRuleUtil.commitSpecificGameRules(plugin, bukkitWorld);
|
||||
PlexLog.log("Set specific gamerules for world: " + world.toLowerCase(Locale.ROOT));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package dev.plex.services.impl;
|
||||
|
||||
import dev.plex.cache.DataUtils;
|
||||
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.player.PlexPlayer;
|
||||
import dev.plex.punishment.Punishment;
|
||||
import dev.plex.punishment.PunishmentType;
|
||||
@@ -22,9 +23,9 @@ public class TimingService extends AbstractService
|
||||
public static final Map<UUID, Long> nukerCooldown = new HashMap<>();
|
||||
public static final Map<UUID, Long> strikes = new HashMap<>();
|
||||
|
||||
public TimingService()
|
||||
public TimingService(Plex plugin)
|
||||
{
|
||||
super(true, true);
|
||||
super(plugin, true, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -48,7 +49,7 @@ public class TimingService extends AbstractService
|
||||
{
|
||||
Punishment punishment = new Punishment(map.getKey(), null);
|
||||
Player player = Bukkit.getPlayer(map.getKey());
|
||||
PlexPlayer plexPlayer = DataUtils.getPlayer(map.getKey());
|
||||
PlexPlayer plexPlayer = plugin.getPlayerService().getPlayer(map.getKey());
|
||||
punishment.setType(PunishmentType.TEMPBAN);
|
||||
punishment.setReason("You are temporarily banned for five minutes for using a Nuker.");
|
||||
if (player != null)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package dev.plex.services.impl;
|
||||
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.services.AbstractService;
|
||||
import io.papermc.paper.threadedregions.scheduler.ScheduledTask;
|
||||
import org.bukkit.Bukkit;
|
||||
@@ -8,9 +9,9 @@ public class UpdateCheckerService extends AbstractService
|
||||
{
|
||||
private boolean newVersion = false;
|
||||
|
||||
public UpdateCheckerService()
|
||||
public UpdateCheckerService(Plex plugin)
|
||||
{
|
||||
super(true, true);
|
||||
super(plugin, true, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,15 +1,22 @@
|
||||
package dev.plex.storage;
|
||||
|
||||
import dev.plex.PlexBase;
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.util.PlexLog;
|
||||
import redis.clients.jedis.Jedis;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
|
||||
public class RedisConnection implements PlexBase
|
||||
public class RedisConnection
|
||||
{
|
||||
private final Plex plugin;
|
||||
private Jedis jedis;
|
||||
|
||||
public RedisConnection(Plex plugin)
|
||||
{
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
public Jedis getJedis()
|
||||
{
|
||||
try
|
||||
@@ -30,15 +37,25 @@ public class RedisConnection implements PlexBase
|
||||
return jedis;
|
||||
}
|
||||
|
||||
public void runAsync(Consumer<Jedis> jedisConsumer)
|
||||
{
|
||||
new Thread(() ->
|
||||
public void execute(Consumer<Jedis> jedisConsumer)
|
||||
{
|
||||
try (Jedis jedis = getJedis())
|
||||
{
|
||||
jedisConsumer.accept(jedis);
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
|
||||
public <T> T query(Function<Jedis, T> jedisFunction)
|
||||
{
|
||||
try (Jedis jedis = getJedis())
|
||||
{
|
||||
return jedisFunction.apply(jedis);
|
||||
}
|
||||
}
|
||||
|
||||
public void runAsync(Consumer<Jedis> jedisConsumer)
|
||||
{
|
||||
StorageExecutor.io().execute(() -> execute(jedisConsumer));
|
||||
}
|
||||
|
||||
public final boolean isEnabled()
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package dev.plex.storage;
|
||||
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.storage.database.Database;
|
||||
|
||||
/**
|
||||
@@ -9,6 +10,11 @@ import dev.plex.storage.database.Database;
|
||||
*/
|
||||
public class SQLConnection extends Database
|
||||
{
|
||||
public SQLConnection(Plex plugin)
|
||||
{
|
||||
super(plugin);
|
||||
}
|
||||
|
||||
public java.sql.Connection getCon() throws java.sql.SQLException
|
||||
{
|
||||
return getConnection();
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
package dev.plex.storage;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ThreadFactory;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
public final class StorageExecutor
|
||||
{
|
||||
private static final AtomicInteger THREAD_ID = new AtomicInteger();
|
||||
private static final ExecutorService IO = Executors.newFixedThreadPool(Math.max(2, Runtime.getRuntime().availableProcessors() / 2), new ThreadFactory()
|
||||
{
|
||||
@Override
|
||||
public Thread newThread(Runnable runnable)
|
||||
{
|
||||
Thread thread = new Thread(runnable, "Plex Storage IO-" + THREAD_ID.incrementAndGet());
|
||||
thread.setDaemon(true);
|
||||
return thread;
|
||||
}
|
||||
});
|
||||
|
||||
private StorageExecutor()
|
||||
{
|
||||
}
|
||||
|
||||
public static Executor io()
|
||||
{
|
||||
return IO;
|
||||
}
|
||||
|
||||
public static void shutdown()
|
||||
{
|
||||
IO.shutdownNow();
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,7 @@ import com.j256.ormlite.jdbc.DataSourceConnectionSource;
|
||||
import com.j256.ormlite.support.ConnectionSource;
|
||||
import com.zaxxer.hikari.HikariConfig;
|
||||
import com.zaxxer.hikari.HikariDataSource;
|
||||
import dev.plex.PlexBase;
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.storage.StorageType;
|
||||
import dev.plex.util.PlexLog;
|
||||
import lombok.Getter;
|
||||
@@ -19,16 +19,18 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Getter
|
||||
public class Database implements PlexBase
|
||||
public class Database
|
||||
{
|
||||
private static final String MIGRATION_TABLE = "plex_schema_history";
|
||||
|
||||
protected final Plex plugin;
|
||||
private final HikariDataSource dataSource;
|
||||
private final ConnectionSource connectionSource;
|
||||
private final StorageType storageType;
|
||||
|
||||
public Database()
|
||||
public Database(Plex plugin)
|
||||
{
|
||||
this.plugin = plugin;
|
||||
this.storageType = StorageType.fromConfig(plugin.config.getString("data.db.storage", "sqlite"));
|
||||
|
||||
HikariConfig config = new HikariConfig();
|
||||
|
||||
@@ -4,11 +4,13 @@ import com.google.common.reflect.TypeToken;
|
||||
import com.google.gson.Gson;
|
||||
import com.j256.ormlite.dao.Dao;
|
||||
import com.j256.ormlite.dao.DaoManager;
|
||||
import com.j256.ormlite.support.ConnectionSource;
|
||||
import com.j256.ormlite.stmt.DeleteBuilder;
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.player.PlexPlayer;
|
||||
import dev.plex.storage.database.entity.PlayerEntity;
|
||||
import dev.plex.storage.database.entity.PlayerIpEntity;
|
||||
import dev.plex.storage.repository.PlayerRepository;
|
||||
import dev.plex.storage.repository.PunishmentRepository;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
@@ -17,18 +19,20 @@ import java.util.UUID;
|
||||
/**
|
||||
* Player persistence backed by ORMLite.
|
||||
*/
|
||||
public class SQLPlayerData
|
||||
public class SQLPlayerData implements PlayerRepository
|
||||
{
|
||||
private static final Gson GSON = new Gson();
|
||||
private final Dao<PlayerEntity, String> players;
|
||||
private final Dao<PlayerIpEntity, Long> playerIps;
|
||||
private final PunishmentRepository punishmentRepository;
|
||||
|
||||
public SQLPlayerData()
|
||||
public SQLPlayerData(ConnectionSource connectionSource, PunishmentRepository punishmentRepository)
|
||||
{
|
||||
this.punishmentRepository = punishmentRepository;
|
||||
try
|
||||
{
|
||||
this.players = DaoManager.createDao(Plex.get().getSqlConnection().getConnectionSource(), PlayerEntity.class);
|
||||
this.playerIps = DaoManager.createDao(Plex.get().getSqlConnection().getConnectionSource(), PlayerIpEntity.class);
|
||||
this.players = DaoManager.createDao(connectionSource, PlayerEntity.class);
|
||||
this.playerIps = DaoManager.createDao(connectionSource, PlayerIpEntity.class);
|
||||
}
|
||||
catch (SQLException e)
|
||||
{
|
||||
@@ -64,11 +68,6 @@ public class SQLPlayerData
|
||||
|
||||
public PlexPlayer getByUUID(UUID uuid, boolean loadExtraData)
|
||||
{
|
||||
if (Plex.get().getPlayerCache().getPlexPlayerMap().containsKey(uuid))
|
||||
{
|
||||
return Plex.get().getPlayerCache().getPlexPlayerMap().get(uuid);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
return toPlayer(players.queryForId(uuid.toString()), loadExtraData);
|
||||
@@ -82,11 +81,6 @@ public class SQLPlayerData
|
||||
|
||||
public String getNameByUUID(UUID uuid)
|
||||
{
|
||||
if (Plex.get().getPlayerCache().getPlexPlayerMap().containsKey(uuid))
|
||||
{
|
||||
return Plex.get().getPlayerCache().getPlexPlayerMap().get(uuid).getName();
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
PlayerEntity entity = players.queryForId(uuid.toString());
|
||||
@@ -106,15 +100,6 @@ public class SQLPlayerData
|
||||
|
||||
public PlexPlayer getByName(String username, boolean loadExtraData)
|
||||
{
|
||||
PlexPlayer player = Plex.get().getPlayerCache().getPlexPlayerMap().values().stream()
|
||||
.filter(plexPlayer -> plexPlayer.getName().equalsIgnoreCase(username))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
if (player != null)
|
||||
{
|
||||
return player;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
return toPlayer(players.queryBuilder().limit(1L).where().eq("name", username).queryForFirst(), loadExtraData);
|
||||
@@ -133,15 +118,6 @@ public class SQLPlayerData
|
||||
|
||||
public PlexPlayer getByIP(String ip)
|
||||
{
|
||||
PlexPlayer player = Plex.get().getPlayerCache().getPlexPlayerMap().values().stream()
|
||||
.filter(plexPlayer -> plexPlayer.getIps().contains(ip))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
if (player != null)
|
||||
{
|
||||
return player;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
PlayerIpEntity playerIp = playerIps.queryBuilder().limit(1L).where().eq("ip", ip).queryForFirst();
|
||||
@@ -192,7 +168,7 @@ public class SQLPlayerData
|
||||
return null;
|
||||
}
|
||||
|
||||
PlexPlayer plexPlayer = new PlexPlayer(UUID.fromString(entity.getUuid()), loadExtraData);
|
||||
PlexPlayer plexPlayer = new PlexPlayer(UUID.fromString(entity.getUuid()), false);
|
||||
plexPlayer.setName(entity.getName());
|
||||
plexPlayer.setLoginMessage(entity.getLoginMessage());
|
||||
plexPlayer.setPrefix(entity.getPrefix());
|
||||
@@ -201,6 +177,11 @@ public class SQLPlayerData
|
||||
plexPlayer.setCoins(entity.getCoins());
|
||||
plexPlayer.setVanished(entity.isVanished());
|
||||
plexPlayer.setCommandSpy(entity.isCommandSpy());
|
||||
if (loadExtraData)
|
||||
{
|
||||
plexPlayer.setPunishments(punishmentRepository.getPunishments(plexPlayer.getUuid()));
|
||||
plexPlayer.checkMutesAndFreeze();
|
||||
}
|
||||
return plexPlayer;
|
||||
}
|
||||
|
||||
|
||||
@@ -3,10 +3,12 @@ package dev.plex.storage.punishment;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.j256.ormlite.dao.Dao;
|
||||
import com.j256.ormlite.dao.DaoManager;
|
||||
import com.j256.ormlite.support.ConnectionSource;
|
||||
import com.j256.ormlite.stmt.DeleteBuilder;
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.punishment.extra.Note;
|
||||
import dev.plex.storage.StorageExecutor;
|
||||
import dev.plex.storage.database.entity.NoteEntity;
|
||||
import dev.plex.storage.repository.NoteRepository;
|
||||
import dev.plex.util.TimeUtils;
|
||||
|
||||
import java.sql.SQLException;
|
||||
@@ -18,15 +20,15 @@ import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public class SQLNotes
|
||||
public class SQLNotes implements NoteRepository
|
||||
{
|
||||
private final Dao<NoteEntity, Long> notes;
|
||||
|
||||
public SQLNotes()
|
||||
public SQLNotes(ConnectionSource connectionSource)
|
||||
{
|
||||
try
|
||||
{
|
||||
this.notes = DaoManager.createDao(Plex.get().getSqlConnection().getConnectionSource(), NoteEntity.class);
|
||||
this.notes = DaoManager.createDao(connectionSource, NoteEntity.class);
|
||||
}
|
||||
catch (SQLException e)
|
||||
{
|
||||
@@ -50,7 +52,7 @@ public class SQLNotes
|
||||
e.printStackTrace();
|
||||
return Lists.newArrayList();
|
||||
}
|
||||
});
|
||||
}, StorageExecutor.io());
|
||||
}
|
||||
|
||||
public CompletableFuture<Void> deleteNote(int id, UUID uuid)
|
||||
@@ -67,7 +69,7 @@ public class SQLNotes
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
}, StorageExecutor.io());
|
||||
}
|
||||
|
||||
public CompletableFuture<Void> addNote(Note note)
|
||||
@@ -89,7 +91,7 @@ public class SQLNotes
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
}, StorageExecutor.io());
|
||||
}
|
||||
|
||||
private Note toNote(NoteEntity entity)
|
||||
|
||||
@@ -3,11 +3,13 @@ package dev.plex.storage.punishment;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.j256.ormlite.dao.Dao;
|
||||
import com.j256.ormlite.dao.DaoManager;
|
||||
import com.j256.ormlite.support.ConnectionSource;
|
||||
import com.j256.ormlite.stmt.UpdateBuilder;
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.punishment.Punishment;
|
||||
import dev.plex.punishment.PunishmentType;
|
||||
import dev.plex.storage.StorageExecutor;
|
||||
import dev.plex.storage.database.entity.PunishmentEntity;
|
||||
import dev.plex.storage.repository.PunishmentRepository;
|
||||
import dev.plex.util.PlexLog;
|
||||
import dev.plex.util.TimeUtils;
|
||||
|
||||
@@ -19,15 +21,15 @@ import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public class SQLPunishment
|
||||
public class SQLPunishment implements PunishmentRepository
|
||||
{
|
||||
private final Dao<PunishmentEntity, Long> punishments;
|
||||
|
||||
public SQLPunishment()
|
||||
public SQLPunishment(ConnectionSource connectionSource)
|
||||
{
|
||||
try
|
||||
{
|
||||
this.punishments = DaoManager.createDao(Plex.get().getSqlConnection().getConnectionSource(), PunishmentEntity.class);
|
||||
this.punishments = DaoManager.createDao(connectionSource, PunishmentEntity.class);
|
||||
}
|
||||
catch (SQLException e)
|
||||
{
|
||||
@@ -48,7 +50,7 @@ public class SQLPunishment
|
||||
e.printStackTrace();
|
||||
return Lists.newArrayList();
|
||||
}
|
||||
});
|
||||
}, StorageExecutor.io());
|
||||
}
|
||||
|
||||
public List<Punishment> getPunishments(UUID uuid)
|
||||
@@ -90,7 +92,7 @@ public class SQLPunishment
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
}, StorageExecutor.io());
|
||||
}
|
||||
|
||||
public void syncRemoveBan(UUID uuid)
|
||||
@@ -101,12 +103,12 @@ public class SQLPunishment
|
||||
|
||||
public CompletableFuture<Void> updatePunishment(PunishmentType type, boolean active, UUID punished)
|
||||
{
|
||||
return CompletableFuture.runAsync(() -> setActive(punished, type, active));
|
||||
return CompletableFuture.runAsync(() -> setActive(punished, type, active), StorageExecutor.io());
|
||||
}
|
||||
|
||||
public CompletableFuture<Void> removeBan(UUID uuid)
|
||||
{
|
||||
return CompletableFuture.runAsync(() -> syncRemoveBan(uuid));
|
||||
return CompletableFuture.runAsync(() -> syncRemoveBan(uuid), StorageExecutor.io());
|
||||
}
|
||||
|
||||
private void setActive(UUID punished, PunishmentType type, boolean active)
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package dev.plex.storage.repository;
|
||||
|
||||
import dev.plex.punishment.extra.Note;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public interface NoteRepository
|
||||
{
|
||||
CompletableFuture<List<Note>> getNotes(UUID uuid);
|
||||
|
||||
CompletableFuture<Void> deleteNote(int id, UUID uuid);
|
||||
|
||||
CompletableFuture<Void> addNote(Note note);
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package dev.plex.storage.repository;
|
||||
|
||||
import dev.plex.player.PlexPlayer;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public interface PlayerRepository
|
||||
{
|
||||
boolean exists(UUID uuid);
|
||||
|
||||
boolean exists(String username);
|
||||
|
||||
PlexPlayer getByUUID(UUID uuid, boolean loadExtraData);
|
||||
|
||||
PlexPlayer getByUUID(UUID uuid);
|
||||
|
||||
String getNameByUUID(UUID uuid);
|
||||
|
||||
PlexPlayer getByName(String username, boolean loadExtraData);
|
||||
|
||||
PlexPlayer getByName(String username);
|
||||
|
||||
PlexPlayer getByIP(String ip);
|
||||
|
||||
void update(PlexPlayer player);
|
||||
|
||||
void insert(PlexPlayer player);
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package dev.plex.storage.repository;
|
||||
|
||||
import dev.plex.punishment.Punishment;
|
||||
import dev.plex.punishment.PunishmentType;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public interface PunishmentRepository
|
||||
{
|
||||
CompletableFuture<List<Punishment>> getPunishments();
|
||||
|
||||
List<Punishment> getPunishments(UUID uuid);
|
||||
|
||||
List<Punishment> getPunishments(String ip);
|
||||
|
||||
CompletableFuture<Void> insertPunishment(Punishment punishment);
|
||||
|
||||
void syncRemoveBan(UUID uuid);
|
||||
|
||||
CompletableFuture<Void> updatePunishment(PunishmentType type, boolean active, UUID punished);
|
||||
|
||||
CompletableFuture<Void> removeBan(UUID uuid);
|
||||
}
|
||||
@@ -10,7 +10,7 @@ import org.bukkit.entity.Player;
|
||||
|
||||
public class BungeeUtil
|
||||
{
|
||||
public static void kickPlayer(Player player, Component message)
|
||||
public static void kickPlayer(Plex plugin, Player player, Component message)
|
||||
{
|
||||
if (Bukkit.getServerConfig().isProxyEnabled())
|
||||
{
|
||||
@@ -18,7 +18,7 @@ public class BungeeUtil
|
||||
out.writeUTF("KickPlayer");
|
||||
out.writeUTF(player.getName());
|
||||
out.writeUTF(LegacyComponentSerializer.legacySection().serialize(message));
|
||||
player.sendPluginMessage(Plex.get(), "BungeeCord", out.toByteArray());
|
||||
player.sendPluginMessage(plugin, "BungeeCord", out.toByteArray());
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -13,17 +13,17 @@ import org.bukkit.World;
|
||||
|
||||
public class GameRuleUtil
|
||||
{
|
||||
public static void commitGlobalGameRules(World world)
|
||||
public static void commitGlobalGameRules(Plex plugin, World world)
|
||||
{
|
||||
for (String s : Plex.get().config.getStringList("global_gamerules"))
|
||||
for (String s : plugin.config.getStringList("global_gamerules"))
|
||||
{
|
||||
readGameRules(world, s);
|
||||
}
|
||||
}
|
||||
|
||||
public static void commitSpecificGameRules(World world)
|
||||
public static void commitSpecificGameRules(Plex plugin, World world)
|
||||
{
|
||||
for (String s : Plex.get().config.getStringList("worlds." + world.getName().toLowerCase(Locale.ROOT) + ".gameRules"))
|
||||
for (String s : plugin.config.getStringList("worlds." + world.getName().toLowerCase(Locale.ROOT) + ".gameRules"))
|
||||
{
|
||||
readGameRules(world, s);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package dev.plex.util;
|
||||
|
||||
import dev.plex.Plex;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import net.kyori.adventure.text.logger.slf4j.ComponentLogger;
|
||||
@@ -8,6 +7,7 @@ import net.kyori.adventure.text.logger.slf4j.ComponentLogger;
|
||||
public class PlexLog
|
||||
{
|
||||
private static final ComponentLogger logger = ComponentLogger.logger("");
|
||||
private static boolean debugEnabled;
|
||||
|
||||
public static void log(String message, Object... strings)
|
||||
{
|
||||
@@ -62,9 +62,14 @@ public class PlexLog
|
||||
logger.warn(PlexUtils.mmDeserialize("<#eb7c0e>[Plex Warning] <gold>" + message));
|
||||
}
|
||||
|
||||
public static void setDebugEnabled(boolean debugEnabled)
|
||||
{
|
||||
PlexLog.debugEnabled = debugEnabled;
|
||||
}
|
||||
|
||||
public static void debug(String message, Object... strings)
|
||||
{
|
||||
if (Plex.get().config.getBoolean("debug"))
|
||||
if (debugEnabled)
|
||||
{
|
||||
for (int i = 0; i < strings.length; i++)
|
||||
{
|
||||
|
||||
@@ -3,7 +3,7 @@ package dev.plex.util;
|
||||
import com.google.common.base.CharMatcher;
|
||||
import com.google.common.collect.Lists;
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.PlexBase;
|
||||
import dev.plex.config.Config;
|
||||
import dev.plex.listener.impl.ChatListener;
|
||||
import dev.plex.util.minimessage.SafeMiniMessage;
|
||||
|
||||
@@ -34,9 +34,17 @@ import org.bukkit.command.PluginCommandYamlParser;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
public class PlexUtils implements PlexBase
|
||||
public class PlexUtils
|
||||
{
|
||||
private static final MiniMessage MINI_MESSAGE = MiniMessage.miniMessage();
|
||||
private static Config config;
|
||||
private static Config messages;
|
||||
|
||||
public static void configure(Config config, Config messages)
|
||||
{
|
||||
PlexUtils.config = config;
|
||||
PlexUtils.messages = messages;
|
||||
}
|
||||
|
||||
public static List<String> DEVELOPERS =
|
||||
Arrays.asList("78408086-1991-4c33-a571-d8fa325465b2", // Telesphoreo
|
||||
@@ -78,13 +86,13 @@ public class PlexUtils implements PlexBase
|
||||
players[0].getWorld().playSound(location, org.bukkit.Sound.BLOCK_FIRE_EXTINGUISH, 0.5f, 0.5f);
|
||||
}
|
||||
|
||||
public static void testConnections()
|
||||
public static void testConnections(Plex plugin)
|
||||
{
|
||||
if (Plex.get().getSqlConnection().getDataSource() != null)
|
||||
if (plugin.getSqlConnection().getDataSource() != null)
|
||||
{
|
||||
try (Connection ignored = Plex.get().getSqlConnection().getCon())
|
||||
try (Connection ignored = plugin.getSqlConnection().getCon())
|
||||
{
|
||||
PlexLog.log("Successfully enabled " + Plex.get().getStorageType().getDisplayName() + "!");
|
||||
PlexLog.log("Successfully enabled " + plugin.getStorageType().getDisplayName() + "!");
|
||||
}
|
||||
catch (SQLException e)
|
||||
{
|
||||
@@ -194,9 +202,9 @@ public class PlexUtils implements PlexBase
|
||||
public static Component mmDeserialize(String input)
|
||||
{
|
||||
boolean aprilFools = true; // true by default
|
||||
if (plugin.config.contains("april_fools"))
|
||||
if (config != null && config.contains("april_fools"))
|
||||
{
|
||||
aprilFools = plugin.config.getBoolean("april_fools");
|
||||
aprilFools = config.getBoolean("april_fools");
|
||||
}
|
||||
ZonedDateTime date = ZonedDateTime.now(ZoneId.systemDefault());
|
||||
if (aprilFools && date.getMonth() == Month.APRIL && date.getDayOfMonth() == 1)
|
||||
@@ -235,7 +243,7 @@ public class PlexUtils implements PlexBase
|
||||
|
||||
public static String messageString(String entry, Object... objects)
|
||||
{
|
||||
String f = plugin.messages.getString(entry);
|
||||
String f = messages.getString(entry);
|
||||
if (f == null)
|
||||
{
|
||||
throw new NullPointerException();
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package dev.plex.util;
|
||||
|
||||
import dev.plex.Plex;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import java.time.ZonedDateTime;
|
||||
@@ -28,7 +26,7 @@ public class TimeUtils
|
||||
add("mo");
|
||||
add("y");
|
||||
}};
|
||||
public static String TIMEZONE = Plex.get().config.getString("server.timezone");
|
||||
public static String TIMEZONE = "Etc/UTC";
|
||||
|
||||
private static int parseInteger(String s) throws NumberFormatException
|
||||
{
|
||||
|
||||
@@ -3,7 +3,7 @@ package dev.plex.util;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonSyntaxException;
|
||||
import dev.plex.PlexBase;
|
||||
import dev.plex.Plex;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
@@ -23,7 +23,7 @@ import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.json.JSONException;
|
||||
|
||||
public class UpdateChecker implements PlexBase
|
||||
public class UpdateChecker
|
||||
{
|
||||
/*
|
||||
* -4 = Never checked for updates
|
||||
@@ -33,11 +33,19 @@ public class UpdateChecker implements PlexBase
|
||||
* 0 = Up to date
|
||||
* > 0 = Number of commits behind
|
||||
*/
|
||||
private final Plex plugin;
|
||||
private final String DOWNLOAD_PAGE = "https://ci.plex.us.org/job/";
|
||||
private final String REPO = plugin.config.getString("update_repo");
|
||||
private String BRANCH = plugin.config.getString("update_branch");
|
||||
private final String REPO;
|
||||
private String BRANCH;
|
||||
private int distance = -4;
|
||||
|
||||
public UpdateChecker(Plex plugin)
|
||||
{
|
||||
this.plugin = plugin;
|
||||
this.REPO = plugin.config.getString("update_repo");
|
||||
this.BRANCH = plugin.config.getString("update_branch");
|
||||
}
|
||||
|
||||
// Adapted from Paper
|
||||
private int fetchDistanceFromGitHub(@NonNull String repo, @NonNull String branch, @NonNull String hash)
|
||||
{
|
||||
|
||||
@@ -7,7 +7,7 @@ import com.google.gson.JsonParseException;
|
||||
import com.google.gson.JsonPrimitive;
|
||||
import com.google.gson.JsonSerializationContext;
|
||||
import com.google.gson.JsonSerializer;
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.util.TimeUtils;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.time.Instant;
|
||||
@@ -16,7 +16,7 @@ import java.time.ZonedDateTime;
|
||||
|
||||
public class ZonedDateTimeAdapter implements JsonSerializer<ZonedDateTime>, JsonDeserializer<ZonedDateTime>
|
||||
{
|
||||
private static final String TIMEZONE = Plex.get().config.getString("server.timezone");
|
||||
private static final String TIMEZONE = TimeUtils.TIMEZONE;
|
||||
|
||||
@Override
|
||||
public JsonElement serialize(ZonedDateTime src, Type typeOfSrc, JsonSerializationContext context)
|
||||
|
||||
@@ -25,7 +25,7 @@ public class MessageUtil
|
||||
private static final Gson GSON = new Gson();
|
||||
private static JedisPubSub SUBSCRIBER;
|
||||
|
||||
public static void subscribe()
|
||||
public static void subscribe(Plex plugin)
|
||||
{
|
||||
PlexLog.debug("Subscribing");
|
||||
SUBSCRIBER = new JedisPubSub()
|
||||
@@ -46,7 +46,7 @@ public class MessageUtil
|
||||
String[] server = object.getString("server").split(":");
|
||||
if (!Bukkit.getServer().getIp().equalsIgnoreCase(server[0]) || Bukkit.getServer().getPort() != Integer.parseInt(server[1]))
|
||||
{
|
||||
Plex.get().getServer().getConsoleSender().sendMessage(messageComponent("adminChatFormat", sender, object.getString("message")));
|
||||
plugin.getServer().getConsoleSender().sendMessage(messageComponent("adminChatFormat", sender, object.getString("message")));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -63,15 +63,15 @@ public class MessageUtil
|
||||
}
|
||||
};
|
||||
// SUBSCRIBER.subscribe("staffchat", "chat");
|
||||
Plex.get().getRedisConnection().runAsync(jedis ->
|
||||
plugin.getRedisConnection().runAsync(jedis ->
|
||||
{
|
||||
jedis.subscribe(SUBSCRIBER, "staffchat", "chat");
|
||||
});
|
||||
}
|
||||
|
||||
public static void sendStaffChat(CommandSender sender, Component message, UUID... ignore)
|
||||
public static void sendStaffChat(Plex plugin, CommandSender sender, Component message, UUID... ignore)
|
||||
{
|
||||
if (!Plex.get().getRedisConnection().isEnabled() || Plex.get().getRedisConnection().getJedis() == null)
|
||||
if (!plugin.getRedisConnection().isEnabled())
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -82,6 +82,6 @@ public class MessageUtil
|
||||
object.put("message", miniMessage);
|
||||
object.put("ignore", GSON.toJson(ignore));
|
||||
object.put("server", String.format("%s:%s", Bukkit.getServer().getIp(), Bukkit.getServer().getPort()));
|
||||
Plex.get().getRedisConnection().getJedis().publish("staffchat", object.toString());
|
||||
plugin.getRedisConnection().execute(jedis -> jedis.publish("staffchat", object.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,14 +9,12 @@ import org.bukkit.generator.BlockPopulator;
|
||||
|
||||
public class ConfigurationChunkGenerator extends BlockMapChunkGenerator
|
||||
{
|
||||
private static final Plex plugin = Plex.get();
|
||||
|
||||
public ConfigurationChunkGenerator(String worldName, BlockPopulator... populators)
|
||||
public ConfigurationChunkGenerator(Plex plugin, String worldName, BlockPopulator... populators)
|
||||
{
|
||||
super(createBlockMap(worldName), populators);
|
||||
super(createBlockMap(plugin, worldName), populators);
|
||||
}
|
||||
|
||||
private static LinkedHashMap<Material, Integer> createBlockMap(String worldName)
|
||||
private static LinkedHashMap<Material, Integer> createBlockMap(Plex plugin, String worldName)
|
||||
{
|
||||
LinkedHashMap<Material, Integer> blockMap = new LinkedHashMap<>();
|
||||
for (String key : plugin.config.getConfigurationSection("worlds." + worldName + ".parameters").getKeys(false))
|
||||
|
||||
@@ -17,8 +17,6 @@ import org.bukkit.generator.ChunkGenerator;
|
||||
|
||||
public class CustomWorld extends WorldCreator
|
||||
{
|
||||
private static final Plex plugin = Plex.get();
|
||||
|
||||
private final CustomChunkGenerator chunks;
|
||||
|
||||
public CustomWorld(String name, CustomChunkGenerator generator)
|
||||
@@ -28,13 +26,13 @@ public class CustomWorld extends WorldCreator
|
||||
this.generator(this.chunks);
|
||||
}
|
||||
|
||||
public static World generateConfigFlatWorld(String name)
|
||||
public static World generateConfigFlatWorld(Plex plugin, String name)
|
||||
{
|
||||
if (!plugin.config.contains("worlds." + name))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
CustomWorld customWorld = new CustomWorld(name, new ConfigurationChunkGenerator(name))
|
||||
CustomWorld customWorld = new CustomWorld(name, new ConfigurationChunkGenerator(plugin, name))
|
||||
{
|
||||
@Override
|
||||
public World generate()
|
||||
|
||||
Reference in New Issue
Block a user