1+ package com.lambda.module.modules.movement
2+
3+ import com.lambda.event.events.MovementEvent
4+ import com.lambda.event.listener.SafeListener.Companion.listener
5+ import com.lambda.module.Module
6+ import com.lambda.module.tag.ModuleTag
7+ import com.lambda.util.player.MovementUtils.motion
8+ import com.lambda.util.player.MovementUtils.motionY
9+ import com.lambda.util.primitives.extension.component1
10+ import com.lambda.util.primitives.extension.component2
11+ import com.lambda.util.primitives.extension.component3
12+ import net.minecraft.network.packet.c2s.play.PlayerActionC2SPacket
13+ import net.minecraft.network.packet.c2s.play.PlayerInteractItemC2SPacket
14+ import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket
15+ import net.minecraft.util.Hand
16+ import net.minecraft.util.math.BlockPos
17+ import net.minecraft.util.math.Direction
18+ import net.minecraft.util.math.Vec3d
19+
20+ object NoFall : Module(
21+ name = " NoFall" ,
22+ description = " Reduces fall damage" ,
23+ defaultTags = setOf(ModuleTag .MOVEMENT )
24+ ) {
25+ private val mode by setting(" Mode" , Mode .Grim )
26+
27+ enum class Mode {
28+ Grim
29+ }
30+
31+ init {
32+ listener<MovementEvent .Post > {
33+ when (mode) {
34+ Mode .Grim -> {
35+ if (player.fallDistance + player.motionY < 3.0 ) return @listener
36+
37+ val (x, y, z) = player.pos
38+ connection.sendPacket(PlayerMoveC2SPacket .Full (x, y + 0.0000000001 , z, 0.01f , 90f , false ))
39+ connection.sendPacket(PlayerInteractItemC2SPacket (Hand .OFF_HAND , 0 ))
40+ connection.sendPacket(PlayerActionC2SPacket (PlayerActionC2SPacket .Action .RELEASE_USE_ITEM , BlockPos .ORIGIN , Direction .DOWN ))
41+ player.motion = Vec3d .ZERO
42+
43+ player.fallDistance = 0f
44+ }
45+ }
46+ }
47+ }
48+
49+ }
0 commit comments