still working on the gui

This commit is contained in:
thetrouper
2025-03-18 07:21:43 -05:00
parent e3fec82a4c
commit 79b4facfb8
4 changed files with 41 additions and 43 deletions

View File

@@ -31,6 +31,7 @@ import me.trouper.sentinel.server.gui.config.chat.ProfanityFilterGUI;
import me.trouper.sentinel.server.gui.config.chat.SpamFilterGUI;
import me.trouper.sentinel.server.gui.config.chat.UnicodeFilterGUI;
import me.trouper.sentinel.server.gui.config.chat.UrlFilterGUI;
import me.trouper.sentinel.server.gui.whitelist.NewWhitelistGUI;
import me.trouper.sentinel.utils.PlayerUtils;
import me.trouper.sentinel.utils.ServerUtils;
import org.bukkit.entity.Player;
@@ -59,6 +60,7 @@ public class ChatEvent implements CustomListener {
UrlFilterGUI.updater.invokeCallbacks(e);
ProfanityFilterGUI.updater.invokeCallbacks(e);
SpamFilterGUI.updater.invokeCallbacks(e);
NewWhitelistGUI.
DangerousCommand.updater.invokeCallbacks(e);
LoggedCommand.updater.invokeCallbacks(e);
SpecificCommand.updater.invokeCallbacks(e);

View File

@@ -16,6 +16,7 @@ import me.trouper.sentinel.server.events.violations.command.DangerousCommand;
import me.trouper.sentinel.server.events.violations.command.LoggedCommand;
import me.trouper.sentinel.server.events.violations.command.SpecificCommand;
import me.trouper.sentinel.server.events.violations.entities.CommandMinecartBreak;
import me.trouper.sentinel.server.events.violations.entities.CommandMinecartEdit;
import me.trouper.sentinel.server.events.violations.entities.CommandMinecartPlace;
import me.trouper.sentinel.server.events.violations.entities.CommandMinecartUse;
import me.trouper.sentinel.server.events.violations.players.CreativeHotbar;
@@ -41,11 +42,11 @@ public class AntiNukeGUI {
})
.define(10,getCheckItem(Material.COMMAND_BLOCK,"Command Block Break"),
e->e.getWhoClicked().openInventory(new CommandBlockBreak().getConfigGui().getInventory()))
.define(11,getCheckItem(Material.REPEATING_COMMAND_BLOCK,"Command Block Edit"),
.define(11,getCheckItem(Material.COMMAND_BLOCK,"Command Block Edit"),
e->e.getWhoClicked().openInventory(new CommandBlockEdit().getConfigGui().getInventory()))
.define(12,getCheckItem(Material.CHAIN_COMMAND_BLOCK,"Command Block Place"),
.define(12,getCheckItem(Material.COMMAND_BLOCK,"Command Block Place"),
e->e.getWhoClicked().openInventory(new CommandBlockPlace().getConfigGui().getInventory()))
.define(13,getCheckItem(Material.CHAIN_COMMAND_BLOCK,"Command Block Use"),
.define(13,getCheckItem(Material.COMMAND_BLOCK,"Command Block Use"),
e->e.getWhoClicked().openInventory(new CommandBlockUse().getConfigGui().getInventory()))
.define(14,getCheckItem(Material.JIGSAW,"Jigsaw Block Break"),
e->e.getWhoClicked().openInventory(new JigsawBlockBreak().getConfigGui().getInventory()))
@@ -65,12 +66,14 @@ public class AntiNukeGUI {
e->e.getWhoClicked().openInventory(new SpecificCommand().getConfigGui().getInventory()))
.define(24,getCheckItem(Material.SPYGLASS,"Logged Commands"),
e->e.getWhoClicked().openInventory(new LoggedCommand().getConfigGui().getInventory()))
.define(25,getCheckItem(Material.TNT_MINECART,"Command Minecart Break"),
.define(25,getCheckItem(Material.COMMAND_BLOCK_MINECART,"Command Minecart Break"),
e->e.getWhoClicked().openInventory(new CommandMinecartBreak().getConfigGui().getInventory()))
.define(29,getCheckItem(Material.COMMAND_BLOCK_MINECART,"Command Minecart Place"),
e->e.getWhoClicked().openInventory(new CommandMinecartPlace().getConfigGui().getInventory()))
.define(30,getCheckItem(Material.COMMAND_BLOCK_MINECART,"Command Minecart Use"),
e->e.getWhoClicked().openInventory(new CommandMinecartUse().getConfigGui().getInventory()))
.define(31,getCheckItem(Material.COMMAND_BLOCK_MINECART,"Command Minecart Edit"),
e->e.getWhoClicked().openInventory(new CommandMinecartEdit().getConfigGui().getInventory()))
.define(32,getCheckItem(Material.DIAMOND_SWORD,"NBT Item Pull"),
e->e.getWhoClicked().openInventory(new CreativeHotbar().getConfigGui().getInventory()))
.define(33,getCheckItem(Material.EMERALD,"Command Block Whitelist"),

View File

@@ -24,15 +24,14 @@ import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.*;
import java.util.function.BiConsumer;
import java.util.stream.Collectors;
public class NewWhitelistGUI extends PaginatedGUI<CommandBlockHolder> {
private static final Map<UUID, String> chosenPlayer = new HashMap<>();
@Override
protected String getTitle(Player p) {
return Text.color("&6&lCommand Blocks &7(" + getFilterCount(p) + " filters)");
@@ -91,6 +90,13 @@ public class NewWhitelistGUI extends PaginatedGUI<CommandBlockHolder> {
filterGui.define(7, createFilterToggleItem("Chain Command Blocks", Material.CHAIN_COMMAND_BLOCK, filters.contains("CHAIN")), e -> toggleFilter(p, "CHAIN"));
filterGui.define(8, createFilterToggleItem("Impulse Command Blocks", Material.COMMAND_BLOCK, filters.contains("IMPULSE")), e -> toggleFilter(p, "IMPULSE"));
filterGui.define(9, createFilterToggleItem("Minecart Commands", Material.COMMAND_BLOCK_MINECART, filters.contains("MINECART")), e -> toggleFilter(p, "MINECART"));
filterGui.define(10, createFilterToggleItemValue("Specific Player",Material.BOW,filters.contains("USER"),chosenPlayer.getOrDefault(p.getUniqueId(),"null")),
e -> {
if (e.isLeftClick()) toggleFilter(p, "USER");
else if (e.isRightClick()) {
}
})
}
@Override
@@ -113,6 +119,7 @@ public class NewWhitelistGUI extends PaginatedGUI<CommandBlockHolder> {
case "WHITELISTED" -> holder.isWhitelisted();
case "NOT_WHITELISTED" -> !holder.isWhitelisted();
case "NOT_PRESENT" -> !holder.present();
case "USER" -> holder.owner().equals(chosenPlayer.get(p.getUniqueId()));
default -> false;
};
result = operator.apply(result, conditionMet);
@@ -200,20 +207,13 @@ public class NewWhitelistGUI extends PaginatedGUI<CommandBlockHolder> {
.build();
}
public static ConfigUpdater<AsyncChatEvent, ViolationConfig> updater = new ConfigUpdater<>(Sentinel.getInstance().getDirector().io.violationConfig);
protected void queuePlayer(Player player, BiConsumer<ViolationConfig, Args> action, String currentValue) {
MainGUI.awaitingCallback.add(player.getUniqueId());
player.closeInventory();
updater.queuePlayer(player, 20*60, (e)->{
e.setCancelled(true);
return LegacyComponentSerializer.legacySection().serialize(e.message());
}, (cfg, newValue) -> {
action.accept(cfg,new Args(newValue.split("\\s+")));
cfg.save();
player.sendMessage(Text.prefix("Value updated successfully"));
player.openInventory(getConfigGui().getInventory());
});
player.sendMessage(Component.text(Text.prefix("Enter the new value in chat. The value is currently set to &b%s&7. (Click to insert)".formatted(currentValue))).clickEvent(ClickEvent.suggestCommand(currentValue)));
private ItemStack createFilterToggleItemValue(String name, Material mat, boolean active, String value) {
return new ItemBuilder()
.material(mat)
.name(Text.color((active ? "&a" : "&c") + name))
.lore(Text.color("&7Value&f: &b" + value))
.lore(Text.color("&7Left Click to " + (active ? "disable" : "enable")))
.lore(Text.color("&7Right Click to set value."))
.build();
}
}

View File

@@ -1,12 +1,20 @@
package me.trouper.sentinel.server.gui.whitelist;
import io.github.itzispyder.pdk.commands.Args;
import io.github.itzispyder.pdk.plugin.builders.ItemBuilder;
import io.github.itzispyder.pdk.plugin.gui.CustomGui;
import io.github.itzispyder.pdk.utils.misc.config.ConfigUpdater;
import io.papermc.paper.event.player.AsyncChatEvent;
import me.trouper.sentinel.Sentinel;
import me.trouper.sentinel.data.config.ViolationConfig;
import me.trouper.sentinel.data.types.CommandBlockHolder;
import me.trouper.sentinel.server.gui.Items;
import me.trouper.sentinel.server.gui.MainGUI;
import me.trouper.sentinel.utils.ServerUtils;
import me.trouper.sentinel.utils.Text;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.event.ClickEvent;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound;
@@ -17,6 +25,7 @@ import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import java.util.*;
import java.util.function.BiConsumer;
import java.util.stream.Collectors;
public class WhitelistGUI {
@@ -24,7 +33,6 @@ public class WhitelistGUI {
private static final Map<UUID, Integer> currentPages = new HashMap<>();
private static final Map<UUID, Set<Filter>> activeFilters = new HashMap<>();
private static final Map<UUID, FilterOperator> chosenOperator = new HashMap<>();
private static final Map<UUID, String> chosenPlayer = new HashMap<>();
public CustomGui createGUI(Player p) {
ServerUtils.verbose("Creating GUI for player: %s", p.getName());
@@ -208,8 +216,7 @@ public class WhitelistGUI {
private enum Filter {
OWNER, CURRENT_WORLD, OTHER_OWNERS,
MINECART, REPEAT, CHAIN, IMPULSE,
WHITELISTED, NOT_WHITELISTED, NOT_PRESENT,
USER
WHITELISTED, NOT_WHITELISTED, NOT_PRESENT
}
public enum FilterOperator {
@@ -249,7 +256,6 @@ public class WhitelistGUI {
case WHITELISTED -> holder.isWhitelisted();
case NOT_WHITELISTED -> !holder.isWhitelisted();
case NOT_PRESENT -> !holder.present();
case USER -> holder.owner().equals(chosenPlayer.get(p.getUniqueId()));
};
result = operator.apply(result, conditionMet);
@@ -293,13 +299,6 @@ public class WhitelistGUI {
e -> toggleFilter(p, Filter.IMPULSE))
.define(9, createFilterToggleItem("Minecart Commands", Material.COMMAND_BLOCK_MINECART, filters.contains(Filter.MINECART)),
e -> toggleFilter(p, Filter.MINECART))
.define(10, createFilterToggleItemValue("Specific Player",Material.BOW,filters.contains(Filter.USER),chosenPlayer.getOrDefault(p.getUniqueId(),"null")),
e -> {
if (e.isLeftClick()) toggleFilter(p,Filter.USER);
else if (e.isRightClick()) {
Callback
}
})
.define(26, Items.BACK,
e-> {
p.playSound(p.getLocation(),Sound.ITEM_BOOK_PAGE_TURN,1,0.8F);
@@ -318,15 +317,7 @@ public class WhitelistGUI {
.build();
}
private ItemStack createFilterToggleItemValue(String name, Material mat, boolean active, String value) {
return new ItemBuilder()
.material(mat)
.name(Text.color((active ? "&a" : "&c") + name))
.lore(Text.color("&7Value&f: &b" + value))
.lore(Text.color("&7Left Click to " + (active ? "disable" : "enable")))
.lore(Text.color("&7Right Click to set value."))
.build();
}
private void toggleFilter(Player p, Filter filter) {
Set<Filter> filters = activeFilters.computeIfAbsent(p.getUniqueId(), k -> new HashSet<>());
@@ -380,4 +371,6 @@ public class WhitelistGUI {
.lore(operatorList)
.build();
}
}