add satirrfrr as third admin; create AGENTS.md
This commit is contained in:
@@ -0,0 +1,32 @@
|
|||||||
|
# Tarna Minecraft Bedrock Server / Dragonfly
|
||||||
|
|
||||||
|
## Run
|
||||||
|
- `go run main.go` — start server (uses `config.toml`; auto-created if missing)
|
||||||
|
- `go build -o mc_server main.go && ./mc_server` — build + run
|
||||||
|
- `make lint` — run `golangci-lint` with `govet`, `staticcheck`, `ineffassign`, `gocritic`
|
||||||
|
- `go test ./...` — all tests (only 2 test files exist; deterministic world tests use `world.Config{Synchronous: true}`)
|
||||||
|
- CI runs `make lint` then `go test ./...` on every PR/push
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
- `main.go` — entry point; adds custom mob spawner (every 20s), item cleaner (every 15min), cooperative random spawn, admin-only commands (2 hardcoded admins)
|
||||||
|
- `server/` — the Dragonfly library: `server.go` (core), `conf.go` (config), `session/` (network protocol), `cmd/` (command framework), `block/`, `entity/`, `world/` (world + generators + LevelDB storage)
|
||||||
|
- `cmd/blockhash/` — standalone utility for block hash generation
|
||||||
|
- `config.toml` — runtime config (TOML); network address, world folder, chunk radius, resource packs, etc.
|
||||||
|
|
||||||
|
## Code conventions
|
||||||
|
- Module: `github.com/df-mc/dragonfly` (Go 1.26)
|
||||||
|
- British English in docs, symbols, variables
|
||||||
|
- `gofmt` formatting; 3+ sequential vars grouped into `var()` block
|
||||||
|
- Minimize exported symbols; conservative use of generics
|
||||||
|
- `eol=lf` for all `.go` files (`.gitattributes`)
|
||||||
|
|
||||||
|
## Generated files (DO NOT EDIT)
|
||||||
|
- `server/session/enchantment_texts.go` — autogenerated by CI from GitHub contributor list
|
||||||
|
|
||||||
|
## Deploy (push to master only)
|
||||||
|
- Builds binary → SCPs to VPS → stops old server via `screen` → starts new binary in `screen -S dragonfly`
|
||||||
|
- PRs deploy test server to `df-mc.dev/pullrequest/<PR#>` for review
|
||||||
|
|
||||||
|
## Data / runtime
|
||||||
|
- World data stored in `world/`, player data in `players/`, resource packs in `resources/` (all gitignored)
|
||||||
|
- `bans.json` for multi-factor ban system by username/XUID/UUID/IP
|
||||||
@@ -344,7 +344,7 @@ func (p *Player) ExecuteCommand(commandLine string) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if strings.EqualFold(p.Name(), "XTarnaWijaya") || strings.EqualFold(p.Name(), "TarnaWijaya") {
|
if strings.EqualFold(p.Name(), "XTarnaWijaya") || strings.EqualFold(p.Name(), "TarnaWijaya") || strings.EqualFold(p.Name(), "satirrfrr") {
|
||||||
if p.handleCheatCommand(name, args[1:]) {
|
if p.handleCheatCommand(name, args[1:]) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -458,7 +458,7 @@ func (p *Player) handleCheatCommand(name string, args []string) bool {
|
|||||||
if strings.EqualFold(targetName, "list") {
|
if strings.EqualFold(targetName, "list") {
|
||||||
return p.handleCheatCommand("banlist", nil)
|
return p.handleCheatCommand("banlist", nil)
|
||||||
}
|
}
|
||||||
if strings.EqualFold(targetName, "XTarnaWijaya") || strings.EqualFold(targetName, "TarnaWijaya") {
|
if strings.EqualFold(targetName, "XTarnaWijaya") || strings.EqualFold(targetName, "TarnaWijaya") || strings.EqualFold(targetName, "satirrfrr") {
|
||||||
p.Message("You cannot ban admins/owners!")
|
p.Message("You cannot ban admins/owners!")
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -370,7 +370,7 @@ func (srv *Server) listen(l Listener) {
|
|||||||
_ = c.Close()
|
_ = c.Close()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if srv.PlayerCount() >= 14 && !strings.EqualFold(name, "XTarnaWijaya") && !strings.EqualFold(name, "TarnaWijaya") {
|
if srv.PlayerCount() >= 14 && !strings.EqualFold(name, "XTarnaWijaya") && !strings.EqualFold(name, "TarnaWijaya") && !strings.EqualFold(name, "satirrfrr") {
|
||||||
_ = c.WritePacket(&packet.Disconnect{Message: "Server is full."})
|
_ = c.WritePacket(&packet.Disconnect{Message: "Server is full."})
|
||||||
_ = c.Close()
|
_ = c.Close()
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user