feat(installer): 便携中文安装包「年糕历险记-Setup-v0.1.0.zip」——安装.bat 中文交互+桌面快捷方式;修复 ps1 BOM 编码

This commit is contained in:
NianGao Dev
2026-08-15 23:59:24 +08:00
parent 610f234bb4
commit 4755fd88fc
7 changed files with 171 additions and 3 deletions

View File

@@ -0,0 +1,52 @@
//go:build gl
// 客户端联机:netclient 接入(多人同步.md §2 权威链路客户端侧)。
package main
import (
"mc/internal/block"
"mc/internal/netclient"
"mc/internal/netproto"
"mc/internal/save"
)
// mpHandler 联机回调:区块安装与方块变更应用(多人同步.md §4–§5)。
type mpHandler struct {
app *clientApp
}
// OnLogin 登录结果。
func (h *mpHandler) OnLogin(code uint8) {
if code != 0 {
h.app.logf("服务器拒绝登录(码 %d)", code)
h.app.net.Close()
h.app.net = nil
h.app.screen = 0
}
}
// OnChunk 收到区块:反序列化并安装到世界(多人同步.md §4)。
func (h *mpHandler) OnChunk(data []byte) {
c, err := save.DecodeChunk(data)
if err != nil {
h.app.logf("区块解码失败: %v", err)
return
}
h.app.sess.World.InstallChunk(c)
}
// OnBlockChange 方块变更(服务器权威广播,多人同步.md §5)。
func (h *mpHandler) OnBlockChange(m netproto.BlockChange) {
h.app.sess.World.SetBlock(m.X, m.Y, m.Z, block.NewState(m.BlockID, m.Meta))
}
// dialServer 连接服务器(多人游戏按钮,多人同步.md §2)。
func dialServer(a *clientApp, addr string, name string) error {
h := &mpHandler{app: a}
nc, err := netclient.Dial(addr, netproto.Handshake{ProtocolVersion: 1, ClientID: name}, h)
if err != nil {
return err
}
a.net = nc
return nil
}