Search in sources :

Example 1 with Lists

use of com.google.common.collect.Lists in project NetherEx by LogicTechCorp.

the class TradeListManager method init.

public static void init(File directory) {
    for (TradeCareer.EnumType career : TradeCareer.EnumType.values()) {
        offerLists.put(career, Maps.newHashMap());
    }
    try {
        LOGGER.info("Copying the Trade List Directory to the config folder.");
        if (NetherEx.IS_DEV_ENV) {
            FileUtils.copyDirectory(new File(NetherEx.class.getResource("/assets/nex/trade_lists").getFile()), directory);
        } else {
            FileUtil.extractFromJar("/assets/nex/trade_lists", directory.getPath());
        }
    } catch (IOException e) {
        LOGGER.fatal("The attempt to copy the Trade List Directory to the config folder was unsuccessful.");
        LOGGER.fatal(e);
    }
    try {
        Gson gson = new Gson();
        List<File> tradeFiles = Lists.newArrayList(directory.listFiles());
        for (File tradeFile : tradeFiles) {
            String jsonText = Files.toString(tradeFile, Charsets.UTF_8);
            TradeList tradeList = gson.fromJson(jsonText, TradeList.class);
            LOGGER.info("Adding trades from the " + tradeList.getName() + ".");
            for (TradeProfession profession : tradeList.getProfessions()) {
                for (TradeCareer career : profession.getCareers()) {
                    for (TradeOffer offer : career.getTrades()) {
                        ItemStack outputStack;
                        TradeOffer.Output output = offer.getOutput();
                        String outputId = output.getName();
                        int outputMeta = output.getMeta();
                        TradeOffer.Amount outputAmount = output.getAmount();
                        List<TradeOffer.Enchantment> outputEnchantments = output.getEnchantments();
                        TradeOffer.Display outputDisplay = output.getDisplay();
                        if (Item.getByNameOrId(outputId) != null) {
                            outputStack = new ItemStack(Item.getByNameOrId(outputId), 1, outputMeta);
                        } else if (Block.getBlockFromName(outputId) != null) {
                            outputStack = new ItemStack(Block.getBlockFromName(outputId), 1, outputMeta);
                        } else {
                            continue;
                        }
                        if (outputEnchantments == null) {
                            outputEnchantments = Lists.newArrayList();
                        }
                        if (outputDisplay != null) {
                            if (!Strings.isNullOrEmpty(outputDisplay.getName())) {
                                outputStack.setStackDisplayName(outputDisplay.getName());
                            }
                            if (outputDisplay.getLore().size() > 0) {
                                NBTUtil.setTag(outputStack);
                                NBTTagList loreList = new NBTTagList();
                                for (String lore : outputDisplay.getLore()) {
                                    loreList.appendTag(new NBTTagString(lore));
                                }
                                NBTTagCompound displayCompound = new NBTTagCompound();
                                displayCompound.setTag("Lore", loreList);
                                NBTTagCompound compound = new NBTTagCompound();
                                compound.setTag("display", displayCompound);
                                NBTUtil.setTag(outputStack, compound);
                            }
                        }
                        ItemStack inputStackA;
                        TradeOffer.Input inputA = offer.getInputA();
                        String inputAId = inputA.getName();
                        int inputAMeta = inputA.getMeta();
                        TradeOffer.Amount inputAAmount = inputA.getAmount();
                        if (Item.getByNameOrId(inputAId) != null) {
                            inputStackA = new ItemStack(Item.getByNameOrId(inputAId), 1, inputAMeta);
                        } else if (Block.getBlockFromName(inputAId) != null) {
                            inputStackA = new ItemStack(Block.getBlockFromName(inputAId), 1, inputAMeta);
                        } else {
                            continue;
                        }
                        ItemStack inputStackB;
                        TradeOffer.Input inputB = offer.getInputB();
                        if (inputB == null) {
                            inputB = new TradeOffer.Input("minecraft:air", 0, new TradeOffer.Amount(1, 1));
                        }
                        String inputBId = inputB.getName();
                        int inputBMeta = inputB.getMeta();
                        TradeOffer.Amount inputBAmount = inputB.getAmount();
                        if (Item.getByNameOrId(inputBId) != null) {
                            inputStackB = new ItemStack(Item.getByNameOrId(inputBId), 1, inputBMeta);
                        } else if (Block.getBlockFromName(inputBId) != null) {
                            inputStackB = new ItemStack(Block.getBlockFromName(inputBId), 1, inputBMeta);
                        } else {
                            continue;
                        }
                        TradeOffer.Amount offerAmount = offer.getAmount();
                        Trade trade = new Trade(outputStack, outputAmount, inputStackA, inputAAmount, inputStackB, inputBAmount, offerAmount, outputEnchantments);
                        offerLists.get(TradeCareer.EnumType.fromCareer(career)).computeIfAbsent(offer.getLevel(), k -> Lists.newArrayList()).add(trade);
                    }
                }
            }
        }
    } catch (IOException e) {
        LOGGER.fatal("NetherEx was unable to read the Trade lists.");
        LOGGER.fatal(e);
    }
}
Also used : NBTTagCompound(net.minecraft.nbt.NBTTagCompound) Charsets(com.google.common.base.Charsets) Item(net.minecraft.item.Item) FileUtil(nex.util.FileUtil) FileUtils(org.apache.commons.io.FileUtils) IOException(java.io.IOException) HashMap(java.util.HashMap) NetherEx(nex.NetherEx) Maps(com.google.common.collect.Maps) NBTTagString(net.minecraft.nbt.NBTTagString) File(java.io.File) NBTUtil(nex.util.NBTUtil) Strings(com.google.common.base.Strings) ItemStack(net.minecraft.item.ItemStack) NBTTagList(net.minecraft.nbt.NBTTagList) List(java.util.List) Lists(com.google.common.collect.Lists) Logger(org.apache.logging.log4j.Logger) Block(net.minecraft.block.Block) Files(com.google.common.io.Files) Gson(com.google.gson.Gson) LogManager(org.apache.logging.log4j.LogManager) NetherEx(nex.NetherEx) NBTTagCompound(net.minecraft.nbt.NBTTagCompound) Gson(com.google.gson.Gson) NBTTagString(net.minecraft.nbt.NBTTagString) NBTTagList(net.minecraft.nbt.NBTTagList) NBTTagString(net.minecraft.nbt.NBTTagString) IOException(java.io.IOException) ItemStack(net.minecraft.item.ItemStack) File(java.io.File)

Aggregations

Charsets (com.google.common.base.Charsets)1 Strings (com.google.common.base.Strings)1 Lists (com.google.common.collect.Lists)1 Maps (com.google.common.collect.Maps)1 Files (com.google.common.io.Files)1 Gson (com.google.gson.Gson)1 File (java.io.File)1 IOException (java.io.IOException)1 HashMap (java.util.HashMap)1 List (java.util.List)1 Block (net.minecraft.block.Block)1 Item (net.minecraft.item.Item)1 ItemStack (net.minecraft.item.ItemStack)1 NBTTagCompound (net.minecraft.nbt.NBTTagCompound)1 NBTTagList (net.minecraft.nbt.NBTTagList)1 NBTTagString (net.minecraft.nbt.NBTTagString)1 NetherEx (nex.NetherEx)1 FileUtil (nex.util.FileUtil)1 NBTUtil (nex.util.NBTUtil)1 FileUtils (org.apache.commons.io.FileUtils)1