Skip to content

Commit 5a01ef1

Browse files
committed
Added more block templates
1 parent be6dd69 commit 5a01ef1

File tree

15 files changed

+360
-20
lines changed

15 files changed

+360
-20
lines changed

README.md

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,17 @@ To do:
1717

1818
template types:
1919

20-
dummyEntity : Generates a dummy entity with no model / texture that can be used for map making.
21-
zombieEntity : Generates a zombie that won't turn into a drowned.
22-
basicBlock : Generates a basic block. (all blocks use same template texture, all you have to do is change the textures ;P)
23-
slabBlock : Generates a slab block. (Note: custom block geometry is an experimental feature. So you need to enable experimental features in your world to use this.)
24-
skullBlock: Generates a player skull. (just swap out the default texture with your skin, Note: custom block geometry is an experimental feature. So you need to enable experimental features in your world to use this.)
25-
basicItem : Generates a basic item. (it does nothing, but it can be used in other addons.)
26-
fakeArmor : Generates fake armor. (an item that applies a skin to the player when you apply the $name_armor tag. (example: test_armor))
20+
All templates with a $ symbol in the description require experimental world features.
21+
dummyEntity : Generates a dummy entity with no model / texture that can be used for map making.
22+
zombieEntity : Generates a zombie that won't turn into a drowned. (uses standard zombie skin file)
23+
basicBlock : Generates a basic block.
24+
slabBlock : $ Generates a slab block.
25+
skullBlock: $ Generates a player skull. (uses standard steve skin file)
26+
basicItem : Generates a basic item. (it does nothing, but it can be used in other addons.)
27+
fakeArmor : Generates fake armor. (an item that applies a skin to the player when you apply the $name_armor tag. (example: test_armor))
28+
lightBlock : Generates a block that lights up
29+
placeCodeBlock : $ Generates a block that runs a function from the block when placed
30+
playerCodeBlock : $ Generates a block that runs a function from the player that placed it
2731

2832
How to compile:
2933

evils_addon_gen.nim

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ import packIcon
77
import templates/dummyEntity
88
import templates/zombieEntity
99
import templates/basicBlock
10+
import templates/lightBlock
11+
import templates/placeCodeBlock
12+
import templates/playerCodeBlock
1013
import templates/slabBlock
1114
import templates/skullBlock
1215
import templates/basicItem
@@ -16,13 +19,39 @@ import templates/fakeArmor
1619
#define command line options
1720
proc main(args: seq[string]) =
1821
var opts = newParser("evil's addon generator"):
22+
nohelpflag()
23+
#im using my own help flag.
1924
option("-t", "--templateGen")
2025
option("-o", "--outputDir")
26+
flag("-l", "--list")
27+
flag("-h", "--help")
2128
arg("names", nargs = -1)
2229

2330
#parse options
2431
var optGen = opts.parse(args)
2532

33+
if optGen.list:
34+
echo "All templates with a $ symbol in the description require experimental world features.\n\n"
35+
echo "dummyEntity : Generates a dummy entity with no model / texture that can be used for map making.\n"
36+
echo "zombieEntity : Generates a zombie that won't turn into a drowned. (uses standard zombie skin file)\n"
37+
echo "basicBlock : Generates a basic block.\n"
38+
echo "slabBlock : $ Generates a slab block. \n"
39+
echo "skullBlock: $ Generates a player skull. (uses standard steve skin file)\n"
40+
echo "basicItem : Generates a basic item. (it does nothing, but it can be used in other addons.)\n"
41+
echo "fakeArmor : Generates fake armor. (an item that applies a skin to the player when you apply the $name_armor tag. (example: test_armor))\n"
42+
echo "lightBlock : Generates a block that lights up\n"
43+
echo "placeCodeBlock : $ Generates a block that runs a function from the block when placed\n"
44+
echo "playerCodeBlock : $ Generates a block that runs a function from the player that placed it\n"
45+
quit("run any of these templates with the -t option", 0)
46+
47+
if optGen.help:
48+
echo "evil's Addon Generator: Help Section.\n\n"
49+
echo "How to run: \n"
50+
echo "windows: .\\evils_addon_generator.exe -o (name of output folder) -t (template to use) (list of names)\n"
51+
echo "linux: ./evils_addon_generator -o (name of output folder) -t (template to use) (list of names)\n\n"
52+
quit("run it with -l to list all templates", 0)
53+
54+
2655
#count name arguments
2756
var nameCount = 0
2857
for i in optGen.names:
@@ -49,6 +78,21 @@ proc main(args: seq[string]) =
4978
inc(nameNumber, 1)
5079
basicBlock(blocks, root, optGen.outputDir, nameCount, nameNumber)
5180

