diff --git a/BetterRTPAddons/pom.xml b/BetterRTPAddons/pom.xml index c877dd7..2d8eb73 100644 --- a/BetterRTPAddons/pom.xml +++ b/BetterRTPAddons/pom.xml @@ -72,14 +72,14 @@ org.spigotmc spigot-api - 1.8.8-R0.1-SNAPSHOT + 1.16.2-R0.1-SNAPSHOT provided org.spigotmc spigot - 1.8.8-R0.1-SNAPSHOT + 1.16.2-R0.1-SNAPSHOT provided diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/Addon.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/Addon.java index 91de6f5..6a321b1 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/Addon.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/Addon.java @@ -1,8 +1,6 @@ package me.SuperRonanCraft.BetterRTPAddons; -import org.bukkit.Bukkit; -import org.bukkit.event.HandlerList; -import org.bukkit.event.Listener; +import me.SuperRonanCraft.BetterRTPAddons.util.Files; public interface Addon { diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonsHandler.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonsHandler.java index 8adeb6b..4e1b05a 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonsHandler.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonsHandler.java @@ -17,13 +17,14 @@ public class AddonsHandler { public void load() { unload(); + //int addonCount = 0; for (Addons addon : Addons.values()) if (addon.isEnabled()) { addon.load(); addons.add(addon); - } else { - Main.getInstance().getLogger().log(Level.INFO, "Addon " + addon.name() + " was NOT enabled."); + //addonCount++; } + //Main.getInstance().getLogger().log(Level.INFO, addonCount + "/" + Addons.values().length + " addons were enabled!"); BetterRTP.getInstance().getCmd().registerCommand(cmd, false); } @@ -37,7 +38,7 @@ public class AddonsHandler { LOGGER(new AddonLogger()), FLASH_BACK(new AddonFlashback()), PORTALS(new AddonPortals()), - INTERFACES(new AddonInterface()) + //INTERFACES(new AddonInterface()) ; Addon addon; @@ -52,7 +53,7 @@ public class AddonsHandler { void load() { addon.load(); - Main.getInstance().getLogger().log(Level.INFO, "Addon " + this.name() + " has been enabled!"); + //Main.getInstance().getLogger().log(Level.INFO, "Addon " + this.name() + " has been enabled!"); } void disable() { diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonsMessages.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonsMessages.java index fcb95c7..2a09969 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonsMessages.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonsMessages.java @@ -1,12 +1,17 @@ package me.SuperRonanCraft.BetterRTPAddons; import me.SuperRonanCraft.BetterRTP.BetterRTP; +import me.SuperRonanCraft.BetterRTPAddons.util.LangFile; import org.bukkit.command.CommandSender; import java.util.List; public interface AddonsMessages { + default LangFile getLang() { + return Main.getInstance().getFiles().getLang(); + } + default void sms(CommandSender sendi, String msg) { BetterRTP.getInstance().getText().sms(sendi, msg); } diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/Main.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/Main.java index 883ed8a..8d985b6 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/Main.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/Main.java @@ -1,5 +1,7 @@ package me.SuperRonanCraft.BetterRTPAddons; +import me.SuperRonanCraft.BetterRTPAddons.util.Files; +import me.SuperRonanCraft.BetterRTPAddons.util.ReloadListener; import org.bukkit.plugin.java.JavaPlugin; public class Main extends JavaPlugin { @@ -20,7 +22,7 @@ public class Main extends JavaPlugin { addonsHandler.unload(); } - void load() { + public void load() { files.load(); addonsHandler.load(); } diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/flashback/AddonFlashback.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/flashback/AddonFlashback.java index c48d1e3..27de22d 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/flashback/AddonFlashback.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/flashback/AddonFlashback.java @@ -2,7 +2,7 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.flashback; import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportPostEvent; import me.SuperRonanCraft.BetterRTPAddons.Addon; -import me.SuperRonanCraft.BetterRTPAddons.Files; +import me.SuperRonanCraft.BetterRTPAddons.util.Files; import me.SuperRonanCraft.BetterRTPAddons.Main; import org.bukkit.Bukkit; import org.bukkit.event.EventHandler; @@ -13,11 +13,12 @@ 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 { + private String name = "Flashback"; + private Long time; public final FlashbackMessages msgs = new FlashbackMessages(); public final FlashbackDatabase database = new FlashbackDatabase(); @@ -25,18 +26,18 @@ public class AddonFlashback implements Addon, Listener { HashMap warnings = new HashMap<>(); public boolean isEnabled() { - return getFile(Files.FILETYPE.FLASHBACK).getBoolean("Enabled"); + return getFile(Files.FILETYPE.CONFIG).getBoolean(name + ".Enabled"); } @Override public void load() { - Files.FILETYPE file = getFile(Files.FILETYPE.FLASHBACK); - this.time = file.getConfig().getLong("Time"); + Files.FILETYPE file = getFile(Files.FILETYPE.CONFIG); + this.time = file.getConfig().getLong(name + ".Time"); this.database.load(FlashbackDatabase.Columns.values()); warnings.clear(); Bukkit.getPluginManager().registerEvents(this, Main.getInstance()); - List> override_map = file.getConfig().getMapList("Timer.Warnings"); + List> override_map = file.getConfig().getMapList(name + ".Timer.Warnings"); for (Map m : override_map) for (Map.Entry entry : m.entrySet()) { try { diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/flashback/FlashbackDatabase.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/flashback/FlashbackDatabase.java index 5b91503..e9d6d89 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/flashback/FlashbackDatabase.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/flashback/FlashbackDatabase.java @@ -1,7 +1,6 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.flashback; -import me.SuperRonanCraft.BetterRTPAddons.LocSerialization; -import me.SuperRonanCraft.BetterRTPAddons.PlayerInfo; +import me.SuperRonanCraft.BetterRTPAddons.util.LocSerialization; import me.SuperRonanCraft.BetterRTPAddons.database.Database; import me.SuperRonanCraft.BetterRTPAddons.database.DatabaseColumn; import me.SuperRonanCraft.BetterRTPAddons.database.Errors; @@ -41,7 +40,7 @@ public class FlashbackDatabase extends Database { } } - List playerInfos = new ArrayList<>(); + List playerInfos = new ArrayList<>(); public FlashbackDatabase(){ super("addon_flashback"); @@ -66,7 +65,7 @@ public class FlashbackDatabase extends Database { super.load(columns); } - public PlayerInfo getPlayer(Player p) { + public FlashbackPlayerInfo getPlayer(Player p) { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; @@ -78,7 +77,7 @@ public class FlashbackDatabase extends Database { rs = ps.executeQuery(); if (rs.next()) { Location loc = LocSerialization.getLocationFromString(rs.getString(Columns.LOCATION_OLD.name)); - return new PlayerInfo(p, loc); + return new FlashbackPlayerInfo(p, loc); } } catch (SQLException ex) { plugin.getLogger().log(Level.SEVERE, Errors.sqlConnectionExecute(), ex); diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/flashback/FlashbackMessages.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/flashback/FlashbackMessages.java index 0a18687..23c5ede 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/flashback/FlashbackMessages.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/flashback/FlashbackMessages.java @@ -1,16 +1,11 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.flashback; import me.SuperRonanCraft.BetterRTPAddons.AddonsMessages; -import me.SuperRonanCraft.BetterRTPAddons.Files; import org.bukkit.command.CommandSender; public class FlashbackMessages implements AddonsMessages { private static String preM = "Messages"; - private Files.FILETYPE getLang() { - return Files.FILETYPE.FLASHBACK; - } - public void getWarning(CommandSender sendi) { sms(sendi, getLang().getString(preM + "Warning")); } diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/PlayerInfo.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/flashback/FlashbackPlayerInfo.java similarity index 67% rename from BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/PlayerInfo.java rename to BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/flashback/FlashbackPlayerInfo.java index 15ed9e9..ed8963b 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/PlayerInfo.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/flashback/FlashbackPlayerInfo.java @@ -1,14 +1,14 @@ -package me.SuperRonanCraft.BetterRTPAddons; +package me.SuperRonanCraft.BetterRTPAddons.addons.flashback; import org.bukkit.Location; import org.bukkit.entity.Player; -public class PlayerInfo { +public class FlashbackPlayerInfo { private final Player player; private final Location location; - public PlayerInfo(Player player, Location location) { + public FlashbackPlayerInfo(Player player, Location location) { this.player = player; this.location = location; } diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/interfaces/AddonInterface.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/interfaces/AddonInterface.java index dcff288..c06e11a 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/interfaces/AddonInterface.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/interfaces/AddonInterface.java @@ -1,13 +1,15 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.interfaces; import me.SuperRonanCraft.BetterRTPAddons.Addon; -import me.SuperRonanCraft.BetterRTPAddons.Files; +import me.SuperRonanCraft.BetterRTPAddons.util.Files; public class AddonInterface implements Addon { + private String name = "Interface"; + @Override public boolean isEnabled() { - return getFile(Files.FILETYPE.INTERFACE).getBoolean("Enabled"); + return getFile(Files.FILETYPE.CONFIG).getBoolean(name + "Enabled"); } @Override diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/logger/AddonLogger.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/logger/AddonLogger.java index dcbfc52..32d3a28 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/logger/AddonLogger.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/logger/AddonLogger.java @@ -1,12 +1,11 @@ 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.util.Files; import me.SuperRonanCraft.BetterRTPAddons.Main; import org.bukkit.Bukkit; import org.bukkit.event.EventHandler; @@ -21,6 +20,7 @@ import java.util.logging.*; public class AddonLogger implements Addon, Listener { + private final String name = "Logger"; private String format; private boolean toConsole; Logger logger; @@ -29,14 +29,14 @@ public class AddonLogger implements Addon, Listener { @Override public boolean isEnabled() { - return getFile(Files.FILETYPE.LOGGER).getBoolean("Enabled"); + return getFile(Files.FILETYPE.CONFIG).getBoolean(name + ".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"); + this.format = getFile(Files.FILETYPE.CONFIG).getString(name + ".Format"); + this.toConsole = getFile(Files.FILETYPE.CONFIG).getBoolean(name + ".LogToConsole"); try { File f = new File(Main.getInstance().getDataFolder() + File.separator + "log.txt"); handler = new FileHandler(f.getPath(), true); diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/AddonPortals.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/AddonPortals.java index 8de7552..04c5044 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/AddonPortals.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/AddonPortals.java @@ -2,38 +2,42 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.portals; import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTPAddons.Addon; -import me.SuperRonanCraft.BetterRTPAddons.Files; -import org.bukkit.Location; -import org.bukkit.entity.Player; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; +import me.SuperRonanCraft.BetterRTPAddons.util.Files; +import me.SuperRonanCraft.BetterRTPAddons.addons.portals.region.PortalsCache; //Create portals for rtp'ing public class AddonPortals implements Addon { + private final String name = "Portals"; public PortalsMessages msgs = new PortalsMessages(); private final PortalsCommand cmd = new PortalsCommand(this); private final PortalsDatabase database = new PortalsDatabase(); - private final PortalsCache portalsCache = new PortalsCache(); + private final PortalsCache portalsCache = new PortalsCache(this); + private final PortalsEvents events = new PortalsEvents(this); public boolean isEnabled() { - return getFile(Files.FILETYPE.PORTALS).getBoolean("Enabled"); + return getFile(Files.FILETYPE.CONFIG).getBoolean(name + ".Enabled"); } @Override public void load() { BetterRTP.getInstance().getCmd().registerCommand(cmd, false); - this.database.load(PortalsDatabase.Columns.values()); + database.load(PortalsDatabase.Columns.values()); + events.register(); + portalsCache.load(); } @Override public void unload() { - this.portalsCache.unload(); + portalsCache.unload(); + events.unregiter(); } public PortalsCache getPortals() { return portalsCache; } + + public PortalsDatabase getDatabase() { + return database; + } } diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsCommand.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsCommand.java index 2f60734..2ec27e5 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsCommand.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsCommand.java @@ -58,7 +58,8 @@ public class PortalsCommand implements RTPCommand, RTPCommandHelpable { private enum subCmd { LOC1(new PortalsCommand_Loc1()), LOC2(new PortalsCommand_Loc2()), - CREATE(new PortalsCommand_Create()); + CREATE(new PortalsCommand_Create()), + REMOVE(new PortalsCommand_Remove()); PortalsCommands cmd; diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsCreation.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsCreation.java deleted file mode 100644 index 20deaf8..0000000 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsCreation.java +++ /dev/null @@ -1,22 +0,0 @@ -package me.SuperRonanCraft.BetterRTPAddons.addons.portals; - -import org.bukkit.Location; -import org.bukkit.entity.Player; - -public class PortalsCreation { - - public Player p; - protected Location loc_1, loc_2; - - PortalsCreation(Player p) { - this.p = p; - } - - public Location getLoc1() { - return loc_1; - } - - public Location getLoc2() { - return loc_2; - } -} diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsDatabase.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsDatabase.java index 8857ffe..4c52bb3 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsDatabase.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsDatabase.java @@ -1,19 +1,25 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.portals; -import me.SuperRonanCraft.BetterRTPAddons.PlayerInfo; +import me.SuperRonanCraft.BetterRTPAddons.util.LocSerialization; +import me.SuperRonanCraft.BetterRTPAddons.addons.portals.region.PortalsRegionInfo; import me.SuperRonanCraft.BetterRTPAddons.database.Database; import me.SuperRonanCraft.BetterRTPAddons.database.DatabaseColumn; +import me.SuperRonanCraft.BetterRTPAddons.database.Errors; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; import java.util.ArrayList; import java.util.List; +import java.util.logging.Level; public class PortalsDatabase extends Database { enum Columns implements DatabaseColumn { - ID("portal", "integer"), LOCATION_1("location_1", "longtext"), LOCATION_2("location_2", "longtext"), - TITLE("title", "varchar(255)"); + NAME("name", "varchar(255)"); private final String name; private final String type; @@ -34,17 +40,14 @@ public class PortalsDatabase extends Database { } } - List playerInfos = new ArrayList<>(); - public PortalsDatabase(){ super("addon_portals"); } private final String createTable = "CREATE TABLE IF NOT EXISTS " + table + " (" + - "`" + Columns.ID.name + "` " + Columns.ID.type + " PRIMARY KEY AUTOINCREMENT," + + "`" + Columns.NAME.name + "` " + Columns.NAME.type + " PRIMARY KEY," + "`" + Columns.LOCATION_1.name + "` " + Columns.LOCATION_2.type + "," + - "`" + Columns.LOCATION_2.name + "` " + Columns.LOCATION_2.type + "," + - "`" + Columns.TITLE.name + "` " + Columns.TITLE.type + + "`" + Columns.LOCATION_2.name + "` " + Columns.LOCATION_2.type + ");"; @@ -55,24 +58,24 @@ public class PortalsDatabase extends Database { @Override public void load(DatabaseColumn[] columns) { - playerInfos.clear(); super.load(columns); } - /*public PlayerInfo getPlayer(Player p) { + public List getPortals() { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { conn = getSQLConnection(); - ps = conn.prepareStatement("SELECT * FROM " + table + " WHERE " + Columns.UUID.name + " = ?"); - UUID id = p.getUniqueId(); - ps.setString(1, id != null ? id.toString() : console_id); + ps = conn.prepareStatement("SELECT * FROM " + table); rs = ps.executeQuery(); - if (rs.next()) { - Location loc = LocSerialization.getLocationFromString(rs.getString(Columns.LOCATION_OLD.name)); - return new PlayerInfo(p, loc); + List list = new ArrayList<>(); + while (rs.next()) { + PortalsRegionInfo info = new PortalsRegionInfo(); + info.setLoc1(LocSerialization.getLocationFromString(rs.getString(Columns.LOCATION_1.name))); + info.setLoc2(LocSerialization.getLocationFromString(rs.getString(Columns.LOCATION_2.name))); } + return list; } catch (SQLException ex) { plugin.getLogger().log(Level.SEVERE, Errors.sqlConnectionExecute(), ex); } finally { @@ -81,19 +84,25 @@ public class PortalsDatabase extends Database { return null; } - public boolean setPlayer(Player p, Location oldLocation) { + public boolean removePortal(PortalsRegionInfo portal) { Connection conn = null; PreparedStatement ps = null; boolean success = true; try { conn = getSQLConnection(); - ps = conn.prepareStatement("INSERT INTO " + table + "(" + Columns.UUID.name + ", " + Columns.LOCATION_OLD.name + ") VALUES (?, ?) " - + "ON CONFLICT(" + Columns.UUID.name + ") DO UPDATE SET " + Columns.LOCATION_OLD.name + " = + ?"); - UUID id = p.getUniqueId(); - ps.setString(1, id != null ? id.toString() : console_id); - String serialLocation = LocSerialization.getStringFromLocation(oldLocation); - ps.setString(2, serialLocation); - ps.setString(3, serialLocation); + ps = conn.prepareStatement("INSERT INTO " + table + "(" + + Columns.NAME.name + ", " + + Columns.LOCATION_1.name + ", " + + Columns.LOCATION_2.name + ") VALUES (?, ?, ?) " + + "ON CONFLICT(" + Columns.NAME.name + ") DO UPDATE SET " + + Columns.LOCATION_1.name + " = + ?, " + Columns.LOCATION_2.name + " = ?"); + ps.setString(1, portal.getName()); + String serialLocation_1 = LocSerialization.getStringFromLocation(portal.getLoc1()); + String serialLocation_2 = LocSerialization.getStringFromLocation(portal.getLoc2()); + ps.setString(2, serialLocation_1); + ps.setString(3, serialLocation_2); + ps.setString(4, serialLocation_1); + ps.setString(5, serialLocation_2); ps.executeUpdate(); } catch (SQLException ex) { plugin.getLogger().log(Level.SEVERE, Errors.sqlConnectionExecute(), ex); @@ -102,5 +111,34 @@ public class PortalsDatabase extends Database { close(ps, null, conn); } return success; - }*/ + } + + public boolean setPortal(PortalsRegionInfo portal) { + Connection conn = null; + PreparedStatement ps = null; + boolean success = true; + try { + conn = getSQLConnection(); + ps = conn.prepareStatement("INSERT INTO " + table + "(" + + Columns.NAME.name + ", " + + Columns.LOCATION_1.name + ", " + + Columns.LOCATION_2.name + ") VALUES (?, ?, ?) " + + "ON CONFLICT(" + Columns.NAME.name + ") DO UPDATE SET " + + Columns.LOCATION_1.name + " = + ?, " + Columns.LOCATION_2.name + " = ?"); + ps.setString(1, portal.getName()); + String serialLocation_1 = LocSerialization.getStringFromLocation(portal.getLoc1()); + String serialLocation_2 = LocSerialization.getStringFromLocation(portal.getLoc2()); + ps.setString(2, serialLocation_1); + ps.setString(3, serialLocation_2); + ps.setString(4, serialLocation_1); + ps.setString(5, serialLocation_2); + ps.executeUpdate(); + } catch (SQLException ex) { + plugin.getLogger().log(Level.SEVERE, Errors.sqlConnectionExecute(), ex); + success = false; + } finally { + close(ps, null, conn); + } + return success; + } } diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsEvent_Move.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsEvent_Move.java deleted file mode 100644 index ed7e7aa..0000000 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsEvent_Move.java +++ /dev/null @@ -1,23 +0,0 @@ -package me.SuperRonanCraft.BetterRTPAddons.addons.portals; - -import me.SuperRonanCraft.BetterRTPAddons.Main; -import org.bukkit.event.EventHandler; -import org.bukkit.event.HandlerList; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerMoveEvent; - -public class PortalsEvent_Move implements Listener { - - public void register() { - Main.getInstance().getServer().getPluginManager().registerEvents(this, Main.getInstance()); - } - - public void unregiter() { - HandlerList.unregisterAll(this); - } - - @EventHandler - void move(PlayerMoveEvent e) { - - } -} diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsEvent_WorldChange.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsEvent_WorldChange.java deleted file mode 100644 index 59692fd..0000000 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsEvent_WorldChange.java +++ /dev/null @@ -1,23 +0,0 @@ -package me.SuperRonanCraft.BetterRTPAddons.addons.portals; - -import me.SuperRonanCraft.BetterRTPAddons.Main; -import org.bukkit.event.EventHandler; -import org.bukkit.event.HandlerList; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerMoveEvent; - -public class PortalsEvent_WorldChange implements Listener { - - public void register() { - Main.getInstance().getServer().getPluginManager().registerEvents(this, Main.getInstance()); - } - - public void unregiter() { - HandlerList.unregisterAll(this); - } - - @EventHandler - void move(PlayerMoveEvent e) { - - } -} diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsEvents.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsEvents.java new file mode 100644 index 0000000..53cf25e --- /dev/null +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsEvents.java @@ -0,0 +1,43 @@ +package me.SuperRonanCraft.BetterRTPAddons.addons.portals; + +import me.SuperRonanCraft.BetterRTPAddons.Main; +import me.SuperRonanCraft.BetterRTPAddons.addons.portals.region.PortalsRegionInfo; +import org.bukkit.Location; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.HandlerList; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerMoveEvent; + +import java.util.List; + +public class PortalsEvents implements Listener { + + AddonPortals addonPortals; + + PortalsEvents(AddonPortals addonPortals) { + this.addonPortals = addonPortals; + } + + public void register() { + Main.getInstance().getServer().getPluginManager().registerEvents(this, Main.getInstance()); + } + + public void unregiter() { + HandlerList.unregisterAll(this); + } + + @EventHandler (priority = EventPriority.MONITOR) + void move(PlayerMoveEvent e) { + if (e.getFrom() != e.getTo()) { + for (PortalsRegionInfo portal : addonPortals.getPortals().getRegisteredPortals()) { + Location loc1 = portal.getLoc1(), loc2 = portal.getLoc2(); + for (int x = Math.max(loc1.getBlockX(), loc2.getBlockX()); x >= Math.min(loc1.getBlockX(), loc2.getBlockX()); x--) + for (int y = Math.max(loc1.getBlockY(), loc2.getBlockY()); y >= Math.min(loc1.getBlockY(), loc2.getBlockY()); y--) + for (int z = Math.max(loc1.getBlockZ(), loc2.getBlockZ()); z >= Math.min(loc1.getBlockZ(), loc2.getBlockZ()); z--) { + e.getPlayer().sendMessage("Inside Region!"); + } + } + } + } +} diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsMessages.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsMessages.java index 79b4775..42ab220 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsMessages.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsMessages.java @@ -1,21 +1,62 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.portals; import me.SuperRonanCraft.BetterRTPAddons.AddonsMessages; -import me.SuperRonanCraft.BetterRTPAddons.Files; import org.bukkit.command.CommandSender; public class PortalsMessages implements AddonsMessages { - private static final String preM = "Messages."; - - private Files.FILETYPE getLang() { - return Files.FILETYPE.PORTALS; - } + private static final String preM = "Portals."; public void getWarning(CommandSender sendi) { sms(sendi, getLang().getString(preM + "Warning")); } public String getHelp() { - return getLang().getString(preM + "Help"); + return getLang().getString("Help.Portals"); + } + + //Create + + public void getCreateConfirm(CommandSender sendi, String name) { + sms(sendi, getLang().getString(preM + "Created.Confirm").replace("%name%", name)); + } + + public void getCreateInvalid(CommandSender sendi) { + sms(sendi, getLang().getString(preM + "Created.Invalid")); + } + + public void getCreateName(CommandSender sendi) { + sms(sendi, getLang().getString(preM + "Created.Name")); + } + + public void getCreateDuplicate(CommandSender sendi) { + sms(sendi, getLang().getString(preM + "Created.Duplicate")); + } + + //Location + + public void getLocation_1(CommandSender sendi) { + sms(sendi, getLang().getString(preM + "Location.1")); + } + + public void getLocation_2(CommandSender sendi) { + sms(sendi, getLang().getString(preM + "Location.2")); + } + + public void getLocation_Look(CommandSender sendi) { + sms(sendi, getLang().getString(preM + "Location.Look")); + } + + //Remove + + public void getRemoveConfirm(CommandSender sendi, String name) { + sms(sendi, getLang().getString(preM + "Remove.Confirm").replace("%name%", name)); + } + + public void getRemoveNone(CommandSender sendi, String name) { + sms(sendi, getLang().getString(preM + "Remove.None").replace("%name%", name)); + } + + public void usageRemove(CommandSender sendi, String label) { + sms(sendi, getLang().getString(preM + "Usage.Remove").replace("%command%", label)); } } diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Create.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Create.java index af0f351..5b20bc9 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Create.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Create.java @@ -1,7 +1,7 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds; import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals; -import me.SuperRonanCraft.BetterRTPAddons.addons.portals.PortalsCreation; +import me.SuperRonanCraft.BetterRTPAddons.addons.portals.region.PortalsRegionInfo; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -9,12 +9,33 @@ public class PortalsCommand_Create implements PortalsCommands { @Override public void execute(CommandSender sendi, String label, String[] args, AddonPortals addonPortals) { - sendi.sendMessage("Portals Create command!"); - PortalsCreation portal = addonPortals.getPortals().getPortal((Player) sendi); - if (portal == null || portal.getLoc1() == null || portal.getLoc2() == null) { - sendi.sendMessage("Invalid portal!"); + if (!(sendi instanceof Player)) { + sendi.sendMessage("Console cannot perform this command!"); return; } - sendi.sendMessage("Valid portal!"); + Player p = (Player) sendi; + PortalsRegionInfo portal = addonPortals.getPortals().getPortal(p); + //Valid region + if (portal == null || portal.getLoc1() == null || portal.getLoc2() == null) { + addonPortals.msgs.getCreateInvalid(sendi); + return; + } + //Valid Name + if (args.length < 3 || args[2].length() < 1) { + addonPortals.msgs.getCreateName(sendi); + return; + } + String name = args[2]; + //Duplicate Name + for (PortalsRegionInfo portals : addonPortals.getPortals().getRegisteredPortals()) { + if (portals.getName().equals(name)) { + addonPortals.msgs.getCreateDuplicate(sendi); + return; + } + } + if (addonPortals.getPortals().setPortal(p, name)) + addonPortals.msgs.getCreateConfirm(sendi, name); + else + sendi.sendMessage("Something went wrong when creating a portal!"); } } diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Loc1.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Loc1.java index dcba1f2..a83cdcb 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Loc1.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Loc1.java @@ -1,21 +1,12 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds; -import com.comphenix.protocol.PacketType; -import com.comphenix.protocol.ProtocolLibrary; -import com.comphenix.protocol.ProtocolManager; import com.comphenix.protocol.events.PacketContainer; -import com.comphenix.protocol.wrappers.BlockPosition; -import com.comphenix.protocol.wrappers.WrappedBlockData; import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals; -import org.bukkit.Bukkit; import org.bukkit.Location; -import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import java.lang.reflect.InvocationTargetException; - public class PortalsCommand_Loc1 implements PortalsCommands, LocationFinder { private PacketContainer fakeBlock; @@ -26,10 +17,10 @@ public class PortalsCommand_Loc1 implements PortalsCommands, LocationFinder { Block block = getTargetBlock(p, 10); if (block != null) { Location loc = block.getLocation(); - addonPortals.getPortals().setPortal(p, loc, false); - sendi.sendMessage("Location 1 set to this location!"); + addonPortals.getPortals().cachePortal(p, loc, false); + addonPortals.msgs.getLocation_1(sendi); } else { - sendi.sendMessage("Please look at a block!"); + addonPortals.msgs.getLocation_Look(sendi); } } } diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Loc2.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Loc2.java index eec62ac..ecfe4c8 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Loc2.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Loc2.java @@ -2,11 +2,9 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds; import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals; import org.bukkit.Location; -import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import org.bukkit.util.BlockIterator; public class PortalsCommand_Loc2 implements PortalsCommands, LocationFinder { @@ -16,10 +14,10 @@ public class PortalsCommand_Loc2 implements PortalsCommands, LocationFinder { Block block = getTargetBlock(p, 10); if (block != null) { Location loc = block.getLocation(); - addonPortals.getPortals().setPortal(p, loc, true); - sendi.sendMessage("Location 2 set to this location!"); + addonPortals.getPortals().cachePortal(p, loc, true); + addonPortals.msgs.getLocation_2(sendi); } else { - sendi.sendMessage("Please look at a block!"); + addonPortals.msgs.getLocation_Look(sendi); } } } diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Remove.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Remove.java new file mode 100644 index 0000000..0d9459a --- /dev/null +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Remove.java @@ -0,0 +1,29 @@ +package me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds; + +import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals; +import me.SuperRonanCraft.BetterRTPAddons.addons.portals.region.PortalsRegionInfo; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class PortalsCommand_Remove implements PortalsCommands { + + @Override + public void execute(CommandSender sendi, String label, String[] args, AddonPortals addonPortals) { + if (args.length < 3) { + addonPortals.msgs.usageRemove(sendi, label); + return; + } + String portalName = args[2]; + for (PortalsRegionInfo portal : addonPortals.getPortals().getRegisteredPortals()) { + if (portal.getName().equals(portalName)) { + if (addonPortals.getPortals().removeRegisteredPortal(portal)) + addonPortals.msgs.getRemoveConfirm(sendi, portal.getName()); + else + sendi.sendMessage("Error Removing portal " + portalName); + return; + } + } + //None found + addonPortals.msgs.getRemoveNone(sendi, portalName); + } +} diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsCache.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/region/PortalsCache.java similarity index 76% rename from BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsCache.java rename to BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/region/PortalsCache.java index d7d141e..73a354f 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsCache.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/region/PortalsCache.java @@ -1,14 +1,13 @@ -package me.SuperRonanCraft.BetterRTPAddons.addons.portals; +package me.SuperRonanCraft.BetterRTPAddons.addons.portals.region; import com.comphenix.protocol.PacketType; import com.comphenix.protocol.ProtocolLibrary; import com.comphenix.protocol.ProtocolManager; import com.comphenix.protocol.events.PacketContainer; import com.comphenix.protocol.wrappers.BlockPosition; -import com.comphenix.protocol.wrappers.ChunkCoordIntPair; -import com.comphenix.protocol.wrappers.MultiBlockChangeInfo; import com.comphenix.protocol.wrappers.WrappedBlockData; import me.SuperRonanCraft.BetterRTPAddons.Main; +import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals; import me.SuperRonanCraft.BetterRTPAddons.packets.BlockChangeArray; import me.SuperRonanCraft.BetterRTPAddons.packets.WrapperPlayServerBlockChange; import me.SuperRonanCraft.BetterRTPAddons.packets.WrapperPlayServerMultiBlockChange; @@ -16,17 +15,27 @@ import org.bukkit.Bukkit; import org.bukkit.Chunk; import org.bukkit.Location; import org.bukkit.Material; -import org.bukkit.block.Block; import org.bukkit.entity.Player; import java.lang.reflect.InvocationTargetException; import java.util.HashMap; +import java.util.List; public class PortalsCache { - private final HashMap portalsBeingCreated = new HashMap<>(); + AddonPortals addonPortals; + private List registeredPortals; + private final HashMap portalsBeingCreated = new HashMap<>(); - void unload() { + public PortalsCache(AddonPortals addonPortals) { + this.addonPortals = addonPortals; + } + + public void load() { + registeredPortals = addonPortals.getDatabase().getPortals(); + } + + public void unload() { portalsBeingCreated.clear(); } @@ -34,12 +43,29 @@ public class PortalsCache { portalsBeingCreated.remove(p); } - public void setPortal(Player p, Location loc, boolean loc2) { - PortalsCreation portal; + public List getRegisteredPortals() { + return registeredPortals; + } + + public boolean removeRegisteredPortal(PortalsRegionInfo portal) { + registeredPortals.remove(portal); + return addonPortals.getDatabase().removePortal(portal); + } + + public boolean setPortal(Player p, String name) { + if (!portalsBeingCreated.containsKey(p)) + return false; + PortalsRegionInfo portal = portalsBeingCreated.get(p); + portal.name = name; + return addonPortals.getDatabase().setPortal(portal); + } + + public void cachePortal(Player p, Location loc, boolean loc2) { + PortalsRegionInfo portal; if (portalsBeingCreated.containsKey(p)) { portal = portalsBeingCreated.get(p); } else { - portal = new PortalsCreation(p); + portal = new PortalsRegionInfo(); portalsBeingCreated.put(p, portal); } Location old_loc1 = portal.loc_1; @@ -57,7 +83,7 @@ public class PortalsCache { //if (Math.abs(portal.loc_1.getBlockY() - portal.loc_2.getBlockY()) <= 10) { //preview(portal.loc_1, portal.loc_2); //} - Location max = portal.loc_1; + /*Location max = portal.loc_1; Location min = portal.loc_2; for (int x = Math.max(max.getBlockX(), min.getBlockX()); x >= Math.min(min.getBlockX(), max.getBlockX()); x--) { for (int y = Math.max(max.getBlockY(), min.getBlockY()); y >= Math.min(min.getBlockY(), max.getBlockY()); y--) { @@ -70,7 +96,7 @@ public class PortalsCache { //block.setType(Material.GLOWSTONE); } } - } + }*/ } else { WrapperPlayServerBlockChange packet = new WrapperPlayServerBlockChange(pm.createPacket(PacketType.Play.Server.BLOCK_CHANGE)); packet.setBlockData(WrappedBlockData.createData(Material.GLOWSTONE)); @@ -89,7 +115,8 @@ public class PortalsCache { BlockChangeArray change = new BlockChangeArray(256); WrapperPlayServerMultiBlockChange wrapper = new WrapperPlayServerMultiBlockChange(packet); - //wrapper.setChunk(new ChunkCoordIntPair(chunk.getX(), chunk.getZ())); + wrapper.setChunkX(chunk.getX()); + wrapper.setChunkZ(chunk.getZ()); for (int x = 0; x <= 15; x++) { for(int z = 0; z <= 15; z++) { int index = (16 * x) + z; @@ -116,7 +143,7 @@ public class PortalsCache { }); } - public PortalsCreation getPortal(Player p) { + public PortalsRegionInfo getPortal(Player p) { return portalsBeingCreated.getOrDefault(p, null); } } diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/region/PortalsRegionInfo.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/region/PortalsRegionInfo.java new file mode 100644 index 0000000..73226f3 --- /dev/null +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/region/PortalsRegionInfo.java @@ -0,0 +1,30 @@ +package me.SuperRonanCraft.BetterRTPAddons.addons.portals.region; + +import org.bukkit.Location; +import org.bukkit.entity.Player; + +public class PortalsRegionInfo { + + protected Location loc_1, loc_2; + protected String name; + + public Location getLoc1() { + return loc_1; + } + + public Location getLoc2() { + return loc_2; + } + + public void setLoc1(Location loc) { + loc_1 = loc; + } + + public void setLoc2(Location loc) { + loc_2 = loc; + } + + public String getName() { + return name; + } +} diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/Files.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/util/Files.java similarity index 89% rename from BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/Files.java rename to BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/util/Files.java index dcbb4b9..787e34a 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/Files.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/util/Files.java @@ -1,5 +1,6 @@ -package me.SuperRonanCraft.BetterRTPAddons; +package me.SuperRonanCraft.BetterRTPAddons.util; +import me.SuperRonanCraft.BetterRTPAddons.Main; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.YamlConfiguration; @@ -11,22 +12,28 @@ import java.util.List; import java.util.Map; public class Files { - private List types = new ArrayList<>(); + private final List types = new ArrayList<>(); + private final LangFile langFile = new LangFile(); public FILETYPE getType(FILETYPE type) { return types.get(types.indexOf(type)); } - void load() { + public void load() { types.clear(); for (FILETYPE type : FILETYPE.values()) { type.load(); types.add(type); } + langFile.load(); + } + + public LangFile getLang() { + return langFile; } public enum FILETYPE { - CONFIG("config"), FLASHBACK("flashback"), PORTALS("portals"), INTERFACE("interface"), LOGGER("logger"); + CONFIG("config"); private final String fileName; private final YamlConfiguration config = new YamlConfiguration(); diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/util/LangFile.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/util/LangFile.java new file mode 100644 index 0000000..9cf4158 --- /dev/null +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/util/LangFile.java @@ -0,0 +1,97 @@ +package me.SuperRonanCraft.BetterRTPAddons.util; + +import me.SuperRonanCraft.BetterRTPAddons.Main; +import org.bukkit.configuration.file.YamlConfiguration; + +import java.io.File; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.Arrays; +import java.util.List; + +public class LangFile { + private YamlConfiguration config = new YamlConfiguration(); + + public String getString(String path) { + if (config.isString(path)) + return config.getString(path); + return "SOMETHING WENT WRONG"; + } + + @SuppressWarnings("all") + public List getStringList(String path) { + if (config.isList(path)) + return config.getStringList(path); + return Arrays.asList("SOMETHING WENT WRONG!"); + } + + public boolean getBoolean(String path) { + return config.getBoolean(path); + } + + @SuppressWarnings("all") + public void load() { + generateDefaults(); + String fileName = "lang" + File.separator + getPl().getFiles().getType(Files.FILETYPE.CONFIG).getString("Language-File"); + File file = new File(getPl().getDataFolder(), fileName); + if (!file.exists()) { + fileName = "lang" + File.separator + defaultLangs[0]; //Default to english + file = new File(getPl().getDataFolder(), fileName); + } + try { + config.load(file); + InputStream in = getPl().getResource(fileName); + if (in == null) + in = getPl().getResource(fileName.replace(File.separator, "/")); + if (in != null) { + config.setDefaults(YamlConfiguration.loadConfiguration(new InputStreamReader(in))); + config.options().copyDefaults(true); + in.close(); + } + config.save(file); + } catch (Exception e) { + e.printStackTrace(); + } + } + + private final String[] defaultLangs = { + "en.yml" + }; + + private void generateDefaults() { + //Generate all language files + for (String yaml : defaultLangs) { + generateDefaultConfig(yaml, yaml); //Generate its own defaults + if (!yaml.equals(defaultLangs[0])) + generateDefaultConfig(yaml, defaultLangs[0]); //Generate the english defaults (incase) + } + } + + private void generateDefaultConfig(String fName, String fNameDef /*Name of file to generate defaults*/) { + String fileName = "lang" + File.separator + fName; + File file = new File(getPl().getDataFolder(), fileName); + if (!file.exists()) + getPl().saveResource(fileName, false); + try { + YamlConfiguration config = new YamlConfiguration(); + config.load(file); + String fileNameDef = "lang" + File.separator + fNameDef; + InputStream in = getPl().getResource(fileNameDef); + if (in == null) + in = getPl().getResource(fileNameDef.replace(File.separator, "/")); + if (in != null) { + config.setDefaults(YamlConfiguration.loadConfiguration(new InputStreamReader(in))); + config.options().copyDefaults(true); + in.close(); + } + config.save(file); + } catch (Exception e) { + e.printStackTrace(); + } + + } + + private Main getPl() { + return Main.getInstance(); + } +} \ No newline at end of file diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/LocSerialization.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/util/LocSerialization.java similarity index 97% rename from BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/LocSerialization.java rename to BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/util/LocSerialization.java index bc2638f..c1aed36 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/LocSerialization.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/util/LocSerialization.java @@ -1,4 +1,4 @@ -package me.SuperRonanCraft.BetterRTPAddons; +package me.SuperRonanCraft.BetterRTPAddons.util; import org.bukkit.Bukkit; import org.bukkit.Location; diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/ReloadListener.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/util/ReloadListener.java similarity index 79% rename from BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/ReloadListener.java rename to BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/util/ReloadListener.java index ccb2683..ef5ce2a 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/ReloadListener.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/util/ReloadListener.java @@ -1,14 +1,15 @@ -package me.SuperRonanCraft.BetterRTPAddons; +package me.SuperRonanCraft.BetterRTPAddons.util; import me.SuperRonanCraft.BetterRTP.player.commands.types.CmdReload; import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_CommandEvent; +import me.SuperRonanCraft.BetterRTPAddons.Main; import org.bukkit.Bukkit; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; public class ReloadListener implements Listener { - ReloadListener(Main pl) { + public ReloadListener(Main pl) { Bukkit.getPluginManager().registerEvents(this, pl); } diff --git a/BetterRTPAddons/src/main/resources/config.yml b/BetterRTPAddons/src/main/resources/config.yml index e69de29..8b11018 100644 --- a/BetterRTPAddons/src/main/resources/config.yml +++ b/BetterRTPAddons/src/main/resources/config.yml @@ -0,0 +1,17 @@ +Language-File: 'en.yml' +#Addon Flashback +Flashback: + 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!" +#Addon Logger +Logger: + Enabled: true + LogToConsole: true + Format: 'yyyy-MM-dd HH:mm:ss' +#Addon Portals +Portals: + Enabled: true \ No newline at end of file diff --git a/BetterRTPAddons/src/main/resources/flashback.yml b/BetterRTPAddons/src/main/resources/flashback.yml deleted file mode 100644 index 71ba75c..0000000 --- a/BetterRTPAddons/src/main/resources/flashback.yml +++ /dev/null @@ -1,8 +0,0 @@ -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...' \ No newline at end of file diff --git a/BetterRTPAddons/src/main/resources/interface.yml b/BetterRTPAddons/src/main/resources/interface.yml deleted file mode 100644 index 4255c84..0000000 --- a/BetterRTPAddons/src/main/resources/interface.yml +++ /dev/null @@ -1 +0,0 @@ -Enabled: false diff --git a/BetterRTPAddons/src/main/resources/lang/en.yml b/BetterRTPAddons/src/main/resources/lang/en.yml new file mode 100644 index 0000000..88a3cc5 --- /dev/null +++ b/BetterRTPAddons/src/main/resources/lang/en.yml @@ -0,0 +1,23 @@ +Flashback: + Warning: '&6This Teleport is temporary! &7You will be teleported back soon...' +Portals: + Created: + Confirm: '&7Portal &a%name% &7has been created!' + Invalid: '&7Portal location was not setup, please create a region!' + Name: '&7Please provide a name for this portal!' + Duplicate: '&7This name is already being used for another portal, please choose another!' + Location: + 1: '&7Location &a1 &7has been set' + 2: '&7Location &a2 &7has been set' + Look: '&7Please look towards a block and try again!' + Remove: + Confirm: '&cPortal &7%name% &chas been removed!' + None: '&cNo portal by the name &7%name% &cexist!' + +Usage: + Portals: + Remove: '&cUsage: &7/%command% portals remove ' + + +Help: + Portals: ' &7- &e/%command% portals &7- Setup an rtp portal' \ No newline at end of file diff --git a/BetterRTPAddons/src/main/resources/logger.yml b/BetterRTPAddons/src/main/resources/logger.yml deleted file mode 100644 index 492d03f..0000000 --- a/BetterRTPAddons/src/main/resources/logger.yml +++ /dev/null @@ -1,3 +0,0 @@ -Enabled: true -LogToConsole: true -Format: 'yyyy-MM-dd HH:mm:ss' \ No newline at end of file diff --git a/BetterRTPAddons/src/main/resources/portals.yml b/BetterRTPAddons/src/main/resources/portals.yml deleted file mode 100644 index bec580b..0000000 --- a/BetterRTPAddons/src/main/resources/portals.yml +++ /dev/null @@ -1,4 +0,0 @@ -Enabled: false - -Messages: - Help: ' &7- &e/%command% portals &7- Setup an rtp portal'