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]