fix translations
This commit is contained in:
parent
7d2974c9c4
commit
1160e025ec
|
@ -61,6 +61,7 @@ func main() {
|
|||
|
||||
flag.BoolVar(&utils.G_debug, "debug", false, locale.Loc("debug_mode", nil))
|
||||
flag.BoolVar(&utils.G_preload_packs, "preload", false, locale.Loc("preload_packs", nil))
|
||||
flag.String("lang", "", "lang")
|
||||
enable_dns := flag.Bool("dns", false, locale.Loc("enable_dns", nil))
|
||||
|
||||
subcommands.Register(subcommands.HelpCommand(), "")
|
||||
|
|
2
go.mod
2
go.mod
|
@ -6,7 +6,7 @@ go 1.19
|
|||
replace github.com/sandertv/gophertunnel => github.com/olebeck/gophertunnel v1.26.2
|
||||
|
||||
//replace github.com/df-mc/dragonfly => ./dragonfly
|
||||
replace github.com/df-mc/dragonfly => github.com/olebeck/dragonfly v0.9.1-1
|
||||
replace github.com/df-mc/dragonfly => github.com/olebeck/dragonfly v0.9.1-2
|
||||
|
||||
require (
|
||||
github.com/cloudfoundry-attic/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21
|
||||
|
|
2
go.sum
2
go.sum
|
@ -68,6 +68,8 @@ github.com/nicksnyder/go-i18n/v2 v2.2.1 h1:aOzRCdwsJuoExfZhoiXHy4bjruwCMdt5otbYo
|
|||
github.com/nicksnyder/go-i18n/v2 v2.2.1/go.mod h1:fF2++lPHlo+/kPaj3nB0uxtPwzlPm+BlgwGX7MkeGj0=
|
||||
github.com/olebeck/dragonfly v0.9.1-1 h1:b5CIocRvmxdesW6N6V87xTDH4fFLVthb1GRptbbqDuc=
|
||||
github.com/olebeck/dragonfly v0.9.1-1/go.mod h1:ZjzPME6I1nc73voUgr2s5lpkoTxnWuR54V6c1KbULX0=
|
||||
github.com/olebeck/dragonfly v0.9.1-2 h1:Rry/efQl4ORUakJNTnHCY0vB6AUmZuUpy+PsLSbWoRY=
|
||||
github.com/olebeck/dragonfly v0.9.1-2/go.mod h1:ZjzPME6I1nc73voUgr2s5lpkoTxnWuR54V6c1KbULX0=
|
||||
github.com/olebeck/gophertunnel v1.26.2 h1:AbiZcmeR5LenSJ5NX/2BPxLC3ddlvgWjrjouPmOB6BA=
|
||||
github.com/olebeck/gophertunnel v1.26.2/go.mod h1:dYFetA6r62huhc1EgR9p8VFAFtKOuGgVE/iXf5CzZ4o=
|
||||
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
|
|
|
@ -2,7 +2,10 @@ package locale
|
|||
|
||||
import (
|
||||
"embed"
|
||||
"flag"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
|
||||
"github.com/cloudfoundry-attic/jibber_jabber"
|
||||
"github.com/nicksnyder/go-i18n/v2/i18n"
|
||||
|
@ -18,7 +21,6 @@ var localesFS embed.FS
|
|||
var lang *i18n.Localizer
|
||||
|
||||
func load_language(bundle *i18n.Bundle, tag language.Tag) error {
|
||||
logrus.Infof("Using Language %s", tag.String())
|
||||
_, err := bundle.LoadMessageFileFS(localesFS, fmt.Sprintf("%s.yaml", tag.String()))
|
||||
return err
|
||||
}
|
||||
|
@ -27,14 +29,19 @@ func init() {
|
|||
var defaultTag language.Tag = language.English
|
||||
var err error
|
||||
|
||||
// get default language
|
||||
var languageName string
|
||||
languageName, err = jibber_jabber.DetectLanguage()
|
||||
if err == nil {
|
||||
defaultTag, err = language.Parse(languageName)
|
||||
if err != nil {
|
||||
logrus.Warn("failed to parse language name")
|
||||
}
|
||||
f := flag.NewFlagSet("bedrocktool", flag.ContinueOnError)
|
||||
f.SetOutput(io.Discard)
|
||||
f.StringVar(&languageName, "lang", "", "")
|
||||
f.Parse(os.Args[1:])
|
||||
|
||||
// get default language
|
||||
if languageName == "" {
|
||||
languageName, _ = jibber_jabber.DetectLanguage()
|
||||
}
|
||||
defaultTag, err = language.Parse(languageName)
|
||||
if err != nil {
|
||||
logrus.Warn("failed to parse language name")
|
||||
}
|
||||
|
||||
bundle := i18n.NewBundle(defaultTag)
|
||||
|
@ -43,7 +50,7 @@ func init() {
|
|||
if defaultTag != language.English {
|
||||
err = load_language(bundle, language.English)
|
||||
if err != nil {
|
||||
panic("failed to load english language")
|
||||
logrus.Error("failed to load english language")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -52,11 +59,7 @@ func init() {
|
|||
logrus.Warnf("Couldnt load Language %s", languageName)
|
||||
}
|
||||
|
||||
lang = i18n.NewLocalizer(bundle)
|
||||
}
|
||||
|
||||
func Locm(id string, tmpl Strmap, count int) string {
|
||||
return Loc(id, tmpl)
|
||||
lang = i18n.NewLocalizer(bundle, defaultTag.String(), "en")
|
||||
}
|
||||
|
||||
func Loc(id string, tmpl Strmap) string {
|
||||
|
@ -69,3 +72,15 @@ func Loc(id string, tmpl Strmap) string {
|
|||
}
|
||||
return s
|
||||
}
|
||||
|
||||
func Locm(id string, tmpl Strmap, count int) string {
|
||||
s, err := lang.Localize(&i18n.LocalizeConfig{
|
||||
MessageID: id,
|
||||
TemplateData: tmpl,
|
||||
PluralCount: count,
|
||||
})
|
||||
if err != nil {
|
||||
return fmt.Sprintf("failed to translate! %s", id)
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ import (
|
|||
|
||||
"github.com/bedrock-tool/bedrocktool/locale"
|
||||
"github.com/bedrock-tool/bedrocktool/utils"
|
||||
"github.com/bedrock-tool/bedrocktool/utils/behaviourpack"
|
||||
"github.com/bedrock-tool/bedrocktool/utils/nbtconv"
|
||||
|
||||
"github.com/df-mc/dragonfly/server/block"
|
||||
|
@ -64,6 +65,7 @@ type WorldState struct {
|
|||
ServerName string
|
||||
worldCounter int
|
||||
packs map[string]*resource.Pack
|
||||
bp *behaviourpack.BehaviourPack
|
||||
|
||||
withPacks bool
|
||||
saveImage bool
|
||||
|
@ -175,8 +177,9 @@ func (c *WorldCMD) Execute(ctx context.Context, f *flag.FlagSet, _ ...interface{
|
|||
err = proxy.Run(ctx, server_address)
|
||||
if err != nil {
|
||||
logrus.Error(err)
|
||||
} else {
|
||||
w.SaveAndReset()
|
||||
}
|
||||
w.SaveAndReset()
|
||||
return 0
|
||||
}
|
||||
|
||||
|
@ -447,6 +450,16 @@ func (w *WorldState) SaveAndReset() {
|
|||
utils.UnpackZip(bytes.NewReader(data), int64(len(data)), pack_folder)
|
||||
}
|
||||
|
||||
if w.bp != nil {
|
||||
f, err := os.Create(path.Join(folder, "bp.mcpack"))
|
||||
if err != nil {
|
||||
logrus.Error(err)
|
||||
} else {
|
||||
w.bp.Save(f)
|
||||
f.Close()
|
||||
}
|
||||
}
|
||||
|
||||
if w.saveImage {
|
||||
f, _ := os.Create(folder + ".png")
|
||||
png.Encode(f, w.ui.ToImage())
|
||||
|
@ -470,12 +483,13 @@ func (w *WorldState) OnConnect(proxy *utils.ProxyContext) {
|
|||
|
||||
if len(gd.CustomBlocks) > 0 {
|
||||
logrus.Info(locale.Loc("using_customblocks", nil))
|
||||
/*
|
||||
for _, be := range gd.CustomBlocks {
|
||||
b := block.ServerCustomBlock(be)
|
||||
world.RegisterBlock(b)
|
||||
}
|
||||
*/
|
||||
|
||||
w.bp = behaviourpack.New(w.ServerName + " Custom Blocks")
|
||||
for _, be := range gd.CustomBlocks {
|
||||
w.bp.AddBlock(be)
|
||||
}
|
||||
// telling the chunk code what custom blocks there are so it can generate offsets
|
||||
world.InsertCustomBlocks(gd.CustomBlocks)
|
||||
}
|
||||
|
||||
if w.withPacks {
|
||||
|
|
|
@ -0,0 +1,105 @@
|
|||
package behaviourpack
|
||||
|
||||
import (
|
||||
"archive/zip"
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"strings"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/sandertv/gophertunnel/minecraft/protocol"
|
||||
"github.com/sandertv/gophertunnel/minecraft/resource"
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
type BehaviourPack struct {
|
||||
manifest *resource.Manifest
|
||||
blocks []blockBehaviour
|
||||
}
|
||||
|
||||
type description struct {
|
||||
Identifier string `json:"identifier"`
|
||||
IsExperimental bool `json:"is_experimental"`
|
||||
RegisterToCreativeMenu bool `json:"register_to_creative_menu"`
|
||||
}
|
||||
|
||||
type minecraftBlock struct {
|
||||
Description description `json:"description"`
|
||||
Components map[string]interface{} `json:"components"`
|
||||
}
|
||||
|
||||
type blockBehaviour struct {
|
||||
FormatVersion string `json:"format_version"`
|
||||
MinecraftBlock minecraftBlock `json:"minecraft:block"`
|
||||
}
|
||||
|
||||
func check(err error) {
|
||||
if err != nil {
|
||||
logrus.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func rand_seeded_uuid(str string) string {
|
||||
id, _ := uuid.NewRandomFromReader(bytes.NewBufferString(str))
|
||||
return id.String()
|
||||
}
|
||||
|
||||
func New(name string) *BehaviourPack {
|
||||
return &BehaviourPack{
|
||||
manifest: &resource.Manifest{
|
||||
FormatVersion: 2,
|
||||
Header: resource.Header{
|
||||
Name: "pack.name",
|
||||
Description: "pack.description",
|
||||
UUID: rand_seeded_uuid(name + "_datapack"),
|
||||
Version: [3]int{1, 0, 0},
|
||||
MinimumGameVersion: [3]int{1, 16, 0},
|
||||
},
|
||||
Modules: []resource.Module{
|
||||
{
|
||||
Type: "data",
|
||||
UUID: rand_seeded_uuid(name + "_data_module"),
|
||||
Version: [3]int{1, 0, 0},
|
||||
},
|
||||
},
|
||||
Dependencies: []resource.Dependency{},
|
||||
Capabilities: []resource.Capability{},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func (bp *BehaviourPack) AddBlock(block protocol.BlockEntry) {
|
||||
entry := blockBehaviour{
|
||||
FormatVersion: "1.12.0",
|
||||
MinecraftBlock: minecraftBlock{
|
||||
Description: description{
|
||||
Identifier: block.Name,
|
||||
IsExperimental: false,
|
||||
RegisterToCreativeMenu: true,
|
||||
},
|
||||
Components: block.Properties,
|
||||
},
|
||||
}
|
||||
bp.blocks = append(bp.blocks, entry)
|
||||
}
|
||||
|
||||
func (bp *BehaviourPack) Save(w io.Writer) {
|
||||
z := zip.NewWriter(w)
|
||||
defer z.Close()
|
||||
{ // write manifest
|
||||
w, err := z.Create("manifest.json")
|
||||
check(err)
|
||||
check(json.NewEncoder(w).Encode(bp.manifest))
|
||||
}
|
||||
{ // blocks
|
||||
for _, be := range bp.blocks {
|
||||
ns := strings.Split(be.MinecraftBlock.Description.Identifier, ":")
|
||||
name := ns[len(ns)-1]
|
||||
w, err := z.Create(fmt.Sprintf("blocks/%s.json", name))
|
||||
check(err)
|
||||
check(json.NewEncoder(w).Encode(be))
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue