Lightweight Spigot/Paper plugin and PlaceholderAPI expansion for AdvancedRegionMarket (ARM). Developed by INFUNV Studio for custom GUI integration (DeluxeMenus, ChestCommands, etc.) and custom unicode symbol mapping based on region availability.
ARMAddon serves as a bridge between AdvancedRegionMarket (ARM) and PlaceholderAPI (PAPI). Native ARM placeholders are designed primarily for chat and signs, making it difficult to render dynamic custom font glyphs, unicode symbols, or custom state toggles in GUI menus without complex Denizen/Skript wrappers.
ARMAddon directly hooks into the AdvancedRegionMarket Java API to evaluate region states in real-time and expose highly configurable, low-overhead placeholders.
- Fail-Safe Startup Architecture: Validates hard dependencies (
AdvancedRegionMarketandPlaceholderAPI) duringonEnable(). Automatically disables itself gracefully if dependencies are missing, preventing null-pointer exceptions or server crashes. - Configurable Symbol/State Mapping: Allows mapping occupied (
isSold(), subregions, active owners) and free region states to custom unicode characters or strings viaconfig.yml. - Zero Runtime Allocation Overhead: Placeholder evaluations utilize direct memory lookup from ARM's
RegionManager. - Admin Management Suite: Full in-game control via
/armaddonwith tab-completion and explicit permission nodes. - Multi-Stage Build Pipeline: Configured with Gradle, ShadowJar, and aggressive ProGuard bytecode shrinking/obfuscation.
- Minecraft Server: Spigot / Paper / Purpur
1.20.xor higher (Java 17 runtime required). - AdvancedRegionMarket: v3.5.0 or higher.
- PlaceholderAPI: v2.11.0 or higher.
- Ensure AdvancedRegionMarket and PlaceholderAPI are installed in your server's
plugins/directory. - Download the compiled
ARMAddon-x.x.x.jarfrom releases. - Place
ARMAddon-x.x.x.jarinto your server'splugins/folder. - Restart the server or execute
/plugman load ARMAddon. - Configure custom characters and messages in
plugins/ARMAddon/config.yml. - Run
/armaddon reloadto apply configuration changes without restarting.
All placeholders use the identifier armaddon.
| Placeholder | Description | Example Output |
|---|---|---|
%armaddon_status_<region>% |
Returns custom occupied/free character based on region state. | ʬ (Occupied) / ʨ (Free) |
%armaddon_owner_<region>% |
Returns nickname of the primary owner or fallback string. | Player123 / Free |
/armaddon(Aliases:/arma)
| Command | Description | Permission |
|---|---|---|
/armaddon help |
Displays administrative command syntax. | armaddon.admin |
/armaddon reload |
Reloads config.yml settings from disk. |
armaddon.admin |
/armaddon info |
Displays version, author, and dependency status. | armaddon.admin |
/armaddon placeholders |
Lists active placeholders and evaluated symbols. | armaddon.admin |
# ====================================================== #
# ARMAddon Configuration File #
# Created by INFUNV Studio #
# [https://infunv.ru](https://infunv.ru) #
# ====================================================== #
messages:
prefix: "&8[&bARMAddon&8] &r"
no-permission: "&cYou do not have permission to execute this command."
reload-success: "&aConfiguration successfully reloaded!"
unknown-subcommand: "&cUnknown subcommand. Use &b/armaddon help &cfor details."
placeholders:
status:
occupied: "ʬ" # String or unicode symbol when region is occupied/bought (\u02AC)
free: "ʨ" # String or unicode symbol when region is free/available (\u02A8)
not-found: "&c?" # Output when region does not exist
owner:
no-owner: "&aFree" # Displayed when region has no active owner
not-found: "&cN/A" # Output when region does not exist
- JDK 17 or higher
- Git
git clone [https://github.com/infunv/ARMAddon.git](https://github.com/infunv/ARMAddon.git)
cd ARMAddon
The repository includes pre-configured tasks for various environment builds:
# Standard Compilation (Generates lightweight un-obfuscated jar)
./gradlew build
# Fat-JAR Generation (Bundles relocated dependencies)
./gradlew shadowJar
# Production Build (Runs aggressive ProGuard shrinking and bytecode obfuscation)
./gradlew proguard
# Debug Build (Retains full line numbers, local variable tables, and source attributes)
./gradlew debugJar
The proguard task executes rules specified in proguard-rules.pro. It strips non-essential debugging metadata, renames non-API classes to single-letter descriptors, and optimizes execution pathways to yield minimum output binary size.
This project is licensed under the Apache License 2.0.
Copyright 2026 INFUNV Studio
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.