Cooldowns revamp

This commit is contained in:
SuperRonanCraft 2020-08-10 12:02:44 -04:00
parent 481ed0c33e
commit b394f37f93
11 changed files with 92 additions and 40 deletions

View File

@ -1,7 +1,7 @@
package me.SuperRonanCraft.BetterRTP;
import me.SuperRonanCraft.BetterRTP.player.PlayerInfo;
import me.SuperRonanCraft.BetterRTP.player.RTP;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTP;
import me.SuperRonanCraft.BetterRTP.player.commands.Commands;
import me.SuperRonanCraft.BetterRTP.player.events.Listener;
import me.SuperRonanCraft.BetterRTP.references.depends.DepEconomy;

View File

@ -1,5 +1,6 @@
package me.SuperRonanCraft.BetterRTP.player.commands;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTPCooldown;
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
import me.SuperRonanCraft.BetterRTP.Main;
import org.bukkit.block.Biome;
@ -15,21 +16,18 @@ import java.util.UUID;
public class Commands {
private final Main pl;
public HashMap<UUID, Long> cooldowns = new HashMap<>();
public HashMap<UUID, Boolean> rtping = new HashMap<>();
private boolean cooldownTimer;
private int timer, cooldown;
public RTPCooldown cooldowns = new RTPCooldown();
private int delayTimer;
public Commands(Main pl) {
this.pl = pl;
}
public void load() {
FileBasics.FILETYPE config = pl.getFiles().getType(FileBasics.FILETYPE.CONFIG);
timer = config.getInt("Settings.Delay.Time");
cooldownTimer = config.getBoolean("Settings.Cooldown.Enabled");
cooldown = config.getInt("Settings.Cooldown.Time");
cooldowns.clear();
FileBasics.FILETYPE config = FileBasics.FILETYPE.CONFIG;
delayTimer = config.getInt("Settings.Delay.Time");
cooldowns.load();
}
public void commandExecuted(CommandSender sendi, String label, String[] args) {
@ -122,7 +120,7 @@ public class Commands {
if (checkDelay(sendi, player)) {
boolean delay = false;
if (!pl.getPerms().getBypassDelay(player))
if (timer != 0)
if (delayTimer > 0)
if (sendi == player)
delay = true;
//pl.getRTP().start(player, sendi, world, biomes, delay);
@ -138,23 +136,23 @@ public class Commands {
}
else if (sendi != player || pl.getPerms().getBypassCooldown(player)) //Bypassing/Forced?
return true;
else if (cooldownTimer) { //Cooling down?
else if (cooldowns.enabled) { //Cooling down?
Player p = (Player) sendi;
if (cooldowns.containsKey(p.getUniqueId())) {
long Left = ((cooldowns.get(p.getUniqueId()) / 1000) + cooldown) - (System.currentTimeMillis() / 1000);
if (cooldowns.exists(p.getUniqueId())) {
long Left = cooldowns.timeLeft(p.getUniqueId());
if (!pl.getPerms().getBypassDelay(p))
Left = Left + timer;
Left = Left + delayTimer;
if (Left > 0) {
//Still cooling down
pl.getText().getCooldown(sendi, String.valueOf(Left));
return false;
} else {
//Reset timer, but allow them to tp
cooldowns.put(p.getUniqueId(), System.currentTimeMillis());
cooldowns.add(p.getUniqueId());
return true;
}
} else
cooldowns.put(p.getUniqueId(), System.currentTimeMillis());
cooldowns.add(p.getUniqueId());
}
return true;
}

View File

@ -1,8 +1,7 @@
package me.SuperRonanCraft.BetterRTP.player.commands.types;
import me.SuperRonanCraft.BetterRTP.Main;
import me.SuperRonanCraft.BetterRTP.player.RTPParticles;
import me.SuperRonanCraft.BetterRTP.player.commands.CommandTypes;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTPParticles;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
import me.SuperRonanCraft.BetterRTP.references.worlds.RTPWorld;
import me.SuperRonanCraft.BetterRTP.references.worlds.RTP_WORLD_TYPE;

View File

@ -9,11 +9,27 @@ import org.bukkit.event.player.PlayerJoinEvent;
public class Join {
void event(PlayerJoinEvent e) {
Player player = e.getPlayer();
Main pl = Main.getInstance();
if (!pl.getFiles().getType(FileBasics.FILETYPE.CONFIG).getBoolean("Settings.DisableUpdater") && pl.getPerms().getUpdate(player))
if (!pl.getDescription().getVersion().equals(Updater.updatedVersion))
pl.getText().sms(player, "&7There is currently an update for &6BetterRTP &7version &e#" +
Updater.updatedVersion + " &7you have version &e#" + pl.getDescription().getVersion());
Player p = e.getPlayer();
updater(p);
rtpOnFirstJoin(p);
}
//Updater
private void updater(Player p) {
if (!getPl().getFiles().getType(FileBasics.FILETYPE.CONFIG).getBoolean("Settings.DisableUpdater") && getPl().getPerms().getUpdate(p))
if (!getPl().getDescription().getVersion().equals(Updater.updatedVersion))
getPl().getText().sms(p, "&7There is currently an update for &6BetterRTP &7version &e#" +
Updater.updatedVersion + " &7you have version &e#" + getPl().getDescription().getVersion());
}
//RTP on first join
private void rtpOnFirstJoin(Player p) {
if (getPl().getSettings().firstJoinRtp && !p.hasPlayedBefore()) {
}
}
private Main getPl() {
return Main.getInstance();
}
}

View File

@ -1,4 +1,4 @@
package me.SuperRonanCraft.BetterRTP.player;
package me.SuperRonanCraft.BetterRTP.player.rtp;
import com.sk89q.worldguard.bukkit.RegionContainer;
import com.sk89q.worldguard.bukkit.WGBukkit;
@ -8,7 +8,10 @@ import me.SuperRonanCraft.BetterRTP.Main;
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
import me.SuperRonanCraft.BetterRTP.references.worlds.*;
import me.ryanhamshire.GriefPrevention.GriefPrevention;
import org.bukkit.*;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.WorldBorder;
import org.bukkit.block.Block;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -156,7 +159,7 @@ public class RTP {
// Delaying? Else, just go
getPl().getCmd().rtping.put(p.getUniqueId(), true); //Cache player so they cant run '/rtp' again while rtp'ing
if (getPl().getSettings().delayEnabled && delay) {
new Delay(sendi, pWorld, delayTime, cancelOnMove, cancelOnDamage);
new RTPDelay(sendi, pWorld, delayTime, cancelOnMove, cancelOnDamage);
} else
tp(sendi, pWorld);
}

View File

@ -0,0 +1,35 @@
package me.SuperRonanCraft.BetterRTP.player.rtp;
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
import java.util.HashMap;
import java.util.UUID;
public class RTPCooldown {
public HashMap<UUID, Long> cooldowns = new HashMap<>();
public boolean enabled;
private int timer;
public void load() {
FileBasics.FILETYPE config = FileBasics.FILETYPE.CONFIG;
enabled = config.getBoolean("Settings.Cooldown.Enabled");
timer = config.getInt("Settings.Cooldown.Time");
}
public void add(UUID id) {
cooldowns.put(id, System.currentTimeMillis());
}
public boolean exists(UUID id) {
return cooldowns.containsKey(id);
}
public long timeLeft(UUID id) {
return ((cooldowns.getOrDefault(id, (long) 0) / 1000) + timer) - (System.currentTimeMillis() / 1000);
}
public void remove(UUID id) {
cooldowns.remove(id);
}
}

View File

@ -1,4 +1,4 @@
package me.SuperRonanCraft.BetterRTP.player;
package me.SuperRonanCraft.BetterRTP.player.rtp;
import me.SuperRonanCraft.BetterRTP.references.worlds.PlayerWorld;
import me.SuperRonanCraft.BetterRTP.Main;
@ -12,12 +12,12 @@ import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.player.PlayerMoveEvent;
class Delay implements Listener {
class RTPDelay implements Listener {
private int run;
private final PlayerWorld pWorld;
private final boolean cancelOnMove, cancelOnDamage;
Delay(CommandSender sendi, PlayerWorld pWorld, int delay, boolean cancelOnMove, boolean cancelOnDamage) {
RTPDelay(CommandSender sendi, PlayerWorld pWorld, int delay, boolean cancelOnMove, boolean cancelOnDamage) {
this.pWorld = pWorld;
this.cancelOnMove = cancelOnMove;
this.cancelOnDamage = cancelOnDamage;
@ -85,7 +85,7 @@ class Delay implements Listener {
}
}
private Runnable run(final CommandSender sendi, final Delay cls) {
private Runnable run(final CommandSender sendi, final RTPDelay cls) {
return () -> {
HandlerList.unregisterAll(cls);
if (getPl().getCmd().rtping.containsKey(pWorld.getPlayer().getUniqueId())) {

View File

@ -1,4 +1,4 @@
package me.SuperRonanCraft.BetterRTP.player;
package me.SuperRonanCraft.BetterRTP.player.rtp;
import me.SuperRonanCraft.BetterRTP.Main;
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;

View File

@ -1,16 +1,13 @@
package me.SuperRonanCraft.BetterRTP.player;
package me.SuperRonanCraft.BetterRTP.player.rtp;
import io.papermc.lib.PaperLib;
import me.SuperRonanCraft.BetterRTP.Main;
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
import org.bukkit.Chunk;
import org.bukkit.Location;
import org.bukkit.Sound;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.util.Vector;
import xyz.xenondevs.particle.ParticleEffect;
import java.util.ArrayList;
import java.util.List;

View File

@ -7,6 +7,7 @@ public class Settings {
public boolean debug;
public boolean delayEnabled;
public boolean firstJoinRtp;
//Dependencies
private SoftDepends depends = new SoftDepends();
@ -15,6 +16,7 @@ public class Settings {
FileBasics.FILETYPE config = getPl().getFiles().getType(FileBasics.FILETYPE.CONFIG);
debug = config.getBoolean("Settings.Debugger");
delayEnabled = config.getBoolean("Settings.Delay.Enabled");
firstJoinRtp = config.getBoolean("Settings.FirstJoinRtp");
}
public SoftDepends getsDepends() {

View File

@ -16,10 +16,11 @@ Settings:
MinRadius: 25
## Maximum amount of tries before BetterRTP gives up and sends a NotSafeMessage #
MaxAttempts: 15
## Enabled or disabled cooldown timer, time is in SECONDS #
FirstJoinRtp: false # Make the player rtp when joining the server for the first time
Cooldown:
Enabled: true
Time: 10
Enabled: true # Enabled or disabled cooldown timer
LockAfter: 0 # Lock the player in an infinite cooldown after # rtp's (0 to disable)
Time: 10 # in SECONDS
## Time between command and actually rtp'ing, time is in SECONDS. Set to "0" to disable delay timer #
Delay:
Enabled: true
@ -56,6 +57,7 @@ BlacklistedBlocks:
- leaves_2
- air
- void_air
- bedrock
## Worlds to NOT allow /rtp in, unless there is an override to another enabled world #
DisabledWorlds:
@ -84,7 +86,7 @@ CustomWorlds:
## Override a world and rtp a player executing the command in one world, to another
Overrides:
#FORMAT - <CURRENT>:<OTHER>
#FORMAT - <CURRENT WORLD>:<DESIRED WORLD>
- master_world: 'world'
- creative_world: 'world'