81+
if optGen.templateGen == "lightBlock":
82+
for lights in optGen.names:
83+
inc(nameNumber, 1)
84+
lightBlock(lights, root, optGen.outputDir, nameCount, nameNumber)
85+
86+
if optGen.templateGen == "placeCodeBlock":
87+
for place in optGen.names:
88+
inc(nameNumber, 1)
89+
placeCodeBlock(place, root, optGen.outputDir, nameCount, nameNumber)
90+
91+
if optGen.templateGen == "playerCodeBlock":
92+
for player in optGen.names:
93+
inc(nameNumber, 1)
94+
playerCodeBlock(player, root, optGen.outputDir, nameCount, nameNumber)
95+
5296
if optGen.templateGen == "slabBlock":
5397
for slabs in optGen.names:
5498
inc(nameNumber, 1)

templates/basicBlock.nim

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@ proc basicBlock*(name: string, root: string, works: string, nameCount: int, name
3636
echo name, " generated loottable as ", name, ".json"
3737

3838
#generate block json for RP
39-
blockJson(works, name, nameNumber, nameCount)
39+
var entry = "./templates/common/RP/block_json_entry.txt"
40+
var base = "./templates/common/RP/block_json.txt"
41+
blockJson(works, name, nameNumber, nameCount, entry, base)
4042
echo name, " generated block entry for ", name
4143

4244
#generate texture json

templates/basicBlock/BP/basicBlock.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
},
1818
"minecraft:map_color": "#FFFFFF",
1919
"minecraft:block_light_absorption": 0,
20-
"minecraft:block_light_emission": 0.250
20+
"minecraft:block_light_emission": 0.00
2121
}
2222
}
2323
}

templates/common/blockJson.nim

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,14 @@ import strutils
33
import strformat
44
import nameReplace
55

6-
proc blockJson*(works: string, name: string, nameNumber: int, nameCount: int)=
6+
proc blockJson*(works: string, name: string, nameNumber: int, nameCount: int, entry: string, baseFile: string)=
77

88
var newJson: bool = false
99
var jsonReplaced: bool = false
10-
var templateFile = "./templates/common/RP/block_json.txt"
11-
var templateEntry = "./templates/common/RP/block_json_entry.txt"
1210
var rpBlockName = fmt"./{works}/RP/blocks.json"
1311

1412
if os.fileExists(rpBlockName) == false and nameNumber == 1:
15-
nameReplace(templateFile, rpBlockName, name)
13+
nameReplace(baseFile, rpBlockName, name)
1614
newJson = true
1715
if newJson == false and nameNumber == 1:
1816
var rpBlockRead2 = readFile(rpBlockName)
@@ -28,7 +26,7 @@ proc blockJson*(works: string, name: string, nameNumber: int, nameCount: int)=
2826
jsonReplaced = true
2927
if nameNumber > 1 or jsonReplaced == true:
3028
var rpBlockEntry = open(rpBlockName, fmAppend)
31-
var rpBlockRead3 = readFile(templateEntry)
29+
var rpBlockRead3 = readFile(entry)
3230
var rpBlockEntryReplace = replace(rpBlockRead3, "$name", name)
3331
write(rpBlockEntry, rpBlockEntryReplace)
3432
close(rpBlockEntry)
@@ -43,10 +41,10 @@ proc terrainJson*(works: string, name: string, nameNumber: int, nameCount: int)=
4341

