Didn't make sense not to live for fun

This commit is contained in:
Auxilor
2021-08-12 13:00:31 +01:00
parent e97d454ff6
commit 7f8fb3d87b
12 changed files with 105 additions and 29 deletions

View File

@@ -0,0 +1,19 @@
package com.willfp.eco.core.gui.menu;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.jetbrains.annotations.NotNull;
/**
* Interface to run on menu close.
*/
@FunctionalInterface
public interface CloseHandler {
/**
* Performs this operation on the given arguments.
*
* @param event The close event.
* @param menu The menu.
*/
void handle(@NotNull InventoryCloseEvent event,
@NotNull Menu menu);
}

View File

@@ -31,6 +31,14 @@ public interface MenuBuilder {
int column,
@NotNull Slot slot);
/**
* Run function to modify the builder.
*
* @param modifier The modifier.
* @return The builder.
*/
MenuBuilder modfiy(@NotNull Consumer<MenuBuilder> modifier);
/**
* Set the menu mask.
*
@@ -45,7 +53,18 @@ public interface MenuBuilder {
* @param action The handler.
* @return The builder.
*/
MenuBuilder onClose(@NotNull Consumer<InventoryCloseEvent> action);
default MenuBuilder onClose(@NotNull Consumer<InventoryCloseEvent> action) {
onClose((event, menu) -> action.accept(event));
return this;
}
/**
* Set the menu close handler.
*
* @param action The handler.
* @return The builder.
*/
MenuBuilder onClose(@NotNull CloseHandler action);
/**
* Build the menu.

View File

@@ -1,6 +1,7 @@
package com.willfp.eco.core.gui.slot;
import com.willfp.eco.core.Eco;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
@@ -26,6 +27,15 @@ public interface Slot {
*/
boolean isCaptive();
/**
* Create a builder for an ItemStack.
*
* @return The builder.
*/
static SlotBuilder builder() {
return Eco.getHandler().getGUIFactory().createSlotBuilder((player, menu) -> new ItemStack(Material.AIR));
}
/**
* Create a builder for an ItemStack.
*
@@ -42,7 +52,6 @@ public interface Slot {
* @param provider The provider.
* @return The builder.
*/
@Deprecated
static SlotBuilder builder(@NotNull final Function<Player, ItemStack> provider) {
return Eco.getHandler().getGUIFactory().createSlotBuilder((player, menu) -> provider.apply(player));
}

View File

@@ -15,7 +15,6 @@ public interface SlotBuilder {
* @param action The handler.
* @return The builder.
*/
@Deprecated
default SlotBuilder onLeftClick(@NotNull BiConsumer<InventoryClickEvent, Slot> action) {
return onLeftClick((event, slot, menu) -> action.accept(event, slot));
}
@@ -34,7 +33,6 @@ public interface SlotBuilder {
* @param action The handler.
* @return The builder.
*/
@Deprecated
default SlotBuilder onRightClick(@NotNull BiConsumer<InventoryClickEvent, Slot> action) {
return onRightClick((event, slot, menu) -> action.accept(event, slot));
}
@@ -53,7 +51,6 @@ public interface SlotBuilder {
* @param action The handler.
* @return The builder.
*/
@Deprecated
default SlotBuilder onShiftLeftClick(@NotNull BiConsumer<InventoryClickEvent, Slot> action) {
return onShiftLeftClick((event, slot, menu) -> action.accept(event, slot));
}
@@ -72,7 +69,6 @@ public interface SlotBuilder {
* @param action The handler.
* @return The builder.
*/
@Deprecated
default SlotBuilder onShiftRightClick(@NotNull BiConsumer<InventoryClickEvent, Slot> action) {
return onShiftRightClick((event, slot, menu) -> action.accept(event, slot));
}
@@ -91,7 +87,6 @@ public interface SlotBuilder {
* @param action The handler.
* @return The builder.
*/
@Deprecated
default SlotBuilder onMiddleClick(@NotNull BiConsumer<InventoryClickEvent, Slot> action) {
return onMiddleClick((event, slot, menu) -> action.accept(event, slot));
}

View File

@@ -17,6 +17,6 @@ public interface SlotHandler {
* @param menu The menu.
*/
void handle(@NotNull InventoryClickEvent event,
@NotNull Slot slot,
@NotNull Menu menu);
@NotNull Slot slot,
@NotNull Menu menu);
}