From 691e507fcfa3f3f1e8fc14942afb2d2593402b3d Mon Sep 17 00:00:00 2001 From: Tnze Date: Fri, 27 May 2022 00:59:18 +0800 Subject: [PATCH] load dimension example --- examples/frameworkServer/main.go | 7 ++++++- server/player/player.go | 2 -- server/world/world.go | 12 ++++++++++++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/examples/frameworkServer/main.go b/examples/frameworkServer/main.go index 52945f4..f91cdf7 100644 --- a/examples/frameworkServer/main.go +++ b/examples/frameworkServer/main.go @@ -4,6 +4,7 @@ import ( "context" _ "embed" "flag" + "github.com/Tnze/go-mc/server/ecs" "github.com/Tnze/go-mc/server/world" "image" _ "image/png" @@ -57,7 +58,11 @@ func main() { keepAlive, commands, ) - world.NewDimensionManager(game) + ecs.Register[world.Dimension, *ecs.HashMapStorage[world.Dimension]](game.World) + dimList := world.NewDimensionManager(game) + dimList.Add(game.CreateEntity(world.NewDimension( + "minecraft:overworld", *regionPath, + )), "minecraft:overworld") player.SpawnSystem(game, "./save/testdata/playerdata") player.PosAndRotSystem(game) go game.Run(context.Background()) diff --git a/server/player/player.go b/server/player/player.go index bd1fb94..3136b47 100644 --- a/server/player/player.go +++ b/server/player/player.go @@ -7,7 +7,6 @@ import ( "github.com/Tnze/go-mc/server" "github.com/Tnze/go-mc/server/ecs" "github.com/Tnze/go-mc/server/world" - "log" ) type PlayerProfile struct { @@ -31,7 +30,6 @@ func (p playerSpawnSystem) Update(w *ecs.World) { client.PutErr(fmt.Errorf("read player data fail: %w", err)) return } - log.Println("load player info successes", profile) dim, ok := dimensionRes.Find(profile.Dimension) if !ok { panic("dimension " + profile.Dimension + " not found") diff --git a/server/world/world.go b/server/world/world.go index 059f2e9..45c690f 100644 --- a/server/world/world.go +++ b/server/world/world.go @@ -22,6 +22,13 @@ type Dimension struct { Name string } +func NewDimension(name, path string) Dimension { + return Dimension{ + Name: name, + storage: storage{regionDir: path}, + } +} + type DimensionList struct { Dims []ecs.Index DimNames []string @@ -41,6 +48,11 @@ func (d *DimensionList) Find(dim string) (ecs.Index, bool) { return 0, false } +func (d *DimensionList) Add(id ecs.Index, name string) { + d.Dims = append(d.Dims, id) + d.DimNames = append(d.DimNames, name) +} + func NewDimensionManager(g *server.Game) *DimensionList { return ecs.SetResource(g.World, DimensionList{ Dims: nil,