mirror of
https://github.com/RonanPlugins/BetterRTP.git
synced 2025-08-17 09:05:47 +00:00
ability to disable per world cooldowns
This commit is contained in:
parent
852d25a619
commit
6673e279fc
@ -97,9 +97,10 @@ 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 (!PermissionNode.BYPASS_COOLDOWN.check(p))
|
if (!PermissionNode.BYPASS_COOLDOWN.check(p)) {
|
||||||
BetterRTP.getInstance().getPlayerDataManager().getData(p).getCooldowns().put(loc.getWorld(),
|
BetterRTP.getInstance().getCooldowns().add(p, loc.getWorld());
|
||||||
new CooldownData(p.getUniqueId(), System.currentTimeMillis(), loc.getWorld()));
|
//BetterRTP.getInstance().getPlayerDataManager().getData(p).getCooldowns().put(loc.getWorld(), new CooldownData(p.getUniqueId(), System.currentTimeMillis(), loc.getWorld()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
2
pom.xml
2
pom.xml
@ -7,7 +7,7 @@
|
|||||||
<groupId>me.SuperRonanCraft</groupId>
|
<groupId>me.SuperRonanCraft</groupId>
|
||||||
<artifactId>BetterRTP</artifactId>
|
<artifactId>BetterRTP</artifactId>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
<version>3.3.0</version>
|
<version>3.4.0</version>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<maven.compiler.source>1.8</maven.compiler.source>
|
<maven.compiler.source>1.8</maven.compiler.source>
|
||||||
|
@ -4,15 +4,16 @@ import lombok.Getter;
|
|||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
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 private final World world;
|
@Getter private final @Nullable World world;
|
||||||
|
|
||||||
public CooldownData(UUID uuid, Long time, World world) {
|
public CooldownData(UUID uuid, Long time, @Nullable World world) {
|
||||||
this.uuid = uuid;
|
this.uuid = uuid;
|
||||||
this.time = time;
|
this.time = time;
|
||||||
this.world = world;
|
this.world = world;
|
||||||
|
@ -18,7 +18,7 @@ import java.util.List;
|
|||||||
|
|
||||||
public class CooldownHandler {
|
public class CooldownHandler {
|
||||||
|
|
||||||
@Getter boolean enabled, loaded;
|
@Getter boolean enabled, loaded, cooldownByWorld;
|
||||||
private int
|
private int
|
||||||
timer, //Global Cooldown timer
|
timer, //Global Cooldown timer
|
||||||
lockedAfter; //Rtp's before being locked
|
lockedAfter; //Rtp's before being locked
|
||||||
@ -36,6 +36,7 @@ public class CooldownHandler {
|
|||||||
if (enabled) {
|
if (enabled) {
|
||||||
timer = config.getInt("Settings.Cooldown.Time");
|
timer = config.getInt("Settings.Cooldown.Time");
|
||||||
lockedAfter = config.getInt("Settings.Cooldown.LockAfter");
|
lockedAfter = config.getInt("Settings.Cooldown.LockAfter");
|
||||||
|
cooldownByWorld = config.getBoolean("Settings.Cooldown.PerWorld");
|
||||||
}
|
}
|
||||||
Bukkit.getScheduler().runTaskAsynchronously(BetterRTP.getInstance(), () -> {
|
Bukkit.getScheduler().runTaskAsynchronously(BetterRTP.getInstance(), () -> {
|
||||||
//globalCooldown.load();
|
//globalCooldown.load();
|
||||||
@ -47,15 +48,11 @@ public class CooldownHandler {
|
|||||||
|
|
||||||
private void checkLater() {
|
private void checkLater() {
|
||||||
Bukkit.getScheduler().runTaskLaterAsynchronously(BetterRTP.getInstance(), () -> {
|
Bukkit.getScheduler().runTaskLaterAsynchronously(BetterRTP.getInstance(), () -> {
|
||||||
//AtomicBoolean loaded = new AtomicBoolean(true);
|
if (cooldownByWorld && !cooldowns.isLoaded()) {
|
||||||
//if (!globalCooldown.isLoaded()) {
|
|
||||||
// checkLater();
|
|
||||||
// return;
|
|
||||||
//} else
|
|
||||||
if (!cooldowns.isLoaded()) {
|
|
||||||
checkLater();
|
checkLater();
|
||||||
return;
|
return;
|
||||||
} else if (!players.isLoaded()) {
|
}
|
||||||
|
if (!players.isLoaded()) {
|
||||||
checkLater();
|
checkLater();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -70,33 +67,39 @@ public class CooldownHandler {
|
|||||||
public void add(Player player, World world) {
|
public void add(Player player, World world) {
|
||||||
if (!enabled) return;
|
if (!enabled) return;
|
||||||
PlayerData playerData = getData(player);
|
PlayerData playerData = getData(player);
|
||||||
HashMap<World, CooldownData> cooldowns = playerData.getCooldowns();
|
if (cooldownByWorld) {
|
||||||
CooldownData data = cooldowns.getOrDefault(world, new CooldownData(player.getUniqueId(), 0L, world));
|
HashMap<World, CooldownData> cooldowns = playerData.getCooldowns();
|
||||||
if (lockedAfter > 0)
|
CooldownData data = cooldowns.getOrDefault(world, new CooldownData(player.getUniqueId(), 0L, world));
|
||||||
playerData.setRtpCount(playerData.getRtpCount() + 1);
|
playerData.setRtpCount(playerData.getRtpCount() + 1);
|
||||||
data.setTime(System.currentTimeMillis());
|
data.setTime(System.currentTimeMillis());
|
||||||
cooldowns.put(world, data);
|
playerData.setGlobalCooldown(data.getTime());
|
||||||
//getData(player).setCooldowns(data);
|
cooldowns.put(world, data);
|
||||||
savePlayer(player, data, false);
|
savePlayer(player, data, false);
|
||||||
|
} else
|
||||||
|
add(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean exists(Player p) {
|
private void add(Player player) {
|
||||||
return getData(p).getCooldowns() != null;
|
if (!enabled) return;
|
||||||
|
PlayerData playerData = getData(player);
|
||||||
|
playerData.setRtpCount(playerData.getRtpCount() + 1);
|
||||||
|
playerData.setGlobalCooldown(System.currentTimeMillis());
|
||||||
|
savePlayer(player, null, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public CooldownData get(Player p, World world) {
|
public CooldownData get(Player p, World world) {
|
||||||
HashMap<World, CooldownData> data = getData(p).getCooldowns();
|
PlayerData data = getData(p);
|
||||||
if (data != null)
|
if (cooldownByWorld) {
|
||||||
return data.getOrDefault(world, null);
|
HashMap<World, CooldownData> cooldownData = getData(p).getCooldowns();
|
||||||
|
if (data != null)
|
||||||
|
return cooldownData.getOrDefault(world, null);
|
||||||
|
} else if (data.getGlobalCooldown() > 0) {
|
||||||
|
return new CooldownData(p.getUniqueId(), data.getGlobalCooldown(), null);
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
//@Nullable
|
|
||||||
//public CooldownData getGlobal(Player p) {
|
|
||||||
// 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);
|
||||||
@ -125,12 +128,13 @@ public class CooldownHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void savePlayer(Player player, CooldownData data, boolean remove) {
|
private void savePlayer(Player player, @Nullable CooldownData data, boolean remove) {
|
||||||
Bukkit.getScheduler().runTaskAsynchronously(BetterRTP.getInstance(), () -> {
|
Bukkit.getScheduler().runTaskAsynchronously(BetterRTP.getInstance(), () -> {
|
||||||
if (!remove) {
|
if (data != null && getDatabaseWorlds() != null) { //Per World enabled?
|
||||||
getDatabaseWorlds().setCooldown(data);
|
if (!remove)
|
||||||
} else {
|
getDatabaseWorlds().setCooldown(data);
|
||||||
getDatabaseWorlds().removePlayer(data.getUuid(), data.getWorld());
|
else
|
||||||
|
getDatabaseWorlds().removePlayer(data.getUuid(), data.getWorld());
|
||||||
}
|
}
|
||||||
players.setData(getData(player));
|
players.setData(getData(player));
|
||||||
});
|
});
|
||||||
@ -139,15 +143,16 @@ public class CooldownHandler {
|
|||||||
public void loadPlayer(Player player) {
|
public void loadPlayer(Player player) {
|
||||||
if (!isEnabled()) return;
|
if (!isEnabled()) return;
|
||||||
downloading.add(player);
|
downloading.add(player);
|
||||||
for (World world : Bukkit.getWorlds()) {
|
PlayerData playerData = getData(player);
|
||||||
PlayerData playerData = getData(player);
|
if (getDatabaseWorlds() != null) //Per World enabled?
|
||||||
//Cooldowns
|
for (World world : Bukkit.getWorlds()) {
|
||||||
CooldownData cooldown = getDatabaseWorlds().getCooldown(player.getUniqueId(), world);
|
//Cooldowns
|
||||||
if (cooldown != null)
|
CooldownData cooldown = getDatabaseWorlds().getCooldown(player.getUniqueId(), world);
|
||||||
playerData.getCooldowns().put(world, cooldown);
|
if (cooldown != null)
|
||||||
//Player Data
|
playerData.getCooldowns().put(world, cooldown);
|
||||||
players.setupData(playerData);
|
}
|
||||||
}
|
//Player Data
|
||||||
|
players.setupData(playerData);
|
||||||
downloading.remove(player);
|
downloading.remove(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -155,8 +160,11 @@ public class CooldownHandler {
|
|||||||
return !downloading.contains(player);
|
return !downloading.contains(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
private DatabaseCooldownsWorlds getDatabaseWorlds() {
|
private DatabaseCooldownsWorlds getDatabaseWorlds() {
|
||||||
return cooldowns;
|
if (cooldownByWorld)
|
||||||
|
return cooldowns;
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private PlayerData getData(Player p) {
|
private PlayerData getData(Player p) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user