fix movement detection

This commit is contained in:
Bixilon 2022-11-12 20:54:18 +01:00
parent 5f3a312b84
commit c6b328675d
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
4 changed files with 40 additions and 6 deletions

View File

@ -5,6 +5,7 @@ import com.mojang.authlib.GameProfile
import de.bixilon.pixlyzer.EntitySpawner.setDimension
import de.bixilon.pixlyzer.physics.abstractions.MinecraftPlayer
import de.bixilon.pixlyzer.physics.abstractions.MinecraftWorld
import de.bixilon.pixlyzer.physics.input.DummyBinding
import net.minecraft.client.MinecraftClient
import net.minecraft.client.input.Input
import net.minecraft.client.network.ClientPlayNetworkHandler
@ -29,7 +30,6 @@ import net.minecraft.world.Difficulty
import net.minecraft.world.biome.Biome
import net.minecraft.world.biome.source.BiomeAccess
import net.minecraft.world.border.WorldBorder
import net.minecraft.world.dimension.DimensionType
import org.objenesis.ObjenesisStd
import java.util.*
import java.util.function.Supplier
@ -87,7 +87,8 @@ object PhysicsUtil {
client.tasks = Queues.newConcurrentLinkedQueue()
client.thread = Thread.currentThread()
client.options = createGameOptions()
client.tutorialManager = TutorialManager(client, client.options )
client.tutorialManager = TutorialManager(client, client.options)
client.options.sprintKey = DummyBinding()
return client
}

View File

@ -1,6 +1,8 @@
package de.bixilon.pixlyzer.physics.abstractions
import net.minecraft.client.input.Input
import de.bixilon.kutil.cast.CastUtil.unsafeCast
import de.bixilon.pixlyzer.physics.input.CustomInput
import de.bixilon.pixlyzer.physics.input.DummyBinding
import net.minecraft.client.network.ClientPlayerEntity
import net.minecraft.network.Packet
import net.minecraft.network.listener.ClientPlayPacketListener
@ -14,8 +16,8 @@ class MinecraftPlayer(
packet.apply(native.networkHandler)
}
fun tick(count:Int=1) {
for(i in 0 until count) {
fun tick(count: Int = 1) {
for (i in 0 until count) {
native.tick()
}
}
@ -31,8 +33,9 @@ class MinecraftPlayer(
left: Boolean = false,
jump: Boolean = false,
sneak: Boolean = false,
sprint: Boolean = false,
) {
val input = Input()
val input = CustomInput()
input.pressingForward = forwards
input.pressingBack = backwards
input.pressingRight = right
@ -40,6 +43,7 @@ class MinecraftPlayer(
input.jumping = jump
input.sneaking = sneak
native.client.options.sprintKey.unsafeCast<DummyBinding>().value = sprint
native.input = input
}
}

View File

@ -0,0 +1,17 @@
package de.bixilon.pixlyzer.physics.input
import net.minecraft.client.input.Input
import net.minecraft.client.input.KeyboardInput
import net.minecraft.client.network.ClientPlayerEntity
class CustomInput : Input() {
override fun tick(slowDown: Boolean, multiplier: Float) {
movementForward = KeyboardInput.getMovementMultiplier(pressingForward, pressingBack)
movementSideways = KeyboardInput.getMovementMultiplier(pressingLeft, pressingRight)
if (slowDown) {
movementSideways *= multiplier
movementForward *= multiplier
}
}
}

View File

@ -0,0 +1,12 @@
package de.bixilon.pixlyzer.physics.input
import net.minecraft.client.option.KeyBinding
class DummyBinding(
var value: Boolean = false,
) : KeyBinding("", 0, "") {
override fun isPressed(): Boolean {
return value
}
}