Skip to content
This repository has been archived by the owner on Feb 20, 2024. It is now read-only.

Commit

Permalink
Final Changes & Fixes | v0.1 IS OUT
Browse files Browse the repository at this point in the history
  • Loading branch information
TheWylot committed Jan 12, 2022
1 parent 95695e3 commit 7b2dd77
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/main/java/ir/wy/wycore/WyCore.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ir.wy.wycore;

import ir.wy.wycore.gui.*;
import ir.wy.wycore.Heart;
import io.papermc.lib.*;
import lombok.Getter;
Expand Down
10 changes: 10 additions & 0 deletions src/main/java/ir/wy/wycore/gui/GUI.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package ir.wy.wycore.gui;

import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;

public interface GUI extends InventoryHolder {
void onInventoryClick(InventoryClickEvent event);
void addContent(Inventory inventory);
}
48 changes: 48 additions & 0 deletions src/main/java/ir/wy/wycore/gui/PagedGUI.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package ir.wy.wycore.gui;

import ir.wy.wycore.Design;
import ir.wy.wycore.Item;
import ir.wy.wycore.utils.InventoryUtils;
import ir.wy.wycore.utils.ItemStackUtils;


import lombok.AllArgsConstructor;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;

import java.util.Collection;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;

@AllArgsConstructor
public abstract class PagedGUI<T> implements GUI {


private final int page;
private final Design design;
private final Item previousPage;
private final Item nextPage;

@Override
public void addContent(Inventory inventory) {
InventoryUtils.fillInventory(inventory, design);

inventory.setItem(inventory.getSize() - 3, ItemStackUtils.makeItem(nextPage));
inventory.setItem(inventory.getSize() - 7, ItemStackUtils.makeItem(previousPage));

int elementsPerPage = inventory.getSize() - 9;
List<T> objects = getPageObjects().stream()
.skip((long) (page - 1) * elementsPerPage)
.limit(elementsPerPage)
.collect(Collectors.toList());
AtomicInteger slot = new AtomicInteger(0);
for (T t : objects) {
inventory.setItem(slot.getAndIncrement(), getItemStack(t));
}
}

public abstract Collection<T> getPageObjects();

public abstract ItemStack getItemStack(T t);
}

0 comments on commit 7b2dd77

Please sign in to comment.