feat(delta): /delta command, Display tracking budget, global delta config; rewrite README for Delta
Build Delta / Build paperclip jar (push) Failing after 4m52s

This commit is contained in:
SashegDev
2026-09-30 09:16:06 +00:00
parent e226182932
commit 342eaadf39
6 changed files with 289 additions and 78 deletions
+81 -78
View File
@@ -1,100 +1,103 @@
Paper [![Paper Build Status](https://img.shields.io/github/actions/workflow/status/PaperMC/Paper/build.yml?branch=main)](https://github.com/PaperMC/Paper/actions)
[![Discord](https://img.shields.io/discord/289587909051416579.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.gg/papermc)
[![GitHub Sponsors](https://img.shields.io/github/sponsors/papermc?label=GitHub%20Sponsors)](https://github.com/sponsors/PaperMC)
[![Open Collective](https://img.shields.io/opencollective/all/papermc?label=OpenCollective%20Sponsors)](https://opencollective.com/papermc)
===========
# Delta
The most widely used, high-performance Minecraft server that aims to fix gameplay and mechanics inconsistencies.
Экспериментальное серверное ядро на базе [Paper](https://github.com/PaperMC/Paper) для 1.21.8.
Сделано под узкие задачи: PvP-сервер с большим количеством кастомных способностей,
тяжёлыми визуальными эффектами (Display-сущности, частицы, звуки) и ограниченным
железом. Основная цель — выжать больше производительности с 4 vCPU / 8 ГБ RAM, не
ломая совместимость плагинов.
**Support and Project Discussion:**
- [Our forums](https://forums.papermc.io/) or [Discord](https://discord.gg/papermc)
> **Не для публичного использования.** Ядро собирается под конкретный сервер и не
> имеет ни стабильности, ни гарантий безопасности. Не публикуйте его и не
> стройте на нём публичные проекты.
How To (Server Admins)
------
Paperclip is a jar file that you can download and run just like a normal jar file.
---
Download Paper from our [downloads page](https://papermc.io/downloads/paper).
## Совместимость — это приоритет
Run the Paperclip jar directly from your server. Just like old times
Delta — **не форк с поломанным API**. Плагины видят ровно то же, что и на Paper:
* Documentation on using Paper: [docs.papermc.io](https://docs.papermc.io)
* For a sneak peek at upcoming features, [see here](https://github.com/PaperMC/Paper/projects)
| Что | Значение | Почему |
|---|---|---|
| Группа артефакта | `io.papermc.paper` | `Versioning` читает `pom.properties` по пути группы — смена ломает `Bukkit.getBukkitVersion()` |
| Версия | `1.21.8-R0.1-SNAPSHOT` | плагины парсят эту строку под API-фичи |
| `Brand-Id` | `papermc:paper` | по нему работает `ServerBuildInfo#isBrandCompatible` |
| Пакеты | `io.papermc.paper.*`, `net.minecraft.*`, Bukkit API | не трогаем вообще |
| Порядок тиков | стоковый | многопоток не трогает семантику |
How To (Plugin Developers)
------
* See our API [here](paper-api)
* See upcoming, pending, and recently added API [here](https://github.com/orgs/PaperMC/projects/2/views/4)
* Paper API javadocs here: [papermc.io/javadocs](https://papermc.io/javadocs/)
#### Repository (for paper-api)
##### Maven
Отличие только в отображении: `Brand-Name = Delta`, поэтому в F3 видно
`server: Delta`. Это **единственное** пользовательское отличие.
```xml
<repository>
<id>papermc</id>
<url>https://repo.papermc.io/repository/maven-public/</url>
</repository>
## Что добавлено
### `/delta` — инспекция и тюнинг
```
/delta status текущие значения конфигурации
/delta displayrange <блоки|0> дальность трекинга Display, 0 = стоковая
/delta reload перечитать конфиг
```
Периметр `delta.admin`.
### Бюджет Display-сущностей
В `ChunkMap.TrackedEntity#updatePlayer` добавлен кламп дальности трекинга для
`Display`. Display-сущности не имеют физики и коллизий, поэтому их отсечение по
дальности безопасно: клиент просто их не видит, серверное состояние остаётся
корректным. Это снимает основную нагрузку от способностей, спавнящих
десятки `BlockDisplay` с `viewRange=64`.
Отключено по умолчанию — включается в `paper-global.yml`:
```yaml
delta:
display-tracking-range-enabled: false
display-tracking-range: 64
particle-budget-per-player-per-tick: 0
sound-budget-per-player-per-second: 0
extended-particle-distance-enabled: false
extended-particle-distance: 128.0
decoupled-sound-range-enabled: false
```
```xml
<dependency>
<groupId>io.papermc.paper</groupId>
<artifactId>paper-api</artifactId>
<version>1.21.8-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
```
##### Gradle
```kotlin
repositories {
maven {
url = uri("https://repo.papermc.io/repository/maven-public/")
}
}
### Баннер при старте
При запуске печатается блок с версией, коммитом, веткой, списком включённых
Delta-фич и предупреждением о статусе ядра.
dependencies {
compileOnly("io.papermc.paper:paper-api:1.21.8-R0.1-SNAPSHOT")
}
## Конфигурация сервера
java {
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
}
Готовые тюнинг-конфиги под 4 vCPU лежат в [`zernmc-config/`](zernmc-config/) —
трекинг сущностей, активация, хопперы, чанковая система, редстоун. Это
партиальные файлы: Paper мержит их с дефолтами.
## Сборка
Требуется JDK 21. Две фазы, **обязательно отдельными вызовами** — при объединении
падает с ошибкой неявной зависимости `applyResourcePatches -> processResources`:
```bash
./gradlew applyPatches
./gradlew createMojmapPaperclipJar
```
How To (Compiling Jar From Source)
------
To compile Paper, you need JDK 21 and an internet connection.
Артефакты: `paper-server/build/libs/paper-paperclip-*.jar`
Clone this repo, run `./gradlew applyPatches`, then `./gradlew createMojmapBundlerJar` from your terminal. You can find the compiled jar in the `paper-server/build/libs` directory.
## CI
To get a full list of tasks, run `./gradlew tasks`.
Gitea Actions, воркфлоу `.gitea/workflows/build.yml`. Раннер живёт на отдельной
машине с 4 vCPU — на слабом хосте сборка невозможна.
How To (Pull Request)
------
See [Contributing](CONTRIBUTING.md)
Джобы выполняются в образе `delta-builder:jdk21` (JDK 21 + node + git identity).
Node обязателен для `actions/checkout`, git identity — для `applyFeaturePatches`,
который делает commit.
Old Versions (1.21.3 and below)
------
For branches of versions 1.8-1.21.3, please see our [archive repository](https://github.com/PaperMC/Paper-archive).
## Планируется
Support Us
------
First of all, thank you for considering helping out, we really appreciate that!
- Раздельные громкость и дальность звука (сейчас это один и тот же параметр —
чтобы было слышно за 150 блоков, приходится делать volume=10, и в упор всё
клиппит)
- `force`/`alwaysShow` в публичном API частиц (сейчас недоступны плагинам)
- Вынос симуляции «безопасных» чанков в worker-треды Moonrise — с чек-листом,
исключающим BlockEntity и плагинные блоки, чтобы не сломать совместимость
PaperMC has various recurring expenses, mostly related to infrastructure. Paper uses [Open Collective](https://opencollective.com/) via the [Open Source Collective fiscal host](https://opencollective.com/opensource) to manage expenses. Open Collective allows us to be extremely transparent, so you can always see how your donations are used. You can read more about financially supporting PaperMC [on our website](https://papermc.io/sponsors).
## Лицензия
You can find our collective [here](https://opencollective.com/papermc), or you can donate via GitHub Sponsors [here](https://github.com/sponsors/PaperMC), which will also go towards the collective.
Special Thanks To:
-------------
[![YourKit-Logo](https://www.yourkit.com/images/yklogo.png)](https://www.yourkit.com/)
[YourKit](https://www.yourkit.com/), makers of the outstanding java profiler, support open source projects of all kinds with their full featured [Java](https://www.yourkit.com/java/profiler) and [.NET](https://www.yourkit.com/.net/profiler) application profilers. We thank them for granting Paper an OSS license so that we can make our software the best it can be.
[<img src="https://user-images.githubusercontent.com/21148213/121807008-8ffc6700-cc52-11eb-96a7-2f6f260f8fda.png" alt="" width="150">](https://www.jetbrains.com)
[JetBrains](https://www.jetbrains.com/), creators of the IntelliJ IDEA, supports Paper with one of their [Open Source Licenses](https://www.jetbrains.com/opensource/). IntelliJ IDEA is the recommended IDE for working with Paper, and most of the Paper team uses it.
All our sponsors!
[![Sponsor Image](https://raw.githubusercontent.com/PaperMC/papermc.io/data/sponsors.png)](https://papermc.io/sponsors)
Код ядра наследует лицензию Paper ([GPLv3](LICENSE.md)). Все изменения в
`me.sashegdev.delta` — тоже GPLv3.