Skip to content

Commit

Permalink
Patch EmeraldsForVillagerTypeItem to allow modders to make Custom `…
Browse files Browse the repository at this point in the history
…VillagerType`s (#1875)
  • Loading branch information
JT122406 authored Jan 24, 2025
1 parent 102cf83 commit 81df67a
Showing 1 changed file with 21 additions and 0 deletions.
21 changes: 21 additions & 0 deletions patches/net/minecraft/world/entity/npc/VillagerTrades.java.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
--- a/net/minecraft/world/entity/npc/VillagerTrades.java
+++ b/net/minecraft/world/entity/npc/VillagerTrades.java
@@ -1484,6 +_,7 @@
private final int villagerXp;

public EmeraldsForVillagerTypeItem(int p_35669_, int p_35670_, int p_35671_, Map<VillagerType, Item> p_35672_) {
+ if (false) // Neo: disable this check so that mods can add custom villager types
BuiltInRegistries.VILLAGER_TYPE.stream().filter(p_35680_ -> !p_35672_.containsKey(p_35680_)).findAny().ifPresent(p_339515_ -> {
throw new IllegalStateException("Missing trade for villager type: " + BuiltInRegistries.VILLAGER_TYPE.getKey(p_339515_));
});
@@ -1497,7 +_,9 @@
@Override
public MerchantOffer getOffer(Entity p_219685_, RandomSource p_219686_) {
if (p_219685_ instanceof VillagerDataHolder villagerdataholder) {
- ItemCost itemcost = new ItemCost(this.trades.get(villagerdataholder.getVillagerData().getType()), this.cost);
+ Item item = this.trades.get(villagerdataholder.getVillagerData().getType());
+ if (item == null) return null; // Neo: add a check for unknown villager types
+ ItemCost itemcost = new ItemCost(item, this.cost);
return new MerchantOffer(itemcost, new ItemStack(Items.EMERALD), this.maxUses, this.villagerXp, 0.05F);
} else {
return null;

0 comments on commit 81df67a

Please sign in to comment.