more pages work

This commit is contained in:
ScriptCat 2025-07-25 17:07:25 +03:00
parent c92229230e
commit 0db2b81316
7 changed files with 152 additions and 83 deletions

View File

@ -21,7 +21,8 @@ public class APIManager {
this.inventoryManager = new InventoryManager( this.inventoryManager = new InventoryManager(
this.config.getString(ConfigPaths.GUINAME, "GiftAPI Menu"), this.config.getString(ConfigPaths.GUINAME, "GiftAPI Menu"),
this.config.getString(ConfigPaths.GUIRIGHT, "<<right"), this.config.getString(ConfigPaths.GUIRIGHT, "<<right"),
this.config.getString(ConfigPaths.GUILEFT, "left>>") this.config.getString(ConfigPaths.GUILEFT, "left>>"),
this.config.getString(ConfigPaths.GUIEXIT, "quit")
); );
Bukkit.getPluginManager().registerEvents(this.inventoryManager, this.plugin); Bukkit.getPluginManager().registerEvents(this.inventoryManager, this.plugin);

View File

@ -3,6 +3,7 @@ package tokarotik.giftapi;
public class ConfigPaths { public class ConfigPaths {
public static final String DEVTEST = "dev-test"; public static final String DEVTEST = "dev-test";
public static final String GUINAME = "gui.title-menu"; public static final String GUINAME = "gui.title-menu";
public static final String GUIRIGHT = "gui.arrow.right-name"; public static final String GUIRIGHT = "gui.buttons.right-name";
public static final String GUILEFT = "gui.arrow.left-name"; public static final String GUILEFT = "gui.buttons.left-name";
public static final String GUIEXIT = "gui.buttons.exit-name";
} }

View File

@ -6,9 +6,7 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import tokarotik.giftapi.APIManager; import tokarotik.giftapi.APIManager;
import tokarotik.giftapi.savemanager.BasicNBT;
import tokarotik.giftapi.savemanager.NBTManager; import tokarotik.giftapi.savemanager.NBTManager;
import tokarotik.giftapi.savemanager.item.ItemLoad;
public class GiftCommand implements CommandExecutor { public class GiftCommand implements CommandExecutor {
@ -29,11 +27,11 @@ public class GiftCommand implements CommandExecutor {
new NBTManager("world").write((Player) sender); new NBTManager("world").write((Player) sender);
BasicNBT nbt = new BasicNBT("world"); //BasicNBT nbt = new BasicNBT("world");
System.out.println(nbt.readPlayerNBT(nbt.getPlayer((Player) sender)).getCompound("giftapi")); //System.out.println(nbt.readPlayerNBT(nbt.getPlayer((Player) sender)).getCompound("giftapi"));
((Player) sender).getInventory().addItem(new ItemLoad(nbt.readPlayerNBT(nbt.getPlayer((Player) sender)).getCompound("giftapi")).getItem()); //((Player) sender).getInventory().addItem(new ItemLoad(nbt.readPlayerNBT(nbt.getPlayer((Player) sender)).getCompound("giftapi")).getItem());
this.apiManager.openInventory((Player) sender); this.apiManager.openInventory((Player) sender);

View File

@ -18,12 +18,14 @@ public class InventoryManager implements Listener {
private String nameGUI; private String nameGUI;
private String nameArrowRight; private String nameArrowRight;
private String nameArrowLeft; private String nameArrowLeft;
private String nameExit;
public InventoryManager(String nameGUI, String nameArrowRight, String nameArrowLeft) public InventoryManager(String nameGUI, String nameArrowRight, String nameArrowLeft, String nameExit)
{ {
this.nameGUI = nameGUI; this.nameGUI = nameGUI;
this.nameArrowRight = nameArrowRight; this.nameArrowRight = nameArrowRight;
this.nameArrowLeft = nameArrowLeft; this.nameArrowLeft = nameArrowLeft;
this.nameExit = nameExit;
} }
public void openCustomInventory(Player player) public void openCustomInventory(Player player)
{ {
@ -35,22 +37,29 @@ public class InventoryManager implements Listener {
} }
@EventHandler @EventHandler
public void onInventoryClick(InventoryClickEvent event) { public void onInventoryClick(InventoryClickEvent event) {
if (event.getInventory().getTitle().equals(this.nameGUI)) { Inventory inventory = event.getInventory();
if (inventory.getTitle().equals(this.nameGUI)) {
event.setCancelled(true); event.setCancelled(true);
ItemStack currectItem = event.getCurrentItem(); ItemStack currectItem = event.getCurrentItem();
String nameCurrentItem = currectItem.getItemMeta().getDisplayName(); String nameCurrentItem = currectItem.getItemMeta().getDisplayName();
Player player = (Player) event.getWhoClicked(); Player player = (Player) event.getWhoClicked();
if (nameCurrentItem == this.nameArrowRight) if (nameCurrentItem.equals(this.nameArrowRight))
{ {
player.sendMessage("Right!"); player.sendMessage("Right!");
} }
if (nameCurrentItem == this.nameArrowLeft) if (nameCurrentItem.equals(this.nameArrowLeft))
{ {
player.sendMessage("Left!"); player.sendMessage("Left!");
} }
if (nameCurrentItem.equals(this.nameExit))
{
player.closeInventory();
}
} }
} }
@ -62,29 +71,35 @@ public class InventoryManager implements Listener {
private void setUI(Inventory inventory) private void setUI(Inventory inventory)
{ {
// arrow right // arrow right
setArrow(inventory, this.nameArrowRight, 0, 6); setArrow(inventory, this.nameArrowRight, 8, 6);
// arrow left // arrow left
setArrow(inventory, this.nameArrowLeft, 8, 6); setArrow(inventory, this.nameArrowLeft, 0, 6);
// exit // exit
setItem(inventory, Material.REDSTONE, this.nameExit, 4, 6);
//setSkull(inventory, "exit", ChatColor.ITALIC + "" + ChatColor.DARK_RED + "Выйти", 4, 6); //setSkull(inventory, "exit", ChatColor.ITALIC + "" + ChatColor.DARK_RED + "Выйти", 4, 6);
} }
private void setArrow(Inventory inventory, String name, int x, int y) private void setItem(Inventory inventory, Material material, String name, int x, int y)
{ {
ItemStack arrow = new ItemStack(Material.ARROW, 1); ItemStack item = new ItemStack(material, 1);
ItemMeta meta_arrow = arrow.getItemMeta(); ItemMeta meta_item = item.getItemMeta();
meta_arrow.setDisplayName(name); meta_item.setDisplayName(name);
arrow.setItemMeta(meta_arrow); item.setItemMeta(meta_item);
inventory.setItem( inventory.setItem(
getCordinates(x, y), getCordinates(x, y),
arrow item
); );
} }
private void setArrow(Inventory inventory, String name, int x, int y)
{
setItem(inventory, Material.ARROW, name, x, y);
}
public int getCordinates(int x, int y) public int getCordinates(int x, int y)
{ {
if (y == 0) {y++;} if (y == 0) {y++;}

View File

@ -3,90 +3,69 @@ package tokarotik.giftapi.savemanager.page;
import net.minecraft.server.v1_6_R3.NBTTagCompound; import net.minecraft.server.v1_6_R3.NBTTagCompound;
import net.minecraft.server.v1_6_R3.NBTTagList; import net.minecraft.server.v1_6_R3.NBTTagList;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import tokarotik.giftapi.savemanager.item.ItemLoad;
import tokarotik.giftapi.savemanager.item.ItemNBT; import tokarotik.giftapi.savemanager.item.ItemNBT;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections;
import java.util.List; import java.util.List;
public class Page public class Page
{ {
public int max_stack;
public NBTTagList tag; public NBTTagList tag;
public void add(ItemStack item) public Page(int max_stack)
{ {
this.max_stack = max_stack;
}
public boolean add(ItemStack item) {
if (!isOverStacked()) {
NBTTagCompound nbt = new ItemNBT(item).getTag(); NBTTagCompound nbt = new ItemNBT(item).getTag();
this.tag.add(nbt); this.tag.add(nbt);
return true;
} }
public void remove(ItemStack item) return false;
{ }
ItemStack[] new_list = addAllExtraOne(item);
this.tag = itemStackListToNBTList(new_list); 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 ItemStack[] getList() public ItemStack[] getList()
{ {
return reverse(getList()); return PageUtil.reverse(PageUtil.getRawList(this.tag));
} }
private ItemStack[] getRawList() public boolean isOverStacked()
{ {
ItemStack[] list = new ItemStack[this.tag.size()]; return this.tag.size() < this.max_stack;
}
for (int i = 0; i < this.tag.size(); i++) public ItemStack[] getOverStacked()
{ {
NBTTagCompound compound = (NBTTagCompound) this.tag.get(i); if (isOverStacked())
list[i] = new ItemLoad(compound).getItem();
}
return list;
}
private ItemStack[] reverse(ItemStack[] list)
{ {
List<ItemStack> array = Arrays.asList(list); List<ItemStack> list = new ArrayList<>(Arrays.asList(getList()));
Collections.reverse(array);
return (ItemStack[]) array.toArray(); this.tag = PageUtil.itemStackListToNBTList( list.subList(0, this.max_stack + 1) );
return (ItemStack[]) list.subList(this.max_stack + 1, this.tag.size()).toArray();
} }
private ItemStack[] addAllExtraOne(ItemStack item) return new ItemStack[]{};
{
ItemStack[] new_list = new ItemStack[tag.size()];
ItemStack[] old_list = getRawList();
for (int i = 0;i < tag.size();i++)
{
if (!old_list[i].equals(item))
{
new_list[i] = old_list[i];
} }
} }
return new_list;
}
private NBTTagList itemStackListToNBTList(ItemStack[] items)
{
NBTTagList list = new NBTTagList();
for (int i = 0; i < items.length; i++) {
if (items[i] != null)
{
ItemNBT tag = new ItemNBT(items[i]);
NBTTagCompound compound = tag.getTag();
list.add(compound);
}
}
return list;
}
}

View File

@ -0,0 +1,74 @@
package tokarotik.giftapi.savemanager.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.savemanager.item.ItemLoad;
import tokarotik.giftapi.savemanager.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] = new ItemLoad(compound).getItem();
}
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 (int i = 0; i < items.length; i++) {
if (items[i] != null)
{
ItemNBT tag = new ItemNBT(items[i]);
NBTTagCompound compound = tag.getTag();
list.add(compound);
}
}
return list;
}
public static NBTTagList itemStackListToNBTList(List<ItemStack> items)
{
return itemStackListToNBTList((ItemStack[]) items.toArray());
}
}

View File

@ -8,6 +8,7 @@ gui:
# Max title length is 32 letters # Max title length is 32 letters
title-menu: "Set Your Title In Config" title-menu: "Set Your Title In Config"
arrow: buttons:
right-name: "<" right-name: ">"
left-name: ">" left-name: "<"
exit-name: "Exit"