converted movement modules to kotlin

This commit is contained in:
Bella 2020-04-26 11:42:04 -04:00
parent 84cb639682
commit 8a428d307b
No known key found for this signature in database
GPG Key ID: DBD4A6030080C8B3
18 changed files with 548 additions and 600 deletions

View File

@ -1,7 +1,7 @@
package me.zeroeightsix.kami.module.modules.movement;
package me.zeroeightsix.kami.module.modules.movement
import me.zeroeightsix.kami.module.Module;
import net.minecraft.potion.Potion;
import me.zeroeightsix.kami.module.Module
import net.minecraft.potion.Potion
/**
* Created by 0x2E | PretendingToCode
@ -11,12 +11,10 @@ import net.minecraft.potion.Potion;
description = "Removes levitation potion effect",
category = Module.Category.MOVEMENT
)
public class AntiLevitation extends Module {
@Override
public void onUpdate() {
class AntiLevitation : Module() {
override fun onUpdate() {
if (mc.player.isPotionActive(Potion.getPotionFromResourceLocation("levitation"))) {
mc.player.removeActivePotionEffect(Potion.getPotionFromResourceLocation("levitation"));
mc.player.removeActivePotionEffect(Potion.getPotionFromResourceLocation("levitation"))
}
}
}
}

View File

@ -1,41 +0,0 @@
package me.zeroeightsix.kami.module.modules.movement;
import me.zeroeightsix.kami.module.Module;
import me.zeroeightsix.kami.setting.Setting;
import me.zeroeightsix.kami.setting.Settings;
/**
* Created by 086 on 24/12/2017.
*/
@Module.Info(
name = "AutoJump",
category = Module.Category.MOVEMENT,
description = "Automatically jumps if possible"
)
public class AutoJump extends Module {
private Setting<Integer> delay = register(Settings.integerBuilder("Tick Delay").withValue(10).build());
@Override
public void onUpdate() {
if (mc.player.isInWater() || mc.player.isInLava()) mc.player.motionY = 0.1;
else jump();
}
private void jump() {
if (mc.player.onGround && timeout()) {
mc.player.jump();
startTime = 0;
}
}
private static long startTime = 0;
private boolean timeout() {
if (startTime == 0) startTime = System.currentTimeMillis();
if (startTime + ((delay.getValue() / 20) * 1000) <= System.currentTimeMillis()) { // 1 timeout = 1 second = 1000 ms
startTime = System.currentTimeMillis();
return true;
}
return false;
}
}

View File

@ -0,0 +1,40 @@
package me.zeroeightsix.kami.module.modules.movement
import me.zeroeightsix.kami.module.Module
import me.zeroeightsix.kami.setting.Settings
/**
* Created by 086 on 24/12/2017.
*/
@Module.Info(
name = "AutoJump",
category = Module.Category.MOVEMENT,
description = "Automatically jumps if possible"
)
class AutoJump : Module() {
private val delay = register(Settings.integerBuilder("Tick Delay").withValue(10).build())
override fun onUpdate() {
if (mc.player.isInWater || mc.player.isInLava) mc.player.motionY = 0.1 else jump()
}
private fun jump() {
if (mc.player.onGround && timeout()) {
mc.player.jump()
startTime = 0
}
}
private fun timeout(): Boolean {
if (startTime == 0L) startTime = System.currentTimeMillis()
if (startTime + delay.value / 20 * 1000 <= System.currentTimeMillis()) { // 1 timeout = 1 second = 1000 ms
startTime = System.currentTimeMillis()
return true
}
return false
}
companion object {
private var startTime: Long = 0
}
}

View File

