summaryrefslogtreecommitdiff
path: root/server/server.go
diff options
context:
space:
mode:
authorraven <citrons@mondecitronne.com>2026-03-21 16:17:22 -0500
committerraven <citrons@mondecitronne.com>2026-03-21 16:17:22 -0500
commit9e4b5390e83a46a99faf28884c0817738beeb605 (patch)
tree0282fd60206384415602cfcaec1ace98fa7fdf95 /server/server.go
parentf29c5d9c8a25d1271b51203f0a481fc33f08d564 (diff)
/createLevel command
Diffstat (limited to 'server/server.go')
-rw-r--r--server/server.go27
1 files changed, 19 insertions, 8 deletions
diff --git a/server/server.go b/server/server.go
index c3e1c6b..c549122 100644
--- a/server/server.go
+++ b/server/server.go
@@ -31,6 +31,7 @@ type Server struct {
}
type worldState struct {
+ LastId levelId
SpawnLevel levelId
SpawnPos entityPos
}
@@ -46,16 +47,17 @@ func NewServer(info ServerInfo) *Server {
err := os.Mkdir("world", 0777)
dataManager.errHand = s
if err == nil {
- spawnLevel := s.newLevel(levelInfo {
- Id: 0,
- Size: blockPos {X: 256, Y: 256, Z: 256},
+ s.LastId = -1
+ var spawnLevel *level
+ s.SpawnLevel, spawnLevel = s.newLevel(levelInfo {
+ Size: blockPos {X: 64, Y: 64, Z: 64},
IsSpawn: true,
})
spawnLevel.generateFlat()
s.SpawnPos = entityPos {
- 128*blockSize,
- 128*blockSize + playerHeight,
- 128*blockSize,
+ 32*blockSize,
+ 32*blockSize + playerHeight,
+ 32*blockSize,
}
} else {
loaded := make(chan worldState, 1)
@@ -205,10 +207,19 @@ func (s *Server) OnSaveError(from phony.Actor, err error) {
func (s *Server) Tick() {
}
-func (s *Server) newLevel(info levelInfo) *level {
+func (s *Server) newLevel(info levelInfo) (levelId, *level) {
+ s.LastId++
+ for {
+ _, err := os.Stat(fmt.Sprintf("world/levels/%d.bin", s.LastId))
+ if err != nil {
+ break
+ }
+ s.LastId++
+ }
+ info.Id = s.LastId
l := newLevel(s, info)
s.levels[info.Id] = l
- return l
+ return s.LastId, l
}
func (s *Server) newPlayer(cl *client, name string) *player {