NullValkyrie

Minecraft 1.19 multipurpose plugin for spigot servers with a lot of features where most modern servers have.
git clone https://codeberg.org/night0721/NullValkyrie
Log | Files | Refs | README | LICENSE

commit 235fbcc0ceaae6442e760b93a1b277ac38f43980
parent ccf9627b7931a4890f382c1b0672f7ddfef13b33
Author: night0721 <[email protected]>
Date:   Tue, 12 Jul 2022 13:31:53 +0100

custom item handler with rarity

Diffstat:
Dsrc/main/java/com/night/nullvalkyrie/Enchantments/EnchantmentHandler.java | 40----------------------------------------
Asrc/main/java/com/night/nullvalkyrie/Enchantments/EnchantmentManager.java | 40++++++++++++++++++++++++++++++++++++++++
Msrc/main/java/com/night/nullvalkyrie/Events/CustomItemEvents.java | 2+-
Asrc/main/java/com/night/nullvalkyrie/Items/CustomItem.java | 260+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/main/java/com/night/nullvalkyrie/Items/CustomItemManager.java | 279+++++++++++--------------------------------------------------------------------
Asrc/main/java/com/night/nullvalkyrie/Items/Rarity.java | 25+++++++++++++++++++++++++
Msrc/main/java/com/night/nullvalkyrie/Main.java | 53++++++++++++++++++++++++++++++++++++++---------------
Msrc/main/java/com/night/nullvalkyrie/commands/WeaponCommand.java | 16++++++++--------
8 files changed, 410 insertions(+), 305 deletions(-)

