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 6c2f7216a3c8da452a8d856675a2098079b8b0af
parent 30ef01bb521edfc1dd9925de56cb5f6e5a88b29b
Author: night0721 <[email protected]>
Date:   Sun, 10 Jul 2022 22:33:18 +0100

custom enchantment

Diffstat:
Asrc/main/java/com/night/nullvalkyrie/Enchantments/CustomEnchantment.java | 56++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/main/java/com/night/nullvalkyrie/Enchantments/EnchantmentHandler.java | 38++++++++++++++++++++++++++++++++++++++
Msrc/main/java/com/night/nullvalkyrie/Main.java | 47+++++++++++++++++++++--------------------------
Msrc/main/java/com/night/nullvalkyrie/commands/Command.java | 1-
Msrc/main/java/com/night/nullvalkyrie/commands/EnchantingCommand.java | 2+-
Msrc/main/java/com/night/nullvalkyrie/commands/SpawnCommand.java | 1-
Msrc/main/java/com/night/nullvalkyrie/commands/TestCommand.java | 1+
Dsrc/main/java/com/night/nullvalkyrie/commands/VanishCommand.java | 46----------------------------------------------
Msrc/main/java/com/night/nullvalkyrie/commands/WeaponCommand.java | 6+++++-
9 files changed, 122 insertions(+), 76 deletions(-)

