small fixes
This commit is contained in:
parent
2e920a7bf0
commit
7726c707c6
2
go.mod
2
go.mod
|
@ -6,7 +6,7 @@ go 1.20
|
|||
replace github.com/sandertv/gophertunnel => github.com/olebeck/gophertunnel v1.28.1-1
|
||||
|
||||
//replace github.com/df-mc/dragonfly => ./dragonfly
|
||||
replace github.com/df-mc/dragonfly => github.com/olebeck/dragonfly v0.9.4-7
|
||||
replace github.com/df-mc/dragonfly => github.com/olebeck/dragonfly v0.9.4-9
|
||||
|
||||
//replace gioui.org => ./gio
|
||||
replace gioui.org => github.com/olebeck/gio v0.0.0-20230321105529-d424f1a59af9
|
||||
|
|
2
go.sum
2
go.sum
|
@ -94,6 +94,8 @@ github.com/olebeck/dragonfly v0.9.4-6 h1:Pom7oMbUA/kFu6PCwr3mWtTOSPvgzD2/71+mUsq
|
|||
github.com/olebeck/dragonfly v0.9.4-6/go.mod h1:k8OQvjmfj+JbrwQf1qHfMETlFHOp0WJLjILN+QVqh+c=
|
||||
github.com/olebeck/dragonfly v0.9.4-7 h1:xzSc9U9upx+mxayAHN1MxkD+PStVgqksJ4uls0o3g4w=
|
||||
github.com/olebeck/dragonfly v0.9.4-7/go.mod h1:k8OQvjmfj+JbrwQf1qHfMETlFHOp0WJLjILN+QVqh+c=
|
||||
github.com/olebeck/dragonfly v0.9.4-9 h1:VgcYFAyEZMo2VSm68fkUZ68iye7xmOWttt6gvjAG6Uw=
|
||||
github.com/olebeck/dragonfly v0.9.4-9/go.mod h1:k8OQvjmfj+JbrwQf1qHfMETlFHOp0WJLjILN+QVqh+c=
|
||||
github.com/olebeck/gio v0.0.0-20230321105529-d424f1a59af9 h1:TqDsMHwjW5ZYfh+RE8ussT62m0qXqo+QjzSXb7BCVA4=
|
||||
github.com/olebeck/gio v0.0.0-20230321105529-d424f1a59af9/go.mod h1:+W1Kpf96YcfissZocFqIp6O42FDTuphkObbEybp+Ffc=
|
||||
github.com/olebeck/gophertunnel v1.28.1-1 h1:bw2jeMz94YHF5qQYhq1Yq/6fALkklGu7k26YbPI4DSs=
|
||||
|
|
|
@ -45,12 +45,10 @@ func (p *packetCapturer) AddressAndName(address, hostname string) error {
|
|||
}
|
||||
|
||||
func (p *packetCapturer) PacketFunc(header packet.Header, payload []byte, src, dst net.Addr) {
|
||||
IsfromClient := p.proxy.IsClient(src)
|
||||
|
||||
buf := bytes.NewBuffer(nil)
|
||||
header.Write(buf)
|
||||
buf.Write(payload)
|
||||
dumpPacket(p.fio, IsfromClient, buf.Bytes())
|
||||
dumpPacket(p.fio, p.proxy.IsClient(src), buf.Bytes())
|
||||
}
|
||||
|
||||
func NewPacketCapturer() *utils.ProxyHandler {
|
||||
|
|
|
@ -80,9 +80,8 @@ func (s *secondaryUser) processLevelChunk(pk *packet.LevelChunk) {
|
|||
}
|
||||
|
||||
func (s *secondaryUser) processSubChunk(pk *packet.SubChunk) {
|
||||
offsets := make([]protocol.SubChunkOffset, 0, len(pk.SubChunkEntries))
|
||||
offsets := make(map[world.ChunkPos]bool, len(pk.SubChunkEntries))
|
||||
for _, sub := range pk.SubChunkEntries {
|
||||
offsets = append(offsets, sub.Offset)
|
||||
var (
|
||||
absX = pk.Position[0] + int32(sub.Offset[0])
|
||||
absY = pk.Position[1] + int32(sub.Offset[1])
|
||||
|
@ -90,6 +89,7 @@ func (s *secondaryUser) processSubChunk(pk *packet.SubChunk) {
|
|||
subPos = protocol.SubChunkPos{absX, absY, absZ}
|
||||
pos = world.ChunkPos{absX, absZ}
|
||||
)
|
||||
offsets[pos] = true
|
||||
ch, ok := s.chunks[pos]
|
||||
if !ok {
|
||||
logrus.Error(locale.Loc("subchunk_before_chunk", nil))
|
||||
|
@ -107,6 +107,13 @@ func (s *secondaryUser) processSubChunk(pk *packet.SubChunk) {
|
|||
}
|
||||
|
||||
for _, p := range s.server.Players() {
|
||||
p.Session().ViewSubChunks(world.SubChunkPos(pk.Position), offsets)
|
||||
for pos := range offsets {
|
||||
ch, ok := s.chunks[pos]
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
p.Session().ViewChunk(pos, ch, nil)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -190,199 +190,3 @@ func stackToItem(it protocol.ItemStack) item.Stack {
|
|||
s := item.NewStack(t, int(it.Count))
|
||||
return nbtconv.Item(it.NBTData, &s)
|
||||
}
|
||||
|
||||
func (w *worldsHandler) playerData() (ret map[string]any) {
|
||||
ret = map[string]any{
|
||||
"format_version": "1.12.0",
|
||||
"identifier": "minecraft:player",
|
||||
}
|
||||
|
||||
if len(w.serverState.playerInventory) > 0 {
|
||||
inv := inventory.New(len(w.serverState.playerInventory), nil)
|
||||
for i, ii := range w.serverState.playerInventory {
|
||||
inv.SetItem(i, stackToItem(ii.Stack))
|
||||
}
|
||||
ret["Inventory"] = nbtconv.InvToNBT(inv)
|
||||
}
|
||||
|
||||
ret["abilities"] = map[string]any{
|
||||
"doorsandswitches": true,
|
||||
"op": true,
|
||||
"opencontainers": true,
|
||||
"teleport": true,
|
||||
"attackmobs": true,
|
||||
"instabuild": true,
|
||||
"permissionsLevel": int32(3),
|
||||
"flying": false,
|
||||
"lightning": false,
|
||||
"playerPermissionsLevel": int32(2),
|
||||
"attackplayers": true,
|
||||
"build": true,
|
||||
"flySpeed": float32(0.05),
|
||||
"invulnerable": true,
|
||||
"mayfly": true,
|
||||
"mine": true,
|
||||
"walkSpeed": float32(0.1),
|
||||
}
|
||||
|
||||
type attribute struct {
|
||||
Name string
|
||||
Base float32
|
||||
Current float32
|
||||
DefaultMax float32
|
||||
DefaultMin float32
|
||||
Max float32
|
||||
Min float32
|
||||
}
|
||||
|
||||
ret["Attributes"] = []attribute{
|
||||
{
|
||||
Base: 0,
|
||||
Current: 0,
|
||||
DefaultMax: 1024,
|
||||
DefaultMin: -1024,
|
||||
Max: 1024,
|
||||
Min: -1024,
|
||||
Name: "minecraft:luck",
|
||||
},
|
||||
{
|
||||
Base: 20,
|
||||
Current: 20,
|
||||
DefaultMax: 20,
|
||||
DefaultMin: 0,
|
||||
Max: 20,
|
||||
Min: 0,
|
||||
Name: "minecraft:health",
|
||||
},
|
||||
{
|
||||
Base: 0,
|
||||
Current: 0,
|
||||
DefaultMax: 16,
|
||||
DefaultMin: 0,
|
||||
Max: 16,
|
||||
Min: 0,
|
||||
Name: "minecraft:absorption",
|
||||
},
|
||||
{
|
||||
Base: 0,
|
||||
Current: 0,
|
||||
DefaultMax: 1,
|
||||
DefaultMin: 0,
|
||||
Max: 1,
|
||||
Min: 0,
|
||||
Name: "minecraft:knockback_resistance",
|
||||
},
|
||||
{
|
||||
Base: 0.1,
|
||||
Current: 0.1,
|
||||
DefaultMax: 3.4028235e+38,
|
||||
DefaultMin: 0,
|
||||
Max: 3.4028235e+38,
|
||||
Min: 0,
|
||||
Name: "minecraft:movement",
|
||||
},
|
||||
{
|
||||
Base: 0.02,
|
||||
Current: 0.02,
|
||||
DefaultMax: 3.4028235e+38,
|
||||
DefaultMin: 0,
|
||||
Max: 3.4028235e+38,
|
||||
Min: 0,
|
||||
Name: "minecraft:underwater_movement",
|
||||
},
|
||||
{
|
||||
Base: 0.02,
|
||||
Current: 0.02,
|
||||
DefaultMax: 3.4028235e+38,
|
||||
DefaultMin: 0,
|
||||
Max: 3.4028235e+38,
|
||||
Min: 0,
|
||||
Name: "minecraft:lava_movement",
|
||||
},
|
||||
{
|
||||
Base: 16,
|
||||
Current: 16,
|
||||
DefaultMax: 2048,
|
||||
DefaultMin: 0,
|
||||
Max: 2048,
|
||||
Min: 0,
|
||||
Name: "minecraft:follow_range",
|
||||
},
|
||||
{
|
||||
Base: 1,
|
||||
Current: 1,
|
||||
DefaultMax: 1,
|
||||
DefaultMin: 1,
|
||||
Max: 1,
|
||||
Min: 1,
|
||||
Name: "minecraft:attack_damage",
|
||||
},
|
||||
{
|
||||
Base: 20,
|
||||
Current: 20,
|
||||
DefaultMax: 20,
|
||||
DefaultMin: 0,
|
||||
Max: 20,
|
||||
Min: 0,
|
||||
Name: "minecraft:player.hunger",
|
||||
},
|
||||
{
|
||||
Base: 0,
|
||||
Current: 0,
|
||||
DefaultMax: 20,
|
||||
DefaultMin: 0,
|
||||
Max: 20,
|
||||
Min: 0,
|
||||
Name: "minecraft:player.exhaustion",
|
||||
},
|
||||
{
|
||||
Base: 5,
|
||||
Current: 5,
|
||||
DefaultMax: 20,
|
||||
DefaultMin: 0,
|
||||
Max: 20,
|
||||
Min: 0,
|
||||
Name: "minecraft:player.saturation",
|
||||
},
|
||||
{
|
||||
Base: 0,
|
||||
Current: 0,
|
||||
DefaultMax: 24791,
|
||||
DefaultMin: 0,
|
||||
Max: 24791,
|
||||
Min: 0,
|
||||
Name: "minecraft:player.level",
|
||||
},
|
||||
{
|
||||
Base: 0,
|
||||
Current: 0,
|
||||
DefaultMax: 1,
|
||||
DefaultMin: 0,
|
||||
Max: 1,
|
||||
Min: 0,
|
||||
Name: "minecraft:player.experience",
|
||||
},
|
||||
}
|
||||
|
||||
ret["Tags"] = []string{}
|
||||
ret["OnGround"] = true
|
||||
|
||||
spawn := w.serverState.PlayerPos.Position
|
||||
|
||||
ret["SpawnX"] = int32(spawn.X())
|
||||
ret["SpawnY"] = int32(spawn.Y())
|
||||
ret["SpawnZ"] = int32(spawn.Z())
|
||||
|
||||
ret["Pos"] = []float32{
|
||||
float32(spawn.X()),
|
||||
float32(spawn.Y()),
|
||||
float32(spawn.Z()),
|
||||
}
|
||||
|
||||
ret["Rotation"] = []float32{
|
||||
w.serverState.PlayerPos.Pitch,
|
||||
w.serverState.PlayerPos.Yaw,
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
|
|
@ -0,0 +1,202 @@
|
|||
package worlds
|
||||
|
||||
import (
|
||||
"github.com/bedrock-tool/bedrocktool/utils/nbtconv"
|
||||
"github.com/df-mc/dragonfly/server/item/inventory"
|
||||
)
|
||||
|
||||
func (w *worldsHandler) playerData() (ret map[string]any) {
|
||||
ret = map[string]any{
|
||||
"format_version": "1.12.0",
|
||||
"identifier": "minecraft:player",
|
||||
}
|
||||
|
||||
if len(w.serverState.playerInventory) > 0 {
|
||||
inv := inventory.New(len(w.serverState.playerInventory), nil)
|
||||
for i, ii := range w.serverState.playerInventory {
|
||||
inv.SetItem(i, stackToItem(ii.Stack))
|
||||
}
|
||||
ret["Inventory"] = nbtconv.InvToNBT(inv)
|
||||
}
|
||||
|
||||
ret["abilities"] = map[string]any{
|
||||
"doorsandswitches": true,
|
||||
"op": true,
|
||||
"opencontainers": true,
|
||||
"teleport": true,
|
||||
"attackmobs": true,
|
||||
"instabuild": true,
|
||||
"permissionsLevel": int32(3),
|
||||
"flying": false,
|
||||
"lightning": false,
|
||||
"playerPermissionsLevel": int32(2),
|
||||
"attackplayers": true,
|
||||
"build": true,
|
||||
"flySpeed": float32(0.05),
|
||||
"invulnerable": true,
|
||||
"mayfly": true,
|
||||
"mine": true,
|
||||
"walkSpeed": float32(0.1),
|
||||
}
|
||||
|
||||
type attribute struct {
|
||||
Name string
|
||||
Base float32
|
||||
Current float32
|
||||
DefaultMax float32
|
||||
DefaultMin float32
|
||||
Max float32
|
||||
Min float32
|
||||
}
|
||||
|
||||
ret["Attributes"] = []attribute{
|
||||
{
|
||||
Base: 0,
|
||||
Current: 0,
|
||||
DefaultMax: 1024,
|
||||
DefaultMin: -1024,
|
||||
Max: 1024,
|
||||
Min: -1024,
|
||||
Name: "minecraft:luck",
|
||||
},
|
||||
{
|
||||
Base: 20,
|
||||
Current: 20,
|
||||
DefaultMax: 20,
|
||||
DefaultMin: 0,
|
||||
Max: 20,
|
||||
Min: 0,
|
||||
Name: "minecraft:health",
|
||||
},
|
||||
{
|
||||
Base: 0,
|
||||
Current: 0,
|
||||
DefaultMax: 16,
|
||||
DefaultMin: 0,
|
||||
Max: 16,
|
||||
Min: 0,
|
||||
Name: "minecraft:absorption",
|
||||
},
|
||||
{
|
||||
Base: 0,
|
||||
Current: 0,
|
||||
DefaultMax: 1,
|
||||
DefaultMin: 0,
|
||||
Max: 1,
|
||||
Min: 0,
|
||||
Name: "minecraft:knockback_resistance",
|
||||
},
|
||||
{
|
||||
Base: 0.1,
|
||||
Current: 0.1,
|
||||
DefaultMax: 3.4028235e+38,
|
||||
DefaultMin: 0,
|
||||
Max: 3.4028235e+38,
|
||||
Min: 0,
|
||||
Name: "minecraft:movement",
|
||||
},
|
||||
{
|
||||
Base: 0.02,
|
||||
Current: 0.02,
|
||||
DefaultMax: 3.4028235e+38,
|
||||
DefaultMin: 0,
|
||||
Max: 3.4028235e+38,
|
||||
Min: 0,
|
||||
Name: "minecraft:underwater_movement",
|
||||
},
|
||||
{
|
||||
Base: 0.02,
|
||||
Current: 0.02,
|
||||
DefaultMax: 3.4028235e+38,
|
||||
DefaultMin: 0,
|
||||
Max: 3.4028235e+38,
|
||||
Min: 0,
|
||||
Name: "minecraft:lava_movement",
|
||||
},
|
||||
{
|
||||
Base: 16,
|
||||
Current: 16,
|
||||
DefaultMax: 2048,
|
||||
DefaultMin: 0,
|
||||
Max: 2048,
|
||||
Min: 0,
|
||||
Name: "minecraft:follow_range",
|
||||
},
|
||||
{
|
||||
Base: 1,
|
||||
Current: 1,
|
||||
DefaultMax: 1,
|
||||
DefaultMin: 1,
|
||||
Max: 1,
|
||||
Min: 1,
|
||||
Name: "minecraft:attack_damage",
|
||||
},
|
||||
{
|
||||
Base: 20,
|
||||
Current: 20,
|
||||
DefaultMax: 20,
|
||||
DefaultMin: 0,
|
||||
Max: 20,
|
||||
Min: 0,
|
||||
Name: "minecraft:player.hunger",
|
||||
},
|
||||
{
|
||||
Base: 0,
|
||||
Current: 0,
|
||||
DefaultMax: 20,
|
||||
DefaultMin: 0,
|
||||
Max: 20,
|
||||
Min: 0,
|
||||
Name: "minecraft:player.exhaustion",
|
||||
},
|
||||
{
|
||||
Base: 5,
|
||||
Current: 5,
|
||||
DefaultMax: 20,
|
||||
DefaultMin: 0,
|
||||
Max: 20,
|
||||
Min: 0,
|
||||
Name: "minecraft:player.saturation",
|
||||
},
|
||||
{
|
||||
Base: 0,
|
||||
Current: 0,
|
||||
DefaultMax: 24791,
|
||||
DefaultMin: 0,
|
||||
Max: 24791,
|
||||
Min: 0,
|
||||
Name: "minecraft:player.level",
|
||||
},
|
||||
{
|
||||
Base: 0,
|
||||
Current: 0,
|
||||
DefaultMax: 1,
|
||||
DefaultMin: 0,
|
||||
Max: 1,
|
||||
Min: 0,
|
||||
Name: "minecraft:player.experience",
|
||||
},
|
||||
}
|
||||
|
||||
ret["Tags"] = []string{}
|
||||
ret["OnGround"] = true
|
||||
|
||||
spawn := w.serverState.PlayerPos.Position
|
||||
|
||||
ret["SpawnX"] = int32(spawn.X())
|
||||
ret["SpawnY"] = int32(spawn.Y())
|
||||
ret["SpawnZ"] = int32(spawn.Z())
|
||||
|
||||
ret["Pos"] = []float32{
|
||||
float32(spawn.X()),
|
||||
float32(spawn.Y()),
|
||||
float32(spawn.Z()),
|
||||
}
|
||||
|
||||
ret["Rotation"] = []float32{
|
||||
w.serverState.PlayerPos.Pitch,
|
||||
w.serverState.PlayerPos.Yaw,
|
||||
}
|
||||
|
||||
return
|
||||
}
|
|
@ -217,7 +217,7 @@ func (w *worldsHandler) setWorldName(val string, fromUI bool) bool {
|
|||
|
||||
func (w *worldsHandler) CurrentName() string {
|
||||
worldName := "world"
|
||||
if w.serverState.worldCounter > 1 {
|
||||
if w.serverState.worldCounter > 0 {
|
||||
worldName = fmt.Sprintf("world-%d", w.serverState.worldCounter)
|
||||
}
|
||||
return worldName
|
||||
|
@ -249,8 +249,11 @@ func (w *worldState) cullChunks() {
|
|||
}
|
||||
}
|
||||
|
||||
func (w *worldState) Save(folder string) (*mcdb.Provider, error) {
|
||||
provider, err := mcdb.New(logrus.StandardLogger(), folder, opt.DefaultCompression)
|
||||
func (w *worldState) Save(folder string) (*mcdb.DB, error) {
|
||||
provider, err := mcdb.Config{
|
||||
Log: logrus.StandardLogger(),
|
||||
Compression: opt.DefaultCompression,
|
||||
}.New(folder)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@ type Page interface {
|
|||
NavItem() component.NavItem
|
||||
|
||||
// handle events from program
|
||||
Handler() HandlerFunc
|
||||
Handler(data any) messages.MessageResponse
|
||||
}
|
||||
|
||||
type Router struct {
|
||||
|
@ -136,7 +136,7 @@ func (r *Router) Layout(gtx layout.Context, th *material.Theme) layout.Dimension
|
|||
func (r *Router) Handler(data interface{}) messages.MessageResponse {
|
||||
page, ok := r.pages[r.current]
|
||||
if ok {
|
||||
return page.Handler()(data)
|
||||
return page.Handler(data)
|
||||
}
|
||||
return messages.MessageResponse{}
|
||||
}
|
||||
|
|
|
@ -174,11 +174,9 @@ func (p *Page) Layout(gtx C, th *material.Theme) D {
|
|||
})
|
||||
}
|
||||
|
||||
func (p *Page) Handler() pages.HandlerFunc {
|
||||
return func(data interface{}) messages.MessageResponse {
|
||||
return messages.MessageResponse{
|
||||
Ok: false,
|
||||
Data: nil,
|
||||
}
|
||||
func (p *Page) Handler(any) messages.MessageResponse {
|
||||
return messages.MessageResponse{
|
||||
Ok: false,
|
||||
Data: nil,
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,6 @@ import (
|
|||
"gioui.org/widget"
|
||||
"gioui.org/widget/material"
|
||||
"gioui.org/x/component"
|
||||
"github.com/bedrock-tool/bedrocktool/ui/gui"
|
||||
"github.com/bedrock-tool/bedrocktool/ui/gui/pages"
|
||||
"github.com/bedrock-tool/bedrocktool/ui/messages"
|
||||
)
|
||||
|
@ -96,7 +95,7 @@ func (p *Page) Layout(gtx C, th *material.Theme) D {
|
|||
return layout.Flex{}.Layout(gtx)
|
||||
}
|
||||
|
||||
func (p *Page) handler(data interface{}) messages.MessageResponse {
|
||||
func (p *Page) Handler(data interface{}) messages.MessageResponse {
|
||||
r := messages.MessageResponse{
|
||||
Ok: false,
|
||||
Data: nil,
|
||||
|
@ -116,7 +115,3 @@ func (p *Page) handler(data interface{}) messages.MessageResponse {
|
|||
}
|
||||
return r
|
||||
}
|
||||
|
||||
func (p *Page) Handler() gui.HandlerFunc {
|
||||
return p.handler
|
||||
}
|
||||
|
|
|
@ -10,7 +10,6 @@ import (
|
|||
"gioui.org/widget"
|
||||
"gioui.org/widget/material"
|
||||
"gioui.org/x/component"
|
||||
"github.com/bedrock-tool/bedrocktool/ui/gui"
|
||||
"github.com/bedrock-tool/bedrocktool/ui/gui/pages"
|
||||
"github.com/bedrock-tool/bedrocktool/ui/messages"
|
||||
)
|
||||
|
@ -115,7 +114,7 @@ func (p *Page) Layout(gtx C, th *material.Theme) D {
|
|||
return layout.Dimensions{}
|
||||
}
|
||||
|
||||
func (u *Page) handler(data interface{}) messages.MessageResponse {
|
||||
func (u *Page) Handler(data any) messages.MessageResponse {
|
||||
r := messages.MessageResponse{
|
||||
Ok: false,
|
||||
Data: nil,
|
||||
|
@ -148,7 +147,3 @@ func (u *Page) handler(data interface{}) messages.MessageResponse {
|
|||
}
|
||||
return r
|
||||
}
|
||||
|
||||
func (p *Page) Handler() gui.HandlerFunc {
|
||||
return p.handler
|
||||
}
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
package gui
|
||||
|
||||
import (
|
||||
"gioui.org/layout"
|
||||
"github.com/bedrock-tool/bedrocktool/ui/messages"
|
||||
)
|
||||
|
||||
type C = layout.Context
|
||||
type D = layout.Dimensions
|
||||
|
||||
type HandlerFunc = func(data interface{}) messages.MessageResponse
|
|
@ -20,7 +20,7 @@ const (
|
|||
UIStateFinished
|
||||
)
|
||||
|
||||
type HandlerFunc = func(name string, data interface{}) MessageResponse
|
||||
type HandlerFunc = func(data interface{}) MessageResponse
|
||||
|
||||
//
|
||||
|
||||
|
|
Loading…
Reference in New Issue