forked from devendrn/newb-x-mcbe
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpack.sh
executable file
·158 lines (142 loc) · 4.3 KB
/
pack.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#!/bin/bash
# pack.sh usage:
# - linux: (android pack only)
# pack.sh -v 15.0 -m "Custom name (optional)"
# - bash on windows: (windows and android pack)
# pack.sh win -v 15.0 -m "Custom name" -p windows
# pack.sh win -v 15.0 -m "Custom name" -p android
# materials to compile for default
DEFAULT_MATERIALS="RenderChunk Clouds Sky EndSky LegacyCubemap Actor"
# subpacks:
# OPTIONS = subpack options
# NAMES = names/descriptions for options
# MATERIALS = materials to compile for options
SUBPACK_OPTIONS=(
DEFAULT
NO_WAVE
NO_FOG
NO_WAVE_NO_FOG
CHUNK_ANIM
ALWAYS_REFLECTION
AR_SPECTRUM
AR_NEON_CLOUDS
AR_BETTER_CLOUDS
)
SUBPACK_NAMES=(
"§bDefault"
"§bNo wave"
"§bNo fog"
"§bNo wave, No fog"
"§bChunk loading animation"
"§bOptimised Always Reflection§r\n- Recommended for low end devices"
"§bAlways Reflection - Spectrum§r\n- Not recommended for low end devices\n- Chunk Loading animation\n- Always Reflection\n- Better Aurora (Emissive and different colors)\n- Less Vanilla water texture\n- Better Aurora Velocity"
"§bAlways Reflection - Neon clouds§r\n-Always Reflection\n- Neon Clouds (Night time)"
"§bAlways Reflection with Better Clouds"
)
SUBPACK_MATERIALS=(
"RenderChunk"
"RenderChunk"
"RenderChunk"
"RenderChunk"
"RenderChunk"
"RenderChunk"
"RenderChunk Clouds"
"RenderChunk Clouds"
"RenderChunk Clouds"
)
BUILD_SCRIPT="./build.sh"
PACK_DIR="pack"
CONFIG_FILE="include/newb_config_legacy.h"
PLATFORM=android
# version format: tag.commits
VERSION=15.0
if command -v git &> /dev/null; then
GIT_TAG=$(git describe --tags)
GIT_TAG=${GIT_TAG/v/}
GIT_TAG=(${GIT_TAG//-/ })
if [ ${#GIT_TAG[*]} == 3 ]; then
VERSION=${GIT_TAG[0]}.${GIT_TAG[1]}
elif [ -n "${GIT_TAG[0]}" ]; then
VERSION=${GIT_TAG[0]}.0
fi
fi
CUSTOM=
ARG_MODE=""
for t in "$@"; do
if [ "$t" == "-v" ] || [ "$t" == "-m" ] || [ "$t" == "-p" ]; then
ARG_MODE="$t"
continue
elif [ "$ARG_MODE" == "-v" ]; then
VERSION="$t"
elif [ "$ARG_MODE" == "-m" ]; then
CUSTOM="$t"
elif [ "$ARG_MODE" == "-p" ]; then
PLATFORM="$t"
elif [ -z "$ARG_MODE" ]; then
# using bash on win
if [ "$t" == "win" ]; then
BUILD_SCRIPT="./build.bat"
fi
fi
ARG_MODE=
shift
done
BUILD_SCRIPT="$BUILD_SCRIPT -p $PLATFORM"
BUILD_DIR="build/$PLATFORM"
TEMP_PACK_DIR="$BUILD_DIR/temp"
MANIFEST="$TEMP_PACK_DIR/manifest.json"
echo -e ">> CREATE PACK FOLDER:\n - $TEMP_PACK_DIR"
mkdir -p $TEMP_PACK_DIR/renderer/materials
cp -rf $PACK_DIR/* $TEMP_PACK_DIR
echo ">> UPDATE MANIFEST"
if [ "$PLATFORM" == "windows" ]; then
sed -i "s/\%w/Only works with BetterRenderDragon/" $MANIFEST
else
sed -i "s/\%w/Only works with Patched Minecraft/" $MANIFEST
fi
if [ -z "$CUSTOM" ]; then
sed -i "s/\%c//" $MANIFEST
else
sed -i "s/\%c/- §b$CUSTOM/" $MANIFEST
fi
sed -i "s/\"version\": \[.*]/\"version\": [0, ${VERSION/./, }]/g" $MANIFEST
sed -i "s/\%v/v$VERSION ${PLATFORM^}/g" $MANIFEST
echo -e " - platform: $PLATFORM\n - version: 0.$VERSION\n - custom name: $CUSTOM"
echo ">> BUILD MATERIALS"
rm -f $BUILD_DIR/*.material.bin
$BUILD_SCRIPT -m $DEFAULT_MATERIALS
mv -f $BUILD_DIR/*.material.bin $TEMP_PACK_DIR/renderer/materials/
echo ">> BUILD SUBPACKS"
SUBPACK_COUNT=${#SUBPACK_OPTIONS[@]}
CONTENT=
for ((s=0; s<$SUBPACK_COUNT; s+=1)); do
OPTION=${SUBPACK_OPTIONS[s]}
S_MATS=${SUBPACK_MATERIALS[s]}
S_DIR=$TEMP_PACK_DIR/subpacks/${OPTION,,}/renderer/materials
mkdir -p $S_DIR
echo -n " - ${OPTION}: "
if [ -z "$S_MATS" ]; then
echo "done"
else
sed -i "3s/.*/#define $OPTION/" $CONFIG_FILE
STAT=($($BUILD_SCRIPT -m $S_MATS | tail -n 1))
if [ "${STAT[0]}" == "Compiling" ]; then
mv $BUILD_DIR/*.material.bin $S_DIR
echo "done"
else
echo "failed"
fi
fi
# quote special chars used by sed
DESCRIPTION="$(<<< "${SUBPACK_NAMES[s]}" sed -e 's`[][\\/.*^$]`\\&`g')"
CONTENT="$CONTENT {\"folder_name\": \"${OPTION,,}\", \"name\": \"$DESCRIPTION\", \"memory_tier\": 1},\n"
done
sed -i "s/\"metadata/\"subpacks\": [\n${CONTENT%,*}\n ],\n \"metadata/" $MANIFEST
sed -i "3s/.*/\/\/ line 3 reserved/" $CONFIG_FILE
# pack if zip exists
if command -v zip &> /dev/null; then
cd $TEMP_PACK_DIR
ZIP_FILE="newb-x-$VERSION-$PLATFORM.mcpack"
rm -f $ZIP_FILE
zip -rq9 ../$ZIP_FILE ./* && echo -e ">> PACKED ZIP\n - $ZIP_FILE"
fi