Вопрос NoSlow help | Fabric 1.21.4

Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Перенес Noslow на 1.21.4 и столкнулся с проблемой того, что он не полностью убирает замедление
может там код ноуслова скинешь, может хук ивента в миксине, нет?
 
может там код ноуслова скинешь, может хук ивента в миксине, нет?
Java:
Expand Collapse Copy
@Redirect(method = "tickMovement", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;isUsingItem()Z"), require = 0)
    private boolean tickMovementHook(ClientPlayerEntity player) {
        if (Core.getInstance().getFeatureManager().get(NoSlow.class).isEnabled() && Core.getInstance().getFeatureManager().get(NoSlow.class).canNoSlow())
            return false;
        return player.isUsingItem();
    }

Java:
Expand Collapse Copy
@FeatureAnnotation(name = "NoSlow",category = Category.Movement)
public class NoSlow extends Feature {

    public final ModeSetting mode = new ModeSetting("Mode", this, "Grim", "Cancel", "Grim");
    private final BooleanSetting dobulepacket = new BooleanSetting("Double Packet", this, true, () -> !mode.is("Grim"));
    
    @Subscribe
    public void onUpdate(EventUpdate eventUpdate){
        if (mc.player.isUsingItem() && !mc.player.isRiding() && !mc.player.isGliding()) {
            if (mode.is("Grim")) {
                if (mc.player.getActiveHand() == Hand.OFF_HAND) {
                    IHolder.sendPacket(new UpdateSelectedSlotC2SPacket(mc.player.getInventory().selectedSlot % 8 + 1));
                    if (dobulepacket.isEnabled()) {
                        IHolder.sendPacket(new UpdateSelectedSlotC2SPacket(mc.player.getInventory().selectedSlot % 7 + 2));
                    }
                    IHolder.sendPacket(new UpdateSelectedSlotC2SPacket(mc.player.getInventory().selectedSlot));
                } else if ((mc.player.getItemUseTime() <= 3 || 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;

        return (!mc.player.getOffHandStack().getComponents().contains(DataComponentTypes.FOOD) && mc.player.getOffHandStack().getItem() != Items.SHIELD)
                || (!mode.is("Grim")) || mc.player.getActiveHand() != Hand.MAIN_HAND;
    }
}
 
Перенес Noslow на 1.21.4 и столкнулся с проблемой того, что он не полностью убирает замедление
@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;
}
}
попробуй это
 
@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;
}
}
попробуй это
неа, не ворк
 
Перенес Noslow на 1.21.4 и столкнулся с проблемой того, что он не полностью убирает замедление
Тож самое было и короч это прунк я не помню как фиксить ну вроде через ивент какой то
 
Java:
Expand Collapse Copy
@Redirect(method = "tickMovement", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;isUsingItem()Z"), require = 0)
    private boolean tickMovementHook(ClientPlayerEntity player) {
        if (Core.getInstance().getFeatureManager().get(NoSlow.class).isEnabled() && Core.getInstance().getFeatureManager().get(NoSlow.class).canNoSlow())
            return false;
        return player.isUsingItem();
    }

Java:
Expand Collapse Copy
@FeatureAnnotation(name = "NoSlow",category = Category.Movement)
public class NoSlow extends Feature {

    public final ModeSetting mode = new ModeSetting("Mode", this, "Grim", "Cancel", "Grim");
    private final BooleanSetting dobulepacket = new BooleanSetting("Double Packet", this, true, () -> !mode.is("Grim"));
   
    @Subscribe
    public void onUpdate(EventUpdate eventUpdate){
        if (mc.player.isUsingItem() && !mc.player.isRiding() && !mc.player.isGliding()) {
            if (mode.is("Grim")) {
                if (mc.player.getActiveHand() == Hand.OFF_HAND) {
                    IHolder.sendPacket(new UpdateSelectedSlotC2SPacket(mc.player.getInventory().selectedSlot % 8 + 1));
                    if (dobulepacket.isEnabled()) {
                        IHolder.sendPacket(new UpdateSelectedSlotC2SPacket(mc.player.getInventory().selectedSlot % 7 + 2));
                    }
                    IHolder.sendPacket(new UpdateSelectedSlotC2SPacket(mc.player.getInventory().selectedSlot));
                } else if ((mc.player.getItemUseTime() <= 3 || 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;

        return (!mc.player.getOffHandStack().getComponents().contains(DataComponentTypes.FOOD) && mc.player.getOffHandStack().getItem() != Items.SHIELD)
                || (!mode.is("Grim")) || mc.player.getActiveHand() != Hand.MAIN_HAND;
    }
}
Посмотри как в тх реализовано тк данный код оттуда
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Java:
Expand Collapse Copy
@Redirect(method = "tickMovement", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;isUsingItem()Z"), require = 0)
    private boolean tickMovementHook(ClientPlayerEntity player) {
        if (Core.getInstance().getFeatureManager().get(NoSlow.class).isEnabled() && Core.getInstance().getFeatureManager().get(NoSlow.class).canNoSlow())
            return false;
        return player.isUsingItem();
    }

Java:
Expand Collapse Copy
@FeatureAnnotation(name = "NoSlow",category = Category.Movement)
public class NoSlow extends Feature {

    public final ModeSetting mode = new ModeSetting("Mode", this, "Grim", "Cancel", "Grim");
    private final BooleanSetting dobulepacket = new BooleanSetting("Double Packet", this, true, () -> !mode.is("Grim"));
  
    @Subscribe
    public void onUpdate(EventUpdate eventUpdate){
        if (mc.player.isUsingItem() && !mc.player.isRiding() && !mc.player.isGliding()) {
            if (mode.is("Grim")) {
                if (mc.player.getActiveHand() == Hand.OFF_HAND) {
                    IHolder.sendPacket(new UpdateSelectedSlotC2SPacket(mc.player.getInventory().selectedSlot % 8 + 1));
                    if (dobulepacket.isEnabled()) {
                        IHolder.sendPacket(new UpdateSelectedSlotC2SPacket(mc.player.getInventory().selectedSlot % 7 + 2));
                    }
                    IHolder.sendPacket(new UpdateSelectedSlotC2SPacket(mc.player.getInventory().selectedSlot));
                } else if ((mc.player.getItemUseTime() <= 3 || 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;

        return (!mc.player.getOffHandStack().getComponents().contains(DataComponentTypes.FOOD) && mc.player.getOffHandStack().getItem() != Items.SHIELD)
                || (!mode.is("Grim")) || mc.player.getActiveHand() != Hand.MAIN_HAND;
    }
}
так вхукай ивент сам
private boolean tickMovementHook(ClientPlayerEntity player) {
EventSlowWalking event = new EventSlowWalking(player);
EventManager.callEvent(event);

if (event.isCancelled()) {
return false;
}

return player.isUsingItem();
}

и вызывай через эвент отмену замедления, может будет работать, но по факту и твоё работать должно, не ебу почему не работает
ps. конструктор только в эвенте создай я тя умоляю

@setter
@Getter
public class EventSlowWalking extends Cancellable {
private final ClientPlayerEntity player;

public EventSlowWalking(ClientPlayerEntity player) {
this.player = player;
}
}
 
так вхукай ивент сам
private boolean tickMovementHook(ClientPlayerEntity player) {
EventSlowWalking event = new EventSlowWalking(player);
EventManager.callEvent(event);

if (event.isCancelled()) {
return false;
}

return player.isUsingItem();
}

и вызывай через эвент отмену замедления, может будет работать, но по факту и твоё работать должно, не ебу почему не работает
ps. конструктор только в эвенте создай я тя умоляю

@setter
@Getter
public class EventSlowWalking extends Cancellable {
private final ClientPlayerEntity player;

public EventSlowWalking(ClientPlayerEntity player) {
this.player = player;
}
}
не помогло, все так же не полностью убирает замедление
 
не помогло, все так же не полностью убирает замедление
Может потому-что вы ковыряете пакеты? Попробуй клиентский код проверить, например Item и ItemFood, походить по методам с интерактом предметов и посмотреть что потенциально может замедлять, кубачу испокон веков было похуй на то как игрок двигается на сервере, я думаю и искать нужно на клиенте а не ковыряться в сервере, т.к. по закону жанра каждый пердеж совать в неткод - частенько хуевый подход
 
@Redirect(method = "tickMovement", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;isUsingItem()Z"), require = 0) private boolean tickMovementHook(ClientPlayerEntity player) { if (Core.getInstance().getFeatureManager().get(NoSlow.class).isEnabled() && Core.getInstance().getFeatureManager().get(NoSlow.class).canNoSlow()) return false; return player.isUsingItem(); }

Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.

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