Воу-воу-воу, детки пестиков, цветков и пикселей. Сегодня я решил с утреца дунуть косячок, и меня пустило в такой забористый, сильнейший астральный затяг, что мои чакры чуть не перемкнуло, когда я поймал частоту вашего спора.
Раскройте уши и расслабьте разум, чуваки. Вы тут втираете, мол, этот ваш мегакик - это типа... такая, ну, очищающая карму процедура для самых диких пассажиров, сечёте фишку? И ещё так красиво заворачиваете эту дичь в обертку, мол, 'своеобразное наказание', и стремаетесь сказать правду-матку, будто многорукий Шива прямо сейчас склонился над вами с тапком правосудия.
Нахрена козе баян, мэн, когда в нашем виртуальном Эдеме уже есть и бан, и мут, и предупреждение? Что за неравноправие и недомыслие вслух, братки, а? Какой больной на всю голову извращенец придумал ломать людям матрицу зрения таким способом? Вы хоть выкупаете, что здесь вообще нечем гордиться? Будда знает, это просто бэд трип какой-то во плоти!
Поздравляю с первым мегакиком, хрень в чат писать не надо
Оо, старина! Опять ты готов распять чувака за любую фигню, лишь бы эго админской коммуны не поцарапалось о суровую реальность! Разуй третий глаз, брат. Я, как истинный садху, раскурил внутренности этого мегакика, и всё, как говаривает Шива, довольно просто, если правильно забить трубку. Всё работает, как и шепчет нам
Вселенная - до смешного просто. Эта команда /megakick выцепляет конкретного парня и начинает вкачивать ему прямо в вену клиента левые, искусственные вибрации - пакеты, которые сервер даже не пускает в общий мир. Они летят чисто жертве через PlayerUtils.sendPacket. То есть фишка не в том, чтобы просто мирно отключить чувака от сети, а в том, чтобы устроить его клиенту максимально блевотный, как у меня вчера вечером, локальный бэд трип! Картинку ломает, всё фризит, и клиент просто отъезжает от передоза.
Ты только зацени этот кусок кода:
Java:
for(int i = 0; i < 360; i += 20){
double rad = Math.toRadians(i);
double cos = Math.cos(rad);
double sin = Math.sin(rad);
for(double y = -2; y < 2; y += 0.6){
offsets.add(new Offset(cos * 2, y, sin * 2, i + 90));
}
}
Смотри, как расширяется сознание: угол i идёт от 0 до 340 с шагом 20 - получаем 18 направлений, как 18 рук у просветлённого божества. По высоте y от -2 до 2 с шагом 0.6 - примерно 7 уровней, как семь чакр, пронзённых молнией. Итого 18 × 7 = 126 позиций. Это целая 3D-мандала из фейковых сущностей, брат! Не одна стойка доспехов, а целое кольцо-решётка из астральных призраков вокруг игрока, как будто он попал в эпицентр кармического шторма.
А потом парня жёстко приколачивают к центру мироздания:
Java:
loc.setPitch(0);
loc.setX(loc.getBlockX() + 0.5D);
loc.setY(loc.getBlockY() + 0.5D);
loc.setZ(loc.getBlockZ() + 0.5D);
kickPlayer.teleport(loc);
kickPlayer.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 10 * 60 * 20, 10));
Его, бедную душу, ставят в центр блока - идеальная симметрия, чтобы фейковые сущности встали как вкопанные в космический узор. Потом насильно телепортируют и вливают эффект слепоты на 10 минут, чтобы он вообще потерялся в пустоте. Это как если бы тебя втолкнули в тёмную пещеру без спичек, а вокруг давай летать злые духи и нашёптывать всякую дичь.
А теперь самое кайфовое - подготовка 'живой' сущности, которую спавнят через пакет. Вот это шаманство:
Java:
PacketContainer spawn = manager.createPacket(PacketType.Play.Server.SPAWN_ENTITY_LIVING);
Entity armorStand = MyEntityType.InvisiblyArmorStand.createNewEntity(loc).getBukkitEntity();
if(BukkitUtils.BUKKIT_VERSION.isBeforeOrEq(ProtocolVersion.MINECRAFT_1_12_2)) {
spawn.getDataWatcherModifier().write(0, WrappedDataWatcher.getEntityWatcher(armorStand));
}
spawn.getIntegers().write(1, (int) EntityType.ARMOR_STAND.getTypeId());
Короче, создаётся пакет спавна живой сущности, чисто энергетический фантом, который потом будут клонировать в каждую точку мандалы. Это не настоящий моб, бро, а иллюзия, от которой у клиента едет крыша, как после двойной дозы галлюциногенных грибов. Серьёзно, Будда знает, меня накрыло такой тягучей волной, что третий глаз аж замигал, как сломаный светофор на радужном мосту.
А теперь не менее криповое - звук, чуваки.
Java:
PacketContainer sound = manager.createPacket(PacketType.Play.Server.NAMED_SOUND_EFFECT);
sound.getSoundEffects().write(0, Sound.AMBIENT_CAVE);
sound.getSoundCategories().write(0, EnumWrappers.SoundCategory.MASTER);
sound.getIntegers()
.write(0, loc.getBlockX() * 8)
.write(1, loc.getBlockY() * 8)
.write(2, loc.getBlockZ() * 8);
sound.getFloat()
.write(0, 1F)
.write(1, 1F);
Они берут пакет NAMED_SOUND_EFFECT и заряжают туда AMBIENT_CAVE. Вы же знаете этот жуткий пещерный гул? Он сам по себе нагоняет лютого мрака, а они вшивают его в цикл для каждой сущности! То есть это не разовый 'бу-у-у', это бесконечная звуковая пытка, которая долбит по ушам, разрушая гармонию сфер. Чисто вьетнамские флешбеки!
А самое гадкое, брат, что весь этот шабаш запускают в отдельном Java-потоке:
Java:
new Thread(() -> {
...
}).start();
Отдельный поток - это как параллельная вселенная, чувак! Пакеты и действия идут не из основного серверного треда, чтобы не тормозить всю экосистему, но мучить конкретную жертву. Сервер спокойно себе чиллит в основном треде, цветочки нюхает, а где-то в параллельной вселенной код разрывает мозги бедному юзеру.
То, что никак не получить, будучи адекватным человеком
Ну че, удобно вот так вот играть в богов и крутить невинными душами, брат? Вместо того, чтобы расслабиться, любить этот мир и чиллить. Вы думаете, это прикольно, но у админов и модеров явно какие-то жесткие комплексы, мэн. А Шива, как известно, такие плохие вибрации не прощает. Карма настигнет, чувак. Не-а. Это не наш путь.