11package com .loohp .interactivechat .Listeners ;
22
33import java .io .IOException ;
4+ import java .util .ArrayList ;
45import java .util .HashMap ;
6+ import java .util .List ;
57import java .util .Map ;
68import java .util .Map .Entry ;
79import java .util .UUID ;
810
911import org .bukkit .Bukkit ;
12+ import org .bukkit .Material ;
1013import org .bukkit .entity .Player ;
1114import org .bukkit .event .EventHandler ;
1215import org .bukkit .event .EventPriority ;
1720import org .bukkit .event .player .PlayerCommandPreprocessEvent ;
1821import org .bukkit .event .player .PlayerJoinEvent ;
1922import org .bukkit .event .player .PlayerQuitEvent ;
23+ import org .bukkit .inventory .ItemStack ;
24+ import org .bukkit .inventory .meta .BookMeta ;
2025
2126import com .loohp .interactivechat .InteractiveChat ;
2227import com .loohp .interactivechat .ObjectHolders .CommandPlaceholderInfo ;
2934import com .loohp .interactivechat .Utils .MessageUtils ;
3035
3136import me .clip .placeholderapi .PlaceholderAPI ;
37+ import net .md_5 .bungee .api .chat .BaseComponent ;
3238
3339public class Events implements Listener {
3440
@@ -253,7 +259,7 @@ private void translateAltColorCode(PlayerCommandPreprocessEvent event) {
253259 }
254260
255261 @ EventHandler (priority =EventPriority .LOWEST )
256- public void onInventoryClickLowest (InventoryClickEvent event ) {
262+ public void onInventoryClick (InventoryClickEvent event ) {
257263 if (event .getClickedInventory () == null ) {
258264 return ;
259265 }
@@ -263,22 +269,40 @@ public void onInventoryClickLowest(InventoryClickEvent event) {
263269 if (event .getView ().getTopInventory () == null ) {
264270 return ;
265271 }
266- if (InteractiveChat .inventoryDisplay .containsValue (event .getView ().getTopInventory ())) {
272+ boolean block = false ;
273+ if (!block && InteractiveChat .inventoryDisplay .inverse ().containsKey (event .getView ().getTopInventory ())) {
267274 event .setCancelled (true );
268- return ;
275+ block = true ;
269276 }
270- if (InteractiveChat .enderDisplay .containsValue (event .getView ().getTopInventory ())) {
277+ if (! block && InteractiveChat .enderDisplay .inverse (). containsKey (event .getView ().getTopInventory ())) {
271278 event .setCancelled (true );
272- return ;
279+ block = true ;
273280 }
274- if (InteractiveChat .itemDisplay .containsValue (event .getView ().getTopInventory ())) {
281+ if (! block && InteractiveChat .itemDisplay .inverse (). containsKey (event .getView ().getTopInventory ())) {
275282 event .setCancelled (true );
276- return ;
283+ block = true ;
284+ }
285+ if (block && event .getRawSlot () < event .getView ().getTopInventory ().getSize ()) {
286+ if (event .getCurrentItem () != null ) {
287+ if (event .getCurrentItem ().getType ().equals (Material .WRITTEN_BOOK )) {
288+ ((Player ) event .getWhoClicked ()).openBook (event .getCurrentItem ().clone ());
289+ } else if (event .getCurrentItem ().getType ().equals (Material .WRITABLE_BOOK )) {
290+ ItemStack book = new ItemStack (Material .WRITTEN_BOOK );
291+ BookMeta ori = (BookMeta ) event .getCurrentItem ().getItemMeta ();
292+ BookMeta dis = (BookMeta ) book .getItemMeta ();
293+ List <BaseComponent []> pages = new ArrayList <>(ori .spigot ().getPages ());
294+ dis .spigot ().setPages (pages );
295+ dis .setTitle ("Temp Book" );
296+ dis .setAuthor ("InteractiveChat" );
297+ book .setItemMeta (dis );
298+ ((Player ) event .getWhoClicked ()).openBook (book );
299+ }
300+ }
277301 }
278302 }
279-
303+ /*
280304 @EventHandler(priority=EventPriority.HIGHEST)
281- public void onInventoryClick (InventoryClickEvent event ) {
305+ public void onInventoryClickHighest (InventoryClickEvent event) {
282306 if (event.getClickedInventory() == null) {
283307 return;
284308 }
@@ -288,18 +312,18 @@ public void onInventoryClick(InventoryClickEvent event) {
288312 if (event.getView().getTopInventory() == null) {
289313 return;
290314 }
291- if (InteractiveChat .inventoryDisplay .containsValue (event .getView ().getTopInventory ())) {
315+ if (InteractiveChat.inventoryDisplay.inverse().containsKey (event.getView().getTopInventory())) {
292316 event.setCancelled(true);
293317 return;
294318 }
295- if (InteractiveChat .enderDisplay .containsValue (event .getView ().getTopInventory ())) {
319+ if (InteractiveChat.enderDisplay.inverse().containsKey (event.getView().getTopInventory())) {
296320 event.setCancelled(true);
297321 return;
298322 }
299- if (InteractiveChat .itemDisplay .containsValue (event .getView ().getTopInventory ())) {
323+ if (InteractiveChat.itemDisplay.inverse().containsKey (event.getView().getTopInventory())) {
300324 event.setCancelled(true);
301325 return;
302326 }
303327 }
304-
328+ */
305329}
0 commit comments