Jump to content

SirSmuggler

Members
  • Posts

    2
  • Joined

  • Last visited

Converted

  • Gender
    Undisclosed
  • Personal Text
    I am new!

SirSmuggler's Achievements

Tree Puncher

Tree Puncher (2/8)

0

Reputation

  1. Ok, so I went ahead and did it any way! Bad Smuggler! https://github.com/MinecraftForge/FML/pull/281
  2. I'm currently working on a mod that will add villagers. How ever, I want to have custom conditions that needs to be fulfilled before a certain villager type can be selected when a new willager is spawned. I have not found a way to do this currently, but then again I'm compleatley new to minecraft moding so I might be missing something. If so I'd greatley apreciate being pointed in the right direction If how ever there currently is no method, I have done the following modification to VillagerRegistry to allow it. Added the following: private Map<Integer, IVillageSpawnCondition> spawnConditionHandlers = Maps.newHashMap(); /** * Allow access to the random profession selection for new villagers. * */ public interface IVillageSpawnCondition { /** * Called to allow profession to be excluded from the random selection when a new villager is created. * * @param villager */ boolean typeIsValidForVillager( EntityVillager villager, Random random ); } /** * Register a new villager spawn condition for the specified villager type * * @param villagerId * @param handler */ public void registerVillageSpawnCondition(int villagerId, IVillageSpawnCondition handler) { spawnConditionHandlers.put(villagerId, handler); } Modified ApplyRandomTrade as follows: public static void applyRandomTrade(EntityVillager villager, Random rand) { // Select only the villager id's that fulfills their validation for spawning at this time. // If no spawn condition is set for an id we assume it is valid. List<Integer> validVillagerIds = Lists.newArrayList(); for ( int i = 0; i < instance().newVillagerIds.size(); i++ ) { if ( instance().spawnConditionHandlers.get( instance().newVillagerIds.get( i ) ) == null ) validVillagerIds.add( instance().newVillagerIds.get( i ) ); else if ( instance().spawnConditionHandlers.get( instance().newVillagerIds.get( i ) ).typeIsValidForVillager( villager, rand ) ) validVillagerIds.add( instance().newVillagerIds.get( i ) ); } // Randomize from the list of validated types instead of the entire list. int extra = validVillagerIds.size(); int trade = rand.nextInt(5 + extra); villager.setProfession(trade < 5 ? trade : validVillagerIds.get(trade - 5)); } This was based on how the villager trade registering is set up. Any feedback is welcome, as I'm so new to this I don't think a dare post a pull request before I have had some feedback
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.