@FeatureAnnotation(name = "NoSlow", category = Category.Movement)
public class NoSlow extends Feature {
public final ModeSetting mode = new ModeSetting("Mode", this, "Grim", "Cancel", "Grim", "Matrix", "Matrix2");
private final BooleanSetting doublePacket = new BooleanSetting("Double Packet", this, true, () -> !mode.is("Grim"));
private final NumberSetting packetDelay = new NumberSetting("Packet Delay", this, 1, 0, 5, 1, () -> mode.is("Grim"));
@Subscribe
public void onUpdate(EventUpdate eventUpdate) {
if (mc.player.isUsingItem() && !mc.player.isRiding() && !mc.player.isFallFlying()) {
if (mode.is("Grim")) {
if (mc.player.getActiveHand() == Hand.OFF_HAND) {
int currentSlot = mc.player.getInventory().selectedSlot;
IHolder.sendPacket(new UpdateSelectedSlotC2SPacket((currentSlot + 1) % 9));
if (doublePacket.isEnabled() && mc.player.age % (int) packetDelay.getValue() == 0) {
IHolder.sendPacket(new UpdateSelectedSlotC2SPacket((currentSlot + 2) % 9));
}
IHolder.sendPacket(new UpdateSelectedSlotC2SPacket(currentSlot));
} else if (mc.player.getItemUseTime() <= 5 || mc.player.age % 2 == 0) {
IHolder.sendSequencedPacket(id -> new PlayerInteractItemC2SPacket(Hand.OFF_HAND, id, mc.player.getYaw(), mc.player.getPitch()));
}
}
}
}
public boolean canNoSlow() {
if (mode.is("Cancel")) return true;
if (mode.is("Matrix") || mode.is("Matrix2")) return false;
ItemStack offHandStack = mc.player.getOffHandStack();
boolean isFood = offHandStack.getComponents().contains(DataComponentTypes.FOOD);
boolean isShield = offHandStack.getItem() == Items.SHIELD;
return (!isFood && !isShield) || !mode.is("Grim") || mc.player.getActiveHand() != Hand.MAIN_HAND;
}
}
попробуй это