Lithium (Fabric)

Lithium (Fabric)

22M Downloads

[1.15~1.17] Inconsistent tnt movement behavior with vanilla, if tnt moves and collides with a block with <1E-7 intersection

Fallen-Breath opened this issue · 7 comments

commented

Instructions

Yeah, some fun 1E-7 thing I guess

In vanilla, tnt is able to move and slightly collide without a block without considered being blocked by the block. Here slightly means < 1E-7 block. With lithium in specific mc version range, that behavior is changed

image


Reproduction Steps

  1. Place the following blocks in the correct direction. Command block command: summon tnt ~1 ~-0.5 ~ {Motion: [0d, 0d, 0.01000005d], Fuse:80}

image

  1. Press the button, watch the summoned tnt

Vanilla behavior: TNT gets launched by the slime block

Lithium behavior: TNT falls straight down

image

Version Information

Tested with

MC version lithium version matches vanilla?
1.15.2 0.4.6
1.16.4/5 0.6.4
1.17.1 0.7.5
1.18.2 0.10.3
1.19 0.8.0 ✔️
1.19.3 0.10.4 ✔️

Other Information

This issue might affect other kinds of entity as well, tnt is just an example

There might be some unfound issues which are also related to this 1E-7 thing, e.g. if the piston extends slower and the tnt collides with the slimeblock, what tnt's z coord will be, sill .51000005, or another adjusted value

Potential vanilla bug exposed, cuz tnt being launched doesn't make any sense. This vanilla behavior happens in 1.14+, and lithium covers this vanilla issue until 1.19

Some research of this issue can be found in https://docs.qq.com/doc/DU0N0elZsTVN0TXNo (in Chinese tho)

Minecraft bug report: https://bugs.mojang.com/browse/MC-259354

commented

Tested with

MC version lithium version matches vanilla?
1.18.2 0.7.10 ✔️
1.18.2 0.10.3 ✔️
commented

I think this commit fixed the issue:

dfc828b

commented

For 1.17.x you can disable the suspected mixin by adding the following line to the lithium config file

mixin.shapes.specialized_shapes=false

commented

Ah I know why I marked 1.18.2 as affected. There's another setup (tnt duper) that we used to test at the beginning. It behaves differently in 1.18.2 so I just assmued the simple setup (shown in this issue) works the same

The tnt duper setup

image

Requires fabric-carpet mod to override tnt initial velocity. Use command /carpet hardcodeTNTangle 4.457099494579702 before activate

Behavior

image

Reproduced with

  • mc1.18.2
  • lithium 0.10.3
  • fabric-carpet 1.4.66

Also it should be reproduce-able with only lithium, if you test it long enough

I might need to find another simple setup for this

commented

Updated table (update 2)

MC version lithium version matches vanilla? (simple) matches vanilla? (duper)
1.15.2 0.4.6
1.16.4/5 0.6.4
1.17.1 0.7.5
1.18.2 0.10.3 ✔️ ⚠️
1.19 0.8.1 ✔️ ⚠️
1.19.3 0.10.4 ✔️ ⚠️

Assuming fabric-carpet doesn't changed related entity movement logic

I'm a bit not sure if the simple setup and the duper setup are the same issue now

Updated

The behavior in mc1.18.2 ~ mc1.19.3 lithium is even locational

image

Example behavior mismatch location: piston coordinate = -2 -58 59

commented

Ah I know why I marked 1.18.2 as affected. There's another setup (tnt duper) that we used to test at the beginning. It behaves differently in 1.18.2 so I just assmued the simple setup (shown in this issue) works the same

Migrated this into a separated issue (#443). Now this issue focuses more on the 1e-7 margin thing

commented

If this issue only applies to versions up to 1.17 there won't be a fix as there are currently no backports to 1.17 and earlier planned