portals save to database

This commit is contained in:
SuperRonanCraft 2020-11-18 17:58:29 -05:00
parent 9dc7605d40
commit 27fc53e780
35 changed files with 494 additions and 207 deletions

View File

@ -72,14 +72,14 @@
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.8.8-R0.1-SNAPSHOT</version>
<version>1.16.2-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<!-- Spigot Stuff -->
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot</artifactId>
<version>1.8.8-R0.1-SNAPSHOT</version>
<version>1.16.2-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<!-- Paper Library for Async Chunk/Teleport -->

View File

@ -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 {

View File

@ -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() {

View File

@ -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);
}

View File

@ -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();
}

View File

@ -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<Long, String> 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<Map<?, ?>> override_map = file.getConfig().getMapList("Timer.Warnings");
List<Map<?, ?>> override_map = file.getConfig().getMapList(name + ".Timer.Warnings");
for (Map<?, ?> m : override_map)
for (Map.Entry<?, ?> entry : m.entrySet()) {
try {

View File

@ -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<PlayerInfo> playerInfos = new ArrayList<>();
List<FlashbackPlayerInfo> 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);

View File

@ -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"));
}

View File

@ -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;
}

View File

@ -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

View File

@ -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);

View File

@ -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;
}
}

View File

@ -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;

View File

@ -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;
}
}

View File

@ -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<PlayerInfo> 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<PortalsRegionInfo> 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<PortalsRegionInfo> 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;
}
}

View File

@ -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) {
}
}

View File

@ -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) {
}
}

View File

@ -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!");
}
}
}
}
}

View File

@ -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));
}
}

View File

@ -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!");
}
}

View File

@ -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);
}
}
}

View File

@ -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);
}
}
}

View File

@ -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);
}
}

View File

@ -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<Player, PortalsCreation> portalsBeingCreated = new HashMap<>();
AddonPortals addonPortals;
private List<PortalsRegionInfo> registeredPortals;
private final HashMap<Player, PortalsRegionInfo> 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<PortalsRegionInfo> 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);
}
}

View File

@ -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;
}
}

View File

@ -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<FILETYPE> types = new ArrayList<>();
private final List<FILETYPE> 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();

View File

@ -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<String> 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();
}
}

View File

@ -1,4 +1,4 @@
package me.SuperRonanCraft.BetterRTPAddons;
package me.SuperRonanCraft.BetterRTPAddons.util;
import org.bukkit.Bukkit;
import org.bukkit.Location;

View File

@ -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);
}

View File

@ -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

View File

@ -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...'

View File

@ -1 +0,0 @@
Enabled: false

View File

@ -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 <portal_name>'
Help:
Portals: ' &7- &e/%command% portals <loc1, loc2, create> &7- Setup an rtp portal'

View File

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

View File

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