Skip to main content

Development Guide

This guide is for developers who want to contribute to our plugin or build extensions using our API.

Setting Up the Development Environment

Prerequisites

Before you begin, make sure you have:

  • Java Development Kit (JDK) 8 or higher
  • Git
  • Maven or Gradle
  • An IDE (IntelliJ IDEA, Eclipse, or VS Code)

Getting Started

  1. Clone the repository:
git clone https://github.com/Parsa3323/AdvancedArmorStands.git
cd AdvancedArmorStands
  1. Set up the project in your IDE:

IntelliJ IDEA:

  • Open IntelliJ IDEA
  • Select "Open"
  • Navigate to the cloned repository
  • Select the pom.xml file and open as project

Eclipse:

  • Open Eclipse
  • Select "Import"
  • Choose "Existing Maven Projects"
  • Navigate to the cloned repository
  • Select the pom.xml file
  1. Build the project:

Maven:

mvn clean package

Gradle:

./gradlew clean build

The compiled JAR file will be in the target/ directory (Maven) or build/libs/ directory (Gradle).

Project Structure

AdvancedArmorStands/
├── .github/
│ ├── CODE_OF_CONDUCT.md
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.yml
│ │ └── config.yml
│ └── workflows/
│ └── test.yml
├── .gitignore
├── armorstand-api/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── parsa3323/
│ │ └── aas/
│ │ └── api/
│ │ ├── actions/
│ │ │ ├── SenderType.java
│ │ │ └── TriggerType.java
│ │ ├── ArmorstandApi.java
│ │ ├── events/
│ │ │ ├── ActionTriggerEvent.java
│ │ │ ├── ArmorStandCreateEvent.java
│ │ │ ├── ArmorStandDeleteEvent.java
│ │ │ ├── ArmorStandOptionChangeEvent.java
│ │ │ ├── ArmorStandRenameEvent.java
│ │ │ ├── ArmorStandStateChangeEvent.java
│ │ │ └── PlayerMoveArmorStandEvent.java
│ │ ├── exeption/
│ │ │ ├── ArmorStandNotFoundException.java
│ │ │ ├── ConfigException.java
│ │ │ └── ReloadException.java
│ │ ├── player/
│ │ │ └── IPlayer.java
│ │ └── versionSupport/
│ │ └── IVersionSupport.java
│ └── resources/
│ └── plugin.yml
├── armorstand-plugin/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── parsa3323/
│ │ └── aas/
│ │ ├── actions/
│ │ │ ├── manager/
│ │ │ │ ├── ActionItem.java
│ │ │ │ └── ActionManager.java
│ │ │ ├── SenderItem.java
│ │ │ └── TriggerItem.java
│ │ ├── AdvancedArmorStands.java
│ │ ├── API.java
│ │ ├── commands/
│ │ │ ├── AnimAddCommand.java
│ │ │ ├── AnimClearCommand.java
│ │ │ ├── CreateCommand.java
│ │ │ ├── DeleteCommand.java
│ │ │ ├── HeadCommand.java
│ │ │ ├── ListCommand.java
│ │ │ ├── manager/
│ │ │ │ ├── CommandManager.java
│ │ │ │ ├── SubCommand.java
│ │ │ │ └── TabComp.java
│ │ │ ├── MoveCommand.java
│ │ │ ├── OptionsCommand.java
│ │ │ ├── ReloadCommand.java
│ │ │ ├── RenameCommand.java
│ │ │ ├── SettingsCommand.java
│ │ │ └── TeleportCommand.java
│ │ ├── config/
│ │ │ ├── ActionConfig.java
│ │ │ ├── AnimationConfig.java
│ │ │ ├── ArmorStandsConfig.java
│ │ │ └── TypesConfig.java
│ │ ├── inventory/
│ │ │ ├── HeadItem.java
│ │ │ ├── LeftHandItem.java
│ │ │ ├── LeftLegItem.java
│ │ │ ├── manager/
│ │ │ │ ├── InventoryItem.java
│ │ │ │ └── InventoryManager.java
│ │ │ ├── RightHandItem.java
│ │ │ ├── RightLegItem.java
│ │ │ ├── RotateItem.java
│ │ │ └── SaveItem.java
│ │ ├── listener/
│ │ │ ├── ChatListener.java
│ │ │ ├── ItemDropListener.java
│ │ │ ├── PlayerDieListener.java
│ │ │ ├── PlayerIntractListener.java
│ │ │ ├── PlayerJoin.java
│ │ │ ├── PlayerLeaveEvent.java
│ │ │ └── StateListener.java
│ │ ├── menus/
│ │ │ ├── ActionMenu.java
│ │ │ ├── ArmorStandMenu.java
│ │ │ ├── manager/
│ │ │ │ ├── Menu.java
│ │ │ │ ├── MenuListener.java
│ │ │ │ └── PaginatedMenu.java
│ │ │ └── SaveMenu.java
│ │ ├── options/
│ │ │ ├── ArmsOptions.java
│ │ │ ├── BasePlateOption.java
│ │ │ ├── CustomNameOption.java
│ │ │ ├── CustomNameVisibleOption.java
│ │ │ ├── GlowingOption.java
│ │ │ ├── GravityOption.java
│ │ │ ├── manager/
│ │ │ │ ├── SettingsManager.java
│ │ │ │ └── SettingsOption.java
│ │ │ ├── SmallOption.java
│ │ │ └── VisibleOption.java
│ │ ├── placeholderapi/
│ │ │ └── PapiExpansion.java
│ │ ├── player/
│ │ │ ├── CustomPlayer.java
│ │ │ └── PlayerManager.java
│ │ └── utils/
│ │ ├── ActionUtils.java
│ │ ├── AnimationUtils.java
│ │ ├── ArmorStandSelectionCache.java
│ │ ├── ArmorStandUtils.java
│ │ ├── ColorUtils.java
│ │ ├── InventoryUtils.java
│ │ ├── PlayerMenuUtility.java
│ │ ├── PlayerUtils.java
│ │ ├── TextUtils.java
│ │ ├── TypeUtils.java
│ │ └── VersionSupportUtil.java
│ └── resources/
│ ├── config.yml
│ └── plugin.yml
├── COMMIT_TEMPLATES.md
├── CONTRIBUTING.md
├── LICENCE.txt
├── pom.xml
├── README.md
├── SECURITY.md
├── TERMS_OF_SERVICE.md
├── versionsupport_1_12/
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ └── com/
│ └── parsa3323/
│ └── versionsupport_1_12/
│ └── VersionSupport_1_12.java
├── versionsupport_1_16_5/
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ └── com/
│ └── parsa3323/
│ └── aas/
│ └── VersionSupport_1_16_5.java
├── versionsupport_1_20_1/
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ └── com/
│ └── parsa3323/
│ └── versionSupport_1_20_1/
│ └── VersionSupport_1_20_1.java
├── versionsupport_1_8/
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ └── com/
│ └── parsa3323/
│ └── aas/
│ └── VersionSupport_1_8.java
├── versionsupport_v1_17/
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ └── com/
│ └── parsa3323/
│ └── versionsupport_v1_17/
│ └── Versionsupport_v1_17.java
├── versionsupport_v1_18/
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── java/
│ └── com/
│ └── parsa3323/
│ └── versionsupport_v1_18/
│ └── Versionsupport_v1_18.java
└── versionsupport_v1_19/
├── pom.xml
└── src/
└── main/
└── java/
└── com/
└── parsa3323/
└── versionsupport_v1_19/
└── Versionsupport_v1_19.java


Making Changes

  1. Create a new branch for your feature or bugfix:
git checkout -b feature/your-feature-name
  1. Make your changes and write tests

  2. Make sure all tests pass:

mvn test
  1. Commit your changes:
git commit -m "Add your detailed commit message here"
  1. Push your branch:
git push origin feature/your-feature-name
  1. Create a pull request on GitHub

Building Addons

To build extensions for our plugin, use our API as described in the API documentation.

Getting Help

If you need help with development:

Code of Conduct

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.