dev
jakub 2 years ago
parent 5f9afca286
commit 9bb87ca1ca
  1. 35
      src/main/java/xyz/mineconomia/mineconomiacore/MineconomiaCore.java
  2. 15
      src/main/java/xyz/mineconomia/mineconomiacore/PDC.java
  3. 2
      src/main/java/xyz/mineconomia/mineconomiacore/commands/mcore.java
  4. 36
      src/main/java/xyz/mineconomia/mineconomiacore/commands/sample.java
  5. 58
      src/main/java/xyz/mineconomia/mineconomiacore/commands/shop.java
  6. 32
      src/main/java/xyz/mineconomia/mineconomiacore/events/shopGuiInteract.java
  7. 137
      src/main/java/xyz/mineconomia/mineconomiacore/events/shopInteract.java
  8. 14
      src/main/java/xyz/mineconomia/mineconomiacore/handlers/SignHandler.java
  9. 35
      src/main/java/xyz/mineconomia/mineconomiacore/invTools.java
  10. 6
      src/main/java/xyz/mineconomia/mineconomiacore/publicValues.java
  11. 30
      src/main/java/xyz/mineconomia/mineconomiacore/serialization.java
  12. 8
      src/main/resources/plugin.yml

@ -1,14 +1,14 @@
package xyz.mineconomia.mineconomiacore; package xyz.mineconomia.mineconomiacore;
import net.milkbowl.vault.economy.Economy;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import xyz.mineconomia.mineconomiacore.CustomItems.ItemManager; import xyz.mineconomia.mineconomiacore.CustomItems.ItemManager;
import xyz.mineconomia.mineconomiacore.commands.BookCommand; import xyz.mineconomia.mineconomiacore.commands.*;
import xyz.mineconomia.mineconomiacore.commands.funHarvestBall;
import xyz.mineconomia.mineconomiacore.commands.mcore;
import xyz.mineconomia.mineconomiacore.commands.tpw;
import xyz.mineconomia.mineconomiacore.events.playerAccount; import xyz.mineconomia.mineconomiacore.events.playerAccount;
import xyz.mineconomia.mineconomiacore.events.shopInteract;
import xyz.mineconomia.mineconomiacore.events.specialEvents; import xyz.mineconomia.mineconomiacore.events.specialEvents;
import xyz.mineconomia.mineconomiacore.handlers.FHBHandler; import xyz.mineconomia.mineconomiacore.handlers.FHBHandler;
@ -17,13 +17,19 @@ import java.util.logging.Logger;
public final class MineconomiaCore extends JavaPlugin { public final class MineconomiaCore extends JavaPlugin {
public static Logger logger = Bukkit.getLogger(); public static Logger logger = Bukkit.getLogger();
private static Economy econ = null;
@Override @Override
public void onEnable() { public void onEnable() {
// Plugin startup logic // Plugin startup logic
saveDefaultConfig(); saveDefaultConfig();
MineconomiaCore plugin= getPlugin(MineconomiaCore.class); 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 //Tohle třeba změnit později - jakub
Logger logger= plugin.getLogger(); Logger logger= plugin.getLogger();
@ -43,12 +49,14 @@ public final class MineconomiaCore extends JavaPlugin {
pm.registerEvents(new FHBHandler(), this); pm.registerEvents(new FHBHandler(), this);
pm.registerEvents(new playerAccount(), this); pm.registerEvents(new playerAccount(), this);
pm.registerEvents(new specialEvents(), this); pm.registerEvents(new specialEvents(), this);
pm.registerEvents(new shopInteract(), this);
//BookCommand //BookCommand
Objects.requireNonNull(getCommand("pomoc")).setExecutor(new BookCommand()); Objects.requireNonNull(getCommand("pomoc")).setExecutor(new BookCommand());
Objects.requireNonNull(getCommand("tpw")).setExecutor(new tpw()); Objects.requireNonNull(getCommand("tpw")).setExecutor(new tpw());
Objects.requireNonNull(getCommand("fhb")).setExecutor(new funHarvestBall()); Objects.requireNonNull(getCommand("fhb")).setExecutor(new funHarvestBall());
Objects.requireNonNull(getCommand("shop")).setExecutor(new shop());
Objects.requireNonNull(getCommand("sample")).setExecutor(new sample());
//CustomItems //CustomItems
ItemManager.init(); ItemManager.init();
} }
@ -59,4 +67,19 @@ public final class MineconomiaCore extends JavaPlugin {
saveConfig(); saveConfig();
} }
private boolean setupEconomy() {
if (getServer().getPluginManager().getPlugin("Vault") == null) {
return false;
}
RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
if (rsp == null) {
return false;
}
econ = rsp.getProvider();
return true;
}
public static Economy getEconomy() {
return econ;
}
} }

