FentLib

FentLib

杰克的模组实用代码,以及原版/模组调整,比如动态服务器图标,或将神秘法典导出为HTML文件的工具。

FentLib

一个共享代码库及调整/修复模组。

logo

github curse modrinth 67 maven forge cord

功能

  • 支持动态 GIF 服务器图标。只需将 server-icon.gif 文件放入服务器根目录即可。大小限制可配置。HodgePodge 是一个可选依赖,如果你想使用更大的 GIF(因为数据包大小限制),则需要它。 animated_server_icons 使用 /reload_icon 命令重新加载图标。也适用于 server-icon.png。
  • 移除模组列表界面中的 EnderCore / HodgePodge 信息按钮。
  • API 用于修改 S00PacketServerInfo 数据包。示例:
public class ClientProxy extends CommonProxy {
    @Override
    public void preInit(FMLPreInitializationEvent event) {
      S00PacketServerInfoModifyService.registerDeserializeHandler((response, fentlibData, serverData) -> {
        if (fentlibData.has("server_to_client_payload")) {
          // 哟嚯,我们收到东西了!!!!
          // serverData 包含服务器 IP 等信息
        }
      });
    }
}

public class CommonProxy {
  public void preInit(FMLPreInitializationEvent event) {
    if (MiscUtil.isServer()) {
      S00PacketServerInfoModifyService.registerHandler((response, fentLibPresent) -> {
        // fentLibPresent 只是一个布尔值,表示是否加载了 fentlib
        return "server_to_client_payload";
        // 你可以返回一个 String、一个 S00PacketServerInfoModifyService.KeyValue 或一个 JsonElement。如果你返回
        // 一个非空值,它将被传递回客户端
      });
    }
  }
}
  • /dump_thaumonomicon <可选注释> 命令。在客户端运行,所有神秘时代研究将被转储为一个静态网站。注释将显示在页面标题下方,你可以注明进行转储时所使用的整合包或模组。 转储示例
  • /warpdim [维度 ID] 命令。轻松传送到某个维度(用于调试)。
  • SessionAccessTokenOverrideMixin 允许在开发环境启动时通过 -Dfentlib.accessTokenOverride=<令牌> 覆盖会话访问令牌。
  • 客户端声音工具,用于在不增加音量的情况下设置自定义最大衰减距离。方法:
SoundUtil.withMaxDistance(ISound sound, float maxDistance);
SoundUtil.playWithMaxDistance(ISound sound, float maxDistance);
SoundUtil.playWithMaxDistance(SoundHandler soundHandler, ISound sound, float maxDistance);
SoundUtil.playAt(ResourceLocation soundResource, double x, double y, double z, float volume, float pitch, float maxDistance);

示例:

SoundUtil.playAt(waveSound, x, y, z, 0.25F, 1.0F, 64.0F);
  • 为本地 Web 界面提供基于 Minecraft 端口的 HTTP 反向代理。在 config/fentlib/http-port-routes.json 中配置路径到端口的映射,这样诸如 Dynmap 之类的服务就可以通过服务器端口访问,例如 /dynmap/...,而无需使用单独的端口。 在 config/fentlib/fentlib.cfg 中设置 publicBaseUrl 为服务器的公共基础 URL;模组应在其基础上附加自己的相对路由路径。
  • QOI 图像格式支持及工具,感谢 saharNooby/qoi-java。有关用法示例,请查看 server-icon.qoi 支持的实现方式。
  • WebP 图像格式支持及工具,感谢 haraldk/TwelveMonkeys。有关用法示例,请查看 server-icon.webp 支持的实现方式。
  • 可以使用 serverIconDirectory 配置选项设置默认服务器图标路径。

钓鱼战利品配置

在 config/fentlib/fentlib.cfg 中设置 enableFishingLootTable=true 以启用 FentLib 的钓鱼覆盖。战利品表位于 config/fentlib/fishing-loot.json。启用后,原版仍会决定收获是 鱼、垃圾 还是 宝藏,但物品本身只来自此 JSON。

该 JSON 具有顶层的 fish、junk 和 treasure 列表。每个条目使用原版风格的 weight,支持 count 和 meta 范围,可以使用 biomes 限制为生物群系白名单,或使用 invertBiomes 反转为黑名单,并且生物群系选择器可以是数字 ID、生物群系名称或匹配任何生物群系的 *。条目还可以使用明确的数字附魔 ID 或使用 useVanillaEnchantingRules 来应用原版风格的随机附魔。

{
  "fish": [
    {
      "item": "minecraft:fish",
      "weight": 60,
      "count": { "min": 1, "max": 1 },
      "meta": { "min": 0, "max": 0 }
    },
    {
      "item": "minecraft:fish",
      "weight": 10,
      "count": { "min": 1, "max": 2 },
      "meta": { "min": 1, "max": 1 },
      "biomes": ["ocean", "river"]
    }
  ]
}

依赖

构建

./gradlew build.

致谢

许可

LGPLv3.

请我喝杯咖啡

  • ko-fi.com
  • 门罗币:893tQ56jWt7czBsqAGPq8J5BDnYVCg2tvKpvwTcMY1LS79iDabopdxoUzNLEZtRTH4ewAcKLJ4DM4V41fvrJGHgeKArxwmJ

license