- PacketEvents
- LuckPerms (optional)
- PlaceholderAPI (optional)
- Download ExtendedHorizons.jar
- Download dependencies
- Put all of them inside your
/pluginsfolder - Start your server — done
# Plugin toggles
general:
enabled: true
debug: false
# Global view distance limits and defaults
view-distance:
max-distance: 64 # Global hard cap
min-distance: 2 # Global minimum
default-distance: 16 # Default for new players
enable-fake-chunks: true # Allow sending client-only (fake) chunks
fake-chunks-start-distance: 10 # Start using fake chunks above this distance
# Throughput / pacing
performance:
max-chunks-per-tick: 5 # Per-tick cap used by sender
# Network limits
network:
max-bytes-per-second-per-player: 1048576 # 1 MB/s, 0 = unlimited
# Per-world overrides (add blocks named exactly as your world names)
worlds:
default:
enabled: true
max-distance: 64
fake-chunks-enabled: true
# Example world override (uncomment and adjust):
# world: # exact world name
# enabled: true
# max-distance: 48
# fake-chunks-enabled: true
# Fake chunks cache settings
fake-chunks:
cache-size: 64
# Database (SQLite) used for player view persistence
database:
enabled: true
file-name: "extendedhorizons"
# Integrations
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 HEX color support:
&#RRGGBB - 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 |
/eh debug |
Toggles/checks debug mode | extendedhorizons.admin |
/eh worldinfo <world> |
Displays the maximum configured for a world | extendedhorizons.admin |
/eh worldhelp |
Configuration help per world | 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_distance%— current effective distance%extendedhorizons_max_distance%— maximum allowed (world/permission dependent)%extendedhorizons_target_distance%— target distance
- Distance is managed per player, with global and per-world limits.
- Fake chunks are sent to the client when the target distance exceeds
fake-chunks-start-distanceand if enabled globally and per world. - PacketEvents is required (not included in the JAR).
- Fully compatible with Paper and Folia; Folia detection can be disabled.
./gradlew.bat clean shadowJarThe JAR is generated in build/libs/.
- Report issues and suggestions in the repository’s Issues section.
- Join our Discord: discord.gg/yA3vD2S8Zj




