client.msg(...) пишет строку в чат: её видно среди чужих сообщений, и через полминуты она уезжает вверх. Уведомление это плашка самого клиента: она появляется поверх игры, живёт пару секунд и не мешает читать чат.
Клиент показывает так свои события: включили модуль, загрузился конфиг, кончился кулдаун. Скрипт умеет то же самое через объект notify.
notify.island("Скрипт загружен") # строка в Dynamic Island
notify.success("Готово") # она же, зелёная
notify.error("Что-то пошло не так") # красная
notify.crosshair("Внимание", "Рядом игрок") # плашка под прицелом
notify.item("Нашёл", "diamond", highlight="алмаз") # плашка с иконкой предмета
notify.effect("Дали", "speed") # плашка с иконкой эффекта| Вызов | Где появится |
|---|---|
notify.island(text, type="info") | Строка в Dynamic Island сверху экрана |
notify.success(text) / error(text) / info(text) | То же самое, но цвет уже выбран |
notify.crosshair(title, desc, type="info") | Плашка под прицелом: заголовок и пояснение |
notify.item(text, item, highlight=None, color=None) | Маленькая плашка с иконкой предмета |
notify.effect(text, effect, highlight=None, color=None) | То же, но со значком эффекта |
notify.sound() | Звук уведомления клиента |
notify.count() | Сколько плашек сейчас на экране |
type это цвет и значок: success зелёный, error красный, info жёлтый. Предмет в notify.item пишется как в игре, приставку minecraft: можно опустить.
Dynamic Island это чёрная плашка сверху экрана. Уведомление появляется в ней само, а свои статусы живут там постоянно и рисуются как захочешь. Разница простая: уведомление сказало и исчезло, статус висит и показывает состояние.
mod = Module("LowHealth", "Player")
warned = False
@events.tick
def on_tick(event):
global warned
if not mod.isEnabled() or not world.ingame():
return
hp = float(mc.player.getHealth())
if hp <= 6.0 and not warned:
notify.error("Мало здоровья")
notify.sound()
warned = True
elif hp > 10.0:
warned = FalseСобытие notification приходит на каждую показанную плашку: и на свою, и на клиентскую. Так можно вести журнал происходящего или дублировать важное туда, куда смотришь.
journal = []
@events.notification
def on_notification(event):
journal.append("%s: %s" % (event.getType(), event.getText()))
if len(journal) > 20:
del journal[0]
if event.getType() == "error":
client.overlay("ошибка: " + event.getText())| Метод события | Что в нём |
|---|---|
getStyle() | island, crosshair, mini или irc |
getType() | success, error, info |
getTitle() | Заголовок, если он есть у этого вида |
getText() | Сам текст |