- PacketEvents
- LuckPerms (optional)
- PlaceholderAPI (optional)
- Download ExtendedHorizons.jar
- Download dependencies
- Put all of them inside your
/pluginsfolder - Start your server — done
# Global view distance limits and defaults
# Note: The minimum distance is automatically set to the server's view-distance from server.properties
view-distance:
max-distance: 64
default-distance: 32
# Per-world settings (optional)
# If a world is not listed here, it will use the global settings above
# You can configure each world independently
world-settings:
# Example: Limit view distance in the Nether
# world_nether:
# enabled: true # Enable/disable fake chunks for this world
# max-distance: 32 # Maximum view distance for this world
# Example: Disable fake chunks in the End
# world_the_end:
# enabled: false
# max-distance: 64
# Performance settings
performance:
# Maximum chunks to load per tick (for async loading)
max-chunks-per-tick: 20
# Number of threads for parallel chunk processing (0 = auto-detect based on CPU cores)
# Recommended: 0 (auto) or 4-8 for most servers
chunk-processor-threads: 0
# Fake chunks system (packets cache)
fake-chunks:
# Enable packet cache system
enabled: true
# Maximum cached packets (5000 = ~150MB)
max-cached-packets: 5000
# Enable GZIP compression for packets (slower but saves RAM)
use-compression: false
# Cache cleanup interval in seconds
cache-cleanup-interval: 20
# Enable NMS chunk memory cache (reuses loaded chunks, saves CPU but uses RAM)
# Recommended: true for <50 players, false for >100 players or low RAM servers
enable-memory-cache: true
# Maximum chunks to cache in memory (1000 = ~40-80MB depending on chunk complexity)
# Increase for more players in same area, decrease for dispersed players or low RAM
max-memory-cache-size: 1000
# Database (SQLite) used for player view persistence
database:
enabled: true
file-name: "extendedhorizons"
integrations:
placeholderapi:
enabled: true
luckperms:
enabled: true
check-interval: 60 # seconds
use-group-permissions: true
# Message toggles (actual texts live in messages.yml)
messages:
welcome-message:
enabled: true- All texts are in messages.yml, with MiniMessage support.
- The welcome message is controlled by
messages.welcome-message.enabledin config.yml, and its text is in messages.yml.
Alias base: /eh (also: extendedhorizons, horizons, viewdistance, vd)
| Command | Description | Permission |
|---|---|---|
/eh help |
General help | extendedhorizons.use |
/eh info |
Plugin information and your current distance | extendedhorizons.use |
/eh view |
Shows your current distance | extendedhorizons.use |
/eh setme <distance> |
Sets your distance | extendedhorizons.use |
/eh reset |
Resets your distance to default | extendedhorizons.use |
/eh check <player> |
Checks another player's distance | extendedhorizons.admin |
/eh setplayer <player> <distance> |
Sets another player's distance | extendedhorizons.admin |
/eh resetplayer <player> |
Resets another player's distance | extendedhorizons.admin |
/eh reload |
Reloads settings | extendedhorizons.admin |
/eh stats |
Displays statistics | extendedhorizons.admin |
extendedhorizons.use— player commandsextendedhorizons.admin— admin commandsextendedhorizons.bypass.limits— ignores boundaries when setting distances
If integrations.luckperms.enabled is true, the plugin will check limits per group/player.
You can combine it with use-group-permissions and your group policies.
%extendedhorizons_view_distance%— current effective distance
- Distance is managed per player with global limits configured in
config.yml - Dual chunk system:
- Real chunks (within server view-distance): Managed naturally by the server
- Fake chunks (beyond server view-distance): Sent via packet cache when
fake-chunks.enabled: true
- The server's view-distance (from
server.properties) acts as the boundary between real and fake chunks - All chunk processing is done 100% asynchronously to maintain server performance
- LRU cache system automatically manages memory with configurable limits
- PacketEvents is required
- Fully compatible with Paper 1.21+
- Report issues and suggestions in the repository’s Issues section.
- Join our Discord: discord.gg/yA3vD2S8Zj




