mirror of
https://github.com/RonanPlugins/BetterRTP.git
synced 2025-08-18 01:25:45 +00:00
Cooldowns per world save + Player rtp usage saving
This commit is contained in:
parent
098925d61a
commit
ed4b0ea492
@ -65,7 +65,7 @@ public class MagicStickEvents implements Listener {
|
||||
if (listener.p == e.getPlayer())
|
||||
return;
|
||||
//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)
|
||||
teleportingPlayers.add(new PlayerListener(e.getPlayer()));
|
||||
}
|
||||
|
@ -3,9 +3,12 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.parties;
|
||||
import io.papermc.lib.PaperLib;
|
||||
import lombok.Getter;
|
||||
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.rtpinfo.CooldownData;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||
|
||||
@ -79,7 +82,7 @@ public class PartyData {
|
||||
}
|
||||
|
||||
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) -> {
|
||||
if (!p.equals(getLeader())) {
|
||||
Location loc = e.getLocation();
|
||||
@ -94,8 +97,9 @@ public class PartyData {
|
||||
BetterRTP.getInstance().getRTP().getTeleport().afterTeleport(p, loc, 0, 0, e.getOldLocation(), e.getType());
|
||||
});
|
||||
//Set cooldowns
|
||||
if (cooldownData != null)
|
||||
BetterRTP.getInstance().getPlayerDataManager().getData(p).setCooldown(new CooldownData(p.getUniqueId(), cooldownData.getTime(), cooldownData.getUses()));
|
||||
if (!PermissionNode.BYPASS_COOLDOWN.check(p))
|
||||
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 org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
@ -58,8 +59,8 @@ public class PortalsEvents implements Listener {
|
||||
if (ploc.getBlockY() <= Math.max(loc1.getBlockY(), loc2.getBlockY())
|
||||
&& ploc.getBlockY() >= Math.min(loc1.getBlockY(), loc2.getBlockY())) {
|
||||
playerPortaling.put(e.getPlayer(), portal);
|
||||
HelperRTP.tp(e.getPlayer(), e.getPlayer(),
|
||||
portal.getWorld(), null, RTP_TYPE.ADDON_PORTAL, ignoreCooldown, ignoreDelay);
|
||||
World world = portal.getWorld() != null ? Bukkit.getWorld(portal.getWorld()) : null;
|
||||
HelperRTP.tp(e.getPlayer(), e.getPlayer(), world, null, RTP_TYPE.ADDON_PORTAL, ignoreCooldown, ignoreDelay);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package me.SuperRonanCraft.BetterRTP.player.commands;
|
||||
|
||||
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
||||
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.helpers.HelperRTP;
|
||||
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownData;
|
||||
@ -41,7 +42,7 @@ public class Commands {
|
||||
}
|
||||
|
||||
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) {
|
||||
for (RTPCommand cmd : commands) {
|
||||
if (cmd.getName().equalsIgnoreCase(args[0])) {
|
||||
|
@ -1,6 +1,5 @@
|
||||
package me.SuperRonanCraft.BetterRTP.player.commands;
|
||||
|
||||
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
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()) + "`");
|
||||
else {
|
||||
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;
|
||||
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));
|
||||
|
@ -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.WorldLocations;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@ -83,12 +84,12 @@ public class CmdLocation implements RTPCommand, RTPCommandHelpable {
|
||||
}
|
||||
|
||||
//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()) {
|
||||
HashMap<String, RTPWorld> locations = new HashMap<>();
|
||||
for (Map.Entry<String, RTPWorld> location : getLocations().entrySet())
|
||||
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());
|
||||
}
|
||||
return locations;
|
||||
|
@ -26,7 +26,7 @@ public class CmdPlayer implements RTPCommand, RTPCommandHelpable {
|
||||
public void execute(CommandSender sendi, String label, String[] args) {
|
||||
if (args.length == 2)
|
||||
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)
|
||||
BetterRTP.getInstance().getText().getNotOnline(sendi, args[1]);
|
||||
else
|
||||
@ -35,7 +35,7 @@ public class CmdPlayer implements RTPCommand, RTPCommandHelpable {
|
||||
if (Bukkit.getPlayer(args[1]) != null && Bukkit.getPlayer(args[1]).isOnline()) {
|
||||
World world = Bukkit.getWorld(args[2]);
|
||||
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
|
||||
BetterRTP.getInstance().getText().getNotExist(sendi, args[2]);
|
||||
} else if (Bukkit.getPlayer(args[1]) != null)
|
||||
|
@ -14,7 +14,7 @@ import java.util.List;
|
||||
public class CmdTeleport implements RTPCommand {
|
||||
|
||||
//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)
|
||||
HelperRTP.tp((Player) sendi, sendi, world, biomes, RTP_TYPE.COMMAND);
|
||||
else
|
||||
|
@ -22,9 +22,13 @@ public class CmdWorld implements RTPCommand, RTPCommandHelpable {
|
||||
|
||||
//rtp world <world> <biome1, biome2...>
|
||||
public void execute(CommandSender sendi, String label, String[] args) {
|
||||
if (args.length >= 2)
|
||||
CmdTeleport.teleport(sendi, label, args[1], HelperRTP_Info.getBiomes(args, 2, sendi));
|
||||
else
|
||||
if (args.length >= 2) {
|
||||
World world = Bukkit.getWorld(args[1]);
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -31,7 +31,7 @@ public class Join {
|
||||
//RTP on first join
|
||||
private void rtpOnFirstJoin(Player p) {
|
||||
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() {
|
||||
|
@ -66,7 +66,7 @@ public class RTP {
|
||||
}
|
||||
|
||||
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
|
||||
if (setup_info.getLocation() == null && BetterRTP.getInstance().getSettings().isUseLocationIfAvailable()) {
|
||||
@ -111,7 +111,7 @@ public class RTP {
|
||||
pWorld.config = group;
|
||||
}
|
||||
//Custom World
|
||||
else if (customWorlds.containsKey(setup_info.getWorld())) {
|
||||
else if (customWorlds.containsKey(setup_info.getWorld().getName())) {
|
||||
RTPWorld cWorld = customWorlds.get(pWorld.getWorld().getName());
|
||||
pWorld.setup(null, cWorld, setup_info.getBiomes(), setup_info.isPersonalized());
|
||||
}
|
||||
@ -121,11 +121,11 @@ public class RTP {
|
||||
}
|
||||
//World type
|
||||
WORLD_TYPE world_type;
|
||||
if (this.world_type.containsKey(setup_info.getWorld()))
|
||||
world_type = this.world_type.get(setup_info.getWorld());
|
||||
if (this.world_type.containsKey(setup_info.getWorld().getName()))
|
||||
world_type = this.world_type.get(setup_info.getWorld().getName());
|
||||
else {
|
||||
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. " +
|
||||
"Please add/fix this in the config.yml file! " +
|
||||
"This world will be treated as an overworld!");
|
||||
@ -141,44 +141,49 @@ public class RTP {
|
||||
return;
|
||||
}
|
||||
|
||||
String world_name = setup_info.getWorld();
|
||||
World world_name = setup_info.getWorld();
|
||||
Player p = setup_info.getPlayer();
|
||||
CommandSender sendi = setup_info.getSender();
|
||||
|
||||
// Locations
|
||||
if (setup_info.getLocation() != null) {
|
||||
WorldLocations location = setup_info.getLocation();
|
||||
world_name = location.getWorld().getName();
|
||||
world_name = location.getWorld();
|
||||
setup_info.setWorld(world_name);
|
||||
setup_info.setBiomes(location.getBiomes());
|
||||
}
|
||||
|
||||
// Check overrides
|
||||
if (world_name == null) {
|
||||
world_name = p.getWorld().getName();
|
||||
} else { // Check if nulled or world doesnt exist
|
||||
World _world = Bukkit.getWorld(world_name);
|
||||
if (_world == null) { //Check if world has spaces instead of underscores
|
||||
if (world_name == null && p != null) {
|
||||
world_name = p.getWorld();
|
||||
}// else { // Check if nulled or world doesnt exist
|
||||
//World _world = world_name;//Bukkit.getWorld(world_name);
|
||||
/*if (_world == null) { //Check if world has spaces instead of underscores
|
||||
_world = Bukkit.getWorld(world_name.replace("_", " "));
|
||||
world_name = world_name.replace("_", "");
|
||||
}
|
||||
if (_world == null) {
|
||||
getPl().getText().getNotExist(sendi, world_name);
|
||||
return;
|
||||
}
|
||||
}*/
|
||||
//}
|
||||
//No World was sent???
|
||||
if (world_name == null) {
|
||||
BetterRTP.getInstance().getText().error(sendi);
|
||||
return;
|
||||
}
|
||||
if (overriden.containsKey(world_name)) {
|
||||
world_name = overriden.get(world_name);
|
||||
if (overriden.containsKey(world_name.getName())) {
|
||||
world_name = Bukkit.getWorld(overriden.get(world_name.getName()));
|
||||
setup_info.setWorld(world_name);
|
||||
}
|
||||
// Not forced and has 'betterrtp.world.<world>'
|
||||
if (sendi == p && !getPl().getPerms().getAWorld(sendi, world_name)) {
|
||||
getPl().getText().getNoPermissionWorld(p, world_name);
|
||||
if (sendi == p && !getPl().getPerms().getAWorld(sendi, world_name.getName())) {
|
||||
getPl().getText().getNoPermissionWorld(p, world_name.getName());
|
||||
return;
|
||||
}
|
||||
// Check disabled worlds
|
||||
if (disabledWorlds.contains(world_name)) {
|
||||
getPl().getText().getDisabledWorld(sendi, world_name);
|
||||
if (disabledWorlds.contains(world_name.getName())) {
|
||||
getPl().getText().getDisabledWorld(sendi, world_name.getName());
|
||||
return;
|
||||
}
|
||||
WorldPlayer pWorld = getPlayerWorld(setup_info);
|
||||
@ -193,7 +198,7 @@ public class RTP {
|
||||
Player p = pWorld.getPlayer();
|
||||
//p.sendMessage("Cooling down: " + 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
|
||||
//Setup player rtp methods
|
||||
RTPPlayer rtpPlayer = new RTPPlayer(p, this, pWorld, type);
|
||||
|
@ -60,7 +60,7 @@ class RTPDelay implements Listener {
|
||||
HandlerList.unregisterAll(this);
|
||||
getPl().getRTP().getTeleport().cancelledTeleport(rtp.getPlayer());
|
||||
//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);
|
||||
Bukkit.getServer().getPluginManager().callEvent(new RTP_CancelledEvent(rtp.getPlayer()));
|
||||
}
|
||||
|
@ -81,7 +81,7 @@ public class RTPPlayer {
|
||||
getPl().getText().getFailedNotSafe(sendi, settings.maxAttempts);
|
||||
else
|
||||
getPl().getText().getOtherNotSafe(sendi, settings.maxAttempts, p.getName());*/
|
||||
getPl().getCooldowns().removeCooldown(p);
|
||||
getPl().getCooldowns().removeCooldown(p, pWorld.getWorld());
|
||||
//getPl().getEco().unCharge(p, pWorld);
|
||||
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.rtpinfo.worlds.RTPWorld;
|
||||
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldLocations;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@ -19,7 +20,7 @@ import java.util.Random;
|
||||
|
||||
public class RTPSetupInformation {
|
||||
//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 @Nullable private final Player player;
|
||||
@Getter private final boolean personalized;
|
||||
@ -29,14 +30,14 @@ public class RTPSetupInformation {
|
||||
@Getter private final boolean delay;
|
||||
@Getter @Nullable private final RTP_TYPE rtp_type;
|
||||
|
||||
public RTPSetupInformation(@Nullable String world,
|
||||
public RTPSetupInformation(@Nullable World world,
|
||||
@NonNull CommandSender sender,
|
||||
@Nullable Player player,
|
||||
boolean personalized) {
|
||||
this(world, sender, player, personalized, null, false, null, null);
|
||||
}
|
||||
|
||||
public RTPSetupInformation(@Nullable String world,
|
||||
public RTPSetupInformation(@Nullable World world,
|
||||
@NonNull CommandSender sender,
|
||||
@Nullable Player player,
|
||||
boolean personalized,
|
||||
@ -47,7 +48,7 @@ public class RTPSetupInformation {
|
||||
this(world, sender, player, personalized, biomes, delay, rtp_type, location, true);
|
||||
}
|
||||
|
||||
public RTPSetupInformation(@Nullable String world,
|
||||
public RTPSetupInformation(@Nullable World world,
|
||||
@NonNull CommandSender sender,
|
||||
@Nullable Player player,
|
||||
boolean personalized,
|
||||
@ -66,9 +67,9 @@ public class RTPSetupInformation {
|
||||
this.location = location;
|
||||
if (this.world == null) {
|
||||
if (player != null)
|
||||
this.world = player.getWorld().getName();
|
||||
this.world = player.getWorld();
|
||||
else if (this.location != null)
|
||||
this.world = this.location.getWorld().getName();
|
||||
this.world = this.location.getWorld();
|
||||
}
|
||||
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"),
|
||||
//COOLDOWN DATA
|
||||
COOLDOWN_DATE("date", "long"),
|
||||
USES("uses", "integer"),
|
||||
//USES("uses", "integer"),
|
||||
;
|
||||
|
||||
public final String name;
|
||||
@ -60,8 +60,8 @@ public class DatabaseCooldownsGlobal extends SQLite {
|
||||
rs = ps.executeQuery();
|
||||
if (rs.next()) {
|
||||
Long time = rs.getLong(COLUMNS.COOLDOWN_DATE.name);
|
||||
int uses = rs.getInt(COLUMNS.USES.name);
|
||||
return new CooldownData(uuid, time, uses, null);
|
||||
//int uses = rs.getInt(COLUMNS.USES.name);
|
||||
return new CooldownData(uuid, time, null);
|
||||
}
|
||||
} catch (SQLException 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 sql = pre + tables.get(0) + " ("
|
||||
+ COLUMNS.UUID.name + ", "
|
||||
+ COLUMNS.COOLDOWN_DATE.name + ", "
|
||||
+ COLUMNS.USES.name + " "
|
||||
+ ") VALUES(?, ?, ?)";
|
||||
+ COLUMNS.COOLDOWN_DATE.name + " "
|
||||
//+ COLUMNS.USES.name + " "
|
||||
+ ") VALUES(?, ?)";
|
||||
List<Object> params = new ArrayList<Object>() {{
|
||||
add(data.getUuid().toString());
|
||||
add(data.getTime());
|
||||
add(data.getUses());
|
||||
//add(data.getUses());
|
||||
}};
|
||||
sqlUpdate(sql, params);
|
||||
}
|
||||
@ -92,14 +92,14 @@ public class DatabaseCooldownsGlobal extends SQLite {
|
||||
String pre = "INSERT OR REPLACE INTO ";
|
||||
String sql = pre + tables.get(0) + " ("
|
||||
+ COLUMNS.UUID.name + ", "
|
||||
+ COLUMNS.COOLDOWN_DATE.name + ", "
|
||||
+ COLUMNS.USES.name + " "
|
||||
+ ") VALUES(?, ?, ?)";
|
||||
+ 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());
|
||||
//add(data.getUses());
|
||||
}};
|
||||
sqlUpdate(sql, param);
|
||||
}
|
||||
|
@ -32,7 +32,7 @@ public class DatabaseCooldownsWorlds extends SQLite {
|
||||
UUID("uuid", "varchar(32) PRIMARY KEY"),
|
||||
//COOLDOWN DATA
|
||||
COOLDOWN_DATE("date", "long"),
|
||||
USES("uses", "integer"),
|
||||
//USES("uses", "integer"),
|
||||
;
|
||||
|
||||
public final String name;
|
||||
@ -65,8 +65,8 @@ public class DatabaseCooldownsWorlds extends SQLite {
|
||||
rs = ps.executeQuery();
|
||||
if (rs.next()) {
|
||||
Long time = rs.getLong(COLUMNS.COOLDOWN_DATE.name);
|
||||
int uses = rs.getInt(COLUMNS.USES.name);
|
||||
return new CooldownData(uuid, time, uses, world);
|
||||
//int uses = rs.getInt(COLUMNS.USES.name);
|
||||
return new CooldownData(uuid, time, world);
|
||||
}
|
||||
} catch (SQLException 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 sql = pre + data.getWorld().getName() + " ("
|
||||
+ COLUMNS.UUID.name + ", "
|
||||
+ COLUMNS.COOLDOWN_DATE.name + ", "
|
||||
+ COLUMNS.USES.name + " "
|
||||
+ ") VALUES(?, ?, ?)";
|
||||
+ COLUMNS.COOLDOWN_DATE.name + " "
|
||||
//+ COLUMNS.USES.name + " "
|
||||
+ ") VALUES(?, ?)";
|
||||
List<Object> params = new ArrayList<Object>() {{
|
||||
add(data.getUuid().toString());
|
||||
add(data.getTime());
|
||||
add(data.getUses());
|
||||
//add(data.getUses());
|
||||
}};
|
||||
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() {
|
||||
loaded = false;
|
||||
tables = getTables();
|
||||
/*switch (type) {
|
||||
case COOLDOWN: table = "BetterRTP_Cooldown"; break;
|
||||
}
|
||||
@ -244,6 +245,7 @@ public abstract class SQLite {
|
||||
}
|
||||
|
||||
public enum DATABASE_TYPE {
|
||||
PLAYERS,
|
||||
COOLDOWN,
|
||||
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.worlds.RTPWorld;
|
||||
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldLocations;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@ -20,25 +23,29 @@ import java.util.Random;
|
||||
public class HelperRTP {
|
||||
|
||||
//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);
|
||||
}
|
||||
|
||||
//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);
|
||||
}
|
||||
|
||||
//
|
||||
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) {
|
||||
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,
|
||||
boolean ignoreCooldown, boolean ignoreDelay, WorldLocations locations) {
|
||||
public static void tp(@NotNull Player player, CommandSender sendi, @Nullable World world, List<String> biomes, RTP_TYPE rtpType,
|
||||
boolean ignoreCooldown, boolean ignoreDelay, WorldLocations locations) {
|
||||
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;
|
||||
if (!ignoreDelay && sendi == player) //Forced?
|
||||
if (getPl().getSettings().isDelayEnabled() && getPl().getSettings().getDelayTime() > 0) //Delay enabled?
|
||||
@ -59,7 +66,7 @@ public class HelperRTP {
|
||||
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?
|
||||
CooldownHandler cooldownHandler = getPl().getCooldowns();
|
||||
if (!cooldownHandler.isLoaded() || !cooldownHandler.loadedPlayer(player)) { //Cooldowns have yet to download
|
||||
@ -67,9 +74,9 @@ public class HelperRTP {
|
||||
return false;
|
||||
}
|
||||
//Cooldown Data
|
||||
CooldownData cooldownData = getPl().getCooldowns().get(player);
|
||||
CooldownData cooldownData = getPl().getCooldowns().get(player, world);
|
||||
if (cooldownData != null) {
|
||||
if (cooldownHandler.locked(cooldownData)) { //Infinite cooldown (locked)
|
||||
if (cooldownHandler.locked(player)) { //Infinite cooldown (locked)
|
||||
getPl().getText().getNoPermission(sendi);
|
||||
return false;
|
||||
} else { //Normal cooldown
|
||||
@ -109,7 +116,7 @@ public class HelperRTP {
|
||||
}
|
||||
|
||||
@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);
|
||||
if (!locations_permissible.isEmpty()) {
|
||||
List<String> valuesList = new ArrayList<>(locations_permissible.keySet());
|
||||
|
@ -18,8 +18,9 @@ public class PlayerData {
|
||||
@Getter final PlayerData_Menus menu = new PlayerData_Menus();
|
||||
//Player Data
|
||||
@Getter final HashMap<World, CooldownData> cooldowns = new HashMap<>();
|
||||
@Getter @Setter CooldownData globalCooldown;
|
||||
//@Getter @Setter CooldownData globalCooldown;
|
||||
@Getter @Setter boolean rtping;
|
||||
@Getter @Setter int rtpCount;
|
||||
|
||||
PlayerData(Player player) {
|
||||
this.player = player;
|
||||
|
@ -7,15 +7,14 @@ import org.bukkit.World;
|
||||
import java.util.UUID;
|
||||
|
||||
public class CooldownData {
|
||||
|
||||
@Getter private final UUID uuid;
|
||||
@Getter @Setter private Long time;
|
||||
@Getter @Setter int uses;
|
||||
@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.time = time;
|
||||
this.uses = uses;
|
||||
this.world = world;
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package me.SuperRonanCraft.BetterRTP.references.rtpinfo;
|
||||
import lombok.Getter;
|
||||
import me.SuperRonanCraft.BetterRTP.references.database.DatabaseCooldownsWorlds;
|
||||
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.BetterRTP;
|
||||
import me.SuperRonanCraft.BetterRTP.references.player.HelperPlayer;
|
||||
@ -13,6 +14,7 @@ import org.bukkit.entity.Player;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
@ -24,7 +26,8 @@ public class CooldownHandler {
|
||||
lockedAfter; //Rtp's before being locked
|
||||
private final List<Player> downloading = new ArrayList<>();
|
||||
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() {
|
||||
//configfile = new File(BetterRTP.getInstance().getDataFolder(), "data/cooldowns.yml");
|
||||
@ -37,7 +40,8 @@ public class CooldownHandler {
|
||||
lockedAfter = config.getInt("Settings.Cooldown.LockAfter");
|
||||
}
|
||||
Bukkit.getScheduler().runTaskAsynchronously(BetterRTP.getInstance(), () -> {
|
||||
globalCooldown.load();
|
||||
//globalCooldown.load();
|
||||
players.load();
|
||||
cooldowns.load();
|
||||
checkLater();
|
||||
});
|
||||
@ -45,11 +49,15 @@ public class CooldownHandler {
|
||||
|
||||
private void checkLater() {
|
||||
Bukkit.getScheduler().runTaskLaterAsynchronously(BetterRTP.getInstance(), () -> {
|
||||
AtomicBoolean loaded = new AtomicBoolean(true);
|
||||
if (!globalCooldown.isLoaded()) {
|
||||
checkLater();
|
||||
return;
|
||||
} else if (!cooldowns.isLoaded()) {
|
||||
//AtomicBoolean loaded = new AtomicBoolean(true);
|
||||
//if (!globalCooldown.isLoaded()) {
|
||||
// checkLater();
|
||||
// return;
|
||||
//} else
|
||||
if (!cooldowns.isLoaded()) {
|
||||
checkLater();
|
||||
return;
|
||||
} else if (!players.isLoaded()) {
|
||||
checkLater();
|
||||
return;
|
||||
}
|
||||
@ -62,14 +70,15 @@ public class CooldownHandler {
|
||||
|
||||
public void add(Player player, World world) {
|
||||
if (!enabled) return;
|
||||
CooldownData data = getData(player).getCooldown();
|
||||
if (data == null)
|
||||
data = new CooldownData(player.getUniqueId(), 0L, 0, world);
|
||||
PlayerData playerData = getData(player);
|
||||
HashMap<World, CooldownData> cooldowns = playerData.getCooldowns();
|
||||
CooldownData data = cooldowns.getOrDefault(world, new CooldownData(player.getUniqueId(), 0L, world));
|
||||
if (lockedAfter > 0)
|
||||
data.setUses(data.getUses() + 1);
|
||||
playerData.setRtpCount(playerData.getRtpCount() + 1);
|
||||
data.setTime(System.currentTimeMillis());
|
||||
getData(player).setCooldown(data);
|
||||
savePlayer(data, false);
|
||||
cooldowns.put(world, data);
|
||||
//getData(player).setCooldowns(data);
|
||||
savePlayer(player, data, false);
|
||||
}
|
||||
|
||||
public boolean exists(Player p) {
|
||||
@ -78,64 +87,65 @@ public class CooldownHandler {
|
||||
|
||||
@Nullable
|
||||
public CooldownData get(Player p, World world) {
|
||||
List<CooldownData> data = getData(p).getCooldowns();
|
||||
HashMap<World, CooldownData> data = getData(p).getCooldowns();
|
||||
if (data != null)
|
||||
for (CooldownData cd : data)
|
||||
if (cd.getWorld() == world)
|
||||
return cd;
|
||||
return data.getOrDefault(world, null);
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public CooldownData getGlobal(Player p) {
|
||||
return globalCooldown.getCooldown(p.getUniqueId());
|
||||
}
|
||||
//@Nullable
|
||||
//public CooldownData getGlobal(Player p) {
|
||||
// return globalCooldown.getCooldown(p.getUniqueId());
|
||||
//}
|
||||
|
||||
public long timeLeft(CooldownData data) {
|
||||
long cooldown = data.getTime();
|
||||
return ((cooldown / 1000) + timer) - (System.currentTimeMillis() / 1000);
|
||||
}
|
||||
|
||||
public boolean locked(CooldownData data) {
|
||||
return lockedAfter > 0 && data.uses >= lockedAfter;
|
||||
public boolean locked(Player player) {
|
||||
return lockedAfter > 0 && getData(player).getRtpCount() >= lockedAfter;
|
||||
}
|
||||
|
||||
public void removeCooldown(Player player) {
|
||||
public void removeCooldown(Player player, World world) {
|
||||
if (!enabled) return;
|
||||
CooldownData data = getData(player).getCooldown();
|
||||
if (data != null)
|
||||
PlayerData playerData = getData(player);
|
||||
CooldownData cooldownData = playerData.getCooldowns().getOrDefault(world, null);
|
||||
if (cooldownData != null)
|
||||
if (lockedAfter > 0) {
|
||||
//uses.put(id, uses.getOrDefault(id, 1) - 1);
|
||||
if (data.getUses() <= 0) { //Remove from file as well
|
||||
savePlayer(data, true);
|
||||
getData(player).setCooldown(null);
|
||||
if (playerData.getRtpCount() <= 0) { //Remove from file as well
|
||||
savePlayer(player, cooldownData, true);
|
||||
getData(player).getCooldowns().put(world, null);
|
||||
} else { //Keep the player cached
|
||||
savePlayer(data, false);
|
||||
savePlayer(player, cooldownData, false);
|
||||
}
|
||||
} else { //Remove completely
|
||||
getData(player).setCooldown(null);
|
||||
savePlayer(data, true);
|
||||
getData(player).getCooldowns().remove(world);
|
||||
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(), () -> {
|
||||
if (!remove) {
|
||||
getDatabase(data.getWorld()).setCooldown(data);
|
||||
getDatabaseWorlds().setCooldown(data);
|
||||
} else {
|
||||
getDatabase(data.getWorld()).removePlayer(data.getUuid(), data.getWorld());
|
||||
getDatabaseWorlds().removePlayer(data.getUuid(), data.getWorld());
|
||||
}
|
||||
players.setCount(getData(player));
|
||||
});
|
||||
}
|
||||
|
||||
public void loadPlayer(Player player) {
|
||||
if (!isEnabled()) return;
|
||||
downloading.add(player);
|
||||
List<CooldownData> cooldowns = new ArrayList<>();
|
||||
for (World world : Bukkit.getWorlds()) {
|
||||
PlayerData playerData = getData(player);
|
||||
CooldownData cooldown = getDatabaseWorlds().getCooldown(player.getUniqueId(), world);
|
||||
if (cooldown != null)
|
||||
getData(player).getCooldowns().add(cooldown);
|
||||
playerData.getCooldowns().put(world, cooldown);
|
||||
playerData.setRtpCount(players.getCount(player.getUniqueId()));
|
||||
}
|
||||
downloading.remove(player);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user