Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Часть функционала TotemNotification 1.21.4 fabric

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
2 Июл 2025
Сообщения
41
Реакции
1
Выберите загрузчик игры
  1. Fabric
Видел только на 1.16.5 вот вам(вместо чата можете поставить свою ютилку с уведомлениями(у меня ее) или же оставь вот так в чате

Пожалуйста, авторизуйтесь для просмотра ссылки.


жесткий бупас 2 строчки:
Expand Collapse Copy
package ru.zxcrace.gloubert.systems.module.impl.other;

package ru.zxcrace.gloubert.systems.module.impl.other;

import ru.zxcrace.gloubert.systems.event.EventHandler;
import ru.zxcrace.gloubert.systems.event.impl.player.TotemPopEvent;
import ru.zxcrace.gloubert.systems.module.Category;
import ru.zxcrace.gloubert.systems.module.Module;
import ru.zxcrace.gloubert.systems.module.ModuleRegister;
import ru.zxcrace.gloubert.utils.color.ColorRGBA;
import ru.zxcrace.gloubert.utils.text.TextUtil;
import ru.zxcrace.gloubert.utils.timer.Timer;

@ModuleRegister(name = "TotemNotification", category = Category.OTHER)
public class TotemNotification extends Module {

Timer timer = new Timer();

@EventHandler
    public void onTotemPop(TotemPopEvent e) {

boolean isEnchanted = (e.getTotemStack().hasEnchantments());

String enchantedText = isEnchanted ? "Да" : "Нет";

if (timer.finished(50)) {
TextUtil.sendGradientMessage("Вы снесли тотем лоху " + e.getPlayer().getName().getString() + "Зачарован " + enchantedText, ColorRGBA.WHITE.getRGB(), ColorRGBA.RED.getRGB());
        }
 timer.reset();
    }
}

жесткий миксин бупасс 2:
Expand Collapse Copy
package ru.zxcrace.gloubert.mixin.client;

import com.mojang.brigadier.exceptions.CommandSyntaxException;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientPlayNetworkHandler;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.network.packet.s2c.play.EntityStatusS2CPacket;
import org.jetbrains.annotations.NotNull;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import ru.zxcrace.gloubert.Gloubert;
import ru.zxcrace.gloubert.systems.event.EventManager;
import ru.zxcrace.gloubert.systems.event.impl.player.TotemPopEvent;

@Mixin(ClientPlayNetworkHandler.class)
public class ClientPlayNetworkHandlerMixin {
    @Inject(method = "sendChatMessage", at = @At("HEAD"), cancellable = true)
    private void sendChatMessageHook(@NotNull String message, CallbackInfo ci) {



        if (message.startsWith(Gloubert.getInstance().getCommandManager().getPrefix())) {
            try {
                Gloubert.getInstance().getCommandManager().getDispatcher().execute(
                        message.substring(Gloubert.getInstance().getCommandManager().getPrefix().length()),
                        Gloubert.getInstance().getCommandManager().getSource()
                );
            } catch (CommandSyntaxException ignored) {}

            ci.cancel();
        }
    }

@Inject(method = "onEntityStatus", at = @At("HEAD"), cancellable = true)
public void onTotem(EntityStatusS2CPacket packet, CallbackInfo ci) {
if (packet.getStatus() == 35) {
Entity entity = packet.getEntity(MinecraftClient.getInstance().world);
if (entity instanceof PlayerEntity player) {
            ItemStack totemStack = player.getOffHandStack();
if (totemStack.isEmpty() || !totemStack.isOf(Items.TOTEM_OF_UNDYING)) {
                totemStack = player.getMainHandStack();
            }
EventManager.callEvent(new TotemPopEvent(player, totemStack.copy()));
        }
    }
}
}

ps: сможете это использовать например в партиклах(от тетемов)

update: добавил проверку на зачарование
 
Последнее редактирование:

Похожие темы

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