Player data memory improvements

This commit is contained in:
RonanCraft 2021-10-07 12:06:35 -04:00
parent f0c219c52e
commit 9c27e30c10
27 changed files with 247 additions and 189 deletions

View File

@ -10,7 +10,7 @@ public class PartyData {
final Player leader; final Player leader;
List<Player> members = new ArrayList<>(); List<Player> members = new ArrayList<>();
PartyData(Player leader) { public PartyData(Player leader) {
this.leader = leader; this.leader = leader;
} }

View File

@ -0,0 +1,14 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.partyrtp;
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_SettingUpEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
public class PartyHandler implements Listener {
//Dissallow players from teleporting unless all party members are ready
@EventHandler
public void onRTP(RTP_SettingUpEvent e) {
}
}

View File

@ -5,7 +5,7 @@ import org.bukkit.Location;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
public class PartyMessages implements AddonsMessages { public class PartyMessages implements AddonsMessages {
private static final String preM = "Portals."; private static final String preM = "Party.";
public void getWarning(CommandSender sendi) { public void getWarning(CommandSender sendi) {
sms(sendi, getLang().getString(preM + "Warning")); sms(sendi, getLang().getString(preM + "Warning"));
@ -15,70 +15,10 @@ public class PartyMessages implements AddonsMessages {
return getLang().getString("Help.Portals"); return getLang().getString("Help.Portals");
} }
//Create //Invite
public void getCreateConfirm(CommandSender sendi, String name) { public void getInvite(CommandSender sendi, String name) {
sms(sendi, getLang().getString(preM + "Created.Confirmation.Default").replace("%name%", name)); sms(sendi, getLang().getString(preM + "Invite").replace("%name%", name));
}
public void getCreateConfirmWorld(CommandSender sendi, String name, String world) {
sms(sendi, getLang().getString(preM + "Created.Confirmation.Destination").replace("%name%", name).replace("%world%", world));
}
public void getCreateInvalid(CommandSender sendi) {
sms(sendi, getLang().getString(preM + "Created.Invalid"));
}
public void getCreateName(CommandSender sendi) {
sms(sendi, getLang().getString(preM + "Created.Name"));
}
public void getCreateDuplicate(CommandSender sendi) {
sms(sendi, getLang().getString(preM + "Created.Duplicate"));
}
//Location
public void getLocation_1(CommandSender sendi, Location loc) {
sms(sendi, getLang().getString(preM + "Location.1")
.replace("%location%", "x:" + loc.getBlockX() + ", y:" + loc.getBlockY() + ", z:" + loc.getBlockZ()));
}
public void getLocation_2(CommandSender sendi, Location loc) {
sms(sendi, getLang().getString(preM + "Location.2")
.replace("%location%", "x:" + loc.getBlockX() + ", y:" + loc.getBlockY() + ", z:" + loc.getBlockZ()));
}
public void getLocation_Look(CommandSender sendi) {
sms(sendi, getLang().getString(preM + "Location.Look"));
}
public void getLocation_Ready(CommandSender sendi) {
sms(sendi, getLang().getString(preM + "Location.Ready").replace("%command%", "rtp"));
}
//Remove
public void getRemoveConfirm(CommandSender sendi, String name) {
sms(sendi, getLang().getString(preM + "Remove.Confirm").replace("%name%", name));
}
public void getRemoveNone(CommandSender sendi, String name) {
sms(sendi, getLang().getString(preM + "Remove.None").replace("%name%", name));
}
//List
public String getListPrefix() {
return getLang().getString(preM + "List.Prefix");
}
public String getListPortal() {
return getLang().getString(preM + "List.Portal");
}
public void getListNone(CommandSender sendi) {
sms(sendi, getLang().getString(preM + "List.None"));
} }
//Usages //Usages

View File

@ -20,7 +20,8 @@ public class PartyCommand_Invite implements PartyCommands, PartyCommandsTabable
if (HelperParty.isInParty(p)) if (HelperParty.isInParty(p))
party = HelperParty.getParty(p); party = HelperParty.getParty(p);
else else
party = new PartyData() party = new PartyData(p);
} }
//rtp party invite [args] //rtp party invite [args]

View File

@ -27,6 +27,9 @@ MagicStick:
Give: '&dMagic Stick&7 has been given to &a%player%' Give: '&dMagic Stick&7 has been given to &a%player%'
Given: '&7A &dMagic Stick&7 has been given to you' Given: '&7A &dMagic Stick&7 has been given to you'
Player: '&cWhoops! &7Seems like their is no player by the name of &a%player% &7online!' Player: '&cWhoops! &7Seems like their is no player by the name of &a%player% &7online!'
Party:
Invite: '&f%player_name% has been invited to an rtp party!'
Invited: '&f%player_name% has invited you to join their rtp party!'
Addons: Addons:
List: List:
Prefix: '&e&m-----&6&l BetterRTP &7&lAddons &8| Addons Info &e&m-----' Prefix: '&e&m-----&6&l BetterRTP &7&lAddons &8| Addons Info &e&m-----'

View File

@ -14,6 +14,7 @@ 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.rtpinfo.CooldownHandler;
import me.SuperRonanCraft.BetterRTP.references.settings.Settings; import me.SuperRonanCraft.BetterRTP.references.settings.Settings;
import me.SuperRonanCraft.BetterRTP.references.systems.playerdata.PlayerDataManager;
import me.SuperRonanCraft.BetterRTP.references.web.Metrics; import me.SuperRonanCraft.BetterRTP.references.web.Metrics;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@ -32,6 +33,7 @@ public class BetterRTP extends JavaPlugin {
private final Files files = new Files(); private final Files files = new Files();
private final RTPInventories invs = new RTPInventories(); private final RTPInventories invs = new RTPInventories();
private final PlayerInfo pInfo = new PlayerInfo(); private final PlayerInfo pInfo = new PlayerInfo();
@Getter private final PlayerDataManager playerDataManager = new PlayerDataManager();
private final Settings settings = new Settings(); private final Settings settings = new Settings();
@Getter private final DatabaseCooldowns databaseCooldowns = new DatabaseCooldowns(); @Getter private final DatabaseCooldowns databaseCooldowns = new DatabaseCooldowns();
@Getter private final CooldownHandler cooldowns = new CooldownHandler(); @Getter private final CooldownHandler cooldowns = new CooldownHandler();
@ -112,7 +114,7 @@ public class BetterRTP extends JavaPlugin {
//(Re)Load all plugin systems/files/cache //(Re)Load all plugin systems/files/cache
private void loadAll() { private void loadAll() {
pInfo.unloadAll(); playerDataManager.clear();
files.loadAll(); files.loadAll();
settings.load(); settings.load();
invs.load(); invs.load();

View File

@ -4,58 +4,63 @@ import lombok.Getter;
import lombok.Setter; 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 me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownData;
import org.bukkit.Location;
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;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.UUID; import java.util.UUID;
public class PlayerInfo { public class PlayerInfo {
@Getter private final HashMap<Player, Inventory> invs = new HashMap<>(); private final HashMap<Player, Inventory> invs = new HashMap<>();
@Getter private final HashMap<Player, RTP_INV_SETTINGS> invType = new HashMap<>(); private final HashMap<Player, RTP_INV_SETTINGS> invType = new HashMap<>();
@Getter private final HashMap<Player, World> invWorld = new HashMap<>(); private final HashMap<Player, World> invWorld = new HashMap<>();
@Getter private final HashMap<Player, RTP_INV_SETTINGS> invNextInv = new HashMap<>(); private final HashMap<Player, RTP_INV_SETTINGS> invNextInv = new HashMap<>();
@Getter private final HashMap<Player, CooldownData> cooldown = new HashMap<>(); private final HashMap<Player, CooldownData> cooldown = new HashMap<>();
@Getter private final HashMap<Player, Boolean> rtping = new HashMap<>(); private final HashMap<Player, Boolean> rtping = new HashMap<>();
private final HashMap<Player, List<Location>> previousLocations = new HashMap<>();
//private final HashMap<Player, RTP_TYPE> rtpType = new HashMap<>(); //private final HashMap<Player, RTP_TYPE> rtpType = new HashMap<>();
public void setInv(Player p, Inventory inv) { private void setInv(Player p, Inventory inv) {
invs.put(p, inv); invs.put(p, inv);
} }
public void setInvType(Player p, RTP_INV_SETTINGS type) { private void setInvType(Player p, RTP_INV_SETTINGS type) {
invType.put(p, type); invType.put(p, type);
} }
public void setInvWorld(Player p, World type) { private void setInvWorld(Player p, World type) {
invWorld.put(p, type); invWorld.put(p, type);
} }
public void setNextInv(Player p, RTP_INV_SETTINGS type) { private void setNextInv(Player p, RTP_INV_SETTINGS type) {
invNextInv.put(p, type); invNextInv.put(p, type);
} }
//--Logic-- //--Logic--
public Boolean playerExists(Player p) { private Boolean playerExists(Player p) {
return invs.containsKey(p); return invs.containsKey(p);
} }
public void unloadAll() { private void unloadAll() {
invs.clear(); invs.clear();
invType.clear(); invType.clear();
invWorld.clear(); invWorld.clear();
invNextInv.clear(); invNextInv.clear();
cooldown.clear(); cooldown.clear();
rtping.clear(); rtping.clear();
previousLocations.clear();
} }
public void unload(Player p) { private void unload(Player p) {
clearInvs(p); clearInvs(p);
cooldown.remove(p); cooldown.remove(p);
rtping.remove(p); rtping.remove(p);
previousLocations.remove(p);
} }
public void clearInvs(Player p) { public void clearInvs(Player p) {

View File

@ -3,6 +3,8 @@ package me.SuperRonanCraft.BetterRTP.player.events;
import me.SuperRonanCraft.BetterRTP.references.invs.RTPInventories; import me.SuperRonanCraft.BetterRTP.references.invs.RTPInventories;
import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.player.PlayerInfo; import me.SuperRonanCraft.BetterRTP.player.PlayerInfo;
import me.SuperRonanCraft.BetterRTP.references.systems.HelperPlayer;
import me.SuperRonanCraft.BetterRTP.references.systems.playerdata.PlayerData;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryClickEvent;
@ -18,10 +20,10 @@ public class Click {
private void handler(InventoryClickEvent e) { private void handler(InventoryClickEvent e) {
try { try {
PlayerInfo pInfo = BetterRTP.getInstance().getpInfo();
Player p = (Player) e.getWhoClicked(); Player p = (Player) e.getWhoClicked();
PlayerData data = HelperPlayer.getData(p);
RTPInventories menu = BetterRTP.getInstance().getInvs(); RTPInventories menu = BetterRTP.getInstance().getInvs();
menu.getInv(pInfo.getInvType().get(p)).clickEvent(e); menu.getInv(data.getMenu().getInvType()).clickEvent(e);
} catch (NullPointerException ex) { } catch (NullPointerException ex) {
//ex.printStackTrace(); //ex.printStackTrace();
} }
@ -36,11 +38,11 @@ public class Click {
return false; return false;
else if (e.getWhoClicked() instanceof Player) { else if (e.getWhoClicked() instanceof Player) {
// Clicks the inventory // Clicks the inventory
if (!e.getInventory().equals(BetterRTP.getInstance().getpInfo().getInvs().get((Player) e.getWhoClicked()))) PlayerData data = HelperPlayer.getData((Player) e.getWhoClicked());
if (!e.getInventory().equals(data.getMenu().getInv()))
return false; return false;
// Clicks their own inventory // Clicks their own inventory
else if (!e.getClickedInventory().equals(BetterRTP.getInstance().getpInfo().getInvs().get((Player) e else if (!e.getClickedInventory().equals(data.getMenu().getInv())) {
.getWhoClicked()))) {
e.setCancelled(true); e.setCancelled(true);
return false; return false;
} }

View File

@ -1,17 +1,13 @@
package me.SuperRonanCraft.BetterRTP.player.events; package me.SuperRonanCraft.BetterRTP.player.events;
import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.references.systems.HelperPlayer;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
import java.util.UUID;
class Leave { class Leave {
void event(PlayerQuitEvent e) { void event(PlayerQuitEvent e) {
BetterRTP pl = BetterRTP.getInstance();
Player p = e.getPlayer(); Player p = e.getPlayer();
pl.getpInfo().getRtping().remove(p); HelperPlayer.unload(p);
pl.getpInfo().unload(p);
} }
} }

View File

@ -7,6 +7,7 @@ import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.PluginManager;
public class Listener implements org.bukkit.event.Listener { public class Listener implements org.bukkit.event.Listener {
@ -55,6 +56,11 @@ public class Listener implements org.bukkit.event.Listener {
click.click(e); click.click(e);
} }
@EventHandler
private void teleport(PlayerTeleportEvent e) {
Teleport.tpEvent(e);
}
/*@EventHandler /*@EventHandler
private void enablePlugin(PluginEnableEvent e) { private void enablePlugin(PluginEnableEvent e) {
pEnable.enabled(e); pEnable.enabled(e);

View File

@ -0,0 +1,14 @@
package me.SuperRonanCraft.BetterRTP.player.events;
import me.SuperRonanCraft.BetterRTP.references.systems.HelperPlayer;
import me.SuperRonanCraft.BetterRTP.references.systems.playerdata.PlayerData;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerTeleportEvent;
public class Teleport {
static void tpEvent(PlayerTeleportEvent e) {
Player p = e.getPlayer();
PlayerData data = HelperPlayer.getData(p);
}
}

View File

@ -2,6 +2,7 @@ package me.SuperRonanCraft.BetterRTP.player.rtp;
import lombok.Getter; import lombok.Getter;
import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_SettingUpEvent;
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.rtpinfo.worlds.*;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@ -111,6 +112,11 @@ public class RTP {
} }
public void start(RTPSetupInformation setup_info) { public void start(RTPSetupInformation setup_info) {
if (new RTP_SettingUpEvent(setup_info.player).isCancelled()) {
return;
}
String world_name = setup_info.world; String world_name = setup_info.world;
Player p = setup_info.player; Player p = setup_info.player;
CommandSender sendi = setup_info.sender; CommandSender sendi = setup_info.sender;

View File

@ -1,5 +1,18 @@
package me.SuperRonanCraft.BetterRTP.references.customEvents; package me.SuperRonanCraft.BetterRTP.references.customEvents;
public interface RTPEvent { import org.bukkit.event.Event;
//Used purely to grab these classes during runtime without distinct class reference import org.bukkit.event.HandlerList;
public class RTPEvent extends Event {
private static final HandlerList handler = new HandlerList();
@Override
public HandlerList getHandlers() {
return handler;
}
public static HandlerList getHandlerList() {
return handler;
}
} }

View File

@ -1,16 +0,0 @@
package me.SuperRonanCraft.BetterRTP.references.customEvents;
public enum RTPEvents {
CANCELLED(RTP_CancelledEvent.class),
COMMAND(RTP_CommandEvent.class),
FINDLOCATION(RTP_FindLocationEvent.class),
TELEPORT(RTP_TeleportEvent.class),
TELEPORTPOST(RTP_TeleportPostEvent.class),
TELEPORTPRE(RTP_TeleportPreEvent.class);
public Class cl;
RTPEvents(Class cl) {
this.cl = cl;
}
}

View File

@ -4,7 +4,7 @@ import org.bukkit.entity.Player;
import org.bukkit.event.Event; import org.bukkit.event.Event;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
public class RTP_CancelledEvent extends Event implements RTPEvent { //Called when a delayed rtp is cancelled cause player moved public class RTP_CancelledEvent extends RTPEvent { //Called when a delayed rtp is cancelled cause player moved
Player p; Player p;
private static final HandlerList handler = new HandlerList(); private static final HandlerList handler = new HandlerList();
@ -16,13 +16,4 @@ public class RTP_CancelledEvent extends Event implements RTPEvent { //Called whe
public Player getPlayer() { public Player getPlayer() {
return p; return p;
} }
@Override
public HandlerList getHandlers() {
return handler;
}
public static HandlerList getHandlerList() {
return handler;
}
} }

View File

@ -6,7 +6,7 @@ import org.bukkit.command.CommandSender;
import org.bukkit.event.Event; import org.bukkit.event.Event;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
public class RTP_CommandEvent extends Event implements RTPEvent { public class RTP_CommandEvent extends RTPEvent {
CommandSender sendi; CommandSender sendi;
RTPCommand cmd; RTPCommand cmd;
@ -24,13 +24,4 @@ public class RTP_CommandEvent extends Event implements RTPEvent {
public RTPCommand getCmd() { public RTPCommand getCmd() {
return cmd; return cmd;
} }
@Override
public HandlerList getHandlers() {
return handler;
}
public static HandlerList getHandlerList() {
return handler;
}
} }

View File

@ -6,12 +6,11 @@ import org.bukkit.entity.Player;
import org.bukkit.event.Event; import org.bukkit.event.Event;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
public class RTP_FindLocationEvent extends Event implements RTPEvent { public class RTP_FindLocationEvent extends RTPEvent {
Player p; Player p;
RTPWorld world; RTPWorld world;
Location loc = null; Location loc = null;
private static final HandlerList handler = new HandlerList();
public RTP_FindLocationEvent(Player p, RTPWorld world) { public RTP_FindLocationEvent(Player p, RTPWorld world) {
this.p = p; this.p = p;
@ -33,13 +32,4 @@ public class RTP_FindLocationEvent extends Event implements RTPEvent {
public Player getPlayer() { public Player getPlayer() {
return p; return p;
} }
@Override
public HandlerList getHandlers() {
return handler;
}
public static HandlerList getHandlerList() {
return handler;
}
} }

View File

@ -0,0 +1,28 @@
package me.SuperRonanCraft.BetterRTP.references.customEvents;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
public class RTP_SettingUpEvent extends RTPEvent implements Cancellable {
Player p;
boolean cancelled = false;
public RTP_SettingUpEvent(Player p) {
this.p = p;
}
public Player getPlayer() {
return p;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public void setCancelled(boolean b) {
cancelled = b;
}
}

View File

@ -6,12 +6,11 @@ import org.bukkit.entity.Player;
import org.bukkit.event.Event; import org.bukkit.event.Event;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
public class RTP_TeleportEvent extends Event implements RTPEvent { public class RTP_TeleportEvent extends RTPEvent {
Player p; Player p;
Location loc; Location loc;
WORLD_TYPE worldType; WORLD_TYPE worldType;
private static final HandlerList handler = new HandlerList();
public RTP_TeleportEvent(Player p, Location loc, WORLD_TYPE worldType) { public RTP_TeleportEvent(Player p, Location loc, WORLD_TYPE worldType) {
this.p = p; this.p = p;
@ -27,15 +26,6 @@ public class RTP_TeleportEvent extends Event implements RTPEvent {
return loc; return loc;
} }
@Override
public HandlerList getHandlers() {
return handler;
}
public static HandlerList getHandlerList() {
return handler;
}
public void changeLocation(Location loc) { public void changeLocation(Location loc) {
this.loc = loc; this.loc = loc;
} }

View File

@ -6,13 +6,12 @@ import org.bukkit.entity.Player;
import org.bukkit.event.Event; import org.bukkit.event.Event;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
public class RTP_TeleportPostEvent extends Event implements RTPEvent { public class RTP_TeleportPostEvent extends RTPEvent {
Player p; Player p;
Location loc; Location loc;
Location oldLoc; Location oldLoc;
RTP_TYPE type; RTP_TYPE type;
private static final HandlerList handler = new HandlerList();
public RTP_TeleportPostEvent(Player p, Location loc, Location oldLoc, RTP_TYPE type) { public RTP_TeleportPostEvent(Player p, Location loc, Location oldLoc, RTP_TYPE type) {
this.p = p; this.p = p;
@ -33,15 +32,6 @@ public class RTP_TeleportPostEvent extends Event implements RTPEvent {
return oldLoc; return oldLoc;
} }
@Override
public HandlerList getHandlers() {
return handler;
}
public static HandlerList getHandlerList() {
return handler;
}
public RTP_TYPE getType() { public RTP_TYPE getType() {
return type; return type;
} }

View File

@ -4,10 +4,9 @@ import org.bukkit.entity.Player;
import org.bukkit.event.Event; import org.bukkit.event.Event;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
public class RTP_TeleportPreEvent extends Event implements RTPEvent { //Called upon every rtp call, does not mean player will be teleported public class RTP_TeleportPreEvent extends RTPEvent { //Called upon every rtp call, does not mean player will be teleported
Player p; Player p;
private static final HandlerList handler = new HandlerList();
public RTP_TeleportPreEvent(Player p) { public RTP_TeleportPreEvent(Player p) {
this.p = p; this.p = p;
@ -17,12 +16,4 @@ public class RTP_TeleportPreEvent extends Event implements RTPEvent { //Called u
return p; return p;
} }
@Override
public HandlerList getHandlers() {
return handler;
}
public static HandlerList getHandlerList() {
return handler;
}
} }

View File

@ -3,6 +3,8 @@ package me.SuperRonanCraft.BetterRTP.references.invs.enums;
import me.SuperRonanCraft.BetterRTP.references.invs.RTP_INV_SETTINGS; import me.SuperRonanCraft.BetterRTP.references.invs.RTP_INV_SETTINGS;
import me.SuperRonanCraft.BetterRTP.BetterRTP; import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.player.PlayerInfo; import me.SuperRonanCraft.BetterRTP.player.PlayerInfo;
import me.SuperRonanCraft.BetterRTP.references.systems.HelperPlayer;
import me.SuperRonanCraft.BetterRTP.references.systems.playerdata.PlayerData;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -34,9 +36,9 @@ public interface RTPInventory_Defaults {
} }
default void cacheInv(Player p, Inventory inv, RTP_INV_SETTINGS type) { default void cacheInv(Player p, Inventory inv, RTP_INV_SETTINGS type) {
PlayerInfo info = BetterRTP.getInstance().getpInfo(); PlayerData info = HelperPlayer.getData(p);
info.setInv(p, inv); info.getMenu().setInv(inv);
info.setInvType(p, type); info.getMenu().setInvType(type);
} }
default Inventory createInv(int size, String title) { default Inventory createInv(int size, String title) {

View File

@ -5,6 +5,8 @@ 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.systems.HelperPlayer;
import me.SuperRonanCraft.BetterRTP.references.systems.playerdata.PlayerData;
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;
@ -28,7 +30,6 @@ public class CooldownHandler {
public void load() { public void load() {
//configfile = new File(BetterRTP.getInstance().getDataFolder(), "data/cooldowns.yml"); //configfile = new File(BetterRTP.getInstance().getDataFolder(), "data/cooldowns.yml");
getPInfo().getCooldown().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");
downloading.clear(); downloading.clear();
@ -58,22 +59,23 @@ public class CooldownHandler {
public void add(Player player) { public void add(Player player) {
if (!enabled) return; if (!enabled) return;
CooldownData data = getPInfo().getCooldown().getOrDefault(player, CooldownData data = getData(player).getCooldown();
new CooldownData(player.getUniqueId(), 0L, 0)); if (data == null)
data = new CooldownData(player.getUniqueId(), 0L, 0);
if (lockedAfter > 0) if (lockedAfter > 0)
data.setUses(data.getUses() + 1); data.setUses(data.getUses() + 1);
data.setTime(System.currentTimeMillis()); data.setTime(System.currentTimeMillis());
getPInfo().getCooldown().put(player, data); getData(player).setCooldown(data);
savePlayer(data, false); savePlayer(data, false);
} }
public boolean exists(Player p) { public boolean exists(Player p) {
return getPInfo().getCooldown().containsKey(p); return getData(p).getCooldown() != null;
} }
@Nullable @Nullable
public CooldownData getPlayer(Player p) { public CooldownData getPlayer(Player p) {
return getPInfo().getCooldown().getOrDefault(p, null); return getData(p).getCooldown();
} }
public long timeLeft(CooldownData data) { public long timeLeft(CooldownData data) {
@ -87,18 +89,18 @@ public class CooldownHandler {
public void removeCooldown(Player player) { public void removeCooldown(Player player) {
if (!enabled) return; if (!enabled) return;
CooldownData data = getPInfo().getCooldown().get(player); CooldownData data = getData(player).getCooldown();
if (data != null) 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 (data.getUses() <= 0) { //Remove from file as well if (data.getUses() <= 0) { //Remove from file as well
savePlayer(data, true); savePlayer(data, true);
getPInfo().getCooldown().remove(player); getData(player).setCooldown(null);
} else { //Keep the player cached } else { //Keep the player cached
savePlayer(data, false); savePlayer(data, false);
} }
} else { //Remove completely } else { //Remove completely
getPInfo().getCooldown().remove(player); getData(player).setCooldown(null);
savePlayer(data, true); savePlayer(data, true);
} }
} }
@ -116,9 +118,9 @@ public class CooldownHandler {
public void loadPlayer(Player player) { public void loadPlayer(Player player) {
downloading.add(player); downloading.add(player);
if (isEnabled()) { if (isEnabled()) {
CooldownData data = getDatabase().getCooldown(player.getUniqueId()); CooldownData cooldown = getDatabase().getCooldown(player.getUniqueId());
if (data != null) if (cooldown != null)
getPInfo().getCooldown().put(player, data); getData(player).setCooldown(cooldown);
} }
downloading.remove(player); downloading.remove(player);
} }
@ -184,7 +186,7 @@ public class CooldownHandler {
return BetterRTP.getInstance().getDatabaseCooldowns(); return BetterRTP.getInstance().getDatabaseCooldowns();
} }
private PlayerInfo getPInfo() { private PlayerData getData(Player p) {
return BetterRTP.getInstance().getpInfo(); return HelperPlayer.getData(p);
} }
} }

View File

@ -0,0 +1,20 @@
package me.SuperRonanCraft.BetterRTP.references.systems;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.references.systems.playerdata.PlayerData;
import org.bukkit.entity.Player;
public class HelperPlayer {
public static PlayerData getData(Player p) {
return getPl().getPlayerDataManager().getData(p);
}
public static void unload(Player p) {
getPl().getPlayerDataManager().clear(p);
}
private static BetterRTP getPl() {
return BetterRTP.getInstance();
}
}

View File

@ -0,0 +1,26 @@
package me.SuperRonanCraft.BetterRTP.references.systems.playerdata;
import lombok.Getter;
import lombok.Setter;
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownData;
import org.bukkit.entity.Player;
public class PlayerData {
public boolean loading; //Is this players data loading?
public final Player player;
//Menus
@Getter final PlayerData_Menus menu = new PlayerData_Menus();
//Player Data
@Getter @Setter CooldownData cooldown;
@Getter @Setter boolean rtping;
PlayerData(Player player) {
this.player = player;
}
public void load(boolean joined) {
//Setup Defaults
//new TaskDownloadPlayerData(this, joined).start();
}
}

View File

@ -0,0 +1,35 @@
package me.SuperRonanCraft.BetterRTP.references.systems.playerdata;
import lombok.NonNull;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.Nullable;
import java.util.HashMap;
import java.util.UUID;
public class PlayerDataManager {
private final HashMap<Player, PlayerData> playerData = new HashMap<>();
public PlayerData getData(@NonNull Player p) {
if (!playerData.containsKey(p))
playerData.put(p, new PlayerData(p));
return playerData.get(p);
}
@Nullable
public PlayerData getData(UUID id) {
for (Player p : playerData.keySet())
if (p.getUniqueId().equals(id))
return playerData.get(p);
return null;
}
public void clear() {
playerData.clear();
}
public void clear(Player p) {
playerData.remove(p);
}
}

View File

@ -0,0 +1,16 @@
package me.SuperRonanCraft.BetterRTP.references.systems.playerdata;
import lombok.Getter;
import lombok.Setter;
import me.SuperRonanCraft.BetterRTP.references.invs.RTP_INV_SETTINGS;
import org.bukkit.World;
import org.bukkit.inventory.Inventory;
public class PlayerData_Menus {
@Getter @Setter private Inventory inv;
@Getter @Setter RTP_INV_SETTINGS invType;
@Getter @Setter World invWorld;
@Getter @Setter RTP_INV_SETTINGS invNextInv;
}