diff --git a/src/main/java/xyz/mineconomia/mineconomiacore/MineconomiaCore.java b/src/main/java/xyz/mineconomia/mineconomiacore/MineconomiaCore.java index 03406c7..07d09c9 100644 --- a/src/main/java/xyz/mineconomia/mineconomiacore/MineconomiaCore.java +++ b/src/main/java/xyz/mineconomia/mineconomiacore/MineconomiaCore.java @@ -1,14 +1,14 @@ package xyz.mineconomia.mineconomiacore; +import net.milkbowl.vault.economy.Economy; import org.bukkit.Bukkit; import org.bukkit.plugin.PluginManager; +import org.bukkit.plugin.RegisteredServiceProvider; import org.bukkit.plugin.java.JavaPlugin; import xyz.mineconomia.mineconomiacore.CustomItems.ItemManager; -import xyz.mineconomia.mineconomiacore.commands.BookCommand; -import xyz.mineconomia.mineconomiacore.commands.funHarvestBall; -import xyz.mineconomia.mineconomiacore.commands.mcore; -import xyz.mineconomia.mineconomiacore.commands.tpw; +import xyz.mineconomia.mineconomiacore.commands.*; import xyz.mineconomia.mineconomiacore.events.playerAccount; +import xyz.mineconomia.mineconomiacore.events.shopInteract; import xyz.mineconomia.mineconomiacore.events.specialEvents; import xyz.mineconomia.mineconomiacore.handlers.FHBHandler; @@ -17,13 +17,19 @@ import java.util.logging.Logger; public final class MineconomiaCore extends JavaPlugin { public static Logger logger = Bukkit.getLogger(); - + private static Economy econ = null; @Override public void onEnable() { + // Plugin startup logic saveDefaultConfig(); MineconomiaCore plugin= getPlugin(MineconomiaCore.class); + if (!setupEconomy()) { + logger.info("No Vault economy! Stopping"); + getServer().getPluginManager().disablePlugin(this); + return; + } //Tohle třeba změnit později - jakub Logger logger= plugin.getLogger(); @@ -43,12 +49,14 @@ public final class MineconomiaCore extends JavaPlugin { pm.registerEvents(new FHBHandler(), this); pm.registerEvents(new playerAccount(), this); pm.registerEvents(new specialEvents(), this); + pm.registerEvents(new shopInteract(), this); //BookCommand Objects.requireNonNull(getCommand("pomoc")).setExecutor(new BookCommand()); Objects.requireNonNull(getCommand("tpw")).setExecutor(new tpw()); Objects.requireNonNull(getCommand("fhb")).setExecutor(new funHarvestBall()); - + Objects.requireNonNull(getCommand("shop")).setExecutor(new shop()); + Objects.requireNonNull(getCommand("sample")).setExecutor(new sample()); //CustomItems ItemManager.init(); } @@ -59,4 +67,19 @@ public final class MineconomiaCore extends JavaPlugin { saveConfig(); } + private boolean setupEconomy() { + if (getServer().getPluginManager().getPlugin("Vault") == null) { + return false; + } + RegisteredServiceProvider rsp = getServer().getServicesManager().getRegistration(Economy.class); + if (rsp == null) { + return false; + } + econ = rsp.getProvider(); + return true; + } + + public static Economy getEconomy() { + return econ; + } } diff --git a/src/main/java/xyz/mineconomia/mineconomiacore/PDC.java b/src/main/java/xyz/mineconomia/mineconomiacore/PDC.java index 6475ae4..a9cec2f 100644 --- a/src/main/java/xyz/mineconomia/mineconomiacore/PDC.java +++ b/src/main/java/xyz/mineconomia/mineconomiacore/PDC.java @@ -1,6 +1,7 @@ package xyz.mineconomia.mineconomiacore; import org.bukkit.NamespacedKey; +import org.bukkit.block.TileState; import org.bukkit.entity.Player; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.persistence.PersistentDataContainer; @@ -30,11 +31,10 @@ public class PDC { pdc.remove(nKey); } - public static ItemMeta WriteItemMetaPDC(ItemMeta itemMeta, String key, PersistentDataType type, Object value){ + public static void WriteItemMetaPDC(ItemMeta itemMeta, String key, PersistentDataType type, Object value){ NamespacedKey nKey = new NamespacedKey(MineconomiaCore.getPlugin(MineconomiaCore.class), key); PersistentDataContainer pdc = itemMeta.getPersistentDataContainer(); pdc.set(nKey, type, value); - return itemMeta; } public static Object GetItemMetaPDC(ItemMeta itemMeta, String key, PersistentDataType type){ @@ -42,6 +42,17 @@ public class PDC { PersistentDataContainer pdc = itemMeta.getPersistentDataContainer(); return pdc.get(nKey, type); } + public static void WriteTileStatePDC(TileState tileState, String key, PersistentDataType type, Object value){ + NamespacedKey nKey = new NamespacedKey(MineconomiaCore.getPlugin(MineconomiaCore.class), key); + PersistentDataContainer pdc = tileState.getPersistentDataContainer(); + pdc.set(nKey, type, value); + + } + public static Object GetTileStatePDC(TileState tileState, String key, PersistentDataType type){ + NamespacedKey nKey = new NamespacedKey(MineconomiaCore.getPlugin(MineconomiaCore.class), key); + PersistentDataContainer pdc = tileState.getPersistentDataContainer(); + return pdc.get(nKey, type); + } } diff --git a/src/main/java/xyz/mineconomia/mineconomiacore/commands/mcore.java b/src/main/java/xyz/mineconomia/mineconomiacore/commands/mcore.java index 32d3a02..8fe7ec8 100644 --- a/src/main/java/xyz/mineconomia/mineconomiacore/commands/mcore.java +++ b/src/main/java/xyz/mineconomia/mineconomiacore/commands/mcore.java @@ -13,7 +13,7 @@ import xyz.mineconomia.mineconomiacore.PDC; import java.io.IOException; import java.util.Objects; -import static xyz.mineconomia.mineconomiacore.config.config; +import static xyz.mineconomia.mineconomiacore.publicValues.config; public class mcore implements CommandExecutor { @Override diff --git a/src/main/java/xyz/mineconomia/mineconomiacore/commands/sample.java b/src/main/java/xyz/mineconomia/mineconomiacore/commands/sample.java new file mode 100644 index 0000000..eab4eec --- /dev/null +++ b/src/main/java/xyz/mineconomia/mineconomiacore/commands/sample.java @@ -0,0 +1,36 @@ +package xyz.mineconomia.mineconomiacore.commands; + +import com.arangodb.ArangoCollection; +import com.arangodb.entity.BaseDocument; +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 org.jetbrains.annotations.NotNull; +import xyz.mineconomia.mineconomiacore.serialization; + +import java.io.IOException; +import java.util.Map; + +import static xyz.mineconomia.mineconomiacore.database.database; + +public class sample implements CommandExecutor { + @Override + public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] strings) { + ArangoCollection collection = database.collection("shops"); + if (collection.documentExists(strings[0])){ + BaseDocument baseDocument = collection.getDocument(strings[0], BaseDocument.class); + Map shopData = baseDocument.getProperties(); + shopData.get("item"); + try { + ((Player) commandSender).getInventory().addItem((ItemStack) serialization.stringToBukkitObject((String) shopData.get("item"))); + } catch (IOException | ClassNotFoundException e) { + throw new RuntimeException(e); + } + }else{ + commandSender.sendMessage("Shop není!"); + } + return false; + } +} diff --git a/src/main/java/xyz/mineconomia/mineconomiacore/commands/shop.java b/src/main/java/xyz/mineconomia/mineconomiacore/commands/shop.java index bbfd33c..eca6e85 100644 --- a/src/main/java/xyz/mineconomia/mineconomiacore/commands/shop.java +++ b/src/main/java/xyz/mineconomia/mineconomiacore/commands/shop.java @@ -2,24 +2,27 @@ package xyz.mineconomia.mineconomiacore.commands; import com.arangodb.ArangoCollection; import com.arangodb.entity.BaseDocument; -import com.arangodb.entity.BaseEdgeDocument; import org.bukkit.ChatColor; import org.bukkit.Material; -import org.bukkit.block.Block; -import org.bukkit.block.Container; -import org.bukkit.block.Sign; +import org.bukkit.block.*; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.TabExecutor; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; +import org.bukkit.persistence.PersistentDataType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import xyz.mineconomia.mineconomiacore.PDC; import xyz.mineconomia.mineconomiacore.events.specialEvents; +import xyz.mineconomia.mineconomiacore.handlers.SignHandler; +import xyz.mineconomia.mineconomiacore.serialization; import java.util.List; +import java.util.Objects; +import java.util.UUID; -import static xyz.mineconomia.mineconomiacore.config.config; +import static xyz.mineconomia.mineconomiacore.publicValues.config; import static xyz.mineconomia.mineconomiacore.database.database; public class shop implements TabExecutor { @@ -33,12 +36,16 @@ public class shop implements TabExecutor { commandSender.sendMessage(ChatColor.RED + "Musíš být hráč"); return false; } - if (!(specialEvents.specialPreLocations.get(player).size() < 2)){ - commandSender.sendMessage(ChatColor.RED + "Musíš mít označenou cedulku a úložiště"); + if (specialEvents.specialPreLocations.get(player) == null){ + commandSender.sendMessage(ChatColor.RED + "Musíš mít označenou cedulku a úložiště!"); return false; } - Block block1 = specialEvents.specialPreLocations.get(player).get("loc1").getBlock(); - Block block2 = specialEvents.specialPreLocations.get(player).get("loc2").getBlock(); + if (!(specialEvents.specialPreLocations.get(player).size() == 2)){ + commandSender.sendMessage(ChatColor.RED + "Musíš mít označenou cedulku a úložištěě"); + return false; + } + BlockState block1 = specialEvents.specialPreLocations.get(player).get("loc1").getBlock().getState(); + BlockState block2 = specialEvents.specialPreLocations.get(player).get("loc2").getBlock().getState(); Container container; if (block1 instanceof Container){ @@ -58,7 +65,7 @@ public class shop implements TabExecutor { commandSender.sendMessage(ChatColor.RED + "Nemáš označenou cedulku"); return false; } - ItemStack handyItem = player.getInventory().getItemInMainHand(); + ItemStack handyItem = player.getInventory().getItemInMainHand().clone(); if (handyItem.getType() == Material.AIR){ commandSender.sendMessage(ChatColor.RED + "Nemáš v ruce item, který chceš prodávat"); return false; @@ -71,7 +78,7 @@ public class shop implements TabExecutor { commandSender.sendMessage(ChatColor.RED + "Cena a počet kusů musí být čísla!"); return false; } - BaseDocument shopDocument = new BaseDocument(); + BaseDocument shopDocument = new BaseDocument(""+ UUID.randomUUID()); String shopRegime; switch (args[0]){ case "buy": @@ -86,13 +93,32 @@ public class shop implements TabExecutor { commandSender.sendMessage(ChatColor.RED + "Neplatný režim obchodu"); return false; } - shopDocument.addAttribute("signLocation", sign.getLocation()); - shopDocument.addAttribute("storageLocation", container.getLocation()); - shopDocument.addAttribute("count", args[1]); + shopDocument.addAttribute("signLocation", serialization.bukkitObjectToString(sign.getLocation())); + shopDocument.addAttribute("signX", sign.getX()); + shopDocument.addAttribute("signY", sign.getY()); + shopDocument.addAttribute("signZ", sign.getZ()); + shopDocument.addAttribute("signW", sign.getWorld().toString()); + shopDocument.addAttribute("containerLocation", serialization.bukkitObjectToString(container.getLocation())); + shopDocument.addAttribute("containerX", container.getX()); + shopDocument.addAttribute("containerY", container.getY()); + shopDocument.addAttribute("containerZ", container.getZ()); + shopDocument.addAttribute("containerW", container.getWorld().toString()); + shopDocument.addAttribute("owner", player.getDisplayName()); + shopDocument.addAttribute("count", Math.round(Long.parseLong(args[1]))); + shopDocument.addAttribute("price", Long.parseLong(args[2])); shopDocument.addAttribute("type", "playerLimited"); shopDocument.addAttribute("regime", shopRegime); - BaseEdgeDocument ownershipEdge = new BaseEdgeDocument(); - ArangoCollection playersCollection = database.collection("shops"); + handyItem.setAmount(1); + shopDocument.addAttribute("itemName", Objects.requireNonNull(handyItem.getItemMeta()).getDisplayName()); + shopDocument.addAttribute("item", serialization.bukkitObjectToString(handyItem)); + shopDocument.addAttribute("itemType", handyItem.getType()); + PDC.WriteTileStatePDC(sign, "shop", PersistentDataType.STRING, shopDocument.getKey()); + SignHandler.changeSignText(sign, player.getDisplayName(), shopRegime, args[2] + "$/" + args[1] + "ks", handyItem.getType().name().toLowerCase()); + sign.update(); + PDC.WriteTileStatePDC(container, "storage", PersistentDataType.STRING, shopDocument.getKey()); + ArangoCollection shopCollection = database.collection("shops"); + shopCollection.insertDocument(shopDocument); + commandSender.sendMessage(ChatColor.GREEN + "Obchod vytvořen"); return true; } diff --git a/src/main/java/xyz/mineconomia/mineconomiacore/events/shopGuiInteract.java b/src/main/java/xyz/mineconomia/mineconomiacore/events/shopGuiInteract.java new file mode 100644 index 0000000..2722a48 --- /dev/null +++ b/src/main/java/xyz/mineconomia/mineconomiacore/events/shopGuiInteract.java @@ -0,0 +1,32 @@ +package xyz.mineconomia.mineconomiacore.events; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryAction; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryCloseEvent; + +import java.util.HashMap; +import java.util.Map; + + +public class shopGuiInteract implements Listener { + public static HashMap> storeDatas = new HashMap<>(); + @EventHandler + public void clickEvent(InventoryClickEvent event){ + Player player = (Player) event.getWhoClicked(); + Map storeData = storeDatas.get(player); + if (storeData == null) return; + event.setCancelled(true); + if (!event.getAction().equals(InventoryAction.PICKUP_ALL)) return; + + + } + @EventHandler + public void closeEvent(InventoryCloseEvent event){ + Player player = (Player) event.getPlayer(); + storeDatas.remove(player); + } + +} diff --git a/src/main/java/xyz/mineconomia/mineconomiacore/events/shopInteract.java b/src/main/java/xyz/mineconomia/mineconomiacore/events/shopInteract.java new file mode 100644 index 0000000..a81db11 --- /dev/null +++ b/src/main/java/xyz/mineconomia/mineconomiacore/events/shopInteract.java @@ -0,0 +1,137 @@ +package xyz.mineconomia.mineconomiacore.events; + +import com.arangodb.ArangoCollection; +import com.arangodb.entity.BaseDocument; +import org.bukkit.*; +import org.bukkit.block.BlockState; +import org.bukkit.block.Container; +import org.bukkit.block.Sign; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.block.Action; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.persistence.PersistentDataType; +import xyz.mineconomia.mineconomiacore.PDC; +import xyz.mineconomia.mineconomiacore.serialization; + +import java.io.IOException; +import java.text.DecimalFormat; +import java.text.NumberFormat; +import java.util.*; + +import static xyz.mineconomia.mineconomiacore.database.database; + +public class shopInteract implements Listener { + + @EventHandler + public static void savePosition(PlayerInteractEvent event) throws IOException, ClassNotFoundException { + if (event.getAction() == Action.RIGHT_CLICK_BLOCK){ + Player player = event.getPlayer(); + BlockState blockState = Objects.requireNonNull(event.getClickedBlock()).getState(); + if (blockState instanceof Sign sign){ + if (PDC.GetTileStatePDC(sign, "shop", PersistentDataType.STRING) != null){ + ArangoCollection collection = database.collection("shops"); + event.setCancelled(true); + String shopid = (String) PDC.GetTileStatePDC(sign, "shop", PersistentDataType.STRING); + player.sendMessage(ChatColor.GREEN + "Načítám data obchodu..."); + if (collection.documentExists(shopid)){ + BaseDocument baseDocument = collection.getDocument(shopid, BaseDocument.class); + Map shopData = baseDocument.getProperties(); + List> placeholders = new ArrayList<>(); + NumberFormat formatInteger = new DecimalFormat("0"); + NumberFormat formatter = new DecimalFormat("0.00"); + String regime = (String) shopData.get("regime"); + String ownerPrefix = ""; + if (((String) shopData.get("type")).contains("group")){ + ownerPrefix = "Skupina "; + } + placeholders.add(new ArrayList<>(List.of("%%owner%%", ownerPrefix + shopData.get("owner")))); + String count = (String) formatInteger.format(shopData.get("count")); + String price = formatter.format( shopData.get("price")); + String countEight = formatInteger.format(Math.multiplyExact((Long) shopData.get("count"), 8)); + String priceEight = formatter.format(Math.multiplyExact((Long) shopData.get("price"),8)); + Inventory inventory; + Inventory invetoryToCheck; + Inventory inventoryToAddTo; + String shopPrefix; + OfflinePlayer buyer; + OfflinePlayer seller; + String shopErrorMoney; + String shopErrorProduct; + Material shopMaterial; + Material shopErrorMaterial; + if (shopData.get("regime").equals("buy")) { + invetoryToCheck = ((Container) ((Location) serialization.stringToBukkitObject((String) shopData.get("containerLocation"))).getBlock().getState()).getInventory(); + inventoryToAddTo = player.getInventory(); + shopPrefix = "&aKoupit "; + shopMaterial = Material.LIME_WOOL; + shopErrorMaterial = Material.LIME_STAINED_GLASS; + inventory = Bukkit.createInventory(null, 9, ChatColor.DARK_GREEN+ ""+ChatColor.BOLD +"Prodej"); + shopErrorMoney = "&cNemáš dost peněz"; + shopErrorProduct = "&cMajitel nemá dostatek itemů"; + buyer = player; + seller = Bukkit.getOfflinePlayer((String) shopData.get("owner")); + + }else{ + invetoryToCheck = player.getInventory();; + inventoryToAddTo = ((Container) ((Location) serialization.stringToBukkitObject((String) shopData.get("containerLocation"))).getBlock().getState()).getInventory(); + shopPrefix = "&eProdat "; + shopMaterial = Material.YELLOW_WOOL; + shopErrorMaterial = Material.YELLOW_STAINED_GLASS; + inventory = Bukkit.createInventory(null, 9, ChatColor.GOLD + ""+ ChatColor.BOLD +"Výkup"); + shopErrorMoney = "&cMajitel nemá dost peněz"; + shopErrorProduct = "&cNemáš dostatek itemů"; + buyer = Bukkit.getOfflinePlayer((String) shopData.get("owner")); + seller = player; + } + + inventory.setItem(0, newItemStack(shopPrefix + count + "ks za " + price + "$", shopMaterial)); + inventory.setItem(1, newItemStack(shopPrefix + countEight + "ks za " + priceEight + "$", shopMaterial)); + inventory.setItem(7, (ItemStack) serialization.stringToBukkitObject((String) shopData.get("item"))); + inventory.setItem(8, newItemStack("&l&bInformace o obchodu:", Material.PLAYER_HEAD, List.of("&eMajitel: " + shopData.get("owner")))); + shopData.put("inventoryToAddTo", inventoryToAddTo); + shopData.put("inventoryToCheck", invetoryToCheck); + shopData.put("seller", seller); + shopData.put("buyer", buyer); + shopGuiInteract.storeDatas.put(player, shopData); + player.openInventory(inventory); + + + + + + }else{ + player.sendMessage(ChatColor.RED + "Data obchodu nebyla nalezena"); + } + + } + } + } + } + public static ItemStack newItemStack(String name, Material material){ + ItemStack itemStack = new ItemStack(material); + ItemMeta itemMeta = itemStack.getItemMeta(); + assert itemMeta != null; + itemMeta.setDisplayName(ChatColor.translateAlternateColorCodes('&', name)); + itemStack.setItemMeta(itemMeta); + return itemStack; + } + public static ItemStack newItemStack(String name, Material material, List list){ + ItemStack itemStack = new ItemStack(material); + ItemMeta itemMeta = itemStack.getItemMeta(); + assert itemMeta != null; + itemMeta.setDisplayName(ChatColor.translateAlternateColorCodes('&', name)); + List lore = new ArrayList<>(); + for (String loreline: list){ + lore.add(ChatColor.translateAlternateColorCodes('&', loreline)); + } + itemMeta.setLore(lore); + itemStack.setItemMeta(itemMeta); + return itemStack; + } + +} diff --git a/src/main/java/xyz/mineconomia/mineconomiacore/handlers/SignHandler.java b/src/main/java/xyz/mineconomia/mineconomiacore/handlers/SignHandler.java index a819a8d..c8d383a 100644 --- a/src/main/java/xyz/mineconomia/mineconomiacore/handlers/SignHandler.java +++ b/src/main/java/xyz/mineconomia/mineconomiacore/handlers/SignHandler.java @@ -5,25 +5,21 @@ import org.bukkit.block.Block; import org.bukkit.block.Sign; import org.bukkit.block.BlockState; +import static xyz.mineconomia.mineconomiacore.MineconomiaCore.logger; + public class SignHandler { //Implement for - public static void changeSignText(Location location, String line0, String line1, String line2, String line3) { - Block block = location.getBlock(); - BlockState state = block.getState(); - //Je to cedulka? - if (state instanceof Sign) { - Sign sign = (Sign) state; + public static void changeSignText(Sign sign, String line0, String line1, String line2, String line3) { + //Nastavení textu sign.setLine(0, line0); sign.setLine(1, line1); sign.setLine(2, line2); sign.setLine(3, line3); + logger.info("successs"); - //Aktualizace cedulky - sign.update(); - } } } \ No newline at end of file diff --git a/src/main/java/xyz/mineconomia/mineconomiacore/invTools.java b/src/main/java/xyz/mineconomia/mineconomiacore/invTools.java new file mode 100644 index 0000000..94de7b4 --- /dev/null +++ b/src/main/java/xyz/mineconomia/mineconomiacore/invTools.java @@ -0,0 +1,35 @@ +package xyz.mineconomia.mineconomiacore; + +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; + +import java.util.Objects; + +public class invTools { + public static int getFreeSpaceForItem(Inventory inventory, ItemStack itemStack){ + int count = 0; + int stackSize = itemStack.getMaxStackSize(); + for (int i = 0; inventory.getSize() > i; i++){ + if (inventory.getItem(i) == null){ + count += stackSize; + } else if (Objects.requireNonNull(inventory.getItem(i)).isSimilar(itemStack)) { + count += stackSize - Objects.requireNonNull(inventory.getItem(i)).getAmount(); + } + + } + return count; + } + public static int itemAmount(Inventory inventory, ItemStack itemStack){ + int count = 0; + for(int i = 0; inventory.getSize() > i; i++){ + ItemStack comparedItem = inventory.getItem(i); + if (comparedItem != null){ + if (itemStack.isSimilar(comparedItem)){ + count += comparedItem.getAmount(); + } + } + } + return count; + } + +} diff --git a/src/main/java/xyz/mineconomia/mineconomiacore/config.java b/src/main/java/xyz/mineconomia/mineconomiacore/publicValues.java similarity index 56% rename from src/main/java/xyz/mineconomia/mineconomiacore/config.java rename to src/main/java/xyz/mineconomia/mineconomiacore/publicValues.java index 8c19ba7..76f50aa 100644 --- a/src/main/java/xyz/mineconomia/mineconomiacore/config.java +++ b/src/main/java/xyz/mineconomia/mineconomiacore/publicValues.java @@ -1,8 +1,12 @@ package xyz.mineconomia.mineconomiacore; +import com.arangodb.entity.BaseDocument; import org.bukkit.configuration.file.FileConfiguration; -public interface config { +import java.util.HashMap; + +public interface publicValues { FileConfiguration config = MineconomiaCore.getPlugin(MineconomiaCore.class).getConfig(); + HashMap shops = new HashMap<>(); } diff --git a/src/main/java/xyz/mineconomia/mineconomiacore/serialization.java b/src/main/java/xyz/mineconomia/mineconomiacore/serialization.java new file mode 100644 index 0000000..019dd25 --- /dev/null +++ b/src/main/java/xyz/mineconomia/mineconomiacore/serialization.java @@ -0,0 +1,30 @@ +package xyz.mineconomia.mineconomiacore; + +import org.bukkit.inventory.ItemStack; +import org.bukkit.util.io.BukkitObjectInputStream; +import org.bukkit.util.io.BukkitObjectOutputStream; + +import java.io.*; +import java.util.Base64; + +public class serialization { + public static String bukkitObjectToString(Object object){ + byte[] serializedObject = null; + try { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + BukkitObjectOutputStream oos = new BukkitObjectOutputStream(baos); + oos.writeObject(object); + oos.close(); + serializedObject = baos.toByteArray(); + + } catch (IOException e) { + MineconomiaCore.logger.info("it's fucked: " + e); + } + return Base64.getEncoder().encodeToString(serializedObject); + } + public static Object stringToBukkitObject(String string) throws IOException, ClassNotFoundException { + byte[] byteArray = Base64.getDecoder().decode(string); + BukkitObjectInputStream in = new BukkitObjectInputStream(new ByteArrayInputStream(byteArray)); + return in.readObject(); + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index c9119b8..d93ead9 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,7 +1,7 @@ name: MineconomiaCore version: '${project.version}' main: xyz.mineconomia.mineconomiacore.MineconomiaCore -api-version: '1.20' +api-version: '1.18' prefix: MCore authors: [Jakub Soukup, Richard Telka] commands: @@ -15,3 +15,9 @@ commands: usage: "toto je potřeba někdy dodělat - Kubík" fhb: description: "dá kuzelnou kouli sklizně " + permission: mcore.fhb + shop: + description: "mgg nesnáším vysvětlování věcí, proč vůbec používáš help?" + sample: + description: will unfuck things + permission: mcore.unfuck \ No newline at end of file