diff --git a/src/main/java/de/studiocode/invgui/item/impl/FunctionItem.java b/src/main/java/de/studiocode/invgui/item/impl/FunctionItem.java new file mode 100644 index 0000000..e03fb35 --- /dev/null +++ b/src/main/java/de/studiocode/invgui/item/impl/FunctionItem.java @@ -0,0 +1,34 @@ +package de.studiocode.invgui.item.impl; + +import de.studiocode.invgui.item.itembuilder.ItemBuilder; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.ClickType; +import org.bukkit.event.inventory.InventoryClickEvent; + +import java.util.function.Function; + +public class FunctionItem extends BaseItem { + + private final T t; + private final Function builderFunction; + + public FunctionItem(T t, Function builderFunction) { + this.t = t; + this.builderFunction = builderFunction; + } + + @Override + public ItemBuilder getItemBuilder() { + return builderFunction.apply(t); + } + + public T getT() { + return t; + } + + @Override + public void handleClick(ClickType clickType, Player player, InventoryClickEvent event) { + // empty + } + +} diff --git a/src/main/java/de/studiocode/invgui/item/impl/pagedgui/BackItem.java b/src/main/java/de/studiocode/invgui/item/impl/pagedgui/BackItem.java index b8b0fcd..05d7a17 100644 --- a/src/main/java/de/studiocode/invgui/item/impl/pagedgui/BackItem.java +++ b/src/main/java/de/studiocode/invgui/item/impl/pagedgui/BackItem.java @@ -1,7 +1,7 @@ package de.studiocode.invgui.item.impl.pagedgui; import de.studiocode.invgui.gui.impl.PagedGUI; -import de.studiocode.invgui.item.impl.BaseItem; +import de.studiocode.invgui.item.impl.FunctionItem; import de.studiocode.invgui.item.itembuilder.ItemBuilder; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; @@ -9,24 +9,15 @@ import org.bukkit.event.inventory.InventoryClickEvent; import java.util.function.Function; -public class BackItem extends BaseItem { - - private final PagedGUI pagedGUI; - private final Function builderFunction; +public class BackItem extends FunctionItem { public BackItem(PagedGUI pagedGUI, Function builderFunction) { - this.pagedGUI = pagedGUI; - this.builderFunction = builderFunction; - } - - @Override - public ItemBuilder getItemBuilder() { - return builderFunction.apply(pagedGUI); + super(pagedGUI, builderFunction); } @Override public void handleClick(ClickType clickType, Player player, InventoryClickEvent event) { - if (clickType == ClickType.LEFT) pagedGUI.goBack(); + if (clickType == ClickType.LEFT) getT().goBack(); } } diff --git a/src/main/java/de/studiocode/invgui/item/impl/pagedgui/ForwardItem.java b/src/main/java/de/studiocode/invgui/item/impl/pagedgui/ForwardItem.java index ca4f4ac..270f07f 100644 --- a/src/main/java/de/studiocode/invgui/item/impl/pagedgui/ForwardItem.java +++ b/src/main/java/de/studiocode/invgui/item/impl/pagedgui/ForwardItem.java @@ -1,7 +1,7 @@ package de.studiocode.invgui.item.impl.pagedgui; import de.studiocode.invgui.gui.impl.PagedGUI; -import de.studiocode.invgui.item.impl.BaseItem; +import de.studiocode.invgui.item.impl.FunctionItem; import de.studiocode.invgui.item.itembuilder.ItemBuilder; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; @@ -9,24 +9,15 @@ import org.bukkit.event.inventory.InventoryClickEvent; import java.util.function.Function; -public class ForwardItem extends BaseItem { - - private final PagedGUI pagedGUI; - private final Function builderFunction; +public class ForwardItem extends FunctionItem { public ForwardItem(PagedGUI pagedGUI, Function builderFunction) { - this.pagedGUI = pagedGUI; - this.builderFunction = builderFunction; - } - - @Override - public ItemBuilder getItemBuilder() { - return builderFunction.apply(pagedGUI); + super(pagedGUI, builderFunction); } @Override public void handleClick(ClickType clickType, Player player, InventoryClickEvent event) { - if (clickType == ClickType.LEFT) pagedGUI.goForward(); + if (clickType == ClickType.LEFT) getT().goForward(); } }