This commit is contained in:
adman
2026-07-16 01:13:31 +02:00
parent b966925212
commit 5c5c391aa6
14 changed files with 441 additions and 120 deletions
+3 -1
View File
@@ -13,6 +13,7 @@ import (
"github.com/admin-else/strom/cmd/strom/data"
"github.com/admin-else/strom/cmd/strom/extract_mca"
"github.com/admin-else/strom/cmd/strom/mca_to_tmcpr"
"github.com/admin-else/strom/cmd/strom/messenger"
"github.com/admin-else/strom/cmd/strom/offline_uuid"
"github.com/admin-else/strom/cmd/strom/packet_info"
"github.com/admin-else/strom/cmd/strom/packet_inspector"
@@ -63,6 +64,7 @@ var subcommands = map[string]func(args []string) error{
"serve-world": serve_world.Run,
"mca-to-tmcpr": mca_to_tmcpr.Run,
"serve-tmcpr": serve_tmcpr.Run,
"messenger": messenger.Run,
}
func Help(args []string) (err error) {
@@ -75,7 +77,7 @@ func Help(args []string) (err error) {
func mainE() (err error) {
subcommands["help"] = Help
args := os.Args
//args = []string{"TEST", "packet-spy", "-addr", "127.0.0.1:25571", "-true-forward"}
args = []string{"TEST", "messenger", "-addr", "localhost"}
if len(args) < 2 {
err = ExpectedASubcommandErr
+57
View File
@@ -0,0 +1,57 @@
package messenger
import (
"flag"
"github.com/admin-else/strom/mc/api"
"github.com/admin-else/strom/mc/client"
"github.com/admin-else/strom/mc/event"
"github.com/admin-else/strom/mc/proto"
"github.com/admin-else/strom/mc/proto_generated/v1_21_11"
)
var (
cmd = flag.NewFlagSet("status", flag.ContinueOnError)
connectToFlag = cmd.String("addr", "", "server address to connect to")
nameFlag = cmd.String("name", "strom_messenger", "the name to use")
)
type Messenger struct {
*proto.Conn
}
func (m *Messenger) OnChat(e *v1_21_11.PlayToClientPacketPlayerChat) (err error) {
m.Log.Info("chat", "author", e.SenderUuid, "m", e.PlainMessage)
return
}
func (m *Messenger) OnChatUnsigned(e *v1_21_11.PlayToClientPacketProfilelessChat) (err error) {
m.Log.Info("chatP", "author", e.Name, "m", e.Message)
return
}
func (m *Messenger) OnChatSystem(e *v1_21_11.PlayToClientPacketSystemChat) (err error) {
m.Log.Info("chatS", "m", e.Content)
return
}
func (m *Messenger) OnStdin(e event.Stdin) (err error) {
return m.Send(&v1_21_11.PlayToServerPacketChatMessage{Message: e.Val})
}
func Run(args []string) (err error) {
err = cmd.Parse(args)
c, err := client.Login(*connectToFlag, api.NewOfflineAccount(*nameFlag))
if err != nil {
return
}
defer c.Close()
m := Messenger{Conn: c}
event.StartListingStdin(m.Loop)
m.Register(m.OnStdin)
m.RegisterUntilLatest(m.OnChat, m.OnChatUnsigned, m.OnChatSystem)
return m.StartConn()
}
+2 -2
View File
@@ -178,11 +178,11 @@ func Run(args []string) (err error) {
}
}
*TargetAddr, err = client.DoDnsSimple(*TargetAddr)
*TargetAddr, _, _, err = client.DoDNSChecked(nil, *TargetAddr, nil)
if err != nil {
return
}
c, err := client.Connect(*TargetAddr)
c, err := client.Connect(nil, *TargetAddr, "")
if err != nil {
return
}
+2 -2
View File
@@ -46,7 +46,7 @@ func (s *StatusClient) OnPong(p *v1_21_8.StatusToClientPacketPing) (err error) {
// So ignore the resource leak warning. And maybe attach a warn ignore comment.
// It does not resolve SRV records.
func StatusRaw(addr string) (s *StatusClient, err error) {
c, err := client.ConnectVersionLess(addr)
c, err := client.ConnectVersionLess(nil, addr)
if err != nil {
return
}
@@ -82,7 +82,7 @@ func Run(args []string) (err error) {
return
}
if *srvFlag {
*addrFlag, err = client.DoDnsSimple(*addrFlag)
*addrFlag, _, _, err = client.DoDNSChecked(nil, *addrFlag, nil)
if err != nil {
return
}