Skip to content

Let's Talk: Modularization #29

Open

Description

@LemmaEOF

Right now, LibCD is starting to get a bit bloated. It's fundamentally just two things, data extensions and tweakers, but each of those have a lot of subfeatures. On the extensions side, there's condition mcmetas, in-tag conditions, default tag entries, default tag entry output in both recipes and loot tables, and support for full item stack objects in cooking and cutting recipes. On the tweaker side, there's the recipe tweaker, custom-behavior crafting recipes, and loot tweakers, including a lot of builders. It's getting to be a lot for a single lib, but I'm not entirely sure the best way to safely split it up. If anyone has ideas, please let me know!

Activity

  1. LemmaEOF commented on May 17, 2020

    @LemmaEOF
    MemberAuthor

    At the very least, I want to have it so you can have just the API in your dev environment so you don't need to depend on the whole thing. However, I'm a bit worried I messed the ability for that up when I set up the TagHelper class in the way I did. I don't really know how to fix that.

  2. falseresync commented on May 17, 2020

    @falseresync
    Contributor

    Maybe TagHelper.ITEM -> ItemTagHelper.INSTANCE?

  3. falseresync commented on May 17, 2020

    @falseresync
    Contributor

    You may also shard API into pieces shipped only with certain modules, like CCA does

  4. LemmaEOF commented on May 17, 2020

    @LemmaEOF
    MemberAuthor

    well the issue is that ItemTagHelper.INSTANCE has methods that I don't want exposed publicly, which is why the interface exists in the first place.

  5. Pyrofab commented on May 17, 2020

    @Pyrofab

    I think there should be a dedicated tag module. Personally I use LibCD in my mods to add modded entries to my tags, so I don't really need anything else.

  6. LemmaEOF commented on May 17, 2020

    @LemmaEOF
    MemberAuthor

    The thing is that tag extensions depend on both conditions and default entries. I'm not sure whether it would be a good idea to have .mcmeta and the recipe/loot table default-entry extensions in the tag module. Everything's super tangled up because I'm honestly not the best API dev.

  7. falseresync commented on May 17, 2020

    @falseresync
    Contributor

    You should probably make a dependency graph for your API, that would give you a visual aid of what you're trying to do

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedExtra attention is needed

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions