Releases: 2008Choco/DragonEggDrop
Accurate countdown + numerous bug fixes
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
towtf.choco.commons
/dragonparticle and Various Fixes
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
- Syntax:
- 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...
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
andopen_ended_helix
are generated by default, as well aspossible_conditions.json
to demonstrate all the possible conditions
- Removed the
- Restructured the announcement messages for dragons in the config.yml:
- Added a new configuration section,
respawn-messages
- Removed
announce-messages
andannounce-message-radius
. Replaced withrespawn-messages.messages
andrespawn-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
- Added a new configuration section,
- 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. AddedDragonTemplateBuilder
instead to construct instances- Renamed the root package from
com.ninjaguild
towtf.choco
Efficiency improvements, minor fixes & features
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
tocom.ninjaguild.dragoneggdrop.world
- API: A
DEDConstants
class was added containing useful String constants for permission nodes, configuration paths and template configuration paths
- API: PortalCrystal has been moved from
Minor Bug Fixes
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 toop
players
- Permission:
- 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 (whereworld
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
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
andegg-lore
- Removed
chest-spawn-chance
,chest-name
,min-loot
andmax-loot
- Removed
death-commands
- Removed
announce-respawn
- Removed
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 theDragonEggDrop/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
- Default loot tables can be found in the
- 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 tofalse
- End crystal items are now given an outwards velocity when a player attempts to manually respawn the dragon if
allow-crystal-respawn
is set tofalse
. 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 suggestingview
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
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.14.0
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
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
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 suggeststop
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 toFLAME
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