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 a7b7db3db2f9fc45903bdcdf16e7f173a14d2f39
parent 4da943e38572ca63bbe91d318d0e05abe24fdf2a
Author: NK <[email protected]>
Date:   Fri, 25 Nov 2022 23:29:56 +0000

.env fix

Diffstat:
Msrc/main/java/me/night/nullvalkyrie/Main.java | 10++++------
Msrc/main/java/me/night/nullvalkyrie/commands/BetaCommand.java | 8+++-----
Msrc/main/java/me/night/nullvalkyrie/commands/CommandManager.java | 6+-----
Msrc/main/java/me/night/nullvalkyrie/database/DatabaseManager.java | 11+++++------
Msrc/main/java/me/night/nullvalkyrie/discord/DiscordClientManager.java | 3++-
Msrc/main/java/me/night/nullvalkyrie/enchantments/CustomEnchantment.java | 15++++++++-------
Dsrc/main/java/me/night/nullvalkyrie/npc/NPC.java | 129-------------------------------------------------------------------------------
Msrc/main/java/me/night/nullvalkyrie/npc/NPCEvents.java | 2+-
Asrc/main/java/me/night/nullvalkyrie/npc/NPCManager.java | 131+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/main/java/me/night/nullvalkyrie/npc/PacketHandler.java | 2+-
Msrc/main/java/me/night/nullvalkyrie/ui/ScoreboardListener.java | 8++++----
Msrc/main/java/me/night/nullvalkyrie/util/FileManager.java | 1+
Msrc/main/resources/plugin.yml | 2++
13 files changed, 163 insertions(+), 165 deletions(-)

