Search in sources :

Example 1 with NetherEx

use of nex.NetherEx in project NetherEx by LogicTechCorp.

the class AdditionalBiomeManager method init.

public static void init(File directory) {
    try {
        if (!directory.exists()) {
            directory.mkdir();
        }
        LOGGER.info("Copying the Biome List Directory to the config folder.");
        if (NetherEx.IS_DEV_ENV) {
            FileUtils.copyDirectory(new File(NetherEx.class.getResource("/assets/nex/biome_lists").getFile()), directory);
        } else {
            FileUtil.extractFromJar("/assets/nex/biome_lists", directory.getPath());
        }
    } catch (IOException e) {
        LOGGER.fatal("The attempt to copy the Biome List Directory to the config folder was unsuccessful.");
        LOGGER.fatal(e);
    }
    Gson gson = new Gson();
    List<File> additionalBiomeFiles = Lists.newArrayList(directory.listFiles());
    try {
        for (File additionalBiomeFile : additionalBiomeFiles) {
            String jsonText = Files.toString(additionalBiomeFile, Charsets.UTF_8);
            AdditionalBiomeList biomeList = gson.fromJson(jsonText, AdditionalBiomeList.class);
            LOGGER.info("Adding biomes from the " + biomeList.getName() + ".");
            for (AdditionalBiomeMod biomeMod : biomeList.getMods()) {
                for (AdditionalBiome additionalBiome : biomeMod.getBiomes()) {
                    ResourceLocation biomeRegistryName = new ResourceLocation(biomeMod.getName() + ":" + additionalBiome.getName());
                    Biome biome = Biome.REGISTRY.getObject(biomeRegistryName);
                    if (biome == null) {
                        continue;
                    }
                    int weight = additionalBiome.getWeight();
                    AdditionalBiome.OceanBlock oceanBlock = additionalBiome.getOceanBlock();
                    if (oceanBlock == null) {
                        oceanBlock = new AdditionalBiome.OceanBlock("minecraft:air", 0);
                    }
                    Block block = Block.getBlockFromName(oceanBlock.getName().isEmpty() ? "minecraft:air" : oceanBlock.getName());
                    int meta = oceanBlock.getMeta();
                    IBlockState state = block.getStateFromMeta(meta);
                    NetherExBiomeType type = NetherExBiomeType.getFromString(additionalBiome.getType());
                    NetherExBiomes.addBiome(biome, weight, state, type);
                    LOGGER.info("The " + biome.getBiomeName() + " biome from the " + biomeList.getName() + " was added to the Nether.");
                }
            }
        }
    } catch (IOException e) {
        LOGGER.fatal("NetherEx was unable to read the Biome lists.");
        LOGGER.fatal(e);
    }
}
Also used : IBlockState(net.minecraft.block.state.IBlockState) NetherEx(nex.NetherEx) Gson(com.google.gson.Gson) IOException(java.io.IOException) NetherExBiomeType(nex.world.biome.NetherExBiomeType) Biome(net.minecraft.world.biome.Biome) ResourceLocation(net.minecraft.util.ResourceLocation) Block(net.minecraft.block.Block) File(java.io.File)

Example 2 with NetherEx

use of nex.NetherEx 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

Gson (com.google.gson.Gson)2 File (java.io.File)2 IOException (java.io.IOException)2 Block (net.minecraft.block.Block)2 NetherEx (nex.NetherEx)2 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 HashMap (java.util.HashMap)1 List (java.util.List)1 IBlockState (net.minecraft.block.state.IBlockState)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 ResourceLocation (net.minecraft.util.ResourceLocation)1 Biome (net.minecraft.world.biome.Biome)1