垃圾箱

垃圾箱

将注册表、标签以及你对游戏的所有需求转储到本地文件中

游戏机制

垃圾桶

允许你随意转储:

  • 你的游戏注册表,使用命令 /dump registries
  • 你的游戏数据,包括标签、配方等更多内容,使用命令 /dump data
  • 更具体的数据,例如标签、配方、战利品表等,使用命令 /dump data <type>
  • 以上两者,使用纯 /dump 命令

配置

包含一个小型配置文件,允许你设置转储数据时是否转储标签和/或配方。同样地,你可以配置在重载或启动时是否转储数据和/或注册表。 它还提供了控制转储文件组织方式的选项。

该文件位于配置文件夹中,名为 dumpster.properties

服务端或客户端

这个模组的设计其实相当巧妙!(连我自己都感到惊讶)

因此,当模组安装在服务端时,OP 玩家只能使用 /dumpster 命令,这会将所需数据转储到服务端的文件中

同样地,当模组安装在客户端时,玩家可以使用 /dumpster 命令,无需担心自己是否为 OP。

最后但同样重要的是,如果模组同时安装在客户端和服务端,由于 Minecraft 的架构,客户端侧的命令将被重命名为 /dump-client,以便正常工作。

使用场景

这个模组并非用于常规游戏!它纯粹是作为数据包、模组和整合包创作者的便捷工具,让他们能够了解自己对游戏的修改是否产生了预期的影响。

兼容性

本模组默认无法处理模组添加的配方类型。因此,必须实现一个兼容层,可以由添加该配方类型的模组来实现,也可以由打算添加兼容的第三方模组来实现。

如何实现兼容

你可以按照文档中的说明,通过 Modrinth maven API 将此模组导入你的 Gradle 项目。

然后你可以在一个类中实现 RecipeJsonParser 接口,并将其注册为 recipe-dump 入口点,如基础 fabric.mod.json 文件所示。

你还应该使用 TargetRecipeType 注解来标注它,以指明你实际为其注册的配方类型。如果你想要覆盖另一个解析器,也可以为其提供一个更高的优先级值。

这就是你需要做的全部工作。

总而言之,你的配方转储类应该类似以下内容(使用 Yarn 映射):

import com.google.gson.JsonObject;
import mc.recraftors.dumpster.recipes.RecipeJsonParser;
import mc.recraftors.dumpster.recipes.TargetRecipeType;
import net.minecraft.recipe.Recipe;

@TargetRecipeType("mymod:myrecipetype")
public class MyRecipeTypeJsonParser implements RecipeJsonParser {
    private MyRecipe recipe;

    @Override
    public JsonParser.InResult in(Recipe<?> recipe) {
        if (recipe instanceof MyRecipe myRecipe) {
            this.recipe = myRecipe;
            return RecipeJsonParser.InResult.SUCCESS;
        }
        return RecipeJsonParser.InResult.FAILURE;
    }

    @Override
    public JsonObject toJson() {
        // implement your parsing method here
    }
}

其他方法可选可用,用于更详细的功能,例如将单个文件生成的多个配方重新分组,或支持替代的配方类型 ID