4442
var rpTextureName = fmt"./{works}/RP/textures/terrain_texture.json"
4543
var newTexture: bool = false
46-
var templateFile = "./templates/common/RP/block_texture.txt"
47-
var templateEntry = "./templates/common/RP/block_texture_entry.txt"
44+
var baseFile = "./templates/common/RP/block_texture.txt"
45+
var entry = "./templates/common/RP/block_texture_entry.txt"
4846
if os.fileExists(rpTextureName) == false and nameNumber == 1:
49-
var textureRead = readFile(templateFile)
47+
var textureRead = readFile(baseFile)
5048
var textureReplace = replace(textureRead, "$name", name)
5149
var textureReplaceTitle = replace(textureReplace, "$works", works)
5250
writeFile(rpTextureName, textureReplaceTitle)
@@ -57,7 +55,7 @@ proc terrainJson*(works: string, name: string, nameNumber: int, nameCount: int)=
5755
os.removeFile(rpTextureName)
5856
writeFile(rpTextureName, textureReplace2)
5957
if newTexture == false or nameNumber > 1:
60-
var textureEntryRead = readFile(templateEntry)
58+
var textureEntryRead = readFile(entry)
6159
var textureEntryReplace = replace(textureEntryRead, "$name", name)
6260
var textureEntryFile = open(rpTextureName, fmAppend)
6361
write(textureEntryFile, textureEntryReplace)

templates/lightBlock.nim

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import os
2+
import strformat
3+
import common/folderExist
4+
import common/nameReplace
5+
import common/blockJson
6+
import common/langFiles
7+
8+
proc lightBlock*(name: string, root: string, works: string, nameCount: int, nameNumber: int)=
9+
10+
#create BP folders
11+
folderExist("BP")
12+
folderExist("BP/blocks")
13+
folderExist("BP/texts")
14+
folderExist("BP/loot_tables")
15+
folderExist("BP/loot_tables/blocks")
16+
echo "generated behaviour folders"
17+
18+
#create RP folders
19+
folderExist("RP")
20+
folderExist("RP/textures")
21+
folderExist("RP/textures/blocks")
22+
folderExist("RP/texts")
23+
echo "generated resource folders"
24+
25+
#define blocks in BP
26+
os.setCurrentDir(root)
27+
var bpBlockTemplate = "./templates/lightBlock/BP/lightBlock.txt"
28+
var bpBlockName = fmt"./{works}/BP/blocks/{name}.json"
29+
nameReplace(bpBlockTemplate, bpBlockName, name)
30+
echo name, " generated block as ", name, ".json"
31+
32+
#generate loot tables
33+
var lootTemplate = "./templates/common/BP/blockLoot.txt"
34+
var lootFile = fmt"./{works}/BP/loot_tables/blocks/{name}.json"
35+
nameReplace(lootTemplate, lootFile, name)
36+
echo name, " generated loottable as ", name, ".json"
37+
38+
#generate block json for RP
39+
var entry = "./templates/lightBlock/RP/blockEntry.txt"
40+
var base = "./templates/lightBlock/RP/blockFile.txt"
41+
blockJson(works, name, nameNumber, nameCount, entry, base)
42+
echo name, " generated block entry for ", name
43+
44+
#generate texture json
45+
terrainJson(works, name, nameNumber, nameCount)
46+
echo name, " generated texture entry for ", name
47+
48+
#generate language files
49+
var rpLang_entry = fmt"tile.evil:{name}.name={name}"
50+
bpLang(works, name)
51+
rpLang(works, name, rpLang_entry)
52+
echo name, " generated lang entries for ", name
53+
54+
var blockTextureFile = "./templates/common/RP/textures/evil.png"
55+
var blockTextureString = fmt"./{works}/RP/textures/blocks/{name}.png"
56+
copyFile(blockTextureFile, blockTextureString)
57+
echo name, " generated texture as ", name, ".json"
58+
59+
os.setCurrentDir(works)
60+
return
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"format_version": "1.12.0",
3+
"minecraft:block": {
4+
"description": {
5+
"identifier": "evil:$name",
6+
"is_experimental": false,
7+
"register_to_creative_menu": true
8+
},
9+
"components": {
10+
"minecraft:loot": "loot_tables/blocks/$name.json",
11+
"minecraft:destroy_time": 3,
12+
"minecraft:explosion_resistance": 3,
13+
"minecraft:friction": 0.6,
14+
"minecraft:flammable": {
15+
"flame_odds": 0,
16+
"burn_odds": 0
17+
},
18+
"minecraft:map_color": "#FFFFFF",
19+
"minecraft:block_light_absorption": 0,
20+
"minecraft:block_light_emission": 1.00
21+
}
22+
}
23+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
, "evil:$name": {"textures": "$name", "sound": "glass"}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"format_version": [
3+
1,
4+
1,
5+
0
6+
],
7+
"evil:$name": {"textures": "$name", "sound": "glass"}

