- Go 92.9%
- TypeScript 4.4%
- Lua 2.3%
- Shell 0.2%
- PowerShell 0.2%
| .forgejo | ||
| commands | ||
| core | ||
| extra | ||
| mcg | ||
| plugins | ||
| types | ||
| .gitignore | ||
| config.example.toml | ||
| go.mod | ||
| go.sum | ||
| main.go | ||
| README.md | ||
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
-
A lua plugin system supporting most features of the server, with documentation in .lua-stubs.lua
-
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)
-
Discord & IRC bridges
-
Comprehensive configuration format for plugins, the blockdb, server, heartbeats, et cetera in a single config.toml file.
-
[WIP, very slow at the moment (500mb = 30~ minutes)] Tool for migrating from MCG blockDB/playerDB
-
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
-
Websocket/Web access from classicube.net