3
0
Mirror von https://github.com/St3venAU/ArmorStandTools.git synchronisiert 2024-12-27 12:00:07 +01:00

Convert to Maven project for easier maintaining. Add NMS 1.16 using disabled slot field bA. Seems to work as it did before. Updated Plot Squared hook as well to new version of PS.

Dieser Commit ist enthalten in:
Matthew Hildebrand 2020-08-04 10:49:59 -05:00
Ursprung 1b73ccf167
Commit a27d5aab90
49 geänderte Dateien mit 558 neuen und 12 gelöschten Zeilen

80
pom.xml Normale Datei
Datei anzeigen

@ -0,0 +1,80 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>groupId</groupId>
<artifactId>ArmorStandTools</artifactId>
<version>1.0-SNAPSHOT</version>
<name>ArmorStandTools</name>
<repositories>
<repository>
<id>paper-repo</id>
<url>https://papermc.io/repo/repository/maven-public</url>
</repository>
<!-- WorldEdit -->
<repository>
<id>sk89q-repo</id>
<url>http://maven.sk89q.com/repo/</url>
</repository>
<!-- PlotSquared -->
<repository>
<id>IntellectualSites</id>
<url>https://mvn.intellectualsites.com/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot</artifactId>
<version>1.16.1-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.sk89q.worldguard</groupId>
<artifactId>worldguard-bukkit</artifactId>
<version>7.0.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.sk89q.worldedit</groupId>
<artifactId>worldedit-core</artifactId>
<version>7.2.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<!-- PlotSquared Core API -->
<dependency>
<groupId>com.plotsquared</groupId>
<artifactId>PlotSquared-Core</artifactId>
<version>5.13.0</version>
</dependency>
</dependencies>
<build>
<defaultGoal>clean package install</defaultGoal>
<sourceDirectory>src/main/java</sourceDirectory>
<finalName>${project.name}-${project.version}</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*.yml</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

Datei anzeigen

