Alchema 1.1.2

In-world cauldron crafting, witchcraft and sorcery

  1. Choco
    Native Minecraft Version:
    1.16
    Tested Minecraft Versions:
    • 1.16
    Source Code:
    https://github.com/2008Choco/Alchema/
    [​IMG]

    Alchema integrates the world of brewery, witchcraft and magic with Minecraft without being intrusive on the vanilla feel of the game. It allows players to craft items using a cauldron filled with water that's been lit with some heat source and a select handful of ingredients. With entirely customizable, data-driven recipes, Alchema allows server owners to customize everything about the cauldron and what all is possible for players.


    Features In Brief:
    • Bubbling cauldrons. Filled cauldrons with a heat source will start to bubble!
    • In-world cauldron crafting. Dropping a mix of ingredients into cauldrons may yield a new item!
    • Vials of entity essence used as cauldron recipe ingredients and quick potion-like effects.
    • A powerful data-driven recipe system to define cauldron recipes with JSON files.
    • Drag-and-drop installation with no additional steps for server owners by default.
    • Flexible developer API for custom ingredient types and recipes (among other things).
    [More to come...] a list of planned features, though suggestions are appreciated.


    Bubbling Cauldrons:

    [​IMG]

    Any in world cauldron is presented with a new mechanic, bubbling! No special crafting recipe for this cauldron, any vanilla cauldron will do. Under the following conditions, a cauldron will begin to bubble:
    • A source of heat is ignited below the cauldron.
    • Water is present in the cauldron and filled to its maximum.
    • A little bit of patience. The cauldron takes (by default) 5 seconds to start bubbling
    Such that all of the above conditions are met, the cauldron will bubble indefinitely and allows players to begin the process of crafting items exclusively through the cauldron.


    Cauldron Crafting:

    [​IMG]

    Dropping an item inside of a boiling cauldron will consume it and will become an ingredient in the cauldron. Throw in enough items of the right type and the cauldron will begin to craft automatically without any input from the player.

    Accidentally drop something into the cauldron that you didn't want to lose? Have extra ingredients that you can't get back? The cauldron remembers the exact item you dropped into it (even across server restarts!) and you can retrieve any remaining ingredients by either collecting the water from the cauldron, removing the source of heat, or destroying the cauldron in the world (though be careful with the heat source underneath).

    Alchema provides 45 recipes by default. They are as follows:
    • 1x Beetroot: 1x beetroot seeds + 1x bone meal
    • 1x Wheat: 1x wheat seeds + 1x bone meal
    • 1x Pumpkin: 1x pumpkin seeds + 2x bone meal
    • 1x Melon: 1x melon seeds + 2x bone meal
    • 1x Wheat: 1x wheat seeds + 1x bone meal
    • 1x Beetroot Soup: 1x bowl + 4x beetroot
    • 1x Mushroom Stew: 1x bowl + 1x brown + 1x red mushroom
    • 1x Rabbit Stew: 1x bowl + 1x brown/red mushroom + 1x cooked rabbit + 1x baked potato
    • 1x Coal Ore: 2x coal + 1x stone
    • 1x Diamond Ore: 3x diamond + 1x stone
    • 1x Emerald Ore: 3x emerald + 1x stone
    • 1x Gold Ore: 2x gold + 1x stone
    • 1x Iron Ore: 2x iron + 1x stone
    • 1x Lapis Ore: 6x lapis lazuli + 1x stone
    • 1x Redstone Ore: 6x redstone + 1x stone
    • 2x Fermented Spider Eye: 1x spider eye + 1x brown mushroom + 1x sugar
    • 2x Glowstone Dust: 1x coal + 1x redstone
    • 8x Concrete: 8x concrete powder + 1x gravel (all 16 variants)
    • 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


    Data-Driven (JSON) Recipes:

    Every single recipe is configurable and/or removeable with a powerful data-driven (JSON) set of recipes in Alchema's plugin directory. Under plugins/Alchema/recipes, you will find each of the above listed recipes with their own JSON file containing information about the recipe (much like how Minecraft handles its recipes!)


    [​IMG]


    As an example, the Fermented Spider Eye recipe as seen above looks like this:
    Code (Javascript):
    {
        "experience": 2,
        "result": {
            "item": "minecraft:fermented_spider_eye",
            "amount": 2
        },
        "ingredients": [
            {
                "type": "alchema:material",
                "item": "minecraft:spider_eye"
            },
            {
                "type": "alchema:material",
                "item": "minecraft:sugar"
            },
            {
                "type": "alchema:material",
                "item": "minecraft:brown_mushroom"
            }
        ]
    }
    If you do not want the recipe, delete the file from the recipes directory and reload the recipes with the /alchema reload command. Add your own recipes by adding a new .json file and following a similar format. Everything is extremely configurable with this JSON file structure without having to know how to code.


    Entity Essence:

    Entity essence integrates the witchcraft and brewery aspects that Alchema aims to provide. Entity essence is a 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.

    [​IMG]

    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.

    [​IMG]

    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.


    Commands:

    Alchema aims to integrate entirely with the vanilla Minecraft world without having to force players to learn any new commands in order to experience the plugin. Commands are deemed as intrusive for average player use and therefore few are added for administrator use only.
    • /alchema reload [verbose]
      • Reload the config.yml and recipes registered by both Alchema and third-party plugins
      • If "verbose" is included, any errors from recipe files will be shown in chat to the command sender
      • Permission: alchema.command.reload
    • /alchema version
      • View version and developer information about Alchema
    • /alchema integrations
      • View list of plugins integrating with Alchema
      • Permission: alchema.command.integrations (default)
    • /alchema saverecipe <recipe>
      • Save one of the default recipes from Alchema to the recipe file system
      • Wildcard paths such as /alchema saverecipe concrete/* are supported
      • Permission: alchema.command.saverecipe (default)


    Permissions:

    (op) alchema.command.*:
    • (op) alchema.command.reload: Grant access to /alchema reload
    • (op) alchema.command.reload.verbose: Grant access to /alchema reload verbose
    • (default) alchema.command.integrations: Grant access to /alchema integrations
    • (op) alchema.command.saverecipe: Grant access to /alchema saverecipe
    (op) alchema.updatenotify: Receive notifications for updates when joining the server


    Configuration:

    Below you'll find the default configuration for Alchema:
    Code (YAML):
    # Whether or not to check for updates
    CheckForUpdates
    : true
    # Whether or not anonymous plugin metrics should be tracked
    Metrics
    : true

    Cauldron
    :
     # The time (in ticks) cauldrons will wait before searching for nearby items
      # Higher values are less accurate/realistic, but more performant
      ItemSearchInterval
    : 1
      # The time, in milliseconds, it takes for a heat source to boil a cauldron
      MillisecondsToHeatUp
    : 5000
      Entities
    :
       # Whether or not entities should be damaged when inside a boiling cauldron
        Damage
    : true
        # The minimum amount of essence an entity will generate when killed
        MinEssenceOnDeath
    : 50
        # The maximum amount of essence an entity will generate when killed
        MaxEssenceOnDeath
    : 100
      # The pool of death messages used when a player is killed in a boiling cauldron
      DeathMessages
    :
       - "%s has boiled to death in a cauldron."
        - "%s was cooked in a cauldron."
      Sound
    :
       # The volume at which the ambient bubbling sound is played
        AmbientBubbleVolume
    : 0.45
        # The volume at which the item splash sound is played
        ItemSplashVolume
    : 1.0
        # The volume at which the sound for a successful cauldron craft is played
        SuccessfulCraftVolume
    : 0.5

    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

    Alchema API:

    Alchema provides developers with an extremely powerful API to create custom types of ingredients, custom recipes and to more closely interact with the cauldron and everything it does while in the world. The Alchema artifact is hosted for free on Jitpack.

    Javadocs for Alchema may be found here: https://choco.wtf/javadocs/alchema/
    Details on how to use the Alchema API may be found on GitHub

    Depending with Maven
    Code (XML):
    <project>
      ...
      <repositories>
        <id>jitpack</id>
        <url>https://jitpack.io/</url>
      </repositories>
      ...
      <dependencies>
        <dependency>
          <groupId>com.github.2008Choco</groupId>
          <artifactId>Alchema</artifactId>
          <version>PLUGIN-VERSION-HERE</version>
          <scope>provided</scope>
        </dependency>
      </dependencies>
      ...
    </project>
    Depending with Gradle
    Code (Groovy):
    repositories {
      jcenter()
      maven { url "https://jitpack.io" }
    }

    dependencies {
      implementation 'com.github.2008Choco:Alchema:PLUGIN-VERSION-HERE'
    }

    Like Alchema?

    Try AlchemicalArrows! AlchemicalArrows aims to improve the bow vs. bow combat experience while staying true to Minecraft's vanilla mechanics as much as possible. It adds 16 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...

    Alchema has become a derivative of functionality previously present in AlchemicalArrows, but now as its own standalone plugin, it integrates seamlessly with AlchemicalArrows and automatically registers cauldron recipes for each arrow! If you like Alchema, you'll surely love AlchemicalArrows. Try it today! It's free!


    In Closing:

    If you have any concerns with the plugin, do not hesitate to contact me on my official support Discord and I will answer whenever available!

    Additionally, I also happily welcome contributions to the API if you believe it is necessary for development purposes, or to the plugin if you wish to see more features that you believe you may add yourself! Thank you and enjoy!

    support_discord.png

Recent Reviews

  1. TSEngineer
    TSEngineer
    5/5,
    Version: 1.0.2.0
    This is a great idea, I love those kinds of plugins that make you feel like you're playing a modpack! The recipe loading system is done very well, it even lets other plugins register their own ingredient types, and the code quality is great overall
    1. Choco
      Author's Response
      Really happy to hear! I tried to make the recipe system as expandable as possible for mods so they may add their own recipes through code AND have server owners configure them as well :) I hope you enjoy!
  2. AristoNetwork
    AristoNetwork
    5/5,
    Version: 1.0.1.1
    very good concept , would like to see how this plugin would turn out to be. Good luck
    1. Choco
      Author's Response
      Thank you! Lots of plans for larger updates to come :)