Начинающий
- Статус
- Оффлайн
- Регистрация
- 2 Май 2025
- Сообщения
- 97
- Реакции
- 0
- Выберите загрузчик игры
- Forge
- Fabric
- OptiFine
- ForgeOptiFine
- Прочие моды
сливаю WaterJump
WATERJUMP:
package im.expensive.functions.impl.movement;
import com.google.common.eventbus.Subscribe;
import im.expensive.events.EventUpdate;
import im.expensive.functions.api.Category;
import im.expensive.functions.api.Function;
import im.expensive.functions.api.FunctionRegister;
import im.expensive.functions.settings.impl.BooleanSetting;
import im.expensive.functions.settings.impl.SliderSetting;
import net.minecraft.block.Blocks;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.vector.Vector3d;
@FunctionRegister(name = "WaterJump", type = Category.Movement)
public class WaterJump extends Function {
public final SliderSetting power = new SliderSetting("Jump Height", 1.2f, 0.5f, 3.0f, 0.1f);
public final BooleanSetting onlyWhenMoving = new BooleanSetting("Only When Moving", true);
public final BooleanSetting autoJump = new BooleanSetting("Auto Jump", false);
private boolean wasInBubbleLastTick = false;
public WaterJump() {
addSettings(power, onlyWhenMoving, autoJump);
}
@Subscribe
public void onUpdate(EventUpdate event) {
if (mc.player == null || mc.world == null) return;
if (onlyWhenMoving.get() && !isMoving()) return;
boolean nowInBubble = isInBubbleColumn();
if (!wasInBubbleLastTick && nowInBubble) {
applyBoost();
}
if (autoJump.get() && nowInBubble && mc.player.onGround) {
mc.player.jump();
}
wasInBubbleLastTick = nowInBubble;
}
private boolean isInBubbleColumn() {
BlockPos footPos = new BlockPos(
mc.player.getPositionVec().x,
mc.player.getPositionVec().y - 0.2,
mc.player.getPositionVec().z
);
return mc.world.getBlockState(footPos).getBlock() == Blocks.BUBBLE_COLUMN;
}
private boolean isMoving() {
return mc.player.getMotion().x != 0 || mc.player.getMotion().z != 0 ||
mc.gameSettings.keyBindForward.isKeyDown() ||
mc.gameSettings.keyBindBack.isKeyDown() ||
mc.gameSettings.keyBindLeft.isKeyDown() ||
mc.gameSettings.keyBindRight.isKeyDown();
}
private void applyBoost() {
Vector3d motion = mc.player.getMotion();
double boostPower = power.get();
if (mc.player.isSprinting()) {
boostPower *= 1.1;
}
mc.player.setMotion(motion.x, boostPower, motion.z);
}
@Override
public boolean onEnable() {
wasInBubbleLastTick = false;
return super.onEnable();
}
@Override
public boolean onDisable() {
wasInBubbleLastTick = false;
return super.onDisable();
}
}