@ -4,6 +4,7 @@ import com.sk89q.worldedit.bukkit.BukkitAdapter;
import com.sk89q.worldguard.WorldGuard;
import com.sk89q.worldguard.protection.flags.StateFlag;
import com.sk89q.worldguard.protection.managers.RegionManager;
import com.sk89q.worldguard.protection.regions.RegionContainer;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
@ -172,7 +173,7 @@ public class Main extends JavaPlugin {
p.sendMessage(ChatColor.RED + Config.noAirError);
return;
}
b.setType(Material.SIGN);
b.setType(Material.OAK_SIGN);
nms.openSign(p, b);
b.setMetadata("armorStand", new FixedMetadataValue(this, as.getUniqueId()));
b.setMetadata("setName", new FixedMetadataValue(this, true));
@ -184,7 +185,7 @@ public class Main extends JavaPlugin {
p.sendMessage(ChatColor.RED + Config.noAirError);
return;
}
b.setType(Material.SIGN);
b.setType(Material.OAK_SIGN);
nms.openSign(p, b);
b.setMetadata("armorStand", new FixedMetadataValue(this, as.getUniqueId()));
b.setMetadata("setSkull", new FixedMetadataValue(this, true));
@ -212,9 +213,14 @@ public class Main extends JavaPlugin {
}
private boolean getWorldGuardAstFlag(Location l) {
RegionManager regions = WorldGuard.getInstance().getPlatform().getRegionContainer().get(BukkitAdapter.adapt(l.getWorld()));
if(regions == null) return true;
return regions.getApplicableRegions(BukkitAdapter.asBlockVector(l)).testState(null, (StateFlag) WG_AST_FLAG);
if (l != null) {
RegionContainer regionContainer = WorldGuard.getInstance().getPlatform().getRegionContainer();
RegionManager regions = regionContainer.get(BukkitAdapter.adapt(l.getWorld()));
if (regions == null) return true;
return regions.getApplicableRegions(BukkitAdapter.asBlockVector(l)).testState(null, (StateFlag) WG_AST_FLAG);
} else {
return false;
}
}
boolean playerHasPermission(Player p, Block b, ArmorStandTool tool) {

Datei anzeigen

@ -424,7 +424,7 @@ public class MainListener implements Listener {
@EventHandler
public void onBlockBreak(BlockBreakEvent event) {
Block b = event.getBlock();
if((b.getType() == Material.PLAYER_HEAD && b.hasMetadata("protected")) || (b.getType() == Material.SIGN && b.hasMetadata("armorStand"))) {
if((b.getType() == Material.PLAYER_HEAD && b.hasMetadata("protected")) || (b.getType() == Material.OAK_SIGN && b.hasMetadata("armorStand"))) {
event.setCancelled(true);
}
}

Datei anzeigen

@ -0,0 +1,13 @@
package com.gmail.St3venAU.plugins.ArmorStandTools;
@SuppressWarnings("unused")
class NMS_v1_16_R1 extends NMS {
public NMS_v1_16_R1(String nmsVersion) {
super(
nmsVersion,
"bA"
);
}
}

Datei anzeigen

@ -1,10 +1,9 @@
package com.gmail.St3venAU.plugins.ArmorStandTools;
import com.github.intellectualsites.plotsquared.api.PlotAPI;
import com.github.intellectualsites.plotsquared.bukkit.util.BukkitUtil;
import com.github.intellectualsites.plotsquared.plot.object.Plot;
import com.github.intellectualsites.plotsquared.plot.object.PlotArea;
import com.github.intellectualsites.plotsquared.plot.object.PlotPlayer;
import com.plotsquared.core.api.PlotAPI;
import com.plotsquared.core.player.PlotPlayer;
import com.plotsquared.core.plot.Plot;
import com.plotsquared.core.plot.PlotArea;
import org.bukkit.Location;
import org.bukkit.entity.Player;
@ -25,7 +24,10 @@ class PlotSquaredHook {
}
public static boolean checkPermission(Player player, Location location) {
com.github.intellectualsites.plotsquared.plot.object.Location plotLocation = BukkitUtil.getLocation(location);
com.plotsquared.core.location.Location plotLocation = new com.plotsquared.core.location.Location(location.getWorld().getName(),
location.getBlockX(),
location.getBlockY(),
location.getBlockZ());
PlotArea plotArea = plotLocation.getPlotArea();
if(plotArea == null) {
plugin.debug("plots.admin.build.road: " + player.hasPermission("plots.admin.build.road"));

Binäre Datei nicht angezeigt.

125
target/classes/config.yml Normale Datei
Datei anzeigen

@ -0,0 +1,125 @@
# Armor Stand Tools
# by St3venAU
# St3venAU@gmail.com
#
# Main Config
#
# File generated by: v3.5.0
# (If this is not the version you are running, consider deleting this
# config to allow it to be re-created. There may be new config options)
#
# Features:
# - Summon armor stands
# - Name armor stands
# - Toggle: Gravity, Visibility, Arms, Base, Size, Invulnerability, Equipment Lock
# - Manipulate the position of the Head, Body, Arms and Legs
# - Full control over armor stand's inventory (armor & items in hands)
# - Clone armor stand tool
# - Create command block tool: Creates a command block with the command that will summon this
# armor stand in its current state
# - Player head tool: Set's an armor stand's head to the head of a specified player.
# - Support for WorldGuard regions.
# - User customizable language config.
#
# Commands:
# /astools Give yourself all of the armor stand tools (Note: Clears your inventory)
# /astools reload Reload the armor stand tools plugin config file
# /ast Alias for the /astools
# /ascmd assign console <command> Assign a console command to the nearest armor stand (within 4 blocks)
# /ascmd assign player <command> Assign a player command to the nearest armor stand
# /ascmd remove Remove the command assigned to the nearest armor stand
# /ascmd view View the command assigned to the nearest armor stand
# /ascmd cooldown <ticks> Set the cooldown for the command on nearest armor stand (Setting this overrides the default cooldown from config.yml)
# /ascmd cooldown remove Remove the cooldown for the command on nearest armor stand (Default cooldown set in config.yml will be used)
# Note: Commands may include a %player% placeholder, which will get replaced by the executing player's name at time of execution.
#
# Permissions:
# astools.command Permission for the /astools command
# astools.reload Permission to reload the plugin with /astools reload
# astools.use Permission for using any of the tools (except the ones below that have their own separate permissions)
# astools.clone Permission to use the clone tool (Clones an armor stand without requiring the materials)
# astools.summon Permission to use the summon tool (Summons an armor stand without requiring the materials)
# astools.head Permission to use the player head tool (Ability to specify a player head for an armor stand)
# astools.cmdblock Permission to use the save tool (Creates a command block)
# astools.ascmd.assign.console Permission to assign a console command to an armor stand
# astools.ascmd.assign.player Permission to assign a player command to an armor stand
# astools.ascmd.remove Permission to remove a command from an armor stand
# astools.ascmd.view Permission to view the command assigned to an armor stand
# astools.ascmd.execute Permission to execute a command assigned to an armor stand by (on right click)
# astools.bypass-wg-flag Permission to bypass AST's custom worldguard flag (see below for more details)
#
# WorldGuard Integration:
# - If a player does not have build permission for the region, that player will also be denied the use of AST in that region.
# - Additionally, there is a custom region flag named 'ast' which defaults to Allow, this can be changed to Deny if you wish to have a
# region in which players have build permission, but not permission to use AST.
# - The ast worldguard flag is ignored for any player with the permission node 'astools.bypass-wg-flag'. This means that a player with
# this permission can use AST in worldguard regions even if the ast flag for that region is set to Deny.
# - The ast worldguard flag is also ignored for players that have op.
#
# These are the defaults for spawning new armor stands with the /astools (or /ast) armor stand
# The helmet, chest, pants, boots and inHand items are set like this: MATERIAL dataValue
# e.g. To have red wool in the armor stands hand by default: inHand: WOOL 14
#
integrateWithWorldGuard: true
allowMovingStandsBetweenWorlds: false
deactivateToolsOnWorldChange: true
requireCreativeForSaveAsCmdBlock: false
defaultASCmdCooldownTicks: 0
bypassWorldguardForASCmdExecution: false
# Uncomment the section below to deny players access to commands of your choice when they have any AST tools in their inventory
# Add as many command as you wish. Only the first word of each command is needed, anything after the first space is ignored.
#deniedCommandsWhileUsingTools:
# - sell
helmet: AIR 0
chest: AIR 0
pants: AIR 0
boots: AIR 0
inHand: AIR 0
inOffHand: AIR 0
isVisible: true
isSmall: false
hasArms: true
hasBasePlate: false
hasGravity: false
name: ''
invulnerable: false
equipmentLock: false
enableTool:
headX: true
headY: true
headZ: true
lArmX: true
lArmY: true
lArmZ: true
rArmX: true
rArmY: true
rArmZ: true
moveX: true
moveY: true
moveZ: true
lLegX: true
lLegY: true
lLegZ: true
rLegX: true
rLegY: true
rLegZ: true
bodyX: true
bodyY: true
bodyZ: true
summon: true
gui: true
rotat: true
gui_clone: true
gui_save: true
gui_invis: true
gui_size: true
gui_base: true
gui_grav: true
gui_arms: true
gui_name: true
gui_slots: true
gui_pHead: true
gui_invul: true
gui_move: true
gui_glow: true

263
target/classes/language.yml Normale Datei
Datei anzeigen

@ -0,0 +1,263 @@
# Armor Stand Tools
# by St3venAU
# St3venAU@gmail.com
#
# Language Config
#
# File generated by: v3.5.0
# (If this is not the version you are running, consider deleting this
# config to allow it to be re-created. There may be new config options)
#
# If you are looking for a translated version of this file, check here:
# https://www.spigotmc.org/resources/armor-stand-tools.2237/
#
# Edit these strings if you wish to customize the wording
# or the language of the text used in this plugin.
#
# IMPORTANT: Only edit the text that is between the single
# quotation marks: 'like this'
# If you change anything outside of the quotation marks,
# errors will occur.
# Do not use ' marks inside the string itself.
#
# If you ever wish to return to the default language config,
# delete this file and reload the plugin. A new default language
# file will be generated.
#
####################
# General Messages #
####################
invReturned: 'Inventory contents returned'
asDropped: 'Armor stand dropped'
asVisible: 'Visible'
isTrue: 'True'
isFalse: 'False'
carrying: 'Carrying armor stand. Click to drop.'
generalNoPerm: 'No permission for this tool and/or region'
cbCreated: 'Command block created'
size: 'Size'
small: 'Small'
normal: 'Normal'
basePlate: 'Base plate'
isOn: 'On'
isOff: 'Off'
gravity: 'Gravity'
arms: 'Arms'
invul: 'Invulnerability'
equip: 'Equipment'
locked: 'Locked'
unLocked: 'Un-Locked'
currently: 'Currently'
notConsole: 'This command can not be run from console'
giveMsg1: 'Given armor stand tools. L-click any tool to cycle through tools.'
giveMsg2: 'Run this command again to return your inventory.'
conReload: 'Armor Stand Tools config reloaded'
noRelPerm: 'You do not have permission to reload the plugin'
noAirError: 'Error: Failed to find a near-by air block. Move and try again.'
pleaseWait: 'Please wait. this may take a few seconds...'
appliedHead: 'Applied the head of player'
invalidName: 'is not a valid minecraft username'
wgNoPerm: 'No permission to alter an armor stand in this region'
headFailed: 'Failed to apply the player head. Try again.'
noCommandPerm: 'You do not have permission to use this command'
armorStand: 'Armor Stand'
none: 'None'
guiInUse: 'This armor stands GUI is in use'
# New since v2.4.0:
noASNearBy: 'No armor stand found near by'
closestAS: 'Closest armor stand'
hasNoCmd: 'has no command assigned'
hasCmd: 'has an assigned a command'
type: 'Type'
command: 'Command'
unassignedCmd: 'Unassigned command from armor stand'
assignedCmdToAS: 'Assigned command to closest armor stand'
assignCmdError: 'An error occured while assigning command to closest armor stand'
ascmdHelp: 'This command is used to assign a command to the nearest armor stand (within 4 blocks). The command is executed when the armor stand is right clicked.'
viewCmd: 'View assigned command'
removeCmd: 'Remove assigned command'
assignConsole: 'Assign a command to be executed by the console'
assignPlayer: 'Assign a command to be executed by the player'
executeCmdError: 'An error occured executing the command assigned to this armor stand'
# New since v3.2.0
creativeRequired: 'Creative mode is required to save an armor stand as a command block'
# New since v3.3.0
cmdOnCooldown: 'This command is on cooldown'
cooldownRemovedFrom: 'Cooldown removed from'
isAnInvalidCooldown: 'is an invalid cooldown time'
cooldownSetTo: 'Cooldown set to'
ticksFor: 'ticks for'
setCooldown: 'Set the cooldown for the command'
removeCooldown: 'Remove the cooldown for the command'
# New since v3.4.1
glow: 'Glow'
cmdNotAllowed: 'That command is not allowed while using Armor Stand Tools'
#
#############################
# Tool names & descriptions #
#############################
tool:
summon:
name: 'Summon Armor Stand'
lore:
- 'R-Click to summon an armor stand and pick it up'
- 'Any click will drop it'
gui:
name: 'GUI Multi-Tool'
lore:
- 'R-Click armor stand to open a GUI to tweak'
- 'the attributes of the armor stand or change'
- 'its armor and items'
rotat:
name: 'Rotation'
lore:
- 'R-Click armor stand to change its Rotation'
- 'Value depends on how high up the body you click'
headX:
name: 'Head X'
lore:
- 'R-Click armor stand to change Head X Value'
- 'Value depends on how high up the body you click'
headY:
name: 'Head Y'
lore:
- 'R-Click armor stand to change Head Y Value'
- 'Value depends on how high up the body you click'
headZ:
name: 'Head Z'
lore:
- 'R-Click armor stand to change Head Z Value'
- 'Value depends on how high up the body you click'
lArmX:
name: 'Left Arm X'
lore:
- 'R-Click armor stand to change Left Arm X Value'
- 'Value depends on how high up the body you click'
lArmY:
name: 'Left Arm Y'
lore:
- 'R-Click armor stand to change Left Arm Y Value'
- 'Value depends on how high up the body you click'
lArmZ:
name: 'Left Arm Z'
lore:
- 'R-Click armor stand to change Left Arm Z Value'
- 'Value depends on how high up the body you click'
rArmX:
name: 'Right Arm X'
lore:
- 'R-Click armor stand to change Right Arm X Value'
- 'Value depends on how high up the body you click'
rArmY:
name: 'Right Arm Y'
lore:
- 'R-Click armor stand to change Right Arm Y Value'
- 'Value depends on how high up the body you click'
rArmZ:
name: 'Right Arm Z'
lore:
- 'R-Click armor stand to change Right Arm Z Value'
- 'Value depends on how high up the body you click'
moveX:
name: 'Move X'
lore:
- 'R-Click armor stand to move +0.1 X'
- 'Crouch R-Click for -0.1 X'
moveY:
name: 'Move Y'
lore:
- 'R-Click armor stand to move +0.1 Y'
- 'Crouch R-Click for -0.1 Y'
moveZ:
name: 'Move Z'
lore:
- 'R-Click armor stand to move +0.1 Z'
- 'Crouch R-Click for -0.1 Z'
lLegX:
name: 'Left Leg X'
lore:
- 'R-Click armor stand to change Left Leg X'
- 'Value depends on how high up the body you click'
lLegY:
name: 'Left Leg Y'
lore:
- 'R-Click armor stand to change Left Leg Y'
- 'Value depends on how high up the body you click'
lLegZ:
name: 'Left Leg Z'
lore:
- 'R-Click armor stand to change Left Leg Z'
- 'Value depends on how high up the body you click'
rLegX:
name: 'Right Leg X'
lore:
- 'R-Click armor stand to change Right Leg X'
- 'Value depends on how high up the body you click'
rLegY:
name: 'Right Leg Y'
lore:
- 'R-Click armor stand to change Right Leg Y'
- 'Value depends on how high up the body you click'
rLegZ:
name: 'Right Leg Z'
lore:
- 'R-Click armor stand to change Right Leg Z'
- 'Value depends on how high up the body you click'
bodyX:
name: 'Body X'
lore:
- 'R-Click armor stand to change Body X'
- 'Value depends on how high up the body you click'
bodyY:
name: 'Body Y'
lore:
- 'R-Click armor stand to change Body Y'
- 'Value depends on how high up the body you click'
bodyZ:
name: 'Body Z'
lore:
- 'R-Click armor stand to change Body Z'
- 'Value depends on how high up the body you click'
gui_move:
name: 'Pick Up (Move)'
lore:
- 'Pick up this armor stand to move it'
gui_clone:
name: 'Clone'
lore:
- 'Clone this armor stand and pick it up'
gui_save:
name: 'Create Command Block'
lore:
- 'Create command block to'
- 'summon this armor stand'
gui_invis:
name: 'Toggle Visibility'
lore:
gui_size:
name: 'Toggle Size'
lore:
gui_base:
name: 'Toggle Base'
lore:
gui_grav:
name: 'Toggle Gravity'
lore:
gui_arms:
name: 'Toggle Arms'
lore:
gui_name:
name: 'Change Name'
lore:
gui_slots:
name: 'Toggle Equipment Lock'
lore:
gui_pHead:
name: 'Give Player Head'
lore:
gui_invul:
name: 'Toggle Invulnerability'
lore:
gui_glow:
name: 'Toggle Glow'
lore:

15
target/classes/plugin.yml Normale Datei
Datei anzeigen

@ -0,0 +1,15 @@
main: com.gmail.St3venAU.plugins.ArmorStandTools.Main
name: ArmorStandTools
version: 3.5.0
api-version: 1.15
author: St3venAU
description: Armor stand manipulation tools
softdepend: [WorldGuard, PlotSquared]
commands:
astools:
description: Give yourself the armor stand tools
aliases: ast
usage: Usage /astools or /astools reload
ascmd:
description: View/Remove/Assign the command assigned to the nearest armor stand
usage: Usage /ascmd view, /ascmd remove, /ascmd assign <player/console> <command>

Datei anzeigen

@ -0,0 +1,5 @@
#Generated by Maven
#Tue Aug 04 10:46:16 CDT 2020
version=1.0-SNAPSHOT
groupId=groupId
artifactId=ArmorStandTools

Datei anzeigen

@ -0,0 +1,22 @@
com\gmail\St3venAU\plugins\ArmorStandTools\ArmorStandTool.class
com\gmail\St3venAU\plugins\ArmorStandTools\Config.class
com\gmail\St3venAU\plugins\ArmorStandTools\NMS_v1_15_R1.class
com\gmail\St3venAU\plugins\ArmorStandTools\ArmorStandGUI.class
com\gmail\St3venAU\plugins\ArmorStandTools\ArmorStandGUI$2.class
com\gmail\St3venAU\plugins\ArmorStandTools\Commands.class
com\gmail\St3venAU\plugins\ArmorStandTools\MainListener$3.class
com\gmail\St3venAU\plugins\ArmorStandTools\MainListener$1.class
com\gmail\St3venAU\plugins\ArmorStandTools\NMS.class
com\gmail\St3venAU\plugins\ArmorStandTools\NMS_v1_13_R2.class
com\gmail\St3venAU\plugins\ArmorStandTools\NMS$1.class
com\gmail\St3venAU\plugins\ArmorStandTools\NMS_v1_14_R1.class
com\gmail\St3venAU\plugins\ArmorStandTools\Main.class
com\gmail\St3venAU\plugins\ArmorStandTools\MainListener$2.class
com\gmail\St3venAU\plugins\ArmorStandTools\NMS_v1_16_R1.class
com\gmail\St3venAU\plugins\ArmorStandTools\ArmorStandGUI$1.class
com\gmail\St3venAU\plugins\ArmorStandTools\NMS_v1_13_R1.class
com\gmail\St3venAU\plugins\ArmorStandTools\Utils.class
com\gmail\St3venAU\plugins\ArmorStandTools\MainListener.class
com\gmail\St3venAU\plugins\ArmorStandTools\PlotSquaredHook.class
com\gmail\St3venAU\plugins\ArmorStandTools\ArmorStandCmd$1.class
com\gmail\St3venAU\plugins\ArmorStandTools\ArmorStandCmd.class

Datei anzeigen

@ -0,0 +1,15 @@
C:\Users\Korvi\IdeaProjects\ArmorStandTools\src\main\java\com\gmail\St3venAU\plugins\ArmorStandTools\Main.java
C:\Users\Korvi\IdeaProjects\ArmorStandTools\src\main\java\com\gmail\St3venAU\plugins\ArmorStandTools\NMS_v1_15_R1.java
C:\Users\Korvi\IdeaProjects\ArmorStandTools\src\main\java\com\gmail\St3venAU\plugins\ArmorStandTools\NMS_v1_13_R2.java
C:\Users\Korvi\IdeaProjects\ArmorStandTools\src\main\java\com\gmail\St3venAU\plugins\ArmorStandTools\PlotSquaredHook.java
C:\Users\Korvi\IdeaProjects\ArmorStandTools\src\main\java\com\gmail\St3venAU\plugins\ArmorStandTools\NMS_v1_16_R1.java
C:\Users\Korvi\IdeaProjects\ArmorStandTools\src\main\java\com\gmail\St3venAU\plugins\ArmorStandTools\Commands.java
C:\Users\Korvi\IdeaProjects\ArmorStandTools\src\main\java\com\gmail\St3venAU\plugins\ArmorStandTools\ArmorStandTool.java
C:\Users\Korvi\IdeaProjects\ArmorStandTools\src\main\java\com\gmail\St3venAU\plugins\ArmorStandTools\NMS_v1_14_R1.java
C:\Users\Korvi\IdeaProjects\ArmorStandTools\src\main\java\com\gmail\St3venAU\plugins\ArmorStandTools\ArmorStandCmd.java
C:\Users\Korvi\IdeaProjects\ArmorStandTools\src\main\java\com\gmail\St3venAU\plugins\ArmorStandTools\Utils.java
C:\Users\Korvi\IdeaProjects\ArmorStandTools\src\main\java\com\gmail\St3venAU\plugins\ArmorStandTools\ArmorStandGUI.java
C:\Users\Korvi\IdeaProjects\ArmorStandTools\src\main\java\com\gmail\St3venAU\plugins\ArmorStandTools\MainListener.java
C:\Users\Korvi\IdeaProjects\ArmorStandTools\src\main\java\com\gmail\St3venAU\plugins\ArmorStandTools\NMS.java
C:\Users\Korvi\IdeaProjects\ArmorStandTools\src\main\java\com\gmail\St3venAU\plugins\ArmorStandTools\Config.java
C:\Users\Korvi\IdeaProjects\ArmorStandTools\src\main\java\com\gmail\St3venAU\plugins\ArmorStandTools\NMS_v1_13_R1.java