package com.austinv11.peripheralsplusplus.villagers; import com.austinv11.collectiveframework.minecraft.utils.Colors; import com.austinv11.collectiveframework.minecraft.utils.NBTHelper; import com.austinv11.peripheralsplusplus.utils.Util; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.VillagerRegistry; import net.minecraft.entity.passive.EntityVillager; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.util.MathHelper; import net.minecraft.util.StatCollector; import net.minecraft.village.MerchantRecipe; import net.minecraft.village.MerchantRecipeList; import java.util.ArrayList; import java.util.List; import java.util.Random; public class TradeHandler implements VillagerRegistry.IVillageTradeHandler { @Override public void manipulateTradesForVillager(EntityVillager villager, MerchantRecipeList recipeList, Random random) { ItemStack error = new ItemStack(Items.diamond); ItemStack emerald = new ItemStack(Items.emerald); error.setStackDisplayName(Colors.RED+"THIS IS A BUG, REPORT TO THE P++ AUTHOR ASAP"); MerchantRecipe recipe = new MerchantRecipe(new ItemStack(Blocks.dirt), error); do { int trade = MathHelper.getRandomIntegerInRange(random, 0, 7); switch (trade) { case 0://Empty floppy disk + 3 emeralds = dungeon disk FIXME, must use colored disks int type = MathHelper.getRandomIntegerInRange(random, 0, 9); ItemStack floppy = getFloppyFromInt(type); emerald.stackSize = 3; recipe = new MerchantRecipe(new ItemStack(GameRegistry.findItem("ComputerCraft", "diskExpanded")), emerald, floppy); break; case 1://Normal comp + emerald = advanced comp recipe = new MerchantRecipe(new ItemStack(GameRegistry.findBlock("ComputerCraft", "CC-Computer")), emerald, new ItemStack(GameRegistry.findBlock("ComputerCraft", "CC-Computer"), 1, 16384)); break; case 2://Normal monitor + emerald = advanced monitor recipe = new MerchantRecipe(new ItemStack(GameRegistry.findBlock("ComputerCraft", "CC-Peripheral"), 1, 2), emerald, new ItemStack(GameRegistry.findBlock("ComputerCraft", "CC-Peripheral"), 1, 4)); break; case 3://Normal turtle + emerald = advanced turtle recipe = new MerchantRecipe(new ItemStack(GameRegistry.findBlock("ComputerCraft", "CC-Turtle")), emerald, new ItemStack(GameRegistry.findBlock("ComputerCraft", "CC-TurtleAdvanced"))); break; case 4://Normal comp + 2 emeralds = normal turtle emerald.stackSize = 2; recipe = new MerchantRecipe(new ItemStack(GameRegistry.findBlock("ComputerCraft", "CC-Computer")), emerald, new ItemStack(GameRegistry.findBlock("ComputerCraft", "CC-Turtle"))); break; case 5://Advanced comp + 2 emeralds = advanced turtle emerald.stackSize = 2; recipe = new MerchantRecipe(new ItemStack(GameRegistry.findBlock("ComputerCraft", "CC-Computer"), 1, 16384), emerald, new ItemStack(GameRegistry.findBlock("ComputerCraft", "CC-TurtleAdvanced"))); break; case 6://64 emeralds = portable computer (an IPhone basically) emerald.stackSize = 64; ItemStack iPhone = new ItemStack(GameRegistry.findItem("ComputerCraft", "pocketComputer"), 1, 1); iPhone.setStackDisplayName(StatCollector.translateToLocal("item.peripheralsplusplus:iphone.name")); recipe = new MerchantRecipe(emerald, iPhone); break; case 7://Paper + emerald = book w/ lore TODO:More than 3 books recipe = new MerchantRecipe(new ItemStack(Items.book), emerald, getBookFromInt(MathHelper.getRandomIntegerInRange(random, 0, 2))); break; } } while (recipeList.contains(recipe)); recipeList.add(recipe); } public static ItemStack getFloppyFromInt(int t) { ItemStack stack = new ItemStack(GameRegistry.findItem("ComputerCraft", "treasureDisk")); switch (t) { case 0: break; case 1: NBTHelper.setInteger(stack, "colour", 3368652); NBTHelper.setString(stack, "subPath", "fredthead/protector"); NBTHelper.setString(stack, "title", "\"protector\" by fredthead"); break; case 2: NBTHelper.setInteger(stack, "colour", 3368652); NBTHelper.setString(stack, "subPath", "GopherAtl/battleship"); NBTHelper.setString(stack, "title", "\"battleship\" by GopherAtl"); break; case 3: NBTHelper.setInteger(stack, "colour", 3368652); NBTHelper.setString(stack, "subPath", "GravityScore/LuaIDE"); NBTHelper.setString(stack, "title", "\"LuaIDE\" by GravityScore"); break; case 4: NBTHelper.setInteger(stack, "colour", 3368652); NBTHelper.setString(stack, "subPath", "JTK/maze3d"); NBTHelper.setString(stack, "title", "\"maze3d\" by JTK"); break; case 5: NBTHelper.setInteger(stack, "colour", 3368652); NBTHelper.setString(stack, "subPath", "Lyqyd/nsh"); NBTHelper.setString(stack, "title", "\"nsh\" by Lyqyd"); break; case 6: NBTHelper.setInteger(stack, "colour", 3368652); NBTHelper.setString(stack, "subPath", "nitrogenfingers/goldrunner"); NBTHelper.setString(stack, "title", "\"goldrunner\" by nitrogenfingers"); break; case 7: NBTHelper.setInteger(stack, "colour", 3368652); NBTHelper.setString(stack, "subPath", "nitrogenfingers/npaintpro"); NBTHelper.setString(stack, "title", "\"npaintpro\" by nitrogenfingers"); break; case 8: NBTHelper.setInteger(stack, "colour", 3368652); NBTHelper.setString(stack, "subPath", "vilsol/gameoflife"); NBTHelper.setString(stack, "title", "\"gameoflife\" by vilsol"); break; case 9: NBTHelper.setInteger(stack, "colour", 3368652); NBTHelper.setString(stack, "subPath", "TheOriginalBIT/tictactoe"); NBTHelper.setString(stack, "title", "\"tictactoe\" by TheOriginalBIT"); break; } stack.setItemDamage(0); return stack; } public static ItemStack getBookFromInt(int type) { ItemStack stack = new ItemStack(Items.written_book); switch (type) { case 0: stack.stackTagCompound = Util.writeToBookNBT("peripheralsplusplus.lore.1.title", Colors.MAGIC+"dan200", getTextFromInt(type)); break; case 1: stack.stackTagCompound = Util.writeToBookNBT("peripheralsplusplus.lore.2.title", Colors.MAGIC+"dan200", getTextFromInt(type)); break; case 2: stack.stackTagCompound = Util.writeToBookNBT("peripheralsplusplus.lore.3.title", Colors.MAGIC+"dan200", getTextFromInt(type)); break; } return stack; } private static List<String> getTextFromInt(int type) { List<String> list = new ArrayList<String>(); switch (type) { case 0: list.add("peripheralsplusplus.lore.1.header"); list.add("peripheralsplusplus.lore.1.pg1"); list.add("peripheralsplusplus.lore.1.pg2"); list.add("peripheralsplusplus.lore.1.pg3"); list.add("peripheralsplusplus.lore.1.pg4"); break; case 1: list.add("peripheralsplusplus.lore.2.header"); list.add("peripheralsplusplus.lore.2.pg1"); list.add("peripheralsplusplus.lore.2.pg2"); list.add("peripheralsplusplus.lore.2.pg3"); list.add("peripheralsplusplus.lore.2.pg4"); list.add("peripheralsplusplus.lore.2.pg5"); list.add("peripheralsplusplus.lore.2.pg6"); break; case 2: list.add("peripheralsplusplus.lore.3.header"); list.add("peripheralsplusplus.lore.3.pg1"); list.add("peripheralsplusplus.lore.3.pg2"); list.add("peripheralsplusplus.lore.3.pg3"); break; } return list; } }