Deprecated SlotModifier, replaced with SlotUpdater

This commit is contained in:
Auxilor
2022-02-02 16:52:52 +00:00
parent b386f2df1b
commit 65221bdddf
8 changed files with 63 additions and 14 deletions

View File

@@ -2,6 +2,7 @@ package com.willfp.eco.core.gui.slot;
import com.willfp.eco.core.gui.slot.functional.SlotHandler;
import com.willfp.eco.core.gui.slot.functional.SlotModifier;
import com.willfp.eco.core.gui.slot.functional.SlotUpdater;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.jetbrains.annotations.NotNull;
@@ -106,8 +107,23 @@ public interface SlotBuilder {
*
* @param modifier The modifier.
* @return The builder.
* @deprecated Use {@link SlotBuilder#setUpdater(SlotUpdater)} instead.
*/
SlotBuilder setModifier(@NotNull SlotModifier modifier);
@Deprecated
default SlotBuilder setModifier(@NotNull SlotModifier modifier) {
return setUpdater((player, menu, previous) -> {
modifier.modify(player, menu, previous);
return previous;
});
}
/**
* Set the ItemStack updater.
*
* @param updater The updater.
* @return The builder.
*/
SlotBuilder setUpdater(@NotNull SlotUpdater updater);
/**
* Set slot to be a captive slot.

View File

@@ -7,8 +7,11 @@ import org.jetbrains.annotations.NotNull;
/**
* Interface to run on slot modify.
*
* @deprecated Use {@link SlotUpdater} instead.
*/
@FunctionalInterface
@Deprecated
public interface SlotModifier {
/**
* Performs this operation on the given arguments.

View File

@@ -0,0 +1,24 @@
package com.willfp.eco.core.gui.slot.functional;
import com.willfp.eco.core.gui.menu.Menu;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
/**
* Interface to run on slot update.
*/
@FunctionalInterface
public interface SlotUpdater {
/**
* Performs this operation on the given arguments.
*
* @param player The player.
* @param menu The menu.
* @param previous The previous ItemStack.
* @return The new ItemStack.
*/
ItemStack update(@NotNull Player player,
@NotNull Menu menu,
@NotNull ItemStack previous);
}

View File

@@ -43,10 +43,18 @@ fun SlotBuilder.onMiddleClick(action: (InventoryClickEvent, Slot, Menu) -> Unit)
/**
* @see SlotBuilder.setModifier
* @deprecated Use SlotUpdater instead.
*/
@Deprecated("Use SlotUpdater instead")
fun SlotBuilder.setModifier(action: (Player, Menu, ItemStack) -> Unit): SlotBuilder =
this.setModifier { a, b, c -> action(a, b, c) }
/**
* @see SlotBuilder.setUpdater
*/
fun SlotBuilder.setUpdater(action: (Player, Menu, ItemStack) -> ItemStack): SlotBuilder =
this.setUpdater { a, b, c -> action(a, b, c) }
/**
* Kotlin builder for slots.
*/