Помогите Эффективный инструмент ломания блока?

Статус
Закрыто для дальнейших ответов.

pro100koder

Активный участник
Пользователь
Баллы
76
Как получить эффективный для ломания блока инструмент?
Вот есть в 1.13.2 такой красивый метод: Material.getHardness(). Выдаёт прочность блока.
Хорошо, вот она у меня есть. А теперь мне нужно узнать, ломали ли его правильным инструментом. Вопрос: каким методом и из какого объекта достать хоть какую-то наводку на нужный тип инструментов?
P. S. Пишу некий анти-fastbreak, основанный на запоминании ломания за 5 realtime секунд и оповещении об этом администрации. У игроков не будет отменяться каждый 2 блок при ломании (если пинг), да и ложных срабатываний минимум, т. к. за 5 секунд почти любые пинги будут подавлены.
 
Записываешь просто эффективные инструменты для блока, а потом достаёшь их.
 
Записываешь просто эффективные инструменты для блока, а потом достаёшь их.
Каким образом записывать? Делать базу вручную со всеми материалами minecraft-а? Или пилить сложную систему, где с сервера сначала находят наиболее популярную скорость для опр. блока? (Крайне неточная, лагающая дичь)? Неужели в material и т. п. нет никаких намёков на инструменты?
 
Каким образом записывать? Делать базу вручную со всеми материалами minecraft-а? Или пилить сложную систему, где с сервера сначала находят наиболее популярную скорость для опр. блока? (Крайне неточная, лагающая дичь)? Неужели в material и т. п. нет никаких намёков на инструменты?
Вручную со всеми материалами.
 
Вроде как в апи такого нет. Посмотри как это определяется в ядре. Это находится в методе b(IBlockData iblockdata) в EntityHuman классе (в маппингах форджа это getDigSpeed(BlockState state) в PlayerEntity), он возвращает число от 0 до 1 - на сколько процентов игрок сломает блок за тик. Там учитывается правильный ли инструмент, эффективность на инструменте, эффекты на игроке, в воздухе/в воде ли находится игрок и т.д... Тебе тоже это все надо учесть (Ну или вызвать этот метод). Конкретно правильность инструмента там определяется путем сверки со списком правильных материалов для этого инструмента. Пример с топором:
upload_2020-8-4_20-8-26.png
 
Последнее редактирование:
Вроде как в апи такого нет. Посмотри как это определяется в ядре. Это находится в методе b(IBlockData iblockdata) в EntityHuman классе (в маппингах форджа это getDigSpeed(BlockState state) в PlayerEntity), он возвращает число от 0 до 1 - на сколько процентов игрок сломает блок за тик. Там учитывается правильный ли инструмент, эффективность на инструменте, эффекты на игроке, в воздухе/в воде ли находится игрок и т.д... Тебе тоже это все надо учесть (Ну или вызвать этот метод). Конкретно правильность инструмента там определяется путем сверки со списком правильных материалов для этого инструмента. Пример с топором:
Посмотреть вложение 57465
Огромное спасибо, нагуглил, через NMS запилил. Только теперь есть проблемы, связанные с задержкой между блоками... Я сохраняю скорость ломания и прочность блока в объект Break, делим прочность материала на скорость - и вуаля. Время, за которое игрок должен без читов сломать блок (правда не совсем понятно, в чём оно). Однако между сломанными блоками есть какая-то задержка, тупо подобрать правильное число не получается. Точность в итоге оказывается хуже, чем при обычной системе с временем ломания одного блока. Что делать? При записи за 5 секунд сломаных блоков лопатой и рукой числа имеют большую разницу. Я так понимаю, дело в 4-тиковом апдейте предмета в руке при зажатой кнопке...
 
Огромное спасибо, нагуглил, через NMS запилил. Только теперь есть проблемы, связанные с задержкой между блоками... Я сохраняю скорость ломания и прочность блока в объект Break, делим прочность материала на скорость - и вуаля. Время, за которое игрок должен без читов сломать блок (правда не совсем понятно, в чём оно). Однако между сломанными блоками есть какая-то задержка, тупо подобрать правильное число не получается. Точность в итоге оказывается хуже, чем при обычной системе с временем ломания одного блока. Что делать? При записи за 5 секунд сломаных блоков лопатой и рукой числа имеют большую разницу. Я так понимаю, дело в 4-тиковом апдейте предмета в руке при зажатой кнопке...
Когда ломаешь блоки не мгновенно, добавляется 5 тиков задержки после ломания. Многие клиенты делают быстрое ломание путем убирания этой задержки
https://minecraft.gamepedia.com/Instant_mining
 
Когда ломаешь блоки не мгновенно, добавляется 5 тиков задержки после ломания. Многие клиенты делают быстрое ломание путем убирания этой задержки
https://minecraft.gamepedia.com/Instant_mining
Не знаю. Даже при искусственном добавлении задержки к общему таймеру по 0,25 сек., всё равно результат алмазной лопаты сильно отличается от деревянной. Т. к. проверка идёт за 5 секунд, всегда результат должен быть близок к 5, но если "подогнать" под деревянную лопату, чтобы было 5 - алмазная выдаст 4. Подогнать алмазной 5 - деревянная отклоняется. При этом, я учёл умножение hardness на 1,5 и прочие особенности из википедии, всё равно результат не усредняется. Даже если и алм и дер будут одинаково выдавать - камень и железо начнёт фигнёй страдать. Пока что сделал убогую систему, напоминающую NCP, просто из интереса... Хотя хотелось бы сделать профессиональный античит именно от fastbreak-а, т. к. уже в 2 режимах fastbreak имеет огромное влияние на баланс и его крайне криво палит NCP (вечные жалобы что блок откатывается и спам в чате от NCP, если на сервере есть пинг или игрок через тапок к интернету подключен. Долгосрочный лимит мог бы это всё исправить, но его нельзя посчитать! >:()
 
NCP надо настраивать уметь. Никогда никто не жаловался за много лет.
 
NCP надо настраивать уметь. Никогда никто не жаловался за много лет.
Откуда информация?
Мне проще именно эту самую часть NCP самому своими ручками перепилить, чем настроить его так, как мне нужно.
P. S. Забыл закрыть тему... Я всё допилил, тупо забив на единый лимит. По факту сделал тот же NCP, но с чуть другим принципом работы.
P. P. S. Год назад, когда настраивал NCP, не нашёл достойных пояснений, что за что отвечает в настройках ломания блоков NCP. За то тонна готовых настроек, которые так и кричат: самая правильная! Самая правильная!
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх