Files
DeltaMine/build.gradle
T
SashegDev c68b1d267e feat(blackknife): aim indicators use long-range particles, fix broken SWOON
Частицы прицелов уходили через 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 побеждает тот, что раньше.
2026-10-05 17:31:08 +00:00

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'
}