https://linen.dev logo
Unable to play unknown soundEvent:
# forum
p
私はこういった手法でRenderScript内で音声パスを直で指定し、音声を再生しようと試みました。```javascript playSound(entity, ModelPackManager.INSTANCE.getResource("minecraft", "sounds/akuoto.ogg"), 1, 1); function playSound(entity, path, volume, pitch){//require: importPackage(Packages.jp.ngt.rtm); and importPackage(Packages.jp.ngt.rtm.modelpack); if(!entity) return; if(RTMCore.VERSION.indexOf("1.7.10") >= 0){//in 1.7.10 RTMCore.proxy.playSound(entity, new ResourceLocation("minecraft", path), volume, pitch); }else{//in 1.12.2 RTMCore.proxy.playSound(entity, ModelPackManager.INSTANCE.getResource("minecraft", path), volume, pitch); } }``` 1.12.2では、無事再生されたのですが、1.7.10では再生されません。ログには`Unable to play unknown soundEvent: minecraft:sounds/akuoto.ogg`と出力されています。どうすればいいでしょうか。
u
サウンドライブラリをそれなりに組んだ経験のある者です✋ unknown soundevent とのことですが おそらく1.12.2 では 音声再生にファイルパスを使えるところを、1.7.10ではminecraft直下にsound.jsonファイルを用意した上、そこに「サウンドイベントの名前」および「サウンドイベントの該当音声ファイルのパス」を書き込まなきゃいけないので おそらくsonud.json側に、 "sounds/akuto.ogg" に合致するイベントが無かったのかな〜?と思いました hi03Soundlib等の構文をご覧になるとよくお分かりいただけるのですが 1.12.2は バックスラッシュ のような「ファイル階層の進行を示す文字 」 は 「ピリオド ( . ) 」で表されます これにより1.12.2ではサウンドスクリプトから直にファイルを読み込めます(sound.jsonを用いなくて良い)、しかし 1.7.10では sound.jsonのイベントを読まなくてはならないため 1.12.2用の「ファイルパス」を、sound.jsonの「 サウンドイベントの名前 」と、一致させてパックを作ることが多いようです 私もこの名称を一致させる設計にならい、サウンドライブラリを制作しています
p
おはようございます。どうやらsound.jsonを設定してないことが理由みたいですね。ありがとうございます。
その場合、やはり他のSoundLibにあやかってassets直下にフォルダ作って、そのsoundsフォルダと同じ階層にsound.jsonを作らないといけない感じですかね
u
そのようになりますね さらには、おそらくassets 直下のサウンドファイルを入れるフォルダは「minecraft」の名前でないと、ファイルを読み込んでくれないと思うので ここのディレクトリ構成(フォルダ構造)は崩さない方が良いと思われます つまり assets ┗minecraft  ┣sounds  ┗sounds.json が望ましいと思います
p
無事動きました。ありがとうございます。