285bcbc2820f2db7de3c08ba7547d29e1bc8a64d
Десятый этап: выход из пустоты. Теперь пустоту можно посмотреть и покинуть без рестарта. Как работает: в пустоте берёшь любой острый предмет, прыгаешь и жмёшь ЛКМ по воздуху. Пол ищется верхним твёрдым блоком в колонке, а не лучом от глаз: пол пустоты плоский, а луч при быстром падении проходит мимо. Дыра работает в одну сторону — из пустоты выкидывает, снаружи это только метка, войти нельзя. Три решения, которые стоит зафиксировать: 1. Высота при выходе берётся с поверхности ОБЫЧНОГО мира, а не из пустоты. Пустота стоит на барьере внизу диапазона, и прямой перенос высоты уронил бы игрока в камень. X и Z пересчитываются по соотношению 1:2. 2. Коэффициент берётся из getCoordinateScale, а не константой 2.0. Если coordinate_scale поменяется в датапаке, пересчёт последует за ним сам. 3. Живёт дыра по факту использования, как в условии, но с потолком в 5 минут. Иначе дыра, о которой владелец забыл, висит до рестарта и продолжает выкидывать людей из пустоты. Это моё добавление, не из описания. Войти может только владелец: дыра сделана в пустоте, а по условию такая пускает лишь открывшего. Острый предмет определяется по суффиксу в имени материала: _SWORD, _AXE, _PICKAXE, _SHOVEL, _HOE. Проверяется по всему инвентарю, а не только по руке: в пустоте игрок в приключениях, и предмет в руке держать не обязательно. Мелочь с API: слушатель не может принимать лишний параметр, Bukkit создаёт его сам, поэтому плагин берётся из инстанса. Проверено: плагин грузится без ошибок, измерение находится. Сам перенос не проверялся — нужен игрок.
Description
BlackKnife plugin - DeltaMine
Languages
Java
100%