private void readSoundList(JsonObject element, String field, List<StaticSound> sounds) throws IOException { if (element.has(field) && element.get(field).isJsonArray()) { sounds.clear(); for (JsonElement item : element.getAsJsonArray(field)) { Optional<StaticSound> sound = assetManager.getAsset(item.getAsString(), StaticSound.class); if (sound.isPresent()) { sounds.add(sound.get()); } else { throw new IOException("Unable to resolve sound '" + item.getAsString() + "'"); } } } }
@Override public BlockSoundsData load(ResourceUrn resourceUrn, List<AssetDataFile> list) throws IOException { JsonElement rawJson = readJson(list.get(0)); JsonObject blockDefJson = rawJson.getAsJsonObject(); BlockSoundsData data = new BlockSoundsData(); if (blockDefJson.has("basedOn")) { Optional<BlockSounds> parentBlockSounds = assetManager.getAsset(blockDefJson.get("basedOn").getAsString(), BlockSounds.class); if (parentBlockSounds.isPresent()) { data.getStepSounds().addAll(parentBlockSounds.get().getStepSounds()); data.getStepSounds().addAll(parentBlockSounds.get().getDestroySounds()); data.getStepSounds().addAll(parentBlockSounds.get().getDigSounds()); } else { throw new IOException( "Unable to resolve parent '" + blockDefJson.get("basedOn").getAsString() + "'"); } } loadBlockSounds(blockDefJson, data); return data; }