Przeglądaj źródła

Claims are now working as intended, showing on sb, maximum size configurable in config.yml

Jan 3 tygodni temu
rodzic
commit
9b26ae11c8

+ 7 - 5
src/main/java/me/lethunderhawk/clans/Clan.java

@@ -57,16 +57,18 @@ public class Clan {
         } else return owner.equals(player) && members.isEmpty();
     }
 
-    public void acceptRequest(UUID owner, String player){
-        if(!owner.equals(this.owner)) return;
-        if(!pendingRequests.containsKey(player)) return;
+    public boolean acceptRequest(UUID owner, String player){
+        if(!owner.equals(this.owner)) return false;
+        if(!pendingRequests.containsKey(player)) return false;
         UUID joining = pendingRequests.remove(player);
         members.add(joining);
+        return true;
     }
 
-    public void denyRequest(UUID owner, String player){
-        if(!owner.equals(this.owner)) return;
+    public boolean denyRequest(UUID owner, String player){
+        if(!owner.equals(this.owner)) return false;
         pendingRequests.remove(player);
+        return true;
     }
 
     public void sendRequestToOwner(UUID playerUUID){

+ 12 - 4
src/main/java/me/lethunderhawk/clans/ClanManager.java

@@ -1,9 +1,10 @@
 package me.lethunderhawk.clans;
 
 import me.lethunderhawk.clans.claim.Claim;
+import me.lethunderhawk.clans.claim.ClaimManager;
 import me.lethunderhawk.clans.rules.Rule;
-import me.lethunderhawk.main.Main;
 import org.bukkit.Bukkit;
+import org.bukkit.Location;
 import org.bukkit.configuration.ConfigurationSection;
 import org.bukkit.configuration.file.FileConfiguration;
 import org.bukkit.configuration.file.YamlConfiguration;
@@ -21,10 +22,11 @@ public class ClanManager {
     private final HashMap<UUID, Clan> clans = new HashMap<>();
 
     private final File clansFile;
+    private final ClaimManager claimManager;
     private FileConfiguration clansConfig;
 
-    public ClanManager(JavaPlugin plugin) {
-
+    public ClanManager(JavaPlugin plugin, ClaimManager claimManager) {
+        this.claimManager = claimManager;
         this.clansFile = new File(plugin.getDataFolder(), "clans.yml");
         this.clansConfig = YamlConfiguration.loadConfiguration(clansFile);
         loadFile(plugin);
@@ -89,7 +91,7 @@ public class ClanManager {
                 Claim claim = Claim.fromMap(clan.getId(), map);
                 if (claim != null){
                     clan.addClaim(claim);
-                    Main.getInstance().getClanModule().getClaimManager().registerClaim(claim);
+                    claimManager.registerClaim(claim);
                 }else{
                     Bukkit.getLogger().warning("Clan " + id + " has invalid Claim");
                 }
@@ -191,4 +193,10 @@ public class ClanManager {
         if(clan == null || getMyClan(player) != null) return false;
         return clan.joinRequest(player);
     }
+
+    public String getClaimNameByLocation(Location location) {
+        Claim claim = claimManager.getClaimAt(location);
+        if(claim == null) return "Unknown";
+        return claim.getName();
+    }
 }

+ 3 - 2
src/main/java/me/lethunderhawk/clans/ClanModule.java

@@ -8,6 +8,7 @@ import me.lethunderhawk.clans.placeholder.ClanPlaceHolder;
 import me.lethunderhawk.main.Main;
 import net.kyori.adventure.audience.Audience;
 import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.format.NamedTextColor;
 
 public class ClanModule {
     private ClanManager clanManager;
@@ -20,7 +21,7 @@ public class ClanModule {
     public void onEnable(){
 
         claimManager = new ClaimManager();
-        clanManager = new ClanManager(Main.getInstance());
+        clanManager = new ClanManager(Main.getInstance(), claimManager);
 
         Main.getInstance().getCommand("clan").setExecutor(new ClanCommand(clanManager));
         Main.getInstance().getCommand("clan").setTabCompleter(new ClanCommand(clanManager));
@@ -33,7 +34,7 @@ public class ClanModule {
 
     }
     public static void sendText(Audience receiver, String infoText){
-        MessageSender.sendText(receiver, Component.text(infoText), "[Clan]");
+        MessageSender.sendText(receiver, Component.text(infoText, NamedTextColor.GRAY), "[Clan]");
     }
     public static void sendText(Audience receiver, Component infoText){
         MessageSender.sendText(receiver, infoText, "[Clan]");

+ 14 - 0
src/main/java/me/lethunderhawk/clans/claim/Claim.java

@@ -1,5 +1,7 @@
 package me.lethunderhawk.clans.claim;
 
+import me.lethunderhawk.clans.Clan;
+import me.lethunderhawk.main.Main;
 import org.bukkit.Location;
 
 import java.util.Map;
@@ -12,6 +14,7 @@ public class Claim {
 
     private final int minX, maxX;
     private final int minZ, maxZ;
+    private String name;
 
     public Claim(UUID clanId, String world, int x1, int x2, int z1, int z2) {
         this.clanId = clanId;
@@ -72,4 +75,15 @@ public class Claim {
     public int getMaxZ() {
         return maxZ;
     }
+    public void setName(String name) {
+        this.name = name;
+    }
+    public String getName() {
+        if(name == null || name.isEmpty()) {
+            Clan clan = Main.getInstance().getClanModule().getClanManager().getClanById(clanId);
+            if(clan == null) return "Unknown";
+            else return clan.getName();
+        }
+        return name;
+    }
 }

+ 34 - 12
src/main/java/me/lethunderhawk/clans/command/ClanCommand.java

@@ -7,9 +7,11 @@ import me.lethunderhawk.clans.ClanModule;
 import me.lethunderhawk.clans.claim.Claim;
 import me.lethunderhawk.clans.gui.ClanGUI;
 import me.lethunderhawk.clans.rules.Rule;
+import me.lethunderhawk.custom.item.concrete.ClaimTool;
 import me.lethunderhawk.main.Main;
 import net.kyori.adventure.text.Component;
 import net.kyori.adventure.text.format.NamedTextColor;
+import net.kyori.adventure.text.format.TextDecoration;
 import org.bukkit.Bukkit;
 import org.bukkit.command.Command;
 import org.bukkit.command.CommandExecutor;
@@ -47,7 +49,7 @@ public class ClanCommand implements CommandExecutor, TabCompleter {
         CommandNode claimNode = registerCommand("claim", "Claim land for your clan", this::handleClaim);
         claimNode.registerSubCommand("info", "Get information about your claims", this::infoClaims);
         claimNode.registerSubCommand("removeAll", "Remove all current claims", this::removeAllClaims);
-
+        claimNode.registerSubCommand("tool", "Get the claimTool", this::getClaimTool);
         CommandNode acceptNode = registerCommand("acceptRequest", "Accept a pending request of a player", this::handleAcceptRequest);
         acceptNode.setTabCompleter(this::completeRequests);
 
@@ -71,25 +73,36 @@ public class ClanCommand implements CommandExecutor, TabCompleter {
         registerCommand("create", "Create a new clan", this::handleCreate);
     }
 
+    private void getClaimTool(CommandSender sender, String[] strings) {
+        if(!(sender instanceof Player p)) return;
+        p.getInventory().addItem(new ClaimTool(Main.getInstance()).createItem());
+        ClanModule.sendText(p, Component.text("The tool magically appears in your inventory! How convenient!"));
+    }
+
     private void handleSave(CommandSender sender, String[] strings) {
         if(!sender.isOp()) return;
         Main.getInstance().getClanModule().getClanManager().saveClans();
     }
 
     private void removeAllClaims(CommandSender sender, String[] strings) {
-        if(!(sender instanceof Player player)) return;
+        if(!(sender instanceof Player player) || !sender.isOp()) return;
         Main.getInstance().getClanModule().getClaimManager().removeAllClaims();
     }
 
     private void infoClaims(CommandSender sender, String[] strings) {
         if(!(sender instanceof Player player)) return;
         UUID uuid = player.getUniqueId();
-        if(manager.getMyClan(uuid) == null) return;
-        for(Claim claim : manager.getMyClan(uuid).getClaims()){
-            ClanModule.sendText(player, "info about your claim");
-            ClanModule.sendText(player, claim.getVolume()+" is this volume");
+        Clan myClan = manager.getMyClan(uuid);
+        if(myClan == null) return;
+        ClanModule.sendText(player, Component.text("List of all claims in clan " + myClan.getName(), NamedTextColor.GREEN, TextDecoration.UNDERLINED));
+        for(Claim claim : myClan.getClaims()){
+            ClanModule.sendText(player, Component.text("Claim: " + claim.getName(), NamedTextColor.GOLD));
+            ClanModule.sendText(player, Component.text("This claim spans from X: " + claim.getMaxX() + " to X: " + claim.getMinX(), NamedTextColor.GRAY)
+                    .appendNewline()
+                    .append(Component.text( "        and from Z: " + claim.getMaxZ() + " to Z: " + claim.getMinZ(), NamedTextColor.GRAY)));
+
+            ClanModule.sendText(player, "Volume of this claim is " + claim.getVolume() + " Blocks");
         }
-
     }
 
     private void handleClaim(CommandSender sender, String[] strings) {
@@ -107,16 +120,23 @@ public class ClanCommand implements CommandExecutor, TabCompleter {
         if (!(sender instanceof Player player) || strings[0] == null || strings[0].isEmpty()) return;
         UUID uuid = player.getUniqueId();
         Clan clan = manager.getMyClan(uuid);
-        clan.denyRequest(uuid, strings[0]);
-        ClanModule.sendText(player, "You declined the request from " + strings[0] + ".");
+        if(clan.denyRequest(uuid, strings[0])){
+            ClanModule.sendText(player, "You declined the request from " + strings[0] + ".");
+        }else{
+            ClanModule.sendText(player, "You are not the owner, or " + strings[0] + " hasn't requested to join your clan.");
+        }
     }
 
     private void handleAcceptRequest(CommandSender sender, String[] strings) {
         if (!(sender instanceof Player player) || strings[0] == null || strings[0].isEmpty()) return;
         UUID uuid = player.getUniqueId();
         Clan clan = manager.getMyClan(uuid);
-        clan.acceptRequest(uuid, strings[0]);
-        ClanModule.sendText(player, "You accepted the request from " + strings[0] + ".");
+        if(clan.acceptRequest(uuid, strings[0])){
+            ClanModule.sendText(player, "You accepted the request from " + strings[0] + ".");
+        }else{
+            ClanModule.sendText(player, "You are not the owner, or " + strings[0] + " hasn't requested to join your clan.");
+        }
+
     }
 
     private void handleShowMembers(CommandSender sender, String[] strings) {
@@ -130,7 +150,9 @@ public class ClanCommand implements CommandExecutor, TabCompleter {
                 Component.text("Owner: ", NamedTextColor.RED)
                 .append(Component.text(owner.getName(), NamedTextColor.GRAY)));
         for(UUID member : clan.getMembers()){
-            ClanModule.sendText(player, Bukkit.getPlayer(member).getName());
+            Player p = Bukkit.getPlayer(member);
+            if(p == null) continue;
+            ClanModule.sendText(player, p.getName());
         }
     }
 

+ 2 - 0
src/main/java/me/lethunderhawk/clans/placeholder/ClanPlaceHolder.java

@@ -34,6 +34,8 @@ public class ClanPlaceHolder extends PlaceholderExpansion {
             Clan clan = manager.getMyClan(p.getUniqueId());
             if(clan == null) return "/";
             return manager.getMyClan(p.getUniqueId()).getName();
+        }else if (identifier.equalsIgnoreCase("region") && p != null) {
+            return manager.getClaimNameByLocation(p.getLocation());
         }
         return null;
     }

+ 15 - 7
src/main/java/me/lethunderhawk/custom/item/CustomItemModule.java

@@ -3,23 +3,23 @@ package me.lethunderhawk.custom.item;
 import me.lethunderhawk.bazaarflux.util.interfaces.BazaarFluxModule;
 import me.lethunderhawk.custom.item.command.CustomItemCommand;
 import me.lethunderhawk.custom.item.concrete.ClaimTool;
-import me.lethunderhawk.custom.item.concrete.TeleportSword;
 import me.lethunderhawk.custom.item.listener.CustomItemListener;
 import me.lethunderhawk.custom.item.manager.CustomItemManager;
 import me.lethunderhawk.main.Main;
+import org.bukkit.command.CommandSender;
+import org.bukkit.event.HandlerList;
 import org.bukkit.plugin.java.JavaPlugin;
 
 public class CustomItemModule implements BazaarFluxModule {
     private CustomItemManager itemManager;
     private final JavaPlugin plugin;
+    private CustomItemListener listener;
 
     public CustomItemModule(JavaPlugin plugin) {
         this.plugin = plugin;
     }
     private void registerCustomItems(){
-        itemManager.registerItem(new TeleportSword(plugin));
         itemManager.registerItem(new ClaimTool(plugin));
-
     }
 
     @Override
@@ -31,23 +31,31 @@ public class CustomItemModule implements BazaarFluxModule {
     public void onEnable() {
         itemManager = new CustomItemManager(plugin);
         registerCustomItems();
-        CustomItemCommand customItemCommand = new CustomItemCommand(itemManager);
+        CustomItemCommand customItemCommand = new CustomItemCommand(itemManager, this);
         Main.getInstance().getCommand("customItem").setExecutor(customItemCommand);
         Main.getInstance().getCommand("customItem").setTabCompleter(customItemCommand);
 
-
+        listener = new CustomItemListener(itemManager);
         plugin.getServer().getPluginManager().registerEvents(
-                new CustomItemListener(itemManager),
+                listener,
                 plugin
         );
     }
 
     @Override
     public void onDisable() {
-
+        HandlerList.unregisterAll(listener);
+        itemManager = null;
     }
 
     public CustomItemManager getManager() {
         return itemManager;
     }
+
+    public void reload(CommandSender sender, String[] strings) {
+        if(sender.hasPermission("customItem.reload")) {
+            onDisable();
+            onEnable();
+        }
+    }
 }

+ 8 - 11
src/main/java/me/lethunderhawk/custom/item/abstraction/CustomItem.java

@@ -1,5 +1,6 @@
 package me.lethunderhawk.custom.item.abstraction;
 
+import net.kyori.adventure.text.Component;
 import org.bukkit.Material;
 import org.bukkit.NamespacedKey;
 import org.bukkit.event.player.PlayerInteractEvent;
@@ -8,7 +9,6 @@ import org.bukkit.inventory.meta.ItemMeta;
 import org.bukkit.persistence.PersistentDataType;
 import org.bukkit.plugin.java.JavaPlugin;
 
-import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -17,14 +17,14 @@ import java.util.List;
 public abstract class CustomItem {
     protected final JavaPlugin plugin;
     protected final String itemId;
-    protected final String displayName;
-    protected final List<String> lore;
+    protected final Component displayName;
+    protected final List<Component> lore;
     protected final Material baseMaterial;
 
     // Persistent Data Container key for storing item ID
     protected final NamespacedKey itemIdKey;
 
-    public CustomItem(JavaPlugin plugin, String itemId, String displayName, List<String> lore, Material baseMaterial) {
+    public CustomItem(JavaPlugin plugin, String itemId, Component displayName, List<Component> lore, Material baseMaterial) {
         this.plugin = plugin;
         this.itemId = itemId;
         this.displayName = displayName;
@@ -33,9 +33,6 @@ public abstract class CustomItem {
         this.itemIdKey = new NamespacedKey(plugin, "custom_item_id");
     }
 
-    public CustomItem(JavaPlugin plugin, String itemId, String displayName, String[] lore, Material baseMaterial) {
-        this(plugin, itemId, displayName, Arrays.asList(lore), baseMaterial);
-    }
 
     /**
      * Create the ItemStack with embedded metadata
@@ -45,9 +42,9 @@ public abstract class CustomItem {
         ItemMeta meta = item.getItemMeta();
 
         // Set visible properties
-        meta.setDisplayName(displayName);
-        if (lore != null && !lore.isEmpty()) {
-            meta.setLore(lore);
+        meta.displayName(displayName);
+        if (lore != null && !lore.isEmpty() && meta.hasLore()) {
+            meta.lore(lore);
         }
 
         // Embed the unique identifier in Persistent Data Container
@@ -106,7 +103,7 @@ public abstract class CustomItem {
 
     // Getters
     public String getItemId() { return itemId; }
-    public String getDisplayName() { return displayName; }
+    public Component getDisplayName() { return displayName; }
     public Material getBaseMaterial() { return baseMaterial; }
     public NamespacedKey getItemIdKey() { return itemIdKey; }
 }

+ 5 - 1
src/main/java/me/lethunderhawk/custom/item/command/CustomItemCommand.java

@@ -1,6 +1,7 @@
 package me.lethunderhawk.custom.item.command;
 
 import me.lethunderhawk.bazaarflux.util.command.CommandNode;
+import me.lethunderhawk.custom.item.CustomItemModule;
 import me.lethunderhawk.custom.item.abstraction.CustomItem;
 import me.lethunderhawk.custom.item.manager.CustomItemManager;
 import me.lethunderhawk.economy.EconomyModule;
@@ -19,11 +20,14 @@ import java.util.List;
 public class CustomItemCommand implements CommandExecutor, TabCompleter {
     private final CustomItemManager manager;
     private final CommandNode rootCommand;
+    private final CustomItemModule module;
 
-    public CustomItemCommand(CustomItemManager manager) {
+    public CustomItemCommand(CustomItemManager manager, CustomItemModule customItemModule) {
         this.manager = manager;
+        this.module = customItemModule;
         this.rootCommand = new CommandNode("customItems", "Main Custom Item Command", null);
         CommandNode getAll = rootCommand.registerSubCommand("getAll", "Get all custom items", this::getAllItems);
+        CommandNode reload = rootCommand.registerSubCommand("reload", "Reload", module::reload);
     }
 
     private void getAllItems(CommandSender sender, String[] strings) {

+ 23 - 14
src/main/java/me/lethunderhawk/custom/item/concrete/ClaimTool.java

@@ -5,9 +5,12 @@ import me.lethunderhawk.clans.ClanModule;
 import me.lethunderhawk.clans.claim.Claim;
 import me.lethunderhawk.custom.item.abstraction.CustomItem;
 import me.lethunderhawk.main.Main;
+import net.kyori.adventure.text.Component;
 import net.kyori.adventure.text.format.NamedTextColor;
+import net.kyori.adventure.text.format.TextDecoration;
 import org.bukkit.Location;
 import org.bukkit.Material;
+import org.bukkit.block.Block;
 import org.bukkit.entity.Player;
 import org.bukkit.event.player.PlayerInteractEvent;
 import org.bukkit.plugin.java.JavaPlugin;
@@ -24,10 +27,10 @@ public class ClaimTool extends CustomItem {
         super(
                 plugin,
                 "claim_tool",
-                NamedTextColor.AQUA + "Claim Tool",
+                Component.text("Claim Tool", NamedTextColor.BLUE).decoration(TextDecoration.ITALIC, false),
                 Arrays.asList(
-                        NamedTextColor.GRAY + "Left-click to set corners of your claim",
-                        ""
+                        Component.text("Left-click to set corners of your claim").decoration(TextDecoration.ITALIC, false),
+                        Component.text("")
                 ),
                 Material.GOLDEN_SHOVEL
         );
@@ -35,14 +38,16 @@ public class ClaimTool extends CustomItem {
 
     @Override
     public void onRightClick(PlayerInteractEvent event) {
-
+        event.setCancelled(true);
     }
 
     @Override
     public void onLeftClick(PlayerInteractEvent e) {
         Player p = e.getPlayer();
+        Block block = e.getClickedBlock();
+        if(block == null) return;
+        Location second = block.getLocation();
 
-        Location second = e.getClickedBlock().getLocation();
         UUID uuid = p.getUniqueId();
         ClanModule module = Main.getInstance().getClanModule();
         Clan clan = module.getClanManager().getMyClan(uuid);
@@ -62,19 +67,23 @@ public class ClaimTool extends CustomItem {
 
             int maxBlocks = Main.getInstance().getConfig().getInt("claims.max-blocks");
 
-//            if (clan.getUsedBlocks() + claim.getVolume() > maxBlocks) {
-//                p.sendMessage("§cClaim too large.");
-//                return;
-//            }
+            if (clan.getUsedBlocks() + claim.getVolume() > maxBlocks) {
+                p.sendMessage("§cClaim too large. Current use of space: " + clan.getUsedBlocks() + "/" + maxBlocks);
+                return;
+            }
             Claim overlapping = module.getClaimManager().overlaps(claim);
-            Clan overlappingClan = module.getClanManager().getClanById(overlapping.getClanId());
 
-            if (overlappingClan != null) {
-                ClanModule.sendText(p,"§cThis area is overlapping with already claimed land from Clan " + overlappingClan.getName() + ".");
-                e.setCancelled(true);
-                return;
+            if(overlapping != null) {
+                Clan overlappingClan = module.getClanManager().getClanById(overlapping.getClanId());
+
+                if (overlappingClan != null) {
+                    ClanModule.sendText(p,"§cThis area is overlapping with already claimed land from Clan " + overlappingClan.getName() + ".");
+                    e.setCancelled(true);
+                    return;
+                }
             }
 
+
             module.getClaimManager().registerClaim(claim);
             clan.addClaim(claim);
             ClanModule.sendText(p,"§aSecond corner set.");

+ 0 - 71
src/main/java/me/lethunderhawk/custom/item/concrete/TeleportSword.java

@@ -1,71 +0,0 @@
-package me.lethunderhawk.custom.item.concrete;
-
-import me.lethunderhawk.custom.item.abstraction.CustomItem;
-import org.bukkit.*;
-import org.bukkit.entity.Player;
-import org.bukkit.event.player.PlayerInteractEvent;
-import org.bukkit.inventory.ItemStack;
-import org.bukkit.inventory.meta.ItemMeta;
-import org.bukkit.plugin.java.JavaPlugin;
-
-import java.util.Arrays;
-
-/**
- * Teleport Sword - Right-click to teleport forward
- */
-public class TeleportSword extends CustomItem {
-
-    public TeleportSword(JavaPlugin plugin) {
-        super(
-                plugin,
-                "teleport_sword",
-                ChatColor.AQUA + "Sword of Teleportation",
-                Arrays.asList(
-                        ChatColor.GRAY + "Right-click to teleport forward",
-                        ChatColor.GRAY + "Left-click to teleport upward",
-                        "",
-                        ChatColor.DARK_PURPLE + "Legendary Weapon"
-                ),
-                Material.DIAMOND_SWORD
-        );
-    }
-
-    @Override
-    protected void applyCustomizations(ItemStack item) {
-        // Add enchantment glint (without actual enchantment)
-        ItemMeta meta = item.getItemMeta();
-        meta.addEnchant(org.bukkit.enchantments.Enchantment.LURE, 1, true);
-        meta.addItemFlags(org.bukkit.inventory.ItemFlag.HIDE_ENCHANTS);
-        item.setItemMeta(meta);
-    }
-
-    @Override
-    public void onRightClick(PlayerInteractEvent event) {
-        Player player = event.getPlayer();
-        Location target = player.getTargetBlock(null, 30).getLocation().add(0.5, 1, 0.5);
-
-        // Visual effects
-        player.getWorld().playSound(player.getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 1.0f, 1.0f);
-        player.getWorld().spawnParticle(Particle.PORTAL, player.getLocation(), 50);
-
-        // Teleport player
-        player.teleport(target);
-
-        // Post-teleport effects
-        player.getWorld().playSound(target, Sound.ENTITY_ENDERMAN_TELEPORT, 1.0f, 1.0f);
-        player.getWorld().spawnParticle(Particle.DRAGON_BREATH, target, 30);
-
-        // Cooldown
-        player.setCooldown(getBaseMaterial(), 100); // 5 second cooldown (20 ticks = 1 second)
-    }
-
-    @Override
-    public void onLeftClick(PlayerInteractEvent event) {
-        Player player = event.getPlayer();
-        Location target = player.getLocation().add(0, 10, 0);
-
-        player.getWorld().playSound(player.getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 1.0f, 1.0f);
-        player.teleport(target);
-        player.setCooldown(getBaseMaterial(), 60);
-    }
-}

+ 0 - 2
src/main/java/me/lethunderhawk/economy/api/EconomyPlaceholder.java

@@ -32,8 +32,6 @@ public class EconomyPlaceholder extends PlaceholderExpansion {
             return String.valueOf(api.getMoney(p.getUniqueId()));
         }else if (identifier.equalsIgnoreCase("formattedTime") && p != null) {
             return String.valueOf(api.getFormattedTime());
-        }else if (identifier.equalsIgnoreCase("region") && p != null) {
-            return String.valueOf(api.getRegion(p.getUniqueId()));
         }
         return null;
     }

+ 2 - 0
src/main/resources/config.yml

@@ -0,0 +1,2 @@
+claims:
+  max-blocks: 25000