From 9708a9a767acad2ff4b96518d2d7d450c67ce647 Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Mon, 21 Nov 2016 17:50:33 +0100 Subject: [PATCH] Added engineer and crystallizer villager --- build.gradle | 6 +- .../mod/ActuallyAdditions.java | 2 +- .../mod/gen/InitVillager.java | 61 ---------- .../mod/gen/village/BasicTradeList.java | 54 +++++++++ .../mod/gen/village/InitVillager.java | 112 ++++++++++++++++++ .../{ => village}/JamVillagerTradeList.java | 4 +- .../VillageComponentCustomCropField.java | 2 +- .../VillageComponentEngineerHouse.java | 15 +-- .../component}/VillageComponentJamHouse.java | 3 +- .../VillageCustomCropFieldHandler.java | 3 +- .../handler}/VillageEngineerHouseHandler.java | 3 +- .../handler}/VillageJamHouseHandler.java | 3 +- .../actuallyadditions/mod/util/StackUtil.java | 2 + .../assets/actuallyadditions/lang/en_US.lang | 2 + .../structures/andrew_period_house.nbt | Bin 5543 -> 5553 bytes 15 files changed, 193 insertions(+), 79 deletions(-) delete mode 100644 src/main/java/de/ellpeck/actuallyadditions/mod/gen/InitVillager.java create mode 100644 src/main/java/de/ellpeck/actuallyadditions/mod/gen/village/BasicTradeList.java create mode 100644 src/main/java/de/ellpeck/actuallyadditions/mod/gen/village/InitVillager.java rename src/main/java/de/ellpeck/actuallyadditions/mod/gen/{ => village}/JamVillagerTradeList.java (91%) rename src/main/java/de/ellpeck/actuallyadditions/mod/gen/{ => village/component}/VillageComponentCustomCropField.java (98%) rename src/main/java/de/ellpeck/actuallyadditions/mod/gen/{ => village/component}/VillageComponentEngineerHouse.java (95%) rename src/main/java/de/ellpeck/actuallyadditions/mod/gen/{ => village/component}/VillageComponentJamHouse.java (99%) rename src/main/java/de/ellpeck/actuallyadditions/mod/gen/{ => village/component/handler}/VillageCustomCropFieldHandler.java (89%) rename src/main/java/de/ellpeck/actuallyadditions/mod/gen/{ => village/component/handler}/VillageEngineerHouseHandler.java (89%) rename src/main/java/de/ellpeck/actuallyadditions/mod/gen/{ => village/component/handler}/VillageJamHouseHandler.java (89%) diff --git a/build.gradle b/build.gradle index fd45e864a..d28e32208 100644 --- a/build.gradle +++ b/build.gradle @@ -23,7 +23,7 @@ if(hasProperty('buildnumber')){ } minecraft { - version = "1.11-13.19.0.2153" + version = "1.11-13.19.0.2154" runDir = "idea" mappings = "snapshot_20161111" @@ -44,8 +44,8 @@ repositories { } dependencies { - compile "net.darkhax.tesla:Tesla:1.10.2-1.2.1.49" - deobfCompile "mezz.jei:jei_1.11:4.0.1.193" + compile "net.darkhax.tesla:Tesla:1.11-1.3.0.51" + deobfCompile "mezz.jei:jei_1.11:4.0.2.194" } processResources { diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/ActuallyAdditions.java b/src/main/java/de/ellpeck/actuallyadditions/mod/ActuallyAdditions.java index 7c916c594..46ea18fad 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/ActuallyAdditions.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/ActuallyAdditions.java @@ -21,7 +21,7 @@ import de.ellpeck.actuallyadditions.mod.crafting.ItemCrafting; import de.ellpeck.actuallyadditions.mod.entity.InitEntities; import de.ellpeck.actuallyadditions.mod.event.CommonEvents; import de.ellpeck.actuallyadditions.mod.fluids.InitFluids; -import de.ellpeck.actuallyadditions.mod.gen.InitVillager; +import de.ellpeck.actuallyadditions.mod.gen.village.InitVillager; import de.ellpeck.actuallyadditions.mod.gen.OreGen; import de.ellpeck.actuallyadditions.mod.inventory.GuiHandler; import de.ellpeck.actuallyadditions.mod.items.InitItems; diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/gen/InitVillager.java b/src/main/java/de/ellpeck/actuallyadditions/mod/gen/InitVillager.java deleted file mode 100644 index 853c7a1f1..000000000 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/gen/InitVillager.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * This file ("InitVillager.java") is part of the Actually Additions mod for Minecraft. - * It is created and owned by Ellpeck and distributed - * under the Actually Additions License to be found at - * http://ellpeck.de/actaddlicense - * View the source code at https://github.com/Ellpeck/ActuallyAdditions - * - * © 2015-2016 Ellpeck - */ - -package de.ellpeck.actuallyadditions.mod.gen; - -import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues; -import de.ellpeck.actuallyadditions.mod.util.ModUtil; -import net.minecraft.world.gen.structure.MapGenStructureIO; -import net.minecraftforge.fml.common.registry.VillagerRegistry; -import net.minecraftforge.fml.common.registry.VillagerRegistry.VillagerCareer; -import net.minecraftforge.fml.common.registry.VillagerRegistry.VillagerProfession; - -public final class InitVillager{ - - public static VillagerProfession jamProfession; - - public static void init(){ - ModUtil.LOGGER.info("Initializing Village Addons..."); - - if(ConfigBoolValues.JAM_VILLAGER_EXISTS.isEnabled()){ - initJamVillagePart(); - } - if(ConfigBoolValues.CROP_FIELD_EXISTS.isEnabled()){ - initCustomCropFieldPart(); - } - if(ConfigBoolValues.ENGINEER_VILLAGER_EXISTS.isEnabled()){ - initEngineerVillagePart(); - } - } - - private static void initEngineerVillagePart(){ - VillagerRegistry.instance().registerVillageCreationHandler(new VillageEngineerHouseHandler()); - MapGenStructureIO.registerStructureComponent(VillageComponentEngineerHouse.class, ModUtil.MOD_ID+":engineerHouseStructure"); - } - - private static void initJamVillagePart(){ - jamProfession = new VillagerProfession(ModUtil.MOD_ID+":jamGuy", ModUtil.MOD_ID+":textures/entity/villager/jam_villager.png", ModUtil.MOD_ID+":textures/entity/villager/jam_villager_zombie.png"); - VillagerRegistry.instance().register(jamProfession); - - VillagerCareer career = new VillagerCareer(jamProfession, ModUtil.MOD_ID+".jammer"); - for(int i = 0; i < 3; i++){ - career.addTrade(i+1, new JamVillagerTradeList()); - } - - VillagerRegistry.instance().registerVillageCreationHandler(new VillageJamHouseHandler()); - MapGenStructureIO.registerStructureComponent(VillageComponentJamHouse.class, ModUtil.MOD_ID+":jamHouseStructure"); - } - - private static void initCustomCropFieldPart(){ - VillagerRegistry.instance().registerVillageCreationHandler(new VillageCustomCropFieldHandler()); - MapGenStructureIO.registerStructureComponent(VillageComponentCustomCropField.class, ModUtil.MOD_ID+":customCropFieldStructure"); - } - -} diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/gen/village/BasicTradeList.java b/src/main/java/de/ellpeck/actuallyadditions/mod/gen/village/BasicTradeList.java new file mode 100644 index 000000000..333550624 --- /dev/null +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/gen/village/BasicTradeList.java @@ -0,0 +1,54 @@ +/* + * This file ("BasicTradeList.java") is part of the Actually Additions mod for Minecraft. + * It is created and owned by Ellpeck and distributed + * under the Actually Additions License to be found at + * http://ellpeck.de/actaddlicense + * View the source code at https://github.com/Ellpeck/ActuallyAdditions + * + * © 2015-2016 Ellpeck + */ + +package de.ellpeck.actuallyadditions.mod.gen.village; + +import de.ellpeck.actuallyadditions.mod.util.StackUtil; +import net.minecraft.entity.IMerchant; +import net.minecraft.entity.passive.EntityVillager.ITradeList; +import net.minecraft.entity.passive.EntityVillager.PriceInfo; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; +import net.minecraft.village.MerchantRecipe; +import net.minecraft.village.MerchantRecipeList; + +import java.util.Random; + +public class BasicTradeList implements ITradeList{ + + private final ItemStack input; + private final PriceInfo inputAmount; + private final ItemStack output; + private final PriceInfo outputAmount; + + public BasicTradeList(ItemStack input, PriceInfo inputAmount, ItemStack output, PriceInfo outputAmount){ + this.input = input; + this.inputAmount = inputAmount; + this.output = output; + this.outputAmount = outputAmount; + } + + public BasicTradeList(PriceInfo emeraldInput, ItemStack output, PriceInfo outputAmount){ + this(new ItemStack(Items.EMERALD), emeraldInput, output, outputAmount); + } + + public BasicTradeList(ItemStack input, PriceInfo inputAmount, PriceInfo emeraldOutput){ + this(input, inputAmount, new ItemStack(Items.EMERALD), emeraldOutput); + } + + @Override + public void func_190888_a(IMerchant merchant, MerchantRecipeList recipeList, Random random){ + ItemStack in = this.input.copy(); + in = StackUtil.setStackSize(in, this.inputAmount.getPrice(random)); + ItemStack out = this.output.copy(); + out = StackUtil.setStackSize(out, this.outputAmount.getPrice(random)); + recipeList.add(new MerchantRecipe(in, out)); + } +} diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/gen/village/InitVillager.java b/src/main/java/de/ellpeck/actuallyadditions/mod/gen/village/InitVillager.java new file mode 100644 index 000000000..a6d2f9034 --- /dev/null +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/gen/village/InitVillager.java @@ -0,0 +1,112 @@ +/* + * This file ("InitVillager.java") is part of the Actually Additions mod for Minecraft. + * It is created and owned by Ellpeck and distributed + * under the Actually Additions License to be found at + * http://ellpeck.de/actaddlicense + * View the source code at https://github.com/Ellpeck/ActuallyAdditions + * + * © 2015-2016 Ellpeck + */ + +package de.ellpeck.actuallyadditions.mod.gen.village; + +import de.ellpeck.actuallyadditions.mod.blocks.InitBlocks; +import de.ellpeck.actuallyadditions.mod.blocks.metalists.TheMiscBlocks; +import de.ellpeck.actuallyadditions.mod.config.values.ConfigBoolValues; +import de.ellpeck.actuallyadditions.mod.gen.village.component.VillageComponentCustomCropField; +import de.ellpeck.actuallyadditions.mod.gen.village.component.VillageComponentEngineerHouse; +import de.ellpeck.actuallyadditions.mod.gen.village.component.VillageComponentJamHouse; +import de.ellpeck.actuallyadditions.mod.gen.village.component.handler.VillageCustomCropFieldHandler; +import de.ellpeck.actuallyadditions.mod.gen.village.component.handler.VillageEngineerHouseHandler; +import de.ellpeck.actuallyadditions.mod.gen.village.component.handler.VillageJamHouseHandler; +import de.ellpeck.actuallyadditions.mod.items.InitItems; +import de.ellpeck.actuallyadditions.mod.items.metalists.TheCrystals; +import de.ellpeck.actuallyadditions.mod.items.metalists.TheMiscItems; +import de.ellpeck.actuallyadditions.mod.util.ModUtil; +import net.minecraft.entity.passive.EntityVillager.PriceInfo; +import net.minecraft.item.ItemStack; +import net.minecraft.world.gen.structure.MapGenStructureIO; +import net.minecraftforge.fml.common.registry.VillagerRegistry; +import net.minecraftforge.fml.common.registry.VillagerRegistry.VillagerCareer; +import net.minecraftforge.fml.common.registry.VillagerRegistry.VillagerProfession; + +public final class InitVillager{ + + public static VillagerProfession jamProfession; + public static VillagerProfession engineerProfession; + + public static void init(){ + ModUtil.LOGGER.info("Initializing Village Addons..."); + + if(ConfigBoolValues.JAM_VILLAGER_EXISTS.isEnabled()){ + initJamVillagePart(); + } + if(ConfigBoolValues.CROP_FIELD_EXISTS.isEnabled()){ + initCustomCropFieldPart(); + } + if(ConfigBoolValues.ENGINEER_VILLAGER_EXISTS.isEnabled()){ + initEngineerVillagePart(); + } + } + + private static void initEngineerVillagePart(){ + VillagerRegistry.instance().registerVillageCreationHandler(new VillageEngineerHouseHandler()); + MapGenStructureIO.registerStructureComponent(VillageComponentEngineerHouse.class, ModUtil.MOD_ID+":engineerHouseStructure"); + + engineerProfession = new VillagerProfession(ModUtil.MOD_ID+":engineer", ModUtil.MOD_ID+":textures/entity/villager/engineer_villager.png", ModUtil.MOD_ID+":textures/entity/villager/engineer_villager_zombie.png"); + VillagerRegistry.instance().register(engineerProfession); + + VillagerCareer crystallizer = new VillagerCareer(engineerProfession, ModUtil.MOD_ID+".crystallizer"); + crystallizer.addTrade(1, + new BasicTradeList(new PriceInfo(1, 2), new ItemStack(InitItems.itemCrystal, 1, TheCrystals.COAL.ordinal()), new PriceInfo(2, 8)), + new BasicTradeList(new PriceInfo(1, 3), new ItemStack(InitItems.itemCrystal, 1, TheCrystals.IRON.ordinal()), new PriceInfo(2, 6)), + new BasicTradeList(new PriceInfo(1, 3), new ItemStack(InitItems.itemCrystal, 1, TheCrystals.REDSTONE.ordinal()), new PriceInfo(1, 4)), + new BasicTradeList(new ItemStack(InitItems.itemCrystal, 1, TheCrystals.COAL.ordinal()), new PriceInfo(10, 16), new PriceInfo(1, 1))); + crystallizer.addTrade(2, + new BasicTradeList(new PriceInfo(2, 3), new ItemStack(InitItems.itemCrystal, 1, TheCrystals.EMERALD.ordinal()), new PriceInfo(2, 4)), + new BasicTradeList(new PriceInfo(1, 3), new ItemStack(InitItems.itemCrystal, 1, TheCrystals.LAPIS.ordinal()), new PriceInfo(2, 6)), + new BasicTradeList(new ItemStack(InitItems.itemCrystal, 1, TheCrystals.IRON.ordinal()), new PriceInfo(8, 12), new PriceInfo(1, 1)), + new BasicTradeList(new ItemStack(InitItems.itemCrystal, 1, TheCrystals.REDSTONE.ordinal()), new PriceInfo(8, 16), new PriceInfo(1, 2))); + crystallizer.addTrade(3, + new BasicTradeList(new PriceInfo(2, 4), new ItemStack(InitItems.itemCrystal, 1, TheCrystals.DIAMOND.ordinal()), new PriceInfo(2, 3)), + new BasicTradeList(new ItemStack(InitItems.itemCrystal, 1, TheCrystals.LAPIS.ordinal()), new PriceInfo(6, 10), new PriceInfo(1, 1)), + new BasicTradeList(new ItemStack(InitItems.itemCrystal, 1, TheCrystals.DIAMOND.ordinal()), new PriceInfo(4, 6), new PriceInfo(1, 1)), + new BasicTradeList(new ItemStack(InitItems.itemCrystal, 1, TheCrystals.EMERALD.ordinal()), new PriceInfo(6, 12), new PriceInfo(1, 2))); + + VillagerCareer engineer = new VillagerCareer(engineerProfession, ModUtil.MOD_ID+".engineer"); + engineer.addTrade(1, + new BasicTradeList(new PriceInfo(1, 2), new ItemStack(InitBlocks.blockMisc, 1, TheMiscBlocks.ORE_QUARTZ.ordinal()), new PriceInfo(2, 3)), + new BasicTradeList(new PriceInfo(1, 2), new ItemStack(InitItems.itemMisc, 1, TheMiscItems.QUARTZ.ordinal()), new PriceInfo(6, 8)), + new BasicTradeList(new PriceInfo(1, 3), new ItemStack(InitItems.itemLaserWrench), new PriceInfo(1, 1))); + engineer.addTrade(2, + new BasicTradeList(new ItemStack(InitItems.itemCoffeeBean), new PriceInfo(20, 30), new PriceInfo(1, 2)), + new BasicTradeList(new PriceInfo(3, 5), new ItemStack(InitItems.itemPhantomConnector), new PriceInfo(1, 1)), + new BasicTradeList(new PriceInfo(10, 20), new ItemStack(InitBlocks.blockLaserRelay), new PriceInfo(1, 2))); + engineer.addTrade(3, + new BasicTradeList(new ItemStack(InitBlocks.blockTinyTorch), new PriceInfo(30, 40), new PriceInfo(1, 2)), + new BasicTradeList(new PriceInfo(1, 2), new ItemStack(InitBlocks.blockMisc, 1, TheMiscBlocks.WOOD_CASING.ordinal()), new PriceInfo(1, 2))); + engineer.addTrade(4, + new BasicTradeList(new PriceInfo(3, 5), new ItemStack(InitBlocks.blockMisc, 1, TheMiscBlocks.IRON_CASING.ordinal()), new PriceInfo(1, 2)), + new BasicTradeList(new ItemStack(InitBlocks.blockEmpowerer), new PriceInfo(1, 1), new PriceInfo(15, 20)), + new BasicTradeList(new PriceInfo(30, 40), new ItemStack(InitBlocks.blockLaserRelayExtreme), new PriceInfo(1, 1))); + } + + private static void initJamVillagePart(){ + jamProfession = new VillagerProfession(ModUtil.MOD_ID+":jamGuy", ModUtil.MOD_ID+":textures/entity/villager/jam_villager.png", ModUtil.MOD_ID+":textures/entity/villager/jam_villager_zombie.png"); + VillagerRegistry.instance().register(jamProfession); + + VillagerCareer career = new VillagerCareer(jamProfession, ModUtil.MOD_ID+".jammer"); + for(int i = 0; i < 3; i++){ + career.addTrade(i+1, new JamVillagerTradeList()); + } + + VillagerRegistry.instance().registerVillageCreationHandler(new VillageJamHouseHandler()); + MapGenStructureIO.registerStructureComponent(VillageComponentJamHouse.class, ModUtil.MOD_ID+":jamHouseStructure"); + } + + private static void initCustomCropFieldPart(){ + VillagerRegistry.instance().registerVillageCreationHandler(new VillageCustomCropFieldHandler()); + MapGenStructureIO.registerStructureComponent(VillageComponentCustomCropField.class, ModUtil.MOD_ID+":customCropFieldStructure"); + } + +} diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/gen/JamVillagerTradeList.java b/src/main/java/de/ellpeck/actuallyadditions/mod/gen/village/JamVillagerTradeList.java similarity index 91% rename from src/main/java/de/ellpeck/actuallyadditions/mod/gen/JamVillagerTradeList.java rename to src/main/java/de/ellpeck/actuallyadditions/mod/gen/village/JamVillagerTradeList.java index 27e4a2edc..6cae13611 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/gen/JamVillagerTradeList.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/gen/village/JamVillagerTradeList.java @@ -1,5 +1,5 @@ /* - * This file ("GenericTrade.java") is part of the Actually Additions mod for Minecraft. + * This file ("JamVillagerTradeList.java") is part of the Actually Additions mod for Minecraft. * It is created and owned by Ellpeck and distributed * under the Actually Additions License to be found at * http://ellpeck.de/actaddlicense @@ -8,7 +8,7 @@ * © 2015-2016 Ellpeck */ -package de.ellpeck.actuallyadditions.mod.gen; +package de.ellpeck.actuallyadditions.mod.gen.village; import de.ellpeck.actuallyadditions.mod.items.InitItems; import de.ellpeck.actuallyadditions.mod.items.metalists.TheJams; diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/gen/VillageComponentCustomCropField.java b/src/main/java/de/ellpeck/actuallyadditions/mod/gen/village/component/VillageComponentCustomCropField.java similarity index 98% rename from src/main/java/de/ellpeck/actuallyadditions/mod/gen/VillageComponentCustomCropField.java rename to src/main/java/de/ellpeck/actuallyadditions/mod/gen/village/component/VillageComponentCustomCropField.java index 61c054aa0..fbac4cf9d 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/gen/VillageComponentCustomCropField.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/gen/village/component/VillageComponentCustomCropField.java @@ -8,7 +8,7 @@ * © 2015-2016 Ellpeck */ -package de.ellpeck.actuallyadditions.mod.gen; +package de.ellpeck.actuallyadditions.mod.gen.village.component; import de.ellpeck.actuallyadditions.mod.blocks.InitBlocks; import net.minecraft.block.Block; diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/gen/VillageComponentEngineerHouse.java b/src/main/java/de/ellpeck/actuallyadditions/mod/gen/village/component/VillageComponentEngineerHouse.java similarity index 95% rename from src/main/java/de/ellpeck/actuallyadditions/mod/gen/VillageComponentEngineerHouse.java rename to src/main/java/de/ellpeck/actuallyadditions/mod/gen/village/component/VillageComponentEngineerHouse.java index c3bd22d5d..85b724245 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/gen/VillageComponentEngineerHouse.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/gen/village/component/VillageComponentEngineerHouse.java @@ -8,18 +8,17 @@ * © 2015-2016 Ellpeck */ -package de.ellpeck.actuallyadditions.mod.gen; +package de.ellpeck.actuallyadditions.mod.gen.village.component; import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI; import de.ellpeck.actuallyadditions.api.laser.LaserType; import de.ellpeck.actuallyadditions.mod.blocks.InitBlocks; import de.ellpeck.actuallyadditions.mod.blocks.metalists.TheColoredLampColors; import de.ellpeck.actuallyadditions.mod.blocks.metalists.TheMiscBlocks; -import de.ellpeck.actuallyadditions.mod.data.WorldData; import de.ellpeck.actuallyadditions.mod.fluids.InitFluids; +import de.ellpeck.actuallyadditions.mod.gen.village.InitVillager; import de.ellpeck.actuallyadditions.mod.items.InitItems; import de.ellpeck.actuallyadditions.mod.items.metalists.TheMiscItems; -import de.ellpeck.actuallyadditions.mod.recipe.CrusherRecipeRegistry; import de.ellpeck.actuallyadditions.mod.tile.*; import de.ellpeck.actuallyadditions.mod.util.ModUtil; import net.minecraft.block.Block; @@ -42,6 +41,8 @@ import net.minecraft.world.gen.structure.template.Template; import net.minecraft.world.gen.structure.template.TemplateManager; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fml.common.registry.VillagerRegistry; +import net.minecraftforge.fml.common.registry.VillagerRegistry.VillagerProfession; import java.util.List; import java.util.Random; @@ -91,7 +92,7 @@ public class VillageComponentEngineerHouse extends StructureVillagePieces.House1 } } - this.spawnVillagers(world, sbb, 3, 1, 3, 1); + this.spawnVillagers(world, sbb, 7, 4, 6, 1); return true; } @@ -194,8 +195,8 @@ public class VillageComponentEngineerHouse extends StructureVillagePieces.House1 return world.getTileEntity(pos); } - /*@Override + @Override protected VillagerProfession chooseForgeProfession(int count, VillagerProfession prof){ - return InitVillager.jamProfession; - }*/ + return InitVillager.engineerProfession; + } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/gen/VillageComponentJamHouse.java b/src/main/java/de/ellpeck/actuallyadditions/mod/gen/village/component/VillageComponentJamHouse.java similarity index 99% rename from src/main/java/de/ellpeck/actuallyadditions/mod/gen/VillageComponentJamHouse.java rename to src/main/java/de/ellpeck/actuallyadditions/mod/gen/village/component/VillageComponentJamHouse.java index e48530775..16a817752 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/gen/VillageComponentJamHouse.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/gen/village/component/VillageComponentJamHouse.java @@ -8,9 +8,10 @@ * © 2015-2016 Ellpeck */ -package de.ellpeck.actuallyadditions.mod.gen; +package de.ellpeck.actuallyadditions.mod.gen.village.component; import de.ellpeck.actuallyadditions.mod.blocks.InitBlocks; +import de.ellpeck.actuallyadditions.mod.gen.village.InitVillager; import de.ellpeck.actuallyadditions.mod.misc.DungeonLoot; import de.ellpeck.actuallyadditions.mod.tile.TileEntityGiantChest; import net.minecraft.block.*; diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/gen/VillageCustomCropFieldHandler.java b/src/main/java/de/ellpeck/actuallyadditions/mod/gen/village/component/handler/VillageCustomCropFieldHandler.java similarity index 89% rename from src/main/java/de/ellpeck/actuallyadditions/mod/gen/VillageCustomCropFieldHandler.java rename to src/main/java/de/ellpeck/actuallyadditions/mod/gen/village/component/handler/VillageCustomCropFieldHandler.java index 198e85d57..b29e3fe7c 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/gen/VillageCustomCropFieldHandler.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/gen/village/component/handler/VillageCustomCropFieldHandler.java @@ -8,8 +8,9 @@ * © 2015-2016 Ellpeck */ -package de.ellpeck.actuallyadditions.mod.gen; +package de.ellpeck.actuallyadditions.mod.gen.village.component.handler; +import de.ellpeck.actuallyadditions.mod.gen.village.component.VillageComponentCustomCropField; import net.minecraft.util.EnumFacing; import net.minecraft.world.gen.structure.StructureComponent; import net.minecraft.world.gen.structure.StructureVillagePieces; diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/gen/VillageEngineerHouseHandler.java b/src/main/java/de/ellpeck/actuallyadditions/mod/gen/village/component/handler/VillageEngineerHouseHandler.java similarity index 89% rename from src/main/java/de/ellpeck/actuallyadditions/mod/gen/VillageEngineerHouseHandler.java rename to src/main/java/de/ellpeck/actuallyadditions/mod/gen/village/component/handler/VillageEngineerHouseHandler.java index 271ac9ee5..63bd5c4a6 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/gen/VillageEngineerHouseHandler.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/gen/village/component/handler/VillageEngineerHouseHandler.java @@ -8,8 +8,9 @@ * © 2015-2016 Ellpeck */ -package de.ellpeck.actuallyadditions.mod.gen; +package de.ellpeck.actuallyadditions.mod.gen.village.component.handler; +import de.ellpeck.actuallyadditions.mod.gen.village.component.VillageComponentEngineerHouse; import net.minecraft.util.EnumFacing; import net.minecraft.world.gen.structure.StructureComponent; import net.minecraft.world.gen.structure.StructureVillagePieces; diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/gen/VillageJamHouseHandler.java b/src/main/java/de/ellpeck/actuallyadditions/mod/gen/village/component/handler/VillageJamHouseHandler.java similarity index 89% rename from src/main/java/de/ellpeck/actuallyadditions/mod/gen/VillageJamHouseHandler.java rename to src/main/java/de/ellpeck/actuallyadditions/mod/gen/village/component/handler/VillageJamHouseHandler.java index 8a03dedfe..e569a0203 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/gen/VillageJamHouseHandler.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/gen/village/component/handler/VillageJamHouseHandler.java @@ -8,8 +8,9 @@ * © 2015-2016 Ellpeck */ -package de.ellpeck.actuallyadditions.mod.gen; +package de.ellpeck.actuallyadditions.mod.gen.village.component.handler; +import de.ellpeck.actuallyadditions.mod.gen.village.component.VillageComponentJamHouse; import net.minecraft.util.EnumFacing; import net.minecraft.world.gen.structure.StructureComponent; import net.minecraft.world.gen.structure.StructureVillagePieces; diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/util/StackUtil.java b/src/main/java/de/ellpeck/actuallyadditions/mod/util/StackUtil.java index 6e3a7cc74..bf7be8a15 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/util/StackUtil.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/util/StackUtil.java @@ -80,4 +80,6 @@ public final class StackUtil{ public static NonNullList createSlots(int size){ return NonNullList.func_191197_a(size, getNull()); } + + } diff --git a/src/main/resources/assets/actuallyadditions/lang/en_US.lang b/src/main/resources/assets/actuallyadditions/lang/en_US.lang index a9b3f440d..b8f0a4575 100644 --- a/src/main/resources/assets/actuallyadditions/lang/en_US.lang +++ b/src/main/resources/assets/actuallyadditions/lang/en_US.lang @@ -11,6 +11,8 @@ fluid.actuallyadditions.empoweredoil=Empowered Oil #Entities entity.Villager.actuallyadditions.jammer=Jam Guy +entity.Villager.actuallyadditions.crystallizer=Crystallizer +entity.Villager.actuallyadditions.engineer=Engineer #Banners item.banner.actuallyadditionsBook.black=Black Actually Additions Manual Pattern diff --git a/src/main/resources/assets/actuallyadditions/structures/andrew_period_house.nbt b/src/main/resources/assets/actuallyadditions/structures/andrew_period_house.nbt index 506f475f210d9de1007f676ce74e7a0150656dea..b4df876ef9daed6aacf8ac992e1be179ece0179c 100644 GIT binary patch literal 5553 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 Y{h2Yo4C#Kq<-D>I@~)r#kc`a#0M(^50RR91 literal 5543 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 a8Qi3hazi2K_ng)hq3aTloi#@U1pW&Zca)|8