@ -1,158 +0,0 @@
package me.zeroeightsix.kami.module.modules.movement;
import me.zeroeightsix.kami.module.Module;
import me.zeroeightsix.kami.setting.Setting;
import me.zeroeightsix.kami.setting.Settings;
import me.zeroeightsix.kami.util.EntityUtil;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityBoat;
import net.minecraft.entity.passive.AbstractHorse;
import net.minecraft.entity.passive.EntityHorse;
import net.minecraft.entity.passive.EntityPig;
import net.minecraft.util.MovementInput;
import net.minecraft.world.chunk.EmptyChunk;
/**
* Created by 086 on 16/12/2017.
*/
@Module.Info(
name = "EntitySpeed",
category = Module.Category.MOVEMENT,
description = "Abuse client-sided movement to shape sound barrier breaking rideables"
)
public class EntitySpeed extends Module {
private Setting<Float> speed = register(Settings.f("Speed", 1));
private Setting<Boolean> antiStuck = register(Settings.b("AntiStuck"));
private Setting<Boolean> flight = register(Settings.b("Flight", false));
private Setting<Boolean> wobble = register(Settings.booleanBuilder("Wobble").withValue(true).withVisibility(b -> flight.getValue()).build());
private static Setting<Float> opacity = Settings.f("Boat opacity", .5f);
public EntitySpeed() {
register(opacity);
}
@Override
public void onUpdate() {
if ((mc.world != null) && (mc.player.getRidingEntity() != null)) {
Entity riding = mc.player.getRidingEntity();
if (riding instanceof EntityPig || riding instanceof AbstractHorse) {
steerEntity(riding);
} else if (riding instanceof EntityBoat) {
steerBoat(getBoat());
}
}
}
private void steerEntity(Entity entity) {
if (!flight.getValue()) {
entity.motionY = -0.4D;
}
if (flight.getValue()) {
if (mc.gameSettings.keyBindJump.isKeyDown())
entity.motionY = speed.getValue();
else if (mc.gameSettings.keyBindForward.isKeyDown() || mc.gameSettings.keyBindBack.isKeyDown())
entity.motionY = wobble.getValue() ? Math.sin(mc.player.ticksExisted) : 0;
}
moveForward(entity, speed.getValue() * 3.8D);
if (entity instanceof EntityHorse) {
entity.rotationYaw = mc.player.rotationYaw;
}
}
private void steerBoat(EntityBoat boat) {
if (boat == null) return;
int angle;
boolean forward = mc.gameSettings.keyBindForward.isKeyDown();
boolean left = mc.gameSettings.keyBindLeft.isKeyDown();
boolean right = mc.gameSettings.keyBindRight.isKeyDown();
boolean back = mc.gameSettings.keyBindBack.isKeyDown();
if (!(forward && back)) boat.motionY = 0;
if (mc.gameSettings.keyBindJump.isKeyDown()) boat.motionY += speed.getValue() / 2f;
if (!forward && !left && !right && !back) return;
if (left && right) angle = forward ? 0 : back ? 180 : -1;
else if (forward && back) angle = left ? -90 : (right ? 90 : -1);
else {
angle = left ? -90 : (right ? 90 : 0);
if (forward) angle /= 2;
else if (back) angle = 180 - (angle / 2);
}
if (angle == -1) return;
float yaw = mc.player.rotationYaw + angle;
boat.motionX = EntityUtil.getRelativeX(yaw) * speed.getValue();
boat.motionZ = EntityUtil.getRelativeZ(yaw) * speed.getValue();
}
@Override
public void onRender() {
EntityBoat boat = getBoat();
if (boat == null) return;
boat.rotationYaw = mc.player.rotationYaw;
boat.updateInputs(false, false, false, false); // Make sure the boat doesn't turn etc (params: isLeftDown, isRightDown, isForwardDown, isBackDown)
}
private EntityBoat getBoat() {
if (mc.player.getRidingEntity() != null && mc.player.getRidingEntity() instanceof EntityBoat)
return (EntityBoat) mc.player.getRidingEntity();
return null;
}
private void moveForward(Entity entity, double speed) {
if (entity != null) {
MovementInput movementInput = mc.player.movementInput;
double forward = movementInput.moveForward;
double strafe = movementInput.moveStrafe;
boolean movingForward = forward != 0;
boolean movingStrafe = strafe != 0;
float yaw = mc.player.rotationYaw;
if (!movingForward && !movingStrafe) {
setEntitySpeed(entity, 0, 0);
} else {
if (forward != 0.0D) {
if (strafe > 0.0D) {
yaw += (forward > 0.0D ? -45 : 45);
} else if (strafe < 0.0D) {
yaw += (forward > 0.0D ? 45 : -45);
}
strafe = 0.0D;
if (forward > 0.0D) {
forward = 1.0D;
} else {
forward = -1.0D;
}
}
double motX = (forward * speed * Math.cos(Math.toRadians(yaw + 90.0F)) + strafe * speed * Math.sin(Math.toRadians(yaw + 90.0F)));
double motZ = (forward * speed * Math.sin(Math.toRadians(yaw + 90.0F)) - strafe * speed * Math.cos(Math.toRadians(yaw + 90.0F)));
if (isBorderingChunk(entity, motX, motZ))
motX = motZ = 0;
setEntitySpeed(entity, motX, motZ);
}
}
}
private void setEntitySpeed(Entity entity, double motX, double motZ) {
entity.motionX = motX;
entity.motionZ = motZ;
}
private boolean isBorderingChunk(Entity entity, double motX, double motZ) {
return antiStuck.getValue() && mc.world.getChunk((int) (entity.posX + motX) >> 4, (int) (entity.posZ + motZ) >> 4) instanceof EmptyChunk;
}
public static float getOpacity() {
return opacity.getValue();
}
}

View File

