13declare(strict_types=1);
 
   15namespace pocketmine\network\mcpe\protocol\tools\generate_entity_ids;
 
   17use 
function array_flip;
 
   21use 
function file_get_contents;
 
   25use 
function json_decode;
 
   27use 
function str_replace;
 
   28use 
function strtoupper;
 
   30if(count($argv) !== 2){
 
   31    fwrite(STDERR, 
"Required arguments: path to level sound event ID mapping file\n");
 
   32    fwrite(STDERR, 
"Hint: Input file is a JSON file like level_sound_id_map.json in pmmp/BedrockData\n");
 
   36$jsonRaw = file_get_contents($argv[1]);
 
   37if($jsonRaw === 
false){
 
   38    fwrite(STDERR, 
"Failed to read level sound event ID mapping file\n");
 
   42$list = json_decode($jsonRaw, 
true, flags: JSON_THROW_ON_ERROR);
 
   44    fwrite(STDERR, 
"Failed to decode level sound event ID mapping file, expected a JSON object\n");
 
   47$list = array_flip($list);
 
   51    151 => 
"imitate.endermite",
 
   52    195 => 
"lt.reaction.glow_stick",
 
   53    196 => 
"lt.reaction.glow_stick_2",
 
   54    197 => 
"lt.reaction.luminol",
 
   55    198 => 
"lt.reaction.salt",
 
   59foreach(MISSING as $id => $name){
 
   60    if(!isset($list[$id])){
 
   62    }elseif($list[$id] !== $name){
 
   63        echo 
"WARNING: Mismatch of expected name for ID $id: expected $name, got {$list[$id]}\n";
 
   66ksort($list, SORT_NUMERIC);
 
   68$output = fopen(dirname(__DIR__) . 
"/src/types/LevelSoundEvent.php", 
"wb");
 
   70    throw new \RuntimeException(
"Failed to open output file");
 
   73fwrite($output, <<<
'CODE' 
   86declare(strict_types=1);
 
   88namespace pocketmine\network\mcpe\protocol\types;
 
   94final class LevelSoundEvent{
 
   95    private function __construct(){
 
  102foreach($list as $id => $name){
 
  103    $constantName = strtoupper(str_replace(
".", 
"_", $name));
 
  104    if($id !== $prev + 1){
 
  105        fwrite($output, 
"\n");
 
  108    fwrite($output, 
"\tpublic const $constantName = $id;\n");
 
  110fwrite($output, 
"\n");
 
  112fwrite($output, 
"}\n");
 
  115echo 
"Successfully regenerated LevelSoundEvent enum" . PHP_EOL;