From bb1e1d8b0b61b6d7b171d9d34269bee8f4104615 Mon Sep 17 00:00:00 2001 From: FantasyPvP <80643031+FantasyPvP@users.noreply.github.com> Date: Thu, 11 Jul 2024 12:06:50 +0100 Subject: [PATCH] - added some custom food and drinks - added kand coins - started working on the blazing set --- pom.xml | 8 +- .../commands/CmdLightningSword.java | 8 +- .../commands/CmdTeleportSpawn.java | 3 +- .../commands/GiveDashItemCmd.java} | 7 +- .../fantasypvp/kand/commands/KandCoinCmd.java | 85 +++++++++++++ .../commands/SetSpawnCommand.java | 5 +- .../events/DashItemListener.java | 4 +- .../fantasypvp/kand/events/DragonGlide.java | 13 ++ .../{kand_smp => kand}/events/Events.java | 25 ++-- .../kand/events/PlayerJumpEvent.java | 78 ++++++++++++ .../fantasypvp/kand/items/BlazingSet.java | 111 ++++++++++++++++ .../fantasypvp/kand/items/CustomDrinks.java | 118 ++++++++++++++++++ .../fantasypvp/kand/items/CustomFoods.java | 18 +++ .../{kand_smp => kand}/items/DashItem.java | 2 +- .../items/GearTemplate.java | 4 +- .../java/fantasypvp/kand/items/KandCoin.java | 32 +++++ .../items/LightningGear.java | 34 +++-- .../items/TrueNetherite.java | 4 +- .../{kand_smp => kand}/items/Witherite.java | 9 +- .../{kand_smp => kand}/items/items.md | 0 src/main/java/fantasypvp/kand/kandMain.java | 42 +++++++ .../util/attribute_gear/TierBase.java | 2 +- .../util/attribute_gear/TierIII.java | 4 +- .../util/attribute_gear/TierIV.java | 4 +- .../util/attribute_gear/TierV.java | 3 +- .../util/attribute_gear/TierVI.java | 3 +- .../java/fantasypvp/kand_smp/Kand_smp.java | 41 ------ src/main/resources/plugin.yml | 33 ++++- 28 files changed, 599 insertions(+), 101 deletions(-) rename src/main/java/fantasypvp/{kand_smp => kand}/commands/CmdLightningSword.java (83%) rename src/main/java/fantasypvp/{kand_smp => kand}/commands/CmdTeleportSpawn.java (97%) rename src/main/java/fantasypvp/{kand_smp/commands/GiveDashItemCommand.java => kand/commands/GiveDashItemCmd.java} (83%) create mode 100644 src/main/java/fantasypvp/kand/commands/KandCoinCmd.java rename src/main/java/fantasypvp/{kand_smp => kand}/commands/SetSpawnCommand.java (96%) rename src/main/java/fantasypvp/{kand_smp => kand}/events/DashItemListener.java (96%) create mode 100644 src/main/java/fantasypvp/kand/events/DragonGlide.java rename src/main/java/fantasypvp/{kand_smp => kand}/events/Events.java (80%) create mode 100644 src/main/java/fantasypvp/kand/events/PlayerJumpEvent.java create mode 100644 src/main/java/fantasypvp/kand/items/BlazingSet.java create mode 100644 src/main/java/fantasypvp/kand/items/CustomDrinks.java create mode 100644 src/main/java/fantasypvp/kand/items/CustomFoods.java rename src/main/java/fantasypvp/{kand_smp => kand}/items/DashItem.java (95%) rename src/main/java/fantasypvp/{kand_smp => kand}/items/GearTemplate.java (97%) create mode 100644 src/main/java/fantasypvp/kand/items/KandCoin.java rename src/main/java/fantasypvp/{kand_smp => kand}/items/LightningGear.java (62%) rename src/main/java/fantasypvp/{kand_smp => kand}/items/TrueNetherite.java (98%) rename src/main/java/fantasypvp/{kand_smp => kand}/items/Witherite.java (95%) rename src/main/java/fantasypvp/{kand_smp => kand}/items/items.md (100%) create mode 100644 src/main/java/fantasypvp/kand/kandMain.java rename src/main/java/fantasypvp/{kand_smp => kand}/util/attribute_gear/TierBase.java (92%) rename src/main/java/fantasypvp/{kand_smp => kand}/util/attribute_gear/TierIII.java (97%) rename src/main/java/fantasypvp/{kand_smp => kand}/util/attribute_gear/TierIV.java (98%) rename src/main/java/fantasypvp/{kand_smp => kand}/util/attribute_gear/TierV.java (98%) rename src/main/java/fantasypvp/{kand_smp => kand}/util/attribute_gear/TierVI.java (98%) delete mode 100644 src/main/java/fantasypvp/kand_smp/Kand_smp.java diff --git a/pom.xml b/pom.xml index 4d02d9b..b28798a 100644 --- a/pom.xml +++ b/pom.xml @@ -5,11 +5,11 @@ 4.0.0 fantasypvp - kand_smp + kand 1.0-SNAPSHOT jar - kand_smp + kand 1.8 @@ -23,8 +23,8 @@ maven-compiler-plugin 3.8.1 - ${java.version} - ${java.version} + 14 + 14 diff --git a/src/main/java/fantasypvp/kand_smp/commands/CmdLightningSword.java b/src/main/java/fantasypvp/kand/commands/CmdLightningSword.java similarity index 83% rename from src/main/java/fantasypvp/kand_smp/commands/CmdLightningSword.java rename to src/main/java/fantasypvp/kand/commands/CmdLightningSword.java index f0cc308..5399855 100644 --- a/src/main/java/fantasypvp/kand_smp/commands/CmdLightningSword.java +++ b/src/main/java/fantasypvp/kand/commands/CmdLightningSword.java @@ -1,6 +1,6 @@ -package fantasypvp.kand_smp.commands; +package fantasypvp.kand.commands; -import fantasypvp.kand_smp.items.LightningGear; +import fantasypvp.kand.items.LightningGear; import org.bukkit.ChatColor; import org.bukkit.command.CommandExecutor; import org.bukkit.entity.Player; @@ -16,12 +16,12 @@ public class CmdLightningSword implements CommandExecutor { Player player = (Player) sender; - if(player.hasPermission("lightning_sword")) { + if(player.hasPermission("kand.lightning_sword")) { if (command.getName().equalsIgnoreCase("lightning_sword")) { player.getInventory().addItem(LightningGear.lightning_sword); } - }else { + } else { player.sendMessage(ChatColor.RED+"You don't have permission to run this command."); } diff --git a/src/main/java/fantasypvp/kand_smp/commands/CmdTeleportSpawn.java b/src/main/java/fantasypvp/kand/commands/CmdTeleportSpawn.java similarity index 97% rename from src/main/java/fantasypvp/kand_smp/commands/CmdTeleportSpawn.java rename to src/main/java/fantasypvp/kand/commands/CmdTeleportSpawn.java index b0a530c..1c113e5 100644 --- a/src/main/java/fantasypvp/kand_smp/commands/CmdTeleportSpawn.java +++ b/src/main/java/fantasypvp/kand/commands/CmdTeleportSpawn.java @@ -1,6 +1,5 @@ -package fantasypvp.kand_smp.commands; +package fantasypvp.kand.commands; //Was made by DanThePythonMan -import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.command.Command; diff --git a/src/main/java/fantasypvp/kand_smp/commands/GiveDashItemCommand.java b/src/main/java/fantasypvp/kand/commands/GiveDashItemCmd.java similarity index 83% rename from src/main/java/fantasypvp/kand_smp/commands/GiveDashItemCommand.java rename to src/main/java/fantasypvp/kand/commands/GiveDashItemCmd.java index 5d75636..0a121c9 100644 --- a/src/main/java/fantasypvp/kand_smp/commands/GiveDashItemCommand.java +++ b/src/main/java/fantasypvp/kand/commands/GiveDashItemCmd.java @@ -1,15 +1,14 @@ -package fantasypvp.kand_smp.commands; +package fantasypvp.kand.commands; -import fantasypvp.kand_smp.items.DashItem; +import fantasypvp.kand.items.DashItem; 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; -public class GiveDashItemCommand implements CommandExecutor { +public class GiveDashItemCmd implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String s, String[] args) { diff --git a/src/main/java/fantasypvp/kand/commands/KandCoinCmd.java b/src/main/java/fantasypvp/kand/commands/KandCoinCmd.java new file mode 100644 index 0000000..36c207b --- /dev/null +++ b/src/main/java/fantasypvp/kand/commands/KandCoinCmd.java @@ -0,0 +1,85 @@ +package fantasypvp.kand.commands; + +import fantasypvp.kand.items.KandCoin; +import org.bukkit.ChatColor; +import org.bukkit.command.CommandExecutor; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.inventory.ItemStack; + +import static org.bukkit.Bukkit.broadcastMessage; + +public class KandCoinCmd implements CommandExecutor, Listener { + @Override + public boolean onCommand(org.bukkit.command.CommandSender sender, org.bukkit.command.Command command, String label, String[] args) { + if (!(sender instanceof Player)) { + sender.sendMessage("Only players can use this command"); + return true; + } + + broadcastMessage("Kand Coin: "); + + Player player = (Player) sender; + + + if (player.hasPermission("kand.economy.admin")) { + if (command.getName().equalsIgnoreCase("get_currency")) { + + ItemStack k = KandCoin.kandCoin; + + int quantity; + try { + quantity = Integer.parseInt(args[0]); + + } catch (NumberFormatException e) { + player.sendMessage(ChatColor.RED + "Invalid quantity"); + return true; + } + + broadcastMessage(quantity + " " + k.getItemMeta().getDisplayName() + " added to your inventory."); + + k.setAmount(quantity); + player.getInventory().addItem(KandCoin.kandCoin); + } + + } else { + player.sendMessage(ChatColor.RED + "You don't have permission to run this command."); + } + + return true; + } + + @EventHandler + public boolean onPlayerJoin(PlayerJoinEvent e) { + Player p = e.getPlayer(); + if (!p.hasPlayedBefore()) { + ItemStack k = KandCoin.kandCoin; + int quantity = 16; + k.setAmount(quantity); + p.sendMessage(quantity + " " + k.getItemMeta().getDisplayName() + " welcome to KandSMP\n you have received 16 Kand coins to get you started!"); + p.getInventory().addItem(k); + } + return true; + } +} + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/fantasypvp/kand_smp/commands/SetSpawnCommand.java b/src/main/java/fantasypvp/kand/commands/SetSpawnCommand.java similarity index 96% rename from src/main/java/fantasypvp/kand_smp/commands/SetSpawnCommand.java rename to src/main/java/fantasypvp/kand/commands/SetSpawnCommand.java index 6be4eb4..bd70b86 100644 --- a/src/main/java/fantasypvp/kand_smp/commands/SetSpawnCommand.java +++ b/src/main/java/fantasypvp/kand/commands/SetSpawnCommand.java @@ -1,4 +1,4 @@ -package fantasypvp.kand_smp.commands; +package fantasypvp.kand.commands; import org.bukkit.ChatColor; import org.bukkit.command.Command; @@ -28,13 +28,12 @@ public class SetSpawnCommand implements CommandExecutor { } Player player = (Player) sender; - if(!player.hasPermission("SpawnTP.canSetSpawn")){ + if(!player.hasPermission("kand.setglobalspawn")){ player.sendMessage(ChatColor.RED+"You don't have permission to run this."); }else{ - String coordinates = getCoordinates(player); try { diff --git a/src/main/java/fantasypvp/kand_smp/events/DashItemListener.java b/src/main/java/fantasypvp/kand/events/DashItemListener.java similarity index 96% rename from src/main/java/fantasypvp/kand_smp/events/DashItemListener.java rename to src/main/java/fantasypvp/kand/events/DashItemListener.java index 794a780..b2e731c 100644 --- a/src/main/java/fantasypvp/kand_smp/events/DashItemListener.java +++ b/src/main/java/fantasypvp/kand/events/DashItemListener.java @@ -1,6 +1,6 @@ -package fantasypvp.kand_smp.events; +package fantasypvp.kand.events; -import fantasypvp.kand_smp.items.DashItem; +import fantasypvp.kand.items.DashItem; import org.bukkit.Location; diff --git a/src/main/java/fantasypvp/kand/events/DragonGlide.java b/src/main/java/fantasypvp/kand/events/DragonGlide.java new file mode 100644 index 0000000..c4d5566 --- /dev/null +++ b/src/main/java/fantasypvp/kand/events/DragonGlide.java @@ -0,0 +1,13 @@ +package fantasypvp.kand.events; + +import org.bukkit.event.Listener; +import org.bukkit.event.EventHandler; + +import static org.bukkit.Bukkit.*; + +public class DragonGlide implements Listener { + @EventHandler + public static void onPlayerJump(PlayerJumpEvent event) { + getServer().broadcastMessage("§a" + event.getPlayer().getName() + " jumped!"); + } +} \ No newline at end of file diff --git a/src/main/java/fantasypvp/kand_smp/events/Events.java b/src/main/java/fantasypvp/kand/events/Events.java similarity index 80% rename from src/main/java/fantasypvp/kand_smp/events/Events.java rename to src/main/java/fantasypvp/kand/events/Events.java index 8a96a14..e3d7825 100644 --- a/src/main/java/fantasypvp/kand_smp/events/Events.java +++ b/src/main/java/fantasypvp/kand/events/Events.java @@ -1,20 +1,14 @@ -package fantasypvp.kand_smp.events; +package fantasypvp.kand.events; import org.bukkit.entity.LivingEntity; import org.bukkit.event.Listener; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; -import org.bukkit.event.entity.EntityPotionEffectEvent; import org.bukkit.potion.PotionEffect; import static org.bukkit.Bukkit.*; public class Events implements Listener { - @EventHandler - public static void onPlayerJoin(org.bukkit.event.player.PlayerJoinEvent event) { - - getServer().broadcastMessage("§a" + event.getPlayer().getName() + " has joined the server!"); - } @EventHandler public static void onEntityDamageByEntity(org.bukkit.event.entity.EntityDamageByEntityEvent event) { @@ -23,10 +17,23 @@ public class Events implements Listener { Player player = (Player) event.getDamager(); // check if the player is using the lightning sword - if (player.getInventory().getItemInMainHand().getItemMeta().getLore().toString().contains("§7All who oppose shall be smitten")) { - player.getWorld().strikeLightning(event.getEntity().getLocation()); + try { + player.getInventory().getItemInMainHand().getItemMeta().getLore().toString(); + } catch (NullPointerException e) { + return; } + if (player.getInventory().getItemInMainHand().getItemMeta().getLore().toString().contains("§7All who oppose shall be smitten")) { + // check if hit is critical + if (player.getFallDistance() > 0.0F && !player.isInsideVehicle() && !player.isGliding() && !player.isSwimming() && !player.isClimbing() && player.getAttackCooldown() == 1.0F) { + player.getWorld().strikeLightningEffect(event.getEntity().getLocation()); + } + } + + + + + else if (player.getInventory().getItemInMainHand().getItemMeta().getLore().toString().contains("§f[T5+] Witherite Sword")) { // if affected entity is wearing witherite gear if (event.getEntity() instanceof Player) { diff --git a/src/main/java/fantasypvp/kand/events/PlayerJumpEvent.java b/src/main/java/fantasypvp/kand/events/PlayerJumpEvent.java new file mode 100644 index 0000000..2fc3ca5 --- /dev/null +++ b/src/main/java/fantasypvp/kand/events/PlayerJumpEvent.java @@ -0,0 +1,78 @@ +package fantasypvp.kand.events; + +import org.bukkit.Bukkit; +import org.bukkit.Statistic; +import org.bukkit.entity.Player; +import org.bukkit.event.*; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerMoveEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.plugin.java.JavaPlugin; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +public class PlayerJumpEvent extends Event { + + private static final HandlerList handlers = new HandlerList(); + private static final PlayerJumpEventListener listener = new PlayerJumpEventListener(); + + private Player player; + + public PlayerJumpEvent(Player player) { + this.player = player; + } + + public Player getPlayer() { + return player; + } + + @Override + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } + + private static class PlayerJumpEventListener implements Listener { + + private Map jumps = new HashMap<>(); + + @EventHandler(priority = EventPriority.MONITOR) + public void onPlayerJoin(PlayerJoinEvent e) { + jumps.put(e.getPlayer().getUniqueId(), e.getPlayer().getStatistic(Statistic.JUMP)); + } + + @EventHandler(priority = EventPriority.MONITOR) + public void onPlayerQuit(PlayerQuitEvent e) { + jumps.remove(e.getPlayer().getUniqueId()); + } + + @EventHandler(priority = EventPriority.MONITOR) + public void onPlayerMove(PlayerMoveEvent e) { + Player player = e.getPlayer(); + + if(e.getFrom().getY() < e.getTo().getY()) { + int current = player.getStatistic(Statistic.JUMP); + int last = jumps.getOrDefault(player.getUniqueId(), -1); + + if(last != current) { + jumps.put(player.getUniqueId(), current); + + double yDif = (long) ((e.getTo().getY() - e.getFrom().getY()) * 1000) / 1000d; + + if((yDif < 0.035 || yDif > 0.037) && (yDif < 0.116 || yDif > 0.118)) { + Bukkit.getPluginManager().callEvent(new PlayerJumpEvent(player)); + } + } + } + } + } + + public static void register(JavaPlugin plugin) { + Bukkit.getPluginManager().registerEvents(listener, plugin); + } +} \ No newline at end of file diff --git a/src/main/java/fantasypvp/kand/items/BlazingSet.java b/src/main/java/fantasypvp/kand/items/BlazingSet.java new file mode 100644 index 0000000..70b0ccf --- /dev/null +++ b/src/main/java/fantasypvp/kand/items/BlazingSet.java @@ -0,0 +1,111 @@ +package fantasypvp.kand.items; + +import fantasypvp.kand.util.attribute_gear.TierV; +import org.bukkit.Material; +import org.bukkit.NamespacedKey; +import org.bukkit.inventory.*; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.ArrayList; +import java.util.List; + +import static org.bukkit.Bukkit.getServer; + +public class BlazingSet { + public static ItemStack sword; + public static ItemStack helmet; + public static ItemStack chestplate; + public static ItemStack leggings; + public static ItemStack boots; + + public static ItemStack blazing_halo; + + private static RecipeChoice netherite_upgrade; + private static RecipeChoice upgrade_ingredient; + + public static void init() { + netherite_upgrade = new RecipeChoice.MaterialChoice(Material.NETHERITE_UPGRADE_SMITHING_TEMPLATE); + + // THIS MUST BE CHANGED + upgrade_ingredient = new RecipeChoice.MaterialChoice(Material.NETHERITE_INGOT); + + sword(); + helmet(); + chestplate(); + leggings(); + boots(); + } + + private static void sword() { + ItemStack item = TierV.sword(); + + ItemMeta meta = item.getItemMeta(); + meta.setDisplayName("§bPLACEHOLDER"); + List lore = new ArrayList<>(); + lore.add("§f"); + meta.setLore(lore); + item.setItemMeta(meta); + sword = item; + + NamespacedKey key = new NamespacedKey("fantasypvp.kand_smp.items", "PLACEHOLDER_SWORD"); + RecipeChoice sword = new RecipeChoice.MaterialChoice(Material.NETHERITE_SWORD); + SmithingTransformRecipe recipe = new SmithingTransformRecipe(key, item, netherite_upgrade, upgrade_ingredient, sword); + getServer().addRecipe(recipe); + } + + private static void helmet() { + ItemStack item = TierV.helmet(); + + ItemMeta meta = item.getItemMeta(); + meta.setDisplayName("§bPLACEHOLDER"); + item.setItemMeta(meta); + helmet = item; + + NamespacedKey key = new NamespacedKey("fantasypvp.kand_smp.items", "PLACEHOLDER_HELMET"); + RecipeChoice helmet = new RecipeChoice.MaterialChoice(Material.NETHERITE_HELMET); + SmithingTransformRecipe recipe = new SmithingTransformRecipe(key, item, netherite_upgrade, upgrade_ingredient, helmet); + getServer().addRecipe(recipe); + } + + private static void chestplate() { + ItemStack item = TierV.chestplate(); + + ItemMeta meta = item.getItemMeta(); + meta.setDisplayName("§bPLACEHOLDER"); + item.setItemMeta(meta); + helmet = item; + + NamespacedKey key = new NamespacedKey("fantasypvp.kand_smp.items", "PLACEHOLDER_CHESTPLATE"); + RecipeChoice chestplate = new RecipeChoice.MaterialChoice(Material.NETHERITE_CHESTPLATE); + SmithingTransformRecipe recipe = new SmithingTransformRecipe(key, item, netherite_upgrade, upgrade_ingredient, chestplate); + getServer().addRecipe(recipe); + } + + private static void leggings() { + ItemStack item = TierV.leggings(); + + ItemMeta meta = item.getItemMeta(); + meta.setDisplayName("§bPLACEHOLDER"); + item.setItemMeta(meta); + helmet = item; + + NamespacedKey key = new NamespacedKey("fantasypvp.kand_smp.items", "PLACEHOLDER_LEGGINGS"); + RecipeChoice leggings = new RecipeChoice.MaterialChoice(Material.NETHERITE_LEGGINGS); + SmithingTransformRecipe recipe = new SmithingTransformRecipe(key, item, netherite_upgrade, upgrade_ingredient, leggings); + getServer().addRecipe(recipe); + } + + private static void boots() { + ItemStack item = TierV.boots(); + + ItemMeta meta = item.getItemMeta(); + meta.setDisplayName("§bPLACEHOLDER"); + item.setItemMeta(meta); + helmet = item; + + NamespacedKey key = new NamespacedKey("fantasypvp.kand_smp.items", "PLACEHOLDER_BOOTS"); + RecipeChoice boots = new RecipeChoice.MaterialChoice(Material.NETHERITE_BOOTS); + SmithingTransformRecipe recipe = new SmithingTransformRecipe(key, item, netherite_upgrade, upgrade_ingredient, boots); + getServer().addRecipe(recipe); + } +} \ No newline at end of file diff --git a/src/main/java/fantasypvp/kand/items/CustomDrinks.java b/src/main/java/fantasypvp/kand/items/CustomDrinks.java new file mode 100644 index 0000000..312d498 --- /dev/null +++ b/src/main/java/fantasypvp/kand/items/CustomDrinks.java @@ -0,0 +1,118 @@ +package fantasypvp.kand.items; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.NamespacedKey; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.Recipe; +import org.bukkit.inventory.ShapedRecipe; +import org.bukkit.inventory.ShapelessRecipe; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.PotionMeta; +import org.bukkit.potion.PotionEffectType; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import static org.bukkit.Bukkit.broadcastMessage; +import static org.bukkit.Bukkit.getServer; + +public class CustomDrinks implements Listener { + public static ItemStack apple_juice; + public static ItemStack cider; + + + public static void init() { + appleJuice(); + cider(); + } + + private static void appleJuice() { + ItemStack item = new ItemStack(Material.POTION, 1); + + PotionMeta pm = (PotionMeta) item.getItemMeta(); + pm.setBasePotionData(new org.bukkit.potion.PotionData(org.bukkit.potion.PotionType.WATER)); + + + List lore = new ArrayList<>(); + lore.add(ChatColor.YELLOW + "Just plain ordinary Apple Juice"); + + pm.setDisplayName("Apple Juice"); + + // set food value + + pm.addCustomEffect( + new org.bukkit.potion.PotionEffect( + PotionEffectType.SATURATION, + 1, + 4 + ), + true + ); + + item.setItemMeta(pm); + apple_juice = item; + + NamespacedKey key = new NamespacedKey("fantasypvp.kand_smp.items", "apple_juice"); + ShapelessRecipe recipe = new ShapelessRecipe(key, apple_juice); + recipe.addIngredient(Material.APPLE); + recipe.addIngredient(1, Material.POTION, (byte)0); + getServer().addRecipe(recipe); + } + + @EventHandler + public void ciderCrafting(org.bukkit.event.inventory.PrepareItemCraftEvent event) { + + int i = 0; + for (ItemStack item : event.getInventory().getMatrix()) { + if (item != null) { + i += item.getAmount(); + } + } + + if (event.getInventory().contains(apple_juice, 1) + && event.getInventory().contains(Material.SUGAR, 2) + && i == 3 + ) { + event.getInventory().setResult(cider); + } + } + + private static void cider() { + ItemStack item = new ItemStack(Material.POTION, 1); + + PotionMeta pm = (PotionMeta) item.getItemMeta(); + pm.setBasePotionData(new org.bukkit.potion.PotionData(org.bukkit.potion.PotionType.WATER)); + + + List lore = new ArrayList<>(); + lore.add(ChatColor.YELLOW + "A bottle of cider."); + + pm.setDisplayName("Cider"); + + // set food value + + pm.addCustomEffect( + new org.bukkit.potion.PotionEffect( + PotionEffectType.SATURATION, + 1, + 5 + ), + true + ); + pm.addCustomEffect( + new org.bukkit.potion.PotionEffect( + PotionEffectType.SPEED, + 5, + 1 + ), + true + ); + + item.setItemMeta(pm); + cider = item; + } +} diff --git a/src/main/java/fantasypvp/kand/items/CustomFoods.java b/src/main/java/fantasypvp/kand/items/CustomFoods.java new file mode 100644 index 0000000..8a1c049 --- /dev/null +++ b/src/main/java/fantasypvp/kand/items/CustomFoods.java @@ -0,0 +1,18 @@ +package fantasypvp.kand.items; + +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; + +public class CustomFoods { + public static ItemStack steak_burger; + + public static void init() { + steakBurger(); + } + + private static void steakBurger() { + ItemStack item = new ItemStack(Material.COOKED_BEEF, 1); + steak_burger = item; + } +} + diff --git a/src/main/java/fantasypvp/kand_smp/items/DashItem.java b/src/main/java/fantasypvp/kand/items/DashItem.java similarity index 95% rename from src/main/java/fantasypvp/kand_smp/items/DashItem.java rename to src/main/java/fantasypvp/kand/items/DashItem.java index 7441b72..e439d37 100644 --- a/src/main/java/fantasypvp/kand_smp/items/DashItem.java +++ b/src/main/java/fantasypvp/kand/items/DashItem.java @@ -1,4 +1,4 @@ -package fantasypvp.kand_smp.items; +package fantasypvp.kand.items; import org.bukkit.ChatColor; import org.bukkit.Material; diff --git a/src/main/java/fantasypvp/kand_smp/items/GearTemplate.java b/src/main/java/fantasypvp/kand/items/GearTemplate.java similarity index 97% rename from src/main/java/fantasypvp/kand_smp/items/GearTemplate.java rename to src/main/java/fantasypvp/kand/items/GearTemplate.java index eda4ead..45f26b1 100644 --- a/src/main/java/fantasypvp/kand_smp/items/GearTemplate.java +++ b/src/main/java/fantasypvp/kand/items/GearTemplate.java @@ -1,6 +1,6 @@ -package fantasypvp.kand_smp.items; +package fantasypvp.kand.items; -import fantasypvp.kand_smp.util.attribute_gear.TierV; +import fantasypvp.kand.util.attribute_gear.TierV; import org.bukkit.Material; import org.bukkit.NamespacedKey; import org.bukkit.inventory.*; diff --git a/src/main/java/fantasypvp/kand/items/KandCoin.java b/src/main/java/fantasypvp/kand/items/KandCoin.java new file mode 100644 index 0000000..43f8ba9 --- /dev/null +++ b/src/main/java/fantasypvp/kand/items/KandCoin.java @@ -0,0 +1,32 @@ +package fantasypvp.kand.items; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.ArrayList; +import java.util.List; + +public class KandCoin extends ItemStack { + public static ItemStack kandCoin; + + public static void init() { + kandCoin = KandCoin(); + } + + public static ItemStack KandCoin() { + ItemStack item = new ItemStack(Material.POPPED_CHORUS_FRUIT, 1); + ItemMeta meta = item.getItemMeta(); + meta.setDisplayName(ChatColor.GOLD + "Kand Coin"); + + List lore = new ArrayList<>(); + String lore_line = ChatColor.GRAY + "The Official KandSMP Currency."; + lore.add(lore_line); + meta.setLore(lore); + + item.setItemMeta(meta); + return item; + } + +} diff --git a/src/main/java/fantasypvp/kand_smp/items/LightningGear.java b/src/main/java/fantasypvp/kand/items/LightningGear.java similarity index 62% rename from src/main/java/fantasypvp/kand_smp/items/LightningGear.java rename to src/main/java/fantasypvp/kand/items/LightningGear.java index 5dcf907..2855cf1 100644 --- a/src/main/java/fantasypvp/kand_smp/items/LightningGear.java +++ b/src/main/java/fantasypvp/kand/items/LightningGear.java @@ -1,5 +1,6 @@ -package fantasypvp.kand_smp.items; +package fantasypvp.kand.items; +import fantasypvp.kand.util.attribute_gear.TierVI; import org.bukkit.Material; import org.bukkit.NamespacedKey; import org.bukkit.attribute.Attribute; @@ -9,6 +10,7 @@ import org.bukkit.inventory.meta.ItemMeta; import java.util.ArrayList; import java.util.List; +import java.util.UUID; import static org.bukkit.Bukkit.getServer; @@ -27,25 +29,31 @@ public class LightningGear { lore.add("§7All who oppose shall be smitten"); meta.setLore(lore); // set damage to 12 when in main hand - meta.addAttributeModifier( - Attribute.GENERIC_ATTACK_DAMAGE, - new AttributeModifier( - "generic.attackDamage", - 12, - AttributeModifier.Operation.ADD_NUMBER - ) - ); + UUID uuid = UUID.randomUUID(); + + meta.addAttributeModifier(Attribute.GENERIC_ATTACK_DAMAGE, new AttributeModifier( + uuid, + "generic.attackDamage", + 8, + AttributeModifier.Operation.ADD_NUMBER, + EquipmentSlot.HAND + )); + meta.addAttributeModifier(Attribute.GENERIC_ATTACK_SPEED, new AttributeModifier( + UUID.randomUUID(), + "generic.attackSpeed", + -2.4, + AttributeModifier.Operation.ADD_NUMBER, + EquipmentSlot.HAND + )); item.setItemMeta(meta); lightning_sword = item; - meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); - // shaped recipe ShapedRecipe recipe = new ShapedRecipe(NamespacedKey.minecraft("lightning_sword"), item); recipe.shape( - " X", " X ", - "H " + " X ", + " H " ); recipe.setIngredient('X', Material.NETHER_STAR); recipe.setIngredient('H', Material.LIGHTNING_ROD); diff --git a/src/main/java/fantasypvp/kand_smp/items/TrueNetherite.java b/src/main/java/fantasypvp/kand/items/TrueNetherite.java similarity index 98% rename from src/main/java/fantasypvp/kand_smp/items/TrueNetherite.java rename to src/main/java/fantasypvp/kand/items/TrueNetherite.java index 58f5e1a..59749ff 100644 --- a/src/main/java/fantasypvp/kand_smp/items/TrueNetherite.java +++ b/src/main/java/fantasypvp/kand/items/TrueNetherite.java @@ -1,6 +1,6 @@ -package fantasypvp.kand_smp.items; +package fantasypvp.kand.items; -import fantasypvp.kand_smp.util.attribute_gear.TierVI; +import fantasypvp.kand.util.attribute_gear.TierVI; import org.bukkit.Material; import org.bukkit.NamespacedKey; import org.bukkit.attribute.Attribute; diff --git a/src/main/java/fantasypvp/kand_smp/items/Witherite.java b/src/main/java/fantasypvp/kand/items/Witherite.java similarity index 95% rename from src/main/java/fantasypvp/kand_smp/items/Witherite.java rename to src/main/java/fantasypvp/kand/items/Witherite.java index f381276..7e7ee95 100644 --- a/src/main/java/fantasypvp/kand_smp/items/Witherite.java +++ b/src/main/java/fantasypvp/kand/items/Witherite.java @@ -1,8 +1,11 @@ -package fantasypvp.kand_smp.items; +package fantasypvp.kand.items; -import fantasypvp.kand_smp.util.attribute_gear.TierV; +import fantasypvp.kand.util.attribute_gear.TierV; import org.bukkit.Material; import org.bukkit.NamespacedKey; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.PrepareSmithingEvent; import org.bukkit.inventory.*; import org.bukkit.inventory.meta.ItemMeta; @@ -11,7 +14,7 @@ import java.util.List; import static org.bukkit.Bukkit.getServer; -public class Witherite { +public class Witherite { public static ItemStack sword; public static ItemStack helmet; public static ItemStack chestplate; diff --git a/src/main/java/fantasypvp/kand_smp/items/items.md b/src/main/java/fantasypvp/kand/items/items.md similarity index 100% rename from src/main/java/fantasypvp/kand_smp/items/items.md rename to src/main/java/fantasypvp/kand/items/items.md diff --git a/src/main/java/fantasypvp/kand/kandMain.java b/src/main/java/fantasypvp/kand/kandMain.java new file mode 100644 index 0000000..b60443d --- /dev/null +++ b/src/main/java/fantasypvp/kand/kandMain.java @@ -0,0 +1,42 @@ +package fantasypvp.kand; + +import fantasypvp.kand.commands.*; +import fantasypvp.kand.events.DashItemListener; +import fantasypvp.kand.events.Events; +import fantasypvp.kand.events.PlayerJumpEvent; +import fantasypvp.kand.items.*; + +import org.bukkit.plugin.java.JavaPlugin; + +public final class kandMain extends JavaPlugin { + + @Override + public void onEnable() { + // Plugin startup logic + LightningGear.init(); + TrueNetherite.init(); + Witherite.init(); + CustomDrinks.init(); + KandCoin.init(); + // register listeners + getServer().getPluginManager().registerEvents(new Events(), this); + getServer().getPluginManager().registerEvents(new DashItemListener(),this); + getServer().getPluginManager().registerEvents(new CustomDrinks(), this); + getServer().getPluginManager().registerEvents(new KandCoinCmd(), this); + PlayerJumpEvent.register(this); + + getCommand("lightning_sword").setExecutor(new CmdLightningSword()); + getCommand("spawn").setExecutor(new CmdTeleportSpawn(this)); + getCommand("setglobalspawn").setExecutor(new SetSpawnCommand(this)); + getCommand("dashstick").setExecutor(new GiveDashItemCmd()); + getCommand("get_currency").setExecutor(new KandCoinCmd()); + + + getServer().broadcastMessage("§aKand SMP 2 has been enabled!"); + } + + @Override + public void onDisable() { + // Plugin shutdown logic + } +} diff --git a/src/main/java/fantasypvp/kand_smp/util/attribute_gear/TierBase.java b/src/main/java/fantasypvp/kand/util/attribute_gear/TierBase.java similarity index 92% rename from src/main/java/fantasypvp/kand_smp/util/attribute_gear/TierBase.java rename to src/main/java/fantasypvp/kand/util/attribute_gear/TierBase.java index 27e3d80..ca14877 100644 --- a/src/main/java/fantasypvp/kand_smp/util/attribute_gear/TierBase.java +++ b/src/main/java/fantasypvp/kand/util/attribute_gear/TierBase.java @@ -1,4 +1,4 @@ -package fantasypvp.kand_smp.util.attribute_gear; +package fantasypvp.kand.util.attribute_gear; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; diff --git a/src/main/java/fantasypvp/kand_smp/util/attribute_gear/TierIII.java b/src/main/java/fantasypvp/kand/util/attribute_gear/TierIII.java similarity index 97% rename from src/main/java/fantasypvp/kand_smp/util/attribute_gear/TierIII.java rename to src/main/java/fantasypvp/kand/util/attribute_gear/TierIII.java index 8fd2b84..4ada176 100644 --- a/src/main/java/fantasypvp/kand_smp/util/attribute_gear/TierIII.java +++ b/src/main/java/fantasypvp/kand/util/attribute_gear/TierIII.java @@ -1,4 +1,4 @@ -package fantasypvp.kand_smp.util.attribute_gear; +package fantasypvp.kand.util.attribute_gear; import org.bukkit.Material; import org.bukkit.attribute.Attribute; @@ -9,6 +9,8 @@ import org.bukkit.inventory.meta.ItemMeta; import java.util.UUID; +// IRON ARMOUR EQUIVALENT + public abstract class TierIII extends TierBase { public static ItemStack sword () { ItemStack item = new ItemStack(Material.IRON_SWORD, 1); diff --git a/src/main/java/fantasypvp/kand_smp/util/attribute_gear/TierIV.java b/src/main/java/fantasypvp/kand/util/attribute_gear/TierIV.java similarity index 98% rename from src/main/java/fantasypvp/kand_smp/util/attribute_gear/TierIV.java rename to src/main/java/fantasypvp/kand/util/attribute_gear/TierIV.java index ba2433e..36c5228 100644 --- a/src/main/java/fantasypvp/kand_smp/util/attribute_gear/TierIV.java +++ b/src/main/java/fantasypvp/kand/util/attribute_gear/TierIV.java @@ -1,4 +1,4 @@ -package fantasypvp.kand_smp.util.attribute_gear; +package fantasypvp.kand.util.attribute_gear; import org.bukkit.Material; import org.bukkit.attribute.Attribute; @@ -9,6 +9,8 @@ import org.bukkit.inventory.meta.ItemMeta; import java.util.UUID; +// DIAMOND ARMOUR EQUIVALENT + public abstract class TierIV extends TierBase { public static ItemStack sword () { ItemStack item = new ItemStack(Material.DIAMOND_SWORD, 1); diff --git a/src/main/java/fantasypvp/kand_smp/util/attribute_gear/TierV.java b/src/main/java/fantasypvp/kand/util/attribute_gear/TierV.java similarity index 98% rename from src/main/java/fantasypvp/kand_smp/util/attribute_gear/TierV.java rename to src/main/java/fantasypvp/kand/util/attribute_gear/TierV.java index 11ee04a..2094cf9 100644 --- a/src/main/java/fantasypvp/kand_smp/util/attribute_gear/TierV.java +++ b/src/main/java/fantasypvp/kand/util/attribute_gear/TierV.java @@ -1,4 +1,4 @@ -package fantasypvp.kand_smp.util.attribute_gear; +package fantasypvp.kand.util.attribute_gear; import org.bukkit.Material; import org.bukkit.attribute.Attribute; @@ -9,6 +9,7 @@ import org.bukkit.inventory.meta.ItemMeta; import java.util.UUID; +// NETHERITE ARMOUR EQUIVALENT public abstract class TierV extends TierBase { public static ItemStack sword () { diff --git a/src/main/java/fantasypvp/kand_smp/util/attribute_gear/TierVI.java b/src/main/java/fantasypvp/kand/util/attribute_gear/TierVI.java similarity index 98% rename from src/main/java/fantasypvp/kand_smp/util/attribute_gear/TierVI.java rename to src/main/java/fantasypvp/kand/util/attribute_gear/TierVI.java index 9a40dcf..f4f019c 100644 --- a/src/main/java/fantasypvp/kand_smp/util/attribute_gear/TierVI.java +++ b/src/main/java/fantasypvp/kand/util/attribute_gear/TierVI.java @@ -1,4 +1,4 @@ -package fantasypvp.kand_smp.util.attribute_gear; +package fantasypvp.kand.util.attribute_gear; import org.bukkit.Material; import org.bukkit.attribute.Attribute; @@ -9,6 +9,7 @@ import org.bukkit.inventory.meta.ItemMeta; import java.util.UUID; +// STATS > NETHERITE public abstract class TierVI extends TierBase { public static ItemStack sword () { diff --git a/src/main/java/fantasypvp/kand_smp/Kand_smp.java b/src/main/java/fantasypvp/kand_smp/Kand_smp.java deleted file mode 100644 index 1f415fa..0000000 --- a/src/main/java/fantasypvp/kand_smp/Kand_smp.java +++ /dev/null @@ -1,41 +0,0 @@ -package fantasypvp.kand_smp; - -import fantasypvp.kand_smp.commands.CmdLightningSword; -import fantasypvp.kand_smp.commands.CmdTeleportSpawn; -import fantasypvp.kand_smp.commands.GiveDashItemCommand; -import fantasypvp.kand_smp.commands.SetSpawnCommand; -import fantasypvp.kand_smp.events.DashItemListener; -import fantasypvp.kand_smp.events.Events; -import fantasypvp.kand_smp.items.DashItem; -import fantasypvp.kand_smp.items.LightningGear; -import fantasypvp.kand_smp.items.TrueNetherite; -import fantasypvp.kand_smp.items.Witherite; - -import org.bukkit.plugin.java.JavaPlugin; - -public final class Kand_smp extends JavaPlugin { - - @Override - public void onEnable() { - // Plugin startup logic - LightningGear.init(); - TrueNetherite.init(); - Witherite.init(); - // register listeners - getServer().getPluginManager().registerEvents(new Events(), this); - getServer().getPluginManager().registerEvents(new DashItemListener(),this); - - getCommand("lightning_sword").setExecutor(new CmdLightningSword()); - getCommand("spawn").setExecutor(new CmdTeleportSpawn(this)); - getCommand("setSpawnTp").setExecutor(new SetSpawnCommand(this)); - getCommand("dashstick").setExecutor(new GiveDashItemCommand()); - - - getServer().broadcastMessage("§aKand SMP has been enabled!"); - } - - @Override - public void onDisable() { - // Plugin shutdown logic - } -} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 6c4f889..d7142c2 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ -name: kand_smp +name: kand version: '${project.version}' -main: fantasypvp.kand_smp.Kand_smp +main: fantasypvp.kand.kandMain api-version: '1.20' commands: lightning_sword: @@ -9,21 +9,42 @@ commands: spawn: description: Spawn player usage: /spawn - setSpawnTp: + setglobalspawn: description: Sets the world spawn tp point usage: /setSpawnTp dashstick: description: gives the user a dash stick usage: /dashstick + get_currency: + description: get currency + usage: /get_currency permissions: - lightning_sword: + kand.admin: + description: provides access to all kand commands + children: + kand.lightning_sword: true + kand.spawn: true + kand.setglobalspawn: true + kand.dashstick: true + economy.*: true + default: op + kand.lightning_sword: description: Allows player to run /lightning_sword default: op - setSpawnTp: - description: allows player to run /setSpawnTp + kand.setglobalspawn: + description: Allows player to run /setglobalspawn default: op + kand.spawn: + description: allows player to teleport to spawn from anywhere in the world + default: true giveDashItem: description: allows the player to run /dashstick default: op + kand.economy.manage: + description: Allows player to use economy commands + default: op + + +