templates/placeCodeBlock.nim

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
import os
2+
import strformat
3+
import common/folderExist
4+
import common/nameReplace
5+
import common/blockJson
6+
import common/langFiles
7+
8+
proc placeCodeBlock*(name: string, root: string, works: string, nameCount: int, nameNumber: int)=
9+
10+
#create BP folders
11+
folderExist("BP")
12+
folderExist("BP/blocks")
13+
folderExist("BP/texts")
14+
folderExist("BP/functions")
15+
folderExist("BP/loot_tables")
16+
folderExist("BP/loot_tables/blocks")
17+
echo "generated behaviour folders"
18+
19+
#create RP folders
20+
folderExist("RP")
21+
folderExist("RP/textures")
22+
folderExist("RP/textures/blocks")
23+
folderExist("RP/texts")
24+
echo "generated resource folders"
25+
26+
#define blocks in BP
27+
os.setCurrentDir(root)
28+
var bpBlockTemplate = "./templates/placeCodeBlock/BP/placeCodeBlock.txt"
29+
var bpBlockName = fmt"./{works}/BP/blocks/{name}.json"
30+
nameReplace(bpBlockTemplate, bpBlockName, name)
31+
echo name, " generated block as ", name, ".json"
32+
33+
#generate loot tables
34+
var lootTemplate = "./templates/common/BP/blockLoot.txt"
35+
var lootFile = fmt"./{works}/BP/loot_tables/blocks/{name}.json"
36+
nameReplace(lootTemplate, lootFile, name)
37+
echo name, " generated loottable as ", name, ".json"
38+
39+
#generate function file
40+
var functionFile = fmt"./{works}/BP/functions/{name}.mcfunction"
41+
writeFile(functionFile, "")
42+
43+
#generate block json for RP
44+
var entry = "./templates/common/RP/block_json_entry.txt"
45+
var base = "./templates/common/RP/block_json.txt"
46+
blockJson(works, name, nameNumber, nameCount, entry, base)
47+
echo name, " generated block entry for ", name
48+
49+
#generate texture json
50+
terrainJson(works, name, nameNumber, nameCount)
51+
echo name, " generated texture entry for ", name
52+
53+
#generate language files
54+
var rpLang_entry = fmt"tile.evil:{name}.name={name}"
55+
bpLang(works, name)
56+
rpLang(works, name, rpLang_entry)
57+
echo name, " generated lang entries for ", name
58+
59+
var blockTextureFile = "./templates/common/RP/textures/evil.png"
60+
var blockTextureString = fmt"./{works}/RP/textures/blocks/{name}.png"
61+
copyFile(blockTextureFile, blockTextureString)
62+
echo name, " generated texture as ", name, ".json"
63+
64+
os.setCurrentDir(works)
65+
return

0 commit comments

Comments
 (0)