From 5da010de52c170339b8a5b362dc0474ef92b59e2 Mon Sep 17 00:00:00 2001 From: TheClashFruit Date: Sun, 11 Jun 2023 19:54:01 +0200 Subject: [PATCH] feat: add actions to menu --- .../executionHistory/executionHistory.bin | Bin 116719 -> 116719 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .gradle/7.6.1/fileHashes/fileHashes.bin | Bin 20597 -> 20597 bytes .gradle/7.6.1/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../7.6.1/fileHashes/resourceHashesCache.bin | Bin 19959 -> 20299 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .../hubbit/commands/MenuCommand.java | 13 +++-- .../hubbit/events/MenuListener.java | 47 ++++++++++++++++++ src/main/resources/config.yml | 2 +- 9 files changed, 57 insertions(+), 5 deletions(-) diff --git a/.gradle/7.6.1/executionHistory/executionHistory.bin b/.gradle/7.6.1/executionHistory/executionHistory.bin index 66c8abccfaedbf4e50e05a0aee65dce34bcef4e6..085c36b57c0fa1254e3390893f822e24d3b06709 100644 GIT binary patch delta 546 zcmaFg&;GujeS?UPN@iKPSz(58T4q{WW=U>JnNdk;RZ?bwSw$%W1aLB}nZ8kbWPL_(fF2Ezt*`V`4+cNqh-)Ym|DPEfy zW3RIcPEGrJ{cfZ1jLhD+(53bEPgYM(Ow`&eoUF?zZ_ll8t7~tDX3_1ST^d)ns&9F) z;!c<0jb0`eMg|6n(Cr5%GkR)lUeR;*of1K3{+s;aiRqr%Hrw!k1)z8 zmp$!Ozbmn7I>%8)1(r^rg6TR(8NYi5e*d{nYxcwKjyX&*hqyD0fm+^nur1kjWSYU` zcWDM2SJf;83Y}5(-8(Vyf0^GCHTjG;m-~T2=n=5}k1k^hqkQuTd%2^RBh}D;1aV5j_A2M&Cn761>a>2Lr5 delta 546 zcmaFg&;GujeS?UPN={O4W|C=YR(4Txx@lfccByf3aba3fhKUIS1aL8|nZ8kl-H?XIQ3=)b4)e2_>#=%VClts z&)n`Z>}+IWVPs&C2;F{QGNY%)<`q3>-zgDv=Jv@Sp15v)|3ueeJLew8Hb#M2!R-I% zgmq}2{9pJo{MYQ_$&9g5(+$)ZIVbbQ@Jv6qmoY{tr>}A8y*~#HCP+L#x$A$e5aY(l zhW8|<=M*tYY|q)pxSB~|<{dtcl>PqY1&k##luvg}n*6)BXmZzm%k7sAG9F^mMh}h6 zw~yTFGCZTn%pjmK&*;XIUvn;cTCbR!#QMp8`u-z~a@y!Yv=yvjIS)|7&ei1)UhkE+ z>HlN>&-ftMx#=8785LN*?m2UNy3SF?@1DJ$4>$*W71poL{N^^-PdfYAQ2MVD_!1h17j46!r;cjng9`FAo{NKl| TM8scBbrLx6f35=uzE2APAz|`c diff --git a/.gradle/7.6.1/executionHistory/executionHistory.lock b/.gradle/7.6.1/executionHistory/executionHistory.lock index dfce61e1719094be30c87a1487b9ec0cda7ae9a9..381c7ef2cb58469bb973122f5e7f06c9b712f3e8 100644 GIT binary patch literal 17 VcmZS9%b)qEU-!dC1~6cZ1^_k|1l0fl literal 17 VcmZS9%b)qEU-!dC1~6ch0RT1E1eO2* diff --git a/.gradle/7.6.1/fileHashes/fileHashes.bin b/.gradle/7.6.1/fileHashes/fileHashes.bin index 6d5dfadcd4b97c715fb1ecc61dcfaaa2e85a12ff..4a3e3f90616dc9cfb70d1c42679fbae9d526b84a 100644 GIT binary patch delta 275 zcmeymfbr`B#tnx&ZMzIO8Nh%o6G-V90|`waRs>;z<`edEM=wXJ$*tl&b7#}JMGOp# z9jm(x)PRyeFuiK>f6o;P_S_1$y7p#h7TpforEztuI#iJfL{Zy~&BwjwFewBpYN&ea zi2W6k`q8_Ur!)qvs=93hL>2Gu$<4lH3gWsGbU&@0>?Jkdjc>_$-`ikC^;~=qMdD18 zCH=~RCME1#$GDI+Y3ob%!vZF)8zJ^7dqWg)3jk>}Z}7--Ht0Oiwv4{WciQxKiWk&{ PY!DqnDw`krO<@E8)`d;g delta 275 zcmeymfbr`B#tnx&ZHwhf8Nh%o6G-V90|`waRs>;zaJM%#kN1BP{_o>fBI2*6%D}+b zvAS4p5>OHdrdLk>@3}%jr-I?sn-$D4)!gDsGNXf~p^6qm6g6~iKJGP#Nx`H<>w*5K znOoMx$?tpguJ}Dzm80h+h$>#E$<4lH3VRM5d0jQhKdd&h`%k3*v{#Lyo8!`3ZjVVF_1>{#)Rgj7tTD9E8Wn3YtgZbYk literal 17 VcmZRc?%-)%Z}_B{0Sp+|0RSqq1SJ3f diff --git a/.gradle/7.6.1/fileHashes/resourceHashesCache.bin b/.gradle/7.6.1/fileHashes/resourceHashesCache.bin index d6b1f3ca7e28fee83c849c6ee5aab188a2a411b3..1113cb16c39a6cd307e0e409ea972e3dd54be0da 100644 GIT binary patch delta 593 zcmex9oALBK#tkMCnx>uhy(_Ps^rgHhw#;kj$p zehDjuiq^yI`gN+WZpF<%+E8)H$#*3)1cYJ(<7d^M5r+yM-fSx+z$oDAwezfyp87bCLG><5F+TWIhj?)iHVhSqv8+ojRpe3 zn;kv2vDO;{WhH@F5QGJ;Hg$yY{Z%~nXhlg`-yVZ3pr9P8ihKWGf4iZzX^r5iuiNug z51+tP5wyHLpYu*+a)7quvO4J<+?Xojm#!=NTO@VC{oY;mNf%zEgPe_KP5F)Mfq6fK z*JnCknR7Jcz^%y#eT3_0PnrGV)PcP{N_PD#rLMol)TMrS{_Qt~-eQxL>{hK6Z|%cW zQKw_)9&f%<_aNKx*f_Q?=P*@7%<#LDu-7WWO`-H`{f0dU5GrI~p`^1iP-5=?^80}o NGQZ|m&kF}B0RX+qy3GIp delta 80 zcmX>-kMa9##tkMCg4&(-y(_PsLM`aq9 diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index c5972a477e8f4e1a2d125ef3a8c99fb50a8fb32e..8eb02f4e36b281589707ca28d508c589bf8708a6 100644 GIT binary patch literal 17 VcmZRccI(^z34PIe3}C<*3IIRu1ttIh literal 17 VcmZRccI(^z34PIe3}C=01^_>=1m^$% diff --git a/src/main/java/me/theclashfruit/hubbit/commands/MenuCommand.java b/src/main/java/me/theclashfruit/hubbit/commands/MenuCommand.java index e484f59..9c51cfb 100644 --- a/src/main/java/me/theclashfruit/hubbit/commands/MenuCommand.java +++ b/src/main/java/me/theclashfruit/hubbit/commands/MenuCommand.java @@ -1,6 +1,5 @@ package me.theclashfruit.hubbit.commands; -import me.theclashfruit.hubbit.Hubbit; import me.theclashfruit.hubbit.utils.ConfigLoaderSingleton; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -9,19 +8,17 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.jetbrains.annotations.NotNull; -import java.io.File; import java.util.List; import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; import static org.bukkit.Bukkit.getLogger; -import static org.bukkit.plugin.java.JavaPlugin.getPlugin; public class MenuCommand implements CommandExecutor { @Override @@ -53,7 +50,13 @@ public class MenuCommand implements CommandExecutor { } } + AtomicInteger currentPage = new AtomicInteger(); + menuConfig.getMapList("pages").forEach(page -> { + if(currentPage.get() > 0 && !menuConfig.getBoolean("navigation")) { + return; + } + List> items = (List>) page.get("items"); items.forEach(item -> { @@ -75,6 +78,8 @@ public class MenuCommand implements CommandExecutor { menu.setItem((int) item.get("slot"), itemStack); }); + + currentPage.getAndIncrement(); }); player.openInventory(menu); diff --git a/src/main/java/me/theclashfruit/hubbit/events/MenuListener.java b/src/main/java/me/theclashfruit/hubbit/events/MenuListener.java index 56bb0b7..6bcc35a 100644 --- a/src/main/java/me/theclashfruit/hubbit/events/MenuListener.java +++ b/src/main/java/me/theclashfruit/hubbit/events/MenuListener.java @@ -3,16 +3,63 @@ package me.theclashfruit.hubbit.events; import me.theclashfruit.hubbit.utils.ConfigLoaderSingleton; import org.bukkit.ChatColor; import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryClickEvent; +import java.util.List; +import java.util.Map; + +import static org.bukkit.Bukkit.getLogger; + public class MenuListener implements Listener { @EventHandler public void onClick(InventoryClickEvent event) { FileConfiguration menuConfig = ConfigLoaderSingleton.getInstance().getMenuFileConfig(); + Player player = (Player) event.getWhoClicked(); + if(event.getView().getTitle().equalsIgnoreCase(ChatColor.translateAlternateColorCodes('&', menuConfig.getString("title")))) { + int eventSlot = event.getSlot(); + + menuConfig.getMapList("pages").forEach(page -> { + List> items = (List>) page.get("items"); + + items.forEach(item -> { + if(item.get("slot").equals(eventSlot)) { + List> events = (List>) item.get("events"); + + events.forEach(menuEvent -> { + switch (menuEvent.get("action").toString().toLowerCase()) { + case "send_message" -> { + player.closeInventory(); + + player.sendMessage(ChatColor.translateAlternateColorCodes('&', menuEvent.get("data").toString())); + } + case "join_server" -> { + player.closeInventory(); + + player.performCommand("/server " + menuEvent.get("data").toString()); + } + case "execute_command" -> { + player.closeInventory(); + + player.performCommand(menuEvent.get("data").toString()); + } + case "do_nothing" -> {} + default -> { + player.closeInventory(); + + player.sendMessage(ChatColor.RED + "An error occurred while executing the action of the item."); + player.sendMessage(ChatColor.RED + "Please contact an administrator."); + } + } + }); + } + }); + }); + event.setCancelled(true); } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 4af592a..46c7913 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1 +1 @@ -yes: 'yes' \ No newline at end of file +message_prefix: '[Hubbit]' \ No newline at end of file