mirror of
https://github.com/Sollace/Unicopia.git
synced 2025-03-03 16:51:28 +01:00
Add metamorphosis potions as a wandering trader trade and fixed some other wandering trader trades not occuring
This commit is contained in:
parent
9dbe767f39
commit
08b7faeb06
2 changed files with 29 additions and 2 deletions
|
@ -2,17 +2,21 @@ package com.minelittlepony.unicopia.entity;
|
|||
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.minelittlepony.unicopia.UTags;
|
||||
import com.minelittlepony.unicopia.ability.magic.spell.effect.SpellType;
|
||||
import com.minelittlepony.unicopia.entity.effect.UPotions;
|
||||
import com.minelittlepony.unicopia.item.GemstoneItem;
|
||||
import com.minelittlepony.unicopia.item.UItems;
|
||||
import com.minelittlepony.unicopia.util.RegistryUtils;
|
||||
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.trade.TradeOfferHelper;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.Items;
|
||||
import net.minecraft.potion.PotionUtil;
|
||||
import net.minecraft.registry.tag.ItemTags;
|
||||
import net.minecraft.registry.tag.TagKey;
|
||||
import net.minecraft.util.Util;
|
||||
|
@ -20,6 +24,8 @@ import net.minecraft.util.math.random.Random;
|
|||
import net.minecraft.village.TradeOffer;
|
||||
import net.minecraft.village.TradeOffers;
|
||||
import net.minecraft.village.VillagerProfession;
|
||||
import net.minecraft.village.TradeOffers.Factory;
|
||||
import net.minecraft.village.TradeOffers.SellItemFactory;
|
||||
|
||||
public interface UTradeOffers {
|
||||
static void bootstrap() {
|
||||
|
@ -53,9 +59,11 @@ public interface UTradeOffers {
|
|||
factories.add(buy(UItems.COOKED_ZAP_APPLE, 45, UItems.ZAP_APPLE_JAM_JAR, 15, 50, 7, 0.17F));
|
||||
factories.add(buy(UItems.CRYSTAL_HEART, 1, UItems.MUSIC_DISC_CRUSADE, 1, 10, 6, 0.08F));
|
||||
factories.add(buy(UItems.PEGASUS_AMULET, 1, UItems.ALICORN_AMULET, 1, 2, 6, 0.05F));
|
||||
});
|
||||
TradeOfferHelper.registerWanderingTraderOffers(3, factories -> {
|
||||
factories.add(buyForEmeralds(UItems.FRIENDSHIP_BRACELET, 2, 1, 10, 7, 0.17F));
|
||||
factories.add(new SellPotionHoldingItemFactory(
|
||||
new Item[] { Items.ARROW, Items.GLASS_BOTTLE, Items.GLASS_BOTTLE },
|
||||
new Item[] { Items.TIPPED_ARROW, Items.POTION, Items.SPLASH_POTION },
|
||||
5, 5, 2, 12, 30));
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -98,4 +106,17 @@ public interface UTradeOffers {
|
|||
return new TradeOffer(offer.getOriginalFirstBuyItem(), offer.getSecondBuyItem(), UItems.FILLED_JAR.withContents(offer.getSellItem()), offer.getUses(), offer.getMaxUses(), offer.getMerchantExperience(), offer.getPriceMultiplier(), offer.getDemandBonus());
|
||||
}
|
||||
}
|
||||
|
||||
record SellPotionHoldingItemFactory (Item[] secondBuy, Item[] tippedArrow, int secondCount, int sellCount, int price, int maxUses, int experience) implements Factory {
|
||||
@Override
|
||||
public TradeOffer create(Entity entity, Random random) {
|
||||
int index = random.nextInt(tippedArrow.length);
|
||||
return new TradeOffer(
|
||||
new ItemStack(Items.EMERALD, price),
|
||||
new ItemStack(secondBuy[index], secondCount),
|
||||
PotionUtil.setPotion(new ItemStack(tippedArrow[index], sellCount), UPotions.REGISTRY.get(random.nextInt(UPotions.REGISTRY.size()))),
|
||||
maxUses, experience, 0.05f
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
package com.minelittlepony.unicopia.entity.effect;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.minelittlepony.unicopia.Unicopia;
|
||||
|
||||
import net.minecraft.entity.effect.StatusEffectInstance;
|
||||
|
@ -8,6 +11,8 @@ import net.minecraft.registry.Registry;
|
|||
import net.minecraft.registry.Registries;
|
||||
|
||||
public interface UPotions {
|
||||
List<Potion> REGISTRY = new ArrayList<>();
|
||||
|
||||
Potion TRIBE_SWAP_EARTH_PONY = register("tribe_swap_earth", new Potion("unicopia.tribe_swap_earth", new StatusEffectInstance(RaceChangeStatusEffect.CHANGE_RACE_EARTH, RaceChangeStatusEffect.MAX_DURATION)));
|
||||
Potion TRIBE_SWAP_UNICORN = register("tribe_swap_unicorn", new Potion("unicopia.tribe_swap_unicorn", new StatusEffectInstance(RaceChangeStatusEffect.CHANGE_RACE_UNICORN, RaceChangeStatusEffect.MAX_DURATION)));
|
||||
Potion TRIBE_SWAP_PEGASUS = register("tribe_swap_pegasus", new Potion("unicopia.tribe_swap_pegasus", new StatusEffectInstance(RaceChangeStatusEffect.CHANGE_RACE_PEGASUS, RaceChangeStatusEffect.MAX_DURATION)));
|
||||
|
@ -15,6 +20,7 @@ public interface UPotions {
|
|||
Potion TRIBE_SWAP_CHANGELING = register("tribe_swap_changeling", new Potion("unicopia.tribe_swap_changeling", new StatusEffectInstance(RaceChangeStatusEffect.CHANGE_RACE_CHANGELING, RaceChangeStatusEffect.MAX_DURATION)));
|
||||
|
||||
static Potion register(String name, Potion potion) {
|
||||
REGISTRY.add(potion);
|
||||
return Registry.register(Registries.POTION, Unicopia.id(name), potion);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue