- Выберите загрузчик игры
- Fabric
Видел только на 1.16.5 вот вам(вместо чата можете поставить свою ютилку с уведомлениями(у меня ее) или же оставь вот так в чате
ps: сможете это использовать например в партиклах(от тетемов)
update: добавил проверку на зачарование
Пожалуйста, авторизуйтесь для просмотра ссылки.
жесткий бупас 2 строчки:
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:
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: добавил проверку на зачарование
Последнее редактирование: