mirror of
https://github.com/RonanPlugins/BetterRTP.git
synced 2025-08-17 17:15:47 +00:00
Cooldowns revamp
This commit is contained in:
parent
481ed0c33e
commit
b394f37f93
@ -1,7 +1,7 @@
|
|||||||
package me.SuperRonanCraft.BetterRTP;
|
package me.SuperRonanCraft.BetterRTP;
|
||||||
|
|
||||||
import me.SuperRonanCraft.BetterRTP.player.PlayerInfo;
|
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.commands.Commands;
|
||||||
import me.SuperRonanCraft.BetterRTP.player.events.Listener;
|
import me.SuperRonanCraft.BetterRTP.player.events.Listener;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.depends.DepEconomy;
|
import me.SuperRonanCraft.BetterRTP.references.depends.DepEconomy;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package me.SuperRonanCraft.BetterRTP.player.commands;
|
package me.SuperRonanCraft.BetterRTP.player.commands;
|
||||||
|
|
||||||
|
import me.SuperRonanCraft.BetterRTP.player.rtp.RTPCooldown;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
|
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
|
||||||
import me.SuperRonanCraft.BetterRTP.Main;
|
import me.SuperRonanCraft.BetterRTP.Main;
|
||||||
import org.bukkit.block.Biome;
|
import org.bukkit.block.Biome;
|
||||||
@ -15,21 +16,18 @@ import java.util.UUID;
|
|||||||
public class Commands {
|
public class Commands {
|
||||||
|
|
||||||
private final Main pl;
|
private final Main pl;
|
||||||
public HashMap<UUID, Long> cooldowns = new HashMap<>();
|
|
||||||
public HashMap<UUID, Boolean> rtping = new HashMap<>();
|
public HashMap<UUID, Boolean> rtping = new HashMap<>();
|
||||||
private boolean cooldownTimer;
|
public RTPCooldown cooldowns = new RTPCooldown();
|
||||||
private int timer, cooldown;
|
private int delayTimer;
|
||||||
|
|
||||||
public Commands(Main pl) {
|
public Commands(Main pl) {
|
||||||
this.pl = pl;
|
this.pl = pl;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void load() {
|
public void load() {
|
||||||
FileBasics.FILETYPE config = pl.getFiles().getType(FileBasics.FILETYPE.CONFIG);
|
FileBasics.FILETYPE config = FileBasics.FILETYPE.CONFIG;
|
||||||
timer = config.getInt("Settings.Delay.Time");
|
delayTimer = config.getInt("Settings.Delay.Time");
|
||||||
cooldownTimer = config.getBoolean("Settings.Cooldown.Enabled");
|
cooldowns.load();
|
||||||
cooldown = config.getInt("Settings.Cooldown.Time");
|
|
||||||
cooldowns.clear();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void commandExecuted(CommandSender sendi, String label, String[] args) {
|
public void commandExecuted(CommandSender sendi, String label, String[] args) {
|
||||||
@ -122,7 +120,7 @@ public class Commands {
|
|||||||
if (checkDelay(sendi, player)) {
|
if (checkDelay(sendi, player)) {
|
||||||
boolean delay = false;
|
boolean delay = false;
|
||||||
if (!pl.getPerms().getBypassDelay(player))
|
if (!pl.getPerms().getBypassDelay(player))
|
||||||
if (timer != 0)
|
if (delayTimer > 0)
|
||||||
if (sendi == player)
|
if (sendi == player)
|
||||||
delay = true;
|
delay = true;
|
||||||
//pl.getRTP().start(player, sendi, world, biomes, delay);
|
//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?
|
else if (sendi != player || pl.getPerms().getBypassCooldown(player)) //Bypassing/Forced?
|
||||||
return true;
|
return true;
|
||||||
else if (cooldownTimer) { //Cooling down?
|
else if (cooldowns.enabled) { //Cooling down?
|
||||||
Player p = (Player) sendi;
|
Player p = (Player) sendi;
|
||||||
if (cooldowns.containsKey(p.getUniqueId())) {
|
if (cooldowns.exists(p.getUniqueId())) {
|
||||||
long Left = ((cooldowns.get(p.getUniqueId()) / 1000) + cooldown) - (System.currentTimeMillis() / 1000);
|
long Left = cooldowns.timeLeft(p.getUniqueId());
|
||||||
if (!pl.getPerms().getBypassDelay(p))
|
if (!pl.getPerms().getBypassDelay(p))
|
||||||
Left = Left + timer;
|
Left = Left + delayTimer;
|
||||||
if (Left > 0) {
|
if (Left > 0) {
|
||||||
//Still cooling down
|
//Still cooling down
|
||||||
pl.getText().getCooldown(sendi, String.valueOf(Left));
|
pl.getText().getCooldown(sendi, String.valueOf(Left));
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
//Reset timer, but allow them to tp
|
//Reset timer, but allow them to tp
|
||||||
cooldowns.put(p.getUniqueId(), System.currentTimeMillis());
|
cooldowns.add(p.getUniqueId());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
cooldowns.put(p.getUniqueId(), System.currentTimeMillis());
|
cooldowns.add(p.getUniqueId());
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
package me.SuperRonanCraft.BetterRTP.player.commands.types;
|
package me.SuperRonanCraft.BetterRTP.player.commands.types;
|
||||||
|
|
||||||
import me.SuperRonanCraft.BetterRTP.Main;
|
import me.SuperRonanCraft.BetterRTP.Main;
|
||||||
import me.SuperRonanCraft.BetterRTP.player.RTPParticles;
|
import me.SuperRonanCraft.BetterRTP.player.rtp.RTPParticles;
|
||||||
import me.SuperRonanCraft.BetterRTP.player.commands.CommandTypes;
|
|
||||||
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
|
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.worlds.RTPWorld;
|
import me.SuperRonanCraft.BetterRTP.references.worlds.RTPWorld;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.worlds.RTP_WORLD_TYPE;
|
import me.SuperRonanCraft.BetterRTP.references.worlds.RTP_WORLD_TYPE;
|
||||||
|
@ -9,11 +9,27 @@ import org.bukkit.event.player.PlayerJoinEvent;
|
|||||||
public class Join {
|
public class Join {
|
||||||
|
|
||||||
void event(PlayerJoinEvent e) {
|
void event(PlayerJoinEvent e) {
|
||||||
Player player = e.getPlayer();
|
Player p = e.getPlayer();
|
||||||
Main pl = Main.getInstance();
|
updater(p);
|
||||||
if (!pl.getFiles().getType(FileBasics.FILETYPE.CONFIG).getBoolean("Settings.DisableUpdater") && pl.getPerms().getUpdate(player))
|
rtpOnFirstJoin(p);
|
||||||
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());
|
//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.RegionContainer;
|
||||||
import com.sk89q.worldguard.bukkit.WGBukkit;
|
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.file.FileBasics;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.worlds.*;
|
import me.SuperRonanCraft.BetterRTP.references.worlds.*;
|
||||||
import me.ryanhamshire.GriefPrevention.GriefPrevention;
|
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.block.Block;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -156,7 +159,7 @@ public class RTP {
|
|||||||
// Delaying? Else, just go
|
// Delaying? Else, just go
|
||||||
getPl().getCmd().rtping.put(p.getUniqueId(), true); //Cache player so they cant run '/rtp' again while rtp'ing
|
getPl().getCmd().rtping.put(p.getUniqueId(), true); //Cache player so they cant run '/rtp' again while rtp'ing
|
||||||
if (getPl().getSettings().delayEnabled && delay) {
|
if (getPl().getSettings().delayEnabled && delay) {
|
||||||
new Delay(sendi, pWorld, delayTime, cancelOnMove, cancelOnDamage);
|
new RTPDelay(sendi, pWorld, delayTime, cancelOnMove, cancelOnDamage);
|
||||||
} else
|
} else
|
||||||
tp(sendi, pWorld);
|
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.references.worlds.PlayerWorld;
|
||||||
import me.SuperRonanCraft.BetterRTP.Main;
|
import me.SuperRonanCraft.BetterRTP.Main;
|
||||||
@ -12,12 +12,12 @@ import org.bukkit.event.Listener;
|
|||||||
import org.bukkit.event.entity.EntityDamageEvent;
|
import org.bukkit.event.entity.EntityDamageEvent;
|
||||||
import org.bukkit.event.player.PlayerMoveEvent;
|
import org.bukkit.event.player.PlayerMoveEvent;
|
||||||
|
|
||||||
class Delay implements Listener {
|
class RTPDelay implements Listener {
|
||||||
private int run;
|
private int run;
|
||||||
private final PlayerWorld pWorld;
|
private final PlayerWorld pWorld;
|
||||||
private final boolean cancelOnMove, cancelOnDamage;
|
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.pWorld = pWorld;
|
||||||
this.cancelOnMove = cancelOnMove;
|
this.cancelOnMove = cancelOnMove;
|
||||||
this.cancelOnDamage = cancelOnDamage;
|
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 () -> {
|
return () -> {
|
||||||
HandlerList.unregisterAll(cls);
|
HandlerList.unregisterAll(cls);
|
||||||
if (getPl().getCmd().rtping.containsKey(pWorld.getPlayer().getUniqueId())) {
|
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.Main;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
|
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 io.papermc.lib.PaperLib;
|
||||||
import me.SuperRonanCraft.BetterRTP.Main;
|
import me.SuperRonanCraft.BetterRTP.Main;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
|
|
||||||
import org.bukkit.Chunk;
|
import org.bukkit.Chunk;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Sound;
|
import org.bukkit.Sound;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
import org.bukkit.util.Vector;
|
|
||||||
import xyz.xenondevs.particle.ParticleEffect;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
@ -7,6 +7,7 @@ public class Settings {
|
|||||||
|
|
||||||
public boolean debug;
|
public boolean debug;
|
||||||
public boolean delayEnabled;
|
public boolean delayEnabled;
|
||||||
|
public boolean firstJoinRtp;
|
||||||
//Dependencies
|
//Dependencies
|
||||||
private SoftDepends depends = new SoftDepends();
|
private SoftDepends depends = new SoftDepends();
|
||||||
|
|
||||||
@ -15,6 +16,7 @@ public class Settings {
|
|||||||
FileBasics.FILETYPE config = getPl().getFiles().getType(FileBasics.FILETYPE.CONFIG);
|
FileBasics.FILETYPE config = getPl().getFiles().getType(FileBasics.FILETYPE.CONFIG);
|
||||||
debug = config.getBoolean("Settings.Debugger");
|
debug = config.getBoolean("Settings.Debugger");
|
||||||
delayEnabled = config.getBoolean("Settings.Delay.Enabled");
|
delayEnabled = config.getBoolean("Settings.Delay.Enabled");
|
||||||
|
firstJoinRtp = config.getBoolean("Settings.FirstJoinRtp");
|
||||||
}
|
}
|
||||||
|
|
||||||
public SoftDepends getsDepends() {
|
public SoftDepends getsDepends() {
|
||||||
|
@ -16,10 +16,11 @@ Settings:
|
|||||||
MinRadius: 25
|
MinRadius: 25
|
||||||
## Maximum amount of tries before BetterRTP gives up and sends a NotSafeMessage #
|
## Maximum amount of tries before BetterRTP gives up and sends a NotSafeMessage #
|
||||||
MaxAttempts: 15
|
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:
|
Cooldown:
|
||||||
Enabled: true
|
Enabled: true # Enabled or disabled cooldown timer
|
||||||
Time: 10
|
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 #
|
## Time between command and actually rtp'ing, time is in SECONDS. Set to "0" to disable delay timer #
|
||||||
Delay:
|
Delay:
|
||||||
Enabled: true
|
Enabled: true
|
||||||
@ -56,6 +57,7 @@ BlacklistedBlocks:
|
|||||||
- leaves_2
|
- leaves_2
|
||||||
- air
|
- air
|
||||||
- void_air
|
- void_air
|
||||||
|
- bedrock
|
||||||
|
|
||||||
## Worlds to NOT allow /rtp in, unless there is an override to another enabled world #
|
## Worlds to NOT allow /rtp in, unless there is an override to another enabled world #
|
||||||
DisabledWorlds:
|
DisabledWorlds:
|
||||||
@ -84,7 +86,7 @@ CustomWorlds:
|
|||||||
|
|
||||||
## Override a world and rtp a player executing the command in one world, to another
|
## Override a world and rtp a player executing the command in one world, to another
|
||||||
Overrides:
|
Overrides:
|
||||||
#FORMAT - <CURRENT>:<OTHER>
|
#FORMAT - <CURRENT WORLD>:<DESIRED WORLD>
|
||||||
- master_world: 'world'
|
- master_world: 'world'
|
||||||
- creative_world: 'world'
|
- creative_world: 'world'
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user