@ -0,0 +1,142 @@
package me.zeroeightsix.kami.module.modules.movement
import me.zeroeightsix.kami.module.Module
import me.zeroeightsix.kami.setting.Settings
import me.zeroeightsix.kami.util.EntityUtil
import net.minecraft.entity.Entity
import net.minecraft.entity.item.EntityBoat
import net.minecraft.entity.passive.AbstractHorse
import net.minecraft.entity.passive.EntityHorse
import net.minecraft.entity.passive.EntityPig
import net.minecraft.world.chunk.EmptyChunk
import kotlin.math.cos
import kotlin.math.sin
/**
* Created by 086 on 16/12/2017.
*/
@Module.Info(
name = "EntitySpeed",
category = Module.Category.MOVEMENT,
description = "Abuse client-sided movement to shape sound barrier breaking rideables"
)
class EntitySpeed : Module() {
private val speed = register(Settings.f("Speed", 1f))
private val antiStuck = register(Settings.b("AntiStuck"))
private val flight = register(Settings.b("Flight", false))
private val wobble = register(Settings.booleanBuilder("Wobble").withValue(true).withVisibility { b: Boolean? -> flight.value }.build())
override fun onUpdate() {
if (mc.world != null && mc.player.getRidingEntity() != null) {
val riding = mc.player.getRidingEntity()
if (riding is EntityPig || riding is AbstractHorse) {
steerEntity(riding)
} else if (riding is EntityBoat) {
steerBoat(boat)
}
}
}
private fun steerEntity(entity: Entity) {
if (!flight.value) {
entity.motionY = -0.4
}
if (flight.value) {
if (mc.gameSettings.keyBindJump.isKeyDown) entity.motionY = speed.value.toDouble()
else if (mc.gameSettings.keyBindForward.isKeyDown || mc.gameSettings.keyBindBack.isKeyDown) entity.motionY = (if (wobble.value) sin(mc.player.ticksExisted.toDouble()) else 0).toDouble()
}
moveForward(entity, speed.value * 3.8)
if (entity is EntityHorse) {
entity.rotationYaw = mc.player.rotationYaw
}
}
private fun steerBoat(boat: EntityBoat?) {
if (boat == null) return
var angle: Int
val forward = mc.gameSettings.keyBindForward.isKeyDown
val left = mc.gameSettings.keyBindLeft.isKeyDown
val right = mc.gameSettings.keyBindRight.isKeyDown
val back = mc.gameSettings.keyBindBack.isKeyDown
if (!(forward && back)) boat.motionY = 0.0
if (mc.gameSettings.keyBindJump.isKeyDown) boat.motionY += speed.value / 2f.toDouble()
if (!forward && !left && !right && !back) return
if (left && right) angle = if (forward) 0 else if (back) 180 else -1 else if (forward && back) angle = if (left) -90 else if (right) 90 else -1 else {
angle = if (left) -90 else if (right) 90 else 0
if (forward) angle /= 2 else if (back) angle = 180 - angle / 2
}
if (angle == -1) return
val yaw = mc.player.rotationYaw + angle
boat.motionX = EntityUtil.getRelativeX(yaw) * speed.value
boat.motionZ = EntityUtil.getRelativeZ(yaw) * speed.value
}
override fun onRender() {
val boat = boat ?: return
boat.rotationYaw = mc.player.rotationYaw
boat.updateInputs(false, false, false, false) // Make sure the boat doesn't turn etc (params: isLeftDown, isRightDown, isForwardDown, isBackDown)
}
private val boat: EntityBoat?
get() = if (mc.player.getRidingEntity() != null && mc.player.getRidingEntity() is EntityBoat) mc.player.getRidingEntity() as EntityBoat? else null
private fun moveForward(entity: Entity?, speed: Double) {
if (entity != null) {
val movementInput = mc.player.movementInput
var forward = movementInput.moveForward.toDouble()
var strafe = movementInput.moveStrafe.toDouble()
val movingForward = forward != 0.0
val movingStrafe = strafe != 0.0
var yaw = mc.player.rotationYaw
if (!movingForward && !movingStrafe) {
setEntitySpeed(entity, 0.0, 0.0)
} else {
if (forward != 0.0) {
if (strafe > 0.0) {
yaw += (if (forward > 0.0) -45 else 45).toFloat()
} else if (strafe < 0.0) {
yaw += (if (forward > 0.0) 45 else -45).toFloat()
}
strafe = 0.0
forward = if (forward > 0.0) {
1.0
} else {
-1.0
}
}
var motX = forward * speed * cos(Math.toRadians(yaw + 90.0f.toDouble())) + strafe * speed * sin(Math.toRadians(yaw + 90.0f.toDouble()))
var motZ = forward * speed * sin(Math.toRadians(yaw + 90.0f.toDouble())) - strafe * speed * cos(Math.toRadians(yaw + 90.0f.toDouble()))
if (isBorderingChunk(entity, motX, motZ)) {
motZ = 0.0
motX = motZ
}
setEntitySpeed(entity, motX, motZ)
}
}
}
private fun setEntitySpeed(entity: Entity, motX: Double, motZ: Double) {
entity.motionX = motX
entity.motionZ = motZ
}
private fun isBorderingChunk(entity: Entity, motX: Double, motZ: Double): Boolean {
return antiStuck.value && mc.world.getChunk((entity.posX + motX).toInt() shr 4, (entity.posZ + motZ).toInt() shr 4) is EmptyChunk
}
companion object {
private val opacity = Settings.f("Boat opacity", .5f)
@JvmStatic
fun getOpacity(): Float {
return opacity.value
}
}
init {
register(opacity)
}
}

View File

@ -1,104 +0,0 @@
package me.zeroeightsix.kami.module.modules.movement;
import me.zeroeightsix.kami.module.Module;
import me.zeroeightsix.kami.setting.Setting;
import me.zeroeightsix.kami.setting.Settings;
import me.zeroeightsix.kami.util.EntityUtil;
import net.minecraft.client.Minecraft;
import net.minecraft.network.play.client.CPacketPlayer;
/**
* Created by 086 on 25/08/2017.
*/
@Module.Info(
category = Module.Category.MOVEMENT,
description = "Makes the player fly", name = "Flight"
)
public class Flight extends Module {
private Setting<Float> speed = register(Settings.f("Speed", 10));
private Setting<FlightMode> mode = register(Settings.e("Mode", FlightMode.VANILLA));
@Override
protected void onEnable() {
if (mc.player == null) return;
switch (mode.getValue()) {
case VANILLA:
mc.player.capabilities.isFlying = true;
if (mc.player.capabilities.isCreativeMode) return;
mc.player.capabilities.allowFlying = true;
break;
}
}
@Override
public void onUpdate() {
switch (mode.getValue()) {
case STATIC:
mc.player.capabilities.isFlying = false;
mc.player.motionX = 0;
mc.player.motionY = 0;
mc.player.motionZ = 0;
mc.player.jumpMovementFactor = speed.getValue();
if (mc.gameSettings.keyBindJump.isKeyDown())
mc.player.motionY += speed.getValue();
if (mc.gameSettings.keyBindSneak.isKeyDown())
mc.player.motionY -= speed.getValue();
break;
case VANILLA:
mc.player.capabilities.setFlySpeed(speed.getValue() / 100f);
mc.player.capabilities.isFlying = true;
if (mc.player.capabilities.isCreativeMode) return;
mc.player.capabilities.allowFlying = true;
break;
case PACKET:
int angle;
boolean forward = mc.gameSettings.keyBindForward.isKeyDown();
boolean left = mc.gameSettings.keyBindLeft.isKeyDown();
boolean right = mc.gameSettings.keyBindRight.isKeyDown();
boolean back = mc.gameSettings.keyBindBack.isKeyDown();
if (left && right) angle = forward ? 0 : back ? 180 : -1;
else if (forward && back) angle = left ? -90 : (right ? 90 : -1);
else {
angle = left ? -90 : (right ? 90 : 0);
if (forward) angle /= 2;
else if (back) angle = 180 - (angle / 2);
}
if (angle != -1 && (forward || left || right || back)) {
float yaw = mc.player.rotationYaw + angle;
mc.player.motionX = EntityUtil.getRelativeX(yaw) * 0.2f;
mc.player.motionZ = EntityUtil.getRelativeZ(yaw) * 0.2f;
}
mc.player.motionY = 0;
mc.player.connection.sendPacket(new CPacketPlayer.PositionRotation(mc.player.posX + mc.player.motionX, mc.player.posY + (Minecraft.getMinecraft().gameSettings.keyBindJump.isKeyDown() ? 0.0622 : 0) - (Minecraft.getMinecraft().gameSettings.keyBindSneak.isKeyDown() ? 0.0622 : 0), mc.player.posZ + mc.player.motionZ, mc.player.rotationYaw, mc.player.rotationPitch, false));
mc.player.connection.sendPacket(new CPacketPlayer.PositionRotation(mc.player.posX + mc.player.motionX, mc.player.posY - 42069, mc.player.posZ + mc.player.motionZ, mc.player.rotationYaw, mc.player.rotationPitch, true));
break;
}
}
@Override
protected void onDisable() {
switch (mode.getValue()) {
case VANILLA:
mc.player.capabilities.isFlying = false;
mc.player.capabilities.setFlySpeed(0.05f);
if (mc.player.capabilities.isCreativeMode) return;
mc.player.capabilities.allowFlying = false;
break;
}
}
public double[] moveLooking() {
return new double[]{mc.player.rotationYaw * 360.0F / 360.0F * 180.0F / 180.0F, 0.0D};
}
public enum FlightMode {
VANILLA, STATIC, PACKET
}
}

