-
Notifications
You must be signed in to change notification settings - Fork 0
/
make_sound_json.pl
executable file
·90 lines (69 loc) · 1.72 KB
/
make_sound_json.pl
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
#!/usr/bin/perl
# This makes a "sounds.json" file covering the music in this datapack.
use warnings;
use strict;
my ($help_screen);
$help_screen = << 'Endofblock';
Usage: make_sound_json.pl <resource pack folder> <output file>
This searches the specified resource pack folder for ".ogg" files and
creates a sounds.json file with the specified output filename/path.
Endofblock
#
# Main Program
my ($rfolder, $outfile);
$rfolder = $ARGV[0];
$outfile = $ARGV[1];
if (!( (defined $rfolder) && (defined $outfile) ))
{
print $help_screen;
}
else
{
my (@flist, $fidx, $thisfile, $thislabel, $thispack);
my ($outtext, $needcomma);
@flist = `find $rfolder|grep ogg`;
# No line break; we add that and an optional comma at the start of each case.
$outtext = '{';
$needcomma = 0;
for ($fidx = 0; defined ($thisfile = $flist[$fidx]); $fidx++)
{
if ($thisfile =~ m/\/assets\/(.*)\/sounds\/(.*)\.ogg/)
{
$thispack = $1;
$thisfile = $2;
$thislabel = $thisfile;
$thislabel =~ s/\W/\./;
if ($needcomma)
{ $outtext .= ','; }
$outtext .= "\n";
$needcomma = 1;
$outtext .= ' "music.kmacleod.' . $thislabel . '": {' . "\n";
$outtext .= << 'Endofblock';
"category": "record",
"sounds": [
{
Endofblock
$outtext .=
' "name": "' . $thispack . ':' . $thisfile . '",' . "\n";
$outtext .= << 'Endofblock';
"stream": true
}
]
Endofblock
# No line break, per above.
$outtext .= ' }';
}
}
$outtext .= "\n" . '}'."\n";
if (!open(OFILE, ">$outfile"))
{
print "### Unable to write to \"$outfile\".\n";
}
else
{
print OFILE $outtext;
close(OFILE);
}
}
#
# This is the end of the file.