Skip to content

Releases: 2008Choco/DragonEggDrop

Accurate countdown + numerous bug fixes

07 Mar 22:51
Compare
Choose a tag to compare

Changelog

  • The dragon respawn counter is now calculated relative to an absolute point in time
    • This means that if you started a 10 day respawn timer but your server was offline for 4 days, the respawn timer will be accurate as though it was counting while your server was offline (rather than the timer then being 14 days).
  • Added disabled-worlds option to the config.yml which allows you to state in which worlds DragonEggDrop will not perform any functionality
  • Removed the former deprecation on /kill. This command is now properly supported and need not be confirmed
    • It is still ill-advised to use this command to get rid of the dragon, but it at least won't break things now
  • Update bStats from 1.7 -> 2.2.1
  • Compile and make use of ChocoCommons, a collection of common features for Choco's plugins
  • Fixed open_ended_helix not being used as a default particle definition despite the console saying otherwise
  • Fixed potential NullPointerException a dragon template failed to load
  • Fixed NullPointerException when picking up eggs without a set loot table
  • Fixed various other possible NullPointerExceptions in areas otherwise uncertain
  • Fixed the %dragon% placeholder not being injected into reward commands
  • Fixed the %dragoneggdrop_respawn_time% placeholder occasionally not being injected properly
  • Fixed particle equations not being properly centered
  • Fixed being unable to start a respawn process if a dragon was removed by /kill (or some other 3rd party means)

API Changelog

  • Added nullability annotations throughout the entire project
  • A lot of utilities were moved from wtf.choco.dragoneggdrop.utils to wtf.choco.commons

/dragonparticle and Various Fixes

07 Feb 16:36
Compare
Choose a tag to compare

Changelog

  • Added /dragonparticle command to test particle equations without having to kill a dragon
    • Syntax: /dragonparticle <particle> [x y z] [world] [startY]
    • Permission: dragoneggdrop.command.particle, default op
  • Dragons with no particles defined will now just immediately spawn loot (as they have no particle animation to wait for)
  • Adjust the size, distribution and count of the ball particle shape. Now more of a ball than a line
  • The %dragoneggdrop_dragon% placeholder (and its world override) will now display the template to be respawned during a countdown if no template is active in the end
  • Fixed NullPointerException on dragon death if particles is not set in the template
  • Fixed the default ball particle effect playing at the incorrect coordinates when not played at (0, 0)
  • Fixed the %dragoneggdrop_slain_dragon[_world]% placeholder not working as intended
  • Fixed slain dragon placeholders not working after a server restart
  • Fixed %dragon% placeholder not being applied to dragon eggs collected in the end (i.e. with a torch and gravity, or a piston)

Particle files, safeguards, respawn message improvements & more...

03 Feb 23:29
Compare
Choose a tag to compare

BE SURE TO UPDATE YOUR CONFIGURATION FILE
Some options were relocated and will use plugin-defined defaults if you do not update your config.yml

Default config file: https://github.com/2008Choco/DragonEggDrop/blob/master/src/main/resources/config.yml

