pixlyzer-physics/ReadME.md
2023-01-12 11:53:00 +01:00

126 lines
2.8 KiB
Markdown

# pixlyzer-physics
This [pixlyzer](https://gitlab.bixilon.de/bixilon/pixlyzer) module runs physics test on minecraft and extracts data from it.
## Use cases
- Anti cheat development
- 3rd party clients/servers to not get banned, e.g. integration tests in [Minosoft](https://gitlab.bixilon.de/bixilon/minosoft)
- Maybe mojang themselves? (check if nothing broke in their messy code)
## What affects movement (client side)?
(This list aims to be perfect, but you know its probably not)
- input (keys, mouse)
- walking
- sprint
- sneak
- rotating
- jumping
- gravity
- potions/modifiers
- ~~speed/slowness~~ (sent by server)
- levitation
- jump boost
- blindness
- slow falling
- dolphins grace
- ~~correct expiring (count ticks)~~ (sent by server)
- hunger
- swimming
- elytra (also boosting with firework rocket)
- enchantments
- depth strider
- ~~frost walker~~
- ~~soul speed~~
- swift sneak
- riptide
- armor
- leather boots on powder snow
- ~~knockback resistance~~
- items
- usable items (e.g. bow, shield)
- trident (with riptide)
- ~~damage~~
- blocks
- collisions
- block motion (e.g. piston, shulker box)
- block pushing
- prevent unsneak
- climbing (e.g. ladders)
- scaffolding
- stepping (e.g. stairs)
- honey
- soul sand
- fences
- bouncing
- bed
- slime
- slow movement
- powder snow
- sweet berry bush
- cobweb
- slippery movement
- ice
- vehicles
- riding (e.g. horse, strider, ...)
- jump strength
- time on space bar
- boats
- minecarts
- ...
- fluids
- water (also bubble column with soul sand/magma blocks)
- lava (also dimension `ultra_warm`)
- flying (creative)
- spectator
- gamemode
- and spectating other entities
- death
- entities
- cramming/pushing
- auto jump
- sleeping
- fishing rod?
- precision loss (high coordinates 20M+)
- world border
- end of world (everything >= 30M)
- abilities (flying, walk speed, fly speed)
- tags
- tags
## Additional entity physics
## Ridable entities
(only client controlled)
- strider (with warped fungus on a stick)
- pig (with carrot on a stick)
- all horses (with controls and jumping)
- boat
## Client calculated
- items
- projectiles
- firework rockets
- fishing bobber
## Non physics things
- client side biome noise
- digging times
## About consistency
Tests are general non-mutable, so a diff is possible between versions.
New tests can/will always be added, existing tests may only be changed if they break or are considered wrong.
Parkour code (attach debugger in `ClientPlayerEntity`, where `getTutorialManager` is called):
```java
"f="+input.pressingForward+",b="+input.pressingBack+",l="+input.pressingLeft+",r="+input.pressingRight+",j="+input.jumping+",sn="+input.sneaking+",sp="+client.options.sprintKey.isPressed()+" --> "+getX()+"|"+getY()+"|"+getZ()+" "+yaw+"|"+pitch
```