- Tested Minecraft Versions:
- Source Code:
QualityArmory is meant to be a replacement for Crackshot, as it's last released update was for 1.8. What this plugin aims to do is add guns into minecraft without affecting the base game. All 3D gun models are loaded onto select items and data values in such a way as to make sure you should never see those textures unless you are given a gun.
[!] I will not respond to bug fixes in the review section.[!]
If you are experiencing a problem with QA, please report this issue in the Discussions tab or the Github page, including any errors you recieve and whether you tried it on a clean server (with no other plugins installed). I will not respond to issues in the review section, so don't use it as a way to try to get faster responses.
The resourcepack is included in the core plugin, and can be configured in the config if needed:
By default, the resourcepack is sent when the player uses a /qa command, or when they interact with a custom item. These values are configurable in the config; The resourcepack can be disabled (useDefaultResourcepack), can be set to be sent when the player joins (sendOnJoin), or can even be overriden with a custom resourcepack (setting DefaultResourcepackOverride to true(so that QA knows its a custom url), and DefaultResourcepack to the URL of the resourcepack)
QualityArmory now supports crackshot weapons conversions. Drop the weapon configs for crackshot in the /newguns/ directory and reload to have QA convert the weapons. All crackshot weapons will now have a corresponding yml file for QA.
Since 1.8 does not allow multiple models per item, each gun needs to replace an item for this update. To get around this, if 1.8 is detected or if the server runs ViaVersion, a new system is implemented to work with 1.8. However, this limits the amount of weapons available.
When it comes to viaversion, by default, the system is in place which allows 1.9+ users to see all of the guns, but will limit the guns used by 1.8 players. In certain cases, 1.8 players will only see a single model for all of the 1.9+ guns, or it may have the weapon converted into an item that 1.8 players can see/use. If you wish for 1.8 weapons to be consistent across all versions, set "ManuallyOverrideTo_1_8_systems" to true in the config and delete the /newguns/, /armor/, /ammo/, /misc/ and /attachments/ directories.
- Adds new guns, such as P30, M16, M40, MP5, AK-47, Remmington, HeneryRifle, an RPG, and many, many, many more.
- Does not replace existing items in the game.
- Built-in resoucepack distributor; players will see the guns without you needing to change your server resoucepack.
- Built-in auto-updater, allowing for improvements and new guns to be synched with the server on reloads.
- Includes an API to allow other plugins to add guns
- Supports 1.9 - 1.12
- 1.8 has some support-Due to the way this update handled textures, there are currently only 15 guns. More may be added if I can find a work around.
- If LightAPI is installed, guns will have muzzle flashes.
- /QA give <Gun/Ammo>, gives the player the item if they have permission "qualityarmory.give"
- /QA craft, allows players to be able to craft guns if they have permission "qualityarmory.craft"
- /QA shop, allows players to open up the gun shops if they have permission "qualityarmory.shop"
- /QA reload, reloads all of the values for the plugin.
Creating custom guns is as easy as Crackshot. To learn how to create new guns, visit the Wiki HERE.
Also note that if you want to change any of the settings for any of the default guns, you will need to set "allowUserModifications" to true. This setting lets QA know that it should not try to update these files if there are any changes.
Plugins that support QualityArmory:
- Battle Royale
- [Support for other plugins can be added upon request]
Plugins that QualityArmory soft-depends on:
- LightAPI: Used for muzzle flashses when guns are used. [Not required]
- Parties: Used to disable friendly fire. [Not required]
- ProtocolLib: Used to smoothly change player's Yaw for recoil when guns are used [not required.]
- Vault: Used for the weapon shop. [Not required]
- ViaVersion: QuialityArmory has ViaVersion support that allows players from different minecraft updates to see the same models. [Not Required]
- Inherits qualityarmory.admin
- Inherits quailityarmory.default
You can view the API and how to use it here:
I created this plugin as a simple alternative to Crackshot, and never intended on making money from it. However, if you want to support me, you can do so through Paypal (PM me for details)
How to Install
- Drop this plugin into you plugins folder
- Find/Create a plugin that will allow you get to your world
- Restart your server
Quality Armory 1.1.157
A quality gun plugin similar to CrackShot.
- Fixed viaversion support, reloading error, and NPEs Feb 7, 2020
- Fixed API Feb 2, 2020
- Fixed yml file error Jan 30, 2020
Can u help?
[13:22:39] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to QualityArmory v1.1.155
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:320) ~[mc.jar:git-Spigot-56f8471-6567017]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[mc.jar:git-Spigot-56f8471-6567017]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:529) ~[mc.jar:git-Spigot-56f8471-6567017]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:514) ~[mc.jar:git-Spigot-56f8471-6567017]
at org.bukkit.craftbukkit.v1_14_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:437) ~[mc.jar:git-Spigot-56f8471-6567017]
at org.bukkit.craftbukkit.v1_14_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:404) ~[mc.jar:git-Spigot-56f8471-6567017]
at org.bukkit.craftbukkit.v1_14_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:400) ~[mc.jar:git-Spigot-56f8471-6567017]
at net.minecraft.server.v1_14_R1.PlayerConnection.a(PlayerConnection.java:1679) ~[mc.jar:git-Spigot-56f8471-6567017]
at net.minecraft.server.v1_14_R1.PacketPlayInArmAnimation.a(SourceFile:32) ~[mc.jar:git-Spigot-56f8471-6567017]
at net.minecraft.server.v1_14_R1.PacketPlayInArmAnimation.a(SourceFile:9) ~[mc.jar:git-Spigot-56f8471-6567017]
at net.minecraft.server.v1_14_R1.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:19) ~[mc.jar:git-Spigot-56f8471-6567017]
at net.minecraft.server.v1_14_R1.TickTask.run(SourceFile:18) [mc.jar:git-Spigot-56f8471-6567017]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeTask(SourceFile:144) [mc.jar:git-Spigot-56f8471-6567017]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) [mc.jar:git-Spigot-56f8471-6567017]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeNext(SourceFile:118) [mc.jar:git-Spigot-56f8471-6567017]
at net.minecraft.server.v1_14_R1.MinecraftServer.aX(MinecraftServer.java:909) [mc.jar:git-Spigot-56f8471-6567017]
at net.minecraft.server.v1_14_R1.MinecraftServer.executeNext(MinecraftServer.java:902) [mc.jar:git-Spigot-56f8471-6567017]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.awaitTasks(SourceFile:127) [mc.jar:git-Spigot-56f8471-6567017]
at net.minecraft.server.v1_14_R1.MinecraftServer.sleepForTick(MinecraftServer.java:886) [mc.jar:git-Spigot-56f8471-6567017]
at net.minecraft.server.v1_14_R1.MinecraftServer.run(MinecraftServer.java:819) [mc.jar:git-Spigot-56f8471-6567017]
Caused by: java.lang.NoClassDefFoundError: me/zombie_striker/pluginconstructor/reflection/ReflectionUtil
at me.zombie_striker.qg.handlers.ProtocolLibHandler.sendYawChange(ProtocolLibHandler.java:185) ~[?:?]
at me.zombie_striker.qg.guns.utils.GunUtil.addRecoilWithProtocolLib(GunUtil.java:657) ~[?:?]
at me.zombie_striker.qg.guns.utils.GunUtil.addRecoil(GunUtil.java:643) ~[?:?]
at me.zombie_striker.qg.guns.utils.GunUtil.basicShoot(GunUtil.java:430) ~[?:?]
at me.zombie_striker.qg.guns.utils.GunUtil.basicShoot(GunUtil.java:391) ~[?:?]
at me.zombie_striker.qg.guns.Gun.USE_THIS_INSTEAD_OF_INDEVIDUAL_SHOOT_METHODS(Gun.java:360) ~[?:?]
at me.zombie_striker.qg.guns.Gun.shoot(Gun.java:347) ~[?:?]
at me.zombie_striker.qg.guns.Gun.onClick(Gun.java:653) ~[?:?]
at me.zombie_striker.qg.guns.Gun.onLMB(Gun.java:540) ~[?:?]
at me.zombie_striker.qg.listener.QAListener.onClick(QAListener.java:869) ~[?:?]
at jdk.internal.reflect.GeneratedMethodAccessor58.invoke(Unknown Source) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:567) ~[?:?]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:316) ~[mc.jar:git-Spigot-56f8471-6567017]