feat: player management/check

This commit is contained in:
ineanto 2023-07-15 23:06:47 +02:00
parent 119392320b
commit 6fae824fe2
5 changed files with 130 additions and 1 deletions

View file

@ -106,6 +106,7 @@ public class AppearanceManager {
if (!actionResult.isError()) {
this.profile.setSkin(null);
this.profile.setName(null);
dataStore.getCache().cache(uuid, profile);
}
return actionResult;
}

View file

@ -1,6 +1,7 @@
package xyz.atnrch.nicko.gui;
import xyz.atnrch.nicko.gui.items.admin.ManageCacheItem;
import xyz.atnrch.nicko.gui.items.admin.ManagePlayerItem;
import xyz.atnrch.nicko.gui.items.common.GoBackItem;
import org.bukkit.entity.Player;
import xyz.xenondevs.invui.gui.Gui;
@ -16,10 +17,11 @@ public class AdminGUI {
this.gui = Gui.normal()
.setStructure(
"# # # # # # # # #",
"# # # S U U # # #",
"# # # S C U # # #",
"B # # # # # # # #"
)
.addIngredient('S', new ManageCacheItem())
.addIngredient('C', new ManagePlayerItem())
.addIngredient('B', new GoBackItem(parent.getGUI(), parent.getTitle()))
.build();
this.player = player;

View file

@ -0,0 +1,53 @@
package xyz.atnrch.nicko.gui;
import org.bukkit.Bukkit;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import xyz.atnrch.nicko.gui.items.admin.check.PlayerInformationItem;
import xyz.atnrch.nicko.gui.items.common.GoBackItem;
import xyz.atnrch.nicko.gui.items.common.ScrollDownItem;
import xyz.atnrch.nicko.gui.items.common.ScrollUpItem;
import xyz.xenondevs.invui.gui.Gui;
import xyz.xenondevs.invui.gui.ScrollGui;
import xyz.xenondevs.invui.gui.structure.Markers;
import xyz.xenondevs.invui.item.Item;
import xyz.xenondevs.invui.window.Window;
import java.util.List;
import java.util.stream.Collectors;
public class PlayerCheckGUI {
public static final String TITLE = "Nicko > Admin... > Check";
private final Player player;
private final Gui gui;
public PlayerCheckGUI(Player player) {
final List<Item> items = Bukkit.getOnlinePlayers().stream()
.map(Entity::getUniqueId)
.map(PlayerInformationItem::new)
.collect(Collectors.toList());
final AdminGUI parent = new AdminGUI(player);
gui = ScrollGui.items(guiItemBuilder -> {
guiItemBuilder.setStructure(
"x x x x x x x x U",
"x x x x x x x x #",
"x x x x x x x x #",
"x x x x x x x x #",
"x x x x x x x x D",
"B % % % % % % % %");
guiItemBuilder.addIngredient('x', Markers.CONTENT_LIST_SLOT_HORIZONTAL);
guiItemBuilder.addIngredient('U', new ScrollUpItem());
guiItemBuilder.addIngredient('D', new ScrollDownItem());
guiItemBuilder.addIngredient('B', new GoBackItem(parent.getGUI(), parent.getTitle()));
guiItemBuilder.setContent(items);
});
this.player = player;
}
public void open() {
Window.single().setGui(gui).setTitle(TITLE).open(player);
}
}

View file

@ -0,0 +1,31 @@
package xyz.atnrch.nicko.gui.items.admin;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.jetbrains.annotations.NotNull;
import xyz.atnrch.nicko.gui.PlayerCheckGUI;
import xyz.xenondevs.invui.item.builder.ItemBuilder;
import xyz.xenondevs.invui.item.impl.SuppliedItem;
public class ManagePlayerItem extends SuppliedItem {
public ManagePlayerItem() {
super(() -> {
final ItemBuilder builder = new ItemBuilder(Material.WRITABLE_BOOK);
builder.setDisplayName("Check a player...");
builder.addLoreLines("§7See players' disguise information.");
return builder;
},
click -> true);
}
@Override
public void handleClick(@NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent
event) {
if (clickType.isLeftClick() || clickType.isRightClick()) {
event.getView().close();
new PlayerCheckGUI(player).open();
}
}
}

View file

@ -0,0 +1,42 @@
package xyz.atnrch.nicko.gui.items.admin.check;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import xyz.atnrch.nicko.NickoBukkit;
import xyz.atnrch.nicko.appearance.AppearanceManager;
import xyz.atnrch.nicko.mojang.MojangAPI;
import xyz.xenondevs.invui.item.builder.ItemBuilder;
import xyz.xenondevs.invui.item.builder.SkullBuilder;
import xyz.xenondevs.invui.item.impl.AsyncItem;
import java.util.UUID;
public class PlayerInformationItem extends AsyncItem {
private final MojangAPI mojangAPI = NickoBukkit.getInstance().getMojangAPI();
public PlayerInformationItem(UUID uuid) {
super(new ItemBuilder(Material.PAINTING).setDisplayName("§7§oLoading..."), () -> {
final Player player = Bukkit.getPlayer(uuid);
final SkullBuilder skull = new SkullBuilder(uuid);
final AppearanceManager appearanceManager = AppearanceManager.get(player);
if (appearanceManager.hasData()) {
skull.addLoreLines(
"§cNicked: §a✔",
"§cName: §6" + appearanceManager.getName(),
"§cSkin: §6" + appearanceManager.getSkin()
);
} else {
skull.addLoreLines(
"§cNicked: §c❌",
"§cName: §7N/A",
"§cSkin: §7N/A"
);
}
skull.setDisplayName("§6" + player.getName());
return skull;
});
}
}