Advertisement
DePhoegon

V2.5.1 - Minecraft block json creation aid.

Apr 25th, 2021 (edited)
1,543
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 14.34 KB | None | 0 0
  1. @echo off
  2. :: Version 2.5.1
  3. :: Corrected Loot Table for Stairs [left out _stair on the item]
  4. :: Version 2.5
  5. :: Corrected name standardization for double slab from pillars & all sided blocks.
  6. :: Version 2.4
  7. :: Fixed Sided blocks doublesided slab verions
  8. :: Addressed slab method.
  9. :: Version 2.2
  10. :: Logic oversites
  11. :: Fixed names & Name variables
  12. :: version 2.1.5
  13. :: Logic Improvments
  14. :: version 2.1
  15. :: fixed slab name schema failure
  16. :: fixed 2nd axis variable name error.
  17. :: tested, forge ready w/ some attention to texture location/names
  18. :: version 2.0
  19. :: includes fixed array calls, typos, slab loot table missing lines added (was missing 3)
  20. :: Added command line entry of blocks.
  21. :: Manual loot table for other blocks still may be needed.
  22. :: creates JSON files for 'Blockstate', 'Block', 'item'(For block), & 'loot_table'
  23. :: Input Block (1 texture blocks, like sand // 3 textured blocks like Sand stone{top,side,bottom}) or Pillar (two textured, & is meant fora pillar block, like basalt)
  24. :: textures not supplied, just named *wink* X}
  25. :: Intended for mods w/ an ability register blocks (forge/etc)
  26. :: Obviously  set enviromental paths correctly, & Your ModID
  27. :: ---
  28. :: batfilename blockname [a/p/s] [n]
  29. :: (stick to minecraft convenction.. red_sand, polished_smooth_rock, etc. etc.)
  30. :: a - block with 1 texture (sand)
  31. :: p - pillar block
  32. :: s - block with 3 textures (like sandstone, top/side/bottom)
  33. :: Only supports 1 base block at a time
  34. :: n - for it to cycle again, and prompt for a new block name & type (leave blank for it to close right after it's done)
  35. :: ---
  36. :: Simplification of json creation for block, stair, & slab variants.
  37. :: Set for Blocks
  38. :: Uses blockname_top, blockname_side, blockname_bottom for blocks with different textures
  39. :: Uses blockname_top, blockname_side for pillar blocks. (texture)
  40.  
  41. goto Start
  42.  
  43. :RE2
  44. if ["%3"]==[""] (
  45.     goto End
  46. ) else (
  47.     set T=%3
  48. )
  49. if %T%==n (goto Nextcycle)
  50. if %T%==N (goto Nextcycle)
  51. :End
  52. exit /b
  53. :Start
  54. set MOD=vanilla_reclaim
  55. set BASEFOLDER=F:\Minecraft-aidfiles\
  56. set BLOCKS=%BASEFOLDER%blockstates\
  57. set BLOCK=%BASEFOLDER%models\block\
  58. set SLAB=%BLOCK%slab\
  59. set STAIR=%BLOCK%stair\
  60. set PILLA=%BLOCK%pillar\
  61. set ITEM=%BASEFOLDER%models\item\
  62. set DROP=%BASEFOLDER%loot_tables\blocks\
  63. if NOT EXIST %BLOCKS% ( mkdir %BLOCKS% )
  64. if NOT EXIST %SLAB% ( mkdir %SLAB% )
  65. if NOT EXIST %STAIR% ( mkdir %STAIR% )
  66. if NOT EXIST %PILLA% ( mkdir %PILLA% )
  67. if NOT EXIST %ITEM% ( mkdir %ITEM% )
  68. if NOT EXIST %DROP% ( mkdir %DROP% )
  69. set FACE[0]=east
  70. set FACE[1]=north
  71. set FACE[2]=south
  72. set FACE[3]=west
  73. set HALF[0]=bottom
  74. set HALF[1]=top
  75. set SHAPE[0]=inner_left
  76. set SHAPE[1]=inner_right
  77. set SHAPE[2]=outer_left
  78. set SHAPE[3]=outer_right
  79. set SHAPE[4]=straight
  80.  
  81. if NOT ["%1"]==[""]  (
  82.     set NAM=%1
  83.     if NOT ["%2"]==[""] (
  84.         set ALLSIDED=%2
  85.         goto Aurgument
  86.     )
  87. )
  88. :Nextcycle
  89. set /p NAM= "Base Block Name: "
  90. :Sid
  91. echo Enter ( A ) if block uses the same texture on all sides
  92. echo Enter ( S ) if it uses a Top, side, & bottom texture that are different
  93. echo Enter ( P ) for Pillars.  Logs & Basalt are pillar blocks
  94. echo Enter ( E ) to exit.
  95. echo Provides Basic loot table only. (It breaks, it drops.  nothing more)
  96. set /p ALLSIDED= "Type of block: "
  97. :Aurgument
  98. if %ALLSIDED%==A ( goto Setallsided )
  99. if %ALLSIDED%==a ( goto Setallsided )
  100. if %ALLSIDED%==S ( goto Topped )
  101. if %ALLSIDED%==s ( goto Topped )
  102. if %ALLSIDED%==P ( goto Pillar )
  103. if %ALLSIDED%==p ( goto Pillar )
  104. if %ALLSIDED%==E ( goto End )
  105. if %ALLSIDED%==e ( goto End )
  106. echo "Valid Entries are ( A, a, S, s, E, e ), or Exit (E)"
  107. goto Sid
  108. :Setallsided
  109. set ALLSIDED=ALL
  110. goto Blockstate
  111. :Pillar
  112. set ALLSIDED=PILL
  113. set AXIS=x
  114. goto Blockstate
  115. :Topped
  116. set ALLSIDED=TOPP
  117. :Blockstate
  118. if %ALLSIDED%==ALL (
  119.     set TopSide=%NAM%
  120.     set SideSide=%NAM%
  121.     set BotSide=%NAM%
  122. )
  123. if %ALLSIDED%==PILL (
  124.     set TopSide=%NAM%_top
  125.     set SideSide=%NAM%_side
  126.     set BotSide=%NAM%_top
  127. )
  128. if %ALLSIDED%==TOPP (
  129.     set TopSide=%NAM%_top
  130.     set SideSide=%NAM%_side
  131.     set BotSide=%NAM%_bottom
  132. )
  133. ::Blockstates
  134. ::Base Block
  135. echo { > %BLOCKS%%NAM%.json
  136. echo   "variants": { >> %BLOCKS%%NAM%.json
  137. if %ALLSIDED%==PILL ( goto Blockstatepill )
  138. echo     "": { >> %BLOCKS%%NAM%.json
  139. echo       "model": "%MOD%:block/%NAM%" >> %BLOCKS%%NAM%.json
  140. echo     } >> %BLOCKS%%NAM%.json
  141. goto Axisout
  142. :Blockstatepill
  143. echo     "axis=%AXIS%": { >> %BLOCKS%%NAM%.json
  144. if %AXIS%==y ( echo       "model": "%MOD%:block/pillar/%NAM%" >> %BLOCKS%%NAM%.json ) else ( echo       "model": "%MOD%:block/pillar/%NAM%", >> %BLOCKS%%NAM%.json )
  145. if %AXIS%==x ( echo       "x": 90, >> %BLOCKS%%NAM%.json )
  146. if %AXIS%==z ( echo       "x": 90 >> %BLOCKS%%NAM%.json )
  147. if %AXIS%==x ( echo       "y": 90 >> %BLOCKS%%NAM%.json )
  148. if %AXIS%==z ( echo     } >> %BLOCKS%%NAM%.json && goto Axisout ) else ( echo     }, >> %BLOCKS%%NAM%.json )
  149. if %AXIS%==x ( set AXIS=y) else ( set AXIS=z)
  150. goto Blockstatepill
  151. :Axisout
  152. echo   } >> %BLOCKS%%NAM%.json
  153. echo } >> %BLOCKS%%NAM%.json
  154.  
  155. :: Slab version
  156. echo { > %BLOCKS%%NAM%_slab.json
  157. set AXIS=bottom
  158. echo   "variants": { >> %BLOCKS%%NAM%_slab.json
  159. :Slabvar
  160. echo     "type=%AXIS%": { >> %BLOCKS%%NAM%_slab.json
  161. if %AXIS%==bottom ( echo "model": "%MOD%:block/slab/%NAM%_slab" >> %BLOCKS%%NAM%_slab.json ) else ( echo "model": "%MOD%:block/slab/%NAM%_slab_%AXIS%" >> %BLOCKS%%NAM%_slab.json )
  162. if %AXIS%==top ( echo     } >> %BLOCKS%%NAM%_slab.json && goto Slabout ) else ( echo     }, >> %BLOCKS%%NAM%_slab.json )
  163. if %AXIS%==bottom ( set AXIS=double) else ( set AXIS=top)
  164. goto Slabvar
  165. :Slabout
  166. echo   } >> %BLOCKS%%NAM%_slab.json
  167. echo } >> %BLOCKS%%NAM%_slab.json
  168.  
  169. :: Stair blocks
  170. set /a OUTER=0
  171. set /a MID=0
  172. set /a INNER=0
  173. echo { > %BLOCKS%%NAM%_stair.json
  174. echo   "variants": { >> %BLOCKS%%NAM%_stair.json
  175. goto Stairloop
  176.  
  177. :Stairloop
  178. set /a YY=0
  179. set uv=no
  180. :: checking using Shape array
  181. :: Inner Left
  182. if %INNER% EQU 0 (
  183.     if %MID% EQU 0 (
  184.         if %OUTER% EQU 0 ( set /a YY=270 )
  185.         if %OUTER% EQU 1 ( set /a YY=180 )
  186.         if %OUTER% EQU 3 ( set /a YY=90 )
  187.     ) else (
  188.         if %OUTER% EQU 1 ( set /a YY=270 )
  189.         if %OUTER% EQU 2 ( set /a YY=90 )
  190.         if %OUTER% EQU 3 ( set /a YY=180 )
  191.     )
  192. )
  193. ::Inner Right
  194. if %INNER% EQU 1 (
  195.     if %MID% EQU 0 (
  196.         if %OUTER% EQU 1 ( set /a YY=270 )
  197.         if %OUTER% EQU 2 ( set /a YY=90 )
  198.         if %OUTER% EQU 3 ( set /a YY=180 )
  199.     ) else (
  200.         if %OUTER% EQU 0 ( set /a YY=90 )
  201.         if %OUTER% EQU 2 ( set /a YY=180 )
  202.         if %OUTER% EQU 3 ( set /a YY=270 )
  203.     )
  204. )
  205. ::Outer Left
  206. if %INNER% EQU 2 (
  207.     if %MID% EQU 0 (
  208.         if %OUTER% EQU 0 ( set /a YY=270 )
  209.         if %OUTER% EQU 1 ( set /a YY=180 )
  210.         if %OUTER% EQU 3 ( set /a YY=90 )
  211.     ) else (
  212.         if %OUTER% EQU 1 ( set /a YY=270 )
  213.         if %OUTER% EQU 2 ( set /a YY=90 )
  214.         if %OUTER% EQU 3 ( set /a YY=180 )
  215.     )
  216. )
  217. ::Outer Right
  218. if %INNER% EQU 3 (
  219.     if %MID% EQU 0 (
  220.         if %OUTER% EQU 1 ( set /a YY=270 )
  221.         if %OUTER% EQU 2 ( set /a YY=90 )
  222.         if %OUTER% EQU 3 ( set /a YY=180 )
  223.     ) else (
  224.         if %OUTER% EQU 0 ( set /a YY=90 )
  225.         if %OUTER% EQU 2 ( set /a YY=180 )
  226.         if %OUTER% EQU 3 ( set /a YY=270 )
  227.     )
  228. )
  229. if %INNER% EQU 4 (
  230.     if %OUTER% EQU 1 ( set /a YY=270 )
  231.     if %OUTER% EQU 2 ( set /a YY=90 )
  232.     if %OUTER% EQU 3 ( set /a YY=180 )
  233. )
  234. :: Call Echo used to properly call the array value
  235. call echo     "facing=%%FACE[%OUTER%]%%,half=%%HALF[%MID%]%%,shape=%%SHAPE[%INNER%]%%": { >> %BLOCKS%%NAM%_stair.json
  236. if %MID% EQU 1 ( set uv=yes)
  237. if %YY% GTR 10 ( set uv=yes)
  238. if %INNER% LSS 2 (
  239.     if %uv%==yes ( set line=      "model": "%MOD%:block/stair/%NAM%_stair_inner",) else ( set line=      "model": "%MOD%:block/stair/%NAM%_stair_inner")
  240. ) else (
  241.     if %INNER% LSS 4 (
  242.         if %uv%==yes ( set line=      "model": "%MOD%:block/stair/%NAM%_stair_outer",) else ( set line=      "model": "%MOD%:block/stair/%NAM%_stair_outer")
  243.     ) else (
  244.         if %uv%==yes ( set line=      "model": "%MOD%:block/stair/%NAM%_stair",) else ( set line=      "model": "%MOD%:block/stair/%NAM%_stair")
  245.     )
  246. )
  247. echo %line% >> %BLOCKS%%NAM%_stair.json
  248. if %MID% EQU 1 ( echo       "x": 180, >> %BLOCKS%%NAM%_stair.json )
  249. if %YY% GTR 10 ( echo       "y": %YY%, >> %BLOCKS%%NAM%_stair.json )
  250. if %uv%==yes ( echo       "uvlock": true >> %BLOCKS%%NAM%_stair.json )
  251. set /a THREE=%OUTER% + %MID% + %INNER%
  252. if %THREE% EQU 8 (
  253.     echo     } >> %BLOCKS%%NAM%_stair.json
  254.     echo   } >> %BLOCKS%%NAM%_stair.json
  255.     echo } >> %BLOCKS%%NAM%_stair.json
  256. ) else (
  257.     echo     }, >> %BLOCKS%%NAM%_stair.json
  258.     if %INNER% LSS 4 (
  259.         set /a INNER=%INNER% + 1
  260.     ) else (
  261.         set /a INNER=0
  262.         if %MID% EQU 0 (
  263.             set /a MID=1
  264.         ) else (
  265.             set /a MID=0
  266.             if %OUTER% LSS 3 (
  267.                 set /a OUTER=%OUTER% + 1
  268.             ) else (
  269.                 echo Failure in logic, this error shouldn't show up,
  270.             )
  271.         )
  272.     )
  273.     goto Stairloop
  274. )
  275.  
  276. ::Block models
  277. :: Check for Pillar first
  278. if %ALLSIDED%==PILL ( goto Pilstart ) else ( goto CubeStart )
  279. set top
  280. :Pilstart
  281. echo { > %PILLA%%NAM%.json
  282. echo   "parent": "minecraft:block/cube_column", >> %PILLA%%NAM%.json
  283. echo   "textures": { >> %PILLA%%NAM%.json
  284. echo     "end": "%MOD%:block/%TopSide%", >> %PILLA%%NAM%.json
  285. echo     "side": "%MOD%:block/%SideSide%" >> %PILLA%%NAM%.json
  286. echo   } >> %PILLA%%NAM%.json
  287. echo } >> %PILLA%%NAM%.json
  288. goto Slabstart
  289.  
  290. ::Cubes
  291. :CubeStart
  292. echo { > %BLOCK%%NAM%.json
  293. if %ALLSIDED%==ALL ( echo   "parent": "minecraft:block/cube_all", >> %BLOCK%%NAM%.json ) else ( echo   "parent": "minecraft:block/cube_bottom_top", >> %BLOCK%%NAM%.json )
  294. echo    "textures": { >> %BLOCK%%NAM%.json
  295. if %ALLSIDED%==ALL (
  296.     echo      "all": "%MOD%:block/%NAM%" >> %BLOCK%%NAM%.json
  297. ) else (
  298.     echo      "top": "%MOD%:block/%TopSide%", >> %BLOCK%%NAM%.json
  299.     echo      "bottom": "%MOD%:block/%BotSide%", >> %BLOCK%%NAM%.json
  300.     echo      "side": "%MOD%:block/%SideSide%" >> %BLOCK%%NAM%.json
  301. )
  302. echo   } >> %BLOCK%%NAM%.json
  303. echo } >> %BLOCK%%NAM%.json
  304.  
  305. ::Slabs
  306. :Slabstart
  307. echo { > %SLAB%%NAM%_slab.json
  308. echo { > %SLAB%%NAM%_slab_double.json
  309. echo { > %SLAB%%NAM%_slab_top.json
  310. echo   "parent": "minecraft:block/slab", >> %SLAB%%NAM%_slab.json
  311. if %ALLSIDED%==TOPP ( echo   "parent": "minecraft:block/cube_bottom_top", >> %SLAB%%NAM%_slab_double.json) else ( echo   "parent": "minecraft:block/cube_column", >> %SLAB%%NAM%_slab_double.json)
  312. echo   "parent": "minecraft:block/slab_top", >> %SLAB%%NAM%_slab_top.json
  313. call :Slabfiles "  "textures": {" all
  314. if %ALLSIDED%==TOPP (
  315.     call :Slabfiles "    "bottom": "%MOD%:block/%BotSide%"," all
  316.     call :Slabfiles "    "top": "%MOD%:block/%TopSide%"," all
  317. ) else (
  318.     call :Slabfiles "    "bottom": "%MOD%:block/%BotSide%","
  319.     call :Slabfiles "    "top": "%MOD%:block/%TopSide%","
  320.     echo     "end": "%MOD%:block/%TopSide%", >> %SLAB%%NAM%_slab_double.json
  321. )
  322. call :Slabfiles "    "side": "%MOD%:block/%SideSide%"" all
  323. call :Slabfiles "  }" all
  324. call :Slabfiles } all
  325. goto Stairs
  326. :Slabfiles
  327. set Bark=%~1
  328. echo %Bark% >> %SLAB%%NAM%_slab.json
  329. if "%~2"=="all" echo %Bark% >> %SLAB%%NAM%_slab_double.json
  330. echo %Bark% >> %SLAB%%NAM%_slab_top.json
  331. exit /b
  332. :Stairs
  333. set BOTT=%NAM%
  334. set TTOPP=%NAM%
  335. set TSIDE=%NAM%
  336.  
  337. echo { > %STAIR%%NAM%_stair.json
  338. echo { > %STAIR%%NAM%_stair_inner.json
  339. echo { > %STAIR%%NAM%_stair_outer.json
  340. call :Stairfiles block
  341. call :Stairfiles "  "textures": {"
  342. call :Stairfiles "    "bottom": "%MOD%:block/%BotSide%","
  343. call :Stairfiles "    "top": "%MOD%:block/%TopSide%","
  344. call :Stairfiles "    "side": "%MOD%:block/%SideSide%""
  345. call :Stairfiles "   }"
  346. call :Stairfiles }
  347. goto Bitem
  348. :Stairfiles
  349. set PARE=%~1
  350. if "%PARE%"=="block" (
  351.     echo   "parent": "minecraft:block/stairs", >> %STAIR%%NAM%_stair.json
  352.     echo   "parent": "minecraft:block/inner_stairs", >> %STAIR%%NAM%_stair_inner.json
  353.     echo   "parent": "minecraft:block/outer_stairs", >> %STAIR%%NAM%_stair_outer.json
  354. ) else (
  355.     echo %PARE% >> %STAIR%%NAM%_stair.json
  356.     echo %PARE% >> %STAIR%%NAM%_stair_inner.json
  357.     echo %PARE% >> %STAIR%%NAM%_stair_outer.json
  358. )
  359. exit /b
  360.  
  361. :: Item versions of the blocks
  362. :Bitem
  363. echo { > %ITEM%%NAM%.json
  364. if %ALLSIDED%==PILL (
  365.     echo    "parent": "%MOD%:block/pillar/%NAM%" >> %ITEM%%NAM%.json
  366. ) else (
  367.     echo    "parent":"%MOD%:block/%NAM%" >> %ITEM%%NAM%.json
  368. )
  369. echo } >> %ITEM%%NAM%.json
  370. ::Slabitem
  371. echo { > %ITEM%%NAM%_slab.json
  372. echo   "parent": "%MOD%:block/slab/%NAM%_slab" >> %ITEM%%NAM%_slab.json
  373. echo } >> %ITEM%%NAM%_slab.json
  374. ::Stairitem
  375. echo { > %ITEM%%NAM%_stair.json
  376. echo   "parent": "%MOD%:block/stair/%NAM%_stair" >> %ITEM%%NAM%_stair.json
  377. echo } >> %ITEM%%NAM%_stair.json
  378.  
  379. ::blockloot
  380. echo { > %DROP%%NAM%.json
  381. echo { > %DROP%%NAM%_stair.json
  382. echo   "type": "minecraft:block", >> %DROP%%NAM%.json
  383. echo   "type": "minecraft:block", >> %DROP%%NAM%_stair.json
  384. echo   "name": "%MOD%:%NAM%" >> %DROP%%NAM%.json
  385. echo   "name": "%MOD%:%NAM%_stair" >> %DROP%%NAM%_stair.json
  386. echo } >> %DROP%%NAM%.json
  387. echo } >> %DROP%%NAM%_stair.json
  388.  
  389. echo { > %DROP%%NAM%_slab.json
  390. call :Slabloot "   "type": "minecraft:block","
  391. call :Slabloot "   "pools": ["
  392. call :Slabloot "     {"
  393. call :Slabloot "       "rolls":1,"
  394. call :Slabloot "       "entries": ["
  395. call :Slabloot "         {"
  396. call :Slabloot "            "type": "minecraft:item","
  397. call :Slabloot "            "functions": ["
  398. call :Slabloot "              {"
  399. call :Slabloot "                "function": "minecraft:set_count","
  400. call :Slabloot "                "conditions": ["
  401. call :Slabloot "                  {"
  402. call :Slabloot "                   "condition": "minecraft:block_state_property","
  403. call :Slabloot "                   "block": "%MOD%:%NAM%_slab","
  404. call :Slabloot "                   "properties": {"
  405. call :Slabloot "                     "type": "double""
  406. call :Slabloot "                    }"
  407. call :Slabloot "                  }"
  408. call :Slabloot "               ],"
  409. call :Slabloot "               "count": 2"
  410. call :Slabloot "             },"
  411. call :Slabloot "             {"
  412. call :Slabloot "               "function": "minecraft:explosion_decay""
  413. call :Slabloot "             }"
  414. call :Slabloot "          ],"
  415. call :Slabloot "          "name": "%MOD%:%NAM%_slab""
  416. call :Slabloot "         }"
  417. call :Slabloot "      ]"
  418. call :Slabloot "    }"
  419. call :Slabloot "  ]"
  420. call :Slabloot }
  421.  
  422. goto RE2
  423. :Slabloot
  424. echo %~1 >> %DROP%%NAM%_slab.json
  425. exit /b
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement