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:
parent
48be331a21
commit
9ee9e53f63
6 changed files with 7 additions and 57 deletions
src/main
java/com/minelittlepony/unicopia
advancement
diet/affliction
resources/data/unicopia/tags/items/food_types
|
@ -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));
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"minecraft:grass",
|
||||
"minecraft:short_grass",
|
||||
"unicopia:cider",
|
||||
{ "id": "farmersdelight:rotten_tomato", "required": false }
|
||||
]
|
||||
|
|
Loading…
Add table
Reference in a new issue