Часть функционала FastShulkerBreak | HW lite | 3.1 ready

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
5 Май 2025
Сообщения
18
Реакции
0
Выберите загрузчик игры
  1. OptiFine
  2. Прочие моды
Делал фри клиент для холика на 1.16.5 экспе решил перейти на 1.21.4 поэтому сливаю функицию (взял ее с рокстара и перенес на 3.1) она позволяет ломать шалкер на замке или контейнере с первого раза / ломать определенное количество прочности
ss: нету
dw:
FastShulkerBreak:
Expand Collapse Copy
package im.expensive.functions.impl.misc;

import com.google.common.eventbus.Subscribe;
import im.expensive.events.EventPacket;
import im.expensive.functions.api.Category;
import im.expensive.functions.api.Function;
import im.expensive.functions.api.FunctionRegister;
import im.expensive.functions.settings.impl.SliderSetting;
import net.minecraft.block.ShulkerBoxBlock;
import net.minecraft.client.Minecraft;
import net.minecraft.network.play.client.CPlayerDiggingPacket;
import net.minecraft.util.math.BlockPos;

@FunctionRegister(name = "FastShulkerBreak", type = Category.Misc)
public class FastShulkerBreak extends Function {
    private final SliderSetting breakCount = new SliderSetting("Кол-во разрушений", 5, 2, 1000, 1);
    private BlockPos lastBreakPos = null;
    private long lastBreakTime = 0;

    public FastShulkerBreak() {
        addSettings(breakCount);
    }

    @Subscribe
    public void onPacket(EventPacket e) {
        if (e.isSend() && e.getPacket() instanceof CPlayerDiggingPacket packet && packet.getAction() == CPlayerDiggingPacket.Action.STOP_DESTROY_BLOCK) {
            BlockPos pos = packet.getPosition();
            if (Minecraft.getInstance().world == null) return;

            boolean isShulker = Minecraft.getInstance().world.getBlockState(pos).getBlock() instanceof ShulkerBoxBlock;
            if (isShulker && (lastBreakPos == null || !lastBreakPos.equals(pos) || System.currentTimeMillis() - lastBreakTime > 500)) {
                int count = Math.min(Math.round(breakCount.get()), 10000) - 1;
                for (int i = 0; i < count; i++) {
                    Minecraft.getInstance().player.connection.sendPacket(new CPlayerDiggingPacket(
                            CPlayerDiggingPacket.Action.STOP_DESTROY_BLOCK, pos, packet.getFacing()));
                }
                lastBreakPos = pos;
                lastBreakTime = System.currentTimeMillis();
            }
        }
    }

    @Override
    public void onEnable() {
        super.onEnable();
        lastBreakPos = null;
        lastBreakTime = 0;
    }

    @Override
    public void onDisable() {
        super.onDisable();
        lastBreakPos = null;
        lastBreakTime = 0;
    }
}
не бейте меня пж это моя тема возможен говнокод
 
Последнее редактирование:
я не мастер конечно но вроне норм хотя и говно код
я сначала для себя делал это и для пользователей поэтому не сильно заморачиваюсь над написанием красивого кода
 
Делал фри клиент для холика на 1.16.5 экспе решил перейти на 1.21.4 поэтому сливаю функицию (взял ее с рокстара и перенес на 3.1) она позволяет ломать шалкер на замке или контейнере с первого раза / ломать определенное количество прочности
ss: нету
dw:
FastShulkerBreak:
Expand Collapse Copy
package im.expensive.functions.impl.misc;

import com.google.common.eventbus.Subscribe;
import im.expensive.events.EventPacket;
import im.expensive.functions.api.Category;
import im.expensive.functions.api.Function;
import im.expensive.functions.api.FunctionRegister;
import im.expensive.functions.settings.impl.SliderSetting;
import net.minecraft.block.ShulkerBoxBlock;
import net.minecraft.client.Minecraft;
import net.minecraft.network.play.client.CPlayerDiggingPacket;
import net.minecraft.util.math.BlockPos;

@FunctionRegister(name = "FastShulkerBreak", type = Category.Misc)
public class FastShulkerBreak extends Function {
    private final SliderSetting breakCount = new SliderSetting("Кол-во разрушений", 5, 2, 1000, 1);
    private BlockPos lastBreakPos = null;
    private long lastBreakTime = 0;

    public FastShulkerBreak() {
        addSettings(breakCount);
    }

    @Subscribe
    public void onPacket(EventPacket e) {
        if (e.isSend() && e.getPacket() instanceof CPlayerDiggingPacket packet && packet.getAction() == CPlayerDiggingPacket.Action.STOP_DESTROY_BLOCK) {
            BlockPos pos = packet.getPosition();
            if (Minecraft.getInstance().world == null) return;

            boolean isShulker = Minecraft.getInstance().world.getBlockState(pos).getBlock() instanceof ShulkerBoxBlock;
            if (isShulker && (lastBreakPos == null || !lastBreakPos.equals(pos) || System.currentTimeMillis() - lastBreakTime > 500)) {
                int count = Math.min(Math.round(breakCount.get()), 10000) - 1;
                for (int i = 0; i < count; i++) {
                    Minecraft.getInstance().player.connection.sendPacket(new CPlayerDiggingPacket(
                            CPlayerDiggingPacket.Action.STOP_DESTROY_BLOCK, pos, packet.getFacing()));
                }
                lastBreakPos = pos;
                lastBreakTime = System.currentTimeMillis();
            }
        }
    }

    @Override
    public void onEnable() {
        super.onEnable();
        lastBreakPos = null;
        lastBreakTime = 0;
    }

