From 1b47fe51e103537edb91090c426d72fc4a0217c9 Mon Sep 17 00:00:00 2001 From: ScriptCat Date: Wed, 23 Jul 2025 15:09:25 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BA=D1=82=D0=BE=20=D1=8D=D1=82=D0=B8=20?= =?UTF-8?q?=D0=BD=D0=B1=D1=82=20=D0=BF=D1=80=D0=B8=D0=B4=D1=83=D0=BC=D0=B0?= =?UTF-8?q?=D0=BB...=20=D0=BC=D1=83=D1=87=D0=B0=D1=8E=D1=81=D1=8C=20=D1=81?= =?UTF-8?q?=20=D0=BD=D0=B1=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/tokarotik/giftapi/APIManager.java | 2 +- .../java/tokarotik/giftapi/ConfigPaths.java | 1 + src/main/java/tokarotik/giftapi/Main.java | 12 +++- .../tokarotik/giftapi/dev/GiftCommand.java | 10 +++- .../giftapi/inventory/InventoryManager.java | 3 +- .../giftapi/savemanager/NBTManager.java | 58 +++++++++++++++++++ src/main/resources/config.yml | 3 + 7 files changed, 80 insertions(+), 9 deletions(-) create mode 100644 src/main/java/tokarotik/giftapi/savemanager/NBTManager.java diff --git a/src/main/java/tokarotik/giftapi/APIManager.java b/src/main/java/tokarotik/giftapi/APIManager.java index 00b96cb..8b47616 100644 --- a/src/main/java/tokarotik/giftapi/APIManager.java +++ b/src/main/java/tokarotik/giftapi/APIManager.java @@ -9,7 +9,7 @@ import tokarotik.giftapi.inventory.InventoryManager; public class APIManager { - private Main plugin; + public Main plugin; private FileConfiguration config; private InventoryManager inventoryManager; diff --git a/src/main/java/tokarotik/giftapi/ConfigPaths.java b/src/main/java/tokarotik/giftapi/ConfigPaths.java index c351fba..cc47832 100644 --- a/src/main/java/tokarotik/giftapi/ConfigPaths.java +++ b/src/main/java/tokarotik/giftapi/ConfigPaths.java @@ -1,6 +1,7 @@ package tokarotik.giftapi; public class ConfigPaths { + public static final String DEVTEST = "dev-test"; public static final String GUINAME = "gui.title-menu"; public static final String GUIRIGHT = "gui.arrow.right-name"; public static final String GUILEFT = "gui.arrow.left-name"; diff --git a/src/main/java/tokarotik/giftapi/Main.java b/src/main/java/tokarotik/giftapi/Main.java index cb044c9..5e46e86 100644 --- a/src/main/java/tokarotik/giftapi/Main.java +++ b/src/main/java/tokarotik/giftapi/Main.java @@ -5,6 +5,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.Listener; import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.java.JavaPlugin; + import tokarotik.giftapi.dev.GiftCommand; public class Main extends JavaPlugin implements Listener @@ -12,8 +13,7 @@ public class Main extends JavaPlugin implements Listener private APIManager apiManager; @Override - public void onEnable() - { + public void onEnable() { saveDefaultConfig(); getLogger().info("GiftAPI enabled!"); @@ -21,7 +21,10 @@ public class Main extends JavaPlugin implements Listener saveDefaultConfig(); apiManager = new APIManager(this, getConfig()); - this.getCommand("gift").setExecutor(new GiftCommand(apiManager)); + if (getConfig().getBoolean(ConfigPaths.DEVTEST, false)) + { + this.getCommand("gift").setExecutor(new GiftCommand(apiManager)); + } } @Override @@ -42,4 +45,7 @@ public class Main extends JavaPlugin implements Listener { return apiManager.remove(player, item); } + + // will open inventory GiftAPI + public void openGUI(Player player) {apiManager.openInventory(player);} } \ No newline at end of file diff --git a/src/main/java/tokarotik/giftapi/dev/GiftCommand.java b/src/main/java/tokarotik/giftapi/dev/GiftCommand.java index c9dcd99..3e43f5d 100644 --- a/src/main/java/tokarotik/giftapi/dev/GiftCommand.java +++ b/src/main/java/tokarotik/giftapi/dev/GiftCommand.java @@ -1,18 +1,20 @@ 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 tokarotik.giftapi.APIManager; +import tokarotik.giftapi.savemanager.NBTManager; public class GiftCommand implements CommandExecutor { - private APIManager APIManager; + private APIManager apiManager; public GiftCommand(APIManager APIManager) { - this.APIManager = APIManager; + this.apiManager = APIManager; } @Override @@ -23,7 +25,9 @@ public class GiftCommand implements CommandExecutor { return true; } - this.APIManager.openInventory((Player) sender); + new NBTManager().write((Player) sender, Bukkit.getWorld("world").getWorldFolder().getAbsolutePath()); + + this.apiManager.openInventory((Player) sender); return true; } diff --git a/src/main/java/tokarotik/giftapi/inventory/InventoryManager.java b/src/main/java/tokarotik/giftapi/inventory/InventoryManager.java index 9b61062..4243e29 100644 --- a/src/main/java/tokarotik/giftapi/inventory/InventoryManager.java +++ b/src/main/java/tokarotik/giftapi/inventory/InventoryManager.java @@ -1,7 +1,6 @@ package tokarotik.giftapi.inventory; import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.Listener; @@ -10,7 +9,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; -import tokarotik.giftapi.ConfigPaths; + public class InventoryManager implements Listener { diff --git a/src/main/java/tokarotik/giftapi/savemanager/NBTManager.java b/src/main/java/tokarotik/giftapi/savemanager/NBTManager.java new file mode 100644 index 0000000..314d840 --- /dev/null +++ b/src/main/java/tokarotik/giftapi/savemanager/NBTManager.java @@ -0,0 +1,58 @@ +package tokarotik.giftapi.savemanager; + +import net.minecraft.server.v1_6_R3.EntityPlayer; +import net.minecraft.server.v1_6_R3.NBTCompressedStreamTools; +import net.minecraft.server.v1_6_R3.NBTTagCompound; +import net.minecraft.server.v1_6_R3.NBTTagString; +import org.bukkit.craftbukkit.v1_6_R3.entity.CraftPlayer; +import org.bukkit.entity.Player; + +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.lang.reflect.Field; +import java.lang.reflect.Method; + +public class NBTManager +{ + public void write(Player player, String path) + { + EntityPlayer entityPlayer = getPlayer(player); + //entityPlayer.getName() + + NBTTagCompound tag = readNBT(entityPlayer, path); + + if (tag == null){System.out.println("IS NULL!!!");}; + + tag.setShort("Health", (short) 15); + tag.setFloat("HealF", 15.0F); + + System.out.println(tag); + + entityPlayer.f(tag); + + System.out.println(); + System.out.println(tag); + + } + + private NBTTagCompound readNBT(EntityPlayer player, String path) + { + try { + FileInputStream fis = new FileInputStream(path + "/players/" + player.getName() + ".dat"); + NBTTagCompound compound = NBTCompressedStreamTools.a(fis); // Decompress and load + fis.close(); + + player.b(compound); + return compound; + + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + private EntityPlayer getPlayer(Player player) + { + return ((CraftPlayer) player).getHandle(); + } +} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 4035cac..105885b 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,6 +1,9 @@ # Colors you can see here https://htmlcolorcodes.com/minecraft-color-codes/ # Set Names Only In English +# Will turn command /gift for dev. test +dev-test: true + gui: # Max title length is 32 letters title-menu: "Set Your Title In Config"