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
+
+
+