This commit is contained in:
adman
2026-03-02 00:14:57 +01:00
parent f7d7a72b7c
commit d8cc9cab48
32 changed files with 79606 additions and 20424 deletions
+39
View File
@@ -0,0 +1,39 @@
package main
import (
"encoding/json"
"flag"
"os"
"github.com/admin-else/strom/nbt"
)
var (
FileFlag = flag.String("file", "", "The NBT file to print")
)
func mainE() (err error) {
flag.Parse()
f, err := os.Open(*FileFlag)
if err != nil {
return
}
defer f.Close()
n, err := nbt.ReadFile(f)
if err != nil {
return
}
b, err := json.MarshalIndent(n, "", " ")
if err != nil {
return
}
_, err = os.Stdout.Write(b)
return
}
func main() {
err := mainE()
if err != nil {
panic(err)
}
}
+38 -6
View File
@@ -3,14 +3,14 @@ package main
import (
"encoding/json"
"errors"
"fmt"
"log/slog"
"os"
"github.com/admin-else/strom/api"
"github.com/admin-else/strom/client"
"github.com/admin-else/strom/client/modules"
"github.com/admin-else/strom/data"
"github.com/admin-else/strom/event"
"github.com/admin-else/strom/nbt"
"github.com/admin-else/strom/proto"
"github.com/admin-else/strom/proto_base"
"github.com/admin-else/strom/proto_generated/v1_21_8"
@@ -26,7 +26,12 @@ func wontFail[T any](v T, err error) T {
}
var (
CompatibleProtocolVersion = wontFail(data.LookUpVersionByName("1.21.8")).Version
// Edit these two
SaveAs = "1.21.8"
Version = "1.21.8"
CompatibleProtocolVersion = wontFail(data.LookUpVersionByName(Version)).Version
FinishedConfigErr = errors.New("finished configuration")
)
@@ -40,6 +45,7 @@ var Status = wontFail(json.Marshal(server.StatusResponse{
type Proxy struct {
Client, Servee *proto.Conn
Data nbt.Tag
}
func (p *Proxy) OnAnything(e event.Anything) (err error) {
@@ -51,7 +57,6 @@ func (p *Proxy) OnAnything(e event.Anything) (err error) {
if !ok {
return
}
slog.Debug("packet", "type", packetInfo.Name, "packet", fmt.Sprintf("%#v", packet))
switch packetInfo.Direction {
case proto_base.ToServer:
err = p.Client.Send(packet)
@@ -61,12 +66,32 @@ func (p *Proxy) OnAnything(e event.Anything) (err error) {
return
}
func (p *Proxy) OnFinishConfiguration(_ *v1_21_8.ConfigurationToServerPacketFinishConfiguration) (err error) {
func (p *Proxy) OnFinishConfiguration(_ *v1_21_8.ConfigurationToClientPacketFinishConfiguration) (err error) {
err = FinishedConfigErr
return
}
func (p *Proxy) OnData(data *v1_21_8.ConfigurationToClientPacketRegistryData) (err error) {
d := p.Data.Value.(map[string]any)["Registries"].([]any)
var entries []any
for _, entry := range data.Entries {
entries = append(entries, map[string]any{"TagType": entry.Key, "Value": entry.Value.Value})
}
d = append(d, map[string]any{"Id": data.Id, "Entries": entries})
p.Data.Value.(map[string]any)["Registries"] = d
return
}
func (p *Proxy) OnTags(data *v1_21_8.ConfigurationToClientPacketTags) (err error) {
var tags []any
for _, tag := range data.Tags {
var entries []any
for _, entry := range tag.Tags.Val {
entries = append(entries, map[string]any{"TagName": entry.TagName, "Entries": entry.Entries})
}
tags = append(tags, map[string]any{"TagType": tag.TagType, "Entries": entries})
}
p.Data.Value.(map[string]any)["Tags"] = tags
return
}
@@ -83,7 +108,7 @@ func handleClient(c *proto.Conn) (err error) {
return
}
defer sockPuppet.Close()
err = sockPuppet.Start(&modules.LoginClient{
err = sockPuppet.Start(&client.LoginClient{
Conn: sockPuppet,
Account: acc,
})
@@ -92,6 +117,7 @@ func handleClient(c *proto.Conn) (err error) {
}
errChan := make(chan error)
p := &Proxy{Client: sockPuppet, Servee: c}
p.Data.Value = map[string]any{"Registries": []any{}}
go func() {
errChan <- p.Client.Start(p)
}()
@@ -99,6 +125,12 @@ func handleClient(c *proto.Conn) (err error) {
errChan <- p.Servee.Start(p)
}()
err = <-errChan
f, err := os.Create("data/registry/" + SaveAs + ".nbt")
if err != nil {
return
}
defer f.Close()
err = nbt.WriteFile(f, p.Data)
return
}
File diff suppressed because one or more lines are too long
+5 -6
View File
@@ -1,4 +1,3 @@
// THIS THING IS BROKEN
package main
import (
@@ -8,7 +7,7 @@ import (
"os"
"github.com/admin-else/strom/api"
"github.com/admin-else/strom/client/modules"
"github.com/admin-else/strom/client"
"github.com/admin-else/strom/event"
"github.com/admin-else/strom/proto"
"github.com/admin-else/strom/proto_base"
@@ -39,7 +38,7 @@ func (p *ProxyClient) OnStart(_ event.OnStart) (err error) {
return
}
func (p *ProxyClient) OnUnCodeAble(packet proto.UnCodablePacket) (err error) {
func (p *ProxyClient) OnUnCodeAble(packet *proto.UnCodablePacket) (err error) {
err = p.OnDefault(event.Unhandled{Val: packet})
if err != nil {
return
@@ -80,7 +79,7 @@ func (p *Proxy) OnFinishConfiguration(packet *v1_21_8.ConfigurationToServerPacke
return
}
func (p *Proxy) OnUnCodeAble(packet proto.UnCodablePacket) (err error) {
func (p *Proxy) OnUnCodeAble(packet *proto.UnCodablePacket) (err error) {
err = p.OnDefault(event.Unhandled{Val: packet})
if err != nil {
return
@@ -109,7 +108,7 @@ func TestFailedPacket%10X(t *testing.T) {
}
`
func SaveUnCodeAbleAsTest(d proto_base.Direction, packet proto.UnCodablePacket) {
func SaveUnCodeAbleAsTest(d proto_base.Direction, packet *proto.UnCodablePacket) {
hUntrimmed := sha256.Sum256(packet.Data)
h := hUntrimmed[:8]
f, err := os.Create(fmt.Sprintf(".failed_packets/%v_%10x_test.go", len(packet.Data), h))
@@ -145,7 +144,7 @@ func main() {
if err != nil {
return
}
c, err := modules.ConnectAndLogin("127.0.0.1:25566", acc)
c, err := client.ConnectAndLogin("127.0.0.1:25566", acc)
if err != nil {
return
}