diff --git a/src/main/java/com/night/nullvalkyrie/Enchantments/CustomEnchantment.java b/src/main/java/com/night/nullvalkyrie/Enchantments/CustomEnchantment.java @@ -0,0 +1,56 @@ +package com.night.nullvalkyrie.Enchantments; + +import org.bukkit.NamespacedKey; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.enchantments.EnchantmentTarget; +import org.bukkit.inventory.ItemStack; + +public class CustomEnchantment extends Enchantment { + private final String name; + private final int maxlvl; + public CustomEnchantment(String namespace, String name, int lvl) { + super(NamespacedKey.minecraft(namespace)); + this.name = name; + this.maxlvl = lvl; + } + + @Override + public String getName() { + return name; + } + + @Override + public int getMaxLevel() { + return maxlvl; + } + + @Override + public int getStartLevel() { + return 1; + } + + @Override + public EnchantmentTarget getItemTarget() { + return null; + } + + @Override + public boolean isTreasure() { + return false; + } + + @Override + public boolean isCursed() { + return false; + } + + @Override + public boolean conflictsWith(Enchantment other) { + return false; + } + + @Override + public boolean canEnchantItem(ItemStack item) { + return true; + } +} diff --git a/src/main/java/com/night/nullvalkyrie/Enchantments/EnchantmentHandler.java b/src/main/java/com/night/nullvalkyrie/Enchantments/EnchantmentHandler.java @@ -0,0 +1,38 @@ +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("enc_thunderbolt", "Thunderbolt", 5); + public static void register() { + boolean registered = Arrays.stream(Enchantment.values()).collect(Collectors.toList()).contains(ThunderBolt); + if(!registered) { + registerEnchantment(ThunderBolt); + } + + } + 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/Main.java b/src/main/java/com/night/nullvalkyrie/Main.java @@ -1,28 +1,25 @@ package com.night.nullvalkyrie; import com.night.nullvalkyrie.Chests.MenuListener; +import com.night.nullvalkyrie.Enchantments.EnchantmentHandler; import com.night.nullvalkyrie.RankSys.*; import com.night.nullvalkyrie.commands.*; import net.md_5.bungee.api.ChatMessageType; import net.md_5.bungee.api.chat.TextComponent; import org.bukkit.*; -import org.bukkit.block.Block; -import org.bukkit.block.data.BlockData; import org.bukkit.boss.BarColor; import org.bukkit.boss.BarStyle; import org.bukkit.boss.BossBar; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.*; -import org.bukkit.event.Event; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; -import org.bukkit.event.block.Action; import org.bukkit.event.block.BlockBreakEvent; -import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.ProjectileHitEvent; import org.bukkit.event.entity.ProjectileLaunchEvent; +import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.server.ServerListPingEvent; @@ -30,11 +27,8 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ShapedRecipe; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.plugin.java.JavaPlugin; -import org.bukkit.util.Vector; import java.io.File; -import java.util.HashMap; -import java.util.UUID; public final class Main extends JavaPlugin implements Listener { private BossBar bossbar; @@ -51,8 +45,9 @@ public final class Main extends JavaPlugin implements Listener { public BelowNameManager getBelowNameManager() { return belowNameManager; } @Override public void onEnable() { - new VanishCommand();new TestCommand();new WeaponCommand();new AnvilCommand();new ArmorCommand();new MenuCommand();new RankCommand(this); + 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, @@ -68,8 +63,6 @@ public final class Main extends JavaPlugin implements Listener { 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.LUCK, 10); - widow_sword.addUnsafeEnchantment(Enchantment.DURABILITY, 10); ItemMeta wsMeta = widow_sword.getItemMeta(); wsMeta.setDisplayName(net.md_5.bungee.api.ChatColor.of("#ff23ff") + "Fabled Widow Sword"); wsMeta.setUnbreakable(true); @@ -79,6 +72,7 @@ public final class Main extends JavaPlugin implements Listener { wither_sword_recipe.setIngredient('A', Material.IRON_INGOT); wither_sword_recipe.setIngredient('B', Material.STICK); Bukkit.addRecipe(wither_sword_recipe); + EnchantmentHandler.register(); } @EventHandler public void Projectile(ProjectileLaunchEvent e) { @@ -109,7 +103,7 @@ public final class Main extends JavaPlugin implements Listener { @EventHandler public void onJoin(PlayerJoinEvent e) { - e.getPlayer().sendTitle(ChatColor.RED +"Welcome to Apache!", 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()); @@ -131,9 +125,9 @@ public final class Main extends JavaPlugin implements Listener { @EventHandler public void onPing(ServerListPingEvent e) { e.setMaxPlayers(8964); - String s = centerText("Apache\n", 45); - String s2 = centerText("Support 1.18 & 1.8.9",25); - e.setMotd(ChatColor.AQUA.toString() + ChatColor.BOLD + s + ChatColor.GOLD + ChatColor.BOLD + s2); + String s = centerText("Matrix", 45); + String s2 = 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"))); } catch (Exception ee) { @@ -144,18 +138,18 @@ public final class Main extends JavaPlugin implements Listener { @EventHandler public void onEntityDamageByEntity(EntityDamageByEntityEvent e) { if (e.getDamager().getType() == EntityType.SNOWBALL) { - Snowball sb = (Snowball) e.getDamager(); - Player pl = (Player) sb.getShooter(); - if(pl.getInventory().getItemInMainHand().getItemMeta() != null) { - String name = pl.getInventory().getItemInMainHand().getItemMeta().getDisplayName(); - if (name.equalsIgnoreCase(net.md_5.bungee.api.ChatColor.of("#ff23ff") + "SnowGun")) { - e.setDamage(10000); - } else if (name.equalsIgnoreCase("AA-12")) { - e.setDamage(7); - } else { - e.setDamage(0); - } + Snowball sb = (Snowball) e.getDamager(); + Player pl = (Player) sb.getShooter(); + if(pl.getInventory().getItemInMainHand().getItemMeta() != null) { + String name = pl.getInventory().getItemInMainHand().getItemMeta().getDisplayName(); + if (name.equalsIgnoreCase(net.md_5.bungee.api.ChatColor.of("#ff23ff") + "SnowGun")) { + e.setDamage(10000); + } else if (name.equalsIgnoreCase("AA-12")) { + e.setDamage(7); + } else { + e.setDamage(0); } + } } } @EventHandler @@ -183,6 +177,7 @@ public final class Main extends JavaPlugin implements Listener { event.setCancelled(true); } } + // For hologram clicks to change page // @EventHandler // public void onEntityInteract(EntityInteractEvent e) { diff --git a/src/main/java/com/night/nullvalkyrie/commands/Command.java b/src/main/java/com/night/nullvalkyrie/commands/Command.java @@ -40,7 +40,6 @@ public abstract class Command extends BukkitCommand { public List<String> tabComplete(CommandSender sender, String alias, String[] args) throws IllegalArgumentException { return onTabComplete(sender, args); } - public abstract void onCommand(CommandSender sender, String[] args); public abstract List<String> onTabComplete(CommandSender sender, String[] args); } diff --git a/src/main/java/com/night/nullvalkyrie/commands/EnchantingCommand.java b/src/main/java/com/night/nullvalkyrie/commands/EnchantingCommand.java @@ -19,7 +19,7 @@ public class EnchantingCommand extends Command { public void onCommand(CommandSender sender, String[] args) { if(sender instanceof Player) { Player player = (Player) sender; - player.openEnchanting(null, true); + player.openEnchanting(player.getLocation(), true); } } diff --git a/src/main/java/com/night/nullvalkyrie/commands/SpawnCommand.java b/src/main/java/com/night/nullvalkyrie/commands/SpawnCommand.java @@ -1,6 +1,5 @@ package com.night.nullvalkyrie.commands; -import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.*; diff --git a/src/main/java/com/night/nullvalkyrie/commands/TestCommand.java b/src/main/java/com/night/nullvalkyrie/commands/TestCommand.java @@ -24,6 +24,7 @@ public class TestCommand extends Command { player.sendMessage(player.getAddress().getHostString()); } } + } } diff --git a/src/main/java/com/night/nullvalkyrie/commands/VanishCommand.java b/src/main/java/com/night/nullvalkyrie/commands/VanishCommand.java @@ -1,46 +0,0 @@ -package com.night.nullvalkyrie.commands; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; - -public class VanishCommand extends Command { - private List<UUID> vanished = new ArrayList<>(); - public VanishCommand() { - super( - "vanish", - new String[]{}, - "Turn yourself into invisible", - "" - ); - } - @Override - public void onCommand(CommandSender sender, String[] args) { - Player player = (Player) sender; - if(sender instanceof Player) { - if(vanished.contains(player.getUniqueId())) { - vanished.remove(player.getUniqueId()); - for (Player target : Bukkit.getOnlinePlayers()) { - target.showPlayer(player); - } - player.sendMessage(ChatColor.GREEN + "You are now seen by people"); - } else { - vanished.add(player.getUniqueId()); - for (Player target: Bukkit.getOnlinePlayers()){ - target.hidePlayer(player); - } - player.sendMessage(ChatColor.GREEN + "You are now vanished"); - } - } - } - - @Override - public List<String> onTabComplete(CommandSender sender, String[] args) { - return null; - } -} diff --git a/src/main/java/com/night/nullvalkyrie/commands/WeaponCommand.java b/src/main/java/com/night/nullvalkyrie/commands/WeaponCommand.java @@ -1,8 +1,10 @@ package com.night.nullvalkyrie.commands; +import com.night.nullvalkyrie.Enchantments.EnchantmentHandler; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.command.CommandSender; +import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; @@ -30,11 +32,14 @@ public class WeaponCommand extends Command { Player player = (Player) sender; if(args[0].equalsIgnoreCase("snowgun")) { 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); hoedata.setLore(Arrays.asList(ChatColor.GOLD + "Shoot Snowball!")); hoe.setItemMeta(hoedata); + player.getInventory().addItem(hoe); } else if(args[0].equalsIgnoreCase("grenade")) { ItemStack egg = new ItemStack(Material.EGG); @@ -45,7 +50,6 @@ public class WeaponCommand extends Command { egg.setItemMeta(eggdata); player.getInventory().addItem(egg); } - } @Override