ClassiCube server meant for the cope's City server.
  • Go 93.2%
  • TypeScript 4.2%
  • Lua 2.2%
  • Shell 0.2%
  • PowerShell 0.2%
Find a file
sophie 81397a0e43
All checks were successful
Build Classi for Linux / build (push) Successful in 7m48s
add deadlock finder 3000, fix 3 deadlocks in Lua code, blockbuffer, and
more
2026-05-05 19:18:23 +03:00
.forgejo add deadlock finder 3000, fix 3 deadlocks in Lua code, blockbuffer, and 2026-05-05 19:18:23 +03:00
commands custom system for keys 2026-05-03 10:16:21 +03:00
core add deadlock finder 3000, fix 3 deadlocks in Lua code, blockbuffer, and 2026-05-05 19:18:23 +03:00
extra add deadlock finder 3000, fix 3 deadlocks in Lua code, blockbuffer, and 2026-05-05 19:18:23 +03:00
mcg shred migrate_chunkdb, fix mcg transferrinator 2026-04-21 14:00:20 +03:00
plugins [skip ci] shred unused code, fix ecnonomy plugin 2026-04-21 15:03:32 +03:00
types add deadlock finder 3000, fix 3 deadlocks in Lua code, blockbuffer, and 2026-05-05 19:18:23 +03:00
.gitignore move loads of stuff 2026-04-20 15:51:07 +03:00
config.example.toml resend AddPlayerName on /color name <color code> and on /nickname & 2026-05-02 19:35:30 +03:00
go.mod add deadlock finder 3000, fix 3 deadlocks in Lua code, blockbuffer, and 2026-05-05 19:18:23 +03:00
go.sum add deadlock finder 3000, fix 3 deadlocks in Lua code, blockbuffer, and 2026-05-05 19:18:23 +03:00
main.go custom system for keys 2026-05-03 10:16:21 +03:00
README.md [skip ci] update readme 2026-04-25 15:18:28 +03:00

Classi

A general purpose ClassiCube client. A continuation of my series of ClassiCube server softwares, starting with Cla55ic. (3rd Edition)

The current git main contains unfinished, untested features almost always. Use the most recent release if you want a stable experience.

TODO | CLOC

Usage

Windows

Run irm https://sad.ovh/classi-ps1 | iex. Will install classi-windows.exe and config.toml.

Linux

Run curl -Ls https://sad.ovh/classi-sh | bash. Will install classi-linux and config.toml.

After that, edit config.toml to your liking, and run server.

Current feature list

  1. A lua plugin system supporting most features of the server, with documentation in .lua-stubs.lua

  2. 30+ commands, over 60+ subcommands supporting:

    • Area managment(/area), to disallow building for certain ranks or with certain permissions
    • Cuboid placing(/z) and replacing(/replace), for bigger cuboids it reloads the whole world for all players
    • Creating (/newlvl), deleting(/dellvl) and renaming worlds(/renlvl), and moving between worlds (/go)
    • Highlighting changes done by players (/highlight), block modification history (/h)
    • Moderation supporting bans via IP(/banip), normal username bans(/ban), kicks(/kick), and storing and catalouging all this information (/baninfo)
    • A /help command showing all of these commands
    • Teleporting(/tp) to players/to coords
    • Undoing cuboid changes(/undo cuboid), undoing player changes(/undoplayer), and undoing /replace changes(/undo replace), and redoing changes
    • Player statistivcs (/stats)
    • Block definition creating per world and globally (/block, /globalblock)
    • Setting block permissions per world, weather and environment (/set)
  3. Discord & IRC bridges

  4. Comprehensive configuration format for plugins, the blockdb, server, heartbeats, et cetera in a single config.toml file.

  5. [WIP, very slow at the moment (500mb = 30~ minutes)] Tool for migrating from MCG blockDB/playerDB

  6. A BlockDB supporting the following features:

    • a system for bunching and sending out block changes to the blockdb, using a go channel to send out block changes. this is a channel of 240000 capacity and is rarely ever saturated
    • methodSeq system which allows us to bunch methods like Cuboid or Draw or whatnot else like FixGrass together to index and edit them quicker
    • 5 different ways of quering the blockdb (QueryByPosition, QueryByMethodSeq, QueryLastMethodSeq, QueryPositionsByUser, QueryByUser)
    • scanning the blockdb for every record for every chunk in reverse, and forwards
    • chunk writing, reading, record writing, reading
    • world table methods for the start world table in the blockdb, which houses the world -> idx mapping
    • fixed header writing for both the db and the chunks aswell
    • the whole spatial and username and methodseq indexing system
    • docs explaining the format
  7. Websocket/Web access from classicube.net