Skip to content

Commit e9bcd8b

Browse files
committed
- Release 2.0.0
1 parent 139d16e commit e9bcd8b

File tree

6 files changed

+125
-26
lines changed

6 files changed

+125
-26
lines changed

append_file.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package main
2+
3+
import "os"
4+
5+
func AppendFile(file string, text string) {
6+
7+
f, err := os.OpenFile(file, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
8+
if err != nil {
9+
panic(err)
10+
}
11+
defer f.Close()
12+
13+
_, err = f.Write([]byte(text))
14+
if err != nil {
15+
panic(err)
16+
}
17+
}

input.go

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,22 @@
11
package main
22

3-
import "fmt"
3+
import (
4+
"bufio"
5+
"fmt"
6+
"os"
7+
s "strings"
8+
)
49

5-
func InputType[T any](prefix string, vartype string) (out T) {
10+
// Read standard in text until a newline Python style
11+
func Input(prefix string) (input string) {
612

713
fmt.Print(prefix)
814

9-
_, err := fmt.Scanf(vartype+"\n", &out)
10-
if err != nil && err.Error() != "unexpected newline" {
15+
reader := bufio.NewReader(os.Stdin)
16+
text, err := reader.ReadString('\n')
17+
if err != nil {
1118
panic(err)
1219
}
13-
return out
14-
}
15-
16-
func Input(prefix string) (out string) {
1720

18-
return fmt.Sprint(InputType[string](prefix, "%s"))
21+
return s.TrimRight(text, "\r\n")
1922
}

main.go

Lines changed: 83 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,40 +4,102 @@ import (
44
"embed"
55
"fmt"
66
"os"
7+
"strconv"
78
s "strings"
89
)
910

1011
//go:embed templates/*
1112
var templates embed.FS
1213

14+
// Gets text content from embedded template file
15+
func getTemplate(file string) (text string) {
16+
data, err := templates.ReadFile("templates/" + file)
17+
Check(err)
18+
return string(data)
19+
}
20+
1321
var version = "2.0.0"
1422

1523
func main() {
16-
fmt.Printf("\n -- Welcome to Datapack Generator %s by RoarkCats --\n", version)
24+
fmt.Printf("\n -- Welcome to Datapack Generator %s by RoarkCats --\n\n", version)
1725

26+
// --- Get datapack info
1827
pack_name := Input(" Datapack Name: ")
1928
pack_namespace := Input(" Datapack Namespace: ")
2029
pack_author := Input(" Datapack Author: ")
21-
pack_ver := getVer()
22-
if pack_ver < 18 && s.ToLower(Input(" Import Rng? (y/n) ")) == "y" {
23-
// make rng
30+
pack_ver := getVer(Input(" Version: "))
31+
32+
pack_ver_min := 0
33+
if pack_ver >= 18 {
34+
inp := Input(" Supported Version Range? : ")
35+
if inp != "" {
36+
pack_ver_min = getVer(inp)
37+
if pack_ver_min > pack_ver {
38+
pack_ver, pack_ver_min = pack_ver_min, pack_ver
39+
}
40+
}
2441
}
25-
fmt.Printf("%s %s %s %d", pack_name, pack_namespace, pack_author, pack_ver)
2642

27-
dat, err := os.ReadFile("./wah.txt")
28-
if err != nil {
29-
// panic(err)
43+
// --- Create folders
44+
_s := "" // legacy folder name support
45+
if pack_ver < 48 {
46+
_s = "s"
47+
}
48+
Check(os.MkdirAll(pack_name+"/data/"+pack_namespace+"/function"+_s, 0755))
49+
Check(os.MkdirAll(pack_name+"/data/minecraft/tags/function"+_s, 0755))
50+
51+
// --- Create files from templates
52+
fillTemplate := func(template string) string {
53+
template = s.ReplaceAll(template, "%name%", pack_name)
54+
template = s.ReplaceAll(template, "%namespace%", pack_namespace)
55+
template = s.ReplaceAll(template, "%author%", pack_author)
56+
template = s.ReplaceAll(template, "%format%", strconv.Itoa(pack_ver))
57+
template = s.ReplaceAll(template, "%min_format%", strconv.Itoa(pack_ver_min))
58+
return template
59+
} // helper funcs to get, fill, and write templates
60+
makePackTemplate := func(filedir string, template string) {
61+
Check(os.WriteFile(pack_name+"/"+filedir, []byte(fillTemplate(getTemplate(template))), 0644))
62+
}
63+
makePackTemplate("data/minecraft/tags/function"+_s+"/load.json", "load.json")
64+
makePackTemplate("data/minecraft/tags/function"+_s+"/tick.json", "tick.json")
65+
makePackTemplate("data/"+pack_namespace+"/function"+_s+"/load.mcfunction", "load.mcfunction")
66+
makePackTemplate("data/"+pack_namespace+"/function"+_s+"/main.mcfunction", "main.mcfunction")
67+
68+
// --- New mcmeta formats
69+
if pack_ver_min == 0 {
70+
makePackTemplate("pack.mcmeta", "pack.mcmeta")
3071
} else {
31-
fmt.Println(string(dat))
72+
makePackTemplate("pack.mcmeta", "pack-range.mcmeta")
73+
}
74+
75+
// --- Import legacy RNG
76+
if pack_ver < 18 && s.ToLower(Input(" Import Rng? (y/n) ")) == "y" {
77+
78+
Check(os.MkdirAll(pack_name+"/data/"+pack_namespace+"/function"+_s+"/rng", 0755))
79+
80+
AppendFile(pack_name+"/data/"+pack_namespace+"/function"+_s+"/load.mcfunction", "\n\nfunction "+pack_namespace+":rng/setup")
81+
82+
makePackTemplate("data/"+pack_namespace+"/function"+_s+"/rng/lcg.mcfunction", "rng/lcg.mcfunction")
83+
makePackTemplate("data/"+pack_namespace+"/function"+_s+"/rng/next_int_lcg.mcfunction", "rng/next_int_lcg.mcfunction")
84+
makePackTemplate("data/"+pack_namespace+"/function"+_s+"/rng/range_lcg.mcfunction", "rng/range_lcg.mcfunction")
85+
makePackTemplate("data/"+pack_namespace+"/function"+_s+"/rng/setup.mcfunction", "rng/setup.mcfunction")
86+
87+
uuid_reset := fillTemplate(getTemplate("rng/uuid_reset.mcfunction"))
88+
if pack_ver < 6 { // uuid reset source (super)legacy support
89+
uuid_reset = s.Replace(uuid_reset, "UUID[0] 1", "UUIDMost 0.00000000023283064365386962890625", 1)
90+
}
91+
Check(os.WriteFile(pack_name+"/"+"data/"+pack_namespace+"/function"+_s+"/rng/uuid_reset.mcfunction", []byte(uuid_reset), 0644))
3292
}
3393

94+
// --- Done!
95+
fmt.Print("\n Done!\n")
96+
3497
// for compilation
35-
// fmt.Scanf("%s")
98+
fmt.Scanf("%s")
3699
}
37100

38-
// Get pack format from "version" (MC or format)
39-
func getVer() (version int) {
40-
ver := Input(" Version: ")
101+
// Prompt pack format from "version" (MC or format)
102+
func getVer(ver string) (version int) {
41103

42104
// basic format number
43105
_, err := fmt.Sscanf(ver, "%d ", &version)
@@ -87,6 +149,13 @@ func getVer() (version int) {
87149
}[minor*100+patch]
88150
return version
89151
}
90-
152+
// else latest
153+
fmt.Println(" Invalid version! Selecting latest.")
91154
return 81
92155
}
156+
157+
func Check(err error) {
158+
if err != nil {
159+
panic(err)
160+
}
161+
}

templates/load.mcfunction

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
tellraw @a {"text":"Thank you for downloading %packname% by %author%!","color":"gold"}
1+
tellraw @a {"text":"Thank you for downloading %name% by %author%!","color":"gold"}
22

3-
function %namespace%:rng/setup
3+
scoreboard objectives add %namespace% dummy

templates/pack-range.mcmeta

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"pack": {
3+
"pack_format": %format%,
4+
"supported_formats": {
5+
"min_inclusive": %min_format%,
6+
"max_inclusive": %format%
7+
},
8+
"description": "By %author%"
9+
}
10+
}

templates/pack.mcmeta

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"pack": {
33
"pack_format": %format%,
4-
"description": "%packname% by %author%"
4+
"description": "By %author%"
55
}
66
}

0 commit comments

Comments
 (0)