diff --git a/src/main/resources/assets/israel_simulator/sounds.json b/src/main/resources/assets/israel_simulator/sounds.json index 3a868ad..7eef297 100644 --- a/src/main/resources/assets/israel_simulator/sounds.json +++ b/src/main/resources/assets/israel_simulator/sounds.json @@ -10,7 +10,7 @@ "music.cultural.klezmer": { "sounds": [ { - "name": "minecraft:music/game/creative1", + "name": "minecraft:music/game/creative/biome_fest", "stream": true } ] @@ -18,14 +18,14 @@ "music.cultural.shabbat_shalom": { "sounds": [ { - "name": "minecraft:music/game/calm2", + "name": "minecraft:music/game/clark", "stream": true } ] }, "ambient.city.tel_aviv": { "sounds": [ - "minecraft:ambient/underwater/loop" + "minecraft:ambient/underwater/underwater_ambience" ] }, "ambient.city.jerusalem": { @@ -35,17 +35,17 @@ }, "ambient.city.jaffa": { "sounds": [ - "minecraft:block/bell/use" + "minecraft:block/bell/bell_use01" ] }, "ambient.event.speech_crowd": { "sounds": [ - "minecraft:entity/villager/ambient" + "minecraft:mob/villager/idle1" ] }, "ambient.event.market_bustle": { "sounds": [ - "minecraft:entity/villager/trade" + "minecraft:mob/villager/haggle1" ] }, "audio.festival.hanukkah_chime": { @@ -55,7 +55,7 @@ }, "audio.festival.shabbat_candle": { "sounds": [ - "minecraft:block/amethyst_block/chime" + "minecraft:block/amethyst/shimmer" ] }, "entity.bibi_boss.ambient": { @@ -77,12 +77,12 @@ }, "entity.bibi_boss.speech": { "sounds": [ - "minecraft:mob/evoker/prepare_attack" + "minecraft:mob/evocation_illager/prepare_attack1" ] }, "entity.bibi_boss.enrage": { "sounds": [ - "minecraft:entity/wither/ambient" + "minecraft:mob/wither/idle1" ] }, "music.boss.bibi_theme": { @@ -103,22 +103,22 @@ }, "entity.bicycle.bell": { "sounds": [ - "minecraft:block/bell/use" + "minecraft:block/bell/bell_use01" ] }, "entity.bus.horn": { "sounds": [ - "minecraft:item/goat_horn/sound0" + "minecraft:item/goat_horn/call0" ] }, "entity.train.whistle": { "sounds": [ - "minecraft:item/goat_horn/sound1" + "minecraft:item/goat_horn/call1" ] }, "entity.transport.travel": { "sounds": [ - "minecraft:entity/enderman/teleport" + "minecraft:mob/endermen/portal" ] }, "ui.landmark_discovered": { @@ -129,14 +129,14 @@ "event.air_raid_siren": { "sounds": [ "minecraft:block/bell/resonate", - "minecraft:entity/warden/sonic_boom", - "minecraft:block/sculk_shrieker/shriek" + "minecraft:mob/warden/sonic_boom1", + "minecraft:block/sculk_shrieker/shriek1" ] }, "event.plane_jet": { "sounds": [ - "minecraft:entity/ender_dragon/growl", - "minecraft:ambient/underwater/loop" + "minecraft:mob/enderdragon/growl1", + "minecraft:ambient/underwater/underwater_ambience" ] } } \ No newline at end of file diff --git a/src/test/java/com/israelsimulator/validation/DataAndResourceValidationTest.java b/src/test/java/com/israelsimulator/validation/DataAndResourceValidationTest.java index 9b69701..9415173 100644 --- a/src/test/java/com/israelsimulator/validation/DataAndResourceValidationTest.java +++ b/src/test/java/com/israelsimulator/validation/DataAndResourceValidationTest.java @@ -306,6 +306,55 @@ void testSoundsJsonValidation() throws IOException { } } + /** + * Vanilla sound files referenced by sounds.json, checked one by one against the 26.2 asset index. + * A name missing from the index is silently dropped by the client ("File ... does not exist"). + * Add a name here only after checking it exists in the asset index. + */ + private static final java.util.Set VERIFIED_VANILLA_SOUND_FILES = java.util.Set.of( + "ambient/cave/cave1", + "ambient/underwater/underwater_ambience", + "block/amethyst/shimmer", + "block/bell/bell_use01", + "block/bell/resonate", + "block/sculk_shrieker/shriek1", + "item/goat_horn/call0", + "item/goat_horn/call1", + "mob/enderdragon/growl1", + "mob/endermen/portal", + "mob/evocation_illager/prepare_attack1", + "mob/villager/death", + "mob/villager/haggle1", + "mob/villager/hit1", + "mob/villager/hit2", + "mob/villager/idle1", + "mob/villager/idle2", + "mob/warden/sonic_boom1", + "mob/wither/idle1", + "music/game/clark", + "music/game/creative/biome_fest", + "ui/toast/challenge_complete"); + + @Test + @DisplayName("sounds.json only references vanilla sound files that exist in 26.2") + void testVanillaSoundFilesExist() throws IOException { + Path soundsJsonPath = RESOURCES_PATH.resolve(Paths.get("assets", IsraelSimulator.MOD_ID, "sounds.json")); + try (FileReader reader = new FileReader(soundsJsonPath.toFile())) { + JsonObject soundsJson = GSON.fromJson(reader, JsonObject.class); + for (Map.Entry event : soundsJson.entrySet()) { + for (JsonElement entry : event.getValue().getAsJsonObject().getAsJsonArray("sounds")) { + String name = entry.isJsonObject() + ? entry.getAsJsonObject().get("name").getAsString() + : entry.getAsString(); + if (!name.startsWith("minecraft:")) continue; + String file = name.substring("minecraft:".length()); + assertTrue(VERIFIED_VANILLA_SOUND_FILES.contains(file), + event.getKey() + " references a vanilla sound file that does not exist: " + name); + } + } + } + } + @Test @DisplayName("Hava Nagila disc sound is a non-empty bundled ogg, not a vanilla fallback") void testHavaNagilaDiscOggPresent() throws IOException { diff --git a/test.md b/test.md index 77924b6..4b9bb38 100644 --- a/test.md +++ b/test.md @@ -930,3 +930,12 @@ Non provato dall'utente in gioco. - Problema riscontrato: in `assets/israel_simulator/blockstates/` c'era `menorah_test.json` con solo `{"test":"ok"}`. Non è un blockstate valido e non esiste nessun blocco `menorah_test`. - Funzionamento atteso: nei blockstate ci sono solo i file dei blocchi registrati. - Soluzione: file cancellato, con l'ok di Riccardo. + +## Suoni vanilla con percorsi sbagliati: 13 eventi della mod muti +- Problema riscontrato: in gioco (seed 777, client NeoForge 26.2) il log mostrava 17 avvisi `File minecraft:sounds/... does not exist`. `sounds.json` usava nomi di file vanilla che non esistono, per esempio `entity/villager/trade`, `block/bell/use`, `music/game/calm2` e `item/goat_horn/sound0`. Così erano muti o incompleti: musica klezmer e Shabbat Shalom, ambiente di Tel Aviv, Giaffa e mercato, folla, candela dello Shabbat, voce e rabbia del boss, campanello della bici, clacson del bus, fischio del treno, viaggio in trasporto, sirena antiaerea e jet dell'aereo sulle Torri Gemelle. +- Funzionamento atteso: ogni evento sonoro suona davvero e nel log non ci sono avvisi di file mancanti. +- Soluzione: ogni nome è stato sostituito con il file vanilla vero, controllato sull'indice degli asset 26.2. Per esempio `mob/villager/haggle1`, `block/bell/bell_use01`, `music/game/clark`, `item/goat_horn/call0`, `mob/endermen/portal` e `block/amethyst/shimmer`. Il nuovo test `testVanillaSoundFilesExist` controlla che `sounds.json` usi solo file vanilla verificati. + +## Betatesting in gioco del 2 novembre 2026 (seed 777, build CI di main 532fbe5) +- Superati: Welcome to Israel, Tel Aviv, Tel Aviv di notte, Gerusalemme e Muro del Pianto, preghiera al Kotel (5 diamanti, biglietto consumato), Kippah al gatto, Dead Sea Tourist (galleggiare e fango), Blessed Trader (scambio con la Corona del Rabbino), hummus che lascia la ciotola, sabich che lascia nella griglia la ciotola della tahini, Menorah (modello, candele 1 e 2 accese con l'acciarino, spenta con shift + click), aereo sulle Torri Gemelle (arriva entro un minuto, impatto, "Brace for Impact"), Shabbat (annuncio, rigenerazione a riposo, "Shabbat Shalom", avviso quando si lavora e niente bonus). +- Nota: i bioma sono in celle 4×4×4. Il fango messo a mano in una cella di bioma diversa dal Mar Morto non conta. Non è un bug: nel terreno vero il fango è nella cella del Mar Morto.