@ -1,6 +1,7 @@
package xyz.mineconomia.mineconomiacore; package xyz.mineconomia.mineconomiacore;
import org.bukkit.NamespacedKey; import org.bukkit.NamespacedKey;
import org.bukkit.block.TileState;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.persistence.PersistentDataContainer; import org.bukkit.persistence.PersistentDataContainer;
@ -30,11 +31,10 @@ public class PDC {
pdc.remove(nKey); 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); NamespacedKey nKey = new NamespacedKey(MineconomiaCore.getPlugin(MineconomiaCore.class), key);
PersistentDataContainer pdc = itemMeta.getPersistentDataContainer(); PersistentDataContainer pdc = itemMeta.getPersistentDataContainer();
pdc.set(nKey, type, value); pdc.set(nKey, type, value);
return itemMeta;
} }
public static Object GetItemMetaPDC(ItemMeta itemMeta, String key, PersistentDataType type){ public static Object GetItemMetaPDC(ItemMeta itemMeta, String key, PersistentDataType type){
@ -42,6 +42,17 @@ public class PDC {
PersistentDataContainer pdc = itemMeta.getPersistentDataContainer(); PersistentDataContainer pdc = itemMeta.getPersistentDataContainer();
return pdc.get(nKey, type); 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);
}
} }

@ -13,7 +13,7 @@ import xyz.mineconomia.mineconomiacore.PDC;
import java.io.IOException; import java.io.IOException;
import java.util.Objects; import java.util.Objects;
import static xyz.mineconomia.mineconomiacore.config.config; import static xyz.mineconomia.mineconomiacore.publicValues.config;
public class mcore implements CommandExecutor { public class mcore implements CommandExecutor {
@Override @Override

@ -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<String, Object> 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;
}
}

@ -2,24 +2,27 @@ package xyz.mineconomia.mineconomiacore.commands;
import com.arangodb.ArangoCollection; import com.arangodb.ArangoCollection;
import com.arangodb.entity.BaseDocument; import com.arangodb.entity.BaseDocument;
import com.arangodb.entity.BaseEdgeDocument;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.Block; import org.bukkit.block.*;
import org.bukkit.block.Container;
import org.bukkit.block.Sign;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor; import org.bukkit.command.TabExecutor;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.persistence.PersistentDataType;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import xyz.mineconomia.mineconomiacore.PDC;
import xyz.mineconomia.mineconomiacore.events.specialEvents; import xyz.mineconomia.mineconomiacore.events.specialEvents;
import xyz.mineconomia.mineconomiacore.handlers.SignHandler;
import xyz.mineconomia.mineconomiacore.serialization;
import java.util.List; 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; import static xyz.mineconomia.mineconomiacore.database.database;
public class shop implements TabExecutor { public class shop implements TabExecutor {
@ -33,12 +36,16 @@ public class shop implements TabExecutor {
commandSender.sendMessage(ChatColor.RED + "Musíš být hráč"); commandSender.sendMessage(ChatColor.RED + "Musíš být hráč");
return false; return false;
} }
if (!(specialEvents.specialPreLocations.get(player).size() < 2)){ if (specialEvents.specialPreLocations.get(player) == null){
commandSender.sendMessage(ChatColor.RED + "Musíš mít označenou cedulku a úložiště"); commandSender.sendMessage(ChatColor.RED + "Musíš mít označenou cedulku a úložiště!");
return false; return false;
} }
Block block1 = specialEvents.specialPreLocations.get(player).get("loc1").getBlock(); if (!(specialEvents.specialPreLocations.get(player).size() == 2)){
Block block2 = specialEvents.specialPreLocations.get(player).get("loc2").getBlock(); 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; Container container;
if (block1 instanceof Container){ if (block1 instanceof Container){
@ -58,7 +65,7 @@ public class shop implements TabExecutor {
commandSender.sendMessage(ChatColor.RED + "Nemáš označenou cedulku"); commandSender.sendMessage(ChatColor.RED + "Nemáš označenou cedulku");
return false; return false;
} }
ItemStack handyItem = player.getInventory().getItemInMainHand(); ItemStack handyItem = player.getInventory().getItemInMainHand().clone();
if (handyItem.getType() == Material.AIR){ if (handyItem.getType() == Material.AIR){
commandSender.sendMessage(ChatColor.RED + "Nemáš v ruce item, který chceš prodávat"); commandSender.sendMessage(ChatColor.RED + "Nemáš v ruce item, který chceš prodávat");
return false; return false;
@ -71,7 +78,7 @@ public class shop implements TabExecutor {
commandSender.sendMessage(ChatColor.RED + "Cena a počet kusů musí být čísla!"); commandSender.sendMessage(ChatColor.RED + "Cena a počet kusů musí být čísla!");
return false; return false;
} }
BaseDocument shopDocument = new BaseDocument(); BaseDocument shopDocument = new BaseDocument(""+ UUID.randomUUID());
String shopRegime; String shopRegime;
switch (args[0]){ switch (args[0]){
case "buy": case "buy":
@ -86,13 +93,32 @@ public class shop implements TabExecutor {
commandSender.sendMessage(ChatColor.RED + "Neplatný režim obchodu"); commandSender.sendMessage(ChatColor.RED + "Neplatný režim obchodu");
return false; return false;
} }
shopDocument.addAttribute("signLocation", sign.getLocation()); shopDocument.addAttribute("signLocation", serialization.bukkitObjectToString(sign.getLocation()));
shopDocument.addAttribute("storageLocation", container.getLocation()); shopDocument.addAttribute("signX", sign.getX());
shopDocument.addAttribute("count", args[1]); 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("type", "playerLimited");
shopDocument.addAttribute("regime", shopRegime); shopDocument.addAttribute("regime", shopRegime);
BaseEdgeDocument ownershipEdge = new BaseEdgeDocument(); handyItem.setAmount(1);
ArangoCollection playersCollection = database.collection("shops"); 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; return true;
} }

@ -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<Player, Map<String, Object>> storeDatas = new HashMap<>();
@EventHandler
public void clickEvent(InventoryClickEvent event){
Player player = (Player) event.getWhoClicked();
Map<String, Object> 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);
}
}

@ -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<String, Object> shopData = baseDocument.getProperties();
List<List<String>> 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<String> list){
ItemStack itemStack = new ItemStack(material);
ItemMeta itemMeta = itemStack.getItemMeta();
assert itemMeta != null;
itemMeta.setDisplayName(ChatColor.translateAlternateColorCodes('&', name));
List<String> lore = new ArrayList<>();
for (String loreline: list){
lore.add(ChatColor.translateAlternateColorCodes('&', loreline));
}
itemMeta.setLore(lore);
itemStack.setItemMeta(itemMeta);
return itemStack;
}
}

