From e7cf494107bf2cac0a6b0ea5159e64c66d2e351a Mon Sep 17 00:00:00 2001 From: SuperRonanCraft Date: Wed, 5 May 2021 09:49:33 -0400 Subject: [PATCH] Rtp Addons - 1.4 Release (portal destinations) --- BetterRTPAddons/pom.xml | 2 +- .../addons/portals/PortalsDatabase.java | 18 ++++++--- .../addons/portals/PortalsEvents.java | 39 ++++++++++--------- .../addons/portals/PortalsMessages.java | 6 ++- .../portals/cmds/PortalsCommand_Create.java | 30 ++++++++++++-- .../portals/region/PortalsRegionInfo.java | 12 ++++++ .../src/main/resources/lang/en.yml | 6 ++- BetterRTPAddons/src/main/resources/plugin.yml | 2 +- 8 files changed, 81 insertions(+), 34 deletions(-) diff --git a/BetterRTPAddons/pom.xml b/BetterRTPAddons/pom.xml index 0f782d4..5f2e0b7 100644 --- a/BetterRTPAddons/pom.xml +++ b/BetterRTPAddons/pom.xml @@ -7,7 +7,7 @@ me.SuperRonanCraft BetterRTPAddons jar - 1.3 + 1.4 1.8 diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsDatabase.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsDatabase.java index fce6025..a163d22 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsDatabase.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsDatabase.java @@ -19,7 +19,8 @@ public class PortalsDatabase extends Database { enum Columns implements DatabaseColumn { LOCATION_1("location_1", "longtext"), LOCATION_2("location_2", "longtext"), - NAME("name", "varchar(255)"); + NAME("name", "varchar(255)"), + WORLD("world", "text"); private final String name; private final String type; @@ -47,7 +48,8 @@ public class PortalsDatabase extends Database { private final String createTable = "CREATE TABLE IF NOT EXISTS " + table + " (" + "`" + 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.LOCATION_2.name + "` " + Columns.LOCATION_2.type + "," + + "`" + Columns.WORLD.name + "` " + Columns.WORLD.type + ");"; @@ -75,6 +77,7 @@ public class PortalsDatabase extends Database { info.setLoc1(LocSerialization.getLocationFromString(rs.getString(Columns.LOCATION_1.name))); info.setLoc2(LocSerialization.getLocationFromString(rs.getString(Columns.LOCATION_2.name))); info.setName(rs.getString(Columns.NAME.name)); + info.setWorld(rs.getString(Columns.WORLD.name)); list.add(info); } return list; @@ -114,16 +117,19 @@ public class PortalsDatabase extends Database { ps = conn.prepareStatement("INSERT INTO " + table + "(" + Columns.NAME.name + ", " + Columns.LOCATION_1.name + ", " + - Columns.LOCATION_2.name + ") VALUES (?, ?, ?) " + Columns.LOCATION_2.name + ", " + + Columns.WORLD.name + ") VALUES (?, ?, ?, ?) " + "ON CONFLICT(" + Columns.NAME.name + ") DO UPDATE SET " + - Columns.LOCATION_1.name + " = + ?, " + Columns.LOCATION_2.name + " = ?"); + Columns.LOCATION_1.name + " = ?, " + Columns.LOCATION_2.name + " = ?, " + Columns.WORLD.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.setString(4, portal.getWorld()); + ps.setString(5, serialLocation_1); + ps.setString(6, serialLocation_2); + ps.setString(7, portal.getWorld()); ps.executeUpdate(); } catch (SQLException ex) { plugin.getLogger().log(Level.SEVERE, Errors.sqlConnectionExecute(), ex); diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsEvents.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsEvents.java index cd70453..fc72def 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsEvents.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsEvents.java @@ -40,28 +40,29 @@ public class PortalsEvents implements Listener { @EventHandler (priority = EventPriority.MONITOR) void move(PlayerMoveEvent e) { - if (e.getFrom().getBlockX() != e.getTo().getBlockX() - || e.getFrom().getBlockY() != e.getTo().getBlockY() - || e.getFrom().getBlockZ() != e.getTo().getBlockZ()) { - if (playerPortaling.containsKey(e.getPlayer())) - return; - for (PortalsRegionInfo portal : addonPortals.getPortals().getRegisteredPortals()) { - Location loc1 = portal.getLoc1(), loc2 = portal.getLoc2(), ploc = e.getTo(); - assert ploc != null; - - if (ploc.getBlockX() <= Math.max(loc1.getBlockX(), loc2.getBlockX()) - && ploc.getBlockX() >= Math.min(loc1.getBlockX(), loc2.getBlockX())) - if (ploc.getBlockZ() <= Math.max(loc1.getBlockZ(), loc2.getBlockZ()) - && ploc.getBlockZ() >= Math.min(loc1.getBlockZ(), loc2.getBlockZ())) - if (ploc.getBlockY() <= Math.max(loc1.getBlockY(), loc2.getBlockY()) - && ploc.getBlockY() >= Math.min(loc1.getBlockY(), loc2.getBlockY())) { - playerPortaling.put(e.getPlayer(), portal); - BetterRTP.getInstance().getCmd().tp(e.getPlayer(), e.getPlayer(), - e.getPlayer().getWorld().getName(), null, RTP_TYPE.ADDON_PORTAL, ignoreCooldown, ignoreDelay); + if (e.getTo() != null) + if (e.getFrom().getBlockX() != e.getTo().getBlockX() + || e.getFrom().getBlockY() != e.getTo().getBlockY() + || e.getFrom().getBlockZ() != e.getTo().getBlockZ()) { + if (playerPortaling.containsKey(e.getPlayer())) return; + for (PortalsRegionInfo portal : addonPortals.getPortals().getRegisteredPortals()) { + Location loc1 = portal.getLoc1(), loc2 = portal.getLoc2(), ploc = e.getTo(); + assert ploc != null; + + if (ploc.getBlockX() <= Math.max(loc1.getBlockX(), loc2.getBlockX()) + && ploc.getBlockX() >= Math.min(loc1.getBlockX(), loc2.getBlockX())) + if (ploc.getBlockZ() <= Math.max(loc1.getBlockZ(), loc2.getBlockZ()) + && ploc.getBlockZ() >= Math.min(loc1.getBlockZ(), loc2.getBlockZ())) + if (ploc.getBlockY() <= Math.max(loc1.getBlockY(), loc2.getBlockY()) + && ploc.getBlockY() >= Math.min(loc1.getBlockY(), loc2.getBlockY())) { + playerPortaling.put(e.getPlayer(), portal); + BetterRTP.getInstance().getCmd().tp(e.getPlayer(), e.getPlayer(), + portal.getWorld(), null, RTP_TYPE.ADDON_PORTAL, ignoreCooldown, ignoreDelay); + return; + } } } - } } @EventHandler diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsMessages.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsMessages.java index 502e678..38b73e9 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsMessages.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/PortalsMessages.java @@ -17,7 +17,11 @@ public class PortalsMessages implements AddonsMessages { //Create public void getCreateConfirm(CommandSender sendi, String name) { - sms(sendi, getLang().getString(preM + "Created.Confirm").replace("%name%", name)); + sms(sendi, getLang().getString(preM + "Created.Confirmation.Default").replace("%name%", name)); + } + + public void getCreateConfirmWorld(CommandSender sendi, String name, String world) { + sms(sendi, getLang().getString(preM + "Created.Confirmation.Destination").replace("%name%", name).replace("%world%", world)); } public void getCreateInvalid(CommandSender sendi) { diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Create.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Create.java index 10f7807..f443ded 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Create.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Create.java @@ -2,10 +2,15 @@ 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.Bukkit; +import org.bukkit.World; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -public class PortalsCommand_Create implements PortalsCommands { +import java.util.ArrayList; +import java.util.List; + +public class PortalsCommand_Create implements PortalsCommands, PortalsCommandsTabable { @Override public void execute(CommandSender sendi, String label, String[] args, AddonPortals addonPortals) { @@ -29,6 +34,9 @@ public class PortalsCommand_Create implements PortalsCommands { return; } String name = args[2]; + if (args.length > 3) { + portal.setWorld(args[3]); + } //Duplicate Name for (PortalsRegionInfo portals : addonPortals.getPortals().getRegisteredPortals()) { if (portals.getName().equals(name)) { @@ -36,9 +44,23 @@ public class PortalsCommand_Create implements PortalsCommands { return; } } - if (addonPortals.getPortals().addRegisteredPortal(p, name)) - addonPortals.msgs.getCreateConfirm(sendi, name); - else + if (addonPortals.getPortals().addRegisteredPortal(p, name)) { + if (portal.getWorld() == null) + addonPortals.msgs.getCreateConfirm(p, name); + else + addonPortals.msgs.getCreateConfirmWorld(p, name, portal.getWorld()); + } else sendi.sendMessage("Something went wrong when creating a portal!"); } + + @Override + public List tabComplete(CommandSender sendi, String[] args, AddonPortals addonPortals) { + List list = new ArrayList<>(); + if (args.length == 4) { + for (World world : Bukkit.getWorlds()) + if (world.getName().toLowerCase().startsWith(args[3].toLowerCase())) + list.add(world.getName()); + } + return list; + } } diff --git a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/region/PortalsRegionInfo.java b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/region/PortalsRegionInfo.java index 4ac9973..1530d7a 100644 --- a/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/region/PortalsRegionInfo.java +++ b/BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/region/PortalsRegionInfo.java @@ -3,10 +3,13 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.portals.region; import org.bukkit.Location; import org.bukkit.entity.Player; +import javax.annotation.Nullable; + public class PortalsRegionInfo { protected Location loc_1, loc_2; protected String name; + protected String world; public Location getLoc1() { return loc_1; @@ -28,7 +31,16 @@ public class PortalsRegionInfo { this.name = name; } + public void setWorld(@Nullable String world) { + this.world = world; + } + public String getName() { return name; } + + @Nullable + public String getWorld() { + return world; + } } diff --git a/BetterRTPAddons/src/main/resources/lang/en.yml b/BetterRTPAddons/src/main/resources/lang/en.yml index 704e3e2..1e0a08e 100644 --- a/BetterRTPAddons/src/main/resources/lang/en.yml +++ b/BetterRTPAddons/src/main/resources/lang/en.yml @@ -2,7 +2,9 @@ Flashback: Warning: '&7This random teleport was temporary! You were teleported back to your original location.' Portals: Created: - Confirm: '&7Portal &a%name% &7has been created!' + Confirmation: + Default: '&7Portal &a%name% &7has been created!' + Destination: '&7Portal &a%name% &7has been created, it''s headed for the world "%world%"' 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!' @@ -29,5 +31,5 @@ Usage: Help: - Portals: ' &7- &e/%command% portals &7- Setup an rtp portal' + Portals: ' &7- &e/%command% portals [args...] &7- Setup an rtp portal' MagicStick: ' &7- &e/%command% magicstick give [player] &7- Give a magic stick to a player' \ No newline at end of file diff --git a/BetterRTPAddons/src/main/resources/plugin.yml b/BetterRTPAddons/src/main/resources/plugin.yml index fcfa8de..48532b0 100644 --- a/BetterRTPAddons/src/main/resources/plugin.yml +++ b/BetterRTPAddons/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ main: me.SuperRonanCraft.BetterRTPAddons.Main -version: 1.3 +version: 1.4 api-version: '1.13' name: BetterRTPAddons depend: [BetterRTP]