RpImmersion is a server and client-side companion mod for RpEssentials, designed for immersive Roleplay servers running Minecraft 1.21.1 on NeoForge. It gives server administrators fine-grained control over the atmosphere experienced by players — fog, camera effects, weather immersion, and a fully custom RP calendar — all configurable in real-time without restarts.
Current version: 0.0.2
Please note that the fog provided by the mod isn't functional with shaders because of technical limitation that I can't handle!
| Dependency | Version | Side | Required |
|---|---|---|---|
| Minecraft | 1.21.1 | Both | ✅ |
| NeoForge | 21.1.219+ | Both | ✅ |
| RpEssentials | 4.1.7+ | Both | ✅ |
| ImmersiveMessages | neoforge-1.21.1:1.0.18 | Client | ⬜ Optional |
| TxniLib | neoforge-1.21.1-1.0.24 | Client | ⬜ Optional |
ImmersiveMessages and TxniLib are only required on the client if you use
weatherMessageMode = IMMERSIVEorscheduleDeathHoursNotifyMode = IMMERSIVE. The server runs fine without them, and clients without them will gracefully fall back to action bar display.
Server-controlled fog fully replaces vanilla fog for players when active. Everything is configured in rpimmersion-fog.toml.
minecraft:*, *:dark_*).dayPreset and nightPreset. Transitions are animated.Enhances Minecraft's weather system with atmosphere and control. Configured in rpimmersion-weather.toml.
A fully persistent, server-driven roleplay calendar. Configured in rpimmersion-calendar.toml.
ticksPerRpMinute × rpMinutesPerHour × rpHoursPerDay gives you full control.world/data/rpimmersion/calendar.json. The calendar survives server restarts.{day}, {dayName}, {month}, {monthName}, {year}, {hour}, {minute} placeholders.All commands require staff permission (as defined by RpEssentials).
| Command | Description |
|---|---|
/rpimmersion fog set global <preset|clear> |
Apply a fog preset to all players, or clear the global override. |
/rpimmersion fog set player <player> <preset|clear> |
Apply a fog preset to one player specifically. |
/rpimmersion fog clear global |
Remove the global fog override. |
/rpimmersion fog clear player <player> |
Remove the per-player fog override. |
/rpimmersion fog list |
List all loaded fog presets with their parameters. |
/rpimmersion fog status |
Display the current fog state (global override, world border, zone and biome counts). |
/rpimmersion fog reload |
Reload fog config from disk and re-sync all players. |
| Command | Description |
|---|---|
/rpimmersion weather set <CLEAR|RAIN|THUNDER> |
Force a specific weather state on the server. |
/rpimmersion weather status |
Show the current weather and active fog preset. |
/rpimmersion weather reload |
Reload weather config from disk. |
| Command | Description |
|---|---|
/rpimmersion calendar status |
Display the current RP date, time, and pause state. |
/rpimmersion calendar pause <true|false> |
Pause or resume the calendar. |
/rpimmersion calendar set <year> <month> <day> [hour] [minute] |
Set the calendar to a specific date and time. |
/rpimmersion calendar advance <minutes> |
Advance (or rewind if negative) the calendar by N RP minutes. |
/rpimmersion calendar reload |
Force a sync of the current date to all connected players. |
Three server-side config files are generated automatically under config/rpimmersion/ on first launch. One client-side config is generated in the standard NeoForge client config location.
| File | Contents |
|---|---|
rpimmersion-fog.toml |
Presets, zones, biomes, RpEssentials overrides, world border fog, day/night settings, optimization |
rpimmersion-weather.toml |
Weather fog mapping, lightning frequency & shake, auto cycle, narrative messages |
rpimmersion-calendar.toml |
Month/day structure, time ratio, start date, display format |
rpimmersion-client.toml |
Client-side shake intensity override, fog disable toggle |
All server configs support live reload via /rpimmersion fog reload, /rpimmersion weather reload, and /rpimmersion calendar reload. No server restart required.
# name;red;green;blue;start;end;transitionSeconds
presets = [
"night_fog;0.05;0.05;0.1;5.0;30.0;3.0",
"morning_mist;0.7;0.75;0.8;2.0;20.0;5.0",
"border_void;0.0;0.0;0.0;1.0;8.0;2.0"
]
# zoneName;centerX;centerZ;radius;preset;priority[;dayPreset;nightPreset]
zones = [
"dark_woods;100;-200;80;cursed_forest;10;morning_mist;night_fog"
]
# weatherType;fogPreset
weatherFogPresets = [
"RAIN;morning_mist",
"THUNDER;purge"
]
monthNames = ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin",
"Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"]
daysPerMonth = [30] # A single value applies to all months
dayNames = ["Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"]
dateFormat = "§7{dayName} {day} {monthName}, An {year} — {hour}h{minute}"
| File | Contents |
|---|---|
world/data/rpimmersion/calendar.json |
Current RP date and pause state |
required in the mod metadata but never hard-linked at compile time beyond isStaff().