mirror of
https://github.com/arcadiadevs/hubcore.git
synced 2024-11-25 06:45:11 +01:00
Compass optimizations
This commit is contained in:
parent
17671b49e6
commit
12d928b4c2
@ -5,11 +5,15 @@ import java.io.File;
|
|||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
import org.hibernate.SessionFactory;
|
import org.hibernate.SessionFactory;
|
||||||
|
import os.arcadiadevs.playerservers.hubcore.cache.ServerCache;
|
||||||
import os.arcadiadevs.playerservers.hubcore.commands.CommandManager;
|
import os.arcadiadevs.playerservers.hubcore.commands.CommandManager;
|
||||||
import os.arcadiadevs.playerservers.hubcore.controllers.NodesController;
|
import os.arcadiadevs.playerservers.hubcore.controllers.NodesController;
|
||||||
import os.arcadiadevs.playerservers.hubcore.controllers.ServersController;
|
import os.arcadiadevs.playerservers.hubcore.controllers.ServersController;
|
||||||
@ -43,6 +47,9 @@ public class PsHubCore extends JavaPlugin {
|
|||||||
@Getter
|
@Getter
|
||||||
private NodesController nodesController;
|
private NodesController nodesController;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
private ServerCache serverCache;
|
||||||
|
|
||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
@ -100,11 +107,11 @@ public class PsHubCore extends JavaPlugin {
|
|||||||
spiGui = new SpiGUI(this);
|
spiGui = new SpiGUI(this);
|
||||||
|
|
||||||
// Initialize ServerCache
|
// Initialize ServerCache
|
||||||
//serverCache = new ServerCache();
|
serverCache = new ServerCache(serversController);
|
||||||
|
|
||||||
// Create ServerCache refreshing task
|
// Create ServerCache refreshing task
|
||||||
//ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
|
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
|
||||||
//executor.scheduleAtFixedRate(serverCache, 1, getConfig().getInt("cache-time"), TimeUnit.SECONDS);
|
executor.scheduleAtFixedRate(serverCache, 1, getConfig().getInt("cache.cache-time"), TimeUnit.SECONDS);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
30
src/main/java/os/arcadiadevs/playerservers/hubcore/cache/ServerCache.java
vendored
Normal file
30
src/main/java/os/arcadiadevs/playerservers/hubcore/cache/ServerCache.java
vendored
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
package os.arcadiadevs.playerservers.hubcore.cache;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import lombok.Getter;
|
||||||
|
import os.arcadiadevs.playerservers.hubcore.controllers.ServersController;
|
||||||
|
import os.arcadiadevs.playerservers.hubcore.models.CachedServer;
|
||||||
|
|
||||||
|
public class ServerCache implements Runnable {
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
private final HashSet<CachedServer> servers;
|
||||||
|
|
||||||
|
private final ServersController serversController;
|
||||||
|
|
||||||
|
public ServerCache(ServersController serversController) {
|
||||||
|
this.serversController = serversController;
|
||||||
|
this.servers = new HashSet<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Refreshes the cache.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
HashSet<CachedServer> newCache = new HashSet<>();
|
||||||
|
serversController.getServers().forEach(server -> newCache.add(new CachedServer(server)));
|
||||||
|
servers.clear();
|
||||||
|
servers.addAll(newCache);
|
||||||
|
}
|
||||||
|
}
|
@ -29,14 +29,22 @@ public class SelectorGui {
|
|||||||
final var instance = PsHubCore.getInstance();
|
final var instance = PsHubCore.getInstance();
|
||||||
final var menu = instance.getSpiGui()
|
final var menu = instance.getSpiGui()
|
||||||
.create(ChatUtil.translate(instance.getConfig().getString("gui.selector.menu.name")), 5);
|
.create(ChatUtil.translate(instance.getConfig().getString("gui.selector.menu.name")), 5);
|
||||||
|
final var useCache = instance.getConfig().getBoolean("cache.enabled");
|
||||||
|
|
||||||
menu.setAutomaticPaginationEnabled(true);
|
menu.setAutomaticPaginationEnabled(true);
|
||||||
menu.setBlockDefaultInteractions(true);
|
menu.setBlockDefaultInteractions(true);
|
||||||
|
|
||||||
final var servers = PsHubCore.getInstance()
|
final var servers = useCache
|
||||||
|
?
|
||||||
|
PsHubCore.getInstance()
|
||||||
|
.getServerCache()
|
||||||
|
.getServers()
|
||||||
|
:
|
||||||
|
PsHubCore.getInstance()
|
||||||
.getServersController()
|
.getServersController()
|
||||||
.getServers();
|
.getServers();
|
||||||
|
|
||||||
|
|
||||||
servers.forEach(server -> {
|
servers.forEach(server -> {
|
||||||
final var onlinexMaterial =
|
final var onlinexMaterial =
|
||||||
XMaterial.matchXMaterial(instance.getConfig().getString("gui.selector.menu.online.block"))
|
XMaterial.matchXMaterial(instance.getConfig().getString("gui.selector.menu.online.block"))
|
||||||
@ -46,21 +54,23 @@ public class SelectorGui {
|
|||||||
instance.getConfig().getString("gui.selector.menu.offline.block"))
|
instance.getConfig().getString("gui.selector.menu.offline.block"))
|
||||||
.orElse(XMaterial.RED_TERRACOTTA).parseItem();
|
.orElse(XMaterial.RED_TERRACOTTA).parseItem();
|
||||||
|
|
||||||
|
final var serverInfo = server.getInfo();
|
||||||
|
|
||||||
final var itemBuilder = new ItemBuilder(
|
final var itemBuilder = new ItemBuilder(
|
||||||
server.getStatus() == ServerStatus.ONLINE ? onlinexMaterial : offlinexMaterial);
|
serverInfo.status() == ServerStatus.ONLINE ? onlinexMaterial : offlinexMaterial);
|
||||||
final var online = server.getStatus() == ServerStatus.ONLINE;
|
final var online = serverInfo.status() == ServerStatus.ONLINE;
|
||||||
|
|
||||||
var lore = instance.getConfig().getStringList(
|
var lore = instance.getConfig().getStringList(
|
||||||
server.getStatus() == ServerStatus.ONLINE ? "gui.selector.menu.online.lore" :
|
serverInfo.status() == ServerStatus.ONLINE ? "gui.selector.menu.online.lore" :
|
||||||
"gui.selector.menu.offline.lore");
|
"gui.selector.menu.offline.lore");
|
||||||
|
|
||||||
lore = lore.stream()
|
lore = lore.stream()
|
||||||
.map(s -> s.replaceAll("%server%", server.getId()))
|
.map(s -> s.replaceAll("%server%", server.getId()))
|
||||||
.map(s -> s.replaceAll("%status%", online ? "&aOnline" : "&cOffline"))
|
.map(s -> s.replaceAll("%status%", online ? "&aOnline" : "&cOffline"))
|
||||||
.map(s -> s.replaceAll("%players%", online ? server.getInfo().players() + "" : "0"))
|
.map(s -> s.replaceAll("%players%", online ? serverInfo.players() + "" : "0"))
|
||||||
.map(s -> s.replaceAll("%maxplayers%", online ? server.getInfo().maxPlayers() + "" : "0"))
|
.map(s -> s.replaceAll("%maxplayers%", online ? serverInfo.maxPlayers() + "" : "0"))
|
||||||
.map(s -> s.replaceAll("%port%", server.getDefaultAllocation().getPort() + ""))
|
.map(s -> s.replaceAll("%port%", server.getDefaultAllocation().getPort() + ""))
|
||||||
.map(s -> s.replaceAll("%motd%", online ? server.getInfo().motd() : "&cOffline"))
|
.map(s -> s.replaceAll("%motd%", online ? serverInfo.motd() : "&cOffline"))
|
||||||
.map(s -> s.replaceAll("%node%", server.getNode().getName()))
|
.map(s -> s.replaceAll("%node%", server.getNode().getName()))
|
||||||
.map(s -> s.replaceAll("%owner%", server.getOfflinePlayer().getName()))
|
.map(s -> s.replaceAll("%owner%", server.getOfflinePlayer().getName()))
|
||||||
.map(s -> s.replaceAll("%ip%", server.getNode().getIp()))
|
.map(s -> s.replaceAll("%ip%", server.getNode().getIp()))
|
||||||
@ -71,10 +81,10 @@ public class SelectorGui {
|
|||||||
online ? "gui.selector.menu.online.name" : "gui.selector.menu.offline.name")
|
online ? "gui.selector.menu.online.name" : "gui.selector.menu.offline.name")
|
||||||
.replaceAll("%server%", server.getId())
|
.replaceAll("%server%", server.getId())
|
||||||
.replaceAll("%status%", online ? "&aOnline" : "&cOffline")
|
.replaceAll("%status%", online ? "&aOnline" : "&cOffline")
|
||||||
.replaceAll("%players%", online ? server.getInfo().players() + "" : "0")
|
.replaceAll("%players%", online ? serverInfo.players() + "" : "0")
|
||||||
.replaceAll("%maxplayers%", online ? server.getInfo().maxPlayers() + "" : "0")
|
.replaceAll("%maxplayers%", online ? serverInfo.maxPlayers() + "" : "0")
|
||||||
.replaceAll("%port%", server.getDefaultAllocation().getPort() + "")
|
.replaceAll("%port%", server.getDefaultAllocation().getPort() + "")
|
||||||
.replaceAll("%motd%", online ? server.getInfo().motd() : "&cOffline")
|
.replaceAll("%motd%", online ? serverInfo.motd() : "&cOffline")
|
||||||
.replaceAll("%node%", server.getNode().getName())
|
.replaceAll("%node%", server.getNode().getName())
|
||||||
.replaceAll("%owner%", server.getOfflinePlayer().getName())
|
.replaceAll("%owner%", server.getOfflinePlayer().getName())
|
||||||
.replaceAll("%ip%", server.getNode().getIp())
|
.replaceAll("%ip%", server.getNode().getIp())
|
||||||
|
@ -0,0 +1,43 @@
|
|||||||
|
package os.arcadiadevs.playerservers.hubcore.models;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
import os.arcadiadevs.playerservers.hubcore.enums.ServerStatus;
|
||||||
|
import os.arcadiadevs.playerservers.hubcore.utils.ServerPinger;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
public class CachedServer extends Server {
|
||||||
|
|
||||||
|
private ServerStatus status;
|
||||||
|
|
||||||
|
private ServerPinger.PingResult pingResult;
|
||||||
|
|
||||||
|
public CachedServer(Server server) {
|
||||||
|
this.setId(server.getId());
|
||||||
|
this.setExternalId(server.getExternalId());
|
||||||
|
this.setExternalUuid(server.getExternalUuid());
|
||||||
|
this.setOwner(server.getOwner());
|
||||||
|
this.setNode(server.getNode());
|
||||||
|
this.setAllocations(server.getAllocations());
|
||||||
|
this.setDefaultAllocation(server.getDefaultAllocation());
|
||||||
|
|
||||||
|
ServerPinger.PingResult pingResult = server.getInfo();
|
||||||
|
|
||||||
|
setStatus(pingResult.status());
|
||||||
|
setPingResult(pingResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ServerPinger.PingResult getInfo() {
|
||||||
|
System.out.println("Getting cached info");
|
||||||
|
return pingResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ServerStatus getStatus() {
|
||||||
|
System.out.println("Getting cached status");
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -14,7 +14,11 @@ mysql:
|
|||||||
debug: false
|
debug: false
|
||||||
get-from-file: false
|
get-from-file: false
|
||||||
|
|
||||||
# For how long should we keep Server Data cached?
|
cache:
|
||||||
|
# Should we cache Server Data for the servers gui?
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
# For how long should we keep Server Data cached? (in seconds)
|
||||||
cache-time: 20
|
cache-time: 20
|
||||||
|
|
||||||
messages:
|
messages:
|
||||||
|
Loading…
Reference in New Issue
Block a user