From 4c41295131e82b64ce83771ec4e55474e69d5e8d Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Sun, 4 Dec 2016 16:15:32 +0100 Subject: [PATCH] Added nether wart to the farmer --- .../mod/booklet/InitBooklet.java | 2 +- .../mod/crafting/InitCrafting.java | 2 + .../farmer/NetherWartFarmerBehavior.java | 76 ++++++++++++++++++ .../assets/actuallyadditions/lang/en_US.lang | 1 + .../textures/gui/booklet/page_farmer_wart.png | Bin 0 -> 20127 bytes 5 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 src/main/java/de/ellpeck/actuallyadditions/mod/misc/apiimpl/farmer/NetherWartFarmerBehavior.java create mode 100644 src/main/resources/assets/actuallyadditions/textures/gui/booklet/page_farmer_wart.png diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/InitBooklet.java b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/InitBooklet.java index 3dbbdc646..3947e7154 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/InitBooklet.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/InitBooklet.java @@ -209,7 +209,7 @@ public final class InitBooklet{ new BookletChapter("rangedCollector", ActuallyAdditionsAPI.entryFunctionalNonRF, new ItemStack(InitBlocks.blockRangedCollector), new PageTextOnly(1).addTextReplacement("", TileEntityRangedCollector.RANGE), new PageCrafting(2, BlockCrafting.recipeRangedCollector).setNoText()); //RF Using Blocks - new BookletChapter("farmer", ActuallyAdditionsAPI.entryFunctionalRF, new ItemStack(InitBlocks.blockFarmer), new PageTextOnly(1), new PagePicture(2, "page_farmer_crops", 95).addItemToPage(new ItemStack(Items.WHEAT_SEEDS)).addItemToPage(new ItemStack(InitItems.itemCanolaSeed)), new PagePicture(3, "page_farmer_cactus", 105).addItemToPage(new ItemStack(Blocks.CACTUS)), new PageCrafting(4, BlockCrafting.recipeFarmer).setWildcard().setNoText()).setImportant(); + new BookletChapter("farmer", ActuallyAdditionsAPI.entryFunctionalRF, new ItemStack(InitBlocks.blockFarmer), new PageTextOnly(1), new PagePicture(2, "page_farmer_crops", 95).addItemToPage(new ItemStack(Items.WHEAT_SEEDS)).addItemToPage(new ItemStack(InitItems.itemCanolaSeed)), new PagePicture(3, "page_farmer_cactus", 105).addItemToPage(new ItemStack(Blocks.CACTUS)), new PagePicture(4, "page_farmer_wart", 95).addItemToPage(new ItemStack(Items.NETHER_WART)), new PageCrafting(4, BlockCrafting.recipeFarmer).setWildcard().setNoText()).setImportant(); new BookletChapter("fireworkBox", ActuallyAdditionsAPI.entryFunctionalRF, new ItemStack(InitBlocks.blockFireworkBox), new PageTextOnly(1).addTextReplacement("", TileEntityFireworkBox.USE_PER_SHOT), new PageCrafting(2, BlockCrafting.recipeFireworkBox)).setSpecial(); new BookletChapter("miner", ActuallyAdditionsAPI.entryFunctionalRF, new ItemStack(InitBlocks.blockMiner), new PageTextOnly(1).addTextReplacement("", TileEntityMiner.ENERGY_USE_PER_BLOCK).addTextReplacement("", TileEntityMiner.DEFAULT_RANGE), new PageCrafting(2, BlockCrafting.recipeMiner)).setSpecial(); new BookletChapterCoffee("coffeeMachine", ActuallyAdditionsAPI.entryFunctionalRF, new ItemStack(InitBlocks.blockCoffeeMachine), new PageTextOnly(1).addItemToPage(new ItemStack(InitItems.itemCoffeeBean)).addTextReplacement("", TileEntityCoffeeMachine.ENERGY_USED).addTextReplacement("", TileEntityCoffeeMachine.CACHE_USE).addTextReplacement("", TileEntityCoffeeMachine.WATER_USE), new PageTextOnly(2).addItemToPage(new ItemStack(InitItems.itemCoffee)), new PagePicture(3, "page_coffee_machine", 115), new PageCrafting(4, BlockCrafting.recipeCoffeeMachine).setWildcard().setNoText(), new PageCrafting(5, ItemCrafting.recipeCup).setNoText()).setImportant(); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/crafting/InitCrafting.java b/src/main/java/de/ellpeck/actuallyadditions/mod/crafting/InitCrafting.java index 514e31a87..2e97cbe77 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/crafting/InitCrafting.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/crafting/InitCrafting.java @@ -16,6 +16,7 @@ import de.ellpeck.actuallyadditions.mod.items.InitItems; import de.ellpeck.actuallyadditions.mod.items.metalists.TheMiscItems; import de.ellpeck.actuallyadditions.mod.misc.apiimpl.farmer.CactusFarmerBehavior; import de.ellpeck.actuallyadditions.mod.misc.apiimpl.farmer.DefaultFarmerBehavior; +import de.ellpeck.actuallyadditions.mod.misc.apiimpl.farmer.NetherWartFarmerBehavior; import de.ellpeck.actuallyadditions.mod.util.ModUtil; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; @@ -43,6 +44,7 @@ public final class InitCrafting{ ActuallyAdditionsAPI.addFarmerBehavior(new DefaultFarmerBehavior()); ActuallyAdditionsAPI.addFarmerBehavior(new CactusFarmerBehavior()); + ActuallyAdditionsAPI.addFarmerBehavior(new NetherWartFarmerBehavior()); RecipeSorter.register(ModUtil.MOD_ID+":recipeKeepDataShaped", RecipeKeepDataShaped.class, RecipeSorter.Category.SHAPED, "after:minecraft:shaped"); RecipeSorter.register(ModUtil.MOD_ID+":recipeKeepDataShapeless", RecipeKeepDataShapeless.class, RecipeSorter.Category.SHAPELESS, "after:minecraft:shapeless"); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/misc/apiimpl/farmer/NetherWartFarmerBehavior.java b/src/main/java/de/ellpeck/actuallyadditions/mod/misc/apiimpl/farmer/NetherWartFarmerBehavior.java new file mode 100644 index 000000000..e48848419 --- /dev/null +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/misc/apiimpl/farmer/NetherWartFarmerBehavior.java @@ -0,0 +1,76 @@ +/* + * This file ("NetherWartFarmerBehavior.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.misc.apiimpl.farmer; + +import de.ellpeck.actuallyadditions.api.farmer.IFarmerBehavior; +import de.ellpeck.actuallyadditions.api.internal.IFarmer; +import net.minecraft.block.Block; +import net.minecraft.block.BlockNetherWart; +import net.minecraft.block.BlockSoulSand; +import net.minecraft.block.state.IBlockState; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +import java.util.List; + +public class NetherWartFarmerBehavior implements IFarmerBehavior{ + + @Override + public boolean tryPlantSeed(ItemStack seed, World world, BlockPos pos, IFarmer farmer){ + int use = 500; + if(farmer.getEnergy() >= use){ + if(seed.getItem() == Items.NETHER_WART){ + BlockPos below = pos.down(); + IBlockState stateBelow = world.getBlockState(below); + if(stateBelow.getBlock() instanceof BlockSoulSand && Blocks.NETHER_BRICK.canPlaceBlockAt(world, pos)){ + world.setBlockState(pos, Blocks.NETHER_WART.getDefaultState(), 2); + farmer.extractEnergy(use); + return true; + } + } + } + return false; + } + + @Override + public boolean tryHarvestPlant(World world, BlockPos pos, IFarmer farmer){ + int use = 500; + if(farmer.getEnergy() >= use){ + IBlockState state = world.getBlockState(pos); + if(state.getBlock() instanceof BlockNetherWart){ + if(state.getValue(BlockNetherWart.AGE) >= 3){ + List output = state.getBlock().getDrops(world, pos, state, 0); + if(output != null && !output.isEmpty()){ + boolean toInput = farmer.addToSeedInventory(output, false); + if(toInput || farmer.addToOutputInventory(output, false)){ + world.playEvent(2001, pos, Block.getStateId(state)); + world.setBlockToAir(pos); + + if(toInput){ + farmer.addToSeedInventory(output, true); + } + else{ + farmer.addToOutputInventory(output, true); + } + + farmer.extractEnergy(use); + return true; + } + } + } + } + } + return false; + } +} diff --git a/src/main/resources/assets/actuallyadditions/lang/en_US.lang b/src/main/resources/assets/actuallyadditions/lang/en_US.lang index 2def4c9b7..98cb5ccd6 100644 --- a/src/main/resources/assets/actuallyadditions/lang/en_US.lang +++ b/src/main/resources/assets/actuallyadditions/lang/en_US.lang @@ -1083,6 +1083,7 @@ booklet.actuallyadditions.chapter.farmer.name=Farmer booklet.actuallyadditions.chapter.farmer.text.1=The Farmer is a block that can, once placed in the world, plant and harvest different types of crops and other plants which can all be seen on the following pages. The left side of its GUI is reserved for seeds and other things that should be planted, while the right side will contain the harvested goods. It will farm in a 9x9 area in front of it. It uses varying amounts of CF per operation. my fam booklet.actuallyadditions.chapter.farmer.text.2=Farming basic crops crops like Wheat, Potatoes, Canola, Flax and so on. Ground will be tilled by the Farmer itself. booklet.actuallyadditions.chapter.farmer.text.3=Farming Cactus. Sand needs to be laid out for it to be planted. Cactus higher than 2 blocks will have the top broken off and placed inside of the Farmer. +booklet.actuallyadditions.chapter.farmer.text.4=Farming Nether Wart. Soul Sand needs to be laid out for it to be planted. booklet.actuallyadditions.chapter.lensMoreDeath.name=Lens of the Killer booklet.actuallyadditions.chapter.lensMoreDeath.text.1=The Lens of the Killer works much like the Lens of Certain Death, however it will also drop experience and player-kill loot. This means, however, that it will use a lot more power. To pick up the experience it drops, you might want to try an Experience Solidifier. diff --git a/src/main/resources/assets/actuallyadditions/textures/gui/booklet/page_farmer_wart.png b/src/main/resources/assets/actuallyadditions/textures/gui/booklet/page_farmer_wart.png new file mode 100644 index 0000000000000000000000000000000000000000..0ca51877bea71123f18c97d2551568a9e47daa93 GIT binary patch literal 20127 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

*!Ev_Wfv=1IA6F1~ z%;dv<(Q1Q1%hg03!PL1Hddg2+m7e=g5A(w~^<{q7{C)Oo_XA4>P$Qm+YZlY-r;G0& zf55NHc-dhG@F1Ni4lV9HCH+nZtqDNiXzQQqGg_jf8GLG*(Xus~#lQnq9z4<)1nqy* z$cVB1RlQPif$4&z3q}E+5#oNW3%43PGPA1R<#W0V5tzXbK{Fs?qZLS{#6h{%c83(tLa*R}_rapU`CN~Knfcs=-3pafRl;N%3hgFQ_XxgOip z`<%XT>guVVu@{})If0|;r|LN~T`Q)CMb3HNy>pX^l@}