From f8443242bae15de0a6557be0524048612edb671d Mon Sep 17 00:00:00 2001 From: Sollace Date: Tue, 24 Aug 2021 21:44:52 +0200 Subject: [PATCH] Move golden wing and added enchanted gems to wandering traders' trades --- .../unicopia/ability/magic/spell/SpellType.java | 14 ++++++++++---- .../unicopia/entity/UTradeOffers.java | 9 ++++++++- .../minelittlepony/unicopia/util/Registries.java | 1 + 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/SpellType.java b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/SpellType.java index 02f16374..713922b5 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/SpellType.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/SpellType.java @@ -1,9 +1,9 @@ package com.minelittlepony.unicopia.ability.magic.spell; import java.util.EnumMap; -import java.util.HashMap; import java.util.HashSet; import java.util.Map; +import java.util.Random; import java.util.Set; import org.jetbrains.annotations.Nullable; @@ -12,19 +12,21 @@ import com.minelittlepony.unicopia.Affinity; import com.minelittlepony.unicopia.ability.magic.Affine; import com.minelittlepony.unicopia.ability.magic.Caster; import com.minelittlepony.unicopia.ability.magic.Spell; +import com.minelittlepony.unicopia.util.Registries; import net.minecraft.nbt.NbtCompound; import net.minecraft.text.Text; import net.minecraft.text.TranslatableText; import net.minecraft.util.Identifier; import net.minecraft.util.Util; +import net.minecraft.util.registry.Registry; public final class SpellType implements Affine, SpellPredicate { public static final Identifier EMPTY_ID = new Identifier("unicopia", "null"); public static final SpellType EMPTY_KEY = new SpellType<>(EMPTY_ID, Affinity.NEUTRAL, 0xFFFFFF, false, t -> null); - private static final Map> REGISTRY = new HashMap<>(); + private static final Registry> REGISTRY = Registries.createSimple(new Identifier("unicopia", "spells")); private static final Map>> BY_AFFINITY = new EnumMap<>(Affinity.class); public static final SpellType FROST = register("frost", Affinity.GOOD, 0xBDBDF9, true, IceSpell::new); @@ -145,7 +147,7 @@ public final class SpellType implements Affine, SpellPredicate< public static SpellType register(Identifier id, Affinity affinity, int color, boolean obtainable, Factory factory) { SpellType type = new SpellType<>(id, affinity, color, obtainable, factory); byAffinity(affinity).add(type); - REGISTRY.put(id, type); + Registry.register(REGISTRY, id, type); return type; } @@ -160,7 +162,11 @@ public final class SpellType implements Affine, SpellPredicate< @SuppressWarnings("unchecked") public static SpellType getKey(Identifier id) { - return (SpellType)(EMPTY_ID.equals(id) ? EMPTY_KEY : REGISTRY.getOrDefault(id, EMPTY_KEY)); + return (SpellType)(EMPTY_ID.equals(id) ? EMPTY_KEY : REGISTRY.getOrEmpty(id).orElse(EMPTY_KEY)); + } + + public static SpellType random(Random random) { + return REGISTRY.getRandom(random); } public static Set> byAffinity(Affinity affinity) { diff --git a/src/main/java/com/minelittlepony/unicopia/entity/UTradeOffers.java b/src/main/java/com/minelittlepony/unicopia/entity/UTradeOffers.java index 8155cb22..871d0650 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/UTradeOffers.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/UTradeOffers.java @@ -1,5 +1,7 @@ package com.minelittlepony.unicopia.entity; +import com.minelittlepony.unicopia.ability.magic.spell.SpellType; +import com.minelittlepony.unicopia.item.GemstoneItem; import com.minelittlepony.unicopia.item.UItems; import net.fabricmc.fabric.api.object.builder.v1.trade.TradeOfferHelper; import net.minecraft.item.ItemStack; @@ -14,10 +16,15 @@ public interface UTradeOffers { }); TradeOfferHelper.registerVillagerOffers(VillagerProfession.LIBRARIAN, 1, factories -> { factories.add((e, rng) -> new TradeOffer(new ItemStack(UItems.GEMSTONE, 2), Items.EMERALD.getDefaultStack(), 20, 1, 0.05F)); - factories.add((e, rng) -> new TradeOffer(new ItemStack(UItems.GEMSTONE, 30), UItems.GOLDEN_FEATHER.getDefaultStack(), UItems.GOLDEN_WING.getDefaultStack(), 30, 2, 0.05F)); + }); TradeOfferHelper.registerVillagerOffers(VillagerProfession.CARTOGRAPHER, 1, factories -> { factories.add((e, rng) -> new TradeOffer(new ItemStack(UItems.GEMSTONE, 3), Items.EMERALD.getDefaultStack(), 20, 1, 0.05F)); }); + + TradeOfferHelper.registerWanderingTraderOffers(1, factories -> { + factories.add((e, rng) -> new TradeOffer(new ItemStack(UItems.GEMSTONE, 30), UItems.GOLDEN_FEATHER.getDefaultStack(), UItems.GOLDEN_WING.getDefaultStack(), 30, 2, 0.05F)); + factories.add((e, rng) -> new TradeOffer(new ItemStack(UItems.GEMSTONE, 3), GemstoneItem.enchanted(UItems.GEMSTONE.getDefaultStack(), SpellType.random(rng)), 20, 1, 0.05F)); + }); } } diff --git a/src/main/java/com/minelittlepony/unicopia/util/Registries.java b/src/main/java/com/minelittlepony/unicopia/util/Registries.java index e7cb56b2..efcee7a1 100644 --- a/src/main/java/com/minelittlepony/unicopia/util/Registries.java +++ b/src/main/java/com/minelittlepony/unicopia/util/Registries.java @@ -4,6 +4,7 @@ import com.mojang.serialization.Lifecycle; import net.fabricmc.fabric.api.event.registry.FabricRegistryBuilder; import net.minecraft.util.Identifier; +import net.minecraft.util.registry.DefaultedRegistry; import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.RegistryKey; import net.minecraft.util.registry.SimpleRegistry;