View File

@ -0,0 +1,88 @@
package me.zeroeightsix.kami.module.modules.movement
import me.zeroeightsix.kami.module.Module
import me.zeroeightsix.kami.setting.Settings
import me.zeroeightsix.kami.util.EntityUtil
import net.minecraft.client.Minecraft
import net.minecraft.network.play.client.CPacketPlayer.PositionRotation
/**
* Created by 086 on 25/08/2017.
*/
@Module.Info(
name = "Flight",
category = Module.Category.MOVEMENT,
description = "Makes the player fly"
)
class Flight : Module() {
private val speed = register(Settings.f("Speed", 10f))
private val mode = register(Settings.e<FlightMode>("Mode", FlightMode.VANILLA))
override fun onEnable() {
if (mc.player == null) return
if (mode.value == FlightMode.VANILLA) {
mc.player.capabilities.isFlying = true
if (mc.player.capabilities.isCreativeMode) return
mc.player.capabilities.allowFlying = true
}
}
override fun onUpdate() {
when (mode.value) {
FlightMode.STATIC -> {
mc.player.capabilities.isFlying = false
mc.player.motionX = 0.0
mc.player.motionY = 0.0
mc.player.motionZ = 0.0
mc.player.jumpMovementFactor = speed.value
if (mc.gameSettings.keyBindJump.isKeyDown) mc.player.motionY += speed.value
if (mc.gameSettings.keyBindSneak.isKeyDown) mc.player.motionY -= speed.value
}
FlightMode.VANILLA -> {
mc.player.capabilities.flySpeed = speed.value / 100f
mc.player.capabilities.isFlying = true
if (mc.player.capabilities.isCreativeMode) return
mc.player.capabilities.allowFlying = true
}
FlightMode.PACKET -> {
var angle: Int
val forward = mc.gameSettings.keyBindForward.isKeyDown
val left = mc.gameSettings.keyBindLeft.isKeyDown
val right = mc.gameSettings.keyBindRight.isKeyDown
val back = mc.gameSettings.keyBindBack.isKeyDown
if (left && right) angle = if (forward) 0 else if (back) 180 else -1 else if (forward && back) angle = if (left) -90 else if (right) 90 else -1 else {
angle = if (left) -90 else if (right) 90 else 0
if (forward) angle /= 2 else if (back) angle = 180 - angle / 2
}
if (angle != -1 && (forward || left || right || back)) {
val yaw = mc.player.rotationYaw + angle
mc.player.motionX = EntityUtil.getRelativeX(yaw) * 0.2f
mc.player.motionZ = EntityUtil.getRelativeZ(yaw) * 0.2f
}
mc.player.motionY = 0.0
mc.player.connection.sendPacket(PositionRotation(mc.player.posX + mc.player.motionX, mc.player.posY + (if (Minecraft.getMinecraft().gameSettings.keyBindJump.isKeyDown) 0.0622 else 0).toDouble() - (if (Minecraft.getMinecraft().gameSettings.keyBindSneak.isKeyDown) 0.0622 else 0).toDouble(), mc.player.posZ + mc.player.motionZ, mc.player.rotationYaw, mc.player.rotationPitch, false))
mc.player.connection.sendPacket(PositionRotation(mc.player.posX + mc.player.motionX, mc.player.posY - 42069, mc.player.posZ + mc.player.motionZ, mc.player.rotationYaw, mc.player.rotationPitch, true))
}
}
}
override fun onDisable() {
if (mode.value == FlightMode.VANILLA) {
mc.player.capabilities.isFlying = false
mc.player.capabilities.flySpeed = 0.05f
if (mc.player.capabilities.isCreativeMode) return
mc.player.capabilities.allowFlying = false
}
}
fun moveLooking(): DoubleArray {
return doubleArrayOf(mc.player.rotationYaw * 360.0f / 360.0f * 180.0f / 180.0f.toDouble(), 0.0)
}
enum class FlightMode {
VANILLA, STATIC, PACKET
}
}

View File

@ -1,35 +0,0 @@
package me.zeroeightsix.kami.module.modules.movement;
import me.zeroeightsix.kami.module.Module;
import me.zeroeightsix.kami.setting.Setting;
import me.zeroeightsix.kami.setting.Settings;
import net.minecraft.init.Blocks;
/**
* Created on 26 October 2019 by hub
* Updated 24 November 2019 by hub
*/
@Module.Info(
name = "IceSpeed",
description = "Changes how slippery ice is",
category = Module.Category.MOVEMENT
)
public class IceSpeed extends Module {
private Setting<Float> slipperiness = register(Settings.floatBuilder("Slipperiness").withMinimum(0.2f).withValue(0.4f).withMaximum(1.0f).build());
@Override
public void onUpdate() {
Blocks.ICE.slipperiness = slipperiness.getValue();
Blocks.PACKED_ICE.slipperiness = slipperiness.getValue();
Blocks.FROSTED_ICE.slipperiness = slipperiness.getValue();
}
@Override
public void onDisable() {
Blocks.ICE.slipperiness = 0.98f;
Blocks.PACKED_ICE.slipperiness = 0.98f;
Blocks.FROSTED_ICE.slipperiness = 0.98f;
}
}

