Fluidlogged API (液体记录 API)
这个MOD为1.12.2版本添加了基本的液体记录功能,并为其他模组开发者提供了一个库!
任何方块都可以通过这个MOD的配置系统或其库来设置为可记录液体或不可记录液体!
除了添加液体记录功能外,这个MOD还大幅改进了液体碰撞,使其更加准确。
Fluidlogged API 还修复了以下原版bug:
- MC-2591 踩到岩浆的角落会受到伤害
- MC-4533 水在对角连接时产生图形错误
- MC-68129 在水下光照效果不正常
- MC-100886 ID为水或岩浆的落下方块不会渲染
- MC-125771 水下方块选择不正确显示
- MC-127030 流动的水会尝试连接到不应该连接的记录液体方块,导致几个问题
- MC-127108 记录液体方块在未物理连接的侧面会将岩浆转变为黑曜石或圆石
- MC-127270 记录液体方块内部的视觉水平面调整不正确
- MC-227302 水面上的光照效果不正常
问答:
这个MOD是如何工作的?
阅读源代码是真正理解这个MOD内部工作方式的最佳途径,但我会尽力在这里描述一个简化版本:
对于世界中的每个方块,原版有两个功能存储在每个区块中:一个必需的 `IBlockState` 和一个可选的 `TileEntity`。Fluidlogged API 添加了第三个功能,存储在每个区块中:一个可选的 `FluidState`,如果存在的话,存储着记录的液体。
这个MOD应用了 [ASM](
将这个MOD添加到现有世界中是否安全?
这个MOD不会改变 `IBlockStates` 的行为,所以将其添加到现有世界应该是安全的!从现有世界中移除这个MOD也是可以的,只是请注意,现有的 `FluidStates` 将被移除且不可恢复。
如何使用这个MOD的配置?如何将这个MOD用作依赖项?
这个MOD的 [wiki](
如果遇到任何错误、崩溃或MOD不兼容情况该怎么办?
将你发现的任何问题报告给这个MOD的 [问题跟踪器](
如果有其他问题应该怎么办?
欢迎在 Discord 上私信我 (jbredwards#4634) 提出任何问题!其他选择是在 [Cleanroom 的 Discord 服务器](
已知不兼容性:
- Optifine 的过时版本 (只支持 Optifine G5+)
- The Betweenlands *(
截图:
来自Modrinthv3.0.6-mc1.12.2
Fluidlogged-API-v3.0.6-mc1.12.2.jar下载3.0.6#Release**Bug Fixes:**
- Allow null values for `TransformerMethodRedirects::getExplosionResistance` (fixes [#245](https://github.com/jbredwards/Fluidlogged-API/issues/245)).
- Restore the `BlockLiquid::requiresUpdates` patch from pre-v3.0.0 (fixes [#244](https://github.com/jbredwards/Fluidlogged-API/issues/244)).
- Fix [#243 (comment)](https://github.com/jbredwards/Fluidlogged-API/issues/243#issuecomment-2756750874)展开版本: 3.0.6支持游戏: 1.12.2类型: ForgeRelease下载次数: 29,079v3.0.5-mc1.12.2
Fluidlogged-API-v3.0.5-mc1.12.2.jar下载3.0.5#Release**Bug Fixes:**
- Fix all render crashes caused by mods not passing `IExtendedBlockState` into fluid models (fixes [#242](https://github.com/jbredwards/Fluidlogged-API/issues/242)).
- Fix `PluginWorld.getStrongPower()` crash (fixes [#239](https://github.com/jbredwards/Fluidlogged-API/issues/239), [#240](https://github.com/jbredwards/Fluidlogged-API/issues/240), and [#243](https://github.com/jbredwards/Fluidlogged-API/issues/243)).
**Compatibility Bug Fixes:**
- Better Foliage:
- FluidStates now don't use Better Foliage's cutout render layer (fixes [#236](https://github.com/jbredwards/Fluidlogged-API/issues/236)).
- Dynamic Trees:
- `BlockRootyWater` is now fluidloggable, and all of its built-in "pseudo-fluidlogging" logic has been removed. This fixes [#241](https://github.com/jbredwards/Fluidlogged-API/issues/241), along with many other miscellaneous bugs and compatibility issues with the block in general.
- `BlockRootyWater` no longer creates water in the nether.
- `BlockRootyWater` now produces block breaking particles.展开版本: 3.0.5支持游戏: 1.12.2类型: ForgeRelease下载次数: 772v3.0.4-mc1.12.2
Fluidlogged-API-v3.0.4-mc1.12.2.jar下载3.0.4#Release**Bug Fixes:**
- Fix crash with Super Factory Manager mod ([issue#233](https://github.com/jbredwards/Fluidlogged-API/issues/233))
- Redirecting a stair block will now cause the stair to update neighboring fluids once again.展开版本: 3.0.4支持游戏: 1.12.2类型: ForgeRelease下载次数: 2,117v3.0.3-mc1.12.2
Fluidlogged-API-v3.0.3-mc1.12.2.jar下载3.0.3#Release**Bug Fixes:**
- Fix crash with Fugue + Optifine ([issue#232](https://github.com/jbredwards/Fluidlogged-API/issues/232))展开版本: 3.0.3支持游戏: 1.12.2类型: ForgeRelease下载次数: 91v3.0.2-mc1.12.2
Fluidlogged-API-v3.0.2-mc1.12.2.jar下载3.0.2#Release**Bug Fixes:**
- Cleanroom support (without Fugue).
- Fix Chiseled Me mod compatibility.展开版本: 3.0.2支持游戏: 1.12.2类型: ForgeRelease下载次数: 55v3.0.1-mc1.12.2
Fluidlogged-API-v3.0.1-mc1.12.2.jar下载3.0.1#Release**Bug Fixes:**
- Fix [issue#230](https://github.com/jbredwards/Fluidlogged-API/issues/230)展开版本: 3.0.1支持游戏: 1.12.2类型: ForgeRelease下载次数: 68v3.0.0-mc1.12.2
Fluidlogged-API-v3.0.0-mc1.12.2.jar下载3.0.0#ReleaseMany things have been changed in this update, so be safe and create a backup of your world before updating!
**Big Features:**
- Support for `BlockFluidFinite` fluidlogging (blocks like Biomes O' Plenty honey)!
- Support for non-source fluidlogging!
- Community Configs! More info [here](https://github.com/jbredwards/Fluidlogged-API-Configs).
- Config rewrite. More info under "Small Features".
- Fluid logic rewrite.
- Many performance improvements.
- Many rendering-related crash fixes.
**Small Features:**
- Add contributors to this mod's credits.
- Add pixelated mod logo in the Fluidlogged API mod list gui.
- Cache quads from this mod's baked fluid model, which should improve fluid rendering performance.
- Config rewrite:
- Almost everything within `blacklist`, `fluidTags`, and `whitelist` can now be supplied as a list or object, making the configs much easier to use overall. For example, `fluids: [{fluidId: "lava"}, {fluidId: ["oil", "crude_oil"]}, {materialId: "water"}]` and `fluids: {fluidId: "lava"}` are both valid. When something is supplied as a list, anything matching even just one entry will be accepted.
- Changes to the `general.cfg` in-game will now cause the world to re-render (like changing between fast and fancy graphics).
- General config settings can now be changed in-game through the config gui!
- Heavily improve config performance.
- Improvements to block entries:
- New selectors ("classId" and "modId") to choose from, in addition to the existing "blockId" selector. "classId" is technical and requires an understanding of Java to use, but allows blocks to be selected based on whether they're assignable from the provided class. "modId" allows blocks to be selected based on whether they're from the provided mod.
- Optional "allowMissing" flag, set this to true if the game should not output an error to the log if the entry matches no blocks.
- Optional "boxes" flag, set this to any full horizontal boxes that this entry occupies in the world. For example, `boxes: {min: 0, max: 16}` tells Fluidlogged API that this entry occupies a [X by 16 by Z] pixel-wide area, and `boxes: [{min: 0, max: 5}, {min: 7, max: 16}]` tells Fluidlogged API that there's a vertical gap of 2 pixels starting 5 pixels off the ground. Many modded blocks do not have collision boxes that accurately reflect their block model. Fluidlogged API tries to dynamically calculate fluidloggability based on collision boxes for non-source fluidlogging, so this setting allows that calculation to be accurate!
- Optional "fluidLevels" flag, set this to whatever fluid levels any fluid must be for the entry to be fluidloggable. This should only be used in very specific scenarios, the "boxes" flag should almost always be used instead.
- Optional "requireSource" flag, set this to true if the entry should only be fluidloggable with source blocks. This should only be used in very specific scenarios, the "boxes" flag should almost always be used instead.
- The "canFluidFlow" flag now also accepts specific directions. For example, `canFluidFlow: true`, `canFluidFlow: "up"`, and `canFluidFlow: ["north", "south", "east", "west"]` are all valid.
- Improvements to fluid entries:
- New "fluidId" (String) argument, returns the fluid whose id (or whose block id) matches. For example, `{fluidId: "water"}` returns the vanilla water fluid.
- New "materialId (String) argument, looks up the fluid whose id (or whose block id) matches, then returns all fluids whose block material matches the found fluid. For example, `{materialId: lava}` finds the vanilla lava fluid, then returns all fluids that have that same block material.
- The old format allowing entries to be made up entirely of one string (i.e. `"water"`) will still work.
- New generated "builtin:material_lava" and "builtin:material_water" fluid tags provided by Fluidlogged API.
- New `fluidTags.cfg` entry improvements:
- Optional "allowMissing" flag, set this to true if the game should not output an error to the log if the entry matches no fluids.
- Optional "remove" flag, contains any fluid entries you want to remove from an existing fluid tag. While this flag is present, "fluids" is ignored and becomes optional.
- "allowDefaults" config setting (named "Allow Defaults" in the config gui) is now applied to everything, except user configs and `IFluidloggable` blocks that have `overrideApplyDefaultsSetting()` return true.
- "fancyFluidEntityCollision" config setting (named "Fancy Fluid Collision Mode" in the config gui) has been reworked, and now has four modes: [Never: Fancy fluid collision is never applied]. [Player Entities: Only apply fancy fluid collision to player entities]. [Medium Entities: Only apply fancy fluid collision to medium-sized entities (whose bounding box has no side greater than 3 blocks)]. [Always: Universally apply fancy fluid collision to all entities (this should never be used)]. This setting defaults to "Player Entities", but is set to "Always" or "Never" if an old fluidlogged api config is found.
- "lavalogVaporizeFlammable" config setting (named "Lava Vaporizing Mode" in the config gui) has been reworked, and now has three modes: [Flammable (All), Flammable (Fluidloggable), and Never]. This setting defaults to "Never", but is set to "Flammable (Fluidloggable)" or "Never" if an old fluidlogged api config is found.
- Now split into [`fluidlogged_api/blacklist.cfg`, `fluidlogged_api/fluidTags.cfg`, `fluidlogged_api/general.cfg`, `fluidlogged_api/whitelist.cfg`] files, instead of all settings being in one `fluidlogged_api.cfg` file.
- New "bucketFluidlogging" config setting (named "Bucket Fluidlogging" in the config gui): controls how sneaking affects the player's ability to fluidlog blocks with a bucket. This setting has three modes: [Always: Players are always able to fluidlog blocks, regardless of whether they're sneaking. This is the Vanilla 1.13+ behavior]. [No Sneak: Players cannot fluidlog blocks while sneaking. This is the legacy Fluidlogged API (pre-v3.0.0) behavior]. [On Sneak: Players can only fluidlog blocks while sneaking]. This setting defaults to "Always", but is set to "No Sneak" if an old fluidlogged api config is found.
- New "downloadModConfigs" config setting (named "Community Configs Mode" in the config gui): controls how the online configs are handled. This setting has three modes: [Disabled: Prevents Fluidlogged API from updating its internal online config cache, and prevents it from being used in-game]. [Ignore Updates: Prevents Fluidlogged API from updating its internal online config cache, but still allows the existing cache to be applied in-game]. [Keep Updated: Allows Fluidlogged API to keep its internal online config cache up-to-date, and allows it to be applied in-game]. This setting defaults to "Keep Updated", but is set to "Disabled" if an old fluidlogged api config is found.
- New "fancyFluidRenderer" config setting (named "Fancy Vanilla Fluid Rendering" in the config gui): forces water and lava to use the same fluid renderer that modded fluids use. True by default.
- New "fixBadFluidMixing" config setting (named "Fix [https://bugs.mojang.com/browse/MC-127108](https://bugs.mojang.com/browse/MC-127108)" in the config gui): while enabled, waterlogged blocks cannot turn lava into obsidian or cobblestone on physically unconnected sides (also applied to many modded fluid interactions). This setting defaults to true. This feature was requested by [issue#193](https://github.com/jbredwards/Fluidlogged-API/issues/193).
- New "fluidStateIsFireInsulator" config setting (named "Fluids Protect Against Fire" in the config gui): lets fireproof FluidStates fully protect blocks against fire. This setting defaults to true, but is set to false if an old fluidlogged api config is found.
- New "ignoreLowFluidCollision" config setting (named "Prevent Shallow Fluid Swimming" in the config gui): while enabled, players cannot swim in shallow fluids (like in Vanilla 1.13+). This setting defaults to true, but is set to false if an old fluidlogged api config is found.
- Old `fluidlogged_api.cfg` config is automatically converted to the new format at runtime, with existing settings preserved. The old file in renamed `fluidlogged_api.cfg_old` and a `fluidlogged_api.cfg_README.txt` file is created to inform players of the config system change.
- New "nonSourceFluidlogging" config setting (named "Non-Source Fluidlogging" in the config gui): lets users completely disable the new non-source fluidlogging feature. This setting defaults to true, but is set to false if an old fluidlogged api config is found.
- Removed some now redundant config settings due to rewrites. This includes "debugASMPlugins", "fluidsBreakTorches", "fluidloggedFluidSpread", and "removeVerticalFluidloggedFluidSpread". Reasons: ["debugASMPlugins" was removed due to switching asm plugin output to the debug logs instead of normal logs]. ["fluidsBreakTorches" was removed due to fixing the bug that caused fluids to break certain blocks regardless of fluidloggability. If you want fluidloggable torches, you can now add them to your whitelist without worrying about them breaking]. ["fluidloggedFluidSpread" was removed due to rewriting fluid flow logic, and the addition of non-source fluidlogging. If non-source fluidlogging is disabled, this feature enables itself (though in a much better way, now being combined with `getOptimalFlowDirections()`)]. ["removeVerticalFluidloggedFluidSpread" was removed due to rewriting fluid flow logic, the addition of non-source fluidlogging superseding it, and it being a workaround for the limited fluidlogging functionality at the time].
- Server-side fluidlogging configs are now synced to all clients. This does not change the configs that are already saved to the client's system, and makes it now possible for clients to have their own different fluidlogging configs before joining a server.
- FluidStates can now provide a redstone output (like Thermal Foundation's destabilized redstone).
- Ladders can now be climbed by entities inside a fluid.
- Many new lang keys.
- Mine Carts on rails now slow down while they're in water.
- New `fluidlogged` and `fluidlogged_api` tree commands:
- `help` subcommand: functions the same as the `/forge help` subcommand.
- `print` subcommand: outputs all fluidlogging information to a file, making it easy for modpack devs to identify all fluidloggable blocks.
- `reload` subcommand: functions the same as the `reloadFluidloggedAPI` command.
- `setfluid` subcommand: functions the same as the `/setfluid` command, and now accepts an optional fluid level argument.
- `test` subcommand: tests the fluidloggability of whatever block is at the provided position.
- All *new* commands will exist only as subcommands for the `/fluidlogged` and `/fluidloggedAPI` tree commands. The existing `/reloadFluidloggedAPI` and `/setfluid` commands will remain.
- Players can no longer sprint in fluid blocks (like in vanilla 1.13+). This is automatically disabled while Aqua Acrobatics is installed.
- Remove non-functional "disable" button from Fluidlogged API in the mod list gui.
**Bug Fixes:**
- Apply FluidState-sensitivity transform to all `Block.getExplosionResistance()` calls, to fix compatibility issues for blocks that override `Block.getExplosionResistance()`.
- Better fix for [issue#151](https://github.com/jbredwards/Fluidlogged-API/issues/151) (closes [issue#226](https://github.com/jbredwards/Fluidlogged-API/issues/226)).
- Gaseous fluids inside fluidlogged hoppers can now flow out from the top.
- Fire now handles flammable FluidStates better.
- Fix a rare `World.isMaterialInBB()` collision bug.
- Fix fluid surface lighting ([issue#191](https://github.com/jbredwards/Fluidlogged-API/issues/191)).
- Fix fluidlogged blocks rendering darker than they should.
- Fix [issue#227](https://github.com/jbredwards/Fluidlogged-API/issues/227).
- Fix lots of block neighbor update issues regarding FluidStates, heavily improving performance.
- Fix some bugs with the legacy data fixer.
- Fix under fluid surface face rendering conditions being inconsistent with vanilla ([issue#202](https://github.com/jbredwards/Fluidlogged-API/issues/202)).
- Fixed all lighting issues for fluidlogged blocks with `useNeighborBrightness = true`.
- Fixed FluidState voiding if a fluidlogged flower pot is removed.
- `FluidState.of()` now accounts for `IExtendedBlockState` instances, preventing possible duplicate FluidStates at runtime.
- FluidStates are now saved in forge block snapshots.
- Forge no longer falsely blames Fluidlogged API for cascading world gen issues caused by other mods.
- No longer send render updates or observer updates when a vanilla fluid switches between static and dynamic (this reduces some lag when placing lots of blocks underwater).
- Rewrite fluidlogging bucket logic:
- No longer controlled by `FillBucketEvent`, instead handled by class transformations.
- Fixes fluidlogging not working for some modded fluid containers.
- Fixes possible fluid duplication bugs.
- Rewrite the `FluidState.getExtendedState` code:
- Fixes all of the modded renderer crashes.
- Fixes all of the rendering oddities.
- Fixes incorrect flow direction.
- Fixes possible disconnected lines on fluid surfaces.
- The bevaior of flowing fluids is now consistant to their behavior without this mod installed (for vanilla and forge fluids). The only difference now should be that they can flow into fluidloggable blocks.
- This mod's client packets now get the client world from the message context ([issue#204](https://github.com/jbredwards/Fluidlogged-API/issues/204)).
- Trapdoors now notify neighbors when opening/closing.
- Undesired FluidStates are now prevented during world generation ([issue#189](https://github.com/jbredwards/Fluidlogged-API/issues/189)).
- Use mcmod.info file for mod properties.
- Vanilla fluid drip particles now work how you'd expect when there's no block under a fluidlogged block.
**Compatibility Bug Fixes:**
- General:
- All modded boats (that extend `EntityBoat`) should now work properly ([issue#194](https://github.com/jbredwards/Fluidlogged-API/issues/194)).
- Apply `BlockWall` fixes to all improperly coded modded wall blocks.
- Disable fix for `IFluidBlock.getFilledPercentage()`. It caused some inconsistencies with certain mods, like some modded fluids having a higher light level while Fluidlogged API was installed
- Fix config crash with certain mod ids.
- `FluidBucketWrapper` now accounts for modded `ItemBucket` instances.
- Some more modded farmland blocks now check for FluidStates (biomesoplenty, blue skies, moreplanets, nethercraft).
- Some more modded lilypad blocks now check for FluidStates (betweenlands, blue skies, journey into the light, moreplanets).
- Actually Additions:
- Fluid placers and fluid collectors can now fluidlog and un-fluidlog blocks.
- Applied Energistics 2:
- Fluix crystal creation and crystal seed growth are now FluidState-sensitive.
- Astral Sorcery:
- Astral Sorcery's rendering IBlockAccess classes now implement IWorldProvider, fixing some dev-environment-only crashes.
- Crystal item entities and crystal tool item entities are now FluidState-sensitive.
- Betweenlands:
- Betweenlands mod fluid collision fixes.
- Betweenlands mod fluid rendering fixes.
- Fog fixes.
- Biomes O' Plenty:
- Apply Fluidlogged API's fluid mixing logic to honey.
- Fixed a possible honey duplication bug involving an unnecessary `FillBucketEvent` event subscriber.
- Blue Skies:
- Fix Blue Skies' bucket fluid handler.
- Make Blue Skies' bucket use its `IFluidHandler` when placing/taking fluids.
- Botania:
- Allow Botania's void bucket item to recognise tanks and FluidStates.
- Buildcraft:
- Various parts of Buildcraft now account for FluidStates: pumps, flood gates, and anything utilizing Buildcraft's fluid utility methods.
- Cat Server:
- Fix startup crash ([issue#178](https://github.com/jbredwards/Fluidlogged-API/issues/178) and [issue#221](https://github.com/jbredwards/Fluidlogged-API/issues/221)).
- CB Multipart:
- Fix CB Multipart blocks voiding fluids when they are placed.
- Non-state-based CB Multipart parts can now be blacklisted from fluidlogging via groovyscript (see `PluginCBMultipart`).
- Ceramics:
- The clay bucket now has an easier time fluidlogging blocks.
- CoFHCore:
- Fixes for CoFHCore fluid collision.
- Fixes for CoFHCore fluid mixing (side checks and use forge events).
- Fog fixes.
- Ender Core:
- Fog fixes.
- Ender IO:
- Fixes for Ender IO fluid collision.
- Industrial insulation (Ender IO's sponge block) is now FluidState-sensitive.
- Flopper:
- Floppers can now fluidlog and un-fluidlog blocks.
- Galacticraft:
- Fix crash with grating blocks ([issue#222](https://github.com/jbredwards/Fluidlogged-API/issues/222)). This was done by making `BlockGrating` fluidloggable, and removing all of its built-in "pseudo-fluidlogging" logic. This also fixes many other miscellaneous bugs and compatibility issues with the block in general.
- Fix Galacticraft's fluid collision.
- Make Galacticraft's fluid fog texture overlay renderer account for FluidStates.
- Remove conflicting Galacticraft `getExtendedState` code (fixes rendering bugs).
- Industrial Foregoing:
- Industrial Foregoing's pump is now FluidState-sensitive.
- Lycanites:
- Fixes for Lycanites fluid collision.
- Fixes for Lycanites fluid mixing (side checks, and use forge events).
- Fixes for Lycanites fluid source creation (use forge's source creation system, instead of what it was doing before).
- Mekanism:
- Fixed FluidState voiding if a fluidlogged mekanism container is removed.
- Make Mekanism's fluid tank use its `IFluidHandler` when placing/taking fluids.
- Various parts of Mekanism now account for FluidStates: pumps, and anything utilizing Mekanism's fluid utility methods.
- Nethercraft:
- Fix Nethercraft's bucket fluid handler.
- Make Nethercraft's bucket use its `IFluidHandler` when placing/taking fluids.
- Nethercraft's lava bucket now appears in its creative tab.
- OpenBlocks:
- OpenBlocks' sponge block is now FluidState-sensitive.
- Optifine:
- Fix ([issue#211](https://github.com/jbredwards/Fluidlogged-API/issues/211)).
- Support for old versions of Optifine (like F5), by fixing crashes caused by Optifine loading classes too early.
- ProjectE:
- Amulets can now fluidlog blocks
- Amulets can now walk on FluidStates
- Amulet projectiles now account for FluidStates
- Fix lava placement breaking blocks.
- QuantumFlux:
- Give QuantumFlux's void bucket an `IFluidHandler`.
- Make QuantumFlux's void bucket sensitive to FluidStates.
- Make QuantumFlux's void bucket use its `IFluidHandler` when placing/taking fluids.
- Random Things:
- Make Random Things' ender buckets sensitive to FluidStates.
- Reliquary:
- Make Reliquary's chalice use its `IFluidHandler` when placing/taking fluids.
- Tiny Progressions:
- Allow Tiny Progressions' bucket to recognise tanks and FluidStates.
- Thermal Foundation:
- Thermal Foundation's gaseous fluids (aerotheum and glowstone) "enableSourceDissipate" setting now works while this mod is installed (and no longer removes the block here if fluidlogged).
- Thermal Foundation's gaseous fluids (aerotheum and glowstone) "enableSourceFloat" setting now works while this mod is installed (and no longer removes the block here if fluidlogged).
- Thermal Foundation's gaseous fluids (aerotheum and glowstone) "maxHeight" setting now works while this mod is installed.
- Thermal Foundation's mana fluid's "enableSourceFall" setting is now applied.
- Thermal Foundation's non-gaseous fluids "enableSourceFall" setting now works while this mod is installed (and no longer removes the block here if fluidlogged).
- Tropicraft:
- Entities inside Tropical Water now always move in the correct direction.
- Fog fixes.
- Tropicraft fences now use fluidlogging instead of a "WATER" boolean property.
- Tropicraft's tropical water can now be collected as a FluidState.
- Tropicraft's tropical water fluid is now compatible with forge's water fluid.
**API Changes:**
- Lots of code cleanup.
- Massive `api.world` package rewrite, aimed at "un-hardcoding" FluidState world access.
- Move all of this mod's "IFluidloggable block"-related class transformations to a "fluidlogged_api/whitelist.jsonc" file.
- Moved some methods from `PluginBlockLiquid`, `PluginBlockFluidBase`, `PluginBlockFluidClassic`, etc. into their own handler classes.
- New 64 block flag to enable FluidState preservation during world gen for blocks that are added via the config system.
- Remove `api.asm.impl` package.
- `api.asm.IASMPlugin`:
- New `addMethod()` method that accepts a method signature.
- New `findLocal()` method that allows local variable whose indexes change to still be used.
- New `getAccessorClass()` method that returns the class name of a nested accessor interface.
- New `overrideMethod()` method that takes in a `MethodNode` directly, instead of a search condition.h condition.
- New `transform()` method that takes in a `ClassNode`.
- New `transformNode()` method, splits some functionality off `byte[] transform()`.
- New `withAccessorClass()` method that returns a formatted method descriptor string, with the accessor class added.
- `api.block.BlockWaterloggedPlant`:
- Can be fluidlogged with non-source fluids, if they can be turned into sources (like in vanilla 1.13+).
- Now overrides the "applyDefaults" setting, but can still be manually blocked by dedicated blacklists entries.
- `api.block.IFluidloggable`:
- All blocks implementing `api.block.IFluidloggable` are exempt from the world generation changes.
- New `isFluidloggable()` method that accepts a `FluidState`, to allow for non-source fluidlogging.
- New `overrideApplyDefaultsSetting()` method that allows blocks to keep their fluidlogging functionality while "applyDefaults" is turned off.
- The old `isFluidloggable()` and `isFluidValid()` methods are now only called by the new `isFluidloggable()` method.
- `api.block.IFluidloggableFluid`:
- Removed, and replaced with the much better `api.fluid.IFluidloggableFluid`.
- `api.fluid.IFluidloggableFluid` now has all control over fluidlogging.
- `api.capability.IFluidStateCapability`:
- Drastically improve performance of `get()` for chunks, now O(1) instead of O(2n).
- Remove existing `getContainer()` methods and replace them with one `getContainer()` method that accepts a y position.
- `api.capability.IFluidStateContainer`:
- New `getFluidState()` method that accepts the block position as (x, y, z) integers.
- New `getSerializedPositions()` method that exposes all non-empty FluidState positions as an unmodifiable char set.
- New `setFluidState()` method that accepts the block position as (x, y, z) integers.
- Replace existing `forEach()` method that does not box the serialized positions.
- `api.capability.IPosSerializer`:
- New interface used to serialize position data, to lighten the load put into chunks or packets when sending data to clients. Currently implemented by `api.capability.IFluidStateContainer`.
- `api.datafix`:
- New package containing classes to help mods migrate away from "pseudo-fluidlogging".
- `api.event.FluidloggableEvent`:
- New `IBlockAccess` and `FluidState` fields.
- Old World field is now deprecated, use IBlockAccess instead.
- `api.event.FluidloggedAPIConfigsEvent`:
- New serverside events to modify the runtime `JsonObject` config data on read/reload, or to outright block them.
- `api.fluid.ICompatibleFluid`:
- New `getFluidCompatibility()` method, allows fluids to specify fluid incompatibility.
- The old `isCompatibleFluid()` method is now only called by `getFluidCompatibility()`.
- `api.fluid.IFlowCostFluid`:
- New interface that allows modded fluids to specify a "flow cost". For example, water has a flow cost of 1, and lava has a flow cost of 2 (or in the nether, lava has a flow cost of 1).
- `api.network.FluidloggedAPINetworkHandler`:
- Removed. The network wrapper now lives in `mod.FluidloggedAPI`.
- `api.network.IClientMessageHandler`:
- New `getWorldFromContext()` utility method that returns the world from the message context, prevents a very rare NPE crash.
- New `handleMessage()` method that accepts the message context.
- The old `handleMessage()` method is now deprecated.
- `api.util.FluidState`:
- New `addLevel(int)` method that returns this FluidState with the provided fluid level added.
- New `createFluidStack()` method returns a new `FluidStack` containing this FluidState's fluid.
- New `get(access, x, y, z)` method. Functions like `get(access, pos)`, but takes [x, y, z] directly.
- New `getActualHeight(access, pos)` method that returns the in-world height of this FluidState in pixels, 1 if this FluidState is submerged.
- New `getDensity()` method that returns this FluidState's fluid density.
- New `getDensityDir()` method that returns the densityDir of this FluidState's block if it's a `BlockFluidBase`, otherwise returns -1.
- New `getDisplacements()` method that returns the displacements of this FluidState's block if it's a `BlockFluidBase`, otherwise returns empty.
- New `getDownDensityFace()` method that returns the direction that this FluidState thinks is "down", using `FluidState.getDensityDir()`.
- New `getFlowCost(world)` method that returns the flow cost of this fluid.
- New `getFluidBlockHandler()` method that returns this FluidState as an `IFluidloggableFluid`.
- New `getFluidBox(access, pos)` method that returns the in-world box that this fluid occupies.
- New `getFromProvider(provider, x, y, z)` method. Functions like `getFromProvider(provider, pos)`, but takes [x, y, z] directly.
- New `getHeight()` method that returns the approximate in-world height of this FluidState in pixels, using only this FluidState's level.
- New `getMetadata()` method that returns the metadata value of this FluidState's `IBlockState`.
- New `getQuantaFraction()` method that returns the quantaFraction of this FluidState's block if it's a `BlockFluidBase`, otherwise returns 8/9.
- New `getQuantaPerBlock()` method that returns the quantaPerBlock of this FluidState's block if it's a `BlockFluidBase`, otherwise returns 8.
- New `getQuantaPerBlockFloat()` method that returns the quantaPerBlockFloat of this FluidState's block if it's a `BlockFluidBase`, otherwise returns 8.
- New `getQuantaValue()` method that returns the quanta value of this FluidState, using only this FluidState level.
- New `getQuantaValue(access, pos)` method that returns the quanta value of the FluidState (or wrapped fluid `IBlockState`) at the position, but only if it's compatible with this FluidState. Otherwise, returns -1, or 0 if the block is air.
- New `getQuantaValueAbove(access, pos, int)` that returns the quanta value of the FluidState (or wrapped fluid `IBlockState`) at the position, but only if it's compatible with this FluidState and the quanta value is higher than the "aboveThis" int parameter. Otherwise, returns -1.
- New `getQuantaValueBelow(access, pos, int)` that returns the quanta value of the FluidState (or wrapped fluid `IBlockState`) at the position, but only if it's compatible with this FluidState and the quanta value is below the "belowThis" int parameter. Otherwise, returns -1.
- New `getTemperature()` method that returns this FluidState's fluid temperature.
- New `getUpDensityFace()` method that returns the direction that this FluidState thinks is "up", using `FluidState.getDensityDir()`.
- New `getWrappedLevel(world)` method that returns the flow cost if this FluidState is a `BlockLiquid` waterfall, otherwise returns the fluid level.
- New `isFluidloggable()` method that returns true if this FluidState can be used for fluidlogging.
- New `isSource()` method that returns true if this FluidState is a source block.
- New `toFlowing()` method that returns this FluidState as a `BlockDynamicLiquid` if it's a `BlockStaticLiquid`, otherwise returns itself.
- New `toSource()` method that returns this FluidState as a source block.
- New `toStatic()` method that returns this FluidState as a `BlockStaticLiquid` if it's a `BlockDynamicLiquid`, otherwise returns itself.
- New `withLevel(int)` method that returns this FluidState with the provided fluid level.
- No longer uses a `Supplier<IBlockState> state` field, instead uses a `IBlockState state` field.
- `api.util.FluidloggedUtils`:
- New `canCreateSource(state, world, pos)` method that returns true if the fluid `IBlockState` can create source blocks.
- New `canFluidOccupy(state, access, pos, fluidState)` method that returns true if the FluidState physically fits outside the provided actual state.
- New `getFluidOrReal(chunk, pos)` method. Functions like `getFluidOrReal(access, pos)`, but uses a `Chunk` instead.
- New `getFluidOrReal(chunk, pos, state)` method. Functions like `getFluidOrReal(access, pos, state)`, but uses a `Chunk` instead.
- New `getFluidState(chunk, pos)` method. Functions like `getFluidState(access, pos)`, but uses a `Chunk` instead.
- New `getFluidState(chunk, pos, state)` method. Functions like `getFluidState(access, pos, state)`, but uses a `Chunk` instead.
- New `isCompatibleFluid(fluidState, fluidState)` method. Functions like `isCompatibleFluid(fluid. fluid)`, but uses FluidState instead.
- New `isStateFluidloggable(state, access, pos, fluidState)` method that returns true if the provided state is fluidloggable with the provided FluidState.
- New `playVaporizeEffects(world, pos, fluidStack)` utility method that runs `Fluid.vaporize()` from the server, while still allowing clients to see any particles.
- New `relightFluidBlock(world, pos, chunk. fluidState)` method. Functions like `relightFluidBlock(world, pos, fluidState)`, but allows the `Chunk` to be passed in.
- New `setFluidToAir(world, pos, state, int)` method that sets a FluidState or fluid IBlockState to air, and returns true if it was successful.
- Performance improvements for `getFluidOrReal` and `getFluidState` methods by calling their alternative Chunk-based method when possible.展开版本: 3.0.0支持游戏: 1.12.2类型: ForgeRelease下载次数: 138v2.2.7-mc1.12.2
Fluidlogged-API-v2.2.7-mc1.12.2.jar下载2.2.7#Release**Bug Fixes:**
- Fix start-up crash with Aqua Acrobatics ([issue#181](https://github.com/jbredwards/Fluidlogged-API/issues/181)) (this bug only affected v2.2.6 of Fluidlogged API)展开版本: 2.2.7支持游戏: 1.12.2类型: ForgeRelease下载次数: 89,914v2.2.6-mc1.12.2
Fluidlogged-API-v2.2.6-mc1.12.2.jar下载2.2.6#Release**Features:**
- New baked model for fluids (no longer use Forge one)
- Improved performance when rendering lots of fluid blocks
**Bug Fixes:**
- Fix fluid sides rarely randomly rendering very wrongly ([issue#179](https://github.com/jbredwards/Fluidlogged-API/issues/179))展开版本: 2.2.6支持游戏: 1.12.2类型: ForgeRelease下载次数: 182v2.2.5-mc1.12.2
Fluidlogged-API-v2.2.5-mc1.12.2.jar下载2.2.5#Release**Bug Fixes:**
- Fix a possible mod conflict during command registry ([issue#175](https://github.com/jbredwards/Fluidlogged-API/issues/175))
- Fix fluid sides rarely randomly rendering very wrongly ([issue#176](https://github.com/jbredwards/Fluidlogged-API/issues/176))展开版本: 2.2.5支持游戏: 1.12.2类型: ForgeRelease下载次数: 328v2.2.4-mc1.12.2
Fluidlogged-API-v2.2.4-mc1.12.2.jar下载2.2.4#ReleaseInitial Modrinth Release展开版本: 2.2.4支持游戏: 1.12.2类型: ForgeRelease下载次数: 658
收录