diff --git a/src/main/kotlin/de/bixilon/pixlyzer/physics/PhysicsUtil.kt b/src/main/kotlin/de/bixilon/pixlyzer/physics/PhysicsUtil.kt index e51dcea..8bc3362 100644 --- a/src/main/kotlin/de/bixilon/pixlyzer/physics/PhysicsUtil.kt +++ b/src/main/kotlin/de/bixilon/pixlyzer/physics/PhysicsUtil.kt @@ -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 } diff --git a/src/main/kotlin/de/bixilon/pixlyzer/physics/abstractions/MinecraftPlayer.kt b/src/main/kotlin/de/bixilon/pixlyzer/physics/abstractions/MinecraftPlayer.kt index e1647cc..a08c8dc 100644 --- a/src/main/kotlin/de/bixilon/pixlyzer/physics/abstractions/MinecraftPlayer.kt +++ b/src/main/kotlin/de/bixilon/pixlyzer/physics/abstractions/MinecraftPlayer.kt @@ -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().value = sprint native.input = input } } diff --git a/src/main/kotlin/de/bixilon/pixlyzer/physics/input/CustomInput.kt b/src/main/kotlin/de/bixilon/pixlyzer/physics/input/CustomInput.kt new file mode 100644 index 0000000..722735e --- /dev/null +++ b/src/main/kotlin/de/bixilon/pixlyzer/physics/input/CustomInput.kt @@ -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 + } + } +} diff --git a/src/main/kotlin/de/bixilon/pixlyzer/physics/input/DummyBinding.kt b/src/main/kotlin/de/bixilon/pixlyzer/physics/input/DummyBinding.kt new file mode 100644 index 0000000..e3d661d --- /dev/null +++ b/src/main/kotlin/de/bixilon/pixlyzer/physics/input/DummyBinding.kt @@ -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 + } +}