mirror of
https://github.com/CosmicStar98/bedrocktool.git
synced 2024-06-16 14:39:44 +00:00
fix packs with same names causing issues
This commit is contained in:
parent
2c87715966
commit
c20e017f0d
|
@ -17,6 +17,7 @@ import (
|
|||
"github.com/bedrock-tool/bedrocktool/ui/messages"
|
||||
"github.com/bedrock-tool/bedrocktool/utils"
|
||||
"github.com/bedrock-tool/bedrocktool/utils/behaviourpack"
|
||||
"github.com/flytam/filenamify"
|
||||
|
||||
"github.com/df-mc/dragonfly/server/block/cube"
|
||||
"github.com/df-mc/dragonfly/server/world"
|
||||
|
@ -424,6 +425,26 @@ func (w *worldsHandler) SaveAndReset() {
|
|||
|
||||
w.serverState.worldCounter += 1
|
||||
|
||||
if w.settings.SaveImage {
|
||||
f, _ := os.Create(folder + ".png")
|
||||
png.Encode(f, w.mapUI.ToImage())
|
||||
f.Close()
|
||||
}
|
||||
|
||||
w.AddPacks(folder)
|
||||
|
||||
// zip it
|
||||
filename := folder + ".mcworld"
|
||||
if err := utils.ZipFolder(filename, folder); err != nil {
|
||||
logrus.Error(err)
|
||||
}
|
||||
logrus.Info(locale.Loc("saved", locale.Strmap{"Name": filename}))
|
||||
//os.RemoveAll(folder)
|
||||
w.Reset(w.CurrentName())
|
||||
w.gui.Message(messages.SetUIState(messages.UIStateMain))
|
||||
}
|
||||
|
||||
func (w *worldsHandler) AddPacks(folder string) {
|
||||
type dep struct {
|
||||
PackID string `json:"pack_id"`
|
||||
Version [3]int `json:"version"`
|
||||
|
@ -470,22 +491,31 @@ func (w *worldsHandler) SaveAndReset() {
|
|||
if err != nil {
|
||||
logrus.Error(err)
|
||||
} else {
|
||||
packNames := make(map[string]int)
|
||||
for _, pack := range packs {
|
||||
packNames[pack.Name()] += 1
|
||||
}
|
||||
|
||||
var rdeps []dep
|
||||
for k, p := range packs {
|
||||
if p.Encrypted() && !p.CanDecrypt() {
|
||||
logrus.Warnf("Cant add %s, it is encrypted", p.Name())
|
||||
for _, pack := range packs {
|
||||
if pack.Encrypted() && !pack.CanDecrypt() {
|
||||
logrus.Warnf("Cant add %s, it is encrypted", pack.Name())
|
||||
continue
|
||||
}
|
||||
logrus.Infof(locale.Loc("adding_pack", locale.Strmap{"Name": k}))
|
||||
name := p.Name()
|
||||
name = strings.ReplaceAll(name, ":", "_")
|
||||
packFolder := path.Join(folder, "resource_packs", name)
|
||||
logrus.Infof(locale.Loc("adding_pack", locale.Strmap{"Name": pack.Name()}))
|
||||
|
||||
packName := pack.Name()
|
||||
if packNames[packName] > 1 {
|
||||
packName += "_" + pack.UUID()
|
||||
}
|
||||
packName, _ = filenamify.FilenamifyV2(packName)
|
||||
packFolder := path.Join(folder, "resource_packs", packName)
|
||||
os.MkdirAll(packFolder, 0o755)
|
||||
utils.UnpackZip(p, int64(p.Len()), packFolder)
|
||||
utils.UnpackZip(pack, int64(pack.Len()), packFolder)
|
||||
|
||||
rdeps = append(rdeps, dep{
|
||||
PackID: p.Manifest().Header.UUID,
|
||||
Version: p.Manifest().Header.Version,
|
||||
PackID: pack.Manifest().Header.UUID,
|
||||
Version: pack.Manifest().Header.Version,
|
||||
})
|
||||
}
|
||||
if len(rdeps) > 0 {
|
||||
|
@ -493,22 +523,6 @@ func (w *worldsHandler) SaveAndReset() {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
if w.settings.SaveImage {
|
||||
f, _ := os.Create(folder + ".png")
|
||||
png.Encode(f, w.mapUI.ToImage())
|
||||
f.Close()
|
||||
}
|
||||
|
||||
// zip it
|
||||
filename := folder + ".mcworld"
|
||||
if err := utils.ZipFolder(filename, folder); err != nil {
|
||||
logrus.Error(err)
|
||||
}
|
||||
logrus.Info(locale.Loc("saved", locale.Strmap{"Name": filename}))
|
||||
//os.RemoveAll(folder)
|
||||
w.Reset(w.CurrentName())
|
||||
w.gui.Message(messages.SetUIState(messages.UIStateMain))
|
||||
}
|
||||
|
||||
func (w *worldsHandler) OnConnect(err error) bool {
|
||||
|
|
|
@ -60,8 +60,7 @@ var PackFromBase = func(pack *resource.Pack) Pack {
|
|||
return b
|
||||
}
|
||||
|
||||
func GetPacks(server *minecraft.Conn) (packs map[string]Pack, err error) {
|
||||
packs = make(map[string]Pack)
|
||||
func GetPacks(server *minecraft.Conn) (packs []Pack, err error) {
|
||||
for _, pack := range server.ResourcePacks() {
|
||||
pack := PackFromBase(pack)
|
||||
if pack.Encrypted() && pack.CanDecrypt() {
|
||||
|
@ -73,9 +72,9 @@ func GetPacks(server *minecraft.Conn) (packs map[string]Pack, err error) {
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
packs[pack.Name()] = &Packb{pack2}
|
||||
packs = append(packs, &Packb{pack2})
|
||||
} else {
|
||||
packs[pack.Name()] = pack
|
||||
packs = append(packs, pack)
|
||||
}
|
||||
}
|
||||
return
|
||||
|
|
Loading…
Reference in New Issue
Block a user