Entity Essence, New Recipes & Better Recipe Loading
This plugin is still alive and as strong as ever. I have a load of features planned for this plugin, just you wait!
Changelog
- Added entity essence, a new mechanic and crafting ingredient for cauldron recipes. See below
- Added numerous new configuration options to customize all about entity essence
- Added
/givevialofessence
(alias:/giveessence
)- Permission:
alchema.command.givevialofessence
, default op - Gives empty vials or vials of entity essence to the command executor or the specified player
- Permission:
- Added new default recipes:
- 1x Emerald: 500 villager essence + 1 diamond
- 1x Blaze Rod: 50 blaze essence + 1 stick
- 1x Ghast Tear: 250 ghast essence + 1 iron nugget
- 2x Gunpowder: 50 creeper essence + 1 redstone
- 1x Ink Sac: 25 squid essence + 1 black dye
- 3x Leather: 250 cow essence + 4 rotten flesh
- 2x Turtle Egg: 100 turtle essence + 1 egg
- 1x Heart of the Sea: 250 dolphin essence + 4 nautilus shells
- 4x Honeycomb: 1 honey bottle + 1 sugar
- 8x Gravel: 8 cobblestone + 1 flint
- 8x Sand: 8 gravel + 1 flint
- All of the above recipes may be found in the default recipe directory if you wish to use them
- Recipes will now fail more gracefully and not prevent other recipes from loading. Any errors with loading will be presented with a readable reasoning
- Added
/alchema reload verbose
, an optional argument which shows errors in chat if one or more recipe failed to load- Permission:
alchema.command.reload.verbose
, default op. Child ofalchema.command.reload
- Permission:
- Custom model data may now be loaded for items in recipe files (ex:
"custom_model_data": 10
) - Fixed CustomModelData being discarded when dropping an item into and retrieving from an alchemical cauldron
- Fixed inaccurate version check suffixes when running
/alchema version
. It will now show if on a dev version or if an update check failed
API Changelog
Javadocs for Alchema are hosted at https://choco.wtf/javadocs/alchema
- Added
CauldronIngredientEntityEssence
, an ingredient implementation for entity essence - Added
EssenceConsumptionCallback
, a functional interface called when a player consumes a vial of entity essence - Added
EntityEssenceData
containing information about entity essence data such as type, colour, consumption callbacks, etc. - Added
EntityEssenceEffectRegistry
to register different types of entity essence- All living vanilla entities have registered entity essence, though you may register and override the data registered by Alchema by default
- Added
Alchema#getEntityEssenceEffectRegistry()
to get an instance of the effect registry CauldronIngredientsDropEvent#getItems()
now returns aList<Item>
instead of aList<ItemStack>
- Added a few new events to accommodate the new entity essence mechanics
EntityDropEssenceEvent
: Called when a living entity is killed and drops a vial of entity essencePlayerConsumeEntityEssenceEvent
: Called when a player consumes a vial of entity essencePlayerEssenceCollectEvent
: Called when a player collects essence from an entity with a vial of essence or an empty vial
- Added
AlchemicalCauldron#dropIngredients(CauldronIngredientsDropEvent.Reason, Player)
- Added default method
CauldronIngredient#drop(AlchemicalCauldron, World, Location)
, returning aList<Item>
, a list of item entities dropped in the world- By default, this drops and returns the result of
asItemStack()
- This is called by the
CauldronIngredientEntityEssence
to drop more than one vial of essence if it exceeds the maximum amount of essence in a vial
- By default, this drops and returns the result of
- Added new constants to the
AlchemaConstants
including metadata keys, nbt keys, new configuration options and permission nodes
Notes For Contributors
This project now has unit testing to ensure the presence of nullability annotations on all methods and parameters, as well as better checkstyle enforcement through Maven. If you plan on contributing to this project (which I highly encourage, contributions are welcome), PLEASE be sure to abide by the checkstyle execution as well as ensuring that all tests pass. This will now be checked when a new PR is opened.
Entity Essence
Entity essence is a new mechanic introduced to integrate the witchcraft and brewery aspects that Alchema aims to provide. Entity essence is a new type of cauldron ingredient that may be used in crafting recipes such as blaze rods with blaze essence and sticks, or emeralds with villager essence and diamonds. Being able to convert one material into another with the essence of entity allows for much more flexible recipe design and makes the world of Minecraft feel more immersive with the world of Alchema.
Players may craft empty vials with 3 glass panes in a bucket or glass bottle formation. These vials may then be used by right clicking on an entity to collect a random amount of essence. Entities can only have essence collected every 5 minutes (by default) unless the player is in creative mode. Players may also collect essence from entities using a vial of essence of the same type (i.e. clicking on a cow with a vial of cow essence) up to 1,000 (by default) essence per vial. These vials of essence can be dropped right into a cauldron and used for recipes involving entity essence.
Entities also all have a chance of dropping vials of entity essence. Although this is much more rare (by default, 0.75% chance), more essence may be yielded. The chance of dropping essence increases if the entity is killed with a weapon enchanted with Looting. Though this essence is no different than collecting it from an entity directly.
Additionally, all entity essence may be consumed by the player much like a potion. While not all entity essences have effects, some do! Some give you potion effects while others, like enderman essence, will teleport you around akin to a chorus fruit. Explore some of the essence types.
Below are the new default configuration options for entity essence, as well as an explanation of what each option does
VialOfEssence:
# The maximum amount of entity essence that can be stored in a vial
MaximumEssence: 1000
FromEntities:
OnDeath:
# The chance (0.0 - 100.0) that an entity will drop a vial of essence on death
BaseDropChance: 0.75
# The minimum amount of essence the entity can drop
Min: 50
# The maximum amount of essence the entity can drop
Max: 250
# A list of entities that will not drop essence on death. Example:
# Blacklist:
# - "minecraft:zombie"
# - "minecraft:creeper"
Blacklist: []
OnInteract:
# Whether or not essence may be collected by players when right clicking an entity with an empty vial
Enabled: true
# The time, in seconds, between which a player can collect essence from the same entity
TimeoutSeconds: 300
# The minimum amount of essence that can be collected from an entity by a player
Min: 10
# The maximum amount of essence that can be collected from an entity by a player
Max: 25
# A list of entities from which essence cannot be collected
Blacklist: []
Consumption:
# A list of messages to send to the player when consuming entity essence with no effect
# One message will be selected at random
TastelessThoughts:
- "That was rather tasteless... I shouldn't do that again."
- "What a waste of essence... I shouldn't drink this stuff."
- "Interestingly tasteless, disappointingly wasteful."
- "Surely there was a better use for that essence than drinking it."
Item:
Empty:
# The name to use for empty vials
Name: "&fEmpty Vial"
# The lore to use for empty vials
Lore:
- "&7&oCollects entity essence."
# The custom model data to use for empty vials
CustomModelData: 1
Filled:
# The name to use for vials of entity essence
# %entity% will be replaced with the name of the entity type
Name: "&fVial of Essence &7(%entity%)"
# The lore to use for vials of entity essence
# %entity% will be replaced with the name of the entity type
# %quantity% will be replaced with the quantity of essence in the vial
# %max_quantity% will be replaced with the maximum quantity of essence allowed in a vial (configurable, see above)
Lore:
- "&7Quantity: &f%quantity%/%max_quantity%"
- ""
- "&7&oCauldron crafting ingredient."
# The custom model data to use for vials of entity essence
CustomModelData: 2
Don't want to use entity essence on your server? Too "modded" or unrealistic for your liking? No problem! Alchema is extremely configurable and allows you to either delete or change any of the recipes involving entity essence. Additionally, you may set the chance for dropping entity essence to 0.0 and deny the collection of essence from entities so the only means of obtaining it is by command.