@ -5,25 +5,21 @@ import org.bukkit.block.Block;
import org.bukkit.block.Sign; import org.bukkit.block.Sign;
import org.bukkit.block.BlockState; import org.bukkit.block.BlockState;
import static xyz.mineconomia.mineconomiacore.MineconomiaCore.logger;
public class SignHandler { public class SignHandler {
//Implement for //Implement for
public static void changeSignText(Location location, String line0, String line1, String line2, String line3) { public static void changeSignText(Sign sign, 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;
//Nastavení textu //Nastavení textu
sign.setLine(0, line0); sign.setLine(0, line0);
sign.setLine(1, line1); sign.setLine(1, line1);
sign.setLine(2, line2); sign.setLine(2, line2);
sign.setLine(3, line3); sign.setLine(3, line3);
logger.info("successs");
//Aktualizace cedulky
sign.update();
}
} }
} }

@ -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;
}
}

@ -1,8 +1,12 @@
package xyz.mineconomia.mineconomiacore; package xyz.mineconomia.mineconomiacore;
import com.arangodb.entity.BaseDocument;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
public interface config { import java.util.HashMap;
public interface publicValues {
FileConfiguration config = MineconomiaCore.getPlugin(MineconomiaCore.class).getConfig(); FileConfiguration config = MineconomiaCore.getPlugin(MineconomiaCore.class).getConfig();
HashMap<String, Object> shops = new HashMap<>();
} }

@ -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();
}
}

@ -1,7 +1,7 @@
name: MineconomiaCore name: MineconomiaCore
version: '${project.version}' version: '${project.version}'
main: xyz.mineconomia.mineconomiacore.MineconomiaCore main: xyz.mineconomia.mineconomiacore.MineconomiaCore
api-version: '1.20' api-version: '1.18'
prefix: MCore prefix: MCore
authors: [Jakub Soukup, Richard Telka] authors: [Jakub Soukup, Richard Telka]
commands: commands:
@ -15,3 +15,9 @@ commands:
usage: "toto je potřeba někdy dodělat - Kubík" usage: "toto je potřeba někdy dodělat - Kubík"
fhb: fhb:
description: "dá kuzelnou kouli sklizně " 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
Loading…
Cancel
Save