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

BetterStructures-FAWE

Based on the improved branch of MagmaGuy/BetterStructures, made deep adaptations and performance optimizations for Paper + FastAsyncWorldEdit (FAWE).

125
2

BetterStructures-FAWE

中文

A performance-focused fork of MagmaGuy/BetterStructures, deeply adapted for the Paper + FastAsyncWorldEdit (FAWE) + Terra ecosystem.

Original plugin: GitHub | Modrinth


Key Differences from Upstream

1. FAWE Async Pasting (Zero Main-Thread Blocking)

The original plugin uses WorkloadRunnable to place blocks on the main thread in frame-split batches, which still causes TPS drops for large structures. This fork migrates all block pasting to FAWE asynchronous EditSession:

  • Normal blocks, NBT blocks (spawners, dispensers, etc.), and bedrock replacement are all handled on FAWE async threads
  • The WorkloadRunnable frame-splitting system and NMS fast paths have been removed
  • Entity spawning and chest filling are deferred back to the main thread after FAWE completes
  • The percentageOfTickUsedForPasting config option is now obsolete

Dependency change: Hard dependency changed from WorldEdit to FastAsyncWorldEdit. The plugin will automatically disable itself if FAWE is not detected on startup.

2. Terra / FAWE Compatibility

Resolves chunk state issues when using async world generators like Terra with FAWE:

  • Added ChunkValidationUtil: samples multiple positions to detect whether a chunk is fully generated, preventing structures from being placed on empty chunks
  • Uses Paper API getChunkAtAsync for async chunk loading, with PluginChunkTicket to keep chunks loaded during pasting
  • All world block access operations ensure chunks are loaded into memory first

3. PersistentDataContainer Chunk Marking

The original plugin relies on ChunkLoadEvent.isNewChunk() to identify new chunks, but after a server restart, previously generated but unmarked chunks get scanned again. This fork uses Bukkit PersistentDataContainer to persistently mark chunks:

  • Processed chunks are tagged with betterstructures:chunk_processed
  • No duplicate scanning of already-processed chunks after restart

4. Structure Location Persistence

Added StructureLocationManager and StructureLocationData to persist all generated structure locations to YAML files:

  • Each world is stored independently under structure_locations/
  • Records structure coordinates, type, schematic name, and bounding box dimensions
  • In-memory cache with automatic dirty-data saving every minute
  • Provides the data foundation for the mob tracking system

5. Mob Tracking & Respawn System

Added MobTrackingManager and MobSpawnConfig for tracking and respawning mobs within structures:

  • Records mob spawn configurations (position, type) for each structure
  • Supports Vanilla / EliteMobs / MythicMobs mob types
  • Spatial index (world-chunk) for fast nearby structure lookups
  • Triggers mob respawn checks when players approach
  • Fires StructureClearedEvent when all mobs in a structure are killed

6. Chinese Localization

All user-facing logs, command feedback, and menu text have been translated to Chinese across 27 files.


Requirements

ComponentRequirement
Minecraft1.14+ (1.21+ recommended)
ServerPaper (or forks like Purpur)
Java21+
FastAsyncWorldEditRequired (vanilla WorldEdit is not supported)

Optional Dependencies

  • EliteMobs - Custom bosses
  • MythicMobs - Custom mobs
  • WorldGuard - Region protection
  • Terra / Terralith / Iris / TerraformGenerator - Custom world generation

License

GPL-3.0, same as upstream.

Credits

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

Minecraft: Java Edition

1.21.x1.20.x

Платформы

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

Сервер

Создатели

Детали

Лицензия:GPL-3.0-or-later
Опубликован:2 месяца назад
Обновлён:1 месяц назад
Главная