cooldowns handling

This commit is contained in:
RonanCraft 2021-09-27 20:02:47 -04:00
parent 141e857ed8
commit 7f388e6c6b
27 changed files with 113 additions and 126 deletions

View File

@ -256,7 +256,7 @@
<dependency> <dependency>
<groupId>com.github.cryptomorin</groupId> <groupId>com.github.cryptomorin</groupId>
<artifactId>kingdoms</artifactId> <artifactId>kingdoms</artifactId>
<version>1.10.5.3</version> <version>1.11.4</version>
<scope>provided</scope> <scope>provided</scope>
<exclusions> <exclusions>
<exclusion> <exclusion>

View File

@ -1,14 +1,17 @@
package me.SuperRonanCraft.BetterRTP; package me.SuperRonanCraft.BetterRTP;
import lombok.Getter;
import me.SuperRonanCraft.BetterRTP.player.PlayerInfo; import me.SuperRonanCraft.BetterRTP.player.PlayerInfo;
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.player.rtp.RTP; import me.SuperRonanCraft.BetterRTP.player.rtp.RTP;
import me.SuperRonanCraft.BetterRTP.references.Permissions; import me.SuperRonanCraft.BetterRTP.references.Permissions;
import me.SuperRonanCraft.BetterRTP.references.database.DatabaseCooldowns;
import me.SuperRonanCraft.BetterRTP.references.depends.DepEconomy; import me.SuperRonanCraft.BetterRTP.references.depends.DepEconomy;
import me.SuperRonanCraft.BetterRTP.references.file.Files; import me.SuperRonanCraft.BetterRTP.references.file.Files;
import me.SuperRonanCraft.BetterRTP.references.file.Messages; import me.SuperRonanCraft.BetterRTP.references.file.Messages;
import me.SuperRonanCraft.BetterRTP.references.invs.RTPInventories; import me.SuperRonanCraft.BetterRTP.references.invs.RTPInventories;
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownHandler;
import me.SuperRonanCraft.BetterRTP.references.settings.Settings; import me.SuperRonanCraft.BetterRTP.references.settings.Settings;
import me.SuperRonanCraft.BetterRTP.references.web.Metrics; import me.SuperRonanCraft.BetterRTP.references.web.Metrics;
import me.SuperRonanCraft.BetterRTP.references.Updater; import me.SuperRonanCraft.BetterRTP.references.Updater;
@ -32,6 +35,8 @@ public class BetterRTP extends JavaPlugin {
private final RTPInventories invs = new RTPInventories(); private final RTPInventories invs = new RTPInventories();
private final PlayerInfo pInfo = new PlayerInfo(); private final PlayerInfo pInfo = new PlayerInfo();
private final Settings settings = new Settings(); private final Settings settings = new Settings();
@Getter private final DatabaseCooldowns database = new DatabaseCooldowns();
@Getter private final CooldownHandler cooldowns = new CooldownHandler();
public void onEnable() { public void onEnable() {
instance = this; instance = this;
@ -113,6 +118,7 @@ public class BetterRTP extends JavaPlugin {
settings.load(); settings.load();
invs.load(); invs.load();
rtp.load(); rtp.load();
cooldowns.load();
cmd.load(); cmd.load();
listener.load(); listener.load();
eco.load(); eco.load();

View File

@ -1,7 +1,9 @@
package me.SuperRonanCraft.BetterRTP.player; package me.SuperRonanCraft.BetterRTP.player;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE; import lombok.Getter;
import lombok.Setter;
import me.SuperRonanCraft.BetterRTP.references.invs.RTP_INV_SETTINGS; import me.SuperRonanCraft.BetterRTP.references.invs.RTP_INV_SETTINGS;
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownData;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
@ -10,32 +12,13 @@ import java.util.HashMap;
public class PlayerInfo { public class PlayerInfo {
private final HashMap<Player, Inventory> invs = new HashMap<>(); @Getter private final HashMap<Player, Inventory> invs = new HashMap<>();
private final HashMap<Player, RTP_INV_SETTINGS> invType = new HashMap<>(); @Getter private final HashMap<Player, RTP_INV_SETTINGS> invType = new HashMap<>();
private final HashMap<Player, World> invWorld = new HashMap<>(); @Getter private final HashMap<Player, World> invWorld = new HashMap<>();
private final HashMap<Player, RTP_INV_SETTINGS> invNextInv = new HashMap<>(); @Getter private final HashMap<Player, RTP_INV_SETTINGS> invNextInv = new HashMap<>();
@Getter private final HashMap<Player, CooldownData> cooldown = new HashMap<>();
//private final HashMap<Player, RTP_TYPE> rtpType = new HashMap<>(); //private final HashMap<Player, RTP_TYPE> rtpType = new HashMap<>();
public Inventory getInv(Player p) {
return invs.get(p);
}
public RTP_INV_SETTINGS getInvType(Player p) {
return invType.get(p);
}
public World getInvWorld(Player p) {
return invWorld.get(p);
}
public RTP_INV_SETTINGS getNextInv(Player p) {
return invNextInv.get(p);
}
//public RTP_TYPE getRTPType(Player p) {
// return rtpType.getOrDefault(p, RTP_TYPE.COMMAND);
//}
public void setInv(Player p, Inventory inv) { public void setInv(Player p, Inventory inv) {
invs.put(p, inv); invs.put(p, inv);
} }
@ -52,10 +35,6 @@ public class PlayerInfo {
invNextInv.put(p, type); invNextInv.put(p, type);
} }
//public void setRTPType(Player p, RTP_TYPE rtpType) {
// this.rtpType.put(p, rtpType);
//}
//--Logic-- //--Logic--
public Boolean playerExists(Player p) { public Boolean playerExists(Player p) {

View File

@ -1,12 +1,12 @@
package me.SuperRonanCraft.BetterRTP.player.commands; package me.SuperRonanCraft.BetterRTP.player.commands;
import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTPCooldown; import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownHandler;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTPSetupInformation; import me.SuperRonanCraft.BetterRTP.player.rtp.RTPSetupInformation;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE; import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE;
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_CommandEvent; import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_CommandEvent;
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics; import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
import me.SuperRonanCraft.BetterRTP.references.worlds.WorldLocations; import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldLocations;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.block.Biome; import org.bukkit.block.Biome;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@ -21,7 +21,6 @@ public class Commands {
private final BetterRTP pl; private final BetterRTP pl;
public HashMap<UUID, Boolean> rtping = new HashMap<>(); public HashMap<UUID, Boolean> rtping = new HashMap<>();
public RTPCooldown cooldowns = new RTPCooldown();
private int delayTimer; private int delayTimer;
public List<RTPCommand> commands = new ArrayList<>(); public List<RTPCommand> commands = new ArrayList<>();
@ -32,7 +31,6 @@ public class Commands {
public void load() { public void load() {
FileBasics.FILETYPE config = FileBasics.FILETYPE.CONFIG; FileBasics.FILETYPE config = FileBasics.FILETYPE.CONFIG;
delayTimer = config.getInt("Settings.Delay.Time"); delayTimer = config.getInt("Settings.Delay.Time");
cooldowns.load();
rtping.clear(); rtping.clear();
commands.clear(); commands.clear();
for (RTPCommandType cmd : RTPCommandType.values()) for (RTPCommandType cmd : RTPCommandType.values())
@ -173,8 +171,8 @@ public class Commands {
private boolean checkCooldown(CommandSender sendi, Player player) { private boolean checkCooldown(CommandSender sendi, Player player) {
if (sendi != player || pl.getPerms().getBypassCooldown(player)) { //Bypassing/Forced? if (sendi != player || pl.getPerms().getBypassCooldown(player)) { //Bypassing/Forced?
return true; return true;
} else if (cooldowns.isEnabled()) { //Cooling down? } else if (getPl().getCo.isEnabled()) { //Cooling down?
if (!cooldowns.database.isLoaded()) //Cooldowns have yet to download if (!.database.isLoaded()) //Cooldowns have yet to download
return false; return false;
UUID id = player.getUniqueId(); UUID id = player.getUniqueId();
if (cooldowns.exists(id)) { if (cooldowns.exists(id)) {
@ -200,4 +198,8 @@ public class Commands {
} }
return true; return true;
} }
private BetterRTP getPl() {
return BetterRTP.getInstance();
}
} }

View File

@ -1,17 +1,14 @@
package me.SuperRonanCraft.BetterRTP.player.commands.types; package me.SuperRonanCraft.BetterRTP.player.commands.types;
import com.bekvon.bukkit.residence.containers.cmd;
import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_SHAPE; import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_SHAPE;
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics; import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
import me.SuperRonanCraft.BetterRTP.references.worlds.WORLD_TYPE; import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WORLD_TYPE;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.block.Biome;
import org.bukkit.block.Block;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;

View File

@ -5,11 +5,9 @@ import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable;
import me.SuperRonanCraft.BetterRTP.player.commands.RTP_SETUP_TYPE; import me.SuperRonanCraft.BetterRTP.player.commands.RTP_SETUP_TYPE;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTPParticles; import me.SuperRonanCraft.BetterRTP.player.rtp.RTPParticles;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTPSetupInformation; import me.SuperRonanCraft.BetterRTP.player.rtp.RTPSetupInformation;
import me.SuperRonanCraft.BetterRTP.references.worlds.WorldDefault; import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldDefault;
import me.SuperRonanCraft.BetterRTP.references.worlds.WorldLocations; import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldPlayer;
import me.SuperRonanCraft.BetterRTP.references.worlds.WorldPlayer;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
import me.SuperRonanCraft.BetterRTP.references.worlds.WORLD_TYPE;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;

View File

@ -4,12 +4,10 @@ import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.player.commands.Commands; import me.SuperRonanCraft.BetterRTP.player.commands.Commands;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandType;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE; import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE;
import me.SuperRonanCraft.BetterRTP.references.worlds.RTPWorld; import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.RTPWorld;
import me.SuperRonanCraft.BetterRTP.references.worlds.WorldLocations; import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldLocations;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;

View File

@ -3,9 +3,9 @@ package me.SuperRonanCraft.BetterRTP.player.rtp;
import lombok.Getter; import lombok.Getter;
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics; import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.*;
import me.SuperRonanCraft.BetterRTP.references.worlds.*; import me.SuperRonanCraft.BetterRTP.references.worlds.*;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;

View File

@ -60,7 +60,7 @@ class RTPDelay implements Listener {
HandlerList.unregisterAll(this); HandlerList.unregisterAll(this);
getPl().getRTP().getTeleport().cancelledTeleport(rtp.getPlayer()); getPl().getRTP().getTeleport().cancelledTeleport(rtp.getPlayer());
//getPl().getEco().unCharge(rtp.getPlayer(), rtp.pWorld); //getPl().getEco().unCharge(rtp.getPlayer(), rtp.pWorld);
getPl().getCmd().cooldowns.removeCooldown(rtp.getPlayer().getUniqueId()); getPl().getCooldowns().removeCooldown(rtp.getPlayer());
getPl().getCmd().rtping.put(rtp.getPlayer().getUniqueId(), false); getPl().getCmd().rtping.put(rtp.getPlayer().getUniqueId(), false);
Bukkit.getServer().getPluginManager().callEvent(new RTP_CancelledEvent(rtp.getPlayer())); Bukkit.getServer().getPluginManager().callEvent(new RTP_CancelledEvent(rtp.getPlayer()));
} }

View File

@ -2,6 +2,7 @@ package me.SuperRonanCraft.BetterRTP.player.rtp;
import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics; import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.*;
import me.SuperRonanCraft.BetterRTP.references.worlds.*; import me.SuperRonanCraft.BetterRTP.references.worlds.*;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.World; import org.bukkit.World;

View File

@ -1,7 +1,7 @@
package me.SuperRonanCraft.BetterRTP.player.rtp; package me.SuperRonanCraft.BetterRTP.player.rtp;
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_FindLocationEvent; import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_FindLocationEvent;
import me.SuperRonanCraft.BetterRTP.references.worlds.WorldPlayer; import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldPlayer;
import io.papermc.lib.PaperLib; import io.papermc.lib.PaperLib;
import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.BetterRTP;
import org.bukkit.Chunk; import org.bukkit.Chunk;

View File

@ -1,7 +1,6 @@
package me.SuperRonanCraft.BetterRTP.player.rtp; package me.SuperRonanCraft.BetterRTP.player.rtp;
import me.SuperRonanCraft.BetterRTP.references.worlds.WorldLocations; import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldLocations;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;

View File

@ -3,7 +3,7 @@ package me.SuperRonanCraft.BetterRTP.player.rtp;
import io.papermc.lib.PaperLib; import io.papermc.lib.PaperLib;
import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.references.customEvents.*; import me.SuperRonanCraft.BetterRTP.references.customEvents.*;
import me.SuperRonanCraft.BetterRTP.references.worlds.WORLD_TYPE; import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WORLD_TYPE;
import org.bukkit.Chunk; import org.bukkit.Chunk;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;

View File

@ -2,10 +2,9 @@ package me.SuperRonanCraft.BetterRTP.player.rtp.queue;
import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_FindLocationEvent; import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_FindLocationEvent;
import me.SuperRonanCraft.BetterRTP.references.worlds.RTPWorld; import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.RTPWorld;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;

View File

@ -1,6 +1,6 @@
package me.SuperRonanCraft.BetterRTP.references.customEvents; package me.SuperRonanCraft.BetterRTP.references.customEvents;
import me.SuperRonanCraft.BetterRTP.references.worlds.RTPWorld; import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.RTPWorld;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.Event; import org.bukkit.event.Event;

View File

@ -1,6 +1,6 @@
package me.SuperRonanCraft.BetterRTP.references.customEvents; package me.SuperRonanCraft.BetterRTP.references.customEvents;
import me.SuperRonanCraft.BetterRTP.references.worlds.WORLD_TYPE; import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WORLD_TYPE;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.Event; import org.bukkit.event.Event;

View File

@ -1,7 +1,7 @@
package me.SuperRonanCraft.BetterRTP.references.database; package me.SuperRonanCraft.BetterRTP.references.database;
import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTPCooldown; import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownData;
import java.sql.Connection; import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
@ -68,7 +68,7 @@ public class DatabaseCooldowns extends SQLite {
} }
//Set a player Cooldown //Set a player Cooldown
public void setCooldown(UUID uuid, Long time, int uses) { public void setCooldown(CooldownData data) {
String pre = "INSERT OR REPLACE INTO "; String pre = "INSERT OR REPLACE INTO ";
String sql = pre + table + " (" String sql = pre + table + " ("
+ COLUMNS.UUID.name + ", " + COLUMNS.UUID.name + ", "
@ -76,22 +76,22 @@ public class DatabaseCooldowns extends SQLite {
+ COLUMNS.USES.name + " " + COLUMNS.USES.name + " "
+ ") VALUES(?, ?, ?)"; + ") VALUES(?, ?, ?)";
List<Object> params = new ArrayList<>() {{ List<Object> params = new ArrayList<>() {{
add(uuid.toString()); add(data.getUuid().toString());
add(time); add(data.getTime());
add(uses); add(data.getUses());
}}; }};
sqlUpdate(sql, params); sqlUpdate(sql, params);
} }
//Update multiple players cooldowns //Update multiple players cooldowns
public void setCooldown(List<RTPCooldown.CooldownData> cooldownData) { public void setCooldown(List<CooldownData> cooldownData) {
String pre = "INSERT OR REPLACE INTO "; String pre = "INSERT OR REPLACE INTO ";
String sql = pre + table + " (" String sql = pre + table + " ("
+ COLUMNS.UUID.name + ", " + COLUMNS.UUID.name + ", "
+ COLUMNS.COOLDOWN_DATE.name + ", " + COLUMNS.COOLDOWN_DATE.name + ", "
+ COLUMNS.USES.name + " " + COLUMNS.USES.name + " "
+ ") VALUES(?, ?, ?)"; + ") VALUES(?, ?, ?)";
for (RTPCooldown.CooldownData data : cooldownData) { for (CooldownData data : cooldownData) {
List<Object> param = new ArrayList<>() {{ List<Object> param = new ArrayList<>() {{
add(data.uuid.toString()); add(data.uuid.toString());
add(data.time); add(data.time);

View File

@ -2,7 +2,7 @@ package me.SuperRonanCraft.BetterRTP.references.depends;
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics; import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.references.worlds.WorldPlayer; import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldPlayer;
import net.milkbowl.vault.economy.Economy; import net.milkbowl.vault.economy.Economy;
import net.milkbowl.vault.economy.EconomyResponse; import net.milkbowl.vault.economy.EconomyResponse;
import org.bukkit.GameMode; import org.bukkit.GameMode;

View File

@ -0,0 +1,18 @@
package me.SuperRonanCraft.BetterRTP.references.rtpinfo;
import lombok.Getter;
import lombok.Setter;
import java.util.UUID;
public class CooldownData {
@Getter private final UUID uuid;
@Getter @Setter private Long time;
@Getter @Setter int uses;
public CooldownData(UUID uuid, Long time, int uses) {
this.uuid = uuid;
this.time = time;
this.uses = uses;
}
}

View File

@ -1,9 +1,11 @@
package me.SuperRonanCraft.BetterRTP.player.rtp; package me.SuperRonanCraft.BetterRTP.references.rtpinfo;
import lombok.Getter; import lombok.Getter;
import me.SuperRonanCraft.BetterRTP.player.PlayerInfo;
import me.SuperRonanCraft.BetterRTP.references.database.DatabaseCooldowns; import me.SuperRonanCraft.BetterRTP.references.database.DatabaseCooldowns;
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics; import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownData;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
@ -16,11 +18,10 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
public class RTPCooldown { public class CooldownHandler {
private final HashMap<UUID, Long> cooldowns = new HashMap<>(); //Cooldown timer for each player //private final HashMap<UUID, Long> cooldowns = new HashMap<>(); //Cooldown timer for each player
private HashMap<UUID, Integer> uses = null; //Players locked from rtp'ing ever again //private HashMap<UUID, Integer> uses = null; //Players locked from rtp'ing ever again
public final DatabaseCooldowns database = new DatabaseCooldowns();
@Getter boolean enabled; @Getter boolean enabled;
private int private int
timer, //Cooldown timer timer, //Cooldown timer
@ -28,37 +29,31 @@ public class RTPCooldown {
public void load() { public void load() {
//configfile = new File(BetterRTP.getInstance().getDataFolder(), "data/cooldowns.yml"); //configfile = new File(BetterRTP.getInstance().getDataFolder(), "data/cooldowns.yml");
cooldowns.clear(); getPInfo().getCooldown().clear();
if (uses != null)
uses.clear();
FileBasics.FILETYPE config = FileBasics.FILETYPE.CONFIG; FileBasics.FILETYPE config = FileBasics.FILETYPE.CONFIG;
enabled = config.getBoolean("Settings.Cooldown.Enabled"); enabled = config.getBoolean("Settings.Cooldown.Enabled");
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");
if (lockedAfter > 0) //if (lockedAfter > 0)
uses = new HashMap<>(); // uses = new HashMap<>();
} }
Bukkit.getScheduler().runTaskAsynchronously(BetterRTP.getInstance(), () -> { Bukkit.getScheduler().runTaskAsynchronously(BetterRTP.getInstance(), () -> {
database.load(); getDatabase().load();
OldCooldownConverter.loadOldCooldowns(database); OldCooldownConverter.loadOldCooldowns();
//Load any online players cooldowns (mostly after a reload) //Load any online players cooldowns (mostly after a reload)
for (Player p : Bukkit.getOnlinePlayers()) for (Player p : Bukkit.getOnlinePlayers())
loadPlayer(p.getUniqueId()); loadPlayer(p.getUniqueId());
}); });
} }
public void add(UUID id) { public void add(Player player) {
if (!enabled) return; if (!enabled) return;
cooldowns.put(id, System.currentTimeMillis()); CooldownData data = getPInfo().getCooldown().getOrDefault(player,
if (lockedAfter > 0) { new CooldownData(player.getUniqueId(), System.currentTimeMillis(), 0));
if (uses.containsKey(id)) if (lockedAfter > 0)
uses.put(id, uses.get(id) + 1); data.setUses(data.getUses() + 1);
else savePlayer(data);
uses.put(id, 1);
savePlayer(id, true, cooldowns.get(id), uses.get(id));
} else
savePlayer(id, true, cooldowns.get(id), 0);
} }
public boolean exists(UUID id) { public boolean exists(UUID id) {
@ -76,27 +71,29 @@ public class RTPCooldown {
return false; return false;
} }
public void removeCooldown(UUID id) { public void removeCooldown(Player player) {
if (!enabled) return; if (!enabled) return;
CooldownData data = getPInfo().getCooldown().get(player);
if (data != null)
if (lockedAfter > 0) { if (lockedAfter > 0) {
uses.put(id, uses.getOrDefault(id, 1) - 1); //uses.put(id, uses.getOrDefault(id, 1) - 1);
if (uses.get(id) <= 0) { //Remove from file as well if (data.getUses() <= 0) { //Remove from file as well
savePlayer(id, false, 0L, 0); savePlayer(data, true);
getPInfo().getCooldown().remove(player);
} else { //Keep the player cached } else { //Keep the player cached
savePlayer(id, false, cooldowns.get(id), uses.get(id)); savePlayer(data, false);
} }
cooldowns.remove(id);
} else { //Remove completely } else { //Remove completely
cooldowns.remove(id); getPInfo().getCooldown().remove(player);
savePlayer(id, false, 0L, 0); savePlayer(data, true);
} }
} }
private void savePlayer(UUID uuid, boolean adding, long time, int attempts) { private void savePlayer(CooldownData data, boolean remove) {
if (adding) { if (!remove) {
database.setCooldown(uuid, time, attempts); getDatabase().setCooldown(data);
} else { } else {
database.removePlayer(uuid); getDatabase().removePlayer(data.getUuid());
} }
/*YamlConfiguration config = getFile(); /*YamlConfiguration config = getFile();
if (config == null) { if (config == null) {
@ -141,7 +138,7 @@ public class RTPCooldown {
public void loadPlayer(UUID uuid) { public void loadPlayer(UUID uuid) {
if (isEnabled()) { if (isEnabled()) {
List<Object> data = database.getCooldown(uuid); List<Object> data = getDatabase().getCooldown(uuid);
if (data != null) { if (data != null) {
cooldowns.put(uuid, (Long) data.get(0)); cooldowns.put(uuid, (Long) data.get(0));
uses.put(uuid, (int) data.get(1)); uses.put(uuid, (int) data.get(1));
@ -171,7 +168,7 @@ public class RTPCooldown {
static class OldCooldownConverter { static class OldCooldownConverter {
static void loadOldCooldowns(DatabaseCooldowns database) { static void loadOldCooldowns() {
File file = new File(BetterRTP.getInstance().getDataFolder(), "data/cooldowns.yml"); File file = new File(BetterRTP.getInstance().getDataFolder(), "data/cooldowns.yml");
YamlConfiguration config = getFile(file); YamlConfiguration config = getFile(file);
if (config == null) return; if (config == null) return;
@ -195,7 +192,7 @@ public class RTPCooldown {
} }
BetterRTP.getInstance().getLogger().info("Cooldowns converting to new database..."); BetterRTP.getInstance().getLogger().info("Cooldowns converting to new database...");
Bukkit.getScheduler().runTaskAsynchronously(BetterRTP.getInstance(), () -> { Bukkit.getScheduler().runTaskAsynchronously(BetterRTP.getInstance(), () -> {
database.setCooldown(cooldownData); BetterRTP.getInstance().getDatabase().setCooldown(cooldownData);
BetterRTP.getInstance().getLogger().info("Cooldowns have been converted to the new database!"); BetterRTP.getInstance().getLogger().info("Cooldowns have been converted to the new database!");
}); });
} }
@ -221,15 +218,11 @@ public class RTPCooldown {
} }
} }
public static class CooldownData { private DatabaseCooldowns getDatabase() {
public UUID uuid; return BetterRTP.getInstance().getDatabase();
public Long time;
public int uses;
CooldownData(UUID uuid, Long time, int uses) {
this.uuid = uuid;
this.time = time;
this.uses = uses;
} }
private PlayerInfo getPInfo() {
return BetterRTP.getInstance().getpInfo();
} }
} }

View File

@ -1,4 +1,4 @@
package me.SuperRonanCraft.BetterRTP.references.worlds; package me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_SHAPE; import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_SHAPE;
import org.bukkit.World; import org.bukkit.World;

View File

@ -1,8 +1,7 @@
package me.SuperRonanCraft.BetterRTP.references.worlds; package me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds;
import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_SHAPE; import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_SHAPE;
import org.bukkit.World;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package me.SuperRonanCraft.BetterRTP.references.worlds; package me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds;
public enum WORLD_TYPE { public enum WORLD_TYPE {
NORMAL, //Normal world type finds the tallest safe block NORMAL, //Normal world type finds the tallest safe block

View File

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

View File

@ -1,4 +1,4 @@
package me.SuperRonanCraft.BetterRTP.references.worlds; package me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_SHAPE; import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_SHAPE;
@ -6,7 +6,6 @@ import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.BetterRTP;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.World; import org.bukkit.World;
import scala.Int;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package me.SuperRonanCraft.BetterRTP.references.worlds; package me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds;
import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_SHAPE; import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_SHAPE;

View File

@ -1,4 +1,4 @@
package me.SuperRonanCraft.BetterRTP.references.worlds; package me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds;
import me.SuperRonanCraft.BetterRTP.player.commands.RTP_SETUP_TYPE; import me.SuperRonanCraft.BetterRTP.player.commands.RTP_SETUP_TYPE;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTPPermissionGroup; import me.SuperRonanCraft.BetterRTP.player.rtp.RTPPermissionGroup;
@ -7,7 +7,6 @@ import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_SHAPE;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.WorldBorder; import org.bukkit.WorldBorder;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import java.util.ArrayList; import java.util.ArrayList;