strom: fix generator for pointer-receiver Encode, use nbt.Tag for named NBT

- Delete raw_capture subcommand (use tcpflow + raw-to-tmcpr instead)
- Fix DefaultEncoder to use temp variable for non-addressable value encoding,
  eliminating manual post-generation patches
- Map nbt and optionalNbt types to nbt.Tag (named NBT) instead of nbt.Anon
  (anonymous NBT) — 1.8 uses named NBT with root tag names
This commit is contained in:
Admin Else
2026-08-04 16:40:47 +02:00
parent b162d0d401
commit d9bca7e517
9 changed files with 5904 additions and 3028 deletions
-62
View File
@@ -1,62 +0,0 @@
package raw_capture
import (
"flag"
"fmt"
"io"
"net"
"os"
"github.com/admin-else/strom/mc/client"
)
var Cmd = flag.NewFlagSet("raw-capture", flag.ContinueOnError)
var TargetAddr = Cmd.String("addr", "127.0.0.1:25565", "address to connect to")
var ListenAddr = Cmd.String("listen", "127.0.0.1:25566", "address to listen on")
var ClientboundFile = Cmd.String("clientbound-file", "clientbound.tmcpr", "file to write clientbound packets to")
var ServerboundFile = Cmd.String("serverbound-file", "serverbound.tmcpr", "file to write serverbound packets to")
func Handle(c net.Conn, addr string) {
sockPuppet, err := net.Dial("tcp", addr)
if err != nil {
return
}
io.MultiWriter()
go io.Copy(c, sockPuppet)
io.Copy(sockPuppet, c)
}
func Run(args []string) (err error) {
err = Cmd.Parse(args)
if err != nil {
return
}
clientboundFile, err := os.Create(*ClientboundFile)
if err != nil {
return fmt.Errorf("create clientbound file: %w", err)
}
defer clientboundFile.Close()
serverboundFile, err := os.Create(*ServerboundFile)
if err != nil {
return fmt.Errorf("create serverbound file: %w", err)
}
defer serverboundFile.Close()
resolvedAddr, _, _, err := client.DoDNSChecked(nil, *TargetAddr, nil)
if err != nil {
return
}
l, err := net.Listen("tcp", *ListenAddr)
if err != nil {
return
}
for {
c, err := l.Accept()
if err != nil {
continue
}
go Handle(c, resolvedAddr)
}
}