1
0
Fork 0
mirror of https://github.com/Sollace/Unicopia.git synced 2025-03-08 11:11:29 +01:00

Fix resource loading errors

This commit is contained in:
Sollace 2024-02-08 22:08:26 +00:00
parent 48be331a21
commit 9ee9e53f63
No known key found for this signature in database
GPG key ID: E52FACE7B5C773DB
6 changed files with 7 additions and 57 deletions
src/main
java/com/minelittlepony/unicopia
resources/data/unicopia/tags/items/food_types

View file

@ -46,7 +46,7 @@ public class CustomEventCriterion extends AbstractCriterion<CustomEventCriterion
public static final Codec<Conditions> CODEC = RecordCodecBuilder.create(instance -> instance.group(
Codecs.createStrictOptionalFieldCodec(EntityPredicate.LOOT_CONTEXT_PREDICATE_CODEC, "player").forGetter(Conditions::player),
Codec.STRING.fieldOf("event").forGetter(Conditions::event),
RacePredicate.CODEC.fieldOf("races").forGetter(Conditions::races),
RacePredicate.CODEC.optionalFieldOf("races", RacePredicate.EMPTY).forGetter(Conditions::races),
CodecUtils.tristateOf("flying").forGetter(Conditions::flying),
Codec.INT.optionalFieldOf("repeatCount", 0).forGetter(Conditions::repeatCount)
).apply(instance, Conditions::new));

View file

@ -2,13 +2,6 @@ package com.minelittlepony.unicopia.advancement;
import java.util.Set;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import org.jetbrains.annotations.Nullable;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.minelittlepony.unicopia.Race;
import com.minelittlepony.unicopia.entity.player.Pony;
import com.minelittlepony.unicopia.util.CodecUtils;
@ -16,7 +9,6 @@ import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.util.JsonHelper;
public record RacePredicate(Set<Race> include, Set<Race> exclude) implements Predicate<ServerPlayerEntity> {
public static final RacePredicate EMPTY = new RacePredicate(Set.of(), Set.of());
@ -28,19 +20,6 @@ public record RacePredicate(Set<Race> include, Set<Race> exclude) implements Pre
).apply(instance, RacePredicate::of));
public static final Codec<RacePredicate> CODEC = CodecUtils.xor(BASE_CODEC, RACE_SET_CODEC.xmap(include -> of(include, Set.of()), RacePredicate::include));
public static RacePredicate fromJson(JsonElement json) {
if (json == null || json.isJsonNull()) {
return EMPTY;
}
if (json.isJsonArray()) {
return of(getRaces(json.getAsJsonArray()), Set.of());
}
JsonObject root = JsonHelper.asObject(json, "race");
return of(getRaces(root, "include"), getRaces(root, "exclude"));
}
private static RacePredicate of(Set<Race> include, Set<Race> exclude) {
if (include.isEmpty() && exclude.isEmpty()) {
return EMPTY;
@ -48,36 +27,9 @@ public record RacePredicate(Set<Race> include, Set<Race> exclude) implements Pre
return new RacePredicate(include, exclude);
}
private static @Nullable Set<Race> getRaces(JsonObject json, String field) {
return json.has(field) ? getRaces(JsonHelper.getArray(json, field)) : Set.of();
}
private static Set<Race> getRaces(JsonArray array) {
return array.asList()
.stream()
.map(el -> Race.fromName(el.getAsString(), Race.EARTH))
.distinct()
.collect(Collectors.toSet());
}
@Override
public boolean test(ServerPlayerEntity player) {
Race race = Pony.of(player).getSpecies();
return (include.isEmpty() || include.contains(race)) && !(!exclude.isEmpty() && exclude.contains(race));
}
public JsonObject toJson() {
JsonObject json = new JsonObject();
if (!include.isEmpty()) {
JsonArray arr = new JsonArray();
include.forEach(r -> arr.add(Race.REGISTRY.getId(r).toString()));
json.add("include", arr);
}
if (!exclude.isEmpty()) {
JsonArray arr = new JsonArray();
exclude.forEach(r -> arr.add(Race.REGISTRY.getId(r).toString()));
json.add("exclude", arr);
}
return json;
}
}

View file

@ -63,7 +63,7 @@ public class SendViaDragonBreathScrollCriterion extends AbstractCriterion<SendVi
Codec.STRING.optionalFieldOf("recipient_name").forGetter(Conditions::recipientName),
CodecUtils.tristateOf("recipient_present").forGetter(Conditions::recipientPresent),
Codec.STRING.optionalFieldOf("counter").forGetter(Conditions::counter),
RacePredicate.CODEC.fieldOf("races").forGetter(Conditions::races)
RacePredicate.CODEC.optionalFieldOf("races", RacePredicate.EMPTY).forGetter(Conditions::races)
).apply(instance, Conditions::new));
public boolean test(ServerPlayerEntity player, ItemStack payload, String recipient, boolean receiving) {

View file

@ -9,13 +9,9 @@ import net.minecraft.text.Text;
class CompoundAffliction implements Affliction {
public final List<Affliction> afflictions;
private final Text name;
public CompoundAffliction(List<Affliction> afflictions) {
this.afflictions = afflictions;
name = afflictions.stream().map(Affliction::getName).reduce(null, (a, b) -> {
return a == null ? b : a.copy().append(" + ").append(b);
});
}
public CompoundAffliction(PacketByteBuf buffer) {
@ -44,7 +40,9 @@ class CompoundAffliction implements Affliction {
@Override
public Text getName() {
return name;
return afflictions.stream().map(Affliction::getName).reduce(null, (a, b) -> {
return a == null ? b : a.copy().append(" + ").append(b);
});
}

View file

@ -69,7 +69,7 @@ record StatusEffectAffliction(Identifier effect, Range seconds, Range amplifier,
text = Text.translatable("potion.withAmplifier", text, Text.translatable("potion.potency." + (amplifier.min())));
}
float tickRate = MinecraftClient.getInstance().world.getTickManager().getTickRate();
float tickRate = MinecraftClient.getInstance().world == null ? 20 : MinecraftClient.getInstance().world.getTickManager().getTickRate();
text = Text.translatable("potion.withDuration", text, StringHelper.formatTicks(seconds.min() * 20, tickRate));
if (chance > 0) {

View file

@ -1,7 +1,7 @@
{
"replace": false,
"values": [
"minecraft:grass",
"minecraft:short_grass",
"unicopia:cider",
{ "id": "farmersdelight:rotten_tomato", "required": false }
]