View File

@ -0,0 +1,30 @@
package me.zeroeightsix.kami.module.modules.movement
import me.zeroeightsix.kami.module.Module
import me.zeroeightsix.kami.setting.Settings
import net.minecraft.init.Blocks
/**
* Created on 26 October 2019 by hub
* Updated 24 November 2019 by hub
*/
@Module.Info(
name = "IceSpeed",
description = "Changes how slippery ice is",
category = Module.Category.MOVEMENT
)
class IceSpeed : Module() {
private val slipperiness = register(Settings.floatBuilder("Slipperiness").withMinimum(0.2f).withValue(0.4f).withMaximum(1.0f).build())
override fun onUpdate() {
Blocks.ICE.slipperiness = slipperiness.value
Blocks.PACKED_ICE.slipperiness = slipperiness.value
Blocks.FROSTED_ICE.slipperiness = slipperiness.value
}
public override fun onDisable() {
Blocks.ICE.slipperiness = 0.98f
Blocks.PACKED_ICE.slipperiness = 0.98f
Blocks.FROSTED_ICE.slipperiness = 0.98f
}
}

View File

@ -1,10 +1,10 @@
package me.zeroeightsix.kami.module.modules.movement;
package me.zeroeightsix.kami.module.modules.movement
import me.zeroeightsix.kami.module.Module;
import me.zeroeightsix.kami.setting.Setting;
import me.zeroeightsix.kami.setting.Settings;
import net.minecraft.client.gui.GuiChat;
import org.lwjgl.input.Keyboard;
import me.zeroeightsix.kami.module.Module
import me.zeroeightsix.kami.setting.Setting
import me.zeroeightsix.kami.setting.Settings
import net.minecraft.client.gui.GuiChat
import org.lwjgl.input.Keyboard
/**
* @author dominikaaaa
@ -16,24 +16,25 @@ import org.lwjgl.input.Keyboard;
description = "Allows you to walk around with GUIs opened",
category = Module.Category.MOVEMENT
)
public class InventoryMove extends Module {
private Setting<Integer> speed = register(Settings.i("Look speed", 10));
public Setting<Boolean> sneak = register(Settings.b("Sneak", false));
class InventoryMove : Module() {
private val speed = register(Settings.i("Look speed", 10))
@JvmField
var sneak: Setting<Boolean> = register(Settings.b("Sneak", false))
override fun onUpdate() {
if (mc.player == null || mc.currentScreen == null || mc.currentScreen is GuiChat) return
public void onUpdate() {
if (mc.player == null || mc.currentScreen == null || mc.currentScreen instanceof GuiChat) return;
if (Keyboard.isKeyDown(Keyboard.KEY_LEFT)) {
mc.player.rotationYaw = mc.player.rotationYaw - speed.getValue();
mc.player.rotationYaw = mc.player.rotationYaw - speed.value
}
if (Keyboard.isKeyDown(Keyboard.KEY_RIGHT)) {
mc.player.rotationYaw = mc.player.rotationYaw + speed.getValue();
mc.player.rotationYaw = mc.player.rotationYaw + speed.value
}
if (Keyboard.isKeyDown(Keyboard.KEY_UP)) {
mc.player.rotationPitch = mc.player.rotationPitch - speed.getValue();
mc.player.rotationPitch = mc.player.rotationPitch - speed.value
}
if (Keyboard.isKeyDown(Keyboard.KEY_DOWN)) {
mc.player.rotationPitch = mc.player.rotationPitch + speed.getValue();
mc.player.rotationPitch = mc.player.rotationPitch + speed.value
}
}
}
}

View File

@ -1,96 +0,0 @@
package me.zeroeightsix.kami.module.modules.movement;
import me.zero.alpine.listener.EventHandler;
import me.zero.alpine.listener.Listener;
import me.zeroeightsix.kami.event.KamiEvent;
import me.zeroeightsix.kami.event.events.AddCollisionBoxToListEvent;
import me.zeroeightsix.kami.event.events.PacketEvent;
import me.zeroeightsix.kami.module.Module;
import me.zeroeightsix.kami.module.modules.player.Freecam;
import me.zeroeightsix.kami.util.EntityUtil;
import me.zeroeightsix.kami.util.Wrapper;
import net.minecraft.block.BlockLiquid;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityBoat;
import net.minecraft.network.play.client.CPacketPlayer;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import static me.zeroeightsix.kami.KamiMod.MODULE_MANAGER;
/**
* Created by 086 on 11/12/2017.
*/
@Module.Info(
name = "Jesus",
description = "Allows you to walk on water",
category = Module.Category.MOVEMENT
)
public class Jesus extends Module {
private static final AxisAlignedBB WATER_WALK_AA = new AxisAlignedBB(0.D, 0.D, 0.D, 1.D, 0.99D, 1.D);
@Override
public void onUpdate() {
if (!MODULE_MANAGER.isModuleEnabled(Freecam.class)) {
if (EntityUtil.isInWater(mc.player) && !mc.player.isSneaking()) {
mc.player.motionY = 0.1;
if (mc.player.getRidingEntity() != null && !(mc.player.getRidingEntity() instanceof EntityBoat)) {
mc.player.getRidingEntity().motionY = 0.3;
}
}
}
}
@EventHandler
Listener<AddCollisionBoxToListEvent> addCollisionBoxToListEventListener = new Listener<>((event) -> {
if (mc.player != null
&& (event.getBlock() instanceof BlockLiquid)
&& (EntityUtil.isDrivenByPlayer(event.getEntity()) || event.getEntity() == mc.player)
&& !(event.getEntity() instanceof EntityBoat)
&& !mc.player.isSneaking()
&& mc.player.fallDistance < 3
&& !EntityUtil.isInWater(mc.player)
&& (EntityUtil.isAboveWater(mc.player, false) || EntityUtil.isAboveWater(mc.player.getRidingEntity(), false))
&& isAboveBlock(mc.player, event.getPos())) {
AxisAlignedBB axisalignedbb = WATER_WALK_AA.offset(event.getPos());
if (event.getEntityBox().intersects(axisalignedbb)) event.getCollidingBoxes().add(axisalignedbb);
event.cancel();
}
});
@EventHandler
Listener<PacketEvent.Send> packetEventSendListener = new Listener<>(event -> {
if (event.getEra() == KamiEvent.Era.PRE) {
if (event.getPacket() instanceof CPacketPlayer) {
if (EntityUtil.isAboveWater(mc.player, true) && !EntityUtil.isInWater(mc.player) && !isAboveLand(mc.player)) {
int ticks = mc.player.ticksExisted % 2;
if (ticks == 0) ((CPacketPlayer) event.getPacket()).y += 0.02D;
}
}
}
});
@SuppressWarnings("deprecation")
private static boolean isAboveLand(Entity entity) {
if (entity == null) return false;
double y = entity.posY - 0.01;
for (int x = MathHelper.floor(entity.posX); x < MathHelper.ceil(entity.posX); x++)
for (int z = MathHelper.floor(entity.posZ); z < MathHelper.ceil(entity.posZ); z++) {
BlockPos pos = new BlockPos(x, MathHelper.floor(y), z);
if (Wrapper.getWorld().getBlockState(pos).getBlock().isFullBlock(Wrapper.getWorld().getBlockState(pos)))
return true;
}
return false;
}
private static boolean isAboveBlock(Entity entity, BlockPos pos) {
return entity.posY >= pos.getY();
}
}

