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 4dd88fd075514963638b577185afa7f736051247
parent c1243cf83a7bfb8a70828b7685520228cbac47e2
Author: night0721 <[email protected]>
Date:   Thu, 14 Jul 2022 00:36:13 +0100

dont know why it doesn't work, so i fixed

Diffstat:
Mpom.xml | 2+-
Msrc/main/java/com/night/nullvalkyrie/Events/CustomItemEvents.java | 18++++++++++++++++++
Msrc/main/java/com/night/nullvalkyrie/Main.java | 1+
Asrc/main/java/com/night/nullvalkyrie/commands/UtilCommand.java | 68++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/main/java/com/night/nullvalkyrie/commands/WeaponCommand.java | 5+++--
Msrc/main/resources/config.yml | 27+++++++++++++++++++--------
6 files changed, 110 insertions(+), 11 deletions(-)

diff --git a/pom.xml b/pom.xml @@ -6,7 +6,7 @@ <groupId>com.night</groupId> <artifactId>NullValkyrie</artifactId> - <version>1.0</version> + <version>1.0.1</version> <packaging>jar</packaging> <name>NullValkyrie</name> diff --git a/src/main/java/com/night/nullvalkyrie/Events/CustomItemEvents.java b/src/main/java/com/night/nullvalkyrie/Events/CustomItemEvents.java @@ -11,6 +11,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.entity.*; +import org.bukkit.event.player.PlayerBucketEmptyEvent; import org.bukkit.event.player.PlayerFishEvent; import org.bukkit.event.player.PlayerInteractEvent; @@ -188,4 +189,21 @@ public class CustomItemEvents implements Listener { } } } + @EventHandler + public void onPlayerBucketEmpty(PlayerBucketEmptyEvent e) { + int x = e.getBlockClicked().getX() + e.getBlockFace().getModX(); + int y = e.getBlockClicked().getY() + e.getBlockFace().getModY(); + int z = e.getBlockClicked().getZ() + e.getBlockFace().getModZ(); + Player player = e.getPlayer(); + if(player.getInventory().getItemInMainHand().getItemMeta() != null) { + String name = player.getInventory().getItemInMainHand().getItemMeta().getDisplayName(); + if (name.equalsIgnoreCase(Rarity.EPIC.getColor() + "Infinite Water Bucket")) { + e.getPlayer().getWorld().getBlockAt(x,y,z).setType(Material.WATER); + e.setCancelled(true); + } else if (name.equalsIgnoreCase(Rarity.EPIC.getColor() + "Infinite LAVA Bucket")) { + e.getPlayer().getWorld().getBlockAt(x,y,z).setType(Material.LAVA); + e.setCancelled(true); + } + } + } } \ No newline at end of file diff --git a/src/main/java/com/night/nullvalkyrie/Main.java b/src/main/java/com/night/nullvalkyrie/Main.java @@ -62,6 +62,7 @@ public final class Main extends JavaPlugin implements Listener { new CraftCommand(); new EnchantingCommand(); new RankCommand(this); + new UtilCommand(this); new WeaponCommand(this); bossbar = Bukkit.createBossBar(ChatColor.GOLD + "Kuudra", BarColor.RED, BarStyle.SEGMENTED_12); Bukkit.getPluginManager().registerEvents(this, this); diff --git a/src/main/java/com/night/nullvalkyrie/commands/UtilCommand.java b/src/main/java/com/night/nullvalkyrie/commands/UtilCommand.java @@ -0,0 +1,68 @@ +package com.night.nullvalkyrie.commands; + +import com.night.nullvalkyrie.Main; +import org.bukkit.ChatColor; +import org.bukkit.command.CommandSender; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.util.StringUtil; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; + +import static com.night.nullvalkyrie.Items.CustomItemManager.getAllFilesFromDirectory; +import static com.night.nullvalkyrie.Items.CustomItemManager.loadConfig; + +public class UtilCommand extends Command { + private Main main; + public UtilCommand(Main main) { + super( + "util", + new String[]{}, + "Give you a tool", + "" + + ); + this.main = main; + } + @Override + public void onCommand(CommandSender sender, String[] args) { + Player player = (Player) sender; + StringBuilder s = new StringBuilder(); + List<String> b = Arrays.asList(args); + for(String a: args) { + if(a.equals(b.get(b.size() - 1))) { + s.append(a); + } else { + s.append(a); + s.append(" "); + } + + } + ItemStack item = main.getCustomItemManager().getItem(s.toString()); + if(item.hasItemMeta()) { + player.getInventory().addItem(item); + } else { + player.sendMessage(ChatColor.RED + "This item doesn't exist"); + } + } + + @Override + public List<String> onTabComplete(CommandSender sender, String[] args) { + if(args.length == 1) { + List<String> hh = getAllFilesFromDirectory("ItemData"); + ArrayList<String> cc = new ArrayList<>(); + for(int kk = 0; kk < hh.size(); kk++) { + FileConfiguration c = loadConfig("ItemData\\" + hh.get(kk)); + if(Objects.equals(c.getString("type"), "Util")) { + cc.add(c.getString("name")); + } + } + return StringUtil.copyPartialMatches(args[0], cc, new ArrayList<>()); + } + return new ArrayList<>(); + } +} 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,5 @@ package com.night.nullvalkyrie.commands; -import com.night.nullvalkyrie.Items.CustomItemManager; import com.night.nullvalkyrie.Main; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; @@ -60,7 +59,9 @@ public class WeaponCommand extends Command { ArrayList<String> cc = new ArrayList<>(); for(int kk = 0; kk < hh.size(); kk++) { FileConfiguration c = loadConfig("ItemData\\" + hh.get(kk)); - cc.add(c.getString("name")); + if(Objects.equals(c.getString("type"), "Weapon")) { + cc.add(c.getString("name")); + } } return StringUtil.copyPartialMatches(args[0], cc, new ArrayList<>()); } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml @@ -2,7 +2,7 @@ ExplosiveBow: name: "Explosive Bow" material: "BOW" type: "Weapon" - rarity: LEGENDARY + rarity: "LEGENDARY" lore: properties: damage: 50 @@ -19,7 +19,7 @@ FragGrenade: name: "Frag Grenade" material: "EGG" type: "Weapon" - rarity: LEGENDARY + rarity: "LEGENDARY" lore: properties: damage: 50 @@ -34,8 +34,8 @@ FragGrenade: GrapplingHook: name: "Grappling Hook" material: "FISHING_ROD" - type: "Weapon" - rarity: RARE + type: "Util" + rarity: "RARE" lore: ability: name: Hook @@ -47,7 +47,7 @@ SnowGun: name: "Snow Gun" material: "DIAMOND_HOE" type: "Weapon" - rarity: ULTRA + rarity: "ULTRA" lore: properties: damage: 25 @@ -65,7 +65,7 @@ TeleportDoor: name: "Teleport Door" material: "DIAMOND_SHOVEL" type: "Weapon" - rarity: GRAND + rarity: "GRAND" lore: properties: damage: 75 @@ -83,7 +83,7 @@ Terminator: name: "Terminator" material: "BOW" type: "Weapon" - rarity: MYTHIC + rarity: "MYTHIC" lore: properties: damage: 50 @@ -104,7 +104,7 @@ WidowSword: name: "Widow Sword" material: "STICK" type: "Weapon" - rarity: MYTHIC + rarity: "MYTHIC" lore: properties: damage: 100 @@ -126,3 +126,13 @@ WidowSword: zombie: 100 skeleton: 100 spider: 100 +InfiniteWaterBucket: + name: "Infinite Water Bucket" + material: "WATER_BUCKET" + type: "Util" + rarity: "EPIC" +InfiniteLavaBucket: + name: "Infinite Lava Bucket" + material: "LAVA_BUCKET" + type: "Util" + rarity: "EPIC" +\ No newline at end of file