added pages to inventory

This commit is contained in:
ScriptCat 2025-07-28 23:37:49 +03:00
parent d2a8e4ac03
commit a01fd21660
6 changed files with 36 additions and 189 deletions

View File

@ -27,7 +27,7 @@ public class Main extends JavaPlugin implements Listener
apiManager = new APIManager(this, getConfig(), inventory_slots);
this.getCommand("gift").setExecutor(new GiftCommand(apiManager, this)); // DELETE FOR RELEASE
this.getCommand("add").setExecutor(new AddCommand(apiManager, this)); // DELETE FOR RELEASE
this.getCommand("add").setExecutor(new AddCommand(this)); // DELETE FOR RELEASE
getServer().getPluginManager().registerEvents(this, this); // bullshit

View File

@ -40,9 +40,22 @@ public class PagesManager
public synchronized int getCurrentPage() { return this.current_page; }
public synchronized void setCurrentPage(int current_page) { this.current_page = current_page; }
public synchronized int getCountPages() { return this.count_pages; }
public synchronized void nextPage()
{
if (getCountPages() > getCurrentPage())
{
this.current_page++;
}
}
public synchronized void backPage()
{
if (0 < getCurrentPage())
{
this.current_page -= 1;
}
}
private synchronized void setCountPages() {
int tag_size = this.tag.size();

View File

@ -1,106 +0,0 @@
package tokarotik.giftapi.NBT.pages.page;
import net.minecraft.server.v1_6_R3.NBTTagCompound;
import net.minecraft.server.v1_6_R3.NBTTagList;
import org.bukkit.inventory.ItemStack;
import tokarotik.giftapi.NBT.item.ItemNBT;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Page
{
private final int max_stack;
private NBTTagList tag;
public Integer number;
public Page(int max_stack)
{
this.max_stack = max_stack;
this.tag = new NBTTagList();
}
public Page(NBTTagList tag, int max_stack, int number)
{
this.tag = tag;
this.max_stack = max_stack;
this.number = number;
}
public boolean add(ItemStack item) {
if (!isOverStacked()) {
NBTTagCompound nbt = ItemNBT.getTag(item);
this.tag.add(nbt);
return true;
}
return false;
}
public boolean remove(ItemStack item)
{
ItemStack[] new_list = PageUtil.addAllExtraOne(this.tag, item);
NBTTagList list = PageUtil.itemStackListToNBTList(new_list);
if (!list.equals(this.tag))
{
this.tag = list;
return true;
}
return false;
}
public NBTTagList getTag()
{
return this.tag;
}
public void setTag(NBTTagList tag)
{
this.tag = tag;
}
public ItemStack[] getList()
{
return PageUtil.reverse(PageUtil.getRawList(this.tag));
}
public boolean isEmpty()
{
return this.tag.size() == 0;
}
public boolean isOverStacked()
{
return this.tag.size() < this.max_stack;
}
public ItemStack[] getOverStacked()
{
if (isOverStacked())
{
List<ItemStack> list = new ArrayList<>(Arrays.asList(getList()));
this.tag = PageUtil.itemStackListToNBTList( list.subList(0, this.max_stack + 1) );
return (ItemStack[]) list.subList(this.max_stack + 1, this.tag.size()).toArray();
}
return new ItemStack[]{};
}
public Integer getNumber()
{
return this.number;
}
public void setNumber(int number)
{
this.number = number;
}
}

View File

@ -1,72 +0,0 @@
package tokarotik.giftapi.NBT.pages.page;
import net.minecraft.server.v1_6_R3.NBTTagCompound;
import net.minecraft.server.v1_6_R3.NBTTagList;
import org.bukkit.inventory.ItemStack;
import tokarotik.giftapi.NBT.item.ItemLoad;
import tokarotik.giftapi.NBT.item.ItemNBT;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class PageUtil
{
public static ItemStack[] getRawList(NBTTagList tag)
{
ItemStack[] list = new ItemStack[tag.size()];
for (int i = 0; i < tag.size(); i++)
{
NBTTagCompound compound = (NBTTagCompound) tag.get(i);
list[i] = ItemLoad.getItem(compound);
}
return list;
}
public static ItemStack[] reverse(ItemStack[] list)
{
List<ItemStack> array = Arrays.asList(list);
Collections.reverse(array);
return (ItemStack[]) array.toArray();
}
public static ItemStack[] addAllExtraOne(NBTTagList tag, ItemStack item)
{
ItemStack[] new_list = new ItemStack[tag.size()];
ItemStack[] old_list = getRawList(tag);
for (int i = 0;i < tag.size();i++)
{
if (!old_list[i].equals(item))
{
new_list[i] = old_list[i];
}
}
return new_list;
}
public static NBTTagList itemStackListToNBTList(ItemStack[] items)
{
NBTTagList list = new NBTTagList();
for (ItemStack item : items) {
if (item != null) {
NBTTagCompound compound = ItemNBT.getTag(item);
list.add(compound);
}
}
return list;
}
public static NBTTagList itemStackListToNBTList(List<ItemStack> items)
{
return itemStackListToNBTList((ItemStack[]) items.toArray());
}
}

View File

@ -1,5 +1,6 @@
package tokarotik.giftapi.dev;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
@ -22,14 +23,13 @@ public class AddCommand implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String s, String[] strings) {
if (!(sender instanceof Player)) {
sender.sendMessage("This command can use only player!");
return true;
}
Player player = (Player) sender;
if (sender == null) {
if (Bukkit.getOnlinePlayers().length == 0) { return true; }
player = Bukkit.getOnlinePlayers()[0];
}
Material[] values = Material.values();
int id = values[ThreadLocalRandom.current().nextInt(values.length)].getId();
ItemStack item = new ItemStack(id);

View File

@ -53,11 +53,23 @@ public class InventoryUtil
if (!nameCurrentItem.isEmpty())
{
if (nameCurrentItem.equals(this.nameArrowRight)) {
player.sendMessage("Right!");
PagesManager pagesManager = this.cacheManager.load(player);
if (pagesManager.getCountPages() > pagesManager.getCurrentPage())
{
pagesManager.nextPage();
updateInventory(inventory, player);
}
}
if (nameCurrentItem.equals(this.nameArrowLeft)) {
player.sendMessage("Left!");
PagesManager pagesManager = this.cacheManager.load(player);
if (0 < pagesManager.getCurrentPage())
{
pagesManager.backPage();
updateInventory(inventory, player);
}
}
if (nameCurrentItem.equals(this.nameExit)) {