Refactored GUI

This commit is contained in:
Auxilor
2021-07-14 13:46:14 +02:00
committed by Auxilor
parent 610081dab4
commit 45fc05ca49
8 changed files with 66 additions and 56 deletions

View File

@@ -1,7 +1,7 @@
package com.willfp.eco.core.gui;
import com.willfp.eco.core.gui.menu.Menu;
import com.willfp.eco.core.gui.slot.Slot;
import com.willfp.eco.core.gui.menu.MenuBuilder;
import com.willfp.eco.core.gui.slot.SlotBuilder;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
@@ -15,7 +15,7 @@ public interface GUIFactory {
* @param provider The provider.
* @return The builder.
*/
Slot.Builder createSlotBuilder(@NotNull Function<Player, ItemStack> provider);
SlotBuilder createSlotBuilder(@NotNull Function<Player, ItemStack> provider);
/**
* Create menu builder.
@@ -23,5 +23,5 @@ public interface GUIFactory {
* @param rows The amount of rows.
* @return The builder.
*/
Menu.Builder createMenuBuilder(int rows);
MenuBuilder createMenuBuilder(int rows);
}

View File

@@ -1,15 +1,11 @@
package com.willfp.eco.core.gui.menu;
import com.willfp.eco.core.Eco;
import com.willfp.eco.core.gui.slot.FillerMask;
import com.willfp.eco.core.gui.slot.Slot;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.inventory.Inventory;
import org.jetbrains.annotations.NotNull;
import java.util.function.Consumer;
public interface Menu {
/**
* Get the amount of rows.
@@ -49,21 +45,7 @@ public interface Menu {
* @param rows The rows.
* @return The builder.
*/
static Builder builder(final int rows) {
static MenuBuilder builder(final int rows) {
return Eco.getHandler().getGUIFactory().createMenuBuilder(rows);
}
interface Builder {
Builder setTitle(@NotNull String title);
Builder setSlot(int row,
int column,
@NotNull Slot slot);
Builder setMask(@NotNull FillerMask mask);
Builder onClose(@NotNull Consumer<InventoryCloseEvent> action);
Menu build();
}
}

View File

@@ -0,0 +1,22 @@
package com.willfp.eco.core.gui.menu;
import com.willfp.eco.core.gui.slot.FillerMask;
import com.willfp.eco.core.gui.slot.Slot;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.jetbrains.annotations.NotNull;
import java.util.function.Consumer;
public interface MenuBuilder {
MenuBuilder setTitle(@NotNull String title);
MenuBuilder setSlot(int row,
int column,
@NotNull Slot slot);
MenuBuilder setMask(@NotNull FillerMask mask);
MenuBuilder onClose(@NotNull Consumer<InventoryCloseEvent> action);
Menu build();
}

View File

@@ -2,11 +2,9 @@ package com.willfp.eco.core.gui.slot;
import com.willfp.eco.core.Eco;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
import java.util.function.BiConsumer;
import java.util.function.Function;
public interface Slot {
@@ -24,7 +22,7 @@ public interface Slot {
* @param itemStack The ItemStack.
* @return The builder.
*/
static Builder builder(@NotNull final ItemStack itemStack) {
static SlotBuilder builder(@NotNull final ItemStack itemStack) {
return Eco.getHandler().getGUIFactory().createSlotBuilder(player -> itemStack);
}
@@ -34,21 +32,7 @@ public interface Slot {
* @param provider The provider.
* @return The builder.
*/
static Builder builder(@NotNull final Function<Player, ItemStack> provider) {
static SlotBuilder builder(@NotNull final Function<Player, ItemStack> provider) {
return Eco.getHandler().getGUIFactory().createSlotBuilder(provider);
}
interface Builder {
Builder onLeftClick(@NotNull BiConsumer<InventoryClickEvent, Slot> action);
Builder onRightClick(@NotNull BiConsumer<InventoryClickEvent, Slot> action);
Builder onShiftLeftClick(@NotNull BiConsumer<InventoryClickEvent, Slot> action);
Builder onShiftRightClick(@NotNull BiConsumer<InventoryClickEvent, Slot> action);
Builder onMiddleClick(@NotNull BiConsumer<InventoryClickEvent, Slot> action);
Slot build();
}
}

View File

@@ -0,0 +1,20 @@
package com.willfp.eco.core.gui.slot;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.jetbrains.annotations.NotNull;
import java.util.function.BiConsumer;
public interface SlotBuilder {
SlotBuilder onLeftClick(@NotNull BiConsumer<InventoryClickEvent, Slot> action);
SlotBuilder onRightClick(@NotNull BiConsumer<InventoryClickEvent, Slot> action);
SlotBuilder onShiftLeftClick(@NotNull BiConsumer<InventoryClickEvent, Slot> action);
SlotBuilder onShiftRightClick(@NotNull BiConsumer<InventoryClickEvent, Slot> action);
SlotBuilder onMiddleClick(@NotNull BiConsumer<InventoryClickEvent, Slot> action);
Slot build();
}