just a little more and is it ready!!!
This commit is contained in:
parent
22e5982e9e
commit
d2a8e4ac03
@ -22,35 +22,29 @@ public class PagesManager
|
||||
this.tag = new NBTTagList("giftapi");
|
||||
}
|
||||
|
||||
public void add(ItemStack item)
|
||||
public synchronized void add(ItemStack item)
|
||||
{
|
||||
PagesUtil.add(item, this.tag);
|
||||
setCountPages();
|
||||
}
|
||||
|
||||
public void remove(ItemStack item)
|
||||
public synchronized void remove(ItemStack item)
|
||||
{
|
||||
this.tag = PagesUtil.remove(item, this.tag);
|
||||
setCountPages();
|
||||
}
|
||||
|
||||
public NBTTagList getTag() { return this.tag; }
|
||||
public synchronized NBTTagList getTag() { return this.tag; }
|
||||
|
||||
public void setTag(NBTTagList tag)
|
||||
{
|
||||
this.tag = tag;
|
||||
setCountPages();
|
||||
}
|
||||
public synchronized ItemStack[] getList() { return PagesUtil.getRawList(this.tag); }
|
||||
|
||||
public ItemStack[] getList() { return PagesUtil.reverse( PagesUtil.getRawList(this.tag) ); }
|
||||
public synchronized int getCurrentPage() { return this.current_page; }
|
||||
|
||||
public int getCurrentPage() { return this.current_page; }
|
||||
public synchronized void setCurrentPage(int current_page) { this.current_page = current_page; }
|
||||
|
||||
public void setCurrentPage(int current_page) { this.current_page = current_page; }
|
||||
public synchronized int getCountPages() { return this.count_pages; }
|
||||
|
||||
public int getCountPages() { return this.count_pages; }
|
||||
|
||||
private void setCountPages() {
|
||||
private synchronized void setCountPages() {
|
||||
int tag_size = this.tag.size();
|
||||
if (tag_size == 0) { this.count_pages = 0; }
|
||||
|
||||
|
@ -6,26 +6,22 @@ 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 PagesUtil
|
||||
{
|
||||
public static void add(ItemStack item, NBTTagList tag)
|
||||
public synchronized static void add(ItemStack item, NBTTagList tag)
|
||||
{
|
||||
NBTTagCompound nbt = ItemNBT.getTag(item);
|
||||
|
||||
tag.add(nbt);
|
||||
}
|
||||
|
||||
public static NBTTagList remove(ItemStack item, NBTTagList tag)
|
||||
public synchronized static NBTTagList remove(ItemStack item, NBTTagList tag)
|
||||
{
|
||||
ItemStack[] new_list = addAllExtraOne(tag, item);
|
||||
return itemStackListToNBTList(new_list);
|
||||
}
|
||||
|
||||
public static ItemStack[] addAllExtraOne(NBTTagList tag, ItemStack item)
|
||||
public synchronized static ItemStack[] addAllExtraOne(NBTTagList tag, ItemStack item)
|
||||
{
|
||||
ItemStack[] new_list = new ItemStack[tag.size()];
|
||||
ItemStack[] old_list = getRawList(tag);
|
||||
@ -41,7 +37,7 @@ public class PagesUtil
|
||||
return new_list;
|
||||
}
|
||||
|
||||
public static NBTTagList itemStackListToNBTList(ItemStack[] items)
|
||||
public synchronized static NBTTagList itemStackListToNBTList(ItemStack[] items)
|
||||
{
|
||||
NBTTagList list = new NBTTagList();
|
||||
|
||||
@ -56,7 +52,7 @@ public class PagesUtil
|
||||
return list;
|
||||
}
|
||||
|
||||
public static ItemStack[] getRawList(NBTTagList tag)
|
||||
public synchronized static ItemStack[] getRawList(NBTTagList tag)
|
||||
{
|
||||
ItemStack[] list = new ItemStack[tag.size()];
|
||||
|
||||
@ -69,12 +65,4 @@ public class PagesUtil
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
public static ItemStack[] reverse(ItemStack[] list)
|
||||
{
|
||||
List<ItemStack> array = Arrays.asList(list);
|
||||
Collections.reverse(array);
|
||||
|
||||
return (ItemStack[]) array.toArray();
|
||||
}
|
||||
}
|
||||
|
@ -1,41 +1,38 @@
|
||||
package tokarotik.giftapi.dev;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import tokarotik.giftapi.APIManager;
|
||||
import tokarotik.giftapi.Main;
|
||||
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
|
||||
|
||||
public class AddCommand implements CommandExecutor {
|
||||
private final APIManager apiManager;
|
||||
private final Main plugin;
|
||||
|
||||
public AddCommand(APIManager APIManager, Main plugin) {
|
||||
|
||||
this.apiManager = APIManager;
|
||||
public AddCommand(Main plugin)
|
||||
{
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender sender, Command command, String s, String[] strings) {
|
||||
Player player;
|
||||
|
||||
if (!(sender instanceof Player)) {
|
||||
sender.sendMessage("This command can use only player!");
|
||||
player = Bukkit.getOnlinePlayers()[0];
|
||||
|
||||
return true;
|
||||
} else {
|
||||
player = (Player) sender;
|
||||
}
|
||||
|
||||
Random rand = new Random();
|
||||
ItemStack item = new ItemStack(rand.nextInt(420) + 1);
|
||||
}
|
||||
Player player = (Player) sender;
|
||||
|
||||
Material[] values = Material.values();
|
||||
int id = values[ThreadLocalRandom.current().nextInt(values.length)].getId();
|
||||
ItemStack item = new ItemStack(id);
|
||||
|
||||
this.plugin.add(player, item);
|
||||
|
||||
|
@ -39,22 +39,30 @@ public class InventoryUtil
|
||||
event.setCancelled(true);
|
||||
|
||||
ItemStack currentItem = event.getCurrentItem();
|
||||
String nameCurrentItem = currentItem.getItemMeta().getDisplayName();
|
||||
|
||||
if (currentItem == null) { return; }
|
||||
String nameCurrentItem = null;
|
||||
if (currentItem.hasItemMeta()) {
|
||||
if (currentItem.getItemMeta().hasDisplayName()) {
|
||||
nameCurrentItem = currentItem.getItemMeta().getDisplayName();
|
||||
}
|
||||
}
|
||||
|
||||
Player player = (Player) event.getWhoClicked();
|
||||
|
||||
if (nameCurrentItem.equals(this.nameArrowRight))
|
||||
if (!nameCurrentItem.isEmpty())
|
||||
{
|
||||
player.sendMessage("Right!");
|
||||
}
|
||||
if (nameCurrentItem.equals(this.nameArrowRight)) {
|
||||
player.sendMessage("Right!");
|
||||
}
|
||||
|
||||
if (nameCurrentItem.equals(this.nameArrowLeft))
|
||||
{
|
||||
player.sendMessage("Left!");
|
||||
}
|
||||
if (nameCurrentItem.equals(this.nameArrowLeft)) {
|
||||
player.sendMessage("Left!");
|
||||
}
|
||||
|
||||
if (nameCurrentItem.equals(this.nameExit))
|
||||
{
|
||||
player.closeInventory();
|
||||
if (nameCurrentItem.equals(this.nameExit)) {
|
||||
player.closeInventory();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -69,20 +77,22 @@ public class InventoryUtil
|
||||
|
||||
private synchronized void setUI(Inventory inventory, PagesManager pagesManager)
|
||||
{
|
||||
int height = (this.inventory_slots / 9) + 1;
|
||||
|
||||
// exit
|
||||
setItem(inventory, Material.REDSTONE, this.nameExit, 4, 6);
|
||||
setItem(inventory, Material.REDSTONE, this.nameExit, 4, height);
|
||||
if (pagesManager.getCountPages() == 0) { return; }
|
||||
|
||||
if (pagesManager.getCurrentPage() != pagesManager.getCountPages())
|
||||
{
|
||||
// arrow right
|
||||
setArrow(inventory, this.nameArrowRight, 8, 6);
|
||||
setArrow(inventory, this.nameArrowRight, 8, height);
|
||||
}
|
||||
|
||||
if (pagesManager.getCurrentPage() != 0)
|
||||
{
|
||||
// arrow left
|
||||
setArrow(inventory, this.nameArrowLeft, 0, 6);
|
||||
setArrow(inventory, this.nameArrowLeft, 0, height);
|
||||
}
|
||||
|
||||
|
||||
@ -110,6 +120,6 @@ public class InventoryUtil
|
||||
public synchronized int getCordinates(int x, int y)
|
||||
{
|
||||
if (y == 0) {y++;}
|
||||
return ((y - 1) * 9 + x) % this.inventory_slots;
|
||||
return ((y - 1) * 9 + x) % (this.inventory_slots + 9);
|
||||
}
|
||||
}
|
||||
|
@ -12,7 +12,7 @@ public class InventoryItems
|
||||
|
||||
public InventoryItems(int items_slots) { this.items_slots = items_slots; }
|
||||
|
||||
public void renderPage(PagesManager pagesManager, Inventory inventory)
|
||||
public synchronized void renderPage(PagesManager pagesManager, Inventory inventory)
|
||||
{
|
||||
List<ItemStack> array = InventoryItemsUtil.getArrayToRender(pagesManager, items_slots);
|
||||
InventoryItemsUtil.renderList(array, inventory);
|
||||
|
@ -9,7 +9,7 @@ import java.util.List;
|
||||
|
||||
public class InventoryItemsUtil
|
||||
{
|
||||
public static List<ItemStack> getArrayToRender(PagesManager pagesManager, int items_slots)
|
||||
public synchronized static List<ItemStack> getArrayToRender(PagesManager pagesManager, int items_slots)
|
||||
{
|
||||
ItemStack[] items = pagesManager.getList();
|
||||
|
||||
@ -19,28 +19,31 @@ public class InventoryItemsUtil
|
||||
int start_item = getStartItemIndex(current_page, items_slots);
|
||||
int end_item = getEndItemIndex(current_page, items_slots, items_count);
|
||||
|
||||
System.out.print("\nStart " + start_item + " End " + end_item);
|
||||
|
||||
return Arrays.asList(items).subList(start_item, end_item);
|
||||
}
|
||||
|
||||
public static void renderList(List<ItemStack> array, Inventory inventory)
|
||||
public synchronized static void renderList(List<ItemStack> array, Inventory inventory)
|
||||
{
|
||||
for (ItemStack item : (ItemStack[]) array.toArray())
|
||||
{
|
||||
for (ItemStack item : array) {
|
||||
System.out.println("\nitem " + item.toString());
|
||||
inventory.addItem(item);
|
||||
}
|
||||
}
|
||||
|
||||
private static int getStartItemIndex(int current_page, int items_slots)
|
||||
private synchronized static int getStartItemIndex(int current_page, int items_slots)
|
||||
{
|
||||
return current_page * items_slots;
|
||||
}
|
||||
|
||||
private static int getEndItemIndex(int current_page, int items_slots, int items_count)
|
||||
private synchronized static int getEndItemIndex(int current_page, int items_slots, int items_count)
|
||||
{
|
||||
int literly_end_page = current_page * (items_slots * 2);
|
||||
int literly_end_page = (current_page + 1) * items_slots;
|
||||
System.out.println("Cur page " + current_page + " Items Slots " + items_slots + " Items Count " + items_count + " Lit End Page " + literly_end_page);
|
||||
|
||||
if (literly_end_page < items_count) { return literly_end_page; }
|
||||
|
||||
return literly_end_page - (items_count - literly_end_page);
|
||||
return literly_end_page - (literly_end_page - items_count);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user