feat: confirm cache entry delete

This commit is contained in:
ineanto 2023-07-01 22:39:31 +02:00
parent c8c55611a0
commit 228e3c4374
6 changed files with 100 additions and 4 deletions

View file

@ -0,0 +1,34 @@
package xyz.atnrch.nicko.gui;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import xyz.atnrch.nicko.gui.items.confirm.ActionCallback;
import xyz.atnrch.nicko.gui.items.confirm.Cancel;
import xyz.atnrch.nicko.gui.items.confirm.Confirm;
import xyz.xenondevs.invui.gui.Gui;
import xyz.xenondevs.invui.item.builder.ItemBuilder;
import xyz.xenondevs.invui.item.impl.SimpleItem;
import xyz.xenondevs.invui.window.Window;
public class ConfirmGUI {
private final Player player;
private final Gui gui;
public ConfirmGUI(Player player, ActionCallback callback) {
this.gui = Gui.normal()
.setStructure(
"@ @ @ @ % & & & &",
"@ @ @ @ I & & & &",
"@ @ @ @ % & & & &"
)
.addIngredient('@', new Confirm(callback))
.addIngredient('&', new Cancel(callback))
.addIngredient('I', new SimpleItem(new ItemBuilder(Material.PAPER).setDisplayName("§6Select an option").get()))
.build();
this.player = player;
}
public void open() {
Window.single().setGui(gui).setTitle("... > Invalidate > Confirm").open(player);
}
}

View file

@ -8,7 +8,7 @@ import xyz.xenondevs.invui.gui.ScrollGui;
import xyz.xenondevs.invui.gui.structure.Markers;
import xyz.xenondevs.invui.item.Item;
import xyz.atnrch.nicko.NickoBukkit;
import xyz.atnrch.nicko.gui.items.admin.cache.EntryPlaceholder;
import xyz.atnrch.nicko.gui.items.admin.cache.CacheEntry;
import xyz.atnrch.nicko.gui.admin.CacheManagementGUI;
import xyz.atnrch.nicko.gui.items.common.ScrollDown;
import org.bukkit.entity.Player;
@ -34,7 +34,7 @@ public class CacheDetailedGUI {
.collect(Collectors.toList());
final List<Item> items = loadedSkins.stream()
.map(EntryPlaceholder::new)
.map(CacheEntry::new)
.collect(Collectors.toList());
final CacheManagementGUI parent = new CacheManagementGUI(player);

View file

@ -5,14 +5,19 @@ 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.ConfirmGUI;
import xyz.atnrch.nicko.gui.admin.cache.CacheDetailedGUI;
import xyz.atnrch.nicko.gui.items.confirm.ActionCallback;
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 EntryPlaceholder extends AsyncItem {
public EntryPlaceholder(String name) {
public class CacheEntry extends AsyncItem {
private final String name;
public CacheEntry(String name) {
super(new ItemBuilder(Material.PAINTING).setDisplayName("§7§oLoading..."), () -> {
final String stringUUID = name.replaceAll("(.{8})(.{4})(.{4})(.{4})(.+)", "$1-$2-$3-$4-$5");
final UUID uuid = UUID.fromString(stringUUID);
@ -21,12 +26,24 @@ public class EntryPlaceholder extends AsyncItem {
skull.addLoreLines("§7Click to invalidate skin");
return skull;
});
this.name = name;
}
@Override
public void handleClick(@NotNull ClickType click, @NotNull Player player, @NotNull InventoryClickEvent event) {
if (click.isLeftClick() || click.isRightClick()) {
event.getView().close();
new ConfirmGUI(player, new ActionCallback() {
@Override
public void onConfirm() {
player.sendMessage(name + " cleared");
}
@Override
public void onCancel() {
new CacheDetailedGUI(player).open();
}
}).open();
}
}
}

View file

@ -0,0 +1,7 @@
package xyz.atnrch.nicko.gui.items.confirm;
public interface ActionCallback {
void onConfirm();
void onCancel();
}

View file

@ -0,0 +1,19 @@
package xyz.atnrch.nicko.gui.items.confirm;
import org.bukkit.Material;
import xyz.xenondevs.invui.item.builder.ItemBuilder;
import xyz.xenondevs.invui.item.impl.SuppliedItem;
public class Cancel extends SuppliedItem {
public Cancel(ActionCallback callback) {
super(() -> {
final ItemBuilder builder = new ItemBuilder(Material.RED_STAINED_GLASS_PANE);
builder.setDisplayName("§cCancel");
return builder;
}, click -> {
click.getEvent().getView().close();
callback.onCancel();
return true;
});
}
}

View file

@ -0,0 +1,19 @@
package xyz.atnrch.nicko.gui.items.confirm;
import org.bukkit.Material;
import xyz.xenondevs.invui.item.builder.ItemBuilder;
import xyz.xenondevs.invui.item.impl.SuppliedItem;
public class Confirm extends SuppliedItem {
public Confirm(ActionCallback callback) {
super(() -> {
final ItemBuilder builder = new ItemBuilder(Material.GREEN_STAINED_GLASS_PANE);
builder.setDisplayName("§aConfirm");
return builder;
}, click -> {
click.getEvent().getView().close();
callback.onConfirm();
return true;
});
}
}