delete ecs system

This commit is contained in:
Tnze
2022-06-16 15:46:30 +08:00
parent b4fe78edf7
commit 7c80f1e7c0
21 changed files with 166 additions and 1014 deletions

View 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
}
}