delete ecs system
This commit is contained in:
158
examples/dazeReadCommand/daze.go
Normal file
158
examples/dazeReadCommand/daze.go
Normal file
@ -0,0 +1,158 @@
|
||||
// Daze could join an offline-mode server as client.
|
||||
// Just standing there and do nothing. Automatically reborn after five seconds of death.
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"io"
|
||||
"log"
|
||||
"strconv"
|
||||
|
||||
//"github.com/mattn/go-colorable"
|
||||
|
||||
"github.com/Tnze/go-mc/bot"
|
||||
"github.com/Tnze/go-mc/bot/basic"
|
||||
"github.com/Tnze/go-mc/bot/screen"
|
||||
_ "github.com/Tnze/go-mc/data/lang/zh-cn"
|
||||
"github.com/Tnze/go-mc/data/packetid"
|
||||
pk "github.com/Tnze/go-mc/net/packet"
|
||||
)
|
||||
|
||||
var address = flag.String("address", "127.0.0.1", "The server address")
|
||||
var client *bot.Client
|
||||
var player *basic.Player
|
||||
var screenManager *screen.Manager
|
||||
|
||||
func main() {
|
||||
flag.Parse()
|
||||
//log.SetOutput(colorable.NewColorableStdout())
|
||||
client = bot.NewClient()
|
||||
client.Auth.Name = "Daze"
|
||||
player = basic.NewPlayer(client, basic.DefaultSettings)
|
||||
client.Events.AddListener(bot.PacketHandler{
|
||||
ID: packetid.ClientboundCommands,
|
||||
Priority: 50,
|
||||
F: onCommands,
|
||||
})
|
||||
|
||||
//Login
|
||||
err := client.JoinServer(*address)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
log.Println("Login success")
|
||||
|
||||
//JoinGame
|
||||
for {
|
||||
if err = client.HandleGame(); err == nil {
|
||||
panic("HandleGame never return nil")
|
||||
}
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func onCommands(p pk.Packet) error {
|
||||
var nodes []Node
|
||||
var root pk.VarInt
|
||||
err := p.Scan(pk.Array(&nodes), &root)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
log.Printf("Root index: %d", root)
|
||||
return nil
|
||||
}
|
||||
|
||||
type Node struct {
|
||||
}
|
||||
|
||||
func (n Node) ReadFrom(r io.Reader) (int64, error) {
|
||||
var Flags pk.Byte
|
||||
var Children []pk.VarInt
|
||||
var Redirect pk.VarInt
|
||||
var Name pk.String
|
||||
var Parser pk.Identifier
|
||||
var Properties = Prop{Type: &Parser}
|
||||
var SuggestionsType pk.Identifier
|
||||
m, err := pk.Tuple{
|
||||
&Flags,
|
||||
pk.Array(&Children),
|
||||
pk.Opt{
|
||||
Has: func() bool { return Flags&0x08 != 0 },
|
||||
Field: &Redirect,
|
||||
},
|
||||
pk.Opt{
|
||||
Has: func() bool { return Flags&0x03 == 2 || Flags&0x03 == 1 },
|
||||
Field: &Name,
|
||||
},
|
||||
pk.Opt{
|
||||
Has: func() bool { return Flags&0x03 == 2 },
|
||||
Field: pk.Tuple{&Parser, &Properties},
|
||||
},
|
||||
pk.Opt{
|
||||
Has: func() bool { return Flags&0x10 != 0 },
|
||||
Field: &SuggestionsType,
|
||||
},
|
||||
}.ReadFrom(r)
|
||||
if err != nil {
|
||||
return m, err
|
||||
}
|
||||
var redirect string
|
||||
if Flags&0x08 != 0 {
|
||||
redirect = "Redirect: " + strconv.Itoa(int(Redirect))
|
||||
}
|
||||
var parser string
|
||||
if Flags&0x03 == 2 {
|
||||
redirect = string("Parser: " + Parser)
|
||||
}
|
||||
log.Printf("Type: %2d\tName: %s\tChildren: %v\t%v\t%v", Flags&0x03, Name, Children, redirect, parser)
|
||||
|
||||
return m, nil
|
||||
}
|
||||
|
||||
type Prop struct {
|
||||
Type *pk.Identifier
|
||||
}
|
||||
|
||||
func (p Prop) ReadFrom(r io.Reader) (int64, error) {
|
||||
var Flags pk.Byte
|
||||
switch *p.Type {
|
||||
case "brigadier:double":
|
||||
var Min, Max pk.Double
|
||||
return pk.Tuple{
|
||||
&Flags,
|
||||
pk.Opt{Has: func() bool { return Flags&0x01 != 0 }, Field: &Min},
|
||||
pk.Opt{Has: func() bool { return Flags&0x02 != 0 }, Field: &Max},
|
||||
}.ReadFrom(r)
|
||||
case "brigadier:float":
|
||||
var Min, Max pk.Float
|
||||
return pk.Tuple{
|
||||
&Flags,
|
||||
pk.Opt{Has: func() bool { return Flags&0x01 != 0 }, Field: &Min},
|
||||
pk.Opt{Has: func() bool { return Flags&0x02 != 0 }, Field: &Max},
|
||||
}.ReadFrom(r)
|
||||
case "brigadier:integer":
|
||||
var Min, Max pk.Int
|
||||
return pk.Tuple{
|
||||
&Flags,
|
||||
pk.Opt{Has: func() bool { return Flags&0x01 != 0 }, Field: &Min},
|
||||
pk.Opt{Has: func() bool { return Flags&0x02 != 0 }, Field: &Max},
|
||||
}.ReadFrom(r)
|
||||
case "brigadier:long":
|
||||
var Min, Max pk.Long
|
||||
return pk.Tuple{
|
||||
&Flags,
|
||||
pk.Opt{Has: func() bool { return Flags&0x01 != 0 }, Field: &Min},
|
||||
pk.Opt{Has: func() bool { return Flags&0x02 != 0 }, Field: &Max},
|
||||
}.ReadFrom(r)
|
||||
case "brigadier:string":
|
||||
return new(pk.VarInt).ReadFrom(r)
|
||||
case "minecraft:entity":
|
||||
return new(pk.Byte).ReadFrom(r)
|
||||
case "minecraft:score_holder":
|
||||
return new(pk.Byte).ReadFrom(r)
|
||||
case "minecraft:range":
|
||||
return new(pk.Boolean).ReadFrom(r)
|
||||
default:
|
||||
return 0, nil
|
||||
}
|
||||
}
|
@ -4,8 +4,6 @@ import (
|
||||
"context"
|
||||
_ "embed"
|
||||
"flag"
|
||||
"github.com/Tnze/go-mc/server/ecs"
|
||||
"github.com/Tnze/go-mc/server/world"
|
||||
"image"
|
||||
_ "image/png"
|
||||
"log"
|
||||
@ -14,7 +12,6 @@ import (
|
||||
"github.com/Tnze/go-mc/chat"
|
||||
"github.com/Tnze/go-mc/server"
|
||||
"github.com/Tnze/go-mc/server/command"
|
||||
"github.com/Tnze/go-mc/server/player"
|
||||
)
|
||||
|
||||
var motd = chat.Message{Text: "A Minecraft Server ", Extra: []chat.Message{{Text: "Powered by go-mc", Color: "yellow"}}}
|
||||
@ -57,13 +54,6 @@ func main() {
|
||||
keepAlive,
|
||||
commands,
|
||||
)
|
||||
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, *playerdataPath)
|
||||
player.PosAndRotSystem(game)
|
||||
go game.Run(context.Background())
|
||||
|
||||
s := server.Server{
|
||||
|
Reference in New Issue
Block a user