mirror of https://github.com/kami-blue/client
converted movement modules to kotlin
This commit is contained in:
parent
84cb639682
commit
8a428d307b
|
@ -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"))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
|
@ -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)
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
||||
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
|
@ -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()
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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) { }
|
||||
}
|
||||
}
|
|
@ -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) { }
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue