跳到正文

SolLib

Lets mods shine by bringing a constellation of (mostly) data utilities.

收藏

介绍

中文介绍正在准备中,下面暂时显示原文。

Banner

This is a core library for Minecraft mods. Yes, we know, very original.

Believe it or not, copy-pasting a bunch of classes across every project is neither the most efficient nor the most stable idea.


Sol offers a whole constellation of common code for mod developpement.

Most of them orbit around data, multiloader and rendering helpers. A few key highlights being:

Easy config system.

Loaded as soon as you want it, easy to setup and accessible from other mods without the need for hard dependencies.

SolConfig config = MOD.createConfig("sollib/test", 1.0, builder -> builder
    .addObject("category", category -> category
        .comment("This is a comment")
        .add("hello", "world")
        .add("easyconfig", true)
    )
);

MOD.getLogger().info(config.get("category.hello", ""));
// world

Runtime data, controlled by code.

This lets you edit datapack files at runtime, potentially allowing to change recipes depending on config values, edit or disable compat recipes if their target mods are not loaded, automatically generate models for dynamically defined items, and much more.

SolRegistries.Data.RUNTIME.addJson(Identifier.of("minecraft", "recipe/dropper.json"), json -> {
    if (json == null) return null;
    if (!config.get("recipe.copper_dropper", false)) return null;
    
    json.getAsJsonObject("key")
            .getAsJsonObject("#")
            .addProperty("item", "minecraft:copper_ingot");
    return json;
});

Rendering helpers.

Centralized and loader agnostic. No need to make more mixins, either.

ResourceLocation TEXTURE = MOD.makeID("textures/models/sword_overlay.png");

SolClientRegistries.Render.ITEM.register(stack -> stack.is(Items.DIAMOND_SWORD) && stack.isEnchanted(),
        (stack, context, matrices, bufferSource, light, overlay) -> {
    matrices.scale(1.005f, 1.005f, 1.005f);
    matrices.translate(0, 0.995, 0.4975);
    matrices.mulPose(Axis.XP.rotationDegrees(180));

    MockItemRenderer.renderItem(matrices, bufferSource, light, TEXTURE);
});

Simplified registry.

That you can call in the common code, complete with all the syntax sugar you need: define models, burn time, stripping results and everything about a feature at the same time.

MOD.register(BlockHolder.class, "block_block", () -> new Block(BlockBehaviour.Properties.of()))
    .withItem(item -> item.withFuel(200)).dropsSelf()
    .withSlab().withStairs().withWall()
    .withFlammability(20, 5);

For the average user, making this page as flashy as we can won’t really matter. It’s only a library after all.

But if you are a developer and are curious about it, the best way to learn is to read the (wip) Wiki or join the Discord.

常见问题

SolLib 支持哪些 Minecraft 版本?

SolLib 支持 Minecraft Java 版 1.20.1–1.21.1,共 2 个版本,可用的加载器:Fabric / Forge / NeoForge。下载时注意选择和你游戏版本一致的文件。

SolLib 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Fabric / Forge / NeoForge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:客户端和服务端都要装。

评论

登录后评论和评分

Lyof 的其他作品

查看全部 →