GithubHelp home page GithubHelp logo

2008choco / alchema Goto Github PK

View Code? Open in Web Editor NEW
9.0 2.0 2.0 594 KB

Spigot plugin. In-world cauldron crafting, witchcraft and sorcery

Home Page: https://www.spigotmc.org/resources/alchema.87078/

License: GNU General Public License v3.0

Java 100.00%
spigot bukkit minecraft plugin alchema alchemy cauldron brewing witchcraft witchery

alchema's Introduction

Latest release Spigot Downloads Javadocs Follow on Twitter

Alchema

This Minecraft (Bukkit) plugin aims to introduce in-world cauldron crafting, witchcraft and sorcery for CraftBukkit and Spigot servers. Licensed under GPLv3, releases are made on GitHub to comply with this license. You are welcome to fork this project and create a pull request or request features/report bugs through the issue tracker. Please see the Contribution Guidelines below.

For information about the plugin and how to use it, please see the plugin's resource page on SpigotMC.

Alchema cauldron recipes

Depending on Alchema API

Alchema is kindly hosted by md_5 on his repository and can be depended on with either Maven or Gradle.

Maven

<project>
  ...
  <repositories>
    <id>md_5-repository</id>
    <url>https://repo.md-5.net/content/repositories/snapshots/</url>
  </repositories>
  ...
  <dependencies>
    <dependency>
      <groupId>wtf.choco</groupId>
      <artifactId>Alchema</artifactId>
      <version>1.2.0-SNAPSHOT</version> <!-- Or whatever version -->
      <scope>provided</scope>
    </dependency>
  </dependencies>
  ...
</project>

Gradle

repositories {
  jcenter()
  maven { url "https://repo.md-5.net/content/repositories/snapshots/" }
}

dependencies {
  implementation 'wtf.choco:Alchema:1.2.0-SNAPSHOT' # Or whatever version
}

Contribution Guidelines

If you plan on contributing to Alchema, thank you! Contributions are much appreciated. Please follow the following guidelines if you plan on contributing either as a developer or a user of this plugin.

Suggesting a Feature

You do not have to be a developer to contribute to this project. Requesting features helps me out just as much! In order to suggest a feature, please visit the issues tab and select the most appropriate issue template. The templates should guide you on how to make a ticket but please be as thorough as possible as to not require any additional inquiries for information not provided in the original ticket.

If you would like to suggest a recipe to be added to the default set of recipes, please create a ticket using the "New cauldron recipe" template. Include the JSON file and a reason as to why you believe this recipe should be added. Additionally, please include the name that you would like to use as it will be included in the recipe file itself for author attribution.

Creating a Pull Request

When creating a pull request, it is expected that your changes have been tested and will compile successfully. Alchema makes use of a few different compile-time checks including Checkstyle and JUnit tests to ensure that code quality meets basic standards.

PLEASE be sure that your changes compile! This makes the review process easier and ensures that a follow-up commit need not be created to patch any compile errors. This means that tests should be enabled and passed (run mvn test in the command line or through your IDE) and no Checkstyle violations should be present.

alchema's People

Contributors

2008choco avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

alchema's Issues

Different types of getting Cauldron water level in 1.17.

Describe The Bug

A clear and concise description of what the bug is.

It seems that 1.17 cannot load the water level contained in Cauldron.

Reproduction Steps

Steps to reproduce the bug:

  1. Server on
  2. Error loading plugin.

Images / Video

If applicable, add screenshots and or upload a video to help demonstrate the bug.

java.lang.ClassCastException: class org.bukkit.craftbukkit.v1_17_R1.block.data.CraftBlockData cannot be cast to class org.bukkit.block.data.Levelled (org.bukkit.craftbukkit.v1_17_R1.block.data.CraftBlockData and org.bukkit.block.data.Levelled are in unnamed module of loader 'app')
at wtf.choco.alchema.cauldron.AlchemicalCauldron.canHeatUp(AlchemicalCauldron.java:288) ~[?:?]
at wtf.choco.alchema.cauldron.AlchemicalCauldron.update(AlchemicalCauldron.java:473) ~[?:?]
at wtf.choco.alchema.cauldron.CauldronUpdateHandler.run(CauldronUpdateHandler.java:85) ~[?:?]
at org.bukkit.craftbukkit.v1_17_R1.scheduler.CraftTask.run(CraftTask.java:81) ~[spigot-1.17.jar:3131-Spigot-66f9d3c-c9a92ad]
at org.bukkit.craftbukkit.v1_17_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:400) ~[spigot-1.17.jar:3131-Spigot-66f9d3c-c9a92ad]
at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:1251) ~[spigot-1.17.jar:3131-Spigot-66f9d3c-c9a92ad]
at net.minecraft.server.dedicated.DedicatedServer.b(DedicatedServer.java:436) ~[spigot-1.17.jar:3131-Spigot-66f9d3c-c9a92ad]
at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:1199) ~[spigot-1.17.jar:3131-Spigot-66f9d3c-c9a92ad]
at net.minecraft.server.MinecraftServer.x(MinecraftServer.java:1026) ~[spigot-1.17.jar:3131-Spigot-66f9d3c-c9a92ad]
at net.minecraft.server.MinecraftServer.lambda$0(MinecraftServer.java:307) ~[spigot-1.17.jar:3131-Spigot-66f9d3c-c9a92ad]
at java.lang.Thread.run(Thread.java:831) [?:?]

82ce28f5005e5965

Environment

Server software (Spigot): spigot
Server version (/version): 1.17
Plugin version: latest
**List of other plugins:**No

1.17 Update Request

Could you please update this plugin to the latest version of spigot? (1.17)

Command Recipe Suggestion

Describe the new feature
An option to execute a command on brew completion

How will it work?
This would be a config option just to execute a command on recipe completion. This would allow just about any plugin to be used as a Product in the brews provided that the right player can be targeted on brew completion.

Does this require integration with another plugin?
Nope :D

Right clicking on cauldron with item.

Version 1.0.1.0

It would seem that right clicking the cauldron with an ingredient causes the item to be destroyed by the heat source.

Can I suggest that either this accidental right click with an item will block the unintended action or allow the cauldron to accept the ingredients in this way?

Fun plugin BTW!

Alchema Lag

Describe The Bug

The plugin causes some lag

