Compare commits
No commits in common. "22e5982e9ee7b811a3b3719b2bb345256d07908d" and "5f7a4767b971f517bc25d2a6c667f758ecdff51c" have entirely different histories.
22e5982e9e
...
5f7a4767b9
@ -3,24 +3,23 @@ package tokarotik.giftapi;
|
|||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.Listener;
|
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import tokarotik.giftapi.NBT.cache.CacheManager;
|
||||||
|
import tokarotik.giftapi.NBT.pages.PagesManager;
|
||||||
import tokarotik.giftapi.inventory.InventoryManager;
|
import tokarotik.giftapi.inventory.InventoryManager;
|
||||||
|
|
||||||
public class APIManager implements Listener {
|
public class APIManager {
|
||||||
|
|
||||||
public final Main plugin;
|
public final Main plugin;
|
||||||
private final InventoryManager inventoryManager;
|
private final InventoryManager inventoryManager;
|
||||||
|
|
||||||
public APIManager(Main plugin, FileConfiguration config, int inventory_slots)
|
public APIManager(Main plugin, FileConfiguration config)
|
||||||
{
|
{
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
|
|
||||||
this.inventoryManager = new InventoryManager(
|
this.inventoryManager = new InventoryManager(
|
||||||
plugin.getCacheManager(),
|
plugin.getCacheManager(),
|
||||||
inventory_slots,
|
|
||||||
ConfigPaths.getWithColor(config, ConfigPaths.GUINAME, "GiftAPI Menu"),
|
ConfigPaths.getWithColor(config, ConfigPaths.GUINAME, "GiftAPI Menu"),
|
||||||
ConfigPaths.getWithColor(config, ConfigPaths.GUIRIGHT, "<<right"),
|
ConfigPaths.getWithColor(config, ConfigPaths.GUIRIGHT, "<<right"),
|
||||||
ConfigPaths.getWithColor(config, ConfigPaths.GUILEFT, "left>>"),
|
ConfigPaths.getWithColor(config, ConfigPaths.GUILEFT, "left>>"),
|
||||||
@ -30,15 +29,25 @@ public class APIManager implements Listener {
|
|||||||
Bukkit.getPluginManager().registerEvents(this.inventoryManager, this.plugin);
|
Bukkit.getPluginManager().registerEvents(this.inventoryManager, this.plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void add(Player player, ItemStack item) { this.inventoryManager.add(player, item); }
|
public synchronized boolean add(Player player, ItemStack item)
|
||||||
|
{
|
||||||
|
CacheManager cache = plugin.getCacheManager();
|
||||||
|
PagesManager pages = cache.load(player);
|
||||||
|
|
||||||
public synchronized void remove(Player player, ItemStack item) { this.inventoryManager.remove(player, item); }
|
pages.add(item);
|
||||||
|
|
||||||
|
cache.save(player, pages);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public synchronized boolean remove(Player player, ItemStack item)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public synchronized void openInventory(Player player)
|
public synchronized void openInventory(Player player)
|
||||||
{
|
{
|
||||||
this.inventoryManager.openCustomInventory(player);
|
this.inventoryManager.openCustomInventory(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void onInventoryClick(InventoryClickEvent event) { this.inventoryManager.onInventoryClick(event); }
|
|
||||||
}
|
}
|
||||||
|
@ -8,26 +8,25 @@ import org.bukkit.event.player.PlayerQuitEvent;
|
|||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
import tokarotik.giftapi.cache.CacheManager;
|
import tokarotik.giftapi.NBT.cache.CacheManager;
|
||||||
import tokarotik.giftapi.dev.AddCommand;
|
|
||||||
import tokarotik.giftapi.dev.GiftCommand;
|
import tokarotik.giftapi.dev.GiftCommand;
|
||||||
|
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
public class Main extends JavaPlugin implements Listener
|
public class Main extends JavaPlugin implements Listener
|
||||||
{
|
{
|
||||||
private CacheManager cacheManager;
|
private CacheManager cacheManager;
|
||||||
private APIManager apiManager;
|
private APIManager apiManager;
|
||||||
private final int inventory_slots = 54;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable()
|
public void onEnable()
|
||||||
{
|
{
|
||||||
saveDefaultConfig();
|
saveDefaultConfig();
|
||||||
|
|
||||||
cacheManager = new CacheManager(inventory_slots);
|
cacheManager = new CacheManager(54);
|
||||||
apiManager = new APIManager(this, getConfig(), inventory_slots);
|
apiManager = new APIManager(this, getConfig());
|
||||||
|
|
||||||
this.getCommand("gift").setExecutor(new GiftCommand(apiManager, this)); // DELETE FOR RELEASE
|
this.getCommand("gift").setExecutor(new GiftCommand(apiManager, this)); // DELETE FOR RELEASE
|
||||||
this.getCommand("add").setExecutor(new AddCommand(apiManager, this)); // DELETE FOR RELEASE
|
|
||||||
|
|
||||||
getServer().getPluginManager().registerEvents(this, this); // bullshit
|
getServer().getPluginManager().registerEvents(this, this); // bullshit
|
||||||
|
|
||||||
@ -39,6 +38,7 @@ public class Main extends JavaPlugin implements Listener
|
|||||||
{
|
{
|
||||||
getLogger().info("Saving GiftApi...");
|
getLogger().info("Saving GiftApi...");
|
||||||
cacheManager.disable();
|
cacheManager.disable();
|
||||||
|
//Bukkit.getScheduler().runTaskAsynchronously(this, () -> cacheManager.disable());
|
||||||
|
|
||||||
getLogger().info("GiftAPI disabled!");
|
getLogger().info("GiftAPI disabled!");
|
||||||
}
|
}
|
||||||
@ -51,22 +51,17 @@ public class Main extends JavaPlugin implements Listener
|
|||||||
|
|
||||||
// if failed to add, return false
|
// if failed to add, return false
|
||||||
// if successfully added, return true
|
// if successfully added, return true
|
||||||
public void add(Player player, ItemStack item) {
|
public CompletableFuture<Boolean> addAsync(Player player, ItemStack item) {
|
||||||
Bukkit.getScheduler().runTaskAsynchronously(this, () -> {
|
return CompletableFuture.supplyAsync(() -> apiManager.add(player, item));
|
||||||
apiManager.add(player, item);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
// if failed to remove item, return false
|
// if failed to remove item, return false
|
||||||
// if successfully removed item, return true
|
// if successfully removed item, return true
|
||||||
public void remove(Player player, ItemStack item)
|
public CompletableFuture<Boolean> removeAsync(Player player, ItemStack item) {
|
||||||
{
|
return CompletableFuture.supplyAsync(() -> apiManager.remove(player, item));
|
||||||
Bukkit.getScheduler().runTaskAsynchronously(this, () -> {
|
|
||||||
apiManager.remove(player, item);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// will open inventory GiftAPI
|
// will open inventory GiftAPI
|
||||||
public void openGUI(Player player)
|
public void openGUIAsync(Player player)
|
||||||
{
|
{
|
||||||
Bukkit.getScheduler().runTaskAsynchronously(this, () -> {
|
Bukkit.getScheduler().runTaskAsynchronously(this, () -> {
|
||||||
apiManager.openInventory(player);
|
apiManager.openInventory(player);
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package tokarotik.giftapi.NBT.nbt;
|
package tokarotik.giftapi.NBT.cache;
|
||||||
|
|
||||||
import net.minecraft.server.v1_6_R3.EntityPlayer;
|
import net.minecraft.server.v1_6_R3.EntityPlayer;
|
||||||
import net.minecraft.server.v1_6_R3.NBTCompressedStreamTools;
|
import net.minecraft.server.v1_6_R3.NBTCompressedStreamTools;
|
@ -1,9 +1,7 @@
|
|||||||
package tokarotik.giftapi.cache;
|
package tokarotik.giftapi.NBT.cache;
|
||||||
|
|
||||||
import net.minecraft.server.v1_6_R3.EntityPlayer;
|
import net.minecraft.server.v1_6_R3.EntityPlayer;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import tokarotik.giftapi.NBT.nbt.BasicNBT;
|
|
||||||
import tokarotik.giftapi.NBT.nbt.WorldNBTSynchronizer;
|
|
||||||
import tokarotik.giftapi.NBT.pages.PagesManager;
|
import tokarotik.giftapi.NBT.pages.PagesManager;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -11,12 +9,10 @@ import java.util.Map;
|
|||||||
public class CacheManager
|
public class CacheManager
|
||||||
{
|
{
|
||||||
private final CacheUtil cacheUtil;
|
private final CacheUtil cacheUtil;
|
||||||
private final int inventory_slots;
|
|
||||||
|
|
||||||
public CacheManager(int inventory_slots)
|
public CacheManager(int max_stack)
|
||||||
{
|
{
|
||||||
this.inventory_slots = inventory_slots;
|
cacheUtil = new CacheUtil(max_stack);
|
||||||
cacheUtil = new CacheUtil(inventory_slots);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized PagesManager load(Player player) {
|
public synchronized PagesManager load(Player player) {
|
||||||
@ -44,7 +40,7 @@ public class CacheManager
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Fallback to new empty PageManager
|
// Fallback to new empty PageManager
|
||||||
PagesManager defaultPages = new PagesManager(this.inventory_slots);
|
PagesManager defaultPages = new PagesManager();
|
||||||
worldMap.put(player, defaultPages);
|
worldMap.put(player, defaultPages);
|
||||||
|
|
||||||
System.out.print("New empty PageManager");
|
System.out.print("New empty PageManager");
|
@ -1,4 +1,4 @@
|
|||||||
package tokarotik.giftapi.cache;
|
package tokarotik.giftapi.NBT.cache;
|
||||||
|
|
||||||
import net.minecraft.server.v1_6_R3.EntityPlayer;
|
import net.minecraft.server.v1_6_R3.EntityPlayer;
|
||||||
import net.minecraft.server.v1_6_R3.NBTTagCompound;
|
import net.minecraft.server.v1_6_R3.NBTTagCompound;
|
||||||
@ -6,7 +6,6 @@ import net.minecraft.server.v1_6_R3.NBTTagList;
|
|||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import tokarotik.giftapi.NBT.nbt.BasicNBT;
|
|
||||||
import tokarotik.giftapi.NBT.pages.PagesManager;
|
import tokarotik.giftapi.NBT.pages.PagesManager;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -18,11 +17,11 @@ public class CacheUtil
|
|||||||
public final Map<Player, PagesManager> nether_map = new HashMap<>();
|
public final Map<Player, PagesManager> nether_map = new HashMap<>();
|
||||||
public final Map<Player, PagesManager> end_map = new HashMap<>();
|
public final Map<Player, PagesManager> end_map = new HashMap<>();
|
||||||
|
|
||||||
public final int inventory_slots;
|
public final int max_stack;
|
||||||
|
|
||||||
public CacheUtil(int inventory_slots)
|
public CacheUtil(int max_stack)
|
||||||
{
|
{
|
||||||
this.inventory_slots = inventory_slots;
|
this.max_stack = max_stack;
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void saveHard(Player player)
|
public synchronized void saveHard(Player player)
|
||||||
@ -32,6 +31,8 @@ public class CacheUtil
|
|||||||
String nameWorld = world.getName();
|
String nameWorld = world.getName();
|
||||||
Map<Player, PagesManager> map = this.getWorlMap(nameWorld);
|
Map<Player, PagesManager> map = this.getWorlMap(nameWorld);
|
||||||
|
|
||||||
|
System.out.println("Map " + map.toString() + ". World: " + nameWorld);
|
||||||
|
|
||||||
if (map == null) { continue; }
|
if (map == null) { continue; }
|
||||||
|
|
||||||
PagesManager pages = map.get(player);
|
PagesManager pages = map.get(player);
|
||||||
@ -73,7 +74,7 @@ public class CacheUtil
|
|||||||
NBTTagCompound compound = new BasicNBT(world).readPlayerNBT(entityPlayer);
|
NBTTagCompound compound = new BasicNBT(world).readPlayerNBT(entityPlayer);
|
||||||
NBTTagList giftList = compound.getList("giftapi");
|
NBTTagList giftList = compound.getList("giftapi");
|
||||||
|
|
||||||
PagesManager pagesManager = new PagesManager(giftList, this.inventory_slots);
|
PagesManager pagesManager = new PagesManager(giftList);
|
||||||
worldMap.put(player, pagesManager);
|
worldMap.put(player, pagesManager);
|
||||||
return pagesManager;
|
return pagesManager;
|
||||||
}
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package tokarotik.giftapi.NBT.nbt;
|
package tokarotik.giftapi.NBT.cache;
|
||||||
|
|
||||||
import net.minecraft.server.v1_6_R3.EntityPlayer;
|
import net.minecraft.server.v1_6_R3.EntityPlayer;
|
||||||
import net.minecraft.server.v1_6_R3.NBTTagCompound;
|
import net.minecraft.server.v1_6_R3.NBTTagCompound;
|
@ -6,32 +6,27 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
public class PagesManager
|
public class PagesManager
|
||||||
{
|
{
|
||||||
private NBTTagList tag;
|
private NBTTagList tag;
|
||||||
|
|
||||||
private int current_page = 0;
|
private int current_page = 0;
|
||||||
private int count_pages = 0;
|
|
||||||
private final int items_slots;
|
public PagesManager(NBTTagList tag)
|
||||||
public PagesManager(NBTTagList tag, int items_slots)
|
|
||||||
{
|
{
|
||||||
this.items_slots = items_slots;
|
|
||||||
this.tag = tag;
|
this.tag = tag;
|
||||||
setCountPages();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public PagesManager(int items_slots)
|
public PagesManager()
|
||||||
{
|
{
|
||||||
this.items_slots = items_slots;
|
|
||||||
this.tag = new NBTTagList("giftapi");
|
this.tag = new NBTTagList("giftapi");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void add(ItemStack item)
|
public void add(ItemStack item)
|
||||||
{
|
{
|
||||||
PagesUtil.add(item, this.tag);
|
PagesUtil.add(item, this.tag);
|
||||||
setCountPages();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void remove(ItemStack item)
|
public void remove(ItemStack item)
|
||||||
{
|
{
|
||||||
this.tag = PagesUtil.remove(item, this.tag);
|
PagesUtil.remove(item, this.tag);
|
||||||
setCountPages();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public NBTTagList getTag() { return this.tag; }
|
public NBTTagList getTag() { return this.tag; }
|
||||||
@ -39,22 +34,10 @@ public class PagesManager
|
|||||||
public void setTag(NBTTagList tag)
|
public void setTag(NBTTagList tag)
|
||||||
{
|
{
|
||||||
this.tag = tag;
|
this.tag = tag;
|
||||||
setCountPages();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ItemStack[] getList() { return PagesUtil.reverse( PagesUtil.getRawList(this.tag) ); }
|
public int getIntCurrentPage() { return this.current_page; }
|
||||||
|
|
||||||
public int getCurrentPage() { return this.current_page; }
|
public void setIntCurrentPage(int current_page) { this.current_page = current_page; }
|
||||||
|
|
||||||
public void setCurrentPage(int current_page) { this.current_page = current_page; }
|
|
||||||
|
|
||||||
public int getCountPages() { return this.count_pages; }
|
|
||||||
|
|
||||||
private void setCountPages() {
|
|
||||||
int tag_size = this.tag.size();
|
|
||||||
if (tag_size == 0) { this.count_pages = 0; }
|
|
||||||
|
|
||||||
this.count_pages = Math.floorDiv(tag_size, this.items_slots);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -5,10 +5,7 @@ import net.minecraft.server.v1_6_R3.NBTTagList;
|
|||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import tokarotik.giftapi.NBT.item.ItemLoad;
|
import tokarotik.giftapi.NBT.item.ItemLoad;
|
||||||
import tokarotik.giftapi.NBT.item.ItemNBT;
|
import tokarotik.giftapi.NBT.item.ItemNBT;
|
||||||
|
import tokarotik.giftapi.NBT.pages.page.Page;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class PagesUtil
|
public class PagesUtil
|
||||||
{
|
{
|
||||||
@ -22,7 +19,9 @@ public class PagesUtil
|
|||||||
public static NBTTagList remove(ItemStack item, NBTTagList tag)
|
public static NBTTagList remove(ItemStack item, NBTTagList tag)
|
||||||
{
|
{
|
||||||
ItemStack[] new_list = addAllExtraOne(tag, item);
|
ItemStack[] new_list = addAllExtraOne(tag, item);
|
||||||
return itemStackListToNBTList(new_list);
|
NBTTagList list = itemStackListToNBTList(new_list);
|
||||||
|
|
||||||
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ItemStack[] addAllExtraOne(NBTTagList tag, ItemStack item)
|
public static ItemStack[] addAllExtraOne(NBTTagList tag, ItemStack item)
|
||||||
@ -70,11 +69,28 @@ public class PagesUtil
|
|||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ItemStack[] reverse(ItemStack[] list)
|
public static boolean isUpdatedTag(NBTTagList tag, NBTTagList new_tag)
|
||||||
{
|
{
|
||||||
List<ItemStack> array = Arrays.asList(list);
|
if (!new_tag.equals(tag)) { return false; }
|
||||||
Collections.reverse(array);
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
return (ItemStack[]) array.toArray();
|
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,44 +0,0 @@
|
|||||||
package tokarotik.giftapi.dev;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
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;
|
|
||||||
|
|
||||||
|
|
||||||
public class AddCommand implements CommandExecutor {
|
|
||||||
private final APIManager apiManager;
|
|
||||||
private final Main plugin;
|
|
||||||
|
|
||||||
public AddCommand(APIManager APIManager, Main plugin) {
|
|
||||||
|
|
||||||
this.apiManager = APIManager;
|
|
||||||
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);
|
|
||||||
|
|
||||||
this.plugin.add(player, item);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,11 +1,13 @@
|
|||||||
package tokarotik.giftapi.dev;
|
package tokarotik.giftapi.dev;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Material;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandExecutor;
|
import org.bukkit.command.CommandExecutor;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
import tokarotik.giftapi.APIManager;
|
import tokarotik.giftapi.APIManager;
|
||||||
import tokarotik.giftapi.Main;
|
import tokarotik.giftapi.Main;
|
||||||
|
|
||||||
@ -23,25 +25,20 @@ public class GiftCommand implements CommandExecutor {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String s, String[] strings) {
|
public boolean onCommand(CommandSender sender, Command command, String s, String[] strings) {
|
||||||
Player player;
|
|
||||||
|
|
||||||
if (!(sender instanceof Player))
|
if (!(sender instanceof Player))
|
||||||
{
|
{
|
||||||
sender.sendMessage("This command can use only player!");
|
sender.sendMessage("This command can use only player!");
|
||||||
player = Bukkit.getOnlinePlayers()[0];
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
ItemStack item = new ItemStack(Material.BRICK, 1);
|
||||||
{
|
|
||||||
player = (Player) sender;
|
|
||||||
}
|
|
||||||
|
|
||||||
System.out.println( plugin.getCacheManager().load(player).getTag() );
|
Bukkit.getScheduler().runTaskAsynchronously(this.plugin, () -> {
|
||||||
|
plugin.getCacheManager().load((Player) sender);
|
||||||
this.plugin.openGUI(player);
|
apiManager.add((Player) sender, item);
|
||||||
|
|
||||||
|
apiManager.openInventory((Player) sender);
|
||||||
|
});
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1,61 +1,57 @@
|
|||||||
package tokarotik.giftapi.inventory;
|
package tokarotik.giftapi.inventory;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import tokarotik.giftapi.cache.CacheManager;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
import tokarotik.giftapi.NBT.pages.PagesManager;
|
import tokarotik.giftapi.NBT.cache.CacheManager;
|
||||||
|
|
||||||
|
|
||||||
public class InventoryManager implements Listener
|
public class InventoryManager implements Listener {
|
||||||
{
|
|
||||||
|
|
||||||
|
private final int countSlots = 54;
|
||||||
private final String nameGUI;
|
private final String nameGUI;
|
||||||
private final int inventory_slots;
|
|
||||||
private final int items_slots;
|
|
||||||
private final CacheManager cacheManager;
|
private final CacheManager cacheManager;
|
||||||
private final InventoryUtil inventoryUtil;
|
private final InventoryUtil inventoryUtil;
|
||||||
|
|
||||||
|
|
||||||
public InventoryManager(CacheManager cacheManager, int inventory_slots, String nameGUI, String nameArrowRight, String nameArrowLeft, String nameExit)
|
public InventoryManager(CacheManager cacheManager, String nameGUI, String nameArrowRight, String nameArrowLeft, String nameExit)
|
||||||
{
|
{
|
||||||
this.nameGUI = nameGUI;
|
this.nameGUI = nameGUI;
|
||||||
this.inventory_slots = inventory_slots;
|
|
||||||
this.items_slots = inventory_slots - 9;
|
|
||||||
this.cacheManager = cacheManager;
|
this.cacheManager = cacheManager;
|
||||||
inventoryUtil = new InventoryUtil(cacheManager, nameGUI, nameArrowRight, nameArrowLeft, nameExit, this.items_slots);
|
inventoryUtil = new InventoryUtil(nameGUI, nameArrowRight, nameArrowLeft, nameExit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public synchronized void onInventoryClick(InventoryClickEvent event)
|
public void onInventoryClick(InventoryClickEvent event)
|
||||||
{
|
{
|
||||||
this.inventoryUtil.onInventoryClick(event);
|
this.inventoryUtil.onInventoryClick(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void add(Player player, ItemStack item)
|
public synchronized boolean add(Player player, ItemStack item)
|
||||||
{
|
{
|
||||||
PagesManager pages = this.cacheManager.load(player);
|
return false;
|
||||||
pages.add(item);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void remove(Player player, ItemStack item)
|
public synchronized boolean remove(Player player, ItemStack item)
|
||||||
{
|
{
|
||||||
PagesManager pages = this.cacheManager.load(player);
|
return false;
|
||||||
pages.remove(item);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void openCustomInventory(Player player)
|
public synchronized void openCustomInventory(Player player)
|
||||||
{
|
{
|
||||||
Inventory inventory = Bukkit.createInventory(null, this.inventory_slots, this.nameGUI);
|
Inventory inventory = Bukkit.createInventory(null, this.countSlots, this.nameGUI);
|
||||||
|
|
||||||
|
this.inventoryUtil.updateInventory(inventory);
|
||||||
|
|
||||||
this.inventoryUtil.updateInventory(inventory, player);
|
|
||||||
player.openInventory(inventory);
|
player.openInventory(inventory);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getItemsSlots() { return this.items_slots; }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -6,29 +6,21 @@ import org.bukkit.event.inventory.InventoryClickEvent;
|
|||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
import tokarotik.giftapi.cache.CacheManager;
|
|
||||||
import tokarotik.giftapi.NBT.pages.PagesManager;
|
|
||||||
import tokarotik.giftapi.inventory.inventoryitems.InventoryItems;
|
|
||||||
|
|
||||||
public class InventoryUtil
|
public class InventoryUtil
|
||||||
{
|
{
|
||||||
private final CacheManager cacheManager;
|
|
||||||
private final InventoryItems inventoryItems;
|
|
||||||
private final String nameGUI;
|
private final String nameGUI;
|
||||||
private final String nameArrowRight;
|
private final String nameArrowRight;
|
||||||
private final String nameArrowLeft;
|
private final String nameArrowLeft;
|
||||||
private final String nameExit;
|
private final String nameExit;
|
||||||
private final int inventory_slots;
|
|
||||||
|
|
||||||
public InventoryUtil(CacheManager cacheManager, String nameGUI, String nameArrowRight, String nameArrowLeft, String nameExit, int inventory_slots)
|
public InventoryUtil(String nameGUI, String nameArrowRight, String nameArrowLeft, String nameExit)
|
||||||
{
|
{
|
||||||
this.cacheManager = cacheManager;
|
|
||||||
this.nameGUI = nameGUI;
|
this.nameGUI = nameGUI;
|
||||||
this.nameArrowRight = nameArrowRight;
|
this.nameArrowRight = nameArrowRight;
|
||||||
this.nameArrowLeft = nameArrowLeft;
|
this.nameArrowLeft = nameArrowLeft;
|
||||||
this.nameExit = nameExit;
|
this.nameExit = nameExit;
|
||||||
this.inventory_slots = inventory_slots;
|
|
||||||
this.inventoryItems = new InventoryItems(inventory_slots);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onInventoryClick(InventoryClickEvent event)
|
public void onInventoryClick(InventoryClickEvent event)
|
||||||
@ -59,36 +51,24 @@ public class InventoryUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized void updateInventory(Inventory inventory, Player player)
|
public void updateInventory(Inventory inventory)
|
||||||
{
|
{
|
||||||
PagesManager pagesManager = this.cacheManager.load(player);
|
setUI(inventory);
|
||||||
|
|
||||||
setUI(inventory, pagesManager);
|
|
||||||
this.inventoryItems.renderPage(pagesManager, inventory);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private synchronized void setUI(Inventory inventory, PagesManager pagesManager)
|
private void setUI(Inventory inventory)
|
||||||
{
|
{
|
||||||
|
// arrow right
|
||||||
|
setArrow(inventory, this.nameArrowRight, 8, 6);
|
||||||
|
// arrow left
|
||||||
|
setArrow(inventory, this.nameArrowLeft, 0, 6);
|
||||||
// exit
|
// exit
|
||||||
setItem(inventory, Material.REDSTONE, this.nameExit, 4, 6);
|
setItem(inventory, Material.REDSTONE, this.nameExit, 4, 6);
|
||||||
if (pagesManager.getCountPages() == 0) { return; }
|
|
||||||
|
|
||||||
if (pagesManager.getCurrentPage() != pagesManager.getCountPages())
|
|
||||||
{
|
|
||||||
// arrow right
|
|
||||||
setArrow(inventory, this.nameArrowRight, 8, 6);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pagesManager.getCurrentPage() != 0)
|
|
||||||
{
|
|
||||||
// arrow left
|
|
||||||
setArrow(inventory, this.nameArrowLeft, 0, 6);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private synchronized void setItem(Inventory inventory, Material material, String name, int x, int y)
|
private void setItem(Inventory inventory, Material material, String name, int x, int y)
|
||||||
{
|
{
|
||||||
ItemStack item = new ItemStack(material, 1);
|
ItemStack item = new ItemStack(material, 1);
|
||||||
ItemMeta meta_item = item.getItemMeta();
|
ItemMeta meta_item = item.getItemMeta();
|
||||||
@ -102,14 +82,14 @@ public class InventoryUtil
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private synchronized void setArrow(Inventory inventory, String name, int x, int y)
|
private void setArrow(Inventory inventory, String name, int x, int y)
|
||||||
{
|
{
|
||||||
setItem(inventory, Material.ARROW, name, x, y);
|
setItem(inventory, Material.ARROW, name, x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized int getCordinates(int x, int y)
|
public int getCordinates(int x, int y)
|
||||||
{
|
{
|
||||||
if (y == 0) {y++;}
|
if (y == 0) {y++;}
|
||||||
return ((y - 1) * 9 + x) % this.inventory_slots;
|
return ((y - 1) * 9 + x) % 64;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,46 +0,0 @@
|
|||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
@ -6,6 +6,3 @@ commands:
|
|||||||
gift:
|
gift:
|
||||||
description: for test
|
description: for test
|
||||||
usage: /<command>
|
usage: /<command>
|
||||||
add:
|
|
||||||
description: for test
|
|
||||||
usage: /<command>
|
|
Loading…
x
Reference in New Issue
Block a user