mirror of
https://github.com/RonanPlugins/BetterRTP.git
synced 2025-08-17 09:05:47 +00:00
portals save and load + portals execute rtp
This commit is contained in:
parent
27fc53e780
commit
605ad66f2d
@ -73,7 +73,7 @@ public class FlashbackDatabase extends Database {
|
||||
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.setString(1, id.toString());
|
||||
rs = ps.executeQuery();
|
||||
if (rs.next()) {
|
||||
Location loc = LocSerialization.getLocationFromString(rs.getString(Columns.LOCATION_OLD.name));
|
||||
@ -93,13 +93,24 @@ public class FlashbackDatabase extends Database {
|
||||
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 + " = + ?");
|
||||
ps = conn.prepareStatement("INSERT INTO " + table +
|
||||
"(" +
|
||||
Columns.UUID.name + ", " +
|
||||
Columns.TIME_GOAL.name + ", " +
|
||||
Columns.LOCATION_OLD.name +
|
||||
") VALUES (?, ?, ?) "
|
||||
+ "ON CONFLICT(" + Columns.UUID.name +
|
||||
") DO UPDATE SET " +
|
||||
Columns.TIME_GOAL.name + " = + ?, " +
|
||||
Columns.LOCATION_OLD.name + " = + ?"
|
||||
);
|
||||
UUID id = p.getUniqueId();
|
||||
ps.setString(1, id != null ? id.toString() : console_id);
|
||||
ps.setString(1, id.toString());
|
||||
ps.setInt(2, timeGoal.intValue());
|
||||
String serialLocation = LocSerialization.getStringFromLocation(oldLocation);
|
||||
ps.setString(2, serialLocation);
|
||||
ps.setString(3, serialLocation);
|
||||
ps.setInt(4, timeGoal.intValue());
|
||||
ps.setString(5, serialLocation);
|
||||
ps.executeUpdate();
|
||||
} catch (SQLException ex) {
|
||||
plugin.getLogger().log(Level.SEVERE, Errors.sqlConnectionExecute(), ex);
|
||||
|
@ -2,6 +2,7 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.portals;
|
||||
|
||||
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
||||
import me.SuperRonanCraft.BetterRTPAddons.Addon;
|
||||
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds.PortalsCommand;
|
||||
import me.SuperRonanCraft.BetterRTPAddons.util.Files;
|
||||
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.region.PortalsCache;
|
||||
|
||||
|
@ -74,6 +74,8 @@ public class PortalsDatabase extends Database {
|
||||
PortalsRegionInfo info = new PortalsRegionInfo();
|
||||
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));
|
||||
list.add(info);
|
||||
}
|
||||
return list;
|
||||
} catch (SQLException ex) {
|
||||
|
@ -1,19 +1,25 @@
|
||||
package me.SuperRonanCraft.BetterRTPAddons.addons.portals;
|
||||
|
||||
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
||||
import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE;
|
||||
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportPostEvent;
|
||||
import me.SuperRonanCraft.BetterRTPAddons.Main;
|
||||
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.region.PortalsRegionInfo;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
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.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
public class PortalsEvents implements Listener {
|
||||
|
||||
AddonPortals addonPortals;
|
||||
private final HashMap<Player, PortalsRegionInfo> playerPortaling = new HashMap<>();
|
||||
|
||||
PortalsEvents(AddonPortals addonPortals) {
|
||||
this.addonPortals = addonPortals;
|
||||
@ -29,15 +35,32 @@ public class PortalsEvents implements Listener {
|
||||
|
||||
@EventHandler (priority = EventPriority.MONITOR)
|
||||
void move(PlayerMoveEvent e) {
|
||||
if (e.getFrom() != e.getTo()) {
|
||||
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();
|
||||
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!");
|
||||
}
|
||||
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);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
void teleport(RTP_TeleportPostEvent e) {
|
||||
playerPortaling.remove(e.getPlayer());
|
||||
}
|
||||
}
|
||||
|
@ -56,6 +56,22 @@ public class PortalsMessages implements AddonsMessages {
|
||||
sms(sendi, getLang().getString(preM + "Remove.None").replace("%name%", name));
|
||||
}
|
||||
|
||||
//List
|
||||
|
||||
public String getListPrefix() {
|
||||
return getLang().getString(preM + "List.Prefix");
|
||||
}
|
||||
|
||||
public String getListPortal() {
|
||||
return getLang().getString(preM + "List.Portal");
|
||||
}
|
||||
|
||||
public void getListNone(CommandSender sendi) {
|
||||
sms(sendi, getLang().getString(preM + "List.None"));
|
||||
}
|
||||
|
||||
//Usages
|
||||
|
||||
public void usageRemove(CommandSender sendi, String label) {
|
||||
sms(sendi, getLang().getString(preM + "Usage.Remove").replace("%command%", label));
|
||||
}
|
||||
|
@ -1,8 +1,9 @@
|
||||
package me.SuperRonanCraft.BetterRTPAddons.addons.portals;
|
||||
package me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds;
|
||||
|
||||
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
||||
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
|
||||
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable;
|
||||
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals;
|
||||
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds.*;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
@ -13,7 +14,7 @@ public class PortalsCommand implements RTPCommand, RTPCommandHelpable {
|
||||
|
||||
AddonPortals pl;
|
||||
|
||||
PortalsCommand(AddonPortals pl) {
|
||||
public PortalsCommand(AddonPortals pl) {
|
||||
this.pl = pl;
|
||||
}
|
||||
|
||||
@ -59,7 +60,8 @@ public class PortalsCommand implements RTPCommand, RTPCommandHelpable {
|
||||
LOC1(new PortalsCommand_Loc1()),
|
||||
LOC2(new PortalsCommand_Loc2()),
|
||||
CREATE(new PortalsCommand_Create()),
|
||||
REMOVE(new PortalsCommand_Remove());
|
||||
REMOVE(new PortalsCommand_Remove()),
|
||||
LIST(new PortalsCommand_List());
|
||||
|
||||
PortalsCommands cmd;
|
||||
|
@ -16,7 +16,10 @@ public class PortalsCommand_Create implements PortalsCommands {
|
||||
Player p = (Player) sendi;
|
||||
PortalsRegionInfo portal = addonPortals.getPortals().getPortal(p);
|
||||
//Valid region
|
||||
if (portal == null || portal.getLoc1() == null || portal.getLoc2() == null) {
|
||||
if ( portal == null ||
|
||||
portal.getLoc1() == null ||
|
||||
portal.getLoc2() == null ||
|
||||
portal.getLoc1().getWorld() != portal.getLoc2().getWorld()) {
|
||||
addonPortals.msgs.getCreateInvalid(sendi);
|
||||
return;
|
||||
}
|
||||
@ -33,7 +36,7 @@ public class PortalsCommand_Create implements PortalsCommands {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (addonPortals.getPortals().setPortal(p, name))
|
||||
if (addonPortals.getPortals().addRegisteredPortal(p, name))
|
||||
addonPortals.msgs.getCreateConfirm(sendi, name);
|
||||
else
|
||||
sendi.sendMessage("Something went wrong when creating a portal!");
|
||||
|
@ -0,0 +1,36 @@
|
||||
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.Location;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class PortalsCommand_List implements PortalsCommands {
|
||||
|
||||
@Override
|
||||
public void execute(CommandSender sendi, String label, String[] args, AddonPortals addonPortals) {
|
||||
List<PortalsRegionInfo> portalList = addonPortals.getPortals().getRegisteredPortals();
|
||||
if (portalList.isEmpty()) {
|
||||
addonPortals.msgs.getListNone(sendi);
|
||||
return;
|
||||
}
|
||||
String strPrefix = addonPortals.msgs.getListPrefix();
|
||||
List<String> list = new ArrayList<>();
|
||||
list.add(strPrefix);
|
||||
String strPortal = addonPortals.msgs.getListPortal();
|
||||
for (PortalsRegionInfo portal : portalList) {
|
||||
String locInfo = "World: " + portal.getLoc1().getWorld().getName() +
|
||||
" Loc1: " + locToString(portal.getLoc1()) +
|
||||
" Loc2: " + locToString(portal.getLoc2());
|
||||
list.add(strPortal.replace("%name%", portal.getName()).replace("%location%", locInfo));
|
||||
}
|
||||
addonPortals.msgs.sms(sendi, list);
|
||||
}
|
||||
|
||||
private String locToString(Location loc) {
|
||||
return "(" + loc.getBlockX() + ", " + loc.getBlockY() + ", " + loc.getBlockZ() + ")";
|
||||
}
|
||||
}
|
@ -52,11 +52,12 @@ public class PortalsCache {
|
||||
return addonPortals.getDatabase().removePortal(portal);
|
||||
}
|
||||
|
||||
public boolean setPortal(Player p, String name) {
|
||||
public boolean addRegisteredPortal(Player p, String name) {
|
||||
if (!portalsBeingCreated.containsKey(p))
|
||||
return false;
|
||||
PortalsRegionInfo portal = portalsBeingCreated.get(p);
|
||||
portal.name = name;
|
||||
registeredPortals.add(portal);
|
||||
return addonPortals.getDatabase().setPortal(portal);
|
||||
}
|
||||
|
||||
@ -77,7 +78,7 @@ public class PortalsCache {
|
||||
if (Bukkit.getPluginManager().isPluginEnabled("ProtocolLib")) {
|
||||
ProtocolManager pm = ProtocolLibrary.getProtocolManager();
|
||||
|
||||
if (portal.loc_1 != null && portal.loc_2 != null) {
|
||||
//if (portal.loc_1 != null && portal.loc_2 != null) {
|
||||
//if (Math.abs(portal.loc_1.getBlockX() - portal.loc_2.getBlockX()) <= 10)
|
||||
//if (Math.abs(portal.loc_1.getBlockZ() - portal.loc_2.getBlockZ()) <= 10)
|
||||
//if (Math.abs(portal.loc_1.getBlockY() - portal.loc_2.getBlockY()) <= 10) {
|
||||
@ -97,12 +98,12 @@ public class PortalsCache {
|
||||
}
|
||||
}
|
||||
}*/
|
||||
} else {
|
||||
//} else {
|
||||
WrapperPlayServerBlockChange packet = new WrapperPlayServerBlockChange(pm.createPacket(PacketType.Play.Server.BLOCK_CHANGE));
|
||||
packet.setBlockData(WrappedBlockData.createData(Material.GLOWSTONE));
|
||||
packet.setLocation(new BlockPosition(loc.toVector()));
|
||||
packet.sendPacket(p);
|
||||
}
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -24,6 +24,10 @@ public class PortalsRegionInfo {
|
||||
loc_2 = loc;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
@ -13,6 +13,10 @@ Portals:
|
||||
Remove:
|
||||
Confirm: '&cPortal &7%name% &chas been removed!'
|
||||
None: '&cNo portal by the name &7%name% &cexist!'
|
||||
List:
|
||||
Prefix: '&e&m-----&6&l BetterRTP &7&lAddons &8| Portals List &e&m-----'
|
||||
Portal: ' &7- &6%name% &8| &7%location%'
|
||||
None: '&7There are no portals! &8Create one with `/rtp portals create`'
|
||||
|
||||
Usage:
|
||||
Portals:
|
||||
|
@ -36,7 +36,7 @@ public class RTPPlayer {
|
||||
Location loc = pWorld.generateRandomXZ(settings.defaultWorld); //randomLoc(pWorld);
|
||||
CompletableFuture<Chunk> chunk = PaperLib.getChunkAtAsync(pWorld.getWorld(), loc.getBlockX(), loc.getBlockZ());
|
||||
chunk.thenAccept(result -> {
|
||||
BetterRTP.debug("Checking location for " + p.getName());
|
||||
//BetterRTP.debug("Checking location for " + p.getName());
|
||||
Location tpLoc;
|
||||
float yaw = p.getLocation().getYaw();
|
||||
float pitch = p.getLocation().getPitch();
|
||||
|
@ -3,5 +3,6 @@ package me.SuperRonanCraft.BetterRTP.player.rtp;
|
||||
public enum RTP_TYPE {
|
||||
COMMAND, //Player executed command
|
||||
FORCED, //Player was forced to rtp (/rtp player <player>)
|
||||
JOIN //Player joined and was rtp'd automatically
|
||||
JOIN, //Player joined and was rtp'd automatically
|
||||
ADDON //Player RTP'd from the external addons plugin
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user