From 6374afd543da6044135f2327d3023baa94682ff8 Mon Sep 17 00:00:00 2001 From: wolf Date: Tue, 18 Mar 2025 15:57:27 -0500 Subject: [PATCH] Gotta debug NBT gui --- .gradle/8.5/checksums/checksums.lock | Bin 17 -> 17 bytes .gradle/8.5/checksums/sha1-checksums.bin | Bin 170603 -> 170657 bytes .../8.5/executionHistory/executionHistory.bin | Bin 2135719 -> 2135719 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .gradle/8.5/fileHashes/fileHashes.bin | Bin 272319 -> 272319 bytes .gradle/8.5/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../8.5/fileHashes/resourceHashesCache.bin | Bin 202309 -> 202683 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .gradle/file-system.probe | Bin 8 -> 8 bytes .../server/gui/config/AntiNukeGUI.class | Bin 10037 -> 10207 bytes .../compileJava/previous-compilation-data.bin | Bin 90924 -> 90950 bytes .../sentinel/data/storage/NBTStorage.java | 39 +++++++----------- .../events/violations/players/ChatEvent.java | 2 +- .../sentinel/server/gui/PaginatedGUI.java | 15 +++++-- .../sentinel/server/gui/nbt/NBTGui.java | 6 +++ .../server/gui/whitelist/NewWhitelistGUI.java | 26 +++++++++++- 16 files changed, 59 insertions(+), 29 deletions(-) diff --git a/.gradle/8.5/checksums/checksums.lock b/.gradle/8.5/checksums/checksums.lock index 57f4afc622aecba6516ef75baeaa3af152938a09..706773bb46b5672b85e1269a901ca2325a034e75 100644 GIT binary patch literal 17 VcmZSfyWC&;{v_{G1~A~!0suLz1jzsZ literal 17 VcmZSfyWC&;{v_{G1~A}J1pqmx1jGOU diff --git a/.gradle/8.5/checksums/sha1-checksums.bin b/.gradle/8.5/checksums/sha1-checksums.bin index fe187f19621f9415d7ebb8e33ae7a0296091b888..d90089405ea357179bf88dae54acdf10a78f1fc4 100644 GIT binary patch delta 109 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 MLjt_r1r^Kx4Wt3_qyPW_ delta 3680 zcmds)X;f547RTxE9yD9~y6Ns$>?9dI42+Gn3n!zQYXd)m>NHi{}XuBmK zpn&9-%b)u$jnLKfDxEwlE_Q9N6rsAOtz8etj6(x@g_m$`DStT>CvyoWOxLd~V&O->G`A=f|Sth+kGU+$*W; zQxyc3j`z$VRE>6qM zp1&X~Gc`LcFR+VBsp_RqimYGCIBNb$8KH7w_VQ2H1qP4i&es-~Mi z9_VN`??3fyE9|b7xxhchqXPQlrjP6TAohUF1~Od`Llxj0@}gL0VG(hZy_WFgj5wIu zLG&js$d}&9ceHPiDCsgDlj~$2f2bvqj4xfmt6g<6FS?S)>|0V5{V9){gR($+JCAD) z$~@_E9<|mYFB*8%nTWk9QUH$8>?C>@FLs-VL#QeuHoBoOx|$cCOl5-qz^d=1{`4MR z&6&moLc<{$L+|7Bj%kcPyd?Q&eC{ZhM$&tEOm2{A=>0r;*@=9p8jR3C5lx`#2#s+^ z(R3qkH^x{7QAdeb?T-BDBfOYXAPJzGcsyJnQPanG)WtGy(HxIr2a!8{n8(;c2@4l> zEF)|txw2gXy1Pq|hyq@W*aw74oL}a1aXjM=Q%Qb>&pUpUz6Aw1r>^20 zs+1_)_$G0b6;R!2p|Y1Aly`iamgHD0~Pgbu0^a(n%2If9)& z18U98Ms*%dH@)#+2YA)CT`Lk^iO!h?*sv3(h+ZPQo zXA2~Xf_tqiJioZIIcA*UbeQFboT$CT&-X*l!h3vsuQNQ^Dsh88Km0lmiTT(MPpg>2 zWb2P6Ql*5V{gJB>F!d?_g`i}cL=K<&BSu)kOUIl*+aj}q(?qK0rAvok2voK*T@PPdKN(62 z3v3v2rfLak!;n^ZgzqTRL4U7U3cJGaY>yE$KNWv=S_yq0h9ao12)Tu$*;FT?Pr~sB z=scl|;V6OXBIG;?Eixn87aBB27kIXUE+)NI=rh# zgI+z_weWI6(<2|Q|50F@U=JK>b8wU!{OLk~r;%tJdi`28 zz`N_p!6ORULufi)mo=?;sFWz=3M)yvmZZh$tabeB7p#rg=~J#fC%`lPrF@(Bt)0W+ zdn2M|ME6A5Vku zsZR#pwNr#rGFT_-458AgXdKl*sBJ2`L!Bp7wwQer&Q3!~!czY6wb5k@88xItqlHvC znQB`m8%*sdG@8k}P<4bRWU=GnofveJY9y&97U`%KLL0O3v)T#OXR|68ibbBnPMr2B z&#R!{S?mIFacE}bLW?=iU!=)4MGZfD{@se@H}R`z*L}9;s()AfM*qt9M`JF|#nQZk zuzu_(TNUZ$*Qcay+IJ00uU|Q#yWg6F8`Z{p<4!H!pZtI6JTY%8HTQC&+UT zo}tNQv+oR~oHvczI24a?SmCh7VS~dKhaEQ*Z=ZDN|6cY@cfgZ8ySKTn5tJz4c0ae7 zA>^{m97g{BSH0&qTyqHhpZ9#fUWYQ@zvSDy$^Xk~yNm3&b$SIQQEblm)bd`~{I6@F Zv%&oM$yfEG1rh)N literal 17 VcmZSnD(U&&^z=?{1~3pg4gfUm1nB?( diff --git a/.gradle/8.5/fileHashes/fileHashes.bin b/.gradle/8.5/fileHashes/fileHashes.bin index c13e6e91931399ec774e495428952f9a19996b53..2c67f2a0d78557af29de958dc1ee449c2ea1d948 100644 GIT binary patch delta 2596 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 literal 17 VcmZR+zH2oTgY?$~1~6E&0RS>F1r7iJ diff --git a/.gradle/8.5/fileHashes/resourceHashesCache.bin b/.gradle/8.5/fileHashes/resourceHashesCache.bin index 340d4d466a19801f30ca4e8aefe22d1523246819..4d42b382f7b50722691c5fb42dfb7fbea5bf066b 100644 GIT binary patch delta 721 zcmX@QhG+MBo(&Cq7}Yj6?pevtACwcDG$Yr90R))ETqi4@naMxfYc8{o{tu|w>dhO^ zSaUNj+$?+JLpWo=c0L2f6+8mx7sY$7SfKhEqDXw^_H{Olkplb~SGFzMR%AEbwtr}5TEHZbvLo5W?)KtnsLi3G^S0Qj1xC1HV8wE;@ZL##s#z^aUYWzZjP|7H21qVKmaJjJw$k4ai{qv8vZ?LY_JP@jHm8xx;Ema2_l=dI213Y)xn zjoOYXPyU!7Tz|FV#9_fr{@q6+S~PyEQ~?c1 z?H#6yppL2W_j&9tFL7G2WJ5Ev7p97(vM!!;??~78J&4#4tX=UKp<=Rh5GTL++^u!X z?&SESzkesB93DPdutd1tS9JH#(U=zzJa;_tm@f?N?ifsam?ZZQ!D zc^}Q?28phJxs+dOKU+Crep0wlJf;dArVlymGfp2p6wsY7c_DTWLWK;>nk9RZZ!x)E QSQd6pM%}Hqr4*zD0F;r}v;Y7A delta 219 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 Wei|poEJldunk^i*TR1R&Q33!LAH!7u delta 480 zcmX?hjCIX1)(zb30%EzE`#UmcoqiNF{r&%1zW&Y9?5&IfrC||^c{n)w(}n*%IyNJU zW%34&EP-Z(SGtDk);BQwwVMm)>_C`7%%nayR~A`0nb!jiIKp_2`4r;}=G{z{`S+M=Hpi*oViw|E$uf)aEAuR-Rg4>eYJkRV_R%h8 z5qQMN$gI%D7{tJEi;Ez{daH=`8bk#w*MRfGTXhGqH0)?4G>Yei}RbEJlz& Onu8p+2RSf)Q33#0 { public Map caughtItems = new HashMap<>(); - public static ItemStack toItem(String data) { - try { - byte[] bytes = Base64.getDecoder().decode(data); - ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes); - ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream); - ItemStack item = (ItemStack) objectInputStream.readObject(); - objectInputStream.close(); - return item; - } catch (IOException | ClassNotFoundException e) { - Sentinel.getInstance().getLogger().warning("Could not deserialize ItemStack: " + e.getMessage()); - return null; + public static ItemStack toItem(String serializedString) { + if (serializedString.equals("null")) return null; + byte[] decodedBytes = Base64.getDecoder().decode(serializedString); + String mapString = new String(decodedBytes); + // Remove the curly braces and split by commas to get key-value pairs + String[] keyValuePairs = mapString.substring(1, mapString.length() - 1).split(", "); + Map deserializedMap = new HashMap<>(); + for (String pair : keyValuePairs) { + String[] keyValue = pair.split("="); + deserializedMap.put(keyValue[0], keyValue[1]); } + ItemStack item = ItemStack.deserialize(deserializedMap); + return item; } - - public static String toB64(ItemStack item) { - try { - ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream); - objectOutputStream.writeObject(item); - objectOutputStream.close(); - return Base64.getEncoder().encodeToString(byteArrayOutputStream.toByteArray()); - } catch (IOException e) { - Sentinel.getInstance().getLogger().warning("Could not serialize ItemStack: " + e.getMessage()); - return null; - } + + public static String toB64(ItemStack itemStack) { + Map serializedMap = itemStack.serialize(); + return Base64.getEncoder().encodeToString(serializedMap.toString().getBytes()); } } diff --git a/src/main/java/me/trouper/sentinel/server/events/violations/players/ChatEvent.java b/src/main/java/me/trouper/sentinel/server/events/violations/players/ChatEvent.java index 73e98c7..8751e45 100644 --- a/src/main/java/me/trouper/sentinel/server/events/violations/players/ChatEvent.java +++ b/src/main/java/me/trouper/sentinel/server/events/violations/players/ChatEvent.java @@ -60,7 +60,7 @@ public class ChatEvent implements CustomListener { UrlFilterGUI.updater.invokeCallbacks(e); ProfanityFilterGUI.updater.invokeCallbacks(e); SpamFilterGUI.updater.invokeCallbacks(e); - NewWhitelistGUI. + NewWhitelistGUI.updater.invokeCallbacks(e); DangerousCommand.updater.invokeCallbacks(e); LoggedCommand.updater.invokeCallbacks(e); SpecificCommand.updater.invokeCallbacks(e); diff --git a/src/main/java/me/trouper/sentinel/server/gui/PaginatedGUI.java b/src/main/java/me/trouper/sentinel/server/gui/PaginatedGUI.java index 1fbdbef..714326e 100644 --- a/src/main/java/me/trouper/sentinel/server/gui/PaginatedGUI.java +++ b/src/main/java/me/trouper/sentinel/server/gui/PaginatedGUI.java @@ -23,6 +23,8 @@ public abstract class PaginatedGUI { protected static final Map> activeFilters = new HashMap<>(); protected static final Map chosenOperator = new HashMap<>(); + protected abstract CustomGui backGUI(); + public CustomGui createGUI(Player p) { ServerUtils.verbose("Creating GUI for player: %s", p.getName()); int page = currentPages.compute(p.getUniqueId(), (k, v) -> realizePage(p, v == null ? 0 : v)); @@ -40,10 +42,10 @@ public abstract class PaginatedGUI { protected abstract String getTitle(Player p); protected void setupPage(Player p, Inventory inv) { - ServerUtils.verbose("Setting up page for player: %s", p.getName()); + ServerUtils.verbose(1,"Setting up page for player: %s", p.getName()); int page = currentPages.compute(p.getUniqueId(), (k, v) -> realizePage(p, v == null ? 0 : v)); List filtered = filterEntries(p, chosenOperator.computeIfAbsent(p.getUniqueId(), v -> FilterOperator.AND)); - ServerUtils.verbose("Current page: %d, Total entries: %d", page, filtered.size()); + ServerUtils.verbose(1,"Current page: %d, Total entries: %d", page, filtered.size()); // Clear previous items for (int i = 0; i < ITEMS_PER_PAGE; i++) { @@ -67,7 +69,7 @@ public abstract class PaginatedGUI { protected abstract ItemStack createDisplayItem(T item); protected void openFilterMenu(Player p) { - ServerUtils.verbose("Creating filter menu for %s", p); + ServerUtils.verbose(1,"Creating filter menu for %s", p); Set filters = activeFilters.computeIfAbsent(p.getUniqueId(), k -> new HashSet<>()); CustomGui.GuiBuilder filterGui = CustomGui.create() @@ -101,6 +103,10 @@ public abstract class PaginatedGUI { protected void changePage(Player p, int direction) { int current = currentPages.getOrDefault(p.getUniqueId(), 0); + if (current + direction < 0) { + p.openInventory(backGUI().getInventory()); + return; + } int newPage = realizePage(p, current + direction); currentPages.put(p.getUniqueId(), newPage); p.openInventory(createGUI(p).getInventory()); @@ -114,6 +120,9 @@ public abstract class PaginatedGUI { } private ItemStack createNavigationItem(String direction, int pageTo) { + if (pageTo < 0) { + return Items.BACK; + } return new ItemBuilder() .material(Material.ARROW) .name(Text.color("&b" + direction + "&7 Page")) diff --git a/src/main/java/me/trouper/sentinel/server/gui/nbt/NBTGui.java b/src/main/java/me/trouper/sentinel/server/gui/nbt/NBTGui.java index 2335c2c..fea408c 100644 --- a/src/main/java/me/trouper/sentinel/server/gui/nbt/NBTGui.java +++ b/src/main/java/me/trouper/sentinel/server/gui/nbt/NBTGui.java @@ -5,6 +5,7 @@ import io.github.itzispyder.pdk.plugin.gui.CustomGui; import io.github.itzispyder.pdk.utils.misc.Pair; import me.trouper.sentinel.Sentinel; import me.trouper.sentinel.data.storage.NBTStorage; +import me.trouper.sentinel.server.gui.MainGUI; import me.trouper.sentinel.server.gui.PaginatedGUI; import me.trouper.sentinel.utils.ServerUtils; import me.trouper.sentinel.utils.Text; @@ -25,6 +26,11 @@ public class NBTGui extends PaginatedGUI> { this.nbtStorage = Sentinel.getInstance().getDirector().io.nbtStorage; } + @Override + protected CustomGui backGUI() { + return new MainGUI().home; + } + @Override protected String getTitle(Player p) { return Text.color("&6&lItem Ownership &7(" + getFilterCount(p) + " items)"); diff --git a/src/main/java/me/trouper/sentinel/server/gui/whitelist/NewWhitelistGUI.java b/src/main/java/me/trouper/sentinel/server/gui/whitelist/NewWhitelistGUI.java index 6bfd6b1..229b18a 100644 --- a/src/main/java/me/trouper/sentinel/server/gui/whitelist/NewWhitelistGUI.java +++ b/src/main/java/me/trouper/sentinel/server/gui/whitelist/NewWhitelistGUI.java @@ -32,6 +32,11 @@ public class NewWhitelistGUI extends PaginatedGUI { private static final Map chosenPlayer = new HashMap<>(); + @Override + protected CustomGui backGUI() { + return new MainGUI().home; + } + @Override protected String getTitle(Player p) { return Text.color("&6&lCommand Blocks &7(" + getFilterCount(p) + " filters)"); @@ -94,9 +99,26 @@ public class NewWhitelistGUI extends PaginatedGUI { e -> { if (e.isLeftClick()) toggleFilter(p, "USER"); else if (e.isRightClick()) { - + queuePlayer(p,(cfg,value)->{ + chosenPlayer.put(p.getUniqueId(),value.getAll().toString()); + },chosenPlayer.getOrDefault(p.getUniqueId(),"null")); } - }) + }); + } + + public static ConfigUpdater updater = new ConfigUpdater<>(Sentinel.getInstance().getDirector().io.violationConfig); + protected void queuePlayer(Player player, BiConsumer 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+"))); + player.sendMessage(Text.prefix("Value updated successfully")); + openFilterMenu(player); + }); + 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))); } @Override