Changelog

  • Completely overhaul the death particle system! Death particles may now be defined by piecewise functions in JSON files under the particles directory
    • Removed the Particles section from the config.yml
    • Added a new particles option to every dragon template. The value is the name of the json file (without the .json extension) of the particle effect to use. Example: particles: "helix"
    • Each JSON file defines an array of equations which will be selected under a set of conditions, as well as arguments provided to the particles themselves
    • Default particle equations for ball, helix and open_ended_helix are generated by default, as well as possible_conditions.json to demonstrate all the possible conditions
  • Restructured the announcement messages for dragons in the config.yml:
    • Added a new configuration section, respawn-messages
    • Removed announce-messages and announce-message-radius. Replaced with respawn-messages.messages and respawn-messages.radius
    • Added respawn-messages.condensed to change the format of the %dragoneggdrop_respawn_time% placeholder to use single-letter suffixes (i.e. 1w instead of 1 week)
    • Added respawn-messages.omit-time-units, a list of time units to omit from the %dragoneggdrop_respawn_time% placeholder
  • Removed lightning-amount, replaced with new category, lightning.amount
  • Add lightning.damage-entities configuration option to determine whether the spawned lightning will inflict damage to nearby entities
  • Update Placeholder API 2.10.8. If you have not yet updated, consider doing so
  • Smarter tab completion for time units in /dragonrespawn
  • A warning will now be displaying when attempting to kill the dragon with the /kill command. Confirmation is required. This is not a supported way to kill the dragon...
  • Fixed tab completion displaying subcommands to which players do not have access
  • (#35) Fixed error tracking player damage
  • Fixed malformatted JSON in default loot tables
  • Fixed potions not loading correctly from loot tables
  • Fixed custom_model_data not being loaded from loot tables

API Changelog

  • DragonTemplate is now immutable. Added DragonTemplateBuilder instead to construct instances
  • Renamed the root package from com.ninjaguild to wtf.choco

Efficiency improvements, minor fixes & features

03 Aug 22:48
Compare
Choose a tag to compare

Overview

As I am writing this release, I am away for personal, mental-health reasons. Nevertheless, I have spent some time addressing issues from the previous release and improved a few existing features. There is already progress being made on a future major release with notable and important changes and improvements, though for the time being, please enjoy this minor release with a few extra features!

Changelog

  • Clicking one of the templates in chat from /dragontemplates will now suggest a /dragonrespawn start command for that template (if the player has permission to do so)
  • Added a dragoneggdrop.overridecrystals permission node. Players with this permission will be able to respawn the ender dragon using end crystals regardless of whether it's been disabled in the configuration file.
    • This permission node is NOT given by default, even to players with operator status. It MUST be explicitly set with a permission plugin
  • Re-add the %dragon% placeholder for loot tables as a means of more specific context
    • It is advised that you update your loot tables to use this placeholder instead of %dragoneggdrop_slain_dragon% where possible
    • Default loot tables have been updated to use it instead of the PAPI placeholder
  • Loot tables may now define "damage" and enchantment levels as objects to set a min and max value (much like "amount")
    • The example loot table has been updated accordingly
  • Improve performance of particle animations after the dragon has been killed
  • Improve the comments in the default config.yml. They are now more descriptive of the available default options
  • Fix item loot generation preferring lower (minimum) amounts more than upper (maximum) amounts
  • Fix /dragontemplate <template> generateloot using placeholders for previous dragons (use %dragon% instead)
  • Fix dragoneggdrop.commands.* not being properly defined
  • Fix dragoneggdrop.command.reload not being recognized by permission plugins
  • Fix development versions of DragonEggDrop not being clearly labeled (most won't notice this change - you will be using a release. This is mostly for testing purposes)
  • Fix NullPointerException when generating a loot table that can generate air
  • Fix @Photon-GitHub not being listed as a contributor to DragonEggDrop (Sorry!)
  • Other miscellaneous internal changes and relocations
    • API: PortalCrystal has been moved from com.ninjaguild.dragoneggdrop.api to com.ninjaguild.dragoneggdrop.world
    • API: A DEDConstants class was added containing useful String constants for permission nodes, configuration paths and template configuration paths

Minor Bug Fixes

30 Jul 22:45
Compare
Choose a tag to compare

Overview

This is a minor release for DragonEggDrop to address a few issues with the most recent release, as well as better support for Spigot 1.16.1. As such, this build DOES NOT support Spigot 1.15.2 or below and you should update your server to a more modern version of 1.16.1 using BuildTools as it relies on some changes to Spigot's text component API among other things.

IMPORTANT: If you are using PlaceholderAPI, this version will ABSOLUTELY REQUIRE version 2.10.7 of PAPI. Because PAPI had a large update that may have broken a few plugins, if you are incapable of updating your version of PAPI, please do not update DragonEggDrop. These two should be updated simultaneously. If you do not use PAPI, you may disregard this notice.

Changelog

  • Add a /dragontemplate <template> generateloot argument to generate the loot table of the specified template. A chest will be placed at the feet of the player running the command.
    • Permission: dragoneggdrop.command.template.generateloot, default to op players
  • CAUTION: Changed permission nodes for commands
    • dragoneggdrop.reload -> dragoneggdrop.command.reload
    • dragoneggdrop.respawn -> dragoneggdrop.command.respawn
    • dragoneggdrop.respawn.stop -> dragoneggdrop.command.respawn.stop
    • dragoneggdrop.respawn.start -> dragoneggdrop.command.respawn.start
    • dragoneggdrop.respawn.template -> dragoneggdrop.command.respawn.template
    • dragoneggdrop.template.list -> dragoneggdrop.command.template.list
    • dragoneggdrop.template.info -> dragoneggdrop.command.template.info
  • Update to Placeholder API 2.10.7 (versions before this will no longer work)
  • Players that do not have permission for a command will no longer see them suggested
  • /dragonrespawn template get argument has been removed. /dragonrespawn template [world] will suffice (where world is optional)
  • Fix NullPointerException under rare conditions where a 1.15.2 world was converted to 1.16.1
  • Fix loot table item lores and names not translating colour codes
  • Fix enchanted books not properly applying the "enchantments" tag in loot tables
  • Fix use of deprecated hover text component API
  • Fix NinjaStix not being listed as a project contributor in the plugin's description file
  • (#33) Fix various placeholders not working if PAPI was not installed, despite being a soft dependency

Loot System Rewrite, Bug Fixes & QOL

01 Jun 20:58
Compare
Choose a tag to compare

Overview

With 75 commits to the repository, this update is officially the largest release for DragonEggDrop as of 1.4.0-BETA1 which implemented dragon templates! I've worked hard on this update to make sure the loot system is as flexible as possible while also providing some useful default loot for those who don't bother configuring the plugin and just want an install-and-play solution. With that being said, the loot system may be confusing to those unfamiliar with Minecraft's loot tables or the JSON syntax and for those not confident, the wiki has been updated to accommodate for the changes in this update!

To those still having issues with the new loot system, please do not hesitate to contact me on my support Discord or on the SpigotMC resource discussion thread.

NOTE: YOU MUST UPDATE YOUR SERVER IN ORDER TO USE THIS VERSION OF DragonEggDrop!!! IT USES NEW API ADDED RECENTLY AND WILL NOT WORK ON SERVERS VERSION 1.15.2 RELEASED BEFORE March 24th 2020!!!

Changelog

Because the changelog is as large as it is, changes have been broken up into individual categories

Core Changes

  • Depend on Spigot API instead of Bukkit. This plugin will no longer work on CraftBukkit servers. Sorry.
  • After I have made a successful change to Bukkit, DragonEggDrop should now be mostly future-proof! 1.15.2+ support from this point forth. Therefore, YOU MUST UPDATE YOUR SERVER IN ORDER TO USE THIS UPDATE!!!!!
  • Restructured and cleaned up the entire project. Codebase has changed significantly. Developers, any plugins depending on DragonEggDrop will break! Please review the Javadocs
  • Replaced all instances of "2008Choco" to "Choco"

New Features & Removals

  • Added bStats Metrics. These can be disabled in the configuration file by setting "metrics" to false
  • Overhaul the loot system. Dragon templates now pool their loot from loot tables.
    • Default loot tables can be found in the DragonEggDrop/loot_tables directory
    • Proper loot tables have been created by default which hopefully make sense. Of course you may change these or create your own templates. No more sticks!
      • These loot tables take inspiration from Minecraft's vanilla loot table system (with changes to accommodate for DragonEggDrop's specific needs). The default loot tables should give you an idea of how they work. Copy/paste does wonders! See the DragonEggDrop Wiki for information on how they work.
    • Dragon templates have changed significantly (mostly to accommodate for changes in the new loot system):
      • Removed egg-spawn-chance, egg-name and egg-lore
      • Removed chest-spawn-chance, chest-name, min-loot and max-loot
      • Removed death-commands
      • Removed announce-respawn
    • loot has been changed to value as a string rather than a configuration section. This value should be the name of the loot table to use (as found in the DragonEggDrop/loot_tables directory - without the file extension)
    • Dragons that do not specify a loot table (or if the loot table is invalid) will generate a dragon egg as per vanilla behaviour
  • Added spawn-announcement, a list of strings to send to players when the template has been spawned. If not set or empty, no message will be sent
  • Added an additional (optional) argument to the /dragonrespawn command to specify which loot table to use when respawning the next dragon
    • /dragonrespawn start [time] [world] [template] [loot_table]
  • Added a damage history framework. Damage history for the dragon may be queried by developers, though for server owners this may be used with placeholders!
  • Added support for PlaceholderAPI. The following placeholders are supported:
    • %dragoneggdrop_dragon%: The formatted name of the dragon currently being faught
    • %dragoneggdrop_dragon_<world>%: The formatted name of the dragon currently being faught in the specified world
    • %dragoneggdrop_slain_dragon%: The formatted name of the dragon that was most recently slain
    • %dragoneggdrop_slain_dragon_<world>%: The formatted name of the dragon that was most recently slain in the specified world
    • %dragoneggdrop_respawn_time%: The formatted time remaining for the dragon to respawn
    • %dragoneggdrop_respawn_time_<world>%: The formatted time remaining for the dragon to respawn in the specified world
    • %dragoneggdrop_top_damager%: The name of the player that's done the most damage to the current dragon
    • %dragoneggdrop_top_damager_<position>%: The name of the player that's done the x most amount of damage to the current dragon (i.e. position 1 = top damage, position 2 = second most damage, etc.)
    • %dragoneggdrop_top_damager_<position>_<world>%: The name of the player that's done x most amount of damage to the current dragon in the specified world
    • %dragoneggdrop_top_damage%: The damage done by the top damager to the current dragon
    • %dragoneggdrop_top_damage_<position>%: The damage done by the player that's done x most amount of damage to the current dragon
    • %dragoneggdrop_top_damage_<position>_<world>%: The damage done by the player that's done x most amount of damage to the current dragon in the specified world
    • All the above may be used in any configurable message in DragonEggDrop's config.
  • Added a announce-message-radius config option to set the radius of action bar announcement messages. This may be used to prevent players on end isles from receiving the message. All players in the end will receive the message by default (-1)
  • Removed the /dragontemplate [template] edit command. Due to the nature of loot pools, this would have been difficult to implement

Quality Of Life Changes

  • End crystals may now be destroyed by creative mode players while they are being created in an automatic respawn process. In such a situation, the respawn will cancel.
  • A fizz sound will now be played when a player attempts to manually respawn the dragon if allow-crystal-respawn is set to false
  • End crystal items are now given an outwards velocity when a player attempts to manually respawn the dragon if allow-crystal-respawn is set to false. This to prevent the items from falling into the portal
  • The /dragontemplate <template> info command will now show the exact % chance to spawn a dragon using the specified template (rounded to two decimal places)
  • /dragontemplates and /templates may now be used as short forms for /dragontemplate list and /template list. The former two commands still function as expected (i.e. you can still do /dragontemplates <template> info)
  • /dragontemplates now uses hoverable messages to show per-template information when its name is hovered over in chat
  • Command feedback is now more detailed and consistent (as such, removed /dragoneggdrop help - Bukkit's /help dragoneggdrop will do the same)
  • More information is logged to the console on startup for debug & administrative purposes

Bug Fixes

  • Fixed non templated dragons remaining non templated (#21 on GitHub)
  • Fixed dragons respawned using end crystals not being templated
  • Fixed right clicking the portal not functioning as intended. It will now show the player the time remaining for the dragon to spawn
  • Fixed the time not being formatted properly in the message sent when right clicking the portal
  • Fixed the time parsing message not properly pluralizing. "1 minute" (& similar units) will no longer be plural
  • Fixed the respawn action bar message not listing "weeks" or "days". Previously only "hours" were shown resulting in hundreds of hours
  • Fixed the error message not showing the correct argument if an invalid template was specified when executing /dragonrespawn
  • Fixed the /dragontemplate command tab completion suggesting view as the second argument despite /dragontemplate list being typed
  • Fixed a warning message being sent in the console on first generation of dragon templates
  • Fixed instances of allow-crystal-respawn not working as intended
  • Fixed infinite lightning spawning on the portal when loot is generated (hopefully...)

Update to Minecraft 1.15.x

05 Mar 16:07
Compare
Choose a tag to compare

Overview

As mentioned in the most recent release (for Minecraft 1.14), I have lost a lot of motivation to work on this project (or really, plugins in general). As such, I apologize for those that were waiting for this plugin to update. With that being said, this update was championed mostly by @OliPulse who created a pull request updating the plugin to Bukkit 1.15. I appreciate the support 🙂

This version will work on Bukkit/Spigot (etc.) versions 1.15.0 - 1.15.2 ONLY.

Changelog

  • Update to Minecraft 1.15.x (#26 by @OliPulse)
  • Drop support for Minecraft 1.14.x
  • Fix a NullPointerException when running /dragoneggdrop due to the updater not being initialized
  • Increase the update check timer from 30 minutes to 6 hours in order to be less intrusive

Update to Minecraft 1.14.0

30 Apr 14:45
Compare
Choose a tag to compare

Overview

With DragonEggDrop being broken in later versions of Minecraft due to unexpected internal server changes, I had decided to opt out of updating the plugin for that version and await a 1.14 release. The day is here and DragonEggDrop 1.7.0 supports the latest version of Minecraft with no further changes. I apologize for the small release, but my passion to continue this project has dwindled. Nevertheless, I will continue to make updates as versions of Minecraft are released.

! IMPORTANT
With the release of this update, the legacy branch is no longer supported! If you are running Minecraft 1.9.x - 1.12.x, the DragonEggDrop legacy branch will remain idle and no bug fixes will be provided. Please consider updating your server

This version will work on Bukkit/Spigot (etc.) 1.14.0 ONLY.

Changelog

  • Update to Minecraft 1.14
  • Drop support for Minecraft 1.13.0
  • Fix an IllegalStateException when running /dragoneggdrop due to the updater not being initialized

Critical Bug Fixes

04 Dec 21:26
Compare
Choose a tag to compare

Overview

While more features are in the works for DragonEggDrop, some urgent issues were brought to my attention which rendered version 1.6.0 unusable if you were writing custom dragon templates. As such, this is a critical release that was drafted for the sake of useability. Do not fret, more features will be available in the next release if no more urgent issues are identified between such time 😄

! IMPORTANT
This version will not support Minecraft 1.9.x - 1.12.x. If you are looking for the 1.9.x - 1.12.x version, please see release 1.5.0-legacy. Upon the coming of 2019, the legacy branch and builds will be unsupported entirely. At which point I ask you to please consider updating your server.

As mentioned before, this build will only work on more recent versions of Spigot 1.13.2. It does not support Spigot 1.13 - 1.13.1. Please consider updating your server before running this build.

Changelog

  • Fix a NullPointerException on startup if dragon templates contained any loot without enchantments
  • Fix a rare NullPointerException thrown when generating dragon loot if, somehow, a dragon's name was invalid
  • Fix file-based template identifiers allowing the use of spaces rendering them inaccessible by command. Dragon template identifiers now use underscores in place of spaces

Thank you to SmallSansSerif for bringing these issues to my attention on my support Discord

Featureful update and /dragonrespawn command

23 Nov 01:32
Compare
Choose a tag to compare

Overview

A long-awaited feature has been added to DragonEggDrop through a pull request (thank you @Photon-GitHub) and later improved by myself, I'm sure most will appreciate this functionality. That being said, it is worth noting that before using this build, you MUST update your version of CraftBukkit / Spigot to the latest 1.13.2 build. This version of DragonEggDrop utilizes some of the newer changes in the server jar, therefore errors will be thrown in your console on dragon spawn if you do not update.

! IMPORTANT
This version will not support Minecraft 1.9.x - 1.12.x. If you are looking for the 1.9.x - 1.12.x version, please see release 1.5.0-legacy. Upon the coming of 2019, the legacy branch and builds will be unsupported entirely. At which point I ask you to please consider updating your server.

Again, this build will only work on more recent versions of Spigot 1.13.2. It does not support Spigot 1.13 - 1.13.1. Please consider updating your server before running this build.

Changelog

  • Added a /dragonrespawn command to better control how the respawn process works
    • /dragonrespawn <stop|interrupt|cancel> [world] will cancel any current respawn countdown either in the world in which the command is executed, or the specified world
    • /dragonrespawn <start> [time] [template] [world] will start a new respawn countdown for x amount of time (defaults to 5m) with the specified template (defaults to a random template) in the given world (defaults to the world in which the command is executed)
    • /dragonrespawn template get [world] will check which template will be spawned for the current respawn countdown
    • /dragonrespawn template set <template> [world] will set the next dragon to be spawned for the current respawn countdown
    • All of these commands have tab completion to make better sense of it all if you are confused
  • Command tab completion will now remove any suggestions that no longer make sense (i.e. /dragontemplate st will now only suggest stop instead of all 5 options)
  • Item loot parsing is now MUCH more featureful. Far more options are available. See below for an example of all possible options (#14)
  • Update the version checker to that used in VeinMiner. More information is now provided
  • Dragon templates are now determined when the respawn countdown starts rather than when it finishes
  • Dragon egg loot should now be more consistent in the end (it will be properly named)
  • If the Particles.type configuration option is unknown, the plugin will now default to FLAME instead of shutting down entirely
  • Dropped support for any Minecraft version lower than 1.13.2
  • Miscellaneous formatting and code cleanup throughout the entire project

New Item Parsing Options

loot:
  '1':
    weight: 1.0
    type: stick
    damage: 1
    amount: 1
    display-name: '&bExample Item'
    lore:
    - '&6Configure me'
    - '&6to any item'
    enchantments:
      unbreaking: 1
    banner-patterns:
      bricks: red
      bri: purple
    book-data:
      author: 2008Choco
      title: The Best Book Ever!
      generation: original
      pages:
      - "This is the first page of the book. Turn the page for an awesome surprise!"
      - "SURPRISE!"
    knowledge-book-recipes:
    - "minecraft:crafting_table"
    leather-color:
      r: 255
      g: 0
      b: 255
    potion:
      color:
        r: 255
        g: 255
        b: 255
      base:
        potion-type: speed
        extended: true
        upgraded: false
      custom-effects:
        '1':
          effect: speed
          duration: 600
          amplifier: 1
          ambient: true
          particles: false
          icon: false
        '2':
          effect: strength
          duration: 300
          amplifier: 2
          ambient: false
          particles: true
          icon: true
    skull-owner: 2008Choco
    fish-bucket-data:
      pattern: spotty
      pattern-color: red
      body-color: black