diff --git a/src/main/java/com/night/nullvalkyrie/Enchantments/EnchantmentHandler.java b/src/main/java/com/night/nullvalkyrie/Enchantments/EnchantmentHandler.java @@ -1,40 +0,0 @@ -package com.night.nullvalkyrie.Enchantments; - -import org.bukkit.enchantments.Enchantment; - -import java.lang.reflect.Field; -import java.util.Arrays; -import java.util.stream.Collectors; - -public class EnchantmentHandler { - public static final Enchantment ThunderBolt = new CustomEnchantment("thunderbolt", "ThunderBolt", 5); - public static final Enchantment SmeltingTouch = new CustomEnchantment("smelting-touch", "Smelting Touch", 1); - public static void register() { - boolean registered = Arrays.stream(Enchantment.values()).collect(Collectors.toList()).contains(ThunderBolt); - if(!registered) { - registerEnchantment(ThunderBolt); - registerEnchantment(SmeltingTouch); - } - - } - public static void registerEnchantment(Enchantment en) { - boolean registered = true; - try { - try { - Field f = Enchantment.class.getDeclaredField("acceptingNew"); - f.setAccessible(true); - f.set(null, true); - } catch (Exception e) { - e.printStackTrace(); - } - Enchantment.registerEnchantment(en); - } catch (Exception e) { - registered = false; - e.printStackTrace(); - } - if (registered) { - - } - } - -} diff --git a/src/main/java/com/night/nullvalkyrie/Enchantments/EnchantmentManager.java b/src/main/java/com/night/nullvalkyrie/Enchantments/EnchantmentManager.java @@ -0,0 +1,40 @@ +package com.night.nullvalkyrie.Enchantments; + +import org.bukkit.enchantments.Enchantment; + +import java.lang.reflect.Field; +import java.util.Arrays; +import java.util.stream.Collectors; + +public class EnchantmentManager { + public static final Enchantment ThunderBolt = new CustomEnchantment("thunderbolt", "ThunderBolt", 5); + public static final Enchantment SmeltingTouch = new CustomEnchantment("smelting-touch", "Smelting Touch", 1); + public static void register() { + boolean registered = Arrays.stream(Enchantment.values()).collect(Collectors.toList()).contains(ThunderBolt); + if(!registered) { + registerEnchantment(ThunderBolt); + registerEnchantment(SmeltingTouch); + } + + } + public static void registerEnchantment(Enchantment en) { + boolean registered = true; + try { + try { + Field f = Enchantment.class.getDeclaredField("acceptingNew"); + f.setAccessible(true); + f.set(null, true); + } catch (Exception e) { + e.printStackTrace(); + } + Enchantment.registerEnchantment(en); + } catch (Exception e) { + registered = false; + e.printStackTrace(); + } + if (registered) { + + } + } + +} diff --git a/src/main/java/com/night/nullvalkyrie/Events/CustomItemEvents.java b/src/main/java/com/night/nullvalkyrie/Events/CustomItemEvents.java @@ -15,7 +15,7 @@ import org.bukkit.event.player.PlayerInteractEvent; import java.util.Set; -import static com.night.nullvalkyrie.Items.CustomItemManager.loadConfig; +import static com.night.nullvalkyrie.Items.CustomItem.loadConfig; public class CustomItemEvents implements Listener { @EventHandler diff --git a/src/main/java/com/night/nullvalkyrie/Items/CustomItem.java b/src/main/java/com/night/nullvalkyrie/Items/CustomItem.java @@ -0,0 +1,260 @@ +package com.night.nullvalkyrie.Items; + +import com.night.nullvalkyrie.Enchantments.EnchantmentManager; +import com.night.nullvalkyrie.Main; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.NamespacedKey; +import org.bukkit.attribute.Attribute; +import org.bukkit.attribute.AttributeModifier; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.inventory.EquipmentSlot; +import org.bukkit.inventory.ItemFlag; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.ShapedRecipe; +import org.bukkit.inventory.meta.ItemMeta; + +import java.io.File; +import java.io.IOException; +import java.util.*; + +import static com.night.nullvalkyrie.Enchantments.EnchantmentManager.ThunderBolt; + +public class CustomItem { + private static Main main; + public CustomItem(Main main) { + this.main = main; + if(!main.getDataFolder().exists()) { + main.getDataFolder().mkdir(); + } + } + public static ItemStack WidowSword; + public static ItemStack Terminator; + public static ItemStack Grenade; + public static ItemStack SnowGun; + public static ItemStack ExplosiveBow; + public static ItemStack AOTV; + public static ItemStack GrapplingHook; + public static void register() { + createItemDataDirectory("ItemData"); + setWidowSword(); + setTerminator(); + setGrenade(); + setSnowGun(); + setExplosiveBow(); + setAOTV(); + setGrapplingHook(); + } + + public static YamlConfiguration loadConfig(String path) { + File f = new File(main.getDataFolder(), path); + if(!f.exists()) { + try { + f.createNewFile(); + } catch (IOException e) { + e.printStackTrace(); + } + + } + return YamlConfiguration.loadConfiguration(f); + } + public static File loadFile(String path) { + File f = new File(main.getDataFolder(), path); + if(!f.exists()) { + try { + f.createNewFile(); + } catch (IOException e) { + e.printStackTrace(); + } + + } + return f; + } + private static void createItemDataDirectory(String path) { + File f = new File(main.getDataFolder(), path); + if(!f.exists()) { + try { + if(!f.mkdir()) { + try { + f.mkdir(); + } catch (SecurityException e) { + e.printStackTrace(); + } + } + } catch (SecurityException e) { + e.printStackTrace(); + } + + } + } + private static void setWidowSword() { + YamlConfiguration config = loadConfig("ItemData\\WidowSword.yml"); + config.set("zombie", 100); + config.set("skeleton", 100); + config.set("spider", 100); + try { + config.save(loadFile("ItemData\\WidowSword.yml")); + } catch (IOException e) { + e.printStackTrace(); + } + int skeletondmg = config.getInt("skeleton"); + int zombiedmg = config.getInt("zombie"); + int spiderdmg = config.getInt("spider"); + ItemStack widow_sword = new ItemStack(Material.STICK); + widow_sword.addUnsafeEnchantment(Enchantment.DAMAGE_ALL, 20); + widow_sword.addUnsafeEnchantment(Enchantment.LOOT_BONUS_MOBS, 10); + widow_sword.addUnsafeEnchantment(Enchantment.FIRE_ASPECT,2); + widow_sword.addUnsafeEnchantment(Enchantment.LUCK,5); + widow_sword.addUnsafeEnchantment(ThunderBolt,5); + ItemMeta wsMeta = widow_sword.getItemMeta(); + wsMeta.setDisplayName(net.md_5.bungee.api.ChatColor.of("#ff23ff") + "Fabled Widow Sword"); + wsMeta.setUnbreakable(true); + ArrayList<String> lore = new ArrayList<>(); + lore.add(ChatColor.GRAY + "Damage: " + ChatColor.RED + "+100"); + lore.add(""); + ArrayList<String> enchants = new ArrayList<>(); + for (Enchantment enchant : widow_sword.getEnchantments().keySet()) { + List<String> splitted = Arrays.asList(Arrays.asList(enchant.getKey().toString().split(":")).get(1).split("_")); + StringBuilder name = new StringBuilder(); + for (String i : splitted) { + String s = i.substring(0, 1).toUpperCase() + i.substring(1); + if(splitted.size() > 1) { + if(i.equals(splitted.get(splitted.size() - 1))) { + name.append(s); + } else { + name.append(s); + name.append(" "); + } + } else name.append(s); + + } + enchants.add(name + " " + widow_sword.getEnchantmentLevel(enchant)); + } + lore.add(ChatColor.BLUE + String.join(", ", enchants)); + lore.add(""); + lore.add(ChatColor.GOLD + "Item Ability: Damage Multiplier"); + lore.add(ChatColor.GRAY + "Damage dealt to mobs will be multiplied"); + lore.add(ChatColor.RED + "Zombie +" + zombiedmg + "%"); + lore.add(ChatColor.RED + "Skeleton +" + skeletondmg + "%"); + lore.add(ChatColor.RED + "Spider +" + spiderdmg + "%"); + lore.add(""); + lore.add(net.md_5.bungee.api.ChatColor.of("#ff23ff").toString() + ChatColor.BOLD + "MYTHIC"); + wsMeta.setLore(lore); + AttributeModifier dmg = new AttributeModifier(UUID.randomUUID(), "generic.attackDamage", 100, AttributeModifier.Operation.ADD_NUMBER, EquipmentSlot.HAND); + wsMeta.addAttributeModifier(Attribute.GENERIC_ATTACK_DAMAGE, dmg); + wsMeta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES, ItemFlag.HIDE_UNBREAKABLE, ItemFlag.HIDE_ENCHANTS); + widow_sword.setItemMeta(wsMeta); + WidowSword = widow_sword; + ShapedRecipe wither_sword_recipe = new ShapedRecipe(NamespacedKey.minecraft("widow_sword"), widow_sword); + wither_sword_recipe.shape(" A ", " A "," B "); + wither_sword_recipe.setIngredient('A', Material.IRON_INGOT); + wither_sword_recipe.setIngredient('B', Material.STICK); + Bukkit.addRecipe(wither_sword_recipe); + } + private static void setTerminator() { + HashMap<String, List<String>> d = new HashMap<>(); + List<String> pr = new ArrayList<>(); + pr.add(ChatColor.GRAY + "Damage: " + ChatColor.RED + "+50"); + d.put("properties", pr); + List<String> ia = new ArrayList<>(); + ia.add(ChatColor.GOLD + "Item Ability: Triple Shot"); + ia.add(ChatColor.GRAY + "Shoot three arrow at one time"); + d.put("ability", ia); + HashMap<Enchantment, Integer> e = new HashMap<>(); + e.put(Enchantment.DAMAGE_ALL, 20); + e.put(Enchantment.LOOT_BONUS_MOBS, 10); + e.put(ThunderBolt,5); + Terminator = main.getCustomItemManager().register(Material.BOW, "Terminator",Rarity.MYTHIC, d, e,50.0,0.05); + + } + private static void setGrenade() { + ItemStack egg = new ItemStack(Material.EGG); + ItemMeta eggdata = egg.getItemMeta(); + eggdata.setDisplayName(net.md_5.bungee.api.ChatColor.of("#ff23ff") + "Frag Grenade"); + eggdata.setUnbreakable(true); + ArrayList<String> lore = new ArrayList<>(); + lore.add(ChatColor.GOLD + "Item Ability: Throw a TNT "); + lore.add(ChatColor.GRAY + "Shoot TNT with 25x more power!"); + lore.add(""); + lore.add(net.md_5.bungee.api.ChatColor.of("#ff23ff").toString() + ChatColor.BOLD + "MYTHIC"); + eggdata.setLore(lore); + eggdata.addItemFlags(ItemFlag.HIDE_ATTRIBUTES, ItemFlag.HIDE_UNBREAKABLE, ItemFlag.HIDE_ENCHANTS); + egg.setItemMeta(eggdata); + Grenade = egg; + } + private static void setSnowGun() { + ItemStack hoe = new ItemStack(Material.DIAMOND_HOE); + hoe.addUnsafeEnchantment(EnchantmentManager.ThunderBolt, 5); + hoe.addUnsafeEnchantment(Enchantment.DAMAGE_ALL, 20); + ItemMeta hoedata = hoe.getItemMeta(); + hoedata.setDisplayName(net.md_5.bungee.api.ChatColor.of("#ff23ff") + "SnowGun"); + hoedata.setUnbreakable(true); + ArrayList<String> lore = new ArrayList<>(); + lore.add(ChatColor.GOLD + "Item Ability: Shoot Snowball"); + lore.add(ChatColor.GRAY + "Shoot snowball!"); + lore.add(""); + lore.add(net.md_5.bungee.api.ChatColor.of("#ff23ff").toString() + ChatColor.BOLD + "MYTHIC"); + hoedata.setLore(lore); + hoedata.addItemFlags(ItemFlag.HIDE_ATTRIBUTES, ItemFlag.HIDE_UNBREAKABLE, ItemFlag.HIDE_ENCHANTS); + hoe.setItemMeta(hoedata); + + SnowGun = hoe; + } + private static void setExplosiveBow() { + ItemStack i = new ItemStack(Material.BOW); + i.addUnsafeEnchantment(Enchantment.DAMAGE_ALL, 20); + i.addUnsafeEnchantment(Enchantment.LOOT_BONUS_MOBS, 10); + i.addUnsafeEnchantment(ThunderBolt,5); + ItemMeta im = i.getItemMeta(); + im.setDisplayName(ChatColor.GOLD + "Explosive Bow"); + im.setUnbreakable(true); + ArrayList<String> lore = new ArrayList<>(); + lore.add(""); + lore.add(ChatColor.GOLD + "Item Ability: Explosive Shot"); + lore.add(ChatColor.GRAY + "Shoot explosive arrows"); + lore.add(""); + lore.add(ChatColor.GOLD.toString() + ChatColor.BOLD + "LEGENDARY"); + im.setLore(lore); + im.addItemFlags(ItemFlag.HIDE_ATTRIBUTES, ItemFlag.HIDE_UNBREAKABLE, ItemFlag.HIDE_ENCHANTS); + i.setItemMeta(im); + ExplosiveBow = i; + } + private static void setAOTV() { + ItemStack i = new ItemStack(Material.DIAMOND_SWORD, 1); + ItemMeta im = i.getItemMeta(); + im.setDisplayName(ChatColor.DARK_PURPLE + "Aspect of The Void"); + ArrayList<String> lore = new ArrayList<>(); + lore.add(ChatColor.GRAY + "Damage: " + ChatColor.RED + "+100"); + lore.add(""); + lore.add(ChatColor.GOLD + "Item Ability: Instant Teleport"); + lore.add(ChatColor.GRAY + "Teleport 12 blocks ahead"); + lore.add(""); + lore.add(ChatColor.DARK_PURPLE.toString() + ChatColor.BOLD + "EPIC"); + im.setLore(lore); + im.setUnbreakable(true); + AttributeModifier dmg = new AttributeModifier(UUID.randomUUID(), "generic.attackDamage", 25, AttributeModifier.Operation.ADD_NUMBER, EquipmentSlot.HAND); + AttributeModifier speed = new AttributeModifier(UUID.randomUUID(), "generic.movementSpeed", 0.2, AttributeModifier.Operation.ADD_NUMBER, EquipmentSlot.HAND); + im.addAttributeModifier(Attribute.GENERIC_ATTACK_DAMAGE, dmg); + im.addAttributeModifier(Attribute.GENERIC_MOVEMENT_SPEED, speed); + im.addItemFlags(ItemFlag.HIDE_ATTRIBUTES, ItemFlag.HIDE_UNBREAKABLE, ItemFlag.HIDE_ENCHANTS); + i.setItemMeta(im); + AOTV = i; + } + private static void setGrapplingHook() { + ItemStack i = new ItemStack(Material.FISHING_ROD, 1); + ItemMeta im = i.getItemMeta(); + im.setDisplayName(ChatColor.WHITE + "Grappling Hook"); + ArrayList<String> lore = new ArrayList<>(); + lore.add(ChatColor.GRAY + "I believe I can fly..."); + lore.add(""); + lore.add(ChatColor.WHITE.toString() + ChatColor.BOLD + "COMMON"); + im.setLore(lore); + im.setUnbreakable(true); + im.addItemFlags(ItemFlag.HIDE_ATTRIBUTES, ItemFlag.HIDE_UNBREAKABLE, ItemFlag.HIDE_ENCHANTS); + i.setItemMeta(im); + GrapplingHook = i; + } +} diff --git a/src/main/java/com/night/nullvalkyrie/Items/CustomItemManager.java b/src/main/java/com/night/nullvalkyrie/Items/CustomItemManager.java @@ -1,267 +1,64 @@ package com.night.nullvalkyrie.Items; -import com.night.nullvalkyrie.Enchantments.EnchantmentHandler; -import com.night.nullvalkyrie.Main; -import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; -import org.bukkit.NamespacedKey; import org.bukkit.attribute.Attribute; import org.bukkit.attribute.AttributeModifier; -import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.ShapedRecipe; import org.bukkit.inventory.meta.ItemMeta; -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.UUID; - -import static com.night.nullvalkyrie.Enchantments.EnchantmentHandler.ThunderBolt; +import java.util.*; public class CustomItemManager { - private static Main main; - public CustomItemManager(Main main) { - this.main = main; - if(!main.getDataFolder().exists()) { - main.getDataFolder().mkdir(); - } - - } - public static ItemStack WidowSword; - public static ItemStack Terminator; - public static ItemStack Grenade; - public static ItemStack SnowGun; - public static ItemStack ExplosiveBow; - public static ItemStack AOTV; - public static ItemStack GrapplingHook; - public static void register() { - createItemDataDirectory("ItemData"); - setWidowSword(); - setTerminator(); - setGrenade(); - setSnowGun(); - setExplosiveBow(); - setAOTV(); - setGrapplingHook(); - } - - public static YamlConfiguration loadConfig(String path) { - File f = new File(main.getDataFolder(), path); - if(!f.exists()) { - try { - f.createNewFile(); - } catch (IOException e) { - e.printStackTrace(); - } - - } - return YamlConfiguration.loadConfiguration(f); - } - public static File loadFile(String path) { - File f = new File(main.getDataFolder(), path); - if(!f.exists()) { - try { - f.createNewFile(); - } catch (IOException e) { - e.printStackTrace(); - } - - } - return f; - } - private static void createItemDataDirectory(String path) { - File f = new File(main.getDataFolder(), path); - if(!f.exists()) { - try { - if(!f.mkdir()) { - try { - f.mkdir(); - } catch (SecurityException e) { - e.printStackTrace(); - } - } - } catch (SecurityException e) { - e.printStackTrace(); - } - + public ItemStack register(Material item, String name, Rarity rarity, HashMap<String, List<String>> lore, HashMap<Enchantment, Integer> enchantment, double damage, double movespeed) { + ItemStack i = new ItemStack(item); + for(Enchantment e : enchantment.keySet()) { + i.addUnsafeEnchantment(e, enchantment.get(e)); } - } - private static void setWidowSword() { - YamlConfiguration config = loadConfig("ItemData\\WidowSword.yml"); - config.set("zombie", 100); - config.set("skeleton", 100); - config.set("spider", 100); - try { - config.save(loadFile("ItemData\\WidowSword.yml")); - } catch (IOException e) { - e.printStackTrace(); + ItemMeta im = i.getItemMeta(); + im.setDisplayName(rarity.getColor() + name); + im.setUnbreakable(true); + ArrayList<String> l = new ArrayList<>(); + for(String ll : lore.get("properties")) { + l.add(ll); } - int skeletondmg = config.getInt("skeleton"); - int zombiedmg = config.getInt("zombie"); - int spiderdmg = config.getInt("spider"); - ItemStack widow_sword = new ItemStack(Material.STICK); - widow_sword.addUnsafeEnchantment(Enchantment.DAMAGE_ALL, 20); - widow_sword.addUnsafeEnchantment(Enchantment.LOOT_BONUS_MOBS, 10); - widow_sword.addUnsafeEnchantment(Enchantment.FIRE_ASPECT,2); - widow_sword.addUnsafeEnchantment(Enchantment.LUCK,5); - widow_sword.addUnsafeEnchantment(ThunderBolt,5); - ItemMeta wsMeta = widow_sword.getItemMeta(); - wsMeta.setDisplayName(net.md_5.bungee.api.ChatColor.of("#ff23ff") + "Fabled Widow Sword"); - wsMeta.setUnbreakable(true); - ArrayList<String> lore = new ArrayList<>(); - lore.add(ChatColor.GRAY + "Damage: " + ChatColor.RED + "+100"); - lore.add(""); - ArrayList<String> enchants = new ArrayList<>(); - for (Enchantment enchant : widow_sword.getEnchantments().keySet()) { - List<String> splitted = Arrays.asList(Arrays.asList(enchant.getKey().toString().split(":")).get(1).split("_")); - StringBuilder name = new StringBuilder(); - for (String i : splitted) { - String s = i.substring(0, 1).toUpperCase() + i.substring(1); + l.add(""); + ArrayList<String> e = new ArrayList<>(); + for (Enchantment ee : i.getEnchantments().keySet()) { + List<String> splitted = Arrays.asList(Arrays.asList(ee.getKey().toString().split(":")).get(1).split("_")); + StringBuilder n = new StringBuilder(); + for (String ii : splitted) { + String s = ii.substring(0, 1).toUpperCase() + ii.substring(1); if(splitted.size() > 1) { - if(i.equals(splitted.get(splitted.size() - 1))) { - name.append(s); + if(ii.equals(splitted.get(splitted.size() - 1))) { + n.append(s); } else { - name.append(s); - name.append(" "); + n.append(s); + n.append(" "); } - } else name.append(s); + } else n.append(s); } - enchants.add(name + " " + widow_sword.getEnchantmentLevel(enchant)); + e.add(n + " " + i.getEnchantmentLevel(ee)); } - lore.add(ChatColor.BLUE + String.join(", ", enchants)); - lore.add(""); - lore.add(ChatColor.GOLD + "Item Ability: Damage Multiplier"); - lore.add(ChatColor.GRAY + "Damage dealt to mobs will be multiplied"); - lore.add(ChatColor.RED + "Zombie +" + zombiedmg + "%"); - lore.add(ChatColor.RED + "Skeleton +" + skeletondmg + "%"); - lore.add(ChatColor.RED + "Spider +" + spiderdmg + "%"); - lore.add(""); - lore.add(net.md_5.bungee.api.ChatColor.of("#ff23ff").toString() + ChatColor.BOLD + "MYTHIC"); - wsMeta.setLore(lore); - AttributeModifier dmg = new AttributeModifier(UUID.randomUUID(), "generic.attackDamage", 100, AttributeModifier.Operation.ADD_NUMBER, EquipmentSlot.HAND); - wsMeta.addAttributeModifier(Attribute.GENERIC_ATTACK_DAMAGE, dmg); - wsMeta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES, ItemFlag.HIDE_UNBREAKABLE, ItemFlag.HIDE_ENCHANTS); - widow_sword.setItemMeta(wsMeta); - WidowSword = widow_sword; - ShapedRecipe wither_sword_recipe = new ShapedRecipe(NamespacedKey.minecraft("widow_sword"), widow_sword); - wither_sword_recipe.shape(" A ", " A "," B "); - wither_sword_recipe.setIngredient('A', Material.IRON_INGOT); - wither_sword_recipe.setIngredient('B', Material.STICK); - Bukkit.addRecipe(wither_sword_recipe); - } - private static void setTerminator() { - ItemStack terminator = new ItemStack(Material.BOW); - terminator.addUnsafeEnchantment(Enchantment.DAMAGE_ALL, 20); - terminator.addUnsafeEnchantment(Enchantment.LOOT_BONUS_MOBS, 10); - terminator.addUnsafeEnchantment(ThunderBolt,5); - ItemMeta terminatorMeta = terminator.getItemMeta(); - terminatorMeta.setDisplayName(net.md_5.bungee.api.ChatColor.of("#ff23ff") + "Terminator"); - terminatorMeta.setUnbreakable(true); - ArrayList<String> lore = new ArrayList<>(); - lore.add(ChatColor.GRAY + "Damage: " + ChatColor.RED + "+50"); - lore.add(""); - lore.add(ChatColor.GOLD + "Item Ability: Triple Shot"); - lore.add(ChatColor.GRAY + "Shoot three arrow at one time"); - lore.add(""); - lore.add(net.md_5.bungee.api.ChatColor.of("#ff23ff").toString() + ChatColor.BOLD + "MYTHIC"); - terminatorMeta.setLore(lore); - terminatorMeta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES, ItemFlag.HIDE_UNBREAKABLE, ItemFlag.HIDE_ENCHANTS); - terminator.setItemMeta(terminatorMeta); - Terminator = terminator; - } - private static void setGrenade() { - ItemStack egg = new ItemStack(Material.EGG); - ItemMeta eggdata = egg.getItemMeta(); - eggdata.setDisplayName(net.md_5.bungee.api.ChatColor.of("#ff23ff") + "Frag Grenade"); - eggdata.setUnbreakable(true); - ArrayList<String> lore = new ArrayList<>(); - lore.add(ChatColor.GOLD + "Item Ability: Throw a TNT "); - lore.add(ChatColor.GRAY + "Shoot TNT with 25x more power!"); - lore.add(""); - lore.add(net.md_5.bungee.api.ChatColor.of("#ff23ff").toString() + ChatColor.BOLD + "MYTHIC"); - eggdata.setLore(lore); - eggdata.addItemFlags(ItemFlag.HIDE_ATTRIBUTES, ItemFlag.HIDE_UNBREAKABLE, ItemFlag.HIDE_ENCHANTS); - egg.setItemMeta(eggdata); - Grenade = egg; - } - private static void setSnowGun() { - ItemStack hoe = new ItemStack(Material.DIAMOND_HOE); - hoe.addUnsafeEnchantment(EnchantmentHandler.ThunderBolt, 5); - hoe.addUnsafeEnchantment(Enchantment.DAMAGE_ALL, 20); - ItemMeta hoedata = hoe.getItemMeta(); - hoedata.setDisplayName(net.md_5.bungee.api.ChatColor.of("#ff23ff") + "SnowGun"); - hoedata.setUnbreakable(true); - ArrayList<String> lore = new ArrayList<>(); - lore.add(ChatColor.GOLD + "Item Ability: Shoot Snowball"); - lore.add(ChatColor.GRAY + "Shoot snowball!"); - lore.add(""); - lore.add(net.md_5.bungee.api.ChatColor.of("#ff23ff").toString() + ChatColor.BOLD + "MYTHIC"); - hoedata.setLore(lore); - hoedata.addItemFlags(ItemFlag.HIDE_ATTRIBUTES, ItemFlag.HIDE_UNBREAKABLE, ItemFlag.HIDE_ENCHANTS); - hoe.setItemMeta(hoedata); - - SnowGun = hoe; - } - private static void setExplosiveBow() { - ItemStack i = new ItemStack(Material.BOW); - i.addUnsafeEnchantment(Enchantment.DAMAGE_ALL, 20); - i.addUnsafeEnchantment(Enchantment.LOOT_BONUS_MOBS, 10); - i.addUnsafeEnchantment(ThunderBolt,5); - ItemMeta im = i.getItemMeta(); - im.setDisplayName(ChatColor.GOLD + "Explosive Bow"); - im.setUnbreakable(true); - ArrayList<String> lore = new ArrayList<>(); - lore.add(""); - lore.add(ChatColor.GOLD + "Item Ability: Explosive Shot"); - lore.add(ChatColor.GRAY + "Shoot explosive arrows"); - lore.add(""); - lore.add(ChatColor.GOLD.toString() + ChatColor.BOLD + "LEGENDARY"); - im.setLore(lore); - im.addItemFlags(ItemFlag.HIDE_ATTRIBUTES, ItemFlag.HIDE_UNBREAKABLE, ItemFlag.HIDE_ENCHANTS); - i.setItemMeta(im); - ExplosiveBow = i; - } - private static void setAOTV() { - ItemStack i = new ItemStack(Material.DIAMOND_SWORD, 1); - ItemMeta im = i.getItemMeta(); - im.setDisplayName(ChatColor.DARK_PURPLE + "Aspect of The Void"); - ArrayList<String> lore = new ArrayList<>(); - lore.add(ChatColor.GRAY + "Damage: " + ChatColor.RED + "+100"); - lore.add(""); - lore.add(ChatColor.GOLD + "Item Ability: Instant Teleport"); - lore.add(ChatColor.GRAY + "Teleport 12 blocks ahead"); - lore.add(""); - lore.add(ChatColor.DARK_PURPLE.toString() + ChatColor.BOLD + "EPIC"); - im.setLore(lore); - im.setUnbreakable(true); - AttributeModifier dmg = new AttributeModifier(UUID.randomUUID(), "generic.attackDamage", 25, AttributeModifier.Operation.ADD_NUMBER, EquipmentSlot.HAND); - AttributeModifier speed = new AttributeModifier(UUID.randomUUID(), "generic.movementSpeed", 0.2, AttributeModifier.Operation.ADD_NUMBER, EquipmentSlot.HAND); - im.addAttributeModifier(Attribute.GENERIC_ATTACK_DAMAGE, dmg); - im.addAttributeModifier(Attribute.GENERIC_MOVEMENT_SPEED, speed); - im.addItemFlags(ItemFlag.HIDE_ATTRIBUTES, ItemFlag.HIDE_UNBREAKABLE, ItemFlag.HIDE_ENCHANTS); - i.setItemMeta(im); - AOTV = i; - } - private static void setGrapplingHook() { - ItemStack i = new ItemStack(Material.FISHING_ROD, 1); - ItemMeta im = i.getItemMeta(); - im.setDisplayName(ChatColor.WHITE + "Grappling Hook"); - ArrayList<String> lore = new ArrayList<>(); - lore.add(ChatColor.GRAY + "I believe I can fly..."); - lore.add(""); - lore.add(ChatColor.WHITE.toString() + ChatColor.BOLD + "COMMON"); - im.setLore(lore); - im.setUnbreakable(true); + l.add(ChatColor.BLUE + String.join(", ", e)); + l.add(""); + for(String ll : lore.get("ability")) { + l.add(ll); + } + l.add(""); + l.add(rarity.getDisplay()); + im.setLore(l); + AttributeModifier d = new AttributeModifier(UUID.randomUUID(), "generic.attackDamage", damage, AttributeModifier.Operation.ADD_NUMBER, EquipmentSlot.HAND); + im.addAttributeModifier(Attribute.GENERIC_ATTACK_DAMAGE, d); + AttributeModifier s = new AttributeModifier(UUID.randomUUID(), "generic.movementSpeed", movespeed, AttributeModifier.Operation.ADD_NUMBER, EquipmentSlot.HAND); + im.addAttributeModifier(Attribute.GENERIC_MOVEMENT_SPEED, s); im.addItemFlags(ItemFlag.HIDE_ATTRIBUTES, ItemFlag.HIDE_UNBREAKABLE, ItemFlag.HIDE_ENCHANTS); i.setItemMeta(im); - GrapplingHook = i; + + return i; } } diff --git a/src/main/java/com/night/nullvalkyrie/Items/Rarity.java b/src/main/java/com/night/nullvalkyrie/Items/Rarity.java @@ -0,0 +1,25 @@ +package com.night.nullvalkyrie.Items; + +import org.bukkit.ChatColor; +public enum Rarity { + COMMON(ChatColor.WHITE.toString() + ChatColor.BOLD + "COMMON", ChatColor.WHITE.toString()), + UNCOMMON(net.md_5.bungee.api.ChatColor.of("#31ff09").toString() + ChatColor.BOLD + "UNCOMMON", net.md_5.bungee.api.ChatColor.of("#31ff09").toString()), + RARE(net.md_5.bungee.api.ChatColor.of("#2f57ae").toString() + ChatColor.BOLD + "RARE", net.md_5.bungee.api.ChatColor.of("#2f57ae").toString()), + EPIC(net.md_5.bungee.api.ChatColor.of("#b201b2").toString() + ChatColor.BOLD + "EPIC", net.md_5.bungee.api.ChatColor.of("#b201b2").toString()), + LEGENDARY(net.md_5.bungee.api.ChatColor.of("#ffa21b").toString() + ChatColor.BOLD + "LEGENDARY", net.md_5.bungee.api.ChatColor.of("#ffa21b").toString()), + MYTHIC(net.md_5.bungee.api.ChatColor.of("#ff23ff").toString() + ChatColor.BOLD + "MYTHIC", net.md_5.bungee.api.ChatColor.of("#ff23ff").toString()), + ULTRA(ChatColor.BLACK.toString() + ChatColor.BOLD + "ULTRA", ChatColor.BLACK.toString()), + GRAND(net.md_5.bungee.api.ChatColor.of("#ffc509").toString() + ChatColor.BOLD + "GRAND", net.md_5.bungee.api.ChatColor.of("#ffc509").toString()); + private String display; + private String color; + Rarity(String display, String color) { + this.display = display; + this.color = color; + } + public String getDisplay() { + return display; + } + public String getColor() { + return color; + } +} diff --git a/src/main/java/com/night/nullvalkyrie/Main.java b/src/main/java/com/night/nullvalkyrie/Main.java @@ -1,8 +1,9 @@ package com.night.nullvalkyrie; import com.night.nullvalkyrie.Chests.MenuListener; -import com.night.nullvalkyrie.Enchantments.EnchantmentHandler; +import com.night.nullvalkyrie.Enchantments.EnchantmentManager; import com.night.nullvalkyrie.Events.CustomItemEvents; +import com.night.nullvalkyrie.Items.CustomItem; import com.night.nullvalkyrie.Items.CustomItemManager; import com.night.nullvalkyrie.Rank.*; import com.night.nullvalkyrie.Util.Util; @@ -13,12 +14,8 @@ import org.bukkit.*; import org.bukkit.boss.BarColor; import org.bukkit.boss.BarStyle; import org.bukkit.boss.BossBar; -import org.bukkit.entity.*; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; -import org.bukkit.event.entity.CreatureSpawnEvent; -import org.bukkit.event.entity.ProjectileHitEvent; -import org.bukkit.event.entity.ProjectileLaunchEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.server.ServerListPingEvent; import org.bukkit.plugin.java.JavaPlugin; @@ -31,17 +28,42 @@ public final class Main extends JavaPlugin implements Listener { private NameTagManager nameTagManager; private SideBarManager sideBarManager; private BelowNameManager belowNameManager; + private CustomItemManager customItemManager; + private CustomItem customItems; public RankManager getRankManager() { return rankManager; } - public NameTagManager getNameTagManager() { return nameTagManager; } - public SideBarManager getSideBarManager() { return sideBarManager; } - public BelowNameManager getBelowNameManager() { return belowNameManager; } + + public NameTagManager getNameTagManager() { + return nameTagManager; + } + + public SideBarManager getSideBarManager() { + return sideBarManager; + } + + public BelowNameManager getBelowNameManager() { + return belowNameManager; + } + public CustomItemManager getCustomItemManager() { + return customItemManager; + } + @Override public void onEnable() { - new VanishCommand();new TestCommand();new AnvilCommand();new ArmorCommand();new MenuCommand();new RankCommand(this); - new MessageCommand();new HologramCommand();new CraftCommand();new EnchantingCommand();new SpawnCommand();new WeaponCommand(); + new VanishCommand(); + new TestCommand(); + new AnvilCommand(); + new ArmorCommand(); + new MenuCommand(); + new RankCommand(this); + new MessageCommand(); + new HologramCommand(); + new CraftCommand(); + new EnchantingCommand(); + new SpawnCommand(); + new WeaponCommand(); bossbar = Bukkit.createBossBar(ChatColor.GOLD + "Kuudra", BarColor.RED, BarStyle.SEGMENTED_12); Bukkit.getPluginManager().registerEvents(this, this); Bukkit.getPluginManager().registerEvents(new MenuListener(), this); @@ -51,15 +73,16 @@ public final class Main extends JavaPlugin implements Listener { rankManager = new RankManager(this); sideBarManager = new SideBarManager(this); belowNameManager = new BelowNameManager(); - new CustomItemManager(this); - CustomItemManager.register(); - EnchantmentHandler.register(); + customItemManager = new CustomItemManager(); + customItems = new CustomItem(this); + customItems.register(); + EnchantmentManager.register(); } @EventHandler public void onJoin(PlayerJoinEvent e) { - e.getPlayer().sendTitle(ChatColor.RED +"Welcome to Matrix!", ChatColor.GREEN + "LOL", 20, 100, 20); + e.getPlayer().sendTitle(ChatColor.RED + "Welcome to Matrix!", ChatColor.GREEN + "LOL", 20, 100, 20); e.getPlayer().spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText("ยง1NOT ENOUGH MANNER")); bossbar.addPlayer(e.getPlayer()); @@ -70,7 +93,7 @@ public final class Main extends JavaPlugin implements Listener { public void onPing(ServerListPingEvent e) { e.setMaxPlayers(8964); String s = Util.centerText("Matrix", 45); - String s2 = Util.centerText("Support 1.18 & 1.8.9",45); + String s2 = Util.centerText("Support 1.18 & 1.8.9", 45); e.setMotd(ChatColor.AQUA.toString() + ChatColor.BOLD + s + "\n" + ChatColor.GOLD + ChatColor.BOLD + s2); try { e.setServerIcon(Bukkit.loadServerIcon(new File("nuke.png"))); diff --git a/src/main/java/com/night/nullvalkyrie/commands/WeaponCommand.java b/src/main/java/com/night/nullvalkyrie/commands/WeaponCommand.java @@ -1,6 +1,6 @@ package com.night.nullvalkyrie.commands; -import com.night.nullvalkyrie.Items.CustomItemManager; +import com.night.nullvalkyrie.Items.CustomItem; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.util.StringUtil; @@ -29,19 +29,19 @@ public class WeaponCommand extends Command { String name = String.join(" ", arg); Player player = (Player) sender; if(name.equalsIgnoreCase("Snow Gun")) { - player.getInventory().addItem(CustomItemManager.SnowGun); + player.getInventory().addItem(CustomItem.SnowGun); } else if(name.equalsIgnoreCase("Grenade")) { - player.getInventory().addItem(CustomItemManager.Grenade); + player.getInventory().addItem(CustomItem.Grenade); } else if(name.equalsIgnoreCase("Widow Sword")) { - player.getInventory().addItem(CustomItemManager.WidowSword); + player.getInventory().addItem(CustomItem.WidowSword); } else if(name.equalsIgnoreCase("Terminator")) { - player.getInventory().addItem(CustomItemManager.Terminator); + player.getInventory().addItem(CustomItem.Terminator); } else if(name.equalsIgnoreCase("Explosive Bow")) { - player.getInventory().addItem(CustomItemManager.ExplosiveBow); + player.getInventory().addItem(CustomItem.ExplosiveBow); } else if(name.equalsIgnoreCase("AOTV")) { - player.getInventory().addItem(CustomItemManager.AOTV); + player.getInventory().addItem(CustomItem.AOTV); } else if(name.equalsIgnoreCase("Grappling Hook")) { - player.getInventory().addItem(CustomItemManager.GrapplingHook); + player.getInventory().addItem(CustomItem.GrapplingHook); } }