mirror of
https://github.com/RonanPlugins/BetterRTP.git
synced 2025-08-17 00:55:45 +00:00
Cooldowns revamp
This commit is contained in:
parent
481ed0c33e
commit
b394f37f93
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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())) {
|
@ -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;
|
@ -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;
|
@ -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() {
|
||||
|
@ -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'
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user