mirror of
https://github.com/RonanPlugins/BetterRTP.git
synced 2025-08-18 01:25:45 +00:00
addons help support + api permission fix + addon subcmds for portals
This commit is contained in:
parent
67cca730c4
commit
7d018b748f
@ -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);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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";
|
||||||
|
}
|
||||||
|
}
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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();
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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) {
|
||||||
|
@ -0,0 +1,9 @@
|
|||||||
|
package me.SuperRonanCraft.BetterRTPAddons.database;
|
||||||
|
|
||||||
|
public abstract interface DatabaseColumn {
|
||||||
|
|
||||||
|
String getName();
|
||||||
|
|
||||||
|
String getType();
|
||||||
|
|
||||||
|
}
|
@ -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
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
|
@ -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");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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!");
|
||||||
|
}
|
||||||
|
}
|
@ -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!");
|
||||||
|
}
|
||||||
|
}
|
@ -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!");
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
|
||||||
|
}
|
2
BetterRTPAddons/src/main/resources/logger.yml
Normal file
2
BetterRTPAddons/src/main/resources/logger.yml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
Enabled: true
|
||||||
|
Debug: true
|
@ -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
|
||||||
|
|
||||||
|
@ -1 +1,4 @@
|
|||||||
Enabled: false
|
Enabled: false
|
||||||
|
|
||||||
|
Messages:
|
||||||
|
Help: ' &7- &e/%command% portals <loc1, loc2, create> &7- Setup an rtp portal'
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user