From f347c014268e192e226995037a54cb1a76870846 Mon Sep 17 00:00:00 2001 From: ScriptCat Date: Fri, 25 Jul 2025 22:06:05 +0300 Subject: [PATCH] i need more bullets i think i will delete NBTManager.java --- .../java/tokarotik/giftapi/APIManager.java | 8 +- .../java/tokarotik/giftapi/ConfigPaths.java | 8 ++ src/main/java/tokarotik/giftapi/Main.java | 3 - .../{savemanager => NBT}/BasicNBT.java | 4 +- .../{savemanager => NBT}/NBTManager.java | 2 +- .../giftapi/NBT/WorldNBTSynchronizer.java | 40 +++++++ .../{savemanager => NBT}/item/ItemLoad.java | 2 +- .../{savemanager => NBT}/item/ItemNBT.java | 2 +- .../giftapi/NBT/page/PageManager.java | 113 ++++++++++++++++++ .../giftapi/NBT/page/PagesSaver.java | 22 ++++ .../{savemanager => NBT/page}/page/Page.java | 43 ++++++- .../page}/page/PageUtil.java | 6 +- .../tokarotik/giftapi/dev/GiftCommand.java | 2 +- .../giftapi/savemanager/page/PageManager.java | 11 -- src/main/resources/config.yml | 12 +- 15 files changed, 242 insertions(+), 36 deletions(-) rename src/main/java/tokarotik/giftapi/{savemanager => NBT}/BasicNBT.java (96%) rename src/main/java/tokarotik/giftapi/{savemanager => NBT}/NBTManager.java (95%) create mode 100644 src/main/java/tokarotik/giftapi/NBT/WorldNBTSynchronizer.java rename src/main/java/tokarotik/giftapi/{savemanager => NBT}/item/ItemLoad.java (98%) rename src/main/java/tokarotik/giftapi/{savemanager => NBT}/item/ItemNBT.java (98%) create mode 100644 src/main/java/tokarotik/giftapi/NBT/page/PageManager.java create mode 100644 src/main/java/tokarotik/giftapi/NBT/page/PagesSaver.java rename src/main/java/tokarotik/giftapi/{savemanager => NBT/page}/page/Page.java (66%) rename src/main/java/tokarotik/giftapi/{savemanager => NBT/page}/page/PageUtil.java (91%) delete mode 100644 src/main/java/tokarotik/giftapi/savemanager/page/PageManager.java diff --git a/src/main/java/tokarotik/giftapi/APIManager.java b/src/main/java/tokarotik/giftapi/APIManager.java index aad6a5b..44019a0 100644 --- a/src/main/java/tokarotik/giftapi/APIManager.java +++ b/src/main/java/tokarotik/giftapi/APIManager.java @@ -17,10 +17,10 @@ public class APIManager { this.plugin = plugin; this.inventoryManager = new InventoryManager( - config.getString(ConfigPaths.GUINAME, "GiftAPI Menu"), - config.getString(ConfigPaths.GUIRIGHT, "<>"), - config.getString(ConfigPaths.GUIEXIT, "quit") + ConfigPaths.getWithColor(config, ConfigPaths.GUINAME, "GiftAPI Menu"), + ConfigPaths.getWithColor(config, ConfigPaths.GUIRIGHT, "<>"), + ConfigPaths.getWithColor(config, ConfigPaths.GUIEXIT, "quit") ); Bukkit.getPluginManager().registerEvents(this.inventoryManager, this.plugin); diff --git a/src/main/java/tokarotik/giftapi/ConfigPaths.java b/src/main/java/tokarotik/giftapi/ConfigPaths.java index 106c3fe..af85f5b 100644 --- a/src/main/java/tokarotik/giftapi/ConfigPaths.java +++ b/src/main/java/tokarotik/giftapi/ConfigPaths.java @@ -1,9 +1,17 @@ package tokarotik.giftapi; +import org.bukkit.ChatColor; +import org.bukkit.configuration.file.FileConfiguration; + public class ConfigPaths { public static final String DEVTEST = "dev-test"; public static final String GUINAME = "gui.title-menu"; public static final String GUIRIGHT = "gui.buttons.right-name"; public static final String GUILEFT = "gui.buttons.left-name"; public static final String GUIEXIT = "gui.buttons.exit-name"; + + public static String getWithColor(FileConfiguration config, String path, String defaul) + { + return ChatColor.translateAlternateColorCodes('&', config.getString(path, defaul)); + } } diff --git a/src/main/java/tokarotik/giftapi/Main.java b/src/main/java/tokarotik/giftapi/Main.java index 5e63d2a..8747baa 100644 --- a/src/main/java/tokarotik/giftapi/Main.java +++ b/src/main/java/tokarotik/giftapi/Main.java @@ -1,11 +1,8 @@ package tokarotik.giftapi; - -import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.Listener; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.plugin.java.JavaPlugin; import tokarotik.giftapi.dev.GiftCommand; diff --git a/src/main/java/tokarotik/giftapi/savemanager/BasicNBT.java b/src/main/java/tokarotik/giftapi/NBT/BasicNBT.java similarity index 96% rename from src/main/java/tokarotik/giftapi/savemanager/BasicNBT.java rename to src/main/java/tokarotik/giftapi/NBT/BasicNBT.java index 3ce411f..6f01994 100644 --- a/src/main/java/tokarotik/giftapi/savemanager/BasicNBT.java +++ b/src/main/java/tokarotik/giftapi/NBT/BasicNBT.java @@ -1,4 +1,4 @@ -package tokarotik.giftapi.savemanager; +package tokarotik.giftapi.NBT; import net.minecraft.server.v1_6_R3.EntityPlayer; import net.minecraft.server.v1_6_R3.NBTCompressedStreamTools; @@ -13,7 +13,7 @@ import java.io.FileInputStream; public class BasicNBT { - private String path; + private final String path; public BasicNBT(String world) { diff --git a/src/main/java/tokarotik/giftapi/savemanager/NBTManager.java b/src/main/java/tokarotik/giftapi/NBT/NBTManager.java similarity index 95% rename from src/main/java/tokarotik/giftapi/savemanager/NBTManager.java rename to src/main/java/tokarotik/giftapi/NBT/NBTManager.java index 6644a99..72289be 100644 --- a/src/main/java/tokarotik/giftapi/savemanager/NBTManager.java +++ b/src/main/java/tokarotik/giftapi/NBT/NBTManager.java @@ -1,4 +1,4 @@ -package tokarotik.giftapi.savemanager; +package tokarotik.giftapi.NBT; import net.minecraft.server.v1_6_R3.EntityPlayer; import net.minecraft.server.v1_6_R3.NBTTagCompound; diff --git a/src/main/java/tokarotik/giftapi/NBT/WorldNBTSynchronizer.java b/src/main/java/tokarotik/giftapi/NBT/WorldNBTSynchronizer.java new file mode 100644 index 0000000..addf79a --- /dev/null +++ b/src/main/java/tokarotik/giftapi/NBT/WorldNBTSynchronizer.java @@ -0,0 +1,40 @@ +package tokarotik.giftapi.NBT; + +import net.minecraft.server.v1_6_R3.EntityPlayer; +import net.minecraft.server.v1_6_R3.NBTTagCompound; +import org.bukkit.Bukkit; +import org.bukkit.World; +import org.bukkit.entity.Player; + +public class WorldNBTSynchronizer +{ + public static String getWorld(EntityPlayer entityPlayer, String worldName) + { + BasicNBT basicNBT = new BasicNBT(worldName); + + return worldName; + } + + private static boolean hasPlayer(String playerName, String worldName) + { + World world = Bukkit.getWorld(worldName); + + for (Player player : world.getPlayers()) + { + if (player.getName() == playerName) { return true; } + } + + return false; + } + + private static boolean hasGiftApiNBT(EntityPlayer entityPlayer, String worldName) + { + BasicNBT basicNBT = new BasicNBT(worldName); + + NBTTagCompound tag = basicNBT.readPlayerNBT(entityPlayer); + + return true; + } + + +} diff --git a/src/main/java/tokarotik/giftapi/savemanager/item/ItemLoad.java b/src/main/java/tokarotik/giftapi/NBT/item/ItemLoad.java similarity index 98% rename from src/main/java/tokarotik/giftapi/savemanager/item/ItemLoad.java rename to src/main/java/tokarotik/giftapi/NBT/item/ItemLoad.java index 0ad2763..16a5239 100644 --- a/src/main/java/tokarotik/giftapi/savemanager/item/ItemLoad.java +++ b/src/main/java/tokarotik/giftapi/NBT/item/ItemLoad.java @@ -1,4 +1,4 @@ -package tokarotik.giftapi.savemanager.item; +package tokarotik.giftapi.NBT.item; import net.minecraft.server.v1_6_R3.NBTTagList; import net.minecraft.server.v1_6_R3.NBTTagString; diff --git a/src/main/java/tokarotik/giftapi/savemanager/item/ItemNBT.java b/src/main/java/tokarotik/giftapi/NBT/item/ItemNBT.java similarity index 98% rename from src/main/java/tokarotik/giftapi/savemanager/item/ItemNBT.java rename to src/main/java/tokarotik/giftapi/NBT/item/ItemNBT.java index c250dbb..6cb135d 100644 --- a/src/main/java/tokarotik/giftapi/savemanager/item/ItemNBT.java +++ b/src/main/java/tokarotik/giftapi/NBT/item/ItemNBT.java @@ -1,4 +1,4 @@ -package tokarotik.giftapi.savemanager.item; +package tokarotik.giftapi.NBT.item; import net.minecraft.server.v1_6_R3.NBTTagCompound; import net.minecraft.server.v1_6_R3.NBTTagList; diff --git a/src/main/java/tokarotik/giftapi/NBT/page/PageManager.java b/src/main/java/tokarotik/giftapi/NBT/page/PageManager.java new file mode 100644 index 0000000..422c74d --- /dev/null +++ b/src/main/java/tokarotik/giftapi/NBT/page/PageManager.java @@ -0,0 +1,113 @@ +package tokarotik.giftapi.NBT.page; + +import net.minecraft.server.v1_6_R3.NBTTagList; +import org.bukkit.inventory.ItemStack; +import tokarotik.giftapi.NBT.page.page.Page; + +public class PageManager +{ + + private NBTTagList tag; + private final int max_stack; + + public PageManager(NBTTagList tag, int max_stack) + { + this.tag = tag; + this.max_stack = max_stack; + } + + public PageManager(int max_stack) + { + this.max_stack = max_stack; + } + + public NBTTagList getTag() + { + return this.tag; + } + + public void setTag(NBTTagList tag) + { + this.tag = tag; + } + + public boolean add(ItemStack item) + { + Page page = getPageWithEmptySlots(); + + boolean is_added = page.add(item); + boolean is_updated = updateTag(page); + + return is_added && is_updated; + } + + public boolean remove(ItemStack item) + { + Page page = getPageWithEmptySlots(); + + boolean is_removed = page.remove(item); + boolean is_updated = updateTag(page); + + return is_removed && is_updated; + } + + public Page getPage(int number) + { + if (number > 0 && number < this.tag.size()) + { + NBTTagList tag = (NBTTagList) this.tag.get(number); + + return new Page(tag, this.max_stack, number); + } + + return null; + } + + + public Page getPageWithEmptySlots() + { + for (int i = 0; i < tag.size(); i++) + { + + Page page = new Page( (NBTTagList) tag.get(i), this.max_stack, i); + + if (!page.isOverStacked()) + { + return page; + } + } + + Page page = new Page(this.max_stack); + page.setNumber(tag.size()); + + return page; + } + + public boolean updateTag(Page page) + { + Integer page_number = page.getNumber(); + + if (page_number == null) { return false; } + + 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); + } + + this.tag = new_tag; + + return true; + } + + + +} diff --git a/src/main/java/tokarotik/giftapi/NBT/page/PagesSaver.java b/src/main/java/tokarotik/giftapi/NBT/page/PagesSaver.java new file mode 100644 index 0000000..0088aee --- /dev/null +++ b/src/main/java/tokarotik/giftapi/NBT/page/PagesSaver.java @@ -0,0 +1,22 @@ +package tokarotik.giftapi.NBT.page; + +import org.bukkit.entity.Player; + +public class PagesSaver +{ + final PageManager pageManager; + final Player player; + //final BasicNBT basicNBT; + + public PagesSaver(Player player, int max_stack) + { + this.pageManager = new PageManager(max_stack); + this.player = player; + //this.basicNBT = new BasicNBT(); + } + + public void loadNBT() + { + + } +} diff --git a/src/main/java/tokarotik/giftapi/savemanager/page/Page.java b/src/main/java/tokarotik/giftapi/NBT/page/page/Page.java similarity index 66% rename from src/main/java/tokarotik/giftapi/savemanager/page/Page.java rename to src/main/java/tokarotik/giftapi/NBT/page/page/Page.java index 5faa219..f7f4876 100644 --- a/src/main/java/tokarotik/giftapi/savemanager/page/Page.java +++ b/src/main/java/tokarotik/giftapi/NBT/page/page/Page.java @@ -1,9 +1,9 @@ -package tokarotik.giftapi.savemanager.page; +package tokarotik.giftapi.NBT.page.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.ItemNBT; +import tokarotik.giftapi.NBT.item.ItemNBT; import java.util.ArrayList; import java.util.Arrays; @@ -11,12 +11,22 @@ import java.util.List; public class Page { - public final int max_stack; - public NBTTagList tag; + private final int max_stack; + private NBTTagList tag; + + public Integer number; public Page(int max_stack) { this.max_stack = max_stack; + this.tag = new NBTTagList(); + } + + public Page(NBTTagList tag, int max_stack, int number) + { + this.tag = tag; + this.max_stack = max_stack; + this.number = number; } public boolean add(ItemStack item) { @@ -46,11 +56,26 @@ public class Page return false; } + public NBTTagList getTag() + { + return this.tag; + } + + public void setTag(NBTTagList tag) + { + this.tag = tag; + } + public ItemStack[] getList() { return PageUtil.reverse(PageUtil.getRawList(this.tag)); } + public boolean isEmpty() + { + return this.tag.size() == 0; + } + public boolean isOverStacked() { return this.tag.size() < this.max_stack; @@ -68,4 +93,14 @@ public class Page return new ItemStack[]{}; } + + public Integer getNumber() + { + return this.number; + } + + public void setNumber(int number) + { + this.number = number; + } } diff --git a/src/main/java/tokarotik/giftapi/savemanager/page/PageUtil.java b/src/main/java/tokarotik/giftapi/NBT/page/page/PageUtil.java similarity index 91% rename from src/main/java/tokarotik/giftapi/savemanager/page/PageUtil.java rename to src/main/java/tokarotik/giftapi/NBT/page/page/PageUtil.java index f5cd87f..48bc141 100644 --- a/src/main/java/tokarotik/giftapi/savemanager/page/PageUtil.java +++ b/src/main/java/tokarotik/giftapi/NBT/page/page/PageUtil.java @@ -1,10 +1,10 @@ -package tokarotik.giftapi.savemanager.page; +package tokarotik.giftapi.NBT.page.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 tokarotik.giftapi.NBT.item.ItemLoad; +import tokarotik.giftapi.NBT.item.ItemNBT; import java.util.Arrays; import java.util.Collections; diff --git a/src/main/java/tokarotik/giftapi/dev/GiftCommand.java b/src/main/java/tokarotik/giftapi/dev/GiftCommand.java index 8fb1f4d..dbb476f 100644 --- a/src/main/java/tokarotik/giftapi/dev/GiftCommand.java +++ b/src/main/java/tokarotik/giftapi/dev/GiftCommand.java @@ -6,7 +6,7 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import tokarotik.giftapi.APIManager; -import tokarotik.giftapi.savemanager.NBTManager; +import tokarotik.giftapi.NBT.NBTManager; public class GiftCommand implements CommandExecutor { diff --git a/src/main/java/tokarotik/giftapi/savemanager/page/PageManager.java b/src/main/java/tokarotik/giftapi/savemanager/page/PageManager.java deleted file mode 100644 index 361b6f3..0000000 --- a/src/main/java/tokarotik/giftapi/savemanager/page/PageManager.java +++ /dev/null @@ -1,11 +0,0 @@ -package tokarotik.giftapi.savemanager.page; - -public class PageManager -{ - public PageManager() - { - - } - - -} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 9936b48..fd30855 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,14 +1,16 @@ -# Colors you can see here https://htmlcolorcodes.com/minecraft-color-codes/ -# Set Names Only In English +# For colors: +# do not use ยง use only & + # Will turn command /gift for dev. test dev-test: true gui: + # Set Title Only In English # Max title length is 32 letters title-menu: "Set Your Title In Config" buttons: - right-name: ">" - left-name: "<" - exit-name: "Exit" \ No newline at end of file + right-name: "&6>" + left-name: "&6<" + exit-name: "&4Exit" \ No newline at end of file