mirror of
https://github.com/RonanPlugins/BetterRTP.git
synced 2026-04-18 14:30:15 +00:00
Cooldowns per world save + Player rtp usage saving
This commit is contained in:
@@ -65,7 +65,7 @@ public class MagicStickEvents implements Listener {
|
|||||||
if (listener.p == e.getPlayer())
|
if (listener.p == e.getPlayer())
|
||||||
return;
|
return;
|
||||||
//Rtp the player
|
//Rtp the player
|
||||||
HelperRTP.tp(e.getPlayer(), e.getPlayer().getWorld().getName(), null, RTP_TYPE.ADDON_MAGICSTICK);
|
HelperRTP.tp(e.getPlayer(), e.getPlayer().getWorld(), null, RTP_TYPE.ADDON_MAGICSTICK);
|
||||||
if (this.take)
|
if (this.take)
|
||||||
teleportingPlayers.add(new PlayerListener(e.getPlayer()));
|
teleportingPlayers.add(new PlayerListener(e.getPlayer()));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,9 +3,12 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.parties;
|
|||||||
import io.papermc.lib.PaperLib;
|
import io.papermc.lib.PaperLib;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
||||||
|
import me.SuperRonanCraft.BetterRTP.references.PermissionNode;
|
||||||
|
import me.SuperRonanCraft.BetterRTP.references.Permissions;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportPostEvent;
|
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportPostEvent;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownData;
|
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownData;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.World;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.player.PlayerTeleportEvent;
|
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||||
|
|
||||||
@@ -79,7 +82,7 @@ public class PartyData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void tpAll(RTP_TeleportPostEvent e) {
|
public void tpAll(RTP_TeleportPostEvent e) {
|
||||||
CooldownData cooldownData = BetterRTP.getInstance().getPlayerDataManager().getData(getLeader()).getCooldown();
|
//HashMap<World, CooldownData> cooldownData = BetterRTP.getInstance().getPlayerDataManager().getData(getLeader()).getCooldowns();
|
||||||
members.forEach((p, ready) -> {
|
members.forEach((p, ready) -> {
|
||||||
if (!p.equals(getLeader())) {
|
if (!p.equals(getLeader())) {
|
||||||
Location loc = e.getLocation();
|
Location loc = e.getLocation();
|
||||||
@@ -94,8 +97,9 @@ public class PartyData {
|
|||||||
BetterRTP.getInstance().getRTP().getTeleport().afterTeleport(p, loc, 0, 0, e.getOldLocation(), e.getType());
|
BetterRTP.getInstance().getRTP().getTeleport().afterTeleport(p, loc, 0, 0, e.getOldLocation(), e.getType());
|
||||||
});
|
});
|
||||||
//Set cooldowns
|
//Set cooldowns
|
||||||
if (cooldownData != null)
|
if (!PermissionNode.BYPASS_COOLDOWN.check(p))
|
||||||
BetterRTP.getInstance().getPlayerDataManager().getData(p).setCooldown(new CooldownData(p.getUniqueId(), cooldownData.getTime(), cooldownData.getUses()));
|
BetterRTP.getInstance().getPlayerDataManager().getData(p).getCooldowns().put(loc.getWorld(),
|
||||||
|
new CooldownData(p.getUniqueId(), System.currentTimeMillis(), loc.getWorld()));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import me.SuperRonanCraft.BetterRTPAddons.addons.portals.region.PortalsRegionInf
|
|||||||
import me.SuperRonanCraft.BetterRTPAddons.util.Files;
|
import me.SuperRonanCraft.BetterRTPAddons.util.Files;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.World;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
@@ -58,8 +59,8 @@ public class PortalsEvents implements Listener {
|
|||||||
if (ploc.getBlockY() <= Math.max(loc1.getBlockY(), loc2.getBlockY())
|
if (ploc.getBlockY() <= Math.max(loc1.getBlockY(), loc2.getBlockY())
|
||||||
&& ploc.getBlockY() >= Math.min(loc1.getBlockY(), loc2.getBlockY())) {
|
&& ploc.getBlockY() >= Math.min(loc1.getBlockY(), loc2.getBlockY())) {
|
||||||
playerPortaling.put(e.getPlayer(), portal);
|
playerPortaling.put(e.getPlayer(), portal);
|
||||||
HelperRTP.tp(e.getPlayer(), e.getPlayer(),
|
World world = portal.getWorld() != null ? Bukkit.getWorld(portal.getWorld()) : null;
|
||||||
portal.getWorld(), null, RTP_TYPE.ADDON_PORTAL, ignoreCooldown, ignoreDelay);
|
HelperRTP.tp(e.getPlayer(), e.getPlayer(), world, null, RTP_TYPE.ADDON_PORTAL, ignoreCooldown, ignoreDelay);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package me.SuperRonanCraft.BetterRTP.player.commands;
|
|||||||
|
|
||||||
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
||||||
import me.SuperRonanCraft.BetterRTP.player.commands.types.CmdTeleport;
|
import me.SuperRonanCraft.BetterRTP.player.commands.types.CmdTeleport;
|
||||||
|
import me.SuperRonanCraft.BetterRTP.references.PermissionNode;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_CommandEvent_After;
|
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_CommandEvent_After;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP;
|
import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownData;
|
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownData;
|
||||||
@@ -41,7 +42,7 @@ public class Commands {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void commandExecuted(CommandSender sendi, String label, String[] args) {
|
public void commandExecuted(CommandSender sendi, String label, String[] args) {
|
||||||
if (pl.getPerms().getUse(sendi)) {
|
if (PermissionNode.USE.check(sendi)) {
|
||||||
if (args != null && args.length > 0) {
|
if (args != null && args.length > 0) {
|
||||||
for (RTPCommand cmd : commands) {
|
for (RTPCommand cmd : commands) {
|
||||||
if (cmd.getName().equalsIgnoreCase(args[0])) {
|
if (cmd.getName().equalsIgnoreCase(args[0])) {
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package me.SuperRonanCraft.BetterRTP.player.commands;
|
package me.SuperRonanCraft.BetterRTP.player.commands;
|
||||||
|
|
||||||
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ public class CmdInfo implements RTPCommand, RTPCommandHelpable {
|
|||||||
info.add("&7- &6Overriden: " + _true + " &7- target `" + pl.getRTP().overriden.get(w.getName()) + "`");
|
info.add("&7- &6Overriden: " + _true + " &7- target `" + pl.getRTP().overriden.get(w.getName()) + "`");
|
||||||
else {
|
else {
|
||||||
info.add("&7- &6Overriden&7: " + _false);
|
info.add("&7- &6Overriden&7: " + _false);
|
||||||
WorldPlayer _rtpworld = BetterRTP.getInstance().getRTP().getPlayerWorld(new RTPSetupInformation(w.getName(), player != null ? player : sendi, player, player != null));
|
WorldPlayer _rtpworld = BetterRTP.getInstance().getRTP().getPlayerWorld(new RTPSetupInformation(w, player != null ? player : sendi, player, player != null));
|
||||||
WorldDefault worldDefault = BetterRTP.getInstance().getRTP().defaultWorld;
|
WorldDefault worldDefault = BetterRTP.getInstance().getRTP().defaultWorld;
|
||||||
info.add("&7- &eSetup Type&7: " + _rtpworld.setup_type.name() + getInfo(_rtpworld, worldDefault, "setup"));
|
info.add("&7- &eSetup Type&7: " + _rtpworld.setup_type.name() + getInfo(_rtpworld, worldDefault, "setup"));
|
||||||
info.add("&7- &6Use World Border&7: " + (_rtpworld.getUseWorldborder() ? _true : _false));
|
info.add("&7- &6Use World Border&7: " + (_rtpworld.getUseWorldborder() ? _true : _false));
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP;
|
|||||||
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.RTPWorld;
|
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.RTPWorld;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldLocations;
|
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldLocations;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.World;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
@@ -83,12 +84,12 @@ public class CmdLocation implements RTPCommand, RTPCommandHelpable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Get locations a player has access to
|
//Get locations a player has access to
|
||||||
public static HashMap<String, RTPWorld> getLocations(CommandSender sendi, @Nullable String world) {
|
public static HashMap<String, RTPWorld> getLocations(CommandSender sendi, @Nullable World world) {
|
||||||
if (BetterRTP.getInstance().getSettings().isLocationNeedPermission()) {
|
if (BetterRTP.getInstance().getSettings().isLocationNeedPermission()) {
|
||||||
HashMap<String, RTPWorld> locations = new HashMap<>();
|
HashMap<String, RTPWorld> locations = new HashMap<>();
|
||||||
for (Map.Entry<String, RTPWorld> location : getLocations().entrySet())
|
for (Map.Entry<String, RTPWorld> location : getLocations().entrySet())
|
||||||
if (BetterRTP.getInstance().getPerms().getLocation(sendi, location.getKey())) {
|
if (BetterRTP.getInstance().getPerms().getLocation(sendi, location.getKey())) {
|
||||||
if (world == null || location.getValue().getWorld().getName().equals(world))
|
if (world == null || location.getValue().getWorld().equals(world))
|
||||||
locations.put(location.getKey(), location.getValue());
|
locations.put(location.getKey(), location.getValue());
|
||||||
}
|
}
|
||||||
return locations;
|
return locations;
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ public class CmdPlayer implements RTPCommand, RTPCommandHelpable {
|
|||||||
public void execute(CommandSender sendi, String label, String[] args) {
|
public void execute(CommandSender sendi, String label, String[] args) {
|
||||||
if (args.length == 2)
|
if (args.length == 2)
|
||||||
if (Bukkit.getPlayer(args[1]) != null && Bukkit.getPlayer(args[1]).isOnline())
|
if (Bukkit.getPlayer(args[1]) != null && Bukkit.getPlayer(args[1]).isOnline())
|
||||||
HelperRTP.tp(Bukkit.getPlayer(args[1]), sendi, Bukkit.getPlayer(args[1]).getWorld().getName(), null, RTP_TYPE.FORCED);
|
HelperRTP.tp(Bukkit.getPlayer(args[1]), sendi, Bukkit.getPlayer(args[1]).getWorld(), null, RTP_TYPE.FORCED);
|
||||||
else if (Bukkit.getPlayer(args[1]) != null)
|
else if (Bukkit.getPlayer(args[1]) != null)
|
||||||
BetterRTP.getInstance().getText().getNotOnline(sendi, args[1]);
|
BetterRTP.getInstance().getText().getNotOnline(sendi, args[1]);
|
||||||
else
|
else
|
||||||
@@ -35,7 +35,7 @@ public class CmdPlayer implements RTPCommand, RTPCommandHelpable {
|
|||||||
if (Bukkit.getPlayer(args[1]) != null && Bukkit.getPlayer(args[1]).isOnline()) {
|
if (Bukkit.getPlayer(args[1]) != null && Bukkit.getPlayer(args[1]).isOnline()) {
|
||||||
World world = Bukkit.getWorld(args[2]);
|
World world = Bukkit.getWorld(args[2]);
|
||||||
if (world != null) {
|
if (world != null) {
|
||||||
HelperRTP.tp(Bukkit.getPlayer(args[1]), sendi, world.getName(), HelperRTP_Info.getBiomes(args, 3, sendi), RTP_TYPE.FORCED);
|
HelperRTP.tp(Bukkit.getPlayer(args[1]), sendi, world, HelperRTP_Info.getBiomes(args, 3, sendi), RTP_TYPE.FORCED);
|
||||||
} else
|
} else
|
||||||
BetterRTP.getInstance().getText().getNotExist(sendi, args[2]);
|
BetterRTP.getInstance().getText().getNotExist(sendi, args[2]);
|
||||||
} else if (Bukkit.getPlayer(args[1]) != null)
|
} else if (Bukkit.getPlayer(args[1]) != null)
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import java.util.List;
|
|||||||
public class CmdTeleport implements RTPCommand {
|
public class CmdTeleport implements RTPCommand {
|
||||||
|
|
||||||
//Label is the %command% placeholder in messages
|
//Label is the %command% placeholder in messages
|
||||||
public static void teleport(CommandSender sendi, String label, String world, List<String> biomes) {
|
public static void teleport(CommandSender sendi, String label, World world, List<String> biomes) {
|
||||||
if (sendi instanceof Player)
|
if (sendi instanceof Player)
|
||||||
HelperRTP.tp((Player) sendi, sendi, world, biomes, RTP_TYPE.COMMAND);
|
HelperRTP.tp((Player) sendi, sendi, world, biomes, RTP_TYPE.COMMAND);
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -22,9 +22,13 @@ public class CmdWorld implements RTPCommand, RTPCommandHelpable {
|
|||||||
|
|
||||||
//rtp world <world> <biome1, biome2...>
|
//rtp world <world> <biome1, biome2...>
|
||||||
public void execute(CommandSender sendi, String label, String[] args) {
|
public void execute(CommandSender sendi, String label, String[] args) {
|
||||||
if (args.length >= 2)
|
if (args.length >= 2) {
|
||||||
CmdTeleport.teleport(sendi, label, args[1], HelperRTP_Info.getBiomes(args, 2, sendi));
|
World world = Bukkit.getWorld(args[1]);
|
||||||
else
|
if (world != null)
|
||||||
|
CmdTeleport.teleport(sendi, label, world, HelperRTP_Info.getBiomes(args, 2, sendi));
|
||||||
|
else
|
||||||
|
BetterRTP.getInstance().getText().getNotExist(sendi, args[1]);
|
||||||
|
} else
|
||||||
usage(sendi, label);
|
usage(sendi, label);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ public class Join {
|
|||||||
//RTP on first join
|
//RTP on first join
|
||||||
private void rtpOnFirstJoin(Player p) {
|
private void rtpOnFirstJoin(Player p) {
|
||||||
if (getPl().getSettings().isRtpOnFirstJoin_Enabled() && !p.hasPlayedBefore())
|
if (getPl().getSettings().isRtpOnFirstJoin_Enabled() && !p.hasPlayedBefore())
|
||||||
HelperRTP.tp(p, Bukkit.getConsoleSender(), getPl().getSettings().getRtpOnFirstJoin_World(), null, RTP_TYPE.JOIN); //Console is sender to override delays
|
HelperRTP.tp(p, Bukkit.getConsoleSender(), Bukkit.getWorld(getPl().getSettings().getRtpOnFirstJoin_World()), null, RTP_TYPE.JOIN); //Console is sender to override delays
|
||||||
}
|
}
|
||||||
|
|
||||||
private BetterRTP getPl() {
|
private BetterRTP getPl() {
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ public class RTP {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public WorldPlayer getPlayerWorld(RTPSetupInformation setup_info) {
|
public WorldPlayer getPlayerWorld(RTPSetupInformation setup_info) {
|
||||||
WorldPlayer pWorld = new WorldPlayer(setup_info.getPlayer(), Bukkit.getWorld(setup_info.getWorld()));
|
WorldPlayer pWorld = new WorldPlayer(setup_info.getPlayer(), setup_info.getWorld());
|
||||||
|
|
||||||
//Random Location
|
//Random Location
|
||||||
if (setup_info.getLocation() == null && BetterRTP.getInstance().getSettings().isUseLocationIfAvailable()) {
|
if (setup_info.getLocation() == null && BetterRTP.getInstance().getSettings().isUseLocationIfAvailable()) {
|
||||||
@@ -111,7 +111,7 @@ public class RTP {
|
|||||||
pWorld.config = group;
|
pWorld.config = group;
|
||||||
}
|
}
|
||||||
//Custom World
|
//Custom World
|
||||||
else if (customWorlds.containsKey(setup_info.getWorld())) {
|
else if (customWorlds.containsKey(setup_info.getWorld().getName())) {
|
||||||
RTPWorld cWorld = customWorlds.get(pWorld.getWorld().getName());
|
RTPWorld cWorld = customWorlds.get(pWorld.getWorld().getName());
|
||||||
pWorld.setup(null, cWorld, setup_info.getBiomes(), setup_info.isPersonalized());
|
pWorld.setup(null, cWorld, setup_info.getBiomes(), setup_info.isPersonalized());
|
||||||
}
|
}
|
||||||
@@ -121,11 +121,11 @@ public class RTP {
|
|||||||
}
|
}
|
||||||
//World type
|
//World type
|
||||||
WORLD_TYPE world_type;
|
WORLD_TYPE world_type;
|
||||||
if (this.world_type.containsKey(setup_info.getWorld()))
|
if (this.world_type.containsKey(setup_info.getWorld().getName()))
|
||||||
world_type = this.world_type.get(setup_info.getWorld());
|
world_type = this.world_type.get(setup_info.getWorld().getName());
|
||||||
else {
|
else {
|
||||||
world_type = WORLD_TYPE.NORMAL;
|
world_type = WORLD_TYPE.NORMAL;
|
||||||
this.world_type.put(setup_info.getWorld(), world_type); //Defaults this so the error message isn't spammed
|
this.world_type.put(setup_info.getWorld().getName(), world_type); //Defaults this so the error message isn't spammed
|
||||||
getPl().getLogger().warning("Seems like the world `" + setup_info.getWorld() + "` does not have a `WorldType` declared. " +
|
getPl().getLogger().warning("Seems like the world `" + setup_info.getWorld() + "` does not have a `WorldType` declared. " +
|
||||||
"Please add/fix this in the config.yml file! " +
|
"Please add/fix this in the config.yml file! " +
|
||||||
"This world will be treated as an overworld!");
|
"This world will be treated as an overworld!");
|
||||||
@@ -141,44 +141,49 @@ public class RTP {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
String world_name = setup_info.getWorld();
|
World world_name = setup_info.getWorld();
|
||||||
Player p = setup_info.getPlayer();
|
Player p = setup_info.getPlayer();
|
||||||
CommandSender sendi = setup_info.getSender();
|
CommandSender sendi = setup_info.getSender();
|
||||||
|
|
||||||
// Locations
|
// Locations
|
||||||
if (setup_info.getLocation() != null) {
|
if (setup_info.getLocation() != null) {
|
||||||
WorldLocations location = setup_info.getLocation();
|
WorldLocations location = setup_info.getLocation();
|
||||||
world_name = location.getWorld().getName();
|
world_name = location.getWorld();
|
||||||
setup_info.setWorld(world_name);
|
setup_info.setWorld(world_name);
|
||||||
setup_info.setBiomes(location.getBiomes());
|
setup_info.setBiomes(location.getBiomes());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check overrides
|
// Check overrides
|
||||||
if (world_name == null) {
|
if (world_name == null && p != null) {
|
||||||
world_name = p.getWorld().getName();
|
world_name = p.getWorld();
|
||||||
} else { // Check if nulled or world doesnt exist
|
}// else { // Check if nulled or world doesnt exist
|
||||||
World _world = Bukkit.getWorld(world_name);
|
//World _world = world_name;//Bukkit.getWorld(world_name);
|
||||||
if (_world == null) { //Check if world has spaces instead of underscores
|
/*if (_world == null) { //Check if world has spaces instead of underscores
|
||||||
_world = Bukkit.getWorld(world_name.replace("_", " "));
|
_world = Bukkit.getWorld(world_name.replace("_", " "));
|
||||||
world_name = world_name.replace("_", "");
|
world_name = world_name.replace("_", "");
|
||||||
}
|
}
|
||||||
if (_world == null) {
|
if (_world == null) {
|
||||||
getPl().getText().getNotExist(sendi, world_name);
|
getPl().getText().getNotExist(sendi, world_name);
|
||||||
return;
|
return;
|
||||||
}
|
}*/
|
||||||
|
//}
|
||||||
|
//No World was sent???
|
||||||
|
if (world_name == null) {
|
||||||
|
BetterRTP.getInstance().getText().error(sendi);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
if (overriden.containsKey(world_name)) {
|
if (overriden.containsKey(world_name.getName())) {
|
||||||
world_name = overriden.get(world_name);
|
world_name = Bukkit.getWorld(overriden.get(world_name.getName()));
|
||||||
setup_info.setWorld(world_name);
|
setup_info.setWorld(world_name);
|
||||||
}
|
}
|
||||||
// Not forced and has 'betterrtp.world.<world>'
|
// Not forced and has 'betterrtp.world.<world>'
|
||||||
if (sendi == p && !getPl().getPerms().getAWorld(sendi, world_name)) {
|
if (sendi == p && !getPl().getPerms().getAWorld(sendi, world_name.getName())) {
|
||||||
getPl().getText().getNoPermissionWorld(p, world_name);
|
getPl().getText().getNoPermissionWorld(p, world_name.getName());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Check disabled worlds
|
// Check disabled worlds
|
||||||
if (disabledWorlds.contains(world_name)) {
|
if (disabledWorlds.contains(world_name.getName())) {
|
||||||
getPl().getText().getDisabledWorld(sendi, world_name);
|
getPl().getText().getDisabledWorld(sendi, world_name.getName());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
WorldPlayer pWorld = getPlayerWorld(setup_info);
|
WorldPlayer pWorld = getPlayerWorld(setup_info);
|
||||||
@@ -193,7 +198,7 @@ public class RTP {
|
|||||||
Player p = pWorld.getPlayer();
|
Player p = pWorld.getPlayer();
|
||||||
//p.sendMessage("Cooling down: " + cooldown);
|
//p.sendMessage("Cooling down: " + cooldown);
|
||||||
if (cooldown)
|
if (cooldown)
|
||||||
getPl().getCooldowns().add(p);
|
getPl().getCooldowns().add(p, pWorld.getWorld());
|
||||||
getPl().getpInfo().getRtping().put(p, true); //Cache player so they cant run '/rtp' again while rtp'ing
|
getPl().getpInfo().getRtping().put(p, true); //Cache player so they cant run '/rtp' again while rtp'ing
|
||||||
//Setup player rtp methods
|
//Setup player rtp methods
|
||||||
RTPPlayer rtpPlayer = new RTPPlayer(p, this, pWorld, type);
|
RTPPlayer rtpPlayer = new RTPPlayer(p, this, pWorld, type);
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ class RTPDelay implements Listener {
|
|||||||
HandlerList.unregisterAll(this);
|
HandlerList.unregisterAll(this);
|
||||||
getPl().getRTP().getTeleport().cancelledTeleport(rtp.getPlayer());
|
getPl().getRTP().getTeleport().cancelledTeleport(rtp.getPlayer());
|
||||||
//getPl().getEco().unCharge(rtp.getPlayer(), rtp.pWorld);
|
//getPl().getEco().unCharge(rtp.getPlayer(), rtp.pWorld);
|
||||||
getPl().getCooldowns().removeCooldown(rtp.getPlayer());
|
getPl().getCooldowns().removeCooldown(rtp.getPlayer(), rtp.pWorld.getWorld());
|
||||||
getPl().getpInfo().getRtping().put(rtp.getPlayer(), false);
|
getPl().getpInfo().getRtping().put(rtp.getPlayer(), false);
|
||||||
Bukkit.getServer().getPluginManager().callEvent(new RTP_CancelledEvent(rtp.getPlayer()));
|
Bukkit.getServer().getPluginManager().callEvent(new RTP_CancelledEvent(rtp.getPlayer()));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ public class RTPPlayer {
|
|||||||
getPl().getText().getFailedNotSafe(sendi, settings.maxAttempts);
|
getPl().getText().getFailedNotSafe(sendi, settings.maxAttempts);
|
||||||
else
|
else
|
||||||
getPl().getText().getOtherNotSafe(sendi, settings.maxAttempts, p.getName());*/
|
getPl().getText().getOtherNotSafe(sendi, settings.maxAttempts, p.getName());*/
|
||||||
getPl().getCooldowns().removeCooldown(p);
|
getPl().getCooldowns().removeCooldown(p, pWorld.getWorld());
|
||||||
//getPl().getEco().unCharge(p, pWorld);
|
//getPl().getEco().unCharge(p, pWorld);
|
||||||
getPl().getpInfo().getRtping().put(p, false);
|
getPl().getpInfo().getRtping().put(p, false);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import me.SuperRonanCraft.BetterRTP.player.commands.types.CmdLocation;
|
|||||||
import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP;
|
import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.RTPWorld;
|
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.RTPWorld;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldLocations;
|
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldLocations;
|
||||||
|
import org.bukkit.World;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
@@ -19,7 +20,7 @@ import java.util.Random;
|
|||||||
|
|
||||||
public class RTPSetupInformation {
|
public class RTPSetupInformation {
|
||||||
//Will provide information to setup an RTP attempt
|
//Will provide information to setup an RTP attempt
|
||||||
@Getter @Setter private String world;
|
@Getter @Setter private World world;
|
||||||
@Getter @NonNull private final CommandSender sender;
|
@Getter @NonNull private final CommandSender sender;
|
||||||
@Getter @Nullable private final Player player;
|
@Getter @Nullable private final Player player;
|
||||||
@Getter private final boolean personalized;
|
@Getter private final boolean personalized;
|
||||||
@@ -29,14 +30,14 @@ public class RTPSetupInformation {
|
|||||||
@Getter private final boolean delay;
|
@Getter private final boolean delay;
|
||||||
@Getter @Nullable private final RTP_TYPE rtp_type;
|
@Getter @Nullable private final RTP_TYPE rtp_type;
|
||||||
|
|
||||||
public RTPSetupInformation(@Nullable String world,
|
public RTPSetupInformation(@Nullable World world,
|
||||||
@NonNull CommandSender sender,
|
@NonNull CommandSender sender,
|
||||||
@Nullable Player player,
|
@Nullable Player player,
|
||||||
boolean personalized) {
|
boolean personalized) {
|
||||||
this(world, sender, player, personalized, null, false, null, null);
|
this(world, sender, player, personalized, null, false, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public RTPSetupInformation(@Nullable String world,
|
public RTPSetupInformation(@Nullable World world,
|
||||||
@NonNull CommandSender sender,
|
@NonNull CommandSender sender,
|
||||||
@Nullable Player player,
|
@Nullable Player player,
|
||||||
boolean personalized,
|
boolean personalized,
|
||||||
@@ -47,7 +48,7 @@ public class RTPSetupInformation {
|
|||||||
this(world, sender, player, personalized, biomes, delay, rtp_type, location, true);
|
this(world, sender, player, personalized, biomes, delay, rtp_type, location, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public RTPSetupInformation(@Nullable String world,
|
public RTPSetupInformation(@Nullable World world,
|
||||||
@NonNull CommandSender sender,
|
@NonNull CommandSender sender,
|
||||||
@Nullable Player player,
|
@Nullable Player player,
|
||||||
boolean personalized,
|
boolean personalized,
|
||||||
@@ -66,9 +67,9 @@ public class RTPSetupInformation {
|
|||||||
this.location = location;
|
this.location = location;
|
||||||
if (this.world == null) {
|
if (this.world == null) {
|
||||||
if (player != null)
|
if (player != null)
|
||||||
this.world = player.getWorld().getName();
|
this.world = player.getWorld();
|
||||||
else if (this.location != null)
|
else if (this.location != null)
|
||||||
this.world = this.location.getWorld().getName();
|
this.world = this.location.getWorld();
|
||||||
}
|
}
|
||||||
this.cooldown = cooldown;
|
this.cooldown = cooldown;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,66 @@
|
|||||||
|
package me.SuperRonanCraft.BetterRTP.references;
|
||||||
|
|
||||||
|
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
||||||
|
import me.SuperRonanCraft.BetterRTP.references.depends.DepPerms;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
|
public enum PermissionNode {
|
||||||
|
|
||||||
|
USE("use"),
|
||||||
|
BYPASS_ECONOMY("bypass.economy"),
|
||||||
|
BYPASS_HUNGER("bypass.hunger"),
|
||||||
|
BYPASS_COOLDOWN("bypass.cooldown"),
|
||||||
|
BYPASS_DELAY("bypass.delay"),
|
||||||
|
RELOAD("reload"),
|
||||||
|
SETTINGS("settings"),
|
||||||
|
INFO("info"),
|
||||||
|
UPDATER("updater"),
|
||||||
|
RTP_OTHER("player"),
|
||||||
|
BIOME("biome"),
|
||||||
|
WORLD("world"),
|
||||||
|
SIGN_CREATE("sign"),
|
||||||
|
TEST("test"),
|
||||||
|
VERSION("version"),
|
||||||
|
EDIT("edit"),
|
||||||
|
LOCATION("location"),
|
||||||
|
;
|
||||||
|
|
||||||
|
private final String node;
|
||||||
|
private static final String prefix = "betterrtp.";
|
||||||
|
|
||||||
|
PermissionNode(String node) {
|
||||||
|
this.node = prefix + node;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean check(CommandSender sendi) {
|
||||||
|
return BetterRTP.getInstance().getPerms().checkPerm(node, sendi);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean check(CommandSender sendi, String check) {
|
||||||
|
return BetterRTP.getInstance().getPerms().checkPerm(check, sendi);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean getAWorld(CommandSender sendi, String world) {
|
||||||
|
if (check(sendi, prefix + "world.*"))
|
||||||
|
return true;
|
||||||
|
else if (world == null) {
|
||||||
|
for (World w : Bukkit.getWorlds())
|
||||||
|
if (check(sendi, prefix + "world." + w.getName()))
|
||||||
|
return true;
|
||||||
|
} else
|
||||||
|
return check(sendi, prefix + "world." + world);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static boolean getLocation(CommandSender sendi, String location) {
|
||||||
|
return check(sendi, prefix + "location." + location);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean getPermissionGroup(CommandSender sendi, String group) {
|
||||||
|
return check(sendi, prefix + "group." + group);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -27,7 +27,7 @@ public class DatabaseCooldownsGlobal extends SQLite {
|
|||||||
UUID("uuid", "varchar(32) PRIMARY KEY"),
|
UUID("uuid", "varchar(32) PRIMARY KEY"),
|
||||||
//COOLDOWN DATA
|
//COOLDOWN DATA
|
||||||
COOLDOWN_DATE("date", "long"),
|
COOLDOWN_DATE("date", "long"),
|
||||||
USES("uses", "integer"),
|
//USES("uses", "integer"),
|
||||||
;
|
;
|
||||||
|
|
||||||
public final String name;
|
public final String name;
|
||||||
@@ -60,8 +60,8 @@ public class DatabaseCooldownsGlobal extends SQLite {
|
|||||||
rs = ps.executeQuery();
|
rs = ps.executeQuery();
|
||||||
if (rs.next()) {
|
if (rs.next()) {
|
||||||
Long time = rs.getLong(COLUMNS.COOLDOWN_DATE.name);
|
Long time = rs.getLong(COLUMNS.COOLDOWN_DATE.name);
|
||||||
int uses = rs.getInt(COLUMNS.USES.name);
|
//int uses = rs.getInt(COLUMNS.USES.name);
|
||||||
return new CooldownData(uuid, time, uses, null);
|
return new CooldownData(uuid, time, null);
|
||||||
}
|
}
|
||||||
} catch (SQLException ex) {
|
} catch (SQLException ex) {
|
||||||
BetterRTP.getInstance().getLogger().log(Level.SEVERE, Errors.sqlConnectionExecute(), ex);
|
BetterRTP.getInstance().getLogger().log(Level.SEVERE, Errors.sqlConnectionExecute(), ex);
|
||||||
@@ -76,13 +76,13 @@ public class DatabaseCooldownsGlobal extends SQLite {
|
|||||||
String pre = "INSERT OR REPLACE INTO ";
|
String pre = "INSERT OR REPLACE INTO ";
|
||||||
String sql = pre + tables.get(0) + " ("
|
String sql = pre + tables.get(0) + " ("
|
||||||
+ COLUMNS.UUID.name + ", "
|
+ COLUMNS.UUID.name + ", "
|
||||||
+ COLUMNS.COOLDOWN_DATE.name + ", "
|
+ COLUMNS.COOLDOWN_DATE.name + " "
|
||||||
+ COLUMNS.USES.name + " "
|
//+ COLUMNS.USES.name + " "
|
||||||
+ ") VALUES(?, ?, ?)";
|
+ ") VALUES(?, ?)";
|
||||||
List<Object> params = new ArrayList<Object>() {{
|
List<Object> params = new ArrayList<Object>() {{
|
||||||
add(data.getUuid().toString());
|
add(data.getUuid().toString());
|
||||||
add(data.getTime());
|
add(data.getTime());
|
||||||
add(data.getUses());
|
//add(data.getUses());
|
||||||
}};
|
}};
|
||||||
sqlUpdate(sql, params);
|
sqlUpdate(sql, params);
|
||||||
}
|
}
|
||||||
@@ -92,14 +92,14 @@ public class DatabaseCooldownsGlobal extends SQLite {
|
|||||||
String pre = "INSERT OR REPLACE INTO ";
|
String pre = "INSERT OR REPLACE INTO ";
|
||||||
String sql = pre + tables.get(0) + " ("
|
String sql = pre + tables.get(0) + " ("
|
||||||
+ COLUMNS.UUID.name + ", "
|
+ COLUMNS.UUID.name + ", "
|
||||||
+ COLUMNS.COOLDOWN_DATE.name + ", "
|
+ COLUMNS.COOLDOWN_DATE.name + " "
|
||||||
+ COLUMNS.USES.name + " "
|
//+ COLUMNS.USES.name + " "
|
||||||
+ ") VALUES(?, ?, ?)";
|
+ ") VALUES(?, ?)";
|
||||||
for (CooldownData data : cooldownData) {
|
for (CooldownData data : cooldownData) {
|
||||||
List<Object> param = new ArrayList<Object>() {{
|
List<Object> param = new ArrayList<Object>() {{
|
||||||
add(data.getUuid().toString());
|
add(data.getUuid().toString());
|
||||||
add(data.getTime());
|
add(data.getTime());
|
||||||
add(data.getUses());
|
//add(data.getUses());
|
||||||
}};
|
}};
|
||||||
sqlUpdate(sql, param);
|
sqlUpdate(sql, param);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ public class DatabaseCooldownsWorlds extends SQLite {
|
|||||||
UUID("uuid", "varchar(32) PRIMARY KEY"),
|
UUID("uuid", "varchar(32) PRIMARY KEY"),
|
||||||
//COOLDOWN DATA
|
//COOLDOWN DATA
|
||||||
COOLDOWN_DATE("date", "long"),
|
COOLDOWN_DATE("date", "long"),
|
||||||
USES("uses", "integer"),
|
//USES("uses", "integer"),
|
||||||
;
|
;
|
||||||
|
|
||||||
public final String name;
|
public final String name;
|
||||||
@@ -65,8 +65,8 @@ public class DatabaseCooldownsWorlds extends SQLite {
|
|||||||
rs = ps.executeQuery();
|
rs = ps.executeQuery();
|
||||||
if (rs.next()) {
|
if (rs.next()) {
|
||||||
Long time = rs.getLong(COLUMNS.COOLDOWN_DATE.name);
|
Long time = rs.getLong(COLUMNS.COOLDOWN_DATE.name);
|
||||||
int uses = rs.getInt(COLUMNS.USES.name);
|
//int uses = rs.getInt(COLUMNS.USES.name);
|
||||||
return new CooldownData(uuid, time, uses, world);
|
return new CooldownData(uuid, time, world);
|
||||||
}
|
}
|
||||||
} catch (SQLException ex) {
|
} catch (SQLException ex) {
|
||||||
BetterRTP.getInstance().getLogger().log(Level.SEVERE, Errors.sqlConnectionExecute(), ex);
|
BetterRTP.getInstance().getLogger().log(Level.SEVERE, Errors.sqlConnectionExecute(), ex);
|
||||||
@@ -81,13 +81,13 @@ public class DatabaseCooldownsWorlds extends SQLite {
|
|||||||
String pre = "INSERT OR REPLACE INTO ";
|
String pre = "INSERT OR REPLACE INTO ";
|
||||||
String sql = pre + data.getWorld().getName() + " ("
|
String sql = pre + data.getWorld().getName() + " ("
|
||||||
+ COLUMNS.UUID.name + ", "
|
+ COLUMNS.UUID.name + ", "
|
||||||
+ COLUMNS.COOLDOWN_DATE.name + ", "
|
+ COLUMNS.COOLDOWN_DATE.name + " "
|
||||||
+ COLUMNS.USES.name + " "
|
//+ COLUMNS.USES.name + " "
|
||||||
+ ") VALUES(?, ?, ?)";
|
+ ") VALUES(?, ?)";
|
||||||
List<Object> params = new ArrayList<Object>() {{
|
List<Object> params = new ArrayList<Object>() {{
|
||||||
add(data.getUuid().toString());
|
add(data.getUuid().toString());
|
||||||
add(data.getTime());
|
add(data.getTime());
|
||||||
add(data.getUses());
|
//add(data.getUses());
|
||||||
}};
|
}};
|
||||||
sqlUpdate(sql, params);
|
sqlUpdate(sql, params);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,112 @@
|
|||||||
|
package me.SuperRonanCraft.BetterRTP.references.database;
|
||||||
|
|
||||||
|
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
||||||
|
import me.SuperRonanCraft.BetterRTP.references.player.playerdata.PlayerData;
|
||||||
|
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownData;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.World;
|
||||||
|
|
||||||
|
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.UUID;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
public class DatabasePlayers extends SQLite {
|
||||||
|
|
||||||
|
public DatabasePlayers() {
|
||||||
|
super(DATABASE_TYPE.PLAYERS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> getTables() {
|
||||||
|
List<String> list = new ArrayList<>();
|
||||||
|
list.add("Players");
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum COLUMNS {
|
||||||
|
UUID("uuid", "varchar(32) PRIMARY KEY"),
|
||||||
|
//COOLDOWN DATA
|
||||||
|
COUNT("count", "long"),
|
||||||
|
//USES("uses", "integer"),
|
||||||
|
;
|
||||||
|
|
||||||
|
public final String name;
|
||||||
|
public final String type;
|
||||||
|
|
||||||
|
COLUMNS(String name, String type) {
|
||||||
|
this.name = name;
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean removePlayer(UUID uuid, World world) {
|
||||||
|
String sql = "DELETE FROM " + world.getName() + " WHERE "
|
||||||
|
+ COLUMNS.UUID.name + " = ?";
|
||||||
|
List<Object> params = new ArrayList<Object>() {{
|
||||||
|
add(uuid.toString());
|
||||||
|
}};
|
||||||
|
return sqlUpdate(sql, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getCount(UUID uuid) {
|
||||||
|
Connection conn = null;
|
||||||
|
PreparedStatement ps = null;
|
||||||
|
ResultSet rs = null;
|
||||||
|
try {
|
||||||
|
conn = getSQLConnection();
|
||||||
|
ps = conn.prepareStatement("SELECT * FROM " + tables.get(0) + " WHERE " + COLUMNS.UUID.name + " = ?");
|
||||||
|
ps.setString(1, uuid.toString());
|
||||||
|
|
||||||
|
rs = ps.executeQuery();
|
||||||
|
if (rs.next()) {
|
||||||
|
long time = rs.getLong(COLUMNS.COUNT.name);
|
||||||
|
//int uses = rs.getInt(COLUMNS.USES.name);
|
||||||
|
return Math.toIntExact(time);
|
||||||
|
}
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
BetterRTP.getInstance().getLogger().log(Level.SEVERE, Errors.sqlConnectionExecute(), ex);
|
||||||
|
} finally {
|
||||||
|
close(ps, rs, conn);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Set a player Cooldown
|
||||||
|
public void setCount(PlayerData data) {
|
||||||
|
String pre = "INSERT OR REPLACE INTO ";
|
||||||
|
String sql = pre + tables.get(0) + " ("
|
||||||
|
+ COLUMNS.UUID.name + ", "
|
||||||
|
+ COLUMNS.COUNT.name + " "
|
||||||
|
//+ COLUMNS.USES.name + " "
|
||||||
|
+ ") VALUES(?, ?)";
|
||||||
|
List<Object> params = new ArrayList<Object>() {{
|
||||||
|
add(data.player.getUniqueId().toString());
|
||||||
|
add(data.getRtpCount());
|
||||||
|
//add(data.getUses());
|
||||||
|
}};
|
||||||
|
sqlUpdate(sql, params);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Update multiple players cooldowns
|
||||||
|
/*public void setCooldown(List<CooldownData> cooldownData) {
|
||||||
|
String pre = "INSERT OR REPLACE INTO ";
|
||||||
|
String sql = pre + table + " ("
|
||||||
|
+ COLUMNS.UUID.name + ", "
|
||||||
|
+ COLUMNS.COOLDOWN_DATE.name + ", "
|
||||||
|
+ COLUMNS.USES.name + " "
|
||||||
|
+ ") VALUES(?, ?, ?)";
|
||||||
|
for (CooldownData data : cooldownData) {
|
||||||
|
List<Object> param = new ArrayList<Object>() {{
|
||||||
|
add(data.getUuid().toString());
|
||||||
|
add(data.getTime());
|
||||||
|
add(data.getUses());
|
||||||
|
}};
|
||||||
|
sqlUpdate(sql, param);
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
}
|
||||||
@@ -76,6 +76,7 @@ public abstract class SQLite {
|
|||||||
|
|
||||||
public void load() {
|
public void load() {
|
||||||
loaded = false;
|
loaded = false;
|
||||||
|
tables = getTables();
|
||||||
/*switch (type) {
|
/*switch (type) {
|
||||||
case COOLDOWN: table = "BetterRTP_Cooldown"; break;
|
case COOLDOWN: table = "BetterRTP_Cooldown"; break;
|
||||||
}
|
}
|
||||||
@@ -244,6 +245,7 @@ public abstract class SQLite {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public enum DATABASE_TYPE {
|
public enum DATABASE_TYPE {
|
||||||
|
PLAYERS,
|
||||||
COOLDOWN,
|
COOLDOWN,
|
||||||
COOLDOWN_GLOBAL, //Table to know last time in general player has a cooldown for
|
COOLDOWN_GLOBAL, //Table to know last time in general player has a cooldown for
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,8 +8,11 @@ import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownData;
|
|||||||
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownHandler;
|
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownHandler;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.RTPWorld;
|
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.RTPWorld;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldLocations;
|
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldLocations;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.World;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -20,25 +23,29 @@ import java.util.Random;
|
|||||||
public class HelperRTP {
|
public class HelperRTP {
|
||||||
|
|
||||||
//Teleporter and sender are the same
|
//Teleporter and sender are the same
|
||||||
public static void tp(Player player, String world, List<String> biomes, RTP_TYPE rtpType) {
|
public static void tp(Player player, World world, List<String> biomes, RTP_TYPE rtpType) {
|
||||||
tp(player, player, world, biomes, rtpType, false, false);
|
tp(player, player, world, biomes, rtpType, false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Teleported and Sender MAY be different
|
//Teleported and Sender MAY be different
|
||||||
public static void tp(Player player, CommandSender sendi, String world, List<String> biomes, RTP_TYPE rtpType) {
|
public static void tp(Player player, CommandSender sendi, World world, List<String> biomes, RTP_TYPE rtpType) {
|
||||||
tp(player, sendi, world, biomes, rtpType, false, false);
|
tp(player, sendi, world, biomes, rtpType, false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
public static void tp(Player player, CommandSender sendi, String world, List<String> biomes, RTP_TYPE rtpType,
|
public static void tp(Player player, CommandSender sendi, World world, List<String> biomes, RTP_TYPE rtpType,
|
||||||
boolean ignoreCooldown, boolean ignoreDelay) {
|
boolean ignoreCooldown, boolean ignoreDelay) {
|
||||||
tp(player, sendi, world, biomes, rtpType, ignoreCooldown, ignoreDelay, null);
|
tp(player, sendi, world, biomes, rtpType, ignoreCooldown, ignoreDelay, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void tp(Player player, CommandSender sendi, String world, List<String> biomes, RTP_TYPE rtpType,
|
public static void tp(@NotNull Player player, CommandSender sendi, @Nullable World world, List<String> biomes, RTP_TYPE rtpType,
|
||||||
boolean ignoreCooldown, boolean ignoreDelay, WorldLocations locations) {
|
boolean ignoreCooldown, boolean ignoreDelay, WorldLocations locations) {
|
||||||
if (isRTPing(player, sendi)) { //Is RTP'ing
|
if (isRTPing(player, sendi)) { //Is RTP'ing
|
||||||
if (ignoreCooldown || isCoolingDown(sendi, player)) { //Is Cooling down
|
if (world == null)
|
||||||
|
world = player.getWorld();
|
||||||
|
if (BetterRTP.getInstance().getRTP().overriden.containsKey(world.getName()))
|
||||||
|
world = Bukkit.getWorld(BetterRTP.getInstance().getRTP().overriden.get(world.getName()));
|
||||||
|
if (ignoreCooldown || isCoolingDown(sendi, player, world)) { //Is Cooling down
|
||||||
boolean delay = false;
|
boolean delay = false;
|
||||||
if (!ignoreDelay && sendi == player) //Forced?
|
if (!ignoreDelay && sendi == player) //Forced?
|
||||||
if (getPl().getSettings().isDelayEnabled() && getPl().getSettings().getDelayTime() > 0) //Delay enabled?
|
if (getPl().getSettings().isDelayEnabled() && getPl().getSettings().getDelayTime() > 0) //Delay enabled?
|
||||||
@@ -59,7 +66,7 @@ public class HelperRTP {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean isCoolingDown(CommandSender sendi, Player player) {
|
private static boolean isCoolingDown(CommandSender sendi, Player player, World world) {
|
||||||
if (cooldownApplies(sendi, player)) { //Bypassing/Forced?
|
if (cooldownApplies(sendi, player)) { //Bypassing/Forced?
|
||||||
CooldownHandler cooldownHandler = getPl().getCooldowns();
|
CooldownHandler cooldownHandler = getPl().getCooldowns();
|
||||||
if (!cooldownHandler.isLoaded() || !cooldownHandler.loadedPlayer(player)) { //Cooldowns have yet to download
|
if (!cooldownHandler.isLoaded() || !cooldownHandler.loadedPlayer(player)) { //Cooldowns have yet to download
|
||||||
@@ -67,9 +74,9 @@ public class HelperRTP {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
//Cooldown Data
|
//Cooldown Data
|
||||||
CooldownData cooldownData = getPl().getCooldowns().get(player);
|
CooldownData cooldownData = getPl().getCooldowns().get(player, world);
|
||||||
if (cooldownData != null) {
|
if (cooldownData != null) {
|
||||||
if (cooldownHandler.locked(cooldownData)) { //Infinite cooldown (locked)
|
if (cooldownHandler.locked(player)) { //Infinite cooldown (locked)
|
||||||
getPl().getText().getNoPermission(sendi);
|
getPl().getText().getNoPermission(sendi);
|
||||||
return false;
|
return false;
|
||||||
} else { //Normal cooldown
|
} else { //Normal cooldown
|
||||||
@@ -109,7 +116,7 @@ public class HelperRTP {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public static WorldLocations getRandomLocation(CommandSender sender, String world) {
|
public static WorldLocations getRandomLocation(CommandSender sender, World world) {
|
||||||
HashMap<String, RTPWorld> locations_permissible = CmdLocation.getLocations(sender, world);
|
HashMap<String, RTPWorld> locations_permissible = CmdLocation.getLocations(sender, world);
|
||||||
if (!locations_permissible.isEmpty()) {
|
if (!locations_permissible.isEmpty()) {
|
||||||
List<String> valuesList = new ArrayList<>(locations_permissible.keySet());
|
List<String> valuesList = new ArrayList<>(locations_permissible.keySet());
|
||||||
|
|||||||
@@ -18,8 +18,9 @@ public class PlayerData {
|
|||||||
@Getter final PlayerData_Menus menu = new PlayerData_Menus();
|
@Getter final PlayerData_Menus menu = new PlayerData_Menus();
|
||||||
//Player Data
|
//Player Data
|
||||||
@Getter final HashMap<World, CooldownData> cooldowns = new HashMap<>();
|
@Getter final HashMap<World, CooldownData> cooldowns = new HashMap<>();
|
||||||
@Getter @Setter CooldownData globalCooldown;
|
//@Getter @Setter CooldownData globalCooldown;
|
||||||
@Getter @Setter boolean rtping;
|
@Getter @Setter boolean rtping;
|
||||||
|
@Getter @Setter int rtpCount;
|
||||||
|
|
||||||
PlayerData(Player player) {
|
PlayerData(Player player) {
|
||||||
this.player = player;
|
this.player = player;
|
||||||
|
|||||||
@@ -7,15 +7,14 @@ import org.bukkit.World;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class CooldownData {
|
public class CooldownData {
|
||||||
|
|
||||||
@Getter private final UUID uuid;
|
@Getter private final UUID uuid;
|
||||||
@Getter @Setter private Long time;
|
@Getter @Setter private Long time;
|
||||||
@Getter @Setter int uses;
|
|
||||||
@Getter private final World world;
|
@Getter private final World world;
|
||||||
|
|
||||||
public CooldownData(UUID uuid, Long time, int uses, World world) {
|
public CooldownData(UUID uuid, Long time, World world) {
|
||||||
this.uuid = uuid;
|
this.uuid = uuid;
|
||||||
this.time = time;
|
this.time = time;
|
||||||
this.uses = uses;
|
|
||||||
this.world = world;
|
this.world = world;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package me.SuperRonanCraft.BetterRTP.references.rtpinfo;
|
|||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.database.DatabaseCooldownsWorlds;
|
import me.SuperRonanCraft.BetterRTP.references.database.DatabaseCooldownsWorlds;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.database.DatabaseCooldownsGlobal;
|
import me.SuperRonanCraft.BetterRTP.references.database.DatabaseCooldownsGlobal;
|
||||||
|
import me.SuperRonanCraft.BetterRTP.references.database.DatabasePlayers;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
|
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
|
||||||
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.player.HelperPlayer;
|
import me.SuperRonanCraft.BetterRTP.references.player.HelperPlayer;
|
||||||
@@ -13,6 +14,7 @@ import org.bukkit.entity.Player;
|
|||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
|
||||||
@@ -24,7 +26,8 @@ public class CooldownHandler {
|
|||||||
lockedAfter; //Rtp's before being locked
|
lockedAfter; //Rtp's before being locked
|
||||||
private final List<Player> downloading = new ArrayList<>();
|
private final List<Player> downloading = new ArrayList<>();
|
||||||
private final DatabaseCooldownsWorlds cooldowns = new DatabaseCooldownsWorlds();
|
private final DatabaseCooldownsWorlds cooldowns = new DatabaseCooldownsWorlds();
|
||||||
private final DatabaseCooldownsGlobal globalCooldown = new DatabaseCooldownsGlobal();
|
private final DatabasePlayers players = new DatabasePlayers();
|
||||||
|
//private final DatabaseCooldownsGlobal globalCooldown = new DatabaseCooldownsGlobal();
|
||||||
|
|
||||||
public void load() {
|
public void load() {
|
||||||
//configfile = new File(BetterRTP.getInstance().getDataFolder(), "data/cooldowns.yml");
|
//configfile = new File(BetterRTP.getInstance().getDataFolder(), "data/cooldowns.yml");
|
||||||
@@ -37,7 +40,8 @@ public class CooldownHandler {
|
|||||||
lockedAfter = config.getInt("Settings.Cooldown.LockAfter");
|
lockedAfter = config.getInt("Settings.Cooldown.LockAfter");
|
||||||
}
|
}
|
||||||
Bukkit.getScheduler().runTaskAsynchronously(BetterRTP.getInstance(), () -> {
|
Bukkit.getScheduler().runTaskAsynchronously(BetterRTP.getInstance(), () -> {
|
||||||
globalCooldown.load();
|
//globalCooldown.load();
|
||||||
|
players.load();
|
||||||
cooldowns.load();
|
cooldowns.load();
|
||||||
checkLater();
|
checkLater();
|
||||||
});
|
});
|
||||||
@@ -45,11 +49,15 @@ public class CooldownHandler {
|
|||||||
|
|
||||||
private void checkLater() {
|
private void checkLater() {
|
||||||
Bukkit.getScheduler().runTaskLaterAsynchronously(BetterRTP.getInstance(), () -> {
|
Bukkit.getScheduler().runTaskLaterAsynchronously(BetterRTP.getInstance(), () -> {
|
||||||
AtomicBoolean loaded = new AtomicBoolean(true);
|
//AtomicBoolean loaded = new AtomicBoolean(true);
|
||||||
if (!globalCooldown.isLoaded()) {
|
//if (!globalCooldown.isLoaded()) {
|
||||||
checkLater();
|
// checkLater();
|
||||||
return;
|
// return;
|
||||||
} else if (!cooldowns.isLoaded()) {
|
//} else
|
||||||
|
if (!cooldowns.isLoaded()) {
|
||||||
|
checkLater();
|
||||||
|
return;
|
||||||
|
} else if (!players.isLoaded()) {
|
||||||
checkLater();
|
checkLater();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -62,14 +70,15 @@ public class CooldownHandler {
|
|||||||
|
|
||||||
public void add(Player player, World world) {
|
public void add(Player player, World world) {
|
||||||
if (!enabled) return;
|
if (!enabled) return;
|
||||||
CooldownData data = getData(player).getCooldown();
|
PlayerData playerData = getData(player);
|
||||||
if (data == null)
|
HashMap<World, CooldownData> cooldowns = playerData.getCooldowns();
|
||||||
data = new CooldownData(player.getUniqueId(), 0L, 0, world);
|
CooldownData data = cooldowns.getOrDefault(world, new CooldownData(player.getUniqueId(), 0L, world));
|
||||||
if (lockedAfter > 0)
|
if (lockedAfter > 0)
|
||||||
data.setUses(data.getUses() + 1);
|
playerData.setRtpCount(playerData.getRtpCount() + 1);
|
||||||
data.setTime(System.currentTimeMillis());
|
data.setTime(System.currentTimeMillis());
|
||||||
getData(player).setCooldown(data);
|
cooldowns.put(world, data);
|
||||||
savePlayer(data, false);
|
//getData(player).setCooldowns(data);
|
||||||
|
savePlayer(player, data, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean exists(Player p) {
|
public boolean exists(Player p) {
|
||||||
@@ -78,64 +87,65 @@ public class CooldownHandler {
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public CooldownData get(Player p, World world) {
|
public CooldownData get(Player p, World world) {
|
||||||
List<CooldownData> data = getData(p).getCooldowns();
|
HashMap<World, CooldownData> data = getData(p).getCooldowns();
|
||||||
if (data != null)
|
if (data != null)
|
||||||
for (CooldownData cd : data)
|
return data.getOrDefault(world, null);
|
||||||
if (cd.getWorld() == world)
|
|
||||||
return cd;
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
//@Nullable
|
||||||
public CooldownData getGlobal(Player p) {
|
//public CooldownData getGlobal(Player p) {
|
||||||
return globalCooldown.getCooldown(p.getUniqueId());
|
// return globalCooldown.getCooldown(p.getUniqueId());
|
||||||
}
|
//}
|
||||||
|
|
||||||
public long timeLeft(CooldownData data) {
|
public long timeLeft(CooldownData data) {
|
||||||
long cooldown = data.getTime();
|
long cooldown = data.getTime();
|
||||||
return ((cooldown / 1000) + timer) - (System.currentTimeMillis() / 1000);
|
return ((cooldown / 1000) + timer) - (System.currentTimeMillis() / 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean locked(CooldownData data) {
|
public boolean locked(Player player) {
|
||||||
return lockedAfter > 0 && data.uses >= lockedAfter;
|
return lockedAfter > 0 && getData(player).getRtpCount() >= lockedAfter;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeCooldown(Player player) {
|
public void removeCooldown(Player player, World world) {
|
||||||
if (!enabled) return;
|
if (!enabled) return;
|
||||||
CooldownData data = getData(player).getCooldown();
|
PlayerData playerData = getData(player);
|
||||||
if (data != null)
|
CooldownData cooldownData = playerData.getCooldowns().getOrDefault(world, null);
|
||||||
|
if (cooldownData != null)
|
||||||
if (lockedAfter > 0) {
|
if (lockedAfter > 0) {
|
||||||
//uses.put(id, uses.getOrDefault(id, 1) - 1);
|
//uses.put(id, uses.getOrDefault(id, 1) - 1);
|
||||||
if (data.getUses() <= 0) { //Remove from file as well
|
if (playerData.getRtpCount() <= 0) { //Remove from file as well
|
||||||
savePlayer(data, true);
|
savePlayer(player, cooldownData, true);
|
||||||
getData(player).setCooldown(null);
|
getData(player).getCooldowns().put(world, null);
|
||||||
} else { //Keep the player cached
|
} else { //Keep the player cached
|
||||||
savePlayer(data, false);
|
savePlayer(player, cooldownData, false);
|
||||||
}
|
}
|
||||||
} else { //Remove completely
|
} else { //Remove completely
|
||||||
getData(player).setCooldown(null);
|
getData(player).getCooldowns().remove(world);
|
||||||
savePlayer(data, true);
|
savePlayer(player, cooldownData, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void savePlayer(CooldownData data, boolean remove) {
|
private void savePlayer(Player player, CooldownData data, boolean remove) {
|
||||||
Bukkit.getScheduler().runTaskAsynchronously(BetterRTP.getInstance(), () -> {
|
Bukkit.getScheduler().runTaskAsynchronously(BetterRTP.getInstance(), () -> {
|
||||||
if (!remove) {
|
if (!remove) {
|
||||||
getDatabase(data.getWorld()).setCooldown(data);
|
getDatabaseWorlds().setCooldown(data);
|
||||||
} else {
|
} else {
|
||||||
getDatabase(data.getWorld()).removePlayer(data.getUuid(), data.getWorld());
|
getDatabaseWorlds().removePlayer(data.getUuid(), data.getWorld());
|
||||||
}
|
}
|
||||||
|
players.setCount(getData(player));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void loadPlayer(Player player) {
|
public void loadPlayer(Player player) {
|
||||||
if (!isEnabled()) return;
|
if (!isEnabled()) return;
|
||||||
downloading.add(player);
|
downloading.add(player);
|
||||||
List<CooldownData> cooldowns = new ArrayList<>();
|
|
||||||
for (World world : Bukkit.getWorlds()) {
|
for (World world : Bukkit.getWorlds()) {
|
||||||
|
PlayerData playerData = getData(player);
|
||||||
CooldownData cooldown = getDatabaseWorlds().getCooldown(player.getUniqueId(), world);
|
CooldownData cooldown = getDatabaseWorlds().getCooldown(player.getUniqueId(), world);
|
||||||
if (cooldown != null)
|
if (cooldown != null)
|
||||||
getData(player).getCooldowns().add(cooldown);
|
playerData.getCooldowns().put(world, cooldown);
|
||||||
|
playerData.setRtpCount(players.getCount(player.getUniqueId()));
|
||||||
}
|
}
|
||||||
downloading.remove(player);
|
downloading.remove(player);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user