    @Override
    public void onDisable() {
        super.onDisable();
        lastBreakPos = null;
        lastBreakTime = 0;
    }
}
не бейте меня пж это моя тема возможен говнокод
ода excellent
 
Делал фри клиент для холика на 1.16.5 экспе решил перейти на 1.21.4 поэтому сливаю функицию (взял ее с рокстара и перенес на 3.1) она позволяет ломать шалкер на замке или контейнере с первого раза / ломать определенное количество прочности
ss: нету
dw:
FastShulkerBreak:
Expand Collapse Copy
package im.expensive.functions.impl.misc;

import com.google.common.eventbus.Subscribe;
import im.expensive.events.EventPacket;
import im.expensive.functions.api.Category;
import im.expensive.functions.api.Function;
import im.expensive.functions.api.FunctionRegister;
import im.expensive.functions.settings.impl.SliderSetting;
import net.minecraft.block.ShulkerBoxBlock;
import net.minecraft.client.Minecraft;
import net.minecraft.network.play.client.CPlayerDiggingPacket;
import net.minecraft.util.math.BlockPos;

@FunctionRegister(name = "FastShulkerBreak", type = Category.Misc)
public class FastShulkerBreak extends Function {
    private final SliderSetting breakCount = new SliderSetting("Кол-во разрушений", 5, 2, 1000, 1);
    private BlockPos lastBreakPos = null;
    private long lastBreakTime = 0;

    public FastShulkerBreak() {
        addSettings(breakCount);
    }

    @Subscribe
    public void onPacket(EventPacket e) {
        if (e.isSend() && e.getPacket() instanceof CPlayerDiggingPacket packet && packet.getAction() == CPlayerDiggingPacket.Action.STOP_DESTROY_BLOCK) {
            BlockPos pos = packet.getPosition();
            if (Minecraft.getInstance().world == null) return;

            boolean isShulker = Minecraft.getInstance().world.getBlockState(pos).getBlock() instanceof ShulkerBoxBlock;
            if (isShulker && (lastBreakPos == null || !lastBreakPos.equals(pos) || System.currentTimeMillis() - lastBreakTime > 500)) {
                int count = Math.min(Math.round(breakCount.get()), 10000) - 1;
                for (int i = 0; i < count; i++) {
                    Minecraft.getInstance().player.connection.sendPacket(new CPlayerDiggingPacket(
                            CPlayerDiggingPacket.Action.STOP_DESTROY_BLOCK, pos, packet.getFacing()));
                }
                lastBreakPos = pos;
                lastBreakTime = System.currentTimeMillis();
            }
        }
    }

    @Override
    public void onEnable() {
        super.onEnable();
        lastBreakPos = null;
        lastBreakTime = 0;
    }

    @Override
    public void onDisable() {
        super.onDisable();
        lastBreakPos = null;
        lastBreakTime = 0;
    }
}
не бейте меня пж это моя тема возможен говнокод
Норм
 
Делал фри клиент для холика на 1.16.5 экспе решил перейти на 1.21.4 поэтому сливаю функицию (взял ее с рокстара и перенес на 3.1) она позволяет ломать шалкер на замке или контейнере с первого раза / ломать определенное количество прочности
ss: нету
dw:
FastShulkerBreak:
Expand Collapse Copy
package im.expensive.functions.impl.misc;

import com.google.common.eventbus.Subscribe;
import im.expensive.events.EventPacket;
import im.expensive.functions.api.Category;
import im.expensive.functions.api.Function;
import im.expensive.functions.api.FunctionRegister;
import im.expensive.functions.settings.impl.SliderSetting;
import net.minecraft.block.ShulkerBoxBlock;
import net.minecraft.client.Minecraft;
import net.minecraft.network.play.client.CPlayerDiggingPacket;
import net.minecraft.util.math.BlockPos;

@FunctionRegister(name = "FastShulkerBreak", type = Category.Misc)
public class FastShulkerBreak extends Function {
    private final SliderSetting breakCount = new SliderSetting("Кол-во разрушений", 5, 2, 1000, 1);
    private BlockPos lastBreakPos = null;
    private long lastBreakTime = 0;

    public FastShulkerBreak() {
        addSettings(breakCount);
    }

    @Subscribe
    public void onPacket(EventPacket e) {
        if (e.isSend() && e.getPacket() instanceof CPlayerDiggingPacket packet && packet.getAction() == CPlayerDiggingPacket.Action.STOP_DESTROY_BLOCK) {
            BlockPos pos = packet.getPosition();
            if (Minecraft.getInstance().world == null) return;

            boolean isShulker = Minecraft.getInstance().world.getBlockState(pos).getBlock() instanceof ShulkerBoxBlock;
            if (isShulker && (lastBreakPos == null || !lastBreakPos.equals(pos) || System.currentTimeMillis() - lastBreakTime > 500)) {
                int count = Math.min(Math.round(breakCount.get()), 10000) - 1;
                for (int i = 0; i < count; i++) {
                    Minecraft.getInstance().player.connection.sendPacket(new CPlayerDiggingPacket(
                            CPlayerDiggingPacket.Action.STOP_DESTROY_BLOCK, pos, packet.getFacing()));
                }
                lastBreakPos = pos;
                lastBreakTime = System.currentTimeMillis();
            }
        }
    }

    @Override
    public void onEnable() {
        super.onEnable();
        lastBreakPos = null;
        lastBreakTime = 0;
    }

    @Override
    public void onDisable() {
        super.onDisable();
        lastBreakPos = null;
        lastBreakTime = 0;
    }
}
не бейте меня пж это моя тема возможен говнокод
Грим оценил зако пж возми с нового грима пару бреак чеков это пизда 50 срабатываний за 1 блок
 
Назад
Сверху Снизу