still working on the gui
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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"),
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user