View File

@ -0,0 +1,86 @@
package me.zeroeightsix.kami.module.modules.movement
import me.zero.alpine.listener.EventHandler
import me.zero.alpine.listener.EventHook
import me.zero.alpine.listener.Listener
import me.zeroeightsix.kami.KamiMod
import me.zeroeightsix.kami.event.KamiEvent
import me.zeroeightsix.kami.event.events.AddCollisionBoxToListEvent
import me.zeroeightsix.kami.event.events.PacketEvent
import me.zeroeightsix.kami.module.Module
import me.zeroeightsix.kami.module.modules.player.Freecam
import me.zeroeightsix.kami.util.EntityUtil
import me.zeroeightsix.kami.util.Wrapper
import net.minecraft.block.BlockLiquid
import net.minecraft.entity.Entity
import net.minecraft.entity.item.EntityBoat
import net.minecraft.network.play.client.CPacketPlayer
import net.minecraft.util.math.AxisAlignedBB
import net.minecraft.util.math.BlockPos
import net.minecraft.util.math.MathHelper
/**
* Created by 086 on 11/12/2017.
*/
@Module.Info(
name = "Jesus",
description = "Allows you to walk on water",
category = Module.Category.MOVEMENT
)
class Jesus : Module() {
override fun onUpdate() {
if (!KamiMod.MODULE_MANAGER.isModuleEnabled(Freecam::class.java)) {
if (EntityUtil.isInWater(mc.player) && !mc.player.isSneaking) {
mc.player.motionY = 0.1
if (mc.player.getRidingEntity() != null && mc.player.getRidingEntity() !is EntityBoat) {
mc.player.getRidingEntity()!!.motionY = 0.3
}
}
}
}
@EventHandler
var addCollisionBoxToListEventListener = Listener(EventHook { event: AddCollisionBoxToListEvent ->
if (mc.player != null && event.block is BlockLiquid
&& (EntityUtil.isDrivenByPlayer(event.entity) || event.entity === mc.player)
&& event.entity !is EntityBoat
&& !mc.player.isSneaking
&& mc.player.fallDistance < 3 && !EntityUtil.isInWater(mc.player)
&& (EntityUtil.isAboveWater(mc.player, false) || EntityUtil.isAboveWater(mc.player.getRidingEntity(), false))
&& isAboveBlock(mc.player, event.pos)) {
val axisAlignedBB = WATER_WALK_AA.offset(event.pos)
if (event.entityBox.intersects(axisAlignedBB)) event.collidingBoxes.add(axisAlignedBB)
event.cancel()
}
})
@EventHandler
var packetEventSendListener = Listener(EventHook { event: PacketEvent.Send ->
if (event.era == KamiEvent.Era.PRE) {
if (event.packet is CPacketPlayer) {
if (EntityUtil.isAboveWater(mc.player, true) && !EntityUtil.isInWater(mc.player) && !isAboveLand(mc.player)) {
val ticks = mc.player.ticksExisted % 2
if (ticks == 0) (event.packet as CPacketPlayer).y += 0.02
}
}
}
})
companion object {
private val WATER_WALK_AA = AxisAlignedBB(0.0, 0.0, 0.0, 1.0, 0.99, 1.0)
private fun isAboveLand(entity: Entity?): Boolean {
if (entity == null) return false
val y = entity.posY - 0.01
for (x in MathHelper.floor(entity.posX) until MathHelper.ceil(entity.posX)) for (z in MathHelper.floor(entity.posZ) until MathHelper.ceil(entity.posZ)) {
val pos = BlockPos(x, MathHelper.floor(y), z)
if (Wrapper.getWorld().getBlockState(pos).block.isFullBlock(Wrapper.getWorld().getBlockState(pos))) return true
}
return false
}
private fun isAboveBlock(entity: Entity, pos: BlockPos): Boolean {
return entity.posY >= pos.getY()
}
}
}

View File

