From 46415268b7116a1becdc43b72dd93aa2800534bd Mon Sep 17 00:00:00 2001 From: Auxilor Date: Thu, 12 Aug 2021 00:24:35 +0100 Subject: [PATCH] More GUI --- .../java/com/willfp/eco/util/MenuUtils.java | 2 +- .../eco/internal/gui/menu/EcoMenuBuilder.kt | 14 ++++---- .../com/willfp/eco/spigot/EcoSpigotPlugin.kt | 4 ++- .../com/willfp/eco/spigot/gui/GUITester.kt | 36 +++++++++++++++++++ gradle.properties | 2 +- 5 files changed, 49 insertions(+), 9 deletions(-) create mode 100644 eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/gui/GUITester.kt diff --git a/eco-api/src/main/java/com/willfp/eco/util/MenuUtils.java b/eco-api/src/main/java/com/willfp/eco/util/MenuUtils.java index deaf7cc5..d8d2b36d 100644 --- a/eco-api/src/main/java/com/willfp/eco/util/MenuUtils.java +++ b/eco-api/src/main/java/com/willfp/eco/util/MenuUtils.java @@ -17,6 +17,6 @@ public class MenuUtils { public Pair convertSlotToRowColumn(final int slot) { int row = Math.floorDiv(slot, 9); int column = slot - row * 9; - return new Pair<>(row, column); + return new Pair<>(row + 1, column + 1); } } diff --git a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/gui/menu/EcoMenuBuilder.kt b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/gui/menu/EcoMenuBuilder.kt index 4cb6239e..9291af2d 100644 --- a/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/gui/menu/EcoMenuBuilder.kt +++ b/eco-core/core-backend/src/main/kotlin/com/willfp/eco/internal/gui/menu/EcoMenuBuilder.kt @@ -16,7 +16,7 @@ import java.util.function.Consumer class EcoMenuBuilder(private val rows: Int) : MenuBuilder { private var title = "Menu" private var maskSlots: List> - private val slots: List> = ListUtils.create2DList(rows, 9) + private val slots: List> = ListUtils.create2DList(rows, 9) private var onClose = Consumer { _: InventoryCloseEvent -> } override fun setTitle(title: String): MenuBuilder { @@ -46,15 +46,14 @@ class EcoMenuBuilder(private val rows: Int) : MenuBuilder { } override fun build(): Menu { - val finalSlots: MutableList> = ArrayList() + val tempSlots: MutableList> = ListUtils.create2DList(rows, 9); for (maskRow in maskSlots) { val row = ArrayList() for (slot in maskRow) { row.add(slot ?: EcoFillerSlot(ItemStack(Material.AIR))) } - finalSlots.add(ArrayList()) - finalSlots.add(row) + tempSlots.add(row) } for (i in slots.indices) { @@ -63,11 +62,14 @@ class EcoMenuBuilder(private val rows: Int) : MenuBuilder { if (slot is FillerSlot) { slot = EcoFillerSlot(slot.itemStack) } - finalSlots[i][j] = slot + if (slot == null && maskSlots[i][j] != null) { + slot = EcoFillerSlot(ItemStack(Material.AIR)) + } + tempSlots[i][j] = slot ?: EcoFillerSlot(ItemStack(Material.AIR)) } } - return EcoMenu(rows, finalSlots, title, onClose) + return EcoMenu(rows, tempSlots, title, onClose) } init { diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/EcoSpigotPlugin.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/EcoSpigotPlugin.kt index fd4b17dd..fdf66957 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/EcoSpigotPlugin.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/EcoSpigotPlugin.kt @@ -17,6 +17,7 @@ import com.willfp.eco.spigot.display.* import com.willfp.eco.spigot.drops.CollatedRunnable import com.willfp.eco.spigot.eventlisteners.* import com.willfp.eco.spigot.gui.GUIListener +import com.willfp.eco.spigot.gui.GUITester import com.willfp.eco.spigot.integrations.anticheat.* import com.willfp.eco.spigot.integrations.antigrief.* import com.willfp.eco.spigot.integrations.customitems.CustomItemsOraxen @@ -141,7 +142,8 @@ abstract class EcoSpigotPlugin : EcoPlugin( PlayerJumpListeners(), GUIListener(this), ArrowDataListener(this), - ArmorChangeEventListeners(this) + ArmorChangeEventListeners(this), + GUITester(this) ) } } \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/gui/GUITester.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/gui/GUITester.kt new file mode 100644 index 00000000..dd8ac576 --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/eco/spigot/gui/GUITester.kt @@ -0,0 +1,36 @@ +package com.willfp.eco.spigot.gui + +import com.willfp.eco.core.EcoPlugin +import com.willfp.eco.core.PluginDependent +import com.willfp.eco.core.gui.menu.Menu +import com.willfp.eco.core.gui.slot.FillerMask +import com.willfp.eco.core.gui.slot.Slot +import org.bukkit.Material +import org.bukkit.event.EventHandler +import org.bukkit.event.Listener +import org.bukkit.event.player.AsyncPlayerChatEvent +import org.bukkit.inventory.ItemStack + +class GUITester(plugin: EcoPlugin) : PluginDependent(plugin), Listener { + val menu: Menu = Menu.builder(3) + .setMask(FillerMask( + Material.BLACK_STAINED_GLASS_PANE, + "111111111", + "100000001", + "111111111" + )).setSlot( + 2, 2, + Slot.builder(ItemStack(Material.RED_STAINED_GLASS_PANE)) + .setCaptive() + .build() + ).build() + + @EventHandler + fun test(event: AsyncPlayerChatEvent) { + if (!event.message.equals("testgui", true)) { + return + } + + plugin.scheduler.run{menu.open(event.player)} + } +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 33a31e0d..e37456d7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -version = 6.3.3 +version = 6.4.0 plugin-name = eco \ No newline at end of file