From a44ff61aa0d2f0644218166d613d73e4ecfceecd Mon Sep 17 00:00:00 2001 From: jakub Date: Sat, 6 Apr 2024 21:45:10 +0200 Subject: [PATCH] =?UTF-8?q?commit=20co=20jsem=20zapomn=C4=9Bl=20nahr=C3=A1?= =?UTF-8?q?t=20p=C5=99ed=20rozjeb=C3=A1n=C3=ADm=20m=C3=A9ho=20os=20a=20tak?= =?UTF-8?q?=20jsem=20ho=20musel=20ps=C3=A1t=20znovu=20pls=20pomoc..?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix databáze --- pom.xml | 10 ++ .../mineconomiacore/MineconomiaCore.java | 4 +- .../xyz/mineconomia/mineconomiacore/PDC.java | 44 +++++++ .../mineconomiacore/commands/BookCommand.java | 4 +- .../mineconomiacore/commands/mcore.java | 30 ++++- .../mineconomiacore/commands/tpw.java | 2 - .../completers/mcore_completer.java | 5 - .../mineconomia/mineconomiacore/config.java | 8 ++ .../mineconomiacore/events/playerAccount.java | 3 - .../mineconomiacore/events/specialEvents.java | 120 ++++++++++++++++++ .../mineconomiacore/handlers/FHBHandler.java | 3 - src/main/resources/config.yml | 7 +- 12 files changed, 218 insertions(+), 22 deletions(-) create mode 100644 src/main/java/xyz/mineconomia/mineconomiacore/PDC.java delete mode 100644 src/main/java/xyz/mineconomia/mineconomiacore/completers/mcore_completer.java create mode 100644 src/main/java/xyz/mineconomia/mineconomiacore/config.java create mode 100644 src/main/java/xyz/mineconomia/mineconomiacore/events/specialEvents.java diff --git a/pom.xml b/pom.xml index 7a3a1b6..bded03c 100644 --- a/pom.xml +++ b/pom.xml @@ -63,9 +63,19 @@ sonatype https://oss.sonatype.org/content/groups/public/ + + jitpack.io + https://jitpack.io + + + com.github.MilkBowl + VaultAPI + 1.7 + provided + com.arangodb arangodb-java-driver diff --git a/src/main/java/xyz/mineconomia/mineconomiacore/MineconomiaCore.java b/src/main/java/xyz/mineconomia/mineconomiacore/MineconomiaCore.java index f5f67cd..60d140e 100644 --- a/src/main/java/xyz/mineconomia/mineconomiacore/MineconomiaCore.java +++ b/src/main/java/xyz/mineconomia/mineconomiacore/MineconomiaCore.java @@ -1,7 +1,6 @@ package xyz.mineconomia.mineconomiacore; import org.bukkit.Bukkit; -import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; import xyz.mineconomia.mineconomiacore.CustomItems.ItemManager; @@ -10,9 +9,9 @@ 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.specialEvents; import xyz.mineconomia.mineconomiacore.handlers.FHBHandler; -import javax.security.auth.login.Configuration; import java.util.Objects; import java.util.logging.Logger; @@ -41,6 +40,7 @@ public final class MineconomiaCore extends JavaPlugin { PluginManager pm = getServer().getPluginManager(); pm.registerEvents(new FHBHandler(), this); pm.registerEvents(new playerAccount(), this); + pm.registerEvents(new specialEvents(), this); //BookCommand Objects.requireNonNull(getCommand("pomoc")).setExecutor(new BookCommand()); diff --git a/src/main/java/xyz/mineconomia/mineconomiacore/PDC.java b/src/main/java/xyz/mineconomia/mineconomiacore/PDC.java new file mode 100644 index 0000000..4fe0af9 --- /dev/null +++ b/src/main/java/xyz/mineconomia/mineconomiacore/PDC.java @@ -0,0 +1,44 @@ +package xyz.mineconomia.mineconomiacore; + +import org.bukkit.NamespacedKey; +import org.bukkit.entity.Player; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.persistence.PersistentDataContainer; +import org.bukkit.persistence.PersistentDataType; + +public class PDC { + + + + public static void WritePlayerPDC(Player player, String key, PersistentDataType type, Object value){ + NamespacedKey nKey = new NamespacedKey(MineconomiaCore.getPlugin(MineconomiaCore.class), key); + PersistentDataContainer pdc = player.getPersistentDataContainer(); + pdc.set(nKey, type, value); + + } + public static Object GetPlayerPDC(Player player, String key, PersistentDataType type){ + NamespacedKey nKey = new NamespacedKey(MineconomiaCore.getPlugin(MineconomiaCore.class), key); + PersistentDataContainer pdc = player.getPersistentDataContainer(); + return pdc.get(nKey, type); + } + public static void DeletePlayerPDC(Player player, String key){ + NamespacedKey nKey = new NamespacedKey(MineconomiaCore.getPlugin(MineconomiaCore.class), key); + PersistentDataContainer pdc = player.getPersistentDataContainer(); + pdc.remove(nKey); + + } + public static ItemMeta 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){ + NamespacedKey nKey = new NamespacedKey(MineconomiaCore.getPlugin(MineconomiaCore.class), key); + PersistentDataContainer pdc = itemMeta.getPersistentDataContainer(); + return pdc.get(nKey, type); + } + + +} diff --git a/src/main/java/xyz/mineconomia/mineconomiacore/commands/BookCommand.java b/src/main/java/xyz/mineconomia/mineconomiacore/commands/BookCommand.java index e9b7d6f..f1ddce3 100644 --- a/src/main/java/xyz/mineconomia/mineconomiacore/commands/BookCommand.java +++ b/src/main/java/xyz/mineconomia/mineconomiacore/commands/BookCommand.java @@ -1,14 +1,12 @@ package xyz.mineconomia.mineconomiacore.commands; -import net.md_5.bungee.api.chat.*; +import net.md_5.bungee.api.chat.TextComponent; import org.bukkit.ChatColor; -import org.bukkit.Material; 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.bukkit.inventory.meta.BookMeta; import xyz.upperlevel.spigot.book.BookUtil; public class BookCommand implements CommandExecutor { diff --git a/src/main/java/xyz/mineconomia/mineconomiacore/commands/mcore.java b/src/main/java/xyz/mineconomia/mineconomiacore/commands/mcore.java index 1abd3ea..0867911 100644 --- a/src/main/java/xyz/mineconomia/mineconomiacore/commands/mcore.java +++ b/src/main/java/xyz/mineconomia/mineconomiacore/commands/mcore.java @@ -2,11 +2,39 @@ package xyz.mineconomia.mineconomiacore.commands; 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.bukkit.inventory.PlayerInventory; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.persistence.PersistentDataType; import org.jetbrains.annotations.NotNull; +import xyz.mineconomia.mineconomiacore.PDC; + +import java.io.IOException; +import java.util.Objects; + +import static xyz.mineconomia.mineconomiacore.config.config; public class mcore implements CommandExecutor { @Override - public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, String[] strings) { + public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, String[] args) { + + if (Objects.equals(args[0], "setSpecial")){ + Player player = (Player) commandSender; + PlayerInventory inventory= player.getInventory(); + ItemStack item = inventory.getItemInMainHand(); + ItemMeta meta = item.getItemMeta(); + assert meta != null; + PDC.WriteItemMetaPDC(meta, "special", PersistentDataType.BOOLEAN,true); + item.setItemMeta(meta); + config.set("special.item", item); + try { + config.save("config.yml"); + } catch (IOException e) { + throw new RuntimeException(e); + } + return true; + } return false; } } diff --git a/src/main/java/xyz/mineconomia/mineconomiacore/commands/tpw.java b/src/main/java/xyz/mineconomia/mineconomiacore/commands/tpw.java index e34fe37..f2c5248 100644 --- a/src/main/java/xyz/mineconomia/mineconomiacore/commands/tpw.java +++ b/src/main/java/xyz/mineconomia/mineconomiacore/commands/tpw.java @@ -9,8 +9,6 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; -import java.lang.reflect.Array; - public class tpw implements CommandExecutor { @Override public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, String[] args) { diff --git a/src/main/java/xyz/mineconomia/mineconomiacore/completers/mcore_completer.java b/src/main/java/xyz/mineconomia/mineconomiacore/completers/mcore_completer.java deleted file mode 100644 index a051944..0000000 --- a/src/main/java/xyz/mineconomia/mineconomiacore/completers/mcore_completer.java +++ /dev/null @@ -1,5 +0,0 @@ -package xyz.mineconomia.mineconomiacore.completers; -//Zde nic zatím -public class mcore_completer { - -} diff --git a/src/main/java/xyz/mineconomia/mineconomiacore/config.java b/src/main/java/xyz/mineconomia/mineconomiacore/config.java new file mode 100644 index 0000000..8c19ba7 --- /dev/null +++ b/src/main/java/xyz/mineconomia/mineconomiacore/config.java @@ -0,0 +1,8 @@ +package xyz.mineconomia.mineconomiacore; + +import org.bukkit.configuration.file.FileConfiguration; + +public interface config { + FileConfiguration config = MineconomiaCore.getPlugin(MineconomiaCore.class).getConfig(); +} + diff --git a/src/main/java/xyz/mineconomia/mineconomiacore/events/playerAccount.java b/src/main/java/xyz/mineconomia/mineconomiacore/events/playerAccount.java index 819797f..5cd78fc 100644 --- a/src/main/java/xyz/mineconomia/mineconomiacore/events/playerAccount.java +++ b/src/main/java/xyz/mineconomia/mineconomiacore/events/playerAccount.java @@ -2,16 +2,13 @@ package xyz.mineconomia.mineconomiacore.events; import com.arangodb.ArangoCollection; import com.arangodb.entity.BaseDocument; -import com.arangodb.model.DocumentCreateOptions; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import xyz.mineconomia.mineconomiacore.MineconomiaCore; -import java.util.EventListener; import java.util.Map; -import java.util.Objects; import static xyz.mineconomia.mineconomiacore.database.database; diff --git a/src/main/java/xyz/mineconomia/mineconomiacore/events/specialEvents.java b/src/main/java/xyz/mineconomia/mineconomiacore/events/specialEvents.java new file mode 100644 index 0000000..9e542ec --- /dev/null +++ b/src/main/java/xyz/mineconomia/mineconomiacore/events/specialEvents.java @@ -0,0 +1,120 @@ +package xyz.mineconomia.mineconomiacore.events; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Location; +import org.bukkit.boss.BarColor; +import org.bukkit.boss.BarStyle; +import org.bukkit.boss.BossBar; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerItemHeldEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.persistence.PersistentDataType; +import xyz.mineconomia.mineconomiacore.PDC; + +import java.util.HashMap; +import java.util.Objects; + + +//These events are handling every logic of the "special item" +//Special item = item that is essential to marking blocks for interaction with plugin creation and edit functions +public class specialEvents implements Listener { + //Stores informative boss bars + public static HashMap specialBossBars = new HashMap<>(); + + //Stores locations marked by player using special item + public static HashMap> specialPreLocations = new HashMap<>(); + + //Checks if player is holding special item in hand and if so deploys boss bar + @EventHandler + public static void specialInHand(PlayerItemHeldEvent event){ + Player player = event.getPlayer(); + displayBossBar(player, player.getInventory().getItem(event.getNewSlot())); + } + @EventHandler + public static void savePosition(PlayerInteractEvent event){ + Player player = event.getPlayer(); + if (event.getItem() != null){ + if (isSpecial(event.getItem())){ + event.setCancelled(true); + switch (event.getAction()){ + case LEFT_CLICK_BLOCK: + specialPreLocations.get(player).put("loc1", Objects.requireNonNull(event.getClickedBlock()).getLocation()); + break; + case RIGHT_CLICK_BLOCK: + specialPreLocations.get(player).put("loc2", Objects.requireNonNull(event.getClickedBlock()).getLocation()); + } + displayBossBar(player, event.getItem()); + + } + } + } + + private static void displayBossBar(Player player, ItemStack item){ + if (!specialPreLocations.containsKey(player)){ + specialPreLocations.put(player, new HashMap<>()); + } + if (specialBossBars.get(player) == null){ + BossBar bossBar = Bukkit.createBossBar( "", BarColor.YELLOW , BarStyle.SOLID); + + specialBossBars.put(player, bossBar); + } + BossBar bossBar = specialBossBars.get(player); + if (item != null){ + if (isSpecial(item)){ + String loc1String = "&6&lL &e(-,-,-,-)"; + String loc2String = "&e(-,-,-,-) &6&lP"; + + HashMap playerLocations = specialPreLocations.get(player); + bossBar.setProgress(0); + + if (playerLocations.containsKey("loc1")){ + Location loc1 = playerLocations.get("loc1"); + loc1String = "&6&lL &e(" + + loc1.getBlockX() + + "," + + loc1.getBlockY() + + "," + + loc1.getBlockZ() + + "," + + Objects.requireNonNull(loc1.getWorld()).getName() + + ")"; + } + if (playerLocations.containsKey("loc2")){ + Location loc2 = playerLocations.get("loc2"); + loc2String = "&e(" + + loc2.getBlockX() + + "," + + loc2.getBlockY() + + "," + + loc2.getBlockZ() + + "," + + Objects.requireNonNull(loc2.getWorld()).getName() + + ") &6&lP"; + } + + String bossBarTitle = loc1String + " " + loc2String; + switch (playerLocations.size()){ + case 1: + bossBar.setProgress(0.5); + break; + case 2: + bossBarTitle = bossBarTitle.replace("&6","&2").replace("&e", "&a"); + bossBar.setColor(BarColor.GREEN); + bossBar.setProgress(1); + } + bossBar.setTitle(ChatColor.translateAlternateColorCodes('&', bossBarTitle)); + bossBar.addPlayer(player); + return; + } + } + bossBar.removePlayer(player); + } + private static boolean isSpecial(ItemStack itemStack){ + return PDC.GetItemMetaPDC(Objects.requireNonNull(itemStack.getItemMeta()), "special", PersistentDataType.BOOLEAN) != null; + } + +} diff --git a/src/main/java/xyz/mineconomia/mineconomiacore/handlers/FHBHandler.java b/src/main/java/xyz/mineconomia/mineconomiacore/handlers/FHBHandler.java index 2dfb6e7..1bf8487 100644 --- a/src/main/java/xyz/mineconomia/mineconomiacore/handlers/FHBHandler.java +++ b/src/main/java/xyz/mineconomia/mineconomiacore/handlers/FHBHandler.java @@ -3,8 +3,6 @@ package xyz.mineconomia.mineconomiacore.handlers; import org.bukkit.*; import org.bukkit.block.Block; import org.bukkit.block.data.Ageable; -import org.bukkit.block.data.BlockData; - import org.bukkit.entity.Player; import org.bukkit.entity.Snowball; import org.bukkit.event.EventHandler; @@ -13,7 +11,6 @@ import org.bukkit.event.entity.ProjectileHitEvent; import org.bukkit.event.entity.ProjectileLaunchEvent; import org.bukkit.inventory.ItemStack; import xyz.mineconomia.mineconomiacore.MineconomiaCore; - import java.util.Objects; import java.util.Random; import java.util.concurrent.TimeUnit; diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index cd80c9d..0fe92d2 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,6 +1,7 @@ database: #ArangoDB is used - host: "example.com" + host: "185.207.251.31" port: 8529 - user: "user" - password: "password" \ No newline at end of file + user: "mcore" + database: "mcore" + password: "mineconomiacore" \ No newline at end of file