Skip to content

Instantly share code, notes, and snippets.

@magneticflux-
Created November 7, 2022 01:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save magneticflux-/91a9f6183c8ac69560f49c7acaf1eef7 to your computer and use it in GitHub Desktop.
Save magneticflux-/91a9f6183c8ac69560f49c7acaf1eef7 to your computer and use it in GitHub Desktop.
A small utility script to generate LambdaBetterGrass data in bulk
#!/usr/bin/env bash
modid='terrestria'
input_base='client/src/main/resources/'
output_base='run/resourcepacks/bettergrass/'
input_resources="$input_base/assets/$modid/"
output_resources="$output_base/assets/$modid/"
# params: search text, (optional) data override, (optional) variant
# If `-d` not passed, an empty data file is generated
# If `-v` not passed, no variants are listed
gen_files() {
local OPTIND arg search data variant
while getopts 's:d:v:' arg; do
case ${arg} in
s) search=${OPTARG} ;;
d) data=${OPTARG} ;;
v) variant=${OPTARG} ;;
*) return 1 ;;
esac
done
readarray -t BLOCK_NAMES < <(find "$input_resources/blockstates/" -type f -printf "%f\n" | grep -E "(^|_)$search(_|.json$)" | perl -ne "print if s/^(.*)\.json$/\1/")
for block in "${BLOCK_NAMES[@]}"; do
echo "$search $data $variant $block"
if [ -z "$data" ]; then # data missing
if [ -z "$variant" ]; then # variant missing
echo "\
{
\"type\": \"layer\",
\"data\": \"$modid:bettergrass/data/$block\"
}" >"$output_resources/bettergrass/states/$block.json"
else # variant present
echo "\
{
\"type\": \"layer\",
\"variants\":{
\"$variant\": {
\"data\": \"$modid:bettergrass/data/$block\"
}
}
}" >"$output_resources/bettergrass/states/$block.json"
fi
# data missing, make empty data file
echo "\
{}" >"$output_resources/bettergrass/data/$block.json"
else # data present
if [ -z "$variant" ]; then # variant missing
echo "\
{
\"type\": \"layer\",
\"data\": \"$data\"
}" >"$output_resources/bettergrass/states/$block.json"
else # variant present
echo "\
{
\"type\": \"layer\",
\"variants\":{
\"$variant\": {
\"data\": \"$data\"
}
}
}" >"$output_resources/bettergrass/states/$block.json"
fi
fi
done
}
gen_files -s 'fence' -v 'waterlogged=false'
gen_files -s 'trapdoor' -v 'waterlogged=false'
gen_files -s 'door'
gen_files -s 'fence_gate'
gen_files -s 'sapling'
gen_files -s 'potted'
gen_files -s 'button' -d 'minecraft:bettergrass/data/button'
gen_files -s 'aloe'
gen_files -s 'agave'
gen_files -s 'dead_grass'
gen_files -s 'tiny_cactus'
gen_files -s 'monsteras'
gen_files -s 'indian_paintbrush'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment