Начинающий
- Статус
- Оффлайн
- Регистрация
- 5 Май 2025
- Сообщения
- 18
- Реакции
- 0
- Выберите загрузчик игры
- OptiFine
- Прочие моды
Делал фри клиент для холика на 1.16.5 экспе решил перейти на 1.21.4 поэтому сливаю функицию (взял ее с рокстара и перенес на 3.1) она позволяет ломать шалкер на замке или контейнере с первого раза / ломать определенное количество прочности
ss: нету
dw:
не бейте меня пж это моя тема возможен говнокод
ss: нету
dw:
FastShulkerBreak:
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;
}
}
Последнее редактирование: