addons help support + api permission fix + addon subcmds for portals

This commit is contained in:
SuperRonanCraft 2020-11-13 16:40:11 -05:00
parent 67cca730c4
commit 7d018b748f
25 changed files with 304 additions and 113 deletions

View File

@ -4,7 +4,7 @@ import org.bukkit.Bukkit;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
public interface Addon extends Listener { public interface Addon {
//Addon will check if it can be enabled //Addon will check if it can be enabled
boolean isEnabled(); boolean isEnabled();
@ -15,12 +15,4 @@ public interface Addon extends Listener {
//Unload the addon if enabled //Unload the addon if enabled
void unload(); void unload();
default void register() {
Bukkit.getPluginManager().registerEvents(this, Main.getInstance());
}
default void unregister() {
HandlerList.unregisterAll(this);
}
} }

View File

@ -0,0 +1,30 @@
package me.SuperRonanCraft.BetterRTPAddons;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
import org.bukkit.command.CommandSender;
import java.util.List;
public class AddonsCommand implements RTPCommand {
@Override
public void execute(CommandSender sendi, String label, String[] args) {
for (AddonsHandler.Addons addon : Main.getInstance().getAddonsHandler().addons) {
sendi.sendMessage(addon.name());
}
}
@Override
public List<String> tabComplete(CommandSender sendi, String[] args) {
return null;
}
@Override
public boolean permission(CommandSender sendi) {
return true;
}
@Override
public String getName() {
return "addons";
}
}

View File

@ -1,8 +1,13 @@
package me.SuperRonanCraft.BetterRTPAddons; package me.SuperRonanCraft.BetterRTPAddons;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTPAddons.flashback.AddonFlashback; import me.SuperRonanCraft.BetterRTPAddons.flashback.AddonFlashback;
import me.SuperRonanCraft.BetterRTPAddons.interfaces.AddonInterface; import me.SuperRonanCraft.BetterRTPAddons.interfaces.AddonInterface;
import me.SuperRonanCraft.BetterRTPAddons.logger.AddonLogger;
import me.SuperRonanCraft.BetterRTPAddons.portals.AddonPortals; import me.SuperRonanCraft.BetterRTPAddons.portals.AddonPortals;
import org.bukkit.Bukkit;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -11,6 +16,7 @@ import java.util.logging.Level;
public class AddonsHandler { public class AddonsHandler {
List<Addons> addons = new ArrayList<>(); List<Addons> addons = new ArrayList<>();
AddonsCommand cmd = new AddonsCommand();
public void load() { public void load() {
for (Addons addon : addons) { for (Addons addon : addons) {
@ -24,12 +30,14 @@ public class AddonsHandler {
} else { } else {
Main.getInstance().getLogger().log(Level.INFO, "Addon " + addon.name() + " was NOT enabled."); Main.getInstance().getLogger().log(Level.INFO, "Addon " + addon.name() + " was NOT enabled.");
} }
BetterRTP.getInstance().getCmd().registerCommand(cmd, false);
} }
enum Addons { enum Addons {
FLASH_BACK(new AddonFlashback()), FLASH_BACK(new AddonFlashback()),
PORTALS(new AddonPortals()), PORTALS(new AddonPortals()),
INTERFACES(new AddonInterface()); INTERFACES(new AddonInterface()),
LOGGER(new AddonLogger());
Addon addon; Addon addon;
@ -42,13 +50,12 @@ public class AddonsHandler {
} }
void load() { void load() {
addon.register();
addon.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() { void disable() {
addon.unregister(); addon.unload();
} }
} }

View File

@ -23,7 +23,7 @@ public class Files {
} }
public enum FILETYPE { public enum FILETYPE {
CONFIG("config"), FLASHBACK("flashback"), PORTALS("portals"), INTERFACE("interface"); CONFIG("config"), FLASHBACK("flashback"), PORTALS("portals"), INTERFACE("interface"), LOGGER("logger");
private final String fileName; private final String fileName;
private final YamlConfiguration config = new YamlConfiguration(); private final YamlConfiguration config = new YamlConfiguration();

View File

@ -20,6 +20,10 @@ public class Main extends JavaPlugin {
addonsHandler.load(); addonsHandler.load();
} }
public AddonsHandler getAddonsHandler() {
return addonsHandler;
}
public static Main getInstance() { public static Main getInstance() {
return instance; return instance;
} }

View File

@ -15,23 +15,8 @@ public abstract class Database {
public String db_name; public String db_name;
public final String table = "BRTP_Data"; public final String table = "BRTP_Data";
public enum COLUMNS { public Database(String db_name) {
UUID("uuid", "varchar(32)"), plugin = Main.getInstance();
NAME("player", "varchar(16)"),
LOCATION_OLD("location_old", "longtext"),
TIME_GOAL("time_goal", "bigint(19)");
public String name;
public String type;
COLUMNS(String name, String type) {
this.name = name;
this.type = type;
}
}
public Database(Main instance, String db_name) {
plugin = instance;
this.db_name = db_name; this.db_name = db_name;
} }
@ -63,15 +48,15 @@ public abstract class Database {
//Get the layout of the database table //Get the layout of the database table
public abstract String getTableFormat(); public abstract String getTableFormat();
public void load() { public void load(DatabaseColumn[] columns) {
connection = getSQLConnection(); connection = getSQLConnection();
try { try {
Statement s = connection.createStatement(); Statement s = connection.createStatement();
s.executeUpdate(getTableFormat()); s.executeUpdate(getTableFormat());
for (COLUMNS c : COLUMNS.values()) { //Add missing columns dynamically for (DatabaseColumn c : columns) { //Add missing columns dynamically
try { try {
String addMissingColumns = "ALTER TABLE " + table + " ADD COLUMN %column% %type%"; String addMissingColumns = "ALTER TABLE " + table + " ADD COLUMN %column% %type%";
s.executeUpdate(addMissingColumns.replace("%column%", c.name).replace("%type%", c.type)); s.executeUpdate(addMissingColumns.replace("%column%", c.getName()).replace("%type%", c.getType()));
} catch (SQLException e) { } catch (SQLException e) {
//e.printStackTrace(); //e.printStackTrace();
} }
@ -80,16 +65,16 @@ public abstract class Database {
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
} }
initialize(); initialize(columns[0]);
} }
private void initialize() { private void initialize(DatabaseColumn testColumn) {
Connection conn = null; Connection conn = null;
PreparedStatement ps = null; PreparedStatement ps = null;
ResultSet rs = null; ResultSet rs = null;
try { try {
conn = getSQLConnection(); conn = getSQLConnection();
ps = conn.prepareStatement("SELECT * FROM " + table + " WHERE " + COLUMNS.UUID.name + " = ?"); ps = conn.prepareStatement("SELECT * FROM " + table + " WHERE " + testColumn.getName() + " = ?");
rs = ps.executeQuery(); rs = ps.executeQuery();
} catch (SQLException ex) { } catch (SQLException ex) {

View File

@ -0,0 +1,9 @@
package me.SuperRonanCraft.BetterRTPAddons.database;
public abstract interface DatabaseColumn {
String getName();
String getType();
}

View File

@ -4,17 +4,20 @@ import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportPostEven
import me.SuperRonanCraft.BetterRTPAddons.Addon; import me.SuperRonanCraft.BetterRTPAddons.Addon;
import me.SuperRonanCraft.BetterRTPAddons.Files; import me.SuperRonanCraft.BetterRTPAddons.Files;
import me.SuperRonanCraft.BetterRTPAddons.Main; import me.SuperRonanCraft.BetterRTPAddons.Main;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
//When rtp'ing, a player will be teleported back to old location after a set amount of time //When rtp'ing, a player will be teleported back to old location after a set amount of time
public class AddonFlashback implements Addon { public class AddonFlashback implements Addon, Listener {
private Long time; private Long time;
public FlashbackMessages msgs = new FlashbackMessages(); public final FlashbackMessages msgs = new FlashbackMessages();
public FlashbackDatabase database; public final FlashbackDatabase database = new FlashbackDatabase();
List<FlashbackPlayer> players = new ArrayList<>(); List<FlashbackPlayer> players = new ArrayList<>();
public boolean isEnabled() { public boolean isEnabled() {
@ -25,8 +28,8 @@ public class AddonFlashback implements Addon {
public void load() { public void load() {
Files.FILETYPE file = Files.FILETYPE.FLASHBACK; Files.FILETYPE file = Files.FILETYPE.FLASHBACK;
this.time = file.getConfig().getLong("Time"); this.time = file.getConfig().getLong("Time");
this.database = new FlashbackDatabase(Main.getInstance()); this.database.load(FlashbackDatabase.Columns.values());
this.database.load(); Bukkit.getPluginManager().registerEvents(this, Main.getInstance());
} }
@Override @Override
@ -34,6 +37,7 @@ public class AddonFlashback implements Addon {
for (FlashbackPlayer fbp : players) for (FlashbackPlayer fbp : players)
fbp.cancel(); fbp.cancel();
players.clear(); players.clear();
HandlerList.unregisterAll(this);
} }
@EventHandler @EventHandler

View File

@ -4,6 +4,7 @@ import me.SuperRonanCraft.BetterRTPAddons.LocSerialization;
import me.SuperRonanCraft.BetterRTPAddons.Main; import me.SuperRonanCraft.BetterRTPAddons.Main;
import me.SuperRonanCraft.BetterRTPAddons.PlayerInfo; import me.SuperRonanCraft.BetterRTPAddons.PlayerInfo;
import me.SuperRonanCraft.BetterRTPAddons.database.Database; import me.SuperRonanCraft.BetterRTPAddons.database.Database;
import me.SuperRonanCraft.BetterRTPAddons.database.DatabaseColumn;
import me.SuperRonanCraft.BetterRTPAddons.database.Errors; import me.SuperRonanCraft.BetterRTPAddons.database.Errors;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -17,17 +18,42 @@ import java.util.logging.Level;
public class FlashbackDatabase extends Database { public class FlashbackDatabase extends Database {
enum Columns implements DatabaseColumn {
UUID("uuid", "varchar(32)"),
NAME("player", "varchar(16)"),
LOCATION_OLD("location_old", "longtext"),
TIME_GOAL("time_goal", "bigint(19)");
private final String name;
private final String type;
Columns(String name, String type) {
this.name = name;
this.type = type;
}
@Override
public String getName() {
return name;
}
@Override
public String getType() {
return type;
}
}
List<PlayerInfo> playerInfos = new ArrayList<>(); List<PlayerInfo> playerInfos = new ArrayList<>();
public FlashbackDatabase(Main instance){ public FlashbackDatabase(){
super(instance, "addon_flashback"); super("addon_flashback");
} }
private final String createTable = "CREATE TABLE IF NOT EXISTS " + table + " (" + private final String createTable = "CREATE TABLE IF NOT EXISTS " + table + " (" +
"`" + COLUMNS.UUID.name + "` " + COLUMNS.UUID.type + " PRIMARY KEY NOT NULL," + "`" + Columns.UUID.name + "` " + Columns.UUID.type + " PRIMARY KEY NOT NULL," +
"`" + COLUMNS.NAME.name + "` " + COLUMNS.NAME.type + "," + "`" + Columns.NAME.name + "` " + Columns.NAME.type + "," +
"`" + COLUMNS.LOCATION_OLD.name + "` " + COLUMNS.LOCATION_OLD.type + " NOT NULL," + "`" + Columns.LOCATION_OLD.name + "` " + Columns.LOCATION_OLD.type + " NOT NULL," +
"`" + COLUMNS.TIME_GOAL.name + "` " + COLUMNS.LOCATION_OLD.type + " NOT NULL" + "`" + Columns.TIME_GOAL.name + "` " + Columns.LOCATION_OLD.type + " NOT NULL" +
");"; ");";
@ -37,9 +63,9 @@ public class FlashbackDatabase extends Database {
} }
@Override @Override
public void load() { public void load(DatabaseColumn[] columns) {
playerInfos.clear(); playerInfos.clear();
super.load(); super.load(columns);
} }
public PlayerInfo getPlayer(Player p) { public PlayerInfo getPlayer(Player p) {
@ -48,12 +74,12 @@ public class FlashbackDatabase extends Database {
ResultSet rs = null; ResultSet rs = null;
try { try {
conn = getSQLConnection(); conn = getSQLConnection();
ps = conn.prepareStatement("SELECT * FROM " + table + " WHERE " + COLUMNS.UUID.name + " = ?"); ps = conn.prepareStatement("SELECT * FROM " + table + " WHERE " + Columns.UUID.name + " = ?");
UUID id = p.getUniqueId(); UUID id = p.getUniqueId();
ps.setString(1, id != null ? id.toString() : console_id); ps.setString(1, id != null ? id.toString() : console_id);
rs = ps.executeQuery(); rs = ps.executeQuery();
if (rs.next()) { if (rs.next()) {
Location loc = LocSerialization.getLocationFromString(rs.getString(COLUMNS.LOCATION_OLD.name)); Location loc = LocSerialization.getLocationFromString(rs.getString(Columns.LOCATION_OLD.name));
return new PlayerInfo(p, loc); return new PlayerInfo(p, loc);
} }
} catch (SQLException ex) { } catch (SQLException ex) {
@ -70,8 +96,8 @@ public class FlashbackDatabase extends Database {
boolean success = true; boolean success = true;
try { try {
conn = getSQLConnection(); conn = getSQLConnection();
ps = conn.prepareStatement("INSERT INTO " + table + "(" + COLUMNS.UUID.name + ", " + COLUMNS.LOCATION_OLD.name + ") VALUES (?, ?) " 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 + " = + ?"); + "ON CONFLICT(" + Columns.UUID.name + ") DO UPDATE SET " + Columns.LOCATION_OLD.name + " = + ?");
UUID id = p.getUniqueId(); UUID id = p.getUniqueId();
ps.setString(1, id != null ? id.toString() : console_id); ps.setString(1, id != null ? id.toString() : console_id);
String serialLocation = LocSerialization.getStringFromLocation(oldLocation); String serialLocation = LocSerialization.getStringFromLocation(oldLocation);

View File

@ -21,7 +21,8 @@ public class FlashbackPlayer {
} }
private Runnable getTimedFlash(Long seconds) { private Runnable getTimedFlash(Long seconds) {
plugin.database.setPlayer(p, oldLoc, System.currentTimeMillis() + (seconds * 1000)); if (plugin.database.setPlayer(p, oldLoc, System.currentTimeMillis() + (seconds * 1000)))
p.sendMessage("A Database error has occurred!");
return () -> { return () -> {
plugin.msgs.getWarning(p); plugin.msgs.getWarning(p);
PaperLib.teleportAsync(p, oldLoc); PaperLib.teleportAsync(p, oldLoc);

View File

@ -0,0 +1,28 @@
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

@ -5,13 +5,15 @@ import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportPostEven
import me.SuperRonanCraft.BetterRTPAddons.Addon; import me.SuperRonanCraft.BetterRTPAddons.Addon;
import me.SuperRonanCraft.BetterRTPAddons.Files; import me.SuperRonanCraft.BetterRTPAddons.Files;
import me.SuperRonanCraft.BetterRTPAddons.Main; import me.SuperRonanCraft.BetterRTPAddons.Main;
import me.SuperRonanCraft.BetterRTPAddons.flashback.FlashbackDatabase;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
//With a gui, a player //With a gui, a player
public class AddonPortals implements Addon { public class AddonPortals implements Addon {
public PortalsMessages msgs = new PortalsMessages(); public PortalsMessages msgs = new PortalsMessages();
private PortalsDatabase database; private final PortalsCommand cmd = new PortalsCommand(this);
private final PortalsDatabase database = new PortalsDatabase();;
public boolean isEnabled() { public boolean isEnabled() {
return Files.FILETYPE.PORTALS.getBoolean("Enabled"); return Files.FILETYPE.PORTALS.getBoolean("Enabled");
@ -19,8 +21,8 @@ public class AddonPortals implements Addon {
@Override @Override
public void load() { public void load() {
this.database = new PortalsDatabase(Main.getInstance()); BetterRTP.getInstance().getCmd().registerCommand(cmd, false);
BetterRTP.getInstance().getCmd().registerCommand(new PortalsCommand(), false); this.database.load(PortalsDatabase.Columns.values());
} }
@Override @Override

View File

@ -1,11 +1,19 @@
package me.SuperRonanCraft.BetterRTPAddons.portals; package me.SuperRonanCraft.BetterRTPAddons.portals;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable;
import me.SuperRonanCraft.BetterRTPAddons.portals.cmds.*;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import java.util.List; import java.util.List;
public class PortalsCommand implements RTPCommand { public class PortalsCommand implements RTPCommand, RTPCommandHelpable {
AddonPortals pl;
PortalsCommand(AddonPortals pl) {
this.pl = pl;
}
public String getName() { public String getName() {
return "portals"; return "portals";
@ -13,7 +21,13 @@ public class PortalsCommand implements RTPCommand {
@Override @Override
public void execute(CommandSender sendi, String label, String[] args) { public void execute(CommandSender sendi, String label, String[] args) {
System.out.println("Portals command!"); for (subCmd subCmd : subCmd.values()) {
if (args[1].equalsIgnoreCase(subCmd.name())) {
subCmd.cmd.execute(sendi, label, args);
return;
}
}
sendi.sendMessage("Invalid command!");
} }
@Override @Override
@ -23,6 +37,23 @@ public class PortalsCommand implements RTPCommand {
@Override @Override
public boolean permission(CommandSender sendi) { public boolean permission(CommandSender sendi) {
return true; return BetterRTP.getInstance().getPerms().checkPerm("betterrtp.addon.portals", sendi);
}
@Override
public String getHelp() {
return pl.msgs.getHelp();
}
private enum subCmd {
LOC1(new PortalsCommand_Loc1()),
LOC2(new PortalsCommand_Loc2()),
CREATE(new PortalsCommand_Create());
PortalsCommands cmd;
subCmd(PortalsCommands cmd) {
this.cmd = cmd;
}
} }
} }

View File

@ -1,33 +1,51 @@
package me.SuperRonanCraft.BetterRTPAddons.portals; package me.SuperRonanCraft.BetterRTPAddons.portals;
import me.SuperRonanCraft.BetterRTPAddons.LocSerialization;
import me.SuperRonanCraft.BetterRTPAddons.Main; import me.SuperRonanCraft.BetterRTPAddons.Main;
import me.SuperRonanCraft.BetterRTPAddons.PlayerInfo; import me.SuperRonanCraft.BetterRTPAddons.PlayerInfo;
import me.SuperRonanCraft.BetterRTPAddons.database.Database; import me.SuperRonanCraft.BetterRTPAddons.database.Database;
import me.SuperRonanCraft.BetterRTPAddons.database.Errors; import me.SuperRonanCraft.BetterRTPAddons.database.DatabaseColumn;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.UUID;
import java.util.logging.Level;
public class PortalsDatabase extends Database { 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)");
private final String name;
private final String type;
Columns(String name, String type) {
this.name = name;
this.type = type;
}
@Override
public String getName() {
return name;
}
@Override
public String getType() {
return type;
}
}
List<PlayerInfo> playerInfos = new ArrayList<>(); List<PlayerInfo> playerInfos = new ArrayList<>();
public PortalsDatabase(Main instance){ public PortalsDatabase(){
super(instance, "addon_flashback"); super(Main.getInstance(), "addon_portals");
} }
private final String createTable = "CREATE TABLE IF NOT EXISTS " + table + " (" + private final String createTable = "CREATE TABLE IF NOT EXISTS " + table + " (" +
"`" + COLUMNS.UUID.name + "` " + COLUMNS.UUID.type + " PRIMARY KEY NOT NULL," + "`" + Columns.ID.name + "` " + Columns.ID.type + " PRIMARY KEY AUTOINCREMENT," +
"`" + COLUMNS.NAME.name + "` " + COLUMNS.NAME.type + "`" + Columns.LOCATION_1.name + "` " + Columns.LOCATION_2.type + "," +
"`" + Columns.LOCATION_2.name + "` " + Columns.LOCATION_2.type + "," +
"`" + Columns.TITLE.name + "` " + Columns.TITLE.type +
");"; ");";
@ -37,23 +55,23 @@ public class PortalsDatabase extends Database {
} }
@Override @Override
public void load() { public void load(DatabaseColumn[] columns) {
playerInfos.clear(); playerInfos.clear();
super.load(); super.load(columns);
} }
public PlayerInfo getPlayer(Player p) { /*public PlayerInfo getPlayer(Player p) {
Connection conn = null; Connection conn = null;
PreparedStatement ps = null; PreparedStatement ps = null;
ResultSet rs = null; ResultSet rs = null;
try { try {
conn = getSQLConnection(); conn = getSQLConnection();
ps = conn.prepareStatement("SELECT * FROM " + table + " WHERE " + COLUMNS.UUID.name + " = ?"); ps = conn.prepareStatement("SELECT * FROM " + table + " WHERE " + Columns.UUID.name + " = ?");
UUID id = p.getUniqueId(); UUID id = p.getUniqueId();
ps.setString(1, id != null ? id.toString() : console_id); ps.setString(1, id != null ? id.toString() : console_id);
rs = ps.executeQuery(); rs = ps.executeQuery();
if (rs.next()) { if (rs.next()) {
Location loc = LocSerialization.getLocationFromString(rs.getString(COLUMNS.LOCATION_OLD.name)); Location loc = LocSerialization.getLocationFromString(rs.getString(Columns.LOCATION_OLD.name));
return new PlayerInfo(p, loc); return new PlayerInfo(p, loc);
} }
} catch (SQLException ex) { } catch (SQLException ex) {
@ -70,8 +88,8 @@ public class PortalsDatabase extends Database {
boolean success = true; boolean success = true;
try { try {
conn = getSQLConnection(); conn = getSQLConnection();
ps = conn.prepareStatement("INSERT INTO " + table + "(" + COLUMNS.UUID.name + ", " + COLUMNS.LOCATION_OLD.name + ") VALUES (?, ?) " 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 + " = + ?"); + "ON CONFLICT(" + Columns.UUID.name + ") DO UPDATE SET " + Columns.LOCATION_OLD.name + " = + ?");
UUID id = p.getUniqueId(); UUID id = p.getUniqueId();
ps.setString(1, id != null ? id.toString() : console_id); ps.setString(1, id != null ? id.toString() : console_id);
String serialLocation = LocSerialization.getStringFromLocation(oldLocation); String serialLocation = LocSerialization.getStringFromLocation(oldLocation);
@ -85,5 +103,5 @@ public class PortalsDatabase extends Database {
close(ps, null, conn); close(ps, null, conn);
} }
return success; return success;
} }*/
} }

View File

@ -5,13 +5,17 @@ import me.SuperRonanCraft.BetterRTPAddons.Files;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
public class PortalsMessages implements AddonsMessages { public class PortalsMessages implements AddonsMessages {
private static String preM = "Messages"; private static final String preM = "Messages.";
private Files.FILETYPE getLang() { private Files.FILETYPE getLang() {
return Files.FILETYPE.FLASHBACK; return Files.FILETYPE.PORTALS;
} }
public void getWarning(CommandSender sendi) { public void getWarning(CommandSender sendi) {
sms(sendi, getLang().getString(preM + "Warning")); sms(sendi, getLang().getString(preM + "Warning"));
} }
public String getHelp() {
return getLang().getString(preM + "Help");
}
} }

View File

@ -0,0 +1,11 @@
package me.SuperRonanCraft.BetterRTPAddons.portals.cmds;
import org.bukkit.command.CommandSender;
public class PortalsCommand_Create implements PortalsCommands {
@Override
public void execute(CommandSender sendi, String label, String[] args) {
sendi.sendMessage("Portals Create command!");
}
}

View File

@ -0,0 +1,11 @@
package me.SuperRonanCraft.BetterRTPAddons.portals.cmds;
import org.bukkit.command.CommandSender;
public class PortalsCommand_Loc1 implements PortalsCommands {
@Override
public void execute(CommandSender sendi, String label, String[] args) {
sendi.sendMessage("Portals Loc1 command!");
}
}

View File

@ -0,0 +1,11 @@
package me.SuperRonanCraft.BetterRTPAddons.portals.cmds;
import org.bukkit.command.CommandSender;
public class PortalsCommand_Loc2 implements PortalsCommands {
@Override
public void execute(CommandSender sendi, String label, String[] args) {
sendi.sendMessage("Portals Loc2 command!");
}
}

View File

@ -0,0 +1,9 @@
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

@ -0,0 +1,2 @@
Enabled: true
Debug: true

View File

@ -4,3 +4,7 @@ api-version: '1.13'
name: BetterRTPAddons name: BetterRTPAddons
depend: [BetterRTP] depend: [BetterRTP]
permissions:
betterrtp.addon.portals:
description: Ability to use the portals addon commands

View File

@ -1 +1,4 @@
Enabled: false Enabled: false
Messages:
Help: ' &7- &e/%command% portals <loc1, loc2, create> &7- Setup an rtp portal'

View File

@ -24,7 +24,7 @@ public class Commands {
public HashMap<UUID, Boolean> rtping = new HashMap<>(); public HashMap<UUID, Boolean> rtping = new HashMap<>();
public RTPCooldown cooldowns = new RTPCooldown(); public RTPCooldown cooldowns = new RTPCooldown();
private int delayTimer; private int delayTimer;
List<RTPCommand> commands = new ArrayList<>(); public List<RTPCommand> commands = new ArrayList<>();
public Commands(BetterRTP pl) { public Commands(BetterRTP pl) {
this.pl = pl; this.pl = pl;

View File

@ -21,13 +21,12 @@ public class CmdHelp implements RTPCommand, RTPCommandHelpable {
List<String> list = new ArrayList<>(); List<String> list = new ArrayList<>();
list.add(txt.getHelpPrefix()); list.add(txt.getHelpPrefix());
list.add(txt.getHelpMain()); list.add(txt.getHelpMain());
for (RTPCommandType cmd : RTPCommandType.values()) for (RTPCommand cmd : BetterRTP.getInstance().getCmd().commands)
if (!cmd.isDebugOnly() || BetterRTP.getInstance().getSettings().debug) if (cmd.permission(sendi))
if (cmd.getCmd().permission(sendi)) if (cmd instanceof RTPCommandHelpable) {
if (cmd.getCmd() instanceof RTPCommandHelpable) { String help = ((RTPCommandHelpable) cmd).getHelp();
String help = ((RTPCommandHelpable) cmd.getCmd()).getHelp(); list.add(help);
list.add(help); }
}
for (int i = 0; i < list.size(); i++) for (int i = 0; i < list.size(); i++)
list.set(i, list.get(i).replace("%command%", label)); list.set(i, list.get(i).replace("%command%", label));
BetterRTP.getInstance().getText().sms(sendi, list); BetterRTP.getInstance().getText().sms(sendi, list);

View File

@ -16,86 +16,86 @@ public class Permissions {
private final String pre = "betterrtp."; private final String pre = "betterrtp.";
public boolean getUse(CommandSender sendi) { public boolean getUse(CommandSender sendi) {
return perm(pre + "use", sendi); return checkPerm(pre + "use", sendi);
} }
public boolean getBypassEconomy(CommandSender sendi) { public boolean getBypassEconomy(CommandSender sendi) {
return perm(pre + "bypass.economy", sendi); return checkPerm(pre + "bypass.economy", sendi);
} }
public boolean getBypassHunger(CommandSender sendi) { public boolean getBypassHunger(CommandSender sendi) {
return perm(pre + "bypass.hunger", sendi); return checkPerm(pre + "bypass.hunger", sendi);
} }
public boolean getBypassCooldown(CommandSender sendi) { public boolean getBypassCooldown(CommandSender sendi) {
return perm(pre + "bypass.cooldown", sendi); return checkPerm(pre + "bypass.cooldown", sendi);
} }
public boolean getBypassDelay(CommandSender sendi) { public boolean getBypassDelay(CommandSender sendi) {
return perm(pre + "bypass.delay", sendi); return checkPerm(pre + "bypass.delay", sendi);
} }
public boolean getReload(CommandSender sendi) { public boolean getReload(CommandSender sendi) {
return perm(pre + "reload", sendi); return checkPerm(pre + "reload", sendi);
} }
public boolean getSettings(CommandSender sendi) { public boolean getSettings(CommandSender sendi) {
return perm(pre + "settings", sendi); return checkPerm(pre + "settings", sendi);
} }
public boolean getInfo(CommandSender sendi) { public boolean getInfo(CommandSender sendi) {
return perm(pre + "info", sendi); return checkPerm(pre + "info", sendi);
} }
public boolean getUpdate(CommandSender sendi) { public boolean getUpdate(CommandSender sendi) {
return perm(pre + "updater", sendi); return checkPerm(pre + "updater", sendi);
} }
public boolean getRtpOther(CommandSender sendi) { public boolean getRtpOther(CommandSender sendi) {
return perm(pre + "player", sendi); return checkPerm(pre + "player", sendi);
} }
public boolean getBiome(CommandSender sendi) { public boolean getBiome(CommandSender sendi) {
return perm(pre + "biome", sendi); return checkPerm(pre + "biome", sendi);
} }
public boolean getWorld(CommandSender sendi) { public boolean getWorld(CommandSender sendi) {
return perm(pre + "world", sendi); return checkPerm(pre + "world", sendi);
} }
public boolean getSignCreate(CommandSender sendi) { public boolean getSignCreate(CommandSender sendi) {
return perm(pre + "sign", sendi); return checkPerm(pre + "sign", sendi);
} }
public boolean getTest(CommandSender sendi) { public boolean getTest(CommandSender sendi) {
return perm(pre + "test", sendi); return checkPerm(pre + "test", sendi);
} }
public boolean getVersion(CommandSender sendi) { public boolean getVersion(CommandSender sendi) {
return perm(pre + "version", sendi); return checkPerm(pre + "version", sendi);
} }
public boolean getAWorld(CommandSender sendi, String world) { public boolean getAWorld(CommandSender sendi, String world) {
if (perm(pre + "world.*", sendi)) if (checkPerm(pre + "world.*", sendi))
return true; return true;
else if (world == null) { else if (world == null) {
for (World w : Bukkit.getWorlds()) for (World w : Bukkit.getWorlds())
if (perm(pre + "world." + w.getName(), sendi)) if (checkPerm(pre + "world." + w.getName(), sendi))
return true; return true;
} else } else
return perm(pre + "world." + world, sendi); return checkPerm(pre + "world." + world, sendi);
return false; return false;
} }
public boolean getEdit(CommandSender sendi) { public boolean getEdit(CommandSender sendi) {
return perm(pre + "edit", sendi); return checkPerm(pre + "edit", sendi);
} }
public boolean getPermissionGroup(CommandSender sendi, String group) { public boolean getPermissionGroup(CommandSender sendi, String group) {
return perm(pre + "group." + group, sendi); return checkPerm(pre + "group." + group, sendi);
} }
private boolean perm(String str, CommandSender sendi) { public boolean checkPerm(String str, CommandSender sendi) {
return depPerms.hasPerm(str, sendi); return depPerms.hasPerm(str, sendi);
} }
} }