@ -1,62 +0,0 @@
package me.zeroeightsix.kami.module.modules.movement;
import me.zero.alpine.listener.EventHandler;
import me.zero.alpine.listener.Listener;
import me.zeroeightsix.kami.module.Module;
import me.zeroeightsix.kami.setting.Setting;
import me.zeroeightsix.kami.setting.Settings;
import net.minecraft.init.Blocks;
import net.minecraft.item.*;
import net.minecraftforge.client.event.InputUpdateEvent;
/**
* Created by 086 on 15/12/2017.
* Updated by dominikaaaa on 31/03/20
* @see me.zeroeightsix.kami.mixin.client.MixinBlockSoulSand
* @see net.minecraft.client.entity.EntityPlayerSP#onLivingUpdate()
*/
@Module.Info(
name = "NoSlowDown",
category = Module.Category.MOVEMENT,
description = "Prevents being slowed down when using an item or going through cobwebs"
)
public class NoSlowDown extends Module {
public Setting<Boolean> soulSand = register(Settings.b("Soul Sand", true));
public Setting<Boolean> cobweb = register(Settings.b("Cobweb", true));
private Setting<Boolean> slime = register(Settings.b("Slime", true));
private Setting<Boolean> allItems = register(Settings.b("All Items", false));
private Setting<Boolean> food = register(Settings.booleanBuilder().withName("Food").withValue(true).withVisibility(v -> !allItems.getValue()).build());
private Setting<Boolean> bow = register(Settings.booleanBuilder().withName("Bows").withValue(true).withVisibility(v -> !allItems.getValue()).build());
private Setting<Boolean> potion = register(Settings.booleanBuilder().withName("Potions").withValue(true).withVisibility(v -> !allItems.getValue()).build());
private Setting<Boolean> shield = register(Settings.booleanBuilder().withName("Shield").withValue(true).withVisibility(v -> !allItems.getValue()).build());
/*
* InputUpdateEvent is called just before the player is slowed down @see EntityPlayerSP.onLivingUpdate)
* We'll abuse this fact, and multiply moveStrafe and moveForward by 5 to nullify the *0.2f hardcoded by Mojang.
*/
@EventHandler
private Listener<InputUpdateEvent> eventListener = new Listener<>(event -> {
if (passItemCheck(mc.player.getActiveItemStack().getItem()) && !mc.player.isRiding()) {
event.getMovementInput().moveStrafe *= 5;
event.getMovementInput().moveForward *= 5;
}
});
@Override
public void onUpdate() {
if (slime.getValue()) Blocks.SLIME_BLOCK.slipperiness = 0.4945f; // normal block speed 0.4945
else Blocks.SLIME_BLOCK.slipperiness = 0.8f;
}
@Override
public void onDisable() { Blocks.SLIME_BLOCK.slipperiness = 0.8f; }
private boolean passItemCheck(Item item) {
if (!mc.player.isHandActive()) return false;
return allItems.getValue()
|| (food.getValue() && item instanceof ItemFood)
|| (bow.getValue() && item instanceof ItemBow)
|| (potion.getValue() && item instanceof ItemPotion)
|| (shield.getValue() && item instanceof ItemShield);
}
}

View File

@ -0,0 +1,65 @@
package me.zeroeightsix.kami.module.modules.movement
import me.zero.alpine.listener.EventHandler
import me.zero.alpine.listener.EventHook
import me.zero.alpine.listener.Listener
import me.zeroeightsix.kami.module.Module
import me.zeroeightsix.kami.setting.Setting
import me.zeroeightsix.kami.setting.Settings
import net.minecraft.init.Blocks
import net.minecraft.item.*
import net.minecraftforge.client.event.InputUpdateEvent
/**
* Created by 086 on 15/12/2017.
* Updated by dominikaaaa on 31/03/20
* @see me.zeroeightsix.kami.mixin.client.MixinBlockSoulSand
*
* @see net.minecraft.client.entity.EntityPlayerSP.onLivingUpdate
*/
@Module.Info(
name = "NoSlowDown",
category = Module.Category.MOVEMENT,
description = "Prevents being slowed down when using an item or going through cobwebs"
)
class NoSlowDown : Module() {
@JvmField
var soulSand: Setting<Boolean> = register(Settings.b("Soul Sand", true))
@JvmField
var cobweb: Setting<Boolean> = register(Settings.b("Cobweb", true))
private val slime = register(Settings.b("Slime", true))
private val allItems = register(Settings.b("All Items", false))
private val food = register(Settings.booleanBuilder().withName("Food").withValue(true).withVisibility { v: Boolean? -> !allItems.value }.build())
private val bow = register(Settings.booleanBuilder().withName("Bows").withValue(true).withVisibility { v: Boolean? -> !allItems.value }.build())
private val potion = register(Settings.booleanBuilder().withName("Potions").withValue(true).withVisibility { v: Boolean? -> !allItems.value }.build())
private val shield = register(Settings.booleanBuilder().withName("Shield").withValue(true).withVisibility { v: Boolean? -> !allItems.value }.build())
/*
* InputUpdateEvent is called just before the player is slowed down @see EntityPlayerSP.onLivingUpdate)
* We'll abuse this fact, and multiply moveStrafe and moveForward by 5 to nullify the *0.2f hardcoded by Mojang.
*/
@EventHandler
private val eventListener = Listener(EventHook { event: InputUpdateEvent ->
if (passItemCheck(mc.player.activeItemStack.getItem()) && !mc.player.isRiding) {
event.movementInput.moveStrafe *= 5f
event.movementInput.moveForward *= 5f
}
})
override fun onUpdate() {
if (slime.value) Blocks.SLIME_BLOCK.slipperiness = 0.4945f // normal block speed 0.4945
else Blocks.SLIME_BLOCK.slipperiness = 0.8f
}
public override fun onDisable() {
Blocks.SLIME_BLOCK.slipperiness = 0.8f
}
private fun passItemCheck(item: Item): Boolean {
return if (!mc.player.isHandActive) false else allItems.value
|| food.value && item is ItemFood
|| bow.value && item is ItemBow
|| potion.value && item is ItemPotion
|| shield.value && item is ItemShield
}
}