diff --git a/src/main/java/me/night/nullvalkyrie/Main.java b/src/main/java/me/night/nullvalkyrie/Main.java @@ -14,18 +14,16 @@ import me.night.nullvalkyrie.database.DatabaseManager; import org.bukkit.*; import org.bukkit.plugin.java.JavaPlugin; public final class Main extends JavaPlugin { - - + public static Dotenv env; @Override public void onEnable() { getConfig().options().copyDefaults(); saveDefaultConfig(); -// Dotenv env = Dotenv.configure().directory("C:\\Users\\NK\\OneDrive\\Desktop\\.nky\\Coding\\Java\\NullValkyrie\\src\\main\\resources").filename(".env").load(); -// System.out.println(env.get("MONGO")); EnchantmentManager.register(); new CustomItemManager(this); new FileManager(); - new CommandManager(this).register(); + env = Dotenv.configure().directory("E:\\Files\\SB\\plugins\\NullValkyrie").filename(".env").load(); + new CommandManager(this); Bukkit.getPluginManager().registerEvents(new ServerEvents(), this); Bukkit.getPluginManager().registerEvents(new MenuListener(), this); Bukkit.getPluginManager().registerEvents(new ScoreboardListener(this), this); @@ -34,6 +32,6 @@ public final class Main extends JavaPlugin { Bukkit.getPluginManager().registerEvents(new NPCEvents(), this); new DiscordClientManager(); new DatabaseManager(this); - NPC.loadNPC(CustomItemManager.loadConfig("npcs.yml")); + NPCManager.reloadNPC(); } } diff --git a/src/main/java/me/night/nullvalkyrie/commands/BetaCommand.java b/src/main/java/me/night/nullvalkyrie/commands/BetaCommand.java @@ -1,25 +1,23 @@ package me.night.nullvalkyrie.commands; import me.night.nullvalkyrie.Main; -import me.night.nullvalkyrie.npc.NPC; +import me.night.nullvalkyrie.npc.NPCManager; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import java.util.List; public class BetaCommand extends Command { - private Main main; - public BetaCommand(Main main) { + public BetaCommand() { super("beta", new String[]{"b", "npc"}, "Beta", ""); - this.main = main; } @Override public void onCommand(CommandSender sender, String[] args) { if (sender instanceof Player) { Player player = (Player) sender; - NPC.createNPC(player, "&a&lNK"); + NPCManager.createNPC(player, "&a&lNK"); } } @Override diff --git a/src/main/java/me/night/nullvalkyrie/commands/CommandManager.java b/src/main/java/me/night/nullvalkyrie/commands/CommandManager.java @@ -3,11 +3,7 @@ package me.night.nullvalkyrie.commands; import me.night.nullvalkyrie.Main; public class CommandManager { - private final Main main; public CommandManager(Main main) { - this.main = main; - } - public void register() { new VanishCommand(); new TestCommand(); new AnvilCommand(); @@ -21,7 +17,7 @@ public class CommandManager { new RankCommand(); new UtilCommand(); new ShopCommand(); - new BetaCommand(main); + new BetaCommand(); new MinerCommand(main); } } diff --git a/src/main/java/me/night/nullvalkyrie/database/DatabaseManager.java b/src/main/java/me/night/nullvalkyrie/database/DatabaseManager.java @@ -17,12 +17,11 @@ public class DatabaseManager { connect(); } public void connect() { -// System.out.println(System.getenv("MONGO")); -// try (MongoClient client = MongoClients.create(System.getenv("MONGO"))) { -// -// } catch (MongoException e) { -// System.out.println("An error occurred when logging in to MongoDB" + e); -// } + try (MongoClient client = MongoClients.create(Main.env.get("MONGODB_URI"))) { + + } catch (MongoException e) { + System.out.println("An error occurred when logging in to MongoDB" + e); + } MongoClient client = MongoClients.create("mongodb+srv://cath_exe:[email protected]/NullValkyrie"); MongoDatabase database = client.getDatabase("NullValkyrie"); users = database.getCollection("users"); diff --git a/src/main/java/me/night/nullvalkyrie/discord/DiscordClientManager.java b/src/main/java/me/night/nullvalkyrie/discord/DiscordClientManager.java @@ -1,4 +1,5 @@ package me.night.nullvalkyrie.discord; +import me.night.nullvalkyrie.Main; import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.JDABuilder; import net.dv8tion.jda.api.entities.Activity; @@ -12,7 +13,7 @@ public class DiscordClientManager { register(); } public void register() { - JDABuilder builder = JDABuilder.createDefault("OTk3ODczMzgyNjM0ODM2MDQ5.Gd9Fdh.GEOleI-1znVeHwaAef54nXl2ovlSmC3hQX-qQI"); + JDABuilder builder = JDABuilder.createDefault(Main.env.get("DISCORD_TOKEN")); builder.setActivity(Activity.streaming("cath.exe", "https://www.youtube.com/watch?v=YSKDu1gKntY")); try { jda = builder.build(); diff --git a/src/main/java/me/night/nullvalkyrie/enchantments/CustomEnchantment.java b/src/main/java/me/night/nullvalkyrie/enchantments/CustomEnchantment.java @@ -4,24 +4,25 @@ import org.bukkit.NamespacedKey; import org.bukkit.enchantments.Enchantment; import org.bukkit.enchantments.EnchantmentTarget; import org.bukkit.inventory.ItemStack; +import org.jetbrains.annotations.NotNull; public class CustomEnchantment extends Enchantment { private final String name; - private final int maxlvl; + private final int max; public CustomEnchantment(String namespace, String name, int lvl) { super(NamespacedKey.minecraft(namespace)); this.name = name; - this.maxlvl = lvl; + this.max = lvl; } @Override - public String getName() { + public @NotNull String getName() { return name; } @Override public int getMaxLevel() { - return maxlvl; + return max; } @Override @@ -30,7 +31,7 @@ public class CustomEnchantment extends Enchantment { } @Override - public EnchantmentTarget getItemTarget() { + public @NotNull EnchantmentTarget getItemTarget() { return null; } @@ -45,12 +46,12 @@ public class CustomEnchantment extends Enchantment { } @Override - public boolean conflictsWith(Enchantment other) { + public boolean conflictsWith(@NotNull Enchantment other) { return false; } @Override - public boolean canEnchantItem(ItemStack item) { + public boolean canEnchantItem(@NotNull ItemStack item) { return true; } } diff --git a/src/main/java/me/night/nullvalkyrie/npc/NPC.java b/src/main/java/me/night/nullvalkyrie/npc/NPC.java @@ -1,129 +0,0 @@ -package me.night.nullvalkyrie.npc; - -import com.mojang.authlib.GameProfile; -import com.mojang.authlib.properties.Property; -import com.mojang.datafixers.util.Pair; -import me.night.nullvalkyrie.Main; -import me.night.nullvalkyrie.items.CustomItemManager; -import me.night.nullvalkyrie.util.Util; -import net.minecraft.network.protocol.game.*; -import net.minecraft.network.syncher.DataWatcher; -import net.minecraft.network.syncher.DataWatcherObject; -import net.minecraft.network.syncher.DataWatcherRegistry; -import net.minecraft.server.MinecraftServer; -import net.minecraft.server.level.EntityPlayer; -import net.minecraft.server.level.WorldServer; -import net.minecraft.server.network.PlayerConnection; -import net.minecraft.world.entity.EnumItemSlot; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.craftbukkit.v1_19_R1.CraftServer; -import org.bukkit.craftbukkit.v1_19_R1.CraftWorld; -import org.bukkit.craftbukkit.v1_19_R1.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_19_R1.inventory.CraftItemStack; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.UUID; - -public class NPC { - private static final List<EntityPlayer> NPCs = new ArrayList<>(); - - public static List<EntityPlayer> getNPCs() { - return NPCs; - } - - public static void createNPC(Player player, String name) { //name must be less than 16 characters including color codes ** - EntityPlayer sp = ((CraftPlayer) player).getHandle(); - MinecraftServer server = sp.c; - WorldServer level = ((CraftWorld) player.getLocation().getWorld()).getHandle(); - GameProfile gameProfile = new GameProfile(UUID.randomUUID(), Util.color(name)); - String[] skin = Skin.getSkin(player); - gameProfile.getProperties().put("textures", new Property("textures", skin[0], skin[1])); - EntityPlayer npc = new EntityPlayer(server, level, gameProfile, null); - Location location = player.getLocation(); - npc.a(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch()); - addNPCPacket(npc); - NPCs.add(npc); - int var = 1; - FileConfiguration npcFile = CustomItemManager.loadConfig("npcs.yml"); - if (npcFile.contains("data")) var = npcFile.getConfigurationSection("data").getKeys(false).size() + 1; - npcFile.set("data." + var + ".x", (int) player.getLocation().getX()); - npcFile.set("data." + var + ".y", (int) player.getLocation().getY()); - npcFile.set("data." + var + ".z", (int) player.getLocation().getZ()); - npcFile.set("data." + var + ".pitch", (int) player.getLocation().getPitch()); - npcFile.set("data." + var + ".yaw", (int) player.getLocation().getYaw()); - npcFile.set("data." + var + ".world", player.getLocation().getWorld().getName()); - npcFile.set("data." + var + ".name", name); - npcFile.set("data." + var + ".texture", skin[0]); - npcFile.set("data." + var + ".signature", skin[1]); - try { - npcFile.save(CustomItemManager.loadFile("npcs.yml")); - } catch (IOException e) { - e.printStackTrace(); - } - } - - public static void loadNPC(FileConfiguration npcFile) { - npcFile.getConfigurationSection("data").getKeys(false).forEach(npc -> { - Location location = new Location(Bukkit.getWorld(Objects.requireNonNull(npcFile.getString("data." + npc + ".world"))), npcFile.getInt("data." + npc + ".x"), npcFile.getInt("data." + npc + ".y"), npcFile.getInt("data." + npc + ".z")); - location.setPitch((float) npcFile.getDouble("data." + npc + ".pitch")); - location.setYaw((float) npcFile.getDouble("data." + npc + ".yaw")); - String name = npcFile.getString("data." + npc + ".name"); - GameProfile gameProfile = new GameProfile(UUID.randomUUID(), Util.color(name)); - gameProfile.getProperties().put("textures", new Property("textures", npcFile.getString("data." + npc + ".texture"), npcFile.getString("data." + npc + ".signature"))); - MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); - WorldServer world = ((CraftWorld) location.getWorld()).getHandle(); - EntityPlayer npcs = new EntityPlayer(server, world, gameProfile, null); - npcs.a(location.getX(), location.getY(), location.getZ(), location.getPitch(), location.getPitch()); - addNPCPacket(npcs); - NPCs.add(npcs); - }); - - } - - public static void addNPCPacket(EntityPlayer npc) { - for (Player player : Bukkit.getOnlinePlayers()) { - PlayerConnection pc = ((CraftPlayer) player).getHandle().b; - pc.a(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.a, npc)); - pc.a(new PacketPlayOutNamedEntitySpawn(npc)); - pc.a(new PacketPlayOutEntityHeadRotation(npc, (byte) (npc.getBukkitYaw() * 256 / 360))); - DataWatcher watcher = npc.ai(); - watcher.b(new DataWatcherObject<>(17, DataWatcherRegistry.a), (byte) 127); - pc.a(new PacketPlayOutEntityMetadata(npc.ae(), watcher, true)); - Bukkit.getScheduler().runTaskLaterAsynchronously(Main.getPlugin(Main.class), () -> pc.a(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.e, npc)), 50); - ItemStack netheriteAxe = new ItemStack(Material.NETHERITE_AXE); - ItemStack anotherAxe = new ItemStack(Material.NETHERITE_INGOT); - List<Pair<EnumItemSlot, net.minecraft.world.item.ItemStack>> list = new ArrayList<>(); - list.add(new Pair<>(EnumItemSlot.a, CraftItemStack.asNMSCopy(netheriteAxe))); - list.add(new Pair<>(EnumItemSlot.b, CraftItemStack.asNMSCopy(anotherAxe))); - pc.a(new PacketPlayOutEntityEquipment(npc.ae(), list)); - } - } - - public static void addJoinPacket(Player player) { - for (EntityPlayer npc : NPCs) { - PlayerConnection pc = ((CraftPlayer) player).getHandle().b; - pc.a(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.a, npc)); - pc.a(new PacketPlayOutNamedEntitySpawn(npc)); - pc.a(new PacketPlayOutEntityHeadRotation(npc, (byte) (npc.getBukkitYaw() * 256 / 360))); - DataWatcher watcher = npc.ai(); - watcher.b(new DataWatcherObject<>(17, DataWatcherRegistry.a), (byte) 127); - pc.a(new PacketPlayOutEntityMetadata(npc.ae(), watcher, true)); - Bukkit.getScheduler().runTaskLaterAsynchronously(Main.getPlugin(Main.class), () -> pc.a(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.e, npc)), 50); - ItemStack netheriteAxe = new ItemStack(Material.NETHERITE_AXE); - ItemStack anotherAxe = new ItemStack(Material.NETHERITE_INGOT); - List<Pair<EnumItemSlot, net.minecraft.world.item.ItemStack>> list = new ArrayList<>(); - list.add(new Pair<>(EnumItemSlot.a, CraftItemStack.asNMSCopy(netheriteAxe))); - list.add(new Pair<>(EnumItemSlot.b, CraftItemStack.asNMSCopy(anotherAxe))); - pc.a(new PacketPlayOutEntityEquipment(npc.ae(), list)); - } - } - -} diff --git a/src/main/java/me/night/nullvalkyrie/npc/NPCEvents.java b/src/main/java/me/night/nullvalkyrie/npc/NPCEvents.java @@ -21,7 +21,7 @@ public class NPCEvents implements Listener { } @EventHandler public void onMove(PlayerMoveEvent e) { - NPC.getNPCs().stream().forEach(npc -> { + NPCManager.getNPCs().forEach(npc -> { Location location = npc.getBukkitEntity().getLocation(); location.setDirection(e.getPlayer().getLocation().subtract(location).toVector()); float yaw = location.getYaw(); diff --git a/src/main/java/me/night/nullvalkyrie/npc/NPCManager.java b/src/main/java/me/night/nullvalkyrie/npc/NPCManager.java @@ -0,0 +1,131 @@ +package me.night.nullvalkyrie.npc; + +import com.mojang.authlib.GameProfile; +import com.mojang.authlib.properties.Property; +import com.mojang.datafixers.util.Pair; +import me.night.nullvalkyrie.Main; +import me.night.nullvalkyrie.items.CustomItemManager; +import me.night.nullvalkyrie.util.Util; +import net.minecraft.network.protocol.game.*; +import net.minecraft.network.syncher.DataWatcher; +import net.minecraft.network.syncher.DataWatcherObject; +import net.minecraft.network.syncher.DataWatcherRegistry; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.level.EntityPlayer; +import net.minecraft.server.level.WorldServer; +import net.minecraft.server.network.PlayerConnection; +import net.minecraft.world.entity.EnumItemSlot; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.craftbukkit.v1_19_R1.CraftServer; +import org.bukkit.craftbukkit.v1_19_R1.CraftWorld; +import org.bukkit.craftbukkit.v1_19_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_19_R1.inventory.CraftItemStack; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.UUID; + +public class NPCManager { + private static final List<EntityPlayer> NPCs = new ArrayList<>(); + + public static List<EntityPlayer> getNPCs() { + return NPCs; + } + public static void reloadNPC() { + loadNPC(CustomItemManager.loadConfig("npcs.yml")); + } + public static void createNPC(Player player, String name) { //name must be less than 16 characters including color codes ** + EntityPlayer sp = ((CraftPlayer) player).getHandle(); + MinecraftServer server = sp.c; + WorldServer level = ((CraftWorld) player.getLocation().getWorld()).getHandle(); + GameProfile gameProfile = new GameProfile(UUID.randomUUID(), Util.color(name)); + String[] skin = Skin.getSkin(player); + gameProfile.getProperties().put("textures", new Property("textures", skin[0], skin[1])); + EntityPlayer npc = new EntityPlayer(server, level, gameProfile, null); + Location location = player.getLocation(); + npc.a(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch()); + addNPCPacket(npc); + NPCs.add(npc); + int var = 1; + FileConfiguration npcFile = CustomItemManager.loadConfig("npcs.yml"); + if (npcFile.contains("data")) var = npcFile.getConfigurationSection("data").getKeys(false).size() + 1; + npcFile.set("data." + var + ".x", (int) player.getLocation().getX()); + npcFile.set("data." + var + ".y", (int) player.getLocation().getY()); + npcFile.set("data." + var + ".z", (int) player.getLocation().getZ()); + npcFile.set("data." + var + ".pitch", (int) player.getLocation().getPitch()); + npcFile.set("data." + var + ".yaw", (int) player.getLocation().getYaw()); + npcFile.set("data." + var + ".world", player.getLocation().getWorld().getName()); + npcFile.set("data." + var + ".name", name); + npcFile.set("data." + var + ".texture", skin[0]); + npcFile.set("data." + var + ".signature", skin[1]); + try { + npcFile.save(CustomItemManager.loadFile("npcs.yml")); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static void loadNPC(FileConfiguration npcFile) { + npcFile.getConfigurationSection("data").getKeys(false).forEach(npc -> { + Location location = new Location(Bukkit.getWorld(Objects.requireNonNull(npcFile.getString("data." + npc + ".world"))), npcFile.getInt("data." + npc + ".x"), npcFile.getInt("data." + npc + ".y"), npcFile.getInt("data." + npc + ".z")); + location.setPitch((float) npcFile.getDouble("data." + npc + ".pitch")); + location.setYaw((float) npcFile.getDouble("data." + npc + ".yaw")); + String name = npcFile.getString("data." + npc + ".name"); + GameProfile gameProfile = new GameProfile(UUID.randomUUID(), Util.color(name)); + gameProfile.getProperties().put("textures", new Property("textures", npcFile.getString("data." + npc + ".texture"), npcFile.getString("data." + npc + ".signature"))); + MinecraftServer server = ((CraftServer) Bukkit.getServer()).getServer(); + WorldServer world = ((CraftWorld) location.getWorld()).getHandle(); + EntityPlayer npcs = new EntityPlayer(server, world, gameProfile, null); + npcs.a(location.getX(), location.getY(), location.getZ(), location.getPitch(), location.getPitch()); + addNPCPacket(npcs); + NPCs.add(npcs); + }); + + } + + public static void addNPCPacket(EntityPlayer npc) { + for (Player player : Bukkit.getOnlinePlayers()) { + PlayerConnection pc = ((CraftPlayer) player).getHandle().b; + pc.a(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.a, npc)); + pc.a(new PacketPlayOutNamedEntitySpawn(npc)); + pc.a(new PacketPlayOutEntityHeadRotation(npc, (byte) (npc.getBukkitYaw() * 256 / 360))); + DataWatcher watcher = npc.ai(); + watcher.b(new DataWatcherObject<>(17, DataWatcherRegistry.a), (byte) 127); + pc.a(new PacketPlayOutEntityMetadata(npc.ae(), watcher, true)); + Bukkit.getScheduler().runTaskLaterAsynchronously(Main.getPlugin(Main.class), () -> pc.a(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.e, npc)), 50); + ItemStack netheriteAxe = new ItemStack(Material.NETHERITE_AXE); + ItemStack anotherAxe = new ItemStack(Material.NETHERITE_INGOT); + List<Pair<EnumItemSlot, net.minecraft.world.item.ItemStack>> list = new ArrayList<>(); + list.add(new Pair<>(EnumItemSlot.a, CraftItemStack.asNMSCopy(netheriteAxe))); + list.add(new Pair<>(EnumItemSlot.b, CraftItemStack.asNMSCopy(anotherAxe))); + pc.a(new PacketPlayOutEntityEquipment(npc.ae(), list)); + } + } + + public static void addJoinPacket(Player player) { + for (EntityPlayer npc : NPCs) { + PlayerConnection pc = ((CraftPlayer) player).getHandle().b; + pc.a(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.a, npc)); + pc.a(new PacketPlayOutNamedEntitySpawn(npc)); + pc.a(new PacketPlayOutEntityHeadRotation(npc, (byte) (npc.getBukkitYaw() * 256 / 360))); + DataWatcher watcher = npc.ai(); + watcher.b(new DataWatcherObject<>(17, DataWatcherRegistry.a), (byte) 127); + pc.a(new PacketPlayOutEntityMetadata(npc.ae(), watcher, true)); + Bukkit.getScheduler().runTaskLaterAsynchronously(Main.getPlugin(Main.class), () -> pc.a(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.e, npc)), 50); + ItemStack netheriteAxe = new ItemStack(Material.NETHERITE_AXE); + ItemStack anotherAxe = new ItemStack(Material.NETHERITE_INGOT); + List<Pair<EnumItemSlot, net.minecraft.world.item.ItemStack>> list = new ArrayList<>(); + list.add(new Pair<>(EnumItemSlot.a, CraftItemStack.asNMSCopy(netheriteAxe))); + list.add(new Pair<>(EnumItemSlot.b, CraftItemStack.asNMSCopy(anotherAxe))); + pc.a(new PacketPlayOutEntityEquipment(npc.ae(), list)); + } + } + +} diff --git a/src/main/java/me/night/nullvalkyrie/npc/PacketHandler.java b/src/main/java/me/night/nullvalkyrie/npc/PacketHandler.java @@ -36,7 +36,7 @@ public class PacketHandler extends ChannelDuplexHandler { hand.setAccessible(true); if (!hand.get(data).toString().equals("MAIN_HAND")) { return; } //Right Click - for (EntityPlayer npcs : NPC.getNPCs()) { + for (EntityPlayer npcs : NPCManager.getNPCs()) { if (npcs.ae() == entityID && sneak) { Bukkit.getScheduler().scheduleSyncDelayedTask(Main.getPlugin(Main.class), new Runnable() { @Override diff --git a/src/main/java/me/night/nullvalkyrie/ui/ScoreboardListener.java b/src/main/java/me/night/nullvalkyrie/ui/ScoreboardListener.java @@ -1,7 +1,7 @@ package me.night.nullvalkyrie.ui; import me.night.nullvalkyrie.Main; -import me.night.nullvalkyrie.npc.NPC; +import me.night.nullvalkyrie.npc.NPCManager; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.entity.Player; @@ -42,9 +42,9 @@ public class ScoreboardListener implements Listener { sideBarManager.start(player); belowNameManager.setBelowName(player); e.setJoinMessage(rankManager.getRank(e.getPlayer().getUniqueId()).getDisplay() + " " + e.getPlayer().getName() + ChatColor.WHITE + " joined the server!"); - if(NPC.getNPCs() == null) return; - if(NPC.getNPCs().isEmpty()) return; - NPC.addJoinPacket(e.getPlayer()); + if(NPCManager.getNPCs() == null) return; + if(NPCManager.getNPCs().isEmpty()) return; + NPCManager.addJoinPacket(e.getPlayer()); } @EventHandler diff --git a/src/main/java/me/night/nullvalkyrie/util/FileManager.java b/src/main/java/me/night/nullvalkyrie/util/FileManager.java @@ -4,6 +4,7 @@ import static me.night.nullvalkyrie.items.CustomItemManager.updateYamlFilesToPlu public class FileManager { public FileManager() { + updateYamlFilesToPlugin(".env"); updateYamlFilesToPlugin("shop.yml"); } } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml @@ -9,3 +9,5 @@ depend: [ProtocolLib] permissions: nv.command.use: default: true +libraries: + - "io.github.cdimascio:dotenv-java:2.3.1"