[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
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
Reproduction Steps
- Place the following blocks in the correct direction. Command block command:
summon tnt ~1 ~-0.5 ~ {Motion: [0d, 0d, 0.01000005d], Fuse:80}
- Press the button, watch the summoned tnt
Vanilla behavior: TNT gets launched by the slime block
Lithium behavior: TNT falls straight down
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
Tested with
MC version | lithium version | matches vanilla? |
---|---|---|
1.18.2 | 0.7.10 | ✔️ |
1.18.2 | 0.10.3 | ✔️ |
I think this commit fixed the issue:
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
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
Requires fabric-carpet mod to override tnt initial velocity. Use command /carpet hardcodeTNTangle 4.457099494579702
before activate
Behavior
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
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
Example behavior mismatch location: piston coordinate = -2 -58 59
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