Advertisement
DePhoegon

To be studied, -- Not working.

Apr 25th, 2021 (edited)
832
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 12.18 KB | None | 0 0
  1. @echo off
  2. :: Simplification of json creation for slabs and stairs, from either an all sided block, pillar block, or different sided block (Sand stone example)
  3. :: Standard Blockstate for slabs, stairs, Pillars, & blocks
  4. :: Basic & functional Loot table for each block (suggestion to make it robust to your after creation)
  5. :: Uses blockname_top, blockname_side, blockname_bottom for blocks with different textures
  6. :: Uses blockname_top, blockname_side for pillar blocks. (texture)
  7. :: Set for Blocks
  8. :: *edit, overlooked control for UVLOCK.. may not have mattered, but fix anyways.
  9. goto Start
  10.  
  11. :RE2
  12. echo Next Name or exit?
  13. set /p T= "Next (N)"
  14. if %T%==n (goto Top)
  15. if %T%==N (goto Top)
  16. :End
  17. exit
  18. :Start
  19. set BLOCKS=.\blockstate\
  20. set BLOCK=.\models\block\
  21. set SLAB=%BLOCK%slab\
  22. set STAIR=%BLOCK%stair\
  23. set PILLA=%BLOCK%pillar\
  24. set ITEM=.\models\item\
  25. set DROP=.\loot_tables\blocks\
  26. set MOD=vanilla_reclaim
  27. if EXIST %BLOCKS% (
  28.     echo Blockstate folder
  29. ) else (
  30.     mkdir %BLOCKS%
  31.     echo Blockstate folder
  32. )
  33. if EXIST %BLOCK% (
  34.     echo Blocks folder
  35. ) else (
  36.     mkdir %BLOCK%
  37.     echo Block folder
  38. )
  39. if EXIST %SLAB% (
  40.     echo Slabs folder
  41. ) else (
  42.     mkdir %SLAB%
  43.     echo Slabs folder
  44. )
  45. if EXIST %STAIR% (
  46.     echo Stairs folder
  47. ) else (
  48.     mkdir %STAIR%
  49.     echo Stairs folder
  50. )
  51. if EXIST %ITEM% (
  52.     echo Items folder
  53. ) else (
  54.     mkdir %ITEM%
  55.     echo Items folder
  56. )
  57. if EXIST %DROP% (
  58.     echo Blocks Loot tables folder
  59. ) else (
  60.     mkdir %DROP%
  61.     echo Blocks Loot tables folder
  62. )
  63. set FACE[0]=east
  64. set FACE[1]=north
  65. set FACE[2]=south
  66. set FACE[3]=west
  67. set HALF[0]=bottom
  68. set HALF[1]=top
  69. set SHAPE[0]=inner_left
  70. set SHAPE[1]=inner_right
  71. set SHAPE[2]=outer_left
  72. set SHAPE[3]=outer_right
  73. set SHAPE[4]=straight
  74. set /a OUTER=0
  75. set /a MID=0
  76. set /a INNER=0
  77. :Top
  78. set /p NAM= "Base Block Name: "
  79. :Sid
  80. echo Enter ( A ) if block uses the same texture on all sides
  81. echo Enter ( S ) if it uses a Top, side, & bottom texture that are different
  82. echo Enter ( P ) for Pillars.  Logs & Basalt are pillar blocks
  83. echo Enter ( E ) to exit.
  84. echo Provides Basic loot table only. (It breaks, it drops.  nothing more)
  85. set /p ALLSIDED= "Type of block: "
  86. if %ALLSIDED%==A ( goto Setallsided )
  87. if %ALLSIDED%==a ( goto Setallsided )
  88. if %ALLSIDED%==S ( goto Topped )
  89. if %ALLSIDED%==s ( goto Topped )
  90. if %ALLSIDED%==P ( goto Pillar )
  91. if %ALLSIDED%==p ( goto Pillar )
  92. if %ALLSIDED%==E ( goto End )
  93. if %ALLSIDED%==e ( goto End )
  94. echo "Valid Entries are ( A, a, S, s, E, e ), or Exit (E)"
  95. goto Sid
  96. :Setallsided
  97. set ALLSIDED=ALL
  98. goto Blockstate
  99. :Pillar
  100. set ALLSIDED=PILL
  101. set AXIS=x
  102. goto Blockstate
  103. :Topped
  104. set ALLSIDED=TOPP
  105. :Blockstate
  106.  
  107. ::Blockstates
  108. ::Base Block
  109. echo { > %BLOCKS%%NAM%.json
  110. echo   "variants": { >> %BLOCKS%%NAM%.json
  111. if %ALLSIDED%==PILL ( goto Blockstatepill )
  112. echo     "": { >> %BLOCKS%%NAM%.json
  113. echo       "model": "%MOD%:block/%NAM%" >> %BLOCKS%%NAM%.json
  114. echo     } >> %BLOCKS%%NAM%.json
  115. goto Axisout
  116. :Blockstatepill
  117. echo     "axis=%AXIS%": { >> %BLOCKS%%NAM%.json
  118. echo       "model": "%MOD%:block/pillar/%NAM%" >> %BLOCKS%%NAM%.json
  119. if %AXIS%==x ( echo       "x": 90, >> %BLOCKS%%NAM%.json )
  120. if %AXIS%==z ( echo       "x": 90 >> %BLOCKS%%NAM%.json )
  121. if %AXIS%==x ( echo       "y": 90 >> %BLOCKS%%NAM%.json )
  122. if %AXIS%==z ( echo     } >> %BLOCKS%%NAM%.json && goto Axisout ) else ( echo     }, >> %BLOCKS%%NAM%.json )
  123. if %AXIS%==x ( set AXIS=y ) else ( set AXIS=z )
  124. goto Blockstatepill
  125. :Axisout
  126. echo   } >> %BLOCKS%%NAM%.json
  127. echo } >> %BLOCKS%%NAM%.json
  128.  
  129. :: Slab version
  130. echo { > %BLOCKS%%NAM%_slab.json
  131. set AXIS=bottom
  132. echo   "variants": { >> %BLOCKS%%NAM%_slab.json
  133. :Slabvar
  134. echo     "type=%AXIS%": { >> %BLOCKS%%NAM%_slab.json
  135. if %AXIS%==bottom ( echo "model": "%MOD%:block/slab/%NAM%" >> %BLOCKS%%NAM%_slab.json ) else ( echo "model": "%MOD%:block/slab/%NAM%_%AXIS%" >> %BLOCKS%%NAM%_slab.json )
  136. if %AXIS%==top ( echo     } >> %BLOCKS%%NAM%_slab.json && goto Slabout ) else ( echo     }, >> %BLOCKS%%NAM%_slab.json )
  137. if %AXIS%==bottom ( set AXIS=double ) else ( set AXIS=top )
  138. goto Slabvar
  139. :Slabout
  140. echo   } >> %BLOCKS%%NAM%_slab.json
  141. echo } >> %BLOCKS%%NAM%_slab.json
  142.  
  143. :: Stair blocks
  144. echo { > %BLOCKS%%NAM%_stair.json
  145. echo   "variants": { >> %BLOCKS%%NAM%_stair.json
  146. goto Stairloop
  147.  
  148. :Stairloop
  149. set /a YY=0
  150. set uv=no
  151. :: checking using Shape array
  152. :: Inner Left
  153. if %INNER% EQU 0 (
  154.     if %MID% EQU 0 (
  155.         if %OUTER% EQU 0 ( set /a YY=270 )
  156.         if %OUTER% EQU 1 ( set /a YY=180 )
  157.         if %OUTER% EQU 3 ( set /a YY=90 )
  158.     ) else (
  159.         if %OUTER% EQU 1 ( set /a YY=270 )
  160.         if %OUTER% EQU 2 ( set /a YY=90 )
  161.         if %OUTER% EQU 3 ( set /a YY=180 )
  162.     )
  163. )
  164. ::Inner Right
  165. if %INNER% EQU 1 (
  166.     if %MID% EQU 0 (
  167.         if %OUTER% EQU 1 ( set /a YY=270 )
  168.         if %OUTER% EQU 2 ( set /a YY=90 )
  169.         if %OUTER% EQU 3 ( set /a YY=180 )
  170.     ) else (
  171.         if %OUTER% EQU 0 ( set /a YY=90 )
  172.         if %OUTER% EQU 2 ( set /a YY=180 )
  173.         if %OUTER% EQU 3 ( set /a YY=270 )
  174.     )
  175. )
  176. ::Outer Left
  177. if %INNER% EQU 2 (
  178.     if %MID% EQU 0 (
  179.         if %OUTER% EQU 0 ( set /a YY=270 )
  180.         if %OUTER% EQU 1 ( set /a YY=180 )
  181.         if %OUTER% EQU 3 ( set /a YY=90 )
  182.     ) else (
  183.         if %OUTER% EQU 1 ( set /a YY=270 )
  184.         if %OUTER% EQU 2 ( set /a YY=90 )
  185.         if %OUTER% EQU 3 ( set /a YY=180 )
  186.     )
  187. )
  188. ::Outer Right
  189. if %INNER% EQU 3 (
  190.     if %MID% EQU 0 (
  191.         if %OUTER% EQU 1 ( set /a YY=270 )
  192.         if %OUTER% EQU 2 ( set /a YY=90 )
  193.         if %OUTER% EQU 3 ( set /a YY=180 )
  194.     ) else (
  195.         if %OUTER% EQU 0 ( set /a YY=90 )
  196.         if %OUTER% EQU 2 ( set /a YY=180 )
  197.         if %OUTER% EQU 3 ( set /a YY=270 )
  198.     )
  199. )
  200. if %INNER% EQU 4 (
  201.     if %OUTER% EQU 1 ( set /a YY=270 )
  202.     if %OUTER% EQU 2 ( set /a YY=90 )
  203.     if %OUTER% EQU 3 ( set /a YY=180 )
  204. )
  205. echo     "facing=%%FACE[%OUTER%]%%,half=%%HALF[%MID%]%%,shame=%%SHAPE[%INNER%]%%": { >> %BLOCKS%%NAM%_stair.json
  206. if %INNER% LSS 2 (
  207.     echo       "model": "%MOD%:block/stair/%NAM%_stair_inner", >> %BLOCKS%%NAM%_stair.json
  208. ) else (
  209.     if %INNER% LSS 4 (
  210.         echo       "model": "%MOD%:block/stair/%NAM%_stair_outer", >> %BLOCKS%%NAM%_stair.json
  211.     ) else (
  212.         echo       "model": "%MOD%:block/stair/%NAM%_stair", >> %BLOCKS%%NAM%_stair.json
  213.     )
  214. )
  215. if %MID% EQU 1 (
  216.     echo       "x": 180, >> %BLOCKS%%NAM%_stair.json
  217.     set uv=yes
  218. )
  219. if %YY% GTR 10 (
  220.     echo       "y": %YY%, >> %BLOCKS%%NAM%_stair.json
  221.     set uv=yes
  222. )
  223. if %uv%==yes ( echo       "uvlock": true >> %BLOCKS%%NAM%_stair.json )
  224. if /a %OUTER% + %MID% + %INNER% EQU 8 (
  225.     echo     } >> %BLOCKS%%NAM%_stair.json
  226. ) else (
  227.     echo     }, >> %BLOCKS%%NAM%_stair.json
  228.     if %INNER% LSS 4 (
  229.         set /a INNER=%INNER% + 1
  230.     ) else (
  231.         set /a INNER=0
  232.         if %MID% EQU 0 (
  233.             set /a MID=1
  234.         ) else (
  235.             set /a MID=0
  236.             if %OUTER% LSS 3 (
  237.                 set /a OUTER=%OUTER% + 1
  238.             ) else (
  239.                 echo Failure in logic, this error shouldn't show up.
  240.                 pause
  241.             )
  242.         )
  243.     )
  244.     goto Stairloop
  245. )
  246.  
  247. ::Block models
  248. :: Check for Pillar first
  249. if %ALLSIDED%==PILL ( goto Pilstart ) else ( goto CubeStart )
  250. :Pilstart
  251. echo { > %PILLA%%NAM%.json
  252. echo   "parent": "minecraft:block/cube_column", >> %PILLA%%NAM%.json
  253. echo   "textures": { >> %PILLA%%NAM%.json
  254. echo     "end": "%MOD%:block/%NAM%_top", >> %PILLA%%NAM%.json
  255. echo     "side": "%MOD%:block/%NAM%_side" >> %PILLA%%NAM%.json
  256. echo   } >> %PILLA%%NAM%.json
  257. echo } >> %PILLA%%NAM%.json
  258. goto Slabstart
  259.  
  260. ::Cubes
  261. :CubeStart
  262. echo { > %BLOCK%%NAM%.json
  263. if %ALLSIDED%==ALL ( echo   "parent": "minecraft:block/cube_all", >> %BLOCK%%NAM%.json ) else ( echo   "parent": "minecraft:block/cube_bottom_top", >> %BLOCK%%NAM%.json )
  264. echo    "textures": { >> %BLOCK%%NAM%.json
  265. if %ALLSIDED%==ALL (
  266.     echo      "all": "%MOD%:block/%NAM%" >> %BLOCK%%NAM%.json
  267. ) else (
  268.     echo      "top": "%MOD%:block/%NAM%_top", >> %BLOCK%%NAM%.json
  269.     echo      "bottom": "%MOD%:block/%NAM%_bottom", >> %BLOCK%%NAM%.json
  270.     echo      "side": "%MOD%:block/%NAM%_side" >> %BLOCK%%NAM%.json
  271. )
  272. echo   } >> %BLOCK%%NAM%.json
  273. echo } >> %BLOCK%%NAM%.json
  274.  
  275. ::Slabs
  276. :Slabstart
  277. call :Slabfiles {
  278. echo   "parent": "minecraft:block/slab", >> %SLAB%%NAM%_slab.json
  279. echo   "parent": "minecraft:block/cube_column", >> %SLAB%%NAM%_double.json
  280. echo   "parent": "minecraft:block/slab_top", >> %SLAB%%NAM%_top.json
  281. call :Slabfiles "  "textures": {"
  282. echo     "bottom": "%MOD%:block/%NAM%_top", >> %SLAB%%NAM%_slab.json
  283. echo     "end": "%MOD%:block/%NAM%_top", >> %SLAB%%NAM%_double.json
  284. echo     "bottom": "%MOD%:block/%NAM%_top", >> %SLAB%%NAM%_top.json
  285. echo     "top": "%MOD%:block/%NAM%_top", >> %SLAB%%NAM%_slab.json
  286. call :Slabfiles "    "side": "%MOD%:block/%NAM%_side""
  287. echo     "top": "%MOD%:block/%NAM%_top", >> %SLAB%%NAM%_top.json
  288. call :Slabfiles "  }"
  289. call :Slabfiles }
  290. goto Stairs
  291. :Slabfiles
  292. set Bark=%~1
  293. echo %Bark% >> %SLAB%%NAM%_slab.json
  294. echo %Bark% >> %SLAB%%NAM%_double.json
  295. echo %Bark% >> %SLAB%%NAM%_top.json
  296. exit /b
  297. :Stairs
  298. set BOTT=%NAM%
  299. set TTOPP=%NAM%
  300. set TSIDE=%NAM%
  301. if %ALLSIDED%==TOPP (
  302.     set BOTT=%BOTT%_bottom
  303.     set TTOPP=%TTOPP%_top
  304.     set TSIDE=%TSIDE%_side
  305. )
  306. if %ALLSIDED%==PILL (
  307.     set BOTT=%BOTT%_top
  308.     set TTOPP=%TTOPP%_top
  309.     set TSIDE=%TSIDE%_side
  310. )
  311.  
  312. call :Stairfiles {
  313. call :Stairfiles block
  314. call :Stairfiles "  "textures": {"
  315. call :Stairfiles "    "bottom": "%MOD%:block/%BOTT%","
  316. call :Stairfiles "    "top": "%MOD%:block/%TTOPP%","
  317. call :Stairfiles "    "side": "%MOD%:block/%TSIDE%""
  318. call :Stairfiles "   }"
  319. call :Stairfiles }
  320. goto Bitem
  321. :Stairfiles
  322. set PARE=%~1
  323. if %PARE%==block (
  324.     echo   "parent": "minecraft:block/stairs", >> %STAIR%%NAM%_stair.json
  325.     echo   "parent": "minecraft:block/inner_stairs", >> %STAIR%%NAM%_stair_inner.json
  326.     echo   "parent": "minecraft:block/outer_stairs", >> %STAIR%%NAM%_stair_outer.json
  327. ) else (
  328.     echo %PARE% >> %STAIR%%NAM%_stair.json
  329.     echo %PARE% >> %STAIR%%NAM%_stair_inner.json
  330.     echo %PARE% >> %STAIR%%NAM%_stair_outer.json
  331. )
  332. exit /b
  333.  
  334. :: Item versions of the blocks
  335. :Bitem
  336. echo { > %ITEM%%NAM%.json
  337. if %ALLSIDED%==PILL (
  338.     echo    "parent": "%MOD%:block/pillar/%NAM%" >> %ITEM%%NAM%.json
  339. ) else (
  340.     echo    "parent":"%MOD%:block/%NAM%" >> %ITEM%%NAM%.json
  341. )
  342. echo } >> %ITEM%%NAM%.json
  343. ::Slabitem
  344. echo { > %ITEM%%NAM%_slab.json
  345. echo   "parent": "%MOD%:block/slab/%NAM%_slab" >> %ITEM%%NAM%_slab.json
  346. echo } >> %ITEM%%NAM%_slab.json
  347. ::Stairitem
  348. echo { > %ITEM%%NAM%_stair.json
  349. echo   "parent": "%MOD%:block/stair/%NAM%_stair" >> %ITEM%%NAM%_stair.json
  350. echo } >> %ITEM%%NAM%_stair.json
  351.  
  352. ::blockloot
  353. echo { > %DROP%%NAM%.json
  354. echo { > %DROP%%NAM%_stair.json
  355. echo   "type": "minecraft:block", >> %DROP%%NAM%.json
  356. echo   "type": "minecraft:block", >> %DROP%%NAM%_stair.json
  357. echo   "name": "%MOD%:%NAM%" >> %DROP%%NAM%.json
  358. echo   "name": "%MOD%:%NAM%" >> %DROP%%NAM%_stair.json
  359. echo } >> %DROP%%NAM%.json
  360. echo } >> %DROP%%NAM%_stair.json
  361. call :Slabloot {
  362. call :Slabloot "   "type": "minecraft:block","
  363. call :Slabloot "   "pools": ["
  364. call :Slabloot "     {"
  365. call :Slabloot "       "rolls":1,"
  366. call :Slabloot "       "entries": ["
  367. call :Slabloot "         {"
  368. call :Slabloot "            "type": "minecraft:item","
  369. call :Slabloot "            "function": "minecraft:set_count","
  370. call :Slabloot "            "conditions": ["
  371. call :Slabloot "              {"
  372. call :Slabloot "                 "condition": "minecraft:block_state_property","
  373. call :Slabloot "                 "block": "%MOD%:%NAM%_slab","
  374. call :Slabloot "                 "properties": {"
  375. call :Slabloot "                    "type": "double""
  376. call :Slabloot "                 }"
  377. call :Slabloot "               }"
  378. call :Slabloot "             ],"
  379. call :Slabloot "             "count":2"
  380. call :Slabloot "           },"
  381. call :Slabloot "           {"
  382. call :Slabloot "             "function": "minecraft:explosion_decay""
  383. call :Slabloot "           }"
  384. call :Slabloot "         ],"
  385. call :Slabloot "         "name": "%MOD%:%NAM%_slab","
  386. call :Slabloot "        }"
  387. call :Slabloot "      ]"
  388. call :Slabloot "    }"
  389. call :Slabloot "  ]"
  390. call :Slabloot }
  391.  
  392. goto RE2
  393. :Slabloot
  394. echo %~1 >> %DROP%%NAM%_slab.json
  395. exit /b
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement