c68b1d267e
Частицы прицелов уходили через spawnParticle, который ванильный сервер режет
на 32 блоках. Механика при этом работает на 120: OVERHEAD бьёт по точке
взгляда, DIVE туда же, SNIPE и TRI ищут цель в конусе до 120 блоков. То есть
вне 32 блоков прицела не было видно, а удар приходил — выглядит как поломка.
Теперь прицелы идут через Particles.farRing/farParticle, которые вызывают
World#spawnParticleLongDistance. Дистанция считается от игрока до точки
прицела и подрезается потолком 120. Боевые эффекты остались на обычных
spawnParticle: удар мгновенный, рисовать его за 100 блоков незачем.
Переведены четыре прицела: превью OVERHEAD, превью DIVE, кольцо TRI/SNIPE и
метки на цели. В OVERHEAD заодно кольцо из 8 отдельных SCULK_SOUL свернуто в
один дисковый вызов.
Попутно исправлен SWOON. DamageSource собирался только с withCausingEntity,
без withDirectEntity, и Bukkit такой вызов отвергал:
IllegalArgumentException: Direct entity must be set if causing entity is set
То есть урон не наносился вообще, а в лог падало исключение на каждый удар
ножом. Причина со времён переписывания SWOON, не сегодняшняя.
build.gradle: подключён локальный paper-api из сборки Delta, потому что нового
метода нет в стоковом API. Файл идёт первым, оба jar содержат
org/bukkit/World.class, и на classpath побеждает тот, что раньше.
40 lines
1.5 KiB
Groovy
40 lines
1.5 KiB
Groovy
plugins {
|
|
id 'java'
|
|
}
|
|
|
|
group = 'me.sashegdev.blackknife'
|
|
version = '1.0.0'
|
|
description = 'Black Knife - Roaring Knight attacks for Paper 1.21.8'
|
|
|
|
java {
|
|
toolchain.languageVersion = JavaLanguageVersion.of(21)
|
|
}
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
maven { url = "https://repo.papermc.io/repository/maven-public/" }
|
|
maven { url = "https://hub.spigotmc.org/nexus/content/repositories/snapshots/" }
|
|
maven { url = "https://jitpack.io" }
|
|
}
|
|
|
|
dependencies {
|
|
// Локальная сборка Delta нужна из-за World#spawnParticleLongDistance,
|
|
// которого нет в стоковом paper-api. Подключается файлом, а не репозиторием:
|
|
// в локальной папке сборки нет maven-metadata.xml, поэтому SNAPSHOT оттуда
|
|
// не резолвится. Файл идёт ПЕРВЫМ, потому что оба jar содержат
|
|
// org/bukkit/World.class, и на classpath побеждает тот, что раньше.
|
|
compileOnly files("/root/DeltaZern/paper-api/build/libs/paper-api-1.21.8-R0.1-SNAPSHOT.jar")
|
|
// Стоковая версия остаётся ради транзитивных зависимостей (adventure и т.д.).
|
|
compileOnly "io.papermc.paper:paper-api:1.21.8-R0.1-SNAPSHOT"
|
|
}
|
|
|
|
tasks.withType(JavaCompile).configureEach {
|
|
options.encoding = 'UTF-8'
|
|
options.release = 21
|
|
}
|
|
|
|
jar {
|
|
archiveBaseName = 'blackknife'
|
|
archiveVersion = '1.0.0'
|
|
}
|