Files
ForestryMC/src/main/java/forestry/plugins/PluginPlantMegaPack.java
T

457 lines
16 KiB
Java
Raw Normal View History

/*******************************************************************************
* Copyright (c) 2011-2014 SirSengir.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v3
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/lgpl-3.0.txt
*
* Various Contributors including, but not limited to:
* SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges
******************************************************************************/
package forestry.plugins;
import com.google.common.collect.ImmutableList;
2015-03-30 23:34:51 -05:00
import com.google.common.collect.ImmutableMap;
2015-03-27 05:28:07 -05:00
import java.util.Map;
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
import cpw.mods.fml.common.registry.GameRegistry;
2015-03-27 05:28:07 -05:00
import forestry.api.apiculture.FlowerManager;
import forestry.api.farming.Farmables;
2015-03-27 05:28:07 -05:00
import forestry.api.recipes.RecipeManagers;
import forestry.core.config.Constants;
import forestry.core.config.GameMode;
import forestry.core.fluids.Fluids;
import forestry.core.proxy.Proxies;
import forestry.core.recipes.RecipeUtil;
2015-06-30 12:09:59 -05:00
import forestry.farming.logic.FarmableBasicFruit;
2015-03-27 05:28:07 -05:00
import forestry.farming.logic.FarmableGenericCrop;
import forestry.farming.logic.FarmableStacked;
@Plugin(pluginID = "PlantMegaPack", name = "PlantMegaPack", author = "Nirek", url = Constants.URL, unlocalizedDescription = "for.plugin.plantmegapack.description")
public class PluginPlantMegaPack extends ForestryPlugin {
private static final String PlantMP = "plantmegapack";
@Override
public boolean isAvailable() {
return Proxies.common.isModLoaded(PlantMP);
}
@Override
public String getFailMessage() {
return "Plant Mega Pack not found";
}
@Override
protected void registerRecipes() {
ImmutableList<String> reedLikePlant = ImmutableList.of(
"bambooAsper",
"bambooFargesiaRobusta",
"bambooGiantTimber",
"bambooGolden",
"bambooMoso",
"bambooShortTassled",
"bambooTimorBlack",
"bambooTropicalBlue",
"bambooWetForest"
);
2015-03-27 05:28:07 -05:00
ImmutableList<String> landCropPlant = ImmutableList.of(
"Beet",
"BellPepperYellow",
"Celery",
"Corn",
"Cucumber",
"Lettuce",
"Onion",
"Spinach",
"Tomato"
);
2015-04-01 00:55:14 -05:00
ImmutableMap<String, Integer> desertPlant = ImmutableMap.<String, Integer>builder()
2015-06-30 12:09:59 -05:00
.put("cactusArmatocereusMatucanensis", 6)
.put("cactusBaseballBat", 6)
.put("cactusEchinocereusMetornii", 2)
.put("cactusGoldenCereus", 3)
.put("cactusGoldenSaguaro", 6)
.put("cactusMatucanaAureiflora", 1)
.put("cactusPricklyPear", 5)
.put("cactusSnowPole", 6)
.put("cactusToothpick", 6)
2015-04-01 00:55:14 -05:00
.put("desertApachePlume", 4)
.put("desertBrittlebush", 4)
.put("desertBroadLeafGilia", 4)
.put("desertBroomSnakeweed", 4)
.put("desertKangarooPaw", 4)
.put("desertOcotillo", 4)
.put("desertPeninsulaOnion", 4)
.put("desertSeepwood", 4)
.put("desertWhiteSage", 4)
.build();
2015-03-27 05:28:07 -05:00
2015-03-30 23:34:51 -05:00
ImmutableMap<String, Integer> nonGrowingFlowers = ImmutableMap.<String, Integer>builder()
.put("flowerAchillea", 9) // number of flowers in the block, usually meta+1
.put("flowerAlpineThistle", 1)
.put("flowerAzalea", 13)
.put("flowerBegonia", 9)
.put("flowerBell", 10)
.put("flowerBirdofParadise", 1)
.put("flowerBlueStar", 1)
.put("flowerBurningLove", 1)
.put("flowerCandelabraAloe", 1)
.put("flowerCarnation", 7)
.put("flowerCelosia", 7)
2015-06-30 12:09:59 -05:00
//.put("flowerColumbine", 5) //poisonous
2015-03-30 23:34:51 -05:00
.put("flowerDahlia", 8)
.put("flowerDaisy", 8)
.put("flowerDelphinium", 4)
.put("flowerDottedBlazingstar", 1)
.put("flowerElephantEars", 1)
.put("flowerFoamFlower", 1)
.put("flowerFuchsia", 1)
.put("flowerGeranium", 5)
.put("flowerGladiolus", 9)
.put("flowerHawkweed", 4)
.put("flowerHydrangea", 6)
.put("flowerJacobsLadder", 1)
.put("flowerLily", 5)
.put("flowerLionsTail", 1)
.put("flowerLupine", 10)
.put("flowerMarigold", 2)
.put("flowerMediterraneanSeaHolly", 1)
2015-06-30 12:09:59 -05:00
//.put("flowerMezereon", 1) //poisonous
2015-03-30 23:34:51 -05:00
.put("flowerNemesia", 12)
.put("flowerNewGuineaImpatiens", 1)
.put("flowerParrotsBeak", 1)
.put("flowerPeruvianLily", 1)
.put("flowerPurpleConeflower", 1)
.put("flowerRose", 13)
.put("flowerRoseCampion", 1)
.put("flowerStreamsideBluebells", 1)
.put("flowerTorchLily", 1)
.put("flowerTulip", 7)
.put("flowerViolet", 1)
.put("flowerWildCarrot", 1) //is not actually a carrot
.put("flowerWildDaffodil", 1)
.put("flowerWoodlandPinkroot", 1)
.put("flowerYellowToadflax", 1)
2015-06-30 12:09:59 -05:00
.put("floatingWaterHyacinth", 1)
.put("floatingWaterLily", 13)
2015-03-30 23:34:51 -05:00
.build();
2015-06-30 12:09:59 -05:00
ImmutableMap<String, Integer> floatingWaterPlant = ImmutableMap.<String, Integer>builder()
2015-07-01 08:32:19 -05:00
.put("cropSacredLotus", 4)
2015-06-30 12:09:59 -05:00
.put("cropWatercress", 4)
.put("cropTaro", 4)
.put("cropWasabi", 4)
.put("cropLaksaLeaf", 4)
.put("cropCentella", 4)
.put("cropRice", 4)
.put("cropWaterSpinach", 4)
.put("cropWildRice", 4)
2015-07-01 08:32:19 -05:00
.put("immersedArrowArum", 4)
.put("immersedCommonReed", 4)
.put("immersedDuckPotato", 4)
.put("immersedEuropeanBurReed", 4)
.put("immersedGreySedge", 4)
.put("immersedSimplestemBurReed", 4)
.put("immersedSoftstemBulrush", 4)
.put("immersedWaterMannagrass", 4)
.put("immersedYellowFlag", 4)
2015-03-30 23:34:51 -05:00
.build();
2015-06-30 12:09:59 -05:00
ImmutableMap<String, Integer> fungusPlant = ImmutableMap.<String, Integer>builder()
2015-07-01 08:32:19 -05:00
.put("fungusBlackPowderpuff", 1)
.put("fungusChanterelle", 1)
//.put("fungusDeathCap", 1) poisonous
.put("fungusGiantClub", 1)
.put("fungusParasol", 2)
.put("fungusStinkhorn", 1)
.put("fungusWeepingMilkCap", 1)
.put("fungusWoodBlewit", 1)
//.put("fungusWoollyGomphus", 2) poisonous
2015-06-30 12:09:59 -05:00
.build();
ImmutableMap<String, Integer> junglePlant = ImmutableMap.<String, Integer>builder()
2015-07-01 08:32:19 -05:00
.put("jungleConeHeadedGuzmania", 2)
.put("jungleDevilsTongue", 6)
.put("jungleHoneySpurge", 1)
.put("jungleJungleLantern", 6)
.put("jungleLazarusBell", 2)
.put("jungleLobsterClaws", 6)
.put("jungleLollipopPlant", 2)
.put("jungleMadagascarPalm", 6)
.put("junglePalmLily", 6)
.put("junglePanamaQueen", 2)
2015-06-30 12:09:59 -05:00
.put("junglePorteaAlatisepala", 2)
.put("jungleRacinaeaFraseri", 6)
.put("jungleRicheaDracophylla", 2)
2015-07-01 08:32:19 -05:00
//.put("jungleShellflower", 4) 2 tall needs specialcase
2015-06-30 12:09:59 -05:00
.put("jungleSilverVase", 2)
.put("jungleStaghornClubmoss", 2)
.put("jungleTorchGinger", 2)
.put("jungleVoodooLily", 6)
.put("leafyEmeraldPhilodendron", 2) //jungle plant
.build();
ImmutableMap<String, Integer> vanillaPlant = ImmutableMap.<String, Integer>builder()
2015-07-01 08:32:19 -05:00
.put("beachHighTideBush", 6)
.put("beachSeaLavender", 4)
.put("beachSeaSandwort", 4)
.put("leafyDustyMiller", 1) //beach plant
.put("fernCretanBrake", 1)
//.put("fernDwarfPalmetto", 0) doesn't grow
.put("fernHayScented", 2)
.put("fernKangaroo", 2)
.put("fernMaidenhairSpleenwort", 3)
.put("fernOstrich", 6)
.put("fernScalyTree", 6)
.put("fernSword", 6)
.put("fernWoodsia", 2)
2015-04-01 00:55:14 -05:00
.put("forestArcticGentian", 1)
.put("forestAustralianBugle", 2)
.put("forestBroadleafMeadowsweet", 2)
.put("forestDeadnettle", 2)
.put("forestDeceivingTrillium", 2)
.put("forestFairySlipper", 2)
.put("forestHorseweed", 2)
.put("forestKneelingAngelica", 2)
2015-06-30 12:09:59 -05:00
//.put("forestLilyoftheValley", //poisonous
2015-04-01 00:55:14 -05:00
.put("forestNorthernPitcherPlant", 2)
.put("forestPinesap", 2)
.put("forestRedHelleborine", 2)
.put("forestSalal", 2)
.put("forestVanillaLeaf", 1)
.put("forestWesternWallflower", 2)
.put("forestWildColumbine", 2)
.put("forestWildMint", 2)
.put("forestWolfsFootClubmoss", 1)
2015-07-01 08:32:19 -05:00
.put("leafyColeus", 1) //forest plant
.put("leafyStonecrop", 1) //forest plant
.put("grassBlueWheatgrass", 1)
.put("grassCord", 6)
.put("grassFountain", 2)
.put("grassMeadow", 2)
.put("grassMeadowFoxtail", 1)
.put("grassPrairie", 1)
.put("grassSilverMoor", 2)
.put("grassSwitch", 6)
.put("mountainAlpineArmeria", 2)
.put("mountainAlpineBellflower", 2)
.put("mountainBistort", 2)
.put("mountainEdelweiss", 2)
.put("mountainHouseleek", 2)
.put("mountainIris", 1)
.put("mountainNorthernWillowherb", 2)
.put("mountainScarletTrumpet", 2)
.put("mountainYellowBellflower", 1)
.put("leafyKrisPlant", 2) // mountain plaint
2015-06-30 12:09:59 -05:00
2015-04-01 00:55:14 -05:00
.put("plainsPrairieBrome", 6) //skips some metas
.put("plainsPrairieSage", 4)
.put("plainsReedCanaryGrass", 6) //skips some metas
.put("plainsShortrayFleabane", 4)
.put("plainsSmallPasqueFlower", 4)
.put("plainsSmoothAster", 4)
.put("plainsThreeFloweredAvens", 4)
2015-07-01 08:32:19 -05:00
.put("leafyPricklyLettuce", 1) //plains plant
//.put("leafyStingingNettle", 2) plains plant, poisonous
.put("savannaButterflyWeed", 2)
.put("savannaHoaryVervain", 2)
.put("savannaLeadplant", 2)
.put("savannaMarcela", 2)
.put("savannaNorthernBedstraw", 1)
.put("savannaPiersonsMilkVetch", 2)
.put("savannaPropellerPlant", 2)
.put("savannaShonaCabbage", 2)
2015-06-30 12:09:59 -05:00
.put("savannaTexasTickseed", 2)
.put("leafyPaleYucca", 2) //savanna Plant
2015-07-01 08:32:19 -05:00
.put("leafyDevilsShoestring", 2)
2015-06-30 12:09:59 -05:00
.put("shrubAlpineCurrant", 2)
.put("shrubBarberry", 2)
.put("shrubBoxwood", 2)
2015-07-01 08:32:19 -05:00
.put("shrubButterfly", 2)
2015-06-30 12:09:59 -05:00
.put("shrubCanyonCreekAbelia", 2)
.put("shrubCapeJasmine", 2)
.put("shrubCedarCylinder", 6)
.put("shrubCedarGlobe", 2)
.put("shrubCedarPyramid", 6)
2015-07-01 08:32:19 -05:00
.put("shrubCypressGreen", 1)
.put("shrubCypressYellow", 1)
.put("shrubDaphne", 2)
//.put("shrubDwarfElder", 4) poisonous, also grows 2 tall at meta 4
2015-06-30 12:09:59 -05:00
.put("shrubHolly", 2)
.put("shrubHummingbirdBush", 2)
.put("shrubJuniperSavin", 2)
.put("shrubKerria", 2)
.put("shrubLavender", 2)
.put("shrubLindera", 3)
.put("shrubMeadowsweet", 2)
.put("shrubMottlecah", 2)
.put("shrubNinebark", 2)
.put("shrubSargentViburnum", 2)
//.put("shrubSpicebush",2) poisonous
.put("shrubWeepingForsythia", 2)
.put("shrubWinterberry", 2)
.put("shrubWolfWillow", 2)
.put("wetlandsCattails", 6)
.put("wetlandsClubrush", 2)
.put("wetlandsCommonRush", 2)
.put("wetlandsFloweringRush", 2)
.put("wetlandsPickerelweed", 2)
.put("wetlandsReedMannagrass", 2)
.put("wetlandsSwampMilkweed", 2)
.put("wetlandsWaterHorsetail", 1)
.put("wetlandsWhiteTurtlehead", 2)
2015-04-01 00:55:14 -05:00
.build();
2015-03-27 05:28:07 -05:00
2015-06-30 12:09:59 -05:00
ImmutableMap<String, Integer> berryBushPlant = ImmutableMap.<String, Integer>builder()
.put("Beauty", 4)
.put("Black", 4)
.put("Blue", 4)
.put("Elder", 4)
.put("Goose", 4)
.put("Huckle", 4)
.put("Orange", 4)
.put("Snow", 4)
.put("Straw", 4)
.build();
2015-07-01 08:32:19 -05:00
ImmutableList<String> waterPlant = ImmutableList.of(
2015-07-01 08:32:19 -05:00
"oceanCommonEelgrass",
"oceanCoralWeed",
"oceanMozuku",
"oceanRockweed",
"oceanSeaGrapes",
"oceanSeaLettuce",
"oceanTangle",
"riverAmazonSword",
"riverCanadianWaterweed",
"riverCoonsTail",
"riverEelgrass",
"riverWaterWisteria",
"riverWrightsWaternymph",
"waterKelpGiantGRN",
"waterKelpGiantYEL"
);
2015-07-01 08:32:19 -05:00
ImmutableMap<String, String> specialCaseTwoTall = ImmutableMap.<String, String>builder()
.put("grassSeaOats", FlowerManager.FlowerTypeVanilla)
.put("jungleShellflower", FlowerManager.FlowerTypeJungle)
.build();
2015-03-27 05:28:07 -05:00
int seedamount = GameMode.getGameMode().getIntegerSetting("squeezer.liquid.seed");
int juiceAmount = GameMode.getGameMode().getIntegerSetting("squeezer.liquid.apple");
2015-07-01 08:32:19 -05:00
for (String reedLike : reedLikePlant) {
Block reedBlock = GameRegistry.findBlock(PlantMP, reedLike);
ItemStack reedStack = GameRegistry.findItemStack(PlantMP, reedLike, 1);
if (reedBlock != null && reedStack != null) {
RecipeUtil.addFermenterRecipes(reedStack, GameMode.getGameMode().getIntegerSetting("fermenter.yield.wheat"), Fluids.BIOMASS);
Farmables.farmables.get("farmPoales").add(new FarmableStacked(reedBlock, 14, 4));
}
}
2015-03-27 05:28:07 -05:00
for (String landCrop : landCropPlant) {
Block landCropBlock = GameRegistry.findBlock(PlantMP, "crop" + landCrop);
ItemStack seedStack = GameRegistry.findItemStack(PlantMP, "seed" + landCrop, 1);
ItemStack foodStack = GameRegistry.findItemStack(PlantMP, "food" + landCrop, 1);
2015-03-30 23:34:51 -05:00
if (landCropBlock != null) {
2015-03-27 05:28:07 -05:00
if (foodStack != null) {
RecipeManagers.squeezerManager.addRecipe(10, new ItemStack[]{foodStack}, Fluids.JUICE.getFluid(juiceAmount));
}
if (seedStack != null) {
RecipeManagers.squeezerManager.addRecipe(10, new ItemStack[]{seedStack}, Fluids.SEEDOIL.getFluid(seedamount));
}
Farmables.farmables.get("farmWheat").add(new FarmableGenericCrop(seedStack, landCropBlock, 4));
2015-06-30 12:09:59 -05:00
Farmables.farmables.get("farmOrchard").add(new FarmableBasicFruit(landCropBlock, 4));
2015-03-27 05:28:07 -05:00
}
}
2015-03-30 23:34:51 -05:00
for (Map.Entry<String, Integer> flower : nonGrowingFlowers.entrySet()) {
Block flowerPlantBlock = GameRegistry.findBlock(PlantMP, flower.getKey());
if (flowerPlantBlock != null) {
for (int i = 0; i < flower.getValue(); i++) {
FlowerManager.flowerRegistry.registerPlantableFlower(flowerPlantBlock, i, 0.75, FlowerManager.FlowerTypeVanilla);
}
}
}
2015-06-30 12:09:59 -05:00
for (Map.Entry<String, Integer> wPlant : floatingWaterPlant.entrySet()) {
Block waterPlantBlock = GameRegistry.findBlock(PlantMP, wPlant.getKey());
if (waterPlantBlock != null) {
Farmables.farmables.get("farmOrchard").add(new FarmableBasicFruit(waterPlantBlock, wPlant.getValue()));
}
}
2015-07-01 08:32:19 -05:00
2015-06-30 12:09:59 -05:00
juiceAmount = GameMode.getGameMode().getIntegerSetting("squeezer.liquid.apple") / 25;
juiceAmount = Math.max(juiceAmount, 1); // Produce at least 1 mb of juice.
2015-04-01 00:55:14 -05:00
2015-06-30 12:09:59 -05:00
for (Map.Entry<String, Integer> berryBushCrop : berryBushPlant.entrySet()) {
Block berryBushCropBlock = GameRegistry.findBlock(PlantMP, "berrybush" + berryBushCrop.getKey());
ItemStack berryBushStack = GameRegistry.findItemStack(PlantMP, "berrybush" + berryBushCrop.getKey(), 1);
ItemStack foodStack = GameRegistry.findItemStack(PlantMP, "berries" + berryBushCrop.getKey(), 1);
if (berryBushCropBlock != null) {
if (foodStack != null) {
RecipeManagers.squeezerManager.addRecipe(10, new ItemStack[]{foodStack}, Fluids.JUICE.getFluid(juiceAmount));
}
Farmables.farmables.get("farmWheat").add(new FarmableGenericCrop(berryBushStack, berryBushCropBlock, berryBushCrop.getValue()));
Farmables.farmables.get("farmOrchard").add(new FarmableBasicFruit(berryBushCropBlock, berryBushCrop.getValue()));
}
}
2015-07-01 08:32:19 -05:00
2015-06-30 12:09:59 -05:00
addMetaFlower(desertPlant, FlowerManager.FlowerTypeCacti, false);
addMetaFlower(junglePlant, FlowerManager.FlowerTypeJungle, true);
addMetaFlower(vanillaPlant, FlowerManager.FlowerTypeVanilla, true);
addMetaFlower(fungusPlant, FlowerManager.FlowerTypeMushrooms, true);
2015-03-30 23:34:51 -05:00
2015-07-01 08:32:19 -05:00
for (Map.Entry<String, String> special : specialCaseTwoTall.entrySet()) {
Block plantBlock = GameRegistry.findBlock(PlantMP, special.getKey());
ItemStack specialStack = GameRegistry.findItemStack(PlantMP, special.getKey(), 1);
if (plantBlock != null && plantBlock != null) {
FlowerManager.flowerRegistry.registerAcceptableFlower(plantBlock, special.getValue());
FlowerManager.flowerRegistry.registerPlantableFlower(plantBlock, 0, 0.75, special.getValue());
Farmables.farmables.get("farmWheat").add(new FarmableGenericCrop(specialStack, plantBlock, 4));
}
2015-06-30 12:09:59 -05:00
}
2015-07-01 08:32:19 -05:00
for (String wPlant : waterPlant) {
ItemStack waterPlantStack = GameRegistry.findItemStack(PlantMP, wPlant, 1);
if (waterPlantStack != null) {
RecipeUtil.addFermenterRecipes(waterPlantStack, GameMode.getGameMode().getIntegerSetting("fermenter.yield.wheat"), Fluids.BIOMASS);
}
}
}
2015-04-01 00:55:14 -05:00
private static void addMetaFlower(ImmutableMap<String, Integer> flowerMap, String flowertype, boolean plantable) {
for (Map.Entry<String, Integer> flower : flowerMap.entrySet()) {
Block flowerBlock = GameRegistry.findBlock(PlantMP, flower.getKey());
ItemStack flowerStack = GameRegistry.findItemStack(PlantMP, flower.getKey(), 1);
FlowerManager.flowerRegistry.registerAcceptableFlower(flowerBlock, flowertype);
if (plantable && flowerBlock != null) {
FlowerManager.flowerRegistry.registerPlantableFlower(flowerBlock, 0, 0.75, flowertype);
}
if (flowerStack != null && flowerBlock != null) {
Farmables.farmables.get("farmWheat").add(new FarmableGenericCrop(flowerStack, flowerBlock, flower.getValue()));
2015-06-29 22:15:39 -07:00
if (flower.getValue() < 5) {
Farmables.farmables.get("farmOrchard").add(new FarmableBasicFruit(flowerBlock, flower.getValue()));
}
2015-04-01 00:55:14 -05:00
}
}
}
}