Polymart • Spigot • Documentation • Website • Status
AdvancedArmorStands lets you create, customize, animate and manage armor stands on your server, with in-game menus, reusable types, animations, click actions and a developer API. It is built with XSeries1 for cross-version compatibility, so one jar works from 1.8 all the way up to the latest versions.
- Links
- Supported Languages
- Requirements
- FAQ
- Documentation
- Configuration
- Artificial Intelligence
- Contributors
- Donate
By using this plugin, you agree to the Terms of Service.
| Platform | Link |
|---|---|
| Polymart | advancedarmorstands |
| Spigot | advancedarmorstands.121022 |
| Website | advancedarmorstands.ir |
| Documentation | docs.advancedarmorstands.ir |
| Status | status.advancedarmorstands.ir |
English, Italian, Persian, Portuguese, Russian, Spanish, Turkish, Bangla, Indonesian, Polish, Romanian, and more. Add your own2!
This document contains the configuration details for AdvancedArmorStands.
The config.yml file is the plugin's main configuration file:
# Main configuration
config-version: 1.0.2 # <========== Config version (don't touch)
language: en # <========== Language
hide-cache-folder: true # <========== Hide the cache folder (windows only)
debug: false # <========== Enable & Disable debug
shift-right-click-to-add: true # <========== Enable & Disable shift-right-click to add ArmorStand
shift-click-to-delete: false # <========== Enable & Disable shift-right-click to delete ArmorStand
auto-load-armor-stands: false # <========== Automatically reload armor stands on server restart
ai:
token: 'PLACE_YOUR_TOKEN_HERE' # <========== Token for AI integration (place your actual token here)
allow-players: true # <========== Allow players to interact with the AI systemdefault: # <====== Name of the type
arms: true # <====== Has arms?
basePlate: false # <====== Does it have a baseplate?
customName: '&cMade with aas' # <====== Custom name for the entity
isCustomNameVisible: false # <====== Should the custom name be visible?
isVisible: true # <====== Is visible?
isSmall: false # <====== Is small?
itemInHandMaterial: WOOD_SWORD # <====== Item held in the hand
headPos: {} # <====== Head position (empty by default)
rightArmPose: # <====== Right arm pose
x: -45
y: 0
z: 0
leftArmPose: # <====== Left arm pose
x: 45
y: 0
z: 0
rightLegPose: # <====== Right leg pose
x: 45
y: 0
z: 0
leftLegPose: # <====== Left leg pose
x: -45
y: 0
z: 0Important
Modify itemInHandMaterial to any valid Minecraft material (on your Minecraft version).
Note
Players can create as many types as they want, but each type must have a unique name.
Each type can be used in-game with the create sub-command.
animations:
wave: # <====== Animation name or type
interval: 10 # <====== Interval between each animation frame (in ticks)
loop: true # <====== Should the animation loop? (true or false)
steps: # <====== List of animation steps
- head: # <====== Head pose for this step
x: 0 # <====== Head X rotation
y: 0 # <====== Head Y rotation
z: 0 # <====== Head Z rotation
left_arm: # <====== Left arm pose for this step
x: -30 # <====== Left arm X rotation
y: 0 # <====== Left arm Y rotation
z: -10 # <====== Left arm Z rotation
right_arm: # <====== Right arm pose for this step
x: -30 # <====== Right arm X rotation
y: 0 # <====== Right arm Y rotation
z: 10 # <====== Right arm Z rotation
left_leg: #<====== Left leg X rotation
y: 0 # <====== Left leg pose for this step
x: 10 # <====== Left leg Y rotation
z: 0 # <====== Left leg Z rotation
right_leg: # <====== Right leg pose for this step
x: -10 # <====== Right leg X rotation
y: 0 # <====== Right leg Y rotation
z: 0 # <====== Right leg Z rotation
- head:
x: 0 # <====== Head X rotation
y: 0 # <====== Head Y rotation
z: 0 # <====== Head Z rotation
left_arm:
x: -10 # <====== Left arm X rotation
y: 0 # <====== Left arm Y rotation
z: 30 # <====== Left arm Z rotation
right_arm:
x: -10 # <====== Right arm X rotation
y: 0 # <====== Right arm Y rotation
z: -30 # <====== Right arm Z rotation
left_leg:
x: -10 # <====== Left leg X rotation
y: 0 # <====== Left leg Y rotation
z: 0 # <====== Left leg Z rotation
right_leg:
x: 10 # <====== Right leg X rotation
y: 0 # <====== Right leg Y rotation
z: 0 # <====== Right leg Z rotationTip
Prefer a visual approach? Use the in-game animation creator or the online editor.
armorstand:
SavedStand101: # <====== Name of the armor stand
say-hello-world: # <====== Command name (use '-' instead of spaces)
type: player # <====== Command executor ('player' or 'server')
trigger: all # <====== Interaction that triggers the actionTip
Use the Armor Stand menu to create or delete actions easily.
Caution
Don't touch cache .aas files.
For more details, refer to the official documentation or community guides.
Artificial Intelligence 6
Since v1.26.0, AdvancedArmorStands includes AI features powered by Google Gemini.
Note
AI is disabled by default. You need to add your own API token before it will work.
1. Get a free API key from Google AI Studio.
2. Open your plugin's config.yml and find the ai section. Replace the placeholder with your key:
ai:
- token: 'PLACE_YOUR_TOKEN_HERE' # <========== Token for AI integration
+ token: 'AIzaSy...your-real-key' # <========== Paste your Google AI Studio key here
allow-players: true # <========== Allow players to interact with the AI systemImportant
The AI features will not work until you replace the placeholder with a valid token.
Warning
Never share your token or post your config.yml publicly. Anyone with your key can use your Google quota.
3. Restart the server. The AI options will now be unlocked.
| Option | Description |
|---|---|
token |
Your Google AI Studio API key |
allow-players |
Set to false if only admins should be able to use the AI |
When someone asks the AI for help, the plugin sends the request to Gemini in the background, so your server never freezes while waiting. Gemini answers with a structured command, and the plugin carries it out.
flowchart LR
A[Player asks AI] --> B[Plugin sends request<br/>to Google Gemini]
B --> C[Gemini replies with<br/>an action]
C --> D{Which action?}
D -- create --> E[Spawns an armor stand]
D -- remove --> F[Deletes an armor stand]
D -- pose --> G[Changes the pose]
D -- none --> H[Nothing happens]
E --> I[Reply is sent to the player]
F --> I
G --> I
H --> I
Technical details (for developers)
sequenceDiagram
autonumber
actor P as Player
participant AU as AiUtils (main thread)
participant AS as Async Thread
participant G as Google Gemini API
participant AA as handleAiAction
participant API as ArmorstandApi
P->>AU: Asks the AI for help
AU->>AU: getAssistInstructions() builds system prompt
AU->>AS: requestAsync(apiKey, instructions, userInput)
Note over AS,G: model gemini-3.5-flash-lite<br/>temperature 0.2, max 1024 tokens<br/>30s connect and read timeout
AS->>G: POST /v1beta/openai/chat/completions<br/>system = instructions, user = player message
G-->>AS: JSON reply (action, name, params, response)
alt Network error or HTTP code not 200
AS->>AS: resolveResult builds errorJson (action = none)
else HTTP 200
AS->>AS: parseChatCompletionsResponse extracts the text
end
AS->>AU: runTask back on the main thread
AU->>AA: handleAiAction(finalResult, player)
AA->>AA: extractJson strips markdown fences and parses JSON
alt action = create
AA->>API: createArmorStand(name, pose, location, player)
else action = remove
AA->>API: removeArmorStand(name)
else action = pose
AA->>API: previewPose(name, pose, player) then reloadPlugin()
else action = none or unknown
AA->>AA: warn "AI did not provide a valid action"
end
AU->>P: callback sends the "response" text from the JSON
AdvancedArmorStands is a completely independent project that I have built and maintained entirely on my own. I've put a lot of time and effort into the plugin, even though it currently has a relatively small user base.
I'm always doing my best to improve AdvancedArmorStands, fix issues, add new features, and make the experience as smooth and enjoyable as possible for everyone who uses it.
If you find the project useful and would like to support its development, you can make a donation below. Every bit of support is greatly appreciated and helps me keep working on the project.
Footnotes
-
XSeries is a Minecraft library that makes it possible to support different Minecraft versions with the same code ↩
-
To customize a language, copy it and rename it using the 'messages_.yml' format, then set this value to your custom language iso ↩
-
Spigot is a minecraft server software based on Bukkit that supports plugins ↩
-
Paper minecraft server software based on Spigot with improved performance and additional features ↩
-
Purpur minecraft server software based on Paper with extra configuration options and features ↩
-
AI is technology that enables computers to learn, understand information, and perform tasks that normally require human intelligence ↩


