more pages work
This commit is contained in:
parent
c92229230e
commit
0db2b81316
@ -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);
|
||||||
|
@ -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";
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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++;}
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
NBTTagCompound nbt = new ItemNBT(item).getTag();
|
this.max_stack = max_stack;
|
||||||
|
|
||||||
this.tag.add(nbt);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void remove(ItemStack item)
|
public boolean add(ItemStack item) {
|
||||||
{
|
if (!isOverStacked()) {
|
||||||
ItemStack[] new_list = addAllExtraOne(item);
|
|
||||||
|
|
||||||
this.tag = itemStackListToNBTList(new_list);
|
NBTTagCompound nbt = new ItemNBT(item).getTag();
|
||||||
|
|
||||||
|
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 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()
|
||||||
|
{
|
||||||
|
if (isOverStacked())
|
||||||
{
|
{
|
||||||
NBTTagCompound compound = (NBTTagCompound) this.tag.get(i);
|
List<ItemStack> list = new ArrayList<>(Arrays.asList(getList()));
|
||||||
|
|
||||||
list[i] = new ItemLoad(compound).getItem();
|
this.tag = PageUtil.itemStackListToNBTList( list.subList(0, this.max_stack + 1) );
|
||||||
|
return (ItemStack[]) list.subList(this.max_stack + 1, this.tag.size()).toArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
return list;
|
return new ItemStack[]{};
|
||||||
}
|
}
|
||||||
|
|
||||||
private ItemStack[] reverse(ItemStack[] list)
|
|
||||||
{
|
|
||||||
List<ItemStack> array = Arrays.asList(list);
|
|
||||||
Collections.reverse(array);
|
|
||||||
|
|
||||||
return (ItemStack[]) array.toArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
private ItemStack[] addAllExtraOne(ItemStack item)
|
|
||||||
{
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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());
|
||||||
|
}
|
||||||
|
}
|
@ -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"
|
Loading…
x
Reference in New Issue
Block a user