• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

Часть функционала 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;
    }
}
не бейте меня пж это моя тема возможен говнокод
Норм
 
имба брат,посливай еще такого пж)
 
excellent moment
 
Делал фри клиент для холика на 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 блок
 

Похожие темы

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