Alchemical Arrows 3
AlchemicalArrows aims to improve the bow vs. bow combat experience while staying true to Minecraft's vanilla mechanics as much as possible. This plugin adds 15 unique types of arrows in addition to the ones provided by vanilla Minecraft (potion-tipped arrows), including, but not limited to, air arrows, water arrows, earth arrows, fire arrows, grapple arrows, explosive arrows, life arrows and more... All arrows are craftable such that players have sufficient permissions and can be launched from a bow so long as the alchemical arrows are the closest arrow to slot 1 in the player's inventory (the left-most hotbar slot).
All arrows provided by AlchemicalArrows affect entities in a unique way and some even have in-world effects upon hitting the ground. Others have passive effects such as the magnetic arrow which attracts nearby items! Using AlchemicalArrows' API and extensive documentation, new arrows can be added with ease by any developer whether experienced or new.
There are multiple commands for AlchemicalArrows where the primary use will be for administrators wanting to further control the plugin while the server is running. All commands have associated permission nodes. Please refer to the Permission Nodes section for more information.
/alchemicalarrows [alias: "/aa"]:
Description: The central command for AlchemicalArrows that controls various aspects of the resource including configuration reloading, version information and administrative functionality for in-world arrows.Sub-commands:Example:<reload> - Reload the plugin's configuration file and load everything back into memory.<version> - Retrieve version information of the AlchemicalArrows plugin currently installed on your server.<killallarrows> - Remove all alchemical arrows from the world (if any are present).- /alchemicalarrows reload- /alchemicalarrows version- /alchemicalarrows killallarrows
/givearrow [alias: "/givearrows"]:
Description: Give a variable amount of any alchemical arrow to yourself or to another player.Arguments:Example:<arrow> - The namespaced ID of the arrow to give. Each arrow is assigned a unique ID.[count] - The amount of arrows to give (optional. Defaults to 1).[player] - The player to whom the arrows should be given (optional. Defaults to the command sender; this parameter is required if the command is executed from the console).- /givearrow alchemicalarrows:air- /givearrow earth 32- /givearrow addon_plugin:lifesteal 16 2008Choco
arrows.shoot.*:
Description: Allow the ability to shoot every type of alchemical arrow provided by this plugin.Default: All players have this permission by default.Children:arrows.shoot.air: Allow the ability to shoot an air arrow.arrows.shoot.confusion: Allow the ability to shoot a confusion arrow.arrows.shoot.darkness: Allow the ability to shoot a darkness arrow.arrows.shoot.death: Allow the ability to shoot a death arrow.arrows.shoot.earth: Allow the ability to shoot an earth arrow.arrows.shoot.ender: Allow the ability to shoot an ender arrow.arrows.shoot.explosive: Allow the ability to shoot an explosive arrow.arrows.shoot.fire: Allow the ability to shoot a fire arrow.arrows.shoot.frost: Allow the ability to shoot a frost arrow.arrows.shoot.grapple: Allow the ability to shoot a grapple arrow.arrows.shoot.life: Allow the ability to shoot a life arrow.arrows.shoot.light: Allow the ability to shoot a light arrow.arrows.shoot.magic: Allow the ability to shoot a magic arrow.arrows.shoot.magnetic: Allow the ability to shoot a magnetic arrow.arrows.shoot.necrotic: Allow the ability to shoot a necrotic arrow.arrows.shoot.water: Allow the ability to shoot a water arrow.
arrows.craft.*:
Description: Allow the ability to craft every type of alchemical arrow provided by this plugin.Default: All players have this permission by default.Children:arrows.craft.air: Allow the ability to craft an air arrow.arrows.craft.confusion: Allow the ability to craft a confusion arrow.arrows.craft.darkness: Allow the ability to craft a darkness arrow.arrows.craft.death: Allow the ability to craft a death arrow.arrows.craft.earth: Allow the ability to craft an earth arrow.arrows.craft.ender: Allow the ability to craft an ender arrow.arrows.craft.explosive: Allow the ability to craft an explosive arrow.arrows.craft.fire: Allow the ability to craft a fire arrow.arrows.craft.frost: Allow the ability to craft a frost arrow.arrows.craft.grapple: Allow the ability to craft a grapple arrow.arrows.craft.life: Allow the ability to craft a life arrow.arrows.craft.light: Allow the ability to craft a light arrow.arrows.craft.magic: Allow the ability to craft a magic arrow.arrows.craft.magnetic: Allow the ability to craft a magnetic .arrow.arrows.craft.necrotic: Allow the ability to craft a necrotic arrow.arrows.craft.water: Allow the ability to craft a water arrow.
arrows.command.*:
Description: Allow the ability to use all administrative commands.Default: Operators have this permission by default.Children:arrows.command.killallarrows: Grant access to the "/alchemicalarrows killallarrows" command.arrows.command.reload: Grant access to the "/alchemicalarrows reload" command.arrows.command.givearrow: Grant access to the "/givearrow" command.
arrows.worldguardoverride:
Description: Override WorldGuard protection for arrows shot from users with this permission node.Default: No players have this permission by default. This permission node must be explicitly granted.
CheckForUpdates: true # Whether or not to check for updates. Will not automatically download... just checks MetricsEnabled: true # Enable plugin metrics. Does not track any sensitive information DeathMessages: Enabled: true # Enable custom death messages DeathByPlayer: "%player% was killed by %killer% using %type%" # Death message when killed by alchemical arrows shot by a player DeathBySkeleton: "%player% was killed by a skeleton using %type%" # Death message when killed by alchemical arrows shot by a skeleton DeathByBlockSource: "%player% was shot using a %type%" # Death message when killed by alchemical arrows shot by a dispenser Skeletons: ShootPercentage: 10.0 # The percent chance (0 - 100) for a skeleton to shoot an alchemical arrow. 0 for none LootDropChance: 25.0 # The percent chance (0 - 100) for a skeleton to drop a random alchemical arrow. 0 for none Crafting: CauldronCrafting: false # Whether or not to enable cauldron crafting. EXPERIMENTAL FEATURE!!! USE WITH CAUTION! Arrow: Air: RecipeYield: 8 # The amount of arrows to yield from a crafting recipe AllowInfinity: false # Whether this arrow respects the Infinity enchantment or not Effect: BreatheRadius: 2 # The underwater radius where players' air regenerates Skeleton: CanShoot: true # Whether or not skeletons may shoot this arrow. (ShootPercentage must be > 0) LootDropWeight: 10.0 # The chance for skeletons to drop this arrow on death (LootDropChance must be > 0) Item: DisplayName: "&oAir Arrow" # The arrow's display name Lore: # The arrow's lore - "&f&oFeel the air beneath your feet" - "&f&oDamaged entities are launched into the air" Confusion: RecipeYield: 8 AllowInfinity: false Skeleton: CanShoot: true LootDropWeight: 10.0 Item: DisplayName: "&dConfusion Arrow" Lore: - "&dThis arrow is so... confusing" - "&dWhat does this do again?" Darkness: RecipeYield: 8 AllowInfinity: false Skeleton: CanShoot: true LootDropWeight: 10.0 Item: DisplayName: "&8Darkness Arrow" Lore: - "&8Who turned off the lights!?" - "&8Applies a temporary blindness effect to players" Death: RecipeYield: 8 AllowInfinity: false Effect: InstantDeathPossible: true # Whether this arrow has a chance to cause instant death or not InstantDeathChance: 20.0 # The chance for which instant death may occur Skeleton: CanShoot: false LootDropWeight: 10.0 Item: DisplayName: "&0Death Arrow" Lore: - "&8Are you sure holding this is a good idea?" - "&8A sinister arrow. May instantly kill targets" Earth: RecipeYield: 8 AllowInfinity: false Skeleton: CanShoot: true LootDropWeight: 10.0 Item: DisplayName: "&7Earth Arrow" Lore: - "&7Better than the Moon in my opinion" - "&7Burries damaged entities into the ground" Ender: RecipeYield: 8 AllowInfinity: false Effect: TeleportOnHitBlock: true # Whether or not to teleport players when the arrow hits a block Skeleton: CanShoot: true LootDropWeight: 10.0 Item: DisplayName: "&5Ender Arrow" Lore: - "&dIt's almost like a portal gun, but cooler" - "&dSwaps positions with damaged entities" Explosive: RecipeYield: 8 AllowInfinity: false Effect: FuseTicks: 40 # The length (in ticks) the fuse will burn for before exploding ExplosionStrength: 4 # The strength of the explosion (4 = TNT) Skeleton: CanShoot: false LootdropWeight: 10.0 Item: DisplayName: "&cExplosive Arrow" Lore: - "Boom!" - "Ignites a fuse and explodes after hitting ground" Fire: RecipeYield: 8 AllowInfinity: false Skeleton: CanShoot: true LootDropWeight: 10.0 Item: DisplayName: "&cFire Arrow" Lore: - "&cGather around the campfire..." - "&cIgnites damaged entities for 2 - 3 seconds" Frost: RecipeYield: 8 AllowInfinity: false Skeleton: CanShoot: true LootDropWeight: 10.0 Item: DisplayName: "&bFrost Arrow" Lore: - "&bChill out. Snow reason to be angry" - "&bDamaged entities cannot move temporarily" Grapple: RecipeYield: 8 AllowInfinity: false Effect: GrappleForce: 2.5 # The force at which the player is grappled Skeleton: CanShoot: true LootDropWeight: 10.0 Item: DisplayName: "&eGrapple Arrow" Lore: - "&eNa na na na, na na na na, na na na na..." - "&e&lBATMAN!" Life: RecipeYield: 8 AllowInfinity: false Effect: FloralRadius: 2 # The radius around which foliage will generate Skeleton: CanShoot: true LootDropWeight: 10.0 Item: DisplayName: "&aLife Arrow" Lore: - "&aThe gift of life embewed within an arrow" - "&aA harmless arrow. Inflicts no damage & applies regen" Light: RecipeYield: 8 AllowInfinity: false Effect: StrikeLightning: true # Whether or not to strike lightning when hitting an entity Skeleton: CanShoot: true LootDropWeight: 10.0 Item: DisplayName: "&eLight Arrow" Lore: - "&eMay the power of Zeus be upon you!" - "&eStrikes damaged entities with lightning" Magic: RecipeYield: 8 AllowInfinity: false Skeleton: CanShoot: true LootDropWeight: 10.0 Item: DisplayName: "&dMagic Arrow" Lore: - "&dIt's almost... &k| &dMAGICAL &k|" - "&dLaunches entities backwards with great force" Magnetic: RecipeYield: 8 AllowInfinity: false Effect: MagnetismRadius: 5.0 # The radius at which items will be attracted to the arrow Skeleton: CanShoot: true LootDropWeight: 10.0 Item: DisplayName: "&7Magnetic Arrow" Lore: - "&7Opposites attract, likes repel" - "&7Pulls damaged entities closer to you" Necrotic: RecipeYield: 8 AllowInfinity: false Skeleton: CanShoot: true LootDropWeight: 10.0 Item: DisplayName: "&2Necrotic Arrow" Lore: - "&2Count Dracula would be proud" - "&2Nearby hostile entities target damaged entities" Water: RecipeYield: 8 AllowInfinity: false Skeleton: CanShoot: true LootDropWeight: 10.0 Item: DisplayName: "&9Water Arrow" Lore: - "&9Navigates quite well underwater" - "&9It's as though it doesn't lose any velocity"
Here you will find a detailed description of every arrow provided by the AlchemicalArrows plugin by default. Next to the title of each arrow, you will notice the name of an item; it is this item that should be used to craft the AlchemicalArrow either in a crafting table or in a cauldron. The generic pattern for all crafting table recipes is as shown:
The highlighted question mark in the center of the crafting table represents the position in which the identified item must be placed in order to craft the AlchemicalArrow. For a more detailed description on cauldron crafting, please see the related section, "Alchemical Cauldrons".
Air Arrow (Ingredient - Feather):
Entity (and player) effects: Launches the damaged entity in the air a random amount of blocks. The force at which the entity is launched is configurable.Passive effects: When the arrow is in a block underwater, nearby entities' air bubbles are replenished slowly over time.
Confusion Arrow (Ingredient - Poisonous Potato):
Player effects:- A Confusion I effect is applied to the player- Teleported 180 degrees in the opposing directionNon-player entity effects: Hostile entities lose sight of their current target.
Darkness Arrow (Ingredient - Coal or Charcoal):
Player effects: A smoke cloud is generated around the damaged player and a Blindness I effect is applied.
Death Arrow (Ingredient - Wither Skeleton Skull):
Entity (and player) effects:- A Wither II effect is applied to the damaged entity- There is a small (configurable) chance at instant death
Earth Arrow (Ingredient - Dirt):
Entity (and player) effects:- A Slowness II effect is applied to the damaged entity- The damaged entity is buried into the closest block on the ground
Ender Arrow (Ingredient - Ender Eye):
Entity (and player) effects: The damaged entity and the shooter of the arrow will swap positions in the world. The velocity of the target and the shooter are also switched.Block effects: Entities will be teleported on top of the block on which the arrow lands.
Explosive Arrow (Ingredient - TNT):
Block effects:- Upon hitting the ground, a (configurable) fuse is ignited- Assuming the arrow was not picked up, after the fuse has completed, the arrow will explode
Fire Arrow (Ingredient - Fire Charge):
Entity (and player) effects: The damaged entity will be lit on fire for a random amount of time, anywhere from 2 to 5 seconds.
Frost Arrow (Ingredient - Snowball):
Entity (and player) effects:- A Slowness effect, infinite in magnitude, is temporarily applied to the player effectively stopping the player's movement- An Anti-Jump effect, infinite in magnitude, is temporarily applied to the player effectively stopping the player's jumping abilitiesBlock effects: Nearby water in a (configurable) radius will be frozen to frosted ice. After a short amount of time, the ice will disintegrate.
Grapple Arrow (Ingredient - Tripwire Hook):
Block effects: The shooter of the arrow is launched towards the arrow's position with a (configurable) force.
Life Arrow (Ingredient - Glistering Melon Slice):
Entity (and player) effects:- A Regeneration II effect is applied to the target entity- This arrow does not inflict any damage upon the entityBlock effects: Foliage is grown in a (configurable) radius around where the arrow lands (assuming it has landed around grass). This is similar to the effect caused by bonemeal right clicking grass.
Light Arrow (Ingredient - Glowstone Dust):
Entity (and player) effects:- The damaged entity is struck with a lightning bolt (configurable)- The damaged entity is forced to look upwards towards the sun
Magic Arrow (Ingredient - Blaze Powder):
Entity (and player) effects: The damaged entity is propelled backwards in the opposing direction of the arrow.
Magnetic Arrow (Ingredient - Iron Ingot):
Entity (and player) effects: The damaged entity is propelled forwards in the direction the arrow hit.Passive effects: Items in a (configurable) radius are attracted towards the arrow.
Necrotic Arrow (Ingredient - Rotten Flesh):
Player effects: Hostile creatures in a 50 block radius all focus upon the damaged player.Entity (and player) effects: A lifesteal effect is applied between the damaged entity and the shooter. Health is taken from the damaged entity and the shooter is healed.
Water Arrow (Ingredient - Water Bucket):
Passive effects: The arrow propels much quicker underwater and the effect of underwater pressure / friction is negligible.
AlchemicalArrows has been happily open sourced for a long time and is ready to be contributed to! If you are an AlchemicalArrows API user or if you are simply interested in the code that goes behind the inner-workings of this plugin, its source code is available on GitHub for you to browse and hack away at. You can find the source code by going to AlchemicalArrows' public repository. If you are familiar with Git, you are free to clone, fork or make a pull request to AlchemicalArrows. If I approve of any changes you decide to pull request, I may consider merging the changes into the main branch and uploading a version with your code. You will be credited in the very next changelog, as well as a link to your PR.
Do note that while AlchemicalArrows is still in beta, work is being done on the "alchemical-arrows-3" branch, not the master branch! If you are to make a pull request, do so on that branch instead!
The API for AlchemicalArrows has been constantly changing during its development, but it's now reached a state where it should remain relatively stable. There are various aspects of the API that can be manipulated by an external plugin, and if you're interested in doing so, you are welcome to check out the numerous pages on the GitHub wiki where you can learn how to use the most important aspects of the API.
For those of you that like to explore projects on your own and see what you can do, AlchemicalArrows is completely documented and filled with detailed information over every single class, method and constant. There are Javadocs hosted on my website for you to browse, and you can find them here: https://choco.gg/javadocs/alchemicalarrows/
This resource is brought to you free of charge without any obligation to pay anything! I love to provide free resources such that people are enjoying it on their servers. Unfortunately, not everything in life is free and I will eventually need some monetary support of some kind. If you enjoy this project and what it provides to your server, please do consider donating as a little thank you for my hard work. I spent countless hours working on this project and all of it is provided without asking for anything.
Donating is not a requirement, and I do not expect anyone to donate. If you so chose to donate out of your own good will, I greatly appreciate the support, and I hope that you enjoy this resource as much as I do developing it! Thank you!
Hi there !
@2008Choco : First of all, thank you for your work, it's a really awesome plugin !! The only thing for me is the lack of teleporting arrow, like firing an arrow on environment / blocs and being teleported to the point the arrow reaches. Is the Ender arrow supposed to do that or is it just supposed to switch place with people you shot one ? It might be my server that doesn't support that ? If it's just not implanted, is it planned ? :)
Cheers for everything mate, so far so good !
@2008Choco
What I mean is, with Tipped Arrows (which won't work for my purpose because they won't work with infinity) if your Bow is in the off-hand, you will shoot the arrow that you have selected. This is important because it allows quick-switching between arrow types you want to use.
How it selects by Minecraft: -Closest to fire slot if your bow is in the right hand.
If Bow is in the off-hand: - First it will fire any highlighted arrow types first, otherwise it defaults to closest to the first slot.
The reason this is important is I'm trying to make a PVP game with multiple arrow types, however, it's impractical to try to swap them around on the fly, where as infinite arrows that are shot based on which arrow is being held would allow quick arrow-type changes. Hopefully this makes sense. In minecraft Create you can test this for yourself, if the bow is held in the off-hand, tipped arrows prioritize arrows held in your main hand.
EDIT: I also wanted to point out. Infinity only works with these arrows when the bow is held in the off-hand. If you use the bow as a the selected item (on the bar) infinity doesn't work and it consumes the arrow. If the arrow is put in the off-hand it has no effect at all. The only way infinity works, currently, is with the bow in the off-hand.
@ronpierce
I'm sorry, I'm not sure what you mean by the arrow highlighted. Highlighted by what? The slot closest to the first slot is how Minecraft handles their arrows as well, so that seemed logical to me
Is there any way to make it so that it shoots the arrow highlighted, rather than closest to #1?
@triarry
I'm definitely not going to stop :D This is one of my very first plugins! BETA-9 may be the last Beta release as well ;)
that's my boy choco, keep makin this awesome plugin
BETA development releases have been halted as there is not many more fixes/features that require fixing/adding. I am willing to release another BETA if bugs are reported, however, other than that, I am simply waiting on a Spigot ticket to get approved in order for me to fix the picking up of AlchemicalArrows. If said ticket is not approved, I will create a work around fix that will change the API a slight bit
Also, thanks everyone for 4,000 downloads! This means a lot! I've worked really hard on this project recently, and I'm super happy it's still getting the support it did when I first released it. Especially considering tipped arrows are available in 1.9, it amazes me that this project is still relatively alive and usable. <3
@ReeferX7
ETA of tomorrow (Friday, 3/4/2016), or the day after tomorrow (Saturday, 3/5/2016). I'm almost done. All I have left to do is the configuration option rewrites, permissions, and WorldGuard support. Of course, WorldGuard has to update to 1.9 before doing an official release. I may just send out a Beta before the official release
I've already got a couple Alpha testers helping me test out the earlier versions of the plugin :)
@2008Choco any eta? week month?
@triarry
Not only that, I'm completely rewriting AlchemicalArrows from scratch! It's going to be version 2.0 (Or AlchemicalArrows 2, as I will be referring to it as). I'm mainly focusing on the API portion of it. I've made it so that not only it's easier for myself to add more arrows, it's also easier for other developers to add new arrows in an add on plugin. The arrows are also more flexible as to what they're capable of doing, and a bit more support for arrows I didn't have previously. I may add an extra arrow ;D
It will however only be available to those on versions 1.9 and higher, as the Bukkit/Spigot API has changed a lot
@2008Choco
Yes, definitely now with the combat update...coding for shields is gonna be super important!
@SargentPig12 Again, it's something I unfortunately cannot fix. I've attempted this, but there's no way to mimic the @ selectors from my knowledge
@ReeferX7 I am currently in the process of converting AlchemicalArrows and all of my other plugins to 1.9. Working on upgrading the plugin, and it should be done over the next day or so. With 1.9 will come excessive testing, bug fixing, and to be honest, it needs a recode.
EDIT: Due to my lack of ability to code back when I first made this plugin, I plan on recreating it. It needs a rewrite completely from scratch. I did so poorly on this, and I just need to start over. With 1.9 being released, this is a perfect time for me to do so.
@2008Choco can you fix the worldguard issue? playes can hit other in not pvp regions.
Hello! A while ago I used your plugin on my server and loved it, but had to remove it due to me not being able to give them to player with command blocks. Has this issue been fixed?
I play a bit more yesterday. It seems "PVP deny" stops only "regular" part of arrow damage, but not "alchemical" part. May be this info can help.
And, i suggest, it can be great option, if You add posibility to allow/disallow of alchemical arrows usage in non-pvp areas in plugin config. This special arrows is great choice for assasins :)
Thank You.
@digitalr
Well, that's really quite strange. Well if the PvP flag is set to false, I made sure that WorldGuard would stop all arrow effects. Looks like I didn't do all that well of a job of defending it. I'll take another look at it :) Might as well, since 1.8.9 is available, and my last update was for 1.8.8. Can't believe I didn't catch this earlier.
Well thank you for the bug notice. I'm quite busy as of now due to school, though I only have this last week, then I am off for 2 weeks for Christmas break. If I can't fix this during the week, I will for sure finish it on Saturday or Sunday
@2008Choco Just from start. I install plugin with default config, and give permissions to shoot/craft all types of arrows to me and another player for testing purposes. Testing arrows inside PVP disabled WorldGuard region reveal effect-applying. Hmmm... Also, i have globally allowed (to whole map, via the "global" region) splash potions flag.
@digitalr
Hm, that's strange. I'll have to look at that tomorrow morning. I'm about to head to sleep tonight. Not sure why that would all of a sudden not work. Though, this was built for Bukkit and not Spigot, so that may be the issue. I'll look into it ^-^
May I ask how long you've noticed this happening?
Houston, we have a problem :( Alchemical Arrows 1.23 + Spigot 1.8.8-R0.1 + worldguard-legacy-6.1.2-SNAPSHOT- build 1641 - even if PVP flag set to deny, alchemical arrows still apply special effects to player-target. Message about shooting in no-pvp zone ("You cannot shoot specialized arrows while protected from pvp") are shown. But player launched to air/buried to earth/blinded e.t.c. successfully. Vanila weapons works normal. No PVP - no harm.
I have some big plans for Minecraft 1.9. It is being released soon, so by the end of this month, or as soon as 1.9 is released, expect a version from me. I'm debating on whether to do a 1.9 pre-release version or not, and I'm leaning towards yes. Again, still debating on it. As soon as the 1.9 release is available though, I expect this project to be in its mature state, and future updates will be sparse