Часть функционала WaterJump EXP 3.1

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
2 Май 2025
Сообщения
97
Реакции
0
Выберите загрузчик игры
  1. Forge
  2. Fabric
  3. OptiFine
  4. ForgeOptiFine
  5. Прочие моды
сливаю WaterJump

WATERJUMP:
Expand Collapse Copy
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();
    }
}
 
сливаю WaterJump

WATERJUMP:
Expand Collapse Copy
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();
    }
}
зачем? уже же сливали


waterjump:
Expand Collapse Copy
public class WaterLeave extends Module {
    ModeSetting mode = new ModeSetting("Мод", "Песок душ", "Песок душ", "Магма");

    public WaterLeave() {addSettings(mode);}

    @Subscribe
    public void onUpdate(EventUpdate e) {
        if (mc.player.isInWater() && (mode.is("Песок душ") && mc.world.getBlockState(mc.player.getPosition().down()).getBlock() == Blocks.SOUL_SAND) || (mode.is("Магма") && mc.world.getBlockState(mc.player.getPosition().down()).getBlock() == Blocks.MAGMA_BLOCK)) {
            mc.player.motion.y = 1.7;
        }
    }
}

вот так делаешь и всё,зачем такой большой код?
 
эта же то же самоечто ватер ливы на магме? зачем оно нужно
 

Похожие темы

Назад
Сверху Снизу