Minor cleanup

This commit is contained in:
Sollace 2021-08-25 14:10:17 +02:00
parent bd49bdd52e
commit 96d2e7b1f9
4 changed files with 48 additions and 37 deletions

View file

@ -6,12 +6,10 @@ import java.util.Objects;
import java.util.Set; import java.util.Set;
import java.util.function.Supplier; import java.util.function.Supplier;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import com.google.gson.JsonParseException; import com.google.gson.JsonParseException;
import com.minelittlepony.common.util.settings.ToStringAdapter;
import com.minelittlepony.unicopia.util.PosHelper; import com.minelittlepony.unicopia.util.PosHelper;
import com.minelittlepony.unicopia.util.Resources;
import com.minelittlepony.unicopia.util.Weighted; import com.minelittlepony.unicopia.util.Weighted;
import net.fabricmc.fabric.api.resource.IdentifiableResourceReloadListener; import net.fabricmc.fabric.api.resource.IdentifiableResourceReloadListener;
@ -30,9 +28,6 @@ import net.minecraft.world.World;
public class TreeTypeLoader extends JsonDataLoader implements IdentifiableResourceReloadListener { public class TreeTypeLoader extends JsonDataLoader implements IdentifiableResourceReloadListener {
private static final Identifier ID = new Identifier("unicopia", "data/tree_type"); private static final Identifier ID = new Identifier("unicopia", "data/tree_type");
public static final Gson GSON = new GsonBuilder()
.registerTypeAdapter(Identifier.class, new ToStringAdapter<>(Identifier::new))
.create();
public static final TreeTypeLoader INSTANCE = new TreeTypeLoader(); public static final TreeTypeLoader INSTANCE = new TreeTypeLoader();
@ -42,7 +37,7 @@ public class TreeTypeLoader extends JsonDataLoader implements IdentifiableResour
private final TreeType any2x = createDynamic(true); private final TreeType any2x = createDynamic(true);
TreeTypeLoader() { TreeTypeLoader() {
super(GSON, "tree_types"); super(Resources.GSON, "tree_types");
} }
@Override @Override
@ -109,7 +104,7 @@ public class TreeTypeLoader extends JsonDataLoader implements IdentifiableResour
for (Map.Entry<Identifier, JsonElement> entry : resources.entrySet()) { for (Map.Entry<Identifier, JsonElement> entry : resources.entrySet()) {
try { try {
TreeTypeDef typeDef = GSON.fromJson(entry.getValue(), TreeTypeDef.class); TreeTypeDef typeDef = Resources.GSON.fromJson(entry.getValue(), TreeTypeDef.class);
if (typeDef != null) { if (typeDef != null) {
entries.add(new TreeTypeImpl( entries.add(new TreeTypeImpl(

View file

@ -1,7 +1,5 @@
package com.minelittlepony.unicopia.item.enchantment; package com.minelittlepony.unicopia.item.enchantment;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -13,14 +11,12 @@ import java.util.stream.Stream;
import org.apache.commons.lang3.reflect.TypeUtils; import org.apache.commons.lang3.reflect.TypeUtils;
import com.google.gson.JsonParseException;
import com.minelittlepony.unicopia.Unicopia; import com.minelittlepony.unicopia.Unicopia;
import com.minelittlepony.unicopia.ability.data.tree.TreeTypeLoader;
import com.minelittlepony.unicopia.entity.Living; import com.minelittlepony.unicopia.entity.Living;
import com.minelittlepony.unicopia.util.Resources;
import net.fabricmc.fabric.api.resource.IdentifiableResourceReloadListener; import net.fabricmc.fabric.api.resource.IdentifiableResourceReloadListener;
import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.EquipmentSlot;
import net.minecraft.resource.Resource;
import net.minecraft.resource.ResourceManager; import net.minecraft.resource.ResourceManager;
import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundCategory;
import net.minecraft.sound.SoundEvent; import net.minecraft.sound.SoundEvent;
@ -76,8 +72,8 @@ public class PoisonedJokeEnchantment extends SimpleEnchantment implements Identi
clientProfiler.startTick(); clientProfiler.startTick();
clientProfiler.push("Loading poisoned joke sound options"); clientProfiler.push("Loading poisoned joke sound options");
sounds = getResources(manager, FILE) sounds = Resources.getResources(manager, FILE)
.flatMap(this::loadFile) .flatMap(r -> Resources.loadFile(r, TYPE, "Failed to load sounds file at "))
.distinct() .distinct()
.flatMap(this::findSound) .flatMap(this::findSound)
.collect(Collectors.toList()); .collect(Collectors.toList());
@ -87,29 +83,10 @@ public class PoisonedJokeEnchantment extends SimpleEnchantment implements Identi
}, clientExecutor); }, clientExecutor);
} }
private Stream<Resource> getResources(ResourceManager manager, Identifier id) {
try {
return manager.getAllResources(id).stream();
} catch (IOException ignored) { }
return Stream.empty();
}
private Stream<Identifier> loadFile(Resource res) throws JsonParseException {
try (Resource resource = res) {
return (TreeTypeLoader.GSON.<List<Identifier>>fromJson(new InputStreamReader(resource.getInputStream()), TYPE)).stream();
} catch (JsonParseException e) {
Unicopia.LOGGER.warn("Failed to load sounds file at " + res.getResourcePackName(), e);
} catch (IOException ignored) {}
return Stream.empty();
}
private Stream<SoundEvent> findSound(Identifier id) { private Stream<SoundEvent> findSound(Identifier id) {
SoundEvent value = Registry.SOUND_EVENT.getOrEmpty(id).orElse(null); return Registry.SOUND_EVENT.getOrEmpty(id).map(Stream::of).orElseGet(() -> {
if (value == null) {
Unicopia.LOGGER.warn("Could not find sound with id {}", id); Unicopia.LOGGER.warn("Could not find sound with id {}", id);
return Stream.empty(); return Stream.empty();
} });
return Stream.of(value);
} }
} }

View file

@ -4,7 +4,6 @@ import com.mojang.serialization.Lifecycle;
import net.fabricmc.fabric.api.event.registry.FabricRegistryBuilder; import net.fabricmc.fabric.api.event.registry.FabricRegistryBuilder;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import net.minecraft.util.registry.DefaultedRegistry;
import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.Registry;
import net.minecraft.util.registry.RegistryKey; import net.minecraft.util.registry.RegistryKey;
import net.minecraft.util.registry.SimpleRegistry; import net.minecraft.util.registry.SimpleRegistry;

View file

@ -0,0 +1,40 @@
package com.minelittlepony.unicopia.util;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Type;
import java.util.List;
import java.util.stream.Stream;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonParseException;
import com.minelittlepony.common.util.settings.ToStringAdapter;
import com.minelittlepony.unicopia.Unicopia;
import net.minecraft.resource.Resource;
import net.minecraft.resource.ResourceManager;
import net.minecraft.util.Identifier;
public interface Resources {
Gson GSON = new GsonBuilder()
.registerTypeAdapter(Identifier.class, new ToStringAdapter<>(Identifier::new))
.create();
static Stream<Resource> getResources(ResourceManager manager, Identifier id) {
try {
return manager.getAllResources(id).stream();
} catch (IOException ignored) { }
return Stream.empty();
}
static Stream<Identifier> loadFile(Resource res, Type type, String msg) throws JsonParseException {
try (Resource resource = res) {
return (GSON.<List<Identifier>>fromJson(new InputStreamReader(resource.getInputStream()), type)).stream();
} catch (JsonParseException e) {
Unicopia.LOGGER.warn(msg + res.getResourcePackName(), e);
} catch (IOException ignored) {}
return Stream.empty();
}
}