portals commands + logger addon finished

This commit is contained in:
SuperRonanCraft
2020-11-16 00:04:52 -05:00
parent 7d018b748f
commit 90c02ed1fd
32 changed files with 406 additions and 140 deletions

View File

@@ -87,7 +87,7 @@
<dependency>
<groupId>me.SuperRonanCraft</groupId>
<artifactId>BetterRTP</artifactId>
<version>2.14.5</version>
<version>LATEST</version>
<scope>provided</scope>
</dependency>
</dependencies>

View File

@@ -15,4 +15,9 @@ public interface Addon {
//Unload the addon if enabled
void unload();
//Ability to grab a file
default Files.FILETYPE getFile(Files.FILETYPE filetype) {
return Main.getInstance().getFiles().getType(filetype);
}
}

View File

@@ -1,13 +1,10 @@
package me.SuperRonanCraft.BetterRTPAddons;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTPAddons.flashback.AddonFlashback;
import me.SuperRonanCraft.BetterRTPAddons.interfaces.AddonInterface;
import me.SuperRonanCraft.BetterRTPAddons.logger.AddonLogger;
import me.SuperRonanCraft.BetterRTPAddons.portals.AddonPortals;
import org.bukkit.Bukkit;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
import me.SuperRonanCraft.BetterRTPAddons.addons.flashback.AddonFlashback;
import me.SuperRonanCraft.BetterRTPAddons.addons.interfaces.AddonInterface;
import me.SuperRonanCraft.BetterRTPAddons.addons.logger.AddonLogger;
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals;
import java.util.ArrayList;
import java.util.List;
@@ -19,10 +16,7 @@ public class AddonsHandler {
AddonsCommand cmd = new AddonsCommand();
public void load() {
for (Addons addon : addons) {
addon.disable();
}
addons.clear();
unload();
for (Addons addon : Addons.values())
if (addon.isEnabled()) {
addon.load();
@@ -33,11 +27,18 @@ public class AddonsHandler {
BetterRTP.getInstance().getCmd().registerCommand(cmd, false);
}
public void unload() {
for (Addons addon : addons)
addon.disable();
addons.clear();
}
enum Addons {
LOGGER(new AddonLogger()),
FLASH_BACK(new AddonFlashback()),
PORTALS(new AddonPortals()),
INTERFACES(new AddonInterface()),
LOGGER(new AddonLogger());
INTERFACES(new AddonInterface())
;
Addon addon;

View File

@@ -1,6 +1,5 @@
package me.SuperRonanCraft.BetterRTPAddons;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.YamlConfiguration;
@@ -12,7 +11,11 @@ import java.util.List;
import java.util.Map;
public class Files {
List<FILETYPE> types = new ArrayList<>();
private List<FILETYPE> types = new ArrayList<>();
public FILETYPE getType(FILETYPE type) {
return types.get(types.indexOf(type));
}
void load() {
types.clear();
@@ -28,6 +31,7 @@ public class Files {
private final String fileName;
private final YamlConfiguration config = new YamlConfiguration();
private final File file;
boolean loaded = false;
FILETYPE(String str) {
this.fileName = str + ".yml";
@@ -85,6 +89,7 @@ public class Files {
//PROCCESSING
private void load() {
loaded = true;
if (!file.exists()) {
Main.getInstance().saveResource(fileName, false);
try {
@@ -95,7 +100,7 @@ public class Files {
} else {
try {
config.load(file);
final InputStream in = BetterRTP.getInstance().getResource(fileName);
final InputStream in = Main.getInstance().getResource(fileName);
if (in != null) {
config.setDefaults(YamlConfiguration.loadConfiguration(new InputStreamReader(in)));
config.options().copyDefaults(true);

View File

@@ -15,11 +15,20 @@ public class Main extends JavaPlugin {
load();
}
@Override
public void onDisable() {
addonsHandler.unload();
}
void load() {
files.load();
addonsHandler.load();
}
public Files getFiles() {
return files;
}
public AddonsHandler getAddonsHandler() {
return addonsHandler;
}

View File

@@ -1,6 +1,5 @@
package me.SuperRonanCraft.BetterRTPAddons;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandType;
import me.SuperRonanCraft.BetterRTP.player.commands.types.CmdReload;
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_CommandEvent;
import org.bukkit.Bukkit;

View File

@@ -1,4 +1,4 @@
package me.SuperRonanCraft.BetterRTPAddons.flashback;
package me.SuperRonanCraft.BetterRTPAddons.addons.flashback;
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportPostEvent;
import me.SuperRonanCraft.BetterRTPAddons.Addon;
@@ -10,7 +10,10 @@ import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
//When rtp'ing, a player will be teleported back to old location after a set amount of time
public class AddonFlashback implements Addon, Listener {
@@ -19,17 +22,37 @@ public class AddonFlashback implements Addon, Listener {
public final FlashbackMessages msgs = new FlashbackMessages();
public final FlashbackDatabase database = new FlashbackDatabase();
List<FlashbackPlayer> players = new ArrayList<>();
HashMap<Long, String> warnings = new HashMap<>();
public boolean isEnabled() {
return Files.FILETYPE.FLASHBACK.getBoolean("Enabled");
return getFile(Files.FILETYPE.FLASHBACK).getBoolean("Enabled");
}
@Override
public void load() {
Files.FILETYPE file = Files.FILETYPE.FLASHBACK;
Files.FILETYPE file = getFile(Files.FILETYPE.FLASHBACK);
this.time = file.getConfig().getLong("Time");
this.database.load(FlashbackDatabase.Columns.values());
warnings.clear();
Bukkit.getPluginManager().registerEvents(this, Main.getInstance());
List<Map<?, ?>> override_map = file.getConfig().getMapList("Timer.Warnings");
for (Map<?, ?> m : override_map)
for (Map.Entry<?, ?> entry : m.entrySet()) {
try {
Long secs = getLong(entry.getKey().toString());
warnings.put(secs, entry.getValue().toString());
Main.getInstance().getLogger().info("- Warnings: Time: '" + entry.getKey() + "' Message: '" + entry.getValue() + "' added");
} catch (NumberFormatException e) {
e.printStackTrace();
System.out.println("Warning value '" + entry.getKey().toString() + "' is " +
"invalid! Please make sure to format [- INTEGER: 'Message']");
}
}
}
private Long getLong(String str) throws NumberFormatException {
return Long.valueOf(str);
}
@Override

View File

@@ -1,7 +1,6 @@
package me.SuperRonanCraft.BetterRTPAddons.flashback;
package me.SuperRonanCraft.BetterRTPAddons.addons.flashback;
import me.SuperRonanCraft.BetterRTPAddons.LocSerialization;
import me.SuperRonanCraft.BetterRTPAddons.Main;
import me.SuperRonanCraft.BetterRTPAddons.PlayerInfo;
import me.SuperRonanCraft.BetterRTPAddons.database.Database;
import me.SuperRonanCraft.BetterRTPAddons.database.DatabaseColumn;
@@ -11,7 +10,6 @@ import org.bukkit.entity.Player;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
import java.util.logging.Level;

View File

@@ -1,4 +1,4 @@
package me.SuperRonanCraft.BetterRTPAddons.flashback;
package me.SuperRonanCraft.BetterRTPAddons.addons.flashback;
import me.SuperRonanCraft.BetterRTPAddons.AddonsMessages;
import me.SuperRonanCraft.BetterRTPAddons.Files;

View File

@@ -1,4 +1,4 @@
package me.SuperRonanCraft.BetterRTPAddons.flashback;
package me.SuperRonanCraft.BetterRTPAddons.addons.flashback;
import io.papermc.lib.PaperLib;
import me.SuperRonanCraft.BetterRTPAddons.Main;

View File

@@ -1,4 +1,4 @@
package me.SuperRonanCraft.BetterRTPAddons.interfaces;
package me.SuperRonanCraft.BetterRTPAddons.addons.interfaces;
import me.SuperRonanCraft.BetterRTPAddons.Addon;
import me.SuperRonanCraft.BetterRTPAddons.Files;
@@ -7,7 +7,7 @@ public class AddonInterface implements Addon {
@Override
public boolean isEnabled() {
return Files.FILETYPE.INTERFACE.getBoolean("Enabled");
return getFile(Files.FILETYPE.INTERFACE).getBoolean("Enabled");
}
@Override

View File

@@ -0,0 +1,44 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.interfaces;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable;
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds.PortalsCommand_Create;
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds.PortalsCommand_Loc1;
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds.PortalsCommand_Loc2;
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds.PortalsCommands;
import org.bukkit.command.CommandSender;
import java.util.List;
public class InterfaceCommand implements RTPCommand, RTPCommandHelpable {
AddonInterface pl;
InterfaceCommand(AddonInterface pl) {
this.pl = pl;
}
public String getName() {
return "interface";
}
@Override
public void execute(CommandSender sendi, String label, String[] args) {
sendi.sendMessage("Interface command!");
}
@Override
public List<String> tabComplete(CommandSender sendi, String[] args) {
return null;
}
@Override
public boolean permission(CommandSender sendi) {
return BetterRTP.getInstance().getPerms().checkPerm("betterrtp.addon.portals", sendi);
}
@Override
public String getHelp() {
return null;//pl.msgs.getHelp();
}
}

View File

@@ -0,0 +1,3 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.interfaces;
public class InterfaceMenus {}

View File

@@ -0,0 +1,129 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.logger;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
import me.SuperRonanCraft.BetterRTP.player.commands.types.CmdReload;
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_CommandEvent;
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportPostEvent;
import me.SuperRonanCraft.BetterRTPAddons.Addon;
import me.SuperRonanCraft.BetterRTPAddons.Files;
import me.SuperRonanCraft.BetterRTPAddons.Main;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.*;
public class AddonLogger implements Addon, Listener {
private String format;
private boolean toConsole;
Logger logger;
FileHandler handler;
ConsoleHandler consoleHandler_rtp, consoleHandler_main;
@Override
public boolean isEnabled() {
return getFile(Files.FILETYPE.LOGGER).getBoolean("Enabled");
}
@Override
public void load() {
Bukkit.getPluginManager().registerEvents(this, Main.getInstance());
this.format = getFile(Files.FILETYPE.LOGGER).getString("Format");
this.toConsole = getFile(Files.FILETYPE.LOGGER).getBoolean("LogToConsole");
try {
File f = new File(Main.getInstance().getDataFolder() + File.separator + "log.txt");
handler = new FileHandler(f.getPath(), true);
handler.setFormatter(new MyFormatter(this));
logger = Logger.getLogger(Main.getInstance().getName() + "-Log");
logger.setUseParentHandlers(this.toConsole); //Disable logging to console
logger.addHandler(handler);
//Log copying
consoleHandler_rtp = new MyConsole(this.logger, BetterRTP.getInstance().getName());
BetterRTP.getInstance().getLogger().addHandler(consoleHandler_rtp);
consoleHandler_main = new MyConsole(this.logger, Main.getInstance().getName());
Main.getInstance().getLogger().addHandler(consoleHandler_main);
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void unload() {
HandlerList.unregisterAll(this);
logger.removeHandler(handler);
handler.close();
BetterRTP.getInstance().getLogger().removeHandler(consoleHandler_rtp);
Main.getInstance().getLogger().removeHandler(consoleHandler_main);
}
@EventHandler
public void onCmd(RTP_CommandEvent e) {
String _str = e.getSendi().getName() + " executed `/rtp " + e.getCmd().getName() + "` at " + getDate();
Level lvl = Level.INFO;
if (e.getCmd() instanceof CmdReload)
lvl = Level.WARNING;
log(_str, lvl);
}
@EventHandler
public void onTeleport(RTP_TeleportPostEvent e) {
String _str = e.getPlayer().getName() + " has teleported to " + e.getLocation().toString()
+ " in world " + e.getLocation().getWorld().getName()
+ " at" + getDate();
log(_str, Level.INFO);
}
private String getDate() {
SimpleDateFormat format = new SimpleDateFormat(this.format);
return format.format(new Date());
}
private void log(String str, Level lvl) {
logger.log(lvl, str);
}
//Make the logs come out readable
static class MyFormatter extends Formatter {
AddonLogger addon;
MyFormatter(AddonLogger addon) {
this.addon = addon;
}
@Override
public String format(LogRecord record) {
return addon.getDate() + " [" + record.getLevel().getName() + "]: " + record.getMessage() + '\n';
}
}
//Copy one log to another log
static class MyConsole extends ConsoleHandler {
Level lvl;
Logger logger;
MyConsole(Logger logger, String name) {
this.logger = logger;
lvl = new MyLevel(name, Integer.MAX_VALUE);
}
@Override
public void publish(LogRecord record) {
logger.log(lvl, record.getMessage());
}
}
static class MyLevel extends Level {
protected MyLevel(String name, int value) {
super(name, value);
}
}
}

View File

@@ -1,12 +1,8 @@
package me.SuperRonanCraft.BetterRTPAddons.portals;
package me.SuperRonanCraft.BetterRTPAddons.addons.portals;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportPostEvent;
import me.SuperRonanCraft.BetterRTPAddons.Addon;
import me.SuperRonanCraft.BetterRTPAddons.Files;
import me.SuperRonanCraft.BetterRTPAddons.Main;
import me.SuperRonanCraft.BetterRTPAddons.flashback.FlashbackDatabase;
import org.bukkit.event.EventHandler;
//With a gui, a player
public class AddonPortals implements Addon {
@@ -16,7 +12,7 @@ public class AddonPortals implements Addon {
private final PortalsDatabase database = new PortalsDatabase();;
public boolean isEnabled() {
return Files.FILETYPE.PORTALS.getBoolean("Enabled");
return getFile(Files.FILETYPE.PORTALS).getBoolean("Enabled");
}
@Override

View File

@@ -1,9 +1,9 @@
package me.SuperRonanCraft.BetterRTPAddons.portals;
package me.SuperRonanCraft.BetterRTPAddons.addons.portals;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable;
import me.SuperRonanCraft.BetterRTPAddons.portals.cmds.*;
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds.*;
import org.bukkit.command.CommandSender;
import java.util.List;

View File

@@ -1,6 +1,5 @@
package me.SuperRonanCraft.BetterRTPAddons.portals;
package me.SuperRonanCraft.BetterRTPAddons.addons.portals;
import me.SuperRonanCraft.BetterRTPAddons.Main;
import me.SuperRonanCraft.BetterRTPAddons.PlayerInfo;
import me.SuperRonanCraft.BetterRTPAddons.database.Database;
import me.SuperRonanCraft.BetterRTPAddons.database.DatabaseColumn;
@@ -38,7 +37,7 @@ public class PortalsDatabase extends Database {
List<PlayerInfo> playerInfos = new ArrayList<>();
public PortalsDatabase(){
super(Main.getInstance(), "addon_portals");
super("addon_portals");
}
private final String createTable = "CREATE TABLE IF NOT EXISTS " + table + " (" +

View File

@@ -1,4 +1,4 @@
package me.SuperRonanCraft.BetterRTPAddons.portals;
package me.SuperRonanCraft.BetterRTPAddons.addons.portals;
import me.SuperRonanCraft.BetterRTPAddons.AddonsMessages;
import me.SuperRonanCraft.BetterRTPAddons.Files;

View File

@@ -1,4 +1,4 @@
package me.SuperRonanCraft.BetterRTPAddons.portals.cmds;
package me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds;
import org.bukkit.command.CommandSender;

View File

@@ -1,4 +1,4 @@
package me.SuperRonanCraft.BetterRTPAddons.portals.cmds;
package me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds;
import org.bukkit.command.CommandSender;

View File

@@ -1,4 +1,4 @@
package me.SuperRonanCraft.BetterRTPAddons.portals.cmds;
package me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds;
import org.bukkit.command.CommandSender;

View File

@@ -0,0 +1,9 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds;
import org.bukkit.command.CommandSender;
public interface PortalsCommands {
void execute(CommandSender sendi, String label, String[] args);
}

View File

@@ -1,28 +0,0 @@
package me.SuperRonanCraft.BetterRTPAddons.logger;
import me.SuperRonanCraft.BetterRTPAddons.Addon;
import me.SuperRonanCraft.BetterRTPAddons.Files;
import me.SuperRonanCraft.BetterRTPAddons.Main;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
public class AddonLogger implements Addon, Listener {
@Override
public boolean isEnabled() {
return Files.FILETYPE.LOGGER.getBoolean("Enabled");
}
@Override
public void load() {
Bukkit.getPluginManager().registerEvents(this, Main.getInstance());
}
@Override
public void unload() {
HandlerList.unregisterAll(this);
}
}

View File

@@ -1,9 +0,0 @@
package me.SuperRonanCraft.BetterRTPAddons.portals.cmds;
import org.bukkit.command.CommandSender;
public interface PortalsCommands {
public void execute(CommandSender sendi, String label, String[] args);
}

View File

@@ -1,2 +1,8 @@
Enabled: false
Time: 120 #In seconds
Enabled: true
Timer:
Delay: 15 #In Seconds
Warnings: #Warning messages to send to a player when X amount of time is left
- 5: "&eYou have 5 seconds left! Grab all your materials quick!"
- 1: "&eHang on!"
Messages:
Warning: '&6This Teleport is temporary! &7You will be teleported back soon...'

View File

@@ -1,2 +1,3 @@
Enabled: true
Debug: true
LogToConsole: true
Format: 'yyyy-MM-dd HH:mm:ss'