Alchema::Task: wtf.choco.alchema.cauldron.CauldronUpdateTask (interval:1)
count(511) total(8.66% 16.95s, 66.34% of tick)
avg(33.17ms per - 33.17ms/1.00 per tick

Reproduction Steps

Steps to reproduce the bug:

  1. Place 3 or 4 cauldrons in the world
  2. Sit back and lag a little

Environment

Server software (CraftBukkit/Spigot/Paper/etc.): Paper Spigot
Server version (/version): 1.16.4
Plugin version: 1.0.1.0
List of other plugins: Plugins (163): ActionBarAPI, AdvancedBCRanks, AdvancedFood, AdvancedGUI*, AdvancedPortals, AdvanceParticle, Alchema, AlchemicalArrows, ArmorStandTools, ArtMap, BanManager*, BannerMaker, BeehivesPro, BetterBackpacks, BetterEggs, BetterEnd, BetterFarming, BKCommonLib, BlockParticles, BlocksHub, BlueMap, BookShelf, Boss, BuildersWand, ChatControlRed, ChestProtect, ChestTerminal, Chunky, Citizens, CitizensCMD, CitizensText, CMI, CMIPaperLib, Companions, ConsoleSpamFix, CoreArena, CoreProtect, CraftingStore, CrateReloaded, CS-CoreLib, CustomCrafting, CustomEnderChest, DefensiveTurrets, DeluxeTags*, Denizen, DiceFurniture, DiscordSRV, DisplayShops, dtlTradersPlus, DyedBackpacks, DynaTech, EcoEnchants, EcoPower, EditableSign, EffectLib*, Elevator, Emotes, EntityTrackerFixer, EpicWorldGenerator, ExoticGarden, ExploitFixer, ExtraHeads, ExtraTools, EZColors, F3NPerm, FastAsyncWorldEdit (WorldEdit), FeatherBoard*, FireWorkMaker, FluffyMachines, FlyingCarpet, FurnitureLib, Gaea, GCore, GlowAPI*, GPS, HamsterAPI*, HeadDatabase, HoloBroadcast, HolographicDisplays, HolographicExtension, HyperDrive, InfinityExpansion, InteractionVisualizer, InteractiveChat, InteractiveChatDiscordSRVAddon, LampControl, Lands, LandsDiscordBot, LibsDisguises, LightAPI, LightCleaner, LimitPillagers, Liquid, LiquidTanks, LiteXpansion, LuckPerms, MarketPlace, MCCore*, mcMMO, MiniaturePets, MMOHorses, MMOItems, MMOLib, MoneyHunters, MVdWPlaceholderAPI*, MythicMobs, NBTAPI, NBTEditor, NexEngine, Oh_the_dungeons_youll_go, OldCombatMechanics, PacketListenerApi*, PartyChatSpy*, PetMaster, PhantomX, PlaceholderAPI, Plan, PluginConstructorAPI, PremiumVanish, PrivateStorage, ProtectionLib*, ProtocolLib, PyroFishingPro, PyroMining, QuestCreator, RevoltCrates, RoseStacker, RPGChest, RPGHealthIndicator, RPGRegions, SafariNet, SFCalc, Shopkeepers, ShutdownNotice, SilenceMobs*, SimpleRTP*, Slimefun, SlimefunLuckyBlocks, SlimefunOreChunks, SlimyTreeTaps, SmartInvs*, Spartan, Stratos, Tamablefoxes, ThrowingWeapons, TradeMe, UltimateCatcher, UltraRegions, UpgradeableHoppers, UpgradeableSpawners, VarLight, Vault, VoidGenerator, Votifier, VotingPlugin, VoxelSniper, WG-Operations, WhatIsThis, WolfyUtilities, WorldBorder, WorldGuard, WorldGuardExtraFlags, WuufusWaygates

Make all messages configurable

Describe the new feature
While there are messages already available for translation, some are hardcoded into the plugin (eg. this one). Having all messages be translatable would greatly improve usability for different languages.

How will it work?
Either having a separate messages.yml file or a config section would work just fine.

Does this require integration with another plugin?
No

Add Vials of Entity Essence

Vials of Essence

A new item may be added to better integrate Alchema with the world and the entities that inhabit it. This item should not be craftable in a crafting table but rather obtainable from entities through the means of a cauldron.

Vials of entity essence in an inventory

How To Obtain Vials of Essence?

These essence vials may be obtained through three means:

  • Boiling an entity in a cauldron to add a new type of ingredient, alchema:entity_essence
    • This ingredient may be used in a few new default crafting recipes. See below for potential new recipes
  • Killing an entity with an empty vial (or a vial of the same type). Will only fill the vial partially (perhaps 5% for each kill?)
  • As a very rare drop from entities

Empty vials are a new type of item craftable in a regular crafting table. See below:

Crafting an empty vial
The empty vial

What Do Vials of Essence Do?

As mentioned, vials of essence may be dropped into boiling cauldrons as an ingredient (alchema:entity_essence). The vials will hold a variable amount of essence (from 0 - 1,000) and will fill the cauldron accordingly. When not used in a cauldron, vials of essence may also be consumed by players much like a potion or bottle of water. Depending on the type of essence, the consumption will have differing effects on the player - whether those effects be positive or negative will also depend on the type of essence in the vial.

Configuration

These new vials of essence should be relatively configurable for server owners. All potential configuration options may look like the following:

VialOfEssence:
  MaximumEssence: 1000
  DroppedByEntities: true
  EssenceFromEntityKill: 50
  Item:
    Empty:
      Name: "&fEmpty Vial"
      Lore:
      - "Collects entity essence."
      CustomModelData: 1
    Filled:
      Name: "&fVial of Essence &7(%entity%)"
      Lore:
      - "&7&oCauldron ingredient"
      CustomModelData: 2

Custom Textures?

By default, Alchema will not provide authors with any custom textures. The colours of the potions should suffice for at least the sake of vanilla and distinguishing between the differing types of essence. However, textures should be supported through the use of a customizable CustomModelData configuration option as seen in the Configuration section above.

Brewery Compatibility

Describe the new feature
I would like to see this add compatibility with the brewery plugin. Brewery is a custom potions brewing plugin that is somewhat popular in survival servers, allowing players to boil ingredients, distill potions, and age them in "barrels."

How will it work?
Recipes created with Alchema could also be used in Brewery as ingredients for potions and brews.

There may be a compatibility issue with flame sources under cauldrons, however brewery required interacting with the item while Alchema allows dropping the items in. Would need further testing or ability to require specific heat sources.

Does this require integration with another plugin?
Brewery
Github: https://github.com/DieReicheErethons/Brewery
Spigoot: https://www.spigotmc.org/resources/brewery.3082/

Add campfire support

Please add campfire and soul campfire support for making a alchema cauldron, it just makes more sense

Recipes for cobblestone -> gravel, gravel -> sand

I added this to our server as some people like to build and not have to grind all that much.

I figured I would share the json here for others to see/use (or perhaps you can use it in examples).

Cobblestone -> Gravel -> Sand while using Flint as the grinding/alchema ingredient to make it work:

Cobblestone into Gravel:

{
    "result": {
        "item": "minecraft:gravel",
        "amount": 8
    },
    "ingredients": [
        {
            "type": "alchema:material",
            "item": "minecraft:cobblestone",
			"amount": 8
        },
        {
            "type": "alchema:material",
            "item": "minecraft:flint"
        }
    ]
}

Gravel into Sand:

{
    "result": {
        "item": "minecraft:sand",
        "amount": 8
    },
    "ingredients": [
        {
            "type": "alchema:material",
            "item": "minecraft:gravel",
			"amount": 8
        },
        {
            "type": "alchema:material",
            "item": "minecraft:flint"
        }
    ]
}

Contents GUI

Describe the new feature
A GUI to view and take contents of cauldron

How will it work?
SHIFT+RIGHT-CLICK Cauldron to open a chest GUI where you can view all contents that are in the cauldron and even take out the items (alternate way to breaking cauldron)

MMOItems integration

Describe the new feature
MMOItems integration to allow the creation/usage of MMOItems.

How will it work?
Like witchcraft! But seriously - similar to the 'mincraft:potato' or 'alchema:waffles' we could just have 'mmoitem:chickennuggies' or something. Issues may stem from MMOItems have both a name and a type, not sure how that would be handled.

Does this require integration with another plugin?
Yes - and unfortunately the resource is premium, however I am more than willing to provide a test environment. API information can be found here

Allow Custom Names and Model Data for brewed items

Describe the new feature
Add ability to add custom item names and attach model data to the output items

How will it work?
add a "Name" and "CustomModelData" option to the Json files for the items

Does this require integration with another plugin?
I would really hope not :p

Custom Potion Support

As far as I can tell the json recipe file cannot handle custom nbt data for the "item" tag. (Please correct me if I am wrong) My idea would be to include an "nbt" or "itemmeta" tag which allows for creation of items (such as potions) with custom nbt data. Specifically I would like to use "custompotioneffects" and "custompotioncolor" as listed here. Though, I believe that adding custom nbt support for all items could allow other users to create some interesting recipes such as custom soups with higher/lower saturation based on the ingredients used (something else I am very interested in doing).

Alternatively, I have been attempting to add this data using this format. Perhaps it would be better than a special nbt tag:
"item": { "id": "minecraft:potion", "custompotioneffects": { "id": 1, "amplifier": 2, "duration": 1200 }, "custompotioncolor": "#00bfff" }

Preferably I would like the option to add more than one potion effect so that these cauldron-brewed potions are weaker and also have a negative effect; hinting that the cheaper Alchema recipes are convenient but not as stable as brewing stand potions. Possible multi-effect implementation (unless this is already possible with one tag):

"item": { "id": "minecraft:potion", "custompotioneffects": { "id": 1, "amplifier": 2, "duration": 1200 }, "custompotioneffects": { "id": 2, "amplifier": 0, "duration": 1200 } "custompotioncolor": "#00bfff" }

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.