FunctionItem

This commit is contained in:
NichtStudioCode 2021-01-27 17:23:09 +01:00
parent c1d1255a91
commit 6521e655a4
3 changed files with 42 additions and 26 deletions

@ -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<T> extends BaseItem {
private final T t;
private final Function<T, ItemBuilder> builderFunction;
public FunctionItem(T t, Function<T, ItemBuilder> 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
}
}

@ -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<PagedGUI, ItemBuilder> builderFunction;
public class BackItem extends FunctionItem<PagedGUI> {
public BackItem(PagedGUI pagedGUI, Function<PagedGUI, ItemBuilder> 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();
}
}

@ -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<PagedGUI, ItemBuilder> builderFunction;
public class ForwardItem extends FunctionItem<PagedGUI> {
public ForwardItem(PagedGUI pagedGUI, Function<PagedGUI, ItemBuilder> 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();
}
}