View File

@ -1,30 +0,0 @@
package me.zeroeightsix.kami.module.modules.movement;
import me.zeroeightsix.kami.module.Module;
import static me.zeroeightsix.kami.KamiMod.MODULE_MANAGER;
/**
* Created by 086 on 23/08/2017.
* Updated by dominikaaaa on 06/03/20
*/
@Module.Info(
name = "Sprint",
description = "Automatically makes the player sprint",
category = Module.Category.MOVEMENT,
showOnArray = Module.ShowOnArray.OFF
)
public class Sprint extends Module {
@Override
public void onUpdate() {
if (mc.player == null) return;
if (MODULE_MANAGER.getModule(ElytraFlight.class).isEnabled() && (mc.player.isElytraFlying() || mc.player.capabilities.isFlying)) return;
try {
if (!mc.player.collidedHorizontally && mc.player.moveForward > 0)
mc.player.setSprinting(true);
else
mc.player.setSprinting(false);
} catch (Exception ignored) { }
}
}

View File

@ -0,0 +1,24 @@
package me.zeroeightsix.kami.module.modules.movement
import me.zeroeightsix.kami.KamiMod
import me.zeroeightsix.kami.module.Module
/**
* Created by 086 on 23/08/2017.
* Updated by dominikaaaa on 06/03/20
*/
@Module.Info(
name = "Sprint",
description = "Automatically makes the player sprint",
category = Module.Category.MOVEMENT, showOnArray = Module.ShowOnArray.OFF
)
class Sprint : Module() {
override fun onUpdate() {
if (mc.player == null) return
if (KamiMod.MODULE_MANAGER.getModule(ElytraFlight::class.java).isEnabled && (mc.player.isElytraFlying || mc.player.capabilities.isFlying)) return
try {
mc.player.isSprinting = !mc.player.collidedHorizontally && mc.player.moveForward > 0
} catch (ignored: Exception) { }
}
}

View File

@ -1,48 +0,0 @@
package me.zeroeightsix.kami.module.modules.movement;
import me.zeroeightsix.kami.module.Module;
import me.zeroeightsix.kami.module.Module.Category;
import me.zeroeightsix.kami.setting.Setting;
import me.zeroeightsix.kami.setting.Settings;
import static me.zeroeightsix.kami.util.MathsUtils.round;
/**
* @author TBM
* Updated by dominikaaaa on 28/01/20
*/
@Module.Info(
name = "TimerSpeed",
description = "Automatically change your timer to go fast",
category = Category.MOVEMENT
)
public class TimerSpeed extends Module {
private float tickDelay = 0.0f;
private static float curSpeed = 0.0f;
private Setting<Float> minimumSpeed = register(Settings.floatBuilder("Minimum Speed").withMinimum(0.1F).withMaximum(10.0F).withValue(4.0F).build());
private Setting<Float> maxSpeed = register(Settings.floatBuilder("Max Speed").withMinimum(0.1F).withMaximum(10.0F).withValue(7.0F).build());
private Setting<Float> attemptSpeed = register(Settings.floatBuilder("Attempt Speed").withMinimum(1.0F).withMaximum(10.0F).withValue(4.2F).build());
private Setting<Float> fastSpeed = register(Settings.floatBuilder("Fast Speed").withMinimum(1.0F).withMaximum(10.0F).withValue(5.0F).build());
public static String returnGui() {
return "" + round(curSpeed, 2);
}
public void onUpdate() {
if (tickDelay == minimumSpeed.getValue()) {
curSpeed = fastSpeed.getValue();
mc.timer.tickLength = 50.0F / fastSpeed.getValue();
}
if (tickDelay >= maxSpeed.getValue()) {
tickDelay = 0;
curSpeed = attemptSpeed.getValue();
mc.timer.tickLength = 50.0F / attemptSpeed.getValue();
}
++tickDelay;
}
public void onDisable() {
mc.timer.tickLength = 50.0F;
}
}

View File

@ -0,0 +1,48 @@
package me.zeroeightsix.kami.module.modules.movement
import me.zeroeightsix.kami.module.Module
import me.zeroeightsix.kami.setting.Settings
import me.zeroeightsix.kami.util.MathsUtils
/**
* @author TBM
* Updated by dominikaaaa on 28/01/20
*/
@Module.Info(
name = "TimerSpeed",
description = "Automatically change your timer to go fast",
category = Module.Category.MOVEMENT
)
class TimerSpeed : Module() {
private var tickDelay = 0.0f
private val minimumSpeed = register(Settings.floatBuilder("Minimum Speed").withMinimum(0.1f).withMaximum(10.0f).withValue(4.0f).build())
private val maxSpeed = register(Settings.floatBuilder("Max Speed").withMinimum(0.1f).withMaximum(10.0f).withValue(7.0f).build())
private val attemptSpeed = register(Settings.floatBuilder("Attempt Speed").withMinimum(1.0f).withMaximum(10.0f).withValue(4.2f).build())
private val fastSpeed = register(Settings.floatBuilder("Fast Speed").withMinimum(1.0f).withMaximum(10.0f).withValue(5.0f).build())
override fun onUpdate() {
if (tickDelay == minimumSpeed.value) {
curSpeed = fastSpeed.value
mc.timer.tickLength = 50.0f / fastSpeed.value
}
if (tickDelay >= maxSpeed.value) {
tickDelay = 0f
curSpeed = attemptSpeed.value
mc.timer.tickLength = 50.0f / attemptSpeed.value
}
++tickDelay
}
public override fun onDisable() {
mc.timer.tickLength = 50.0f
}
companion object {
private var curSpeed = 0.0f
@JvmStatic
fun returnGui(): String {
return "" + MathsUtils.round(curSpeed.toDouble(), 2)
}
}
}