
FentLib
A shared code library and tweak/fix mod.
Обновлён 23 июня 2026 г. · опубликован 10 марта 2026 г.
FentLib
A shared code library and tweak/fix mod.

Features
- Support for animated GIF server icons. Just drop a
server-icon.giffile in the server root directory. Size limits are configurable. HodgePodge is a soft dependency, required if you want to use larger GIFs (because of the packet size limit).
Use the /reload_iconcommand to reload the icon. Also works forserver-icon.png. - Removal of EnderCore / HodgePodge Info Button in the mod list screen.
- API to modify the
S00PacketServerInfopacket. Example:
public class ClientProxy extends CommonProxy {
@Override
public void preInit(FMLPreInitializationEvent event) {
S00PacketServerInfoModifyService.registerDeserializeHandler((response, fentlibData, serverData) -> {
if (fentlibData.has("server_to_client_payload")) {
// Yoohoo we got something back!!!!
// serverData contains stuff like server IP
}
});
}
}
public class CommonProxy {
public void preInit(FMLPreInitializationEvent event) {
if (MiscUtil.isServer()) {
S00PacketServerInfoModifyService.registerHandler((response, fentLibPresent) -> {
// fentLibPresent is just a boolean indicating whether fentlib is loaded
return "server_to_client_payload";
// You can return a String, a S00PacketServerInfoModifyService.KeyValue, or a JsonElement. If you return
// a non-null value, it will be passed back to the client
});
}
}
}
/dump_thaumonomicon <Optional Comment>command. Run it from the client, and all Thaumcraft research will be dumped as a static website. The comment will be visible under the page title, and you can indicate the pack or mods for with which the dump was done.
/warpdim[dimension ID] command. Painlessly warp to a dimension (meant for debugging).SessionAccessTokenOverrideMixinallows overriding the session access token in dev launches via-Dfentlib.accessTokenOverride=<token>.- Client sound utilities to set a custom max attenuation distance without increasing the sound volume. Methods:
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);
Example:
SoundUtil.playAt(waveSound, x, y, z, 0.25F, 1.0F, 64.0F);
- HTTP-on-Minecraft-port reverse proxying for local web UIs. Configure path-to-port mappings in
config/fentlib/http-port-routes.jsonso services like Dynmap can be reached through the server port, such as/dynmap/..., instead of separate ports. SetpublicBaseUrlinconfig/fentlib/fentlib.cfgto the public base URL of the server; mods should append their own relative route paths on top of it. - QOI image format support and utils thanks to saharNooby/qoi-java. For usage example, check out how support for
server-icon.qoiis implemented. - WebP image format support and utils thanks to haraldk/TwelveMonkeys. For usage example, check out how support for
server-icon.webpis implemented. - Default server icon path can be configured using the
serverIconDirectoryconfig option.
Fishing Loot Config
Set enableFishingLootTable=true in config/fentlib/fentlib.cfg to enable FentLib's fishing override. The loot table lives at config/fentlib/fishing-loot.json. When enabled, vanilla still decides whether a catch is fish, junk, or treasure, but the item itself comes only from this JSON.
The JSON has top-level fish, junk, and treasure lists. Each entry uses vanilla-style weight, supports count and meta ranges, can be limited to a biome whitelist with biomes or inverted into a blacklist with invertBiomes, and biome selectors can be numeric IDs, biome names, or * to match any biome. Entries can also use explicit numeric enchant IDs or useVanillaEnchantingRules for vanilla-style random enchanting.
{
"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"]
}
]
}
Dependencies
Building
./gradlew build.
Credits
License
LGPLv3.
Buy me a coffee
- ko-fi.com
- Monero:
893tQ56jWt7czBsqAGPq8J5BDnYVCg2tvKpvwTcMY1LS79iDabopdxoUzNLEZtRTH4ewAcKLJ4DM4V41fvrJGHgeKArxwmJ

Центр версий
7 версийЧенджлог
0.0.51Релиз1.7.10 · 23 июня 2026 г.
- Moved ipv6 ban handling over from Wawel Auth
- Add IPv6 LAN world discovery, announcing on ff02::2:60 alongside the vanilla IPv4 group
- Add main-thread drag n drop callbacks
0.0.50Релиз1.7.10 · 12 июня 2026 г.
- Moved Wawel Auth LOTR map player face fix to FentLib. It is now Wawel Auth agnostic.
- Moved over Better Questing skin patch from Wawel Auth
- Moved over Server Tools patch from Wawel Auth
- Fixed Better Questing player portraits using legacy skin loading only
- Fixed Server Utilities tab player heads using legacy skin UVs only
- Move over protocol multiplexing from wawel auth with HttpPortUnification as the request-level extension point
0.0.49Релиз1.7.10 · 29 мая 2026 г.
- Moved http-port-routes.json and fentlib-early.properties to config/fentlib
- Added enabled property to routes
- Added shared sodium-like GUI code (inspired by Angelica impl)
0.0.48Релиз1.7.10 · 21 мая 2026 г.
- Special needs platform, curseforge, gets its own special build that uses ugly AWT only for file-related operations. Other platforms are unaffected.
- Improved Lunix folder opening fallback
0.0.47Релиз1.7.10 · 14 мая 2026 г.
- Fixed Referer-based bypass in the HTTP port reverse proxy that let attackers reach arbitrary paths on upstream ports
- Fixed path traversal in the HTTP port reverse proxy via
../ percent-encoded variants escaping the mounted route prefix - HTTP port reverse proxy now forwards only an allow-list of request headers to upstreams, preventing header smuggling (
Authorization,Cookie,X-Forwarded-*, etc.) to localhost services - Added support for modern and HD skins to
ClientUtil.drawPlayerFace(moved over from Wawel Auth)
0.0.46Релиз1.7.10 · 4 мая 2026 г.
- Added possibility to reorder Server entries in the Multiplayer menu while holding shift
- Added own gif decoding implementation, phasing out skrimage dependency
- Shadowing
me.saharnooby:qoi-javanow. Support for server-icon.qoi - Idem, support for webp. Shadowing
com.twelvemonkeys.imageio:imageio-webp - Moved config to fentlib subfolder
- Added fishing loot table system
- Normalized
publicBaseUrlas a shared public base URL for compat mods - Debug config to display opened GUI classes
- Added client sound utilities to set custom max attenuation distances without increasing sound volume
Комментарии
Загружаем…





