Villager and trades added. Textures updated.
This commit is contained in:
@@ -0,0 +1,142 @@
|
||||
package com.ismailkaygisiz.gamblingplus.event;
|
||||
|
||||
|
||||
import com.ismailkaygisiz.gamblingplus.GamblingPlusMod;
|
||||
import com.ismailkaygisiz.gamblingplus.item.ModItems;
|
||||
import com.ismailkaygisiz.gamblingplus.villager.ModVillagers;
|
||||
import net.minecraft.core.Holder;
|
||||
import net.minecraft.world.entity.npc.VillagerTrades;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.Items;
|
||||
import net.minecraft.world.item.alchemy.PotionBrewing;
|
||||
import net.minecraft.world.item.alchemy.Potions;
|
||||
import net.minecraft.world.item.enchantment.EnchantedItemInUse;
|
||||
import net.minecraft.world.item.enchantment.Enchantment;
|
||||
import net.minecraft.world.item.enchantment.EnchantmentInstance;
|
||||
import net.minecraft.world.item.enchantment.Enchantments;
|
||||
import net.minecraft.world.item.trading.ItemCost;
|
||||
import net.minecraft.world.item.trading.MerchantOffer;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraftforge.event.village.VillagerTradesEvent;
|
||||
import net.minecraftforge.event.village.WandererTradesEvent;
|
||||
import net.minecraftforge.eventbus.api.listener.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import static net.minecraft.core.component.predicates.DataComponentPredicates.ENCHANTMENTS;
|
||||
|
||||
@Mod.EventBusSubscriber(modid = GamblingPlusMod.MOD_ID, bus = Mod.EventBusSubscriber.Bus.FORGE)
|
||||
public class ModEvents {
|
||||
|
||||
|
||||
@SubscribeEvent
|
||||
public static void addCustomTrades(VillagerTradesEvent event) {
|
||||
if(event.getType() == ModVillagers.RUBY_WORKER.getKey()) {
|
||||
var trades = event.getTrades();
|
||||
|
||||
trades.get(1).add((pTrader, pRandom) -> new MerchantOffer(
|
||||
new ItemCost(Items.COPPER_INGOT, pRandom.nextInt(3,6)),
|
||||
new ItemStack(ModItems.RUBY.get(), 1), 12, 1, 0.05f));
|
||||
|
||||
trades.get(1).add((pTrader, pRandom) -> new MerchantOffer(
|
||||
new ItemCost(ModItems.RUBY.get(), pRandom.nextInt(3,8)),
|
||||
new ItemStack(Items.EMERALD, 1), 12, 1, 0.05f));
|
||||
|
||||
trades.get(2).add((pTrader, pRandom) -> new MerchantOffer(
|
||||
new ItemCost(Items.EMERALD, pRandom.nextInt(1,4)),
|
||||
new ItemStack(Items.AMETHYST_SHARD, 2), 12, 3, 0.05f));
|
||||
|
||||
trades.get(3).add((pTrader, pRandom) -> new MerchantOffer(
|
||||
new ItemCost(Items.EMERALD, pRandom.nextInt(5,11)),
|
||||
new ItemStack(Items.BLAZE_POWDER, 1), 6, 5, 0.05f));
|
||||
|
||||
trades.get(3).add((pTrader, pRandom) -> new MerchantOffer(
|
||||
new ItemCost(Items.EMERALD, pRandom.nextInt(2,5)),
|
||||
new ItemStack(Items.FIREWORK_ROCKET, pRandom.nextInt(2,5)), 12, 5, 0.05f));
|
||||
|
||||
trades.get(4).add((pTrader, pRandom) -> new MerchantOffer(
|
||||
new ItemCost(Items.EMERALD, pRandom.nextInt(30,46)),
|
||||
new ItemStack(Items.SHULKER_BOX, 1), 4, 12, 0.05f));
|
||||
|
||||
trades.get(4).add((pTrader, pRandom) -> {
|
||||
List<Holder<Enchantment>> valuableEnchantments = List.of(
|
||||
Enchantments.FORTUNE.getOrThrow(pTrader),
|
||||
Enchantments.EFFICIENCY.getOrThrow(pTrader),
|
||||
Enchantments.POWER.getOrThrow(pTrader),
|
||||
Enchantments.SHARPNESS.getOrThrow(pTrader),
|
||||
Enchantments.UNBREAKING.getOrThrow(pTrader),
|
||||
Enchantments.MENDING.getOrThrow(pTrader),
|
||||
Enchantments.LOOTING.getOrThrow(pTrader),
|
||||
Enchantments.PROTECTION.getOrThrow(pTrader),
|
||||
Enchantments.THORNS.getOrThrow(pTrader),
|
||||
Enchantments.RESPIRATION.getOrThrow(pTrader),
|
||||
Enchantments.FLAME.getOrThrow(pTrader),
|
||||
Enchantments.SMITE.getOrThrow(pTrader),
|
||||
Enchantments.INFINITY.getOrThrow(pTrader)
|
||||
);
|
||||
|
||||
Holder<Enchantment> selected = valuableEnchantments.get(pRandom.nextInt(valuableEnchantments.size()));
|
||||
|
||||
ItemStack book = Items.BOOK.getDefaultInstance();
|
||||
book.enchant(selected,
|
||||
selected.get().getMaxLevel() >= 4 ?
|
||||
pRandom.nextInt(selected.get().getMaxLevel()-1, selected.get().getMaxLevel()+1):
|
||||
selected.get().getMaxLevel());
|
||||
|
||||
return new MerchantOffer(
|
||||
new ItemCost(Items.EMERALD, pRandom.nextInt(40, 65)),
|
||||
Optional.of(new ItemCost(Items.BOOK, 1)),
|
||||
book,
|
||||
6, 32, 0.05f
|
||||
);
|
||||
});
|
||||
|
||||
trades.get(5).add((pTrader, pRandom) -> new MerchantOffer(
|
||||
new ItemCost(Items.EMERALD, pRandom.nextInt(45,65)),
|
||||
Optional.of(new ItemCost(Items.EGG, pRandom.nextInt(5,11))),
|
||||
new ItemStack(ModItems.CATCHING_EGG.get(), 1), 6, 32, 0.05f));
|
||||
|
||||
trades.get(5).add((pTrader, pRandom) -> new MerchantOffer(
|
||||
new ItemCost(Items.EMERALD_BLOCK, pRandom.nextInt(12,21)),
|
||||
Optional.of(new ItemCost(ModItems.RUBY.get(), 64)),
|
||||
new ItemStack(Items.ELYTRA),
|
||||
1, 256, 0.05f
|
||||
));
|
||||
}
|
||||
/*
|
||||
if(event.getType() == VillagerProfession.TOOLSMITH) {
|
||||
var trades = event.getTrades();
|
||||
|
||||
trades.get(1).add((pTrader, pRandom) -> new MerchantOffer(
|
||||
new ItemCost(Items.EMERALD, 12),
|
||||
new ItemStack(ModItems.CHISEL.get(), 1), 6, 4, 0.05f));
|
||||
|
||||
trades.get(1).add((pTrader, pRandom) -> new MerchantOffer(
|
||||
new ItemCost(Items.DIAMOND, 19),
|
||||
new ItemStack(ModItems.TOMAHAWK.get(), 1), 6, 4, 0.05f));
|
||||
|
||||
trades.get(2).add((pTrader, pRandom) -> new MerchantOffer(
|
||||
new ItemCost(Items.EMERALD, 1),
|
||||
new ItemStack(ModItems.RADIATION_STAFF.get(), 1), 1, 12, 0.05f));
|
||||
}*/
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void addWanderingTrades(WandererTradesEvent event) {
|
||||
/*
|
||||
List<VillagerTrades.ItemListing> genericTrades = event.getGenericTrades();
|
||||
List<VillagerTrades.ItemListing> rareTrades = event.getRareTrades();
|
||||
|
||||
genericTrades.add((pTrader, pRandom) -> new MerchantOffer(
|
||||
new ItemCost(Items.EMERALD, 12),
|
||||
new ItemStack(ModItems.RADIATION_STAFF.get(), 1), 1, 10, 0.2f
|
||||
));
|
||||
|
||||
rareTrades.add((pTrader, pRandom) -> new MerchantOffer(
|
||||
new ItemCost(Items.NETHERITE_INGOT, 8),
|
||||
new ItemStack(ModItems.BAR_BRAWL_MUSIC_DISC.get(), 1), 1, 10, 0.2f
|
||||
));*/
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user