elytra extractor

This commit is contained in:
Bixilon 2023-01-10 20:33:09 +01:00
parent cf59097c28
commit 36ce9a4b84
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
9 changed files with 141 additions and 15 deletions

View File

@ -70,9 +70,10 @@ object PhysicsExtractor {
// MixedFluidExtractor::class.java,
// DamageExtractor::class.java,
VelocityFlatteningExtractor::class.java,
IceWalk::class.java,
AbilitiesExtractor::class.java,
// VelocityFlatteningExtractor::class.java,
// IceWalk::class.java,
// AbilitiesExtractor::class.java,
ElytraExtractor::class.java,
)

View File

@ -1,11 +1,19 @@
package de.bixilon.pixlyzer.physics
import de.bixilon.kutil.cast.CastUtil.unsafeCast
import de.bixilon.pixlyzer.physics.tests.fluid.FluidUtil.addTags
import net.minecraft.block.Blocks
import net.minecraft.block.FluidBlock
import net.minecraft.fluid.Fluids
import net.minecraft.tag.BlockTags
import net.minecraft.tag.FluidTags
object PhysicsTags {
fun initialize() {
Blocks.SOUL_SAND.registryEntry.tags = setOf(BlockTags.SOUL_SPEED_BLOCKS)
Blocks.WATER.unsafeCast<FluidBlock>().addTags(FluidTags.WATER)
Blocks.LAVA.unsafeCast<FluidBlock>().addTags(FluidTags.LAVA)
}
}

View File

@ -56,6 +56,7 @@ class MinecraftPlayer(
jump: Boolean = false,
sneak: Boolean = false,
sprint: Boolean = false,
jumpNextTick: Boolean = false,
) {
val input = CustomInput()
input.pressingForward = forwards
@ -67,6 +68,8 @@ class MinecraftPlayer(
this.sprint.value = sprint
native.input = input
input.jumpNextTick = jumpNextTick
}
fun setAbilities(

View File

@ -10,7 +10,7 @@ import net.minecraft.world.dimension.DimensionType
class MinecraftWorld(
val level: ClientWorld,
) {
fun set(x: Int, y: Int, z: Int, value: BlockState?) {
operator fun set(x: Int, y: Int, z: Int, value: BlockState?) {
try {
level.setBlockState(BlockPos(x, y, z), value)
} catch (error: Throwable) {

View File

@ -3,7 +3,8 @@ package de.bixilon.pixlyzer.physics.input
import net.minecraft.client.input.Input
import net.minecraft.client.input.KeyboardInput
class CustomInput : Input() {
class CustomInput() : Input() {
var jumpNextTick: Boolean = false
fun tick(slowDown: Boolean) {
tick(slowDown, 0.3f)
@ -24,5 +25,9 @@ class CustomInput : Input() {
movementSideways *= multiplier
movementForward *= multiplier
}
if (jumpNextTick) {
jumping = true
jumpNextTick = false
}
}
}

View File

@ -0,0 +1,113 @@
package de.bixilon.pixlyzer.physics.tests
import net.minecraft.block.Blocks
import net.minecraft.entity.EquipmentSlot
import net.minecraft.item.ItemStack
import net.minecraft.item.Items
class ElytraExtractor : AbstractExtractor() {
private fun equip() {
val item = ItemStack(Items.ELYTRA)
player.native.equipStack(EquipmentSlot.CHEST, item)
}
@ExtractorMethod
fun elytraStartFly() {
player.teleport(17.0, 9.5, 8.0)
equip()
player.tick(3)
player.setKeys(jumpNextTick = true)
player.tick(1)
storeMovement()
}
@ExtractorMethod
fun elytraFlyStraight() {
player.teleport(0.0, 30.5, 0.0)
player.rotate(0.0, 10.0)
equip()
player.tick(3)
player.setKeys(jumpNextTick = true)
player.tick(15)
storeMovement()
}
@ExtractorMethod
fun elytraFlyUp() {
player.teleport(0.0, 30.5, 0.0)
equip()
player.tick(3)
player.setKeys(jumpNextTick = true)
player.tick(1)
player.setVelocity(0.0, 0.0, 3.0)
player.rotate(0.0, -10.0)
player.tick(5)
storeMovement()
}
@ExtractorMethod
fun elytraFlyRotated() {
player.teleport(0.0, 30.5, 0.0)
equip()
player.tick(3)
player.setKeys(jumpNextTick = true)
player.tick(1)
for (x in 0..100) {
player.tick()
player.rotate(kotlin.math.sin(x / Math.PI / 100.0) * 400.0, 0.0)
}
storeMovement()
}
@ExtractorMethod
fun elytraWater() {
player.teleport(0.0, 31.8, 0.0)
equip()
world.fill(-3, 30, -3, 3, 33, 3, Blocks.WATER.defaultState)
player.tick(3)
player.setKeys(jumpNextTick = true)
player.tick(5)
storeMovement()
}
@ExtractorMethod
fun elytraLava() {
player.teleport(0.0, 31.8, 0.0)
equip()
world.fill(-3, 30, -3, 3, 33, 3, Blocks.LAVA.defaultState)
player.tick(3)
player.setKeys(jumpNextTick = true)
player.tick(5)
storeMovement()
}
@ExtractorMethod
fun elytraLevitation() {
player.teleport(0.0, 30.8, 0.0)
player.applyLevitation(1)
equip()
player.tick(3)
player.setKeys(jumpNextTick = true)
player.tick(10)
storeMovement()
}
@ExtractorMethod
fun elytraSlowFalling() {
player.teleport(0.0, 30.8, 0.0)
player.applySlowFalling()
equip()
player.tick(3)
player.setKeys(jumpNextTick = true)
player.tick(10)
storeMovement()
}
}

View File

@ -5,7 +5,7 @@ import de.bixilon.pixlyzer.physics.tests.ExtractorMethod
import net.minecraft.block.Blocks
import net.minecraft.tag.FluidTags
class LavaStillExtractor : StillFluidExtractor(Blocks.LAVA.unsafeCast(), FluidTags.LAVA) {
class LavaStillExtractor : StillFluidExtractor(Blocks.LAVA.unsafeCast()) {
@ExtractorMethod
fun lavaStillLanding1() {

View File

@ -10,12 +10,8 @@ import net.minecraft.tag.TagKey
abstract class StillFluidExtractor(
protected val fluid: FluidBlock,
protected val tag: TagKey<Fluid>,
) : AbstractExtractor() {
init {
fluid.addTags(tag)
}
) : AbstractExtractor() {
protected fun walking() {
world.fill(-10, 16, -10, 20, 16, 20, fluid.withLevel(0))

View File

@ -5,7 +5,7 @@ import de.bixilon.pixlyzer.physics.tests.ExtractorMethod
import net.minecraft.block.Blocks
import net.minecraft.tag.FluidTags
class WaterStillExtractor : StillFluidExtractor(Blocks.WATER.unsafeCast(), FluidTags.WATER) {
class WaterStillExtractor : StillFluidExtractor(Blocks.WATER.unsafeCast()) {
@ExtractorMethod
fun waterStillLanding1() {