feat: cache stats and ajustements
This commit is contained in:
parent
3f2473aac5
commit
f4e2f9cb46
4 changed files with 57 additions and 9 deletions
|
@ -1,4 +1,4 @@
|
||||||
package net.artelnatif.nicko.gui.items.invalidator;
|
package net.artelnatif.nicko.gui.items.admin.invalidator;
|
||||||
|
|
||||||
import de.studiocode.invui.item.ItemProvider;
|
import de.studiocode.invui.item.ItemProvider;
|
||||||
import de.studiocode.invui.item.builder.ItemBuilder;
|
import de.studiocode.invui.item.builder.ItemBuilder;
|
||||||
|
@ -12,16 +12,17 @@ import org.bukkit.event.inventory.ClickType;
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
public class InvalidateAllItem extends BaseItem {
|
public class SkinCacheInvalidateAllItem extends BaseItem {
|
||||||
@Override
|
@Override
|
||||||
public ItemProvider getItemProvider() {
|
public ItemProvider getItemProvider() {
|
||||||
final ItemBuilder builder = new ItemBuilder(Material.BARRIER);
|
final ItemBuilder builder = new ItemBuilder(Material.BARRIER);
|
||||||
builder.setDisplayName("§fInvalidate §6all §fthe skin cache");
|
builder.setDisplayName("§6Invalidate the full Skin Cache");
|
||||||
builder.addLoreLines(
|
builder.addLoreLines(
|
||||||
"§c§oNOT RECOMMENDED",
|
"§c§oNOT RECOMMENDED",
|
||||||
"§7Invalidate every skin entry present in the cache,",
|
"§7Invalidate every skin entry present in the cache,",
|
||||||
"§7without removing active player disguises.",
|
"§7without resetting player disguises.",
|
||||||
"§7Skins will have to be fetched again if asked by a disguise.");
|
"§7Could be useful if a skin has been updated",
|
||||||
|
"§7recently and the cache is now outdated.");
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
package net.artelnatif.nicko.gui.items.admin.invalidator;
|
||||||
|
|
||||||
|
import com.google.common.cache.CacheStats;
|
||||||
|
import com.google.common.cache.LoadingCache;
|
||||||
|
import de.studiocode.invui.item.ItemProvider;
|
||||||
|
import de.studiocode.invui.item.builder.ItemBuilder;
|
||||||
|
import de.studiocode.invui.item.impl.BaseItem;
|
||||||
|
import net.artelnatif.nicko.NickoBukkit;
|
||||||
|
import net.artelnatif.nicko.mojang.MojangSkin;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.enchantments.Enchantment;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
|
import org.bukkit.inventory.ItemFlag;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
public class SkinCacheStatisticsItem extends BaseItem {
|
||||||
|
@Override
|
||||||
|
public ItemProvider getItemProvider() {
|
||||||
|
final ItemBuilder builder = new ItemBuilder(Material.OAK_SIGN);
|
||||||
|
final LoadingCache<String, Optional<MojangSkin>> cache = NickoBukkit.getInstance().getMojangAPI().getCache();
|
||||||
|
final CacheStats stats = cache.stats();
|
||||||
|
builder.addEnchantment(Enchantment.DAMAGE_ALL, 1, false);
|
||||||
|
builder.addItemFlags(ItemFlag.HIDE_ENCHANTS);
|
||||||
|
builder.setDisplayName("§6Skin Cache overview:");
|
||||||
|
builder.addLoreLines(
|
||||||
|
"§d§oCache is cleared every 24 hours.",
|
||||||
|
"§6Average Load Penalty: §d" + Math.round(stats.averageLoadPenalty()),
|
||||||
|
"§6Request Count: §d" + stats.requestCount(),
|
||||||
|
"§6Skin Cached: §d" + Math.round(cache.size()),
|
||||||
|
"§7§o(Click to refresh)");
|
||||||
|
return builder;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleClick(@NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) {
|
||||||
|
if (clickType.isLeftClick() || clickType.isRightClick()) {
|
||||||
|
notifyWindows();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,22 +4,24 @@ import de.studiocode.invui.gui.GUI;
|
||||||
import de.studiocode.invui.gui.builder.GUIBuilder;
|
import de.studiocode.invui.gui.builder.GUIBuilder;
|
||||||
import de.studiocode.invui.gui.builder.guitype.GUIType;
|
import de.studiocode.invui.gui.builder.guitype.GUIType;
|
||||||
import de.studiocode.invui.window.impl.single.SimpleWindow;
|
import de.studiocode.invui.window.impl.single.SimpleWindow;
|
||||||
|
import net.artelnatif.nicko.gui.items.admin.invalidator.SkinCacheStatisticsItem;
|
||||||
import net.artelnatif.nicko.gui.items.common.BackItem;
|
import net.artelnatif.nicko.gui.items.common.BackItem;
|
||||||
import net.artelnatif.nicko.gui.items.invalidator.InvalidateAllItem;
|
import net.artelnatif.nicko.gui.items.admin.invalidator.SkinCacheInvalidateAllItem;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
public class SkinInvalidatorSelectionGUI {
|
public class SkinInvalidatorSelectionGUI {
|
||||||
private final Player player;
|
private final Player player;
|
||||||
private final GUI gui;
|
private final GUI gui;
|
||||||
private final String[] structure = new String[]{
|
private final String[] structure = new String[]{
|
||||||
"B # # A S",
|
"B # S A #",
|
||||||
};
|
};
|
||||||
|
|
||||||
public SkinInvalidatorSelectionGUI(Player player) {
|
public SkinInvalidatorSelectionGUI(Player player) {
|
||||||
this.gui = new GUIBuilder<>(GUIType.NORMAL)
|
this.gui = new GUIBuilder<>(GUIType.NORMAL)
|
||||||
.setStructure(structure)
|
.setStructure(structure)
|
||||||
.addIngredient('B', new BackItem(new AdminPanelGUI(player).getGUI()))
|
.addIngredient('B', new BackItem(new AdminPanelGUI(player).getGUI()))
|
||||||
.addIngredient('A', new InvalidateAllItem())
|
.addIngredient('A', new SkinCacheInvalidateAllItem())
|
||||||
|
.addIngredient('S', new SkinCacheStatisticsItem())
|
||||||
.build();
|
.build();
|
||||||
this.player = player;
|
this.player = player;
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,8 @@ public class MojangAPI {
|
||||||
};
|
};
|
||||||
private final LoadingCache<String, Optional<MojangSkin>> cache = CacheBuilder
|
private final LoadingCache<String, Optional<MojangSkin>> cache = CacheBuilder
|
||||||
.newBuilder()
|
.newBuilder()
|
||||||
.expireAfterWrite(8, TimeUnit.HOURS)
|
.recordStats()
|
||||||
|
.expireAfterWrite(24, TimeUnit.HOURS)
|
||||||
.build(loader);
|
.build(loader);
|
||||||
|
|
||||||
private final NickoBukkit instance;
|
private final NickoBukkit instance;
|
||||||
|
|
Loading…
Reference in a new issue