diff options
Diffstat (limited to 'src/main/java/com/redstoner/modules/naming/Naming.java')
-rw-r--r-- | src/main/java/com/redstoner/modules/naming/Naming.java | 66 |
1 files changed, 48 insertions, 18 deletions
diff --git a/src/main/java/com/redstoner/modules/naming/Naming.java b/src/main/java/com/redstoner/modules/naming/Naming.java index f445336..1bfd0c6 100644 --- a/src/main/java/com/redstoner/modules/naming/Naming.java +++ b/src/main/java/com/redstoner/modules/naming/Naming.java @@ -1,13 +1,14 @@ package com.redstoner.modules.naming; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.regex.Pattern; -import org.bukkit.Bukkit; +import org.bukkit.GameMode; +import org.bukkit.Material; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.InventoryType; -import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; @@ -20,22 +21,22 @@ import com.redstoner.modules.Module; import net.md_5.bungee.api.ChatColor; @Commands(CommandHolderType.File) -@Version(major = 5, minor = 0, revision = 0, compatible = 4) +@Version(major = 5, minor = 3, revision = 0, compatible = 4) public class Naming implements Module -{ - @Command(hook = "anvil") - public void anvil(CommandSender sender) - { - Player player = (Player) sender; - Inventory inv = Bukkit.getServer().createInventory(player, InventoryType.ANVIL); - player.openInventory(inv); - } +{ + private final Pattern COLOR_CHECK = Pattern.compile(".*&[\\da-fk-or].*"); + private final ItemStack[] COST = new ItemStack[] {new ItemStack(Material.IRON_INGOT, 1)}; @Command(hook = "name") public void name(CommandSender sender, String name) { + Player player = (Player) sender; + + if (player.getGameMode() == GameMode.SURVIVAL && !processSurvivalPlayer(player, name, "rename the item")) + return; + name = ChatColor.translateAlternateColorCodes('&', name); - ItemStack item = ((Player) sender).getInventory().getItemInMainHand(); + ItemStack item = player.getInventory().getItemInMainHand(); ItemMeta meta = item.getItemMeta(); if (meta == null) { @@ -44,14 +45,19 @@ public class Naming implements Module } meta.setDisplayName(name); item.setItemMeta(meta); - getLogger().message(sender, "Name set to " + name); - ((Player) sender).updateInventory(); + getLogger().message(sender, "Name set to &f&o" + name + "&7."); + player.updateInventory(); } @Command(hook = "lore") public void lore(CommandSender sender, boolean append, String lore) { - ItemStack item = ((Player) sender).getInventory().getItemInMainHand(); + Player player = (Player) sender; + + if (player.getGameMode() == GameMode.SURVIVAL && !processSurvivalPlayer(player, lore, append? "append to the lore" : "add lore to the item")) + return; + + ItemStack item = player.getInventory().getItemInMainHand(); ItemMeta meta = item.getItemMeta(); if (meta == null) { @@ -69,7 +75,31 @@ public class Naming implements Module currentLore.add(lore); meta.setLore(currentLore); item.setItemMeta(meta); - getLogger().message(sender, "Lore set to " + lore); - ((Player) sender).updateInventory(); + if (append) + getLogger().message(sender, "Appended the following line to the lore: &5&o" + lore + "&7."); + else + getLogger().message(sender, "Lore set to &5&o" + lore + "&7."); + player.updateInventory(); + } + + private boolean processSurvivalPlayer(Player player, String str, String operation) { + + int levelsNeeded = COLOR_CHECK.matcher(str).matches()? 2 : 1; + int levels = player.getLevel(); + + if (levels < levelsNeeded) { + getLogger().message(player, true, "You don't have enough levels. " + (levelsNeeded == 1? + "You need &e1&7 level to " + operation + "." : + "You need &e2&7 levels to " + operation + " with color/formatting.")); + return false; + } + + HashMap<Integer, ItemStack> result = player.getInventory().removeItem(COST); + if (result.size() > 0) { + getLogger().message(player, true, "You don't have enough resources. You need &e1&7 iron ingot to " + operation + "."); + return false; + } + player.setLevel(levels - levelsNeeded); + return true; } } |