Remove some strain on the Database

This commit is contained in:
2025-11-05 17:09:53 +01:00
parent 73b3d21749
commit 0f0c8b763e
6 changed files with 95 additions and 35 deletions
@@ -24,18 +24,27 @@ import de.steamwar.inventory.SWInventory;
import de.steamwar.inventory.SWItem;
import de.steamwar.sql.UserConfig;
import lombok.AllArgsConstructor;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.data.type.Light;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.inventory.meta.BlockDataMeta;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.*;
public class WorldEditRendererCUIEditor {
public class WorldEditRendererCUIEditor implements Listener {
@EventHandler
public void onPlayerQuit(PlayerQuitEvent event) {
for (Type type : Type.values()) {
type.materialCache.remove(event.getPlayer());
type.widthCache.remove(event.getPlayer());
}
}
@AllArgsConstructor
public enum Type {
@@ -43,34 +52,43 @@ public class WorldEditRendererCUIEditor {
CLIPBOARD("cui_clipboard_material", "cui_clipboard_width", Material.LIME_CONCRETE, Width.SLIM),
;
private final Map<Player, Material> materialCache = new HashMap<>();
private final Map<Player, Width> widthCache = new HashMap<>();
private final String configMaterial;
private final String configWidth;
private final Material defaultMaterial;
private final Width defaultWidth;
public Material getMaterial(Player player) {
String material = UserConfig.getConfig(player.getUniqueId(), configMaterial);
if (material == null) {
return defaultMaterial;
} else {
return Material.valueOf(material);
}
return materialCache.computeIfAbsent(player, p -> {
String material = UserConfig.getConfig(p.getUniqueId(), configMaterial);
if (material == null) {
return defaultMaterial;
} else {
return Material.valueOf(material);
}
});
}
public void setMaterial(Player player, Material material) {
materialCache.put(player, material);
UserConfig.updatePlayerConfig(player.getUniqueId(), configMaterial, material.name());
}
public Width getWidth(Player player) {
String width = UserConfig.getConfig(player.getUniqueId(), configWidth);
if (width == null) {
return defaultWidth;
} else {
return Width.valueOf(width);
}
return widthCache.computeIfAbsent(player, p -> {
String width = UserConfig.getConfig(p.getUniqueId(), configWidth);
if (width == null) {
return defaultWidth;
} else {
return Width.valueOf(width);
}
});
}
public void setWidth(Player player, Width width) {
widthCache.put(player, width);
UserConfig.updatePlayerConfig(player.getUniqueId(), configWidth, width.name());
}
}
@@ -90,6 +108,7 @@ public class WorldEditRendererCUIEditor {
public WorldEditRendererCUIEditor() {
if (Core.getVersion() >= 20) {
new Command();
Bukkit.getPluginManager().registerEvents(this, Core.getInstance());
}
}