Jump to content

[1.7.2] How to add something to trading?


dand0

Recommended Posts

implement IVillageTradeHandler on a class (I called mine VillagerTradeHandler)

 

add this in your FMLInitializationEvent

VillagerRegistry.instance().registerVillageTradeHandler(<villagerID>, <class implementing IVillageTradeHandler >);

 

In manipulateTradesForVillager you just need to use villager.getProfession() to make sure your editing the villager you want.

Then use recipeList.add(new MerchantRecipe(<itemstack wanted by the villager>, <itemstack recieved by the player>)); to add the trade.

 

Using EntityVillageraddDefaultEquipmentAndRecipies you can figure out what number is for what profession.

 

Trimmed version of my code:

@EventHandler
public void load(FMLInitializationEvent event)
{
VillagerTradeHandler.INSTANCE.load();
}

public class VillagerTradeHandler implements IVillageTradeHandler
{
public static VillagerTradeHandler INSTANCE = new VillagerTradeHandler();

public void load()
{
	VillagerRegistry.instance().registerVillageTradeHandler(1, this);
	VillagerRegistry.instance().registerVillageTradeHandler(2, this);
}

@Override
public void manipulateTradesForVillager(EntityVillager villager, MerchantRecipeList recipeList, Random random)
{
	switch (villager.getProfession()) {
		case 1:
			manipulateLibrarianTrades(recipeList);
			break;
		case 2:
			manipulateEnchanterTrades(recipeList);
			break;
	}
}

private void manipulateLibrarianTrades(MerchantRecipeList recipeList)
{
	Item itemMain = Values.itemMain;
	if (itemMain != null) {
		recipeList.add(new MerchantRecipe(new ItemStack(Items.emerald), new ItemStack(itemMain, 1, 11)));
		recipeList.add(new MerchantRecipe(new ItemStack(Items.emerald), new ItemStack(itemMain, 1, 15)));
	}
}

private void manipulateEnchanterTrades(MerchantRecipeList recipeList)
{
	Item itemEquipable = Values.itemEquipable;
	if (itemEquipable != null) {
		recipeList.add(new MerchantRecipe(new ItemStack(Items.emerald, 2), new ItemStack(itemEquipable, 1, 0)));
		recipeList.add(new MerchantRecipe(new ItemStack(Items.emerald, 3), new ItemStack(itemEquipable, 1, 1)));
	}
}
}

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

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