diff --git a/common/cpw/mods/fml/common/registry/VillagerRegistry.java b/common/cpw/mods/fml/common/registry/VillagerRegistry.java index 81058579fa..11f7efb0d9 100644 --- a/common/cpw/mods/fml/common/registry/VillagerRegistry.java +++ b/common/cpw/mods/fml/common/registry/VillagerRegistry.java @@ -15,6 +15,7 @@ import net.minecraft.src.StructureVillagePieces; import net.minecraft.src.Tuple; import com.google.common.collect.ArrayListMultimap; +import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Multimap; @@ -33,6 +34,7 @@ public class VillagerRegistry private Multimap tradeHandlers = ArrayListMultimap.create(); private Map, IVillageCreationHandler> villageCreationHandlers = Maps.newHashMap(); private Map newVillagers = Maps.newHashMap(); + private List newVillagerIds = Lists.newArrayList(); /** * Allow access to the {@link StructureVillagePieces} array controlling new village @@ -114,6 +116,7 @@ public class VillagerRegistry throw new RuntimeException(); } newVillagers.put(villagerId, villagerSkin); + newVillagerIds.add(villagerId); } /** @@ -202,4 +205,11 @@ public class VillagerRegistry } villager.func_70949_b(list, item.func_77612_l(), random, chance); } + + public static void applyRandomTrade(EntityVillager villager, Random rand) + { + int extra = instance().newVillagerIds.size(); + int trade = rand.nextInt(5 + extra); + villager.func_70938_b(trade < 5 ? trade : instance().newVillagerIds.get(trade - 5)); + } } diff --git a/patches/common/net/minecraft/src/EntityAIVillagerMate.java.patch b/patches/common/net/minecraft/src/EntityAIVillagerMate.java.patch new file mode 100644 index 0000000000..0d557d4625 --- /dev/null +++ b/patches/common/net/minecraft/src/EntityAIVillagerMate.java.patch @@ -0,0 +1,18 @@ +--- ../src-base/common/net/minecraft/src/EntityAIVillagerMate.java ++++ ../src-work/common/net/minecraft/src/EntityAIVillagerMate.java +@@ -1,4 +1,6 @@ + package net.minecraft.src; ++ ++import cpw.mods.fml.common.registry.VillagerRegistry; + + public class EntityAIVillagerMate extends EntityAIBase + { +@@ -104,7 +106,7 @@ + this.field_75451_c.func_70873_a(6000); + this.field_75450_b.func_70873_a(6000); + var1.func_70873_a(-24000); +- var1.func_70938_b(this.field_75450_b.func_70681_au().nextInt(5)); ++ VillagerRegistry.applyRandomTrade(var1, this.field_75450_b.func_70681_au()); + var1.func_70012_b(this.field_75450_b.field_70165_t, this.field_75450_b.field_70163_u, this.field_75450_b.field_70161_v, 0.0F, 0.0F); + this.field_75448_d.func_72838_d(var1); + this.field_75448_d.func_72960_a(var1, (byte)12); diff --git a/patches/common/net/minecraft/src/ItemMonsterPlacer.java.patch b/patches/common/net/minecraft/src/ItemMonsterPlacer.java.patch new file mode 100644 index 0000000000..8cb408c986 --- /dev/null +++ b/patches/common/net/minecraft/src/ItemMonsterPlacer.java.patch @@ -0,0 +1,20 @@ +--- ../src-base/common/net/minecraft/src/ItemMonsterPlacer.java ++++ ../src-work/common/net/minecraft/src/ItemMonsterPlacer.java +@@ -2,6 +2,8 @@ + + import cpw.mods.fml.common.Side; + import cpw.mods.fml.common.asm.SideOnly; ++import cpw.mods.fml.common.registry.VillagerRegistry; ++ + import java.util.Iterator; + import java.util.List; + +@@ -80,7 +82,7 @@ + if (var8 instanceof EntityVillager) + { + EntityVillager var9 = (EntityVillager)var8; +- var9.func_70938_b(var9.func_70681_au().nextInt(5)); ++ VillagerRegistry.applyRandomTrade(var9, var9.func_70681_au()); + p_77840_0_.func_72838_d(var9); + return true; + }