testing render items in inventory
This commit is contained in:
parent
02d73bb7c5
commit
22e5982e9e
@ -15,11 +15,12 @@ public class APIManager implements Listener {
|
||||
public final Main plugin;
|
||||
private final InventoryManager inventoryManager;
|
||||
|
||||
public APIManager(Main plugin, FileConfiguration config)
|
||||
public APIManager(Main plugin, FileConfiguration config, int inventory_slots)
|
||||
{
|
||||
this.plugin = plugin;
|
||||
this.inventoryManager = new InventoryManager(
|
||||
plugin.getCacheManager(),
|
||||
inventory_slots,
|
||||
ConfigPaths.getWithColor(config, ConfigPaths.GUINAME, "GiftAPI Menu"),
|
||||
ConfigPaths.getWithColor(config, ConfigPaths.GUIRIGHT, "<<right"),
|
||||
ConfigPaths.getWithColor(config, ConfigPaths.GUILEFT, "left>>"),
|
||||
|
@ -8,7 +8,7 @@ import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import tokarotik.giftapi.NBT.cache.CacheManager;
|
||||
import tokarotik.giftapi.cache.CacheManager;
|
||||
import tokarotik.giftapi.dev.AddCommand;
|
||||
import tokarotik.giftapi.dev.GiftCommand;
|
||||
|
||||
@ -16,14 +16,15 @@ public class Main extends JavaPlugin implements Listener
|
||||
{
|
||||
private CacheManager cacheManager;
|
||||
private APIManager apiManager;
|
||||
private final int inventory_slots = 54;
|
||||
|
||||
@Override
|
||||
public void onEnable()
|
||||
{
|
||||
saveDefaultConfig();
|
||||
|
||||
cacheManager = new CacheManager(54);
|
||||
apiManager = new APIManager(this, getConfig());
|
||||
cacheManager = new CacheManager(inventory_slots);
|
||||
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
|
||||
|
@ -1,4 +1,4 @@
|
||||
package tokarotik.giftapi.NBT.cache;
|
||||
package tokarotik.giftapi.NBT.nbt;
|
||||
|
||||
import net.minecraft.server.v1_6_R3.EntityPlayer;
|
||||
import net.minecraft.server.v1_6_R3.NBTCompressedStreamTools;
|
@ -1,4 +1,4 @@
|
||||
package tokarotik.giftapi.NBT.cache;
|
||||
package tokarotik.giftapi.NBT.nbt;
|
||||
|
||||
import net.minecraft.server.v1_6_R3.EntityPlayer;
|
||||
import net.minecraft.server.v1_6_R3.NBTTagCompound;
|
@ -8,15 +8,17 @@ public class PagesManager
|
||||
private NBTTagList tag;
|
||||
private int current_page = 0;
|
||||
private int count_pages = 0;
|
||||
|
||||
public PagesManager(NBTTagList tag)
|
||||
private final int items_slots;
|
||||
public PagesManager(NBTTagList tag, int items_slots)
|
||||
{
|
||||
this.items_slots = items_slots;
|
||||
this.tag = tag;
|
||||
setCountPages();
|
||||
}
|
||||
|
||||
public PagesManager()
|
||||
public PagesManager(int items_slots)
|
||||
{
|
||||
this.items_slots = items_slots;
|
||||
this.tag = new NBTTagList("giftapi");
|
||||
}
|
||||
|
||||
@ -40,9 +42,11 @@ public class PagesManager
|
||||
setCountPages();
|
||||
}
|
||||
|
||||
public int getIntCurrentPage() { return this.current_page; }
|
||||
public ItemStack[] getList() { return PagesUtil.reverse( PagesUtil.getRawList(this.tag) ); }
|
||||
|
||||
public void setIntCurrentPage(int current_page) { this.current_page = current_page; }
|
||||
public int getCurrentPage() { return this.current_page; }
|
||||
|
||||
public void setCurrentPage(int current_page) { this.current_page = current_page; }
|
||||
|
||||
public int getCountPages() { return this.count_pages; }
|
||||
|
||||
@ -50,8 +54,7 @@ public class PagesManager
|
||||
int tag_size = this.tag.size();
|
||||
if (tag_size == 0) { this.count_pages = 0; }
|
||||
|
||||
int access_slots = 45;
|
||||
this.count_pages = Math.floorDiv(tag_size, access_slots);
|
||||
this.count_pages = Math.floorDiv(tag_size, this.items_slots);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -5,7 +5,6 @@ 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 tokarotik.giftapi.NBT.pages.page.Page;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
@ -78,29 +77,4 @@ public class PagesUtil
|
||||
|
||||
return (ItemStack[]) array.toArray();
|
||||
}
|
||||
|
||||
public static boolean isUpdatedTag(NBTTagList tag, NBTTagList new_tag)
|
||||
{
|
||||
if (!new_tag.equals(tag)) { return false; }
|
||||
return true;
|
||||
}
|
||||
|
||||
public static NBTTagList updateTag(Page page, NBTTagList tag)
|
||||
{
|
||||
Integer page_number = page.getNumber();
|
||||
if (page_number == null) { return tag; }
|
||||
|
||||
NBTTagList new_tag = new NBTTagList();
|
||||
|
||||
for (int i = 0; i < tag.size(); i++)
|
||||
{
|
||||
NBTTagList pageNBT = (NBTTagList) tag.get(i);
|
||||
|
||||
if (page_number == i) { pageNBT = page.getTag(); }
|
||||
|
||||
new_tag.add(pageNBT);
|
||||
}
|
||||
|
||||
return new_tag;
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,9 @@
|
||||
package tokarotik.giftapi.NBT.cache;
|
||||
package tokarotik.giftapi.cache;
|
||||
|
||||
import net.minecraft.server.v1_6_R3.EntityPlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
import tokarotik.giftapi.NBT.nbt.BasicNBT;
|
||||
import tokarotik.giftapi.NBT.nbt.WorldNBTSynchronizer;
|
||||
import tokarotik.giftapi.NBT.pages.PagesManager;
|
||||
|
||||
import java.util.Map;
|
||||
@ -9,10 +11,12 @@ import java.util.Map;
|
||||
public class CacheManager
|
||||
{
|
||||
private final CacheUtil cacheUtil;
|
||||
private final int inventory_slots;
|
||||
|
||||
public CacheManager(int max_stack)
|
||||
public CacheManager(int inventory_slots)
|
||||
{
|
||||
cacheUtil = new CacheUtil(max_stack);
|
||||
this.inventory_slots = inventory_slots;
|
||||
cacheUtil = new CacheUtil(inventory_slots);
|
||||
}
|
||||
|
||||
public synchronized PagesManager load(Player player) {
|
||||
@ -40,7 +44,7 @@ public class CacheManager
|
||||
}
|
||||
|
||||
// Fallback to new empty PageManager
|
||||
PagesManager defaultPages = new PagesManager();
|
||||
PagesManager defaultPages = new PagesManager(this.inventory_slots);
|
||||
worldMap.put(player, defaultPages);
|
||||
|
||||
System.out.print("New empty PageManager");
|
@ -1,4 +1,4 @@
|
||||
package tokarotik.giftapi.NBT.cache;
|
||||
package tokarotik.giftapi.cache;
|
||||
|
||||
import net.minecraft.server.v1_6_R3.EntityPlayer;
|
||||
import net.minecraft.server.v1_6_R3.NBTTagCompound;
|
||||
@ -6,6 +6,7 @@ import net.minecraft.server.v1_6_R3.NBTTagList;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Player;
|
||||
import tokarotik.giftapi.NBT.nbt.BasicNBT;
|
||||
import tokarotik.giftapi.NBT.pages.PagesManager;
|
||||
|
||||
import java.util.HashMap;
|
||||
@ -17,11 +18,11 @@ public class CacheUtil
|
||||
public final Map<Player, PagesManager> nether_map = new HashMap<>();
|
||||
public final Map<Player, PagesManager> end_map = new HashMap<>();
|
||||
|
||||
public final int max_stack;
|
||||
public final int inventory_slots;
|
||||
|
||||
public CacheUtil(int max_stack)
|
||||
public CacheUtil(int inventory_slots)
|
||||
{
|
||||
this.max_stack = max_stack;
|
||||
this.inventory_slots = inventory_slots;
|
||||
}
|
||||
|
||||
public synchronized void saveHard(Player player)
|
||||
@ -72,7 +73,7 @@ public class CacheUtil
|
||||
NBTTagCompound compound = new BasicNBT(world).readPlayerNBT(entityPlayer);
|
||||
NBTTagList giftList = compound.getList("giftapi");
|
||||
|
||||
PagesManager pagesManager = new PagesManager(giftList);
|
||||
PagesManager pagesManager = new PagesManager(giftList, this.inventory_slots);
|
||||
worldMap.put(player, pagesManager);
|
||||
return pagesManager;
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
package tokarotik.giftapi.inventory;
|
||||
|
||||
public class InventoryItems
|
||||
{
|
||||
//private
|
||||
public InventoryItems()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
@ -7,22 +7,27 @@ import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import tokarotik.giftapi.NBT.cache.CacheManager;
|
||||
import tokarotik.giftapi.cache.CacheManager;
|
||||
import tokarotik.giftapi.NBT.pages.PagesManager;
|
||||
|
||||
|
||||
public class InventoryManager implements Listener {
|
||||
public class InventoryManager implements Listener
|
||||
{
|
||||
|
||||
private final String nameGUI;
|
||||
private final int inventory_slots;
|
||||
private final int items_slots;
|
||||
private final CacheManager cacheManager;
|
||||
private final InventoryUtil inventoryUtil;
|
||||
|
||||
|
||||
public InventoryManager(CacheManager cacheManager, String nameGUI, String nameArrowRight, String nameArrowLeft, String nameExit)
|
||||
public InventoryManager(CacheManager cacheManager, int inventory_slots, String nameGUI, String nameArrowRight, String nameArrowLeft, String nameExit)
|
||||
{
|
||||
this.nameGUI = nameGUI;
|
||||
this.inventory_slots = inventory_slots;
|
||||
this.items_slots = inventory_slots - 9;
|
||||
this.cacheManager = cacheManager;
|
||||
inventoryUtil = new InventoryUtil(cacheManager, nameGUI, nameArrowRight, nameArrowLeft, nameExit);
|
||||
inventoryUtil = new InventoryUtil(cacheManager, nameGUI, nameArrowRight, nameArrowLeft, nameExit, this.items_slots);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
@ -34,25 +39,23 @@ public class InventoryManager implements Listener {
|
||||
public synchronized void add(Player player, ItemStack item)
|
||||
{
|
||||
PagesManager pages = this.cacheManager.load(player);
|
||||
|
||||
pages.add(item);
|
||||
}
|
||||
|
||||
public synchronized void remove(Player player, ItemStack item)
|
||||
{
|
||||
PagesManager pages = this.cacheManager.load(player);
|
||||
|
||||
pages.remove(item);
|
||||
}
|
||||
|
||||
public synchronized void openCustomInventory(Player player)
|
||||
{
|
||||
int countSlots = 54;
|
||||
Inventory inventory = Bukkit.createInventory(null, countSlots, this.nameGUI);
|
||||
Inventory inventory = Bukkit.createInventory(null, this.inventory_slots, this.nameGUI);
|
||||
|
||||
this.inventoryUtil.updateInventory(inventory, player);
|
||||
|
||||
player.openInventory(inventory);
|
||||
}
|
||||
|
||||
public int getItemsSlots() { return this.items_slots; }
|
||||
|
||||
}
|
||||
|
@ -6,24 +6,29 @@ import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import tokarotik.giftapi.NBT.cache.CacheManager;
|
||||
import tokarotik.giftapi.cache.CacheManager;
|
||||
import tokarotik.giftapi.NBT.pages.PagesManager;
|
||||
import tokarotik.giftapi.inventory.inventoryitems.InventoryItems;
|
||||
|
||||
public class InventoryUtil
|
||||
{
|
||||
private final CacheManager cacheManager;
|
||||
private final InventoryItems inventoryItems;
|
||||
private final String nameGUI;
|
||||
private final String nameArrowRight;
|
||||
private final String nameArrowLeft;
|
||||
private final String nameExit;
|
||||
private final int inventory_slots;
|
||||
|
||||
public InventoryUtil(CacheManager cacheManager, String nameGUI, String nameArrowRight, String nameArrowLeft, String nameExit)
|
||||
public InventoryUtil(CacheManager cacheManager, String nameGUI, String nameArrowRight, String nameArrowLeft, String nameExit, int inventory_slots)
|
||||
{
|
||||
this.cacheManager = cacheManager;
|
||||
this.nameGUI = nameGUI;
|
||||
this.nameArrowRight = nameArrowRight;
|
||||
this.nameArrowLeft = nameArrowLeft;
|
||||
this.nameExit = nameExit;
|
||||
this.inventory_slots = inventory_slots;
|
||||
this.inventoryItems = new InventoryItems(inventory_slots);
|
||||
}
|
||||
|
||||
public void onInventoryClick(InventoryClickEvent event)
|
||||
@ -59,11 +64,7 @@ public class InventoryUtil
|
||||
PagesManager pagesManager = this.cacheManager.load(player);
|
||||
|
||||
setUI(inventory, pagesManager);
|
||||
}
|
||||
|
||||
public synchronized void renderItem(Inventory inventory, ItemStack item)
|
||||
{
|
||||
inventory.addItem(item);
|
||||
this.inventoryItems.renderPage(pagesManager, inventory);
|
||||
}
|
||||
|
||||
private synchronized void setUI(Inventory inventory, PagesManager pagesManager)
|
||||
@ -72,13 +73,13 @@ public class InventoryUtil
|
||||
setItem(inventory, Material.REDSTONE, this.nameExit, 4, 6);
|
||||
if (pagesManager.getCountPages() == 0) { return; }
|
||||
|
||||
if (pagesManager.getIntCurrentPage() != pagesManager.getCountPages())
|
||||
if (pagesManager.getCurrentPage() != pagesManager.getCountPages())
|
||||
{
|
||||
// arrow right
|
||||
setArrow(inventory, this.nameArrowRight, 8, 6);
|
||||
}
|
||||
|
||||
if (pagesManager.getIntCurrentPage() != 0)
|
||||
if (pagesManager.getCurrentPage() != 0)
|
||||
{
|
||||
// arrow left
|
||||
setArrow(inventory, this.nameArrowLeft, 0, 6);
|
||||
@ -109,6 +110,6 @@ public class InventoryUtil
|
||||
public synchronized int getCordinates(int x, int y)
|
||||
{
|
||||
if (y == 0) {y++;}
|
||||
return ((y - 1) * 9 + x) % 64;
|
||||
return ((y - 1) * 9 + x) % this.inventory_slots;
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,20 @@
|
||||
package tokarotik.giftapi.inventory.inventoryitems;
|
||||
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import tokarotik.giftapi.NBT.pages.PagesManager;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class InventoryItems
|
||||
{
|
||||
private final int items_slots;
|
||||
|
||||
public InventoryItems(int items_slots) { this.items_slots = items_slots; }
|
||||
|
||||
public void renderPage(PagesManager pagesManager, Inventory inventory)
|
||||
{
|
||||
List<ItemStack> array = InventoryItemsUtil.getArrayToRender(pagesManager, items_slots);
|
||||
InventoryItemsUtil.renderList(array, inventory);
|
||||
}
|
||||
}
|
@ -0,0 +1,46 @@
|
||||
package tokarotik.giftapi.inventory.inventoryitems;
|
||||
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import tokarotik.giftapi.NBT.pages.PagesManager;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class InventoryItemsUtil
|
||||
{
|
||||
public static List<ItemStack> getArrayToRender(PagesManager pagesManager, int items_slots)
|
||||
{
|
||||
ItemStack[] items = pagesManager.getList();
|
||||
|
||||
int items_count = items.length;
|
||||
int current_page = pagesManager.getCurrentPage();
|
||||
|
||||
int start_item = getStartItemIndex(current_page, items_slots);
|
||||
int end_item = getEndItemIndex(current_page, items_slots, items_count);
|
||||
|
||||
return Arrays.asList(items).subList(start_item, end_item);
|
||||
}
|
||||
|
||||
public static void renderList(List<ItemStack> array, Inventory inventory)
|
||||
{
|
||||
for (ItemStack item : (ItemStack[]) array.toArray())
|
||||
{
|
||||
inventory.addItem(item);
|
||||
}
|
||||
}
|
||||
|
||||
private 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)
|
||||
{
|
||||
int literly_end_page = current_page * (items_slots * 2);
|
||||
|
||||
if (literly_end_page < items_count) { return literly_end_page; }
|
||||
|
||||
return literly_end_page - (items_count - literly_end_page);
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user