InvFormspec + MinimapModes + NodeMetasChanged forwarding

master
HimbeerserverDE 2021-08-30 22:38:47 +02:00
parent 63b65d20c6
commit 525750e143
No known key found for this signature in database
GPG Key ID: 1A651504791E6A8B
2 changed files with 40 additions and 37 deletions

27
formspec.go Normal file
View File

@ -0,0 +1,27 @@
package main
import (
"regexp"
"strings"
)
func (sc *serverConn) prependFormspec(fs *string) {
reg := regexp.MustCompile("[^a-zA-Z0-9-_.:]")
reg2 := regexp.MustCompile("[a-zA-Z0-9-_.]*\\.[a-zA-Z0-9-_.]+")
subs := reg.Split(*fs, -1)
seps := reg.FindAllString(*fs, -1)
for i, sub := range subs {
if reg2.MatchString(sub) && !strings.Contains(sub, " ") {
prepend(sc.name, &subs[i])
}
}
*fs = ""
for i, sub := range subs {
*fs += sub
if i < len(seps) {
*fs += seps[i]
}
}
}

View File

@ -5,7 +5,6 @@ import (
"fmt"
"log"
"net"
"regexp"
"strings"
"time"
@ -411,46 +410,23 @@ func handleSrv(sc *serverConn) {
delete(sc.huds, cmd.ID)
sc.client().SendCmd(cmd)
case *mt.ToCltShowFormspec:
reg := regexp.MustCompile("[^a-zA-Z0-9-_.:]")
reg2 := regexp.MustCompile("[a-zA-Z0-9-_.]*\\.[a-zA-Z0-9-_.]+")
subs := reg.Split(cmd.Formspec, -1)
seps := reg.FindAllString(cmd.Formspec, -1)
for i, sub := range subs {
if reg2.MatchString(sub) && !strings.Contains(sub, " ") {
prepend(sc.name, &subs[i])
}
}
cmd.Formspec = ""
for i, sub := range subs {
cmd.Formspec += sub
if i < len(seps) {
cmd.Formspec += seps[i]
}
}
sc.prependFormspec(&cmd.Formspec)
sc.client().SendCmd(cmd)
case *mt.ToCltFormspecPrepend:
reg := regexp.MustCompile("[^a-zA-Z0-9-_.:]")
reg2 := regexp.MustCompile("[a-zA-Z0-9-_.]*\\.[a-zA-Z0-9-_.]+")
subs := reg.Split(cmd.Prepend, -1)
seps := reg.FindAllString(cmd.Prepend, -1)
for i, sub := range subs {
if reg2.MatchString(sub) && !strings.Contains(sub, " ") {
prepend(sc.name, &subs[i])
}
sc.prependFormspec(&cmd.Prepend)
sc.client().SendCmd(cmd)
case *mt.ToCltInvFormspec:
sc.prependFormspec(&cmd.Formspec)
sc.client().SendCmd(cmd)
case *mt.ToCltMinimapModes:
for i := range cmd.Modes {
prependTexture(sc.name, &cmd.Modes[i].Texture)
}
cmd.Prepend = ""
for i, sub := range subs {
cmd.Prepend += sub
if i < len(seps) {
cmd.Prepend += seps[i]
}
sc.client().SendCmd(cmd)
case *mt.ToCltNodeMetasChanged:
for k := range cmd.Changed {
sc.prependInv(cmd.Changed[k].Inv)
}
sc.client().SendCmd(cmd)
}
}