AlchemicalArrows v3.0.0-BETA1

Details

  • Filename
    AlchemicalArrows-3.0.0-BETA1.jar
  • Uploaded by
  • Uploaded
    Sep 27, 2018
  • Size
    126.72 KB
  • Downloads
    200
  • MD5
    ed28e1f25289ecb2c88e4ae5439cd24b

Supported Bukkit Versions

  • 1.13

Changelog

Welcome to AlchemicalArrows 3! Before resuming to the changelog, there are a few things I want to note. For one, this version IS NOT MEANT FOR PRODUCTION SERVERS. It is very likely that the plugin will break. This is a Beta version, use with caution.

 

With that out of the way, I'd like to officially announce that there are now two new things worth noting.

 

  1. My website. Over the past month or so, I've been reworking my website to look a little nicer and contain all my projects. It's still a work in progress, but you may find it at https://choco.gg/
  2. Support will now be handled over on my official support Discord. Of course, tickets are preferred on the GitHub page, but for general support, please head to http://discord.choco.gg/ and ask around. I'll be available to respond during most hours of the day.

Alright, here is the long-awaited changelog :) Please, please report issues. This is NOT the final version for Minecraft 1.13(.1).

 

Changelog:

  • Added support for Minecraft 1.13 and 1.13.1
  • Dropped support for Minecraft 1.11.x and 1.12.x
  • Cleaned up the codebase substantially and improved overall code quality/performance
  • Restructured the codebase to make just a little bit more sense. Less "utils", more proper packaging and package naming
  • Changed statistic tracking service from McStats to bStats
  • Changed the /givearrow command to require a namespace and a key. Much like how Minecraft 1.13's blocks are "minecraft:stone", arrows are now "alchemicalarrows:air"
    • This is to separate arrows added from add-on plugins. i.e. if a resource titled "foo" added a "bar" arrow, the ID would be "foo:bar"
    • If no namespace is provided, it will default to "alchemicalarrows". i.e. "/givearrow air" will function as though "/givearrow alchemicalarrows:air" was typed
    • Tab completion for this command will work as intended and display all registered & giveable arrows, including those from add-ons (automatically!)
  • Added lore to all arrows! This means that arrows created before this update will no longer work, but trust me, the arrows look cooler!
  • Introducing the new Explosive Arrow! This was requested a lot over the years, and it's finally here!
    • Upon hitting the ground, the arrow's fuse will ignite
    • A fuse-like sound will play, increasing in pitch as its fuse continues to burn, after which it will explode
  • Added a bit of in-world functionality to some of the existing arrows
    • Air arrows will now replenish the air of nearby underwater entities if the arrow is in-world and underwater
    • Ender arrows will now teleport the shooter to a block above wherever the arrow lands
    • Life arrows will apply a bonemeal-like effect and grow flowers nearby in a configurable radius wherever it lands
    • Magnetic arrows will attract nearby items towards it after landing on the ground
  • Balanced some of the arrow's effects
    • Water arrows will have less of a drag underwater. They will propel much further
    • Reduced the effects of certain arrows to be fairer for the receiver of the effect
  • Introduced a new (optional) crafting system to do with cauldrons!
    • Placing a cauldron in the world and providing it with a source of heat (fire) underneath will cause the cauldron to boil such that the water level is full
    • To craft an alchemical arrow, throw into the boiling cauldron the required ingredients. The ingredients match that of the crafting table recipe (i.e. air arrows require 1 feather)
    • After ingredients are in the cauldron, throw in a regular arrow and the arrow associated with the brewed recipe will be ejected from the cauldron
    • If you prefer the crafting table system, you may disable the cauldron system in the configuration file. CAULDRON CRAFTING IS DISABLED BY DEFAULT!!! Please enable this and help me test it... it would be greatly appreciated, but be aware that there may be issues including the loss of items. Use at your own risk!
  • Restructured the configuration file. It is now much more readable and featureful
    • Added a "DeathMessages" category
      • Added an "Enabled" configuration option. Toggles whether or not custom death messages will be displayed
      • Added 3 new configuration options to change the death messages for players, skeletons and block sources
    • Renamed the "Arrows" category to "Arrow", and renamed all subcategories for the arrows from "XArrow" to simply "X" (i.e. Arrows.WaterArrow -> Arrow.Water)
      • Renamed "Crafts" configuration option to "RecipeYield"
      • Renamed "SkeletonsCanShoot" and "SkeletonsLootWeight" to "CanShoot" and "LootDropWeight" and moved them to their own "Skeleton" category under each arrow
      • Added a new subcategory to all arrows, "Item". It is from here where you may modify the arrow's display name AND LORE!
      • Added a new "Effect" subcategory to the majority of arrows. For features related to the arrow's effect, their options will reside here...
        • Added new "Effect.BreatheRadius" configuration option to "Arrow.Air" to specify the radius in which air is replenished when in-world. Max value of 4. Setting to 0 will cancel the effect
        • Added new "Effect.TeleportOnHitBlock" configuration option to "Arrow.Ender" to set whether the arrow should teleport players or not when hitting the ground
        • Added new "Effect.FloralRadius" configuration option to "Arrow.Life" to specify the radius in which flowers will grow. Max value of 5. Setting to 0 will cancel the effect
        • Added new "Effect.MagnetismRadius" configuration option to "Arrow.Magnetic" to specify the radius in which items are attracted. Max value of 4. Setting to 0 will cancel the effect
  • Completely overhauled the AlchemicalArrows API to a new, permanent system that I'm happy with. (Developers, if you have any add-ons, they will be broken)
    • Removed the mandatory single-parameter (Arrow) constructor. You may now add whichever constructor you'd like
    • Added 4 new methods to the AlchemicalArrow class
      • #getKey() - Returns a unique NamespacedKey representing the registration id of the arrow
      • #getDisplayName() - Returns a String representing the name to be displayed to players in chat
      • #getItem() - Returns the representing ItemStack for the arrow. The returned ItemStack should be a new instance every time (or a clone of a constant - recommended)
      • #createNewArrow(Arrow) - Replaces the previously static method. A default method that now returns a new class, AlchemicalArrowEntity! See below for details
    • Removed #skeletonsCanShoot(), #allowInfinity() and #skeletonLootWeight() methods to make way for a new ArrowProperty API
      • The above methods were replaced with corresponding properties, "alchemicalarrows:skeletons_can_shoot", "alchemicalarrows:allow_infinity" and "alchemicalarrows:skeleton_loot_weight"
        • Constants may be found in the ArrowProperty class itself (i.e. ArrowProperty#SKELETONS_CAN_SHOOT, etc.)
      • A protected (final) field, "properties", of type PropertyMap was added to the AlchemicalArrow class in which properties may be modified for arrows
      • For external modification, a #getProperties() method was added to the AlchemicalArrow class
      • Custom properties may be created by creating a new instance of the ArrowProperty<T> class (must be handled / checked for externally)
    • Added an AlchemicalArrowEntity class
      • This is a class which may be extended to hold custom data, but essentially acts as an Arrow wrapper object
      • For an example on how to create custom AlchemicalArrowEntity implementations, see the wiki (or the AlchemicalArrowWater implementation)
    • Renamed AlchemicalArrow#displayParticle(Player) to AlchemicalArrow#tick(), a method called every tick
    • Refactored many of the methods to pass instances of AlchemicalArrowEntity, the wrapper class returned by #createNewArrow() for that arrow instance
    • To accomodate for the new API, the ArrowRegistry was shifted around a little bit. It's quite easy to navigate. Previously static methods are still static, etc.
      • Registration of arrows is slightly different. You should register a new instance of your AlchemicalArrow implementation to the registry... ONLY ONCE!
    • Added new events for AlchemicalArrows-related actions
      • AlchemicalArrowShootEvent: Called when an alchemical arrow has been shot. This event is cancellable
      • CauldronCraftEvent: Called when an arrow is crafting through the use of a cauldron. This event is cancellable
  • Alphabetized the majority of the codebase. Arrows should maintain an alphabetical order for the sake of clean code and readability
  • Update the project's build system to Maven. Dependencies are now better managed for developers wanting to compile the plugin for themselves
  • Fixed a few inconsistencies with being able to shoot players protected by WorldGuard
  • Fixed a debug message being spammed in the console when using the Earth Arrow
  • Fixed Earth Arrows often times teleporting damaged entities to seemingly random coordinates
  • Fixed Earth Arrows causing a server crash under very specific conditions
  • Fixed the crafting recipe for death arrows functioning even if a wither skull were not placed in the middle of the recipe
  • Fixed colour codes not being respected in configured arrow names
  • Fixed players in creative being unable to shoot alchemical arrows
  • Fixed alchemical arrows shot with infinity being able to be picked up

Alongside the release of AlchemicalArrows 3.0.0-BETA1, for developers, an extensive wiki page for how to use the API as well as Javadocs are made available to use if you're interested in creating your own arrows or working with the API at all.