Skip to content

A-Morgoth/ChronosMP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 

Repository files navigation

ChronosMP_icon_256

ChronosMP

Server-authoritative time-of-day synchronization for BeamMP.


What it is

ChronosMP keeps the in-game time of day in lockstep across every player on a BeamMP server. One authoritative clock runs on the server and broadcasts to clients, so everyone shares the same sunrise, sunset, and night — no drift, no per-player desync. It's a lightweight, drop-in plugin with no dependencies on any other mod.

What it does

  • Authoritative master clock. The server owns the time; clients follow it and resync on a fixed interval and whenever the day/night phase flips.
  • Independent day and night lengths. Daytime and nighttime each run on their own real-second duration, so you can have long days and short nights (or the reverse).
  • Configurable sunrise/sunset. Define when day and night begin; the broadcast rate switches the instant a phase boundary is crossed.
  • Time control. Set the time, read the current time, freeze and unfreeze the clock, and force a manual resync.
  • Optional voting. Above a configurable player count, time changes go to a simple-majority vote instead of applying instantly; below it, they apply immediately.
  • Full server-console interface. Host-only console commands that never require a vote.
  • Console-only mode. A single switch locks the mod to the server console and ignores all chat commands.

Commands

In-game chat (available to any player)

Command Aliases What it does
/chronos /chr, /tm Show the help list
/chronos HH:MM or /chronos HH /chr, /tm Set the time (24-hour; HH is 00–23). Applies instantly, or opens a vote past the threshold
/chronos sync /tms Resync everyone to the server's time
/clock Show the current server time
/chr-ice Freeze time
/chr-thaw Unfreeze time
/chr-yes Vote yes on a pending change
/chr-no Vote no, or (if you proposed it) cancel it

Server console (host only)

Command What it does
chronos Show the console help list
chronos-sync Resync everyone to the server's time
chronos-settime HH:MM or chronos-settime HH Set the time — never goes to a vote
chronos-freeze Freeze time
chronos-unfreeze Unfreeze time
chronos-reload Reload config.lua live, without restarting the server

Console commands always work, even with console_only enabled, and never trigger a vote.

Installation

ChronosMP has two halves — a client mod that BeamMP distributes to players, and a server plugin that runs the clock.

  1. Client mod — place ChronosMP.zip in your server's Resources/Client/ folder.
  2. Server plugin — create the folder Resources/Server/ChronosMP/ and place main.lua and config.lua inside it.
  3. (Optional) Configure — edit Resources/Server/ChronosMP/config.lua to taste (see below).
  4. Restart the BeamMP server. Players reconnect normally; BeamMP sends the client mod automatically on join.

Your Resources/ tree should look like this:

Resources/
├── Client/
│   └── ChronosMP.zip
└── Server/
    └── ChronosMP/
        ├── main.lua
        └── config.lua

Configuration

All tunables live in config.lua:

Setting Default Meaning
syncInterval 30 Seconds between authoritative broadcasts
dayLength 1800 Daytime length, in real seconds
nightLength 600 Nighttime length, in real seconds
sunriseHour 6 In-game hour daytime begins (0–24)
sunsetHour 19 In-game hour nighttime begins (0–24)
startTime 0.0 Starting time as a fraction; 0.0 = noon, 0.5 = midnight
timeFrozen false Start with the clock frozen
voteEnabled true Whether time changes can go to a vote
voteThreshold 2 Above this many connected players, changes go to a vote
voteDuration 60 Seconds a vote stays open before it expires
console_only false If true, only the server console is accepted; all chat commands are ignored

How voting works

When voteEnabled is false, or the number of connected players is at or below voteThreshold, a requested change applies instantly. Above the threshold, the change opens a vote: it needs a simple majority of currently-connected players, the proposer's request counts as a yes, and the vote expires after voteDuration seconds if it doesn't pass. Console commands bypass voting entirely.

Requirements

  • A BeamMP server. Singleplayer is not tested nor a focus.
  • No other mods or plugins required.

License

GPL-3.0. ChronosMP is free and open source, and is intended to stay that way.

Disclosure

This mod and repo was built with collaborative assistance from Claude AI.

About

Server-authoritative time-of-day sync for BeamMP. Independent day/night lengths, instant-or-vote time changes, freeze/unfreeze, full server-console control. Drop-in, no dependencies.

Topics

Resources

License

Stars

Watchers

Forks

Contributors