▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Плагины/BetterView
BetterView

BetterView

Плагин для Paper и мод для Fabric, который увеличивает дальность прорисовки чанков на сервере Minecraft без потери производительности. Асинхронная загрузка, чтение чанков с диска и кэширование.

Оцените первым
4.0K
47

BetterView

Что это и зачем нужно

BetterView - это высокопроизводительный плагин для Paper и мод для Fabric, который решает вечную проблему серверов Майнкрафт: как дать игрокам большую дальность прорисовки, не убив при этом производительность. В ванилле увеличение view distance ведёт к лагам и просадкам FPS, потому что сервер пытается обработать все чанки синхронно. BetterView делает это асинхронно, читает чанки напрямую с диска (без их полной загрузки в память) и кэширует данные. В итоге - ты видишь дальше, а сервер не страдает.

Особенности

  • Асинхронная обработка игроков в сетевых потоках
  • Чтение чанков напрямую с диска без их загрузки
  • Оптимизированное отслеживание состояния чанков и их итерация
  • Настраиваемое кэширование данных чанков для быстрого доступа
  • Ограничения на отправку и генерацию чанков (чтобы не перегружать клиент)
  • Настройки для каждого измерения отдельно
  • Работает как на выделенных серверах, так и на одиночной игре с Fabric
  • Лёгкий анти-xray для расширенных чанков

Поддерживаемое ПО

Версия MinecraftPaperFabric
26.2.x
26.1.x
1.21.11
1.21.10
1.21.9
1.21.8
1.21.7
1.21.6
1.21.5
1.21.4
1.21.3
1.21.1

На Fabric этот мод зависит от Moonrise и adventure-platform-mod.

Установка и использование

На Paper серверах просто кинь jar-файл в папку plugins и перезапусти сервер. На Fabric серверах/клиентах - в папку mods. По умолчанию BetterView настроит view distance в 32 чанка для каждого измерения.

Настройка конфига

При первом запуске плагин сам создаст конфигурационный файл. На Paper он будет лежать в plugins/BetterView/config.yml, на Fabric - betterview.yml внутри папки мира (например, world). Вот что там можно покрутить:

  • config-version: лучше не трогать
  • integrated-server-render-distance: только для одиночной игры, позволяет заменить render distance встроенного сервера (по умолчанию -1, отключено)
  • global:
    • enabled: включить/выключить весь плагин/мод (по умолчанию true)
    • chunk-generation-limit: сколько новых чанков может генерироваться за один тик глобально (по умолчанию 3)
    • chunk-send-limit: максимум чанков, отправляемых одному игроку за тик (по умолчанию 3)
  • dimensions:
    • <dimension> (например, minecraft:overworld):
      • enabled: включить/выключить для этого измерения (по умолчанию true)
      • chunk-generation-limit: сколько новых чанков генерировать за тик для этого уровня (по умолчанию 2)
      • chunk-queue-size: сколько чанков может быть в очереди на одного игрока (по умолчанию 16)
      • view-distance: максимальная расширенная дальность прорисовки для этого измерения (по умолчанию 32)
      • cache-duration: как долго держать расширенные чанки в памяти (по умолчанию PT5M, 5 минут)
        • Подстраивай под тип сервера: для статичных лобби можно дольше, для динамичных SMP - меньше, иначе после реджойна будут старые данные.
      • anti-xray:
        • Встроенная лёгкая версия анти-xray, которая не проверяет, открыт ли блок воздуху. Так что engine-mode кроме HIDE будет выглядеть так себе.
        • enabled: включить/выключить анти-xray в этом мире (по умолчанию false)
        • engine-mode: режимы: HIDE, OBFUSCATE или OBFUSCATE_LAYER (по умолчанию HIDE)
        • hidden-blocks: список блоков для скрытия/обфускации (по умолчанию все руды и базовые блоки измерений)
      • chunk-batches:
        • Пакетная отправка чанков, чтобы не перегружать клиент/интернет игрока. BetterView отправляет пачку и ждёт подтверждения, что игрок её получил, только потом шлёт следующую. Побочка: игроки с хорошим соединением, но высокой задержкой будут получать чанки медленнее. Важно: пачки могут отправляться через несколько тиков.
        • enabled: включить/выключить пакетную отправку (по умолчанию true)
        • chunks-per-batch: количество чанков в одной пачке (по умолчанию 12)
        • prepare-chunks-while-waiting: продолжать подготовку чанков, пока ждём подтверждения предыдущей пачки (по умолчанию true)
        • batch-timeout: время без отправки чанка, после которого пачка считается просроченной (по умолчанию PT5S)
        • batch-wait-timeout: таймаут, после которого BetterView автоматически помечает пачку как выполненную, даже без ответа игрока (по умолчанию PT30S)

Поиграйся с лимитами генерации и отправки чанков под свой сервер.

API для разработчиков

Maven Repository: https://repo.minceraft.dev/releases/
Maven Artifact: dev.booky.betterview:betterview-api:2.2.0
Javadoc: https://repo.minceraft.dev/javadoc/releases/dev/booky/betterview/betterview-api/2.2.0

Пример для Paper

BvManager bvManager = Bukkit.getServicesManager().load(BvManager.class);
if (bvManager == null) {
    throw new IllegalStateException("Failed to load BetterView API");
}
BvLevel overworld = bvManager.getLevel(Key.key(Key.MINECRAFT_NAMESPACE, "overworld"));
overworld.invalidateChunkCache(0, 0);
for (BvPlayer player : overworld.getPlayers()) {
    player.getExecutor().execute(() -> {
        if (!player.isActive() || player.getLevel() != overworld) return;
        if (player.getChunkLifecycle(0, 0).isOwned()) {
            player.refreshChunk(0, 0);
        }
    });
}

Пример для Fabric

BvManager bvManager = (BvManager) FabricLoader.getInstance().getObjectShare().get("betterview:api");
if (bvManager == null) {
    throw new IllegalStateException("Failed to load BetterView API");
}
BvLevel overworld = bvManager.getLevel(Key.key(Key.MINECRAFT_NAMESPACE, "overworld"));
overworld.invalidateChunkCache(0, 0);
for (BvPlayer player : overworld.getPlayers()) {
    player.getExecutor().execute(() -> {
        if (!player.isActive() || player.getLevel() != overworld) return;
        if (player.getChunkLifecycle(0, 0).isOwned()) {
            player.refreshChunk(0, 0);
        }
    });
}

API ещё в разработке, так что если есть идеи или баги - пиши в трекер.

Сборка из исходников

  1. Клонируй репозиторий (git clone https://github.com/MinceraftMC/BetterView.git)
  2. Перейди в папку (cd BetterView)
  3. Собери jar-файлы (./gradlew build на Linux/MacOS или gradlew build на Windows)

Готовые jar-файлы будут в папке build/libs.

Если хочешь протестировать изменения локально, запусти ./gradlew :paper:runServer или ./gradlew :fabric:prodServer / ./gradlew :fabric:prodClient. Это запустит локальный сервер с уже установленным плагином/модом.

Часто задаваемые вопросы

Совместимость

Minecraft: Java Edition

26.2.x26.1.x1.21.x

Поддерживаемые окружения

Сервер

Зависимости

Ссылки

Детали

Лицензия:
Опубликован:1 год назад
Обновлён:4 недели назад
Главная