From d880bd5f618a797313b573737a156d93cc0964af Mon Sep 17 00:00:00 2001 From: Matt Caughey Date: Fri, 3 May 2013 08:42:16 -0400 Subject: [PATCH] Setting up SourceTree, yet againn --- .gitignore | 12 - .../BOP-Converter-Patch-Generator-1.0.jar | Bin 132281 -> 0 bytes .../src/Adubbz/CPGen/ActionHandler.java | 92 -- .../src/Adubbz/CPGen/ConfigFileFilter.java | 48 - .../src/Adubbz/CPGen/ConfigFileReader.java | 48 - .../src/Adubbz/CPGen/ConfigTextFilter.java | 176 -- .../src/Adubbz/CPGen/DirectoryFileFilter.java | 26 - .../src/Adubbz/CPGen/Gui.java | 73 - .../src/Adubbz/CPGen/Main.java | 20 - .../src/Adubbz/CPGen/TextFileWriter.java | 63 - README.md | 150 -- Wanted Mod Compatibility.txt | 5 - .../biomesoplenty/BiomesOPlenty.java | 138 -- src/minecraft/biomesoplenty/ClientProxy.java | 47 - src/minecraft/biomesoplenty/CommonProxy.java | 25 - src/minecraft/biomesoplenty/api/Biomes.java | 89 - .../biomesoplenty/api/BlockReferences.java | 180 -- src/minecraft/biomesoplenty/api/Blocks.java | 87 - src/minecraft/biomesoplenty/api/Entities.java | 22 - src/minecraft/biomesoplenty/api/Items.java | 37 - .../biomesoplenty/armor/ArmorAmethyst.java | 40 - .../biomesoplenty/armor/ArmorMuddy.java | 40 - .../biomes/BiomeDecoratorBOP.java | 1178 ------------- .../biomesoplenty/biomes/BiomeGenAlps.java | 36 - .../biomesoplenty/biomes/BiomeGenArctic.java | 47 - .../biomes/BiomeGenBadlands.java | 59 - .../biomes/BiomeGenBambooForest.java | 84 - .../biomesoplenty/biomes/BiomeGenBayou.java | 106 -- .../biomes/BiomeGenBirchForest.java | 64 - .../biomesoplenty/biomes/BiomeGenBog.java | 103 -- .../biomes/BiomeGenBorealForest.java | 62 - .../biomesoplenty/biomes/BiomeGenCanyon.java | 47 - .../biomes/BiomeGenChaparral.java | 76 - .../biomes/BiomeGenCherryBlossomGrove.java | 49 - .../biomes/BiomeGenConiferousForest.java | 70 - .../biomesoplenty/biomes/BiomeGenCrag.java | 54 - .../biomes/BiomeGenDeadForest.java | 90 - .../biomes/BiomeGenDeadSwamp.java | 94 -- .../biomes/BiomeGenDeadlands.java | 108 -- .../biomes/BiomeGenDeciduousForest.java | 62 - .../biomes/BiomeGenDesertNew.java | 43 - .../biomes/BiomeGenDrylands.java | 47 - .../biomesoplenty/biomes/BiomeGenDunes.java | 56 - .../biomesoplenty/biomes/BiomeGenFen.java | 88 - .../biomesoplenty/biomes/BiomeGenField.java | 50 - .../biomes/BiomeGenForestNew.java | 52 - .../biomes/BiomeGenFrostForest.java | 77 - .../biomes/BiomeGenFungiForest.java | 106 -- .../biomesoplenty/biomes/BiomeGenGarden.java | 94 -- .../biomesoplenty/biomes/BiomeGenGlacier.java | 26 - .../biomes/BiomeGenGrassland.java | 84 - .../biomesoplenty/biomes/BiomeGenGrove.java | 49 - .../biomes/BiomeGenHeathland.java | 51 - .../biomes/BiomeGenHighland.java | 20 - .../biomes/BiomeGenHillsNew.java | 54 - .../biomes/BiomeGenIceSheet.java | 24 - .../biomes/BiomeGenIcyHills.java | 68 - .../biomes/BiomeGenJadeCliffs.java | 97 -- .../biomes/BiomeGenJungleNew.java | 90 - .../biomes/BiomeGenLushDesert.java | 46 - .../biomes/BiomeGenLushSwamp.java | 60 - .../biomes/BiomeGenMangrove.java | 38 - .../biomes/BiomeGenMapleWoods.java | 32 - .../biomesoplenty/biomes/BiomeGenMarsh.java | 55 - .../biomesoplenty/biomes/BiomeGenMeadow.java | 71 - .../biomesoplenty/biomes/BiomeGenMesa.java | 59 - .../biomesoplenty/biomes/BiomeGenMoor.java | 101 -- .../biomes/BiomeGenMountain.java | 31 - .../biomes/BiomeGenMysticGrove.java | 102 -- .../biomesoplenty/biomes/BiomeGenOasis.java | 44 - .../biomes/BiomeGenOminousWoods.java | 106 -- .../biomesoplenty/biomes/BiomeGenOrchard.java | 47 - .../biomes/BiomeGenOriginValley.java | 82 - .../biomesoplenty/biomes/BiomeGenOutback.java | 42 - .../biomesoplenty/biomes/BiomeGenPasture.java | 58 - .../biomes/BiomeGenPlainsNew.java | 35 - .../biomesoplenty/biomes/BiomeGenPrairie.java | 44 - .../biomes/BiomeGenPromisedLand.java | 118 -- .../biomes/BiomeGenQuagmire.java | 84 - .../biomes/BiomeGenRainforest.java | 68 - .../biomes/BiomeGenRedwoodForest.java | 44 - .../biomes/BiomeGenSacredSprings.java | 103 -- .../biomesoplenty/biomes/BiomeGenSavanna.java | 48 - .../biomes/BiomeGenScrubland.java | 44 - .../biomes/BiomeGenSeasonalForest.java | 68 - .../biomesoplenty/biomes/BiomeGenShield.java | 68 - .../biomesoplenty/biomes/BiomeGenShore.java | 12 - .../biomes/BiomeGenShrubland.java | 45 - .../biomes/BiomeGenSnowyWoods.java | 90 - .../biomes/BiomeGenSpruceWoods.java | 36 - .../biomesoplenty/biomes/BiomeGenSteppe.java | 54 - .../biomes/BiomeGenSwampNew.java | 81 - .../biomes/BiomeGenSwampwoods.java | 86 - .../biomes/BiomeGenTaigaNew.java | 49 - .../biomes/BiomeGenTemperateRainforest.java | 80 - .../biomesoplenty/biomes/BiomeGenThicket.java | 51 - .../biomes/BiomeGenTropicalRainforest.java | 112 -- .../biomesoplenty/biomes/BiomeGenTropics.java | 71 - .../biomesoplenty/biomes/BiomeGenTundra.java | 37 - .../biomesoplenty/biomes/BiomeGenVolcano.java | 67 - .../biomes/BiomeGenWasteland.java | 71 - .../biomesoplenty/biomes/BiomeGenWetland.java | 89 - .../biomes/BiomeGenWoodland.java | 31 - .../biomesoplenty/blocks/BlockAsh.java | 81 - .../blocks/BlockBOPAmethyst.java | 148 -- .../blocks/BlockBOPAppleLeaves.java | 319 ---- .../blocks/BlockBOPColorizedLeaves.java | 332 ---- .../blocks/BlockBOPColorizedSapling.java | 156 -- .../biomesoplenty/blocks/BlockBOPFlower.java | 163 -- .../biomesoplenty/blocks/BlockBOPFoliage.java | 260 --- .../biomesoplenty/blocks/BlockBOPGeneric.java | 119 -- .../biomesoplenty/blocks/BlockBOPGrass.java | 185 --- .../biomesoplenty/blocks/BlockBOPLeaves.java | 301 ---- .../biomesoplenty/blocks/BlockBOPLog.java | 156 -- .../biomesoplenty/blocks/BlockBOPPetals.java | 95 -- .../biomesoplenty/blocks/BlockBOPPlank.java | 56 - .../biomesoplenty/blocks/BlockBOPPlant.java | 245 --- .../biomesoplenty/blocks/BlockBOPRedRock.java | 108 -- .../biomesoplenty/blocks/BlockBOPSapling.java | 198 --- .../biomesoplenty/blocks/BlockBOPSlab.java | 176 -- .../biomesoplenty/blocks/BlockBOPStairs.java | 56 - .../biomesoplenty/blocks/BlockBamboo.java | 154 -- .../biomesoplenty/blocks/BlockMoss.java | 484 ------ .../biomesoplenty/blocks/BlockMud.java | 107 -- .../blocks/BlockOriginGrass.java | 139 -- .../blocks/BlockPromisedPortal.java | 87 - .../biomesoplenty/blocks/BlockQuicksand.java | 48 - .../biomesoplenty/blocks/BlockTreeMoss.java | 346 ---- .../biomesoplenty/blocks/BlockWillow.java | 370 ----- .../blocks/renderers/FoliageRenderer.java | 44 - .../blocks/renderers/PlantsRenderer.java | 44 - .../configuration/BOPBiomes.java | 1095 ------------ .../configuration/BOPBlocks.java | 413 ----- .../configuration/BOPConfiguration.java | 780 --------- .../configuration/BOPCrafting.java | 212 --- .../configuration/BOPEntities.java | 61 - .../biomesoplenty/configuration/BOPItems.java | 173 -- .../configuration/BOPVanillaCompat.java | 54 - .../helpers/AchievementHelper.java | 119 -- .../helpers/BiomeCacheBlockPromised.java | 48 - .../helpers/BiomeCachePromised.java | 103 -- .../biomesoplenty/helpers/BonemealUse.java | 122 -- .../helpers/ChunkProviderPromised.java | 474 ------ .../helpers/CreativeTabsBOP.java | 21 - .../biomesoplenty/helpers/FurnaceFuel.java | 81 - .../helpers/TeleporterPromised.java | 808 --------- .../helpers/WorldChunkManagerPromised.java | 283 ---- .../WorldGeneratorPromisedLandPortal.java | 34 - .../helpers/WorldProviderPromised.java | 156 -- .../biomesoplenty/helpers/WorldTypeSize.java | 17 - .../integration/BOPCrossIntegration.java | 53 - .../integration/BWG4Integration.java | 95 -- .../integration/ForestryIntegration.java | 303 ---- .../integration/TEIntegration.java | 28 - .../integration/ThaumcraftIntegration.java | 174 -- .../biomesoplenty/items/ItemBOP.java | 55 - .../biomesoplenty/items/ItemBOPAmethyst.java | 27 - .../items/ItemBOPAncientStaff.java | 194 --- .../items/ItemBOPAppleLeaves.java | 25 - .../biomesoplenty/items/ItemBOPAxe.java | 25 - .../biomesoplenty/items/ItemBOPBamboo.java | 97 -- .../items/ItemBOPColorizedLeaves.java | 29 - .../items/ItemBOPColorizedSapling.java | 38 - .../biomesoplenty/items/ItemBOPFlower.java | 99 -- .../biomesoplenty/items/ItemBOPFoliage.java | 173 -- .../biomesoplenty/items/ItemBOPGrass.java | 27 - .../biomesoplenty/items/ItemBOPHoe.java | 25 - .../biomesoplenty/items/ItemBOPLeaves.java | 29 - .../biomesoplenty/items/ItemBOPLog.java | 29 - .../biomesoplenty/items/ItemBOPMoss.java | 30 - .../biomesoplenty/items/ItemBOPMud.java | 28 - .../biomesoplenty/items/ItemBOPMudball.java | 38 - .../biomesoplenty/items/ItemBOPPetals.java | 28 - .../biomesoplenty/items/ItemBOPPickaxe.java | 25 - .../biomesoplenty/items/ItemBOPPlank.java | 28 - .../biomesoplenty/items/ItemBOPPlant.java | 118 -- .../biomesoplenty/items/ItemBOPRecord.java | 111 -- .../biomesoplenty/items/ItemBOPRecordMud.java | 111 -- .../biomesoplenty/items/ItemBOPRedRock.java | 27 - .../biomesoplenty/items/ItemBOPSapling.java | 40 - .../biomesoplenty/items/ItemBOPSlab.java | 38 - .../biomesoplenty/items/ItemBOPSpade.java | 25 - .../biomesoplenty/items/ItemBOPSword.java | 25 - .../biomesoplenty/items/ItemBOPWillow.java | 38 - .../biomesoplenty/items/ItemEnderporter.java | 66 - .../biomesoplenty/items/ItemShroomPowder.java | 22 - .../items/overrides/ItemShears.java | 62 - .../projectiles/DispenserBehaviorMudball.java | 14 - .../items/projectiles/EntityMudball.java | 53 - .../mobs/EntityJungleSpider.java | 76 - .../biomesoplenty/mobs/EntityRosester.java | 192 --- .../worldgen/WorldGenAcacia.java | 236 --- .../biomesoplenty/worldgen/WorldGenAlgae.java | 30 - .../biomesoplenty/worldgen/WorldGenApple.java | 137 -- .../biomesoplenty/worldgen/WorldGenAsh.java | 80 - .../worldgen/WorldGenAutumn.java | 123 -- .../worldgen/WorldGenAutumn2.java | 123 -- .../worldgen/WorldGenBOPFlowers.java | 36 - .../worldgen/WorldGenBambooTree.java | 280 ---- .../worldgen/WorldGenBambooTree2.java | 279 ---- .../worldgen/WorldGenBayou1.java | 235 --- .../worldgen/WorldGenBayou2.java | 226 --- .../worldgen/WorldGenBayou3.java | 128 -- .../biomesoplenty/worldgen/WorldGenBog1.java | 215 --- .../biomesoplenty/worldgen/WorldGenBog2.java | 199 --- .../worldgen/WorldGenBoulder.java | 27 - .../biomesoplenty/worldgen/WorldGenBush.java | 37 - .../worldgen/WorldGenCanyon.java | 80 - .../worldgen/WorldGenCanyonShrub.java | 66 - .../worldgen/WorldGenCanyonTree.java | 134 -- .../worldgen/WorldGenCarrots.java | 62 - .../worldgen/WorldGenCattail.java | 39 - .../worldgen/WorldGenChaparral1.java | 60 - .../worldgen/WorldGenChaparral2.java | 48 - .../worldgen/WorldGenChaparral3.java | 42 - .../worldgen/WorldGenCherry1.java | 517 ------ .../worldgen/WorldGenCherry2.java | 517 ------ .../worldgen/WorldGenCypress.java | 159 -- .../worldgen/WorldGenDeadTree.java | 518 ------ .../worldgen/WorldGenDeadTree2.java | 124 -- .../worldgen/WorldGenDeadTree3.java | 518 ------ .../worldgen/WorldGenDeadlands.java | 30 - .../worldgen/WorldGenDeciduous.java | 276 ---- .../worldgen/WorldGenDesertCactus.java | 51 - .../worldgen/WorldGenDriedDirt.java | 78 - .../biomesoplenty/worldgen/WorldGenFen1.java | 131 -- .../biomesoplenty/worldgen/WorldGenFen2.java | 147 -- .../worldgen/WorldGenGiantFlowerRed.java | 83 - .../worldgen/WorldGenGiantFlowerYellow.java | 67 - .../worldgen/WorldGenGravel.java | 60 - .../biomesoplenty/worldgen/WorldGenHeath.java | 244 --- .../worldgen/WorldGenHighGrass.java | 48 - .../worldgen/WorldGenIceTree.java | 143 -- .../worldgen/WorldGenJadeTree.java | 143 -- .../biomesoplenty/worldgen/WorldGenLog.java | 76 - .../worldgen/WorldGenMangrove.java | 258 --- .../biomesoplenty/worldgen/WorldGenMaple.java | 124 -- .../biomesoplenty/worldgen/WorldGenMarsh.java | 147 -- .../biomesoplenty/worldgen/WorldGenMelon.java | 27 - .../biomesoplenty/worldgen/WorldGenMesa.java | 80 - .../biomesoplenty/worldgen/WorldGenMoor.java | 58 - .../biomesoplenty/worldgen/WorldGenMoss.java | 41 - .../biomesoplenty/worldgen/WorldGenMud.java | 61 - .../worldgen/WorldGenMycelium.java | 78 - .../worldgen/WorldGenMystic1.java | 146 -- .../worldgen/WorldGenMystic2.java | 147 -- .../biomesoplenty/worldgen/WorldGenOasis.java | 63 - .../worldgen/WorldGenOminous1.java | 146 -- .../worldgen/WorldGenOminous2.java | 190 --- .../worldgen/WorldGenOriginTree.java | 124 -- .../worldgen/WorldGenOutback.java | 48 - .../worldgen/WorldGenOutbackShrub.java | 63 - .../worldgen/WorldGenOutbackTree.java | 52 - .../worldgen/WorldGenPalmTree1.java | 92 -- .../worldgen/WorldGenPalmTree3.java | 79 - .../biomesoplenty/worldgen/WorldGenPit.java | 69 - .../worldgen/WorldGenPotatoes.java | 61 - .../worldgen/WorldGenPrairie.java | 143 -- .../worldgen/WorldGenPromisedLandPortal.java | 62 - .../worldgen/WorldGenPromisedShrub.java | 63 - .../worldgen/WorldGenPromisedTree.java | 147 -- .../worldgen/WorldGenPromisedTree2.java | 124 -- .../worldgen/WorldGenPromisedTree3.java | 181 -- .../worldgen/WorldGenPromisedWillow.java | 263 --- .../worldgen/WorldGenQuagmire.java | 80 - .../worldgen/WorldGenQuicksand.java | 62 - .../worldgen/WorldGenQuicksand2.java | 57 - .../worldgen/WorldGenRainforest1.java | 255 --- .../worldgen/WorldGenRainforest2.java | 187 --- .../worldgen/WorldGenRainforestTree1.java | 256 --- .../worldgen/WorldGenRedwoodTree.java | 378 ----- .../worldgen/WorldGenRedwoodTree2.java | 323 ---- .../worldgen/WorldGenScrubland.java | 228 --- .../worldgen/WorldGenShield.java | 78 - .../worldgen/WorldGenSmolderingGrass.java | 83 - .../worldgen/WorldGenSprout.java | 48 - .../worldgen/WorldGenSteppe.java | 45 - .../worldgen/WorldGenSwampTall.java | 187 --- .../worldgen/WorldGenTaiga3.java | 181 -- .../worldgen/WorldGenTaiga4.java | 146 -- .../worldgen/WorldGenTaiga5.java | 143 -- .../worldgen/WorldGenTaiga6.java | 143 -- .../worldgen/WorldGenTaiga7.java | 143 -- .../worldgen/WorldGenTaiga8.java | 143 -- .../worldgen/WorldGenTaiga9.java | 146 -- .../worldgen/WorldGenTemperate.java | 143 -- .../worldgen/WorldGenThickTree.java | 178 -- .../worldgen/WorldGenVolcano.java | 50 - .../worldgen/WorldGenWillow.java | 190 --- .../structure/BOPMapGenScatteredFeature.java | 116 -- .../worldgen/structure/BOPMapGenVillage.java | 95 -- .../BOPStructureScatteredFeatureStart.java | 43 - .../structure/BOPStructureVillageStart.java | 70 - .../worldtype/BeachNoiseOctaves.java | 65 - .../worldtype/BeachNoisePerlin.java | 223 --- .../worldtype/ChunkProviderBOP.java | 682 -------- .../biomesoplenty/worldtype/WTBiomesOP.java | 395 ----- .../worldtype/WorldChunkManagerBOP.java | 334 ---- .../worldtype/WorldTypeBase.java | 36 - src/minecraft/bop.png | Bin 20616 -> 0 bytes .../forestry/api/apiculture/BeeManager.java | 39 - .../api/apiculture/EnumBeeChromosome.java | 6 - .../forestry/api/apiculture/EnumBeeType.java | 17 - .../api/apiculture/FlowerManager.java | 12 - .../api/apiculture/IAlleleBeeEffect.java | 47 - .../api/apiculture/IAlleleBeeSpecies.java | 26 - .../api/apiculture/IAlleleFlowers.java | 12 - .../api/apiculture/IAlvearyComponent.java | 27 - .../api/apiculture/IApiaristTracker.java | 52 - .../api/apiculture/IArmorApiarist.java | 24 - .../forestry/api/apiculture/IBee.java | 93 -- .../forestry/api/apiculture/IBeeGenome.java | 42 - .../forestry/api/apiculture/IBeeHousing.java | 56 - .../api/apiculture/IBeeInterface.java | 69 - .../forestry/api/apiculture/IBeeListener.java | 36 - .../forestry/api/apiculture/IBeeModifier.java | 60 - .../forestry/api/apiculture/IBeeMutation.java | 18 - .../api/apiculture/IBeekeepingLogic.java | 20 - .../api/apiculture/IBeekeepingMode.java | 65 - .../api/apiculture/IBreedingManager.java | 103 -- .../api/apiculture/IFlowerProvider.java | 44 - .../forestry/api/apiculture/IHiveDrop.java | 33 - .../forestry/api/apiculture/IHiveFrame.java | 22 - .../api/arboriculture/EnumGermlingType.java | 16 - .../arboriculture/EnumGrowthConditions.java | 5 - .../api/arboriculture/EnumTreeChromosome.java | 56 - .../api/arboriculture/IAlleleFruit.java | 12 - .../api/arboriculture/IAlleleGrowth.java | 12 - .../api/arboriculture/IAlleleLeafEffect.java | 10 - .../api/arboriculture/IAlleleTreeSpecies.java | 57 - .../api/arboriculture/IArboristTracker.java | 7 - .../api/arboriculture/IFruitProvider.java | 63 - .../api/arboriculture/IGrowthProvider.java | 33 - .../api/arboriculture/IToolGrafter.java | 19 - .../forestry/api/arboriculture/ITree.java | 78 - .../arboriculture/ITreeBreedingManager.java | 42 - .../api/arboriculture/ITreeGenome.java | 38 - .../api/arboriculture/ITreeInterface.java | 38 - .../api/arboriculture/ITreeModifier.java | 40 - .../api/arboriculture/ITreeMutation.java | 22 - .../api/arboriculture/ITreekeepingMode.java | 17 - .../api/arboriculture/TreeManager.java | 7 - .../forestry/api/circuits/ChipsetManager.java | 8 - .../forestry/api/circuits/ICircuit.java | 27 - .../forestry/api/circuits/ICircuitBoard.java | 24 - .../forestry/api/circuits/ICircuitLayout.java | 11 - .../api/circuits/ICircuitLibrary.java | 5 - .../api/circuits/ICircuitRegistry.java | 31 - .../forestry/api/circuits/ISolderManager.java | 9 - .../forestry/api/core/BlockInterface.java | 33 - .../forestry/api/core/EnumHumidity.java | 48 - .../forestry/api/core/EnumTemperature.java | 75 - .../forestry/api/core/ForestryAPI.java | 13 - .../forestry/api/core/GlobalManager.java | 12 - .../forestry/api/core/IIconProvider.java | 18 - .../forestry/api/core/INBTTagable.java | 9 - src/minecraft/forestry/api/core/IPlugin.java | 17 - .../forestry/api/core/IStructureLogic.java | 15 - .../forestry/api/core/ITextureManager.java | 15 - .../forestry/api/core/ITileStructure.java | 55 - .../forestry/api/core/ItemInterface.java | 117 -- .../forestry/api/core/PluginInfo.java | 49 - src/minecraft/forestry/api/core/Tabs.java | 10 - .../forestry/api/farming/Farmables.java | 15 - src/minecraft/forestry/api/farming/ICrop.java | 16 - .../forestry/api/farming/IFarmComponent.java | 12 - .../forestry/api/farming/IFarmHousing.java | 68 - .../forestry/api/farming/IFarmInterface.java | 15 - .../forestry/api/farming/IFarmListener.java | 71 - .../forestry/api/farming/IFarmLogic.java | 33 - .../forestry/api/farming/IFarmable.java | 54 - .../forestry/api/food/BeverageManager.java | 8 - .../forestry/api/food/IBeverageEffect.java | 12 - .../forestry/api/food/IInfuserManager.java | 17 - .../forestry/api/food/IIngredientManager.java | 11 - .../forestry/api/fuels/EngineBronzeFuel.java | 29 - .../forestry/api/fuels/EngineCopperFuel.java | 26 - .../forestry/api/fuels/FermenterFuel.java | 24 - .../forestry/api/fuels/FuelManager.java | 30 - .../forestry/api/fuels/GeneratorFuel.java | 30 - .../forestry/api/fuels/ItemStackMap.java | 57 - .../forestry/api/fuels/MoistenerFuel.java | 29 - .../forestry/api/fuels/RainSubstrate.java | 35 - .../forestry/api/genetics/AlleleManager.java | 42 - .../forestry/api/genetics/EnumTolerance.java | 11 - .../forestry/api/genetics/IAllele.java | 17 - .../forestry/api/genetics/IAlleleEffect.java | 23 - .../forestry/api/genetics/IAlleleFloat.java | 10 - .../forestry/api/genetics/IAlleleHandler.java | 36 - .../forestry/api/genetics/IAlleleInteger.java | 10 - .../api/genetics/IAlleleRegistry.java | 154 -- .../forestry/api/genetics/IAlleleSpecies.java | 68 - .../api/genetics/IBreedingTracker.java | 75 - .../forestry/api/genetics/IChromosome.java | 20 - .../api/genetics/IClassification.java | 97 -- .../forestry/api/genetics/IEffectData.java | 17 - .../forestry/api/genetics/IFruitBearer.java | 40 - .../forestry/api/genetics/IFruitFamily.java | 27 - .../forestry/api/genetics/IGenome.java | 21 - .../forestry/api/genetics/IIndividual.java | 41 - .../forestry/api/genetics/ILegacyHandler.java | 10 - .../forestry/api/genetics/IMutation.java | 62 - .../forestry/api/genetics/IPollinatable.java | 38 - .../forestry/api/recipes/IBottlerManager.java | 34 - .../api/recipes/ICarpenterManager.java | 67 - .../api/recipes/ICentrifugeManager.java | 74 - .../api/recipes/ICraftingProvider.java | 19 - .../api/recipes/IFabricatorManager.java | 12 - .../api/recipes/IFermenterManager.java | 48 - .../forestry/api/recipes/IGenericCrate.java | 11 - .../api/recipes/IMoistenerManager.java | 28 - .../api/recipes/ISqueezerManager.java | 45 - .../forestry/api/recipes/IStillManager.java | 29 - .../api/recipes/IVariableFermentable.java | 16 - .../forestry/api/recipes/RecipeManagers.java | 40 - .../forestry/api/storage/BackpackEvent.java | 18 - .../forestry/api/storage/BackpackManager.java | 22 - .../api/storage/BackpackResupplyEvent.java | 18 - .../api/storage/BackpackStowEvent.java | 21 - .../api/storage/EnumBackpackType.java | 5 - .../api/storage/IBackpackDefinition.java | 54 - .../api/storage/IBackpackInterface.java | 19 - .../forestry/api/world/ITreeGenData.java | 18 - .../api/world/IWorldGenInterface.java | 17 - .../forestry/api/world/WorldGenManager.java | 5 - src/minecraft/mcmod.info | 18 - .../mods/BiomesOPlenty/audio/bopdisc.ogg | Bin 521300 -> 0 bytes .../mods/BiomesOPlenty/audio/bopdiscmud.ogg | Bin 1712056 -> 0 bytes .../textures/armor/amethyst_1.png | Bin 1189 -> 0 bytes .../textures/armor/amethyst_2.png | Bin 710 -> 0 bytes .../BiomesOPlenty/textures/armor/mud_1.png | Bin 1129 -> 0 bytes .../BiomesOPlenty/textures/armor/mud_2.png | Bin 645 -> 0 bytes .../BiomesOPlenty/textures/blocks/algae.png | Bin 382 -> 0 bytes .../textures/blocks/amethystblock.png | Bin 534 -> 0 bytes .../textures/blocks/amethystore.png | Bin 369 -> 0 bytes .../BiomesOPlenty/textures/blocks/anemone.png | Bin 286 -> 0 bytes .../textures/blocks/ashblock.png | Bin 525 -> 0 bytes .../textures/blocks/ashstone.png | Bin 545 -> 0 bytes .../BiomesOPlenty/textures/blocks/bamboo.png | Bin 725 -> 0 bytes .../textures/blocks/bamboothatching.png | Bin 581 -> 0 bytes .../BiomesOPlenty/textures/blocks/barley.png | Bin 648 -> 0 bytes .../textures/blocks/bigflowerred.png | Bin 523 -> 0 bytes .../textures/blocks/bigflowerstem_heart.png | Bin 559 -> 0 bytes .../textures/blocks/bigflowerstem_side.png | Bin 533 -> 0 bytes .../textures/blocks/bigfloweryellow.png | Bin 578 -> 0 bytes .../BiomesOPlenty/textures/blocks/bush.png | Bin 585 -> 0 bytes .../BiomesOPlenty/textures/blocks/cactus.png | Bin 374 -> 0 bytes .../BiomesOPlenty/textures/blocks/cattail.png | Bin 315 -> 0 bytes .../BiomesOPlenty/textures/blocks/clover.png | Bin 238 -> 0 bytes .../textures/blocks/cragrock.png | Bin 728 -> 0 bytes .../BiomesOPlenty/textures/blocks/daisy.png | Bin 320 -> 0 bytes .../textures/blocks/deadbloom.png | Bin 326 -> 0 bytes .../textures/blocks/deadgrass.png | Bin 347 -> 0 bytes .../textures/blocks/desertgrass.png | Bin 373 -> 0 bytes .../textures/blocks/desertsprouts.png | Bin 340 -> 0 bytes .../textures/blocks/drieddirt.png | Bin 744 -> 0 bytes .../textures/blocks/dunegrass.png | Bin 616 -> 0 bytes .../textures/blocks/glowflower.png | Bin 287 -> 0 bytes .../textures/blocks/harddirt.png | Bin 469 -> 0 bytes .../BiomesOPlenty/textures/blocks/hardice.png | Bin 601 -> 0 bytes .../textures/blocks/hardsand.png | Bin 613 -> 0 bytes .../textures/blocks/highgrassbottom.png | Bin 463 -> 0 bytes .../textures/blocks/highgrasstop.png | Bin 368 -> 0 bytes .../textures/blocks/holygrass_side.png | Bin 628 -> 0 bytes .../textures/blocks/holygrass_top.png | Bin 660 -> 0 bytes .../textures/blocks/holystone.png | Bin 334 -> 0 bytes .../textures/blocks/holytallgrass.png | Bin 576 -> 0 bytes .../textures/blocks/hydrangea.png | Bin 307 -> 0 bytes .../textures/blocks/item_bamboo.png | Bin 410 -> 0 bytes .../textures/blocks/item_barley.png | Bin 359 -> 0 bytes .../textures/blocks/item_cattail.png | Bin 325 -> 0 bytes .../textures/blocks/item_highgrass.png | Bin 1326 -> 0 bytes .../textures/blocks/item_moss.png | Bin 299 -> 0 bytes .../textures/blocks/leaves_acacia_fancy.png | Bin 664 -> 0 bytes .../textures/blocks/leaves_acacia_fast.png | Bin 571 -> 0 bytes .../textures/blocks/leaves_apple.png | Bin 642 -> 0 bytes .../textures/blocks/leaves_apple0_fancy.png | Bin 628 -> 0 bytes .../textures/blocks/leaves_apple0_fast.png | Bin 598 -> 0 bytes .../textures/blocks/leaves_apple1_fancy.png | Bin 3343 -> 0 bytes .../textures/blocks/leaves_apple1_fast.png | Bin 3322 -> 0 bytes .../textures/blocks/leaves_apple2_fancy.png | Bin 3343 -> 0 bytes .../textures/blocks/leaves_apple2_fast.png | Bin 3321 -> 0 bytes .../textures/blocks/leaves_apple3_fancy.png | Bin 642 -> 0 bytes .../textures/blocks/leaves_apple3_fast.png | Bin 610 -> 0 bytes .../textures/blocks/leaves_bamboo_fancy.png | Bin 583 -> 0 bytes .../textures/blocks/leaves_bamboo_fast.png | Bin 624 -> 0 bytes .../textures/blocks/leaves_dark_fancy.png | Bin 653 -> 0 bytes .../textures/blocks/leaves_dark_fast.png | Bin 628 -> 0 bytes .../textures/blocks/leaves_dead_fancy.png | Bin 602 -> 0 bytes .../textures/blocks/leaves_dead_fast.png | Bin 573 -> 0 bytes .../textures/blocks/leaves_fir_fancy.png | Bin 500 -> 0 bytes .../textures/blocks/leaves_fir_fast.png | Bin 480 -> 0 bytes .../textures/blocks/leaves_holy_fancy.png | Bin 732 -> 0 bytes .../textures/blocks/leaves_holy_fast.png | Bin 686 -> 0 bytes .../textures/blocks/leaves_magic_fancy.png | Bin 622 -> 0 bytes .../textures/blocks/leaves_magic_fast.png | Bin 592 -> 0 bytes .../textures/blocks/leaves_mangrove_fancy.png | Bin 561 -> 0 bytes .../textures/blocks/leaves_mangrove_fast.png | Bin 605 -> 0 bytes .../textures/blocks/leaves_maple_fancy.png | Bin 562 -> 0 bytes .../textures/blocks/leaves_maple_fast.png | Bin 542 -> 0 bytes .../blocks/leaves_orangeautumn_fancy.png | Bin 591 -> 0 bytes .../blocks/leaves_orangeautumn_fast.png | Bin 567 -> 0 bytes .../textures/blocks/leaves_origin_fancy.png | Bin 669 -> 0 bytes .../textures/blocks/leaves_origin_fast.png | Bin 628 -> 0 bytes .../textures/blocks/leaves_palm_fancy.png | Bin 589 -> 0 bytes .../textures/blocks/leaves_palm_fast.png | Bin 631 -> 0 bytes .../blocks/leaves_pinkcherry_fancy.png | Bin 629 -> 0 bytes .../blocks/leaves_pinkcherry_fast.png | Bin 608 -> 0 bytes .../textures/blocks/leaves_redwood_fancy.png | Bin 604 -> 0 bytes .../textures/blocks/leaves_redwood_fast.png | Bin 574 -> 0 bytes .../blocks/leaves_whitecherry_fancy.png | Bin 618 -> 0 bytes .../blocks/leaves_whitecherry_fast.png | Bin 589 -> 0 bytes .../textures/blocks/leaves_willow_fancy.png | Bin 488 -> 0 bytes .../textures/blocks/leaves_willow_fast.png | Bin 706 -> 0 bytes .../blocks/leaves_yellowautumn_fancy.png | Bin 627 -> 0 bytes .../blocks/leaves_yellowautumn_fast.png | Bin 613 -> 0 bytes .../textures/blocks/log_acacia_heart.png | Bin 544 -> 0 bytes .../textures/blocks/log_acacia_side.png | Bin 590 -> 0 bytes .../textures/blocks/log_cherry_heart.png | Bin 544 -> 0 bytes .../textures/blocks/log_cherry_side.png | Bin 586 -> 0 bytes .../textures/blocks/log_dark_heart.png | Bin 544 -> 0 bytes .../textures/blocks/log_dark_side.png | Bin 700 -> 0 bytes .../textures/blocks/log_dead_heart.png | Bin 544 -> 0 bytes .../textures/blocks/log_dead_side.png | Bin 747 -> 0 bytes .../textures/blocks/log_fir_heart.png | Bin 544 -> 0 bytes .../textures/blocks/log_fir_side.png | Bin 569 -> 0 bytes .../textures/blocks/log_holy_heart.png | Bin 544 -> 0 bytes .../textures/blocks/log_holy_side.png | Bin 621 -> 0 bytes .../textures/blocks/log_magic_heart.png | Bin 544 -> 0 bytes .../textures/blocks/log_magic_side.png | Bin 728 -> 0 bytes .../textures/blocks/log_mangrove_heart.png | Bin 544 -> 0 bytes .../textures/blocks/log_mangrove_side.png | Bin 774 -> 0 bytes .../textures/blocks/log_palm_heart.png | Bin 544 -> 0 bytes .../textures/blocks/log_palm_side.png | Bin 590 -> 0 bytes .../textures/blocks/log_redwood_heart.png | Bin 544 -> 0 bytes .../textures/blocks/log_redwood_side.png | Bin 875 -> 0 bytes .../textures/blocks/log_willow_heart.png | Bin 544 -> 0 bytes .../textures/blocks/log_willow_side.png | Bin 850 -> 0 bytes .../textures/blocks/mediumgrass.png | Bin 375 -> 0 bytes .../BiomesOPlenty/textures/blocks/moss.png | Bin 432 -> 0 bytes .../BiomesOPlenty/textures/blocks/mud.png | Bin 322 -> 0 bytes .../textures/blocks/mudbrick.png | Bin 526 -> 0 bytes .../textures/blocks/origingrass1.png | Bin 698 -> 0 bytes .../textures/blocks/origingrass2.png | Bin 480 -> 0 bytes .../textures/blocks/origingrass3.png | Bin 354 -> 0 bytes .../textures/blocks/plank_acacia.png | Bin 391 -> 0 bytes .../textures/blocks/plank_cherry.png | Bin 609 -> 0 bytes .../textures/blocks/plank_dark.png | Bin 589 -> 0 bytes .../textures/blocks/plank_fir.png | Bin 350 -> 0 bytes .../textures/blocks/plank_holy.png | Bin 348 -> 0 bytes .../textures/blocks/plank_magic.png | Bin 492 -> 0 bytes .../textures/blocks/plank_mangrove.png | Bin 678 -> 0 bytes .../textures/blocks/plank_palm.png | Bin 360 -> 0 bytes .../textures/blocks/plank_redwood.png | Bin 577 -> 0 bytes .../textures/blocks/plank_willow.png | Bin 855 -> 0 bytes .../BiomesOPlenty/textures/blocks/portal.png | Bin 202 -> 0 bytes .../textures/blocks/quicksand.png | Bin 706 -> 0 bytes .../textures/blocks/redbrick.png | Bin 399 -> 0 bytes .../textures/blocks/redcobble.png | Bin 676 -> 0 bytes .../BiomesOPlenty/textures/blocks/redrock.png | Bin 833 -> 0 bytes .../textures/blocks/sapling_acacia.png | Bin 446 -> 0 bytes .../textures/blocks/sapling_apple.png | Bin 408 -> 0 bytes .../textures/blocks/sapling_bamboo.png | Bin 392 -> 0 bytes .../textures/blocks/sapling_dark.png | Bin 342 -> 0 bytes .../textures/blocks/sapling_dead.png | Bin 379 -> 0 bytes .../textures/blocks/sapling_fir.png | Bin 449 -> 0 bytes .../textures/blocks/sapling_holy.png | Bin 473 -> 0 bytes .../textures/blocks/sapling_magic.png | Bin 356 -> 0 bytes .../textures/blocks/sapling_mangrove.png | Bin 532 -> 0 bytes .../textures/blocks/sapling_maple.png | Bin 395 -> 0 bytes .../textures/blocks/sapling_orangeautumn.png | Bin 394 -> 0 bytes .../textures/blocks/sapling_origin.png | Bin 337 -> 0 bytes .../textures/blocks/sapling_palm.png | Bin 428 -> 0 bytes .../textures/blocks/sapling_pinkcherry.png | Bin 391 -> 0 bytes .../textures/blocks/sapling_redwood.png | Bin 472 -> 0 bytes .../textures/blocks/sapling_whitecherry.png | Bin 397 -> 0 bytes .../textures/blocks/sapling_willow.png | Bin 515 -> 0 bytes .../textures/blocks/sapling_yellowautumn.png | Bin 376 -> 0 bytes .../textures/blocks/shortgrass.png | Bin 297 -> 0 bytes .../blocks/smolderinggrass_bottom.png | Bin 355 -> 0 bytes .../textures/blocks/smolderinggrass_side.png | Bin 476 -> 0 bytes .../textures/blocks/smolderinggrass_top.png | Bin 813 -> 0 bytes .../BiomesOPlenty/textures/blocks/sprout.png | Bin 393 -> 0 bytes .../textures/blocks/swampflower.png | Bin 385 -> 0 bytes .../BiomesOPlenty/textures/blocks/thorn.png | Bin 345 -> 0 bytes .../textures/blocks/toadstool.png | Bin 291 -> 0 bytes .../textures/blocks/treemoss.png | Bin 463 -> 0 bytes .../BiomesOPlenty/textures/blocks/tulip.png | Bin 317 -> 0 bytes .../BiomesOPlenty/textures/blocks/violet.png | Bin 307 -> 0 bytes .../textures/blocks/wildflower.png | Bin 304 -> 0 bytes .../BiomesOPlenty/textures/blocks/willow.png | Bin 475 -> 0 bytes .../BiomesOPlenty/textures/items/amethyst.png | Bin 282 -> 0 bytes .../textures/items/amethystaxe.png | Bin 301 -> 0 bytes .../textures/items/amethystboots.png | Bin 256 -> 0 bytes .../textures/items/amethystchestplate.png | Bin 284 -> 0 bytes .../textures/items/amethysthelmet.png | Bin 259 -> 0 bytes .../textures/items/amethysthoe.png | Bin 299 -> 0 bytes .../textures/items/amethystleggings.png | Bin 234 -> 0 bytes .../textures/items/amethystpickaxe.png | Bin 306 -> 0 bytes .../textures/items/amethystshovel.png | Bin 292 -> 0 bytes .../textures/items/amethystsword.png | Bin 291 -> 0 bytes .../textures/items/ancientstaff.png | Bin 294 -> 0 bytes .../mods/BiomesOPlenty/textures/items/ash.png | Bin 369 -> 0 bytes .../textures/items/boprecord.png | Bin 343 -> 0 bytes .../textures/items/enderporter.png | Bin 667 -> 0 bytes .../BiomesOPlenty/textures/items/mudaxe.png | Bin 324 -> 0 bytes .../BiomesOPlenty/textures/items/mudball.png | Bin 292 -> 0 bytes .../BiomesOPlenty/textures/items/mudboots.png | Bin 304 -> 0 bytes .../BiomesOPlenty/textures/items/mudbrick.png | Bin 299 -> 0 bytes .../textures/items/mudchestplate.png | Bin 307 -> 0 bytes .../textures/items/mudhelmet.png | Bin 295 -> 0 bytes .../BiomesOPlenty/textures/items/mudhoe.png | Bin 300 -> 0 bytes .../textures/items/mudleggings.png | Bin 298 -> 0 bytes .../textures/items/mudpickaxe.png | Bin 326 -> 0 bytes .../textures/items/mudrecord.png | Bin 305 -> 0 bytes .../textures/items/mudshovel.png | Bin 304 -> 0 bytes .../BiomesOPlenty/textures/items/mudsword.png | Bin 341 -> 0 bytes .../textures/items/shroompowder.png | Bin 316 -> 0 bytes .../textures/items/staffhandle.png | Bin 277 -> 0 bytes .../textures/items/staffpole.png | Bin 275 -> 0 bytes .../textures/items/stafftopper.png | Bin 295 -> 0 bytes .../textures/mobs/junglespider.png | Bin 3871 -> 0 bytes .../BiomesOPlenty/textures/mobs/rosester.png | Bin 491 -> 0 bytes src/minecraft/ted80/api/DefaultBiomeList.java | 79 - src/minecraft/thaumcraft/api/EnumTag.java | 106 -- .../thaumcraft/api/IAspectSource.java | 63 - .../thaumcraft/api/IVisDiscounter.java | 15 - .../thaumcraft/api/IVisRepairable.java | 27 - src/minecraft/thaumcraft/api/ItemApi.java | 58 - src/minecraft/thaumcraft/api/ObjectTags.java | 171 -- .../thaumcraft/api/ThaumcraftApi.java | 816 --------- .../thaumcraft/api/ThaumcraftApiHelper.java | 103 -- .../thaumcraft/api/aspects/Aspect.java | 85 - .../thaumcraft/api/aura/AuraNode.java | 38 - .../thaumcraft/api/aura/EnumNodeType.java | 21 - .../api/crafting/IArcaneRecipe.java | 30 - .../api/crafting/IInfusionRecipe.java | 30 - .../api/crafting/RecipeCrucible.java | 51 - .../crafting/ShapedArcaneCraftingRecipes.java | 167 -- .../ShapedInfusionCraftingRecipes.java | 171 -- .../ShapelessArcaneCraftingRecipes.java | 127 -- .../ShapelessInfusionCraftingRecipes.java | 136 -- ...apelessInfusionCraftingWithNBTRecipes.java | 134 -- .../api/research/IScanEventHandler.java | 9 - .../thaumcraft/api/research/ResearchItem.java | 274 --- .../thaumcraft/api/research/ResearchList.java | 91 - .../api/research/ResearchPlayer.java | 14 - .../thaumcraft/api/research/ScanResult.java | 39 - .../api/ThermalExpansionInfo.java | 54 - .../api/crafting/CraftingHelpers.java | 106 -- .../api/crafting/CraftingManagers.java | 46 - .../api/crafting/ICrucibleManager.java | 39 - .../api/crafting/ICrucibleRecipe.java | 19 - .../api/crafting/IFurnaceManager.java | 38 - .../api/crafting/IFurnaceRecipe.java | 18 - .../api/crafting/IPulverizerManager.java | 79 - .../api/crafting/IPulverizerRecipe.java | 22 - .../api/crafting/ISawmillManager.java | 78 - .../api/crafting/ISawmillRecipe.java | 22 - .../api/crafting/ISmelterManager.java | 85 - .../api/crafting/ISmelterRecipe.java | 24 - .../api/crafting/ITransposerManager.java | 71 - .../api/crafting/ITransposerRecipe.java | 23 - .../api/item/IChargeableItem.java | 52 - .../api/item/ItemRegistry.java | 123 -- .../api/tileentity/IAccessControl.java | 13 - .../api/tileentity/IRedstoneControl.java | 19 - .../api/tileentity/ITesseract.java | 30 - src/minecraft/thermalexpansion/readme-api.txt | 37 - .../blocks/BlockAcaciaLeaves.java | 352 ---- .../biomesoplenty/blocks/BlockAcaciaLog.java | 163 -- .../blocks/BlockAcaciaPlank.java | 31 - .../blocks/BlockAcaciaSapling.java | 163 -- .../biomesoplenty/blocks/BlockAcaciaSlab.java | 160 -- .../blocks/BlockAcaciaStairs.java | 28 - .../biomesoplenty/blocks/BlockAlgae.java | 111 -- .../blocks/BlockAmethystBlock.java | 42 - .../blocks/BlockAmethystOre.java | 83 - .../blocks/BlockAppleLeaves.java | 315 ---- .../blocks/BlockAppleLeavesFruitless.java | 315 ---- .../blocks/BlockAppleSapling.java | 163 -- .../biomesoplenty/blocks/BlockAshStone.java | 46 - .../blocks/BlockAutumnLeaves.java | 309 ---- .../blocks/BlockBambooLeaves.java | 309 ---- .../blocks/BlockBambooSapling.java | 175 -- .../blocks/BlockBambooThatching.java | 42 - .../biomesoplenty/blocks/BlockBarley.java | 145 -- .../biomesoplenty/blocks/BlockBlueFlower.java | 121 -- .../biomesoplenty/blocks/BlockBlueLeaves.java | 309 ---- .../blocks/BlockBrownSapling.java | 163 -- .../biomesoplenty/blocks/BlockBush.java | 143 -- .../biomesoplenty/blocks/BlockCattail.java | 125 -- .../biomesoplenty/blocks/BlockCherryLog.java | 174 -- .../blocks/BlockCherryPlank.java | 35 - .../biomesoplenty/blocks/BlockCherrySlab.java | 160 -- .../blocks/BlockCherryStairs.java | 29 - .../biomesoplenty/blocks/BlockCragRock.java | 42 - .../biomesoplenty/blocks/BlockDarkLeaves.java | 308 ---- .../biomesoplenty/blocks/BlockDarkLog.java | 173 -- .../biomesoplenty/blocks/BlockDarkPlank.java | 35 - .../blocks/BlockDarkSapling.java | 173 -- .../biomesoplenty/blocks/BlockDarkSlab.java | 159 -- .../biomesoplenty/blocks/BlockDarkStairs.java | 30 - .../biomesoplenty/blocks/BlockDeadGrass.java | 161 -- .../biomesoplenty/blocks/BlockDeadLeaves.java | 309 ---- .../biomesoplenty/blocks/BlockDeadLog.java | 173 -- .../biomesoplenty/blocks/BlockDeathbloom.java | 121 -- .../blocks/BlockDesertGrass.java | 159 -- .../blocks/BlockDesertSprouts.java | 129 -- .../biomesoplenty/blocks/BlockDriedDirt.java | 47 - .../biomesoplenty/blocks/BlockDuneGrass.java | 130 -- .../biomesoplenty/blocks/BlockFirLeaves.java | 308 ---- .../biomesoplenty/blocks/BlockFirLog.java | 173 -- .../biomesoplenty/blocks/BlockFirPlank.java | 35 - .../biomesoplenty/blocks/BlockFirSapling.java | 162 -- .../biomesoplenty/blocks/BlockFirSlab.java | 161 -- .../biomesoplenty/blocks/BlockFirStairs.java | 30 - .../blocks/BlockGiantFlowerRed.java | 222 --- .../blocks/BlockGiantFlowerStem.java | 167 -- .../blocks/BlockGiantFlowerYellow.java | 222 --- .../biomesoplenty/blocks/BlockGlowFlower.java | 122 -- .../biomesoplenty/blocks/BlockHardDirt.java | 23 - .../biomesoplenty/blocks/BlockHardIce.java | 23 - .../biomesoplenty/blocks/BlockHardSand.java | 23 - .../blocks/BlockHighGrassBottom.java | 115 -- .../blocks/BlockHighGrassTop.java | 73 - .../biomesoplenty/blocks/BlockHolyGrass.java | 163 -- .../biomesoplenty/blocks/BlockHolyLeaves.java | 307 ---- .../biomesoplenty/blocks/BlockHolyLog.java | 173 -- .../biomesoplenty/blocks/BlockHolyPlank.java | 35 - .../blocks/BlockHolySapling.java | 184 --- .../biomesoplenty/blocks/BlockHolySlab.java | 160 -- .../biomesoplenty/blocks/BlockHolyStairs.java | 29 - .../biomesoplenty/blocks/BlockHolyStone.java | 42 - .../blocks/BlockHolyTallGrass.java | 154 -- .../biomesoplenty/blocks/BlockHydrangea.java | 121 -- .../biomesoplenty/blocks/BlockMagicLog.java | 161 -- .../biomesoplenty/blocks/BlockMagicPlank.java | 34 - .../blocks/BlockMagicSapling.java | 176 -- .../biomesoplenty/blocks/BlockMagicSlab.java | 159 -- .../blocks/BlockMagicStairs.java | 28 - .../blocks/BlockMangroveLeaves.java | 351 ---- .../blocks/BlockMangroveLog.java | 173 -- .../blocks/BlockMangrovePlank.java | 35 - .../blocks/BlockMangroveSapling.java | 172 -- .../blocks/BlockMangroveSlab.java | 160 -- .../blocks/BlockMangroveStairs.java | 29 - .../blocks/BlockMediumGrass.java | 143 -- .../biomesoplenty/blocks/BlockMudBrick.java | 23 - .../blocks/BlockMudBrickSlab.java | 159 -- .../blocks/BlockMudBrickStairs.java | 28 - .../blocks/BlockOrangeFlower.java | 121 -- .../blocks/BlockOrangeLeaves.java | 315 ---- .../blocks/BlockOrangeSapling.java | 163 -- .../blocks/BlockOriginLeaves.java | 309 ---- .../blocks/BlockOriginSapling.java | 175 -- .../biomesoplenty/blocks/BlockPalmLeaves.java | 351 ---- .../biomesoplenty/blocks/BlockPalmLog.java | 173 -- .../biomesoplenty/blocks/BlockPalmPlank.java | 35 - .../blocks/BlockPalmSapling.java | 173 -- .../biomesoplenty/blocks/BlockPalmSlab.java | 160 -- .../biomesoplenty/blocks/BlockPalmStairs.java | 29 - .../biomesoplenty/blocks/BlockPinkFlower.java | 122 -- .../biomesoplenty/blocks/BlockPinkLeaves.java | 309 ---- .../blocks/BlockPinkSapling.java | 163 -- .../blocks/BlockPurpleFlower.java | 121 -- .../biomesoplenty/blocks/BlockRedLeaves.java | 309 ---- .../biomesoplenty/blocks/BlockRedRock.java | 42 - .../blocks/BlockRedRockBrick.java | 23 - .../blocks/BlockRedRockBrickSlab.java | 159 -- .../blocks/BlockRedRockBrickStairs.java | 28 - .../blocks/BlockRedRockCobble.java | 23 - .../blocks/BlockRedRockCobbleSlab.java | 159 -- .../blocks/BlockRedRockCobbleStairs.java | 28 - .../biomesoplenty/blocks/BlockRedSapling.java | 163 -- .../blocks/BlockRedwoodLeaves.java | 351 ---- .../biomesoplenty/blocks/BlockRedwoodLog.java | 173 -- .../blocks/BlockRedwoodPlank.java | 35 - .../blocks/BlockRedwoodSapling.java | 161 -- .../blocks/BlockRedwoodSlab.java | 160 -- .../blocks/BlockRedwoodStairs.java | 29 - .../biomesoplenty/blocks/BlockShortGrass.java | 141 -- .../blocks/BlockSmolderingGrass.java | 113 -- .../biomesoplenty/blocks/BlockSprout.java | 143 -- .../biomesoplenty/blocks/BlockThorn.java | 169 -- .../biomesoplenty/blocks/BlockTinyCactus.java | 131 -- .../biomesoplenty/blocks/BlockTinyFlower.java | 145 -- .../biomesoplenty/blocks/BlockToadstool.java | 121 -- .../biomesoplenty/blocks/BlockViolet.java | 121 -- .../blocks/BlockWhiteFlower.java | 121 -- .../blocks/BlockWhiteLeaves.java | 309 ---- .../blocks/BlockWhiteSapling.java | 163 -- .../blocks/BlockWillowLeaves.java | 350 ---- .../biomesoplenty/blocks/BlockWillowLog.java | 173 -- .../blocks/BlockWillowPlank.java | 35 - .../blocks/BlockWillowSapling.java | 163 -- .../biomesoplenty/blocks/BlockWillowSlab.java | 161 -- .../blocks/BlockWillowStairs.java | 30 - .../blocks/BlockYellowSapling.java | 163 -- .../biomesoplenty/items/ItemAncientStaff.java | 153 -- .../biomesoplenty/items/ItemBarley.java | 98 -- unused code/biomesoplenty/items/ItemBush.java | 103 -- .../biomesoplenty/items/ItemCattail.java | 103 -- .../biomesoplenty/items/ItemMediumGrass.java | 103 -- .../biomesoplenty/items/ItemShortGrass.java | 103 -- .../biomesoplenty/items/ItemSprout.java | 103 -- .../worldgen/WorldGenAlaskanCedar1.java | 703 -------- .../worldgen/WorldGenAlaskanCedar2.java | 280 ---- .../worldgen/WorldGenAlder1.java | 907 ---------- .../worldgen/WorldGenAlder2.java | 333 ---- .../worldgen/WorldGenAlpsSpruce.java | 292 ---- .../worldgen/WorldGenAppleTree1.java | 1113 ------------- .../worldgen/WorldGenAppleTree2.java | 442 ----- .../biomesoplenty/worldgen/WorldGenBog.java | 187 --- .../worldgen/WorldGenBrazilNut1.java | 901 ---------- .../worldgen/WorldGenBrazilNut2.java | 281 ---- .../worldgen/WorldGenColumn.java | 71 - .../biomesoplenty/worldgen/WorldGenCrag.java | 228 --- .../worldgen/WorldGenCypress1.java | 537 ------ .../worldgen/WorldGenCypress2.java | 151 -- .../worldgen/WorldGenDarkTree1.java | 709 -------- .../worldgen/WorldGenDarkTree2.java | 283 ---- .../worldgen/WorldGenDarkTreeOld1.java | 93 -- .../biomesoplenty/worldgen/WorldGenFir1.java | 976 ----------- .../biomesoplenty/worldgen/WorldGenFir2.java | 478 ------ .../biomesoplenty/worldgen/WorldGenFir3.java | 197 --- .../worldgen/WorldGenFungi1.java | 264 --- .../worldgen/WorldGenFungi2.java | 186 --- .../worldgen/WorldGenFungi3.java | 194 --- .../worldgen/WorldGenGrandFir1.java | 761 --------- .../worldgen/WorldGenGrandFir2.java | 434 ----- .../biomesoplenty/worldgen/WorldGenGrass.java | 60 - .../worldgen/WorldGenLarch1.java | 589 ------- .../worldgen/WorldGenLarch2.java | 204 --- .../worldgen/WorldGenNorwaySpruce1.java | 292 ---- .../worldgen/WorldGenNorwaySpruce2.java | 118 -- .../biomesoplenty/worldgen/WorldGenPalm1.java | 127 -- .../biomesoplenty/worldgen/WorldGenPalm2.java | 117 -- .../worldgen/WorldGenPalmTree.java | 93 -- .../worldgen/WorldGenPalmTree2.java | 63 - .../worldgen/WorldGenPaperBirch1.java | 235 --- .../worldgen/WorldGenPaperBirch2.java | 108 -- .../worldgen/WorldGenPoisonIvy.java | 35 - .../worldgen/WorldGenRedwood1.java | 730 -------- .../worldgen/WorldGenRedwood2.java | 254 --- .../worldgen/WorldGenSandboxTree1.java | 1172 ------------- .../worldgen/WorldGenSandboxTree2.java | 355 ---- .../worldgen/WorldGenScotsPine1.java | 561 ------- .../worldgen/WorldGenScotsPine2.java | 155 -- .../worldgen/WorldGenSilverBirch1.java | 345 ---- .../worldgen/WorldGenSilverBirch2.java | 220 --- .../biomesoplenty/worldgen/WorldGenSpire.java | 127 -- .../worldgen/WorldGenSprings.java | 45 - .../biomesoplenty/worldgen/WorldGenStump.java | 42 - .../worldgen/WorldGenWhiteOak1.java | 1469 ----------------- .../worldgen/WorldGenWhiteOak2.java | 265 --- .../worldgen/WorldGenWillow1.java | 832 ---------- .../worldgen/WorldGenWillow2.java | 203 --- 858 files changed, 83728 deletions(-) delete mode 100644 .gitignore delete mode 100644 BOP Converter Patch Generator/BOP-Converter-Patch-Generator-1.0.jar delete mode 100644 BOP Converter Patch Generator/src/Adubbz/CPGen/ActionHandler.java delete mode 100644 BOP Converter Patch Generator/src/Adubbz/CPGen/ConfigFileFilter.java delete mode 100644 BOP Converter Patch Generator/src/Adubbz/CPGen/ConfigFileReader.java delete mode 100644 BOP Converter Patch Generator/src/Adubbz/CPGen/ConfigTextFilter.java delete mode 100644 BOP Converter Patch Generator/src/Adubbz/CPGen/DirectoryFileFilter.java delete mode 100644 BOP Converter Patch Generator/src/Adubbz/CPGen/Gui.java delete mode 100644 BOP Converter Patch Generator/src/Adubbz/CPGen/Main.java delete mode 100644 BOP Converter Patch Generator/src/Adubbz/CPGen/TextFileWriter.java delete mode 100644 README.md delete mode 100644 Wanted Mod Compatibility.txt delete mode 100644 src/minecraft/biomesoplenty/BiomesOPlenty.java delete mode 100644 src/minecraft/biomesoplenty/ClientProxy.java delete mode 100644 src/minecraft/biomesoplenty/CommonProxy.java delete mode 100644 src/minecraft/biomesoplenty/api/Biomes.java delete mode 100644 src/minecraft/biomesoplenty/api/BlockReferences.java delete mode 100644 src/minecraft/biomesoplenty/api/Blocks.java delete mode 100644 src/minecraft/biomesoplenty/api/Entities.java delete mode 100644 src/minecraft/biomesoplenty/api/Items.java delete mode 100644 src/minecraft/biomesoplenty/armor/ArmorAmethyst.java delete mode 100644 src/minecraft/biomesoplenty/armor/ArmorMuddy.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeDecoratorBOP.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenAlps.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenArctic.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenBadlands.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenBambooForest.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenBayou.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenBirchForest.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenBog.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenBorealForest.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenCanyon.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenChaparral.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenCherryBlossomGrove.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenConiferousForest.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenCrag.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenDeadForest.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenDeadSwamp.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenDeadlands.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenDeciduousForest.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenDesertNew.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenDrylands.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenDunes.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenFen.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenField.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenForestNew.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenFrostForest.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenFungiForest.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenGarden.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenGlacier.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenGrassland.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenGrove.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenHeathland.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenHighland.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenHillsNew.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenIceSheet.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenIcyHills.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenJadeCliffs.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenJungleNew.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenLushDesert.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenLushSwamp.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenMangrove.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenMapleWoods.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenMarsh.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenMeadow.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenMesa.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenMoor.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenMountain.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenMysticGrove.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenOasis.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenOminousWoods.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenOrchard.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenOriginValley.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenOutback.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenPasture.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenPlainsNew.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenPrairie.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenPromisedLand.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenQuagmire.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenRainforest.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenRedwoodForest.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenSacredSprings.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenSavanna.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenScrubland.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenSeasonalForest.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenShield.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenShore.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenShrubland.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenSnowyWoods.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenSpruceWoods.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenSteppe.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenSwampNew.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenSwampwoods.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenTaigaNew.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenTemperateRainforest.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenThicket.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenTropicalRainforest.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenTropics.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenTundra.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenVolcano.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenWasteland.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenWetland.java delete mode 100644 src/minecraft/biomesoplenty/biomes/BiomeGenWoodland.java delete mode 100644 src/minecraft/biomesoplenty/blocks/BlockAsh.java delete mode 100644 src/minecraft/biomesoplenty/blocks/BlockBOPAmethyst.java delete mode 100644 src/minecraft/biomesoplenty/blocks/BlockBOPAppleLeaves.java delete mode 100644 src/minecraft/biomesoplenty/blocks/BlockBOPColorizedLeaves.java delete mode 100644 src/minecraft/biomesoplenty/blocks/BlockBOPColorizedSapling.java delete mode 100644 src/minecraft/biomesoplenty/blocks/BlockBOPFlower.java delete mode 100644 src/minecraft/biomesoplenty/blocks/BlockBOPFoliage.java delete mode 100644 src/minecraft/biomesoplenty/blocks/BlockBOPGeneric.java delete mode 100644 src/minecraft/biomesoplenty/blocks/BlockBOPGrass.java delete mode 100644 src/minecraft/biomesoplenty/blocks/BlockBOPLeaves.java delete mode 100644 src/minecraft/biomesoplenty/blocks/BlockBOPLog.java delete mode 100644 src/minecraft/biomesoplenty/blocks/BlockBOPPetals.java delete mode 100644 src/minecraft/biomesoplenty/blocks/BlockBOPPlank.java delete mode 100644 src/minecraft/biomesoplenty/blocks/BlockBOPPlant.java delete mode 100644 src/minecraft/biomesoplenty/blocks/BlockBOPRedRock.java delete mode 100644 src/minecraft/biomesoplenty/blocks/BlockBOPSapling.java delete mode 100644 src/minecraft/biomesoplenty/blocks/BlockBOPSlab.java delete mode 100644 src/minecraft/biomesoplenty/blocks/BlockBOPStairs.java delete mode 100644 src/minecraft/biomesoplenty/blocks/BlockBamboo.java delete mode 100644 src/minecraft/biomesoplenty/blocks/BlockMoss.java delete mode 100644 src/minecraft/biomesoplenty/blocks/BlockMud.java delete mode 100644 src/minecraft/biomesoplenty/blocks/BlockOriginGrass.java delete mode 100644 src/minecraft/biomesoplenty/blocks/BlockPromisedPortal.java delete mode 100644 src/minecraft/biomesoplenty/blocks/BlockQuicksand.java delete mode 100644 src/minecraft/biomesoplenty/blocks/BlockTreeMoss.java delete mode 100644 src/minecraft/biomesoplenty/blocks/BlockWillow.java delete mode 100644 src/minecraft/biomesoplenty/blocks/renderers/FoliageRenderer.java delete mode 100644 src/minecraft/biomesoplenty/blocks/renderers/PlantsRenderer.java delete mode 100644 src/minecraft/biomesoplenty/configuration/BOPBiomes.java delete mode 100644 src/minecraft/biomesoplenty/configuration/BOPBlocks.java delete mode 100644 src/minecraft/biomesoplenty/configuration/BOPConfiguration.java delete mode 100644 src/minecraft/biomesoplenty/configuration/BOPCrafting.java delete mode 100644 src/minecraft/biomesoplenty/configuration/BOPEntities.java delete mode 100644 src/minecraft/biomesoplenty/configuration/BOPItems.java delete mode 100644 src/minecraft/biomesoplenty/configuration/BOPVanillaCompat.java delete mode 100644 src/minecraft/biomesoplenty/helpers/AchievementHelper.java delete mode 100644 src/minecraft/biomesoplenty/helpers/BiomeCacheBlockPromised.java delete mode 100644 src/minecraft/biomesoplenty/helpers/BiomeCachePromised.java delete mode 100644 src/minecraft/biomesoplenty/helpers/BonemealUse.java delete mode 100644 src/minecraft/biomesoplenty/helpers/ChunkProviderPromised.java delete mode 100644 src/minecraft/biomesoplenty/helpers/CreativeTabsBOP.java delete mode 100644 src/minecraft/biomesoplenty/helpers/FurnaceFuel.java delete mode 100644 src/minecraft/biomesoplenty/helpers/TeleporterPromised.java delete mode 100644 src/minecraft/biomesoplenty/helpers/WorldChunkManagerPromised.java delete mode 100644 src/minecraft/biomesoplenty/helpers/WorldGeneratorPromisedLandPortal.java delete mode 100644 src/minecraft/biomesoplenty/helpers/WorldProviderPromised.java delete mode 100644 src/minecraft/biomesoplenty/helpers/WorldTypeSize.java delete mode 100644 src/minecraft/biomesoplenty/integration/BOPCrossIntegration.java delete mode 100644 src/minecraft/biomesoplenty/integration/BWG4Integration.java delete mode 100644 src/minecraft/biomesoplenty/integration/ForestryIntegration.java delete mode 100644 src/minecraft/biomesoplenty/integration/TEIntegration.java delete mode 100644 src/minecraft/biomesoplenty/integration/ThaumcraftIntegration.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemBOP.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemBOPAmethyst.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemBOPAncientStaff.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemBOPAppleLeaves.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemBOPAxe.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemBOPBamboo.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemBOPColorizedLeaves.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemBOPColorizedSapling.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemBOPFlower.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemBOPFoliage.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemBOPGrass.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemBOPHoe.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemBOPLeaves.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemBOPLog.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemBOPMoss.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemBOPMud.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemBOPMudball.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemBOPPetals.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemBOPPickaxe.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemBOPPlank.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemBOPPlant.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemBOPRecord.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemBOPRecordMud.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemBOPRedRock.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemBOPSapling.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemBOPSlab.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemBOPSpade.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemBOPSword.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemBOPWillow.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemEnderporter.java delete mode 100644 src/minecraft/biomesoplenty/items/ItemShroomPowder.java delete mode 100644 src/minecraft/biomesoplenty/items/overrides/ItemShears.java delete mode 100644 src/minecraft/biomesoplenty/items/projectiles/DispenserBehaviorMudball.java delete mode 100644 src/minecraft/biomesoplenty/items/projectiles/EntityMudball.java delete mode 100644 src/minecraft/biomesoplenty/mobs/EntityJungleSpider.java delete mode 100644 src/minecraft/biomesoplenty/mobs/EntityRosester.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenAcacia.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenAlgae.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenApple.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenAsh.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenAutumn.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenAutumn2.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenBOPFlowers.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenBambooTree.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenBambooTree2.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenBayou1.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenBayou2.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenBayou3.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenBog1.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenBog2.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenBoulder.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenBush.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenCanyon.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenCanyonShrub.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenCanyonTree.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenCarrots.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenCattail.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenChaparral1.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenChaparral2.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenChaparral3.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenCherry1.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenCherry2.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenCypress.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenDeadTree.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenDeadTree2.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenDeadTree3.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenDeadlands.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenDeciduous.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenDesertCactus.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenDriedDirt.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenFen1.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenFen2.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenGiantFlowerRed.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenGiantFlowerYellow.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenGravel.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenHeath.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenHighGrass.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenIceTree.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenJadeTree.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenLog.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenMangrove.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenMaple.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenMarsh.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenMelon.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenMesa.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenMoor.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenMoss.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenMud.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenMycelium.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenMystic1.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenMystic2.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenOasis.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenOminous1.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenOminous2.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenOriginTree.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenOutback.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenOutbackShrub.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenOutbackTree.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenPalmTree1.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenPalmTree3.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenPit.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenPotatoes.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenPrairie.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenPromisedLandPortal.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenPromisedShrub.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenPromisedTree.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenPromisedTree2.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenPromisedTree3.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenPromisedWillow.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenQuagmire.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenQuicksand.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenQuicksand2.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenRainforest1.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenRainforest2.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenRainforestTree1.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenRedwoodTree.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenRedwoodTree2.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenScrubland.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenShield.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenSmolderingGrass.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenSprout.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenSteppe.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenSwampTall.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenTaiga3.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenTaiga4.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenTaiga5.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenTaiga6.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenTaiga7.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenTaiga8.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenTaiga9.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenTemperate.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenThickTree.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenVolcano.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/WorldGenWillow.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/structure/BOPMapGenScatteredFeature.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/structure/BOPMapGenVillage.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/structure/BOPStructureScatteredFeatureStart.java delete mode 100644 src/minecraft/biomesoplenty/worldgen/structure/BOPStructureVillageStart.java delete mode 100644 src/minecraft/biomesoplenty/worldtype/BeachNoiseOctaves.java delete mode 100644 src/minecraft/biomesoplenty/worldtype/BeachNoisePerlin.java delete mode 100644 src/minecraft/biomesoplenty/worldtype/ChunkProviderBOP.java delete mode 100644 src/minecraft/biomesoplenty/worldtype/WTBiomesOP.java delete mode 100644 src/minecraft/biomesoplenty/worldtype/WorldChunkManagerBOP.java delete mode 100644 src/minecraft/biomesoplenty/worldtype/WorldTypeBase.java delete mode 100644 src/minecraft/bop.png delete mode 100644 src/minecraft/forestry/api/apiculture/BeeManager.java delete mode 100644 src/minecraft/forestry/api/apiculture/EnumBeeChromosome.java delete mode 100644 src/minecraft/forestry/api/apiculture/EnumBeeType.java delete mode 100644 src/minecraft/forestry/api/apiculture/FlowerManager.java delete mode 100644 src/minecraft/forestry/api/apiculture/IAlleleBeeEffect.java delete mode 100644 src/minecraft/forestry/api/apiculture/IAlleleBeeSpecies.java delete mode 100644 src/minecraft/forestry/api/apiculture/IAlleleFlowers.java delete mode 100644 src/minecraft/forestry/api/apiculture/IAlvearyComponent.java delete mode 100644 src/minecraft/forestry/api/apiculture/IApiaristTracker.java delete mode 100644 src/minecraft/forestry/api/apiculture/IArmorApiarist.java delete mode 100644 src/minecraft/forestry/api/apiculture/IBee.java delete mode 100644 src/minecraft/forestry/api/apiculture/IBeeGenome.java delete mode 100644 src/minecraft/forestry/api/apiculture/IBeeHousing.java delete mode 100644 src/minecraft/forestry/api/apiculture/IBeeInterface.java delete mode 100644 src/minecraft/forestry/api/apiculture/IBeeListener.java delete mode 100644 src/minecraft/forestry/api/apiculture/IBeeModifier.java delete mode 100644 src/minecraft/forestry/api/apiculture/IBeeMutation.java delete mode 100644 src/minecraft/forestry/api/apiculture/IBeekeepingLogic.java delete mode 100644 src/minecraft/forestry/api/apiculture/IBeekeepingMode.java delete mode 100644 src/minecraft/forestry/api/apiculture/IBreedingManager.java delete mode 100644 src/minecraft/forestry/api/apiculture/IFlowerProvider.java delete mode 100644 src/minecraft/forestry/api/apiculture/IHiveDrop.java delete mode 100644 src/minecraft/forestry/api/apiculture/IHiveFrame.java delete mode 100644 src/minecraft/forestry/api/arboriculture/EnumGermlingType.java delete mode 100644 src/minecraft/forestry/api/arboriculture/EnumGrowthConditions.java delete mode 100644 src/minecraft/forestry/api/arboriculture/EnumTreeChromosome.java delete mode 100644 src/minecraft/forestry/api/arboriculture/IAlleleFruit.java delete mode 100644 src/minecraft/forestry/api/arboriculture/IAlleleGrowth.java delete mode 100644 src/minecraft/forestry/api/arboriculture/IAlleleLeafEffect.java delete mode 100644 src/minecraft/forestry/api/arboriculture/IAlleleTreeSpecies.java delete mode 100644 src/minecraft/forestry/api/arboriculture/IArboristTracker.java delete mode 100644 src/minecraft/forestry/api/arboriculture/IFruitProvider.java delete mode 100644 src/minecraft/forestry/api/arboriculture/IGrowthProvider.java delete mode 100644 src/minecraft/forestry/api/arboriculture/IToolGrafter.java delete mode 100644 src/minecraft/forestry/api/arboriculture/ITree.java delete mode 100644 src/minecraft/forestry/api/arboriculture/ITreeBreedingManager.java delete mode 100644 src/minecraft/forestry/api/arboriculture/ITreeGenome.java delete mode 100644 src/minecraft/forestry/api/arboriculture/ITreeInterface.java delete mode 100644 src/minecraft/forestry/api/arboriculture/ITreeModifier.java delete mode 100644 src/minecraft/forestry/api/arboriculture/ITreeMutation.java delete mode 100644 src/minecraft/forestry/api/arboriculture/ITreekeepingMode.java delete mode 100644 src/minecraft/forestry/api/arboriculture/TreeManager.java delete mode 100644 src/minecraft/forestry/api/circuits/ChipsetManager.java delete mode 100644 src/minecraft/forestry/api/circuits/ICircuit.java delete mode 100644 src/minecraft/forestry/api/circuits/ICircuitBoard.java delete mode 100644 src/minecraft/forestry/api/circuits/ICircuitLayout.java delete mode 100644 src/minecraft/forestry/api/circuits/ICircuitLibrary.java delete mode 100644 src/minecraft/forestry/api/circuits/ICircuitRegistry.java delete mode 100644 src/minecraft/forestry/api/circuits/ISolderManager.java delete mode 100644 src/minecraft/forestry/api/core/BlockInterface.java delete mode 100644 src/minecraft/forestry/api/core/EnumHumidity.java delete mode 100644 src/minecraft/forestry/api/core/EnumTemperature.java delete mode 100644 src/minecraft/forestry/api/core/ForestryAPI.java delete mode 100644 src/minecraft/forestry/api/core/GlobalManager.java delete mode 100644 src/minecraft/forestry/api/core/IIconProvider.java delete mode 100644 src/minecraft/forestry/api/core/INBTTagable.java delete mode 100644 src/minecraft/forestry/api/core/IPlugin.java delete mode 100644 src/minecraft/forestry/api/core/IStructureLogic.java delete mode 100644 src/minecraft/forestry/api/core/ITextureManager.java delete mode 100644 src/minecraft/forestry/api/core/ITileStructure.java delete mode 100644 src/minecraft/forestry/api/core/ItemInterface.java delete mode 100644 src/minecraft/forestry/api/core/PluginInfo.java delete mode 100644 src/minecraft/forestry/api/core/Tabs.java delete mode 100644 src/minecraft/forestry/api/farming/Farmables.java delete mode 100644 src/minecraft/forestry/api/farming/ICrop.java delete mode 100644 src/minecraft/forestry/api/farming/IFarmComponent.java delete mode 100644 src/minecraft/forestry/api/farming/IFarmHousing.java delete mode 100644 src/minecraft/forestry/api/farming/IFarmInterface.java delete mode 100644 src/minecraft/forestry/api/farming/IFarmListener.java delete mode 100644 src/minecraft/forestry/api/farming/IFarmLogic.java delete mode 100644 src/minecraft/forestry/api/farming/IFarmable.java delete mode 100644 src/minecraft/forestry/api/food/BeverageManager.java delete mode 100644 src/minecraft/forestry/api/food/IBeverageEffect.java delete mode 100644 src/minecraft/forestry/api/food/IInfuserManager.java delete mode 100644 src/minecraft/forestry/api/food/IIngredientManager.java delete mode 100644 src/minecraft/forestry/api/fuels/EngineBronzeFuel.java delete mode 100644 src/minecraft/forestry/api/fuels/EngineCopperFuel.java delete mode 100644 src/minecraft/forestry/api/fuels/FermenterFuel.java delete mode 100644 src/minecraft/forestry/api/fuels/FuelManager.java delete mode 100644 src/minecraft/forestry/api/fuels/GeneratorFuel.java delete mode 100644 src/minecraft/forestry/api/fuels/ItemStackMap.java delete mode 100644 src/minecraft/forestry/api/fuels/MoistenerFuel.java delete mode 100644 src/minecraft/forestry/api/fuels/RainSubstrate.java delete mode 100644 src/minecraft/forestry/api/genetics/AlleleManager.java delete mode 100644 src/minecraft/forestry/api/genetics/EnumTolerance.java delete mode 100644 src/minecraft/forestry/api/genetics/IAllele.java delete mode 100644 src/minecraft/forestry/api/genetics/IAlleleEffect.java delete mode 100644 src/minecraft/forestry/api/genetics/IAlleleFloat.java delete mode 100644 src/minecraft/forestry/api/genetics/IAlleleHandler.java delete mode 100644 src/minecraft/forestry/api/genetics/IAlleleInteger.java delete mode 100644 src/minecraft/forestry/api/genetics/IAlleleRegistry.java delete mode 100644 src/minecraft/forestry/api/genetics/IAlleleSpecies.java delete mode 100644 src/minecraft/forestry/api/genetics/IBreedingTracker.java delete mode 100644 src/minecraft/forestry/api/genetics/IChromosome.java delete mode 100644 src/minecraft/forestry/api/genetics/IClassification.java delete mode 100644 src/minecraft/forestry/api/genetics/IEffectData.java delete mode 100644 src/minecraft/forestry/api/genetics/IFruitBearer.java delete mode 100644 src/minecraft/forestry/api/genetics/IFruitFamily.java delete mode 100644 src/minecraft/forestry/api/genetics/IGenome.java delete mode 100644 src/minecraft/forestry/api/genetics/IIndividual.java delete mode 100644 src/minecraft/forestry/api/genetics/ILegacyHandler.java delete mode 100644 src/minecraft/forestry/api/genetics/IMutation.java delete mode 100644 src/minecraft/forestry/api/genetics/IPollinatable.java delete mode 100644 src/minecraft/forestry/api/recipes/IBottlerManager.java delete mode 100644 src/minecraft/forestry/api/recipes/ICarpenterManager.java delete mode 100644 src/minecraft/forestry/api/recipes/ICentrifugeManager.java delete mode 100644 src/minecraft/forestry/api/recipes/ICraftingProvider.java delete mode 100644 src/minecraft/forestry/api/recipes/IFabricatorManager.java delete mode 100644 src/minecraft/forestry/api/recipes/IFermenterManager.java delete mode 100644 src/minecraft/forestry/api/recipes/IGenericCrate.java delete mode 100644 src/minecraft/forestry/api/recipes/IMoistenerManager.java delete mode 100644 src/minecraft/forestry/api/recipes/ISqueezerManager.java delete mode 100644 src/minecraft/forestry/api/recipes/IStillManager.java delete mode 100644 src/minecraft/forestry/api/recipes/IVariableFermentable.java delete mode 100644 src/minecraft/forestry/api/recipes/RecipeManagers.java delete mode 100644 src/minecraft/forestry/api/storage/BackpackEvent.java delete mode 100644 src/minecraft/forestry/api/storage/BackpackManager.java delete mode 100644 src/minecraft/forestry/api/storage/BackpackResupplyEvent.java delete mode 100644 src/minecraft/forestry/api/storage/BackpackStowEvent.java delete mode 100644 src/minecraft/forestry/api/storage/EnumBackpackType.java delete mode 100644 src/minecraft/forestry/api/storage/IBackpackDefinition.java delete mode 100644 src/minecraft/forestry/api/storage/IBackpackInterface.java delete mode 100644 src/minecraft/forestry/api/world/ITreeGenData.java delete mode 100644 src/minecraft/forestry/api/world/IWorldGenInterface.java delete mode 100644 src/minecraft/forestry/api/world/WorldGenManager.java delete mode 100644 src/minecraft/mcmod.info delete mode 100644 src/minecraft/mods/BiomesOPlenty/audio/bopdisc.ogg delete mode 100644 src/minecraft/mods/BiomesOPlenty/audio/bopdiscmud.ogg delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/armor/amethyst_1.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/armor/amethyst_2.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/armor/mud_1.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/armor/mud_2.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/algae.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/amethystblock.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/amethystore.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/anemone.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/ashblock.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/ashstone.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/bamboo.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/bamboothatching.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/barley.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/bigflowerred.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/bigflowerstem_heart.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/bigflowerstem_side.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/bigfloweryellow.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/bush.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/cactus.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/cattail.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/clover.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/cragrock.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/daisy.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/deadbloom.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/deadgrass.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/desertgrass.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/desertsprouts.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/drieddirt.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/dunegrass.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/glowflower.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/harddirt.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/hardice.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/hardsand.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/highgrassbottom.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/highgrasstop.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/holygrass_side.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/holygrass_top.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/holystone.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/holytallgrass.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/hydrangea.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/item_bamboo.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/item_barley.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/item_cattail.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/item_highgrass.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/item_moss.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_acacia_fancy.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_acacia_fast.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_apple.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_apple0_fancy.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_apple0_fast.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_apple1_fancy.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_apple1_fast.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_apple2_fancy.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_apple2_fast.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_apple3_fancy.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_apple3_fast.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_bamboo_fancy.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_bamboo_fast.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_dark_fancy.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_dark_fast.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_dead_fancy.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_dead_fast.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_fir_fancy.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_fir_fast.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_holy_fancy.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_holy_fast.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_magic_fancy.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_magic_fast.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_mangrove_fancy.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_mangrove_fast.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_maple_fancy.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_maple_fast.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_orangeautumn_fancy.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_orangeautumn_fast.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_origin_fancy.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_origin_fast.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_palm_fancy.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_palm_fast.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_pinkcherry_fancy.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_pinkcherry_fast.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_redwood_fancy.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_redwood_fast.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_whitecherry_fancy.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_whitecherry_fast.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_willow_fancy.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_willow_fast.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_yellowautumn_fancy.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/leaves_yellowautumn_fast.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/log_acacia_heart.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/log_acacia_side.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/log_cherry_heart.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/log_cherry_side.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/log_dark_heart.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/log_dark_side.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/log_dead_heart.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/log_dead_side.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/log_fir_heart.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/log_fir_side.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/log_holy_heart.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/log_holy_side.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/log_magic_heart.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/log_magic_side.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/log_mangrove_heart.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/log_mangrove_side.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/log_palm_heart.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/log_palm_side.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/log_redwood_heart.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/log_redwood_side.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/log_willow_heart.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/log_willow_side.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/mediumgrass.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/moss.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/mud.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/mudbrick.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/origingrass1.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/origingrass2.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/origingrass3.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/plank_acacia.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/plank_cherry.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/plank_dark.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/plank_fir.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/plank_holy.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/plank_magic.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/plank_mangrove.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/plank_palm.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/plank_redwood.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/plank_willow.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/portal.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/quicksand.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/redbrick.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/redcobble.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/redrock.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/sapling_acacia.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/sapling_apple.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/sapling_bamboo.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/sapling_dark.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/sapling_dead.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/sapling_fir.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/sapling_holy.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/sapling_magic.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/sapling_mangrove.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/sapling_maple.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/sapling_orangeautumn.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/sapling_origin.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/sapling_palm.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/sapling_pinkcherry.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/sapling_redwood.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/sapling_whitecherry.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/sapling_willow.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/sapling_yellowautumn.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/shortgrass.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/smolderinggrass_bottom.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/smolderinggrass_side.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/smolderinggrass_top.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/sprout.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/swampflower.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/thorn.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/toadstool.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/treemoss.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/tulip.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/violet.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/wildflower.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/blocks/willow.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/amethyst.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/amethystaxe.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/amethystboots.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/amethystchestplate.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/amethysthelmet.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/amethysthoe.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/amethystleggings.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/amethystpickaxe.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/amethystshovel.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/amethystsword.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/ancientstaff.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/ash.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/boprecord.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/enderporter.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/mudaxe.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/mudball.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/mudboots.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/mudbrick.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/mudchestplate.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/mudhelmet.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/mudhoe.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/mudleggings.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/mudpickaxe.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/mudrecord.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/mudshovel.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/mudsword.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/shroompowder.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/staffhandle.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/staffpole.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/items/stafftopper.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/mobs/junglespider.png delete mode 100644 src/minecraft/mods/BiomesOPlenty/textures/mobs/rosester.png delete mode 100644 src/minecraft/ted80/api/DefaultBiomeList.java delete mode 100644 src/minecraft/thaumcraft/api/EnumTag.java delete mode 100644 src/minecraft/thaumcraft/api/IAspectSource.java delete mode 100644 src/minecraft/thaumcraft/api/IVisDiscounter.java delete mode 100644 src/minecraft/thaumcraft/api/IVisRepairable.java delete mode 100644 src/minecraft/thaumcraft/api/ItemApi.java delete mode 100644 src/minecraft/thaumcraft/api/ObjectTags.java delete mode 100644 src/minecraft/thaumcraft/api/ThaumcraftApi.java delete mode 100644 src/minecraft/thaumcraft/api/ThaumcraftApiHelper.java delete mode 100644 src/minecraft/thaumcraft/api/aspects/Aspect.java delete mode 100644 src/minecraft/thaumcraft/api/aura/AuraNode.java delete mode 100644 src/minecraft/thaumcraft/api/aura/EnumNodeType.java delete mode 100644 src/minecraft/thaumcraft/api/crafting/IArcaneRecipe.java delete mode 100644 src/minecraft/thaumcraft/api/crafting/IInfusionRecipe.java delete mode 100644 src/minecraft/thaumcraft/api/crafting/RecipeCrucible.java delete mode 100644 src/minecraft/thaumcraft/api/crafting/ShapedArcaneCraftingRecipes.java delete mode 100644 src/minecraft/thaumcraft/api/crafting/ShapedInfusionCraftingRecipes.java delete mode 100644 src/minecraft/thaumcraft/api/crafting/ShapelessArcaneCraftingRecipes.java delete mode 100644 src/minecraft/thaumcraft/api/crafting/ShapelessInfusionCraftingRecipes.java delete mode 100644 src/minecraft/thaumcraft/api/crafting/ShapelessInfusionCraftingWithNBTRecipes.java delete mode 100644 src/minecraft/thaumcraft/api/research/IScanEventHandler.java delete mode 100644 src/minecraft/thaumcraft/api/research/ResearchItem.java delete mode 100644 src/minecraft/thaumcraft/api/research/ResearchList.java delete mode 100644 src/minecraft/thaumcraft/api/research/ResearchPlayer.java delete mode 100644 src/minecraft/thaumcraft/api/research/ScanResult.java delete mode 100644 src/minecraft/thermalexpansion/api/ThermalExpansionInfo.java delete mode 100644 src/minecraft/thermalexpansion/api/crafting/CraftingHelpers.java delete mode 100644 src/minecraft/thermalexpansion/api/crafting/CraftingManagers.java delete mode 100644 src/minecraft/thermalexpansion/api/crafting/ICrucibleManager.java delete mode 100644 src/minecraft/thermalexpansion/api/crafting/ICrucibleRecipe.java delete mode 100644 src/minecraft/thermalexpansion/api/crafting/IFurnaceManager.java delete mode 100644 src/minecraft/thermalexpansion/api/crafting/IFurnaceRecipe.java delete mode 100644 src/minecraft/thermalexpansion/api/crafting/IPulverizerManager.java delete mode 100644 src/minecraft/thermalexpansion/api/crafting/IPulverizerRecipe.java delete mode 100644 src/minecraft/thermalexpansion/api/crafting/ISawmillManager.java delete mode 100644 src/minecraft/thermalexpansion/api/crafting/ISawmillRecipe.java delete mode 100644 src/minecraft/thermalexpansion/api/crafting/ISmelterManager.java delete mode 100644 src/minecraft/thermalexpansion/api/crafting/ISmelterRecipe.java delete mode 100644 src/minecraft/thermalexpansion/api/crafting/ITransposerManager.java delete mode 100644 src/minecraft/thermalexpansion/api/crafting/ITransposerRecipe.java delete mode 100644 src/minecraft/thermalexpansion/api/item/IChargeableItem.java delete mode 100644 src/minecraft/thermalexpansion/api/item/ItemRegistry.java delete mode 100644 src/minecraft/thermalexpansion/api/tileentity/IAccessControl.java delete mode 100644 src/minecraft/thermalexpansion/api/tileentity/IRedstoneControl.java delete mode 100644 src/minecraft/thermalexpansion/api/tileentity/ITesseract.java delete mode 100644 src/minecraft/thermalexpansion/readme-api.txt delete mode 100644 unused code/biomesoplenty/blocks/BlockAcaciaLeaves.java delete mode 100644 unused code/biomesoplenty/blocks/BlockAcaciaLog.java delete mode 100644 unused code/biomesoplenty/blocks/BlockAcaciaPlank.java delete mode 100644 unused code/biomesoplenty/blocks/BlockAcaciaSapling.java delete mode 100644 unused code/biomesoplenty/blocks/BlockAcaciaSlab.java delete mode 100644 unused code/biomesoplenty/blocks/BlockAcaciaStairs.java delete mode 100644 unused code/biomesoplenty/blocks/BlockAlgae.java delete mode 100644 unused code/biomesoplenty/blocks/BlockAmethystBlock.java delete mode 100644 unused code/biomesoplenty/blocks/BlockAmethystOre.java delete mode 100644 unused code/biomesoplenty/blocks/BlockAppleLeaves.java delete mode 100644 unused code/biomesoplenty/blocks/BlockAppleLeavesFruitless.java delete mode 100644 unused code/biomesoplenty/blocks/BlockAppleSapling.java delete mode 100644 unused code/biomesoplenty/blocks/BlockAshStone.java delete mode 100644 unused code/biomesoplenty/blocks/BlockAutumnLeaves.java delete mode 100644 unused code/biomesoplenty/blocks/BlockBambooLeaves.java delete mode 100644 unused code/biomesoplenty/blocks/BlockBambooSapling.java delete mode 100644 unused code/biomesoplenty/blocks/BlockBambooThatching.java delete mode 100644 unused code/biomesoplenty/blocks/BlockBarley.java delete mode 100644 unused code/biomesoplenty/blocks/BlockBlueFlower.java delete mode 100644 unused code/biomesoplenty/blocks/BlockBlueLeaves.java delete mode 100644 unused code/biomesoplenty/blocks/BlockBrownSapling.java delete mode 100644 unused code/biomesoplenty/blocks/BlockBush.java delete mode 100644 unused code/biomesoplenty/blocks/BlockCattail.java delete mode 100644 unused code/biomesoplenty/blocks/BlockCherryLog.java delete mode 100644 unused code/biomesoplenty/blocks/BlockCherryPlank.java delete mode 100644 unused code/biomesoplenty/blocks/BlockCherrySlab.java delete mode 100644 unused code/biomesoplenty/blocks/BlockCherryStairs.java delete mode 100644 unused code/biomesoplenty/blocks/BlockCragRock.java delete mode 100644 unused code/biomesoplenty/blocks/BlockDarkLeaves.java delete mode 100644 unused code/biomesoplenty/blocks/BlockDarkLog.java delete mode 100644 unused code/biomesoplenty/blocks/BlockDarkPlank.java delete mode 100644 unused code/biomesoplenty/blocks/BlockDarkSapling.java delete mode 100644 unused code/biomesoplenty/blocks/BlockDarkSlab.java delete mode 100644 unused code/biomesoplenty/blocks/BlockDarkStairs.java delete mode 100644 unused code/biomesoplenty/blocks/BlockDeadGrass.java delete mode 100644 unused code/biomesoplenty/blocks/BlockDeadLeaves.java delete mode 100644 unused code/biomesoplenty/blocks/BlockDeadLog.java delete mode 100644 unused code/biomesoplenty/blocks/BlockDeathbloom.java delete mode 100644 unused code/biomesoplenty/blocks/BlockDesertGrass.java delete mode 100644 unused code/biomesoplenty/blocks/BlockDesertSprouts.java delete mode 100644 unused code/biomesoplenty/blocks/BlockDriedDirt.java delete mode 100644 unused code/biomesoplenty/blocks/BlockDuneGrass.java delete mode 100644 unused code/biomesoplenty/blocks/BlockFirLeaves.java delete mode 100644 unused code/biomesoplenty/blocks/BlockFirLog.java delete mode 100644 unused code/biomesoplenty/blocks/BlockFirPlank.java delete mode 100644 unused code/biomesoplenty/blocks/BlockFirSapling.java delete mode 100644 unused code/biomesoplenty/blocks/BlockFirSlab.java delete mode 100644 unused code/biomesoplenty/blocks/BlockFirStairs.java delete mode 100644 unused code/biomesoplenty/blocks/BlockGiantFlowerRed.java delete mode 100644 unused code/biomesoplenty/blocks/BlockGiantFlowerStem.java delete mode 100644 unused code/biomesoplenty/blocks/BlockGiantFlowerYellow.java delete mode 100644 unused code/biomesoplenty/blocks/BlockGlowFlower.java delete mode 100644 unused code/biomesoplenty/blocks/BlockHardDirt.java delete mode 100644 unused code/biomesoplenty/blocks/BlockHardIce.java delete mode 100644 unused code/biomesoplenty/blocks/BlockHardSand.java delete mode 100644 unused code/biomesoplenty/blocks/BlockHighGrassBottom.java delete mode 100644 unused code/biomesoplenty/blocks/BlockHighGrassTop.java delete mode 100644 unused code/biomesoplenty/blocks/BlockHolyGrass.java delete mode 100644 unused code/biomesoplenty/blocks/BlockHolyLeaves.java delete mode 100644 unused code/biomesoplenty/blocks/BlockHolyLog.java delete mode 100644 unused code/biomesoplenty/blocks/BlockHolyPlank.java delete mode 100644 unused code/biomesoplenty/blocks/BlockHolySapling.java delete mode 100644 unused code/biomesoplenty/blocks/BlockHolySlab.java delete mode 100644 unused code/biomesoplenty/blocks/BlockHolyStairs.java delete mode 100644 unused code/biomesoplenty/blocks/BlockHolyStone.java delete mode 100644 unused code/biomesoplenty/blocks/BlockHolyTallGrass.java delete mode 100644 unused code/biomesoplenty/blocks/BlockHydrangea.java delete mode 100644 unused code/biomesoplenty/blocks/BlockMagicLog.java delete mode 100644 unused code/biomesoplenty/blocks/BlockMagicPlank.java delete mode 100644 unused code/biomesoplenty/blocks/BlockMagicSapling.java delete mode 100644 unused code/biomesoplenty/blocks/BlockMagicSlab.java delete mode 100644 unused code/biomesoplenty/blocks/BlockMagicStairs.java delete mode 100644 unused code/biomesoplenty/blocks/BlockMangroveLeaves.java delete mode 100644 unused code/biomesoplenty/blocks/BlockMangroveLog.java delete mode 100644 unused code/biomesoplenty/blocks/BlockMangrovePlank.java delete mode 100644 unused code/biomesoplenty/blocks/BlockMangroveSapling.java delete mode 100644 unused code/biomesoplenty/blocks/BlockMangroveSlab.java delete mode 100644 unused code/biomesoplenty/blocks/BlockMangroveStairs.java delete mode 100644 unused code/biomesoplenty/blocks/BlockMediumGrass.java delete mode 100644 unused code/biomesoplenty/blocks/BlockMudBrick.java delete mode 100644 unused code/biomesoplenty/blocks/BlockMudBrickSlab.java delete mode 100644 unused code/biomesoplenty/blocks/BlockMudBrickStairs.java delete mode 100644 unused code/biomesoplenty/blocks/BlockOrangeFlower.java delete mode 100644 unused code/biomesoplenty/blocks/BlockOrangeLeaves.java delete mode 100644 unused code/biomesoplenty/blocks/BlockOrangeSapling.java delete mode 100644 unused code/biomesoplenty/blocks/BlockOriginLeaves.java delete mode 100644 unused code/biomesoplenty/blocks/BlockOriginSapling.java delete mode 100644 unused code/biomesoplenty/blocks/BlockPalmLeaves.java delete mode 100644 unused code/biomesoplenty/blocks/BlockPalmLog.java delete mode 100644 unused code/biomesoplenty/blocks/BlockPalmPlank.java delete mode 100644 unused code/biomesoplenty/blocks/BlockPalmSapling.java delete mode 100644 unused code/biomesoplenty/blocks/BlockPalmSlab.java delete mode 100644 unused code/biomesoplenty/blocks/BlockPalmStairs.java delete mode 100644 unused code/biomesoplenty/blocks/BlockPinkFlower.java delete mode 100644 unused code/biomesoplenty/blocks/BlockPinkLeaves.java delete mode 100644 unused code/biomesoplenty/blocks/BlockPinkSapling.java delete mode 100644 unused code/biomesoplenty/blocks/BlockPurpleFlower.java delete mode 100644 unused code/biomesoplenty/blocks/BlockRedLeaves.java delete mode 100644 unused code/biomesoplenty/blocks/BlockRedRock.java delete mode 100644 unused code/biomesoplenty/blocks/BlockRedRockBrick.java delete mode 100644 unused code/biomesoplenty/blocks/BlockRedRockBrickSlab.java delete mode 100644 unused code/biomesoplenty/blocks/BlockRedRockBrickStairs.java delete mode 100644 unused code/biomesoplenty/blocks/BlockRedRockCobble.java delete mode 100644 unused code/biomesoplenty/blocks/BlockRedRockCobbleSlab.java delete mode 100644 unused code/biomesoplenty/blocks/BlockRedRockCobbleStairs.java delete mode 100644 unused code/biomesoplenty/blocks/BlockRedSapling.java delete mode 100644 unused code/biomesoplenty/blocks/BlockRedwoodLeaves.java delete mode 100644 unused code/biomesoplenty/blocks/BlockRedwoodLog.java delete mode 100644 unused code/biomesoplenty/blocks/BlockRedwoodPlank.java delete mode 100644 unused code/biomesoplenty/blocks/BlockRedwoodSapling.java delete mode 100644 unused code/biomesoplenty/blocks/BlockRedwoodSlab.java delete mode 100644 unused code/biomesoplenty/blocks/BlockRedwoodStairs.java delete mode 100644 unused code/biomesoplenty/blocks/BlockShortGrass.java delete mode 100644 unused code/biomesoplenty/blocks/BlockSmolderingGrass.java delete mode 100644 unused code/biomesoplenty/blocks/BlockSprout.java delete mode 100644 unused code/biomesoplenty/blocks/BlockThorn.java delete mode 100644 unused code/biomesoplenty/blocks/BlockTinyCactus.java delete mode 100644 unused code/biomesoplenty/blocks/BlockTinyFlower.java delete mode 100644 unused code/biomesoplenty/blocks/BlockToadstool.java delete mode 100644 unused code/biomesoplenty/blocks/BlockViolet.java delete mode 100644 unused code/biomesoplenty/blocks/BlockWhiteFlower.java delete mode 100644 unused code/biomesoplenty/blocks/BlockWhiteLeaves.java delete mode 100644 unused code/biomesoplenty/blocks/BlockWhiteSapling.java delete mode 100644 unused code/biomesoplenty/blocks/BlockWillowLeaves.java delete mode 100644 unused code/biomesoplenty/blocks/BlockWillowLog.java delete mode 100644 unused code/biomesoplenty/blocks/BlockWillowPlank.java delete mode 100644 unused code/biomesoplenty/blocks/BlockWillowSapling.java delete mode 100644 unused code/biomesoplenty/blocks/BlockWillowSlab.java delete mode 100644 unused code/biomesoplenty/blocks/BlockWillowStairs.java delete mode 100644 unused code/biomesoplenty/blocks/BlockYellowSapling.java delete mode 100644 unused code/biomesoplenty/items/ItemAncientStaff.java delete mode 100644 unused code/biomesoplenty/items/ItemBarley.java delete mode 100644 unused code/biomesoplenty/items/ItemBush.java delete mode 100644 unused code/biomesoplenty/items/ItemCattail.java delete mode 100644 unused code/biomesoplenty/items/ItemMediumGrass.java delete mode 100644 unused code/biomesoplenty/items/ItemShortGrass.java delete mode 100644 unused code/biomesoplenty/items/ItemSprout.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenAlaskanCedar1.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenAlaskanCedar2.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenAlder1.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenAlder2.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenAlpsSpruce.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenAppleTree1.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenAppleTree2.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenBog.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenBrazilNut1.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenBrazilNut2.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenColumn.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenCrag.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenCypress1.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenCypress2.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenDarkTree1.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenDarkTree2.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenDarkTreeOld1.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenFir1.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenFir2.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenFir3.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenFungi1.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenFungi2.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenFungi3.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenGrandFir1.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenGrandFir2.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenGrass.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenLarch1.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenLarch2.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenNorwaySpruce1.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenNorwaySpruce2.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenPalm1.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenPalm2.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenPalmTree.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenPalmTree2.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenPaperBirch1.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenPaperBirch2.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenPoisonIvy.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenRedwood1.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenRedwood2.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenSandboxTree1.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenSandboxTree2.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenScotsPine1.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenScotsPine2.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenSilverBirch1.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenSilverBirch2.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenSpire.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenSprings.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenStump.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenWhiteOak1.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenWhiteOak2.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenWillow1.java delete mode 100644 unused code/biomesoplenty/worldgen/WorldGenWillow2.java diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 986609a8e..000000000 --- a/.gitignore +++ /dev/null @@ -1,12 +0,0 @@ -cpw/* -net/* -paulscode/* -ibxm/* -Start.java -mcpmod.info -mcp.png -forge_logo.png -forge_at.cfg -fmlversion.properties -fml_marker.cfg -fml_at.cfg \ No newline at end of file diff --git a/BOP Converter Patch Generator/BOP-Converter-Patch-Generator-1.0.jar b/BOP Converter Patch Generator/BOP-Converter-Patch-Generator-1.0.jar deleted file mode 100644 index cbd442bd08078fff89f72242f0b53003697ddc6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132281 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

c@^ha#Kro~C? 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

L){28?=xU_%VU0+T4b6{N^Jk=JYeasXj#v9e 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 diff --git a/BOP Converter Patch Generator/src/Adubbz/CPGen/ActionHandler.java b/BOP Converter Patch Generator/src/Adubbz/CPGen/ActionHandler.java deleted file mode 100644 index 12ef22b0e..000000000 --- a/BOP Converter Patch Generator/src/Adubbz/CPGen/ActionHandler.java +++ /dev/null @@ -1,92 +0,0 @@ -package Adubbz.CPGen; - -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.IOException; - -import javax.swing.JFileChooser; -import javax.swing.JOptionPane; - -public class ActionHandler implements ActionListener { - - public static File importConfigSelectedFile = null; - public static File outputPatchSelectedFile = null; - - public void actionPerformed(ActionEvent event) - { - if (event.getSource() == Gui.btnImportConfig) - { - JFileChooser importFileChooser = new JFileChooser(); - - importFileChooser.setDialogTitle("Select Pre-0.5.2 Config File"); - importFileChooser.setFileFilter(new ConfigFileFilter()); - importFileChooser.setAcceptAllFileFilterUsed(false); - - int importChecker = importFileChooser.showOpenDialog(null); - - importConfigSelectedFile = importFileChooser.getSelectedFile(); - - if (importChecker == JFileChooser.APPROVE_OPTION) - { - System.out.println("Found file at " + importConfigSelectedFile.toString()); - - Gui.textFieldImportConfig.setText(importConfigSelectedFile.toString()); - } - } - if (event.getSource() == Gui.btnOutputPatch) - { - JFileChooser outputFileChooser = new JFileChooser(); - - outputFileChooser.setDialogTitle("Select Directory to Output to"); - outputFileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); - outputFileChooser.setFileFilter(new DirectoryFileFilter()); - outputFileChooser.setAcceptAllFileFilterUsed(false); - - int outputChecker = outputFileChooser.showOpenDialog(null); - - outputPatchSelectedFile = outputFileChooser.getSelectedFile(); - - if (outputChecker == JFileChooser.APPROVE_OPTION) - { - System.out.println("Found folder at " + outputPatchSelectedFile); - - Gui.textFieldOutputPatch.setText(outputPatchSelectedFile.toString()); - } - } - - if (event.getSource() == Gui.btnStart) - { - Gui.progressBar.setValue(0); - Gui.progressBar.setVisible(true); - - if (importConfigSelectedFile != null) - { - Gui.progressBar.setValue(17); - if (outputPatchSelectedFile != null) - { - try - { - Gui.progressBar.setValue(34); - ConfigFileReader.read(); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - else - { - JOptionPane.showMessageDialog(null, "You must select an Output Folder!", "Error", JOptionPane.ERROR_MESSAGE); - } - } - else - { - JOptionPane.showMessageDialog(null, "You must select a Config File!", "Error", JOptionPane.ERROR_MESSAGE); - } - } - } -} diff --git a/BOP Converter Patch Generator/src/Adubbz/CPGen/ConfigFileFilter.java b/BOP Converter Patch Generator/src/Adubbz/CPGen/ConfigFileFilter.java deleted file mode 100644 index 6e44b3888..000000000 --- a/BOP Converter Patch Generator/src/Adubbz/CPGen/ConfigFileFilter.java +++ /dev/null @@ -1,48 +0,0 @@ -package Adubbz.CPGen; - -import java.io.File; - -import javax.swing.filechooser.FileFilter; - -public class ConfigFileFilter extends FileFilter { - - private String ImageFormat = "CFG"; - private char DotIndex = '.'; - - public boolean accept(File file) - { - if (file.isDirectory()) - { - return true; - } - else if (extension(file).equalsIgnoreCase(ImageFormat)) - { - return true; - } - else - { - return false; - } - } - - @Override - public String getDescription() - { - return "Config Files Only"; - } - - public String extension(File file) - { - String FileName = file.getName(); - int IndexFile = FileName.lastIndexOf(DotIndex); - - if (IndexFile > 0 && IndexFile < FileName.length() - 1) - { - return FileName.substring(IndexFile + 1); - } - else - { - return ""; - } - } -} diff --git a/BOP Converter Patch Generator/src/Adubbz/CPGen/ConfigFileReader.java b/BOP Converter Patch Generator/src/Adubbz/CPGen/ConfigFileReader.java deleted file mode 100644 index 9e7697759..000000000 --- a/BOP Converter Patch Generator/src/Adubbz/CPGen/ConfigFileReader.java +++ /dev/null @@ -1,48 +0,0 @@ -package Adubbz.CPGen; - -import java.io.BufferedReader; -import java.io.FileReader; - -public class ConfigFileReader { - - public static String text = ""; - - public static void read() throws Exception - { - FileReader file = new FileReader(ActionHandler.importConfigSelectedFile.toString()); - BufferedReader reader = new BufferedReader(file); - - String line = reader.readLine(); - - boolean foundBlock = false; - boolean endBlock = false; - - while (line != null) - { - String currentLineText = line; - - if (foundBlock && currentLineText.contains("}")) - { - endBlock = true; - } - - if (foundBlock && !endBlock) - { - text += line; - } - - if (currentLineText.contains("block {")) - { - foundBlock = true; - } - - line = reader.readLine(); - } - - reader.close(); - - Gui.progressBar.setValue(51); - - ConfigTextFilter.filter(); - } -} diff --git a/BOP Converter Patch Generator/src/Adubbz/CPGen/ConfigTextFilter.java b/BOP Converter Patch Generator/src/Adubbz/CPGen/ConfigTextFilter.java deleted file mode 100644 index f27234894..000000000 --- a/BOP Converter Patch Generator/src/Adubbz/CPGen/ConfigTextFilter.java +++ /dev/null @@ -1,176 +0,0 @@ -package Adubbz.CPGen; - -public class ConfigTextFilter { - - public static String[] splitString; - - public static void filter() - { - splitString = ConfigFileReader.text.split("I:"); - - for (int i = 1; i < 141; ++i) - { - //splitString[i] = splitString[i].replaceAll( "[^\\d]", "" ); - splitString[i] = splitString[i].replaceFirst(".*?(?=[a-z]?=)", ""); - splitString[i] = splitString[i].replace("=", ""); - splitString[i] = splitString[i].replace(" ", ""); - - splitString[i] = splitString[i] + " -> "; - } - - splitString[1] = splitString[1] + "1948"; - splitString[2] = splitString[2] + "1962"; - splitString[3] = splitString[3] + "1933"; - splitString[4] = splitString[4] + "1947"; - splitString[5] = splitString[5] + "1938"; - splitString[6] = splitString[6] + "1949"; - splitString[7] = splitString[7] + "1952"; - splitString[8] = splitString[8] + "1925"; - splitString[9] = splitString[9] + "1942"; - splitString[10] = splitString[10] + "1921:9"; - splitString[11] = splitString[11] + "1926:3"; - splitString[12] = splitString[12] + "1937"; - splitString[13] = splitString[13] + "1927"; - splitString[14] = splitString[14] + "1923:1"; - splitString[15] = splitString[15] + "1937:2"; - splitString[16] = splitString[16] + "1947:10"; - splitString[17] = splitString[17] + "1920:6"; - splitString[18] = splitString[18] + "1942:1"; - splitString[19] = splitString[19] + "1925:4"; - splitString[20] = splitString[20] + "1920:7"; - splitString[21] = splitString[21] + "1948:1"; - splitString[22] = splitString[22] + "1933:1"; - splitString[23] = splitString[23] + "1947:1"; - splitString[24] = splitString[24] + "1949:1"; - splitString[25] = splitString[25] + "1953"; - splitString[26] = splitString[26] + "1921"; - splitString[27] = splitString[27] + "1921:5"; - splitString[28] = splitString[28] + "1948:2"; - splitString[29] = splitString[29] + "1923:3"; - splitString[30] = splitString[30] + "1933:2"; - splitString[31] = splitString[31] + "1947:2"; - splitString[32] = splitString[32] + "1937:4"; - splitString[33] = splitString[33] + "1949:2"; - splitString[34] = splitString[34] + "1954"; - splitString[35] = splitString[35] + "1920"; - splitString[36] = splitString[36] + "1935:2"; - splitString[37] = splitString[37] + "1921:2"; - splitString[38] = splitString[38] + "1920:1"; - splitString[39] = splitString[39] + "1920:2"; - splitString[40] = splitString[40] + "1920:3"; - splitString[41] = splitString[41] + "1920:3"; - splitString[42] = splitString[42] + "1923:4"; - splitString[43] = splitString[43] + "1937:5"; - splitString[44] = splitString[44] + "1948:3"; - splitString[45] = splitString[45] + "1923:5"; - splitString[46] = splitString[46] + "1947:3"; - splitString[47] = splitString[47] + "1937:6"; - splitString[48] = splitString[48] + "1949:3"; - splitString[49] = splitString[49] + "1926"; - splitString[51] = splitString[51] + "1935:3"; - splitString[52] = splitString[52] + "1936"; - splitString[53] = splitString[53] + "1936:1"; - splitString[54] = splitString[54] + "1921:3"; - splitString[55] = splitString[55] + "1925:3"; - splitString[56] = splitString[56] + "1925:6"; - splitString[57] = splitString[57] + "1948:4"; - splitString[58] = splitString[58] + "1923:6"; - splitString[59] = splitString[59] + "1934"; - splitString[60] = splitString[60] + "1947:4"; - splitString[61] = splitString[61] + "1937:7"; - splitString[62] = splitString[62] + "1949:4"; - splitString[63] = splitString[63] + "1956"; - splitString[64] = splitString[64] + "1920:4"; - splitString[65] = splitString[65] + "1921:4"; - splitString[66] = splitString[66] + "1948:5"; - splitString[67] = splitString[67] + "1923:2"; - splitString[68] = splitString[68] + "1934:1"; - splitString[69] = splitString[69] + "1947:5"; - splitString[70] = splitString[70] + "1937:3"; - splitString[71] = splitString[71] + "1949:5"; - splitString[72] = splitString[72] + "1957"; - splitString[73] = splitString[73] + "1948:6"; - splitString[74] = splitString[74] + "1962:1"; - splitString[75] = splitString[75] + "1934:2"; - splitString[76] = splitString[76] + "1947:6"; - splitString[77] = splitString[77] + "1938:1"; - splitString[78] = splitString[78] + "1949:6"; - splitString[79] = splitString[79] + "1958"; //Correct - splitString[80] = splitString[80] + "1924:2"; - splitString[81] = splitString[81] + "1937:11"; - splitString[82] = splitString[82] + "1925:2"; - splitString[83] = splitString[83] + "4095"; - splitString[84] = splitString[84] + "1930:2"; - splitString[85] = splitString[85] + "1931:2"; - splitString[86] = splitString[86] + "1929"; - splitString[87] = splitString[87] + "1928"; - splitString[88] = splitString[88] + "1923:7"; - splitString[89] = splitString[89] + "1937:8"; - splitString[90] = splitString[90] + "1924"; - splitString[91] = splitString[91] + "1937:9"; - splitString[92] = splitString[92] + "1948:7"; - splitString[93] = splitString[93] + "1962:2"; - splitString[94] = splitString[94] + "1934:3"; - splitString[95] = splitString[95] + "1947:7"; - splitString[96] = splitString[96] + "1938:2"; - splitString[97] = splitString[97] + "1949:7"; - splitString[98] = splitString[98] + "1959"; - splitString[99] = splitString[99] + "1924:1"; - splitString[100] = splitString[100] + "1937:10"; - splitString[101] = splitString[101] + "1921:6"; - splitString[102] = splitString[102] + "1941"; - splitString[103] = splitString[103] + "160:1"; - splitString[104] = splitString[104] + "1930:1"; - splitString[105] = splitString[105] + "1931:1"; - splitString[106] = splitString[106] + "1940"; - splitString[107] = splitString[107] + "162:2"; - splitString[108] = splitString[108] + "1930"; - splitString[109] = splitString[109] + "162:1"; - splitString[110] = splitString[110] + "1931"; - splitString[111] = splitString[111] + "1939"; - splitString[112] = splitString[112] + "1950"; - splitString[113] = splitString[113] + "1962:3"; - splitString[114] = splitString[114] + "1935"; - splitString[115] = splitString[115] + "1947:8"; - splitString[116] = splitString[116] + "1938:3"; - splitString[117] = splitString[117] + "1951"; - splitString[118] = splitString[118] + "1960"; - splitString[119] = splitString[119] + "1925:1"; - splitString[120] = splitString[120] + "169:1"; - splitString[121] = splitString[121] + "1925:5"; - splitString[122] = splitString[122] + "1921:1"; - splitString[123] = splitString[123] + "1920:5"; - splitString[124] = splitString[124] + "1921:11"; - splitString[125] = splitString[125] + "1921:10"; - splitString[126] = splitString[126] + "1932"; - splitString[127] = splitString[127] + "1921:8"; - splitString[128] = splitString[128] + "1924:3"; - splitString[129] = splitString[129] + "1937:12"; - splitString[130] = splitString[130] + "1921:7"; - splitString[131] = splitString[131] + "1950:1"; - splitString[132] = splitString[132] + "1922"; - splitString[133] = splitString[133] + "1962:4"; - splitString[134] = splitString[134] + "1935:1"; - splitString[135] = splitString[135] + "1947:9"; - splitString[136] = splitString[136] + "1938:4"; - splitString[137] = splitString[137] + "1951:1"; - splitString[138] = splitString[138] + "1961"; - splitString[139] = splitString[139] + "1923"; - splitString[140] = splitString[140] + "1937:1"; - - for (int i = 1; i < 141; ++i) - { - System.out.println(splitString[i]); - } - - try - { - Gui.progressBar.setValue(68); - TextFileWriter.write(); - } - catch (Exception e) - { - e.printStackTrace(); - } - } -} diff --git a/BOP Converter Patch Generator/src/Adubbz/CPGen/DirectoryFileFilter.java b/BOP Converter Patch Generator/src/Adubbz/CPGen/DirectoryFileFilter.java deleted file mode 100644 index e84beb9d7..000000000 --- a/BOP Converter Patch Generator/src/Adubbz/CPGen/DirectoryFileFilter.java +++ /dev/null @@ -1,26 +0,0 @@ -package Adubbz.CPGen; - -import java.io.File; - -import javax.swing.filechooser.FileFilter; - -public class DirectoryFileFilter extends FileFilter { - - public boolean accept(File file) - { - if (file.isDirectory()) - { - return true; - } - else - { - return false; - } - } - - @Override - public String getDescription() - { - return "Directories Only"; - } -} diff --git a/BOP Converter Patch Generator/src/Adubbz/CPGen/Gui.java b/BOP Converter Patch Generator/src/Adubbz/CPGen/Gui.java deleted file mode 100644 index bdcc6da69..000000000 --- a/BOP Converter Patch Generator/src/Adubbz/CPGen/Gui.java +++ /dev/null @@ -1,73 +0,0 @@ -package Adubbz.CPGen; - -import java.awt.BorderLayout; -import java.awt.Component; -import java.awt.FlowLayout; -import java.awt.Font; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import javax.swing.JButton; -import javax.swing.JFrame; -import javax.swing.JTextField; -import javax.swing.SwingConstants; -import javax.swing.JProgressBar; -import javax.swing.JLabel; -import com.jgoodies.forms.factories.DefaultComponentFactory; - -public class Gui extends JFrame { - - public static JFrame frame; - - public static JTextField textFieldImportConfig; - public static JTextField textFieldOutputPatch; - - public static JButton btnImportConfig = new JButton("Import Config"); - public static JButton btnOutputPatch = new JButton("Output Patch"); - public static JButton btnStart = new JButton("Start"); - - public static JProgressBar progressBar = new JProgressBar(); - - public Gui() { - getContentPane().setLayout(new BorderLayout()); - - frame = new JFrame("BOP Converter Patch Generator"); - frame.setBounds(100, 100, 556, 141); - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - frame.setResizable(false); - frame.getContentPane().setLayout(null); - - btnImportConfig.setBounds(425, 11, 115, 23); - frame.getContentPane().add(btnImportConfig); - - btnOutputPatch.setBounds(425, 45, 115, 23); - frame.getContentPane().add(btnOutputPatch); - - textFieldImportConfig = new JTextField(); - textFieldImportConfig.setBounds(10, 12, 405, 20); - frame.getContentPane().add(textFieldImportConfig); - textFieldImportConfig.setColumns(10); - textFieldImportConfig.setEditable(false); - - textFieldOutputPatch = new JTextField(); - textFieldOutputPatch.setBounds(10, 46, 405, 20); - frame.getContentPane().add(textFieldOutputPatch); - textFieldOutputPatch.setColumns(10); - textFieldOutputPatch.setEditable(false); - - btnStart.setBounds(425, 79, 115, 23); - frame.getContentPane().add(btnStart); - - progressBar.setBounds(10, 77, 405, 25); - progressBar.setStringPainted(true); - progressBar.setVisible(false); - frame.getContentPane().add(progressBar); - - ActionHandler handler = new ActionHandler(); - - btnImportConfig.addActionListener(handler); - btnOutputPatch.addActionListener(handler); - btnStart.addActionListener(handler); - } -} - diff --git a/BOP Converter Patch Generator/src/Adubbz/CPGen/Main.java b/BOP Converter Patch Generator/src/Adubbz/CPGen/Main.java deleted file mode 100644 index a0de3cc17..000000000 --- a/BOP Converter Patch Generator/src/Adubbz/CPGen/Main.java +++ /dev/null @@ -1,20 +0,0 @@ -package Adubbz.CPGen; - -import java.awt.EventQueue; - -public class Main { - - public static void main(String args []) - { - EventQueue.invokeLater(new Runnable() { - public void run() { - try { - Gui window = new Gui(); - window.frame.setVisible(true); - } catch (Exception e) { - e.printStackTrace(); - } - } - }); - } -} diff --git a/BOP Converter Patch Generator/src/Adubbz/CPGen/TextFileWriter.java b/BOP Converter Patch Generator/src/Adubbz/CPGen/TextFileWriter.java deleted file mode 100644 index 40b0ea12c..000000000 --- a/BOP Converter Patch Generator/src/Adubbz/CPGen/TextFileWriter.java +++ /dev/null @@ -1,63 +0,0 @@ -package Adubbz.CPGen; - -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileWriter; - -import javax.swing.JOptionPane; - -public class TextFileWriter { - - static int patchNo = 0; - static File newFile; - - public static void write() throws Exception - { - if (patchNo == 0) - { - newFile = new File(ActionHandler.outputPatchSelectedFile.toString() + "/Patch.txt"); - } - else - { - newFile = new File(ActionHandler.outputPatchSelectedFile.toString() + "/Patch" + patchNo + ".txt"); - } - - if (newFile.exists()) - { - System.out.println("The file already exists, adding number..."); - patchNo++; - write(); - } - else - { - newFile.createNewFile(); - create(); - } - } - - private static void create() throws Exception - { - Gui.progressBar.setValue(85); - - FileWriter fileWriter = new FileWriter(newFile); - BufferedWriter bufferedWriter = new BufferedWriter(fileWriter); - - for (int i = 1; i < 141; ++i) - { - bufferedWriter.write(ConfigTextFilter.splitString[i]); - bufferedWriter.newLine(); - } - - bufferedWriter.close(); - - Gui.progressBar.setValue(100); - - System.out.println("File Written to " + newFile); - - JOptionPane.showMessageDialog(null, "Done!", null, JOptionPane.INFORMATION_MESSAGE); - if (JOptionPane.OK_OPTION == 1); - { - Gui.progressBar.setVisible(false); - } - } -} diff --git a/README.md b/README.md deleted file mode 100644 index 812a23e71..000000000 --- a/README.md +++ /dev/null @@ -1,150 +0,0 @@ -## Authors - -- **Adubbz** - Madman - -- **Amnet** - Foreign Affairs - -- **ted80** - Biome Fanatic - -## Credits ## - -- **Forstride** - Original creator - -- **gamax92** - -- **enchilado** - -- **Tim Rurkowski** - Music author - -## World Conversion## -As of Biomes O Plenty 0.5.2, changes have been made so that the number of block ids used by the mod are drastically reduced. However, as a side-effect of these changes, existing worlds will no longer work. - -However, thanks to a little Java application I (Adubbz) whipped up, as well as the lovely folks who made Midas gold, this should hopefully be easy. - - ----------- - -1. Backup your world - -2. Grab a copy of the Converter Patch Generator from here: - - [https://github.com/ted80/BiomesOPlenty/tree/master/BOP%20Converter%20Patch%20Generator](https://github.com/ted80/BiomesOPlenty/tree/master/BOP%20Converter%20Patch%20Generator) (Click on the jar file and then 'View Raw' to download it) - -3. Grab a copy of Midas Gold from here: - - [https://code.google.com/p/midas-gold/downloads/list](https://code.google.com/p/midas-gold/downloads/list) - -4. Extract Midas Gold. - -5. Launch the Converter Patch Generator. - -6. Click on "Import Config" and select your old Biomes O Plenty config file. - -7. Click on "Output Patch" and choose where you want the patch file to be outputted to. - -8. Hit "Start". - -9. Launch the Midas Gold jar file. - -10. Click on "Add Savegame" and select the folder of the world you want converted. - -11. Click on "Load Patch File" and select the patch file created by the Converter Patch Generator. - -12. Hit start! - -13. You're done :) - ----------- - - - -## Changelog ## - Version 0.5.2 (Unreleased) - - Added an API for other mod developers - - Added support for Biomes O Plenty woods in Thermal Expansion sawmills - - Significantly compressed the amount of Block IDs used, however breaks existing worlds - - Updated to the latest Forge - - Changed various things to use IShearable - - Changed default biome ids to be compatible with Mo Creatures - - Made a proper fix for achievements and made them enabled by default (The config option is still there though for those that want it) - - Added Better World Generation 4 support - - Made shears instantly destroy Biomes O Plenty leaves - - Adjusted high grass hitbox to cover both blocks - - Fixed an issue causing sound files to be created on the desktop - - Biomes O Plenty saplings now work in the Forestry fermenter - - Biomes O Plenty flowers can now be used with bees - - Gave the different types Autumn and Cherry Leaves their own names - - Added Biome Dictionary support - - Added seeds on destroyed Biomes O Plenty grasses - - Carrots and potatoes now have a chance (1%) to be dropped from sprouts - - Added a random drop of apples when destroying apple leaves - - Added flowers to plants created on bonemeal use - - Tweaked the recipe for bamboo thatching - - Bamboo now acts as sticks - - Hopefully fixed saplings once and for all - - Added hardcoded foliage colours - - Added configurable spawn distance between villages in the BOP world type - - Added more biomes for villages to spawn in - - Tweaked cattail generation - - Renamed the texture files to reflect the in-game names - - You can now have different textures for the heart of every log - - Added Thaumcraft compatibility - - Updated the regular BOP music disc file (courtesy of Forstride), may require deleting the old bopdisc.ogg to take effect - - Allowed Forestry beehives to spawn on Biomes O Plenty certain blocks - - Fixed registering biomes for world types - BOP biomes now accessible in Large Biomes World Type - - Version 0.5.1 '17-04-2013' - - Fixed server crash with mudballs - - Fixed Forestry beehives spawning, as well as giving biomes appropriate temperatures - - Removed wrong recipe for mossy cobblestone - - Added bamboo saplings - - Bonemeal now creates the appropriate giant flowers when used on red and yellow flowers - - Changed default biome ids - - Fixed sapling bugs - - Version 0.5.0 '09-04-2013' - - Desert sprouts and Dune Grass now require shears to be harvested - - Added alpha beaches to origin valley biome - - You can now throw Mudballs to deal 1/2 heart of damage - - Entities get the slowness potion effect when hit by mudballs - - Mud balls can now be fired from dispensers - - Resources now only install client-side - - Fixed bonemeal on Origin Saplings - - Bonemeal now only reacts to mangrove saplings when they are on sand - - Fixed bonemeal and holy grass dependancies on Holy and Magic saplings - - Changed the leaves blocks to use the IShearable interface - - Made the enderporter only work in the overworld - - Fixed the textures for logs to display according to their orientation - - Adding Leaves, Saplings, Stairs and Slabs to Ore Dictionary - - Fixed crash on right clicking on slabs with nothing in your hand - - Fixed trees not generating in the Mystic grove - - Fixed placing Moss, TreeMoss and Willow - - Fixed a bug with Promised Lands not using the ID from the config file - - Version 0.4.9 '03-04-2013' - - Tools actually have the properties of the tools they are meant to be (they used to all think they are swords) - - Ore dictionary support for wood - - Added a temporary fix for the Ach Flower issue in the form of a config option for achievements - - Fancier message upon creation of The Promised Lands - - No more duplicate chat messages on creating the Promised Lands - - You can no longer create an infinite endstone supply from spamming Promised Lands portals - - Holy Tall grass no longer drops itself without using shears - - Fixed things wrongly having wooden footstep sounds - - Saplings now use the new bonemeal system added by Minecraft 1.5 - - Bonemeal now creates Holy Tall Grass when used on Holy Grass - - Fixed slabs not stacking - - Fixed leaf decay - - Fixed tool effectiveness on various blocks - - Gave smoldering grass and ash their expected behaviours; burn on contact (smoldering grass) and slowness (ash) - - Holy and magic saplings will only grow on Holy Grass - - Holy Grass burns up into Soulsand in the Nether - - Fixed axe recipes - - Removed unnecessary recipes for hoes - - Version 0.4.8 '31-03-2013' - - Fixed smoldering grass texture - - Fixed flower achievement? - - Fixed Giant red flower texture - - Version 0.4.7 '30-03-2013' - - Updated to Minecraft 1.5.1 diff --git a/Wanted Mod Compatibility.txt b/Wanted Mod Compatibility.txt deleted file mode 100644 index 0b814cddd..000000000 --- a/Wanted Mod Compatibility.txt +++ /dev/null @@ -1,5 +0,0 @@ -1. Thaumcraft - In Progress -2. Ars Magica -3. Thermal Expansion - Woods in sawmill - DONE -4. Forestry - Wood in backpacks - In Progress -5. Better World Generation 4 - In Progress diff --git a/src/minecraft/biomesoplenty/BiomesOPlenty.java b/src/minecraft/biomesoplenty/BiomesOPlenty.java deleted file mode 100644 index 027b98d9d..000000000 --- a/src/minecraft/biomesoplenty/BiomesOPlenty.java +++ /dev/null @@ -1,138 +0,0 @@ -package biomesoplenty; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.logging.Level; - -import net.minecraft.client.Minecraft; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraftforge.common.DimensionManager; -import net.minecraftforge.common.MinecraftForge; -import biomesoplenty.api.BlockReferences; -import biomesoplenty.configuration.BOPBiomes; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.configuration.BOPConfiguration; -import biomesoplenty.configuration.BOPCrafting; -import biomesoplenty.configuration.BOPEntities; -import biomesoplenty.configuration.BOPItems; -import biomesoplenty.configuration.BOPVanillaCompat; -import biomesoplenty.helpers.AchievementHelper; -import biomesoplenty.helpers.BonemealUse; -import biomesoplenty.helpers.CreativeTabsBOP; -import biomesoplenty.helpers.WorldProviderPromised; -import biomesoplenty.helpers.WorldTypeSize; -import biomesoplenty.integration.BOPCrossIntegration; -import biomesoplenty.integration.ThaumcraftIntegration; -import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.common.Loader; -import cpw.mods.fml.common.Mod; -import cpw.mods.fml.common.Mod.Init; -import cpw.mods.fml.common.Mod.Instance; -import cpw.mods.fml.common.Mod.PreInit; -import cpw.mods.fml.common.SidedProxy; -import cpw.mods.fml.common.event.FMLInitializationEvent; -import cpw.mods.fml.common.event.FMLPostInitializationEvent; -import cpw.mods.fml.common.event.FMLPreInitializationEvent; -import cpw.mods.fml.common.network.NetworkMod; -import cpw.mods.fml.common.registry.LanguageRegistry; - -@Mod(modid="BiomesOPlenty", name="Biomes O' Plenty", version="0.5.2") -@NetworkMod(clientSideRequired=true, serverSideRequired=false) -public class BiomesOPlenty -{ - //The rudder moves when I turn the wheel - // The instance of your mod that Forge uses. - @Instance("BiomesOPlenty") - public static BiomesOPlenty instance; - - // Says where the client and server 'proxy' code is loaded. - @SidedProxy(clientSide="biomesoplenty.ClientProxy", serverSide="biomesoplenty.CommonProxy") - public static CommonProxy proxy; - - public static CreativeTabs tabBiomesOPlenty; - - @PreInit - public void preInit(FMLPreInitializationEvent event) - { - boolean isClient = proxy instanceof ClientProxy; - - String[] soundFiles = { "bopdisc.ogg", "bopdiscmud.ogg"}; - - if (isClient) - { - for (String soundFile : soundFiles) try - { - File file = new File(Minecraft.getMinecraftDir().getAbsolutePath() + "/resources/mod/streaming/" + soundFile); - if (!file.exists()) { - System.out.println("[BiomesOPlenty] " + soundFile + " doesn't exist, creating..."); - file.getParentFile().mkdirs(); - file.createNewFile(); - InputStream istream = getClass().getResourceAsStream("/mods/BiomesOPlenty/audio/" + soundFile); - OutputStream out = new FileOutputStream(file); - byte[] buf = new byte[1024]; - int size = 0; - int len; - while ((len = istream.read(buf)) > 0) { - out.write(buf, 0, len); - size += len; - } - out.close(); - istream.close(); - if (size == 0) file.delete(); - } - } - catch (Exception e) - { - FMLCommonHandler.instance().getFMLLogger().log(Level.WARNING, "[BiomesOPlenty] Failed to load sound file: " + soundFile); - e.printStackTrace(); - } - } - - BOPConfiguration.init(event.getSuggestedConfigurationFile()); - - tabBiomesOPlenty = new CreativeTabsBOP(CreativeTabs.getNextID(),"tabBiomesOPlenty"); - - BOPBlocks.init(); - - BOPItems.init(); - - BOPCrafting.init(); - - BOPBiomes.init(); - - BOPEntities.init(); - - BOPVanillaCompat.init(); - - // Achievement declaration - if (BOPConfiguration.achievements == true) - { - AchievementHelper.init(); - } - } - - @Init - public void load(FMLInitializationEvent event) - { - LanguageRegistry.instance().addStringLocalization("itemGroup.tabBiomesOPlenty", "en_US", "Biomes O\' Plenty"); - LanguageRegistry.instance().addStringLocalization("generator.BIOMESOP", "en_US", "Biomes O\' Plenty"); - - // Add helpers for compatibility - MinecraftForge.TERRAIN_GEN_BUS.register(new WorldTypeSize()); - MinecraftForge.EVENT_BUS.register(new AchievementHelper()); - MinecraftForge.EVENT_BUS.register(new BonemealUse()); - - proxy.registerRenderers(); - - DimensionManager.registerProviderType(BOPConfiguration.promisedLandDimID, WorldProviderPromised.class, false); - DimensionManager.registerDimension(BOPConfiguration.promisedLandDimID, BOPConfiguration.promisedLandDimID); - - BOPCrossIntegration.init(); - } - - public void postInit(FMLPostInitializationEvent event) - { - } -} \ No newline at end of file diff --git a/src/minecraft/biomesoplenty/ClientProxy.java b/src/minecraft/biomesoplenty/ClientProxy.java deleted file mode 100644 index 6d6f2f585..000000000 --- a/src/minecraft/biomesoplenty/ClientProxy.java +++ /dev/null @@ -1,47 +0,0 @@ -package biomesoplenty; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.particle.EntityBreakingFX; -import net.minecraft.client.particle.EntityFX; -import net.minecraft.client.renderer.entity.RenderSnowball; -import net.minecraft.world.World; -import net.minecraftforge.client.MinecraftForgeClient; -import biomesoplenty.api.Items; -import biomesoplenty.blocks.renderers.FoliageRenderer; -import biomesoplenty.blocks.renderers.PlantsRenderer; -import biomesoplenty.items.projectiles.EntityMudball; -import cpw.mods.fml.client.registry.RenderingRegistry; - -public class ClientProxy extends CommonProxy { - - public static Minecraft mc = Minecraft.getMinecraft(); - - @Override - public void registerRenderers() - { - MinecraftForgeClient.preloadTexture(ARMOR_MUD1_PNG); - MinecraftForgeClient.preloadTexture(ARMOR_MUD2_PNG); - MinecraftForgeClient.preloadTexture(ARMOR_AMETHYST1_PNG); - MinecraftForgeClient.preloadTexture(ARMOR_AMETHYST2_PNG); - - RenderingRegistry.registerEntityRenderingHandler(EntityMudball.class, new RenderSnowball(Items.mudball.get(), 0)); - - RenderingRegistry.registerBlockHandler(new FoliageRenderer()); - RenderingRegistry.registerBlockHandler(new PlantsRenderer()); - } - - @Override - public void spawnMud(World world, double x, double y, double z, double xVel, double yVel, double zVel) - { - EntityFX entityfx = null; - - entityfx = new EntityBreakingFX(mc.theWorld, x, y, z, Items.mudball.get(), mc.renderEngine); - mc.effectRenderer.addEffect(entityfx); - } - - @Override - public int addArmor(String armor) - { - return RenderingRegistry.addNewArmourRendererPrefix(armor); - } -} \ No newline at end of file diff --git a/src/minecraft/biomesoplenty/CommonProxy.java b/src/minecraft/biomesoplenty/CommonProxy.java deleted file mode 100644 index 2d8d072d9..000000000 --- a/src/minecraft/biomesoplenty/CommonProxy.java +++ /dev/null @@ -1,25 +0,0 @@ -package biomesoplenty; - -import net.minecraft.world.World; - -public class CommonProxy { - public static String ARMOR_MUD1_PNG = "/mods/BiomesOPlenty/textures/armor/mud_1.png"; - public static String ARMOR_MUD2_PNG = "/mods/BiomesOPlenty/textures/armor/mud_2.png"; - public static String ARMOR_AMETHYST1_PNG = "/mods/BiomesOPlenty/textures/armor/amethyst_1.png"; - public static String ARMOR_AMETHYST2_PNG = "/mods/BiomesOPlenty/textures/armor/amethyst_2.png"; - - // Client stuff - public void registerRenderers() { - // Nothing here as the server doesn't render graphics! - } - - public int addArmor(String armor) - { - return 0; - } - - public void spawnMud(World world, double x, double y, double z, double xVel, double yVel, double zVel) - { - - } -} \ No newline at end of file diff --git a/src/minecraft/biomesoplenty/api/Biomes.java b/src/minecraft/biomesoplenty/api/Biomes.java deleted file mode 100644 index 4308eb9b5..000000000 --- a/src/minecraft/biomesoplenty/api/Biomes.java +++ /dev/null @@ -1,89 +0,0 @@ -package biomesoplenty.api; - -import net.minecraft.world.biome.BiomeGenBase; - -import com.google.common.base.Optional; - -public class Biomes -{ - public static Optional alps = Optional.absent(); - public static Optional arctic = Optional.absent(); - public static Optional badlands = Optional.absent(); - public static Optional bambooForest = Optional.absent(); - public static Optional bayou = Optional.absent(); - public static Optional birchForest = Optional.absent(); - public static Optional bog = Optional.absent(); - public static Optional borealForest = Optional.absent(); - public static Optional canyon = Optional.absent(); - public static Optional chaparral = Optional.absent(); - public static Optional cherryBlossomGrove = Optional.absent(); - public static Optional coniferousForest = Optional.absent(); - public static Optional crag = Optional.absent(); - public static Optional deadForest = Optional.absent(); - public static Optional deadSwamp = Optional.absent(); - public static Optional deadlands = Optional.absent(); - public static Optional deciduousForest = Optional.absent(); - public static Optional drylands = Optional.absent(); - public static Optional dunes = Optional.absent(); - public static Optional fen = Optional.absent(); - public static Optional field = Optional.absent(); - public static Optional frostForest = Optional.absent(); - public static Optional fungiForest = Optional.absent(); - public static Optional garden = Optional.absent(); - public static Optional glacier = Optional.absent(); - public static Optional grassland = Optional.absent(); - public static Optional grove = Optional.absent(); - public static Optional heathland = Optional.absent(); - public static Optional highland = Optional.absent(); - public static Optional iceSheet = Optional.absent(); - public static Optional icyHills = Optional.absent(); - public static Optional jadeCliffs = Optional.absent(); - public static Optional lushDesert = Optional.absent(); - public static Optional lushSwamp = Optional.absent(); - public static Optional mangrove = Optional.absent(); - public static Optional mapleWoods = Optional.absent(); - public static Optional marsh = Optional.absent(); - public static Optional meadow = Optional.absent(); - public static Optional mesa = Optional.absent(); - public static Optional moor = Optional.absent(); - public static Optional mountain = Optional.absent(); - public static Optional mysticGrove = Optional.absent(); - public static Optional oasis = Optional.absent(); - public static Optional ominousWoods = Optional.absent(); - public static Optional orchard = Optional.absent(); - public static Optional originValley = Optional.absent(); - public static Optional outback = Optional.absent(); - public static Optional pasture = Optional.absent(); - public static Optional prairie = Optional.absent(); - public static Optional promisedLand = Optional.absent(); - public static Optional quagmire = Optional.absent(); - public static Optional rainforest = Optional.absent(); - public static Optional redwoodForest = Optional.absent(); - public static Optional sacredSprings = Optional.absent(); - public static Optional savanna = Optional.absent(); - public static Optional scrubland = Optional.absent(); - public static Optional seasonalForest = Optional.absent(); - public static Optional shield = Optional.absent(); - public static Optional shore = Optional.absent(); - public static Optional shrubland = Optional.absent(); - public static Optional snowyWoods = Optional.absent(); - public static Optional spruceWoods = Optional.absent(); - public static Optional steppe = Optional.absent(); - public static Optional swampwoods = Optional.absent(); - public static Optional temperateRainforest = Optional.absent(); - public static Optional thicket = Optional.absent(); - public static Optional tropicalRainforest = Optional.absent(); - public static Optional tropics = Optional.absent(); - public static Optional tundra = Optional.absent(); - public static Optional volcano = Optional.absent(); - public static Optional wasteland = Optional.absent(); - public static Optional wetland = Optional.absent(); - public static Optional woodland = Optional.absent(); - public static Optional plainsNew = Optional.absent(); - public static Optional desertNew = Optional.absent(); - public static Optional extremeHillsNew = Optional.absent(); - public static Optional forestNew = Optional.absent(); - public static Optional taigaNew = Optional.absent(); - public static Optional swamplandNew = Optional.absent(); - public static Optional jungleNew = Optional.absent(); -} diff --git a/src/minecraft/biomesoplenty/api/BlockReferences.java b/src/minecraft/biomesoplenty/api/BlockReferences.java deleted file mode 100644 index a95b4abae..000000000 --- a/src/minecraft/biomesoplenty/api/BlockReferences.java +++ /dev/null @@ -1,180 +0,0 @@ -package biomesoplenty.api; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; - - -import com.google.common.base.Optional; - -public class BlockReferences { - - public static enum EnumBlocks - { - acaciaLog (Blocks.logs1, 0), - cherryLog (Blocks.logs1, 1), - darkLog (Blocks.logs1, 2), - firLog (Blocks.logs1, 3), - holyLog (Blocks.logs2, 0), - magicLog (Blocks.logs2, 1), - mangroveLog (Blocks.logs2, 2), - palmLog (Blocks.logs2, 3), - redwoodLog (Blocks.logs3, 0), - willowLog (Blocks.logs3, 1), - deadLog (Blocks.logs3, 2), - bigFlowerStem (Blocks.logs3, 3), - - acaciaPlank (Blocks.planks, 0), - cherryPlank (Blocks.planks, 1), - darkPlank (Blocks.planks, 2), - firPlank (Blocks.planks, 3), - holyPlank (Blocks.planks, 4), - magicPlank (Blocks.planks, 5), - mangrovePlank (Blocks.planks, 6), - palmPlank (Blocks.planks, 7), - redwoodPlank (Blocks.planks, 8), - willowPlank (Blocks.planks, 9), - bambooThatching (Blocks.planks, 10), - - acaciaLeaves (Blocks.leavesColorized, 0), - mangroveLeaves (Blocks.leavesColorized, 1), - palmLeaves (Blocks.leavesColorized, 2), - redwoodLeaves (Blocks.leavesColorized, 3), - willowLeaves (Blocks.leavesColorized, 4), - - yellowAutumnLeaves (Blocks.leaves1, 0), - bambooLeaves (Blocks.leaves1, 1), - magicLeaves (Blocks.leaves1, 2), - darkLeaves (Blocks.leaves1, 3), - deadLeaves (Blocks.leaves1, 4), - firLeaves (Blocks.leaves1, 5), - holyLeaves (Blocks.leaves1, 6), - orangeAutumnLeaves (Blocks.leaves1, 7), - originLeaves (Blocks.leaves2, 0), - pinkCherryLeaves (Blocks.leaves2, 1), - mapleLeaves (Blocks.leaves2, 2), - whiteCherryLeaves (Blocks.leaves2, 3), - - appleLeaves (Blocks.leavesFruit, 3), - appleLeavesFruitless (Blocks.leavesFruit, 0), - - bamboo (Blocks.bamboo, 0), - - barley (Blocks.plants, 6), - cattail (Blocks.plants, 7), - - sproutItem (Blocks.foliage, 5), - bushItem (Blocks.foliage, 4), - highGrassItem (Blocks.foliage, 3), - mediumGrassItem (Blocks.foliage, 2), - shortGrassItem (Blocks.foliage, 1), - algae (Blocks.foliage, 0), - - holySapling (Blocks.saplings, 7), - magicSapling (Blocks.saplings, 3), - darkSapling (Blocks.saplings, 4), - deadSapling (Blocks.saplings, 5), - acaciaSapling (Blocks.colorizedSaplings, 0), - firSapling (Blocks.saplings, 6), - mangroveSapling (Blocks.colorizedSaplings, 1), - palmSapling (Blocks.colorizedSaplings, 2), - redwoodSapling (Blocks.colorizedSaplings, 3), - willowSapling (Blocks.colorizedSaplings, 4), - mapleSapling (Blocks.saplings, 11), - orangeAutumnSapling (Blocks.saplings, 8), - pinkCherrySapling (Blocks.saplings, 10), - whiteCherrySapling (Blocks.saplings, 12), - appleSapling (Blocks.saplings, 0), - originSapling (Blocks.saplings, 9), - yellowAutumnSapling (Blocks.saplings, 1), - bambooSapling (Blocks.saplings, 2), - - mud (Blocks.mud, 0), - driedDirt (Blocks.driedDirt, 0), - redRock (Blocks.redRock, 0), - ash (Blocks.ash, 0), - ashStone (Blocks.ashStone, 0), - hardIce (Blocks.hardIce, 0), - originGrass (Blocks.originGrass, 0), - hardSand (Blocks.hardSand, 0), - hardDirt (Blocks.hardDirt, 0), - holyGrass (Blocks.holyGrass, 0), - holyStone (Blocks.holyStone, 0), - cragRock (Blocks.cragRock, 0), - quicksand (Blocks.mud, 1), - smolderingGrass (Blocks.holyGrass, 1), - amethystBlock (Blocks.amethystOre, 1), - amethystOre (Blocks.amethystOre, 0), - redRockCobble (Blocks.redRock, 1), - giantFlowerRed (Blocks.petals, 0), - giantFlowerYellow (Blocks.petals, 1), - - toadstool (Blocks.flowers, 10), - tinyCactus (Blocks.flowers, 11), - holyTallGrass (Blocks.plants, 4), - desertSprouts (Blocks.plants, 2), - duneGrass (Blocks.plants, 3), - thorn (Blocks.plants, 5), - desertGrass (Blocks.plants, 1), - deadGrass (Blocks.plants, 0), - treeMoss (Blocks.treeMoss, 0), - moss (Blocks.moss, 0), - willow (Blocks.willow, 0), - - violet (Blocks.flowers, 8), - hydrangea (Blocks.flowers, 4), - deathbloom (Blocks.flowers, 2), - glowFlower (Blocks.flowers, 3), - anenome (Blocks.flowers, 9), - swampFlower (Blocks.flowers, 1), - wildFlower (Blocks.flowers, 7), - daisy (Blocks.flowers, 5), - tulip (Blocks.flowers, 6), - clover (Blocks.flowers, 0), - ; - - public Optional block; - public int meta; - - private EnumBlocks(Optional block, int meta) { - this.block = block; - this.meta = meta; - } - - public Optional getBlock() { - return block; - } - - public int getMeta() { - return meta; - } - } - - public static ItemStack getBlockItemStack(String string) - { - Optional stackblock = EnumBlocks.valueOf(string).block; - int stackmeta = EnumBlocks.valueOf(string).meta; - - if (stackmeta != 0) - { - return new ItemStack(stackblock.get(), 1, stackmeta); - } - else - { - return new ItemStack(stackblock.get(), 1); - } - } - - public static int getBlockID(String string) - { - Optional stackblock = EnumBlocks.valueOf(string).block; - - return stackblock.get().blockID; - } - - public static int getBlockMeta(String string) - { - int stackmeta = EnumBlocks.valueOf(string).meta; - - return stackmeta; - } -} diff --git a/src/minecraft/biomesoplenty/api/Blocks.java b/src/minecraft/biomesoplenty/api/Blocks.java deleted file mode 100644 index dbb53b89e..000000000 --- a/src/minecraft/biomesoplenty/api/Blocks.java +++ /dev/null @@ -1,87 +0,0 @@ -package biomesoplenty.api; - -import java.util.HashMap; -import java.util.Map; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockHalfSlab; - -import com.google.common.base.Optional; - -public class Blocks -{ - // Worldgen Blocks - public static Optional ash = Optional.absent(); - public static Optional ashStone = Optional.absent(); - public static Optional cragRock = Optional.absent(); - public static Optional driedDirt = Optional.absent(); - public static Optional hardDirt = Optional.absent(); - public static Optional hardIce = Optional.absent(); - public static Optional hardSand = Optional.absent(); - public static Optional holyGrass = Optional.absent(); - public static Optional holyStone = Optional.absent(); - public static Optional mud = Optional.absent(); - public static Optional originGrass = Optional.absent(); - public static Optional redRock = Optional.absent(); - - // Planks and logs - public static Optional planks = Optional.absent(); - public static Optional logs1 = Optional.absent(); - public static Optional logs2 = Optional.absent(); - public static Optional logs3 = Optional.absent(); - - // Stairs - public static Optional acaciaStairs = Optional.absent(); - public static Optional cherryStairs = Optional.absent(); - public static Optional darkStairs = Optional.absent(); - public static Optional firStairs = Optional.absent(); - public static Optional holyStairs = Optional.absent(); - public static Optional magicStairs = Optional.absent(); - public static Optional mangroveStairs = Optional.absent(); - public static Optional palmStairs = Optional.absent(); - public static Optional redwoodStairs = Optional.absent(); - public static Optional willowStairs = Optional.absent(); - public static Optional redCobbleStairs = Optional.absent(); - public static Optional redBricksStairs = Optional.absent(); - public static Optional mudBricksStairs = Optional.absent(); - - // Slabs - public static Optional woodenSingleSlab1 = Optional.absent(); - public static Optional woodenDoubleSlab1 = Optional.absent(); - public static Optional woodenSingleSlab2 = Optional.absent(); - public static Optional woodenDoubleSlab2 = Optional.absent(); - public static Optional stoneSingleSlab = Optional.absent(); - public static Optional stoneDoubleSlab = Optional.absent(); - - // Plants - public static Optional flowers = Optional.absent(); - public static Optional leaves1 = Optional.absent(); - public static Optional leaves2 = Optional.absent(); - public static Optional leavesColorized = Optional.absent(); - public static Optional leavesFruit = Optional.absent(); - public static Optional foliage = Optional.absent(); - public static Optional plants = Optional.absent(); - public static Optional flatPlants = Optional.absent(); - public static Optional saplings = Optional.absent(); - public static Optional colorizedSaplings = Optional.absent(); - public static Optional willow = Optional.absent(); - public static Optional treeMoss = Optional.absent(); - public static Optional moss = Optional.absent(); - public static Optional petals = Optional.absent(); - public static Optional bamboo = Optional.absent(); - -// public static Optional amethystBlock = Optional.absent(); - public static Optional amethystOre = Optional.absent(); -// public static Optional bambooThatching = Optional.absent(); - public static Optional mudBrick = Optional.absent(); -// public static Optional smolderingGrass = Optional.absent(); -// public static Optional quicksand = Optional.absent(); -// public static Optional grass = Optional.absent(); - - public static Optional promisedPortal = Optional.absent(); - - /** - * Populated by Biomes O Plenty with default Biomes O Plenty leaves. Add additional leaves here (E.g. "Blocks.shearBlockIds.put(acaciaLeaves.blockID, 15.0F);") - */ - public static Map shearBlockIds = new HashMap(); -} diff --git a/src/minecraft/biomesoplenty/api/Entities.java b/src/minecraft/biomesoplenty/api/Entities.java deleted file mode 100644 index 3417d72ed..000000000 --- a/src/minecraft/biomesoplenty/api/Entities.java +++ /dev/null @@ -1,22 +0,0 @@ -package biomesoplenty.api; - -public class Entities { - - public static Class Mudball = getClass("biomesoplenty.items.projectiles.EntityMudball"); - public static Class JungleSpider = getClass("biomesoplenty.mobs.EntityJungleSpider"); - public static Class Rosester = getClass("biomesoplenty.mobs.EntityRosester"); - - public static Class getClass(String inputstring) - { - Class foundclass = null; - try - { - foundclass = Class.forName(inputstring); - } - catch (ClassNotFoundException e) - { - e.printStackTrace(); - } - return foundclass; - } -} diff --git a/src/minecraft/biomesoplenty/api/Items.java b/src/minecraft/biomesoplenty/api/Items.java deleted file mode 100644 index 07529dab4..000000000 --- a/src/minecraft/biomesoplenty/api/Items.java +++ /dev/null @@ -1,37 +0,0 @@ -package biomesoplenty.api; - -import net.minecraft.item.Item; - -import com.google.common.base.Optional; - -public class Items -{ - public static Optional bopDisc = Optional.absent(); - public static Optional bopDiscMud = Optional.absent(); - - public static Optional swordMud = Optional.absent(); - public static Optional shovelMud = Optional.absent(); - public static Optional pickaxeMud = Optional.absent(); - public static Optional axeMud = Optional.absent(); - public static Optional hoeMud = Optional.absent(); - public static Optional helmetMud = Optional.absent(); - public static Optional chestplateMud = Optional.absent(); - public static Optional leggingsMud = Optional.absent(); - public static Optional bootsMud = Optional.absent(); - - public static Optional swordAmethyst = Optional.absent(); - public static Optional shovelAmethyst = Optional.absent(); - public static Optional pickaxeAmethyst = Optional.absent(); - public static Optional axeAmethyst = Optional.absent(); - public static Optional hoeAmethyst = Optional.absent(); - public static Optional helmetAmethyst = Optional.absent(); - public static Optional chestplateAmethyst = Optional.absent(); - public static Optional leggingsAmethyst = Optional.absent(); - public static Optional bootsAmethyst = Optional.absent(); - - public static Optional ancientStaff = Optional.absent(); - public static Optional enderporter = Optional.absent(); - public static Optional shroomPowder = Optional.absent(); - public static Optional miscItems = Optional.absent(); - public static Optional mudball = Optional.absent(); -} diff --git a/src/minecraft/biomesoplenty/armor/ArmorAmethyst.java b/src/minecraft/biomesoplenty/armor/ArmorAmethyst.java deleted file mode 100644 index e5b066c88..000000000 --- a/src/minecraft/biomesoplenty/armor/ArmorAmethyst.java +++ /dev/null @@ -1,40 +0,0 @@ -package biomesoplenty.armor; - -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.item.EnumArmorMaterial; -import net.minecraft.item.ItemArmor; -import net.minecraft.item.ItemStack; -import net.minecraftforge.common.IArmorTextureProvider; -import biomesoplenty.BiomesOPlenty; -import biomesoplenty.CommonProxy; -import biomesoplenty.api.Items; - -public class ArmorAmethyst extends ItemArmor implements IArmorTextureProvider -{ - public int textureID = 0; - - public ArmorAmethyst(int par1, EnumArmorMaterial par2EnumArmorMaterial, int par3, int par4) { - super(par1, par2EnumArmorMaterial, par3, par4); - textureID = par4; - setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - public String getArmorTextureFile(ItemStack par1) { - if(par1.itemID == Items.helmetAmethyst.get().itemID||par1.itemID == Items.chestplateAmethyst.get().itemID||par1.itemID == Items.bootsAmethyst.get().itemID){ - return CommonProxy.ARMOR_AMETHYST1_PNG; - } - if(par1.itemID == Items.leggingsAmethyst.get().itemID){ - return CommonProxy.ARMOR_AMETHYST2_PNG; - } - return null; - } - - public void registerIcons(IconRegister iconRegister) - { - if(textureID==0){ itemIcon = iconRegister.registerIcon("BiomesOPlenty:amethysthelmet"); } - else if(textureID==1){ itemIcon = iconRegister.registerIcon("BiomesOPlenty:amethystchestplate"); } - else if(textureID==2){ itemIcon = iconRegister.registerIcon("BiomesOPlenty:amethystleggings"); } - else if(textureID==3){ itemIcon = iconRegister.registerIcon("BiomesOPlenty:amethystboots"); } - else { itemIcon = iconRegister.registerIcon("BiomesOPlenty:mudball"); } - } -} diff --git a/src/minecraft/biomesoplenty/armor/ArmorMuddy.java b/src/minecraft/biomesoplenty/armor/ArmorMuddy.java deleted file mode 100644 index 4b42cf750..000000000 --- a/src/minecraft/biomesoplenty/armor/ArmorMuddy.java +++ /dev/null @@ -1,40 +0,0 @@ -package biomesoplenty.armor; - -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.item.EnumArmorMaterial; -import net.minecraft.item.ItemArmor; -import net.minecraft.item.ItemStack; -import net.minecraftforge.common.IArmorTextureProvider; -import biomesoplenty.BiomesOPlenty; -import biomesoplenty.CommonProxy; -import biomesoplenty.api.Items; - -public class ArmorMuddy extends ItemArmor implements IArmorTextureProvider -{ - public int textureID = 0; - - public ArmorMuddy(int par1, EnumArmorMaterial par2EnumArmorMaterial, int par3, int par4) { - super(par1, par2EnumArmorMaterial, par3, par4); - textureID = par4; - setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - public String getArmorTextureFile(ItemStack par1) { - if(par1.itemID == Items.helmetMud.get().itemID||par1.itemID == Items.chestplateMud.get().itemID||par1.itemID == Items.bootsMud.get().itemID){ - return CommonProxy.ARMOR_MUD1_PNG; - } - if(par1.itemID == Items.leggingsMud.get().itemID){ - return CommonProxy.ARMOR_MUD2_PNG; - } - return null; - } - - public void registerIcons(IconRegister iconRegister) - { - if(textureID==0){ itemIcon = iconRegister.registerIcon("BiomesOPlenty:mudhelmet"); } - else if(textureID==1){ itemIcon = iconRegister.registerIcon("BiomesOPlenty:mudchestplate"); } - else if(textureID==2){ itemIcon = iconRegister.registerIcon("BiomesOPlenty:mudleggings"); } - else if(textureID==3){ itemIcon = iconRegister.registerIcon("BiomesOPlenty:mudboots"); } - else { itemIcon = iconRegister.registerIcon("BiomesOPlenty:mudball"); } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeDecoratorBOP.java b/src/minecraft/biomesoplenty/biomes/BiomeDecoratorBOP.java deleted file mode 100644 index efab98f03..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeDecoratorBOP.java +++ /dev/null @@ -1,1178 +0,0 @@ -package biomesoplenty.biomes; - -import static net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.BIG_SHROOM; -import static net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.CLAY; -import static net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.DEAD_BUSH; -import static net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.FLOWERS; -import static net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.GRASS; -import static net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.LILYPAD; -import static net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.REED; -import static net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.SAND; -import static net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.SAND_PASS2; -import static net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.SHROOM; -import static net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.TREE; -import static net.minecraftforge.event.terraingen.OreGenEvent.GenerateMinable.EventType.COAL; -import static net.minecraftforge.event.terraingen.OreGenEvent.GenerateMinable.EventType.DIAMOND; -import static net.minecraftforge.event.terraingen.OreGenEvent.GenerateMinable.EventType.DIRT; -import static net.minecraftforge.event.terraingen.OreGenEvent.GenerateMinable.EventType.GOLD; -import static net.minecraftforge.event.terraingen.OreGenEvent.GenerateMinable.EventType.GRAVEL; -import static net.minecraftforge.event.terraingen.OreGenEvent.GenerateMinable.EventType.IRON; -import static net.minecraftforge.event.terraingen.OreGenEvent.GenerateMinable.EventType.LAPIS; -import static net.minecraftforge.event.terraingen.OreGenEvent.GenerateMinable.EventType.REDSTONE; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.worldgen.WorldGenAlgae; -import biomesoplenty.worldgen.WorldGenAsh; -import biomesoplenty.worldgen.WorldGenBOPFlowers; -import biomesoplenty.worldgen.WorldGenBoulder; -import biomesoplenty.worldgen.WorldGenBush; -import biomesoplenty.worldgen.WorldGenCanyon; -import biomesoplenty.worldgen.WorldGenCarrots; -import biomesoplenty.worldgen.WorldGenCattail; -import biomesoplenty.worldgen.WorldGenDesertCactus; -import biomesoplenty.worldgen.WorldGenDriedDirt; -import biomesoplenty.worldgen.WorldGenGravel; -import biomesoplenty.worldgen.WorldGenHighGrass; -import biomesoplenty.worldgen.WorldGenMelon; -import biomesoplenty.worldgen.WorldGenMesa; -import biomesoplenty.worldgen.WorldGenMud; -import biomesoplenty.worldgen.WorldGenMycelium; -import biomesoplenty.worldgen.WorldGenOasis; -import biomesoplenty.worldgen.WorldGenOutback; -import biomesoplenty.worldgen.WorldGenPit; -import biomesoplenty.worldgen.WorldGenPotatoes; -import biomesoplenty.worldgen.WorldGenPromisedWillow; -import biomesoplenty.worldgen.WorldGenQuagmire; -import biomesoplenty.worldgen.WorldGenQuicksand; -import biomesoplenty.worldgen.WorldGenQuicksand2; -import biomesoplenty.worldgen.WorldGenShield; -import biomesoplenty.worldgen.WorldGenSmolderingGrass; -import biomesoplenty.worldgen.WorldGenSprout; -import biomesoplenty.worldgen.WorldGenSteppe; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeDecorator; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenBigMushroom; -import net.minecraft.world.gen.feature.WorldGenCactus; -import net.minecraft.world.gen.feature.WorldGenClay; -import net.minecraft.world.gen.feature.WorldGenDeadBush; -import net.minecraft.world.gen.feature.WorldGenFlowers; -import net.minecraft.world.gen.feature.WorldGenLakes; -import net.minecraft.world.gen.feature.WorldGenLiquids; -import net.minecraft.world.gen.feature.WorldGenMinable; -import net.minecraft.world.gen.feature.WorldGenPumpkin; -import net.minecraft.world.gen.feature.WorldGenReed; -import net.minecraft.world.gen.feature.WorldGenSand; -import net.minecraft.world.gen.feature.WorldGenWaterlily; -import net.minecraft.world.gen.feature.WorldGenerator; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.terraingen.DecorateBiomeEvent; -import net.minecraftforge.event.terraingen.OreGenEvent; -import net.minecraftforge.event.terraingen.TerrainGen; - -public class BiomeDecoratorBOP extends BiomeDecorator -{ - - /** The world the BiomeDecorator is currently decorating */ - protected World currentWorld; - - /** The Biome Decorator's random number generator. */ - protected Random randomGenerator; - - /** The X-coordinate of the chunk currently being decorated */ - protected int chunk_X; - - /** The Z-coordinate of the chunk currently being decorated */ - protected int chunk_Z; - - /** The biome generator object. */ - protected BiomeGenBase biome; - - /** The clay generator. */ - protected WorldGenerator clayGen = new WorldGenClay(4); - - /** The sand generator. */ - protected WorldGenerator sandGen; - protected WorldGenerator mudGen; - protected WorldGenerator oasesGen; - - /** The gravel generator. */ - protected WorldGenerator gravelAsSandGen; - - /** The dirt generator. */ - protected WorldGenerator dirtGen; - protected WorldGenerator gravelGen; - protected WorldGenerator gravelShoreGen; - protected WorldGenerator ashGen; - protected WorldGenerator grassMesaGen; - protected WorldGenerator sandMesaGen; - protected WorldGenerator myceliumGen; - protected WorldGenerator sandInGrassGen; - protected WorldGenerator stoneInGrassGen; - protected WorldGenerator stoneInGrassGen2; - protected WorldGenerator sandInStoneGen; - protected WorldGenerator driedDirtInSandGen; - protected WorldGenerator clayInStoneGen; - protected WorldGenerator quagmireGen; - protected WorldGenerator canyonGen; - protected WorldGenerator smolderingGrassGen; - protected WorldGenerator coalGen; - protected WorldGenerator ironGen; - - /** Field that holds gold WorldGenMinable */ - protected WorldGenerator goldGen; - - /** Field that holds redstone WorldGenMinable */ - protected WorldGenerator redstoneGen; - - /** Field that holds diamond WorldGenMinable */ - protected WorldGenerator diamondGen; - - /** Field that holds Lapis WorldGenMinable */ - protected WorldGenerator lapisGen; - - /** Field that holds one of the plantYellow WorldGenFlowers */ - protected WorldGenerator plantYellowGen; - - /** Field that holds one of the plantRed WorldGenFlowers */ - protected WorldGenerator plantRedGen; - protected WorldGenerator plantWhiteGen; - protected WorldGenerator plantBlueGen; - protected WorldGenerator plantPurpleGen; - protected WorldGenerator plantPinkGen; - protected WorldGenerator plantOrangeGen; - protected WorldGenerator plantTinyGen; - protected WorldGenerator plantGlowGen; - protected WorldGenerator plantDeadGen; - protected WorldGenerator plantDesertGen; - protected WorldGenerator cattailGen; - protected WorldGenerator outbackGen; - protected WorldGenerator steppeGen; - protected WorldGenerator thornGen; - protected WorldGenerator toadstoolGen; - protected WorldGenerator highGrassGen; - protected WorldGenerator carrotGen; - protected WorldGenerator potatoGen; - protected WorldGenerator sproutGen; - protected WorldGenerator bushGen; - protected WorldGenerator tinyCactusGen; - protected WorldGenerator deathbloomGen; - protected WorldGenerator hydrangeaGen; - protected WorldGenerator violetGen; - protected WorldGenerator duneGrassGen; - protected WorldGenerator holyTallGrassGen; - protected WorldGenerator desertSproutsGen; - protected WorldGenerator promisedWillowGen; - protected WorldGenerator quicksandGen; - protected WorldGenerator quicksand2Gen; - - /** Field that holds mushroomBrown WorldGenFlowers */ - protected WorldGenerator mushroomBrownGen; - - /** Field that holds mushroomRed WorldGenFlowers */ - protected WorldGenerator mushroomRedGen; - - /** Field that holds big mushroom generator */ - protected WorldGenerator bigMushroomGen; - - /** Field that holds WorldGenReed */ - protected WorldGenerator reedGen; - - /** Field that holds WorldGenCactus */ - protected WorldGenerator cactusGen; - protected WorldGenerator desertCactusGen; - - /** The water lily generation! */ - protected WorldGenerator waterlilyGen; - protected WorldGenerator algaeGen; - protected WorldGenerator pitGen; - - /** Amount of waterlilys per chunk. */ - protected int waterlilyPerChunk; - protected int algaePerChunk; - - /** - * The number of trees to attempt to generate per chunk. Up to 10 in forests, none in deserts. - */ - protected int treesPerChunk; - - /** - * The number of yellow flower patches to generate per chunk. The game generates much less than this number, since - * it attempts to generate them at a random altitude. - */ - protected int flowersPerChunk; - protected int whiteFlowersPerChunk; - protected int blueFlowersPerChunk; - protected int purpleFlowersPerChunk; - protected int pinkFlowersPerChunk; - protected int orangeFlowersPerChunk; - protected int tinyFlowersPerChunk; - protected int glowFlowersPerChunk; - protected int deadGrassPerChunk; - protected int desertGrassPerChunk; - protected int cattailsPerChunk; - protected int carrotsPerChunk; - protected int potatoesPerChunk; - protected int thornsPerChunk; - protected int toadstoolsPerChunk; - protected int sproutsPerChunk; - protected int bushesPerChunk; - protected int tinyCactiPerChunk; - protected int deathbloomsPerChunk; - protected int hydrangeasPerChunk; - protected int violetsPerChunk; - protected int duneGrassPerChunk; - protected int holyTallGrassPerChunk; - protected int desertSproutsPerChunk; - protected int promisedWillowPerChunk; - protected int quicksandPerChunk; - protected int quicksand2PerChunk; - - /** The amount of tall grass to generate per chunk. */ - protected int grassPerChunk; - protected int outbackPerChunk; - protected int steppePerChunk; - protected int highGrassPerChunk; - - /** - * The number of dead bushes to generate per chunk. Used in deserts and swamps. - */ - protected int deadBushPerChunk; - - /** - * The number of extra mushroom patches per chunk. It generates 1/4 this number in brown mushroom patches, and 1/8 - * this number in red mushroom patches. These mushrooms go beyond the default base number of mushrooms. - */ - protected int mushroomsPerChunk; - - /** - * The number of reeds to generate per chunk. Reeds won't generate if the randomly selected placement is unsuitable. - */ - protected int reedsPerChunk; - - /** - * The number of cactus plants to generate per chunk. Cacti only work on sand. - */ - protected int cactiPerChunk; - protected int desertCactiPerChunk; - - /** - * The number of sand patches to generate per chunk. Sand patches only generate when part of it is underwater. - */ - protected int sandPerChunk; - protected int oasesPerChunk; - protected int mudPerChunk; - protected int gravelPerChunk; - - /** - * The number of sand patches to generate per chunk. Sand patches only generate when part of it is underwater. There - * appear to be two separate fields for this. - */ - protected int sandPerChunk2; - protected int oasesPerChunk2; - protected int mudPerChunk2; - protected int gravelPerChunk2; - - /** - * The number of clay patches to generate per chunk. Only generates when part of it is underwater. - */ - protected int clayPerChunk; - - /** Amount of big mushrooms per chunk */ - protected int bigMushroomsPerChunk; - protected int rosesPerChunk; - protected int pondsPerChunk; - protected int waterLakesPerChunk; - protected int lavaLakesPerChunk; - - /** True if decorator should generate surface lava & water */ - public boolean generateLakes; - public boolean generateAsh; - public boolean generateGrass; - public boolean generateSand; - public boolean generateMycelium; - public boolean generateSandInGrass; - public boolean generateStoneInGrass; - public boolean generateStoneInGrass2; - public boolean generateSandInStone; - public boolean generateDriedDirtInSand; - public boolean generateClayInStone; - public boolean generatePits; - public boolean generateQuagmire; - public boolean generateCanyon; - public boolean generatePumpkins; - public boolean generateMelons; - public boolean generateBoulders; - public boolean generateSmolderingGrass; - - public BiomeDecoratorBOP(BiomeGenBase par1BiomeGenBase) - { - super(par1BiomeGenBase); - this.sandGen = new WorldGenSand(7, Block.sand.blockID); - this.oasesGen = new WorldGenOasis(7, Block.grass.blockID); - this.mudGen = new WorldGenMud(7, Blocks.mud.get().blockID); - this.gravelShoreGen = new WorldGenGravel(7, Block.gravel.blockID); - this.gravelAsSandGen = new WorldGenSand(6, Block.gravel.blockID); - this.dirtGen = new WorldGenMinable(Block.dirt.blockID, 32); - this.gravelGen = new WorldGenMinable(Block.gravel.blockID, 32); - this.ashGen = new WorldGenAsh(Blocks.ash.get().blockID, 32); - this.grassMesaGen = new WorldGenMesa(Block.grass.blockID, 48); - this.sandMesaGen = new WorldGenMesa(Block.sand.blockID, 32); - this.myceliumGen = new WorldGenMycelium(Block.mycelium.blockID, 32); - this.sandInGrassGen = new WorldGenMycelium(Block.sand.blockID, 32); - this.stoneInGrassGen = new WorldGenMycelium(Block.stone.blockID, 32); - this.stoneInGrassGen2 = new WorldGenShield(Block.stone.blockID, 48); - this.sandInStoneGen = new WorldGenMinable(Block.sand.blockID, 32); - this.clayInStoneGen = new WorldGenMinable(Block.blockClay.blockID, 32); - this.quagmireGen = new WorldGenQuagmire(Block.grass.blockID, 48); - this.canyonGen = new WorldGenCanyon(Blocks.redRock.get().blockID, 48); - this.smolderingGrassGen = new WorldGenSmolderingGrass(Blocks.holyGrass.get().blockID, 1, 32); - this.driedDirtInSandGen = new WorldGenDriedDirt(Blocks.driedDirt.get().blockID, 32); - this.coalGen = new WorldGenMinable(Block.oreCoal.blockID, 16); - this.ironGen = new WorldGenMinable(Block.oreIron.blockID, 8); - this.goldGen = new WorldGenMinable(Block.oreGold.blockID, 8); - this.redstoneGen = new WorldGenMinable(Block.oreRedstone.blockID, 7); - this.diamondGen = new WorldGenMinable(Block.oreDiamond.blockID, 7); - this.lapisGen = new WorldGenMinable(Block.oreLapis.blockID, 6); - this.plantYellowGen = new WorldGenBOPFlowers(Block.plantYellow.blockID, 0); - this.plantRedGen = new WorldGenBOPFlowers(Block.plantRed.blockID, 0); - this.plantWhiteGen = new WorldGenBOPFlowers(Blocks.flowers.get().blockID, 9); - this.plantBlueGen = new WorldGenBOPFlowers(Blocks.flowers.get().blockID, 1); - this.plantPurpleGen = new WorldGenBOPFlowers(Blocks.flowers.get().blockID, 7); - this.plantPinkGen = new WorldGenBOPFlowers(Blocks.flowers.get().blockID, 6); - this.plantOrangeGen = new WorldGenBOPFlowers(Blocks.flowers.get().blockID, 5); - this.plantTinyGen = new WorldGenBOPFlowers(Blocks.flowers.get().blockID, 0); - this.plantGlowGen = new WorldGenBOPFlowers(Blocks.flowers.get().blockID, 3); - this.plantDeadGen = new WorldGenBOPFlowers(Blocks.plants.get().blockID, 0); - this.plantDesertGen = new WorldGenBOPFlowers(Blocks.plants.get().blockID, 1); - this.thornGen = new WorldGenBOPFlowers(Blocks.plants.get().blockID, 5); - this.bushGen = new WorldGenBush(Blocks.foliage.get().blockID, 4); - this.tinyCactusGen = new WorldGenBOPFlowers(Blocks.flowers.get().blockID, 11); - this.deathbloomGen = new WorldGenBOPFlowers(Blocks.flowers.get().blockID, 2); - this.hydrangeaGen = new WorldGenBOPFlowers(Blocks.flowers.get().blockID, 4); - this.violetGen = new WorldGenBOPFlowers(Blocks.flowers.get().blockID, 8); - this.duneGrassGen = new WorldGenBOPFlowers(Blocks.plants.get().blockID, 3); - this.holyTallGrassGen = new WorldGenBOPFlowers(Blocks.plants.get().blockID, 4); - this.desertSproutsGen = new WorldGenBOPFlowers(Blocks.plants.get().blockID, 2); - this.promisedWillowGen = new WorldGenPromisedWillow(); - this.quicksandGen = new WorldGenQuicksand(); - this.quicksand2Gen = new WorldGenQuicksand2(); - this.cattailGen = new WorldGenCattail(); - this.mushroomBrownGen = new WorldGenBOPFlowers(Block.mushroomBrown.blockID, 0); - this.mushroomRedGen = new WorldGenBOPFlowers(Block.mushroomRed.blockID, 0); - this.toadstoolGen = new WorldGenBOPFlowers(Blocks.flowers.get().blockID, 10); - this.sproutGen = new WorldGenSprout(Blocks.foliage.get().blockID, 5); - this.highGrassGen = new WorldGenHighGrass(Blocks.foliage.get().blockID, 3); - this.outbackGen = new WorldGenOutback(Blocks.foliage.get().blockID, 2); - this.steppeGen = new WorldGenSteppe(Block.sand.blockID, 0); - this.carrotGen = new WorldGenCarrots(Block.tallGrass.blockID, 0); - this.potatoGen = new WorldGenPotatoes(Block.tallGrass.blockID, 0); - this.bigMushroomGen = new WorldGenBigMushroom(); - this.reedGen = new WorldGenReed(); - this.cactusGen = new WorldGenCactus(); - this.desertCactusGen = new WorldGenDesertCactus(); - this.waterlilyGen = new WorldGenWaterlily(); - this.algaeGen = new WorldGenAlgae(); - this.pitGen = new WorldGenPit(Blocks.ash.get().blockID); - this.waterlilyPerChunk = 0; - this.treesPerChunk = 0; - this.flowersPerChunk = 2; - this.grassPerChunk = 1; - this.deadBushPerChunk = 0; - this.mushroomsPerChunk = 0; - this.reedsPerChunk = 0; - this.cactiPerChunk = 0; - this.sandPerChunk = 1; - this.sandPerChunk2 = 3; - this.oasesPerChunk = 0; - this.oasesPerChunk2 = 0; - this.mudPerChunk = 0; - this.mudPerChunk2 = 0; - this.gravelPerChunk = 0; - this.gravelPerChunk2 = 0; - this.clayPerChunk = 1; - this.bigMushroomsPerChunk = 0; - this.rosesPerChunk = 0; - this.whiteFlowersPerChunk = 0; - this.blueFlowersPerChunk = 0; - this.purpleFlowersPerChunk = 0; - this.pinkFlowersPerChunk = 0; - this.orangeFlowersPerChunk = 0; - this.tinyFlowersPerChunk = 0; - this.glowFlowersPerChunk = 0; - this.deadGrassPerChunk = 0; - this.desertGrassPerChunk = 0; - this.cattailsPerChunk = 0; - this.carrotsPerChunk = 0; - this.potatoesPerChunk = 0; - this.thornsPerChunk = 0; - this.toadstoolsPerChunk = 0; - this.sproutsPerChunk = 0; - this.bushesPerChunk = 0; - this.tinyCactiPerChunk = 0; - this.deathbloomsPerChunk = 0; - this.hydrangeasPerChunk = 0; - this.violetsPerChunk = 0; - this.duneGrassPerChunk = 0; - this.holyTallGrassPerChunk = 0; - this.desertSproutsPerChunk = 0; - this.desertCactiPerChunk = 0; - this.highGrassPerChunk = 0; - this.outbackPerChunk = 0; - this.steppePerChunk = 0; - this.promisedWillowPerChunk = 0; - this.algaePerChunk = 0; - this.pondsPerChunk = 0; - this.waterLakesPerChunk = 0; - this.lavaLakesPerChunk = 0; - this.quicksandPerChunk = 0; - this.quicksand2PerChunk = 0; - this.generateLakes = true; - this.generateAsh = false; - this.generateMycelium = false; - this.generateSandInGrass = false; - this.generateStoneInGrass = false; - this.generateStoneInGrass2 = false; - this.generateSandInStone = false; - this.generateDriedDirtInSand = false; - this.generateClayInStone = false; - this.generateQuagmire = false; - this.generateCanyon = false; - this.generatePumpkins = true; - this.generateMelons = false; - this.generateBoulders = false; - this.generateSmolderingGrass = false; - this.biome = par1BiomeGenBase; - } - - /** - * Decorates the world. Calls code that was formerly (pre-1.8) in ChunkProviderGenerate.populate - */ - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - if (this.currentWorld != null) - { - return ; - } - else - { - this.currentWorld = par1World; - this.randomGenerator = par2Random; - this.chunk_X = par3; - this.chunk_Z = par4; - this.decorate(); - this.currentWorld = null; - this.randomGenerator = null; - } - } - - - - - /** - * The method that does the work of actually decorating chunks - */ - protected void decorate() - { - MinecraftForge.EVENT_BUS.post(new DecorateBiomeEvent.Pre(currentWorld, randomGenerator, chunk_X, chunk_Z)); - //Added - boolean doGen = TerrainGen.decorate(currentWorld, randomGenerator, chunk_X, chunk_Z, SAND); - - this.generateOres(); - - int var1; - int var2; - int var3; - int var4; - int var5; - - for (var2 = 0; var2 < waterLakesPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(this.randomGenerator.nextInt(120) + 8); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - (new WorldGenLakes(Block.waterMoving.blockID)).generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < lavaLakesPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(this.randomGenerator.nextInt(this.randomGenerator.nextInt(112) + 8) + 8); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - (new WorldGenLakes(Block.lavaMoving.blockID)).generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - if (this.generateAsh) - { - this.genStandardOre1(10, this.ashGen, 0, 128); - } - - if (this.generateGrass) - { - this.genStandardOre1(20, this.grassMesaGen, 0, 128); - } - - if (this.generateSand) - { - this.genStandardOre1(15, this.sandMesaGen, 0, 128); - } - - if (this.generateMycelium) - { - this.genStandardOre1(10, this.myceliumGen, 0, 128); - } - - if (this.generateSandInGrass) - { - this.genStandardOre1(8, this.sandInGrassGen, 64, 128); - } - - if (this.generateStoneInGrass) - { - this.genStandardOre1(15, this.stoneInGrassGen, 64, 128); - } - - if (this.generateStoneInGrass2) - { - this.genStandardOre1(20, this.stoneInGrassGen2, 64, 128); - } - - if (this.generateSandInStone) - { - this.genStandardOre1(10, this.sandInStoneGen, 64, 128); - } - - if (this.generateDriedDirtInSand) - { - this.genStandardOre1(8, this.driedDirtInSandGen, 64, 128); - } - - if (this.generateClayInStone) - { - this.genStandardOre1(15, this.clayInStoneGen, 64, 128); - } - - if (this.generateQuagmire) - { - this.genStandardOre1(15, this.quagmireGen, 64, 128); - } - - if (this.generateCanyon) - { - this.genStandardOre1(15, this.canyonGen, 64, 128); - } - - if (this.generateSmolderingGrass) - { - this.genStandardOre1(15, this.smolderingGrassGen, 64, 128); - } - - if (this.generatePits) - { - var4 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - int var6 = this.currentWorld.getTopSolidOrLiquidBlock(var4, var5); - - if (var6 > 0) - { - ; - } - - this.pitGen.generate(this.currentWorld, this.randomGenerator, var4, var6, var5); - } - - for (var1 = 0; var1 < this.sandPerChunk2; ++var1) - { - var2 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var3 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.sandGen.generate(this.currentWorld, this.randomGenerator, var2, this.currentWorld.getTopSolidOrLiquidBlock(var2, var3), var3); - } - - //Added - for (var1 = 0; doGen && var1 < this.sandPerChunk2; ++var1) - { - var2 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var3 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.sandGen.generate(this.currentWorld, this.randomGenerator, var2, this.currentWorld.getTopSolidOrLiquidBlock(var2, var3), var3); - } - - for (var1 = 0; var1 < this.mudPerChunk2; ++var1) - { - var2 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var3 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.mudGen.generate(this.currentWorld, this.randomGenerator, var2, this.currentWorld.getTopSolidOrLiquidBlock(var2, var3), var3); - } - - for (var1 = 0; var1 < this.gravelPerChunk2; ++var1) - { - var2 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var3 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.gravelShoreGen.generate(this.currentWorld, this.randomGenerator, var2, this.currentWorld.getTopSolidOrLiquidBlock(var2, var3), var3); - } - - //Added - doGen = TerrainGen.decorate(currentWorld, randomGenerator, chunk_X, chunk_Z, CLAY); - for (var1 = 0; doGen && var1 < this.clayPerChunk; ++var1) - { - var2 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var3 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.clayGen.generate(this.currentWorld, this.randomGenerator, var2, this.currentWorld.getTopSolidOrLiquidBlock(var2, var3), var3); - } - - //Added - doGen = TerrainGen.decorate(currentWorld, randomGenerator, chunk_X, chunk_Z, SAND_PASS2); - for (var1 = 0; doGen && var1 < this.sandPerChunk; ++var1) - { - var2 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var3 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.sandGen.generate(this.currentWorld, this.randomGenerator, var2, this.currentWorld.getTopSolidOrLiquidBlock(var2, var3), var3); - } - - for (var1 = 0; var1 < this.oasesPerChunk; ++var1) - { - var2 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var3 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.oasesGen.generate(this.currentWorld, this.randomGenerator, var2, this.currentWorld.getTopSolidOrLiquidBlock(var2, var3), var3); - } - - for (var1 = 0; var1 < this.mudPerChunk; ++var1) - { - var2 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var3 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.mudGen.generate(this.currentWorld, this.randomGenerator, var2, this.currentWorld.getTopSolidOrLiquidBlock(var2, var3), var3); - } - - for (var1 = 0; var1 < this.gravelPerChunk; ++var1) - { - var2 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var3 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.gravelShoreGen.generate(this.currentWorld, this.randomGenerator, var2, this.currentWorld.getTopSolidOrLiquidBlock(var2, var3), var3); - } - - var1 = this.treesPerChunk; - - if (this.randomGenerator.nextInt(10) == 0) - { - ++var1; - } - - //Added - doGen = TerrainGen.decorate(currentWorld, randomGenerator, chunk_X, chunk_Z, TREE); - for (var2 = 0; doGen && var2 < var1; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - WorldGenerator var7 = this.biome.getRandomWorldGenForTrees(this.randomGenerator); - var7.setScale(1.0D, 1.0D, 1.0D); - var7.generate(this.currentWorld, this.randomGenerator, var3, this.currentWorld.getHeightValue(var3, var4), var4); - } - - //Added - doGen = TerrainGen.decorate(currentWorld, randomGenerator, chunk_X, chunk_Z, BIG_SHROOM); - for (var2 = 0; doGen && var2 < this.bigMushroomsPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.bigMushroomGen.generate(this.currentWorld, this.randomGenerator, var3, this.currentWorld.getHeightValue(var3, var4), var4); - } - - //Added - doGen = TerrainGen.decorate(currentWorld, randomGenerator, chunk_X, chunk_Z, FLOWERS); - for (var2 = 0; doGen && var2 < this.flowersPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.plantYellowGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - - if (this.randomGenerator.nextInt(4) == 0) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.plantRedGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - } - - for (var2 = 0; var2 < this.rosesPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.plantRedGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.promisedWillowPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(70); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.promisedWillowGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.whiteFlowersPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.plantWhiteGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.blueFlowersPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.plantBlueGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.hydrangeasPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.hydrangeaGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.violetsPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.violetGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.duneGrassPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.duneGrassGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.holyTallGrassPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.holyTallGrassGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.desertSproutsPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.desertSproutsGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.purpleFlowersPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.plantPurpleGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.pinkFlowersPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.plantPinkGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.bushesPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.bushGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.orangeFlowersPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.plantOrangeGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.tinyCactiPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.tinyCactusGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.deathbloomsPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.deathbloomGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.toadstoolsPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.toadstoolGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.sproutsPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.sproutGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.tinyFlowersPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.plantTinyGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.glowFlowersPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.plantGlowGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.deadGrassPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.plantDeadGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.desertGrassPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.plantDesertGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.quicksandPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.quicksandGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.quicksand2PerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.quicksand2Gen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - //Added - doGen = TerrainGen.decorate(currentWorld, randomGenerator, chunk_X, chunk_Z, GRASS); - for (var2 = 0; doGen && var2 < this.grassPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - WorldGenerator var6 = this.biome.getRandomWorldGenForGrass(this.randomGenerator); - var6.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.outbackPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.outbackGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.steppePerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.steppeGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.highGrassPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.highGrassGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.carrotsPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.carrotGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.potatoesPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.potatoGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.thornsPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.thornGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.cattailsPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.cattailGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; doGen && var2 < this.algaePerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - - for (var5 = this.randomGenerator.nextInt(128); var5 > 0 && this.currentWorld.getBlockId(var3, var5 - 1, var4) == 0; --var5) - { - ; - } - - this.algaeGen.generate(this.currentWorld, this.randomGenerator, var3, var5, var4); - } - - //Added - doGen = TerrainGen.decorate(currentWorld, randomGenerator, chunk_X, chunk_Z, DEAD_BUSH); - for (var2 = 0; doGen && var2 < this.deadBushPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - (new WorldGenDeadBush(Block.deadBush.blockID)).generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - //Added - doGen = TerrainGen.decorate(currentWorld, randomGenerator, chunk_X, chunk_Z, LILYPAD); - for (var2 = 0; doGen && var2 < this.waterlilyPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - - for (var5 = this.randomGenerator.nextInt(128); var5 > 0 && this.currentWorld.getBlockId(var3, var5 - 1, var4) == 0; --var5) - { - ; - } - - this.waterlilyGen.generate(this.currentWorld, this.randomGenerator, var3, var5, var4); - } - - //Added - doGen = TerrainGen.decorate(currentWorld, randomGenerator, chunk_X, chunk_Z, SHROOM); - for (var2 = 0; doGen && var2 < this.mushroomsPerChunk; ++var2) - { - if (this.randomGenerator.nextInt(4) == 0) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - var5 = this.currentWorld.getHeightValue(var3, var4); - this.mushroomBrownGen.generate(this.currentWorld, this.randomGenerator, var3, var5, var4); - } - - if (this.randomGenerator.nextInt(8) == 0) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - var5 = this.randomGenerator.nextInt(128); - this.mushroomRedGen.generate(this.currentWorld, this.randomGenerator, var3, var5, var4); - } - } - - if (this.randomGenerator.nextInt(4) == 0) - { - var2 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var3 = this.randomGenerator.nextInt(128); - var4 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.mushroomBrownGen.generate(this.currentWorld, this.randomGenerator, var2, var3, var4); - } - - if (this.randomGenerator.nextInt(8) == 0) - { - var2 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var3 = this.randomGenerator.nextInt(128); - var4 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.mushroomRedGen.generate(this.currentWorld, this.randomGenerator, var2, var3, var4); - } - - //Added - doGen = TerrainGen.decorate(currentWorld, randomGenerator, chunk_X, chunk_Z, REED); - for (var2 = 0; doGen && var2 < this.reedsPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - var5 = this.randomGenerator.nextInt(128); - this.reedGen.generate(this.currentWorld, this.randomGenerator, var3, var5, var4); - } - - for (var2 = 0; doGen && var2 < 10; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.reedGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - if (this.generatePumpkins && this.randomGenerator.nextInt(32) == 0) - { - var2 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var3 = this.randomGenerator.nextInt(128); - var4 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - (new WorldGenPumpkin()).generate(this.currentWorld, this.randomGenerator, var2, var3, var4); - } - - if (this.generateMelons && this.randomGenerator.nextInt(32) == 0) - { - var2 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var3 = this.randomGenerator.nextInt(128); - var4 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - (new WorldGenMelon()).generate(this.currentWorld, this.randomGenerator, var2, var3, var4); - } - - if (this.generateBoulders && this.randomGenerator.nextInt(32) == 0) - { - var2 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var3 = this.randomGenerator.nextInt(128); - var4 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - (new WorldGenBoulder()).generate(this.currentWorld, this.randomGenerator, var2, var3, var4); - } - - for (var2 = 0; var2 < this.cactiPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.cactusGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.desertCactiPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(128); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - this.desertCactusGen.generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < this.pondsPerChunk; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(this.randomGenerator.nextInt(120) + 8); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - (new WorldGenLiquids(Block.waterMoving.blockID)).generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - if (this.generateLakes) - { - for (var2 = 0; var2 < 50; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(this.randomGenerator.nextInt(120) + 8); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - (new WorldGenLiquids(Block.waterMoving.blockID)).generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - - for (var2 = 0; var2 < 20; ++var2) - { - var3 = this.chunk_X + this.randomGenerator.nextInt(16) + 8; - var4 = this.randomGenerator.nextInt(this.randomGenerator.nextInt(this.randomGenerator.nextInt(112) + 8) + 8); - var5 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8; - (new WorldGenLiquids(Block.lavaMoving.blockID)).generate(this.currentWorld, this.randomGenerator, var3, var4, var5); - } - } - - MinecraftForge.EVENT_BUS.post(new DecorateBiomeEvent.Post(currentWorld, randomGenerator, chunk_X, chunk_Z)); - } - - /** - * Standard ore generation helper. Generates most ores. - */ - protected void genStandardOre1(int par1, WorldGenerator par2WorldGenerator, int par3, int par4) - { - for (int var5 = 0; var5 < par1; ++var5) - { - int var6 = this.chunk_X + this.randomGenerator.nextInt(16); - int var7 = this.randomGenerator.nextInt(par4 - par3) + par3; - int var8 = this.chunk_Z + this.randomGenerator.nextInt(16); - par2WorldGenerator.generate(this.currentWorld, this.randomGenerator, var6, var7, var8); - } - } - - /** - * Standard ore generation helper. Generates Lapis Lazuli. - */ - protected void genStandardOre2(int par1, WorldGenerator par2WorldGenerator, int par3, int par4) - { - for (int var5 = 0; var5 < par1; ++var5) - { - int var6 = this.chunk_X + this.randomGenerator.nextInt(16); - int var7 = this.randomGenerator.nextInt(par4) + this.randomGenerator.nextInt(par4) + (par3 - par4); - int var8 = this.chunk_Z + this.randomGenerator.nextInt(16); - par2WorldGenerator.generate(this.currentWorld, this.randomGenerator, var6, var7, var8); - } - } - - /** - * Generates ores in the current chunk - */ - protected void generateOres() - { - MinecraftForge.ORE_GEN_BUS.post(new OreGenEvent.Pre(currentWorld, randomGenerator, chunk_X, chunk_Z)); - - if (TerrainGen.generateOre(currentWorld, randomGenerator, dirtGen, chunk_X, chunk_Z, DIRT)) - this.genStandardOre1(20, this.dirtGen, 0, 128); - - if (TerrainGen.generateOre(currentWorld, randomGenerator, gravelGen, chunk_X, chunk_Z, GRAVEL)) - this.genStandardOre1(10, this.gravelGen, 0, 128); - - if (TerrainGen.generateOre(currentWorld, randomGenerator, coalGen, chunk_X, chunk_Z, COAL)) - this.genStandardOre1(20, this.coalGen, 0, 128); - - if (TerrainGen.generateOre(currentWorld, randomGenerator, ironGen, chunk_X, chunk_Z, IRON)) - this.genStandardOre1(20, this.ironGen, 0, 64); - - if (TerrainGen.generateOre(currentWorld, randomGenerator, goldGen, chunk_X, chunk_Z, GOLD)) - this.genStandardOre1(2, this.goldGen, 0, 32); - - if (TerrainGen.generateOre(currentWorld, randomGenerator, redstoneGen, chunk_X, chunk_Z, REDSTONE)) - this.genStandardOre1(8, this.redstoneGen, 0, 16); - - if (TerrainGen.generateOre(currentWorld, randomGenerator, diamondGen, chunk_X, chunk_Z, DIAMOND)) - this.genStandardOre1(1, this.diamondGen, 0, 16); - - if (TerrainGen.generateOre(currentWorld, randomGenerator, lapisGen, chunk_X, chunk_Z, LAPIS)) - this.genStandardOre2(1, this.lapisGen, 16, 16); - - MinecraftForge.ORE_GEN_BUS.post(new OreGenEvent.Post(currentWorld, randomGenerator, chunk_X, chunk_Z)); - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenAlps.java b/src/minecraft/biomesoplenty/biomes/BiomeGenAlps.java deleted file mode 100644 index c9effe0d6..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenAlps.java +++ /dev/null @@ -1,36 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.worldgen.WorldGenTaiga6; - -import net.minecraft.block.Block; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenAlps extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenAlps(int par1) - { - super(par1); - this.topBlock = (byte)Block.stone.blockID; - this.fillerBlock = (byte)Block.stone.blockID; - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 1; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.grassPerChunk = -999; - this.customBiomeDecorator.sandPerChunk = -999; - this.customBiomeDecorator.sandPerChunk2 = -999; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return new WorldGenTaiga6(false); - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenArctic.java b/src/minecraft/biomesoplenty/biomes/BiomeGenArctic.java deleted file mode 100644 index da6973d2f..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenArctic.java +++ /dev/null @@ -1,47 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.worldgen.WorldGenTaiga3; -import biomesoplenty.worldgen.WorldGenTaiga4; -import biomesoplenty.worldgen.WorldGenTaiga9; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenArctic extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenArctic(int par1) - { - super(par1); - this.spawnableCreatureList.clear(); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 3; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.sandPerChunk = -999; - this.customBiomeDecorator.sandPerChunk2 = -999; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(5) == 0 ? new WorldGenTaiga3(false) : (par1Random.nextInt(3) == 0 ? new WorldGenTaiga4(false) : new WorldGenTaiga9(false))); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return par1Random.nextInt(2) == 0 ? new WorldGenTallGrass(Blocks.foliage.get().blockID, 2) : new WorldGenTallGrass(Blocks.foliage.get().blockID, 1); - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenBadlands.java b/src/minecraft/biomesoplenty/biomes/BiomeGenBadlands.java deleted file mode 100644 index d1fc3efa5..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenBadlands.java +++ /dev/null @@ -1,59 +0,0 @@ -package biomesoplenty.biomes; - -import java.awt.Color; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.configuration.BOPConfiguration; - -import net.minecraft.block.Block; -import net.minecraft.world.biome.BiomeGenBase; - -public class BiomeGenBadlands extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenBadlands(int par1) - { - super(par1); - this.spawnableCreatureList.clear(); - this.topBlock = (byte)Block.sandStone.blockID; - this.fillerBlock = (byte)Blocks.hardSand.get().blockID; - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = -999; - this.customBiomeDecorator.deadBushPerChunk = 4; - this.customBiomeDecorator.reedsPerChunk = -999; - this.customBiomeDecorator.cactiPerChunk = 2; - this.customBiomeDecorator.clayPerChunk = 3; - this.customBiomeDecorator.generateClayInStone = true; - this.customBiomeDecorator.generateSandInStone = true; - } - - /** - * takes temperature, returns color - */ - public int getSkyColorByTemp(float par1) - { - if (BOPConfiguration.skyColors = true) - { - return 13421723; - } - else - { - par1 /= 3.0F; - - if (par1 < -1.0F) - { - par1 = -1.0F; - } - - if (par1 > 1.0F) - { - par1 = 1.0F; - } - - return Color.getHSBColor(0.62222224F - par1 * 0.05F, 0.5F + par1 * 0.1F, 1.0F).getRGB(); - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenBambooForest.java b/src/minecraft/biomesoplenty/biomes/BiomeGenBambooForest.java deleted file mode 100644 index 21421a1fd..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenBambooForest.java +++ /dev/null @@ -1,84 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.worldgen.WorldGenBambooTree; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenShrub; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenBambooForest extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenBambooForest(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 30; - this.customBiomeDecorator.grassPerChunk = 5; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.bushesPerChunk = 5; - this.customBiomeDecorator.generatePumpkins = false; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(3) == 0 ? new WorldGenShrub(0, 0) : new WorldGenBambooTree(false)); - } - - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return par1Random.nextInt(4) == 0 ? new WorldGenTallGrass(Block.tallGrass.blockID, 2) : new WorldGenTallGrass(Blocks.foliage.get().blockID, 1); - } - - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - int var5 = 3 + par2Random.nextInt(6); - - for (int var6 = 0; var6 < var5; ++var6) - { - int var7 = par3 + par2Random.nextInt(16); - int var8 = par2Random.nextInt(28) + 4; - int var9 = par4 + par2Random.nextInt(16); - int var10 = par1World.getBlockId(var7, var8, var9); - - if (var10 == Block.stone.blockID) - { - par1World.setBlock(var7, var8, var9, Block.oreEmerald.blockID, 0, 2); - } - } - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 10739795; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 10739795; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenBayou.java b/src/minecraft/biomesoplenty/biomes/BiomeGenBayou.java deleted file mode 100644 index 418e6384b..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenBayou.java +++ /dev/null @@ -1,106 +0,0 @@ -package biomesoplenty.biomes; - -import java.awt.Color; -import java.util.Random; - -import biomesoplenty.configuration.BOPConfiguration; -import biomesoplenty.worldgen.WorldGenBayou1; -import biomesoplenty.worldgen.WorldGenBayou2; -import biomesoplenty.worldgen.WorldGenBayou3; -import biomesoplenty.worldgen.WorldGenMoss; - -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenBayou extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenBayou(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 15; - this.customBiomeDecorator.grassPerChunk = 15; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.reedsPerChunk = 25; - this.customBiomeDecorator.mudPerChunk = 1; - this.customBiomeDecorator.mudPerChunk2 = 1; - this.customBiomeDecorator.toadstoolsPerChunk = 2; - this.customBiomeDecorator.sandPerChunk = -999; - this.customBiomeDecorator.sandPerChunk2 = -999; - this.customBiomeDecorator.waterlilyPerChunk = 2; - this.customBiomeDecorator.cattailsPerChunk = 1; - this.customBiomeDecorator.algaePerChunk = 1; - this.customBiomeDecorator.generatePumpkins = false; - this.waterColorMultiplier = 16767282; - this.spawnableWaterCreatureList.clear(); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(8) == 0 ? new WorldGenBayou3() : (par1Random.nextInt(2) == 0 ? new WorldGenBayou1() : new WorldGenBayou2())); - } - - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - WorldGenMoss var5 = new WorldGenMoss(); - - for (int var6 = 0; var6 < 20; ++var6) - { - int var7 = par3 + par2Random.nextInt(16) + 8; - byte var8 = 58; - int var9 = par4 + par2Random.nextInt(16) + 8; - var5.generate(par1World, par2Random, var7, var8, var9); - } - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 9154411; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 11591816; - } - - /** - * takes temperature, returns color - */ - public int getSkyColorByTemp(float par1) - { - if (BOPConfiguration.skyColors = true) - { - return 11322556; - } - else - { - par1 /= 3.0F; - - if (par1 < -1.0F) - { - par1 = -1.0F; - } - - if (par1 > 1.0F) - { - par1 = 1.0F; - } - - return Color.getHSBColor(0.62222224F - par1 * 0.05F, 0.5F + par1 * 0.1F, 1.0F).getRGB(); - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenBirchForest.java b/src/minecraft/biomesoplenty/biomes/BiomeGenBirchForest.java deleted file mode 100644 index 02a57f99d..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenBirchForest.java +++ /dev/null @@ -1,64 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenBirchForest extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenBirchForest(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 5; - this.customBiomeDecorator.grassPerChunk = 3; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.tinyFlowersPerChunk = 6; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return this.worldGeneratorForest; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return par1Random.nextInt(3) == 0 ? new WorldGenTallGrass(Block.tallGrass.blockID, 1) : new WorldGenTallGrass(Blocks.foliage.get().blockID, 1); - } - - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - int var5 = 3 + par2Random.nextInt(6); - - for (int var6 = 0; var6 < var5; ++var6) - { - int var7 = par3 + par2Random.nextInt(16); - int var8 = par2Random.nextInt(28) + 4; - int var9 = par4 + par2Random.nextInt(16); - int var10 = par1World.getBlockId(var7, var8, var9); - - if (var10 == Block.stone.blockID) - { - par1World.setBlock(var7, var8, var9, Block.oreEmerald.blockID, 0, 2); - } - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenBog.java b/src/minecraft/biomesoplenty/biomes/BiomeGenBog.java deleted file mode 100644 index fedbdf42c..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenBog.java +++ /dev/null @@ -1,103 +0,0 @@ -package biomesoplenty.biomes; - -import java.awt.Color; -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.configuration.BOPConfiguration; -import biomesoplenty.worldgen.WorldGenBog1; -import biomesoplenty.worldgen.WorldGenBog2; - -import net.minecraft.block.Block; -import net.minecraft.entity.monster.EntitySlime; -import net.minecraft.item.ItemStack; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.SpawnListEntry; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenBog extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - @SuppressWarnings("unchecked") - public BiomeGenBog(int par1) - { - super(par1); - this.spawnableCreatureList.clear(); - this.spawnableWaterCreatureList.clear(); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 30; - this.customBiomeDecorator.grassPerChunk = 30; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.sandPerChunk = -999; - this.customBiomeDecorator.sandPerChunk2 = -999; - this.customBiomeDecorator.mudPerChunk = 5; - this.customBiomeDecorator.mudPerChunk2 = 5; - this.customBiomeDecorator.deadBushPerChunk = 5; - this.customBiomeDecorator.algaePerChunk = 2; - this.spawnableCreatureList.add(new SpawnListEntry(EntitySlime.class, 10, 1, 3)); - this.waterColorMultiplier = 11506176; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(3) == 0 ? new WorldGenBog2() : new WorldGenBog1()); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return par1Random.nextInt(9) == 0 ? new WorldGenTallGrass(Block.tallGrass.blockID, 0) : new WorldGenTallGrass(Blocks.foliage.get().blockID, 2); - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 7627817; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 9539892; - } - - /** - * takes temperature, returns color - */ - public int getSkyColorByTemp(float par1) - { - if (BOPConfiguration.skyColors = true) - { - return 7039816; - } - else - { - par1 /= 3.0F; - - if (par1 < -1.0F) - { - par1 = -1.0F; - } - - if (par1 > 1.0F) - { - par1 = 1.0F; - } - - return Color.getHSBColor(0.62222224F - par1 * 0.05F, 0.5F + par1 * 0.1F, 1.0F).getRGB(); - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenBorealForest.java b/src/minecraft/biomesoplenty/biomes/BiomeGenBorealForest.java deleted file mode 100644 index 52ab4d881..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenBorealForest.java +++ /dev/null @@ -1,62 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.worldgen.WorldGenAutumn; -import biomesoplenty.worldgen.WorldGenTaiga5; - -import net.minecraft.block.Block; -import net.minecraft.entity.passive.EntityWolf; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.SpawnListEntry; -import net.minecraft.world.gen.feature.WorldGenShrub; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenBorealForest extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - @SuppressWarnings("unchecked") - public BiomeGenBorealForest(int par1) - { - super(par1); - this.spawnableCreatureList.add(new SpawnListEntry(EntityWolf.class, 5, 4, 4)); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 25; - this.customBiomeDecorator.grassPerChunk = 50; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return par1Random.nextInt(2) == 0 ? new WorldGenTallGrass(Block.tallGrass.blockID, 2) : new WorldGenTallGrass(Block.tallGrass.blockID, 1); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(2) == 0 ? this.worldGeneratorTrees : (par1Random.nextInt(5) == 0 ? new WorldGenShrub(0,0) : (par1Random.nextInt(3) == 0 ? new WorldGenAutumn(false) : (par1Random.nextInt(3) == 0 ? this.worldGeneratorForest : new WorldGenTaiga5(false))))); - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 10467185; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 13225573; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenCanyon.java b/src/minecraft/biomesoplenty/biomes/BiomeGenCanyon.java deleted file mode 100644 index 425169dcf..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenCanyon.java +++ /dev/null @@ -1,47 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.worldgen.WorldGenCanyonShrub; -import biomesoplenty.worldgen.WorldGenCanyonTree; - -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenCanyon extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenCanyon(int par1) - { - super(par1); - this.spawnableCreatureList.clear(); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.topBlock = (byte)Blocks.hardDirt.get().blockID; - this.fillerBlock = (byte)Blocks.hardDirt.get().blockID; - this.customBiomeDecorator.treesPerChunk = 10; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.tinyCactiPerChunk = 2; - this.customBiomeDecorator.generatePumpkins = false; - //this.customBiomeDecorator.generateCanyon = true; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(3) == 0 ? new WorldGenCanyonTree() : new WorldGenCanyonShrub(0,0)); - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 11123300; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenChaparral.java b/src/minecraft/biomesoplenty/biomes/BiomeGenChaparral.java deleted file mode 100644 index 2ee6ce960..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenChaparral.java +++ /dev/null @@ -1,76 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.worldgen.WorldGenChaparral1; -import biomesoplenty.worldgen.WorldGenChaparral2; -import biomesoplenty.worldgen.WorldGenChaparral3; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenChaparral extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenChaparral(int par1) - { - super(par1); - this.spawnableCreatureList.clear(); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 8; - this.customBiomeDecorator.grassPerChunk = 20; - this.customBiomeDecorator.bushesPerChunk = 10; - this.customBiomeDecorator.generateStoneInGrass = true; - this.customBiomeDecorator.generatePumpkins = false; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(2) == 0 ? new WorldGenChaparral2() : (par1Random.nextInt(5) == 0 ? new WorldGenChaparral1(0, 0) : new WorldGenChaparral3())); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return par1Random.nextInt(2) == 0 ? new WorldGenTallGrass(Blocks.foliage.get().blockID, 2) : new WorldGenTallGrass(Block.tallGrass.blockID, 1); - } - - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - int var5 = 3 + par2Random.nextInt(6); - - for (int var6 = 0; var6 < var5; ++var6) - { - int var7 = par3 + par2Random.nextInt(16); - int var8 = par2Random.nextInt(28) + 4; - int var9 = par4 + par2Random.nextInt(16); - int var10 = par1World.getBlockId(var7, var8, var9); - - if (var10 == Block.stone.blockID) - { - par1World.setBlock(var7, var8, var9, Block.oreEmerald.blockID, 0, 2); - } - } - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 12638301; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenCherryBlossomGrove.java b/src/minecraft/biomesoplenty/biomes/BiomeGenCherryBlossomGrove.java deleted file mode 100644 index 77beaf95d..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenCherryBlossomGrove.java +++ /dev/null @@ -1,49 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.worldgen.WorldGenCherry1; -import biomesoplenty.worldgen.WorldGenCherry2; - -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenCherryBlossomGrove extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenCherryBlossomGrove(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 5; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.pinkFlowersPerChunk = 15; - this.customBiomeDecorator.whiteFlowersPerChunk = 30; - this.customBiomeDecorator.tinyFlowersPerChunk = 25; - this.customBiomeDecorator.grassPerChunk = 15; - this.customBiomeDecorator.generatePumpkins = false; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(3) == 0 ? new WorldGenCherry2(false) : new WorldGenCherry1(false)); - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 10747818; - } - - public int getBiomeFoliageColor() - { - return 10747818; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenConiferousForest.java b/src/minecraft/biomesoplenty/biomes/BiomeGenConiferousForest.java deleted file mode 100644 index c666e8a0e..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenConiferousForest.java +++ /dev/null @@ -1,70 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.worldgen.WorldGenTaiga3; -import biomesoplenty.worldgen.WorldGenTaiga4; -import biomesoplenty.worldgen.WorldGenTaiga9; - -import net.minecraft.block.Block; -import net.minecraft.entity.passive.EntityWolf; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.SpawnListEntry; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenConiferousForest extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - @SuppressWarnings("unchecked") - public BiomeGenConiferousForest(int par1) - { - super(par1); - this.spawnableCreatureList.add(new SpawnListEntry(EntityWolf.class, 8, 4, 4)); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 6; - this.customBiomeDecorator.grassPerChunk = 10; - this.customBiomeDecorator.toadstoolsPerChunk = 3; - this.customBiomeDecorator.violetsPerChunk = 2; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(5) == 0 ? new WorldGenTaiga3(false) : (par1Random.nextInt(3) == 0 ? new WorldGenTaiga4(false) : new WorldGenTaiga9(false))); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return par1Random.nextInt(2) == 0 ? new WorldGenTallGrass(Block.tallGrass.blockID, 1) : new WorldGenTallGrass(Blocks.foliage.get().blockID, 2); - } - - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - int var5 = 3 + par2Random.nextInt(6); - - for (int var6 = 0; var6 < var5; ++var6) - { - int var7 = par3 + par2Random.nextInt(16); - int var8 = par2Random.nextInt(28) + 4; - int var9 = par4 + par2Random.nextInt(16); - int var10 = par1World.getBlockId(var7, var8, var9); - - if (var10 == Block.stone.blockID) - { - par1World.setBlock(var7, var8, var9, Block.oreEmerald.blockID, 0, 2); - } - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenCrag.java b/src/minecraft/biomesoplenty/biomes/BiomeGenCrag.java deleted file mode 100644 index a37069aff..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenCrag.java +++ /dev/null @@ -1,54 +0,0 @@ -package biomesoplenty.biomes; - -import java.awt.Color; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.configuration.BOPConfiguration; - -import net.minecraft.world.biome.BiomeGenBase; - -public class BiomeGenCrag extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenCrag(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = -999; - this.spawnableCreatureList.clear(); - this.spawnableWaterCreatureList.clear(); - this.topBlock = (byte)Blocks.cragRock.get().blockID; - this.fillerBlock = (byte)Blocks.cragRock.get().blockID; - this.waterColorMultiplier = 944693; - } - - /** - * takes temperature, returns color - */ - public int getSkyColorByTemp(float par1) - { - if (BOPConfiguration.skyColors = true) - { - return 4944498; - } - else - { - par1 /= 3.0F; - - if (par1 < -1.0F) - { - par1 = -1.0F; - } - - if (par1 > 1.0F) - { - par1 = 1.0F; - } - - return Color.getHSBColor(0.62222224F - par1 * 0.05F, 0.5F + par1 * 0.1F, 1.0F).getRGB(); - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenDeadForest.java b/src/minecraft/biomesoplenty/biomes/BiomeGenDeadForest.java deleted file mode 100644 index 6663d0eed..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenDeadForest.java +++ /dev/null @@ -1,90 +0,0 @@ -package biomesoplenty.biomes; - -import java.awt.Color; -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.configuration.BOPConfiguration; -import biomesoplenty.worldgen.WorldGenDeadTree; -import biomesoplenty.worldgen.WorldGenDeadTree2; -import biomesoplenty.worldgen.WorldGenTaiga5; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenDeadForest extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenDeadForest(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 3; - this.customBiomeDecorator.grassPerChunk = 1; - this.customBiomeDecorator.thornsPerChunk = 2; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.reedsPerChunk = -999; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return par1Random.nextInt(9) == 0 ? new WorldGenTallGrass(Block.tallGrass.blockID, 0) : new WorldGenTallGrass(Blocks.foliage.get().blockID, 1); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(3) == 0 ? new WorldGenDeadTree(false) : (par1Random.nextInt(4) == 0 ? new WorldGenTaiga5(false): new WorldGenDeadTree2(false))); - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 12362085; - } - - public int getBiomeFoliageColor() - { - return 12362085; - } - - /** - * takes temperature, returns color - */ - public int getSkyColorByTemp(float par1) - { - if (BOPConfiguration.skyColors = true) - { - return 9873591; - } - else - { - par1 /= 3.0F; - - if (par1 < -1.0F) - { - par1 = -1.0F; - } - - if (par1 > 1.0F) - { - par1 = 1.0F; - } - - return Color.getHSBColor(0.62222224F - par1 * 0.05F, 0.5F + par1 * 0.1F, 1.0F).getRGB(); - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenDeadSwamp.java b/src/minecraft/biomesoplenty/biomes/BiomeGenDeadSwamp.java deleted file mode 100644 index 96be824b1..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenDeadSwamp.java +++ /dev/null @@ -1,94 +0,0 @@ -package biomesoplenty.biomes; - -import java.awt.Color; -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.configuration.BOPConfiguration; -import biomesoplenty.worldgen.WorldGenDeadTree; - -import net.minecraft.block.Block; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenDeadSwamp extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenDeadSwamp(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 2; - this.customBiomeDecorator.grassPerChunk = 25; - this.customBiomeDecorator.highGrassPerChunk = 1; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.reedsPerChunk = -999; - this.customBiomeDecorator.mudPerChunk = 3; - this.customBiomeDecorator.mudPerChunk2 = 3; - this.customBiomeDecorator.sandPerChunk = -999; - this.customBiomeDecorator.sandPerChunk2 = -999; - this.spawnableCreatureList.clear(); - this.spawnableWaterCreatureList.clear(); - this.waterColorMultiplier = 10661201; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return par1Random.nextInt(9) == 0 ? new WorldGenTallGrass(Block.tallGrass.blockID, 1) : new WorldGenTallGrass(Blocks.foliage.get().blockID, 2); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return new WorldGenDeadTree(false); - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 6713420; - } - - public int getBiomeFoliageColor() - { - return 6713420; - } - - /** - * takes temperature, returns color - */ - public int getSkyColorByTemp(float par1) - { - if (BOPConfiguration.skyColors = true) - { - return 6451816; - } - else - { - par1 /= 3.0F; - - if (par1 < -1.0F) - { - par1 = -1.0F; - } - - if (par1 > 1.0F) - { - par1 = 1.0F; - } - - return Color.getHSBColor(0.62222224F - par1 * 0.05F, 0.5F + par1 * 0.1F, 1.0F).getRGB(); - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenDeadlands.java b/src/minecraft/biomesoplenty/biomes/BiomeGenDeadlands.java deleted file mode 100644 index 36cf061f0..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenDeadlands.java +++ /dev/null @@ -1,108 +0,0 @@ -package biomesoplenty.biomes; - -import java.awt.Color; -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.entity.monster.EntityCreeper; -import net.minecraft.entity.passive.EntityBat; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.SpawnListEntry; -import net.minecraft.world.gen.feature.WorldGenMinable; -import net.minecraft.world.gen.feature.WorldGenerator; -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPConfiguration; -import biomesoplenty.worldgen.WorldGenDeadTree3; -import biomesoplenty.worldgen.WorldGenDeadlands; - -public class BiomeGenDeadlands extends BiomeGenBase -{ - private WorldGenerator theWorldGenerator; - private BiomeDecoratorBOP customBiomeDecorator; - - @SuppressWarnings("unchecked") - public BiomeGenDeadlands(int par1) - { - super(par1); - this.topBlock = (byte)Blocks.ash.get().blockID; - this.fillerBlock = (byte)Blocks.ash.get().blockID; - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 1; - this.customBiomeDecorator.grassPerChunk = 15; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.mushroomsPerChunk = -999; - this.customBiomeDecorator.sandPerChunk = -999; - this.customBiomeDecorator.sandPerChunk2 = -999; - this.customBiomeDecorator.lavaLakesPerChunk = 25; - this.customBiomeDecorator.generatePits = true; - this.customBiomeDecorator.generateSmolderingGrass = true; - this.waterColorMultiplier = 16711680; - this.spawnableCreatureList.clear(); - this.spawnableWaterCreatureList.clear(); - this.spawnableCreatureList.add(new SpawnListEntry(EntityCreeper.class, 30, 1, 7)); - this.spawnableCaveCreatureList.add(new SpawnListEntry(EntityBat.class, 10, 8, 8)); - this.theWorldGenerator = new WorldGenMinable(Block.silverfish.blockID, 8); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return new WorldGenDeadTree3(false); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return new WorldGenDeadlands(); - } - - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - int var5 = 3 + par2Random.nextInt(6); - int var6; - int var7; - int var8; - - for (var5 = 0; var5 < 7; ++var5) - { - var6 = par3 + par2Random.nextInt(16); - var7 = par2Random.nextInt(64); - var8 = par4 + par2Random.nextInt(16); - this.theWorldGenerator.generate(par1World, par2Random, var6, var7, var8); - } - } - - /** - * takes temperature, returns color - */ - public int getSkyColorByTemp(float par1) - { - if (BOPConfiguration.skyColors = true) - { - return 4464929; - } - else - { - par1 /= 3.0F; - - if (par1 < -1.0F) - { - par1 = -1.0F; - } - - if (par1 > 1.0F) - { - par1 = 1.0F; - } - - return Color.getHSBColor(0.62222224F - par1 * 0.05F, 0.5F + par1 * 0.1F, 1.0F).getRGB(); - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenDeciduousForest.java b/src/minecraft/biomesoplenty/biomes/BiomeGenDeciduousForest.java deleted file mode 100644 index d40451568..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenDeciduousForest.java +++ /dev/null @@ -1,62 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.worldgen.WorldGenDeciduous; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenShrub; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenDeciduousForest extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenDeciduousForest(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 15; - this.customBiomeDecorator.grassPerChunk = 10; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.toadstoolsPerChunk = 1; - this.customBiomeDecorator.bushesPerChunk = 8; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(4) == 0 ? new WorldGenShrub(2,2) : new WorldGenDeciduous(false)); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return par1Random.nextInt(5) == 0 ? new WorldGenTallGrass(Blocks.foliage.get().blockID, 2) : new WorldGenTallGrass(Blocks.foliage.get().blockID, 1); - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 12695369; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 12896570; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenDesertNew.java b/src/minecraft/biomesoplenty/biomes/BiomeGenDesertNew.java deleted file mode 100644 index b6d38f5b9..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenDesertNew.java +++ /dev/null @@ -1,43 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenDesertWells; - -public class BiomeGenDesertNew extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenDesertNew(int par1) - { - super(par1); - this.spawnableCreatureList.clear(); - this.topBlock = (byte)Block.sand.blockID; - this.fillerBlock = (byte)Block.sand.blockID; - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = -999; - this.customBiomeDecorator.deadBushPerChunk = 2; - this.customBiomeDecorator.reedsPerChunk = 50; - this.customBiomeDecorator.cactiPerChunk = 10; - this.customBiomeDecorator.desertSproutsPerChunk = 1; - this.customBiomeDecorator.tinyCactiPerChunk = 5; - this.customBiomeDecorator.quicksand2PerChunk = 3; - } - - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - - if (par2Random.nextInt(1000) == 0) - { - int var5 = par3 + par2Random.nextInt(16) + 8; - int var6 = par4 + par2Random.nextInt(16) + 8; - WorldGenDesertWells var7 = new WorldGenDesertWells(); - var7.generate(par1World, par2Random, var5, par1World.getHeightValue(var5, var6) + 1, var6); - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenDrylands.java b/src/minecraft/biomesoplenty/biomes/BiomeGenDrylands.java deleted file mode 100644 index 45b0a8cdc..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenDrylands.java +++ /dev/null @@ -1,47 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenShrub; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenDrylands extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenDrylands(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 4; - this.customBiomeDecorator.thornsPerChunk = 4; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.quicksandPerChunk = 4; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(5) == 0 ? new WorldGenShrub(0, 0) : this.worldGeneratorTrees); - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 13404780; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 13407596; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenDunes.java b/src/minecraft/biomesoplenty/biomes/BiomeGenDunes.java deleted file mode 100644 index 29583fe19..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenDunes.java +++ /dev/null @@ -1,56 +0,0 @@ -package biomesoplenty.biomes; - -import java.awt.Color; - -import biomesoplenty.configuration.BOPConfiguration; - -import net.minecraft.block.Block; -import net.minecraft.world.biome.BiomeGenBase; - -public class BiomeGenDunes extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenDunes(int par1) - { - super(par1); - this.spawnableCreatureList.clear(); - this.topBlock = (byte)Block.sand.blockID; - this.fillerBlock = (byte)Block.sand.blockID; - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = -999; - this.customBiomeDecorator.deadBushPerChunk = -999; - this.customBiomeDecorator.duneGrassPerChunk = 10; - this.customBiomeDecorator.desertSproutsPerChunk = 5; - this.customBiomeDecorator.reedsPerChunk = -999; - this.customBiomeDecorator.generateLakes = false; - } - - /** - * takes temperature, returns color - */ - public int getSkyColorByTemp(float par1) - { - if (BOPConfiguration.skyColors = true) - { - return 14203007; - } - else - { - par1 /= 3.0F; - - if (par1 < -1.0F) - { - par1 = -1.0F; - } - - if (par1 > 1.0F) - { - par1 = 1.0F; - } - - return Color.getHSBColor(0.62222224F - par1 * 0.05F, 0.5F + par1 * 0.1F, 1.0F).getRGB(); - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenFen.java b/src/minecraft/biomesoplenty/biomes/BiomeGenFen.java deleted file mode 100644 index 5980b8001..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenFen.java +++ /dev/null @@ -1,88 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.worldgen.WorldGenDeadTree; -import biomesoplenty.worldgen.WorldGenFen1; -import biomesoplenty.worldgen.WorldGenFen2; -import biomesoplenty.worldgen.WorldGenMoss; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenFen extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenFen(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 10; - this.customBiomeDecorator.grassPerChunk = 15; - this.customBiomeDecorator.highGrassPerChunk = 1; - this.customBiomeDecorator.waterlilyPerChunk = 1; - this.customBiomeDecorator.cattailsPerChunk = 1; - this.customBiomeDecorator.pondsPerChunk = 99; - this.customBiomeDecorator.toadstoolsPerChunk = 2; - this.customBiomeDecorator.mushroomsPerChunk = 8; - this.customBiomeDecorator.mudPerChunk = 1; - this.customBiomeDecorator.mudPerChunk2 = 1; - this.customBiomeDecorator.sandPerChunk = -999; - this.customBiomeDecorator.sandPerChunk2 = -999; - this.customBiomeDecorator.algaePerChunk = 1; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(3) == 0 ? new WorldGenFen2(false) : (par1Random.nextInt(20) == 0 ? new WorldGenDeadTree(false) : new WorldGenFen1())); - } - - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - WorldGenMoss var5 = new WorldGenMoss(); - - for (int var6 = 0; var6 < 20; ++var6) - { - int var7 = par3 + par2Random.nextInt(16) + 8; - byte var8 = 58; - int var9 = par4 + par2Random.nextInt(16) + 8; - var5.generate(par1World, par2Random, var7, var8, var9); - } - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return (par1Random.nextInt(4) == 0 ? new WorldGenTallGrass(Block.tallGrass.blockID, 1) : (par1Random.nextInt(3) == 0 ? new WorldGenTallGrass(Blocks.foliage.get().blockID, 2) : new WorldGenTallGrass(Blocks.foliage.get().blockID, 1))); - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 12240001; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 13547897; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenField.java b/src/minecraft/biomesoplenty/biomes/BiomeGenField.java deleted file mode 100644 index 5e4dbd663..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenField.java +++ /dev/null @@ -1,50 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.worldgen.WorldGenTaiga5; -import biomesoplenty.worldgen.WorldGenTaiga8; - -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenShrub; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenField extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenField(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 1; - this.customBiomeDecorator.flowersPerChunk = 1; - this.customBiomeDecorator.grassPerChunk = 25; - this.customBiomeDecorator.generatePumpkins = false; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(4) == 0 ? new WorldGenTaiga5(false) : (par1Random.nextInt(8) == 0 ? new WorldGenTaiga8(false) : (par1Random.nextInt(2) == 0 ? this.worldGeneratorTrees : new WorldGenShrub(0,0)))); - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 11186770; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 10467150; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenForestNew.java b/src/minecraft/biomesoplenty/biomes/BiomeGenForestNew.java deleted file mode 100644 index 9ce391ae6..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenForestNew.java +++ /dev/null @@ -1,52 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.worldgen.WorldGenMoss; - -import net.minecraft.entity.passive.EntityWolf; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.SpawnListEntry; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenForestNew extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - @SuppressWarnings("unchecked") - public BiomeGenForestNew(int par1) - { - super(par1); - this.spawnableCreatureList.add(new SpawnListEntry(EntityWolf.class, 5, 4, 4)); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 10; - this.customBiomeDecorator.grassPerChunk = 2; - this.customBiomeDecorator.hydrangeasPerChunk = 2; - this.customBiomeDecorator.whiteFlowersPerChunk = 1; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - //return (WorldGenerator)(par1Random.nextInt(3) == 0 ? new WorldGenWhiteOak1() : (par1Random.nextInt(5) == 0 ? new WorldGenAlder2() : (par1Random.nextInt(8) == 0 ? new WorldGenAlder1() : (par1Random.nextInt(4) == 0 ? new WorldGenPaperBirch2() : (par1Random.nextInt(7) == 0 ? new WorldGenPaperBirch1() : new WorldGenWhiteOak2()))))); - return (WorldGenerator)(par1Random.nextInt(5) == 0 ? this.worldGeneratorForest : (par1Random.nextInt(10) == 0 ? this.worldGeneratorBigTree : this.worldGeneratorTrees)); - } - - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - WorldGenMoss var5 = new WorldGenMoss(); - - for (int var6 = 0; var6 < 20; ++var6) - { - int var7 = par3 + par2Random.nextInt(16) + 8; - byte var8 = 58; - int var9 = par4 + par2Random.nextInt(16) + 8; - var5.generate(par1World, par2Random, var7, var8, var9); - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenFrostForest.java b/src/minecraft/biomesoplenty/biomes/BiomeGenFrostForest.java deleted file mode 100644 index 04620ea54..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenFrostForest.java +++ /dev/null @@ -1,77 +0,0 @@ -package biomesoplenty.biomes; - -import java.awt.Color; -import java.util.Random; - -import biomesoplenty.configuration.BOPConfiguration; - -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenFrostForest extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenFrostForest(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 3; - this.customBiomeDecorator.grassPerChunk = 1; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.mushroomsPerChunk = -999; - this.customBiomeDecorator.generatePumpkins = false; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return this.worldGeneratorTrees; - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 11261628; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 11261628; - } - - /** - * takes temperature, returns color - */ - public int getSkyColorByTemp(float par1) - { - if (BOPConfiguration.skyColors = true) - { - return 13557994; - } - else - { - par1 /= 3.0F; - - if (par1 < -1.0F) - { - par1 = -1.0F; - } - - if (par1 > 1.0F) - { - par1 = 1.0F; - } - - return Color.getHSBColor(0.62222224F - par1 * 0.05F, 0.5F + par1 * 0.1F, 1.0F).getRGB(); - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenFungiForest.java b/src/minecraft/biomesoplenty/biomes/BiomeGenFungiForest.java deleted file mode 100644 index 740f7f7e9..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenFungiForest.java +++ /dev/null @@ -1,106 +0,0 @@ -package biomesoplenty.biomes; - -import java.awt.Color; -import java.util.Random; - -import biomesoplenty.configuration.BOPConfiguration; -import biomesoplenty.worldgen.WorldGenMoss; -import biomesoplenty.worldgen.WorldGenSwampTall; -import biomesoplenty.worldgen.WorldGenThickTree; - -import net.minecraft.entity.passive.EntityMooshroom; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.SpawnListEntry; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenFungiForest extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - @SuppressWarnings("unchecked") - public BiomeGenFungiForest(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 4; - this.customBiomeDecorator.grassPerChunk = 5; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.mushroomsPerChunk = 8; - this.customBiomeDecorator.bigMushroomsPerChunk = 4; - this.customBiomeDecorator.toadstoolsPerChunk = 5; - this.customBiomeDecorator.blueFlowersPerChunk = 3; - this.customBiomeDecorator.generateMycelium = true; - this.customBiomeDecorator.generatePumpkins = false; - this.waterColorMultiplier = 65326; - this.spawnableCreatureList.clear(); - this.spawnableWaterCreatureList.clear(); - this.spawnableCreatureList.add(new SpawnListEntry(EntityMooshroom.class, 3, 4, 8)); - } - - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - WorldGenMoss var5 = new WorldGenMoss(); - - for (int var6 = 0; var6 < 20; ++var6) - { - int var7 = par3 + par2Random.nextInt(16) + 8; - byte var8 = 58; - int var9 = par4 + par2Random.nextInt(16) + 8; - var5.generate(par1World, par2Random, var7, var8, var9); - } - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(3) == 0 ? new WorldGenThickTree(false) : new WorldGenSwampTall()); - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 5359235; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 5359235; - } - - /** - * takes temperature, returns color - */ - public int getSkyColorByTemp(float par1) - { - if (BOPConfiguration.skyColors = true) - { - return 5888980; - } - else - { - par1 /= 3.0F; - - if (par1 < -1.0F) - { - par1 = -1.0F; - } - - if (par1 > 1.0F) - { - par1 = 1.0F; - } - - return Color.getHSBColor(0.62222224F - par1 * 0.05F, 0.5F + par1 * 0.1F, 1.0F).getRGB(); - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenGarden.java b/src/minecraft/biomesoplenty/biomes/BiomeGenGarden.java deleted file mode 100644 index 7f6776dbb..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenGarden.java +++ /dev/null @@ -1,94 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.mobs.EntityRosester; -import biomesoplenty.worldgen.WorldGenGiantFlowerRed; -import biomesoplenty.worldgen.WorldGenGiantFlowerYellow; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.SpawnListEntry; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenGarden extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - @SuppressWarnings("unchecked") - public BiomeGenGarden(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 1; - this.customBiomeDecorator.flowersPerChunk = 20; - this.customBiomeDecorator.whiteFlowersPerChunk = 25; - this.customBiomeDecorator.tinyFlowersPerChunk = 15; - this.customBiomeDecorator.sproutsPerChunk = 1; - this.customBiomeDecorator.rosesPerChunk = 20; - this.customBiomeDecorator.grassPerChunk = 25; - this.customBiomeDecorator.sandPerChunk = -999; - this.customBiomeDecorator.sandPerChunk2 = -999; - this.customBiomeDecorator.bushesPerChunk = 10; - this.customBiomeDecorator.generatePumpkins = false; - this.spawnableCreatureList.clear(); - this.spawnableCreatureList.add(new SpawnListEntry(EntityRosester.class, 10, 4, 4)); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return par1Random.nextInt(3) == 0 ? new WorldGenTallGrass(Blocks.foliage.get().blockID, 1) : new WorldGenTallGrass(Block.tallGrass.blockID, 1); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(3) == 0 ? new WorldGenGiantFlowerRed() : new WorldGenGiantFlowerYellow()); - } - - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - int var5 = 3 + par2Random.nextInt(6); - - for (int var6 = 0; var6 < var5; ++var6) - { - int var7 = par3 + par2Random.nextInt(16); - int var8 = par2Random.nextInt(28) + 4; - int var9 = par4 + par2Random.nextInt(16); - int var10 = par1World.getBlockId(var7, var8, var9); - - if (var10 == Block.stone.blockID) - { - par1World.setBlock(var7, var8, var9, Block.oreEmerald.blockID, 0, 2); - } - } - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 3785757; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 5364530; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenGlacier.java b/src/minecraft/biomesoplenty/biomes/BiomeGenGlacier.java deleted file mode 100644 index d9f866ab7..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenGlacier.java +++ /dev/null @@ -1,26 +0,0 @@ -package biomesoplenty.biomes; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.world.biome.BiomeGenBase; - -public class BiomeGenGlacier extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenGlacier(int par1) - { - super(par1); - this.spawnableCreatureList.clear(); - this.topBlock = (byte)Blocks.hardIce.get().blockID; - this.fillerBlock = (byte)Blocks.hardIce.get().blockID; - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = -999; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.grassPerChunk = -999; - this.customBiomeDecorator.sandPerChunk = -999; - this.customBiomeDecorator.sandPerChunk2 = -999; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenGrassland.java b/src/minecraft/biomesoplenty/biomes/BiomeGenGrassland.java deleted file mode 100644 index a0ebdc2ec..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenGrassland.java +++ /dev/null @@ -1,84 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.entity.passive.EntityChicken; -import net.minecraft.entity.passive.EntityCow; -import net.minecraft.entity.passive.EntityPig; -import net.minecraft.entity.passive.EntitySheep; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.SpawnListEntry; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenGrassland extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - @SuppressWarnings("unchecked") - public BiomeGenGrassland(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = -999; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.grassPerChunk = 2; - this.customBiomeDecorator.reedsPerChunk = 25; - this.customBiomeDecorator.mushroomsPerChunk = 20; - this.customBiomeDecorator.sandPerChunk = -999; - this.customBiomeDecorator.sandPerChunk2 = -999; - this.customBiomeDecorator.waterLakesPerChunk = 15; - this.customBiomeDecorator.generatePumpkins = false; - this.spawnableCreatureList.add(new SpawnListEntry(EntitySheep.class, 14, 4, 4)); - this.spawnableCreatureList.add(new SpawnListEntry(EntityPig.class, 12, 4, 4)); - this.spawnableCreatureList.add(new SpawnListEntry(EntityChicken.class, 12, 4, 4)); - this.spawnableCreatureList.add(new SpawnListEntry(EntityCow.class, 10, 4, 4)); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return par1Random.nextInt(3) == 0 ? new WorldGenTallGrass(Blocks.foliage.get().blockID, 2) : new WorldGenTallGrass(Blocks.foliage.get().blockID, 1); - } - - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - int var5 = 3 + par2Random.nextInt(6); - - for (int var6 = 0; var6 < var5; ++var6) - { - int var7 = par3 + par2Random.nextInt(16); - int var8 = par2Random.nextInt(28) + 4; - int var9 = par4 + par2Random.nextInt(16); - int var10 = par1World.getBlockId(var7, var8, var9); - - if (var10 == Block.stone.blockID) - { - par1World.setBlock(var7, var8, var9, Block.oreEmerald.blockID, 0, 2); - } - } - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 8379261; - } - - public int getBiomeFoliageColor() - { - return 8379261; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenGrove.java b/src/minecraft/biomesoplenty/biomes/BiomeGenGrove.java deleted file mode 100644 index 9b1dc603f..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenGrove.java +++ /dev/null @@ -1,49 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenShrub; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenGrove extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenGrove(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 6; - this.customBiomeDecorator.flowersPerChunk = 5; - this.customBiomeDecorator.grassPerChunk = 10; - this.customBiomeDecorator.sproutsPerChunk = 2; - this.customBiomeDecorator.generatePumpkins = false; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(2) == 0 ? new WorldGenShrub(2,2) : this.worldGeneratorBigTree); - //return (WorldGenerator)(par1Random.nextInt(3) == 0 ? new WorldGenNorwaySpruce1() : new WorldGenNorwaySpruce2()); - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 8298592; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 7445333; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenHeathland.java b/src/minecraft/biomesoplenty/biomes/BiomeGenHeathland.java deleted file mode 100644 index 9741e9e84..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenHeathland.java +++ /dev/null @@ -1,51 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.worldgen.WorldGenHeath; - -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenShrub; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenHeathland extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenHeathland(int par1) - { - super(par1); - this.spawnableCreatureList.clear(); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 2; - this.customBiomeDecorator.grassPerChunk = 10; - this.customBiomeDecorator.purpleFlowersPerChunk = 30; - this.customBiomeDecorator.deadBushPerChunk = 2; - this.customBiomeDecorator.generatePumpkins = false; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(3) == 0 ? new WorldGenShrub(0, 0) : new WorldGenHeath(false)); - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 13550967; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 11454081; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenHighland.java b/src/minecraft/biomesoplenty/biomes/BiomeGenHighland.java deleted file mode 100644 index 8d7310844..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenHighland.java +++ /dev/null @@ -1,20 +0,0 @@ -package biomesoplenty.biomes; - -import net.minecraft.world.biome.BiomeGenBase; - -public class BiomeGenHighland extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenHighland(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = -999; - this.customBiomeDecorator.highGrassPerChunk = 25; - this.customBiomeDecorator.grassPerChunk = 25; - this.customBiomeDecorator.potatoesPerChunk = -999; - this.customBiomeDecorator.generateBoulders = true; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenHillsNew.java b/src/minecraft/biomesoplenty/biomes/BiomeGenHillsNew.java deleted file mode 100644 index 91543ad4e..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenHillsNew.java +++ /dev/null @@ -1,54 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenMinable; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenHillsNew extends BiomeGenBase -{ - private WorldGenerator theWorldGenerator; - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenHillsNew(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.violetsPerChunk = 5; - this.theWorldGenerator = new WorldGenMinable(Block.silverfish.blockID, 8); - } - - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - int var5 = 3 + par2Random.nextInt(6); - int var6; - int var7; - int var8; - - for (var6 = 0; var6 < var5; ++var6) - { - var7 = par3 + par2Random.nextInt(16); - var8 = par2Random.nextInt(28) + 4; - int var9 = par4 + par2Random.nextInt(16); - int var10 = par1World.getBlockId(var7, var8, var9); - - if (var10 == Block.stone.blockID) - { - par1World.setBlock(var7, var8, var9, Block.oreEmerald.blockID, 0, 2); - } - } - - for (var5 = 0; var5 < 7; ++var5) - { - var6 = par3 + par2Random.nextInt(16); - var7 = par2Random.nextInt(64); - var8 = par4 + par2Random.nextInt(16); - this.theWorldGenerator.generate(par1World, par2Random, var6, var7, var8); - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenIceSheet.java b/src/minecraft/biomesoplenty/biomes/BiomeGenIceSheet.java deleted file mode 100644 index a8ac17d6f..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenIceSheet.java +++ /dev/null @@ -1,24 +0,0 @@ -package biomesoplenty.biomes; - -import net.minecraft.block.Block; -import net.minecraft.world.biome.BiomeGenBase; - -public class BiomeGenIceSheet extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenIceSheet(int par1) - { - super(par1); - this.spawnableCreatureList.clear(); - this.topBlock = (byte)Block.ice.blockID; - this.fillerBlock = (byte)Block.ice.blockID; - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = -999; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.grassPerChunk = -999; - this.customBiomeDecorator.sandPerChunk = -999; - this.customBiomeDecorator.sandPerChunk2 = -999; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenIcyHills.java b/src/minecraft/biomesoplenty/biomes/BiomeGenIcyHills.java deleted file mode 100644 index f877ed433..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenIcyHills.java +++ /dev/null @@ -1,68 +0,0 @@ -package biomesoplenty.biomes; - -import java.awt.Color; -import java.util.Random; - -import biomesoplenty.configuration.BOPConfiguration; -import biomesoplenty.worldgen.WorldGenIceTree; - -import net.minecraft.block.Block; -import net.minecraft.entity.monster.EntitySnowman; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.SpawnListEntry; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenIcyHills extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - @SuppressWarnings("unchecked") - public BiomeGenIcyHills(int par1) - { - super(par1); - this.spawnableCreatureList.clear(); - this.topBlock = (byte)Block.blockSnow.blockID; - this.fillerBlock = (byte)Block.blockSnow.blockID; - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 2; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.grassPerChunk = -999; - this.spawnableCreatureList.add(new SpawnListEntry(EntitySnowman.class, 30, 2, 4)); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return new WorldGenIceTree(false); - } - - /** - * takes temperature, returns color - */ - public int getSkyColorByTemp(float par1) - { - if (BOPConfiguration.skyColors = true) - { - return 16777215; - } - else - { - par1 /= 3.0F; - - if (par1 < -1.0F) - { - par1 = -1.0F; - } - - if (par1 > 1.0F) - { - par1 = 1.0F; - } - - return Color.getHSBColor(0.62222224F - par1 * 0.05F, 0.5F + par1 * 0.1F, 1.0F).getRGB(); - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenJadeCliffs.java b/src/minecraft/biomesoplenty/biomes/BiomeGenJadeCliffs.java deleted file mode 100644 index 278ee78a5..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenJadeCliffs.java +++ /dev/null @@ -1,97 +0,0 @@ -package biomesoplenty.biomes; - -import java.awt.Color; -import java.util.Random; - -import biomesoplenty.configuration.BOPConfiguration; -import biomesoplenty.worldgen.WorldGenJadeTree; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenShrub; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenJadeCliffs extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenJadeCliffs(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 12; - this.customBiomeDecorator.grassPerChunk = 3; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(4) == 0 ? new WorldGenShrub(0, 1) : new WorldGenJadeTree(false)); - } - - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - int var5 = 3 + par2Random.nextInt(6); - - for (int var6 = 0; var6 < var5; ++var6) - { - int var7 = par3 + par2Random.nextInt(16); - int var8 = par2Random.nextInt(28) + 4; - int var9 = par4 + par2Random.nextInt(16); - int var10 = par1World.getBlockId(var7, var8, var9); - - if (var10 == Block.stone.blockID) - { - par1World.setBlock(var7, var8, var9, Block.oreEmerald.blockID, 0, 2); - } - } - } - - /** - * takes temperature, returns color - */ - public int getSkyColorByTemp(float par1) - { - if (BOPConfiguration.skyColors = true) - { - return 12045485; - } - else - { - par1 /= 3.0F; - - if (par1 < -1.0F) - { - par1 = -1.0F; - } - - if (par1 > 1.0F) - { - par1 = 1.0F; - } - - return Color.getHSBColor(0.62222224F - par1 * 0.05F, 0.5F + par1 * 0.1F, 1.0F).getRGB(); - } - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 8168808; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 9096298; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenJungleNew.java b/src/minecraft/biomesoplenty/biomes/BiomeGenJungleNew.java deleted file mode 100644 index 3e0bab646..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenJungleNew.java +++ /dev/null @@ -1,90 +0,0 @@ -package biomesoplenty.biomes; - -import java.awt.Color; -import java.util.Random; - -import biomesoplenty.configuration.BOPConfiguration; -import biomesoplenty.mobs.EntityJungleSpider; - -import net.minecraft.block.Block; -import net.minecraft.entity.passive.EntityChicken; -import net.minecraft.entity.passive.EntityOcelot; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.SpawnListEntry; -import net.minecraft.world.gen.feature.WorldGenHugeTrees; -import net.minecraft.world.gen.feature.WorldGenShrub; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenTrees; -import net.minecraft.world.gen.feature.WorldGenVines; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenJungleNew extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - @SuppressWarnings("unchecked") - public BiomeGenJungleNew(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 45; - this.customBiomeDecorator.grassPerChunk = 25; - this.customBiomeDecorator.flowersPerChunk = 4; - this.customBiomeDecorator.orangeFlowersPerChunk = 5; - this.customBiomeDecorator.quicksandPerChunk = 1; - this.customBiomeDecorator.generateMelons = true; - this.waterColorMultiplier = 10745289; - this.spawnableMonsterList.add(new SpawnListEntry(EntityOcelot.class, 2, 1, 1)); - this.spawnableMonsterList.add(new SpawnListEntry(EntityJungleSpider.class, 12, 6, 6)); - this.spawnableCreatureList.add(new SpawnListEntry(EntityChicken.class, 10, 4, 4)); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - //return (WorldGenerator)(par1Random.nextInt(5) == 0 ? new WorldGenBrazilNut1() : (par1Random.nextInt(10) == 0 ? new WorldGenSandboxTree1() : (par1Random.nextInt(2) == 0 ? new WorldGenBrazilNut2() : (par1Random.nextInt(3) == 0 ? new WorldGenSandboxTree2() : new WorldGenShrub(3, 0))))); - return (WorldGenerator)(par1Random.nextInt(10) == 0 ? this.worldGeneratorBigTree : (par1Random.nextInt(2) == 0 ? new WorldGenShrub(3, 0) : (par1Random.nextInt(3) == 0 ? new WorldGenHugeTrees(false, 10 + par1Random.nextInt(20), 3, 3) : new WorldGenTrees(false, 4 + par1Random.nextInt(7), 3, 3, true)))); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return par1Random.nextInt(4) == 0 ? new WorldGenTallGrass(Block.tallGrass.blockID, 2) : new WorldGenTallGrass(Block.tallGrass.blockID, 1); - } - - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - WorldGenVines var5 = new WorldGenVines(); - - for (int var6 = 0; var6 < 50; ++var6) - { - int var7 = par3 + par2Random.nextInt(16) + 8; - byte var8 = 32; - int var9 = par4 + par2Random.nextInt(16) + 8; - var5.generate(par1World, par2Random, var7, var8, var9); - } - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 5232218; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 3266623; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenLushDesert.java b/src/minecraft/biomesoplenty/biomes/BiomeGenLushDesert.java deleted file mode 100644 index f7b41780d..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenLushDesert.java +++ /dev/null @@ -1,46 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.worldgen.WorldGenAcacia; - -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenShrub; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenLushDesert extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenLushDesert(int par1) - { - super(par1); - this.topBlock = (byte)Blocks.redRock.get().blockID; - this.fillerBlock = (byte)Blocks.redRock.get().blockID; - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 8; - this.customBiomeDecorator.grassPerChunk = 8; - this.customBiomeDecorator.oasesPerChunk = 999; - this.customBiomeDecorator.oasesPerChunk2 = 999; - this.customBiomeDecorator.deadBushPerChunk = 2; - this.customBiomeDecorator.purpleFlowersPerChunk = 5; - this.customBiomeDecorator.desertGrassPerChunk = 10; - this.customBiomeDecorator.desertCactiPerChunk = 10; - this.customBiomeDecorator.cactiPerChunk = 20; - this.customBiomeDecorator.tinyCactiPerChunk = 5; - this.customBiomeDecorator.generateGrass = true; - this.customBiomeDecorator.generateSand = true; - this.customBiomeDecorator.generatePumpkins = false; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(3) == 0 ? new WorldGenAcacia(false) : new WorldGenShrub(0, 0)); - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenLushSwamp.java b/src/minecraft/biomesoplenty/biomes/BiomeGenLushSwamp.java deleted file mode 100644 index 03fd1fe12..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenLushSwamp.java +++ /dev/null @@ -1,60 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.worldgen.WorldGenSwampTall; - -import net.minecraft.block.Block; -import net.minecraft.entity.monster.EntitySlime; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.SpawnListEntry; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenLushSwamp extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - @SuppressWarnings("unchecked") - public BiomeGenLushSwamp(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 10; - this.customBiomeDecorator.grassPerChunk = 4; - this.customBiomeDecorator.mushroomsPerChunk = 8; - this.customBiomeDecorator.reedsPerChunk = 16; - this.customBiomeDecorator.cattailsPerChunk = 10; - this.customBiomeDecorator.waterlilyPerChunk = 3; - this.customBiomeDecorator.hydrangeasPerChunk = 1; - this.spawnableMonsterList.add(new SpawnListEntry(EntitySlime.class, 1, 1, 1)); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(2) == 0 ? new WorldGenSwampTall() : this.worldGeneratorSwamp); - } - - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - int var5 = 3 + par2Random.nextInt(6); - - for (int var6 = 0; var6 < var5; ++var6) - { - int var7 = par3 + par2Random.nextInt(16); - int var8 = par2Random.nextInt(28) + 4; - int var9 = par4 + par2Random.nextInt(16); - int var10 = par1World.getBlockId(var7, var8, var9); - - if (var10 == Block.stone.blockID) - { - par1World.setBlock(var7, var8, var9, Block.oreEmerald.blockID, 0, 2); - } - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenMangrove.java b/src/minecraft/biomesoplenty/biomes/BiomeGenMangrove.java deleted file mode 100644 index f999f09c8..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenMangrove.java +++ /dev/null @@ -1,38 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.worldgen.WorldGenMangrove; - -import net.minecraft.block.Block; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenMangrove extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenMangrove(int par1) - { - super(par1); - this.spawnableCreatureList.clear(); - this.topBlock = (byte)Block.sand.blockID; - this.fillerBlock = (byte)Block.sand.blockID; - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 6; - this.customBiomeDecorator.deadBushPerChunk = 1; - this.customBiomeDecorator.deadGrassPerChunk = 9; - this.customBiomeDecorator.reedsPerChunk = -999; - this.customBiomeDecorator.cactiPerChunk = -999; - this.customBiomeDecorator.desertSproutsPerChunk = 1; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return new WorldGenMangrove(false); - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenMapleWoods.java b/src/minecraft/biomesoplenty/biomes/BiomeGenMapleWoods.java deleted file mode 100644 index 897ae2b8b..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenMapleWoods.java +++ /dev/null @@ -1,32 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.worldgen.WorldGenMaple; -import biomesoplenty.worldgen.WorldGenTaiga5; - -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenMapleWoods extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenMapleWoods(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 9; - this.customBiomeDecorator.grassPerChunk = 1; - this.customBiomeDecorator.violetsPerChunk = 1; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(6) == 0 ? new WorldGenTaiga5(false) : new WorldGenMaple(false)); - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenMarsh.java b/src/minecraft/biomesoplenty/biomes/BiomeGenMarsh.java deleted file mode 100644 index 96dcfd93b..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenMarsh.java +++ /dev/null @@ -1,55 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.worldgen.WorldGenMarsh; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenMarsh extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenMarsh(int par1) - { - super(par1); - this.spawnableCreatureList.clear(); - this.spawnableWaterCreatureList.clear(); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = -999; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.grassPerChunk = 65; - this.customBiomeDecorator.highGrassPerChunk = 25; - this.customBiomeDecorator.generatePumpkins = false; - } - - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - WorldGenMarsh var5 = new WorldGenMarsh(); - - for (int var6 = 0; var6 < 25; ++var6) - { - int var7 = par3 + par2Random.nextInt(16) + 8; - byte var8 = 62; - int var9 = par4 + par2Random.nextInt(16) + 8; - var5.generate(par1World, par2Random, var7, var8, var9); - } - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return par1Random.nextInt(2) == 0 ? new WorldGenTallGrass(Block.tallGrass.blockID, 1) : new WorldGenTallGrass(Blocks.foliage.get().blockID, 1); - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenMeadow.java b/src/minecraft/biomesoplenty/biomes/BiomeGenMeadow.java deleted file mode 100644 index e8bdd0f02..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenMeadow.java +++ /dev/null @@ -1,71 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenShrub; -import net.minecraft.world.gen.feature.WorldGenTaiga2; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenMeadow extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenMeadow(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 2; - this.customBiomeDecorator.grassPerChunk = 10; - this.customBiomeDecorator.tinyFlowersPerChunk = 14; - this.customBiomeDecorator.flowersPerChunk = 10; - this.customBiomeDecorator.carrotsPerChunk = -999; - this.customBiomeDecorator.sandPerChunk = -999; - this.customBiomeDecorator.sandPerChunk2 = -999; - this.customBiomeDecorator.hydrangeasPerChunk = 3; - this.customBiomeDecorator.generatePumpkins = false; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(3) == 0 ? new WorldGenTaiga2(false) : new WorldGenShrub(0, 1)); - } - - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - int var5 = 3 + par2Random.nextInt(6); - - for (int var6 = 0; var6 < var5; ++var6) - { - int var7 = par3 + par2Random.nextInt(16); - int var8 = par2Random.nextInt(28) + 4; - int var9 = par4 + par2Random.nextInt(16); - int var10 = par1World.getBlockId(var7, var8, var9); - - if (var10 == Block.stone.blockID) - { - par1World.setBlock(var7, var8, var9, Block.oreEmerald.blockID, 0, 2); - } - } - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 6533741; - } - - public int getBiomeFoliageColor() - { - return 6533741; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenMesa.java b/src/minecraft/biomesoplenty/biomes/BiomeGenMesa.java deleted file mode 100644 index b013421fc..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenMesa.java +++ /dev/null @@ -1,59 +0,0 @@ -package biomesoplenty.biomes; - -import java.awt.Color; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.configuration.BOPConfiguration; - -import net.minecraft.entity.monster.EntitySpider; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.SpawnListEntry; - -public class BiomeGenMesa extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - @SuppressWarnings("unchecked") - public BiomeGenMesa(int par1) - { - super(par1); - this.spawnableCreatureList.clear(); - this.topBlock = (byte)Blocks.redRock.get().blockID; - this.fillerBlock = (byte)Blocks.redRock.get().blockID; - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = -999; - this.customBiomeDecorator.deadBushPerChunk = 2; - this.customBiomeDecorator.desertGrassPerChunk = 10; - this.customBiomeDecorator.tinyCactiPerChunk = 2; - this.spawnableMonsterList.add(new SpawnListEntry(EntitySpider.class, 15, 2, 6)); - } - - /** - * takes temperature, returns color - */ - public int getSkyColorByTemp(float par1) - { - if (BOPConfiguration.skyColors = true) - { - return 15898486; - } - else - { - par1 /= 3.0F; - - if (par1 < -1.0F) - { - par1 = -1.0F; - } - - if (par1 > 1.0F) - { - par1 = 1.0F; - } - - return Color.getHSBColor(0.62222224F - par1 * 0.05F, 0.5F + par1 * 0.1F, 1.0F).getRGB(); - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenMoor.java b/src/minecraft/biomesoplenty/biomes/BiomeGenMoor.java deleted file mode 100644 index 336fa18e2..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenMoor.java +++ /dev/null @@ -1,101 +0,0 @@ -package biomesoplenty.biomes; - -import java.awt.Color; -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.configuration.BOPConfiguration; -import biomesoplenty.worldgen.WorldGenMoor; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenMoor extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenMoor(int par1) - { - super(par1); - this.spawnableCreatureList.clear(); - this.spawnableWaterCreatureList.clear(); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = -999; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.grassPerChunk = 15; - this.customBiomeDecorator.sandPerChunk = -999; - this.customBiomeDecorator.sandPerChunk2 = -999; - this.customBiomeDecorator.mudPerChunk = 1; - this.customBiomeDecorator.mudPerChunk2 = 1; - this.waterColorMultiplier = 5800566; - this.customBiomeDecorator.generatePumpkins = false; - } - - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - WorldGenMoor var5 = new WorldGenMoor(); - - for (int var6 = 0; var6 < 16; ++var6) - { - int var7 = par3 + par2Random.nextInt(16) + 8; - byte var8 = 64; - int var9 = par4 + par2Random.nextInt(16) + 8; - var5.generate(par1World, par2Random, var7, var8, var9); - } - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return (par1Random.nextInt(4) == 0 ? new WorldGenTallGrass(Block.tallGrass.blockID, 1) : (par1Random.nextInt(3) == 0 ? new WorldGenTallGrass(Blocks.foliage.get().blockID, 2) : new WorldGenTallGrass(Blocks.foliage.get().blockID, 1))); - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 6394725; - } - - public int getBiomeFoliageColor() - { - return 6394725; - } - - /** - * takes temperature, returns color - */ - public int getSkyColorByTemp(float par1) - { - if (BOPConfiguration.skyColors = true) - { - return 10536403; - } - else - { - par1 /= 3.0F; - - if (par1 < -1.0F) - { - par1 = -1.0F; - } - - if (par1 > 1.0F) - { - par1 = 1.0F; - } - - return Color.getHSBColor(0.62222224F - par1 * 0.05F, 0.5F + par1 * 0.1F, 1.0F).getRGB(); - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenMountain.java b/src/minecraft/biomesoplenty/biomes/BiomeGenMountain.java deleted file mode 100644 index 3cb3aee62..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenMountain.java +++ /dev/null @@ -1,31 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.worldgen.WorldGenTaiga7; - -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenTaiga2; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenMountain extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenMountain(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 2; - this.customBiomeDecorator.grassPerChunk = 3; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(8) == 0 ? new WorldGenTaiga2(false) : (par1Random.nextInt(4) == 0 ? new WorldGenTaiga7(false) : this.worldGeneratorTrees)); - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenMysticGrove.java b/src/minecraft/biomesoplenty/biomes/BiomeGenMysticGrove.java deleted file mode 100644 index 312fa7f4d..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenMysticGrove.java +++ /dev/null @@ -1,102 +0,0 @@ -package biomesoplenty.biomes; - -import java.awt.Color; -import java.util.Random; - -import biomesoplenty.configuration.BOPConfiguration; -import biomesoplenty.worldgen.WorldGenMystic1; -import biomesoplenty.worldgen.WorldGenMystic2; - -import net.minecraft.block.Block; -import net.minecraft.entity.monster.EntityWitch; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.SpawnListEntry; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenMysticGrove extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - @SuppressWarnings("unchecked") - public BiomeGenMysticGrove(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 8; - this.customBiomeDecorator.grassPerChunk = 7; - this.customBiomeDecorator.flowersPerChunk = 8; - this.customBiomeDecorator.pinkFlowersPerChunk = 6; - this.customBiomeDecorator.glowFlowersPerChunk = 15; - this.customBiomeDecorator.rosesPerChunk = 8; - this.customBiomeDecorator.sandPerChunk = -999; - this.customBiomeDecorator.sandPerChunk2 = -999; - this.customBiomeDecorator.sproutsPerChunk = 3; - this.customBiomeDecorator.hydrangeasPerChunk = 3; - this.waterColorMultiplier = 15349914; - this.spawnableMonsterList.clear(); - this.spawnableCreatureList.clear(); - this.spawnableWaterCreatureList.clear(); - this.spawnableMonsterList.add(new SpawnListEntry(EntityWitch.class, 10, 4, 4)); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(5) == 0 ? new WorldGenMystic2(false) : new WorldGenMystic1(false)); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return par1Random.nextInt(2) == 0 ? new WorldGenTallGrass(Block.tallGrass.blockID, 2) : new WorldGenTallGrass(Block.tallGrass.blockID, 1); - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 7004860; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 3530896; - } - - /** - * takes temperature, returns color - */ - public int getSkyColorByTemp(float par1) - { - if (BOPConfiguration.skyColors = true) - { - return 16751558; - } - else - { - par1 /= 3.0F; - - if (par1 < -1.0F) - { - par1 = -1.0F; - } - - if (par1 > 1.0F) - { - par1 = 1.0F; - } - - return Color.getHSBColor(0.62222224F - par1 * 0.05F, 0.5F + par1 * 0.1F, 1.0F).getRGB(); - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenOasis.java b/src/minecraft/biomesoplenty/biomes/BiomeGenOasis.java deleted file mode 100644 index 53cd7c2b4..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenOasis.java +++ /dev/null @@ -1,44 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.worldgen.WorldGenPalmTree3; - -import net.minecraft.block.Block; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenOasis extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenOasis(int par1) - { - super(par1); - this.spawnableCreatureList.clear(); - this.topBlock = (byte)Block.sand.blockID; - this.fillerBlock = (byte)Block.sand.blockID; - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 3; - this.customBiomeDecorator.grassPerChunk = 15; - this.customBiomeDecorator.reedsPerChunk = 100; - this.customBiomeDecorator.oasesPerChunk = 999; - this.customBiomeDecorator.oasesPerChunk2 = 999; - this.customBiomeDecorator.cactiPerChunk = 7; - this.customBiomeDecorator.desertSproutsPerChunk = 3; - this.customBiomeDecorator.tinyCactiPerChunk = 2; - this.customBiomeDecorator.generatePumpkins = false; - this.customBiomeDecorator.generateMelons = true; - this.customBiomeDecorator.waterLakesPerChunk = 10; - this.customBiomeDecorator.quicksand2PerChunk = 2; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return new WorldGenPalmTree3(); - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenOminousWoods.java b/src/minecraft/biomesoplenty/biomes/BiomeGenOminousWoods.java deleted file mode 100644 index e3725fe81..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenOminousWoods.java +++ /dev/null @@ -1,106 +0,0 @@ -package biomesoplenty.biomes; - -import java.awt.Color; -import java.util.Random; - -import biomesoplenty.configuration.BOPConfiguration; -import biomesoplenty.worldgen.WorldGenOminous1; -import biomesoplenty.worldgen.WorldGenOminous2; - -import net.minecraft.block.Block; -import net.minecraft.entity.monster.EntityCaveSpider; -import net.minecraft.entity.monster.EntityEnderman; -import net.minecraft.entity.passive.EntityBat; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.SpawnListEntry; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenOminousWoods extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - @SuppressWarnings("unchecked") - public BiomeGenOminousWoods(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 10; - this.customBiomeDecorator.grassPerChunk = 1; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.deathbloomsPerChunk = 1; - this.customBiomeDecorator.mushroomsPerChunk = 8; - this.customBiomeDecorator.reedsPerChunk = -999; - this.customBiomeDecorator.sandPerChunk = -999; - this.customBiomeDecorator.sandPerChunk2 = -999; - this.customBiomeDecorator.thornsPerChunk = 9; - this.waterColorMultiplier = 1973030; - this.spawnableMonsterList.clear(); - this.spawnableCreatureList.clear(); - this.spawnableWaterCreatureList.clear(); - this.spawnableMonsterList.add(new SpawnListEntry(EntityCaveSpider.class, 15, 1, 2)); - this.spawnableMonsterList.add(new SpawnListEntry(EntityEnderman.class, 10, 1, 4)); - this.spawnableCaveCreatureList.add(new SpawnListEntry(EntityBat.class, 10, 8, 8)); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - //return (WorldGenerator)(par1Random.nextInt(3) == 0 ? new WorldGenWillow2() : (par1Random.nextInt(7) == 0 ? new WorldGenDarkTree1() : (par1Random.nextInt(5) == 0 ? new WorldGenWillow1() : new WorldGenDarkTree2()))); - return (WorldGenerator)(par1Random.nextInt(2) == 0 ? new WorldGenOminous1(false) : new WorldGenOminous2()); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return par1Random.nextInt(6) == 0 ? new WorldGenTallGrass(Block.tallGrass.blockID, 0) : new WorldGenTallGrass(Block.tallGrass.blockID, 1); - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 4145489; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 4145489; - } - - /** - * takes temperature, returns color - */ - public int getSkyColorByTemp(float par1) - { - if (BOPConfiguration.skyColors = true) - { - return 5069168; - } - else - { - par1 /= 3.0F; - - if (par1 < -1.0F) - { - par1 = -1.0F; - } - - if (par1 > 1.0F) - { - par1 = 1.0F; - } - - return Color.getHSBColor(0.62222224F - par1 * 0.05F, 0.5F + par1 * 0.1F, 1.0F).getRGB(); - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenOrchard.java b/src/minecraft/biomesoplenty/biomes/BiomeGenOrchard.java deleted file mode 100644 index dc1e3581a..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenOrchard.java +++ /dev/null @@ -1,47 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.worldgen.WorldGenApple; - -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenOrchard extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenOrchard(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 2; - this.customBiomeDecorator.flowersPerChunk = 20; - this.customBiomeDecorator.whiteFlowersPerChunk = 20; - this.customBiomeDecorator.tinyFlowersPerChunk = 20; - this.customBiomeDecorator.grassPerChunk = 15; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - //return (WorldGenerator)(par1Random.nextInt(3) == 0 ? new WorldGenAppleTree1() : new WorldGenAppleTree2()); - return new WorldGenApple(false); - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 14024557; - } - - public int getBiomeFoliageColor() - { - return 14024557; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenOriginValley.java b/src/minecraft/biomesoplenty/biomes/BiomeGenOriginValley.java deleted file mode 100644 index 661645597..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenOriginValley.java +++ /dev/null @@ -1,82 +0,0 @@ -package biomesoplenty.biomes; - -import java.awt.Color; -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.configuration.BOPConfiguration; -import biomesoplenty.worldgen.WorldGenOriginTree; - -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenOriginValley extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenOriginValley(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.topBlock = (byte)Blocks.originGrass.get().blockID; - this.customBiomeDecorator.treesPerChunk = 4; - this.customBiomeDecorator.grassPerChunk = -999; - this.customBiomeDecorator.generatePumpkins = false; - this.customBiomeDecorator.sandPerChunk = 0; - this.customBiomeDecorator.sandPerChunk2 = 0; - this.customBiomeDecorator.clayPerChunk = 0; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return new WorldGenOriginTree(false); - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 10682207; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 3866368; - } - - /** - * takes temperature, returns color - */ - public int getSkyColorByTemp(float par1) - { - if (BOPConfiguration.skyColors = true) - { - return 8703228; - } - else - { - par1 /= 3.0F; - - if (par1 < -1.0F) - { - par1 = -1.0F; - } - - if (par1 > 1.0F) - { - par1 = 1.0F; - } - - return Color.getHSBColor(0.62222224F - par1 * 0.05F, 0.5F + par1 * 0.1F, 1.0F).getRGB(); - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenOutback.java b/src/minecraft/biomesoplenty/biomes/BiomeGenOutback.java deleted file mode 100644 index 6d05f9e42..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenOutback.java +++ /dev/null @@ -1,42 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.worldgen.WorldGenOutbackShrub; -import biomesoplenty.worldgen.WorldGenOutbackTree; - -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenOutback extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenOutback(int par1) - { - super(par1); - this.spawnableCreatureList.clear(); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.topBlock = (byte)Blocks.hardSand.get().blockID; - this.fillerBlock = (byte)Blocks.hardSand.get().blockID; - this.customBiomeDecorator.treesPerChunk = 3; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.outbackPerChunk = 10; - this.customBiomeDecorator.deadBushPerChunk = 7; - this.customBiomeDecorator.tinyCactiPerChunk = 2; - this.customBiomeDecorator.bushesPerChunk = 5; - this.customBiomeDecorator.quicksandPerChunk = 1; - this.customBiomeDecorator.generatePumpkins = false; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(3) == 0 ? new WorldGenOutbackShrub(0,0) : new WorldGenOutbackTree()); - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenPasture.java b/src/minecraft/biomesoplenty/biomes/BiomeGenPasture.java deleted file mode 100644 index 3e58ff0de..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenPasture.java +++ /dev/null @@ -1,58 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenPasture extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenPasture(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 0; - this.customBiomeDecorator.grassPerChunk = 999; - this.customBiomeDecorator.flowersPerChunk = -999; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return new WorldGenTallGrass(Blocks.plants.get().blockID, 6); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return this.worldGeneratorBigTree; - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 15259456; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 13166666; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenPlainsNew.java b/src/minecraft/biomesoplenty/biomes/BiomeGenPlainsNew.java deleted file mode 100644 index d5753ac68..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenPlainsNew.java +++ /dev/null @@ -1,35 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenPlainsNew extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenPlainsNew(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = -999; - this.customBiomeDecorator.flowersPerChunk = 4; - this.customBiomeDecorator.grassPerChunk = 10; - this.customBiomeDecorator.tinyFlowersPerChunk = 1; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return par1Random.nextInt(2) == 0 ? new WorldGenTallGrass(Blocks.foliage.get().blockID, 2) : new WorldGenTallGrass(Block.tallGrass.blockID, 1); - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenPrairie.java b/src/minecraft/biomesoplenty/biomes/BiomeGenPrairie.java deleted file mode 100644 index 5c81c5beb..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenPrairie.java +++ /dev/null @@ -1,44 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.worldgen.WorldGenPrairie; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenPrairie extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenPrairie(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 1; - this.customBiomeDecorator.grassPerChunk = 999; - this.customBiomeDecorator.whiteFlowersPerChunk = 45; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return new WorldGenPrairie(false); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return (par1Random.nextInt(4) == 0 ? new WorldGenTallGrass(Block.tallGrass.blockID, 1) : (par1Random.nextInt(3) == 0 ? new WorldGenTallGrass(Blocks.foliage.get().blockID, 2) : new WorldGenTallGrass(Blocks.foliage.get().blockID, 1))); - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenPromisedLand.java b/src/minecraft/biomesoplenty/biomes/BiomeGenPromisedLand.java deleted file mode 100644 index 8520a3a13..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenPromisedLand.java +++ /dev/null @@ -1,118 +0,0 @@ -package biomesoplenty.biomes; - -import java.awt.Color; -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.configuration.BOPConfiguration; -import biomesoplenty.worldgen.WorldGenPromisedShrub; -import biomesoplenty.worldgen.WorldGenPromisedTree; -import biomesoplenty.worldgen.WorldGenPromisedTree2; -import biomesoplenty.worldgen.WorldGenPromisedTree3; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenMinable; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenPromisedLand extends BiomeGenBase -{ - private WorldGenerator theWorldGenerator; - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenPromisedLand(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.topBlock = (byte)Blocks.holyGrass.get().blockID; - this.fillerBlock = (byte)Blocks.holyStone.get().blockID; - this.customBiomeDecorator.treesPerChunk = 8; - this.customBiomeDecorator.grassPerChunk = -999; - this.customBiomeDecorator.holyTallGrassPerChunk = 50; - this.customBiomeDecorator.promisedWillowPerChunk = 80; - this.customBiomeDecorator.pinkFlowersPerChunk = 6; - this.customBiomeDecorator.glowFlowersPerChunk = 3; - this.spawnableCreatureList.clear(); - this.spawnableWaterCreatureList.clear(); - this.spawnableMonsterList.clear(); - this.spawnableCaveCreatureList.clear(); - this.customBiomeDecorator.generatePumpkins = false; - this.theWorldGenerator = new WorldGenMinable(Block.waterMoving.blockID, 8); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(2) == 0 ? new WorldGenPromisedShrub(0, 0) : (par1Random.nextInt(4) == 0 ? new WorldGenPromisedTree3(false) : (par1Random.nextInt(8) == 0 ? new WorldGenPromisedTree2(false) : new WorldGenPromisedTree(false)))); - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 4583331; - } - - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - int var5 = 100; - int var6; - int var7; - int var8; - - for (var6 = 0; var6 < var5; ++var6) - { - var7 = par3 + par2Random.nextInt(16); - var8 = par2Random.nextInt(30) + 30; - int var9 = par4 + par2Random.nextInt(16); - int var10 = par1World.getBlockId(var7, var8, var9); - - if (var10 == Block.stone.blockID) - { - par1World.setBlock(var7, var8, var9, Blocks.amethystOre.get().blockID, 0, 2); - } - } - - for (var5 = 0; var5 < 12; ++var5) - { - var6 = par3 + par2Random.nextInt(16); - var7 = par2Random.nextInt(60); - var8 = par4 + par2Random.nextInt(16); - this.theWorldGenerator.generate(par1World, par2Random, var6, var7, var8); - } - } - - /** - * takes temperature, returns color - */ - public int getSkyColorByTemp(float par1) - { - if (BOPConfiguration.skyColors = true) - { - return 50175; - } - else - { - par1 /= 3.0F; - - if (par1 < -1.0F) - { - par1 = -1.0F; - } - - if (par1 > 1.0F) - { - par1 = 1.0F; - } - - return Color.getHSBColor(0.62222224F - par1 * 0.05F, 0.5F + par1 * 0.1F, 1.0F).getRGB(); - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenQuagmire.java b/src/minecraft/biomesoplenty/biomes/BiomeGenQuagmire.java deleted file mode 100644 index 6151a32d6..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenQuagmire.java +++ /dev/null @@ -1,84 +0,0 @@ -package biomesoplenty.biomes; - -import java.awt.Color; -import java.util.Random; - -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenerator; -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPConfiguration; -import biomesoplenty.worldgen.WorldGenDeadTree; - -public class BiomeGenQuagmire extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenQuagmire(int par1) - { - super(par1); - this.spawnableCreatureList.clear(); - this.spawnableWaterCreatureList.clear(); - this.topBlock = (byte)Blocks.mud.get().blockID; - this.fillerBlock = (byte)Blocks.mud.get().blockID; - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 0; - this.customBiomeDecorator.grassPerChunk = 10; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.sandPerChunk = -999; - this.customBiomeDecorator.sandPerChunk2 = -999; - this.waterColorMultiplier = 13390080; - this.customBiomeDecorator.generateQuagmire = true; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return new WorldGenDeadTree(false); - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 10390377; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 10390377; - } - - /** - * takes temperature, returns color - */ - public int getSkyColorByTemp(float par1) - { - if (BOPConfiguration.skyColors = true) - { - return 12436670; - } - else - { - par1 /= 3.0F; - - if (par1 < -1.0F) - { - par1 = -1.0F; - } - - if (par1 > 1.0F) - { - par1 = 1.0F; - } - - return Color.getHSBColor(0.62222224F - par1 * 0.05F, 0.5F + par1 * 0.1F, 1.0F).getRGB(); - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenRainforest.java b/src/minecraft/biomesoplenty/biomes/BiomeGenRainforest.java deleted file mode 100644 index 314606880..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenRainforest.java +++ /dev/null @@ -1,68 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.mobs.EntityJungleSpider; -import biomesoplenty.worldgen.WorldGenRainforestTree1; - -import net.minecraft.block.Block; -import net.minecraft.entity.passive.EntityOcelot; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.SpawnListEntry; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenRainforest extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - @SuppressWarnings("unchecked") - public BiomeGenRainforest(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 14; - this.customBiomeDecorator.grassPerChunk = 25; - this.customBiomeDecorator.pinkFlowersPerChunk = 2; - this.customBiomeDecorator.flowersPerChunk = 25; - this.customBiomeDecorator.rosesPerChunk = 10; - this.customBiomeDecorator.mushroomsPerChunk = 25; - this.customBiomeDecorator.orangeFlowersPerChunk = 6; - this.customBiomeDecorator.generatePumpkins = false; - this.spawnableMonsterList.add(new SpawnListEntry(EntityOcelot.class, 2, 1, 1)); - this.spawnableMonsterList.add(new SpawnListEntry(EntityJungleSpider.class, 12, 6, 6)); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(15) == 0 ? this.worldGeneratorForest : (par1Random.nextInt(5) == 0 ? this.worldGeneratorBigTree : new WorldGenRainforestTree1(false))); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return par1Random.nextInt(4) == 0 ? new WorldGenTallGrass(Block.tallGrass.blockID, 2) : new WorldGenTallGrass(Block.tallGrass.blockID, 1); - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 1759340; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 1368687; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenRedwoodForest.java b/src/minecraft/biomesoplenty/biomes/BiomeGenRedwoodForest.java deleted file mode 100644 index 4a003ce5f..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenRedwoodForest.java +++ /dev/null @@ -1,44 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.worldgen.WorldGenRedwoodTree; -import biomesoplenty.worldgen.WorldGenRedwoodTree2; - -import net.minecraft.block.Block; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenRedwoodForest extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenRedwoodForest(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 10; - this.customBiomeDecorator.grassPerChunk = 16; - this.customBiomeDecorator.bushesPerChunk = 4; - this.customBiomeDecorator.generatePumpkins = false; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - //return (WorldGenerator)(par1Random.nextInt(3) == 0 ? new WorldGenRedwood2() : new WorldGenRedwood1()); - return (WorldGenerator)(par1Random.nextInt(3) == 0 ? new WorldGenRedwoodTree(false) : new WorldGenRedwoodTree2(false)); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return par1Random.nextInt(4) == 0 ? new WorldGenTallGrass(Block.tallGrass.blockID, 2) : new WorldGenTallGrass(Block.tallGrass.blockID, 1); - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenSacredSprings.java b/src/minecraft/biomesoplenty/biomes/BiomeGenSacredSprings.java deleted file mode 100644 index 8285078b0..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenSacredSprings.java +++ /dev/null @@ -1,103 +0,0 @@ -package biomesoplenty.biomes; - -import java.awt.Color; -import java.util.Random; - -import biomesoplenty.configuration.BOPConfiguration; -import biomesoplenty.mobs.EntityJungleSpider; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.SpawnListEntry; -import net.minecraft.world.gen.feature.WorldGenShrub; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenSacredSprings extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - @SuppressWarnings("unchecked") - public BiomeGenSacredSprings(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 30; - this.customBiomeDecorator.grassPerChunk = 4; - this.customBiomeDecorator.waterlilyPerChunk = 5; - this.customBiomeDecorator.violetsPerChunk = 1; - this.customBiomeDecorator.generatePumpkins = false; - this.spawnableMonsterList.add(new SpawnListEntry(EntityJungleSpider.class, 12, 6, 6)); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return new WorldGenShrub(0, 0); - } - - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - int var5 = par2Random.nextInt(75); - - for (int var6 = 0; var6 < var5; ++var6) - { - int var7 = par3 + par2Random.nextInt(16); - int var8 = par2Random.nextInt(53) + 75; - int var9 = par4 + par2Random.nextInt(16); - int var10 = par1World.getBlockId(var7, var8, var9); - - if (var10 == Block.stone.blockID || var10 == Block.dirt.blockID) - { - par1World.setBlock(var7, var8, var9, Block.waterMoving.blockID, 0, 2); - } - } - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 39259; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 39259; - } - - /** - * takes temperature, returns color - */ - public int getSkyColorByTemp(float par1) - { - if (BOPConfiguration.skyColors = true) - { - return 1995007; - } - else - { - par1 /= 3.0F; - - if (par1 < -1.0F) - { - par1 = -1.0F; - } - - if (par1 > 1.0F) - { - par1 = 1.0F; - } - - return Color.getHSBColor(0.62222224F - par1 * 0.05F, 0.5F + par1 * 0.1F, 1.0F).getRGB(); - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenSavanna.java b/src/minecraft/biomesoplenty/biomes/BiomeGenSavanna.java deleted file mode 100644 index 0867c942a..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenSavanna.java +++ /dev/null @@ -1,48 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.worldgen.WorldGenAcacia; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenShrub; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenSavanna extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenSavanna(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 1; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.purpleFlowersPerChunk = 10; - this.customBiomeDecorator.tinyFlowersPerChunk = 2; - this.customBiomeDecorator.grassPerChunk = 25; - this.customBiomeDecorator.generatePumpkins = false; - } - -/** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(3) == 0 ? new WorldGenShrub(0, 0) : new WorldGenAcacia(false)); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return par1Random.nextInt(4) == 0 ? new WorldGenTallGrass(Block.tallGrass.blockID, 1) : new WorldGenTallGrass(Blocks.foliage.get().blockID, 1); - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenScrubland.java b/src/minecraft/biomesoplenty/biomes/BiomeGenScrubland.java deleted file mode 100644 index cd1b13cba..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenScrubland.java +++ /dev/null @@ -1,44 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.worldgen.WorldGenScrubland; - -import net.minecraft.block.Block; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenShrub; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenScrubland extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenScrubland(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 7; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.highGrassPerChunk = 2; - this.customBiomeDecorator.grassPerChunk = 30; - this.customBiomeDecorator.generatePumpkins = false; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(3) == 0 ? new WorldGenShrub(0, 0) : new WorldGenScrubland(false)); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return par1Random.nextInt(5) == 0 ? new WorldGenTallGrass(Block.tallGrass.blockID, 0) : new WorldGenTallGrass(Block.tallGrass.blockID, 1); - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenSeasonalForest.java b/src/minecraft/biomesoplenty/biomes/BiomeGenSeasonalForest.java deleted file mode 100644 index 084e18a10..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenSeasonalForest.java +++ /dev/null @@ -1,68 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.worldgen.WorldGenAutumn; -import biomesoplenty.worldgen.WorldGenAutumn2; -import biomesoplenty.worldgen.WorldGenDeadTree2; -import biomesoplenty.worldgen.WorldGenMaple; - -import net.minecraft.entity.passive.EntityWolf; -import net.minecraft.item.ItemStack; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.SpawnListEntry; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenSeasonalForest extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - @SuppressWarnings("unchecked") - public BiomeGenSeasonalForest(int par1) - { - super(par1); - this.spawnableCreatureList.add(new SpawnListEntry(EntityWolf.class, 5, 4, 4)); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 20; - this.customBiomeDecorator.grassPerChunk = 8; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.toadstoolsPerChunk = 4; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return par1Random.nextInt(2) == 0 ? new WorldGenTallGrass(Blocks.foliage.get().blockID, 2) : new WorldGenTallGrass(Blocks.foliage.get().blockID, 1); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(2) == 0 ? new WorldGenAutumn2(false) : (par1Random.nextInt(3) == 0 ? new WorldGenAutumn(false) : (par1Random.nextInt(3) == 0 ? new WorldGenMaple(false) : (par1Random.nextInt(5) == 0 ? new WorldGenDeadTree2(false) : this.worldGeneratorTrees)))); - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 11781186; - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 12502092; - //return 12502595; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenShield.java b/src/minecraft/biomesoplenty/biomes/BiomeGenShield.java deleted file mode 100644 index d5ca5e197..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenShield.java +++ /dev/null @@ -1,68 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.worldgen.WorldGenMoss; -import biomesoplenty.worldgen.WorldGenTaiga5; - -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenShrub; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenShield extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenShield(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 7; - this.customBiomeDecorator.grassPerChunk = 12; - this.customBiomeDecorator.sandPerChunk = -999; - this.customBiomeDecorator.sandPerChunk2 = -999; - this.customBiomeDecorator.gravelPerChunk = 4; - this.customBiomeDecorator.gravelPerChunk2 = 4; - this.customBiomeDecorator.generateStoneInGrass2 = true; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(2) == 0 ? new WorldGenShrub(0,0) : new WorldGenTaiga5(false)); - } - - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - WorldGenMoss var5 = new WorldGenMoss(); - - for (int var6 = 0; var6 < 20; ++var6) - { - int var7 = par3 + par2Random.nextInt(16) + 8; - byte var8 = 58; - int var9 = par4 + par2Random.nextInt(16) + 8; - var5.generate(par1World, par2Random, var7, var8, var9); - } - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 6586168; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 7902787; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenShore.java b/src/minecraft/biomesoplenty/biomes/BiomeGenShore.java deleted file mode 100644 index d701a6641..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenShore.java +++ /dev/null @@ -1,12 +0,0 @@ -package biomesoplenty.biomes; - -import net.minecraft.world.biome.BiomeGenBase; - -public class BiomeGenShore extends BiomeGenBase -{ - public BiomeGenShore(int par1) - { - super(par1); - this.spawnableCreatureList.clear(); - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenShrubland.java b/src/minecraft/biomesoplenty/biomes/BiomeGenShrubland.java deleted file mode 100644 index 009c30dfc..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenShrubland.java +++ /dev/null @@ -1,45 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenShrub; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenShrubland extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenShrubland(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 0; - this.customBiomeDecorator.flowersPerChunk = 0; - this.customBiomeDecorator.grassPerChunk = 5; - this.customBiomeDecorator.bushesPerChunk = 7; - this.customBiomeDecorator.generatePumpkins = false; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return new WorldGenShrub(0, 0); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return new WorldGenTallGrass(Blocks.foliage.get().blockID, 1); - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenSnowyWoods.java b/src/minecraft/biomesoplenty/biomes/BiomeGenSnowyWoods.java deleted file mode 100644 index 6fe4f4167..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenSnowyWoods.java +++ /dev/null @@ -1,90 +0,0 @@ -package biomesoplenty.biomes; - -import java.awt.Color; -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.configuration.BOPConfiguration; -import biomesoplenty.worldgen.WorldGenDeadTree; -import biomesoplenty.worldgen.WorldGenDeadTree2; -import biomesoplenty.worldgen.WorldGenTaiga5; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenSnowyWoods extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenSnowyWoods(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 2; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.reedsPerChunk = -999; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return new WorldGenTallGrass(Blocks.foliage.get().blockID, 1); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(6) == 0 ? new WorldGenDeadTree2(false) : (par1Random.nextInt(3) == 0 ? new WorldGenTaiga5(false): new WorldGenDeadTree(false))); - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 11176526; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 11903827; - } - - /** - * takes temperature, returns color - */ - public int getSkyColorByTemp(float par1) - { - if (BOPConfiguration.skyColors = true) - { - return 9873591; - } - else - { - par1 /= 3.0F; - - if (par1 < -1.0F) - { - par1 = -1.0F; - } - - if (par1 > 1.0F) - { - par1 = 1.0F; - } - - return Color.getHSBColor(0.62222224F - par1 * 0.05F, 0.5F + par1 * 0.1F, 1.0F).getRGB(); - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenSpruceWoods.java b/src/minecraft/biomesoplenty/biomes/BiomeGenSpruceWoods.java deleted file mode 100644 index 0ece96688..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenSpruceWoods.java +++ /dev/null @@ -1,36 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.worldgen.WorldGenTaiga5; - -import net.minecraft.entity.passive.EntityWolf; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.SpawnListEntry; -import net.minecraft.world.gen.feature.WorldGenTaiga2; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenSpruceWoods extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - @SuppressWarnings("unchecked") - public BiomeGenSpruceWoods(int par1) - { - super(par1); - this.spawnableCreatureList.add(new SpawnListEntry(EntityWolf.class, 8, 4, 4)); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 10; - this.customBiomeDecorator.grassPerChunk = 6; - this.customBiomeDecorator.sproutsPerChunk = 3; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(3) == 0 ? new WorldGenTaiga5(false) : new WorldGenTaiga2(false)); - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenSteppe.java b/src/minecraft/biomesoplenty/biomes/BiomeGenSteppe.java deleted file mode 100644 index b504727c7..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenSteppe.java +++ /dev/null @@ -1,54 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenSteppe extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenSteppe(int par1) - { - super(par1); - this.spawnableCreatureList.clear(); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = -999; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.grassPerChunk = 15; - this.customBiomeDecorator.deadBushPerChunk = 7; - this.customBiomeDecorator.tinyCactiPerChunk = 1; - this.customBiomeDecorator.quicksandPerChunk = 1; - this.customBiomeDecorator.steppePerChunk = 6; - this.customBiomeDecorator.generatePumpkins = false; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return (par1Random.nextInt(8) == 0 ? new WorldGenTallGrass(Block.tallGrass.blockID, 1) : (par1Random.nextInt(4) == 0 ? new WorldGenTallGrass(Blocks.foliage.get().blockID, 2) : new WorldGenTallGrass(Blocks.foliage.get().blockID, 1))); - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 13413215; - } - - public int getBiomeFoliageColor() - { - return 13413215; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenSwampNew.java b/src/minecraft/biomesoplenty/biomes/BiomeGenSwampNew.java deleted file mode 100644 index eaf411924..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenSwampNew.java +++ /dev/null @@ -1,81 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.worldgen.WorldGenLog; -import biomesoplenty.worldgen.WorldGenMoss; -import biomesoplenty.worldgen.WorldGenWillow; - -import net.minecraft.entity.monster.EntitySlime; -import net.minecraft.world.ColorizerFoliage; -import net.minecraft.world.ColorizerGrass; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.SpawnListEntry; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenSwampNew extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - @SuppressWarnings("unchecked") - public BiomeGenSwampNew(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 4; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.deadBushPerChunk = 1; - this.customBiomeDecorator.mushroomsPerChunk = 8; - this.customBiomeDecorator.reedsPerChunk = 10; - this.customBiomeDecorator.clayPerChunk = 1; - this.customBiomeDecorator.waterlilyPerChunk = 4; - this.customBiomeDecorator.mudPerChunk = 9; - this.customBiomeDecorator.mudPerChunk2 = 9; - this.waterColorMultiplier = 14745456; - this.spawnableMonsterList.add(new SpawnListEntry(EntitySlime.class, 1, 1, 1)); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(3) == 0 ? new WorldGenLog() : new WorldGenWillow()); - } - - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - WorldGenMoss var5 = new WorldGenMoss(); - - for (int var6 = 0; var6 < 20; ++var6) - { - int var7 = par3 + par2Random.nextInt(16) + 8; - byte var8 = 58; - int var9 = par4 + par2Random.nextInt(16) + 8; - var5.generate(par1World, par2Random, var7, var8, var9); - } - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - double var1 = (double)this.getFloatTemperature(); - double var3 = (double)this.getFloatRainfall(); - return ((ColorizerGrass.getGrassColor(var1, var3) & 16711422) + 5115470) / 2; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - double var1 = (double)this.getFloatTemperature(); - double var3 = (double)this.getFloatRainfall(); - return ((ColorizerFoliage.getFoliageColor(var1, var3) & 16711422) + 5115470) / 2; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenSwampwoods.java b/src/minecraft/biomesoplenty/biomes/BiomeGenSwampwoods.java deleted file mode 100644 index 69dea5e04..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenSwampwoods.java +++ /dev/null @@ -1,86 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.worldgen.WorldGenCypress; -import biomesoplenty.worldgen.WorldGenMarsh; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenShrub; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenSwampwoods extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenSwampwoods(int par1) - { - super(par1); - this.spawnableCreatureList.clear(); - this.spawnableWaterCreatureList.clear(); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 12; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.grassPerChunk = 10; - this.customBiomeDecorator.highGrassPerChunk = 10; - this.customBiomeDecorator.mudPerChunk = 2; - this.customBiomeDecorator.mudPerChunk2 = 2; - this.customBiomeDecorator.sandPerChunk = -999; - this.customBiomeDecorator.sandPerChunk2 = -999; - this.customBiomeDecorator.algaePerChunk = 2; - this.customBiomeDecorator.waterlilyPerChunk = 4; - this.customBiomeDecorator.generatePumpkins = false; - } - - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - WorldGenMarsh var5 = new WorldGenMarsh(); - - for (int var6 = 0; var6 < 5; ++var6) - { - int var7 = par3 + par2Random.nextInt(16) + 8; - byte var8 = 62; - int var9 = par4 + par2Random.nextInt(16) + 8; - var5.generate(par1World, par2Random, var7, var8, var9); - } - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(3) == 0 ? new WorldGenShrub(0,0) : new WorldGenCypress(false)); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return par1Random.nextInt(2) == 0 ? new WorldGenTallGrass(Block.tallGrass.blockID, 1) : new WorldGenTallGrass(Blocks.foliage.get().blockID, 2); - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 1660473; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 2324303; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenTaigaNew.java b/src/minecraft/biomesoplenty/biomes/BiomeGenTaigaNew.java deleted file mode 100644 index 0c1d162d3..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenTaigaNew.java +++ /dev/null @@ -1,49 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.entity.passive.EntityWolf; -import net.minecraft.item.ItemStack; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.SpawnListEntry; -import net.minecraft.world.gen.feature.WorldGenTaiga1; -import net.minecraft.world.gen.feature.WorldGenTaiga2; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenTaigaNew extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - @SuppressWarnings("unchecked") - public BiomeGenTaigaNew(int par1) - { - super(par1); - this.spawnableCreatureList.add(new SpawnListEntry(EntityWolf.class, 8, 4, 4)); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 10; - this.customBiomeDecorator.grassPerChunk = 1; - this.customBiomeDecorator.violetsPerChunk = 1; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(3) == 0 ? new WorldGenTaiga1() : new WorldGenTaiga2(false)); - //return (WorldGenerator)(par1Random.nextInt(3) == 0 ? new WorldGenNorwaySpruce1() : new WorldGenNorwaySpruce2()); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return new WorldGenTallGrass(Blocks.foliage.get().blockID, 1); - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenTemperateRainforest.java b/src/minecraft/biomesoplenty/biomes/BiomeGenTemperateRainforest.java deleted file mode 100644 index f2acfcbfb..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenTemperateRainforest.java +++ /dev/null @@ -1,80 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.worldgen.WorldGenMoss; -import biomesoplenty.worldgen.WorldGenTemperate; -import biomesoplenty.worldgen.WorldGenThickTree; -import biomesoplenty.worldgen.WorldGenWillow; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenShrub; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenTemperateRainforest extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenTemperateRainforest(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 22; - this.customBiomeDecorator.grassPerChunk = 25; - this.customBiomeDecorator.generatePumpkins = false; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - //return (WorldGenerator)(par1Random.nextInt(3) == 0 ? new WorldGenGrandFir1() : (par1Random.nextInt(4) == 0 ? new WorldGenAlaskanCedar2() : (par1Random.nextInt(8) == 0 ? new WorldGenAlaskanCedar1() : (par1Random.nextInt(2) == 0 ? new WorldGenShrub(0,0) : new WorldGenGrandFir2())))); - return (WorldGenerator)(par1Random.nextInt(10) == 0 ? new WorldGenWillow() : (par1Random.nextInt(6) == 0 ? new WorldGenThickTree(false) : (par1Random.nextInt(2) == 0 ? new WorldGenTemperate(false) : new WorldGenShrub(0, 0)))); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return (par1Random.nextInt(6) == 0 ? new WorldGenTallGrass(Block.tallGrass.blockID, 1) : (par1Random.nextInt(2) == 0 ? new WorldGenTallGrass(Block.tallGrass.blockID, 2) : (par1Random.nextInt(4) == 0 ? new WorldGenTallGrass(Blocks.foliage.get().blockID, 2) : new WorldGenTallGrass(Blocks.foliage.get().blockID, 1)))); - } - - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - WorldGenMoss var5 = new WorldGenMoss(); - - for (int var6 = 0; var6 < 20; ++var6) - { - int var7 = par3 + par2Random.nextInt(16) + 8; - byte var8 = 58; - int var9 = par4 + par2Random.nextInt(16) + 8; - var5.generate(par1World, par2Random, var7, var8, var9); - } - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 11981671; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 12311907; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenThicket.java b/src/minecraft/biomesoplenty/biomes/BiomeGenThicket.java deleted file mode 100644 index f71081466..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenThicket.java +++ /dev/null @@ -1,51 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenShrub; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenThicket extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenThicket(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 17; - this.customBiomeDecorator.grassPerChunk = 1; - this.customBiomeDecorator.thornsPerChunk = 25; - } - - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - int var5 = 3 + par2Random.nextInt(6); - - for (int var6 = 0; var6 < var5; ++var6) - { - int var7 = par3 + par2Random.nextInt(16); - int var8 = par2Random.nextInt(28) + 4; - int var9 = par4 + par2Random.nextInt(16); - int var10 = par1World.getBlockId(var7, var8, var9); - - if (var10 == Block.stone.blockID) - { - par1World.setBlock(var7, var8, var9, Block.oreEmerald.blockID, 0, 2); - } - } - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(5) == 0 ? this.worldGeneratorTrees : new WorldGenShrub(0, 0)); - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenTropicalRainforest.java b/src/minecraft/biomesoplenty/biomes/BiomeGenTropicalRainforest.java deleted file mode 100644 index 18d861451..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenTropicalRainforest.java +++ /dev/null @@ -1,112 +0,0 @@ -package biomesoplenty.biomes; - -import java.awt.Color; -import java.util.Random; - -import biomesoplenty.configuration.BOPConfiguration; -import biomesoplenty.mobs.EntityJungleSpider; -import biomesoplenty.worldgen.WorldGenRainforest1; -import biomesoplenty.worldgen.WorldGenRainforest2; - -import net.minecraft.block.Block; -import net.minecraft.entity.passive.EntityOcelot; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.SpawnListEntry; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenTropicalRainforest extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - @SuppressWarnings("unchecked") - public BiomeGenTropicalRainforest(int par1) - { - super(par1); - this.spawnableMonsterList.add(new SpawnListEntry(EntityOcelot.class, 2, 1, 1)); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 12; - this.customBiomeDecorator.grassPerChunk = 7; - this.customBiomeDecorator.highGrassPerChunk = 4; - this.customBiomeDecorator.reedsPerChunk = 10; - this.customBiomeDecorator.waterlilyPerChunk = 2; - this.customBiomeDecorator.orangeFlowersPerChunk = 10; - this.customBiomeDecorator.generatePumpkins = false; - this.customBiomeDecorator.generateMelons = true; - this.customBiomeDecorator.sproutsPerChunk = 2; - this.customBiomeDecorator.quicksandPerChunk = 3; - this.spawnableMonsterList.add(new SpawnListEntry(EntityJungleSpider.class, 12, 6, 6)); - this.waterColorMultiplier = 6160128; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(5) == 0 ? new WorldGenRainforest2() : new WorldGenRainforest1(false)); - } - - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - int var5 = 3 + par2Random.nextInt(6); - - for (int var6 = 0; var6 < var5; ++var6) - { - int var7 = par3 + par2Random.nextInt(16); - int var8 = par2Random.nextInt(28) + 4; - int var9 = par4 + par2Random.nextInt(16); - int var10 = par1World.getBlockId(var7, var8, var9); - - if (var10 == Block.stone.blockID) - { - par1World.setBlock(var7, var8, var9, Block.oreEmerald.blockID, 0, 2); - } - } - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 11002176; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 8970560; - } - - /** - * takes temperature, returns color - */ - public int getSkyColorByTemp(float par1) - { - if (BOPConfiguration.skyColors = true) - { - return 12971089; - } - else - { - par1 /= 3.0F; - - if (par1 < -1.0F) - { - par1 = -1.0F; - } - - if (par1 > 1.0F) - { - par1 = 1.0F; - } - - return Color.getHSBColor(0.62222224F - par1 * 0.05F, 0.5F + par1 * 0.1F, 1.0F).getRGB(); - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenTropics.java b/src/minecraft/biomesoplenty/biomes/BiomeGenTropics.java deleted file mode 100644 index 50391665f..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenTropics.java +++ /dev/null @@ -1,71 +0,0 @@ -package biomesoplenty.biomes; - -import java.awt.Color; -import java.util.Random; - -import biomesoplenty.configuration.BOPConfiguration; -import biomesoplenty.mobs.EntityJungleSpider; -import biomesoplenty.worldgen.WorldGenPalmTree1; -import biomesoplenty.worldgen.WorldGenPalmTree3; - -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.SpawnListEntry; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenTropics extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - @SuppressWarnings("unchecked") - public BiomeGenTropics(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 8; - this.customBiomeDecorator.grassPerChunk = 7; - this.customBiomeDecorator.flowersPerChunk = 10; - this.customBiomeDecorator.sandPerChunk = 50; - this.customBiomeDecorator.sandPerChunk2 = 50; - this.customBiomeDecorator.orangeFlowersPerChunk = 10; - this.customBiomeDecorator.whiteFlowersPerChunk = 4; - this.customBiomeDecorator.generatePumpkins = false; - this.spawnableMonsterList.add(new SpawnListEntry(EntityJungleSpider.class, 12, 6, 6)); - this.spawnableCreatureList.clear(); - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(3) == 0 ? new WorldGenPalmTree1() : new WorldGenPalmTree3()); - } - - /** - * takes temperature, returns color - */ - public int getSkyColorByTemp(float par1) - { - if (BOPConfiguration.skyColors = true) - { - return 3333631; - } - else - { - par1 /= 3.0F; - - if (par1 < -1.0F) - { - par1 = -1.0F; - } - - if (par1 > 1.0F) - { - par1 = 1.0F; - } - - return Color.getHSBColor(0.62222224F - par1 * 0.05F, 0.5F + par1 * 0.1F, 1.0F).getRGB(); - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenTundra.java b/src/minecraft/biomesoplenty/biomes/BiomeGenTundra.java deleted file mode 100644 index b6420cc2b..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenTundra.java +++ /dev/null @@ -1,37 +0,0 @@ -package biomesoplenty.biomes; - -import net.minecraft.world.biome.BiomeGenBase; - -public class BiomeGenTundra extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenTundra(int par1) - { - super(par1); - this.spawnableCreatureList.clear(); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = -999; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.grassPerChunk = -999; - this.customBiomeDecorator.sandPerChunk = -999; - this.customBiomeDecorator.sandPerChunk2 = -999; - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 11176526; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 11903827; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenVolcano.java b/src/minecraft/biomesoplenty/biomes/BiomeGenVolcano.java deleted file mode 100644 index 8d5ef0d9c..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenVolcano.java +++ /dev/null @@ -1,67 +0,0 @@ -package biomesoplenty.biomes; - -import java.awt.Color; -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.configuration.BOPConfiguration; -import biomesoplenty.worldgen.WorldGenVolcano; - -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenVolcano extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenVolcano(int par1) - { - super(par1); - this.spawnableCreatureList.clear(); - this.topBlock = (byte)Blocks.ashStone.get().blockID; - this.fillerBlock = (byte)Blocks.ashStone.get().blockID; - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 1; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.grassPerChunk = -999; - this.customBiomeDecorator.lavaLakesPerChunk = 50; - this.customBiomeDecorator.generateAsh = true; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return new WorldGenVolcano(); - } - - /** - * takes temperature, returns color - */ - public int getSkyColorByTemp(float par1) - { - if (BOPConfiguration.skyColors = true) - { - return 8026746; - } - else - { - par1 /= 3.0F; - - if (par1 < -1.0F) - { - par1 = -1.0F; - } - - if (par1 > 1.0F) - { - par1 = 1.0F; - } - - return Color.getHSBColor(0.62222224F - par1 * 0.05F, 0.5F + par1 * 0.1F, 1.0F).getRGB(); - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenWasteland.java b/src/minecraft/biomesoplenty/biomes/BiomeGenWasteland.java deleted file mode 100644 index f94938320..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenWasteland.java +++ /dev/null @@ -1,71 +0,0 @@ -package biomesoplenty.biomes; - -import java.awt.Color; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.configuration.BOPConfiguration; - -import net.minecraft.world.biome.BiomeGenBase; - -public class BiomeGenWasteland extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenWasteland(int par1) - { - super(par1); - this.topBlock = (byte)Blocks.driedDirt.get().blockID; - this.fillerBlock = (byte)Blocks.driedDirt.get().blockID; - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = -999; - this.customBiomeDecorator.deadGrassPerChunk = 14; - this.waterColorMultiplier = 15073024; - this.spawnableCreatureList.clear(); - this.spawnableWaterCreatureList.clear(); - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 10330232; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 10067541; - } - - /** - * takes temperature, returns color - */ - public int getSkyColorByTemp(float par1) - { - if (BOPConfiguration.skyColors = true) - { - return 10465942; - } - else - { - par1 /= 3.0F; - - if (par1 < -1.0F) - { - par1 = -1.0F; - } - - if (par1 > 1.0F) - { - par1 = 1.0F; - } - - return Color.getHSBColor(0.62222224F - par1 * 0.05F, 0.5F + par1 * 0.1F, 1.0F).getRGB(); - } - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenWetland.java b/src/minecraft/biomesoplenty/biomes/BiomeGenWetland.java deleted file mode 100644 index eea132016..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenWetland.java +++ /dev/null @@ -1,89 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.worldgen.WorldGenMoss; -import biomesoplenty.worldgen.WorldGenTaiga5; -import biomesoplenty.worldgen.WorldGenWillow; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenTallGrass; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenWetland extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenWetland(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 10; - this.customBiomeDecorator.grassPerChunk = 10; - this.customBiomeDecorator.flowersPerChunk = -999; - this.customBiomeDecorator.mushroomsPerChunk = 5; - this.customBiomeDecorator.toadstoolsPerChunk = 1; - this.customBiomeDecorator.reedsPerChunk = 15; - this.customBiomeDecorator.clayPerChunk = 2; - this.customBiomeDecorator.sandPerChunk = -999; - this.customBiomeDecorator.sandPerChunk2 = -999; - this.customBiomeDecorator.mudPerChunk = 5; - this.customBiomeDecorator.mudPerChunk2 = 5; - this.customBiomeDecorator.waterlilyPerChunk = 6; - this.customBiomeDecorator.cattailsPerChunk = 20; - this.customBiomeDecorator.blueFlowersPerChunk = 6; - this.spawnableCreatureList.clear(); - this.spawnableWaterCreatureList.clear(); - this.waterColorMultiplier = 6512772; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - //return (WorldGenerator)(par1Random.nextInt(2) == 0 ? new WorldGenWillow2() : (par1Random.nextInt(4) == 0 ? new WorldGenLarch1() : (par1Random.nextInt(2) == 0 ? new WorldGenLarch2() : new WorldGenWillow1()))); - return (WorldGenerator)(par1Random.nextInt(2) == 0 ? new WorldGenTaiga5(false) : new WorldGenWillow()); - } - - public void decorate(World par1World, Random par2Random, int par3, int par4) - { - super.decorate(par1World, par2Random, par3, par4); - WorldGenMoss var5 = new WorldGenMoss(); - - for (int var6 = 0; var6 < 20; ++var6) - { - int var7 = par3 + par2Random.nextInt(16) + 8; - byte var8 = 58; - int var9 = par4 + par2Random.nextInt(16) + 8; - var5.generate(par1World, par2Random, var7, var8, var9); - } - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForGrass(Random par1Random) - { - return par1Random.nextInt(6) == 0 ? new WorldGenTallGrass(Block.tallGrass.blockID, 2) : new WorldGenTallGrass(Block.tallGrass.blockID, 1); - } - - /** - * Provides the basic grass color based on the biome temperature and rainfall - */ - public int getBiomeGrassColor() - { - return 5935967; - } - - /** - * Provides the basic foliage color based on the biome temperature and rainfall - */ - public int getBiomeFoliageColor() - { - return 5215831; - } -} diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenWoodland.java b/src/minecraft/biomesoplenty/biomes/BiomeGenWoodland.java deleted file mode 100644 index a526e76f6..000000000 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenWoodland.java +++ /dev/null @@ -1,31 +0,0 @@ -package biomesoplenty.biomes; - -import java.util.Random; - -import biomesoplenty.worldgen.WorldGenLog; - -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class BiomeGenWoodland extends BiomeGenBase -{ - private BiomeDecoratorBOP customBiomeDecorator; - - public BiomeGenWoodland(int par1) - { - super(par1); - this.theBiomeDecorator = new BiomeDecoratorBOP(this); - this.customBiomeDecorator = (BiomeDecoratorBOP)theBiomeDecorator; - this.customBiomeDecorator.treesPerChunk = 9; - this.customBiomeDecorator.grassPerChunk = 7; - this.customBiomeDecorator.toadstoolsPerChunk = 3; - } - - /** - * Gets a WorldGen appropriate for this biome. - */ - public WorldGenerator getRandomWorldGenForTrees(Random par1Random) - { - return (WorldGenerator)(par1Random.nextInt(5) == 0 ? new WorldGenLog() : (par1Random.nextInt(10) == 0 ? this.worldGeneratorBigTree : this.worldGeneratorTrees)); - } -} diff --git a/src/minecraft/biomesoplenty/blocks/BlockAsh.java b/src/minecraft/biomesoplenty/blocks/BlockAsh.java deleted file mode 100644 index a33bbedbb..000000000 --- a/src/minecraft/biomesoplenty/blocks/BlockAsh.java +++ /dev/null @@ -1,81 +0,0 @@ -package biomesoplenty.blocks; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.World; -import biomesoplenty.BiomesOPlenty; -import biomesoplenty.api.Items; - -public class BlockAsh extends Block -{ - public BlockAsh(int par1) - { - super(par1, Material.sand); - this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - @Override - public void registerIcons(IconRegister par1IconRegister) - { - this.blockIcon = par1IconRegister.registerIcon("BiomesOPlenty:ashblock"); - } - - /** - * Returns a bounding box from the pool of bounding boxes (this means this box can change after the pool has been - * cleared to be reused) - */ - public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4) - { - float var5 = 0.125F; - return AxisAlignedBB.getAABBPool().getAABB((double)par2, (double)par3, (double)par4, (double)(par2 + 1), (double)((float)(par3 + 1) - var5), (double)(par4 + 1)); - } - - /** - * A randomly called display update to be able to add particles or other items for display - */ - public void randomDisplayTick(World par1World, int par2, int par3, int par4, Random par5Random) - { - super.randomDisplayTick(par1World, par2, par3, par4, par5Random); - - if (par5Random.nextInt(2) == 0) - { - par1World.spawnParticle("smoke", (double)((float)par2 + par5Random.nextFloat()), (double)((float)par3 + 1.1F), (double)((float)par4 + par5Random.nextFloat()), 0.0D, 0.0D, 0.0D); - } - } - - /** - * Triggered whenever an entity collides with this block (enters into the block). Args: world, x, y, z, entity - */ - public void onEntityCollidedWithBlock(World par1World, int par2, int par3, int par4, Entity par5Entity) - { - par5Entity.motionX *= 0.4D; - par5Entity.motionZ *= 0.4D; - } - - /** - * Returns the ID of the items to drop on destruction. - */ - public int idDropped(int par1, Random par2Random, int par3) - { - return Items.miscItems.get().itemID; - } - - @Override - public int damageDropped(int meta) - { - return 1; - } - - /** - * Returns the quantity of items to drop on block destruction. - */ - public int quantityDropped(Random par1Random) - { - return 4; - } -} diff --git a/src/minecraft/biomesoplenty/blocks/BlockBOPAmethyst.java b/src/minecraft/biomesoplenty/blocks/BlockBOPAmethyst.java deleted file mode 100644 index 06c06ddcc..000000000 --- a/src/minecraft/biomesoplenty/blocks/BlockBOPAmethyst.java +++ /dev/null @@ -1,148 +0,0 @@ -package biomesoplenty.blocks; - -import java.util.List; -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Icon; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; -import biomesoplenty.BiomesOPlenty; -import biomesoplenty.api.Items; - -public class BlockBOPAmethyst extends Block -{ - private static final String[] types = new String[] {"amethystore", "amethystblock"}; - private Icon[] textures; - - public BlockBOPAmethyst(int par1, Material par2Material) - { - super(par1, par2Material); - this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - setStepSound(Block.soundStoneFootstep); - } - - @Override - public void registerIcons(IconRegister iconRegister) - { - textures = new Icon[types.length]; - - for (int i = 0; i < types.length; ++i) - textures[i] = iconRegister.registerIcon("BiomesOPlenty:"+types[i]); - } - - @Override - public Icon getIcon(int side, int meta) - { - if (meta < 0 || meta >= textures.length) - meta = 0; - - return textures[meta]; - } - - @Override - public int getDamageValue(World world, int x, int y, int z) { - return world.getBlockMetadata(x, y, z); - } - - @Override - @SuppressWarnings({ "rawtypes", "unchecked" }) - public void getSubBlocks(int blockID, CreativeTabs creativeTabs, List list) { - for (int i = 0; i < types.length; ++i) - list.add(new ItemStack(blockID, 1, i)); - } - - @Override - public float getBlockHardness(World world, int x, int y, int z) - { - int meta = world.getBlockMetadata(x, y, z); - float hardness = this.blockHardness; - - switch (meta) - { - case 0: - hardness = 3.0F; - break; - - case 1: - hardness = 5.0F; - break; - } - - return hardness; - } - - @Override - public float getExplosionResistance(Entity par1Entity, World world, int x, int y, int z, double explosionX, double explosionY, double explosionZ) - { - int meta = world.getBlockMetadata(x, y, z); - float resistance = this.blockResistance; - - switch (meta) - { - case 0: - resistance = 5.0F; - break; - - case 1: - resistance = 10.0F; - break; - } - - return resistance / 5.0F; - } - - @Override - public int idDropped(int meta, Random par2Random, int par3) - { - return meta == 0 ? Items.miscItems.get().itemID : this.blockID; - } - - @Override - public int damageDropped(int meta) - { - return meta == 0 ? 2 : meta; - } - - @Override - public int quantityDropped(int meta, int fortune, Random random) - { - if (meta == 0) - return quantityDroppedWithBonus(fortune, random); - else - return quantityDropped(random); - } - - @Override - public int quantityDroppedWithBonus(int bonus, Random par2Random) - { - if (bonus > 0 && this.blockID != this.idDropped(0, par2Random, bonus)) - { - int rnd = par2Random.nextInt(bonus + 2) - 1; - - if (rnd < 0) - rnd = 0; - - return (1 + par2Random.nextInt(2)) * (rnd + 1); - } - else - return (1 + par2Random.nextInt(2)); - } - - @Override - public void dropBlockAsItemWithChance(World world, int par2, int par3, int par4, int par5, float par6, int par7) - { - super.dropBlockAsItemWithChance(world, par2, par3, par4, par5, par6, par7); - - if (this.idDropped(par5, world.rand, par7) != this.blockID) - { - int var8 = MathHelper.getRandomIntegerInRange(world.rand, 1, 4); - this.dropXpOnBlockBreak(world, par2, par3, par4, var8); - } - } -} diff --git a/src/minecraft/biomesoplenty/blocks/BlockBOPAppleLeaves.java b/src/minecraft/biomesoplenty/blocks/BlockBOPAppleLeaves.java deleted file mode 100644 index 3f1959f05..000000000 --- a/src/minecraft/biomesoplenty/blocks/BlockBOPAppleLeaves.java +++ /dev/null @@ -1,319 +0,0 @@ -package biomesoplenty.blocks; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -import biomesoplenty.BiomesOPlenty; -import biomesoplenty.api.Blocks; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; -import net.minecraft.block.BlockLeavesBase; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Icon; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import net.minecraftforge.common.IShearable; - -public class BlockBOPAppleLeaves extends BlockLeavesBase implements IShearable -{ - private Icon[][] textures; - int[] adjacentTreeBlocks; - - public BlockBOPAppleLeaves(int blockID) - { - super(blockID, Material.leaves, false); - setBurnProperties(this.blockID, 30, 60); - this.setTickRandomly(true); - setHardness(0.2F); - setLightOpacity(1); - setStepSound(Block.soundGrassFootstep); - this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - @Override - public void registerIcons(IconRegister iconRegister) - { - textures = new Icon[2][4]; - - for (int i = 0; i < 4; ++i) - { - textures[0][i] = iconRegister.registerIcon("BiomesOPlenty:leaves_apple" + i + "_fancy"); - textures[1][i] = iconRegister.registerIcon("BiomesOPlenty:leaves_apple" + i + "_fast"); - } - } - - @Override - public Icon getIcon(int side, int meta) - { - return textures[(!isOpaqueCube() ? 0 : 1)][meta & 3]; - } - - @Override - public boolean isOpaqueCube() - { - return Block.leaves.isOpaqueCube(); - } - - @Override - @SuppressWarnings({ "rawtypes", "unchecked" }) - public void getSubBlocks(int blockID, CreativeTabs creativeTabs, List list) { - list.add(new ItemStack(blockID, 1, 0)); - } - - @Override - @SideOnly(Side.CLIENT) - public void randomDisplayTick(World world, int x, int y, int z, Random random) - { - if (world.canLightningStrikeAt(x, y + 1, z) && !world.doesBlockHaveSolidTopSurface(x, y - 1, z) && random.nextInt(15) == 1) - { - double d0 = (double)((float)x + random.nextFloat()); - double d1 = (double)y - 0.05D; - double d2 = (double)((float)z + random.nextFloat()); - world.spawnParticle("dripWater", d0, d1, d2, 0.0D, 0.0D, 0.0D); - } - } - - @Override - public void breakBlock(World world, int x, int y, int z, int par5, int par6) - { - byte radius = 1; - int bounds = radius + 1; - - if (world.checkChunksExist(x - bounds, y - bounds, z - bounds, x + bounds, y + bounds, z + bounds)) - for (int i = -radius; i <= radius; ++i) - for (int j = -radius; j <= radius; ++j) - for (int k = -radius; k <= radius; ++k) - { - int blockID = world.getBlockId(x + i, y + j, z + k); - - if (Block.blocksList[blockID] != null) - Block.blocksList[blockID].beginLeavesDecay(world, x + i, y + j, z + k); - } - } - - @Override - public void updateTick(World world, int x, int y, int z, Random random) - { - if (world.isRemote) - return; - - int meta = world.getBlockMetadata(x, y, z); - if (random.nextInt(5) == 0) - if ((meta & 3) < 3) - world.setBlock(x, y, z, blockID, ++meta, 3); - - if ((meta & 8) != 0/* && (meta & 4) == 0*/) - { - byte b0 = 4; - int i1 = b0 + 1; - byte b1 = 32; - int j1 = b1 * b1; - int k1 = b1 / 2; - - if (this.adjacentTreeBlocks == null) - { - this.adjacentTreeBlocks = new int[b1 * b1 * b1]; - } - - int l1; - - if (world.checkChunksExist(x - i1, y - i1, z - i1, x + i1, y + i1, z + i1)) - { - int i2; - int j2; - int k2; - - for (l1 = -b0; l1 <= b0; ++l1) - { - for (i2 = -b0; i2 <= b0; ++i2) - { - for (j2 = -b0; j2 <= b0; ++j2) - { - k2 = world.getBlockId(x + l1, y + i2, z + j2); - - Block block = Block.blocksList[k2]; - - if (block != null && block.canSustainLeaves(world, x + l1, y + i2, z + j2)) - { - this.adjacentTreeBlocks[(l1 + k1) * j1 + (i2 + k1) * b1 + j2 + k1] = 0; - } - else if (block != null && block.isLeaves(world, x + l1, y + i2, z + j2)) - { - this.adjacentTreeBlocks[(l1 + k1) * j1 + (i2 + k1) * b1 + j2 + k1] = -2; - } - else - { - this.adjacentTreeBlocks[(l1 + k1) * j1 + (i2 + k1) * b1 + j2 + k1] = -1; - } - } - } - } - - for (l1 = 1; l1 <= 4; ++l1) - { - for (i2 = -b0; i2 <= b0; ++i2) - { - for (j2 = -b0; j2 <= b0; ++j2) - { - for (k2 = -b0; k2 <= b0; ++k2) - { - if (this.adjacentTreeBlocks[(i2 + k1) * j1 + (j2 + k1) * b1 + k2 + k1] == l1 - 1) - { - if (this.adjacentTreeBlocks[(i2 + k1 - 1) * j1 + (j2 + k1) * b1 + k2 + k1] == -2) - { - this.adjacentTreeBlocks[(i2 + k1 - 1) * j1 + (j2 + k1) * b1 + k2 + k1] = l1; - } - - if (this.adjacentTreeBlocks[(i2 + k1 + 1) * j1 + (j2 + k1) * b1 + k2 + k1] == -2) - { - this.adjacentTreeBlocks[(i2 + k1 + 1) * j1 + (j2 + k1) * b1 + k2 + k1] = l1; - } - - if (this.adjacentTreeBlocks[(i2 + k1) * j1 + (j2 + k1 - 1) * b1 + k2 + k1] == -2) - { - this.adjacentTreeBlocks[(i2 + k1) * j1 + (j2 + k1 - 1) * b1 + k2 + k1] = l1; - } - - if (this.adjacentTreeBlocks[(i2 + k1) * j1 + (j2 + k1 + 1) * b1 + k2 + k1] == -2) - { - this.adjacentTreeBlocks[(i2 + k1) * j1 + (j2 + k1 + 1) * b1 + k2 + k1] = l1; - } - - if (this.adjacentTreeBlocks[(i2 + k1) * j1 + (j2 + k1) * b1 + (k2 + k1 - 1)] == -2) - { - this.adjacentTreeBlocks[(i2 + k1) * j1 + (j2 + k1) * b1 + (k2 + k1 - 1)] = l1; - } - - if (this.adjacentTreeBlocks[(i2 + k1) * j1 + (j2 + k1) * b1 + k2 + k1 + 1] == -2) - { - this.adjacentTreeBlocks[(i2 + k1) * j1 + (j2 + k1) * b1 + k2 + k1 + 1] = l1; - } - } - } - } - } - } - } - - l1 = this.adjacentTreeBlocks[k1 * j1 + k1 * b1 + k1]; - - if (l1 >= 0) - { - world.setBlockMetadataWithNotify(x, y, z, meta & -9, 4); - } - else - { - this.removeLeaves(world, x, y, z); - } - } - } - - private void removeLeaves(World world, int x, int y, int z) - { - this.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0); - world.setBlockToAir(x, y, z); - } - - @Override - public boolean onBlockActivated (World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9) - { - if (world.isRemote) - return false; - - int meta = world.getBlockMetadata(x, y, z); - if ((meta & 3) == 3) - { - world.setBlock(x, y, z, blockID, meta - 3, 3); - EntityItem entityitem = new EntityItem(world, player.posX, player.posY - 1.0D, player.posZ, new ItemStack(Item.appleRed, 1, 0)); - world.spawnEntityInWorld(entityitem); - entityitem.onCollideWithPlayer(player); - return true; - } - else - return false; - } - - @Override - public int idDropped(int par1, Random par2Random, int par3) - { - return Blocks.saplings.get().blockID; - } - - @Override - public int damageDropped(int meta) - { - return 0; - } - - @Override - public int quantityDropped(Random random) - { - return random.nextInt(20) == 0 ? 1 : 0; - } - - public void dropBlockAsItemWithChance(World world, int x, int y, int z, int meta, float chance, int par7) - { - if (world.isRemote) - return; - - if (world.rand.nextInt(20) == 0) - { - int var9 = this.idDropped(meta, world.rand, par7); - this.dropBlockAsItem_do(world, x, y, z, new ItemStack(var9, 1, this.damageDropped(meta))); - } - - if ((meta & 3) == 3) - this.dropBlockAsItem_do(world, x, y, z, new ItemStack(Item.appleRed, 1, 0)); - else if ((meta & 3) == 2 && world.rand.nextInt(2) == 0) - this.dropBlockAsItem_do(world, x, y, z, new ItemStack(Item.appleRed, 1, 0)); - else if ((meta & 3) == 1 && world.rand.nextInt(5) == 0) - this.dropBlockAsItem_do(world, x, y, z, new ItemStack(Item.appleRed, 1, 0)); - else if ((meta & 3) == 0 && world.rand.nextInt(10) == 0) - this.dropBlockAsItem_do(world, x, y, z, new ItemStack(Item.appleRed, 1, 0)); - } - - @Override - public boolean isShearable(ItemStack item, World world, int x, int y, int z) - { - return true; - } - - @Override - public ArrayList onSheared(ItemStack item, World world, int x, int y, int z, int fortune) - { - ArrayList ret = new ArrayList(); - ret.add(new ItemStack(this, 1, 0)); - return ret; - } - - @SideOnly(Side.CLIENT) - public void setGraphicsLevel(boolean par1) - { - this.graphicsLevel = par1; - } - - public boolean shouldSideBeRendered(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5) - { - return true; - } - - @Override - public void beginLeavesDecay(World world, int x, int y, int z) - { - world.setBlockMetadataWithNotify(x, y, z, world.getBlockMetadata(x, y, z) | 8, 4); - } - - @Override - public boolean isLeaves(World world, int x, int y, int z) - { - return true; - } -} diff --git a/src/minecraft/biomesoplenty/blocks/BlockBOPColorizedLeaves.java b/src/minecraft/biomesoplenty/blocks/BlockBOPColorizedLeaves.java deleted file mode 100644 index a8e558056..000000000 --- a/src/minecraft/biomesoplenty/blocks/BlockBOPColorizedLeaves.java +++ /dev/null @@ -1,332 +0,0 @@ -package biomesoplenty.blocks; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockLeavesBase; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Icon; -import net.minecraft.world.ColorizerFoliage; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import net.minecraftforge.common.IShearable; -import biomesoplenty.BiomesOPlenty; -import biomesoplenty.api.Blocks; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BlockBOPColorizedLeaves extends BlockLeavesBase implements IShearable -{ - private static final String[] leaves = new String[] {"acacia", "mangrove", "palm", "redwood", "willow"}; - private Icon[][] textures; - int[] adjacentTreeBlocks; - - public BlockBOPColorizedLeaves(int blockID) - { - super(blockID, Material.leaves, false); - setBurnProperties(this.blockID, 30, 60); - this.setTickRandomly(true); - setHardness(0.2F); - setLightOpacity(1); - setStepSound(Block.soundGrassFootstep); - this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - @Override - public void registerIcons(IconRegister iconRegister) - { - textures = new Icon[2][leaves.length]; - - for (int i = 0; i < leaves.length; ++i) - { - textures[0][i] = iconRegister.registerIcon("BiomesOPlenty:leaves_" + leaves[i] + "_fancy"); - textures[1][i] = iconRegister.registerIcon("BiomesOPlenty:leaves_" + leaves[i] + "_fast"); - } - } - - @Override - public int getBlockColor() - { - double temperature = 0.5D; - double humidity = 1.0D; - return ColorizerFoliage.getFoliageColor(temperature, humidity); - } - - @Override - public int getRenderColor(int par1) - { - switch (par1) - { - case 0: - return ColorizerFoliage.getFoliageColorBirch(); - - case 3: - return ColorizerFoliage.getFoliageColorPine(); - - default: - return ColorizerFoliage.getFoliageColorBasic(); - } - } - - @Override - public int colorMultiplier(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) - { - int var6 = 0; - int var7 = 0; - int var8 = 0; - - for (int var9 = -1; var9 <= 1; ++var9) - { - for (int var10 = -1; var10 <= 1; ++var10) - { - int var11 = par1IBlockAccess.getBiomeGenForCoords(par2 + var10, par4 + var9).getBiomeFoliageColor(); - var6 += (var11 & 16711680) >> 16; - var7 += (var11 & 65280) >> 8; - var8 += var11 & 255; - } - } - - return (var6 / 9 & 255) << 16 | (var7 / 9 & 255) << 8 | var8 / 9 & 255; - } - - @Override - public Icon getIcon(int side, int meta) - { - return textures[(!isOpaqueCube() ? 0 : 1)][getTypeFromMeta(meta)]; - } - - @Override - public boolean isOpaqueCube() - { - return Block.leaves.isOpaqueCube(); - } - - @Override - @SideOnly(Side.CLIENT) - @SuppressWarnings({ "rawtypes", "unchecked" }) - public void getSubBlocks(int blockID, CreativeTabs creativeTabs, List list) { - for (int i = 0; i < textures[0].length; ++i) - list.add(new ItemStack(blockID, 1, i)); - } - - @Override - @SideOnly(Side.CLIENT) - public void randomDisplayTick(World world, int x, int y, int z, Random random) - { - if (world.canLightningStrikeAt(x, y + 1, z) && !world.doesBlockHaveSolidTopSurface(x, y - 1, z) && random.nextInt(15) == 1) - { - double d0 = (double)((float)x + random.nextFloat()); - double d1 = (double)y - 0.05D; - double d2 = (double)((float)z + random.nextFloat()); - world.spawnParticle("dripWater", d0, d1, d2, 0.0D, 0.0D, 0.0D); - } - } - - @Override - public void breakBlock(World world, int x, int y, int z, int par5, int par6) - { - byte radius = 1; - int bounds = radius + 1; - - if (world.checkChunksExist(x - bounds, y - bounds, z - bounds, x + bounds, y + bounds, z + bounds)) - for (int i = -radius; i <= radius; ++i) - for (int j = -radius; j <= radius; ++j) - for (int k = -radius; k <= radius; ++k) - { - int blockID = world.getBlockId(x + i, y + j, z + k); - - if (Block.blocksList[blockID] != null) - Block.blocksList[blockID].beginLeavesDecay(world, x + i, y + j, z + k); - } - } - - @Override - public void updateTick(World world, int x, int y, int z, Random random) - { - if (world.isRemote) - return; - - int meta = world.getBlockMetadata(x, y, z); - - if ((meta & 8) != 0/* && (meta & 4) == 0*/) - { - byte b0 = 4; - int i1 = b0 + 1; - byte b1 = 32; - int j1 = b1 * b1; - int k1 = b1 / 2; - - if (this.adjacentTreeBlocks == null) - { - this.adjacentTreeBlocks = new int[b1 * b1 * b1]; - } - - int l1; - - if (world.checkChunksExist(x - i1, y - i1, z - i1, x + i1, y + i1, z + i1)) - { - int i2; - int j2; - int k2; - - for (l1 = -b0; l1 <= b0; ++l1) - { - for (i2 = -b0; i2 <= b0; ++i2) - { - for (j2 = -b0; j2 <= b0; ++j2) - { - k2 = world.getBlockId(x + l1, y + i2, z + j2); - - Block block = Block.blocksList[k2]; - - if (block != null && block.canSustainLeaves(world, x + l1, y + i2, z + j2)) - { - this.adjacentTreeBlocks[(l1 + k1) * j1 + (i2 + k1) * b1 + j2 + k1] = 0; - } - else if (block != null && block.isLeaves(world, x + l1, y + i2, z + j2)) - { - this.adjacentTreeBlocks[(l1 + k1) * j1 + (i2 + k1) * b1 + j2 + k1] = -2; - } - else - { - this.adjacentTreeBlocks[(l1 + k1) * j1 + (i2 + k1) * b1 + j2 + k1] = -1; - } - } - } - } - - for (l1 = 1; l1 <= 4; ++l1) - { - for (i2 = -b0; i2 <= b0; ++i2) - { - for (j2 = -b0; j2 <= b0; ++j2) - { - for (k2 = -b0; k2 <= b0; ++k2) - { - if (this.adjacentTreeBlocks[(i2 + k1) * j1 + (j2 + k1) * b1 + k2 + k1] == l1 - 1) - { - if (this.adjacentTreeBlocks[(i2 + k1 - 1) * j1 + (j2 + k1) * b1 + k2 + k1] == -2) - { - this.adjacentTreeBlocks[(i2 + k1 - 1) * j1 + (j2 + k1) * b1 + k2 + k1] = l1; - } - - if (this.adjacentTreeBlocks[(i2 + k1 + 1) * j1 + (j2 + k1) * b1 + k2 + k1] == -2) - { - this.adjacentTreeBlocks[(i2 + k1 + 1) * j1 + (j2 + k1) * b1 + k2 + k1] = l1; - } - - if (this.adjacentTreeBlocks[(i2 + k1) * j1 + (j2 + k1 - 1) * b1 + k2 + k1] == -2) - { - this.adjacentTreeBlocks[(i2 + k1) * j1 + (j2 + k1 - 1) * b1 + k2 + k1] = l1; - } - - if (this.adjacentTreeBlocks[(i2 + k1) * j1 + (j2 + k1 + 1) * b1 + k2 + k1] == -2) - { - this.adjacentTreeBlocks[(i2 + k1) * j1 + (j2 + k1 + 1) * b1 + k2 + k1] = l1; - } - - if (this.adjacentTreeBlocks[(i2 + k1) * j1 + (j2 + k1) * b1 + (k2 + k1 - 1)] == -2) - { - this.adjacentTreeBlocks[(i2 + k1) * j1 + (j2 + k1) * b1 + (k2 + k1 - 1)] = l1; - } - - if (this.adjacentTreeBlocks[(i2 + k1) * j1 + (j2 + k1) * b1 + k2 + k1 + 1] == -2) - { - this.adjacentTreeBlocks[(i2 + k1) * j1 + (j2 + k1) * b1 + k2 + k1 + 1] = l1; - } - } - } - } - } - } - } - - l1 = this.adjacentTreeBlocks[k1 * j1 + k1 * b1 + k1]; - - if (l1 >= 0) - { - world.setBlockMetadataWithNotify(x, y, z, meta & -9, 4); - } - else - { - this.removeLeaves(world, x, y, z); - } - } - } - - private void removeLeaves(World world, int x, int y, int z) - { - this.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0); - world.setBlockToAir(x, y, z); - } - - @Override - public int idDropped(int par1, Random par2Random, int par3) - { - return Blocks.colorizedSaplings.get().blockID; - } - - @Override - public int damageDropped(int meta) - { - return getTypeFromMeta(meta); - } - - @Override - public int quantityDropped(Random random) - { - return random.nextInt(20) == 0 ? 1 : 0; - } - - @Override - public boolean isShearable(ItemStack item, World world, int x, int y, int z) - { - return true; - } - - @Override - public ArrayList onSheared(ItemStack item, World world, int x, int y, int z, int fortune) - { - ArrayList ret = new ArrayList(); - ret.add(new ItemStack(this, 1, getTypeFromMeta(world.getBlockMetadata(x, y, z)))); - return ret; - } - - public String getLeafType(int meta) - { - return leaves[getTypeFromMeta(meta)]; - } - - private static int getTypeFromMeta(int meta) - { - return meta & 7; - } - - @SideOnly(Side.CLIENT) - public void setGraphicsLevel(boolean par1) - { - this.graphicsLevel = par1; - } - - public boolean shouldSideBeRendered(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5) - { - return true; - } - - @Override - public void beginLeavesDecay(World world, int x, int y, int z) - { - world.setBlockMetadataWithNotify(x, y, z, world.getBlockMetadata(x, y, z) | 8, 4); - } - - @Override - public boolean isLeaves(World world, int x, int y, int z) - { - return true; - } -} diff --git a/src/minecraft/biomesoplenty/blocks/BlockBOPColorizedSapling.java b/src/minecraft/biomesoplenty/blocks/BlockBOPColorizedSapling.java deleted file mode 100644 index ece6fb238..000000000 --- a/src/minecraft/biomesoplenty/blocks/BlockBOPColorizedSapling.java +++ /dev/null @@ -1,156 +0,0 @@ -package biomesoplenty.blocks; - -import java.util.List; -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockSapling; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Icon; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; -import biomesoplenty.BiomesOPlenty; -import biomesoplenty.api.Blocks; -import biomesoplenty.worldgen.WorldGenAcacia; -import biomesoplenty.worldgen.WorldGenMangrove; -import biomesoplenty.worldgen.WorldGenPalmTree1; -import biomesoplenty.worldgen.WorldGenPalmTree3; -import biomesoplenty.worldgen.WorldGenRedwoodTree2; -import biomesoplenty.worldgen.WorldGenWillow; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BlockBOPColorizedSapling extends BlockSapling -{ - private static final String[] saplings = new String[] {"acacia", "mangrove", "palm", "redwood", "willow"}; - private Icon[] textures; - private static final int TYPES = 15; - - public BlockBOPColorizedSapling(int par1) - { - super(par1); - setHardness(0.0F); - setStepSound(Block.soundGrassFootstep); - this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - @Override - public void registerIcons(IconRegister iconRegister) - { - textures = new Icon[saplings.length]; - - for (int i = 0; i < saplings.length; ++i) - textures[i] = iconRegister.registerIcon("BiomesOPlenty:sapling_" + saplings[i]); - - } - - @Override - @SideOnly(Side.CLIENT) - public Icon getIcon(int side, int meta) - { - if (meta < 0 || meta >= saplings.length) - meta = 0; - - return textures[meta]; - } - - @Override - @SuppressWarnings({ "rawtypes", "unchecked" }) - public void getSubBlocks(int blockID, CreativeTabs creativeTabs, List list) { - for (int i = 0; i < saplings.length; ++i) - list.add(new ItemStack(blockID, 1, i)); - } - - @Override - public boolean canPlaceBlockOnSide(World world, int x, int y, int z, int side, ItemStack itemStack) - { - int id = world.getBlockId(x, y - 1, z); - int meta = itemStack.getItemDamage(); - - if (itemStack.itemID == this.blockID) - switch (meta) - { - case 1: // Mangrove - return id == Block.sand.blockID; - - default: - return id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.tilledField.blockID; - } - else - return this.canPlaceBlockOnSide(world, x, y, z, side); - } - - @Override - public void updateTick(World world, int x, int y, int z, Random random) - { - if (world.isRemote) - return; - - this.checkFlowerChange(world, x, y, z); - - if (world.getBlockLightValue(x, y + 1, z) >= 9 && random.nextInt(7) == 0) - this.growTree(world, x, y, z, random); - } - - @Override - public void growTree(World world, int x, int y, int z, Random random) - { - int meta = world.getBlockMetadata(x, y, z) & TYPES; - Object obj = null; - int rnd = random.nextInt(8); - - if (obj == null) - { - switch (meta) - { - case 0: // Acacia Tree - obj = new WorldGenAcacia(false); - break; - - case 1: // Mangrove Tree - obj = new WorldGenMangrove(false); - break; - - case 2: // Palm Tree - rnd = random.nextInt(4); - - if (rnd == 0) - obj = new WorldGenPalmTree1(); - else - obj = new WorldGenPalmTree3(); - break; - - case 3: // Redwood Tree - obj = new WorldGenRedwoodTree2(false); - break; - - case 4: // Willow Tree - obj = new WorldGenWillow(); - break; - } - } - - if (obj != null) - { - world.setBlockToAir(x, y, z); - - if (!((WorldGenerator)obj).generate(world, random, x, y, z)) - world.setBlock(x, y, z, this.blockID, meta, 2); - } - } - - @Override - public int damageDropped(int meta) - { - return meta & TYPES; - } - - @Override - public int getDamageValue(World world, int x, int y, int z) - { - return world.getBlockMetadata(x, y, z) & TYPES; - } -} diff --git a/src/minecraft/biomesoplenty/blocks/BlockBOPFlower.java b/src/minecraft/biomesoplenty/blocks/BlockBOPFlower.java deleted file mode 100644 index c2fbf68a4..000000000 --- a/src/minecraft/biomesoplenty/blocks/BlockBOPFlower.java +++ /dev/null @@ -1,163 +0,0 @@ -package biomesoplenty.blocks; - -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockFlower; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.DamageSource; -import net.minecraft.util.Icon; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import biomesoplenty.BiomesOPlenty; -import biomesoplenty.blocks.renderers.FoliageRenderer; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BlockBOPFlower extends BlockFlower -{ - private static final String[] plants = new String[] {"clover", "swampflower", "deadbloom", "glowflower", "hydrangea", "daisy", "tulip", "wildflower", "violet", "anemone", "toadstool", "cactus"}; - private Icon[] textures; - - protected BlockBOPFlower(int blockID, Material material) - { - super(blockID, material); - this.setTickRandomly(true); - float var4 = 0.2F; - this.setBlockBounds(0.5F - var4, 0.0F, 0.5F - var4, 0.5F + var4, var4 * 3.0F, 0.5F + var4); - this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - public BlockBOPFlower(int blockID) - { - this(blockID, Material.plants); - } - - @Override - public void registerIcons(IconRegister iconRegister) - { - textures = new Icon[plants.length]; - - for (int i = 0; i < plants.length; ++i) - textures[i] = iconRegister.registerIcon("BiomesOPlenty:" + plants[i]); - } - - @Override - public Icon getIcon(int side, int meta) - { - if (meta < 0 || meta >= textures.length) - meta = 0; - - return textures[meta]; - } - - public int getRenderType () - { - return FoliageRenderer.render; - } - - @Override - public int getLightValue(IBlockAccess world, int x, int y, int z) - { - int meta = world.getBlockMetadata(x, y, z); - if (meta == 3) - return 9; - else - return 0; - } - - public void setBlockBoundsBasedOnState(IBlockAccess world, int par2, int par3, int par4) - { - int meta = world.getBlockMetadata(par2, par3, par4); - - switch (meta) - { - case 0: - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.015625F, 1.0F); - break; - - default: - this.setBlockBounds(0.1F, 0.0F, 0.1F, 0.9F, 0.8F, 0.9F); - break; - } - } - - @Override - public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) - { - int meta = world.getBlockMetadata(x, y, z); - if (meta == 11) - entity.attackEntityFrom(DamageSource.cactus, 1); - } - - @Override - @SideOnly(Side.CLIENT) - @SuppressWarnings({ "rawtypes", "unchecked" }) - public void getSubBlocks(int blockID, CreativeTabs creativeTabs, List list) { - for (int i = 0; i < plants.length; ++i) - list.add(new ItemStack(blockID, 1, i)); - } - - protected boolean canThisPlantGrowOnThisBlockID(int id) - { - return id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.tilledField.blockID || id == Block.sand.blockID; - } - - protected boolean canThisPlantGrowOnThisBlockID(int id, int meta) - { - switch (meta) - { - case 10: // Toadstool - return id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.mycelium.blockID; - - case 11: // Cactus - return id == Block.sand.blockID; - - default: - return id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.tilledField.blockID; - } - } - - @Override - public boolean canPlaceBlockOnSide(World world, int x, int y, int z, int side, ItemStack itemStack) - { - int id = world.getBlockId(x, y - 1, z); - int meta = itemStack.getItemDamage(); - - if (itemStack.itemID == this.blockID) - switch (meta) - { - case 10: // Toadstool - return id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.mycelium.blockID; - - case 11: // Cactus - return id == Block.sand.blockID; - - default: - return id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.tilledField.blockID; - } - else - return this.canPlaceBlockOnSide(world, x, y, z, side); - } - - @Override - public boolean canBlockStay(World world, int x, int y, int z) - { - if (world.getBlockId(x, y, z) != this.blockID) - return (world.getFullBlockLightValue(x, y, z) >= 8 || world.canBlockSeeTheSky(x, y, z)) - && this.canThisPlantGrowOnThisBlockID(world.getBlockId(x, y - 1, z)); - else - return (world.getFullBlockLightValue(x, y, z) >= 8 || world.canBlockSeeTheSky(x, y, z)) - && this.canThisPlantGrowOnThisBlockID(world.getBlockId(x, y - 1, z), world.getBlockMetadata(x, y, z)); - } - - @Override - public int damageDropped(int meta) - { - return meta & 15; - } -} diff --git a/src/minecraft/biomesoplenty/blocks/BlockBOPFoliage.java b/src/minecraft/biomesoplenty/blocks/BlockBOPFoliage.java deleted file mode 100644 index f9f453927..000000000 --- a/src/minecraft/biomesoplenty/blocks/BlockBOPFoliage.java +++ /dev/null @@ -1,260 +0,0 @@ -package biomesoplenty.blocks; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockFlower; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Icon; -import net.minecraft.world.ColorizerFoliage; -import net.minecraft.world.ColorizerGrass; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeHooks; -import net.minecraftforge.common.IShearable; -import biomesoplenty.BiomesOPlenty; -import biomesoplenty.blocks.renderers.FoliageRenderer; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BlockBOPFoliage extends BlockFlower implements IShearable -{ - private static final String[] foliageTypes = new String[] {"algae", "shortgrass", "mediumgrass", "highgrassbottom", "bush", "sprout", "highgrasstop"}; - - private Icon[] textures; - - private static final int GRASSTOP = 6; - private static final int ALGAE = 0; - private static final int GRASSBOTTOM = 3; - - public BlockBOPFoliage(int blockID) - { - super(blockID, Material.vine); - float f = 0.4F; - setBurnProperties(this.blockID, 60, 100); - setBlockBounds(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, 0.8F, 0.5F + f); - setHardness(0.0F); - setStepSound(Block.soundGrassFootstep); - this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - @Override - public void registerIcons(IconRegister iconRegister) - { - textures = new Icon[foliageTypes.length]; - - for (int i = 0; i < textures.length; ++i) - textures[i] = iconRegister.registerIcon("BiomesOPlenty:"+foliageTypes[i]); - } - - @Override - public Icon getIcon(int side, int meta) - { - if (meta >= textures.length) - meta = 0; - - return textures[meta]; - } - - @Override - @SuppressWarnings({ "rawtypes", "unchecked" }) - public void getSubBlocks(int blockID, CreativeTabs par2CreativeTabs, List list) - { - for (int i = 0; i < GRASSTOP; ++i) - list.add(new ItemStack(blockID, 1, i)); - } - - @Override - public ArrayList getBlockDropped(World world, int x, int y, int z, int meta, int fortune) - { - ArrayList ret = new ArrayList(); - - switch (meta) - { - case 1: - case 2: - case 3: - if (world.rand.nextInt(8) != 0) - return ret; - - ItemStack item = ForgeHooks.getGrassSeed(world); - if (item != null) - ret.add(item); - break; - - case 5: - if (world.rand.nextInt(50) != 0) - return ret; - - if (world.rand.nextInt(2) == 0) - ret.add(new ItemStack(Item.carrot,1)); - else - ret.add(new ItemStack(Item.potato,1)); - break; - } - - return ret; - } - - @Override - public boolean canPlaceBlockOnSide(World world, int x, int y, int z, int side, ItemStack itemStack) - { - int id = world.getBlockId(x, y - 1, z); - int meta = itemStack.getItemDamage(); - - if (itemStack.itemID == this.blockID) - switch (meta) - { - case ALGAE: // Dead Grass - return id == Block.waterStill.blockID; - - default: - return id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.tilledField.blockID; - } - else - return this.canPlaceBlockOnSide(world, x, y, z, side); - } - - protected boolean canThisPlantGrowOnThisBlockID(int id) - { - return id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.tilledField.blockID; - } - - protected boolean canThisPlantGrowOnThisBlockID(int blockID, int metadata) - { - if (metadata == GRASSTOP) - return blockID == this.blockID; - else if (metadata == ALGAE) - return blockID == Block.waterStill.blockID; - else - return blockID == Block.grass.blockID || blockID == Block.dirt.blockID || blockID == Block.tilledField.blockID; - } - - @Override - public boolean canBlockStay(World world, int x, int y, int z) - { - if (world.getBlockId(x, y, z) != this.blockID) - return (world.getFullBlockLightValue(x, y, z) >= 8 || world.canBlockSeeTheSky(x, y, z)) - && this.canThisPlantGrowOnThisBlockID(world.getBlockId(x, y - 1, z)); - else - return (world.getFullBlockLightValue(x, y, z) >= 8 || world.canBlockSeeTheSky(x, y, z)) - && this.canThisPlantGrowOnThisBlockID(world.getBlockId(x, y - 1, z), world.getBlockMetadata(x, y, z)); - } - - @Override - public void onNeighborBlockChange(World world, int x, int y, int z, int neighborID) - { - super.onNeighborBlockChange(world, x, y, z, neighborID); - this.checkFlowerChange(world, x, y, z); - if (world.getBlockMetadata(x, y, z) == GRASSTOP && world.getBlockId(x, y - 1, z) == this.blockID && world.getBlockMetadata(x, y - 1, z) != GRASSBOTTOM) - world.setBlockToAir(x, y, z); - if (world.getBlockMetadata(x, y, z) == GRASSBOTTOM && world.getBlockId(x, y + 1, z) != this.blockID) - world.setBlockToAir(x, y, z); - } - - @Override - @SideOnly(Side.CLIENT) - public int getBlockColor() - { - double var1 = 0.5D; - double var3 = 1.0D; - return ColorizerGrass.getGrassColor(var1, var3); - } - - @Override - @SideOnly(Side.CLIENT) - public int getRenderColor(int par1) - { - return ColorizerFoliage.getFoliageColorBasic(); - } - - public int getRenderType () - { - return FoliageRenderer.render; - } - - @Override - @SideOnly(Side.CLIENT) - public int colorMultiplier(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) - { - return par1IBlockAccess.getBiomeGenForCoords(par2, par4).getBiomeGrassColor(); - } - - @Override - public int getDamageValue(World world, int x, int y, int z) - { - int meta = world.getBlockMetadata(x, y, z); - if (meta == GRASSTOP) - meta = GRASSBOTTOM; - return meta; - } - - @Override - public int idDropped(int par1, Random par2Random, int par3) - { - return -1; - } - - public void setBlockBoundsBasedOnState(IBlockAccess world, int par2, int par3, int par4) - { - int meta = world.getBlockMetadata(par2, par3, par4); - - switch (meta) - { - case GRASSTOP: - this.setBlockBounds(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F); - break; - - case GRASSBOTTOM: - this.setBlockBounds(0.1F, 0.0F, 0.1F, 0.9F, 1.9F, 0.9F); - break; - - case ALGAE: - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.015625F, 1.0F); - break; - - default: - this.setBlockBounds(0.1F, 0.0F, 0.1F, 0.9F, 0.8F, 0.9F); - break; - } - } - - @Override - public void harvestBlock(World world, EntityPlayer player, int x, int y, int z, int meta) - { - super.harvestBlock(world, player, x, y, z, meta); - } - - @Override - public boolean isBlockReplaceable(World world, int x, int y, int z) - { - return true; - } - - @Override - public boolean isShearable(ItemStack item, World world, int x, int y, int z) - { - return true; - } - - @Override - public ArrayList onSheared(ItemStack item, World world, int x, int y, int z, int fortune) - { - ArrayList ret = new ArrayList(); - ret.add(new ItemStack(this, 1, world.getBlockMetadata(x, y, z))); - return ret; - } - - @Override - public boolean isBlockFoliage(World world, int x, int y, int z) - { - return true; - } -} diff --git a/src/minecraft/biomesoplenty/blocks/BlockBOPGeneric.java b/src/minecraft/biomesoplenty/blocks/BlockBOPGeneric.java deleted file mode 100644 index ce531521d..000000000 --- a/src/minecraft/biomesoplenty/blocks/BlockBOPGeneric.java +++ /dev/null @@ -1,119 +0,0 @@ -package biomesoplenty.blocks; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.util.Icon; -import biomesoplenty.BiomesOPlenty; - -public class BlockBOPGeneric extends Block -{ - public enum BlockType - { - ASH_STONE, HARD_SAND, HARD_DIRT, HARD_ICE, HOLY_STONE, BAMBOO_THATCHING, DRIED_DIRT, CRAG_ROCK, MUD_BRICK; - } - - private Icon texture; - private BlockType type; - - public BlockBOPGeneric(int id, Material material, BlockType type) - { - super(id, material); - this.type = type; - this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - - switch (type) - { - case ASH_STONE: - setHardness(1.0F).setStepSound(Block.soundStoneFootstep).setUnlocalizedName("ashStone"); - break; - - case BAMBOO_THATCHING: - setHardness(1.0F).setResistance(5.0F).setStepSound(Block.soundWoodFootstep).setUnlocalizedName("bambooThatching"); - break; - - case CRAG_ROCK: - setHardness(1.0F).setStepSound(Block.soundGravelFootstep).setUnlocalizedName("cragRock"); - break; - - case DRIED_DIRT: - setHardness(0.1F).setStepSound(Block.soundStoneFootstep).setUnlocalizedName("driedDirt"); - break; - - case HARD_DIRT: - setHardness(0.9F).setStepSound(Block.soundStoneFootstep).setUnlocalizedName("hardDirt"); - break; - - case HARD_ICE: - setHardness(0.75F).setStepSound(Block.soundStoneFootstep).setUnlocalizedName("hardIce"); - break; - - case HARD_SAND: - setHardness(0.7F).setStepSound(Block.soundSandFootstep).setUnlocalizedName("hardSand"); - break; - - case HOLY_STONE: - setHardness(1.0F).setStepSound(Block.soundStoneFootstep).setUnlocalizedName("holyStone"); - break; - - case MUD_BRICK: - setHardness(1.0F).setResistance(2.0F).setStepSound(Block.soundStoneFootstep).setUnlocalizedName("mudBrick"); - break; - - default: - break; - } - } - - @Override - public void registerIcons(IconRegister iconRegister) - { - switch (type) - { - case ASH_STONE: - texture = iconRegister.registerIcon("BiomesOPlenty:ashstone"); - break; - - case BAMBOO_THATCHING: - texture = iconRegister.registerIcon("BiomesOPlenty:bamboothatching"); - break; - - case CRAG_ROCK: - texture = iconRegister.registerIcon("BiomesOPlenty:cragrock"); - break; - - case DRIED_DIRT: - texture = iconRegister.registerIcon("BiomesOPlenty:drieddirt"); - break; - - case HARD_DIRT: - texture = iconRegister.registerIcon("BiomesOPlenty:harddirt"); - break; - - case HARD_ICE: - texture = iconRegister.registerIcon("BiomesOPlenty:hardice"); - break; - - case HARD_SAND: - texture = iconRegister.registerIcon("BiomesOPlenty:hardsand"); - break; - - case HOLY_STONE: - texture = iconRegister.registerIcon("BiomesOPlenty:holystone"); - break; - - case MUD_BRICK: - texture = iconRegister.registerIcon("BiomesOPlenty:mudbrick"); - break; - - default: - break; - } - } - - @Override - public Icon getIcon(int side, int meta) - { - return texture; - } -} diff --git a/src/minecraft/biomesoplenty/blocks/BlockBOPGrass.java b/src/minecraft/biomesoplenty/blocks/BlockBOPGrass.java deleted file mode 100644 index 91e5ed5e3..000000000 --- a/src/minecraft/biomesoplenty/blocks/BlockBOPGrass.java +++ /dev/null @@ -1,185 +0,0 @@ -package biomesoplenty.blocks; - -import static net.minecraftforge.common.ForgeDirection.UP; - -import java.util.List; -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.Icon; -import net.minecraft.world.World; -import net.minecraft.world.WorldProviderEnd; -import net.minecraftforge.common.ForgeDirection; -import biomesoplenty.BiomesOPlenty; -import biomesoplenty.api.Blocks; - -public class BlockBOPGrass extends Block -{ - private Icon[][] blockIcon = new Icon[2][6]; - - public BlockBOPGrass(int par1) - { - super(par1, Material.grass); - this.setTickRandomly(true); - this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - setStepSound(Block.soundGrassFootstep); - setHardness(0.6F); - setLightValue(0.25F); - } - - @Override - public void registerIcons(IconRegister iconRegister) - { - this.blockIcon[0][0] = iconRegister.registerIcon("BiomesOPlenty:holystone"); - this.blockIcon[0][1] = iconRegister.registerIcon("BiomesOPlenty:holygrass_top"); - this.blockIcon[0][2] = iconRegister.registerIcon("BiomesOPlenty:holygrass_side"); - this.blockIcon[0][3] = iconRegister.registerIcon("BiomesOPlenty:holygrass_side"); - this.blockIcon[0][4] = iconRegister.registerIcon("BiomesOPlenty:holygrass_side"); - this.blockIcon[0][5] = iconRegister.registerIcon("BiomesOPlenty:holygrass_side"); - - this.blockIcon[1][0] = iconRegister.registerIcon("BiomesOPlenty:smolderinggrass_bottom"); - this.blockIcon[1][1] = iconRegister.registerIcon("BiomesOPlenty:smolderinggrass_top"); - this.blockIcon[1][2] = iconRegister.registerIcon("BiomesOPlenty:smolderinggrass_side"); - this.blockIcon[1][3] = iconRegister.registerIcon("BiomesOPlenty:smolderinggrass_side"); - this.blockIcon[1][4] = iconRegister.registerIcon("BiomesOPlenty:smolderinggrass_side"); - this.blockIcon[1][5] = iconRegister.registerIcon("BiomesOPlenty:smolderinggrass_side"); - } - - @Override - public Icon getIcon(int side, int meta) - { - return blockIcon[meta][side]; - } - - @Override - @SuppressWarnings({ "rawtypes", "unchecked" }) - public void getSubBlocks(int blockID, CreativeTabs creativeTabs, List list) { - for (int i = 0; i < 2; ++i) - list.add(new ItemStack(blockID, 1, i)); - } - - @Override - public int damageDropped(int meta) - { - return meta; - } - - @Override - public boolean isFireSource(World world, int x, int y, int z, int metadata, ForgeDirection side) - { - if (metadata == 0) - { - if (blockID == Block.netherrack.blockID && side == UP) - return true; - - if (blockID == this.blockID && side == UP) - return true; - - if ((world.provider instanceof WorldProviderEnd) && blockID == Block.bedrock.blockID && side == UP) - return true; - } - - return false; - } - - @Override - public int onBlockPlaced(World world, int par2, int par3, int par4, int par5, float par6, float par7, float par8, int meta) - { - if (meta == 0) - if (world.provider.isHellWorld) - { - world.playSound(par2, par3, par4, "mob.ghast.death", 20.0F, 0.95F + (float)Math.random() * 0.1F, true); - - for (int l = 0; l < 8; ++l) - { - world.spawnParticle("flame", (double)par2 + Math.random(), (double)par3 + Math.random(), (double)par4 + Math.random(), 0.0D, 0.0D, 0.0D); - world.spawnParticle("smoke", (double)par2 + Math.random(), (double)par3 + Math.random(), (double)par4 + Math.random(), 0.0D, 0.0D, 0.0D); - } - } - return meta; - } - - @Override - public void randomDisplayTick(World world, int x, int y, int z, Random random) - { - if (!world.isRemote) - return; - - if (world.getBlockMetadata(x, y, z) == 1) - { - if (random.nextInt(4) == 0) - world.spawnParticle("smoke", (double)((float)x + random.nextFloat()), (double)((float)y + 1.1F), (double)((float)z + random.nextFloat()), 0.0D, 0.0D, 0.0D); - - if (random.nextInt(6) == 0) - world.spawnParticle("flame", (double)((float)x + random.nextFloat()), (double)((float)y + 1.1F), (double)((float)z + random.nextFloat()), 0.0D, 0.0D, 0.0D); - } - } - - @Override - public void updateTick(World world, int x, int y, int z, Random random) - { - if (world.getBlockMetadata(x, y, z) == 0) - { - if (world.provider.isHellWorld) - { - world.setBlock(x, y + 1, z, Block.fire.blockID); - world.setBlock(x, y, z, Blocks.holyGrass.get().blockID, 1, 2); - } - - if (!world.isRemote) - { - if (world.getBlockLightValue(x, y + 1, z) < 4 && Block.lightOpacity[world.getBlockId(x, y + 1, z)] > 2) - { - world.setBlock(x, y, z, Blocks.holyStone.get().blockID); - } - else if (world.getBlockLightValue(x, y + 1, z) >= 9) - { - for (int var6 = 0; var6 < 4; ++var6) - { - int var7 = x + random.nextInt(3) - 1; - int var8 = y + random.nextInt(5) - 3; - int var9 = z + random.nextInt(3) - 1; - int var10 = world.getBlockId(var7, var8 + 1, var9); - - if (world.getBlockId(var7, var8, var9) == Blocks.holyStone.get().blockID && world.getBlockLightValue(var7, var8 + 1, var9) >= 4 && Block.lightOpacity[var10] <= 2) - { - world.setBlock(var7, var8, var9, Blocks.holyGrass.get().blockID, 0, 2); - } - } - } - } - } - } - - @Override - public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) - { - if (world.getBlockMetadata(x, y, z) == 1) - { - float f = 0.02F; - return AxisAlignedBB.getAABBPool().getAABB((double)x, (double)y, (double)z, (double)(x + 1), (double)((float)(y + 1) - f), (double)(z + 1)); - } - - return super.getCollisionBoundingBoxFromPool(world, x, y, z); - } - - @Override - public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) - { - if (world.getBlockMetadata(x, y, z) == 1) - entity.setFire(2); - } - - @Override - public int idDropped(int meta, Random par2Random, int par3) - { - return meta == 0 ? Blocks.holyStone.get().blockID : Block.dirt.blockID; - } - -} diff --git a/src/minecraft/biomesoplenty/blocks/BlockBOPLeaves.java b/src/minecraft/biomesoplenty/blocks/BlockBOPLeaves.java deleted file mode 100644 index 0b1f20403..000000000 --- a/src/minecraft/biomesoplenty/blocks/BlockBOPLeaves.java +++ /dev/null @@ -1,301 +0,0 @@ -package biomesoplenty.blocks; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockLeavesBase; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Icon; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import net.minecraftforge.common.IShearable; -import biomesoplenty.BiomesOPlenty; -import biomesoplenty.api.Blocks; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BlockBOPLeaves extends BlockLeavesBase implements IShearable -{ - public static enum LeafCategory - { - CAT1, CAT2; - } - - //Autumn - Orange = Leaves 1, Origin - White = Leaves 2 - private static final String[] leaves = new String[] {"yellowautumn", "bamboo", "magic", "dark", "dead", "fir", "holy", "orangeautumn", "origin", "pinkcherry", "maple", "whitecherry"}; - private Icon[][] textures; - private final LeafCategory category; - int[] adjacentTreeBlocks; - - public BlockBOPLeaves(int blockID, LeafCategory cat) - { - super(blockID, Material.leaves, false); - category = cat; - setBurnProperties(this.blockID, 30, 60); - this.setTickRandomly(true); - setHardness(0.2F); - setLightOpacity(1); - setStepSound(Block.soundGrassFootstep); - this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - @Override - public void registerIcons(IconRegister iconRegister) - { - textures = new Icon[2][leaves.length]; - - for (int i = 0; i < leaves.length; ++i) - { - textures[0][i] = iconRegister.registerIcon("BiomesOPlenty:leaves_" + leaves[i] + "_fancy"); - textures[1][i] = iconRegister.registerIcon("BiomesOPlenty:leaves_" + leaves[i] + "_fast"); - } - } - - @Override - public Icon getIcon(int side, int meta) - { - return textures[(!isOpaqueCube() ? 0 : 1)][getTypeFromMeta(meta) + (this.category.ordinal() * 8)]; - } - - @Override - public boolean isOpaqueCube() - { - return Block.leaves.isOpaqueCube(); - } - - @Override - @SuppressWarnings({ "rawtypes", "unchecked" }) - public void getSubBlocks(int blockID, CreativeTabs creativeTabs, List list) { - for (int i = 0; i < 8; ++i) - if (category != LeafCategory.CAT2 || i < 4) - list.add(new ItemStack(blockID, 1, i)); - } - - @Override - @SideOnly(Side.CLIENT) - public void randomDisplayTick(World world, int x, int y, int z, Random random) - { - if (world.canLightningStrikeAt(x, y + 1, z) && !world.doesBlockHaveSolidTopSurface(x, y - 1, z) && random.nextInt(15) == 1) - { - double d0 = (double)((float)x + random.nextFloat()); - double d1 = (double)y - 0.05D; - double d2 = (double)((float)z + random.nextFloat()); - world.spawnParticle("dripWater", d0, d1, d2, 0.0D, 0.0D, 0.0D); - } - } - - @Override - public void breakBlock(World world, int x, int y, int z, int par5, int par6) - { - byte radius = 1; - int bounds = radius + 1; - - if (world.checkChunksExist(x - bounds, y - bounds, z - bounds, x + bounds, y + bounds, z + bounds)) - for (int i = -radius; i <= radius; ++i) - for (int j = -radius; j <= radius; ++j) - for (int k = -radius; k <= radius; ++k) - { - int blockID = world.getBlockId(x + i, y + j, z + k); - - if (Block.blocksList[blockID] != null) - Block.blocksList[blockID].beginLeavesDecay(world, x + i, y + j, z + k); - } - } - - @Override - public void updateTick(World world, int x, int y, int z, Random random) - { - if (world.isRemote) - return; - - int meta = world.getBlockMetadata(x, y, z); - - if ((meta & 8) != 0/* && (meta & 4) == 0*/) - { - byte b0 = 4; - int i1 = b0 + 1; - byte b1 = 32; - int j1 = b1 * b1; - int k1 = b1 / 2; - - if (this.adjacentTreeBlocks == null) - { - this.adjacentTreeBlocks = new int[b1 * b1 * b1]; - } - - int l1; - - if (world.checkChunksExist(x - i1, y - i1, z - i1, x + i1, y + i1, z + i1)) - { - int i2; - int j2; - int k2; - - for (l1 = -b0; l1 <= b0; ++l1) - { - for (i2 = -b0; i2 <= b0; ++i2) - { - for (j2 = -b0; j2 <= b0; ++j2) - { - k2 = world.getBlockId(x + l1, y + i2, z + j2); - - Block block = Block.blocksList[k2]; - - if (block != null && block.canSustainLeaves(world, x + l1, y + i2, z + j2)) - { - this.adjacentTreeBlocks[(l1 + k1) * j1 + (i2 + k1) * b1 + j2 + k1] = 0; - } - else if (block != null && block.isLeaves(world, x + l1, y + i2, z + j2)) - { - this.adjacentTreeBlocks[(l1 + k1) * j1 + (i2 + k1) * b1 + j2 + k1] = -2; - } - else - { - this.adjacentTreeBlocks[(l1 + k1) * j1 + (i2 + k1) * b1 + j2 + k1] = -1; - } - } - } - } - - for (l1 = 1; l1 <= 4; ++l1) - { - for (i2 = -b0; i2 <= b0; ++i2) - { - for (j2 = -b0; j2 <= b0; ++j2) - { - for (k2 = -b0; k2 <= b0; ++k2) - { - if (this.adjacentTreeBlocks[(i2 + k1) * j1 + (j2 + k1) * b1 + k2 + k1] == l1 - 1) - { - if (this.adjacentTreeBlocks[(i2 + k1 - 1) * j1 + (j2 + k1) * b1 + k2 + k1] == -2) - { - this.adjacentTreeBlocks[(i2 + k1 - 1) * j1 + (j2 + k1) * b1 + k2 + k1] = l1; - } - - if (this.adjacentTreeBlocks[(i2 + k1 + 1) * j1 + (j2 + k1) * b1 + k2 + k1] == -2) - { - this.adjacentTreeBlocks[(i2 + k1 + 1) * j1 + (j2 + k1) * b1 + k2 + k1] = l1; - } - - if (this.adjacentTreeBlocks[(i2 + k1) * j1 + (j2 + k1 - 1) * b1 + k2 + k1] == -2) - { - this.adjacentTreeBlocks[(i2 + k1) * j1 + (j2 + k1 - 1) * b1 + k2 + k1] = l1; - } - - if (this.adjacentTreeBlocks[(i2 + k1) * j1 + (j2 + k1 + 1) * b1 + k2 + k1] == -2) - { - this.adjacentTreeBlocks[(i2 + k1) * j1 + (j2 + k1 + 1) * b1 + k2 + k1] = l1; - } - - if (this.adjacentTreeBlocks[(i2 + k1) * j1 + (j2 + k1) * b1 + (k2 + k1 - 1)] == -2) - { - this.adjacentTreeBlocks[(i2 + k1) * j1 + (j2 + k1) * b1 + (k2 + k1 - 1)] = l1; - } - - if (this.adjacentTreeBlocks[(i2 + k1) * j1 + (j2 + k1) * b1 + k2 + k1 + 1] == -2) - { - this.adjacentTreeBlocks[(i2 + k1) * j1 + (j2 + k1) * b1 + k2 + k1 + 1] = l1; - } - } - } - } - } - } - } - - l1 = this.adjacentTreeBlocks[k1 * j1 + k1 * b1 + k1]; - - if (l1 >= 0) - { - world.setBlockMetadataWithNotify(x, y, z, meta & -9, 4); - } - else - { - this.removeLeaves(world, x, y, z); - } - } - } - - private void removeLeaves(World world, int x, int y, int z) - { - this.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0); - world.setBlockToAir(x, y, z); - } - - @Override - public int idDropped(int par1, Random par2Random, int par3) - { - return Blocks.saplings.get().blockID; - } - - @Override - public int damageDropped(int meta) - { - return (getTypeFromMeta(meta) + this.category.ordinal() * 8) + 1; - } - - @Override - public int getDamageValue(World par1World, int par2, int par3, int par4) - { - return getTypeFromMeta(par1World.getBlockMetadata(par2, par3, par4)); - } - - @Override - public int quantityDropped(Random random) - { - return random.nextInt(20) == 0 ? 1 : 0; - } - - @Override - public boolean isShearable(ItemStack item, World world, int x, int y, int z) - { - return true; - } - - @Override - public ArrayList onSheared(ItemStack item, World world, int x, int y, int z, int fortune) - { - ArrayList ret = new ArrayList(); - ret.add(new ItemStack(this, 1, getTypeFromMeta(world.getBlockMetadata(x, y, z)))); - return ret; - } - - public String getLeafType(int meta) - { - return leaves[getTypeFromMeta(meta) + category.ordinal() * 8]; - } - - private static int getTypeFromMeta(int meta) - { - return meta & 7; - } - - @SideOnly(Side.CLIENT) - public void setGraphicsLevel(boolean par1) - { - this.graphicsLevel = par1; - } - - @Override - public boolean shouldSideBeRendered(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5) - { - return true; - } - - @Override - public void beginLeavesDecay(World world, int x, int y, int z) - { - world.setBlockMetadataWithNotify(x, y, z, world.getBlockMetadata(x, y, z) | 8, 4); - } - - @Override - public boolean isLeaves(World world, int x, int y, int z) - { - return true; - } -} diff --git a/src/minecraft/biomesoplenty/blocks/BlockBOPLog.java b/src/minecraft/biomesoplenty/blocks/BlockBOPLog.java deleted file mode 100644 index fea652e20..000000000 --- a/src/minecraft/biomesoplenty/blocks/BlockBOPLog.java +++ /dev/null @@ -1,156 +0,0 @@ -package biomesoplenty.blocks; - -import java.util.List; - -import biomesoplenty.BiomesOPlenty; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Icon; -import net.minecraft.world.World; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BlockBOPLog extends Block -{ - public static enum LogCategory - { - CAT1, CAT2, CAT3; - } - - private static final String[] types = new String[] {"acacia", "cherry", "dark", "fir", "holy", "magic", "mangrove", "palm", "redwood", "willow", "dead", "bigflowerstem"}; - private Icon[] textures; - private Icon[] logHearts; - - private final LogCategory category; - - public BlockBOPLog(int blockID, LogCategory cat) - { - super(blockID, Material.wood); - category = cat; - setBurnProperties(this.blockID, 5, 5); - setHardness(2.0F); - setResistance(5.0F); - setStepSound(Block.soundWoodFootstep); - this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - @Override - public void registerIcons(IconRegister iconRegister) - { - textures = new Icon[types.length]; - logHearts = new Icon[types.length]; - - for (int i = 0; i < types.length - 1; ++i) - { - textures[i] = iconRegister.registerIcon("BiomesOPlenty:log_"+types[i]+"_side"); - logHearts[i] = iconRegister.registerIcon("BiomesOPlenty:log_"+types[i]+"_heart"); - } - - textures[types.length - 1] = iconRegister.registerIcon("BiomesOPlenty:bigflowerstem_side"); - logHearts[types.length - 1] = iconRegister.registerIcon("BiomesOPlenty:bigflowerstem_heart"); - } - - @Override - public Icon getIcon(int side, int meta) - { - int pos = meta & 12; - if (pos == 0 && (side == 1 || side == 0) || pos == 4 && (side == 5 || side == 4) || pos == 8 && (side == 2 || side == 3)) - return logHearts[(getTypeFromMeta(meta) + this.category.ordinal() * 4)]; - return textures[(getTypeFromMeta(meta) + this.category.ordinal() * 4)]; - } - - @Override - @SuppressWarnings({ "rawtypes", "unchecked" }) - public void getSubBlocks(int blockID, CreativeTabs creativeTabs, List list) { - for (int i = 0; i < 4; ++i) - list.add(new ItemStack(this, 1, i)); - } - - @Override - public void breakBlock(World world, int x, int y, int z, int par5, int par6) - { - byte radius = 4; - int bounds = radius + 1; - - if (world.checkChunksExist(x - bounds, y - bounds, z - bounds, x + bounds, y + bounds, z + bounds)) - for (int i = -radius; i <= radius; ++i) - for (int j = -radius; j <= radius; ++j) - for (int k = -radius; k <= radius; ++k) - { - int blockID = world.getBlockId(x + i, y + j, z + k); - - if (Block.blocksList[blockID] != null) - Block.blocksList[blockID].beginLeavesDecay(world, x + i, y + j, z + k); - } - } - - @Override - public int onBlockPlaced(World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int meta) - { - int type = getTypeFromMeta(meta); - byte orientation = 0; - - switch (side) - { - case 0: - case 1: - orientation = 0; - break; - - case 2: - case 3: - orientation = 8; - break; - - case 4: - case 5: - orientation = 4; - } - - return type | orientation; - } - - @Override - public int damageDropped(int meta) - { - return getTypeFromMeta(meta); - } - - @Override - protected ItemStack createStackedBlock(int meta) - { - return new ItemStack(this.blockID, 1, getTypeFromMeta(meta)); - } - - @Override - public int getRenderType() - { - return 31; - } - - @Override - public boolean canSustainLeaves(World world, int x, int y, int z) - { - return true; - } - - @Override - public boolean isWood(World world, int x, int y, int z) - { - return true; - } - - public String getWoodType(int meta) - { - return types[getTypeFromMeta(meta) + category.ordinal() * 4]; - } - - private static int getTypeFromMeta(int meta) - { - return meta & 3; - } -} diff --git a/src/minecraft/biomesoplenty/blocks/BlockBOPPetals.java b/src/minecraft/biomesoplenty/blocks/BlockBOPPetals.java deleted file mode 100644 index c9add0f9d..000000000 --- a/src/minecraft/biomesoplenty/blocks/BlockBOPPetals.java +++ /dev/null @@ -1,95 +0,0 @@ -package biomesoplenty.blocks; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockLeavesBase; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Icon; -import net.minecraft.world.World; -import net.minecraftforge.common.IShearable; -import biomesoplenty.BiomesOPlenty; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BlockBOPPetals extends BlockLeavesBase implements IShearable -{ - private static final String[] petals = new String[] {"bigflowerred", "bigfloweryellow"}; - private Icon[] textures; - - public BlockBOPPetals(int blockID) - { - super(blockID, Material.leaves, false); - setBurnProperties(this.blockID, 30, 60); - this.setTickRandomly(true); - setHardness(0.2F); - setLightOpacity(1); - setStepSound(Block.soundGrassFootstep); - this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - @Override - public void registerIcons(IconRegister iconRegister) - { - textures = new Icon[petals.length]; - - for (int i = 0; i < petals.length; ++i) - textures[i] = iconRegister.registerIcon("BiomesOPlenty:" + petals[i]); - } - - @Override - public Icon getIcon(int side, int meta) - { - if (meta < 0 || meta >= textures.length) - meta = 0; - - return textures[meta]; - } - - @Override - @SuppressWarnings({ "rawtypes", "unchecked" }) - public void getSubBlocks(int blockID, CreativeTabs creativeTabs, List list) { - for (int i = 0; i < textures.length; ++i) - list.add(new ItemStack(blockID, 1, i)); - } - - @Override - public int idDropped(int par1, Random par2Random, int par3) - { - if (par1 == 0) - return Block.plantRed.blockID; - else - return Block.plantYellow.blockID; - } - - @Override - public int damageDropped(int meta) - { - return meta & 15; - } - - @Override - public int quantityDropped(Random random) - { - return random.nextInt(20) == 0 ? 1 : 0; - } - - @Override - public boolean isShearable(ItemStack item, World world, int x, int y, int z) - { - return true; - } - - @Override - public ArrayList onSheared(ItemStack item, World world, int x, int y, int z, int fortune) - { - ArrayList ret = new ArrayList(); - ret.add(new ItemStack(this, 1, world.getBlockMetadata(x, y, z) & 15)); - return ret; - } -} diff --git a/src/minecraft/biomesoplenty/blocks/BlockBOPPlank.java b/src/minecraft/biomesoplenty/blocks/BlockBOPPlank.java deleted file mode 100644 index 61debfc81..000000000 --- a/src/minecraft/biomesoplenty/blocks/BlockBOPPlank.java +++ /dev/null @@ -1,56 +0,0 @@ -package biomesoplenty.blocks; - -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Icon; -import biomesoplenty.BiomesOPlenty; - -public class BlockBOPPlank extends Block -{ - private static final String[] woodTypes = new String[] {"plank_acacia", "plank_cherry", "plank_dark", "plank_fir", "plank_holy", "plank_magic", "plank_mangrove", "plank_palm", "plank_redwood", "plank_willow", "bamboothatching"}; - private Icon[] textures; - - public BlockBOPPlank(int blockID) - { - super(blockID, Material.wood); - setBurnProperties(this.blockID, 5, 20); - setHardness(2.0F); - this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - @Override - public void registerIcons(IconRegister iconRegister) - { - textures = new Icon[woodTypes.length]; - - for (int i = 0; i < woodTypes.length; ++i) - textures[i] = iconRegister.registerIcon("BiomesOPlenty:"+woodTypes[i]); - } - - @Override - public Icon getIcon(int side, int meta) - { - if (meta < 0 || meta >= textures.length) - meta = 0; - - return textures[meta]; - } - - @Override - @SuppressWarnings({ "rawtypes", "unchecked" }) - public void getSubBlocks(int blockID, CreativeTabs creativeTabs, List list) { - for (int i = 0; i < woodTypes.length; ++i) - list.add(new ItemStack(blockID, 1, i)); - } - - @Override - public int damageDropped(int meta) - { - return meta; - } -} diff --git a/src/minecraft/biomesoplenty/blocks/BlockBOPPlant.java b/src/minecraft/biomesoplenty/blocks/BlockBOPPlant.java deleted file mode 100644 index c8de28166..000000000 --- a/src/minecraft/biomesoplenty/blocks/BlockBOPPlant.java +++ /dev/null @@ -1,245 +0,0 @@ -package biomesoplenty.blocks; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockFlower; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.DamageSource; -import net.minecraft.util.Icon; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import net.minecraftforge.common.IShearable; -import biomesoplenty.BiomesOPlenty; -import biomesoplenty.api.Blocks; -import biomesoplenty.blocks.renderers.PlantsRenderer; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BlockBOPPlant extends BlockFlower implements IShearable -{ - private static final String[] plants = new String[] {"deadgrass", "desertgrass", "desertsprouts", "dunegrass", "holytallgrass", "thorn", "barley", "cattail"}; - private Icon[] textures; - - public BlockBOPPlant(int par1) - { - super(par1, Material.vine); - setTickRandomly(true); - float var3 = 0.4F; - setBurnProperties(this.blockID, 60, 100); - setHardness(0.0F); - setStepSound(Block.soundGrassFootstep); - setBlockBounds(0.5F - var3, 0.0F, 0.5F - var3, 0.5F + var3, 0.8F, 0.5F + var3); - setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - @Override - public void registerIcons(IconRegister iconRegister) - { - textures = new Icon[plants.length]; - - for (int i = 0; i < plants.length; ++i) - textures[i] = iconRegister.registerIcon("BiomesOPlenty:" + plants[i]); - } - - @Override - public Icon getIcon(int side, int meta) - { - if (meta < 0 || meta >= textures.length) - meta = 0; - - return textures[meta]; - } - - public int getRenderType () - { - return PlantsRenderer.render; - } - - public void setBlockBoundsBasedOnState(IBlockAccess world, int par2, int par3, int par4) - { - int meta = world.getBlockMetadata(par2, par3, par4); - - switch (meta) - { - case 6: - case 7: - this.setBlockBounds(0.125F, 0.0F, 0.125F, 0.875F, 1.00F, 0.875F); - break; - - default: - this.setBlockBounds(0.1F, 0.0F, 0.1F, 0.9F, 0.8F, 0.9F); - break; - } - } - - @Override - @SuppressWarnings({ "rawtypes", "unchecked" }) - public void getSubBlocks(int blockID, CreativeTabs creativeTabs, List list) { - for (int i = 0; i < plants.length; ++i) - list.add(new ItemStack(blockID, 1, i)); - } - - protected boolean canThisPlantGrowOnThisBlockID(int id, int meta) - { - switch (meta) - { - case 0: // Dead Grass - return id == Blocks.driedDirt.get().blockID || id == Block.sand.blockID; - - case 1: // Desert Grass - return id == Blocks.redRock.get().blockID; - - case 2: // Desert Sprouts - case 3: // Dune Grass - return id == Block.sand.blockID; - - case 4: // Holy Tall Grass - return id == Blocks.holyGrass.get().blockID; - - case 5: - return true; - - case 7: - return id == Block.grass.blockID; - - default: - return id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.tilledField.blockID; - } - } - - protected boolean canThisPlantGrowOnThisBlockID(int id) - { - return id == Blocks.driedDirt.get().blockID || id == Block.sand.blockID || id == Blocks.redRock.get().blockID || id == Blocks.holyGrass.get().blockID - || id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.tilledField.blockID; - } - - @Override - public boolean canPlaceBlockOnSide(World world, int x, int y, int z, int side, ItemStack itemStack) - { - int id = world.getBlockId(x, y - 1, z); - int meta = itemStack.getItemDamage(); - - if (itemStack.itemID == this.blockID) - switch (meta) - { - case 0: // Dead Grass - return id == Blocks.driedDirt.get().blockID || id == Block.sand.blockID; - - case 1: // Desert Grass - return id == Blocks.redRock.get().blockID; - - case 2: // Desert Sprouts - case 3: // Dune Grass - return id == Block.sand.blockID; - - case 4: // Holy Tall Grass - return id == Blocks.holyGrass.get().blockID; - - case 5: // Thorns - return true; - - case 7: // Cattail - return id != Block.grass.blockID ? false : (world.getBlockMaterial(x - 1, y - 1, z) == Material.water ? true : (world.getBlockMaterial(x + 1, y - 1, z) == Material.water ? true : (world.getBlockMaterial(x, y - 1, z - 1) == Material.water ? true : world.getBlockMaterial(x, y - 1, z + 1) == Material.water))); - - default: - return id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.tilledField.blockID; - } - else - return this.canPlaceBlockOnSide(world, x, y, z, side); - } - - @Override - public boolean canBlockStay(World world, int x, int y, int z) - { - if (world.getBlockId(x, y, z) != this.blockID) - return (world.getFullBlockLightValue(x, y, z) >= 8 || world.canBlockSeeTheSky(x, y, z)) - && this.canThisPlantGrowOnThisBlockID(world.getBlockId(x, y - 1, z)); - else - return (world.getFullBlockLightValue(x, y, z) >= 8 || world.canBlockSeeTheSky(x, y, z)) - && this.canThisPlantGrowOnThisBlockID(world.getBlockId(x, y - 1, z), world.getBlockMetadata(x, y, z)); - } - - @Override - public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) - { - int meta = world.getBlockMetadata(x, y, z); - if (meta == 5) - entity.attackEntityFrom(DamageSource.cactus, 1); - } - - @Override - public int getDamageValue(World world, int x, int y, int z) - { - int meta = world.getBlockMetadata(x, y, z); - return meta; - } - - @Override - public int idDropped(int par1, Random par2Random, int par3) - { - if (par1 > 5) - return this.blockID; - else - return -1; - } - - @Override - public int damageDropped(int meta) - { - return meta; - } - - @Override - public int quantityDropped(int meta, int fortune, Random random) - { - if (meta == 6) - return random.nextInt(5) == 0 ? 1 : 0; - else if (meta == 7) - return 1; - else - return 0; - } - - @Override - public void harvestBlock(World world, EntityPlayer player, int x, int y, int z, int meta) - { - super.harvestBlock(world, player, x, y, z, meta); - } - - @Override - public boolean isBlockReplaceable(World world, int x, int y, int z) - { - int meta = world.getBlockMetadata(x, y, z); - if (meta == 5) - return false; - return true; - } - - @Override - public boolean isShearable(ItemStack item, World world, int x, int y, int z) - { - return true; - } - - @Override - public ArrayList onSheared(ItemStack item, World world, int x, int y, int z, int fortune) - { - ArrayList ret = new ArrayList(); - ret.add(new ItemStack(this, 1, world.getBlockMetadata(x, y, z))); - return ret; - } - - @Override - public boolean isBlockFoliage(World world, int x, int y, int z) - { - return true; - } -} diff --git a/src/minecraft/biomesoplenty/blocks/BlockBOPRedRock.java b/src/minecraft/biomesoplenty/blocks/BlockBOPRedRock.java deleted file mode 100644 index 4a68c1d9a..000000000 --- a/src/minecraft/biomesoplenty/blocks/BlockBOPRedRock.java +++ /dev/null @@ -1,108 +0,0 @@ -package biomesoplenty.blocks; - -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Icon; -import net.minecraft.world.World; -import biomesoplenty.BiomesOPlenty; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BlockBOPRedRock extends Block -{ - private static final String[] types = new String[] {"redrock", "redcobble", "redbrick"}; - private Icon[] textures = {null, null, null}; - - public BlockBOPRedRock(int par1) - { - super(par1, Material.rock); - this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - setStepSound(Block.soundStoneFootstep); - } - - @Override - public void registerIcons(IconRegister iconRegister) - { - textures = new Icon[types.length]; - - for (int i = 0; i < types.length; ++i) - textures[i] = iconRegister.registerIcon("BiomesOPlenty:"+types[i]); - } - - @Override - public Icon getIcon(int side, int meta) - { - if (meta < 0 || meta >= textures.length) - meta = 0; - - return textures[meta]; - } - - @Override - public int getDamageValue(World world, int x, int y, int z) { - return world.getBlockMetadata(x, y, z); - } - - @Override - @SuppressWarnings({ "rawtypes", "unchecked" }) - public void getSubBlocks(int blockID, CreativeTabs creativeTabs, List list) { - for (int i = 0; i < types.length; ++i) - list.add(new ItemStack(blockID, 1, i)); - } - - @Override - public int damageDropped(int meta) - { - return meta == 0 ? 1 : meta; - } - - @Override - public float getBlockHardness(World world, int x, int y, int z) - { - int meta = world.getBlockMetadata(x, y, z); - float hardness = this.blockHardness; - - switch (meta) - { - case 0: - hardness = 1.0F; - break; - - case 1: - hardness = 1.6F; - break; - - case 2: - hardness = 1.1F; - break; - } - - return hardness; - } - - @Override - public float getExplosionResistance(Entity par1Entity, World world, int x, int y, int z, double explosionX, double explosionY, double explosionZ) - { - int meta = world.getBlockMetadata(x, y, z); - float resistance = this.blockResistance; - - switch (meta) - { - case 1: - resistance = 7.5F; - break; - - case 2: - resistance = 7.0F; - break; - } - - return resistance / 5.0F; - } -} diff --git a/src/minecraft/biomesoplenty/blocks/BlockBOPSapling.java b/src/minecraft/biomesoplenty/blocks/BlockBOPSapling.java deleted file mode 100644 index 8ffa00b72..000000000 --- a/src/minecraft/biomesoplenty/blocks/BlockBOPSapling.java +++ /dev/null @@ -1,198 +0,0 @@ -package biomesoplenty.blocks; - -import java.util.List; -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockSapling; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Icon; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; -import biomesoplenty.BiomesOPlenty; -import biomesoplenty.api.Blocks; -import biomesoplenty.worldgen.WorldGenApple; -import biomesoplenty.worldgen.WorldGenAutumn; -import biomesoplenty.worldgen.WorldGenAutumn2; -import biomesoplenty.worldgen.WorldGenBambooTree; -import biomesoplenty.worldgen.WorldGenBambooTree2; -import biomesoplenty.worldgen.WorldGenCherry1; -import biomesoplenty.worldgen.WorldGenCherry2; -import biomesoplenty.worldgen.WorldGenDeadTree2; -import biomesoplenty.worldgen.WorldGenMaple; -import biomesoplenty.worldgen.WorldGenMystic2; -import biomesoplenty.worldgen.WorldGenOminous1; -import biomesoplenty.worldgen.WorldGenOminous2; -import biomesoplenty.worldgen.WorldGenOriginTree; -import biomesoplenty.worldgen.WorldGenPromisedTree; -import biomesoplenty.worldgen.WorldGenTaiga9; - -public class BlockBOPSapling extends BlockSapling -{ - private static final String[] saplings = new String[] {"apple", "yellowautumn", "bamboo", "magic", "dark", "dead", "fir", "holy", "orangeautumn", "origin", "pinkcherry", "maple", "whitecherry"}; - private Icon[] textures; - private static final int TYPES = 15; - - public BlockBOPSapling(int par1) - { - super(par1); - setHardness(0.0F); - setStepSound(Block.soundGrassFootstep); - this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - @Override - public void registerIcons(IconRegister iconRegister) - { - textures = new Icon[saplings.length]; - - for (int i = 0; i < saplings.length; ++i) - textures[i] = iconRegister.registerIcon("BiomesOPlenty:sapling_" + saplings[i]); - - } - - @Override - public Icon getIcon(int side, int meta) - { - if (meta < 0 || meta >= saplings.length) - meta = 0; - - return textures[meta]; - } - - @Override - @SuppressWarnings({ "rawtypes", "unchecked" }) - public void getSubBlocks(int blockID, CreativeTabs creativeTabs, List list) { - for (int i = 0; i < saplings.length; ++i) - list.add(new ItemStack(blockID, 1, i)); - } - - @Override - public boolean canPlaceBlockOnSide(World world, int x, int y, int z, int side, ItemStack itemStack) - { - int id = world.getBlockId(x, y - 1, z); - int meta = itemStack.getItemDamage(); - - if (itemStack.itemID == this.blockID) - switch (meta) - { - case 7: // Holy - return id == Blocks.holyGrass.get().blockID; - - default: - return id == Block.grass.blockID || id == Block.dirt.blockID || id == Block.tilledField.blockID; - } - else - return this.canPlaceBlockOnSide(world, x, y, z, side); - } - - @Override - public void updateTick(World world, int x, int y, int z, Random random) - { - if (world.isRemote) - return; - - this.checkFlowerChange(world, x, y, z); - - if (world.getBlockLightValue(x, y + 1, z) >= 9 && random.nextInt(7) == 0) - this.growTree(world, x, y, z, random); - } - - @Override - public void growTree(World world, int x, int y, int z, Random random) - { - int meta = world.getBlockMetadata(x, y, z) & TYPES; - Object obj = null; - int rnd = random.nextInt(8); - - if (obj == null) - { - switch (meta) - { - case 0: // Apple Tree - obj = new WorldGenApple(false); - break; - - case 1: // Autumn Tree - obj = new WorldGenAutumn(false); - break; - - case 2: // Bamboo Tree - rnd = random.nextInt(8); - - if (rnd == 0) - obj = new WorldGenBambooTree(false); - else - obj = new WorldGenBambooTree2(false); - break; - - case 3: // Magic Tree - obj = new WorldGenMystic2(false); - break; - - case 4: // Dark Tree - rnd = random.nextInt(8); - - if (rnd == 0) - obj = new WorldGenOminous2(); - else - obj = new WorldGenOminous1(false); - break; - - case 5: // Dead Tree - obj = new WorldGenDeadTree2(false); - break; - - case 6: // Fir Tree - obj = new WorldGenTaiga9(false); - break; - - case 7: // Holy Tree - obj = new WorldGenPromisedTree(false); - break; - - case 8: // Autumn Tree - obj = new WorldGenAutumn2(false); - break; - - case 9: // Origin Tree - obj = new WorldGenOriginTree(false); - break; - - case 10: // Pink Cherry Tree - obj = new WorldGenCherry1(false); - break; - - case 11: // Maple Tree - obj = new WorldGenMaple(false); - break; - - case 12: // White Cherry Tree - obj = new WorldGenCherry2(false); - break; - } - } - - if (obj != null) - { - world.setBlockToAir(x, y, z); - - if (!((WorldGenerator)obj).generate(world, random, x, y, z)) - world.setBlock(x, y, z, this.blockID, meta, 2); - } - } - - @Override - public int damageDropped(int meta) - { - return meta & TYPES; - } - - @Override - public int getDamageValue(World world, int x, int y, int z) - { - return world.getBlockMetadata(x, y, z) & TYPES; - } -} diff --git a/src/minecraft/biomesoplenty/blocks/BlockBOPSlab.java b/src/minecraft/biomesoplenty/blocks/BlockBOPSlab.java deleted file mode 100644 index 84eb4378e..000000000 --- a/src/minecraft/biomesoplenty/blocks/BlockBOPSlab.java +++ /dev/null @@ -1,176 +0,0 @@ -package biomesoplenty.blocks; - -import java.util.List; - -import biomesoplenty.BiomesOPlenty; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockHalfSlab; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Icon; -import net.minecraft.world.World; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BlockBOPSlab extends BlockHalfSlab -{ - public static enum SlabCategory - { - WOOD1, WOOD2, STONE; - } - private static final String[] woodTypes = new String[] {"acacia", "cherry", "dark", "fir", "holy", "magic", "mangrove", "palm", "redwood", "willow"}; - private static final String[] rockTypes = new String[] {"redcobble", "redbrick", "mudbrick"}; - private Icon[] textures; - - private final SlabCategory category; - - public BlockBOPSlab(int par1, boolean par2, Material material, SlabCategory cat) - { - super(par1, par2, material); - category = cat; - if (material == Material.wood) - { - setBurnProperties(this.blockID, 5, 20); - setHardness(2.0F); - setResistance(5.0F); - setStepSound(Block.soundWoodFootstep); - } - else if (material == Material.rock) - setStepSound(Block.soundStoneFootstep); - - this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - useNeighborBrightness[blockID] = true; - } - - @Override - public void registerIcons(IconRegister iconRegister) - { - if (category == SlabCategory.STONE) - { - textures = new Icon[rockTypes.length]; - - for (int i = 0; i < rockTypes.length; ++i) - textures[i] = iconRegister.registerIcon("BiomesOPlenty:"+rockTypes[i]); - } - else - { - textures = new Icon[woodTypes.length]; - - for (int i = 0; i < woodTypes.length; ++i) - textures[i] = iconRegister.registerIcon("BiomesOPlenty:plank_"+woodTypes[i]); - } - } - - @Override - public Icon getIcon(int side, int meta) - { - if (category == SlabCategory.STONE) - return textures[getTypeFromMeta(meta)]; - else - return textures[(getTypeFromMeta(meta) + this.category.ordinal() * 8)]; - } - - @Override - @SuppressWarnings({ "rawtypes", "unchecked" }) - public void getSubBlocks(int blockID, CreativeTabs creativeTabs, List list) { - int max = 0; - - if (category == SlabCategory.WOOD1) - max = 8; - else if (category == SlabCategory.WOOD2) - max = 2; - else if (category == SlabCategory.STONE) - max = 3; - - for (int i = 0; i < max; ++i) - list.add(new ItemStack(blockID, 1, i)); - } - - @Override - public String getFullSlabName(int meta) - { - if (category == SlabCategory.STONE) - return (new StringBuilder()).append(rockTypes[getTypeFromMeta(meta)]).append("Slab").toString(); - else - return (new StringBuilder()).append(woodTypes[getWoodType(meta)]).append("Slab").toString(); - } - - @Override - public int damageDropped(int meta) - { - return meta; - } - - @Override - public float getBlockHardness(World world, int x, int y, int z) - { - int meta = world.getBlockMetadata(x, y, z); - float hardness = this.blockHardness; - - if (category == SlabCategory.STONE) - { - switch (getTypeFromMeta(meta)) - { - case 0: - hardness = 1.6F; - break; - - case 1: - hardness = 1.1F; - break; - - case 2: - hardness = 1.0F; - break; - } - } - - return hardness; - } - - @Override - public float getExplosionResistance(Entity par1Entity, World world, int x, int y, int z, double explosionX, double explosionY, double explosionZ) - { - int meta = world.getBlockMetadata(x, y, z); - float resistance = this.blockHardness; - - if (category == SlabCategory.STONE) - { - switch (getTypeFromMeta(meta)) - { - case 0: - resistance = 7.0F; - break; - - case 1: - resistance = 7.5F; - break; - - case 2: - resistance = 2.0F; - break; - } - } - - return resistance / 5.0F; - } - - protected ItemStack createStackedBlock(int par1) - { - return new ItemStack(this.blockID, 2, par1); - } - - private int getWoodType(int meta) - { - return getTypeFromMeta(meta) + category.ordinal() * 8; - } - - private static int getTypeFromMeta(int meta) - { - return meta & 7; - } -} diff --git a/src/minecraft/biomesoplenty/blocks/BlockBOPStairs.java b/src/minecraft/biomesoplenty/blocks/BlockBOPStairs.java deleted file mode 100644 index db86a4f54..000000000 --- a/src/minecraft/biomesoplenty/blocks/BlockBOPStairs.java +++ /dev/null @@ -1,56 +0,0 @@ -package biomesoplenty.blocks; - -import biomesoplenty.BiomesOPlenty; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockStairs; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.util.Icon; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BlockBOPStairs extends BlockStairs -{ - public static enum Category - { - ACACIA, CHERRY, DARK, FIR, HOLY, MAGIC, MANGROVE, PALM, REDWOOD, WILLOW, RED_COBBLE, RED_BRICKS, MUD_BRICKS; - } - - private static final String[] types = new String[] {"acacia", "cherry", "dark", "fir", "holy", "magic", "mangrove", "palm", "redwood", "willow", "redcobble", "redbrick", "mudbrick"}; - private Icon[] textures; - private final Category category; - - public BlockBOPStairs(int blockID, Block model, Category cat) - { - super(blockID, model, 0); - category = cat; - setBurnProperties(this.blockID, 5, 20); - this.setLightOpacity(0); - this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - @Override - public void registerIcons(IconRegister iconRegister) - { - textures = new Icon[types.length]; - - for (int i = 0; i < types.length; ++i) - if (i < types.length - 3) - textures[i] = iconRegister.registerIcon("BiomesOPlenty:plank_"+types[i]); - else - textures[i] = iconRegister.registerIcon("BiomesOPlenty:"+types[i]); - - } - - @Override - public Icon getIcon(int side, int meta) - { - return textures[category.ordinal()]; - } - - @Override - public int damageDropped(int meta) - { - return meta; - } -} diff --git a/src/minecraft/biomesoplenty/blocks/BlockBamboo.java b/src/minecraft/biomesoplenty/blocks/BlockBamboo.java deleted file mode 100644 index da39c1e25..000000000 --- a/src/minecraft/biomesoplenty/blocks/BlockBamboo.java +++ /dev/null @@ -1,154 +0,0 @@ -package biomesoplenty.blocks; - -import java.util.Random; - -import biomesoplenty.BiomesOPlenty; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.world.World; - -public class BlockBamboo extends Block -{ - public BlockBamboo(int par1) - { - super(par1, Material.plants); - float var3 = 0.15F; - setBurnProperties(this.blockID, 5, 5); - this.setBlockBounds(0.5F - var3, 0.0F, 0.5F - var3, 0.5F + var3, 1.0F, 0.5F + var3); - this.setTickRandomly(true); - this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - @Override - public void registerIcons(IconRegister par1IconRegister) - { - this.blockIcon = par1IconRegister.registerIcon("BiomesOPlenty:bamboo"); - } - - public void updateTick(World par1World, int par2, int par3, int par4, Random par5Random) - { - if (par1World.isAirBlock(par2, par3 + 1, par4)) - { - int var6; - - for (var6 = 1; par1World.getBlockId(par2, par3 - var6, par4) == this.blockID; ++var6) - { - ; - } - - if (var6 < 3) - { - int var7 = par1World.getBlockMetadata(par2, par3, par4); - - if (var7 == 15) - { - par1World.setBlock(par2, par3 + 1, par4, this.blockID); - par1World.setBlockMetadataWithNotify(par2, par3, par4, 0, 4); - } - else - { - par1World.setBlockMetadataWithNotify(par2, par3, par4, var7 + 1, 4); - } - } - } - } - - /** - * Checks to see if its valid to put this block at the specified coordinates. Args: world, x, y, z - */ - public boolean canPlaceBlockAt(World par1World, int par2, int par3, int par4) - { - int var5 = par1World.getBlockId(par2, par3 - 1, par4); - if (var5 == this.blockID) - { - return true; - } - else if (var5 == Block.grass.blockID) - { - return true; - } - else - { - return false; - } - } - - /** - * Lets the block know when one of its neighbor changes. Doesn't know which neighbor changed (coordinates passed are - * their own) Args: x, y, z, neighbor blockID - */ - public void onNeighborBlockChange(World par1World, int par2, int par3, int par4, int par5) - { - this.checkBlockCoordValid(par1World, par2, par3, par4); - } - - /** - * Checks if current block pos is valid, if not, breaks the block as dropable item. Used for reed and cactus. - */ - protected final void checkBlockCoordValid(World par1World, int par2, int par3, int par4) - { - if (!this.canBlockStay(par1World, par2, par3, par4)) - { - this.dropBlockAsItem(par1World, par2, par3, par4, par1World.getBlockMetadata(par2, par3, par4), 0); - par1World.setBlock(par2, par3, par4, 0); - } - } - - /** - * Can this block stay at this position. Similar to canPlaceBlockAt except gets checked often with plants. - */ - public boolean canBlockStay(World par1World, int par2, int par3, int par4) - { - return this.canPlaceBlockAt(par1World, par2, par3, par4); - } - - /** - * Returns the ID of the items to drop on destruction. - */ -// public int idDropped(int par1, Random par2Random, int par3) -// { -// return BOPItems.bambooItem.itemID; -// } - - /** - * Is this block (a) opaque and (b) a full 1m cube? This determines whether or not to render the shared face of two - * adjacent blocks and also whether the player can attach torches, redstone wire, etc to this block. - */ - public boolean isOpaqueCube() - { - return false; - } - - /** - * If this block doesn't render as an ordinary block it will return False (examples: signs, buttons, stairs, etc) - */ - public boolean renderAsNormalBlock() - { - return false; - } - - /** - * The type of render function that is called for this block - */ - public int getRenderType() - { - return 1; - } - - /** - * only called by clickMiddleMouseButton , and passed to inventory.setCurrentItem (along with isCreative) - */ -// public int idPicked(World par1World, int par2, int par3, int par4) -// { -// return BOPItems.bambooItem.itemID; -// } - - @Override - public boolean canSustainLeaves(World world, int x, int y, int z) - { - return true; - } - -} diff --git a/src/minecraft/biomesoplenty/blocks/BlockMoss.java b/src/minecraft/biomesoplenty/blocks/BlockMoss.java deleted file mode 100644 index 42e850f23..000000000 --- a/src/minecraft/biomesoplenty/blocks/BlockMoss.java +++ /dev/null @@ -1,484 +0,0 @@ -package biomesoplenty.blocks; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.Direction; -import net.minecraft.world.ColorizerFoliage; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import biomesoplenty.BiomesOPlenty; -import biomesoplenty.api.Blocks; - -public class BlockMoss extends Block -{ - public BlockMoss(int par1) - { - super(par1, Material.vine); - setBurnProperties(this.blockID, 15, 100); - this.setTickRandomly(true); - this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - @Override - public void registerIcons(IconRegister par1IconRegister) - { - this.blockIcon = par1IconRegister.registerIcon("BiomesOPlenty:moss"); - } - - /** - * Sets the block's bounds for rendering it as an item - */ - public void setBlockBoundsForItemRender() - { - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - } - - /** - * The type of render function that is called for this block - */ - public int getRenderType() - { - return 20; - } - - /** - * Is this block (a) opaque and (b) a full 1m cube? This determines whether or not to render the shared face of two - * adjacent blocks and also whether the player can attach torches, redstone wire, etc to this block. - */ - public boolean isOpaqueCube() - { - return false; - } - - /** - * If this block doesn't render as an ordinary block it will return False (examples: signs, buttons, stairs, etc) - */ - public boolean renderAsNormalBlock() - { - return false; - } - - /** - * Updates the blocks bounds based on its current state. Args: world, x, y, z - */ - public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) - { - int var6 = par1IBlockAccess.getBlockMetadata(par2, par3, par4); - float var7 = 1.0F; - float var8 = 1.0F; - float var9 = 1.0F; - float var10 = 0.0F; - float var11 = 0.0F; - float var12 = 0.0F; - boolean var13 = var6 > 0; - - if ((var6 & 2) != 0) - { - var10 = Math.max(var10, 0.0625F); - var7 = 0.0F; - var8 = 0.0F; - var11 = 1.0F; - var9 = 0.0F; - var12 = 1.0F; - var13 = true; - } - - if ((var6 & 8) != 0) - { - var7 = Math.min(var7, 0.9375F); - var10 = 1.0F; - var8 = 0.0F; - var11 = 1.0F; - var9 = 0.0F; - var12 = 1.0F; - var13 = true; - } - - if ((var6 & 4) != 0) - { - var12 = Math.max(var12, 0.0625F); - var9 = 0.0F; - var7 = 0.0F; - var10 = 1.0F; - var8 = 0.0F; - var11 = 1.0F; - var13 = true; - } - - if ((var6 & 1) != 0) - { - var9 = Math.min(var9, 0.9375F); - var12 = 1.0F; - var7 = 0.0F; - var10 = 1.0F; - var8 = 0.0F; - var11 = 1.0F; - var13 = true; - } - - if (!var13 && this.canBePlacedOn(par1IBlockAccess.getBlockId(par2, par3 + 1, par4))) - { - var8 = Math.min(var8, 0.9375F); - var11 = 1.0F; - var7 = 0.0F; - var10 = 1.0F; - var9 = 0.0F; - var12 = 1.0F; - } - - this.setBlockBounds(var7, var8, var9, var10, var11, var12); - } - - /** - * Returns a bounding box from the pool of bounding boxes (this means this box can change after the pool has been - * cleared to be reused) - */ - public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4) - { - return null; - } - - /** - * checks to see if you can place this block can be placed on that side of a block: BlockLever overrides - */ - public boolean canPlaceBlockOnSide(World par1World, int par2, int par3, int par4, int par5) - { - switch (par5) - { - case 1: - return this.canBePlacedOn(par1World.getBlockId(par2, par3 + 1, par4)); - - case 2: - return this.canBePlacedOn(par1World.getBlockId(par2, par3, par4 + 1)); - - case 3: - return this.canBePlacedOn(par1World.getBlockId(par2, par3, par4 - 1)); - - case 4: - return this.canBePlacedOn(par1World.getBlockId(par2 + 1, par3, par4)); - - case 5: - return this.canBePlacedOn(par1World.getBlockId(par2 - 1, par3, par4)); - - default: - return false; - } - } - - /** - * returns true if a vine can be placed on that block (checks for render as normal block and if it is solid) - */ - private boolean canBePlacedOn(int par1) - { - if (par1 != Block.wood.blockID && par1 != Blocks.logs3.get().blockID && par1 != Block.stone.blockID) - { - return false; - } - else - { - return true; - } - } - - /** - * Returns if the vine can stay in the world. It also changes the metadata according to neighboring blocks. - */ - private boolean canVineStay(World par1World, int par2, int par3, int par4) - { - int var5 = par1World.getBlockMetadata(par2, par3, par4); - int var6 = var5; - - if (var5 > 0) - { - for (int var7 = 0; var7 <= 3; ++var7) - { - int var8 = 1 << var7; - - if ((var5 & var8) != 0 && !this.canBePlacedOn(par1World.getBlockId(par2 + Direction.offsetX[var7], par3, par4 + Direction.offsetZ[var7])) && (par1World.getBlockId(par2, par3 + 1, par4) != this.blockID || (par1World.getBlockMetadata(par2, par3 + 1, par4) & var8) == 0)) - { - var6 &= ~var8; - } - } - } - - if (var6 == 0 && !this.canBePlacedOn(par1World.getBlockId(par2, par3 + 1, par4))) - { - return false; - } - else - { - if (var6 != var5) - { - par1World.setBlockMetadataWithNotify(par2, par3, par4, var6, 2); - } - - return true; - } - } - - public int getBlockColor() - { - return ColorizerFoliage.getFoliageColorBasic(); - } - - /** - * Returns the color this block should be rendered. Used by leaves. - */ - public int getRenderColor(int par1) - { - return ColorizerFoliage.getFoliageColorBasic(); - } - - /** - * Returns a integer with hex for 0xrrggbb with this color multiplied against the blocks color. Note only called - * when first determining what to render. - */ - public int colorMultiplier(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) - { - return par1IBlockAccess.getBiomeGenForCoords(par2, par4).getBiomeFoliageColor(); - } - - /** - * Lets the block know when one of its neighbor changes. Doesn't know which neighbor changed (coordinates passed are - * their own) Args: x, y, z, neighbor blockID - */ - public void onNeighborBlockChange(World par1World, int par2, int par3, int par4, int par5) - { - if (!par1World.isRemote && !this.canVineStay(par1World, par2, par3, par4)) - { - this.dropBlockAsItem(par1World, par2, par3, par4, par1World.getBlockMetadata(par2, par3, par4), 0); - par1World.setBlock(par2, par3, par4, 0); - } - } - - /** - * Ticks the block if it's been scheduled - */ - public void updateTick(World par1World, int par2, int par3, int par4, Random par5Random) - { - if (!par1World.isRemote && par1World.rand.nextInt(15) == 0) - { - byte var6 = 4; - int var7 = 5; - boolean var8 = false; - int var9; - int var10; - int var11; - label138: - - for (var9 = par2 - var6; var9 <= par2 + var6; ++var9) - { - for (var10 = par4 - var6; var10 <= par4 + var6; ++var10) - { - for (var11 = par3 - 1; var11 <= par3 + 1; ++var11) - { - if (par1World.getBlockId(var9, var11, var10) == this.blockID) - { - --var7; - - if (var7 <= 0) - { - var8 = true; - break label138; - } - } - } - } - } - - var9 = par1World.getBlockMetadata(par2, par3, par4); - var10 = par1World.rand.nextInt(6); - var11 = Direction.facingToDirection[var10]; - int var12; - int var13; - - if (var10 == 1 && par3 < 255 && par1World.isAirBlock(par2, par3 + 1, par4)) - { - if (var8) - { - return; - } - - var12 = par1World.rand.nextInt(16) & var9; - - if (var12 > 0) - { - for (var13 = 0; var13 <= 3; ++var13) - { - if (!this.canBePlacedOn(par1World.getBlockId(par2 + Direction.offsetX[var13], par3 + 1, par4 + Direction.offsetZ[var13]))) - { - var12 &= ~(1 << var13); - } - } - - if (var12 > 0) - { - par1World.setBlock(par2, par3 + 1, par4, this.blockID, var12, 2); - } - } - } - else - { - int var14; - - if (var10 >= 2 && var10 <= 5 && (var9 & 1 << var11) == 0) - { - if (var8) - { - return; - } - - var12 = par1World.getBlockId(par2 + Direction.offsetX[var11], par3, par4 + Direction.offsetZ[var11]); - - if (var12 != 0 && Block.blocksList[var12] != null) - { - if (Block.blocksList[var12].blockMaterial.isOpaque() && Block.blocksList[var12].renderAsNormalBlock()) - { - par1World.setBlockMetadataWithNotify(par2, par3, par4, var9 | 1 << var11, 2); - } - } - else - { - var13 = var11 + 1 & 3; - var14 = var11 + 3 & 3; - - if ((var9 & 1 << var13) != 0 && this.canBePlacedOn(par1World.getBlockId(par2 + Direction.offsetX[var11] + Direction.offsetX[var13], par3, par4 + Direction.offsetZ[var11] + Direction.offsetZ[var13]))) - { - par1World.setBlock(par2 + Direction.offsetX[var11], par3, par4 + Direction.offsetZ[var11], this.blockID, 1 << var13, 2); - } - else if ((var9 & 1 << var14) != 0 && this.canBePlacedOn(par1World.getBlockId(par2 + Direction.offsetX[var11] + Direction.offsetX[var14], par3, par4 + Direction.offsetZ[var11] + Direction.offsetZ[var14]))) - { - par1World.setBlock(par2 + Direction.offsetX[var11], par3, par4 + Direction.offsetZ[var11], this.blockID, 1 << var14, 2); - } - else if ((var9 & 1 << var13) != 0 && par1World.isAirBlock(par2 + Direction.offsetX[var11] + Direction.offsetX[var13], par3, par4 + Direction.offsetZ[var11] + Direction.offsetZ[var13]) && this.canBePlacedOn(par1World.getBlockId(par2 + Direction.offsetX[var13], par3, par4 + Direction.offsetZ[var13]))) - { - par1World.setBlock(par2 + Direction.offsetX[var11] + Direction.offsetX[var13], par3, par4 + Direction.offsetZ[var11] + Direction.offsetZ[var13], this.blockID, 1 << (var11 + 2 & 3), 2); - } - else if ((var9 & 1 << var14) != 0 && par1World.isAirBlock(par2 + Direction.offsetX[var11] + Direction.offsetX[var14], par3, par4 + Direction.offsetZ[var11] + Direction.offsetZ[var14]) && this.canBePlacedOn(par1World.getBlockId(par2 + Direction.offsetX[var14], par3, par4 + Direction.offsetZ[var14]))) - { - par1World.setBlock(par2 + Direction.offsetX[var11] + Direction.offsetX[var14], par3, par4 + Direction.offsetZ[var11] + Direction.offsetZ[var14], this.blockID, 1 << (var11 + 2 & 3), 2); - } - else if (this.canBePlacedOn(par1World.getBlockId(par2 + Direction.offsetX[var11], par3 + 1, par4 + Direction.offsetZ[var11]))) - { - par1World.setBlock(par2 + Direction.offsetX[var11], par3, par4 + Direction.offsetZ[var11], this.blockID, 0, 2); - } - } - } - else if (par3 > 1) - { - var12 = par1World.getBlockId(par2, par3 - 1, par4); - - if (var12 == 0) - { - var13 = par1World.rand.nextInt(16) & var9; - - if (var13 > 0) - { - par1World.setBlock(par2, par3 - 1, par4, this.blockID, var13, 2); - } - } - else if (var12 == this.blockID) - { - var13 = par1World.rand.nextInt(16) & var9; - var14 = par1World.getBlockMetadata(par2, par3 - 1, par4); - - if (var14 != (var14 | var13)) - { - par1World.setBlockMetadataWithNotify(par2, par3 - 1, par4, var14 | var13, 2); - } - } - } - } - } - } - - /** - * called before onBlockPlacedBy by ItemBlock and ItemReed - */ - public void updateBlockMetadata(World par1World, int par2, int par3, int par4, int par5, float par6, float par7, float par8) - { - byte var9 = 0; - - switch (par5) - { - case 2: - var9 = 1; - break; - - case 3: - var9 = 4; - break; - - case 4: - var9 = 8; - break; - - case 5: - var9 = 2; - } - - if (var9 != 0) - { - par1World.setBlockMetadataWithNotify(par2, par3, par4, var9, 2); - } - } - - /** - * Called when a block is placed using its ItemBlock. Args: World, X, Y, Z, side, hitX, hitY, hitZ, block metadata - */ - public int onBlockPlaced(World par1World, int par2, int par3, int par4, int par5, float par6, float par7, float par8, int par9) - { - byte b0 = 0; - - switch (par5) - { - case 2: - b0 = 1; - break; - case 3: - b0 = 4; - break; - case 4: - b0 = 8; - break; - case 5: - b0 = 2; - } - - return b0 != 0 ? b0 : par9; - } - - /** - * Returns the ID of the items to drop on destruction. - */ -// public int idDropped(int par1, Random par2Random, int par3) -// { -// return BOPItems.mossItem.itemID; -// } - - /** - * Returns the quantity of items to drop on block destruction. - */ - public int quantityDropped(Random par1Random) - { - return 1; - } - - /** - * only called by clickMiddleMouseButton , and passed to inventory.setCurrentItem (along with isCreative) - */ -// public int idPicked(World par1World, int par2, int par3, int par4) -// { -// return BOPItems.mossItem.itemID; -// } - - @Override - public boolean isBlockReplaceable(World world, int x, int y, int z) - { - return true; - } -} diff --git a/src/minecraft/biomesoplenty/blocks/BlockMud.java b/src/minecraft/biomesoplenty/blocks/BlockMud.java deleted file mode 100644 index 7bdfd1c48..000000000 --- a/src/minecraft/biomesoplenty/blocks/BlockMud.java +++ /dev/null @@ -1,107 +0,0 @@ -package biomesoplenty.blocks; - -import java.util.List; -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.Icon; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import biomesoplenty.BiomesOPlenty; -import biomesoplenty.api.Items; - -public class BlockMud extends Block -{ - private static final String[] types = new String[] {"mud", "quicksand"}; - - private Icon[] textures; - - public BlockMud(int par1) - { - super(par1, Material.sand); - this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - @Override - public void registerIcons(IconRegister iconRegister) - { - textures = new Icon[types.length]; - - for (int i = 0; i < types.length; ++i) - textures[i] = iconRegister.registerIcon("BiomesOPlenty:"+types[i]); - } - - @Override - public Icon getIcon(int side, int meta) - { - if (meta < 0 || meta >= textures.length) - meta = 0; - - return textures[meta]; - } - - @Override - @SuppressWarnings({ "rawtypes", "unchecked" }) - public void getSubBlocks(int blockID, CreativeTabs creativeTabs, List list) { - for (int i = 0; i < types.length; ++i) - list.add(new ItemStack(blockID, 1, i)); - } - - public boolean shouldSideBeRendered(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5) - { - if (par1IBlockAccess.getBlockMetadata(par2, par3, par4) == 0) - return par5 == 0 && this.minY > 0.0D ? true : (par5 == 1 && this.maxY < 1.0D ? true : (par5 == 2 && this.minZ > 0.0D ? true : (par5 == 3 && this.maxZ < 1.0D ? true : (par5 == 4 && this.minX > 0.0D ? true : (par5 == 5 && this.maxX < 1.0D ? true : !par1IBlockAccess.isBlockOpaqueCube(par2, par3, par4)))))); - else - return true; - } - - public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) - { - if (world.getBlockMetadata(x, y, z) == 0) - { - float var5 = 0.35F; - return AxisAlignedBB.getAABBPool().getAABB((double)x, (double)y, (double)z, (double)(x + 1), (double)((float)(y + 1) - var5), (double)(z + 1)); - } - else - return null; - } - - public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) - { - if (world.getBlockMetadata(x, y, z) == 0) - { - entity.motionX *= 0.1D; - entity.motionZ *= 0.1D; - } - else - entity.setInWeb(); - } - - public int idDropped(int par1, Random par2Random, int par3) - { - if (par1 == 0) - return Items.mudball.get().itemID; - else - return this.blockID; - } - - @Override - public int damageDropped(int meta) - { - return meta; - } - - public int quantityDropped(int meta, int fortune, Random random) - { - if (meta == 0) - return 4; - else - return 1; - } -} \ No newline at end of file diff --git a/src/minecraft/biomesoplenty/blocks/BlockOriginGrass.java b/src/minecraft/biomesoplenty/blocks/BlockOriginGrass.java deleted file mode 100644 index 959481cf9..000000000 --- a/src/minecraft/biomesoplenty/blocks/BlockOriginGrass.java +++ /dev/null @@ -1,139 +0,0 @@ -package biomesoplenty.blocks; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.Icon; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeDirection; -import net.minecraftforge.common.IPlantable; -import biomesoplenty.BiomesOPlenty; -import biomesoplenty.api.Blocks; - -public class BlockOriginGrass extends Block -{ - private Icon[] blockIcon = new Icon[6]; - - public BlockOriginGrass(int par1) - { - super(par1, Material.grass); - this.setTickRandomly(true); - this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - @Override - public void registerIcons(IconRegister par1IconRegister) - { - this.blockIcon[0] = par1IconRegister.registerIcon("BiomesOPlenty:origingrass3"); - this.blockIcon[1] = par1IconRegister.registerIcon("BiomesOPlenty:origingrass1"); - this.blockIcon[2] = par1IconRegister.registerIcon("BiomesOPlenty:origingrass2"); - this.blockIcon[3] = par1IconRegister.registerIcon("BiomesOPlenty:origingrass2"); - this.blockIcon[4] = par1IconRegister.registerIcon("BiomesOPlenty:origingrass2"); - this.blockIcon[5] = par1IconRegister.registerIcon("BiomesOPlenty:origingrass2"); - } - - /** - * From the specified side and block metadata retrieves the blocks texture. Args: side, metadata - */ - @Override - public Icon getIcon(int par1, int par2) - { - return blockIcon[par1]; - } - - /** - * Retrieves the block texture to use based on the display side. Args: iBlockAccess, x, y, z, side - */ - /*public int getBlockTexture(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5) - { - if (par5 == 1) - { - return 32; - } - else if (par5 == 0) - { - return 34; - } - else - { - Material var6 = par1IBlockAccess.getBlockMaterial(par2, par3 + 1, par4); - return var6 != Material.snow && var6 != Material.craftedSnow ? 33 : 33; - } - }*/ - - @Override - public boolean canSustainPlant(World world, int x, int y, int z, ForgeDirection direction, IPlantable plant) - { - return true; - } - - /** - * Called upon block activation (right click on the block.) - */ - public boolean onBlockActivated(World world, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9) - { - if (par5EntityPlayer.getCurrentEquippedItem() != null) - { - if (par5EntityPlayer.getCurrentEquippedItem().getDisplayName().toLowerCase().contains(" hoe")) - { - Block block = Block.tilledField; - - world.playSoundEffect((double)((float)par2 + 0.5F), (double)((float)par3 + 0.5F), (double)((float)par4 + 0.5F), block.stepSound.getStepSound(), (block.stepSound.getVolume() + 1.0F) / 2.0F, block.stepSound.getPitch() * 0.8F); - - if (!world.isRemote) - { - world.setBlock(par2, par3, par4, block.blockID); - } - return true; - } - else - { - return false; - } - } - else - { - return false; - } - } - - /** - * Ticks the block if it's been scheduled - */ - public void updateTick(World par1World, int par2, int par3, int par4, Random par5Random) - { - if (!par1World.isRemote) - { - if (par1World.getBlockLightValue(par2, par3 + 1, par4) < 4 && Block.lightOpacity[par1World.getBlockId(par2, par3 + 1, par4)] > 2) - { - par1World.setBlock(par2, par3, par4, Block.dirt.blockID); - } - else if (par1World.getBlockLightValue(par2, par3 + 1, par4) >= 9) - { - for (int var6 = 0; var6 < 4; ++var6) - { - int var7 = par2 + par5Random.nextInt(3) - 1; - int var8 = par3 + par5Random.nextInt(5) - 3; - int var9 = par4 + par5Random.nextInt(3) - 1; - int var10 = par1World.getBlockId(var7, var8 + 1, var9); - - if (par1World.getBlockId(var7, var8, var9) == Block.dirt.blockID && par1World.getBlockLightValue(var7, var8 + 1, var9) >= 4 && Block.lightOpacity[var10] <= 2) - { - par1World.setBlock(var7, var8, var9, Blocks.originGrass.get().blockID); - } - } - } - } - } - - /** - * Returns the ID of the items to drop on destruction. - */ - public int idDropped(int par1, Random par2Random, int par3) - { - return Block.dirt.idDropped(0, par2Random, par3); - } -} diff --git a/src/minecraft/biomesoplenty/blocks/BlockPromisedPortal.java b/src/minecraft/biomesoplenty/blocks/BlockPromisedPortal.java deleted file mode 100644 index e12047bd7..000000000 --- a/src/minecraft/biomesoplenty/blocks/BlockPromisedPortal.java +++ /dev/null @@ -1,87 +0,0 @@ -package biomesoplenty.blocks; - -import biomesoplenty.configuration.BOPConfiguration; -import biomesoplenty.helpers.TeleporterPromised; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BlockPromisedPortal extends Block -{ - public BlockPromisedPortal(int par1) - { - super(par1, Material.portal); - } - - @Override - public void registerIcons(IconRegister par1IconRegister) - { - this.blockIcon = par1IconRegister.registerIcon("BiomesOPlenty:portal"); - } - - @SideOnly(Side.CLIENT) - - /** - * Returns which pass should this block be rendered on. 0 for solids and 1 for alpha - */ - public int getRenderBlockPass() - { - return 1; - } - - @SideOnly(Side.CLIENT) - - /** - * Returns true if the given side of this block type should be rendered, if the adjacent block is at the given - * coordinates. Args: blockAccess, x, y, z, side - */ - public boolean shouldSideBeRendered(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5) - { - return super.shouldSideBeRendered(par1IBlockAccess, par2, par3, par4, 1 - par5); - } - - /** - * Returns a bounding box from the pool of bounding boxes (this means this box can change after the pool has been - * cleared to be reused) - */ - public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4) - { - return null; - } - - /** - * Is this block (a) opaque and (b) a full 1m cube? This determines whether or not to render the shared face of two - * adjacent blocks and also whether the player can attach torches, redstone wire, etc to this block. - */ - public boolean isOpaqueCube() - { - return false; - } - - public void onEntityCollidedWithBlock(World par1World, int par2, int par3, int par4, Entity par5Entity) - { - if (par5Entity.ridingEntity == null && par5Entity.riddenByEntity == null) - { - if (par5Entity instanceof EntityPlayerMP) - { - EntityPlayerMP thePlayer = (EntityPlayerMP) par5Entity; - if (par5Entity.dimension != BOPConfiguration.promisedLandDimID) - { - thePlayer.mcServer.getConfigurationManager().transferPlayerToDimension(thePlayer, BOPConfiguration.promisedLandDimID, new TeleporterPromised(thePlayer.mcServer.worldServerForDimension(BOPConfiguration.promisedLandDimID))); - } - else - { - thePlayer.mcServer.getConfigurationManager().transferPlayerToDimension(thePlayer, 0, new TeleporterPromised(thePlayer.mcServer.worldServerForDimension(0))); - } - } - } - } -} diff --git a/src/minecraft/biomesoplenty/blocks/BlockQuicksand.java b/src/minecraft/biomesoplenty/blocks/BlockQuicksand.java deleted file mode 100644 index 0e495cd38..000000000 --- a/src/minecraft/biomesoplenty/blocks/BlockQuicksand.java +++ /dev/null @@ -1,48 +0,0 @@ -package biomesoplenty.blocks; - -import biomesoplenty.BiomesOPlenty; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; - -public class BlockQuicksand extends Block -{ - public BlockQuicksand(int par1) - { - super(par1, Material.sand); - this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - @Override - public void registerIcons(IconRegister par1IconRegister) - { - this.blockIcon = par1IconRegister.registerIcon("BiomesOPlenty:quicksand"); - } - - public boolean shouldSideBeRendered(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5) - { - return true; - } - - /** - * Triggered whenever an entity collides with this block (enters into the block). Args: world, x, y, z, entity - */ - public void onEntityCollidedWithBlock(World par1World, int par2, int par3, int par4, Entity par5Entity) - { - par5Entity.setInWeb(); - } - - /** - * Returns a bounding box from the pool of bounding boxes (this means this box can change after the pool has been - * cleared to be reused) - */ - public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4) - { - return null; - } -} \ No newline at end of file diff --git a/src/minecraft/biomesoplenty/blocks/BlockTreeMoss.java b/src/minecraft/biomesoplenty/blocks/BlockTreeMoss.java deleted file mode 100644 index f9e8fe1d5..000000000 --- a/src/minecraft/biomesoplenty/blocks/BlockTreeMoss.java +++ /dev/null @@ -1,346 +0,0 @@ -package biomesoplenty.blocks; - -import java.util.ArrayList; -import java.util.Random; - -import biomesoplenty.BiomesOPlenty; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.Direction; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import net.minecraftforge.common.IShearable; - -public class BlockTreeMoss extends Block implements IShearable -{ - public BlockTreeMoss(int par1) - { - super(par1, Material.vine); - this.setTickRandomly(true); - setBurnProperties(this.blockID, 15, 100); - this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - @Override - public void registerIcons(IconRegister par1IconRegister) - { - this.blockIcon = par1IconRegister.registerIcon("BiomesOPlenty:treemoss"); - } - - /** - * Sets the block's bounds for rendering it as an item - */ - public void setBlockBoundsForItemRender() - { - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - } - - /** - * The type of render function that is called for this block - */ - public int getRenderType() - { - return 20; - } - - /** - * Is this block (a) opaque and (b) a full 1m cube? This determines whether or not to render the shared face of two - * adjacent blocks and also whether the player can attach torches, redstone wire, etc to this block. - */ - public boolean isOpaqueCube() - { - return false; - } - - /** - * If this block doesn't render as an ordinary block it will return False (examples: signs, buttons, stairs, etc) - */ - public boolean renderAsNormalBlock() - { - return false; - } - - /** - * Updates the blocks bounds based on its current state. Args: world, x, y, z - */ - public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) - { - int var6 = par1IBlockAccess.getBlockMetadata(par2, par3, par4); - float var7 = 1.0F; - float var8 = 1.0F; - float var9 = 1.0F; - float var10 = 0.0F; - float var11 = 0.0F; - float var12 = 0.0F; - boolean var13 = var6 > 0; - - if ((var6 & 2) != 0) - { - var10 = Math.max(var10, 0.0625F); - var7 = 0.0F; - var8 = 0.0F; - var11 = 1.0F; - var9 = 0.0F; - var12 = 1.0F; - var13 = true; - } - - if ((var6 & 8) != 0) - { - var7 = Math.min(var7, 0.9375F); - var10 = 1.0F; - var8 = 0.0F; - var11 = 1.0F; - var9 = 0.0F; - var12 = 1.0F; - var13 = true; - } - - if ((var6 & 4) != 0) - { - var12 = Math.max(var12, 0.0625F); - var9 = 0.0F; - var7 = 0.0F; - var10 = 1.0F; - var8 = 0.0F; - var11 = 1.0F; - var13 = true; - } - - if ((var6 & 1) != 0) - { - var9 = Math.min(var9, 0.9375F); - var12 = 1.0F; - var7 = 0.0F; - var10 = 1.0F; - var8 = 0.0F; - var11 = 1.0F; - var13 = true; - } - - if (!var13 && this.canBePlacedOn(par1IBlockAccess.getBlockId(par2, par3 + 1, par4))) - { - var8 = Math.min(var8, 0.9375F); - var11 = 1.0F; - var7 = 0.0F; - var10 = 1.0F; - var9 = 0.0F; - var12 = 1.0F; - } - - this.setBlockBounds(var7, var8, var9, var10, var11, var12); - } - - /** - * Returns a bounding box from the pool of bounding boxes (this means this box can change after the pool has been - * cleared to be reused) - */ - public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4) - { - return null; - } - - /** - * checks to see if you can place this block can be placed on that side of a block: BlockLever overrides - */ - public boolean canPlaceBlockOnSide(World par1World, int par2, int par3, int par4, int par5) - { - switch (par5) - { - case 1: - return this.canBePlacedOn(par1World.getBlockId(par2, par3 + 1, par4)); - - case 2: - return this.canBePlacedOn(par1World.getBlockId(par2, par3, par4 + 1)); - - case 3: - return this.canBePlacedOn(par1World.getBlockId(par2, par3, par4 - 1)); - - case 4: - return this.canBePlacedOn(par1World.getBlockId(par2 + 1, par3, par4)); - - case 5: - return this.canBePlacedOn(par1World.getBlockId(par2 - 1, par3, par4)); - - default: - return false; - } - } - - /** - * returns true if a vine can be placed on that block (checks for render as normal block and if it is solid) - */ - private boolean canBePlacedOn(int par1) - { - if (par1 == 0) - { - return false; - } - else - { - Block var2 = Block.blocksList[par1]; - return var2.renderAsNormalBlock() && var2.blockMaterial.blocksMovement(); - } - } - - /** - * Returns if the vine can stay in the world. It also changes the metadata according to neighboring blocks. - */ - private boolean canVineStay(World par1World, int par2, int par3, int par4) - { - int var5 = par1World.getBlockMetadata(par2, par3, par4); - int var6 = var5; - - if (var5 > 0) - { - for (int var7 = 0; var7 <= 3; ++var7) - { - int var8 = 1 << var7; - - if ((var5 & var8) != 0 && !this.canBePlacedOn(par1World.getBlockId(par2 + Direction.offsetX[var7], par3, par4 + Direction.offsetZ[var7])) && (par1World.getBlockId(par2, par3 + 1, par4) != this.blockID || (par1World.getBlockMetadata(par2, par3 + 1, par4) & var8) == 0)) - { - var6 &= ~var8; - } - } - } - - if (var6 == 0 && !this.canBePlacedOn(par1World.getBlockId(par2, par3 + 1, par4))) - { - return false; - } - else - { - if (var6 != var5) - { - par1World.setBlockMetadataWithNotify(par2, par3, par4, var6, 2); - } - - return true; - } - } - - /** - * Lets the block know when one of its neighbor changes. Doesn't know which neighbor changed (coordinates passed are - * their own) Args: x, y, z, neighbor blockID - */ - public void onNeighborBlockChange(World par1World, int par2, int par3, int par4, int par5) - { - if (!par1World.isRemote && !this.canVineStay(par1World, par2, par3, par4)) - { - this.dropBlockAsItem(par1World, par2, par3, par4, par1World.getBlockMetadata(par2, par3, par4), 0); - par1World.setBlockToAir(par2, par3, par4); - } - } - - /** - * Ticks the block if it's been scheduled - */ - public void updateTick(World par1World, int par2, int par3, int par4, Random par5Random) - { - } - - /** - * called before onBlockPlacedBy by ItemBlock and ItemReed - */ - public void updateBlockMetadata(World par1World, int par2, int par3, int par4, int par5, float par6, float par7, float par8) - { - byte var9 = 0; - - switch (par5) - { - case 2: - var9 = 1; - break; - - case 3: - var9 = 4; - break; - - case 4: - var9 = 8; - break; - - case 5: - var9 = 2; - } - - if (var9 != 0) - { - par1World.setBlockMetadataWithNotify(par2, par3, par4, var9, 2); - } - } - - /** - * Called when a block is placed using its ItemBlock. Args: World, X, Y, Z, side, hitX, hitY, hitZ, block metadata - */ - public int onBlockPlaced(World par1World, int par2, int par3, int par4, int par5, float par6, float par7, float par8, int par9) - { - byte b0 = 0; - - switch (par5) - { - case 2: - b0 = 1; - break; - case 3: - b0 = 4; - break; - case 4: - b0 = 8; - break; - case 5: - b0 = 2; - } - - return b0 != 0 ? b0 : par9; - } - - /** - * Returns the ID of the items to drop on destruction. - */ - public int idDropped(int par1, Random par2Random, int par3) - { - return 0; - } - - /** - * Returns the quantity of items to drop on block destruction. - */ - public int quantityDropped(Random par1Random) - { - return 0; - } - - /** - * Called when the player destroys a block with an item that can harvest it. (i, j, k) are the coordinates of the - * block and l is the block's subtype/damage. - */ - public void harvestBlock(World par1World, EntityPlayer par2EntityPlayer, int par3, int par4, int par5, int par6) - { - super.harvestBlock(par1World, par2EntityPlayer, par3, par4, par5, par6); - } - - @Override - public boolean isShearable(ItemStack item, World world, int x, int y, int z) - { - return true; - } - - @Override - public ArrayList onSheared(ItemStack item, World world, int x, int y, int z, int fortune) - { - ArrayList ret = new ArrayList(); - ret.add(new ItemStack(this, 1, 0)); - return ret; - } - - public boolean isBlockReplaceable(World world, int x, int y, int z) - { - return true; - } -} diff --git a/src/minecraft/biomesoplenty/blocks/BlockWillow.java b/src/minecraft/biomesoplenty/blocks/BlockWillow.java deleted file mode 100644 index d0e4253c6..000000000 --- a/src/minecraft/biomesoplenty/blocks/BlockWillow.java +++ /dev/null @@ -1,370 +0,0 @@ -package biomesoplenty.blocks; - -import java.util.ArrayList; -import java.util.Random; - -import biomesoplenty.BiomesOPlenty; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.Direction; -import net.minecraft.world.ColorizerFoliage; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import net.minecraftforge.common.IShearable; - -public class BlockWillow extends Block implements IShearable -{ - public BlockWillow(int par1) - { - super(par1, Material.vine); - setBurnProperties(this.blockID, 15, 100); - this.setTickRandomly(true); - this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - @Override - public void registerIcons(IconRegister par1IconRegister) - { - this.blockIcon = par1IconRegister.registerIcon("BiomesOPlenty:willow"); - } - - /** - * Sets the block's bounds for rendering it as an item - */ - public void setBlockBoundsForItemRender() - { - this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - } - - /** - * The type of render function that is called for this block - */ - public int getRenderType() - { - return 20; - } - - /** - * Is this block (a) opaque and (b) a full 1m cube? This determines whether or not to render the shared face of two - * adjacent blocks and also whether the player can attach torches, redstone wire, etc to this block. - */ - public boolean isOpaqueCube() - { - return false; - } - - /** - * If this block doesn't render as an ordinary block it will return False (examples: signs, buttons, stairs, etc) - */ - public boolean renderAsNormalBlock() - { - return false; - } - - /** - * Updates the blocks bounds based on its current state. Args: world, x, y, z - */ - public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) - { - int var6 = par1IBlockAccess.getBlockMetadata(par2, par3, par4); - float var7 = 1.0F; - float var8 = 1.0F; - float var9 = 1.0F; - float var10 = 0.0F; - float var11 = 0.0F; - float var12 = 0.0F; - boolean var13 = var6 > 0; - - if ((var6 & 2) != 0) - { - var10 = Math.max(var10, 0.0625F); - var7 = 0.0F; - var8 = 0.0F; - var11 = 1.0F; - var9 = 0.0F; - var12 = 1.0F; - var13 = true; - } - - if ((var6 & 8) != 0) - { - var7 = Math.min(var7, 0.9375F); - var10 = 1.0F; - var8 = 0.0F; - var11 = 1.0F; - var9 = 0.0F; - var12 = 1.0F; - var13 = true; - } - - if ((var6 & 4) != 0) - { - var12 = Math.max(var12, 0.0625F); - var9 = 0.0F; - var7 = 0.0F; - var10 = 1.0F; - var8 = 0.0F; - var11 = 1.0F; - var13 = true; - } - - if ((var6 & 1) != 0) - { - var9 = Math.min(var9, 0.9375F); - var12 = 1.0F; - var7 = 0.0F; - var10 = 1.0F; - var8 = 0.0F; - var11 = 1.0F; - var13 = true; - } - - if (!var13 && this.canBePlacedOn(par1IBlockAccess.getBlockId(par2, par3 + 1, par4))) - { - var8 = Math.min(var8, 0.9375F); - var11 = 1.0F; - var7 = 0.0F; - var10 = 1.0F; - var9 = 0.0F; - var12 = 1.0F; - } - - this.setBlockBounds(var7, var8, var9, var10, var11, var12); - } - - /** - * Returns a bounding box from the pool of bounding boxes (this means this box can change after the pool has been - * cleared to be reused) - */ - public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4) - { - return null; - } - - /** - * checks to see if you can place this block can be placed on that side of a block: BlockLever overrides - */ - public boolean canPlaceBlockOnSide(World par1World, int par2, int par3, int par4, int par5) - { - switch (par5) - { - case 1: - return this.canBePlacedOn(par1World.getBlockId(par2, par3 + 1, par4)); - - case 2: - return this.canBePlacedOn(par1World.getBlockId(par2, par3, par4 + 1)); - - case 3: - return this.canBePlacedOn(par1World.getBlockId(par2, par3, par4 - 1)); - - case 4: - return this.canBePlacedOn(par1World.getBlockId(par2 + 1, par3, par4)); - - case 5: - return this.canBePlacedOn(par1World.getBlockId(par2 - 1, par3, par4)); - - default: - return false; - } - } - - /** - * returns true if a vine can be placed on that block (checks for render as normal block and if it is solid) - */ - private boolean canBePlacedOn(int par1) - { - if (par1 == 0) - { - return false; - } - else - { - Block var2 = Block.blocksList[par1]; - return var2.renderAsNormalBlock() && var2.blockMaterial.blocksMovement(); - } - } - - /** - * Returns if the vine can stay in the world. It also changes the metadata according to neighboring blocks. - */ - private boolean canVineStay(World par1World, int par2, int par3, int par4) - { - int var5 = par1World.getBlockMetadata(par2, par3, par4); - int var6 = var5; - - if (var5 > 0) - { - for (int var7 = 0; var7 <= 3; ++var7) - { - int var8 = 1 << var7; - - if ((var5 & var8) != 0 && !this.canBePlacedOn(par1World.getBlockId(par2 + Direction.offsetX[var7], par3, par4 + Direction.offsetZ[var7])) && (par1World.getBlockId(par2, par3 + 1, par4) != this.blockID || (par1World.getBlockMetadata(par2, par3 + 1, par4) & var8) == 0)) - { - var6 &= ~var8; - } - } - } - - if (var6 == 0 && !this.canBePlacedOn(par1World.getBlockId(par2, par3 + 1, par4))) - { - return false; - } - else - { - if (var6 != var5) - { - par1World.setBlockMetadataWithNotify(par2, par3, par4, var6, 2); - } - - return true; - } - } - - public int getBlockColor() - { - return ColorizerFoliage.getFoliageColorBasic(); - } - - /** - * Returns the color this block should be rendered. Used by leaves. - */ - public int getRenderColor(int par1) - { - return ColorizerFoliage.getFoliageColorBirch(); - } - - /** - * Returns a integer with hex for 0xrrggbb with this color multiplied against the blocks color. Note only called - * when first determining what to render. - */ - public int colorMultiplier(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) - { - return par1IBlockAccess.getBiomeGenForCoords(par2, par4).getBiomeFoliageColor(); - } - - /** - * Lets the block know when one of its neighbor changes. Doesn't know which neighbor changed (coordinates passed are - * their own) Args: x, y, z, neighbor blockID - */ - public void onNeighborBlockChange(World par1World, int par2, int par3, int par4, int par5) - { - if (!par1World.isRemote && !this.canVineStay(par1World, par2, par3, par4)) - { - this.dropBlockAsItem(par1World, par2, par3, par4, par1World.getBlockMetadata(par2, par3, par4), 0); - par1World.setBlock(par2, par3, par4, 0); - } - } - - /** - * Ticks the block if it's been scheduled - */ - public void updateTick(World par1World, int par2, int par3, int par4, Random par5Random) - { - } - - /** - * called before onBlockPlacedBy by ItemBlock and ItemReed - */ - public void updateBlockMetadata(World par1World, int par2, int par3, int par4, int par5, float par6, float par7, float par8) - { - byte var9 = 0; - - switch (par5) - { - case 2: - var9 = 1; - break; - - case 3: - var9 = 4; - break; - - case 4: - var9 = 8; - break; - - case 5: - var9 = 2; - } - - if (var9 != 0) - { - par1World.setBlockMetadataWithNotify(par2, par3, par4, var9, 2); - } - } - - /** - * Called when a block is placed using its ItemBlock. Args: World, X, Y, Z, side, hitX, hitY, hitZ, block metadata - */ - public int onBlockPlaced(World par1World, int par2, int par3, int par4, int par5, float par6, float par7, float par8, int par9) - { - byte b0 = 0; - - switch (par5) - { - case 2: - b0 = 1; - break; - case 3: - b0 = 4; - break; - case 4: - b0 = 8; - break; - case 5: - b0 = 2; - } - - return b0 != 0 ? b0 : par9; - } - - /** - * Returns the ID of the items to drop on destruction. - */ - public int idDropped(int par1, Random par2Random, int par3) - { - return 0; - } - - /** - * Returns the quantity of items to drop on block destruction. - */ - public int quantityDropped(Random par1Random) - { - return 0; - } - - /** - * Called when the player destroys a block with an item that can harvest it. (i, j, k) are the coordinates of the - * block and l is the block's subtype/damage. - */ - public void harvestBlock(World par1World, EntityPlayer par2EntityPlayer, int par3, int par4, int par5, int par6) - { - super.harvestBlock(par1World, par2EntityPlayer, par3, par4, par5, par6); - } - - @Override - public boolean isShearable(ItemStack item, World world, int x, int y, int z) - { - return true; - } - - @Override - public ArrayList onSheared(ItemStack item, World world, int x, int y, int z, int fortune) - { - ArrayList ret = new ArrayList(); - ret.add(new ItemStack(this, 1, 0)); - return ret; - } - - @Override - public boolean isBlockReplaceable(World world, int x, int y, int z) - { - return true; - } -} diff --git a/src/minecraft/biomesoplenty/blocks/renderers/FoliageRenderer.java b/src/minecraft/biomesoplenty/blocks/renderers/FoliageRenderer.java deleted file mode 100644 index 76cbdc9a4..000000000 --- a/src/minecraft/biomesoplenty/blocks/renderers/FoliageRenderer.java +++ /dev/null @@ -1,44 +0,0 @@ -package biomesoplenty.blocks.renderers; - -import net.minecraft.block.Block; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.world.IBlockAccess; -import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; -import cpw.mods.fml.client.registry.RenderingRegistry; - -public class FoliageRenderer implements ISimpleBlockRenderingHandler -{ - public static int render = RenderingRegistry.getNextAvailableRenderId(); - - @Override - public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) - { - // Doesn't render in inventory - } - - @Override - public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) - { - if (modelId == render) - { - int meta = world.getBlockMetadata(x, y, z); - if (meta == 0) - return renderer.renderBlockLilyPad(block, x, y, z); - else - return renderer.renderCrossedSquares(block, x, y, z); - } - return true; - } - - @Override - public boolean shouldRender3DInInventory() - { - return false; - } - - @Override - public int getRenderId() - { - return render; - } -} diff --git a/src/minecraft/biomesoplenty/blocks/renderers/PlantsRenderer.java b/src/minecraft/biomesoplenty/blocks/renderers/PlantsRenderer.java deleted file mode 100644 index 3f97cac89..000000000 --- a/src/minecraft/biomesoplenty/blocks/renderers/PlantsRenderer.java +++ /dev/null @@ -1,44 +0,0 @@ -package biomesoplenty.blocks.renderers; - -import net.minecraft.block.Block; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.world.IBlockAccess; -import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; -import cpw.mods.fml.client.registry.RenderingRegistry; - -public class PlantsRenderer implements ISimpleBlockRenderingHandler -{ - public static int render = RenderingRegistry.getNextAvailableRenderId(); - - @Override - public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) - { - // Doesn't render in inventory - } - - @Override - public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) - { - if (modelId == render) - { - int meta = world.getBlockMetadata(x, y, z); - if (meta > 5) - return renderer.renderBlockCrops(block, x, y, z); - else - return renderer.renderCrossedSquares(block, x, y, z); - } - return true; - } - - @Override - public boolean shouldRender3DInInventory() - { - return false; - } - - @Override - public int getRenderId() - { - return render; - } -} diff --git a/src/minecraft/biomesoplenty/configuration/BOPBiomes.java b/src/minecraft/biomesoplenty/configuration/BOPBiomes.java deleted file mode 100644 index c3b05c6a3..000000000 --- a/src/minecraft/biomesoplenty/configuration/BOPBiomes.java +++ /dev/null @@ -1,1095 +0,0 @@ -package biomesoplenty.configuration; - -import java.util.Collection; -import java.util.HashSet; -import java.util.Set; - -import net.minecraft.world.WorldType; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraftforge.common.BiomeManager; -import biomesoplenty.api.Biomes; -import biomesoplenty.biomes.*; -import biomesoplenty.worldtype.WTBiomesOP; -import net.minecraftforge.common.BiomeDictionary; -import net.minecraftforge.common.BiomeDictionary.Type; -import com.google.common.base.Optional; -import com.google.common.collect.ImmutableSet; - -import cpw.mods.fml.common.registry.GameRegistry; - -public class BOPBiomes { - - public static WTBiomesOP WTBiomesOP; - - private static final Set worldTypes = new HashSet(); - - public static int getLastBiomeID() - { - int x; - for(x = 255; x >= 0; x--) { - if (BiomeGenBase.biomeList[x] == null) - { - break; - } - } - return x; - } - - public static void init() - { - // Initialize biomes - initializeBiomes(); - - //Initialize new world type - WTBiomesOP = new WTBiomesOP(); - - // Adding biomes to World Types - addBiomes(); - removeBiomeFromWorldTypes(getWorldTypes(), BiomeGenBase.jungleHills); - //Biome Dictionary - addToBiomeDictionary(); - - //Spawning - addSpawnBiomes(); - - //Village spawning - addVillageBiomes(); - - //Stronghold spawning - addStrongholdBiomes(); - - registerBiomes(); - } - - private static void initializeBiomes() - { - Biomes.alps = Optional.of((new BiomeGenAlps(BOPConfiguration.alpsID)).setColor(353825).setBiomeName("Alps").func_76733_a(5159473).setTemperatureRainfall(0.0F, 0.0F).setMinMaxHeight(5.0F, 5.0F)); - Biomes.arctic = Optional.of((new BiomeGenArctic(BOPConfiguration.arcticID)).setColor(14090235).setBiomeName("Arctic").setTemperatureRainfall(0.0F, 0.0F).setMinMaxHeight(0.1F, 0.7F)); - Biomes.badlands = Optional.of((new BiomeGenBadlands(BOPConfiguration.badlandsID)).setColor(16421912).setBiomeName("Badlands").setTemperatureRainfall(2.0F, 0.0F).setMinMaxHeight(0.3F, 0.9F)); - Biomes.bambooForest = Optional.of((new BiomeGenBambooForest(BOPConfiguration.bambooForestID)).setColor(112).setBiomeName("Bamboo Forest").setMinMaxHeight(0.0F, 0.3F).setTemperatureRainfall(1.2F, 0.9F)); - Biomes.bayou = Optional.of((new BiomeGenBayou(BOPConfiguration.bayouID)).setColor(522674).setBiomeName("Bayou").func_76733_a(9154376).setMinMaxHeight(-0.3F, 0.2F).setTemperatureRainfall(0.5F, 0.9F)); - Biomes.birchForest = Optional.of((new BiomeGenBirchForest(BOPConfiguration.birchForestID)).setColor(353825).setBiomeName("Birch Forest").func_76733_a(5159473).setTemperatureRainfall(0.4F, 0.3F)); - Biomes.bog = Optional.of((new BiomeGenBog(BOPConfiguration.bogID)).setColor(522674).setBiomeName("Bog").func_76733_a(9154376).setMinMaxHeight(-0.3F, -0.1F).setTemperatureRainfall(0.8F, 0.9F)); - Biomes.borealForest = Optional.of((new BiomeGenBorealForest(BOPConfiguration.borealForestID)).setColor(353825).setBiomeName("Boreal Forest").func_76733_a(5159473).setMinMaxHeight(0.0F, 1.0F).setTemperatureRainfall(0.6F, 0.7F)); - Biomes.canyon = Optional.of((new BiomeGenCanyon(BOPConfiguration.canyonID)).setColor(9286496).setBiomeName("Canyon").setTemperatureRainfall(0.8F, 0.4F).setMinMaxHeight(3.0F, 5.0F)); - Biomes.chaparral = Optional.of((new BiomeGenChaparral(BOPConfiguration.chaparralID)).setColor(9286496).setBiomeName("Chaparral").setTemperatureRainfall(0.8F, 0.4F).setMinMaxHeight(0.3F, 0.6F)); - Biomes.cherryBlossomGrove = Optional.of((new BiomeGenCherryBlossomGrove(BOPConfiguration.cherryBlossomGroveID)).setColor(9286496).setBiomeName("Cherry Blossom Grove").setMinMaxHeight(0.1F, 0.2F).setTemperatureRainfall(0.7F, 0.8F)); - Biomes.coniferousForest = Optional.of((new BiomeGenConiferousForest(BOPConfiguration.coniferousForestID)).setColor(747097).setBiomeName("Coniferous Forest").func_76733_a(5159473).setTemperatureRainfall(0.3F, 0.4F).setMinMaxHeight(0.1F, 0.8F)); - Biomes.crag = Optional.of((new BiomeGenCrag(BOPConfiguration.cragID)).setColor(9286496).setBiomeName("Crag").setMinMaxHeight(0.0F, 9.9F).setTemperatureRainfall(0.4F, 0.2F)); - Biomes.deadForest = Optional.of((new BiomeGenDeadForest(BOPConfiguration.deadForestID)).setColor(522674).setBiomeName("Dead Forest").func_76733_a(9154376).setMinMaxHeight(0.2F, 0.7F).setTemperatureRainfall(1.2F, 0.1F)); - Biomes.deadSwamp = Optional.of((new BiomeGenDeadSwamp(BOPConfiguration.deadSwampID)).setColor(522674).setBiomeName("Dead Swamp").func_76733_a(9154376).setMinMaxHeight(-0.2F, 0.1F).setTemperatureRainfall(0.8F, 0.9F)); - Biomes.deadlands = Optional.of((new BiomeGenDeadlands(BOPConfiguration.deadlandsID)).setColor(522674).setBiomeName("Deadlands").setDisableRain().func_76733_a(9154376).setMinMaxHeight(0.1F, 0.5F).setTemperatureRainfall(2.0F, 0.0F)); - Biomes.deciduousForest = Optional.of((new BiomeGenDeciduousForest(BOPConfiguration.deciduousForestID)).setColor(353825).setBiomeName("Deciduous Forest").func_76733_a(5159473).setTemperatureRainfall(0.7F, 0.8F)); - Biomes.drylands = Optional.of((new BiomeGenDrylands(BOPConfiguration.drylandsID)).setColor(16421912).setBiomeName("Drylands").setTemperatureRainfall(2.0F, 0.0F).setMinMaxHeight(0.0F, 0.5F)); - Biomes.dunes = Optional.of((new BiomeGenDunes(BOPConfiguration.dunesID)).setColor(13786898).setBiomeName("Dunes").setDisableRain().setTemperatureRainfall(2.0F, 0.0F).setMinMaxHeight(0.5F, 1.3F)); - Biomes.fen = Optional.of((new BiomeGenFen(BOPConfiguration.fenID)).setColor(9286496).setBiomeName("Fen").setTemperatureRainfall(0.4F, 0.0F).setMinMaxHeight(-0.2F, 0.1F)); - Biomes.field = Optional.of((new BiomeGenField(BOPConfiguration.fieldID)).setColor(9286496).setBiomeName("Field").setTemperatureRainfall(0.4F, 0.8F).setMinMaxHeight(0.0F, 0.1F)); - Biomes.frostForest = Optional.of((new BiomeGenFrostForest(BOPConfiguration.frostForestID)).setColor(14090235).setBiomeName("Frost Forest").setEnableSnow().setTemperatureRainfall(0.0F, 0.0F).setMinMaxHeight(0.1F, 0.4F)); - Biomes.fungiForest = Optional.of((new BiomeGenFungiForest(BOPConfiguration.fungiForestID)).setColor(747097).setBiomeName("Fungi Forest").func_76733_a(5159473).setTemperatureRainfall(0.9F, 1.0F).setMinMaxHeight(0.0F, 0.4F)); - Biomes.garden = Optional.of((new BiomeGenGarden(BOPConfiguration.gardenID)).setColor(9286496).setBiomeName("Garden").setTemperatureRainfall(0.7F, 0.8F).setMinMaxHeight(0.1F, 0.2F)); - Biomes.glacier = Optional.of((new BiomeGenGlacier(BOPConfiguration.glacierID)).setColor(6316128).setBiomeName("Glacier").setEnableSnow().setMinMaxHeight(0.4F, 1.0F).setTemperatureRainfall(0.0F, 0.0F)); - Biomes.grassland = Optional.of((new BiomeGenGrassland(BOPConfiguration.grasslandID)).setColor(9286496).setBiomeName("Grassland").setTemperatureRainfall(0.7F, 0.7F).setMinMaxHeight(0.2F, 0.2F)); - Biomes.grove = Optional.of((new BiomeGenGrove(BOPConfiguration.groveID)).setColor(9286496).setBiomeName("Grove").setTemperatureRainfall(0.4F, 0.8F).setMinMaxHeight(0.0F, 0.1F)); - Biomes.heathland = Optional.of((new BiomeGenHeathland(BOPConfiguration.heathlandID)).setColor(353825).setBiomeName("Heathland").func_76733_a(5159473).setTemperatureRainfall(0.8F, 0.1F).setMinMaxHeight(0.1F, 0.3F)); - Biomes.highland = Optional.of((new BiomeGenHighland(BOPConfiguration.highlandID)).setColor(6316128).setBiomeName("Highland").setMinMaxHeight(0.9F, 1.9F).setTemperatureRainfall(0.5F, 0.5F)); - Biomes.iceSheet = Optional.of((new BiomeGenIceSheet(BOPConfiguration.iceSheetID)).setColor(6316128).setBiomeName("Ice Sheet").setEnableSnow().setMinMaxHeight(0.1F, 0.2F).setTemperatureRainfall(0.0F, 0.0F)); - Biomes.icyHills = Optional.of((new BiomeGenIcyHills(BOPConfiguration.icyHillsID)).setColor(14090235).setBiomeName("Icy Hills").setEnableSnow().setTemperatureRainfall(0.0F, 0.0F).setMinMaxHeight(-0.2F, 0.5F)); - Biomes.jadeCliffs = Optional.of((new BiomeGenJadeCliffs(BOPConfiguration.jadeCliffsID)).setColor(14090235).setBiomeName("Jade Cliffs").setTemperatureRainfall(0.5F, 0.1F).setMinMaxHeight(0.1F, 2.0F)); - Biomes.lushDesert = Optional.of((new BiomeGenLushDesert(BOPConfiguration.lushDesertID)).setColor(16421912).setBiomeName("Lush Desert").setTemperatureRainfall(0.8F, 0.3F).setMinMaxHeight(0.2F, 0.8F)); - Biomes.lushSwamp = Optional.of((new BiomeGenLushSwamp(BOPConfiguration.lushSwampID)).setColor(522674).setBiomeName("Lush Swamp").func_76733_a(9154376).setMinMaxHeight(-0.2F, 0.1F).setTemperatureRainfall(0.7F, 1.0F)); - Biomes.mangrove = Optional.of((new BiomeGenMangrove(BOPConfiguration.mangroveID)).setColor(16440917).setBiomeName("Mangrove").setMinMaxHeight(-0.4F, -0.1F).setTemperatureRainfall(0.8F, 0.9F)); - Biomes.mapleWoods = Optional.of((new BiomeGenMapleWoods(BOPConfiguration.mapleWoodsID)).setColor(747097).setBiomeName("Maple Woods").func_76733_a(5159473).setTemperatureRainfall(0.2F, 0.8F).setMinMaxHeight(0.1F, 0.6F)); - Biomes.marsh = Optional.of((new BiomeGenMarsh(BOPConfiguration.marshID)).setColor(10486015).setBiomeName("Marsh").setMinMaxHeight(-0.5F, 0.0F).setTemperatureRainfall(0.5F, 0.9F)); - Biomes.meadow = Optional.of((new BiomeGenMeadow(BOPConfiguration.meadowID)).setColor(9286496).setBiomeName("Meadow").setTemperatureRainfall(0.7F, 0.7F)); - Biomes.mesa = Optional.of((new BiomeGenMesa(BOPConfiguration.mesaID)).setColor(16421912).setBiomeName("Mesa").setDisableRain().setTemperatureRainfall(2.0F, 0.0F).setMinMaxHeight(0.8F, 1.0F)); - Biomes.moor = Optional.of((new BiomeGenMoor(BOPConfiguration.moorID)).setColor(16421912).setBiomeName("Moor").setTemperatureRainfall(0.5F, 1.0F).setMinMaxHeight(0.7F, 0.8F)); - Biomes.mountain = Optional.of((new BiomeGenMountain(BOPConfiguration.mountainID)).setColor(14090235).setBiomeName("Mountain").setTemperatureRainfall(0.5F, 0.1F).setMinMaxHeight(1.2F, 1.2F)); - Biomes.mysticGrove = Optional.of((new BiomeGenMysticGrove(BOPConfiguration.mysticGroveID)).setColor(353825).setBiomeName("Mystic Grove").setDisableRain().func_76733_a(5159473).setTemperatureRainfall(0.9F, 1.0F)); - Biomes.oasis = Optional.of((new BiomeGenOasis(BOPConfiguration.oasisID)).setColor(16421912).setBiomeName("Oasis").setTemperatureRainfall(2.0F, 2.0F).setMinMaxHeight(0.1F, 0.2F)); - Biomes.ominousWoods = Optional.of((new BiomeGenOminousWoods(BOPConfiguration.ominousWoodsID)).setColor(353825).setBiomeName("Ominous Woods").setDisableRain().func_76733_a(5159473).setTemperatureRainfall(0.8F, 0.9F)); - Biomes.orchard = Optional.of((new BiomeGenOrchard(BOPConfiguration.orchardID)).setColor(9286496).setBiomeName("Orchard").setTemperatureRainfall(0.8F, 0.4F)); - Biomes.originValley = Optional.of((new BiomeGenOriginValley(BOPConfiguration.originValleyID)).setColor(353825).setBiomeName("Origin Valley").func_76733_a(5159473).setTemperatureRainfall(0.7F, 0.8F).setMinMaxHeight(-0.1F, 0.6F)); - Biomes.outback = Optional.of((new BiomeGenOutback(BOPConfiguration.outbackID)).setColor(9286496).setBiomeName("Outback").setTemperatureRainfall(0.8F, 0.0F).setMinMaxHeight(0.1F, 0.1F)); - Biomes.pasture = Optional.of((new BiomeGenPasture(BOPConfiguration.pastureID)).setColor(9286496).setBiomeName("Pasture").setTemperatureRainfall(0.8F, 0.4F).setMinMaxHeight(0.1F, 0.2F)); - Biomes.prairie = Optional.of((new BiomeGenPrairie(BOPConfiguration.prairieID)).setColor(353825).setBiomeName("Prairie").func_76733_a(5159473).setTemperatureRainfall(0.9F, 0.6F).setMinMaxHeight(0.1F, 0.1F)); - Biomes.promisedLand = Optional.of((new BiomeGenPromisedLand(BOPConfiguration.promisedLandID)).setColor(112).setBiomeName("Promised Land").setTemperatureRainfall(2.0F, 2.0F).setMinMaxHeight(0.1F, 2.0F)); - Biomes.quagmire = Optional.of((new BiomeGenQuagmire(BOPConfiguration.quagmireID)).setColor(522674).setBiomeName("Quagmire").func_76733_a(9154376).setMinMaxHeight(-0.1F, 0.3F).setTemperatureRainfall(0.8F, 0.9F)); - Biomes.rainforest = Optional.of((new BiomeGenRainforest(BOPConfiguration.rainforestID)).setColor(5470985).setBiomeName("Rainforest").func_76733_a(5470985).setTemperatureRainfall(2.0F, 2.0F).setMinMaxHeight(0.7F, 1.8F)); - Biomes.redwoodForest = Optional.of((new BiomeGenRedwoodForest(BOPConfiguration.redwoodForestID)).setColor(747097).setBiomeName("Redwood Forest").func_76733_a(5159473).setTemperatureRainfall(0.8F, 0.4F).setMinMaxHeight(0.0F, 0.4F)); - Biomes.sacredSprings = Optional.of((new BiomeGenSacredSprings(BOPConfiguration.sacredSpringsID)).setColor(522674).setBiomeName("Sacred Springs").func_76733_a(9154376).setMinMaxHeight(0.0F, 1.2F).setTemperatureRainfall(1.2F, 0.9F)); - Biomes.savanna = Optional.of((new BiomeGenSavanna(BOPConfiguration.savannaID)).setColor(9286496).setBiomeName("Savanna").setTemperatureRainfall(1.5F, 0.1F).setMinMaxHeight(0.1F, 0.1F)); - Biomes.scrubland = Optional.of((new BiomeGenScrubland(BOPConfiguration.scrublandID)).setColor(9286496).setBiomeName("Scrubland").setTemperatureRainfall(1.2F, 0.0F).setMinMaxHeight(0.1F, 0.3F)); - Biomes.seasonalForest = Optional.of((new BiomeGenSeasonalForest(BOPConfiguration.seasonalForestID)).setColor(353825).setBiomeName("Seasonal Forest").func_76733_a(5159473).setTemperatureRainfall(0.7F, 0.8F).setMinMaxHeight(0.2F, 0.7F)); - Biomes.shield = Optional.of((new BiomeGenShield(BOPConfiguration.shieldID)).setColor(522674).setBiomeName("Shield").func_76733_a(9154376).setMinMaxHeight(-0.2F, 0.4F).setTemperatureRainfall(0.5F, 0.8F)); - Biomes.shore = Optional.of((new BiomeGenShore(BOPConfiguration.shoreID)).setColor(9286496).setBiomeName("Shore").setMinMaxHeight(-1.0F, 0.4F).setTemperatureRainfall(0.8F, 0.4F)); - Biomes.shrubland = Optional.of((new BiomeGenShrubland(BOPConfiguration.shrublandID)).setColor(9286496).setBiomeName("Shrubland").setMinMaxHeight(0.1F, 0.2F).setTemperatureRainfall(0.6F, 0.0F)); - Biomes.snowyWoods = Optional.of((new BiomeGenSnowyWoods(BOPConfiguration.snowyWoodsID)).setColor(522674).setBiomeName("Snowy Woods").func_76733_a(9154376).setEnableSnow().setTemperatureRainfall(0.05F, 0.8F).setMinMaxHeight(0.2F, 0.7F)); - Biomes.spruceWoods = Optional.of((new BiomeGenSpruceWoods(BOPConfiguration.spruceWoodsID)).setColor(353825).setBiomeName("Spruce Woods").func_76733_a(5159473).setTemperatureRainfall(0.6F, 0.7F)); - Biomes.steppe = Optional.of((new BiomeGenSteppe(BOPConfiguration.steppeID)).setColor(9286496).setBiomeName("Steppe").setTemperatureRainfall(2.0F, 0.0F).setMinMaxHeight(0.1F, 0.2F)); - Biomes.swampwoods = Optional.of((new BiomeGenSwampwoods(BOPConfiguration.swampwoodsID)).setColor(522674).setBiomeName("Swampwoods").func_76733_a(9154376).setMinMaxHeight(-0.2F, 0.2F).setTemperatureRainfall(0.8F, 0.9F)); - Biomes.temperateRainforest = Optional.of((new BiomeGenTemperateRainforest(BOPConfiguration.temperateRainforestID)).setColor(353825).setBiomeName("Temperate Rainforest").func_76733_a(5159473).setTemperatureRainfall(0.7F, 0.8F).setMinMaxHeight(0.2F, 1.2F)); - Biomes.thicket = Optional.of((new BiomeGenThicket(BOPConfiguration.thicketID)).setColor(353825).setBiomeName("Thicket").func_76733_a(5159473).setTemperatureRainfall(0.6F, 0.2F).setMinMaxHeight(0.0F, 0.2F)); - Biomes.tropicalRainforest = Optional.of((new BiomeGenTropicalRainforest(BOPConfiguration.tropicalRainforestID)).setColor(9286496).setBiomeName("Tropical Rainforest").setTemperatureRainfall(1.2F, 0.9F).setMinMaxHeight(0.3F, 0.7F)); - Biomes.tropics = Optional.of((new BiomeGenTropics(BOPConfiguration.tropicsID)).setColor(9286496).setBiomeName("Tropics").setTemperatureRainfall(2.0F, 2.0F).setMinMaxHeight(0.1F, 0.8F)); - Biomes.tundra = Optional.of((new BiomeGenTundra(BOPConfiguration.tundraID)).setColor(14090235).setBiomeName("Tundra").setEnableSnow().setTemperatureRainfall(0.05F, 0.0F).setMinMaxHeight(-0.2F, 0.0F)); - Biomes.volcano = Optional.of((new BiomeGenVolcano(BOPConfiguration.volcanoID)).setColor(9286496).setBiomeName("Volcano").setDisableRain().setMinMaxHeight(0.6F, 0.9F).setTemperatureRainfall(2.0F, 0.0F)); - Biomes.wasteland = Optional.of((new BiomeGenWasteland(BOPConfiguration.wastelandID)).setColor(16421912).setBiomeName("Wasteland").setDisableRain().setTemperatureRainfall(2.0F, 0.0F).setMinMaxHeight(0.0F, 0.0F)); - Biomes.wetland = Optional.of((new BiomeGenWetland(BOPConfiguration.wetlandID)).setColor(522674).setBiomeName("Wetland").func_76733_a(9154376).setMinMaxHeight(-0.2F, 0.4F).setTemperatureRainfall(0.8F, 0.9F)); - Biomes.woodland = Optional.of((new BiomeGenWoodland(BOPConfiguration.woodlandID)).setColor(353825).setBiomeName("Woodland").func_76733_a(5159473).setTemperatureRainfall(1.7F, 0.2F).setMinMaxHeight(0.1F, 0.2F)); - Biomes.plainsNew = Optional.of((new BiomeGenPlainsNew(BOPConfiguration.plainsNewID)).setColor(9286496).setBiomeName("Plains").setTemperatureRainfall(0.8F, 0.4F)); - Biomes.desertNew = Optional.of((new BiomeGenDesertNew(BOPConfiguration.desertNewID)).setColor(16421912).setBiomeName("Desert").setDisableRain().setTemperatureRainfall(2.0F, 0.0F).setMinMaxHeight(0.1F, 0.2F)); - Biomes.extremeHillsNew = Optional.of((new BiomeGenHillsNew(BOPConfiguration.extremeHillsNewID)).setColor(6316128).setBiomeName("Extreme Hills").setMinMaxHeight(0.3F, 1.5F).setTemperatureRainfall(0.2F, 0.3F)); - Biomes.forestNew = Optional.of((new BiomeGenForestNew(BOPConfiguration.forestNewID)).setColor(353825).setBiomeName("Forest").func_76733_a(5159473).setTemperatureRainfall(0.7F, 0.8F)); - Biomes.taigaNew = Optional.of((new BiomeGenTaigaNew(BOPConfiguration.taigaNewID)).setColor(747097).setBiomeName("Taiga").func_76733_a(5159473).setEnableSnow().setTemperatureRainfall(0.05F, 0.8F).setMinMaxHeight(0.1F, 0.4F)); - Biomes.swamplandNew = Optional.of((new BiomeGenSwampNew(BOPConfiguration.swamplandNewID)).setColor(522674).setBiomeName("Swampland").func_76733_a(9154376).setMinMaxHeight(-0.2F, 0.1F).setTemperatureRainfall(0.8F, 0.9F)); - Biomes.jungleNew = Optional.of((new BiomeGenJungleNew(BOPConfiguration.jungleNewID)).setColor(5470985).setBiomeName("Jungle").func_76733_a(5470985).setTemperatureRainfall(1.2F, 0.9F).setMinMaxHeight(0.2F, 0.4F)); - } - - private static void addToBiomeDictionary() - { - BiomeDictionary.registerBiomeType(Biomes.alps.get(), Type.FROZEN, Type.MOUNTAIN); - BiomeDictionary.registerBiomeType(Biomes.arctic.get(), Type.FROZEN, Type.FOREST, Type.HILLS); - BiomeDictionary.registerBiomeType(Biomes.badlands.get(), Type.DESERT, Type.WASTELAND); - BiomeDictionary.registerBiomeType(Biomes.bambooForest.get(), Type.JUNGLE); - BiomeDictionary.registerBiomeType(Biomes.bayou.get(), Type.SWAMP); - BiomeDictionary.registerBiomeType(Biomes.birchForest.get(), Type.FOREST); - BiomeDictionary.registerBiomeType(Biomes.bog.get(), Type.SWAMP); - BiomeDictionary.registerBiomeType(Biomes.borealForest.get(), Type.FOREST); - BiomeDictionary.registerBiomeType(Biomes.canyon.get(), Type.DESERT, Type.MOUNTAIN, Type.HILLS); - BiomeDictionary.registerBiomeType(Biomes.chaparral.get(), Type.PLAINS); - BiomeDictionary.registerBiomeType(Biomes.cherryBlossomGrove.get(), Type.MAGICAL, Type.FOREST); - BiomeDictionary.registerBiomeType(Biomes.coniferousForest.get(), Type.FOREST, Type.HILLS); - BiomeDictionary.registerBiomeType(Biomes.crag.get(), Type.WASTELAND, Type.MOUNTAIN); - BiomeDictionary.registerBiomeType(Biomes.deadForest.get(), Type.WASTELAND, Type.FOREST); - BiomeDictionary.registerBiomeType(Biomes.deadlands.get(), Type.WASTELAND, Type.NETHER); - BiomeDictionary.registerBiomeType(Biomes.deadSwamp.get(), Type.SWAMP); - BiomeDictionary.registerBiomeType(Biomes.deciduousForest.get(), Type.FOREST, Type.HILLS); - BiomeDictionary.registerBiomeType(Biomes.drylands.get(), Type.DESERT); - BiomeDictionary.registerBiomeType(Biomes.dunes.get(), Type.BEACH, Type.DESERT); - BiomeDictionary.registerBiomeType(Biomes.fen.get(), Type.FOREST, Type.SWAMP); - BiomeDictionary.registerBiomeType(Biomes.field.get(), Type.PLAINS); - BiomeDictionary.registerBiomeType(Biomes.frostForest.get(), Type.FROZEN, Type.FOREST); - BiomeDictionary.registerBiomeType(Biomes.fungiForest.get(), Type.MAGICAL, Type.MUSHROOM, Type.FOREST, Type.SWAMP); - BiomeDictionary.registerBiomeType(Biomes.garden.get(), Type.MAGICAL, Type.PLAINS); - BiomeDictionary.registerBiomeType(Biomes.glacier.get(), Type.FROZEN, Type.HILLS); - BiomeDictionary.registerBiomeType(Biomes.grassland.get(), Type.PLAINS); - BiomeDictionary.registerBiomeType(Biomes.grove.get(), Type.FOREST); - BiomeDictionary.registerBiomeType(Biomes.heathland.get(), Type.PLAINS); - BiomeDictionary.registerBiomeType(Biomes.highland.get(), Type.HILLS, Type.MOUNTAIN); - BiomeDictionary.registerBiomeType(Biomes.iceSheet.get(), Type.FROZEN, Type.WASTELAND); - BiomeDictionary.registerBiomeType(Biomes.icyHills.get(), Type.FROZEN, Type.HILLS); - BiomeDictionary.registerBiomeType(Biomes.jadeCliffs.get(), Type.FOREST, Type.MOUNTAIN); - BiomeDictionary.registerBiomeType(Biomes.lushDesert.get(), Type.DESERT, Type.PLAINS); - BiomeDictionary.registerBiomeType(Biomes.lushSwamp.get(), Type.SWAMP); - BiomeDictionary.registerBiomeType(Biomes.mangrove.get(), Type.WATER); - BiomeDictionary.registerBiomeType(Biomes.mapleWoods.get(), Type.FOREST); - BiomeDictionary.registerBiomeType(Biomes.marsh.get(), Type.SWAMP, Type.WATER); - BiomeDictionary.registerBiomeType(Biomes.meadow.get(), Type.FOREST, Type.PLAINS); - BiomeDictionary.registerBiomeType(Biomes.mesa.get(), Type.DESERT, Type.WASTELAND); - BiomeDictionary.registerBiomeType(Biomes.moor.get(), Type.PLAINS, Type.HILLS); - BiomeDictionary.registerBiomeType(Biomes.mountain.get(), Type.MOUNTAIN, Type.HILLS); - BiomeDictionary.registerBiomeType(Biomes.mysticGrove.get(), Type.MAGICAL, Type.FOREST); - BiomeDictionary.registerBiomeType(Biomes.oasis.get(), Type.DESERT, Type.PLAINS); - BiomeDictionary.registerBiomeType(Biomes.ominousWoods.get(), Type.NETHER, Type.MAGICAL); - BiomeDictionary.registerBiomeType(Biomes.orchard.get(), Type.FOREST, Type.PLAINS); - BiomeDictionary.registerBiomeType(Biomes.outback.get(), Type.DESERT, Type.PLAINS); - BiomeDictionary.registerBiomeType(Biomes.pasture.get(), Type.PLAINS); - BiomeDictionary.registerBiomeType(Biomes.prairie.get(), Type.PLAINS); - BiomeDictionary.registerBiomeType(Biomes.promisedLand.get(), Type.FOREST, Type.MAGICAL); - BiomeDictionary.registerBiomeType(Biomes.quagmire.get(), Type.WASTELAND); - BiomeDictionary.registerBiomeType(Biomes.rainforest.get(), Type.JUNGLE, Type.HILLS, Type.FOREST); - BiomeDictionary.registerBiomeType(Biomes.redwoodForest.get(), Type.FOREST); - BiomeDictionary.registerBiomeType(Biomes.sacredSprings.get(), Type.MOUNTAIN, Type.FOREST); - BiomeDictionary.registerBiomeType(Biomes.savanna.get(), Type.DESERT); - BiomeDictionary.registerBiomeType(Biomes.scrubland.get(), Type.DESERT, Type.PLAINS); - BiomeDictionary.registerBiomeType(Biomes.seasonalForest.get(), Type.FOREST); - BiomeDictionary.registerBiomeType(Biomes.shield.get(), Type.FOREST); - BiomeDictionary.registerBiomeType(Biomes.shrubland.get(), Type.PLAINS); - BiomeDictionary.registerBiomeType(Biomes.snowyWoods.get(), Type.FROZEN); - BiomeDictionary.registerBiomeType(Biomes.spruceWoods.get(), Type.FOREST); - BiomeDictionary.registerBiomeType(Biomes.steppe.get(), Type.PLAINS, Type.WASTELAND); - BiomeDictionary.registerBiomeType(Biomes.swampwoods.get(), Type.SWAMP, Type.FOREST); - BiomeDictionary.registerBiomeType(Biomes.temperateRainforest.get(), Type.FOREST, Type.HILLS); - BiomeDictionary.registerBiomeType(Biomes.thicket.get(), Type.PLAINS, Type.FOREST); - BiomeDictionary.registerBiomeType(Biomes.tropicalRainforest.get(), Type.JUNGLE); - BiomeDictionary.registerBiomeType(Biomes.tropics.get(), Type.JUNGLE); - BiomeDictionary.registerBiomeType(Biomes.tundra.get(), Type.FROZEN); - BiomeDictionary.registerBiomeType(Biomes.volcano.get(), Type.WASTELAND, Type.MOUNTAIN, Type.NETHER); - BiomeDictionary.registerBiomeType(Biomes.wasteland.get(), Type.WASTELAND); - BiomeDictionary.registerBiomeType(Biomes.wetland.get(), Type.SWAMP); - BiomeDictionary.registerBiomeType(Biomes.woodland.get(), Type.FOREST); - BiomeDictionary.registerBiomeType(Biomes.plainsNew.get(), Type.PLAINS); - BiomeDictionary.registerBiomeType(Biomes.desertNew.get(), Type.DESERT); - BiomeDictionary.registerBiomeType(Biomes.forestNew.get(), Type.FOREST); - BiomeDictionary.registerBiomeType(Biomes.extremeHillsNew.get(), Type.HILLS, Type.MOUNTAIN); - BiomeDictionary.registerBiomeType(Biomes.taigaNew.get(), Type.FROZEN); - BiomeDictionary.registerBiomeType(Biomes.swamplandNew.get(), Type.SWAMP); - BiomeDictionary.registerBiomeType(Biomes.jungleNew.get(), Type.JUNGLE); - } - - private static void addSpawnBiomes() - { - addSpawnBiome(Biomes.alps); - addSpawnBiome(Biomes.arctic); - addSpawnBiome(Biomes.badlands); - addSpawnBiome(Biomes.bambooForest); - addSpawnBiome(Biomes.bayou); - addSpawnBiome(Biomes.birchForest); - addSpawnBiome(Biomes.bog); - addSpawnBiome(Biomes.borealForest); - addSpawnBiome(Biomes.canyon); - addSpawnBiome(Biomes.chaparral); - addSpawnBiome(Biomes.cherryBlossomGrove); - addSpawnBiome(Biomes.coniferousForest); - addSpawnBiome(Biomes.deadForest); - addSpawnBiome(Biomes.deadSwamp); - addSpawnBiome(Biomes.deciduousForest); - addSpawnBiome(Biomes.drylands); - addSpawnBiome(Biomes.dunes); - addSpawnBiome(Biomes.fen); - addSpawnBiome(Biomes.field); - addSpawnBiome(Biomes.frostForest); - addSpawnBiome(Biomes.glacier); - addSpawnBiome(Biomes.grassland); - addSpawnBiome(Biomes.grove); - addSpawnBiome(Biomes.heathland); - addSpawnBiome(Biomes.highland); - addSpawnBiome(Biomes.iceSheet); - addSpawnBiome(Biomes.jadeCliffs); - addSpawnBiome(Biomes.lushDesert); - addSpawnBiome(Biomes.lushSwamp); - addSpawnBiome(Biomes.mangrove); - addSpawnBiome(Biomes.mapleWoods); - addSpawnBiome(Biomes.marsh); - addSpawnBiome(Biomes.meadow); - addSpawnBiome(Biomes.mesa); - addSpawnBiome(Biomes.moor); - addSpawnBiome(Biomes.mountain); - addSpawnBiome(Biomes.oasis); - addSpawnBiome(Biomes.orchard); - addSpawnBiome(Biomes.outback); - addSpawnBiome(Biomes.pasture); - addSpawnBiome(Biomes.prairie); - addSpawnBiome(Biomes.quagmire); - addSpawnBiome(Biomes.rainforest); - addSpawnBiome(Biomes.redwoodForest); - addSpawnBiome(Biomes.savanna); - addSpawnBiome(Biomes.scrubland); - addSpawnBiome(Biomes.seasonalForest); - addSpawnBiome(Biomes.shield); - addSpawnBiome(Biomes.shrubland); - addSpawnBiome(Biomes.snowyWoods); - addSpawnBiome(Biomes.spruceWoods); - addSpawnBiome(Biomes.swampwoods); - addSpawnBiome(Biomes.temperateRainforest); - addSpawnBiome(Biomes.thicket); - addSpawnBiome(Biomes.tropicalRainforest); - addSpawnBiome(Biomes.tropics); - addSpawnBiome(Biomes.tundra); - addSpawnBiome(Biomes.volcano); - addSpawnBiome(Biomes.wetland); - addSpawnBiome(Biomes.woodland); - addSpawnBiome(Biomes.plainsNew); - addSpawnBiome(Biomes.desertNew); - addSpawnBiome(Biomes.forestNew); - addSpawnBiome(Biomes.extremeHillsNew); - addSpawnBiome(Biomes.taigaNew); - addSpawnBiome(Biomes.swamplandNew); - addSpawnBiome(Biomes.jungleNew); - } - - private static void addVillageBiomes() - { - addVillageBiome(Biomes.alps, BOPConfiguration.alpsVillage); - addVillageBiome(Biomes.arctic, BOPConfiguration.arcticVillage); - addVillageBiome(Biomes.badlands, BOPConfiguration.badlandsVillage); - addVillageBiome(Biomes.bambooForest, BOPConfiguration.bambooForestVillage); - addVillageBiome(Biomes.bayou, BOPConfiguration.bayouVillage); - addVillageBiome(Biomes.birchForest, BOPConfiguration.birchForestVillage); - addVillageBiome(Biomes.bog, BOPConfiguration.bogVillage); - addVillageBiome(Biomes.borealForest, BOPConfiguration.borealForestVillage); - addVillageBiome(Biomes.canyon, BOPConfiguration.canyonVillage); - addVillageBiome(Biomes.chaparral, BOPConfiguration.chaparralVillage); - addVillageBiome(Biomes.cherryBlossomGrove, BOPConfiguration.cherryBlossomGroveVillage); - addVillageBiome(Biomes.coniferousForest, BOPConfiguration.coniferousForestVillage); - addVillageBiome(Biomes.deadForest, BOPConfiguration.deadForestVillage); - addVillageBiome(Biomes.deadSwamp, BOPConfiguration.deadSwampVillage); - addVillageBiome(Biomes.deciduousForest, BOPConfiguration.deciduousForestVillage); - addVillageBiome(Biomes.drylands, BOPConfiguration.drylandsVillage); - addVillageBiome(Biomes.dunes, BOPConfiguration.dunesVillage); - addVillageBiome(Biomes.fen, BOPConfiguration.fenVillage); - addVillageBiome(Biomes.field, BOPConfiguration.fieldVillage); - addVillageBiome(Biomes.frostForest, BOPConfiguration.frostForestVillage); - addVillageBiome(Biomes.glacier, BOPConfiguration.glacierVillage); - addVillageBiome(Biomes.grassland, BOPConfiguration.grasslandVillage); - addVillageBiome(Biomes.grove, BOPConfiguration.groveVillage); - addVillageBiome(Biomes.heathland, BOPConfiguration.heathlandVillage); - addVillageBiome(Biomes.highland, BOPConfiguration.highlandVillage); - addVillageBiome(Biomes.iceSheet, BOPConfiguration.iceSheetVillage); - addVillageBiome(Biomes.jadeCliffs, BOPConfiguration.jadeCliffsVillage); - addVillageBiome(Biomes.lushDesert, BOPConfiguration.lushDesertVillage); - addVillageBiome(Biomes.lushSwamp, BOPConfiguration.lushSwampVillage); - addVillageBiome(Biomes.mangrove, BOPConfiguration.mangroveVillage); - addVillageBiome(Biomes.mapleWoods, BOPConfiguration.mapleWoodsVillage); - addVillageBiome(Biomes.marsh, BOPConfiguration.marshVillage); - addVillageBiome(Biomes.meadow, BOPConfiguration.meadowVillage); - addVillageBiome(Biomes.mesa, BOPConfiguration.mesaVillage); - addVillageBiome(Biomes.moor, BOPConfiguration.moorVillage); - addVillageBiome(Biomes.mountain, BOPConfiguration.mountainVillage); - addVillageBiome(Biomes.oasis, BOPConfiguration.oasisVillage); - addVillageBiome(Biomes.orchard, BOPConfiguration.orchardVillage); - addVillageBiome(Biomes.outback, BOPConfiguration.outbackVillage); - addVillageBiome(Biomes.pasture, BOPConfiguration.pastureVillage); - addVillageBiome(Biomes.prairie, BOPConfiguration.prairieVillage); - addVillageBiome(Biomes.quagmire, BOPConfiguration.quagmireVillage); - addVillageBiome(Biomes.rainforest, BOPConfiguration.rainforestVillage); - addVillageBiome(Biomes.redwoodForest, BOPConfiguration.redwoodForestVillage); - addVillageBiome(Biomes.savanna, BOPConfiguration.savannaVillage); - addVillageBiome(Biomes.scrubland, BOPConfiguration.scrublandVillage); - addVillageBiome(Biomes.seasonalForest, BOPConfiguration.seasonalForestVillage); - addVillageBiome(Biomes.shield, BOPConfiguration.shieldVillage); - addVillageBiome(Biomes.shrubland, BOPConfiguration.shrublandVillage); - addVillageBiome(Biomes.snowyWoods, BOPConfiguration.snowyWoodsVillage); - addVillageBiome(Biomes.spruceWoods, BOPConfiguration.spruceWoodsVillage); - addVillageBiome(Biomes.swampwoods, BOPConfiguration.swampwoodsVillage); - addVillageBiome(Biomes.temperateRainforest, BOPConfiguration.temperateRainforestVillage); - addVillageBiome(Biomes.thicket, BOPConfiguration.thicketVillage); - addVillageBiome(Biomes.tropicalRainforest, BOPConfiguration.tropicalRainforestVillage); - addVillageBiome(Biomes.tropics, BOPConfiguration.tropicsVillage); - addVillageBiome(Biomes.tundra, BOPConfiguration.tundraVillage); - addVillageBiome(Biomes.volcano, BOPConfiguration.volcanoVillage); - addVillageBiome(Biomes.wetland, BOPConfiguration.wetlandVillage); - addVillageBiome(Biomes.woodland, BOPConfiguration.woodlandVillage); - addVillageBiome(Biomes.plainsNew, BOPConfiguration.plainsVillage); - addVillageBiome(Biomes.desertNew, BOPConfiguration.desertVillage); - addVillageBiome(Biomes.forestNew, BOPConfiguration.forestVillage); - addVillageBiome(Biomes.extremeHillsNew, BOPConfiguration.extremeHillsVillage); - addVillageBiome(Biomes.taigaNew, BOPConfiguration.taigaVillage); - addVillageBiome(Biomes.swamplandNew, BOPConfiguration.swamplandVillage); - addVillageBiome(Biomes.jungleNew, BOPConfiguration.jungleVillage); - } - - private static void addStrongholdBiomes() - { - addStrongholdBiome(Biomes.alps); - addStrongholdBiome(Biomes.arctic); - addStrongholdBiome(Biomes.badlands); - addStrongholdBiome(Biomes.bambooForest); - addStrongholdBiome(Biomes.bayou); - addStrongholdBiome(Biomes.birchForest); - addStrongholdBiome(Biomes.bog); - addStrongholdBiome(Biomes.borealForest); - addStrongholdBiome(Biomes.canyon); - addStrongholdBiome(Biomes.chaparral); - addStrongholdBiome(Biomes.cherryBlossomGrove); - addStrongholdBiome(Biomes.coniferousForest); - addStrongholdBiome(Biomes.crag); - addStrongholdBiome(Biomes.deadForest); - addStrongholdBiome(Biomes.deadSwamp); - addStrongholdBiome(Biomes.deadlands); - addStrongholdBiome(Biomes.deciduousForest); - addStrongholdBiome(Biomes.drylands); - addStrongholdBiome(Biomes.dunes); - addStrongholdBiome(Biomes.fen); - addStrongholdBiome(Biomes.field); - addStrongholdBiome(Biomes.frostForest); - addStrongholdBiome(Biomes.fungiForest); - addStrongholdBiome(Biomes.garden); - addStrongholdBiome(Biomes.glacier); - addStrongholdBiome(Biomes.grassland); - addStrongholdBiome(Biomes.grove); - addStrongholdBiome(Biomes.heathland); - addStrongholdBiome(Biomes.highland); - addStrongholdBiome(Biomes.iceSheet); - addStrongholdBiome(Biomes.icyHills); - addStrongholdBiome(Biomes.jadeCliffs); - addStrongholdBiome(Biomes.lushDesert); - addStrongholdBiome(Biomes.lushSwamp); - addStrongholdBiome(Biomes.mangrove); - addStrongholdBiome(Biomes.mapleWoods); - addStrongholdBiome(Biomes.marsh); - addStrongholdBiome(Biomes.meadow); - addStrongholdBiome(Biomes.mesa); - addStrongholdBiome(Biomes.moor); - addStrongholdBiome(Biomes.mountain); - addStrongholdBiome(Biomes.mysticGrove); - addStrongholdBiome(Biomes.oasis); - addStrongholdBiome(Biomes.ominousWoods); - addStrongholdBiome(Biomes.orchard); - addStrongholdBiome(Biomes.outback); - addStrongholdBiome(Biomes.pasture); - addStrongholdBiome(Biomes.prairie); - addStrongholdBiome(Biomes.quagmire); - addStrongholdBiome(Biomes.rainforest); - addStrongholdBiome(Biomes.redwoodForest); - addStrongholdBiome(Biomes.sacredSprings); - addStrongholdBiome(Biomes.savanna); - addStrongholdBiome(Biomes.scrubland); - addStrongholdBiome(Biomes.seasonalForest); - addStrongholdBiome(Biomes.shield); - addStrongholdBiome(Biomes.shrubland); - addStrongholdBiome(Biomes.snowyWoods); - addStrongholdBiome(Biomes.spruceWoods); - addStrongholdBiome(Biomes.steppe); - addStrongholdBiome(Biomes.swampwoods); - addStrongholdBiome(Biomes.temperateRainforest); - addStrongholdBiome(Biomes.thicket); - addStrongholdBiome(Biomes.tropicalRainforest); - addStrongholdBiome(Biomes.tropics); - addStrongholdBiome(Biomes.tundra); - addStrongholdBiome(Biomes.volcano); - addStrongholdBiome(Biomes.wasteland); - addStrongholdBiome(Biomes.wetland); - addStrongholdBiome(Biomes.woodland); - addStrongholdBiome(Biomes.plainsNew); - addStrongholdBiome(Biomes.desertNew); - addStrongholdBiome(Biomes.forestNew); - addStrongholdBiome(Biomes.extremeHillsNew); - addStrongholdBiome(Biomes.taigaNew); - addStrongholdBiome(Biomes.swamplandNew); - addStrongholdBiome(Biomes.jungleNew); - } - - private static void registerBiomes() - { - if (BOPConfiguration.addToDefault) - { - if (BOPConfiguration.alpsGen) - registerBiome(Biomes.alps); - - if (BOPConfiguration.arcticGen) - registerBiome(Biomes.arctic); - - if (BOPConfiguration.badlandsGen) - registerBiome(Biomes.badlands); - - if (BOPConfiguration.bambooForestGen) - registerBiome(Biomes.bambooForest); - - if (BOPConfiguration.bayouGen) - registerBiome(Biomes.bayou); - - if (BOPConfiguration.birchForestGen) - registerBiome(Biomes.birchForest); - - if (BOPConfiguration.bogGen) - registerBiome(Biomes.bog); - - if (BOPConfiguration.borealForestGen) - registerBiome(Biomes.borealForest); - - if (BOPConfiguration.canyonGen) - registerBiome(Biomes.canyon); - - if (BOPConfiguration.chaparralGen) - registerBiome(Biomes.chaparral); - - if (BOPConfiguration.cherryBlossomGroveGen) - registerBiome(Biomes.cherryBlossomGrove); - - if (BOPConfiguration.coniferousForestGen) - registerBiome(Biomes.coniferousForest); - - if (BOPConfiguration.cragGen) - registerBiome(Biomes.crag); - - if (BOPConfiguration.deadForestGen) - registerBiome(Biomes.deadForest); - - if (BOPConfiguration.deadSwampGen) - registerBiome(Biomes.deadSwamp); - - if (BOPConfiguration.deadlandsGen) - registerBiome(Biomes.deadlands); - - if (BOPConfiguration.deciduousForestGen) - registerBiome(Biomes.deciduousForest); - - if (BOPConfiguration.drylandsGen) - registerBiome(Biomes.drylands); - - if (BOPConfiguration.dunesGen) - registerBiome(Biomes.dunes); - - if (BOPConfiguration.fenGen) - registerBiome(Biomes.fen); - - if (BOPConfiguration.fieldGen) - registerBiome(Biomes.field); - - if (BOPConfiguration.frostForestGen) - registerBiome(Biomes.frostForest); - - if (BOPConfiguration.fungiForestGen) - registerBiome(Biomes.fungiForest); - - if (BOPConfiguration.gardenGen) - registerBiome(Biomes.garden); - - if (BOPConfiguration.glacierGen) - registerBiome(Biomes.glacier); - - if (BOPConfiguration.grasslandGen) - registerBiome(Biomes.grassland); - - if (BOPConfiguration.groveGen) - registerBiome(Biomes.grove); - - if (BOPConfiguration.heathlandGen) - registerBiome(Biomes.heathland); - - if (BOPConfiguration.highlandGen) - registerBiome(Biomes.highland); - - if (BOPConfiguration.iceSheetGen) - registerBiome(Biomes.iceSheet); - - if (BOPConfiguration.icyHillsGen) - registerBiome(Biomes.icyHills); - - if (BOPConfiguration.jadeCliffsGen) - registerBiome(Biomes.jadeCliffs); - - if (BOPConfiguration.lushDesertGen) - registerBiome(Biomes.lushDesert); - - if (BOPConfiguration.lushSwampGen) - registerBiome(Biomes.lushSwamp); - - if (BOPConfiguration.mangroveGen) - registerBiome(Biomes.mangrove); - - if (BOPConfiguration.mapleWoodsGen) - registerBiome(Biomes.mapleWoods); - - if (BOPConfiguration.marshGen) - registerBiome(Biomes.marsh); - - if (BOPConfiguration.meadowGen) - registerBiome(Biomes.meadow); - - if (BOPConfiguration.mesaGen) - registerBiome(Biomes.mesa); - - if (BOPConfiguration.moorGen) - registerBiome(Biomes.moor); - - if (BOPConfiguration.mountainGen) - registerBiome(Biomes.mountain); - -// if (BOPConfiguration.mushroomIslandGen) -// GameRegistry.addBiome(BiomeGenBase.mushroomIsland); - - if (BOPConfiguration.mysticGroveGen) - registerBiome(Biomes.mysticGrove); - - if (BOPConfiguration.oasisGen) - registerBiome(Biomes.oasis); - - if (BOPConfiguration.ominousWoodsGen) - registerBiome(Biomes.ominousWoods); - - if (BOPConfiguration.orchardGen) - registerBiome(Biomes.orchard); - - if (BOPConfiguration.originValleyGen) - registerBiome(Biomes.originValley); - - if (BOPConfiguration.outbackGen) - registerBiome(Biomes.outback); - - if (BOPConfiguration.pastureGen) - registerBiome(Biomes.pasture); - - if (BOPConfiguration.prairieGen) - registerBiome(Biomes.prairie); - - if (BOPConfiguration.quagmireGen) - registerBiome(Biomes.quagmire); - - if (BOPConfiguration.rainforestGen) - registerBiome(Biomes.rainforest); - - if (BOPConfiguration.redwoodForestGen) - registerBiome(Biomes.redwoodForest); - - if (BOPConfiguration.sacredSpringsGen) - registerBiome(Biomes.sacredSprings); - - if (BOPConfiguration.savannaGen) - registerBiome(Biomes.savanna); - - if (BOPConfiguration.scrublandGen) - registerBiome(Biomes.scrubland); - - if (BOPConfiguration.seasonalForestGen) - registerBiome(Biomes.seasonalForest); - - if (BOPConfiguration.shieldGen) - registerBiome(Biomes.shield); - - if (BOPConfiguration.shrublandGen) - registerBiome(Biomes.shrubland); - - if (BOPConfiguration.snowyWoodsGen) - registerBiome(Biomes.snowyWoods); - - if (BOPConfiguration.spruceWoodsGen) - registerBiome(Biomes.spruceWoods); - - if (BOPConfiguration.steppeGen) - registerBiome(Biomes.steppe); - - if (BOPConfiguration.swampwoodsGen) - registerBiome(Biomes.swampwoods); - - if (BOPConfiguration.temperateRainforestGen) - registerBiome(Biomes.temperateRainforest); - - if (BOPConfiguration.thicketGen) - registerBiome(Biomes.thicket); - - if (BOPConfiguration.tropicalRainforestGen) - registerBiome(Biomes.tropicalRainforest); - - if (BOPConfiguration.tropicsGen) - registerBiome(Biomes.tropics); - - if (BOPConfiguration.tundraGen) - registerBiome(Biomes.tundra); - - if (BOPConfiguration.volcanoGen) - registerBiome(Biomes.volcano); - - if (BOPConfiguration.wastelandGen) - registerBiome(Biomes.wasteland); - - if (BOPConfiguration.wetlandGen) - registerBiome(Biomes.wetland); - - if (BOPConfiguration.woodlandGen) - registerBiome(Biomes.woodland); - - // Vanilla biomes generation - if (BOPConfiguration.plainsGen) - { - if (BOPConfiguration.vanillaEnhanced) - { - registerBiome(Biomes.plainsNew); - GameRegistry.removeBiome(BiomeGenBase.plains); - } - } - else - GameRegistry.removeBiome(BiomeGenBase.plains); - - if (BOPConfiguration.desertGen) - { - if (BOPConfiguration.vanillaEnhanced) - { - registerBiome(Biomes.desertNew); - GameRegistry.removeBiome(BiomeGenBase.desert); - } - } - else - GameRegistry.removeBiome(BiomeGenBase.desert); - - if (BOPConfiguration.extremeHillsGen) - { - if (BOPConfiguration.vanillaEnhanced) - { - registerBiome(Biomes.extremeHillsNew); - GameRegistry.removeBiome(BiomeGenBase.extremeHills); - } - } - else - GameRegistry.removeBiome(BiomeGenBase.extremeHills); - - if (BOPConfiguration.forestGen) - { - if (BOPConfiguration.vanillaEnhanced) - { - registerBiome(Biomes.forestNew); - GameRegistry.removeBiome(BiomeGenBase.forest); - } - } - else - GameRegistry.removeBiome(BiomeGenBase.forest); - - if (BOPConfiguration.taigaGen) - { - if (BOPConfiguration.vanillaEnhanced) - { - registerBiome(Biomes.taigaNew); - GameRegistry.removeBiome(BiomeGenBase.taiga); - } - } - else - GameRegistry.removeBiome(BiomeGenBase.taiga); - - if (BOPConfiguration.swamplandGen) - { - if (BOPConfiguration.vanillaEnhanced) - { - registerBiome(Biomes.swamplandNew); - GameRegistry.removeBiome(BiomeGenBase.swampland); - } - } - else - GameRegistry.removeBiome(BiomeGenBase.swampland); - - if (BOPConfiguration.jungleGen) - { - if (BOPConfiguration.vanillaEnhanced) - { - registerBiome(Biomes.jungleNew); - GameRegistry.removeBiome(BiomeGenBase.jungle); - } - } - else - GameRegistry.removeBiome(BiomeGenBase.jungle); - } - } - - private static void addBiomes() - { - if (BOPConfiguration.alpsGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.alps); - - if (BOPConfiguration.arcticGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.arctic); - - if (BOPConfiguration.badlandsGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.badlands); - - if (BOPConfiguration.bambooForestGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.bambooForest); - - if (BOPConfiguration.bayouGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.bayou); - - if (BOPConfiguration.birchForestGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.birchForest); - - if (BOPConfiguration.bogGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.bog); - - if (BOPConfiguration.borealForestGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.borealForest); - - if (BOPConfiguration.canyonGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.canyon); - - if (BOPConfiguration.chaparralGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.chaparral); - - if (BOPConfiguration.cherryBlossomGroveGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.cherryBlossomGrove); - - if (BOPConfiguration.coniferousForestGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.coniferousForest); - - if (BOPConfiguration.cragGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.crag); - - if (BOPConfiguration.deadForestGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.deadForest); - - if (BOPConfiguration.deadSwampGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.deadSwamp); - - if (BOPConfiguration.deadlandsGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.deadlands); - - if (BOPConfiguration.deciduousForestGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.deciduousForest); - - if (BOPConfiguration.drylandsGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.drylands); - - if (BOPConfiguration.dunesGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.dunes); - - if (BOPConfiguration.fenGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.fen); - - if (BOPConfiguration.fieldGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.field); - - if (BOPConfiguration.frostForestGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.frostForest); - - if (BOPConfiguration.fungiForestGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.fungiForest); - - if (BOPConfiguration.gardenGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.garden); - - if (BOPConfiguration.glacierGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.glacier); - - if (BOPConfiguration.grasslandGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.grassland); - - if (BOPConfiguration.groveGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.grove); - - if (BOPConfiguration.heathlandGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.heathland); - - if (BOPConfiguration.highlandGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.highland); - - if (BOPConfiguration.iceSheetGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.iceSheet); - - if (BOPConfiguration.icyHillsGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.icyHills); - - if (BOPConfiguration.jadeCliffsGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.jadeCliffs); - - if (BOPConfiguration.lushDesertGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.lushDesert); - - if (BOPConfiguration.lushSwampGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.lushSwamp); - - if (BOPConfiguration.mangroveGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.mangrove); - - if (BOPConfiguration.mapleWoodsGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.mapleWoods); - - if (BOPConfiguration.marshGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.marsh); - - if (BOPConfiguration.meadowGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.meadow); - - if (BOPConfiguration.mesaGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.mesa); - - if (BOPConfiguration.moorGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.moor); - - if (BOPConfiguration.mountainGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.mountain); - - if (BOPConfiguration.mysticGroveGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.mysticGrove); - - if (BOPConfiguration.oasisGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.oasis); - - if (BOPConfiguration.ominousWoodsGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.ominousWoods); - - if (BOPConfiguration.orchardGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.orchard); - - if (BOPConfiguration.originValleyGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.originValley); - - if (BOPConfiguration.outbackGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.outback); - - if (BOPConfiguration.pastureGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.pasture); - - if (BOPConfiguration.prairieGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.prairie); - - if (BOPConfiguration.quagmireGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.quagmire); - - if (BOPConfiguration.rainforestGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.rainforest); - - if (BOPConfiguration.redwoodForestGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.redwoodForest); - - if (BOPConfiguration.sacredSpringsGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.sacredSprings); - - if (BOPConfiguration.savannaGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.savanna); - - if (BOPConfiguration.scrublandGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.scrubland); - - if (BOPConfiguration.seasonalForestGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.seasonalForest); - - if (BOPConfiguration.shieldGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.shield); - - if (BOPConfiguration.shrublandGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.shrubland); - - if (BOPConfiguration.snowyWoodsGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.snowyWoods); - - if (BOPConfiguration.spruceWoodsGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.spruceWoods); - - if (BOPConfiguration.steppeGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.steppe); - - if (BOPConfiguration.swampwoodsGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.swampwoods); - - if (BOPConfiguration.temperateRainforestGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.temperateRainforest); - - if (BOPConfiguration.thicketGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.thicket); - - if (BOPConfiguration.tropicalRainforestGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.tropicalRainforest); - - if (BOPConfiguration.tropicsGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.tropics); - - if (BOPConfiguration.tundraGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.tundra); - - if (BOPConfiguration.volcanoGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.volcano); - - if (BOPConfiguration.wastelandGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.wasteland); - - if (BOPConfiguration.wetlandGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.wetland); - - if (BOPConfiguration.woodlandGen) - addBiomeToWorldTypes(getWorldTypes(), Biomes.woodland); - - // Vanilla biomes generation - if (BOPConfiguration.plainsGen) - { - if (BOPConfiguration.vanillaEnhanced) - { - addBiomeToWorldTypes(getWorldTypes(), Biomes.plainsNew); - removeBiomeFromWorldTypes(getWorldTypes(), BiomeGenBase.plains); - } - } - else - removeBiomeFromWorldTypes(getWorldTypes(), BiomeGenBase.plains); - - if (BOPConfiguration.desertGen) - { - if (BOPConfiguration.vanillaEnhanced) - { - addBiomeToWorldTypes(getWorldTypes(), Biomes.desertNew); - removeBiomeFromWorldTypes(getWorldTypes(), BiomeGenBase.desert); - } - } - else - removeBiomeFromWorldTypes(getWorldTypes(), BiomeGenBase.desert); - - if (BOPConfiguration.extremeHillsGen) - { - if (BOPConfiguration.vanillaEnhanced) - { - addBiomeToWorldTypes(getWorldTypes(), Biomes.extremeHillsNew); - removeBiomeFromWorldTypes(getWorldTypes(), BiomeGenBase.extremeHills); - } - } - else - removeBiomeFromWorldTypes(getWorldTypes(), BiomeGenBase.extremeHills); - - if (BOPConfiguration.forestGen) - { - if (BOPConfiguration.vanillaEnhanced) - { - addBiomeToWorldTypes(getWorldTypes(), Biomes.forestNew); - removeBiomeFromWorldTypes(getWorldTypes(), BiomeGenBase.forest); - } - } - else - removeBiomeFromWorldTypes(getWorldTypes(), BiomeGenBase.forest); - - if (BOPConfiguration.taigaGen) - { - if (BOPConfiguration.vanillaEnhanced) - { - addBiomeToWorldTypes(getWorldTypes(), Biomes.taigaNew); - removeBiomeFromWorldTypes(getWorldTypes(), BiomeGenBase.taiga); - } - } - else - removeBiomeFromWorldTypes(getWorldTypes(), BiomeGenBase.taiga); - - if (BOPConfiguration.swamplandGen) - { - if (BOPConfiguration.vanillaEnhanced) - { - addBiomeToWorldTypes(getWorldTypes(), Biomes.swamplandNew); - removeBiomeFromWorldTypes(getWorldTypes(), BiomeGenBase.swampland); - } - } - else - removeBiomeFromWorldTypes(getWorldTypes(), BiomeGenBase.swampland); - - if (BOPConfiguration.jungleGen) - { - if (BOPConfiguration.vanillaEnhanced) - { - addBiomeToWorldTypes(getWorldTypes(), Biomes.jungleNew); - removeBiomeFromWorldTypes(getWorldTypes(), BiomeGenBase.jungle); - } - } - else - removeBiomeFromWorldTypes(getWorldTypes(), BiomeGenBase.jungle); - } - - public static Set getWorldTypes() { - if (worldTypes.isEmpty()) { - if (BOPConfiguration.addToDefault) - { - worldTypes.add(WorldType.DEFAULT); - worldTypes.add(WorldType.LARGE_BIOMES); - } - worldTypes.add(WTBiomesOP); - } - return ImmutableSet.copyOf(worldTypes); - } - - private static void addBiomeToWorldTypes(Collection worldTypes, Optional biome) - { - for (final WorldType worldType : worldTypes) - if (biome.isPresent()) - worldType.addNewBiome(biome.get()); - } - - private static void removeBiomeFromWorldTypes(Collection worldTypes, BiomeGenBase biome) - { - for (final WorldType worldType : worldTypes) - worldType.removeBiome(biome); - } - - private static void addSpawnBiome(Optional biome) - { - if (biome.isPresent()) - BiomeManager.addSpawnBiome(biome.get()); - } - - private static void addVillageBiome(Optional biome, boolean flag) - { - if (biome.isPresent()) - BiomeManager.addVillageBiome(biome.get(), flag); - } - - private static void addStrongholdBiome(Optional biome) - { - if (biome.isPresent()) - BiomeManager.addStrongholdBiome(biome.get()); - } - - private static void registerBiome(Optional biome) - { - if (biome.isPresent()) - GameRegistry.addBiome(biome.get()); - } -} diff --git a/src/minecraft/biomesoplenty/configuration/BOPBlocks.java b/src/minecraft/biomesoplenty/configuration/BOPBlocks.java deleted file mode 100644 index ad695e7b9..000000000 --- a/src/minecraft/biomesoplenty/configuration/BOPBlocks.java +++ /dev/null @@ -1,413 +0,0 @@ -package biomesoplenty.configuration; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockHalfSlab; -import net.minecraft.block.material.Material; -import net.minecraft.item.ItemStack; -import net.minecraftforge.common.MinecraftForge; -import biomesoplenty.api.Blocks; -import biomesoplenty.blocks.BlockAsh; -import biomesoplenty.blocks.BlockBOPAmethyst; -import biomesoplenty.blocks.BlockBOPAppleLeaves; -import biomesoplenty.blocks.BlockBOPColorizedLeaves; -import biomesoplenty.blocks.BlockBOPColorizedSapling; -import biomesoplenty.blocks.BlockBOPFlower; -import biomesoplenty.blocks.BlockBOPFoliage; -import biomesoplenty.blocks.BlockBOPGeneric; -import biomesoplenty.blocks.BlockBOPGeneric.BlockType; -import biomesoplenty.blocks.BlockBOPGrass; -import biomesoplenty.blocks.BlockBOPLeaves; -import biomesoplenty.blocks.BlockBOPLeaves.LeafCategory; -import biomesoplenty.blocks.BlockBOPLog; -import biomesoplenty.blocks.BlockBOPLog.LogCategory; -import biomesoplenty.blocks.BlockBOPPetals; -import biomesoplenty.blocks.BlockBOPPlank; -import biomesoplenty.blocks.BlockBOPPlant; -import biomesoplenty.blocks.BlockBOPRedRock; -import biomesoplenty.blocks.BlockBOPSapling; -import biomesoplenty.blocks.BlockBOPSlab; -import biomesoplenty.blocks.BlockBOPSlab.SlabCategory; -import biomesoplenty.blocks.BlockBOPStairs; -import biomesoplenty.blocks.BlockBOPStairs.Category; -import biomesoplenty.blocks.BlockBamboo; -import biomesoplenty.blocks.BlockMoss; -import biomesoplenty.blocks.BlockMud; -import biomesoplenty.blocks.BlockOriginGrass; -import biomesoplenty.blocks.BlockPromisedPortal; -import biomesoplenty.blocks.BlockTreeMoss; -import biomesoplenty.blocks.BlockWillow; -import biomesoplenty.items.ItemBOPAmethyst; -import biomesoplenty.items.ItemBOPAppleLeaves; -import biomesoplenty.items.ItemBOPBamboo; -import biomesoplenty.items.ItemBOPColorizedLeaves; -import biomesoplenty.items.ItemBOPColorizedSapling; -import biomesoplenty.items.ItemBOPFlower; -import biomesoplenty.items.ItemBOPFoliage; -import biomesoplenty.items.ItemBOPGrass; -import biomesoplenty.items.ItemBOPLeaves; -import biomesoplenty.items.ItemBOPLog; -import biomesoplenty.items.ItemBOPMoss; -import biomesoplenty.items.ItemBOPMud; -import biomesoplenty.items.ItemBOPPetals; -import biomesoplenty.items.ItemBOPPlank; -import biomesoplenty.items.ItemBOPPlant; -import biomesoplenty.items.ItemBOPRedRock; -import biomesoplenty.items.ItemBOPSapling; -import biomesoplenty.items.ItemBOPSlab; -import biomesoplenty.items.ItemBOPWillow; - -import com.google.common.base.Optional; - -import cpw.mods.fml.common.registry.GameRegistry; -import cpw.mods.fml.common.registry.LanguageRegistry; - -public class BOPBlocks { - public static void init() - { - initializeBlocks(); - registerBlocks(); - - //Shears VS Blocks - Blocks.shearBlockIds.put(Blocks.leaves1.get().blockID, 15.0F); - Blocks.shearBlockIds.put(Blocks.leaves2.get().blockID, 15.0F); - Blocks.shearBlockIds.put(Blocks.leavesColorized.get().blockID, 15.0F); - Blocks.shearBlockIds.put(Blocks.leavesFruit.get().blockID, 15.0F); - - MinecraftForge.setBlockHarvestLevel(Blocks.holyGrass.get(), 1, "shovel", 0); - MinecraftForge.setBlockHarvestLevel(Blocks.mud.get(), "shovel", 0); - MinecraftForge.setBlockHarvestLevel(Blocks.ash.get(), "shovel", 0); - MinecraftForge.setBlockHarvestLevel(Blocks.originGrass.get(), "shovel", 0); - MinecraftForge.setBlockHarvestLevel(Blocks.hardSand.get(), "shovel", 0); - MinecraftForge.setBlockHarvestLevel(Blocks.holyGrass.get(), 0, "pickaxe", 0); -// MinecraftForge.setBlockHarvestLevel(Blocks.quicksand.get(), "shovel", 0); - - MinecraftForge.setBlockHarvestLevel(Blocks.driedDirt.get(), "pickaxe", 0); - MinecraftForge.setBlockHarvestLevel(Blocks.amethystOre.get(), "pickaxe", 3); - - addGrassPlants(); - - registerNames(); - } - - private static void initializeBlocks() - { - // Block declaration - Blocks.mud = Optional.of((new BlockMud(BOPConfiguration.mudID)).setHardness(0.6F).setStepSound(Block.soundSandFootstep).setUnlocalizedName("mud")); - Blocks.driedDirt = Optional.of(new BlockBOPGeneric(BOPConfiguration.driedDirtID, Material.rock, BlockType.DRIED_DIRT)); - Blocks.redRock = Optional.of((new BlockBOPRedRock(BOPConfiguration.redRockID)).setUnlocalizedName("redRocks")); - Blocks.ash = Optional.of((new BlockAsh(BOPConfiguration.ashID)).setHardness(0.4F).setStepSound(Block.soundSandFootstep).setUnlocalizedName("ash")); - Blocks.plants = Optional.of((new BlockBOPPlant(BOPConfiguration.plantsID)).setUnlocalizedName("plants")); - Blocks.flowers = Optional.of((new BlockBOPFlower(BOPConfiguration.flowersID)).setHardness(0.0F).setStepSound(Block.soundGrassFootstep).setUnlocalizedName("flowers")); - Blocks.willow = Optional.of((new BlockWillow(BOPConfiguration.willowID)).setHardness(0.2F).setStepSound(Block.soundGrassFootstep).setUnlocalizedName("willow")); - Blocks.leaves1 = Optional.of((new BlockBOPLeaves(BOPConfiguration.leaves1ID, LeafCategory.CAT1)).setUnlocalizedName("leaves1")); - Blocks.leaves2 = Optional.of((new BlockBOPLeaves(BOPConfiguration.leaves2ID, LeafCategory.CAT2)).setUnlocalizedName("leaves2")); - Blocks.foliage = Optional.of((new BlockBOPFoliage(BOPConfiguration.foliageID)).setUnlocalizedName("foliage")); - Blocks.ashStone = Optional.of(new BlockBOPGeneric(BOPConfiguration.ashStoneID, Material.rock, BlockType.ASH_STONE)); - Blocks.hardIce = Optional.of(new BlockBOPGeneric(BOPConfiguration.hardIceID, Material.rock, BlockType.HARD_ICE)); - Blocks.leavesFruit = Optional.of((new BlockBOPAppleLeaves(BOPConfiguration.leavesFruitID)).setUnlocalizedName("leavesFruit")); - Blocks.bamboo = Optional.of(new BlockBamboo(BOPConfiguration.bambooID).setHardness(0.0F).setStepSound(Block.soundGrassFootstep).setUnlocalizedName("bamboo")); - Blocks.mudBrick = Optional.of(new BlockBOPGeneric(BOPConfiguration.mudBrickBlockID, Material.rock, BlockType.MUD_BRICK)); - Blocks.mudBricksStairs = Optional.of((new BlockBOPStairs(BOPConfiguration.mudBrickStairsID, Blocks.redRock.get(), Category.MUD_BRICKS)).setUnlocalizedName("mudBricksStairs")); - Blocks.stoneDoubleSlab = Optional.of((BlockHalfSlab)(new BlockBOPSlab(BOPConfiguration.stoneDoubleSlabID, true, Material.rock, SlabCategory.STONE)).setUnlocalizedName("stoneDoubleSlab")); - Blocks.stoneSingleSlab = Optional.of((BlockHalfSlab)(new BlockBOPSlab(BOPConfiguration.stoneSingleSlabID, false, Material.rock, SlabCategory.STONE)).setUnlocalizedName("stoneSingleSlab")); - Blocks.originGrass = Optional.of((new BlockOriginGrass(BOPConfiguration.originGrassID)).setHardness(0.6F).setStepSound(Block.soundGrassFootstep).setUnlocalizedName("originGrass")); - Blocks.treeMoss = Optional.of((new BlockTreeMoss(BOPConfiguration.treeMossID)).setHardness(0.2F).setStepSound(Block.soundGrassFootstep).setUnlocalizedName("treeMoss")); - Blocks.logs1 = Optional.of((new BlockBOPLog(BOPConfiguration.logs1ID,LogCategory.CAT1)).setUnlocalizedName("wood1")); - Blocks.logs2 = Optional.of((new BlockBOPLog(BOPConfiguration.logs2ID,LogCategory.CAT2)).setUnlocalizedName("wood2")); - Blocks.logs3 = Optional.of((new BlockBOPLog(BOPConfiguration.logs3ID,LogCategory.CAT3)).setUnlocalizedName("wood3")); - Blocks.petals = Optional.of((new BlockBOPPetals(BOPConfiguration.petalsID)).setUnlocalizedName("petals")); - Blocks.saplings = Optional.of((new BlockBOPSapling(BOPConfiguration.saplingsID)).setUnlocalizedName("saplings")); - Blocks.colorizedSaplings = Optional.of((new BlockBOPColorizedSapling(BOPConfiguration.colourizedSaplingsID)).setUnlocalizedName("colorizedSaplings")); - Blocks.redCobbleStairs = Optional.of((new BlockBOPStairs(BOPConfiguration.redCobbleStairsID, Blocks.redRock.get(), Category.RED_COBBLE)).setUnlocalizedName("redCobbleStairs")); - Blocks.redBricksStairs = Optional.of((new BlockBOPStairs(BOPConfiguration.redBrickStairsID, Blocks.redRock.get(), Category.RED_BRICKS)).setUnlocalizedName("redBricksStairs")); - Blocks.hardSand = Optional.of(new BlockBOPGeneric(BOPConfiguration.hardSandID, Material.sand, BlockType.HARD_SAND)); - Blocks.hardDirt = Optional.of(new BlockBOPGeneric(BOPConfiguration.hardDirtID, Material.rock, BlockType.HARD_DIRT)); - Blocks.holyGrass = Optional.of(new BlockBOPGrass(BOPConfiguration.holyGrassID).setUnlocalizedName("holyGrass")); - Blocks.holyStone = Optional.of(new BlockBOPGeneric(BOPConfiguration.holyStoneID, Material.rock, BlockType.HOLY_STONE).setLightValue(0.25F)); - Blocks.promisedPortal = Optional.of(new BlockPromisedPortal(BOPConfiguration.promisedLandPortalID).setUnlocalizedName("promisedPortal").setBlockUnbreakable().setResistance(6000000.0F).setLightValue(1.0F)); -// Blocks.amethystOre = Optional.of(new BlockBOPGeneric(BOPConfiguration.amethystOreID, Material.rock, BlockType.AMETHYST_ORE)); -// Blocks.amethystBlock = Optional.of(new BlockBOPGeneric(BOPConfiguration.amethystBlockID, Material.iron, BlockType.AMETHYST_BLOCK)); - Blocks.amethystOre = Optional.of(new BlockBOPAmethyst(BOPConfiguration.amethystOreID, Material.rock).setUnlocalizedName("amethystOre")); -// Blocks.bambooThatching = Optional.of(new BlockBOPGeneric(BOPConfiguration.bambooThatchingID, Material.wood, BlockType.BAMBOO_THATCHING)); - Blocks.moss = Optional.of((new BlockMoss(BOPConfiguration.mossID)).setHardness(0.2F).setStepSound(Block.soundGrassFootstep).setUnlocalizedName("moss")); -// Blocks.smolderingGrass = Optional.of((BlockSmolderingGrass)(new BlockSmolderingGrass(BOPConfiguration.smolderingGrassID)).setHardness(0.6F).setLightValue(0.25F).setStepSound(Block.soundGrassFootstep).setUnlocalizedName("smolderingGrass")); - Blocks.cragRock = Optional.of(new BlockBOPGeneric(BOPConfiguration.cragRockID, Material.rock, BlockType.CRAG_ROCK)); -// Blocks.quicksand = Optional.of((new BlockQuicksand(BOPConfiguration.quicksandID)).setHardness(0.3F).setStepSound(Block.soundSandFootstep).setUnlocalizedName("quicksand")); -// Blocks.grass = Optional.of(new BlockBOPGrass(3000).setUnlocalizedName("holyGrass")); - - Blocks.planks = Optional.of((new BlockBOPPlank(BOPConfiguration.planksID)).setResistance(5.0F).setStepSound(Block.soundWoodFootstep).setUnlocalizedName("planks")); - - Blocks.woodenDoubleSlab1 = Optional.of((BlockHalfSlab)(new BlockBOPSlab(BOPConfiguration.woodenDoubleSlab1ID, true, Material.wood, SlabCategory.WOOD1)).setUnlocalizedName("woodenDoubleSlab1")); - Blocks.woodenSingleSlab1 = Optional.of((BlockHalfSlab)(new BlockBOPSlab(BOPConfiguration.woodenSingleSlab1ID, false, Material.wood, SlabCategory.WOOD1)).setUnlocalizedName("woodenSingleSlab1")); - Blocks.woodenDoubleSlab2 = Optional.of((BlockHalfSlab)(new BlockBOPSlab(BOPConfiguration.woodenDoubleSlab2ID, true, Material.wood, SlabCategory.WOOD2)).setUnlocalizedName("woodenDoubleSlab2")); - Blocks.woodenSingleSlab2 = Optional.of((BlockHalfSlab)(new BlockBOPSlab(BOPConfiguration.woodenSingleSlab2ID, false, Material.wood, SlabCategory.WOOD2)).setUnlocalizedName("woodenSingleSlab2")); - - Blocks.acaciaStairs = Optional.of((new BlockBOPStairs(BOPConfiguration.acaciaStairsID, Blocks.planks.get(), Category.ACACIA)).setUnlocalizedName("acaciaStairs")); - Blocks.cherryStairs = Optional.of((new BlockBOPStairs(BOPConfiguration.cherryStairsID, Blocks.planks.get(), Category.CHERRY)).setUnlocalizedName("cherryStairs")); - Blocks.darkStairs = Optional.of((new BlockBOPStairs(BOPConfiguration.darkStairsID, Blocks.planks.get(), Category.DARK)).setUnlocalizedName("darkStairs")); - Blocks.firStairs = Optional.of((new BlockBOPStairs(BOPConfiguration.firStairsID, Blocks.planks.get(), Category.FIR)).setUnlocalizedName("firStairs")); - Blocks.holyStairs = Optional.of((new BlockBOPStairs(BOPConfiguration.holyStairsID, Blocks.planks.get(), Category.HOLY)).setUnlocalizedName("holyStairs")); - Blocks.magicStairs = Optional.of((new BlockBOPStairs(BOPConfiguration.magicStairsID, Blocks.planks.get(), Category.MAGIC)).setUnlocalizedName("magicStairs")); - Blocks.mangroveStairs = Optional.of((new BlockBOPStairs(BOPConfiguration.mangroveStairsID, Blocks.planks.get(), Category.MANGROVE)).setUnlocalizedName("mangroveStairs")); - Blocks.palmStairs = Optional.of((new BlockBOPStairs(BOPConfiguration.palmStairsID, Blocks.planks.get(), Category.PALM)).setUnlocalizedName("palmStairs")); - Blocks.redwoodStairs = Optional.of((new BlockBOPStairs(BOPConfiguration.redwoodStairsID, Blocks.planks.get(), Category.REDWOOD)).setUnlocalizedName("redwoodStairs")); - Blocks.willowStairs = Optional.of((new BlockBOPStairs(BOPConfiguration.willowStairsID, Blocks.planks.get(), Category.WILLOW)).setUnlocalizedName("willowStairs")); - Blocks.leavesColorized = Optional.of((new BlockBOPColorizedLeaves(BOPConfiguration.colourizedLeavesID)).setUnlocalizedName("leavesColorized")); - } - - private static void registerBlocks() - { - // Add block registration - GameRegistry.registerBlock(Blocks.mud.get(), ItemBOPMud.class, "mud"); - GameRegistry.registerBlock(Blocks.driedDirt.get(), "driedDirt"); - GameRegistry.registerBlock(Blocks.redRock.get(), ItemBOPRedRock.class, "redRock"); - GameRegistry.registerBlock(Blocks.ash.get(), "ash"); - GameRegistry.registerBlock(Blocks.plants.get(), ItemBOPPlant.class, "plants"); - GameRegistry.registerBlock(Blocks.flowers.get(), ItemBOPFlower.class, "flowers"); - GameRegistry.registerBlock(Blocks.willow.get(), ItemBOPWillow.class, "willow"); - GameRegistry.registerBlock(Blocks.leaves1.get(), ItemBOPLeaves.class, "leaves1"); - GameRegistry.registerBlock(Blocks.leaves2.get(), ItemBOPLeaves.class, "leaves2"); - GameRegistry.registerBlock(Blocks.foliage.get(), ItemBOPFoliage.class, "foliage"); - GameRegistry.registerBlock(Blocks.ashStone.get(), "ashStone"); - GameRegistry.registerBlock(Blocks.hardIce.get(), "hardIce"); - GameRegistry.registerBlock(Blocks.leavesFruit.get(), ItemBOPAppleLeaves.class, "leavesFruit"); - GameRegistry.registerBlock(Blocks.bamboo.get(), ItemBOPBamboo.class, "bamboo"); - GameRegistry.registerBlock(Blocks.mudBrick.get(), "mudBrick"); - GameRegistry.registerBlock(Blocks.mudBricksStairs.get(), "mudBricksStairs"); - GameRegistry.registerBlock(Blocks.originGrass.get(), "originGrass"); - GameRegistry.registerBlock(Blocks.treeMoss.get(), "treeMoss"); - GameRegistry.registerBlock(Blocks.logs1.get(), ItemBOPLog.class, "wood1"); - GameRegistry.registerBlock(Blocks.logs2.get(), ItemBOPLog.class, "wood2"); - GameRegistry.registerBlock(Blocks.logs3.get(), ItemBOPLog.class, "wood3"); - GameRegistry.registerBlock(Blocks.petals.get(), ItemBOPPetals.class, "petals"); - GameRegistry.registerBlock(Blocks.saplings.get(), ItemBOPSapling.class, "saplings"); - GameRegistry.registerBlock(Blocks.colorizedSaplings.get(), ItemBOPColorizedSapling.class, "colorizedSaplings"); - GameRegistry.registerBlock(Blocks.redCobbleStairs.get(), "redCobbleStairs"); - GameRegistry.registerBlock(Blocks.redBricksStairs.get(), "redBricksStairs"); - GameRegistry.registerBlock(Blocks.hardSand.get(), "hardSand"); - GameRegistry.registerBlock(Blocks.hardDirt.get(), "hardDirt"); -// GameRegistry.registerBlock(Blocks.holyGrass.get(), "holyGrass"); - GameRegistry.registerBlock(Blocks.holyGrass.get(), ItemBOPGrass.class, "holyGrass"); - GameRegistry.registerBlock(Blocks.holyStone.get(), "holyStone"); - GameRegistry.registerBlock(Blocks.promisedPortal.get(), "promisedPortal"); - GameRegistry.registerBlock(Blocks.amethystOre.get(), ItemBOPAmethyst.class, "amethystOre"); -// GameRegistry.registerBlock(Blocks.amethystBlock.get(), "amethystBlock"); -// GameRegistry.registerBlock(Blocks.bambooThatching.get(), "bambooThatching"); - GameRegistry.registerBlock(Blocks.moss.get(), ItemBOPMoss.class, "moss"); -// GameRegistry.registerBlock(Blocks.smolderingGrass.get(), "smolderingGrass"); - GameRegistry.registerBlock(Blocks.cragRock.get(), "cragRock"); -// GameRegistry.registerBlock(Blocks.quicksand.get(), "quicksand"); -// GameRegistry.registerBlock(Blocks.amethyst.get(), ItemBOPAmethyst.class, "amethystOre1"); - - ItemBOPSlab.setSlabs(Blocks.stoneSingleSlab.get(), Blocks.stoneDoubleSlab.get()); - GameRegistry.registerBlock(Blocks.stoneDoubleSlab.get(), ItemBOPSlab.class, "stoneDoubleSlab"); - GameRegistry.registerBlock(Blocks.stoneSingleSlab.get(), ItemBOPSlab.class, "stoneSingleSlab"); - ItemBOPSlab.setSlabs(Blocks.woodenSingleSlab1.get(), Blocks.woodenDoubleSlab1.get()); - GameRegistry.registerBlock(Blocks.woodenDoubleSlab1.get(), ItemBOPSlab.class, "woodenDoubleSlab1"); - GameRegistry.registerBlock(Blocks.woodenSingleSlab1.get(), ItemBOPSlab.class, "woodenSingleSlab1"); - ItemBOPSlab.setSlabs(Blocks.woodenSingleSlab2.get(), Blocks.woodenDoubleSlab2.get()); - GameRegistry.registerBlock(Blocks.woodenDoubleSlab2.get(), ItemBOPSlab.class, "woodenDoubleSlab2"); - GameRegistry.registerBlock(Blocks.woodenSingleSlab2.get(), ItemBOPSlab.class, "woodenSingleSlab2"); - - GameRegistry.registerBlock(Blocks.planks.get(), ItemBOPPlank.class, "planks"); - - GameRegistry.registerBlock(Blocks.acaciaStairs.get(), "acaciaStairs"); - GameRegistry.registerBlock(Blocks.cherryStairs.get(), "cherryStairs"); - GameRegistry.registerBlock(Blocks.darkStairs.get(), "darkStairs"); - GameRegistry.registerBlock(Blocks.firStairs.get(), "firStairs"); - GameRegistry.registerBlock(Blocks.holyStairs.get(), "holyStairs"); - GameRegistry.registerBlock(Blocks.magicStairs.get(), "magicStairs"); - GameRegistry.registerBlock(Blocks.mangroveStairs.get(), "mangroveStairs"); - GameRegistry.registerBlock(Blocks.palmStairs.get(), "palmStairs"); - GameRegistry.registerBlock(Blocks.redwoodStairs.get(), "redwoodStairs"); - GameRegistry.registerBlock(Blocks.willowStairs.get(), "willowStairs"); - - GameRegistry.registerBlock(Blocks.leavesColorized.get(), ItemBOPColorizedLeaves.class, "leavesColorized"); - } - - private static void registerNames() - { - // Add block names - LanguageRegistry.addName(new ItemStack(Blocks.mud.get(), 1, 0), "Mud"); - LanguageRegistry.addName(Blocks.driedDirt.get(), "Dried Dirt"); - LanguageRegistry.addName(new ItemStack(Blocks.redRock.get(),1,0), "Red Rock"); - LanguageRegistry.addName(Blocks.ash.get(), "Ash Block"); - LanguageRegistry.addName(new ItemStack(Blocks.plants.get(),1,0), "Dead Grass"); - LanguageRegistry.addName(new ItemStack(Blocks.plants.get(),1,1), "Desert Grass"); - LanguageRegistry.addName(new ItemStack(Blocks.flowers.get(),1,9), "Anemone"); - LanguageRegistry.addName(new ItemStack(Blocks.flowers.get(),1,1), "Swampflower"); - LanguageRegistry.addName(new ItemStack(Blocks.flowers.get(),1,7), "Wildflower"); - LanguageRegistry.addName(new ItemStack(Blocks.flowers.get(),1,5), "Daisy"); - LanguageRegistry.addName(new ItemStack(Blocks.flowers.get(),1,0), "Clover"); - LanguageRegistry.addName(new ItemStack(Blocks.flowers.get(),1,3), "Glowflower"); - LanguageRegistry.addName(new ItemStack(Blocks.plants.get(),1,7), "Cattail"); - LanguageRegistry.addName(Blocks.willow.get(), "Willow"); - LanguageRegistry.addName(new ItemStack(Blocks.leaves1.get(),1,0), "Yellow Autumn Leaves"); - LanguageRegistry.addName(new ItemStack(Blocks.plants.get(),1,5), "Thorns"); - LanguageRegistry.addName(new ItemStack(Blocks.flowers.get(),1,10), "Toadstool"); - LanguageRegistry.addName(new ItemStack(Blocks.foliage.get(),1,3), "High Grass"); - LanguageRegistry.addName(Blocks.ashStone.get(), "Ash Stone"); - LanguageRegistry.addName(Blocks.hardIce.get(), "Hard Ice"); - LanguageRegistry.addName(new ItemStack(Blocks.leaves2.get(),1,2), "Maple Leaves"); - LanguageRegistry.addName(new ItemStack(Blocks.leaves1.get(),1,7), "Orange Autumn Leaves"); - LanguageRegistry.addName(new ItemStack(Blocks.leaves2.get(),1,1), "Pink Cherry Leaves"); - LanguageRegistry.addName(new ItemStack(Blocks.leaves1.get(),1,2), "Magic Leaves"); - LanguageRegistry.addName(new ItemStack(Blocks.leaves2.get(),1,3), "White Cherry Leaves"); - LanguageRegistry.addName(new ItemStack(Blocks.leaves1.get(),1,4), "Dying Leaves"); - LanguageRegistry.addName(new ItemStack(Blocks.foliage.get(),1,1), "Short Grass"); - LanguageRegistry.addName(Blocks.leavesFruit.get(), "Apple Leaves"); - LanguageRegistry.addName(new ItemStack(Blocks.foliage.get(),1,5), "Sprout"); - LanguageRegistry.addName(new ItemStack(Blocks.foliage.get(),1,4), "Bush"); - LanguageRegistry.addName(Blocks.bamboo.get(), "Bamboo"); - LanguageRegistry.addName(new ItemStack(Blocks.leaves1.get(),1,1), "Bamboo Leaves"); - LanguageRegistry.addName(Blocks.mudBrick.get(), "Mud Bricks"); - LanguageRegistry.addName(new ItemStack(Blocks.stoneDoubleSlab.get(),1,0), "Red Rock Cobblestone Slab"); - LanguageRegistry.addName(new ItemStack(Blocks.stoneDoubleSlab.get(),1,1), "Red Rock Bricks Slab"); - LanguageRegistry.addName(new ItemStack(Blocks.stoneDoubleSlab.get(),1,2), "Mud Bricks Slab"); - LanguageRegistry.addName(new ItemStack(Blocks.stoneSingleSlab.get(),1,0), "Red Rock Cobblestone Slab"); - LanguageRegistry.addName(new ItemStack(Blocks.stoneSingleSlab.get(),1,1), "Red Rock Bricks Slab"); - LanguageRegistry.addName(new ItemStack(Blocks.stoneSingleSlab.get(),1,2), "Mud Bricks Slab"); - LanguageRegistry.addName(Blocks.mudBricksStairs.get(), "Mud Bricks Stairs"); - LanguageRegistry.addName(Blocks.originGrass.get(), "Origin Grass"); - LanguageRegistry.addName(new ItemStack(Blocks.leaves2.get(),1,0), "Origin Leaves"); - LanguageRegistry.addName(new ItemStack(Blocks.flowers.get(),1,6), "Tulip"); - LanguageRegistry.addName(Blocks.treeMoss.get(), "Tree Moss"); - LanguageRegistry.addName(new ItemStack(Blocks.plants.get(),1,6), "Barley"); - LanguageRegistry.addName(new ItemStack(Blocks.logs3.get(),1,3), "Giant Flower Stem"); - LanguageRegistry.addName(new ItemStack(Blocks.petals.get(),1,0), "Giant Red Flower"); - LanguageRegistry.addName(new ItemStack(Blocks.petals.get(),1,1), "Giant Yellow Flower"); - LanguageRegistry.addName(new ItemStack(Blocks.flowers.get(),1,11), "Tiny Cactus"); - LanguageRegistry.addName(new ItemStack(Blocks.saplings.get(),1,6), "Fir Sapling"); - LanguageRegistry.addName(new ItemStack(Blocks.colorizedSaplings.get(),1,3), "Redwood Sapling"); - LanguageRegistry.addName(new ItemStack(Blocks.colorizedSaplings.get(),1,2), "Palm Sapling"); - LanguageRegistry.addName(new ItemStack(Blocks.saplings.get(),1,11), "Maple Sapling"); - LanguageRegistry.addName(new ItemStack(Blocks.saplings.get(),1,8), "Orange Autumn Sapling"); - LanguageRegistry.addName(new ItemStack(Blocks.saplings.get(),1,1), "Yellow Autumn Sapling"); - LanguageRegistry.addName(new ItemStack(Blocks.saplings.get(),1,5), "Dying Sapling"); - LanguageRegistry.addName(new ItemStack(Blocks.colorizedSaplings.get(),1,4), "Willow Sapling"); - LanguageRegistry.addName(new ItemStack(Blocks.saplings.get(),1,0), "Apple Sapling"); - LanguageRegistry.addName(new ItemStack(Blocks.saplings.get(),1,9), "Origin Sapling"); - LanguageRegistry.addName(new ItemStack(Blocks.saplings.get(),1,10), "Pink Cherry Sapling"); - LanguageRegistry.addName(new ItemStack(Blocks.saplings.get(),1,12), "White Cherry Sapling"); - LanguageRegistry.addName(new ItemStack(Blocks.saplings.get(),1,4), "Dark Sapling"); - LanguageRegistry.addName(new ItemStack(Blocks.saplings.get(),1,3), "Magic Sapling"); - LanguageRegistry.addName(new ItemStack(Blocks.flowers.get(),1,2), "Deathbloom"); - LanguageRegistry.addName(new ItemStack(Blocks.redRock.get(),1,1), "Red Rock Cobblestone"); - LanguageRegistry.addName(Blocks.redCobbleStairs.get(), "Red Rock Cobblestone Stairs"); - LanguageRegistry.addName(new ItemStack(Blocks.redRock.get(),1,2), "Red Rock Bricks"); - LanguageRegistry.addName(Blocks.redBricksStairs.get(), "Red Rock Bricks Stairs"); - LanguageRegistry.addName(new ItemStack(Blocks.flowers.get(),1,4), "Hydrangea"); - LanguageRegistry.addName(new ItemStack(Blocks.flowers.get(),1,8), "Violet"); - LanguageRegistry.addName(new ItemStack(Blocks.foliage.get(),1,2), "Medium Grass"); - LanguageRegistry.addName(new ItemStack(Blocks.plants.get(),1,3), "Dune Grass"); - LanguageRegistry.addName(new ItemStack(Blocks.plants.get(),1,2), "Desert Sprouts"); - LanguageRegistry.addName(new ItemStack(Blocks.colorizedSaplings.get(),1,1), "Mangrove Sapling"); - LanguageRegistry.addName(Blocks.hardSand.get(), "Hard Sand"); - LanguageRegistry.addName(new ItemStack(Blocks.colorizedSaplings.get(),1,0), "Acacia Sapling"); - LanguageRegistry.addName(Blocks.hardDirt.get(), "Hard Dirt"); -// LanguageRegistry.addName(Blocks.holyGrass.get(), "Holy Grass"); - LanguageRegistry.addName(new ItemStack(Blocks.holyGrass.get(), 1, 0), "Holy Grass"); - LanguageRegistry.addName(new ItemStack(Blocks.holyGrass.get(), 1, 1), "Smoldering Grass"); - LanguageRegistry.addName(Blocks.holyStone.get(), "Holy Stone"); - LanguageRegistry.addName(new ItemStack(Blocks.plants.get(),1,4), "Holy Tall Grass"); - LanguageRegistry.addName(Blocks.promisedPortal.get(), "Promised Land Portal"); - LanguageRegistry.addName(new ItemStack(Blocks.saplings.get(),1,7), "Holy Sapling"); -// LanguageRegistry.addName(Blocks.amethystOre.get(), "Amethyst Ore"); -// LanguageRegistry.addName(Blocks.amethystBlock.get(), "Block of Amethyst"); - LanguageRegistry.addName(new ItemStack(Blocks.amethystOre.get(),1,0), "Amethyst Ore"); - LanguageRegistry.addName(new ItemStack(Blocks.amethystOre.get(),1,1), "Block of Amethyst"); -// LanguageRegistry.addName(Blocks.bambooThatching.get(), "Bamboo Thatching"); - LanguageRegistry.addName(Blocks.moss.get(), "Moss"); - LanguageRegistry.addName(new ItemStack(Blocks.foliage.get(),1,0), "Algae"); -// LanguageRegistry.addName(Blocks.smolderingGrass.get(), "Smoldering Grass"); - LanguageRegistry.addName(Blocks.cragRock.get(), "Crag Rock"); -// LanguageRegistry.addName(Blocks.quicksand.get(), "Quicksand"); - LanguageRegistry.addName(new ItemStack(Blocks.mud.get(), 1, 1), "Quicksand"); - LanguageRegistry.addName(new ItemStack(Blocks.saplings.get(),1,2), "Bamboo Sapling"); - - LanguageRegistry.addName(new ItemStack(Blocks.planks.get(), 1, 0), "Acacia Wood Planks"); - LanguageRegistry.addName(new ItemStack(Blocks.planks.get(), 1, 1), "Cherry Wood Planks"); - LanguageRegistry.addName(new ItemStack(Blocks.planks.get(), 1, 2), "Dark Wood Planks"); - LanguageRegistry.addName(new ItemStack(Blocks.planks.get(), 1, 3), "Fir Wood Planks"); - LanguageRegistry.addName(new ItemStack(Blocks.planks.get(), 1, 4), "Holy Wood Planks"); - LanguageRegistry.addName(new ItemStack(Blocks.planks.get(), 1, 5), "Magic Wood Planks"); - LanguageRegistry.addName(new ItemStack(Blocks.planks.get(), 1, 6), "Mangrove Wood Planks"); - LanguageRegistry.addName(new ItemStack(Blocks.planks.get(), 1, 7), "Palm Wood Planks"); - LanguageRegistry.addName(new ItemStack(Blocks.planks.get(), 1, 8), "Redwood Wood Planks"); - LanguageRegistry.addName(new ItemStack(Blocks.planks.get(), 1, 9), "Willow Wood Planks"); - LanguageRegistry.addName(new ItemStack(Blocks.planks.get(), 1, 10), "Bamboo Thatching"); - - LanguageRegistry.addName(new ItemStack(Blocks.logs1.get(),1,0), "Acacia Wood"); - LanguageRegistry.addName(new ItemStack(Blocks.logs1.get(),1,1), "Cherry Wood"); - LanguageRegistry.addName(new ItemStack(Blocks.logs1.get(),1,2), "Dark Wood"); - LanguageRegistry.addName(new ItemStack(Blocks.logs1.get(),1,3), "Fir Wood"); - - LanguageRegistry.addName(new ItemStack(Blocks.logs2.get(),1,0), "Holy Wood"); - LanguageRegistry.addName(new ItemStack(Blocks.logs2.get(),1,1), "Magic Wood"); - LanguageRegistry.addName(new ItemStack(Blocks.logs2.get(),1,2), "Mangrove Wood"); - LanguageRegistry.addName(new ItemStack(Blocks.logs2.get(),1,3), "Palm Wood"); - - LanguageRegistry.addName(new ItemStack(Blocks.logs3.get(),1,0), "Redwood Wood"); - LanguageRegistry.addName(new ItemStack(Blocks.logs3.get(),1,1), "Willow Wood"); - LanguageRegistry.addName(new ItemStack(Blocks.logs3.get(),1,2), "Dead Wood"); - LanguageRegistry.addName(new ItemStack(Blocks.logs3.get(),1,3), "Giant Flower Stem"); - - LanguageRegistry.addName(new ItemStack(Blocks.woodenDoubleSlab1.get(),1,0), "Acacia Wood Slab"); - LanguageRegistry.addName(new ItemStack(Blocks.woodenDoubleSlab1.get(),1,1), "Cherry Wood Slab"); - LanguageRegistry.addName(new ItemStack(Blocks.woodenDoubleSlab1.get(),1,2), "Dark Wood Slab"); - LanguageRegistry.addName(new ItemStack(Blocks.woodenDoubleSlab1.get(),1,3), "Fir Wood Slab"); - LanguageRegistry.addName(new ItemStack(Blocks.woodenDoubleSlab1.get(),1,4), "Holy Wood Slab"); - LanguageRegistry.addName(new ItemStack(Blocks.woodenDoubleSlab1.get(),1,5), "Magic Wood Slab"); - LanguageRegistry.addName(new ItemStack(Blocks.woodenDoubleSlab1.get(),1,6), "Mangrove Wood Slab"); - LanguageRegistry.addName(new ItemStack(Blocks.woodenDoubleSlab1.get(),1,7), "Palm Wood Slab"); - LanguageRegistry.addName(new ItemStack(Blocks.woodenDoubleSlab2.get(),1,0), "Redwood Wood Slab"); - LanguageRegistry.addName(new ItemStack(Blocks.woodenDoubleSlab2.get(),1,1), "Willow Wood Slab"); - - LanguageRegistry.addName(new ItemStack(Blocks.woodenSingleSlab1.get(),1,0), "Acacia Wood Slab"); - LanguageRegistry.addName(new ItemStack(Blocks.woodenSingleSlab1.get(),1,1), "Cherry Wood Slab"); - LanguageRegistry.addName(new ItemStack(Blocks.woodenSingleSlab1.get(),1,2), "Dark Wood Slab"); - LanguageRegistry.addName(new ItemStack(Blocks.woodenSingleSlab1.get(),1,3), "Fir Wood Slab"); - LanguageRegistry.addName(new ItemStack(Blocks.woodenSingleSlab1.get(),1,4), "Holy Wood Slab"); - LanguageRegistry.addName(new ItemStack(Blocks.woodenSingleSlab1.get(),1,5), "Magic Wood Slab"); - LanguageRegistry.addName(new ItemStack(Blocks.woodenSingleSlab1.get(),1,6), "Mangrove Wood Slab"); - LanguageRegistry.addName(new ItemStack(Blocks.woodenSingleSlab1.get(),1,7), "Palm Wood Slab"); - LanguageRegistry.addName(new ItemStack(Blocks.woodenSingleSlab2.get(),1,0), "Redwood Wood Slab"); - LanguageRegistry.addName(new ItemStack(Blocks.woodenSingleSlab2.get(),1,1), "Willow Wood Slab"); - - LanguageRegistry.addName(Blocks.acaciaStairs.get(), "Acacia Wood Stairs"); - LanguageRegistry.addName(Blocks.cherryStairs.get(), "Cherry Wood Stairs"); - LanguageRegistry.addName(Blocks.darkStairs.get(), "Dark Wood Stairs"); - LanguageRegistry.addName(Blocks.firStairs.get(), "Fir Wood Stairs"); - LanguageRegistry.addName(Blocks.holyStairs.get(), "Holy Wood Stairs"); - LanguageRegistry.addName(Blocks.magicStairs.get(), "Magic Wood Stairs"); - LanguageRegistry.addName(Blocks.mangroveStairs.get(), "Mangrove Wood Stairs"); - LanguageRegistry.addName(Blocks.palmStairs.get(), "Palm Wood Stairs"); - LanguageRegistry.addName(Blocks.redwoodStairs.get(), "Redwood Wood Stairs"); - LanguageRegistry.addName(Blocks.willowStairs.get(), "Willow Wood Stairs"); - - LanguageRegistry.addName(new ItemStack(Blocks.leavesColorized.get(),1,3), "Redwood Leaves"); - LanguageRegistry.addName(new ItemStack(Blocks.leavesColorized.get(),1,4), "Willow Leaves"); - LanguageRegistry.addName(new ItemStack(Blocks.leaves1.get(),1,5), "Fir Leaves"); - LanguageRegistry.addName(new ItemStack(Blocks.leavesColorized.get(),1,0), "Acacia Leaves"); - LanguageRegistry.addName(new ItemStack(Blocks.leaves1.get(),1,3), "Dark Leaves"); - LanguageRegistry.addName(new ItemStack(Blocks.leavesColorized.get(),1,2), "Palm Leaves"); - LanguageRegistry.addName(new ItemStack(Blocks.leavesColorized.get(),1,1), "Mangrove Leaves"); - LanguageRegistry.addName(new ItemStack(Blocks.leaves1.get(),1,6), "Holy Leaves"); - } - - private static void addGrassPlants() - { - MinecraftForge.addGrassPlant(Blocks.flowers.get(), 0, 10); - MinecraftForge.addGrassPlant(Blocks.flowers.get(), 1, 3); - MinecraftForge.addGrassPlant(Blocks.flowers.get(), 2, 1); - MinecraftForge.addGrassPlant(Blocks.flowers.get(), 3, 1); - MinecraftForge.addGrassPlant(Blocks.flowers.get(), 4, 5); - MinecraftForge.addGrassPlant(Blocks.flowers.get(), 5, 5); - MinecraftForge.addGrassPlant(Blocks.flowers.get(), 6, 5); - MinecraftForge.addGrassPlant(Blocks.flowers.get(), 7, 5); - MinecraftForge.addGrassPlant(Blocks.flowers.get(), 8, 5); - MinecraftForge.addGrassPlant(Blocks.flowers.get(), 9, 5); - - MinecraftForge.addGrassPlant(Blocks.foliage.get(), 5, 10); - } -} diff --git a/src/minecraft/biomesoplenty/configuration/BOPConfiguration.java b/src/minecraft/biomesoplenty/configuration/BOPConfiguration.java deleted file mode 100644 index 869aa31e6..000000000 --- a/src/minecraft/biomesoplenty/configuration/BOPConfiguration.java +++ /dev/null @@ -1,780 +0,0 @@ -package biomesoplenty.configuration; - -import java.io.File; -import java.util.logging.Level; - -import net.minecraftforge.common.Configuration; -import cpw.mods.fml.common.FMLLog; - -public class BOPConfiguration { - - public static Configuration config; - - // Configuration variables - public static boolean skyColors; - public static int biomeSize; - public static boolean addToDefault; - public static boolean achievements; - public static boolean vanillaEnhanced; - - public static int villageDistance; - - public static int promisedLandDimID; - - public static boolean alpsGen; - public static boolean arcticGen; - public static boolean badlandsGen; - public static boolean bambooForestGen; - public static boolean bayouGen; - public static boolean birchForestGen; - public static boolean bogGen; - public static boolean borealForestGen; - public static boolean canyonGen; - public static boolean chaparralGen; - public static boolean cherryBlossomGroveGen; - public static boolean coniferousForestGen; - public static boolean cragGen; - public static boolean deadForestGen; - public static boolean deadSwampGen; - public static boolean deadlandsGen; - public static boolean deciduousForestGen; - public static boolean drylandsGen; - public static boolean dunesGen; - public static boolean fenGen; - public static boolean fieldGen; - public static boolean frostForestGen; - public static boolean fungiForestGen; - public static boolean gardenGen; - public static boolean glacierGen; - public static boolean grasslandGen; - public static boolean groveGen; - public static boolean heathlandGen; - public static boolean highlandGen; - public static boolean iceSheetGen; - public static boolean icyHillsGen; - public static boolean jadeCliffsGen; - public static boolean lushDesertGen; - public static boolean lushSwampGen; - public static boolean mangroveGen; - public static boolean mapleWoodsGen; - public static boolean marshGen; - public static boolean meadowGen; - public static boolean mesaGen; - public static boolean moorGen; - public static boolean mountainGen; -// public static boolean mushroomIslandGen; - public static boolean mysticGroveGen; - public static boolean oasisGen; - public static boolean ominousWoodsGen; - public static boolean orchardGen; - public static boolean originValleyGen; - public static boolean outbackGen; - public static boolean pastureGen; - public static boolean prairieGen; - public static boolean quagmireGen; - public static boolean rainforestGen; - public static boolean redwoodForestGen; - public static boolean sacredSpringsGen; - public static boolean savannaGen; - public static boolean scrublandGen; - public static boolean seasonalForestGen; - public static boolean shieldGen; - public static boolean shrublandGen; - public static boolean snowyWoodsGen; - public static boolean spruceWoodsGen; - public static boolean steppeGen; - public static boolean swampwoodsGen; - public static boolean temperateRainforestGen; - public static boolean thicketGen; - public static boolean tropicalRainforestGen; - public static boolean tropicsGen; - public static boolean tundraGen; - public static boolean volcanoGen; - public static boolean wastelandGen; - public static boolean wetlandGen; - public static boolean woodlandGen; - - // Vanilla biomes - public static boolean plainsGen; - public static boolean desertGen; - public static boolean extremeHillsGen; - public static boolean forestGen; - public static boolean taigaGen; - public static boolean swamplandGen; - public static boolean jungleGen; - - //Block IDS - public static int mudID; - public static int driedDirtID; - public static int redRockID; - public static int ashID; - public static int ashStoneID; - public static int hardIceID; - public static int originGrassID; - public static int hardSandID; - public static int hardDirtID; - public static int holyGrassID; - public static int holyStoneID; - public static int cragRockID; - - public static int plantsID; - public static int flowersID; - public static int willowID; - - public static int leaves1ID; - public static int leaves2ID; - public static int foliageID; - - public static int leavesFruitID; - public static int bambooID; - public static int mudBrickBlockID; - public static int mudBrickStairsID; - public static int stoneDoubleSlabID; - public static int stoneSingleSlabID; - - public static int treeMossID; - - public static int logs1ID; - public static int logs2ID; - public static int logs3ID; - public static int petalsID; - public static int saplingsID; - public static int colourizedSaplingsID; - public static int redCobbleStairsID; - public static int redBrickStairsID; - - public static int promisedLandPortalID; - public static int amethystOreID; -// public static int amethystBlockID; -// public static int bambooThatchingID; - - public static int mossID; -// public static int smolderingGrassID; - -// public static int quicksandID; - - public static int planksID; - - public static int woodenDoubleSlab1ID; - public static int woodenSingleSlab1ID; - public static int woodenDoubleSlab2ID; - public static int woodenSingleSlab2ID; - - public static int acaciaStairsID; - public static int cherryStairsID; - public static int darkStairsID; - public static int firStairsID; - public static int holyStairsID; - public static int magicStairsID; - public static int mangroveStairsID; - public static int palmStairsID; - public static int redwoodStairsID; - public static int willowStairsID; - - public static int colourizedLeavesID; - - //Item IDs - public static int shroomPowderID; - - public static int ancientStaffID; - public static int enderporterID; - - public static int bopDiscID; - public static int bopDiscMudID; - - public static int miscItemsID; - public static int mudballID; - - public static int swordMudID; - public static int shovelMudID; - public static int pickaxeMudID; - public static int axeMudID; - public static int hoeMudID; - public static int helmetMudID; - public static int chestplateMudID; - public static int leggingsMudID; - public static int bootsMudID; - - - public static int swordAmethystID; - public static int shovelAmethystID; - public static int pickaxeAmethystID; - public static int axeAmethystID; - public static int hoeAmethystID; - public static int helmetAmethystID; - public static int chestplateAmethystID; - public static int leggingsAmethystID; - public static int bootsAmethystID; - - //Biome IDS - public static int alpsID; - public static int arcticID; - public static int arcticForestID; - public static int badlandsID; - public static int bambooForestID; - public static int bayouID; - public static int birchForestID; - public static int bogID; - public static int borealForestID; - public static int canyonID; - public static int chaparralID; - public static int cherryBlossomGroveID; - public static int coniferousForestID; - public static int coniferousForestThinID; - public static int cragID; - public static int deadForestID; - public static int deadSwampID; - public static int deadlandsID; - public static int deciduousForestID; - public static int drylandsID; - public static int dunesID; - public static int fenID; - public static int fieldID; - public static int frostForestID; - public static int fungiForestID; - public static int gardenID; - public static int glacierID; - public static int grasslandID; - public static int groveID; - public static int groveThinID; - public static int heathlandID; - public static int highlandID; - public static int iceSheetID; - public static int icyHillsID; - public static int jadeCliffsID; - public static int lushDesertID; - public static int lushSwampID; - public static int mangroveID; - public static int mapleWoodsID; - public static int marshID; - public static int meadowID; - public static int meadowForestID; - public static int mesaID; - public static int moorID; - public static int mountainID; - public static int mysticGroveID; - public static int oasisID; - public static int ominousWoodsID; - public static int orchardID; - public static int originValleyID; - public static int outbackID; - public static int pastureID; - public static int prairieID; - public static int promisedLandID; - public static int promisedLandHillsID; - public static int promisedLandPlainsID; - public static int promisedLandSwampID; - public static int quagmireID; - public static int rainforestID; - public static int redwoodForestID; - public static int reefID; - public static int sacredSpringsID; - public static int savannaID; - public static int savannaThickID; - public static int scrublandID; - public static int seasonalForestID; - public static int shieldID; - public static int shoreID; - public static int shrublandID; - public static int snowyWoodsID; - public static int spruceWoodsID; - public static int steppeID; - public static int swampwoodsID; - public static int temperateRainforestID; - public static int thicketID; - public static int tropicalRainforestID; - public static int tropicsID; - public static int tundraID; - public static int tundraDryID; - public static int volcanoID; - public static int wastelandID; - public static int wastelandTreesID; - public static int wetlandID; - public static int woodlandID; - public static int plainsNewID; - public static int desertNewID; - public static int desertHillsNewID; - public static int extremeHillsNewID; - public static int extremeHillsEdgeNewID; - public static int forestNewID; - public static int forestHillsNewID; - public static int taigaNewID; - public static int taigaHillsNewID; - public static int swamplandNewID; - public static int jungleNewID; - public static int jungleHillsNewID; - - public static int jungleSpiderID; - public static int rosesterID; - - // Village biomes - public static boolean alpsVillage; - public static boolean arcticVillage; - public static boolean badlandsVillage; - public static boolean bambooForestVillage; - public static boolean bayouVillage; - public static boolean birchForestVillage; - public static boolean bogVillage; - public static boolean borealForestVillage; - public static boolean canyonVillage; - public static boolean chaparralVillage; - public static boolean cherryBlossomGroveVillage; - public static boolean coniferousForestVillage; - public static boolean cragVillage; - public static boolean deadForestVillage; - public static boolean deadSwampVillage; - public static boolean deadlandsVillage; - public static boolean deciduousForestVillage; - public static boolean drylandsVillage; - public static boolean dunesVillage; - public static boolean fenVillage; - public static boolean fieldVillage; - public static boolean frostForestVillage; - public static boolean fungiForestVillage; - public static boolean gardenVillage; - public static boolean glacierVillage; - public static boolean grasslandVillage; - public static boolean groveVillage; - public static boolean heathlandVillage; - public static boolean highlandVillage; - public static boolean iceSheetVillage; - public static boolean icyHillsVillage; - public static boolean jadeCliffsVillage; - public static boolean lushDesertVillage; - public static boolean lushSwampVillage; - public static boolean mangroveVillage; - public static boolean mapleWoodsVillage; - public static boolean marshVillage; - public static boolean meadowVillage; - public static boolean mesaVillage; - public static boolean moorVillage; - public static boolean mountainVillage; -// public static boolean mushroomIslandVillage; - public static boolean mysticGroveVillage; - public static boolean oasisVillage; - public static boolean ominousWoodsVillage; - public static boolean orchardVillage; - public static boolean originValleyVillage; - public static boolean outbackVillage; - public static boolean pastureVillage; - public static boolean prairieVillage; - public static boolean quagmireVillage; - public static boolean rainforestVillage; - public static boolean redwoodForestVillage; - public static boolean sacredSpringsVillage; - public static boolean savannaVillage; - public static boolean scrublandVillage; - public static boolean seasonalForestVillage; - public static boolean shieldVillage; - public static boolean shrublandVillage; - public static boolean snowyWoodsVillage; - public static boolean spruceWoodsVillage; - public static boolean steppeVillage; - public static boolean swampwoodsVillage; - public static boolean temperateRainforestVillage; - public static boolean thicketVillage; - public static boolean tropicalRainforestVillage; - public static boolean tropicsVillage; - public static boolean tundraVillage; - public static boolean volcanoVillage; - public static boolean wastelandVillage; - public static boolean wetlandVillage; - public static boolean woodlandVillage; - public static boolean plainsVillage; - public static boolean desertVillage; - public static boolean extremeHillsVillage; - public static boolean forestVillage; - public static boolean taigaVillage; - public static boolean swamplandVillage; - public static boolean jungleVillage; - - public static void init(File configFile) - { - config = new Configuration(configFile); - - try - { - config.load(); - - skyColors = true; - biomeSize = config.get("Biomes O\' Plenty World Type Settings", "Biome Size", 5, "Default World Type has 4. Large Biomes World Type has 6.").getInt(); - achievements = config.get("Achievement Settings", "Add Biomes O\' Plenty Achievements", true).getBoolean(false); - vanillaEnhanced = config.get("Biome Settings", "Enhanced Vanilla Biomes", true).getBoolean(false); - promisedLandDimID = config.get("Dimension Settings", "Promised Land Dimension ID", 20, null).getInt(); - - addToDefault = config.get("Biome Settings", "Add Biomes To Default World", true).getBoolean(true); - - villageDistance = config.get("Biomes O\' Plenty World Type Settings", "Distance between villages", 24, "In Vanilla it is set to 32").getInt(); - if (villageDistance < 8) - villageDistance = 8; - - alpsGen = config.get("Biomes To Generate", "Alps", true).getBoolean(false); - arcticGen = config.get("Biomes To Generate", "Arctic", true).getBoolean(false); - badlandsGen = config.get("Biomes To Generate", "Badlands", true).getBoolean(false); - bambooForestGen = config.get("Biomes To Generate", "BambooForest", true).getBoolean(false); - bayouGen = config.get("Biomes To Generate", "Bayou", true).getBoolean(false); - birchForestGen = config.get("Biomes To Generate", "BirchForest", true).getBoolean(false); - bogGen = config.get("Biomes To Generate", "Bog", true).getBoolean(false); - borealForestGen = config.get("Biomes To Generate", "BorealForest", true).getBoolean(false); - canyonGen = config.get("Biomes To Generate", "Canyon", true).getBoolean(false); - chaparralGen = config.get("Biomes To Generate", "Chaparral", true).getBoolean(false); - cherryBlossomGroveGen = config.get("Biomes To Generate", "CherryBlossomGrove", true).getBoolean(false); - coniferousForestGen = config.get("Biomes To Generate", "ConiferousForest", true).getBoolean(false); - cragGen = config.get("Biomes To Generate", "Crag", true).getBoolean(false); - deadForestGen = config.get("Biomes To Generate", "DeadForest", true).getBoolean(false); - deadSwampGen = config.get("Biomes To Generate", "DeadSwamp", true).getBoolean(false); - deadlandsGen = config.get("Biomes To Generate", "Deadlands", true).getBoolean(false); - deciduousForestGen = config.get("Biomes To Generate", "DeciduousForest", true).getBoolean(false); - drylandsGen = config.get("Biomes To Generate", "Drylands", true).getBoolean(false); - dunesGen = config.get("Biomes To Generate", "Dunes", true).getBoolean(false); - fenGen = config.get("Biomes To Generate", "Fen", true).getBoolean(false); - fieldGen = config.get("Biomes To Generate", "Field", true).getBoolean(false); - frostForestGen = config.get("Biomes To Generate", "FrostForest", true).getBoolean(false); - fungiForestGen = config.get("Biomes To Generate", "FungiForest", true).getBoolean(false); - gardenGen = config.get("Biomes To Generate", "Garden", true).getBoolean(false); - glacierGen = config.get("Biomes To Generate", "Glacier", true).getBoolean(false); - grasslandGen = config.get("Biomes To Generate", "Grassland", true).getBoolean(false); - groveGen = config.get("Biomes To Generate", "Grove", true).getBoolean(false); - heathlandGen = config.get("Biomes To Generate", "Heathland", true).getBoolean(false); - highlandGen = config.get("Biomes To Generate", "Highland", true).getBoolean(false); - iceSheetGen = config.get("Biomes To Generate", "IcySheet", true).getBoolean(false); - icyHillsGen = config.get("Biomes To Generate", "IcyHills", true).getBoolean(false); - jadeCliffsGen = config.get("Biomes To Generate", "JadeCliffs", true).getBoolean(false); - lushDesertGen = config.get("Biomes To Generate", "LushDesert", true).getBoolean(false); - lushSwampGen = config.get("Biomes To Generate", "LushSwamp", true).getBoolean(false); - mangroveGen = config.get("Biomes To Generate", "Mangrove", true).getBoolean(false); - mapleWoodsGen = config.get("Biomes To Generate", "MapleWoods", true).getBoolean(false); - marshGen = config.get("Biomes To Generate", "Marsh", true).getBoolean(false); - meadowGen = config.get("Biomes To Generate", "Meadow", true).getBoolean(false); - mesaGen = config.get("Biomes To Generate", "Mesa", true).getBoolean(false); - moorGen = config.get("Biomes To Generate", "Moor", true).getBoolean(false); - mountainGen = config.get("Biomes To Generate", "Mountain", true).getBoolean(false); -// mushroomIslandGen = config.get("Biomes To Generate", "MushroomIsland", true).getBoolean(false); - mysticGroveGen = config.get("Biomes To Generate", "MysticGrove", true).getBoolean(false); - oasisGen = config.get("Biomes To Generate", "Oasis", true).getBoolean(false); - ominousWoodsGen = config.get("Biomes To Generate", "OminousWoods", true).getBoolean(false); - orchardGen = config.get("Biomes To Generate", "Orchard", true).getBoolean(false); - originValleyGen = config.get("Biomes To Generate", "OriginValley", true).getBoolean(false); - outbackGen = config.get("Biomes To Generate", "Outback", true).getBoolean(false); - pastureGen = config.get("Biomes To Generate", "Pasture", true).getBoolean(false); - prairieGen = config.get("Biomes To Generate", "Prairie", true).getBoolean(false); - quagmireGen = config.get("Biomes To Generate", "Quagmire", true).getBoolean(false); - rainforestGen = config.get("Biomes To Generate", "Rainforest", true).getBoolean(false); - redwoodForestGen = config.get("Biomes To Generate", "RedwoodForest", true).getBoolean(false); - sacredSpringsGen = config.get("Biomes To Generate", "SacredSprings", true).getBoolean(false); - savannaGen = config.get("Biomes To Generate", "Savanna", true).getBoolean(false); - scrublandGen = config.get("Biomes To Generate", "Scrubland", true).getBoolean(false); - seasonalForestGen = config.get("Biomes To Generate", "SeasonalForest", true).getBoolean(false); - shieldGen = config.get("Biomes To Generate", "Shield", true).getBoolean(false); - shrublandGen = config.get("Biomes To Generate", "Shrubland", true).getBoolean(false); - snowyWoodsGen = config.get("Biomes To Generate", "SnowyWoods", true).getBoolean(false); - spruceWoodsGen = config.get("Biomes To Generate", "SpruceWoods", true).getBoolean(false); - steppeGen = config.get("Biomes To Generate", "Steppe", true).getBoolean(false); - swampwoodsGen = config.get("Biomes To Generate", "Swampwoods", true).getBoolean(false); - temperateRainforestGen = config.get("Biomes To Generate", "TemperateRainforest", true).getBoolean(false); - thicketGen = config.get("Biomes To Generate", "Thicket", true).getBoolean(false); - tropicalRainforestGen = config.get("Biomes To Generate", "TropicalRainforest", true).getBoolean(false); - tropicsGen = config.get("Biomes To Generate", "Tropics", true).getBoolean(false); - tundraGen = config.get("Biomes To Generate", "Tundra", true).getBoolean(false); - volcanoGen = config.get("Biomes To Generate", "Volcano", true).getBoolean(false); - wastelandGen = config.get("Biomes To Generate", "Wasteland", true).getBoolean(false); - wetlandGen = config.get("Biomes To Generate", "Wetland", true).getBoolean(false); - woodlandGen = config.get("Biomes To Generate", "Woodland", true).getBoolean(false); - - // Vanilla biomes - desertGen = config.get("Vanilla Biomes To Generate", "Desert", true).getBoolean(true); - extremeHillsGen = config.get("Vanilla Biomes To Generate", "ExtremeHills", true).getBoolean(true); - forestGen = config.get("Vanilla Biomes To Generate", "Forest", true).getBoolean(true); - jungleGen = config.get("Vanilla Biomes To Generate", "Jungle", true).getBoolean(true); - plainsGen = config.get("Vanilla Biomes To Generate", "Plains", true).getBoolean(true); - swamplandGen = config.get("Vanilla Biomes To Generate", "Swampland", true).getBoolean(true); - taigaGen = config.get("Vanilla Biomes To Generate", "Taiga", true).getBoolean(true); - - // Biomes with villages - alpsVillage = config.get("Allow Villages", "Alps", true).getBoolean(false); - arcticVillage = config.get("Allow Villages", "Arctic", true).getBoolean(false); - badlandsVillage = config.get("Allow Villages", "Badlands", true).getBoolean(false); - bambooForestVillage = config.get("Allow Villages", "BambooForest", true).getBoolean(false); - bayouVillage = config.get("Allow Villages", "Bayou", true).getBoolean(false); - birchForestVillage = config.get("Allow Villages", "BirchForest", true).getBoolean(false); - bogVillage = config.get("Allow Villages", "Bog", true).getBoolean(false); - borealForestVillage = config.get("Allow Villages", "BorealForest", true).getBoolean(false); - canyonVillage = config.get("Allow Villages", "Canyon", true).getBoolean(false); - chaparralVillage = config.get("Allow Villages", "Chaparral", true).getBoolean(false); - cherryBlossomGroveVillage = config.get("Allow Villages", "CherryBlossomGrove", true).getBoolean(false); - coniferousForestVillage = config.get("Allow Villages", "ConiferousForest", true).getBoolean(false); - cragVillage = config.get("Allow Villages", "Crag", false).getBoolean(false); - deadForestVillage = config.get("Allow Villages", "DeadForest", true).getBoolean(false); - deadSwampVillage = config.get("Allow Villages", "DeadSwamp", true).getBoolean(false); - deadlandsVillage = config.get("Allow Villages", "Deadlands", false).getBoolean(false); - deciduousForestVillage = config.get("Allow Villages", "DeciduousForest", true).getBoolean(false); - drylandsVillage = config.get("Allow Villages", "Drylands", true).getBoolean(false); - dunesVillage = config.get("Allow Villages", "Dunes", true).getBoolean(false); - fenVillage = config.get("Allow Villages", "Fen", false).getBoolean(false); - fieldVillage = config.get("Allow Villages", "Field", true).getBoolean(false); - frostForestVillage = config.get("Allow Villages", "FrostForest", true).getBoolean(false); - fungiForestVillage = config.get("Allow Villages", "FungiForest", false).getBoolean(false); - gardenVillage = config.get("Allow Villages", "Garden", false).getBoolean(false); - glacierVillage = config.get("Allow Villages", "Glacier", false).getBoolean(false); - grasslandVillage = config.get("Allow Villages", "Grassland", true).getBoolean(false); - groveVillage = config.get("Allow Villages", "Grove", true).getBoolean(false); - heathlandVillage = config.get("Allow Villages", "Heathland", true).getBoolean(false); - highlandVillage = config.get("Allow Villages", "Highland", true).getBoolean(false); - iceSheetVillage = config.get("Allow Villages", "IcySheet", false).getBoolean(false); - icyHillsVillage = config.get("Allow Villages", "IcyHills", false).getBoolean(false); - jadeCliffsVillage = config.get("Allow Villages", "JadeCliffs", true).getBoolean(false); - lushDesertVillage = config.get("Allow Villages", "LushDesert", true).getBoolean(false); - lushSwampVillage = config.get("Allow Villages", "LushSwamp", true).getBoolean(false); - mangroveVillage = config.get("Allow Villages", "Mangrove", false).getBoolean(false); - mapleWoodsVillage = config.get("Allow Villages", "MapleWoods", true).getBoolean(false); - marshVillage = config.get("Allow Villages", "Marsh", false).getBoolean(false); - meadowVillage = config.get("Allow Villages", "Meadow", true).getBoolean(false); - mesaVillage = config.get("Allow Villages", "Mesa", false).getBoolean(false); - moorVillage = config.get("Allow Villages", "Moor", true).getBoolean(false); - mountainVillage = config.get("Allow Villages", "Mountain", true).getBoolean(false); -// mushroomIslandVillage = config.get("Allow Villages", "MushroomIsland", false).getBoolean(false); - mysticGroveVillage = config.get("Allow Villages", "MysticGrove", false).getBoolean(false); - oasisVillage = config.get("Allow Villages", "Oasis", true).getBoolean(false); - ominousWoodsVillage = config.get("Allow Villages", "OminousWoods", false).getBoolean(false); - orchardVillage = config.get("Allow Villages", "Orchard", true).getBoolean(false); - originValleyVillage = config.get("Allow Villages", "OriginValley", false).getBoolean(false); - outbackVillage = config.get("Allow Villages", "Outback", true).getBoolean(false); - pastureVillage = config.get("Allow Villages", "Pasture", true).getBoolean(false); - prairieVillage = config.get("Allow Villages", "Prairie", true).getBoolean(false); - quagmireVillage = config.get("Allow Villages", "Quagmire", true).getBoolean(false); - rainforestVillage = config.get("Allow Villages", "Rainforest", true).getBoolean(false); - redwoodForestVillage = config.get("Allow Villages", "RedwoodForest", true).getBoolean(false); - sacredSpringsVillage = config.get("Allow Villages", "SacredSprings", false).getBoolean(false); - savannaVillage = config.get("Allow Villages", "Savanna", true).getBoolean(false); - scrublandVillage = config.get("Allow Villages", "Scrubland", true).getBoolean(false); - seasonalForestVillage = config.get("Allow Villages", "SeasonalForest", true).getBoolean(false); - shieldVillage = config.get("Allow Villages", "Shield", true).getBoolean(false); - shrublandVillage = config.get("Allow Villages", "Shrubland", true).getBoolean(false); - snowyWoodsVillage = config.get("Allow Villages", "SnowyWoods", true).getBoolean(false); - spruceWoodsVillage = config.get("Allow Villages", "SpruceWoods", true).getBoolean(false); - steppeVillage = config.get("Allow Villages", "Steppe", false).getBoolean(false); - swampwoodsVillage = config.get("Allow Villages", "Swampwoods", true).getBoolean(false); - temperateRainforestVillage = config.get("Allow Villages", "TemperateRainforest", true).getBoolean(false); - thicketVillage = config.get("Allow Villages", "Thicket", true).getBoolean(false); - tropicalRainforestVillage = config.get("Allow Villages", "TropicalRainforest", true).getBoolean(false); - tropicsVillage = config.get("Allow Villages", "Tropics", true).getBoolean(false); - tundraVillage = config.get("Allow Villages", "Tundra", true).getBoolean(false); - volcanoVillage = config.get("Allow Villages", "Volcano", false).getBoolean(false); - wastelandVillage = config.get("Allow Villages", "Wasteland", false).getBoolean(false); - wetlandVillage = config.get("Allow Villages", "Wetland", true).getBoolean(false); - woodlandVillage = config.get("Allow Villages", "Woodland", true).getBoolean(false); - - // Vanilla biomes - desertVillage = config.get("Allow Villages", "Desert", true).getBoolean(true); - extremeHillsVillage = config.get("Allow Villages", "ExtremeHills", false).getBoolean(false); - forestVillage = config.get("Allow Villages", "Forest", true).getBoolean(false); - jungleVillage = config.get("Allow Villages", "Jungle", false).getBoolean(false); - plainsVillage = config.get("Allow Villages", "Plains", true).getBoolean(true); - swamplandVillage = config.get("Allow Villages", "Swampland", true).getBoolean(false); - taigaVillage = config.get("Allow Villages", "Taiga", true).getBoolean(false); - - // Get Terrain Block ID's - mudID = config.getTerrainBlock("Terrain Block IDs", "Mud ID", 160, null).getInt(); - driedDirtID = config.getTerrainBlock("Terrain Block IDs", "Dried Dirt ID", 161, null).getInt(); - redRockID = config.getTerrainBlock("Terrain Block IDs", "Red Rock ID", 162, null).getInt(); - ashID = config.getTerrainBlock("Terrain Block IDs", "Ash Block ID", 163, null).getInt(); - ashStoneID = config.getTerrainBlock("Terrain Block IDs", "Ash Stone ID", 164, null).getInt(); - hardIceID = config.getTerrainBlock("Terrain Block IDs", "Hard Ice ID", 165, null).getInt(); - originGrassID = config.getTerrainBlock("Terrain Block IDs", "Origin Grass ID", 166, null).getInt(); - hardSandID = config.getTerrainBlock("Terrain Block IDs", "Hard Sand ID", 167, null).getInt(); - hardDirtID = config.getTerrainBlock("Terrain Block IDs", "Hard Dirt ID", 168, null).getInt(); - holyGrassID = config.getTerrainBlock("Terrain Block IDs", "Holy Grass ID", 169, null).getInt(); - holyStoneID = config.getTerrainBlock("Terrain Block IDs", "Holy Stone ID", 170, null).getInt(); - cragRockID = config.getTerrainBlock("Terrain Block IDs", "Crag Rock ID", 171, null).getInt(); - - // Get Crafted Block ID's - plantsID = config.getBlock("Plant ID", 1920, null).getInt(); - flowersID = config.getBlock("Flower ID", 1921, null).getInt(); - willowID = config.getBlock("Willow ID", 1922, null).getInt(); - - leaves1ID = config.getBlock("Leaf Block ID 1", 1923, null).getInt(); - leaves2ID = config.getBlock("Leaf Block ID 2", 1924, null).getInt(); - foliageID = config.getBlock("Foliage ID", 1925, null).getInt(); - - leavesFruitID = config.getBlock("Fruit Leaf Block ID", 1926, null).getInt(); - bambooID = config.getBlock("Bamboo ID", 1927, null).getInt(); - mudBrickBlockID = config.getBlock("Mud Bricks ID", 1928, null).getInt(); - mudBrickStairsID = config.getBlock("Mud Brick Stairs ID", 1929, null).getInt(); - stoneDoubleSlabID = config.getBlock("Stone Double Slab ID", 1930, null).getInt(); - stoneSingleSlabID = config.getBlock("Stone Single Slab ID", 1931, null).getInt(); - - treeMossID = config.getBlock("Tree Moss ID", 1932, null).getInt(); - - logs1ID = config.getBlock("Log Block ID 1", 1933, null).getInt(); - logs2ID = config.getBlock("Log Block ID 2", 1934, null).getInt(); - logs3ID = config.getBlock("Log Block ID 3", 1935, null).getInt(); - petalsID = config.getBlock("Petal ID", 1936, null).getInt(); - saplingsID = config.getBlock("Sapling ID", 1937, null).getInt(); - colourizedSaplingsID = config.getBlock("Colourized Sapling ID", 1938, null).getInt(); - redCobbleStairsID = config.getBlock("Red Cobble Stairs ID", 1939, null).getInt(); - redBrickStairsID = config.getBlock("Red Brick Stairs ID", 1940, null).getInt(); - - promisedLandPortalID = config.getBlock("Promised Land Portal ID", 1941, null).getInt(); - amethystOreID = config.getBlock("Amethyst Ore ID", 1942, null).getInt(); - - mossID = config.getBlock("Moss ID", 391, null).getInt(); - - planksID = config.getBlock("Planks ID", 1947, null).getInt(); - - woodenDoubleSlab1ID = config.getBlock("Wooden Double Slab 1 ID", 1948, null).getInt(); - woodenSingleSlab1ID = config.getBlock("Wooden Single Slab 1 ID", 1949, null).getInt(); - woodenDoubleSlab2ID = config.getBlock("Wooden Double Slab 2 ID", 1950, null).getInt(); - woodenSingleSlab2ID = config.getBlock("Wooden Single Slab 2 ID", 1951, null).getInt(); - - acaciaStairsID = config.getBlock("Acacia Stairs ID", 1952, null).getInt(); - cherryStairsID = config.getBlock("Cherry Stairs ID", 1953, null).getInt(); - darkStairsID = config.getBlock("Dark Stairs ID", 1954, null).getInt(); - firStairsID = config.getBlock("Fir Stairs ID", 1955, null).getInt(); - holyStairsID = config.getBlock("Holy Stairs ID", 1956, null).getInt(); - magicStairsID = config.getBlock("Magic Stairs ID", 1957, null).getInt(); - mangroveStairsID = config.getBlock("Mangrove Stairs ID", 1958, null).getInt(); - palmStairsID = config.getBlock("Palm Stairs ID", 1959, null).getInt(); - redwoodStairsID = config.getBlock("Redwood Stairs ID", 1960, null).getInt(); - willowStairsID = config.getBlock("Willow Stairs ID", 1961, null).getInt(); - - colourizedLeavesID = config.getBlock("Colourized Leaves ID", 1962, null).getInt(); - - // Get Item ID's - shroomPowderID = config.getItem("Shroom Powder ID", 21001, null).getInt(); - - ancientStaffID = config.getItem("Ancient Staff ID", 21006).getInt(); - enderporterID = config.getItem("Enderporter ID", 21007).getInt(); - - miscItemsID = config.getItem("Misc Items ID", 21010).getInt(); - mudballID = config.getItem("Mud Ball ID", 21011).getInt(); - - bopDiscID = config.getItem("Traversia Music Disc ID", 21019, null).getInt(); - bopDiscMudID = config.getItem("Muddy Music Disc ID", 21020, null).getInt(); - - swordMudID = config.getItem("Muddy Sword ID", 21060, null).getInt(); - shovelMudID = config.getItem("Muddy Shovel ID", 21061, null).getInt(); - pickaxeMudID = config.getItem("Muddy Pickaxe ID", 21062, null).getInt(); - axeMudID = config.getItem("Muddy Axe ID", 21063, null).getInt(); - hoeMudID = config.getItem("Muddy Hoe ID", 21064, null).getInt(); - helmetMudID = config.getItem("Muddy Helmet ID", 21065, null).getInt(); - chestplateMudID = config.getItem("Muddy Chestplate ID", 21066, null).getInt(); - leggingsMudID = config.getItem("Muddy Leggings ID", 21067, null).getInt(); - bootsMudID = config.getItem("Muddy Boots ID", 21068, null).getInt(); - - swordAmethystID = config.getItem("Amethyst Sword ID", 21069, null).getInt(); - shovelAmethystID = config.getItem("Amethyst Shovel ID", 21070, null).getInt(); - pickaxeAmethystID = config.getItem("Amethyst Pickaxe ID", 21071, null).getInt(); - axeAmethystID = config.getItem("Amethyst Axe ID", 21072, null).getInt(); - hoeAmethystID = config.getItem("Amethyst Hoe ID", 21073, null).getInt(); - helmetAmethystID = config.getItem("Amethyst Helmet ID", 21074, null).getInt(); - chestplateAmethystID = config.getItem("Amethyst Chestplate ID", 21075, null).getInt(); - leggingsAmethystID = config.getItem("Amethyst Leggings ID", 21076, null).getInt(); - bootsAmethystID = config.getItem("Amethyst Boots ID", 21077, null).getInt(); - - //Mob IDs - jungleSpiderID = config.get("Mob IDs", "Jungle Spider ID", 101, null).getInt(); - rosesterID = config.get("Mob IDs", "Rosester ID", 102, null).getInt(); - - System.out.println("Generating Biome ID's"); - - //23-79 ExtraBiomesXL - - //80-169 Better World Generation 4 - - alpsID = config.get("Biome IDs", "Alps ID", 171).getInt(); - arcticID = config.get("Biome IDs", "Arctic ID", 172).getInt(); - badlandsID = config.get("Biome IDs", "Badlands ID", 173).getInt(); - bambooForestID = config.get("Biome IDs", "Bamboo Forest ID", 174).getInt(); - bayouID = config.get("Biome IDs", "Bayou ID", 175).getInt(); - birchForestID = config.get("Biome IDs", "Birch Forest ID", 176).getInt(); - bogID = config.get("Biome IDs", "Bog ID", 177).getInt(); - borealForestID = config.get("Biome IDs", "Boreal Forest ID", 178).getInt(); - canyonID = config.get("Biome IDs", "Canyon ID", 179).getInt(); - chaparralID = config.get("Biome IDs", "Chaparral ID", 180).getInt(); - cherryBlossomGroveID = config.get("Biome IDs", "Cherry Blossom Grove ID", 181).getInt(); - coniferousForestID = config.get("Biome IDs", "Coniferous Forest ID", 182).getInt(); - cragID = config.get("Biome IDs", "Crag ID", 183).getInt(); - deadForestID = config.get("Biome IDs", "Dead Forest ID", 184).getInt(); - deadSwampID = config.get("Biome IDs", "Dead Swamp ID", 185).getInt(); - deadlandsID = config.get("Biome IDs", "Deadlands ID", 186).getInt(); - deciduousForestID = config.get("Biome IDs", "Deciduous Forest ID", 187).getInt(); - drylandsID = config.get("Biome IDs", "Drylands ID", 189).getInt(); - dunesID = config.get("Biome IDs", "Dunes ID", 190).getInt(); - fenID = config.get("Biome IDs", "Fen ID", 191).getInt(); - fieldID = config.get("Biome IDs", "Field ID", 192).getInt(); - frostForestID = config.get("Biome IDs", "Frost Forest ID", 193).getInt(); - fungiForestID = config.get("Biome IDs", "Fungi Forest ID", 194).getInt(); - gardenID = config.get("Biome IDs", "Garden ID", 195).getInt(); - glacierID = config.get("Biome IDs", "Glacier ID", 196).getInt(); - grasslandID = config.get("Biome IDs", "Grassland ID", 197).getInt(); - groveID = config.get("Biome IDs", "Grove ID", 198).getInt(); - heathlandID = config.get("Biome IDs", "Heathland ID", 199).getInt(); - highlandID = config.get("Biome IDs", "Highland ID", 200).getInt(); - iceSheetID = config.get("Biome IDs", "Ice Sheet ID", 201).getInt(); - icyHillsID = config.get("Biome IDs", "Icy Hills ID", 202).getInt(); - jadeCliffsID = config.get("Biome IDs", "Jade Cliffs ID", 203).getInt(); - lushDesertID = config.get("Biome IDs", "Lush Desert ID", 204).getInt(); - lushSwampID = config.get("Biome IDs", "Lush Swamp ID", 205).getInt(); - mangroveID = config.get("Biome IDs", "Mangrove ID", 206).getInt(); - - //207-209 left for Mo Creatures - - mapleWoodsID = config.get("Biome IDs", "Maple Woods ID", 210).getInt(); - marshID = config.get("Biome IDs", "Marsh ID", 211).getInt(); - meadowID = config.get("Biome IDs", "Meadow ID", 212).getInt(); - mesaID = config.get("Biome IDs", "Mesa ID", 213).getInt(); - moorID = config.get("Biome IDs", "Moor ID", 214).getInt(); - mountainID = config.get("Biome IDs", "Mountain ID", 215).getInt(); - mysticGroveID = config.get("Biome IDs", "Mystic Grove ID", 216).getInt(); - oasisID = config.get("Biome IDs", "Oasis ID", 217).getInt(); - ominousWoodsID = config.get("Biome IDs", "Ominous Woods ID", 218).getInt(); - orchardID = config.get("Biome IDs", "Orchard ID", 219).getInt(); - originValleyID = config.get("Biome IDs", "Origin Valley ID", 220).getInt(); - outbackID = config.get("Biome IDs", "Outback ID", 221).getInt(); - pastureID = config.get("Biome IDs", "Pasture ID", 222).getInt(); - prairieID = config.get("Biome IDs", "Prairie ID", 223).getInt(); - promisedLandID = config.get("Biome IDs", "Promised Land ID", 224).getInt(); - quagmireID = config.get("Biome IDs", "Quagmire ID", 225).getInt(); - rainforestID = config.get("Biome IDs", "Rainforest ID", 226).getInt(); - redwoodForestID = config.get("Biome IDs", "Redwood Forest ID", 227).getInt(); - sacredSpringsID = config.get("Biome IDs", "Sacred Springs ID", 228).getInt(); - savannaID = config.get("Biome IDs", "Savanna ID", 229).getInt(); - scrublandID = config.get("Biome IDs", "Scrubland ID", 230).getInt(); - seasonalForestID = config.get("Biome IDs", "Seasonal Forest ID", 231).getInt(); - shieldID = config.get("Biome IDs", "Shield ID", 232).getInt(); - shoreID = config.get("Biome IDs", "Shore ID", 233).getInt(); - shrublandID = config.get("Biome IDs", "Shrubland ID", 234).getInt(); - snowyWoodsID = config.get("Biome IDs", "Snowy Woods ID", 235).getInt(); - spruceWoodsID = config.get("Biome IDs", "Spruce Woods ID", 236).getInt(); - steppeID = config.get("Biome IDs", "Steppe ID", 237).getInt(); - swampwoodsID = config.get("Biome IDs", "Swampwoods ID", 238).getInt(); - temperateRainforestID = config.get("Biome IDs", "Temperate Rainforest ID", 239).getInt(); - thicketID = config.get("Biome IDs", "Thicket ID", 240).getInt(); - tropicalRainforestID = config.get("Biome IDs", "Tropical Rainforest ID", 241).getInt(); - tropicsID = config.get("Biome IDs", "Tropics ID", 242).getInt(); - tundraID = config.get("Biome IDs", "Tundra ID", 243).getInt(); - volcanoID = config.get("Biome IDs", "Volcano ID", 244).getInt(); - wastelandID = config.get("Biome IDs", "Wasteland ID", 245).getInt(); - wetlandID = config.get("Biome IDs", "Wetland ID", 246).getInt(); - woodlandID = config.get("Biome IDs", "Woodland ID", 247).getInt(); - - plainsNewID = config.get("Biome IDs", "Plains (New) ID", 248).getInt(); - desertNewID = config.get("Biome IDs", "Desert (New) ID", 249).getInt(); - forestNewID = config.get("Biome IDs", "Forest (New) ID", 250).getInt(); - taigaNewID = config.get("Biome IDs", "Taiga (New) ID", 251).getInt(); - swamplandNewID = config.get("Biome IDs", "Swampland (New) ID", 252).getInt(); - extremeHillsNewID = config.get("Biome IDs", "Extreme Hills (New) ID", 253).getInt(); - jungleNewID = config.get("Biome IDs", "Jungle (New) ID", 254).getInt(); - - System.out.println("[BiomesOPlenty] Generated Config!"); - } - catch (Exception e) - { - FMLLog.log(Level.SEVERE, e, "Biomes O Plenty has had a problem loading its configuration"); - } - finally - { - config.save(); - } - } -} diff --git a/src/minecraft/biomesoplenty/configuration/BOPCrafting.java b/src/minecraft/biomesoplenty/configuration/BOPCrafting.java deleted file mode 100644 index e1cec11c4..000000000 --- a/src/minecraft/biomesoplenty/configuration/BOPCrafting.java +++ /dev/null @@ -1,212 +0,0 @@ -package biomesoplenty.configuration; - -import static com.google.common.base.Preconditions.checkNotNull; -import net.minecraft.block.Block; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.FurnaceRecipes; -import net.minecraftforge.oredict.OreDictionary; -import net.minecraftforge.oredict.ShapedOreRecipe; -import biomesoplenty.api.Blocks; -import biomesoplenty.api.Items; -import biomesoplenty.helpers.FurnaceFuel; -import cpw.mods.fml.common.registry.GameRegistry; - -public class BOPCrafting -{ - public static void init() - { - addOreRegistration(); - addCraftingRecipes(); - addSmeltingRecipes(); - } - - private static void addCraftingRecipes() - { - //Plants - GameRegistry.addShapelessRecipe(new ItemStack(Item.dyePowder, 2, 6), new Object[] {new ItemStack(Blocks.flowers.get(),1,1)}); - GameRegistry.addShapelessRecipe(new ItemStack(Item.dyePowder, 2, 13), new Object[] {new ItemStack(Blocks.flowers.get(),1,7)}); - GameRegistry.addShapelessRecipe(new ItemStack(Item.dyePowder, 2, 14), new Object[] {new ItemStack(Blocks.flowers.get(),1,5)}); - GameRegistry.addShapelessRecipe(new ItemStack(Item.dyePowder, 2, 9), new Object[] {new ItemStack(Blocks.flowers.get(),1,6)}); - GameRegistry.addShapelessRecipe(new ItemStack(Item.dyePowder, 2, 7), new Object[] {new ItemStack(Blocks.flowers.get(),1,9)}); - GameRegistry.addShapelessRecipe(new ItemStack(Item.dyePowder, 2, 12), new Object[] {new ItemStack(Blocks.flowers.get(),1,4)}); - GameRegistry.addShapelessRecipe(new ItemStack(Item.dyePowder, 2, 5), new Object[] {new ItemStack(Blocks.flowers.get(),1,8)}); - GameRegistry.addShapelessRecipe(new ItemStack(Item.dyePowder, 2, 8), new Object[] {new ItemStack(Items.miscItems.get(), 1, 1)}); - - //Brick stairs and slabs - GameRegistry.addRecipe(new ItemStack(Blocks.stoneSingleSlab.get(), 6, 0), new Object[] {"RRR", 'R', new ItemStack(Blocks.redRock.get(),1,1)}); - GameRegistry.addRecipe(new ItemStack(Blocks.redCobbleStairs.get(), 4), new Object[] {" R", " RR", "RRR", 'R', new ItemStack(Blocks.redRock.get(),1,1)}); - GameRegistry.addRecipe(new ItemStack(Blocks.redCobbleStairs.get(), 4), new Object[] {"R ", "RR ", "RRR", 'R', new ItemStack(Blocks.redRock.get(),1,1)}); - GameRegistry.addRecipe(new ItemStack(Blocks.stoneSingleSlab.get(), 6, 1), new Object[] {"RRR", 'R', new ItemStack(Blocks.redRock.get(),1,2)}); - GameRegistry.addRecipe(new ItemStack(Blocks.redBricksStairs.get(), 4), new Object[] {" R", " RR", "RRR", 'R', new ItemStack(Blocks.redRock.get(),1,2)}); - GameRegistry.addRecipe(new ItemStack(Blocks.redBricksStairs.get(), 4), new Object[] {"R ", "RR ", "RRR", 'R', new ItemStack(Blocks.redRock.get(),1,2)}); - GameRegistry.addRecipe(new ItemStack(Blocks.stoneSingleSlab.get(), 6, 2), new Object[] {"RRR", 'R', Blocks.mudBrick.get()}); - GameRegistry.addRecipe(new ItemStack(Blocks.mudBricksStairs.get(), 4), new Object[] {" R", " RR", "RRR", 'R', Blocks.mudBrick.get()}); - GameRegistry.addRecipe(new ItemStack(Blocks.mudBricksStairs.get(), 4), new Object[] {"R ", "RR ", "RRR", 'R', Blocks.mudBrick.get()}); - - //Redwood - GameRegistry.addShapelessRecipe(new ItemStack(Blocks.planks.get(), 4, 8), new Object[] {new ItemStack(Blocks.logs3.get(),1,0)}); - GameRegistry.addRecipe(new ItemStack(Blocks.woodenSingleSlab2.get(), 6, 0), new Object[] {"RRR", 'R', new ItemStack(Blocks.planks.get(), 1, 8)}); - GameRegistry.addRecipe(new ItemStack(Blocks.redwoodStairs.get(), 4), new Object[] {" R", " RR", "RRR", 'R', new ItemStack(Blocks.planks.get(), 1, 8)}); - GameRegistry.addRecipe(new ItemStack(Blocks.redwoodStairs.get(), 4), new Object[] {"R ", "RR ", "RRR", 'R', new ItemStack(Blocks.planks.get(), 1, 8)}); - - //Willow - GameRegistry.addShapelessRecipe(new ItemStack(Blocks.planks.get(), 4, 9), new Object[] {new ItemStack(Blocks.logs3.get(),1,1)}); - GameRegistry.addRecipe(new ItemStack(Blocks.woodenSingleSlab2.get(),6,1), new Object[] {"RRR", 'R', new ItemStack(Blocks.planks.get(), 1, 9)}); - GameRegistry.addRecipe(new ItemStack(Blocks.willowStairs.get(), 4), new Object[] {" R", " RR", "RRR", 'R', new ItemStack(Blocks.planks.get(), 1, 9)}); - GameRegistry.addRecipe(new ItemStack(Blocks.willowStairs.get(), 4), new Object[] {"R ", "RR ", "RRR", 'R', new ItemStack(Blocks.planks.get(), 1, 9)}); - - //Acacia - GameRegistry.addShapelessRecipe(new ItemStack(Blocks.planks.get(), 4, 0), new Object[] {new ItemStack(Blocks.logs1.get(),1,0)}); - GameRegistry.addRecipe(new ItemStack(Blocks.woodenSingleSlab1.get(),6,0), new Object[] {"RRR", 'R', new ItemStack(Blocks.planks.get(), 1, 0)}); - GameRegistry.addRecipe(new ItemStack(Blocks.acaciaStairs.get(), 4), new Object[] {" R", " RR", "RRR", 'R', new ItemStack(Blocks.planks.get(), 1, 0)}); - GameRegistry.addRecipe(new ItemStack(Blocks.acaciaStairs.get(), 4), new Object[] {"R ", "RR ", "RRR", 'R', new ItemStack(Blocks.planks.get(), 1, 0)}); - - //Fir - GameRegistry.addShapelessRecipe(new ItemStack(Blocks.planks.get(), 4, 3), new Object[] {new ItemStack(Blocks.logs1.get(),1,3)}); - GameRegistry.addRecipe(new ItemStack(Blocks.woodenSingleSlab1.get(),6,3), new Object[] {"RRR", 'R', new ItemStack(Blocks.planks.get(), 1, 3)}); - GameRegistry.addRecipe(new ItemStack(Blocks.firStairs.get(), 4), new Object[] {" R", " RR", "RRR", 'R', new ItemStack(Blocks.planks.get(), 1, 3)}); - GameRegistry.addRecipe(new ItemStack(Blocks.firStairs.get(), 4), new Object[] {"R ", "RR ", "RRR", 'R', new ItemStack(Blocks.planks.get(), 1, 3)}); - - //Cherry - GameRegistry.addShapelessRecipe(new ItemStack(Blocks.planks.get(), 4, 1), new Object[] {new ItemStack(Blocks.logs1.get(),1,1)}); - GameRegistry.addRecipe(new ItemStack(Blocks.woodenSingleSlab1.get(),6,1), new Object[] {"RRR", 'R', new ItemStack(Blocks.planks.get(), 1, 1)}); - GameRegistry.addRecipe(new ItemStack(Blocks.cherryStairs.get(), 4), new Object[] {" R", " RR", "RRR", 'R', new ItemStack(Blocks.planks.get(), 1, 1)}); - GameRegistry.addRecipe(new ItemStack(Blocks.cherryStairs.get(), 4), new Object[] {"R ", "RR ", "RRR", 'R', new ItemStack(Blocks.planks.get(), 1, 1)}); - - //Dark - GameRegistry.addShapelessRecipe(new ItemStack(Blocks.planks.get(), 4, 2), new Object[] {new ItemStack(Blocks.logs1.get(),1,2)}); - GameRegistry.addRecipe(new ItemStack(Blocks.woodenSingleSlab1.get(),6,2), new Object[] {"RRR", 'R', new ItemStack(Blocks.planks.get(), 1, 2)}); - GameRegistry.addRecipe(new ItemStack(Blocks.darkStairs.get(), 4), new Object[] {" R", " RR", "RRR", 'R', new ItemStack(Blocks.planks.get(), 1, 2)}); - GameRegistry.addRecipe(new ItemStack(Blocks.darkStairs.get(), 4), new Object[] {"R ", "RR ", "RRR", 'R', new ItemStack(Blocks.planks.get(), 1, 2)}); - - //Magic - GameRegistry.addShapelessRecipe(new ItemStack(Blocks.planks.get(), 1, 5), new Object[] {new ItemStack(Blocks.logs2.get(),1,1)}); - GameRegistry.addRecipe(new ItemStack(Blocks.woodenSingleSlab1.get(),6,5), new Object[] {"RRR", 'R', new ItemStack(Blocks.planks.get(), 1, 5)}); - GameRegistry.addRecipe(new ItemStack(Blocks.magicStairs.get(), 4), new Object[] {" R", " RR", "RRR", 'R', new ItemStack(Blocks.planks.get(), 1, 5)}); - GameRegistry.addRecipe(new ItemStack(Blocks.magicStairs.get(), 4), new Object[] {"R ", "RR ", "RRR", 'R', new ItemStack(Blocks.planks.get(), 1, 5)}); - - //Palm - GameRegistry.addShapelessRecipe(new ItemStack(Blocks.planks.get(), 4, 7), new Object[] {new ItemStack(Blocks.logs2.get(),1,3)}); - GameRegistry.addRecipe(new ItemStack(Blocks.woodenSingleSlab1.get(),6,7), new Object[] {"RRR", 'R', new ItemStack(Blocks.planks.get(), 1, 7)}); - GameRegistry.addRecipe(new ItemStack(Blocks.palmStairs.get(), 4), new Object[] {" R", " RR", "RRR", 'R', new ItemStack(Blocks.planks.get(), 1, 7)}); - GameRegistry.addRecipe(new ItemStack(Blocks.palmStairs.get(), 4), new Object[] {"R ", "RR ", "RRR", 'R', new ItemStack(Blocks.planks.get(), 1, 7)}); - - //Mangrove - GameRegistry.addShapelessRecipe(new ItemStack(Blocks.planks.get(), 4, 6), new Object[] {new ItemStack(Blocks.logs2.get(),1,2)}); - GameRegistry.addRecipe(new ItemStack(Blocks.woodenSingleSlab1.get(),6,6), new Object[] {"RRR", 'R', new ItemStack(Blocks.planks.get(), 1, 6)}); - GameRegistry.addRecipe(new ItemStack(Blocks.mangroveStairs.get(), 4), new Object[] {" R", " RR", "RRR", 'R', new ItemStack(Blocks.planks.get(), 1, 6)}); - GameRegistry.addRecipe(new ItemStack(Blocks.mangroveStairs.get(), 4), new Object[] {"R ", "RR ", "RRR", 'R', new ItemStack(Blocks.planks.get(), 1, 6)}); - - //Holy - GameRegistry.addShapelessRecipe(new ItemStack(Blocks.woodenDoubleSlab1.get(),4,4), new Object[] {new ItemStack(Blocks.logs2.get(),1,0)}); - GameRegistry.addRecipe(new ItemStack(Blocks.woodenSingleSlab1.get(),6,4), new Object[] {"RRR", 'R', new ItemStack(Blocks.woodenDoubleSlab1.get(),1,4)}); - GameRegistry.addRecipe(new ItemStack(Blocks.holyStairs.get(), 4), new Object[] {" R", " RR", "RRR", 'R', new ItemStack(Blocks.woodenDoubleSlab1.get(),1,4)}); - GameRegistry.addRecipe(new ItemStack(Blocks.holyStairs.get(), 4), new Object[] {"R ", "RR ", "RRR", 'R', new ItemStack(Blocks.woodenDoubleSlab1.get(),1,4)}); - - GameRegistry.addRecipe(new ItemStack(Blocks.redRock.get(), 4, 2), new Object[] {"RR", "RR", 'R', new ItemStack(Blocks.redRock.get(),1,0)}); - - GameRegistry.addRecipe(new ItemStack(Block.cloth, 1, 0), new Object[] {"CCC", "CCC", "CCC", 'C', new ItemStack(Blocks.plants.get(), 1, 7)}); - GameRegistry.addRecipe(new ItemStack(Item.coal, 1), new Object[] {"AAA", "AAA", "AAA", 'A', new ItemStack(Items.miscItems.get(), 1, 1)}); - GameRegistry.addRecipe(new ItemStack(Blocks.mud.get(), 1), new Object[] {"MM", "MM", 'M', Items.mudball.get()}); - GameRegistry.addRecipe(new ItemStack(Blocks.amethystOre.get(), 1, 1), new Object[] {"AAA", "AAA", "AAA", 'A', new ItemStack(Items.miscItems.get(), 1, 2)}); - GameRegistry.addRecipe(new ItemStack(Blocks.ash.get(), 1), new Object[] {"AA", "AA", 'A', new ItemStack(Items.miscItems.get(), 1, 1)}); - GameRegistry.addRecipe(new ItemStack(Blocks.mudBrick.get(), 1), new Object[] {"MM", "MM", 'M', new ItemStack(Items.miscItems.get(), 1, 3)}); -// GameRegistry.addRecipe(new ItemStack(Blocks.planks.get(), 1, 10), new Object[] {"###", "###", "###", '#', Blocks.bamboo.get()}); - GameRegistry.addRecipe(new ItemStack(Block.cobblestoneMossy, 1, 0), new Object[] {"MMM", "MCM", "MMM", 'M', Blocks.moss.get(), 'C', Block.cobblestone}); - GameRegistry.addRecipe(new ItemStack(Block.stoneBrick, 1, 1), new Object[] {"MMM", "MSM", "MMM", 'M', Blocks.moss.get(), 'S', Block.stoneBrick}); - - //Mud Tools and Armor - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.pickaxeMud.get(), 1), new Object [] {"###", " X ", " X ", Character.valueOf('#'), Items.mudball.get(), Character.valueOf('X'), "stickWood" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.shovelMud.get(), 1), new Object [] {"#", "X", "X", Character.valueOf('#'), Items.mudball.get(), Character.valueOf('X'), "stickWood"})); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.swordMud.get(), 1), new Object [] {"#", "#", "X", Character.valueOf('#'), Items.mudball.get(), Character.valueOf('X'), "stickWood"})); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.axeMud.get(), 1), new Object [] {"##", "#X", " X", Character.valueOf('#'), Items.mudball.get(), Character.valueOf('X'), "stickWood"})); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.hoeMud.get(), 1), new Object [] {"##", " X", " X", Character.valueOf('#'), Items.mudball.get(), Character.valueOf('X'), "stickWood"})); - GameRegistry.addRecipe(new ItemStack(Items.helmetMud.get(), 1), new Object [] {"###", "# #", Character.valueOf('#'), Items.mudball.get()}); - GameRegistry.addRecipe(new ItemStack(Items.chestplateMud.get(), 1), new Object [] {"# #", "###", "###", Character.valueOf('#'), Items.mudball.get()}); - GameRegistry.addRecipe(new ItemStack(Items.leggingsMud.get(), 1), new Object [] {"###", "# #", "# #", Character.valueOf('#'), Items.mudball.get()}); - GameRegistry.addRecipe(new ItemStack(Items.bootsMud.get(), 1), new Object [] {"# #", "# #", Character.valueOf('#'), Items.mudball.get()}); - - //Amethyst Tools and Armor - GameRegistry.addRecipe(new ItemStack(Items.pickaxeAmethyst.get(), 1), new Object [] {"###", " X ", " X ", Character.valueOf('#'), new ItemStack(Items.miscItems.get(), 1, 2), Character.valueOf('X'), Item.ingotIron}); - GameRegistry.addRecipe(new ItemStack(Items.shovelAmethyst.get(), 1), new Object [] {"#", "X", "X", Character.valueOf('#'), new ItemStack(Items.miscItems.get(), 1, 2), Character.valueOf('X'), Item.ingotIron}); - GameRegistry.addRecipe(new ItemStack(Items.swordAmethyst.get(), 1), new Object [] {"#", "#", "X", Character.valueOf('#'), new ItemStack(Items.miscItems.get(), 1, 2), Character.valueOf('X'), Item.ingotIron}); - GameRegistry.addRecipe(new ItemStack(Items.axeAmethyst.get(), 1), new Object [] {"##", "#X", " X", Character.valueOf('#'), new ItemStack(Items.miscItems.get(), 1, 2), Character.valueOf('X'), Item.ingotIron}); - GameRegistry.addRecipe(new ItemStack(Items.hoeAmethyst.get(), 1), new Object [] {"##", " X", " X", Character.valueOf('#'), new ItemStack(Items.miscItems.get(), 1, 2), Character.valueOf('X'), Item.ingotIron}); - GameRegistry.addRecipe(new ItemStack(Items.helmetAmethyst.get(), 1), new Object [] {"###", "# #", Character.valueOf('#'), new ItemStack(Items.miscItems.get(), 1, 2)}); - GameRegistry.addRecipe(new ItemStack(Items.chestplateAmethyst.get(), 1), new Object [] {"# #", "###", "###", Character.valueOf('#'), new ItemStack(Items.miscItems.get(), 1, 2)}); - GameRegistry.addRecipe(new ItemStack(Items.leggingsAmethyst.get(), 1), new Object [] {"###", "# #", "# #", Character.valueOf('#'), new ItemStack(Items.miscItems.get(), 1, 2)}); - GameRegistry.addRecipe(new ItemStack(Items.bootsAmethyst.get(), 1), new Object [] {"# #", "# #", Character.valueOf('#'), new ItemStack(Items.miscItems.get(), 1, 2)}); - - //Other - GameRegistry.addRecipe(new ItemStack(Item.wheat, 1), new Object[] {"###", '#', new ItemStack(Blocks.plants.get(),1,6)}); - GameRegistry.addRecipe(new ItemStack(Items.ancientStaff.get(), 1, 0), new Object[] {"T", "P", "H", 'T', new ItemStack(Items.ancientStaff.get(), 1, 3), 'P', new ItemStack(Items.ancientStaff.get(), 1, 2), 'H', new ItemStack(Items.ancientStaff.get(), 1, 1)}); - GameRegistry.addRecipe(new ItemStack(Items.ancientStaff.get(), 1, 1), new Object[] {"ISI", "ISI", " E ", 'I', Item.ingotIron, 'S', Block.whiteStone, 'E', Item.emerald}); - GameRegistry.addRecipe(new ItemStack(Items.ancientStaff.get(), 1, 2), new Object[] {"ISI", "IRI", "ISI", 'I', Item.ingotIron, 'S', Block.whiteStone, 'R', Item.redstone}); - GameRegistry.addRecipe(new ItemStack(Items.ancientStaff.get(), 1, 3), new Object[] {" N ", "IDI", "ISI", 'I', Item.ingotIron, 'S', Block.whiteStone, 'D', Item.diamond, 'N', Item.netherStar}); - GameRegistry.addRecipe(new ItemStack(Items.enderporter.get(), 1, 0), new Object[] {"IOI", "OAO", "IOI", 'I', Item.eyeOfEnder, 'O', Block.obsidian, 'A', new ItemStack(Blocks.amethystOre.get(), 1, 1)}); - GameRegistry.addRecipe(new ItemStack(Items.bopDiscMud.get(), 1), new Object[] {" M ", "MDM", " M ", 'M', Items.mudball.get(), 'D', Items.bopDisc.get()}); - - GameRegistry.addRecipe(new ItemStack(Blocks.planks.get(), 1, 10), new Object[] {"##", "##", '#', Blocks.bamboo.get()}); - - GameRegistry.addShapelessRecipe(new ItemStack(Blocks.bamboo.get(), 4), new Object[] {new ItemStack(Blocks.planks.get(), 1, 10)}); - GameRegistry.addShapelessRecipe(new ItemStack(Items.miscItems.get(), 9, 2), new Object[] {new ItemStack(Blocks.amethystOre.get(), 1, 1)}); - - //Plants - GameRegistry.addShapelessRecipe(new ItemStack(Items.shroomPowder.get(), 2), new Object[] {new ItemStack(Blocks.flowers.get(),1,10)}); - } - - private static void addSmeltingRecipes() - { - GameRegistry.addSmelting(Block.dirt.blockID, new ItemStack(Blocks.driedDirt.get(), 1), 0F); - FurnaceRecipes.smelting().addSmelting(Blocks.redRock.get().blockID, 1, new ItemStack(Blocks.redRock.get(), 1, 0), 0.1F); - FurnaceRecipes.smelting().addSmelting(Blocks.flowers.get().blockID, 11, new ItemStack(Item.dyePowder, 1, 2), 0.2F); - FurnaceRecipes.smelting().addSmelting(Items.mudball.get().itemID, 0, new ItemStack(Items.miscItems.get(), 1, 0), 0F); - - FurnaceRecipes.smelting().addSmelting(Blocks.logs1.get().blockID, new ItemStack(Item.coal, 1, 1), 15F); - FurnaceRecipes.smelting().addSmelting(Blocks.logs2.get().blockID, new ItemStack(Item.coal, 1, 1), 15F); - for (int i = 0; i < 3; ++i) - FurnaceRecipes.smelting().addSmelting(Blocks.logs3.get().blockID, i, new ItemStack(Item.coal, 1, 1), 15F); - - GameRegistry.registerFuelHandler(checkNotNull(new FurnaceFuel())); - } - - private static void addOreRegistration() - { - //Ore Registration - for (int i = 0; i < 10; ++i) - OreDictionary.registerOre("plankWood", new ItemStack(Blocks.planks.get(), 1, i)); - - OreDictionary.registerOre("stickWood", new ItemStack(Blocks.bamboo.get())); - - OreDictionary.registerOre("treeSapling", new ItemStack(Blocks.saplings.get(), 1, OreDictionary.WILDCARD_VALUE)); - OreDictionary.registerOre("treeSapling", new ItemStack(Blocks.colorizedSaplings.get(), 1, OreDictionary.WILDCARD_VALUE)); - - OreDictionary.registerOre("woodLog", new ItemStack(Blocks.logs1.get(), 1, OreDictionary.WILDCARD_VALUE)); - OreDictionary.registerOre("woodLog", new ItemStack(Blocks.logs2.get(), 1, OreDictionary.WILDCARD_VALUE)); - for (int i = 0; i < 3; ++i) - OreDictionary.registerOre("woodLog", new ItemStack(Blocks.logs3.get(), 1, i)); - - OreDictionary.registerOre("slabWood", new ItemStack(Blocks.woodenSingleSlab1.get())); - OreDictionary.registerOre("slabWood", new ItemStack(Blocks.woodenSingleSlab2.get())); - - OreDictionary.registerOre("slabWood", new ItemStack(Blocks.woodenDoubleSlab1.get())); - OreDictionary.registerOre("slabWood", new ItemStack(Blocks.woodenDoubleSlab2.get())); - - OreDictionary.registerOre("stairWood", new ItemStack(Blocks.redwoodStairs.get())); - OreDictionary.registerOre("stairWood", new ItemStack(Blocks.willowStairs.get())); - OreDictionary.registerOre("stairWood", new ItemStack(Blocks.acaciaStairs.get())); - OreDictionary.registerOre("stairWood", new ItemStack(Blocks.firStairs.get())); - OreDictionary.registerOre("stairWood", new ItemStack(Blocks.cherryStairs.get())); - OreDictionary.registerOre("stairWood", new ItemStack(Blocks.darkStairs.get())); - OreDictionary.registerOre("stairWood", new ItemStack(Blocks.magicStairs.get())); - OreDictionary.registerOre("stairWood", new ItemStack(Blocks.palmStairs.get())); - OreDictionary.registerOre("stairWood", new ItemStack(Blocks.mangroveStairs.get())); - OreDictionary.registerOre("stairWood", new ItemStack(Blocks.holyStairs.get())); - - OreDictionary.registerOre("treeLeaves", new ItemStack(Blocks.leavesColorized.get(), 1, OreDictionary.WILDCARD_VALUE)); - OreDictionary.registerOre("treeLeaves", new ItemStack(Blocks.leaves1.get(), 1, OreDictionary.WILDCARD_VALUE)); - OreDictionary.registerOre("treeLeaves", new ItemStack(Blocks.leaves2.get(), 1, OreDictionary.WILDCARD_VALUE)); - OreDictionary.registerOre("treeLeaves", new ItemStack(Blocks.leavesFruit.get(), 1, OreDictionary.WILDCARD_VALUE)); - } -} diff --git a/src/minecraft/biomesoplenty/configuration/BOPEntities.java b/src/minecraft/biomesoplenty/configuration/BOPEntities.java deleted file mode 100644 index edaa68888..000000000 --- a/src/minecraft/biomesoplenty/configuration/BOPEntities.java +++ /dev/null @@ -1,61 +0,0 @@ -package biomesoplenty.configuration; - -import com.google.common.base.Optional; - -import biomesoplenty.BiomesOPlenty; -import biomesoplenty.api.Biomes; -import biomesoplenty.api.Entities; -import biomesoplenty.items.projectiles.EntityMudball; -import biomesoplenty.mobs.EntityJungleSpider; -import biomesoplenty.mobs.EntityRosester; -import cpw.mods.fml.common.registry.EntityRegistry; -import cpw.mods.fml.common.registry.LanguageRegistry; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityEggInfo; -import net.minecraft.entity.EntityList; -import net.minecraft.entity.EnumCreatureType; - -public class BOPEntities { - - //Eggs - public static int eggIdCounter = 300; - - //Find the first available egg ID after our egg ID counter - public static int getUniqueEntityEggId() { - do { - eggIdCounter++; - } while (EntityList.getStringFromID(eggIdCounter) != null); - - return eggIdCounter; - } - - @SuppressWarnings("unchecked") - public static void registerEntityEgg(Class entity, int primaryColor, int secondaryColor) { - int id = getUniqueEntityEggId(); - EntityList.IDtoClassMapping.put(id, entity); - EntityList.entityEggs.put(id, new EntityEggInfo(id, primaryColor, secondaryColor)); - } - - public static void init() - { - EntityRegistry.registerModEntity(EntityMudball.class, "MudBall", EntityRegistry.findGlobalUniqueEntityId(), BiomesOPlenty.instance, 80, 3, true); - EntityRegistry.registerModEntity(EntityJungleSpider.class, "JungleSpider", BOPConfiguration.jungleSpiderID, BiomesOPlenty.instance, 80, 3, true); - EntityRegistry.registerModEntity(EntityRosester.class, "Rosester", BOPConfiguration.rosesterID, BiomesOPlenty.instance, 80, 3, true); - - registerEntityEgg(EntityJungleSpider.class, 5147192, 11013646); - registerEntityEgg(EntityRosester.class, 14831439, 16756224); - - if (Biomes.jungleNew.isPresent() && Biomes.tropicalRainforest.isPresent() && Biomes.oasis.isPresent() && Biomes.tropics.isPresent()) - { - EntityRegistry.addSpawn(EntityJungleSpider.class, 8, 1, 3, EnumCreatureType.monster, Biomes.jungleNew.get(), Biomes.tropicalRainforest.get(), Biomes.oasis.get(), Biomes.tropics.get()); - } - - if (Biomes.garden.isPresent()) - { - EntityRegistry.addSpawn(EntityRosester.class, 10, 2, 4, EnumCreatureType.creature, Biomes.garden.get()); - } - - LanguageRegistry.instance().addStringLocalization("entity.BiomesOPlenty.JungleSpider.name", "en_US", "Jungle Spider"); - LanguageRegistry.instance().addStringLocalization("entity.BiomesOPlenty.Rosester.name", "en_US", "Rosester"); - } -} diff --git a/src/minecraft/biomesoplenty/configuration/BOPItems.java b/src/minecraft/biomesoplenty/configuration/BOPItems.java deleted file mode 100644 index 7cab2653e..000000000 --- a/src/minecraft/biomesoplenty/configuration/BOPItems.java +++ /dev/null @@ -1,173 +0,0 @@ -package biomesoplenty.configuration; - -import java.util.Map; -import java.util.logging.Level; - -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.item.EnumArmorMaterial; -import net.minecraft.item.EnumToolMaterial; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraftforge.common.EnumHelper; -import net.minecraftforge.common.MinecraftForge; -import biomesoplenty.BiomesOPlenty; -import biomesoplenty.api.Items; -import biomesoplenty.armor.ArmorAmethyst; -import biomesoplenty.armor.ArmorMuddy; -import biomesoplenty.items.ItemBOP; -import biomesoplenty.items.ItemBOPAncientStaff; -import biomesoplenty.items.ItemBOPAxe; -import biomesoplenty.items.ItemBOPHoe; -import biomesoplenty.items.ItemBOPMudball; -import biomesoplenty.items.ItemBOPPickaxe; -import biomesoplenty.items.ItemBOPRecord; -import biomesoplenty.items.ItemBOPRecordMud; -import biomesoplenty.items.ItemBOPSpade; -import biomesoplenty.items.ItemBOPSword; -import biomesoplenty.items.ItemEnderporter; -import biomesoplenty.items.ItemShroomPowder; -import biomesoplenty.items.overrides.ItemShears; - -import com.google.common.base.Optional; - -import cpw.mods.fml.common.FMLLog; -import cpw.mods.fml.common.registry.GameData; -import cpw.mods.fml.common.registry.LanguageRegistry; -import cpw.mods.fml.relauncher.ReflectionHelper; - -public class BOPItems { - public static Item shears; - - // Material declaration - public static EnumArmorMaterial EnumArmorMaterialMud; - public static EnumToolMaterial EnumToolMaterialMud; - public static EnumArmorMaterial EnumArmorMaterialAmethyst; - public static EnumToolMaterial EnumToolMaterialAmethyst; - - public static int clearItem(Item var1) - { - return clearItem(var1.itemID); - } - - public static int clearItem(Item var1, boolean var2) - { - return clearItem(var1.itemID, var2); - } - - public static int clearItem(int var1) - { - return clearItem(var1, true); - } - - public static int clearItem(int var1, boolean var2) - { - if (var1 < 0 || var1 >= Item.itemsList.length) - { - FMLLog.log(Level.SEVERE, "BiomesOPlenty has an invalid item ID (%i)", new Object[] {Integer.valueOf(var1)}); - } - - if (var2 && Item.itemsList[var1] == null) - { - FMLLog.log(Level.WARNING, "BiomesOPlenty tried clearing an already cleared item (%i)", new Object[] {Integer.valueOf(var1)}); - } - - Item.itemsList[var1] = null; - Map var3 = (Map)ReflectionHelper.getPrivateValue(GameData.class, null, new String[] {"idMap"}); - var3.remove(Integer.valueOf(var1)); - return var1 - 256; - } - - public static void init() - { - // Material declaration - EnumArmorMaterialMud = EnumHelper.addArmorMaterial("MUD", 2, new int[]{1, 1, 1, 1}, 5); - EnumToolMaterialMud = EnumHelper.addToolMaterial("MUD", 0, 32, 0.5F, 0, 1); - EnumArmorMaterialAmethyst = EnumHelper.addArmorMaterial("AMETHYST", 40, new int[]{6, 12, 10, 6}, 20); - EnumToolMaterialAmethyst = EnumHelper.addToolMaterial("AMETHYST", 4, 2013, 15.0F, 5, 16); - - //Override Items - shears = (new ItemShears(clearItem(Item.shears))).setUnlocalizedName("shears").setCreativeTab(CreativeTabs.tabTools); - - initializeItems(); - - MinecraftForge.setToolClass(Items.shovelAmethyst.get(), "shovel", 4); - MinecraftForge.setToolClass(Items.pickaxeAmethyst.get(), "pickaxe", 4); - MinecraftForge.setToolClass(Items.axeAmethyst.get(), "axe", 4); - - registerNames(); - } - - private static void initializeItems() - { - // Item declaration - Items.shroomPowder = Optional.of(new ItemShroomPowder(BOPConfiguration.shroomPowderID, 1, 0.5F, false)); - Items.miscItems = Optional.of(new ItemBOP(BOPConfiguration.miscItemsID)); - Items.mudball = Optional.of(new ItemBOPMudball(BOPConfiguration.mudballID)); - - Items.ancientStaff = Optional.of(new ItemBOPAncientStaff(BOPConfiguration.ancientStaffID)); - - Items.enderporter = Optional.of(new ItemEnderporter(BOPConfiguration.enderporterID)); - - Items.bopDisc = Optional.of(new ItemBOPRecord(BOPConfiguration.bopDiscID, "bopdisc")); - Items.bopDiscMud = Optional.of(new ItemBOPRecordMud(BOPConfiguration.bopDiscMudID, "bopdiscmud")); - - Items.swordMud = Optional.of((new ItemBOPSword(BOPConfiguration.swordMudID, EnumToolMaterialMud, 0)).setUnlocalizedName("swordMud")); - Items.shovelMud = Optional.of((new ItemBOPSpade(BOPConfiguration.shovelMudID, EnumToolMaterialMud, 0)).setUnlocalizedName("shovelMud")); - Items.pickaxeMud = Optional.of((new ItemBOPPickaxe(BOPConfiguration.pickaxeMudID, EnumToolMaterialMud, 0)).setUnlocalizedName("pickaxeMud")); - Items.axeMud = Optional.of((new ItemBOPAxe(BOPConfiguration.axeMudID, EnumToolMaterialMud, 0)).setUnlocalizedName("hatchetMud")); - Items.hoeMud = Optional.of((new ItemBOPHoe(BOPConfiguration.hoeMudID, EnumToolMaterialMud, 0)).setUnlocalizedName("hoeMud")); - Items.helmetMud = Optional.of((new ArmorMuddy(BOPConfiguration.helmetMudID, EnumArmorMaterialMud, BiomesOPlenty.proxy.addArmor("mud"), 0)).setUnlocalizedName("helmetMud")); - Items.chestplateMud = Optional.of((new ArmorMuddy(BOPConfiguration.chestplateMudID, EnumArmorMaterialMud, BiomesOPlenty.proxy.addArmor("mud"), 1)).setUnlocalizedName("chestplateMud")); - Items.leggingsMud = Optional.of((new ArmorMuddy(BOPConfiguration.leggingsMudID, EnumArmorMaterialMud, BiomesOPlenty.proxy.addArmor("mud"), 2)).setUnlocalizedName("leggingsMud")); - Items.bootsMud = Optional.of((new ArmorMuddy(BOPConfiguration.bootsMudID, EnumArmorMaterialMud, BiomesOPlenty.proxy.addArmor("mud"), 3)).setUnlocalizedName("bootsMud")); - - Items.swordAmethyst = Optional.of((new ItemBOPSword(BOPConfiguration.swordAmethystID, EnumToolMaterialAmethyst, 1)).setUnlocalizedName("swordAmethyst")); - Items.shovelAmethyst = Optional.of((new ItemBOPSpade(BOPConfiguration.shovelAmethystID, EnumToolMaterialAmethyst, 1)).setUnlocalizedName("shovelAmethyst")); - Items.pickaxeAmethyst = Optional.of((new ItemBOPPickaxe(BOPConfiguration.pickaxeAmethystID, EnumToolMaterialAmethyst, 1)).setUnlocalizedName("pickaxeAmethyst")); - Items.axeAmethyst = Optional.of((new ItemBOPAxe(BOPConfiguration.axeAmethystID, EnumToolMaterialAmethyst, 1)).setUnlocalizedName("hatchetAmethyst")); - Items.hoeAmethyst = Optional.of((new ItemBOPHoe(BOPConfiguration.hoeAmethystID, EnumToolMaterialAmethyst, 1)).setUnlocalizedName("hoeAmethyst")); - Items.helmetAmethyst = Optional.of((new ArmorAmethyst(BOPConfiguration.helmetAmethystID, EnumArmorMaterialAmethyst, BiomesOPlenty.proxy.addArmor("amethyst"), 0)).setUnlocalizedName("helmetAmethyst")); - Items.chestplateAmethyst = Optional.of((new ArmorAmethyst(BOPConfiguration.chestplateAmethystID, EnumArmorMaterialAmethyst, BiomesOPlenty.proxy.addArmor("amethyst"), 1)).setUnlocalizedName("chestplateAmethyst")); - Items.leggingsAmethyst = Optional.of((new ArmorAmethyst(BOPConfiguration.leggingsAmethystID, EnumArmorMaterialAmethyst, BiomesOPlenty.proxy.addArmor("amethyst"), 2)).setUnlocalizedName("leggingsAmethyst")); - Items.bootsAmethyst = Optional.of((new ArmorAmethyst(BOPConfiguration.bootsAmethystID, EnumArmorMaterialAmethyst, BiomesOPlenty.proxy.addArmor("amethyst"), 3)).setUnlocalizedName("bootsAmethyst")); - } - - private static void registerNames() - { - LanguageRegistry.addName(Items.shroomPowder.get(), "Shroom Powder"); - LanguageRegistry.addName(Items.mudball.get(), "Mud Ball"); - LanguageRegistry.addName(new ItemStack(Items.miscItems.get(), 1, 0), "Mud Brick"); - LanguageRegistry.addName(new ItemStack(Items.miscItems.get(), 1, 2), "Amethyst"); - LanguageRegistry.addName(new ItemStack(Items.miscItems.get(), 1, 1), "Pile of Ashes"); - - LanguageRegistry.addName(Items.pickaxeMud.get(), "Muddy Pickaxe"); - LanguageRegistry.addName(Items.axeMud.get(), "Muddy Axe"); - LanguageRegistry.addName(Items.shovelMud.get(), "Muddy Shovel"); - LanguageRegistry.addName(Items.swordMud.get(), "Muddy Sword"); - LanguageRegistry.addName(Items.hoeMud.get(), "Muddy Hoe"); - LanguageRegistry.addName(Items.helmetMud.get(), "Muddy Helmet"); - LanguageRegistry.addName(Items.chestplateMud.get(), "Muddy Chestplate"); - LanguageRegistry.addName(Items.leggingsMud.get(), "Muddy Leggings"); - LanguageRegistry.addName(Items.bootsMud.get(), "Muddy Boots"); - - LanguageRegistry.addName(new ItemStack(Items.ancientStaff.get(), 1, 0), "Ancient Staff"); - LanguageRegistry.addName(new ItemStack(Items.ancientStaff.get(), 1, 1), "Ancient Staff Handle"); - LanguageRegistry.addName(new ItemStack(Items.ancientStaff.get(), 1, 2), "Ancient Staff Pole"); - LanguageRegistry.addName(new ItemStack(Items.ancientStaff.get(), 1, 3), "Ancient Staff Topper"); - - LanguageRegistry.addName(Items.enderporter.get(), "Enderporter"); - - LanguageRegistry.addName(Items.bopDisc.get(), "Music Disc"); - LanguageRegistry.addName(Items.bopDiscMud.get(), "Music Disc"); - - LanguageRegistry.addName(Items.pickaxeAmethyst.get(), "Amethyst Pickaxe"); - LanguageRegistry.addName(Items.axeAmethyst.get(), "Amethyst Axe"); - LanguageRegistry.addName(Items.shovelAmethyst.get(), "Amethyst Shovel"); - LanguageRegistry.addName(Items.swordAmethyst.get(), "Amethyst Sword"); - LanguageRegistry.addName(Items.hoeAmethyst.get(), "Amethyst Hoe"); - LanguageRegistry.addName(Items.helmetAmethyst.get(), "Amethyst Helmet"); - LanguageRegistry.addName(Items.chestplateAmethyst.get(), "Amethyst Chestplate"); - LanguageRegistry.addName(Items.leggingsAmethyst.get(), "Amethyst Leggings"); - LanguageRegistry.addName(Items.bootsAmethyst.get(), "Amethyst Boots"); - } -} diff --git a/src/minecraft/biomesoplenty/configuration/BOPVanillaCompat.java b/src/minecraft/biomesoplenty/configuration/BOPVanillaCompat.java deleted file mode 100644 index 0667887c9..000000000 --- a/src/minecraft/biomesoplenty/configuration/BOPVanillaCompat.java +++ /dev/null @@ -1,54 +0,0 @@ -package biomesoplenty.configuration; - -import biomesoplenty.api.Blocks; -import biomesoplenty.api.Items; -import biomesoplenty.items.projectiles.DispenserBehaviorMudball; -import net.minecraft.block.BlockDispenser; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.WeightedRandomChestContent; -import net.minecraftforge.common.ChestGenHooks; - -public class BOPVanillaCompat { - - public static void init() - { - // Dispenser behavior for mud balls - BlockDispenser.dispenseBehaviorRegistry.putObject(Items.mudball.get(), new DispenserBehaviorMudball()); - - ChestGenHooks dungeon; - ChestGenHooks mineshaft; - ChestGenHooks strongholdCorridor; - ChestGenHooks strongholdCrossing; - ChestGenHooks village; - - dungeon = ChestGenHooks.getInfo(ChestGenHooks.DUNGEON_CHEST); - mineshaft = ChestGenHooks.getInfo(ChestGenHooks.MINESHAFT_CORRIDOR); - strongholdCorridor = ChestGenHooks.getInfo(ChestGenHooks.STRONGHOLD_CORRIDOR); - strongholdCrossing = ChestGenHooks.getInfo(ChestGenHooks.STRONGHOLD_CROSSING); - village = ChestGenHooks.getInfo(ChestGenHooks.VILLAGE_BLACKSMITH); - - dungeon.addItem(new WeightedRandomChestContent(new ItemStack(Items.bopDisc.get()), 1, 1, 2)); - dungeon.addItem(new WeightedRandomChestContent(new ItemStack(Blocks.moss.get()), 2, 8, 50)); - dungeon.addItem(new WeightedRandomChestContent(new ItemStack(Item.dyePowder, 1, 2), 4, 12, 75)); - - mineshaft.addItem(new WeightedRandomChestContent(new ItemStack(Items.miscItems.get(), 1, 1), 2, 8, 25)); - mineshaft.addItem(new WeightedRandomChestContent(new ItemStack(Blocks.plants.get(),1,5), 4, 6, 15)); - mineshaft.addItem(new WeightedRandomChestContent(new ItemStack(Items.mudball.get(), 1, 0), 2, 8, 10)); - mineshaft.addItem(new WeightedRandomChestContent(new ItemStack(Item.dyePowder, 1, 3), 4, 12, 75)); - - strongholdCorridor.addItem(new WeightedRandomChestContent(new ItemStack(Blocks.moss.get()), 2, 8, 50)); - strongholdCorridor.addItem(new WeightedRandomChestContent(new ItemStack(Blocks.flowers.get(),1,3), 1, 4, 25)); - strongholdCorridor.addItem(new WeightedRandomChestContent(new ItemStack(Blocks.flowers.get(),1,2), 1, 4, 25)); - - strongholdCrossing.addItem(new WeightedRandomChestContent(new ItemStack(Blocks.moss.get()), 2, 8, 50)); - strongholdCrossing.addItem(new WeightedRandomChestContent(new ItemStack(Blocks.flowers.get(),1,3), 1, 4, 25)); - strongholdCrossing.addItem(new WeightedRandomChestContent(new ItemStack(Blocks.flowers.get(),1,2), 1, 4, 25)); - - village.addItem(new WeightedRandomChestContent(new ItemStack(Blocks.plants.get(), 1, 6), 4, 10, 75)); - village.addItem(new WeightedRandomChestContent(new ItemStack(Items.shroomPowder.get()), 1, 5, 50)); - village.addItem(new WeightedRandomChestContent(new ItemStack(Blocks.plants.get(),1,5), 2, 6, 25)); - village.addItem(new WeightedRandomChestContent(new ItemStack(Item.dyePowder, 1, 2), 4, 12, 75)); - village.addItem(new WeightedRandomChestContent(new ItemStack(Item.dyePowder, 1, 3), 4, 12, 75)); - } -} diff --git a/src/minecraft/biomesoplenty/helpers/AchievementHelper.java b/src/minecraft/biomesoplenty/helpers/AchievementHelper.java deleted file mode 100644 index 247e5cef6..000000000 --- a/src/minecraft/biomesoplenty/helpers/AchievementHelper.java +++ /dev/null @@ -1,119 +0,0 @@ -package biomesoplenty.helpers; - -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.stats.Achievement; -import net.minecraftforge.common.AchievementPage; -import net.minecraftforge.event.ForgeSubscribe; -import net.minecraftforge.event.entity.player.EntityItemPickupEvent; -import biomesoplenty.api.Blocks; -import biomesoplenty.api.Items; -import biomesoplenty.configuration.BOPConfiguration; -import cpw.mods.fml.common.registry.LanguageRegistry; - -public class AchievementHelper -{ - // Achievement declaration - private static Achievement achFlower; - private static Achievement achRedRock; - private static Achievement achThorn; - private static Achievement achAsh; - private static Achievement achOrigin; - private static Achievement achPromised; - private static Achievement achMud; - private static Achievement achShroom; - private static Achievement achBarley; - private static Achievement achMoss; - - public static AchievementPage pageBOP; - - @ForgeSubscribe - public void EntityItemPickupEvent(EntityItemPickupEvent event) - { - onItemPickup(event.entityPlayer, event.item.getEntityItem()); - } - - public static void init() - { - achFlower = (new Achievement(3057, "achFlower", 0, 0, Block.plantRed, null)).registerAchievement(); - achRedRock = (new Achievement(3058, "achRedRock", -1, 2, new ItemStack(Blocks.redRock.get(),1,0), achFlower)).registerAchievement(); - achThorn = (new Achievement(3059, "achThorn", 2, 1, new ItemStack(Blocks.plants.get(),1,5), achFlower)).registerAchievement(); - achAsh = (new Achievement(3060, "achAsh", 1, 3, new ItemStack(Items.miscItems.get(), 1, 1), achFlower)).registerAchievement(); - achOrigin = (new Achievement(3061, "achOrigin", 0, 5, Blocks.originGrass.get(), achFlower)).setSpecial().registerAchievement(); - achPromised = (new Achievement(3062, "achPromised", 0, -5, Blocks.holyGrass.get(), achFlower)).setSpecial().registerAchievement(); - achMud = (new Achievement(3063, "achMud", -2, -1, Items.mudball.get(), achFlower)).registerAchievement(); - achShroom = (new Achievement(3064, "achShroom", 1, -2, new ItemStack(Blocks.flowers.get(),1,10), achFlower)).registerAchievement(); - achBarley = (new Achievement(3065, "achBarley", -2, 4, new ItemStack(Blocks.plants.get(),1,6), achFlower)).registerAchievement(); - achMoss = (new Achievement(3066, "achMoss", -1, -3, Blocks.moss.get(), achFlower)).registerAchievement(); - - pageBOP = new AchievementPage("Biomes O\' Plenty", new Achievement[] {achFlower, achRedRock, achThorn, achAsh, achOrigin, achPromised, achMud, achShroom, achBarley, achMoss}); - AchievementPage.registerAchievementPage(pageBOP); - - // Add Achievement registration - addAchievementDesc("achFlower", "Flower Child", "Pick some flowers!"); - addAchievementDesc("achRedRock", "Red Rocky Mountain High", "Dig out some red rocks."); - addAchievementDesc("achThorn", "Rather Thorny...", "Don\'t get cut!"); - addAchievementDesc("achAsh", "Ash-ievement", "Get it? \'Cause it\'s ash."); - addAchievementDesc("achOrigin", "Alpha...", "Get some grass from the Origin Valley."); - addAchievementDesc("achPromised", "...Omega", "Welcome to the Promised Land!"); - addAchievementDesc("achMud", "Sticky Situation", "I just had these boots cleaned!"); - addAchievementDesc("achShroom", "Trippin\'", "Don\'t try this at home, kids!"); - addAchievementDesc("achBarley", "Fields Of Gold", "Upon the fields of barley."); - addAchievementDesc("achMoss", "Mossman", "Mothman's long-lost cousin."); - } - - // Achievement checker - private static void onItemPickup(EntityPlayer player, ItemStack item) - { - if (BOPConfiguration.achievements == true) - { - if (item.itemID == Blocks.flowers.get().blockID || item.itemID == Block.plantRed.blockID || item.itemID == Block.plantYellow.blockID) - { - player.addStat(achFlower, 1); - } - if (item.itemID == Blocks.redRock.get().blockID) - { - player.addStat(achRedRock, 1); - } - if (item.itemID == Blocks.plants.get().blockID && item.getItemDamage() == 5) - { - player.addStat(achThorn, 1); - } - if (item.itemID == Items.miscItems.get().itemID && item.getItemDamage() == 1) - { - player.addStat(achAsh, 1); - } - if (item.itemID == Blocks.originGrass.get().blockID) - { - player.addStat(achOrigin, 1); - } - if (item.itemID == Blocks.holyGrass.get().blockID || item.itemID == Blocks.holyStone.get().blockID) - { - player.addStat(achPromised, 1); - } - if (item.itemID == Items.mudball.get().itemID) - { - player.addStat(achMud, 1); - } - if (item.itemID == Blocks.flowers.get().blockID && item.getItemDamage() == 10) - { - player.addStat(achShroom, 1); - } - if (item.itemID == Blocks.planks.get().blockID && item.getItemDamage() == 6) - { - player.addStat(achBarley, 1); - } - if (item.itemID == Blocks.moss.get().blockID) - { - player.addStat(achMoss, 1); - } - } - } - - private static void addAchievementDesc(String ach, String name, String desc) - { - LanguageRegistry.instance().addStringLocalization("achievement." + ach, "en_US", name); - LanguageRegistry.instance().addStringLocalization("achievement." + ach + ".desc", "en_US", desc); - } -} \ No newline at end of file diff --git a/src/minecraft/biomesoplenty/helpers/BiomeCacheBlockPromised.java b/src/minecraft/biomesoplenty/helpers/BiomeCacheBlockPromised.java deleted file mode 100644 index a7488b8a5..000000000 --- a/src/minecraft/biomesoplenty/helpers/BiomeCacheBlockPromised.java +++ /dev/null @@ -1,48 +0,0 @@ -package biomesoplenty.helpers; - -import net.minecraft.world.biome.BiomeGenBase; - -public class BiomeCacheBlockPromised -{ - /** An array of chunk temperatures saved by this cache. */ - public float[] temperatureValues; - - /** An array of chunk rainfall values saved by this cache. */ - public float[] rainfallValues; - - /** The array of biome types stored in this BiomeCacheBlock. */ - public BiomeGenBase[] biomes; - - /** The x coordinate of the BiomeCacheBlock. */ - public int xPosition; - - /** The z coordinate of the BiomeCacheBlock. */ - public int zPosition; - - /** The last time this BiomeCacheBlock was accessed, in milliseconds. */ - public long lastAccessTime; - - /** The BiomeCache object that contains this BiomeCacheBlock */ - final BiomeCachePromised theBiomeCache; - - public BiomeCacheBlockPromised(BiomeCachePromised par1BiomeCache, int par2, int par3) - { - this.theBiomeCache = par1BiomeCache; - this.temperatureValues = new float[256]; - this.rainfallValues = new float[256]; - this.biomes = new BiomeGenBase[256]; - this.xPosition = par2; - this.zPosition = par3; - BiomeCachePromised.getChunkManager(par1BiomeCache).getTemperatures(this.temperatureValues, par2 << 4, par3 << 4, 16, 16); - BiomeCachePromised.getChunkManager(par1BiomeCache).getRainfall(this.rainfallValues, par2 << 4, par3 << 4, 16, 16); - BiomeCachePromised.getChunkManager(par1BiomeCache).getBiomeGenAt(this.biomes, par2 << 4, par3 << 4, 16, 16, false); - } - - /** - * Returns the BiomeGenBase related to the x, z position from the cache block. - */ - public BiomeGenBase getBiomeGenAt(int par1, int par2) - { - return this.biomes[par1 & 15 | (par2 & 15) << 4]; - } -} diff --git a/src/minecraft/biomesoplenty/helpers/BiomeCachePromised.java b/src/minecraft/biomesoplenty/helpers/BiomeCachePromised.java deleted file mode 100644 index 02f2e84f3..000000000 --- a/src/minecraft/biomesoplenty/helpers/BiomeCachePromised.java +++ /dev/null @@ -1,103 +0,0 @@ -package biomesoplenty.helpers; - -import java.util.ArrayList; -import java.util.List; - -import net.minecraft.util.LongHashMap; -import net.minecraft.world.biome.BiomeGenBase; - -public class BiomeCachePromised -{ - /** Reference to the WorldChunkManager */ - private final WorldChunkManagerPromised chunkManager; - - /** The last time this BiomeCache was cleaned, in milliseconds. */ - private long lastCleanupTime = 0L; - - /** - * The map of keys to BiomeCacheBlocks. Keys are based on the chunk x, z coordinates as (x | z << 32). - */ - private LongHashMap cacheMap = new LongHashMap(); - - /** The list of cached BiomeCacheBlocks */ - @SuppressWarnings("rawtypes") - private List cache = new ArrayList(); - - public BiomeCachePromised(WorldChunkManagerPromised par1WorldChunkManager) - { - this.chunkManager = par1WorldChunkManager; - } - - /** - * Returns a biome cache block at location specified. - */ - @SuppressWarnings("unchecked") - public BiomeCacheBlockPromised getBiomeCacheBlock(int par1, int par2) - { - par1 >>= 4; - par2 >>= 4; - long var3 = (long)par1 & 4294967295L | ((long)par2 & 4294967295L) << 32; - BiomeCacheBlockPromised var5 = (BiomeCacheBlockPromised)this.cacheMap.getValueByKey(var3); - - if (var5 == null) - { - var5 = new BiomeCacheBlockPromised(this, par1, par2); - this.cacheMap.add(var3, var5); - this.cache.add(var5); - } - - var5.lastAccessTime = System.currentTimeMillis(); - return var5; - } - - /** - * Returns the BiomeGenBase related to the x, z position from the cache. - */ - public BiomeGenBase getBiomeGenAt(int par1, int par2) - { - return this.getBiomeCacheBlock(par1, par2).getBiomeGenAt(par1, par2); - } - - /** - * Removes BiomeCacheBlocks from this cache that haven't been accessed in at least 30 seconds. - */ - public void cleanupCache() - { - long var1 = System.currentTimeMillis(); - long var3 = var1 - this.lastCleanupTime; - - if (var3 > 7500L || var3 < 0L) - { - this.lastCleanupTime = var1; - - for (int var5 = 0; var5 < this.cache.size(); ++var5) - { - BiomeCacheBlockPromised var6 = (BiomeCacheBlockPromised)this.cache.get(var5); - long var7 = var1 - var6.lastAccessTime; - - if (var7 > 30000L || var7 < 0L) - { - this.cache.remove(var5--); - long var9 = (long)var6.xPosition & 4294967295L | ((long)var6.zPosition & 4294967295L) << 32; - this.cacheMap.remove(var9); - } - } - } - } - - /** - * Returns the array of cached biome types in the BiomeCacheBlock at the given location. - */ - public BiomeGenBase[] getCachedBiomes(int par1, int par2) - { - return this.getBiomeCacheBlock(par1, par2).biomes; - } - - /** - * Get the world chunk manager object for a biome list. - */ - static WorldChunkManagerPromised getChunkManager(BiomeCachePromised par0BiomeCache) - { - return par0BiomeCache.chunkManager; - } -} diff --git a/src/minecraft/biomesoplenty/helpers/BonemealUse.java b/src/minecraft/biomesoplenty/helpers/BonemealUse.java deleted file mode 100644 index 1418e0560..000000000 --- a/src/minecraft/biomesoplenty/helpers/BonemealUse.java +++ /dev/null @@ -1,122 +0,0 @@ -package biomesoplenty.helpers; - -import net.minecraft.block.Block; -import net.minecraftforge.event.Event.Result; -import net.minecraftforge.event.ForgeSubscribe; -import net.minecraftforge.event.entity.player.BonemealEvent; -import biomesoplenty.api.Blocks; -import biomesoplenty.blocks.BlockBOPColorizedSapling; -import biomesoplenty.blocks.BlockBOPSapling; -import biomesoplenty.worldgen.WorldGenGiantFlowerRed; -import biomesoplenty.worldgen.WorldGenGiantFlowerYellow; - -public class BonemealUse -{ - - @ForgeSubscribe - public void onUseBonemeal(BonemealEvent event) - { - int meta = event.world.getBlockMetadata(event.X, event.Y, event.Z); - - if (event.ID == Blocks.saplings.get().blockID) - { - event.setResult(Result.ALLOW); - - if (!event.world.isRemote) - { - - switch (meta) - { - case 3: // Magic Sapling - if ((double)event.world.rand.nextFloat() < 0.10D) - ((BlockBOPSapling)Blocks.saplings.get()).growTree(event.world, event.X, event.Y, event.Z, event.world.rand); - break; - - case 7: // Holy Sapling - if ((double)event.world.rand.nextFloat() < 0.15D) - ((BlockBOPSapling)Blocks.saplings.get()).growTree(event.world, event.X, event.Y, event.Z, event.world.rand); - break; - - case 9: // Origin Sapling - ((BlockBOPSapling)Blocks.saplings.get()).growTree(event.world, event.X, event.Y, event.Z, event.world.rand); - break; - - default: - if ((double)event.world.rand.nextFloat() < 0.45D) - ((BlockBOPSapling)Blocks.saplings.get()).growTree(event.world, event.X, event.Y, event.Z, event.world.rand); - break; - } - - - } - } - else if (event.ID == Blocks.colorizedSaplings.get().blockID) - { - event.setResult(Result.ALLOW); - - if (!event.world.isRemote) - { - if ((double)event.world.rand.nextFloat() < 0.45D) - { - ((BlockBOPColorizedSapling)Blocks.colorizedSaplings.get()).growTree(event.world, event.X, event.Y, event.Z, event.world.rand); - } - } - } - else if (event.ID == Block.plantRed.blockID) - { - event.setResult(Result.ALLOW); - - if (!event.world.isRemote) - { - if ((double)event.world.rand.nextFloat() < 0.45D) - { - WorldGenGiantFlowerRed worldgengiantflowerred = new WorldGenGiantFlowerRed(); - worldgengiantflowerred.generate(event.world, event.world.rand, event.X, event.Y - 1, event.Z); - } - } - } - else if (event.ID == Block.plantYellow.blockID) - { - event.setResult(Result.ALLOW); - - if (!event.world.isRemote) - { - if ((double)event.world.rand.nextFloat() < 0.45D) - { - WorldGenGiantFlowerYellow worldgengiantfloweryellow = new WorldGenGiantFlowerYellow(); - worldgengiantfloweryellow.generate(event.world, event.world.rand, event.X, event.Y - 1, event.Z); - } - } - } - else if (event.ID == Blocks.holyGrass.get().blockID && event.world.getBlockMetadata(event.X, event.Y, event.Z) == 0) - { - int var13 = event.X; - int var14 = event.Y + 1; - int var15 = event.Z; - - for (int i1 = 0; i1 < 128; ++i1) - { - - for (int i2 = 0; i2 < i1 / 16; ++i2) - { - var13 += event.world.rand.nextInt(3) - 1; - var14 += (event.world.rand.nextInt(3) - 1) * event.world.rand.nextInt(3) / 2; - var15 += event.world.rand.nextInt(3) - 1; - } - - if (event.world.getBlockId(var13, var14, var15) == 0) - { - if (Blocks.plants.get().canBlockStay(event.world, var13, var14, var15)) - { - event.setResult(Result.ALLOW); - - if (!event.world.isRemote) - { - event.world.setBlock(var13, var14, var15, Blocks.plants.get().blockID, 4, 0x02); - } - } - } - } - } - } -} diff --git a/src/minecraft/biomesoplenty/helpers/ChunkProviderPromised.java b/src/minecraft/biomesoplenty/helpers/ChunkProviderPromised.java deleted file mode 100644 index 9bedb06a5..000000000 --- a/src/minecraft/biomesoplenty/helpers/ChunkProviderPromised.java +++ /dev/null @@ -1,474 +0,0 @@ -package biomesoplenty.helpers; - -import java.util.List; -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockSand; -import net.minecraft.entity.EnumCreatureType; -import net.minecraft.util.IProgressUpdate; -import net.minecraft.util.MathHelper; -import net.minecraft.world.ChunkPosition; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.chunk.Chunk; -import net.minecraft.world.chunk.IChunkProvider; -import net.minecraft.world.gen.NoiseGeneratorOctaves; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.Event.Result; -import net.minecraftforge.event.terraingen.ChunkProviderEvent; -import net.minecraftforge.event.terraingen.PopulateChunkEvent; -import net.minecraftforge.event.terraingen.TerrainGen; - -public class ChunkProviderPromised implements IChunkProvider -{ - @SuppressWarnings("unused") - private Random rand; - private Random endRNG; - private NoiseGeneratorOctaves noiseGen1; - private NoiseGeneratorOctaves noiseGen2; - private NoiseGeneratorOctaves noiseGen3; - public NoiseGeneratorOctaves noiseGen4; - public NoiseGeneratorOctaves noiseGen5; - private World endWorld; - private double[] densities; - - /** The biomes that are used to generate the chunk */ - private BiomeGenBase[] biomesForGeneration; - double[] noiseData1; - double[] noiseData2; - double[] noiseData3; - double[] noiseData4; - double[] noiseData5; - @SuppressWarnings("unused") - private double[] stoneNoise = new double[256]; - int[][] field_73203_h = new int[32][32]; - - public ChunkProviderPromised(World par1World, long par2) - { - this.endWorld = par1World; - this.endRNG = new Random(par2); - this.noiseGen1 = new NoiseGeneratorOctaves(this.endRNG, 16); - this.noiseGen2 = new NoiseGeneratorOctaves(this.endRNG, 16); - this.noiseGen3 = new NoiseGeneratorOctaves(this.endRNG, 8); - this.noiseGen4 = new NoiseGeneratorOctaves(this.endRNG, 10); - this.noiseGen5 = new NoiseGeneratorOctaves(this.endRNG, 16); - - NoiseGeneratorOctaves[] noiseGens = {noiseGen1, noiseGen2, noiseGen3, noiseGen4, noiseGen5}; - noiseGens = TerrainGen.getModdedNoiseGenerators(par1World, this.endRNG, noiseGens); - this.noiseGen1 = noiseGens[0]; - this.noiseGen2 = noiseGens[1]; - this.noiseGen3 = noiseGens[2]; - this.noiseGen4 = noiseGens[3]; - this.noiseGen5 = noiseGens[4]; - } - - public void generateTerrain(int par1, int par2, byte[] par3ArrayOfByte, BiomeGenBase[] par4ArrayOfBiomeGenBase) - { - byte var5 = 2; - int var6 = var5 + 1; - byte var7 = 33; - int var8 = var5 + 1; - this.densities = this.initializeNoiseField(this.densities, par1 * var5, 0, par2 * var5, var6, var7, var8); - - for (int var9 = 0; var9 < var5; ++var9) - { - for (int var10 = 0; var10 < var5; ++var10) - { - for (int var11 = 0; var11 < 32; ++var11) - { - double var12 = 0.25D; - double var14 = this.densities[((var9 + 0) * var8 + var10 + 0) * var7 + var11 + 0]; - double var16 = this.densities[((var9 + 0) * var8 + var10 + 1) * var7 + var11 + 0]; - double var18 = this.densities[((var9 + 1) * var8 + var10 + 0) * var7 + var11 + 0]; - double var20 = this.densities[((var9 + 1) * var8 + var10 + 1) * var7 + var11 + 0]; - double var22 = (this.densities[((var9 + 0) * var8 + var10 + 0) * var7 + var11 + 1] - var14) * var12; - double var24 = (this.densities[((var9 + 0) * var8 + var10 + 1) * var7 + var11 + 1] - var16) * var12; - double var26 = (this.densities[((var9 + 1) * var8 + var10 + 0) * var7 + var11 + 1] - var18) * var12; - double var28 = (this.densities[((var9 + 1) * var8 + var10 + 1) * var7 + var11 + 1] - var20) * var12; - - for (int var30 = 0; var30 < 4; ++var30) - { - double var31 = 0.125D; - double var33 = var14; - double var35 = var16; - double var37 = (var18 - var14) * var31; - double var39 = (var20 - var16) * var31; - - for (int var41 = 0; var41 < 8; ++var41) - { - int var42 = var41 + var9 * 8 << 11 | 0 + var10 * 8 << 7 | var11 * 4 + var30; - short var43 = 128; - double var44 = 0.125D; - double var46 = var33; - double var48 = (var35 - var33) * var44; - - for (int var50 = 0; var50 < 8; ++var50) - { - int var51 = 0; - - if (var46 > 0.0D) - { - var51 = Block.stone.blockID; - } - - par3ArrayOfByte[var42] = (byte)var51; - var42 += var43; - var46 += var48; - } - - var33 += var37; - var35 += var39; - } - - var14 += var22; - var16 += var24; - var18 += var26; - var20 += var28; - } - } - } - } - } - - public void replaceBlocksForBiome(int par1, int par2, byte[] par3ArrayOfByte, BiomeGenBase[] par4ArrayOfBiomeGenBase) - { - byte var98 = 63; - - ChunkProviderEvent.ReplaceBiomeBlocks event = new ChunkProviderEvent.ReplaceBiomeBlocks(this, par1, par2, par3ArrayOfByte, par4ArrayOfBiomeGenBase); - MinecraftForge.EVENT_BUS.post(event); - if (event.getResult() == Result.DENY) return; - - for (int var5 = 0; var5 < 16; ++var5) - { - for (int var6 = 0; var6 < 16; ++var6) - { - BiomeGenBase var99 = par4ArrayOfBiomeGenBase[var6 + var5 * 16]; - byte var7 = 1; - int var8 = -1; - byte var9 = var99.topBlock; - byte var10 = var99.fillerBlock; - - for (int var11 = 127; var11 >= 0; --var11) - { - int var12 = (var6 * 16 + var5) * 128 + var11; - byte var13 = par3ArrayOfByte[var12]; - - if (var13 == 0) - { - var8 = -1; - } - else if (var13 == Block.stone.blockID) - { - if (var8 == -1) - { - if (var7 <= 0) - { - var9 = 0; - var10 = (byte)Blocks.holyStone.get().blockID; - } - else if (var11 >= var98 - 4 && var11 <= var98 + 1) - { - var9 = var99.topBlock; - var10 = var99.fillerBlock; - } - - if (var11 < var98 && var9 == 0) - { - var9 = (byte)Block.waterStill.blockID; - } - - var8 = var7; - - if (var11 >= 0) - { - par3ArrayOfByte[var12] = var9; - } - else - { - par3ArrayOfByte[var12] = var10; - } - } - else if (var8 > 0) - { - --var8; - par3ArrayOfByte[var12] = var10; - } - } - } - } - } - } - - /** - * loads or generates the chunk at the chunk location specified - */ - public Chunk loadChunk(int par1, int par2) - { - return this.provideChunk(par1, par2); - } - - /** - * Will return back a chunk, if it doesn't exist and its not a MP client it will generates all the blocks for the - * specified chunk from the map seed and chunk seed - */ - public Chunk provideChunk(int par1, int par2) - { - this.endRNG.setSeed((long)par1 * 341873128712L + (long)par2 * 132897987541L); - byte[] var3 = new byte[32768]; - this.biomesForGeneration = this.endWorld.getWorldChunkManager().loadBlockGeneratorData(this.biomesForGeneration, par1 * 16, par2 * 16, 16, 16); - this.generateTerrain(par1, par2, var3, this.biomesForGeneration); - this.replaceBlocksForBiome(par1, par2, var3, this.biomesForGeneration); - Chunk var4 = new Chunk(this.endWorld, var3, par1, par2); - byte[] var5 = var4.getBiomeArray(); - - for (int var6 = 0; var6 < var5.length; ++var6) - { - var5[var6] = (byte)this.biomesForGeneration[var6].biomeID; - } - - var4.generateSkylightMap(); - return var4; - } - - /** - * generates a subset of the level's terrain data. Takes 7 arguments: the [empty] noise array, the position, and the - * size. - */ - private double[] initializeNoiseField(double[] par1ArrayOfDouble, int par2, int par3, int par4, int par5, int par6, int par7) - { - ChunkProviderEvent.InitNoiseField event = new ChunkProviderEvent.InitNoiseField(this, par1ArrayOfDouble, par2, par3, par4, par5, par6, par7); - MinecraftForge.EVENT_BUS.post(event); - if (event.getResult() == Result.DENY) return event.noisefield; - - if (par1ArrayOfDouble == null) - { - par1ArrayOfDouble = new double[par5 * par6 * par7]; - } - - double var8 = 684.412D; - double var10 = 684.412D; - this.noiseData4 = this.noiseGen4.generateNoiseOctaves(this.noiseData4, par2, par4, par5, par7, 1.121D, 1.121D, 0.5D); - this.noiseData5 = this.noiseGen5.generateNoiseOctaves(this.noiseData5, par2, par4, par5, par7, 200.0D, 200.0D, 0.5D); - var8 *= 2.0D; - this.noiseData1 = this.noiseGen3.generateNoiseOctaves(this.noiseData1, par2, par3, par4, par5, par6, par7, var8 / 80.0D, var10 / 160.0D, var8 / 80.0D); - this.noiseData2 = this.noiseGen1.generateNoiseOctaves(this.noiseData2, par2, par3, par4, par5, par6, par7, var8, var10, var8); - this.noiseData3 = this.noiseGen2.generateNoiseOctaves(this.noiseData3, par2, par3, par4, par5, par6, par7, var8, var10, var8); - int var12 = 0; - int var13 = 0; - - for (int var14 = 0; var14 < par5; ++var14) - { - for (int var15 = 0; var15 < par7; ++var15) - { - double var16 = (this.noiseData4[var13] + 256.0D) / 512.0D; - - if (var16 > 1.0D) - { - var16 = 1.0D; - } - - double var18 = this.noiseData5[var13] / 8000.0D; - - if (var18 < 0.0D) - { - var18 = -var18 * 0.3D; - } - - var18 = var18 * 3.0D - 2.0D; - float var20 = (float)(var14 + par2 - 0) / 1.0F; - float var21 = (float)(var15 + par4 - 0) / 1.0F; - float var22 = 100.0F - MathHelper.sqrt_float(var20 * var20 + var21 * var21) * 8.0F; - - if (var22 > 80.0F) - { - var22 = 80.0F; - } - - if (var22 < -100.0F) - { - var22 = -100.0F; - } - - if (var18 > 1.0D) - { - var18 = 1.0D; - } - - var18 /= 8.0D; - var18 = 0.0D; - - if (var16 < 0.0D) - { - var16 = 0.0D; - } - - var16 += 0.5D; - var18 = var18 * (double)par6 / 16.0D; - ++var13; - double var23 = (double)par6 / 2.0D; - - for (int var25 = 0; var25 < par6; ++var25) - { - double var26 = 0.0D; - double var28 = ((double)var25 - var23) * 8.0D / var16; - - if (var28 < 0.0D) - { - var28 *= -1.0D; - } - - double var30 = this.noiseData2[var12] / 512.0D; - double var32 = this.noiseData3[var12] / 512.0D; - double var34 = (this.noiseData1[var12] / 10.0D + 1.0D) / 2.0D; - - if (var34 < 0.0D) - { - var26 = var30; - } - else if (var34 > 1.0D) - { - var26 = var32; - } - else - { - var26 = var30 + (var32 - var30) * var34; - } - - var26 -= 8.0D; - var26 += (double)var22; - byte var36 = 2; - double var37; - - if (var25 > par6 / 2 - var36) - { - var37 = (double)((float)(var25 - (par6 / 2 - var36)) / 64.0F); - - if (var37 < 0.0D) - { - var37 = 0.0D; - } - - if (var37 > 1.0D) - { - var37 = 1.0D; - } - - var26 = var26 * (1.0D - var37) + -3000.0D * var37; - } - - var36 = 8; - - if (var25 < var36) - { - var37 = (double)((float)(var36 - var25) / ((float)var36 - 1.0F)); - var26 = var26 * (1.0D - var37) + -30.0D * var37; - } - - par1ArrayOfDouble[var12] = var26; - ++var12; - } - } - } - - return par1ArrayOfDouble; - } - - /** - * Checks to see if a chunk exists at x, y - */ - public boolean chunkExists(int par1, int par2) - { - return true; - } - - /** - * Populates chunk with ores etc etc - */ - public void populate(IChunkProvider par1IChunkProvider, int par2, int par3) - { - BlockSand.fallInstantly = true; - - MinecraftForge.EVENT_BUS.post(new PopulateChunkEvent.Pre(par1IChunkProvider, endWorld, endWorld.rand, par2, par3, false)); - - int var4 = par2 * 16; - int var5 = par3 * 16; - BiomeGenBase var6 = this.endWorld.getBiomeGenForCoords(var4 + 16, var5 + 16); - var6.decorate(this.endWorld, this.endWorld.rand, var4, var5); - - MinecraftForge.EVENT_BUS.post(new PopulateChunkEvent.Post(par1IChunkProvider, endWorld, endWorld.rand, par2, par3, false)); - - BlockSand.fallInstantly = false; - } - - /** - * Two modes of operation: if passed true, save all Chunks in one go. If passed false, save up to two chunks. - * Return true if all chunks have been saved. - */ - public boolean saveChunks(boolean par1, IProgressUpdate par2IProgressUpdate) - { - return true; - } - - /** - * Unloads the 100 oldest chunks from memory, due to a bug with chunkSet.add() never being called it thinks the list - * is always empty and will not remove any chunks. - */ - - public boolean unloadQueuedChunks() - { - return false; - } - - public boolean unload100OldestChunks() - { - return false; - } - - /** - * Returns if the IChunkProvider supports saving. - */ - public boolean canSave() - { - return true; - } - - /** - * Converts the instance data to a readable string. - */ - public String makeString() - { - return "RandomLevelSource"; - } - - /** - * Returns a list of creatures of the specified type that can spawn at the given location. - */ - @SuppressWarnings("rawtypes") - public List getPossibleCreatures(EnumCreatureType par1EnumCreatureType, int par2, int par3, int par4) - { - BiomeGenBase var5 = this.endWorld.getBiomeGenForCoords(par2, par4); - return var5 == null ? null : var5.getSpawnableList(par1EnumCreatureType); - } - - /** - * Returns the location of the closest structure of the specified type. If not found returns null. - */ - public ChunkPosition findClosestStructure(World par1World, String par2Str, int par3, int par4, int par5) - { - return null; - } - - public int getLoadedChunkCount() - { - return 0; - } - - public void recreateStructures(int par1, int par2) {} - - @Override - public void func_104112_b() {} -} diff --git a/src/minecraft/biomesoplenty/helpers/CreativeTabsBOP.java b/src/minecraft/biomesoplenty/helpers/CreativeTabsBOP.java deleted file mode 100644 index d44e78852..000000000 --- a/src/minecraft/biomesoplenty/helpers/CreativeTabsBOP.java +++ /dev/null @@ -1,21 +0,0 @@ -package biomesoplenty.helpers; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.item.ItemStack; - -public class CreativeTabsBOP extends CreativeTabs -{ - public CreativeTabsBOP(int position, String tabID) - { - super(position, tabID); //The constructor for your tab - } - - @Override - public ItemStack getIconItemStack() - { - return new ItemStack(Blocks.saplings.get(),1,6); - } -} diff --git a/src/minecraft/biomesoplenty/helpers/FurnaceFuel.java b/src/minecraft/biomesoplenty/helpers/FurnaceFuel.java deleted file mode 100644 index a82d676c7..000000000 --- a/src/minecraft/biomesoplenty/helpers/FurnaceFuel.java +++ /dev/null @@ -1,81 +0,0 @@ -package biomesoplenty.helpers; - -import net.minecraft.item.ItemStack; -import biomesoplenty.api.Blocks; -import biomesoplenty.api.Items; -import cpw.mods.fml.common.IFuelHandler; - -public class FurnaceFuel implements IFuelHandler { - - @Override - public int getBurnTime(ItemStack fuel) { - return addFuel(fuel.itemID, fuel.getItemDamage()); - } - - // Add Fuel rates - private static int addFuel(int par1, int par2) - { - if(par1 == Blocks.colorizedSaplings.get().blockID) - { - return 100; - } - if(par1 == Blocks.woodenSingleSlab1.get().blockID) - { - return 150; - } - if(par1 == Blocks.redwoodStairs.get().blockID) - { - return 300; - } - if(par1 == Blocks.woodenSingleSlab2.get().blockID) - { - return 150; - } - if(par1 == Blocks.willowStairs.get().blockID) - { - return 300; - } - if(par1 == Blocks.saplings.get().blockID) - { - return 100; - } - if(par1 == Blocks.firStairs.get().blockID) - { - return 300; - } - if(par1 == Blocks.acaciaStairs.get().blockID) - { - return 300; - } - if(par1 == Blocks.cherryStairs.get().blockID) - { - return 300; - } - if(par1 == Blocks.darkStairs.get().blockID) - { - return 300; - } - if(par1 == Blocks.magicStairs.get().blockID) - { - return 300; - } - if(par1 == Blocks.palmStairs.get().blockID) - { - return 300; - } - if(par1 == Blocks.mangroveStairs.get().blockID) - { - return 300; - } - if(par1 == Blocks.holyStairs.get().blockID) - { - return 300; - } - if(par1 == Items.miscItems.get().itemID && par2 == 1) - { - return 400; - } - - return 0; - } -} \ No newline at end of file diff --git a/src/minecraft/biomesoplenty/helpers/TeleporterPromised.java b/src/minecraft/biomesoplenty/helpers/TeleporterPromised.java deleted file mode 100644 index 9fbb91841..000000000 --- a/src/minecraft/biomesoplenty/helpers/TeleporterPromised.java +++ /dev/null @@ -1,808 +0,0 @@ -package biomesoplenty.helpers; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.entity.Entity; -import net.minecraft.util.Direction; -import net.minecraft.util.LongHashMap; -import net.minecraft.util.MathHelper; -import net.minecraft.world.ChunkCoordIntPair; -import net.minecraft.world.PortalPosition; -import net.minecraft.world.Teleporter; -import net.minecraft.world.WorldServer; - -public class TeleporterPromised extends Teleporter -{ - private final WorldServer worldServerInstance; - private final Random random; - private final LongHashMap field_85191_c = new LongHashMap(); - @SuppressWarnings("rawtypes") - private final List field_85190_d = new ArrayList(); - - public TeleporterPromised(WorldServer par1WorldServer) - { - super(par1WorldServer); - this.worldServerInstance = par1WorldServer; - this.random = new Random(par1WorldServer.getSeed()); - } - - @SuppressWarnings("unused") - @Override - public void placeInPortal(Entity par1Entity, double par2, double par4, double par6, float par8) - { - if (this.worldServerInstance.provider.dimensionId != 1) - { - if (!this.placeInExistingPortal(par1Entity, par2, par4, par6, par8)) - { - this.makePortal(par1Entity); - this.placeInExistingPortal(par1Entity, par2, par4, par6, par8); - } - } - else - { - int var9 = 1; - int var10 = 31; - int var11 = 0; - byte var12 = 1; - byte var13 = 0; - - for (int var14 = -2; var14 <= 2; ++var14) - { - for (int var15 = -2; var15 <= 2; ++var15) - { - for (int var16 = -1; var16 < 3; ++var16) - { - int var17 = var9 + var15 * var12 + var14 * var13; - int var18 = var10 + var16; - int var19 = var11 + var15 * var13 - var14 * var12; - boolean var20 = var16 < 0; - //this.worldServerInstance.setBlockWithNotify(var17, var18, var19, var20 ? Block.whiteStone.blockID : 0); - - int var99 = 32; - - this.worldServerInstance.setBlock(-1, 62 - var99, 1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 62 - var99, 1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 62 - var99, 1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 62 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 62 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 62 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-1, 62 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-1, 62 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 62 - var99, 0, Block.whiteStone.blockID); - - this.worldServerInstance.setBlock(-1, 63 - var99, 2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 63 - var99, 2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 63 - var99, 2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(2, 63 - var99, 1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(2, 63 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(2, 63 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 63 - var99, -2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 63 - var99, -2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-1, 63 - var99, -2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-2, 63 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-2, 63 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-2, 63 - var99, 1, Block.whiteStone.blockID); - - this.worldServerInstance.setBlock(-1, 64 - var99, 2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 64 - var99, 2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 64 - var99, 2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(2, 64 - var99, 1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(2, 64 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(2, 64 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 64 - var99, -2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 64 - var99, -2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-1, 64 - var99, -2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-2, 64 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-2, 64 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-2, 64 - var99, 1, Block.whiteStone.blockID); - - this.worldServerInstance.setBlock(-1, 65 - var99, 2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 65 - var99, 2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 65 - var99, 2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(2, 65 - var99, 1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(2, 65 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(2, 65 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 65 - var99, -2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 65 - var99, -2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-1, 65 - var99, -2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-2, 65 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-2, 65 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-2, 65 - var99, 1, Block.whiteStone.blockID); - - this.worldServerInstance.setBlock(-1, 66 - var99, 1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 66 - var99, 1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 66 - var99, 1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 66 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 66 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 66 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-1, 66 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-1, 66 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 66 - var99, 0, Block.whiteStone.blockID); - - this.worldServerInstance.setBlock(-1, 63 - var99, 1, 0); - this.worldServerInstance.setBlock(0, 63 - var99, 1, 0); - this.worldServerInstance.setBlock(1, 63 - var99, 1, 0); - this.worldServerInstance.setBlock(1, 63 - var99, 0, 0); - this.worldServerInstance.setBlock(1, 63 - var99, -1, 0); - this.worldServerInstance.setBlock(0, 63 - var99, -1, 0); - this.worldServerInstance.setBlock(-1, 63 - var99, -1, 0); - this.worldServerInstance.setBlock(-1, 63 - var99, 0, 0); - this.worldServerInstance.setBlock(0, 63 - var99, 0, 0); - - this.worldServerInstance.setBlock(-1, 64 - var99, 1, 0); - this.worldServerInstance.setBlock(0, 64 - var99, 1, 0); - this.worldServerInstance.setBlock(1, 64 - var99, 1, 0); - this.worldServerInstance.setBlock(1, 64 - var99, 0, 0); - this.worldServerInstance.setBlock(1, 64 - var99, -1, 0); - this.worldServerInstance.setBlock(0, 64 - var99, -1, 0); - this.worldServerInstance.setBlock(-1, 64 - var99, -1, 0); - this.worldServerInstance.setBlock(-1, 64 - var99, 0, 0); - - this.worldServerInstance.setBlock(-1, 65 - var99, 1, 0); - this.worldServerInstance.setBlock(0, 65 - var99, 1, 0); - this.worldServerInstance.setBlock(1, 65 - var99, 1, 0); - this.worldServerInstance.setBlock(1, 65 - var99, 0, 0); - this.worldServerInstance.setBlock(1, 65 - var99, -1, 0); - this.worldServerInstance.setBlock(0, 65 - var99, -1, 0); - this.worldServerInstance.setBlock(-1, 65 - var99, -1, 0); - this.worldServerInstance.setBlock(-1, 65 - var99, 0, 0); - this.worldServerInstance.setBlock(0, 65 - var99, 0, 0); - - this.worldServerInstance.setBlock(3, 64 - var99, 3, 0); - this.worldServerInstance.setBlock(3, 63 - var99, 3, 0); - this.worldServerInstance.setBlock(3, 62 - var99, 3, 0); - this.worldServerInstance.setBlock(3, 61 - var99, 3, 0); - this.worldServerInstance.setBlock(3, 60 - var99, 3, 0); - - this.worldServerInstance.setBlock(0, 64 - var99, 0, Blocks.promisedPortal.get().blockID); - } - } - } - - par1Entity.setLocationAndAngles((double) var9, (double) var10, (double) var11, par1Entity.rotationYaw, 0.0F); - par1Entity.motionX = par1Entity.motionY = par1Entity.motionZ = 0.0D; - } - } - - @SuppressWarnings("unchecked") - @Override - public boolean placeInExistingPortal(Entity par1Entity, double par2, double par4, double par6, float par8) - { - short var9 = 128; - double var10 = -1.0D; - int var12 = 0; - int var13 = 0; - int var14 = 0; - int var15 = MathHelper.floor_double(1); - int var16 = MathHelper.floor_double(0); - long var17 = ChunkCoordIntPair.chunkXZ2Int(var15, var16); - boolean var19 = true; - double var27; - int var48; - - if (this.field_85191_c.containsItem(var17)) - { - PortalPosition var20 = (PortalPosition) this.field_85191_c.getValueByKey(var17); - var10 = 0.0D; - var12 = 1; - var13 = 31; - var14 = 0; - var20.lastUpdateTime = this.worldServerInstance.getTotalWorldTime(); - var19 = false; - } - else - { - for (var48 = var15 - var9; var48 <= var15 + var9; ++var48) - { - double var21 = (double) var48 + 0.5D - par1Entity.posX; - - for (int var23 = var16 - var9; var23 <= var16 + var9; ++var23) - { - double var24 = (double) var23 + 0.5D - par1Entity.posZ; - - for (int var26 = this.worldServerInstance.getActualHeight() - 1; var26 >= 0; --var26) - { - if (this.worldServerInstance.getBlockId(var48, var26, var23) == Blocks.promisedPortal.get().blockID) - { - while (this.worldServerInstance.getBlockId(var48, var26 - 1, var23) == Blocks.promisedPortal.get().blockID) - { - --var26; - } - - var27 = (double) var26 + 0.5D - par1Entity.posY; - double var29 = var21 * var21 + var27 * var27 + var24 * var24; - - if (var10 < 0.0D || var29 < var10) - { - var10 = var29; - var12 = var48; - var13 = var26; - var14 = var23; - } - } - } - } - } - } - - if (var10 >= 0.0D) - { - if (var19) - { - this.field_85191_c.add(var17, new PortalPosition(this, var12, var13, var14, this.worldServerInstance.getTotalWorldTime())); - this.field_85190_d.add(Long.valueOf(var17)); - } - - double var49 = (double) var12 + 0.5D; - double var25 = (double) var13 + 0.5D; - var27 = (double) var14 + 0.5D; - int var50 = -1; - - if (this.worldServerInstance.getBlockId(var12 - 1, var13, var14) == Blocks.promisedPortal.get().blockID) - { - var50 = 2; - } - - if (this.worldServerInstance.getBlockId(var12 + 1, var13, var14) == Blocks.promisedPortal.get().blockID) - { - var50 = 0; - } - - if (this.worldServerInstance.getBlockId(var12, var13, var14 - 1) == Blocks.promisedPortal.get().blockID) - { - var50 = 3; - } - - if (this.worldServerInstance.getBlockId(var12, var13, var14 + 1) == Blocks.promisedPortal.get().blockID) - { - var50 = 1; - } - - int var30 = par1Entity.getTeleportDirection(); - - if (var50 > -1) - { - int var31 = Direction.rotateLeft[var50]; - int var32 = Direction.offsetX[var50]; - int var33 = Direction.offsetZ[var50]; - int var34 = Direction.offsetX[var31]; - int var35 = Direction.offsetZ[var31]; - boolean var36 = !this.worldServerInstance.isAirBlock(var12 + var32 + var34, var13, var14 + var33 + var35) || !this.worldServerInstance.isAirBlock(var12 + var32 + var34, var13 + 1, var14 + var33 + var35); - boolean var37 = !this.worldServerInstance.isAirBlock(var12 + var32, var13, var14 + var33) || !this.worldServerInstance.isAirBlock(var12 + var32, var13 + 1, var14 + var33); - - if (var36 && var37) - { - var50 = Direction.rotateOpposite[var50]; - var31 = Direction.rotateOpposite[var31]; - var32 = Direction.offsetX[var50]; - var33 = Direction.offsetZ[var50]; - var34 = Direction.offsetX[var31]; - var35 = Direction.offsetZ[var31]; - var48 = var12 - var34; - var49 -= (double) var34; - int var22 = var14 - var35; - var27 -= (double) var35; - var36 = !this.worldServerInstance.isAirBlock(var48 + var32 + var34, var13, var22 + var33 + var35) || !this.worldServerInstance.isAirBlock(var48 + var32 + var34, var13 + 1, var22 + var33 + var35); - var37 = !this.worldServerInstance.isAirBlock(var48 + var32, var13, var22 + var33) || !this.worldServerInstance.isAirBlock(var48 + var32, var13 + 1, var22 + var33); - } - - float var38 = 0.5F; - float var39 = 0.5F; - - if (!var36 && var37) - { - var38 = 1.0F; - } - else if (var36 && !var37) - { - var38 = 0.0F; - } - else if (var36 && var37) - { - var39 = 0.0F; - } - - var49 += (double) ((float) var34 * var38 + var39 * (float) var32); - var27 += (double) ((float) var35 * var38 + var39 * (float) var33); - float var40 = 0.0F; - float var41 = 0.0F; - float var42 = 0.0F; - float var43 = 0.0F; - - if (var50 == var30) - { - var40 = 1.0F; - var41 = 1.0F; - } - else if (var50 == Direction.rotateOpposite[var30]) - { - var40 = -1.0F; - var41 = -1.0F; - } - else if (var50 == Direction.rotateRight[var30]) - { - var42 = 1.0F; - var43 = -1.0F; - } - else - { - var42 = -1.0F; - var43 = 1.0F; - } - - double var44 = par1Entity.motionX; - double var46 = par1Entity.motionZ; - par1Entity.motionX = var44 * (double) var40 + var46 * (double) var43; - par1Entity.motionZ = var44 * (double) var42 + var46 * (double) var41; - par1Entity.rotationYaw = par8 - (float) (var30 * 90) + (float) (var50 * 90); - } - else - { - par1Entity.motionX = par1Entity.motionY = par1Entity.motionZ = 0.0D; - } - - par1Entity.setLocationAndAngles(var49 + 3, var25, var27 + 3, par1Entity.rotationYaw, par1Entity.rotationPitch); - return true; - } - else - { - return false; - } - } - - @SuppressWarnings("unused") - @Override - public boolean makePortal(Entity par1Entity) - { - byte var2 = 16; - double var3 = -1.0D; - int var5 = MathHelper.floor_double(1); - int var6 = MathHelper.floor_double(31); - int var7 = MathHelper.floor_double(0); - int var8 = var5; - int var9 = var6; - int var10 = var7; - int var11 = 0; - int var12 = this.random.nextInt(4); - int var13; - double var14; - double var17; - int var16; - int var19; - int var21; - int var20; - int var23; - int var22; - int var25; - int var24; - int var27; - int var26; - double var31; - double var32; - - for (var13 = var5 - var2; var13 <= var5 + var2; ++var13) - { - var14 = (double) var13 + 0.5D - par1Entity.posX; - - for (var16 = var7 - var2; var16 <= var7 + var2; ++var16) - { - var17 = (double) var16 + 0.5D - par1Entity.posZ; - label274: - - for (var19 = this.worldServerInstance.getActualHeight() - 1; var19 >= 0; --var19) - { - if (this.worldServerInstance.isAirBlock(var13, var19, var16)) - { - while (var19 > 0 && this.worldServerInstance.isAirBlock(var13, var19 - 1, var16)) - { - --var19; - } - - for (var20 = var12; var20 < var12 + 4; ++var20) - { - var21 = var20 % 2; - var22 = 1 - var21; - - if (var20 % 4 >= 2) - { - var21 = -var21; - var22 = -var22; - } - - for (var23 = 0; var23 < 3; ++var23) - { - for (var24 = 0; var24 < 4; ++var24) - { - for (var25 = -1; var25 < 4; ++var25) - { - var26 = var13 + (var24 - 1) * var21 + var23 * var22; - var27 = var19 + var25; - int var28 = var16 + (var24 - 1) * var22 - var23 * var21; - - if (var25 < 0 && !this.worldServerInstance.getBlockMaterial(var26, var27, var28).isSolid() || var25 >= 0 && !this.worldServerInstance.isAirBlock(var26, var27, var28)) - { - continue label274; - } - } - } - } - - var32 = (double) var19 + 0.5D - par1Entity.posY; - var31 = var14 * var14 + var32 * var32 + var17 * var17; - - if (var3 < 0.0D || var31 < var3) - { - var3 = var31; - var8 = var13; - var9 = var19; - var10 = var16; - var11 = var20 % 4; - } - } - } - } - } - } - - if (var3 < 0.0D) - { - for (var13 = var5 - var2; var13 <= var5 + var2; ++var13) - { - var14 = (double) var13 + 0.5D - par1Entity.posX; - - for (var16 = var7 - var2; var16 <= var7 + var2; ++var16) - { - var17 = (double) var16 + 0.5D - par1Entity.posZ; - label222: - - for (var19 = this.worldServerInstance.getActualHeight() - 1; var19 >= 0; --var19) - { - if (this.worldServerInstance.isAirBlock(var13, var19, var16)) - { - while (var19 > 0 && this.worldServerInstance.isAirBlock(var13, var19 - 1, var16)) - { - --var19; - } - - for (var20 = var12; var20 < var12 + 2; ++var20) - { - var21 = var20 % 2; - var22 = 1 - var21; - - for (var23 = 0; var23 < 4; ++var23) - { - for (var24 = -1; var24 < 4; ++var24) - { - var25 = var13 + (var23 - 1) * var21; - var26 = var19 + var24; - var27 = var16 + (var23 - 1) * var22; - - if (var24 < 0 && !this.worldServerInstance.getBlockMaterial(var25, var26, var27).isSolid() || var24 >= 0 && !this.worldServerInstance.isAirBlock(var25, var26, var27)) - { - continue label222; - } - } - } - - var32 = (double) var19 + 0.5D - par1Entity.posY; - var31 = var14 * var14 + var32 * var32 + var17 * var17; - - if (var3 < 0.0D || var31 < var3) - { - var3 = var31; - var8 = var13; - var9 = var19; - var10 = var16; - var11 = var20 % 2; - } - } - } - } - } - } - } - - int var29 = var8; - int var15 = var9; - var16 = var10; - int var30 = var11 % 2; - int var18 = 1 - var30; - - if (var11 % 4 >= 2) - { - var30 = -var30; - var18 = -var18; - } - - boolean var33; - - if (var3 < 0.0D) - { - if (var9 < 70) - { - var9 = 70; - } - - if (var9 > this.worldServerInstance.getActualHeight() - 10) - { - var9 = this.worldServerInstance.getActualHeight() - 10; - } - - var15 = var9; - - for (var19 = -1; var19 <= 1; ++var19) - { - for (var20 = 1; var20 < 3; ++var20) - { - for (var21 = -1; var21 < 3; ++var21) - { - var22 = var29 + (var20 - 1) * var30 + var19 * var18; - var23 = var15 + var21; - var24 = var16 + (var20 - 1) * var18 - var19 * var30; - var33 = var21 < 0; - //this.worldServerInstance.setBlockWithNotify(var22, var23, var24, var33 ? Block.whiteStone.blockID : 0); - - int var99 = 32; - - this.worldServerInstance.setBlock(-1, 62 - var99, 1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 62 - var99, 1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 62 - var99, 1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 62 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 62 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 62 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-1, 62 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-1, 62 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 62 - var99, 0, Block.whiteStone.blockID); - - this.worldServerInstance.setBlock(-1, 63 - var99, 2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 63 - var99, 2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 63 - var99, 2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(2, 63 - var99, 1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(2, 63 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(2, 63 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 63 - var99, -2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 63 - var99, -2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-1, 63 - var99, -2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-2, 63 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-2, 63 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-2, 63 - var99, 1, Block.whiteStone.blockID); - - this.worldServerInstance.setBlock(-1, 64 - var99, 2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 64 - var99, 2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 64 - var99, 2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(2, 64 - var99, 1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(2, 64 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(2, 64 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 64 - var99, -2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 64 - var99, -2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-1, 64 - var99, -2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-2, 64 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-2, 64 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-2, 64 - var99, 1, Block.whiteStone.blockID); - - this.worldServerInstance.setBlock(-1, 65 - var99, 2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 65 - var99, 2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 65 - var99, 2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(2, 65 - var99, 1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(2, 65 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(2, 65 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 65 - var99, -2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 65 - var99, -2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-1, 65 - var99, -2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-2, 65 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-2, 65 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-2, 65 - var99, 1, Block.whiteStone.blockID); - - this.worldServerInstance.setBlock(-1, 66 - var99, 1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 66 - var99, 1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 66 - var99, 1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 66 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 66 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 66 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-1, 66 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-1, 66 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 66 - var99, 0, Block.whiteStone.blockID); - - this.worldServerInstance.setBlock(-1, 63 - var99, 1, 0); - this.worldServerInstance.setBlock(0, 63 - var99, 1, 0); - this.worldServerInstance.setBlock(1, 63 - var99, 1, 0); - this.worldServerInstance.setBlock(1, 63 - var99, 0, 0); - this.worldServerInstance.setBlock(1, 63 - var99, -1, 0); - this.worldServerInstance.setBlock(0, 63 - var99, -1, 0); - this.worldServerInstance.setBlock(-1, 63 - var99, -1, 0); - this.worldServerInstance.setBlock(-1, 63 - var99, 0, 0); - this.worldServerInstance.setBlock(0, 63 - var99, 0, 0); - - this.worldServerInstance.setBlock(-1, 64 - var99, 1, 0); - this.worldServerInstance.setBlock(0, 64 - var99, 1, 0); - this.worldServerInstance.setBlock(1, 64 - var99, 1, 0); - this.worldServerInstance.setBlock(1, 64 - var99, 0, 0); - this.worldServerInstance.setBlock(1, 64 - var99, -1, 0); - this.worldServerInstance.setBlock(0, 64 - var99, -1, 0); - this.worldServerInstance.setBlock(-1, 64 - var99, -1, 0); - this.worldServerInstance.setBlock(-1, 64 - var99, 0, 0); - - this.worldServerInstance.setBlock(-1, 65 - var99, 1, 0); - this.worldServerInstance.setBlock(0, 65 - var99, 1, 0); - this.worldServerInstance.setBlock(1, 65 - var99, 1, 0); - this.worldServerInstance.setBlock(1, 65 - var99, 0, 0); - this.worldServerInstance.setBlock(1, 65 - var99, -1, 0); - this.worldServerInstance.setBlock(0, 65 - var99, -1, 0); - this.worldServerInstance.setBlock(-1, 65 - var99, -1, 0); - this.worldServerInstance.setBlock(-1, 65 - var99, 0, 0); - this.worldServerInstance.setBlock(0, 65 - var99, 0, 0); - - this.worldServerInstance.setBlock(3, 64 - var99, 3, 0); - this.worldServerInstance.setBlock(3, 63 - var99, 3, 0); - this.worldServerInstance.setBlock(3, 62 - var99, 3, 0); - this.worldServerInstance.setBlock(3, 61 - var99, 3, 0); - this.worldServerInstance.setBlock(3, 60 - var99, 3, 0); - - this.worldServerInstance.setBlock(0, 64 - var99, 0, Blocks.promisedPortal.get().blockID); - } - } - } - } - - for (var19 = 0; var19 < 4; ++var19) - { - //this.worldServerInstance.editingBlocks = true; - - for (var20 = 0; var20 < 4; ++var20) - { - for (var21 = -1; var21 < 4; ++var21) - { - var22 = var29 + (var20 - 1) * var30; - var23 = var15 + var21; - var24 = var16 + (var20 - 1) * var18; - var33 = var20 == 0 || var20 == 3 || var21 == -1 || var21 == 3; - //this.worldServerInstance.setBlockWithNotify(var22, var23, var24, var33 ? Block.whiteStone.blockID : BOPBlocks.promisedPortal.blockID); - - int var99 = 32; - - this.worldServerInstance.setBlock(-1, 62 - var99, 1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 62 - var99, 1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 62 - var99, 1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 62 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 62 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 62 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-1, 62 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-1, 62 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 62 - var99, 0, Block.whiteStone.blockID); - - this.worldServerInstance.setBlock(-1, 63 - var99, 2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 63 - var99, 2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 63 - var99, 2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(2, 63 - var99, 1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(2, 63 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(2, 63 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 63 - var99, -2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 63 - var99, -2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-1, 63 - var99, -2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-2, 63 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-2, 63 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-2, 63 - var99, 1, Block.whiteStone.blockID); - - this.worldServerInstance.setBlock(-1, 64 - var99, 2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 64 - var99, 2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 64 - var99, 2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(2, 64 - var99, 1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(2, 64 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(2, 64 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 64 - var99, -2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 64 - var99, -2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-1, 64 - var99, -2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-2, 64 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-2, 64 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-2, 64 - var99, 1, Block.whiteStone.blockID); - - this.worldServerInstance.setBlock(-1, 65 - var99, 2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 65 - var99, 2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 65 - var99, 2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(2, 65 - var99, 1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(2, 65 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(2, 65 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 65 - var99, -2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 65 - var99, -2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-1, 65 - var99, -2, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-2, 65 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-2, 65 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-2, 65 - var99, 1, Block.whiteStone.blockID); - - this.worldServerInstance.setBlock(-1, 66 - var99, 1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 66 - var99, 1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 66 - var99, 1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 66 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(1, 66 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 66 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-1, 66 - var99, -1, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(-1, 66 - var99, 0, Block.whiteStone.blockID); - this.worldServerInstance.setBlock(0, 66 - var99, 0, Block.whiteStone.blockID); - - this.worldServerInstance.setBlock(-1, 63 - var99, 1, 0); - this.worldServerInstance.setBlock(0, 63 - var99, 1, 0); - this.worldServerInstance.setBlock(1, 63 - var99, 1, 0); - this.worldServerInstance.setBlock(1, 63 - var99, 0, 0); - this.worldServerInstance.setBlock(1, 63 - var99, -1, 0); - this.worldServerInstance.setBlock(0, 63 - var99, -1, 0); - this.worldServerInstance.setBlock(-1, 63 - var99, -1, 0); - this.worldServerInstance.setBlock(-1, 63 - var99, 0, 0); - this.worldServerInstance.setBlock(0, 63 - var99, 0, 0); - - this.worldServerInstance.setBlock(-1, 64 - var99, 1, 0); - this.worldServerInstance.setBlock(0, 64 - var99, 1, 0); - this.worldServerInstance.setBlock(1, 64 - var99, 1, 0); - this.worldServerInstance.setBlock(1, 64 - var99, 0, 0); - this.worldServerInstance.setBlock(1, 64 - var99, -1, 0); - this.worldServerInstance.setBlock(0, 64 - var99, -1, 0); - this.worldServerInstance.setBlock(-1, 64 - var99, -1, 0); - this.worldServerInstance.setBlock(-1, 64 - var99, 0, 0); - - this.worldServerInstance.setBlock(-1, 65 - var99, 1, 0); - this.worldServerInstance.setBlock(0, 65 - var99, 1, 0); - this.worldServerInstance.setBlock(1, 65 - var99, 1, 0); - this.worldServerInstance.setBlock(1, 65 - var99, 0, 0); - this.worldServerInstance.setBlock(1, 65 - var99, -1, 0); - this.worldServerInstance.setBlock(0, 65 - var99, -1, 0); - this.worldServerInstance.setBlock(-1, 65 - var99, -1, 0); - this.worldServerInstance.setBlock(-1, 65 - var99, 0, 0); - this.worldServerInstance.setBlock(0, 65 - var99, 0, 0); - - this.worldServerInstance.setBlock(3, 64 - var99, 3, 0); - this.worldServerInstance.setBlock(3, 63 - var99, 3, 0); - this.worldServerInstance.setBlock(3, 62 - var99, 3, 0); - this.worldServerInstance.setBlock(3, 61 - var99, 3, 0); - this.worldServerInstance.setBlock(3, 60 - var99, 3, 0); - - this.worldServerInstance.setBlock(0, 64 - var99, 0, Blocks.promisedPortal.get().blockID); - } - } - - //this.worldServerInstance.editingBlocks = false; - - for (var20 = 0; var20 < 4; ++var20) - { - for (var21 = -1; var21 < 4; ++var21) - { - var22 = var29 + (var20 - 1) * var30; - var23 = var15 + var21; - var24 = var16 + (var20 - 1) * var18; - this.worldServerInstance.notifyBlocksOfNeighborChange(var22, var23, var24, this.worldServerInstance.getBlockId(var22, var23, var24)); - } - } - } - - return true; - } - - @SuppressWarnings("rawtypes") - @Override - public void removeStalePortalLocations(long par1) - { - if (par1 % 100L == 0L) - { - Iterator var3 = this.field_85190_d.iterator(); - long var4 = par1 - 600L; - - while (var3.hasNext()) - { - Long var6 = (Long) var3.next(); - PortalPosition var7 = (PortalPosition) this.field_85191_c.getValueByKey(var6.longValue()); - - if (var7 == null || var7.lastUpdateTime < var4) - { - var3.remove(); - this.field_85191_c.remove(var6.longValue()); - } - } - } - } - -} \ No newline at end of file diff --git a/src/minecraft/biomesoplenty/helpers/WorldChunkManagerPromised.java b/src/minecraft/biomesoplenty/helpers/WorldChunkManagerPromised.java deleted file mode 100644 index 339e87766..000000000 --- a/src/minecraft/biomesoplenty/helpers/WorldChunkManagerPromised.java +++ /dev/null @@ -1,283 +0,0 @@ -package biomesoplenty.helpers; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Random; - -import biomesoplenty.api.Biomes; - -import net.minecraft.world.ChunkPosition; -import net.minecraft.world.World; -import net.minecraft.world.WorldType; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.WorldChunkManager; -import net.minecraft.world.gen.layer.GenLayer; -import net.minecraft.world.gen.layer.IntCache; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.terraingen.WorldTypeEvent; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class WorldChunkManagerPromised extends WorldChunkManager -{ - public static ArrayList allowedBiomes = new ArrayList(Arrays.asList(Biomes.promisedLand.get())); - private GenLayer genBiomes; - - /** A GenLayer containing the indices into BiomeGenBase.biomeList[] */ - private GenLayer biomeIndexLayer; - - /** The BiomeCache object for this world. */ - private BiomeCachePromised biomeCache; - - /** A list of biomes that the player can spawn in. */ - @SuppressWarnings("rawtypes") - private List biomesToSpawnIn; - - @SuppressWarnings({ "unchecked", "rawtypes" }) - protected WorldChunkManagerPromised() - { - this.biomeCache = new BiomeCachePromised(this); - this.biomesToSpawnIn = new ArrayList(); - this.biomesToSpawnIn.addAll(allowedBiomes); - } - - public WorldChunkManagerPromised(long par1, WorldType par3WorldType) - { - this(); - GenLayer[] var4 = GenLayer.initializeAllBiomeGenerators(par1, par3WorldType); - var4 = getModdedBiomeGenerators(par3WorldType, par1, var4); - this.genBiomes = var4[0]; - this.biomeIndexLayer = var4[1]; - } - - public WorldChunkManagerPromised(World par1World) - { - this(par1World.getSeed(), par1World.getWorldInfo().getTerrainType()); - } - - /** - * Gets the list of valid biomes for the player to spawn in. - */ - @SuppressWarnings("rawtypes") - public List getBiomesToSpawnIn() - { - return this.biomesToSpawnIn; - } - - /** - * Returns the BiomeGenBase related to the x, z position on the world. - */ - public BiomeGenBase getBiomeGenAt(int par1, int par2) - { - return this.biomeCache.getBiomeGenAt(par1, par2); - } - - /** - * Returns a list of rainfall values for the specified blocks. Args: listToReuse, x, z, width, length. - */ - public float[] getRainfall(float[] par1ArrayOfFloat, int par2, int par3, int par4, int par5) - { - IntCache.resetIntCache(); - - if (par1ArrayOfFloat == null || par1ArrayOfFloat.length < par4 * par5) - { - par1ArrayOfFloat = new float[par4 * par5]; - } - - int[] var6 = this.biomeIndexLayer.getInts(par2, par3, par4, par5); - - for (int var7 = 0; var7 < par4 * par5; ++var7) - { - float var8 = (float)BiomeGenBase.biomeList[var6[var7]].getIntRainfall() / 65536.0F; - - if (var8 > 1.0F) - { - var8 = 1.0F; - } - - par1ArrayOfFloat[var7] = var8; - } - - return par1ArrayOfFloat; - } - - @SideOnly(Side.CLIENT) - - /** - * Return an adjusted version of a given temperature based on the y height - */ - public float getTemperatureAtHeight(float par1, int par2) - { - return par1; - } - - /** - * Returns a list of temperatures to use for the specified blocks. Args: listToReuse, x, y, width, length - */ - public float[] getTemperatures(float[] par1ArrayOfFloat, int par2, int par3, int par4, int par5) - { - IntCache.resetIntCache(); - - if (par1ArrayOfFloat == null || par1ArrayOfFloat.length < par4 * par5) - { - par1ArrayOfFloat = new float[par4 * par5]; - } - - int[] var6 = this.biomeIndexLayer.getInts(par2, par3, par4, par5); - - for (int var7 = 0; var7 < par4 * par5; ++var7) - { - float var8 = (float)BiomeGenBase.biomeList[var6[var7]].getIntTemperature() / 65536.0F; - - if (var8 > 1.0F) - { - var8 = 1.0F; - } - - par1ArrayOfFloat[var7] = var8; - } - - return par1ArrayOfFloat; - } - - /** - * Returns an array of biomes for the location input. - */ - public BiomeGenBase[] getBiomesForGeneration(BiomeGenBase[] par1ArrayOfBiomeGenBase, int par2, int par3, int par4, int par5) - { - IntCache.resetIntCache(); - - if (par1ArrayOfBiomeGenBase == null || par1ArrayOfBiomeGenBase.length < par4 * par5) - { - par1ArrayOfBiomeGenBase = new BiomeGenBase[par4 * par5]; - } - - int[] var6 = this.genBiomes.getInts(par2, par3, par4, par5); - - for (int var7 = 0; var7 < par4 * par5; ++var7) - { - par1ArrayOfBiomeGenBase[var7] = BiomeGenBase.biomeList[var6[var7]]; - } - - return par1ArrayOfBiomeGenBase; - } - - /** - * Returns biomes to use for the blocks and loads the other data like temperature and humidity onto the - * WorldChunkManager Args: oldBiomeList, x, z, width, depth - */ - public BiomeGenBase[] loadBlockGeneratorData(BiomeGenBase[] par1ArrayOfBiomeGenBase, int par2, int par3, int par4, int par5) - { - return this.getBiomeGenAt(par1ArrayOfBiomeGenBase, par2, par3, par4, par5, true); - } - - /** - * Return a list of biomes for the specified blocks. Args: listToReuse, x, y, width, length, cacheFlag (if false, - * don't check biomeCache to avoid infinite loop in BiomeCacheBlock) - */ - public BiomeGenBase[] getBiomeGenAt(BiomeGenBase[] par1ArrayOfBiomeGenBase, int par2, int par3, int par4, int par5, boolean par6) - { - IntCache.resetIntCache(); - - if (par1ArrayOfBiomeGenBase == null || par1ArrayOfBiomeGenBase.length < par4 * par5) - { - par1ArrayOfBiomeGenBase = new BiomeGenBase[par4 * par5]; - } - - if (par6 && par4 == 16 && par5 == 16 && (par2 & 15) == 0 && (par3 & 15) == 0) - { - BiomeGenBase[] var9 = this.biomeCache.getCachedBiomes(par2, par3); - System.arraycopy(var9, 0, par1ArrayOfBiomeGenBase, 0, par4 * par5); - return par1ArrayOfBiomeGenBase; - } - else - { - int[] var7 = this.biomeIndexLayer.getInts(par2, par3, par4, par5); - - for (int var8 = 0; var8 < par4 * par5; ++var8) - { - par1ArrayOfBiomeGenBase[var8] = BiomeGenBase.biomeList[var7[var8]]; - } - - return par1ArrayOfBiomeGenBase; - } - } - - /** - * checks given Chunk's Biomes against List of allowed ones - */ - @SuppressWarnings("rawtypes") - public boolean areBiomesViable(int par1, int par2, int par3, List par4List) - { - IntCache.resetIntCache(); - int var5 = par1 - par3 >> 2; - int var6 = par2 - par3 >> 2; - int var7 = par1 + par3 >> 2; - int var8 = par2 + par3 >> 2; - int var9 = var7 - var5 + 1; - int var10 = var8 - var6 + 1; - int[] var11 = this.genBiomes.getInts(var5, var6, var9, var10); - - for (int var12 = 0; var12 < var9 * var10; ++var12) - { - BiomeGenBase var13 = BiomeGenBase.biomeList[var11[var12]]; - - if (!par4List.contains(var13)) - { - return false; - } - } - - return true; - } - - /** - * Finds a valid position within a range, that is in one of the listed biomes. Searches {par1,par2} +-par3 blocks. - * Strongly favors positive y positions. - */ - @SuppressWarnings("rawtypes") - public ChunkPosition findBiomePosition(int par1, int par2, int par3, List par4List, Random par5Random) - { - IntCache.resetIntCache(); - int var6 = par1 - par3 >> 2; - int var7 = par2 - par3 >> 2; - int var8 = par1 + par3 >> 2; - int var9 = par2 + par3 >> 2; - int var10 = var8 - var6 + 1; - int var11 = var9 - var7 + 1; - int[] var12 = this.genBiomes.getInts(var6, var7, var10, var11); - ChunkPosition var13 = null; - int var14 = 0; - - for (int var15 = 0; var15 < var10 * var11; ++var15) - { - int var16 = var6 + var15 % var10 << 2; - int var17 = var7 + var15 / var10 << 2; - BiomeGenBase var18 = BiomeGenBase.biomeList[var12[var15]]; - - if (par4List.contains(var18) && (var13 == null || par5Random.nextInt(var14 + 1) == 0)) - { - var13 = new ChunkPosition(var16, 0, var17); - ++var14; - } - } - - return var13; - } - - /** - * Calls the WorldChunkManager's biomeCache.cleanupCache() - */ - public void cleanupCache() - { - this.biomeCache.cleanupCache(); - } - - public GenLayer[] getModdedBiomeGenerators(WorldType worldType, long seed, GenLayer[] original) - { - WorldTypeEvent.InitBiomeGens event = new WorldTypeEvent.InitBiomeGens(worldType, seed, original); - MinecraftForge.TERRAIN_GEN_BUS.post(event); - return event.newBiomeGens; - } -} diff --git a/src/minecraft/biomesoplenty/helpers/WorldGeneratorPromisedLandPortal.java b/src/minecraft/biomesoplenty/helpers/WorldGeneratorPromisedLandPortal.java deleted file mode 100644 index 514dd53d1..000000000 --- a/src/minecraft/biomesoplenty/helpers/WorldGeneratorPromisedLandPortal.java +++ /dev/null @@ -1,34 +0,0 @@ -package biomesoplenty.helpers; - -import java.util.Random; - -import biomesoplenty.worldgen.WorldGenPromisedLandPortal; - -import net.minecraft.world.World; -import net.minecraft.world.chunk.IChunkProvider; -import cpw.mods.fml.common.IWorldGenerator; - -public class WorldGeneratorPromisedLandPortal implements IWorldGenerator -{ - public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) - { - switch (world.provider.dimensionId) - { - case 20: generatePromisedLand(world, random, chunkX*16, chunkZ*16); - case 0: generateSurface(world, random, chunkX*16, chunkZ*16); - } - } - - - - private void generateSurface(World world, Random random, int blockX, int blockZ) - { - (new WorldGenPromisedLandPortal()).generate(world, random, 0, 64, 0); - } - - private void generatePromisedLand(World world, Random random, int blockX, int blockZ) - { - (new WorldGenPromisedLandPortal()).generate(world, random, 0, 64, 0); - } - -} \ No newline at end of file diff --git a/src/minecraft/biomesoplenty/helpers/WorldProviderPromised.java b/src/minecraft/biomesoplenty/helpers/WorldProviderPromised.java deleted file mode 100644 index 135d12a8d..000000000 --- a/src/minecraft/biomesoplenty/helpers/WorldProviderPromised.java +++ /dev/null @@ -1,156 +0,0 @@ -package biomesoplenty.helpers; - -import biomesoplenty.api.Biomes; -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import biomesoplenty.configuration.BOPConfiguration; - -import net.minecraft.util.ChunkCoordinates; -import net.minecraft.util.MathHelper; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import net.minecraft.world.WorldProvider; -import net.minecraft.world.biome.WorldChunkManagerHell; -import net.minecraft.world.chunk.IChunkProvider; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -//import tdwp_ftw.biomesop.helpers.WorldChunkManagerPromised; - -public class WorldProviderPromised extends WorldProvider -{ - public void registerWorldChunkManager() - { - if (Biomes.promisedLand.isPresent()) - this.worldChunkMgr = new WorldChunkManagerHell(Biomes.promisedLand.get(), 0.8F, 0.1F); - //this.worldChunkMgr = new WorldChunkManagerPromised(worldObj); - this.dimensionId = BOPConfiguration.promisedLandDimID; - } - - /** - * A boolean that tells if a world does not have a sky. Used in calculating weather and skylight - */ - public boolean hasNoSky = false; - - public String getDimensionName() - { - return "Promised Land"; - } - - public boolean canRespawnHere() - { - return false; - } - - /** - * Calculates the angle of sun and moon in the sky relative to a specified time (usually worldTime) - */ - public float calculateCelestialAngle(long par1, float par3) - { - return 1.0F; - } - - /** - * the y level at which clouds are rendered. - */ - public float getCloudHeight() - { - return 0.0F; - } - - public boolean darkenSkyDuringRain() - { - return false; - } - - /** - * Will check if the x, z position specified is alright to be set as the map spawn point - */ - public boolean canCoordinateBeSpawn(int par1, int par2) - { - int var3 = this.worldObj.getFirstUncoveredBlock(par1, par2); - return var3 == Blocks.holyGrass.get().blockID; - } - - /** - * Gets the hard-coded portal location to use when entering this dimension. - */ - public ChunkCoordinates getEntrancePortalLocation() - { - return new ChunkCoordinates(100, 50, 0); - } - - public int getAverageGroundLevel() - { - return 50; - } - - public double getHorizon(World world) - { - return 0.6D; - } - - @SideOnly(Side.CLIENT) - - public boolean hasVoidParticles(boolean var1) - { - return false; - } - - @SideOnly(Side.CLIENT) - public boolean isSkyColored() - { - return true; - } - - @Override - public double getVoidFogYFactor() - { - return 1.0D; - } - - @SideOnly(Side.CLIENT) - - /** - * Return Vec3D with biome specific fog color - */ - public Vec3 getFogColor(float par1, float par2) - { - float var3 = MathHelper.cos(par1 * (float)Math.PI * 2.0F) * 2.0F + 0.5F; - - if (var3 < 0.0F) - { - var3 = 0.0F; - } - - if (var3 > 1.0F) - { - var3 = 1.0F; - } - - float var4 = 1.0F; - float var5 = 0.91764705882F; - float var6 = 0.4F; - var4 *= var3 * 3.94F + 0.06F; - var5 *= var3 * 0.94F + 0.06F; - var6 *= var3 * 0.91F + 0.09F; - return this.worldObj.getWorldVec3Pool().getVecFromPool((double)var4, (double)var5, (double)var6); - } - - @Override - public String getWelcomeMessage() - { - return "Entering the Promised Land"; - } - - @Override - public String getDepartMessage() - { - return "Leaving the Promised Land"; - } - - @Override - public IChunkProvider createChunkGenerator() - { - return new ChunkProviderPromised(this.worldObj, this.worldObj.getSeed()); - } -} \ No newline at end of file diff --git a/src/minecraft/biomesoplenty/helpers/WorldTypeSize.java b/src/minecraft/biomesoplenty/helpers/WorldTypeSize.java deleted file mode 100644 index abdb1611a..000000000 --- a/src/minecraft/biomesoplenty/helpers/WorldTypeSize.java +++ /dev/null @@ -1,17 +0,0 @@ -package biomesoplenty.helpers; - -import biomesoplenty.configuration.BOPConfiguration; - -import net.minecraftforge.event.ForgeSubscribe; -import net.minecraftforge.event.terraingen.WorldTypeEvent; - -public class WorldTypeSize -{ - @ForgeSubscribe - public void BiomeSize(WorldTypeEvent.BiomeSize event) - { - if (event.worldType.getWorldTypeID() == 4) - event.newSize = (byte)BOPConfiguration.biomeSize; - } - -} diff --git a/src/minecraft/biomesoplenty/integration/BOPCrossIntegration.java b/src/minecraft/biomesoplenty/integration/BOPCrossIntegration.java deleted file mode 100644 index 4b2074f54..000000000 --- a/src/minecraft/biomesoplenty/integration/BOPCrossIntegration.java +++ /dev/null @@ -1,53 +0,0 @@ -package biomesoplenty.integration; - -import cpw.mods.fml.common.Loader; - -public class BOPCrossIntegration { - - public static void init() - { - if (Loader.isModLoaded("Thaumcraft")) - { - try { - ThaumcraftIntegration.init(); - } - catch (Exception e) { - System.out.println("[BiomesOPlenty] There was an error while integrating Thaumcraft with Biomes O' Plenty!"); - e.printStackTrace(System.err); - } - } - - if (Loader.isModLoaded("BWG4")) - { - try { - BWG4Integration.init(); - } - catch (Exception e) { - System.out.println("[BiomesOPlenty] There was an error while integrating Better World Generation 4 with Biomes O' Plenty!"); - e.printStackTrace(System.err); - } - } - - if (Loader.isModLoaded("Forestry")) - { - try { - ForestryIntegration.init(); - } - catch (Exception e) { - System.out.println("[BiomesOPlenty] There was an error while integrating Forestry with Biomes O' Plenty!"); - e.printStackTrace(System.err); - } - } - - if (Loader.isModLoaded("ThermalExpansion")) - { - try { - TEIntegration.init(); - } - catch (Exception e) { - System.out.println("[BiomesOPlenty] There was an error while integrating Thermal Expansion with Biomes O' Plenty!"); - e.printStackTrace(System.err); - } - } - } -} diff --git a/src/minecraft/biomesoplenty/integration/BWG4Integration.java b/src/minecraft/biomesoplenty/integration/BWG4Integration.java deleted file mode 100644 index 711d25c9c..000000000 --- a/src/minecraft/biomesoplenty/integration/BWG4Integration.java +++ /dev/null @@ -1,95 +0,0 @@ -package biomesoplenty.integration; - -import ted80.api.DefaultBiomeList; -import biomesoplenty.api.Biomes; - -public class BWG4Integration -{ - protected static void init() - { - bwg4Init(); - } - - private static void bwg4Init() - { - if(Biomes.woodland.isPresent()) { DefaultBiomeList.addBiome("BoP: Woodland", Biomes.woodland.get(), 2); } - if(Biomes.wetland.isPresent()) { DefaultBiomeList.addBiome("BoP: Wetland", Biomes.wetland.get(), 3); } - if(Biomes.wasteland.isPresent()) { DefaultBiomeList.addBiome("BoP: Wasteland", Biomes.wasteland.get(), 4); } - if(Biomes.volcano.isPresent()) { DefaultBiomeList.addBiome("BoP: Volcano", Biomes.volcano.get(), 4); } - if(Biomes.tundra.isPresent()) { DefaultBiomeList.addBiome("BoP: Tundra", Biomes.tundra.get(), 1); } - if(Biomes.tropics.isPresent()) { DefaultBiomeList.addBiome("BoP: Tropics", Biomes.tropics.get(), 3); } - if(Biomes.tropicalRainforest.isPresent()) { DefaultBiomeList.addBiome("BoP: Tropical Rainforest", Biomes.tropicalRainforest.get(), 3); } - if(Biomes.thicket.isPresent()) { DefaultBiomeList.addBiome("BoP: Thicket", Biomes.thicket.get(), 2); } - if(Biomes.temperateRainforest.isPresent()) { DefaultBiomeList.addBiome("BoP: Temperate Rainforest", Biomes.temperateRainforest.get(), 3); } - if(Biomes.swampwoods.isPresent()) { DefaultBiomeList.addBiome("BoP: Swampwoods", Biomes.swampwoods.get(), 3); } - if(Biomes.steppe.isPresent()) { DefaultBiomeList.addBiome("BoP: Steppe", Biomes.steppe.get(), 4); } - if(Biomes.spruceWoods.isPresent()) { DefaultBiomeList.addBiome("BoP: Spruce Woods", Biomes.spruceWoods.get(), 2); } - if(Biomes.snowyWoods.isPresent()) { DefaultBiomeList.addBiome("BoP: Snowy Woods", Biomes.snowyWoods.get(), 1); } - if(Biomes.shrubland.isPresent()) { DefaultBiomeList.addBiome("BoP: Shrubland", Biomes.shrubland.get(), 2); } - if(Biomes.shield.isPresent()) { DefaultBiomeList.addBiome("BoP: Shield", Biomes.shield.get(), 2); } - if(Biomes.seasonalForest.isPresent()) { DefaultBiomeList.addBiome("BoP: Seasonal Forest", Biomes.seasonalForest.get(), 2); } - if(Biomes.scrubland.isPresent()) { DefaultBiomeList.addBiome("BoP: Scrubland", Biomes.scrubland.get(), 4); } - if(Biomes.savanna.isPresent()) { DefaultBiomeList.addBiome("BoP: Savanna", Biomes.savanna.get(), 4); } - if(Biomes.sacredSprings.isPresent()) { DefaultBiomeList.addBiome("BoP: Sacred Springs", Biomes.sacredSprings.get(), 3); } - if(Biomes.redwoodForest.isPresent()) { DefaultBiomeList.addBiome("BoP: Redwood Forest", Biomes.redwoodForest.get(), 2); } - if(Biomes.rainforest.isPresent()) { DefaultBiomeList.addBiome("BoP: Rainforest", Biomes.rainforest.get(), 3); } - if(Biomes.quagmire.isPresent()) { DefaultBiomeList.addBiome("BoP: Quagmire", Biomes.quagmire.get(), 4); } - if(Biomes.prairie.isPresent()) { DefaultBiomeList.addBiome("BoP: Prairie", Biomes.prairie.get(), 2); } - if(Biomes.pasture.isPresent()) { DefaultBiomeList.addBiome("BoP: Pasture", Biomes.pasture.get(), 2); } - if(Biomes.outback.isPresent()) { DefaultBiomeList.addBiome("BoP: Outback", Biomes.outback.get(), 4); } - if(Biomes.originValley.isPresent()) { DefaultBiomeList.addBiome("BoP: Origin Valley", Biomes.originValley.get(), 2); } - if(Biomes.orchard.isPresent()) { DefaultBiomeList.addBiome("BoP: Orchard", Biomes.orchard.get(), 2); } - if(Biomes.ominousWoods.isPresent()) { DefaultBiomeList.addBiome("BoP: Ominous Woods", Biomes.ominousWoods.get(), 2); } - if(Biomes.oasis.isPresent()) { DefaultBiomeList.addBiome("BoP: Oasis", Biomes.oasis.get(), 4); } - if(Biomes.mysticGrove.isPresent()) { DefaultBiomeList.addBiome("BoP: Mystic Grove", Biomes.mysticGrove.get(), 3); } - if(Biomes.mountain.isPresent()) { DefaultBiomeList.addBiome("BoP: Mountain", Biomes.mountain.get(), 2); } - if(Biomes.moor.isPresent()) { DefaultBiomeList.addBiome("BoP: Moor", Biomes.moor.get(), 2); } - if(Biomes.mesa.isPresent()) { DefaultBiomeList.addBiome("BoP: Mesa", Biomes.mesa.get(), 4); } - if(Biomes.meadow.isPresent()) { DefaultBiomeList.addBiome("BoP: Meadow", Biomes.meadow.get(), 2); } - if(Biomes.marsh.isPresent()) { DefaultBiomeList.addBiome("BoP: Marsh", Biomes.marsh.get(), 2); } - if(Biomes.mapleWoods.isPresent()) { DefaultBiomeList.addBiome("BoP: Maple Woods", Biomes.mapleWoods.get(), 2); } - if(Biomes.mangrove.isPresent()) { DefaultBiomeList.addBiome("BoP: Mangrove", Biomes.mangrove.get(), 2); } - if(Biomes.lushSwamp.isPresent()) { DefaultBiomeList.addBiome("BoP: Lush Swamp", Biomes.lushSwamp.get(), 3); } - if(Biomes.lushDesert.isPresent()) { DefaultBiomeList.addBiome("BoP: Lush Desert", Biomes.lushDesert.get(), 4); } - if(Biomes.jadeCliffs.isPresent()) { DefaultBiomeList.addBiome("BoP: Jade Cliffs", Biomes.jadeCliffs.get(), 2); } - if(Biomes.icyHills.isPresent()) { DefaultBiomeList.addBiome("BoP: Icy Hills", Biomes.icyHills.get(), 1); } - if(Biomes.iceSheet.isPresent()) { DefaultBiomeList.addBiome("BoP: Ice Sheet", Biomes.iceSheet.get(), 1); } - if(Biomes.highland.isPresent()) { DefaultBiomeList.addBiome("BoP: Highland", Biomes.highland.get(), 2); } - if(Biomes.heathland.isPresent()) { DefaultBiomeList.addBiome("BoP: Heathland", Biomes.heathland.get(), 4); } - if(Biomes.grove.isPresent()) { DefaultBiomeList.addBiome("BoP: Grove", Biomes.grove.get(), 2); } - if(Biomes.grassland.isPresent()) { DefaultBiomeList.addBiome("BoP: Grassland", Biomes.grassland.get(), 2); } - if(Biomes.glacier.isPresent()) { DefaultBiomeList.addBiome("BoP: Glacier", Biomes.glacier.get(), 1); } - if(Biomes.garden.isPresent()) { DefaultBiomeList.addBiome("BoP: Garden", Biomes.garden.get(), 2); } - if(Biomes.frostForest.isPresent()) { DefaultBiomeList.addBiome("BoP: Frost Forest", Biomes.frostForest.get(), 1); } - if(Biomes.fungiForest.isPresent()) { DefaultBiomeList.addBiome("BoP: Fungi Forest", Biomes.fungiForest.get(), 3); } - if(Biomes.field.isPresent()) { DefaultBiomeList.addBiome("BoP: Field", Biomes.field.get(), 2); } - if(Biomes.fen.isPresent()) { DefaultBiomeList.addBiome("BoP: Fen", Biomes.fen.get(), 2); } - if(Biomes.dunes.isPresent()) { DefaultBiomeList.addBiome("BoP: Dunes", Biomes.dunes.get(), 4); } - if(Biomes.drylands.isPresent()) { DefaultBiomeList.addBiome("BoP: Drylands", Biomes.drylands.get(), 4); } - if(Biomes.deciduousForest.isPresent()) { DefaultBiomeList.addBiome("BoP: Deciduous Forest", Biomes.deciduousForest.get(), 2); } - if(Biomes.deadlands.isPresent()) { DefaultBiomeList.addBiome("BoP: Deadlands", Biomes.deadlands.get(), 4); } - if(Biomes.deadSwamp.isPresent()) { DefaultBiomeList.addBiome("BoP: Dead Swamp", Biomes.deadSwamp.get(), 2); } - if(Biomes.deadForest.isPresent()) { DefaultBiomeList.addBiome("BoP: Dead Forest", Biomes.deadForest.get(), 2); } - if(Biomes.crag.isPresent()) { DefaultBiomeList.addBiome("BoP: Crag", Biomes.crag.get(), 2); } - if(Biomes.coniferousForest.isPresent()) { DefaultBiomeList.addBiome("BoP: Coniferous Forest", Biomes.coniferousForest.get(), 2); } - if(Biomes.cherryBlossomGrove.isPresent()) { DefaultBiomeList.addBiome("BoP: Cherry Blossom Grove", Biomes.cherryBlossomGrove.get(), 2); } - if(Biomes.chaparral.isPresent()) { DefaultBiomeList.addBiome("BoP: Chaparral", Biomes.chaparral.get(), 2); } - if(Biomes.canyon.isPresent()) { DefaultBiomeList.addBiome("BoP: Canyon", Biomes.canyon.get(), 4); } - if(Biomes.borealForest.isPresent()) { DefaultBiomeList.addBiome("BoP: Boreal Forest", Biomes.borealForest.get(), 2); } - if(Biomes.bog.isPresent()) { DefaultBiomeList.addBiome("BoP: Bog", Biomes.bog.get(), 3); } - if(Biomes.birchForest.isPresent()) { DefaultBiomeList.addBiome("BoP: Birch Forest", Biomes.birchForest.get(), 2); } - if(Biomes.bayou.isPresent()) { DefaultBiomeList.addBiome("BoP: Bayou", Biomes.bayou.get(), 3); } - if(Biomes.bambooForest.isPresent()) { DefaultBiomeList.addBiome("BoP: Bamboo Forest", Biomes.bambooForest.get(), 3); } - if(Biomes.badlands.isPresent()) { DefaultBiomeList.addBiome("BoP: Badlands", Biomes.badlands.get(), 4); } - if(Biomes.arctic.isPresent()) { DefaultBiomeList.addBiome("BoP: Arctic", Biomes.arctic.get(), 1); } - if(Biomes.alps.isPresent()) { DefaultBiomeList.addBiome("BoP: Alps", Biomes.alps.get(), 1); } - - if(Biomes.jungleNew.isPresent()) { DefaultBiomeList.addBiome("BoP: Jungle", Biomes.jungleNew.get(), 1); } - if(Biomes.swamplandNew.isPresent()) { DefaultBiomeList.addBiome("BoP: Swampland", Biomes.swamplandNew.get(), 1); } - if(Biomes.taigaNew.isPresent()) { DefaultBiomeList.addBiome("BoP: Taiga", Biomes.taigaNew.get(), 1); } - if(Biomes.forestNew.isPresent()) { DefaultBiomeList.addBiome("BoP: Forest", Biomes.forestNew.get(), 1); } - if(Biomes.extremeHillsNew.isPresent()) { DefaultBiomeList.addBiome("BoP: ExtemeHills", Biomes.extremeHillsNew.get(), 1); } - if(Biomes.desertNew.isPresent()) { DefaultBiomeList.addBiome("BoP: Desert", Biomes.desertNew.get(), 1); } - if(Biomes.plainsNew.isPresent()) { DefaultBiomeList.addBiome("BoP: Plains", Biomes.plainsNew.get(), 1); } - } -} diff --git a/src/minecraft/biomesoplenty/integration/ForestryIntegration.java b/src/minecraft/biomesoplenty/integration/ForestryIntegration.java deleted file mode 100644 index 56bca933c..000000000 --- a/src/minecraft/biomesoplenty/integration/ForestryIntegration.java +++ /dev/null @@ -1,303 +0,0 @@ -package biomesoplenty.integration; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraftforge.liquids.LiquidStack; -import net.minecraftforge.oredict.OreDictionary; -import biomesoplenty.api.BlockReferences; -import biomesoplenty.api.Blocks; -import biomesoplenty.api.Items; -import biomesoplenty.configuration.BOPConfiguration; -import forestry.api.apiculture.FlowerManager; -import forestry.api.core.EnumHumidity; -import forestry.api.core.EnumTemperature; -import forestry.api.core.GlobalManager; -import forestry.api.core.ItemInterface; -import forestry.api.recipes.RecipeManagers; -import forestry.api.storage.BackpackManager; - -public class ForestryIntegration -{ - private static final int MINER = 0; - private static final int DIGGER = 1; - private static final int FORESTER = 2; - - protected static void init() - { - addClimateInfo(); - addFermenterRecipes(); - addFlowers(); - addBlocksToManager(); - addBlocksToBackpacks(); - } - - private static void addClimateInfo() - { - //Hot - Arid - EnumTemperature.hotBiomeIds.add(BOPConfiguration.badlandsID); - EnumTemperature.hotBiomeIds.add(BOPConfiguration.deadlandsID); - EnumTemperature.hotBiomeIds.add(BOPConfiguration.drylandsID); - EnumTemperature.hotBiomeIds.add(BOPConfiguration.dunesID); - EnumTemperature.hotBiomeIds.add(BOPConfiguration.mesaID); - EnumTemperature.hotBiomeIds.add(BOPConfiguration.steppeID); - EnumTemperature.hotBiomeIds.add(BOPConfiguration.volcanoID); - EnumTemperature.hotBiomeIds.add(BOPConfiguration.wastelandID); - - EnumHumidity.aridBiomeIds.add(BOPConfiguration.badlandsID); - EnumHumidity.aridBiomeIds.add(BOPConfiguration.deadlandsID); - EnumHumidity.aridBiomeIds.add(BOPConfiguration.drylandsID); - EnumHumidity.aridBiomeIds.add(BOPConfiguration.dunesID); - EnumHumidity.aridBiomeIds.add(BOPConfiguration.mesaID); - EnumHumidity.aridBiomeIds.add(BOPConfiguration.steppeID); - EnumHumidity.aridBiomeIds.add(BOPConfiguration.volcanoID); - EnumHumidity.aridBiomeIds.add(BOPConfiguration.wastelandID); - - //Hot - Damp - EnumTemperature.hotBiomeIds.add(BOPConfiguration.oasisID); - EnumTemperature.hotBiomeIds.add(BOPConfiguration.promisedLandID); - EnumTemperature.hotBiomeIds.add(BOPConfiguration.rainforestID); - EnumTemperature.hotBiomeIds.add(BOPConfiguration.tropicsID); - - EnumHumidity.dampBiomeIds.add(BOPConfiguration.oasisID); - EnumHumidity.dampBiomeIds.add(BOPConfiguration.promisedLandID); - EnumHumidity.dampBiomeIds.add(BOPConfiguration.rainforestID); - EnumHumidity.dampBiomeIds.add(BOPConfiguration.tropicsID); - - //Warm - Damp - EnumTemperature.warmBiomeIds.add(BOPConfiguration.bambooForestID); - EnumTemperature.warmBiomeIds.add(BOPConfiguration.sacredSpringsID); - EnumTemperature.warmBiomeIds.add(BOPConfiguration.tropicalRainforestID); - - EnumHumidity.dampBiomeIds.add(BOPConfiguration.bambooForestID); - EnumHumidity.dampBiomeIds.add(BOPConfiguration.sacredSpringsID); - EnumHumidity.dampBiomeIds.add(BOPConfiguration.tropicalRainforestID); - - //Warm - Arid - EnumTemperature.warmBiomeIds.add(BOPConfiguration.deadForestID); - EnumTemperature.warmBiomeIds.add(BOPConfiguration.savannaID); - EnumTemperature.warmBiomeIds.add(BOPConfiguration.scrublandID); - EnumTemperature.warmBiomeIds.add(BOPConfiguration.woodlandID); - - EnumHumidity.aridBiomeIds.add(BOPConfiguration.deadForestID); - EnumHumidity.aridBiomeIds.add(BOPConfiguration.savannaID); - EnumHumidity.aridBiomeIds.add(BOPConfiguration.scrublandID); - EnumHumidity.aridBiomeIds.add(BOPConfiguration.woodlandID); - - //Normal - Damp - EnumTemperature.normalBiomeIds.add(BOPConfiguration.bayouID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.bogID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.deadSwampID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.fungiForestID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.lushSwampID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.mangroveID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.marshID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.moorID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.mysticGroveID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.ominousWoodsID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.quagmireID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.swampwoodsID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.wetlandID); - - EnumHumidity.dampBiomeIds.add(BOPConfiguration.bayouID); - EnumHumidity.dampBiomeIds.add(BOPConfiguration.bogID); - EnumHumidity.dampBiomeIds.add(BOPConfiguration.deadSwampID); - EnumHumidity.dampBiomeIds.add(BOPConfiguration.fungiForestID); - EnumHumidity.dampBiomeIds.add(BOPConfiguration.lushSwampID); - EnumHumidity.dampBiomeIds.add(BOPConfiguration.mangroveID); - EnumHumidity.dampBiomeIds.add(BOPConfiguration.marshID); - EnumHumidity.dampBiomeIds.add(BOPConfiguration.moorID); - EnumHumidity.dampBiomeIds.add(BOPConfiguration.mysticGroveID); - EnumHumidity.dampBiomeIds.add(BOPConfiguration.ominousWoodsID); - EnumHumidity.dampBiomeIds.add(BOPConfiguration.quagmireID); - EnumHumidity.dampBiomeIds.add(BOPConfiguration.swampwoodsID); - EnumHumidity.dampBiomeIds.add(BOPConfiguration.wetlandID); - - //Normal - EnumTemperature.normalBiomeIds.add(BOPConfiguration.birchForestID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.borealForestID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.canyonID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.chaparralID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.cherryBlossomGroveID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.coniferousForestID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.deciduousForestID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.fieldID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.gardenID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.grasslandID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.groveID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.highlandID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.lushDesertID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.mapleWoodsID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.meadowID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.orchardID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.originValleyID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.pastureID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.prairieID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.redwoodForestID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.seasonalForestID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.shieldID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.shoreID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.spruceWoodsID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.temperateRainforestID); - - EnumHumidity.normalBiomeIds.add(BOPConfiguration.birchForestID); - EnumHumidity.normalBiomeIds.add(BOPConfiguration.borealForestID); - EnumHumidity.normalBiomeIds.add(BOPConfiguration.canyonID); - EnumHumidity.normalBiomeIds.add(BOPConfiguration.chaparralID); - EnumHumidity.normalBiomeIds.add(BOPConfiguration.cherryBlossomGroveID); - EnumHumidity.normalBiomeIds.add(BOPConfiguration.coniferousForestID); - EnumHumidity.normalBiomeIds.add(BOPConfiguration.deciduousForestID); - EnumHumidity.normalBiomeIds.add(BOPConfiguration.fieldID); - EnumHumidity.normalBiomeIds.add(BOPConfiguration.gardenID); - EnumHumidity.normalBiomeIds.add(BOPConfiguration.grasslandID); - EnumHumidity.normalBiomeIds.add(BOPConfiguration.groveID); - EnumHumidity.normalBiomeIds.add(BOPConfiguration.highlandID); - EnumHumidity.normalBiomeIds.add(BOPConfiguration.lushDesertID); - EnumHumidity.normalBiomeIds.add(BOPConfiguration.mapleWoodsID); - EnumHumidity.normalBiomeIds.add(BOPConfiguration.meadowID); - EnumHumidity.normalBiomeIds.add(BOPConfiguration.orchardID); - EnumHumidity.normalBiomeIds.add(BOPConfiguration.originValleyID); - EnumHumidity.normalBiomeIds.add(BOPConfiguration.pastureID); - EnumHumidity.normalBiomeIds.add(BOPConfiguration.prairieID); - EnumHumidity.normalBiomeIds.add(BOPConfiguration.redwoodForestID); - EnumHumidity.normalBiomeIds.add(BOPConfiguration.seasonalForestID); - EnumHumidity.normalBiomeIds.add(BOPConfiguration.shieldID); - EnumHumidity.normalBiomeIds.add(BOPConfiguration.shoreID); - EnumHumidity.normalBiomeIds.add(BOPConfiguration.spruceWoodsID); - EnumHumidity.normalBiomeIds.add(BOPConfiguration.temperateRainforestID); - - //Normal - Arid - EnumTemperature.normalBiomeIds.add(BOPConfiguration.cragID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.fenID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.heathlandID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.jadeCliffsID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.mountainID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.outbackID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.shrublandID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.thicketID); - - EnumHumidity.aridBiomeIds.add(BOPConfiguration.cragID); - EnumHumidity.aridBiomeIds.add(BOPConfiguration.fenID); - EnumHumidity.aridBiomeIds.add(BOPConfiguration.heathlandID); - EnumHumidity.aridBiomeIds.add(BOPConfiguration.jadeCliffsID); - EnumHumidity.aridBiomeIds.add(BOPConfiguration.mountainID); - EnumHumidity.aridBiomeIds.add(BOPConfiguration.outbackID); - EnumHumidity.aridBiomeIds.add(BOPConfiguration.shrublandID); - EnumHumidity.aridBiomeIds.add(BOPConfiguration.thicketID); - - //Cold - EnumTemperature.coldBiomeIds.add(BOPConfiguration.tundraID); - EnumTemperature.coldBiomeIds.add(BOPConfiguration.snowyWoodsID); - - EnumHumidity.normalBiomeIds.add(BOPConfiguration.tundraID); - EnumHumidity.normalBiomeIds.add(BOPConfiguration.snowyWoodsID); - - //Icy - Arid - EnumTemperature.icyBiomeIds.add(BOPConfiguration.alpsID); - EnumTemperature.icyBiomeIds.add(BOPConfiguration.arcticID); - EnumTemperature.icyBiomeIds.add(BOPConfiguration.frostForestID); - EnumTemperature.icyBiomeIds.add(BOPConfiguration.glacierID); - EnumTemperature.icyBiomeIds.add(BOPConfiguration.iceSheetID); - EnumTemperature.icyBiomeIds.add(BOPConfiguration.icyHillsID); - - EnumHumidity.aridBiomeIds.add(BOPConfiguration.alpsID); - EnumHumidity.aridBiomeIds.add(BOPConfiguration.arcticID); - EnumHumidity.aridBiomeIds.add(BOPConfiguration.frostForestID); - EnumHumidity.aridBiomeIds.add(BOPConfiguration.glacierID); - EnumHumidity.aridBiomeIds.add(BOPConfiguration.iceSheetID); - EnumHumidity.aridBiomeIds.add(BOPConfiguration.icyHillsID); - - //New vanilla biomes - EnumTemperature.normalBiomeIds.add(BOPConfiguration.plainsNewID); - EnumTemperature.hotBiomeIds.add(BOPConfiguration.desertNewID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.extremeHillsNewID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.forestNewID); - EnumTemperature.coldBiomeIds.add(BOPConfiguration.taigaNewID); - EnumTemperature.normalBiomeIds.add(BOPConfiguration.swamplandNewID); - EnumTemperature.hotBiomeIds.add(BOPConfiguration.jungleNewID); - - EnumHumidity.normalBiomeIds.add(BOPConfiguration.plainsNewID); - EnumHumidity.aridBiomeIds.add(BOPConfiguration.desertNewID); - EnumHumidity.normalBiomeIds.add(BOPConfiguration.extremeHillsNewID); - EnumHumidity.normalBiomeIds.add(BOPConfiguration.forestNewID); - EnumHumidity.normalBiomeIds.add(BOPConfiguration.taigaNewID); - EnumHumidity.dampBiomeIds.add(BOPConfiguration.swamplandNewID); - EnumHumidity.dampBiomeIds.add(BOPConfiguration.jungleNewID); - } - - private static void addFermenterRecipes() - { - addFermenterRecipeSapling(new ItemStack(Blocks.saplings.get(), 1, OreDictionary.WILDCARD_VALUE)); - addFermenterRecipeSapling(new ItemStack(Blocks.colorizedSaplings.get(), 1, OreDictionary.WILDCARD_VALUE)); - } - - private static void addFermenterRecipeSapling(ItemStack resource) { - RecipeManagers.fermenterManager.addRecipe(resource, 250, 1.0f, - new LiquidStack(ItemInterface.getItem("liquidBiomass").itemID, 1, ItemInterface.getItem("liquidBiomass").getItemDamage()), - new LiquidStack(Block.waterStill, 1)); - RecipeManagers.fermenterManager.addRecipe(resource, 250, 1.0f, - new LiquidStack(ItemInterface.getItem("liquidBiomass").itemID, 1, ItemInterface.getItem("liquidBiomass").getItemDamage()), - new LiquidStack(ItemInterface.getItem("liquidJuice").itemID, 1, ItemInterface.getItem("liquidJuice").getItemDamage())); - RecipeManagers.fermenterManager.addRecipe(resource, 250, 1.0f, - new LiquidStack(ItemInterface.getItem("liquidBiomass").itemID, 1, ItemInterface.getItem("liquidBiomass").getItemDamage()), - new LiquidStack(ItemInterface.getItem("liquidHoney").itemID, 1, ItemInterface.getItem("liquidHoney").getItemDamage())); - } - - private static void addFlowers() - { - for (int i = 0; i < 10; ++i) - FlowerManager.plainFlowers.add(new ItemStack(Blocks.flowers.get(), 1, i)); - } - - private static void addBlocksToManager() - { - GlobalManager.leafBlockIds.add(Blocks.leaves1.get().blockID); - GlobalManager.leafBlockIds.add(Blocks.leaves2.get().blockID); - GlobalManager.leafBlockIds.add(Blocks.leavesColorized.get().blockID); - GlobalManager.leafBlockIds.add(Blocks.leavesFruit.get().blockID); - - GlobalManager.dirtBlockIds.add(Blocks.ash.get().blockID); - GlobalManager.dirtBlockIds.add(Blocks.hardDirt.get().blockID); - GlobalManager.dirtBlockIds.add(Blocks.holyGrass.get().blockID); - GlobalManager.dirtBlockIds.add(Blocks.mud.get().blockID); - GlobalManager.dirtBlockIds.add(Blocks.originGrass.get().blockID); - GlobalManager.dirtBlockIds.add(Blocks.redRock.get().blockID); - - GlobalManager.sandBlockIds.add(Blocks.hardSand.get().blockID); - - GlobalManager.snowBlockIds.add(Blocks.hardIce.get().blockID); - } - - private static void addBlocksToBackpacks() - { - // Miner's Backpack - BackpackManager.backpackItems[MINER].add(new ItemStack(Blocks.amethystOre.get(), 1, 0)); - BackpackManager.backpackItems[MINER].add(new ItemStack(Blocks.holyStone.get(), 1, 0)); - BackpackManager.backpackItems[MINER].add(new ItemStack(Blocks.redRock.get(), 1, OreDictionary.WILDCARD_VALUE)); - BackpackManager.backpackItems[MINER].add(new ItemStack(Blocks.driedDirt.get(), 1, 0)); - BackpackManager.backpackItems[MINER].add(new ItemStack(Blocks.holyGrass.get(), 1, 0)); - BackpackManager.backpackItems[MINER].add(new ItemStack(Blocks.cragRock.get(), 1, 0)); - BackpackManager.backpackItems[MINER].add(new ItemStack(Blocks.ashStone.get(), 1, 0)); - BackpackManager.backpackItems[MINER].add(new ItemStack(Items.miscItems.get(), 1, 2)); - - // Digger's Backpack - BackpackManager.backpackItems[DIGGER].add(new ItemStack(Blocks.holyGrass.get(), 1, 1)); - BackpackManager.backpackItems[DIGGER].add(new ItemStack(Blocks.mud.get(), 1, OreDictionary.WILDCARD_VALUE)); - BackpackManager.backpackItems[DIGGER].add(new ItemStack(Blocks.hardDirt.get(), 1, 0)); - BackpackManager.backpackItems[DIGGER].add(new ItemStack(Blocks.hardSand.get(), 1, 0)); - BackpackManager.backpackItems[DIGGER].add(new ItemStack(Blocks.originGrass.get(), 1, 0)); - BackpackManager.backpackItems[DIGGER].add(new ItemStack(Blocks.ash.get(), 1, 0)); - - // Forester's Backpack - BackpackManager.backpackItems[FORESTER].add(new ItemStack(Blocks.logs1.get(), 1, OreDictionary.WILDCARD_VALUE)); - BackpackManager.backpackItems[FORESTER].add(new ItemStack(Blocks.logs2.get(), 1, OreDictionary.WILDCARD_VALUE)); - BackpackManager.backpackItems[FORESTER].add(new ItemStack(Blocks.logs3.get(), 1, OreDictionary.WILDCARD_VALUE)); - BackpackManager.backpackItems[FORESTER].add(new ItemStack(Blocks.colorizedSaplings.get(), 1, OreDictionary.WILDCARD_VALUE)); - BackpackManager.backpackItems[FORESTER].add(new ItemStack(Blocks.saplings.get(), 1, OreDictionary.WILDCARD_VALUE)); - BackpackManager.backpackItems[FORESTER].add(new ItemStack(Blocks.leaves1.get(), 1, OreDictionary.WILDCARD_VALUE)); - BackpackManager.backpackItems[FORESTER].add(new ItemStack(Blocks.leaves2.get(), 1, OreDictionary.WILDCARD_VALUE)); - BackpackManager.backpackItems[FORESTER].add(new ItemStack(Blocks.leavesColorized.get(), 1, OreDictionary.WILDCARD_VALUE)); - BackpackManager.backpackItems[FORESTER].add(new ItemStack(Blocks.leavesFruit.get(), 1, OreDictionary.WILDCARD_VALUE)); - BackpackManager.backpackItems[FORESTER].add(new ItemStack(Blocks.bamboo.get(), 1, 0)); - BackpackManager.backpackItems[FORESTER].add(new ItemStack(Blocks.petals.get(), 1, OreDictionary.WILDCARD_VALUE)); - } -} diff --git a/src/minecraft/biomesoplenty/integration/TEIntegration.java b/src/minecraft/biomesoplenty/integration/TEIntegration.java deleted file mode 100644 index 3157c17d2..000000000 --- a/src/minecraft/biomesoplenty/integration/TEIntegration.java +++ /dev/null @@ -1,28 +0,0 @@ -package biomesoplenty.integration; - -import net.minecraft.item.ItemStack; -import thermalexpansion.api.crafting.CraftingManagers; -import thermalexpansion.api.item.ItemRegistry; -import biomesoplenty.api.Blocks; - -public class TEIntegration -{ - protected static void init() - { - addSawMillRecipes(); - } - - private static void addSawMillRecipes() - { - CraftingManagers.sawmillManager.addRecipe(80, new ItemStack(Blocks.logs1.get(), 1, 0), new ItemStack(Blocks.planks.get(), 6, 0), ItemRegistry.getItem("sawdust", 1), 100); - CraftingManagers.sawmillManager.addRecipe(80, new ItemStack(Blocks.logs1.get(), 1, 1), new ItemStack(Blocks.planks.get(), 6, 1), ItemRegistry.getItem("sawdust", 1), 100); - CraftingManagers.sawmillManager.addRecipe(80, new ItemStack(Blocks.logs1.get(), 1, 2), new ItemStack(Blocks.planks.get(), 6, 2), ItemRegistry.getItem("sawdust", 1), 100); - CraftingManagers.sawmillManager.addRecipe(80, new ItemStack(Blocks.logs1.get(), 1, 3), new ItemStack(Blocks.planks.get(), 6, 3), ItemRegistry.getItem("sawdust", 1), 100); - CraftingManagers.sawmillManager.addRecipe(80, new ItemStack(Blocks.logs2.get(), 1, 0), new ItemStack(Blocks.planks.get(), 6, 4), ItemRegistry.getItem("sawdust", 1), 100); - CraftingManagers.sawmillManager.addRecipe(80, new ItemStack(Blocks.logs2.get(), 1, 1), new ItemStack(Blocks.planks.get(), 6, 5), ItemRegistry.getItem("sawdust", 1), 100); - CraftingManagers.sawmillManager.addRecipe(80, new ItemStack(Blocks.logs2.get(), 1, 2), new ItemStack(Blocks.planks.get(), 6, 6), ItemRegistry.getItem("sawdust", 1), 100); - CraftingManagers.sawmillManager.addRecipe(80, new ItemStack(Blocks.logs2.get(), 1, 3), new ItemStack(Blocks.planks.get(), 6, 7), ItemRegistry.getItem("sawdust", 1), 100); - CraftingManagers.sawmillManager.addRecipe(80, new ItemStack(Blocks.logs3.get(), 1, 0), new ItemStack(Blocks.planks.get(), 6, 8), ItemRegistry.getItem("sawdust", 1), 100); - CraftingManagers.sawmillManager.addRecipe(80, new ItemStack(Blocks.logs3.get(), 1, 1), new ItemStack(Blocks.planks.get(), 6, 9), ItemRegistry.getItem("sawdust", 1), 100); - } -} diff --git a/src/minecraft/biomesoplenty/integration/ThaumcraftIntegration.java b/src/minecraft/biomesoplenty/integration/ThaumcraftIntegration.java deleted file mode 100644 index e4618524f..000000000 --- a/src/minecraft/biomesoplenty/integration/ThaumcraftIntegration.java +++ /dev/null @@ -1,174 +0,0 @@ -package biomesoplenty.integration; - -import cpw.mods.fml.common.event.FMLInterModComms; -import net.minecraft.item.ItemStack; -import biomesoplenty.api.BlockReferences; -import biomesoplenty.api.Blocks; -import biomesoplenty.api.BlockReferences.EnumBlocks; -import biomesoplenty.api.Items; -import thaumcraft.api.EnumTag; -import thaumcraft.api.ObjectTags; -import thaumcraft.api.ThaumcraftApi; - -public class ThaumcraftIntegration { - - public static void init() - { - addAspects(); - FMLInterModComms.sendMessage("Thaumcraft", "harvestClickableCrop", new ItemStack(Blocks.leavesFruit.get(), 1, 3)); - } - - private static void addAspects() - { - - //TODO: Ensure all tags are balanced (Logs shouldn't give more light when turned into planks) - - //Woods - - ThaumcraftApi.registerObjectTag(getBID("acaciaLog"), getBMeta("acaciaLog"), (new ObjectTags()).add(EnumTag.WOOD, 8)); - ThaumcraftApi.registerObjectTag(getBID("cherryLog"), getBMeta("cherryLog"), (new ObjectTags()).add(EnumTag.WOOD, 8)); - - ThaumcraftApi.registerObjectTag(getBID("darkLog"), getBMeta("darkLog"), (new ObjectTags()).add(EnumTag.WOOD, 8).add(EnumTag.DARK, 2)); - ThaumcraftApi.registerObjectTag(getBID("firLog"), getBMeta("firLog"), (new ObjectTags()).add(EnumTag.WOOD, 8)); - - ThaumcraftApi.registerObjectTag(getBID("holyLog"), getBMeta("holyLog"), (new ObjectTags()).add(EnumTag.WOOD, 8).add(EnumTag.LIGHT, 2)); - ThaumcraftApi.registerObjectTag(getBID("magicLog"), getBMeta("magicLog"), (new ObjectTags()).add(EnumTag.WOOD, 8).add(EnumTag.MAGIC, 2)); - ThaumcraftApi.registerObjectTag(getBID("mangroveLog"), getBMeta("mangroveLog"), (new ObjectTags()).add(EnumTag.WOOD, 8)); - ThaumcraftApi.registerObjectTag(getBID("palmLog"), getBMeta("palmLog"), (new ObjectTags()).add(EnumTag.WOOD, 8)); - - ThaumcraftApi.registerObjectTag(getBID("redwoodLog"), getBMeta("redwoodLog"), (new ObjectTags()).add(EnumTag.WOOD, 8)); - ThaumcraftApi.registerObjectTag(getBID("willowLog"), getBMeta("willowLog"), (new ObjectTags()).add(EnumTag.WOOD, 8)); - ThaumcraftApi.registerObjectTag(getBID("deadLog"), getBMeta("deadLog"), (new ObjectTags()).add(EnumTag.WOOD, 8)); ///Working - ThaumcraftApi.registerObjectTag(getBID("bigFlowerStem"), getBMeta("bigFlowerStem"), (new ObjectTags()).add(EnumTag.FLOWER, 4).add(EnumTag.MAGIC, 1)); - - //Planks - ThaumcraftApi.registerObjectTag(getBID("acaciaPlank"), getBMeta("acaciaPlank"), (new ObjectTags()).add(EnumTag.WOOD, 2)); - ThaumcraftApi.registerObjectTag(getBID("cherryPlank"), getBMeta("cherryPlank"), (new ObjectTags()).add(EnumTag.WOOD, 2)); - ThaumcraftApi.registerObjectTag(getBID("darkPlank"), getBMeta("darkPlank"), (new ObjectTags()).add(EnumTag.WOOD, 2)/*.add(EnumTag.DARK, 1)*/); - ThaumcraftApi.registerObjectTag(getBID("firPlank"), getBMeta("firPlank"), (new ObjectTags()).add(EnumTag.WOOD, 2)); - ThaumcraftApi.registerObjectTag(getBID("holyPlank"), getBMeta("holyPlank"), (new ObjectTags()).add(EnumTag.WOOD, 2)/*.add(EnumTag.LIGHT, 1)*/); - ThaumcraftApi.registerObjectTag(getBID("magicPlank"), getBMeta("magicPlank"), (new ObjectTags()).add(EnumTag.WOOD, 2)/*.add(EnumTag.MAGIC, 1)*/); - ThaumcraftApi.registerObjectTag(getBID("mangrovePlank"), getBMeta("mangrovePlank"), (new ObjectTags()).add(EnumTag.WOOD, 2)); - ThaumcraftApi.registerObjectTag(getBID("palmPlank"), getBMeta("palmPlank"), (new ObjectTags()).add(EnumTag.WOOD, 2)); - ThaumcraftApi.registerObjectTag(getBID("redwoodPlank"), getBMeta("redwoodPlank"), (new ObjectTags()).add(EnumTag.WOOD, 2)); - ThaumcraftApi.registerObjectTag(getBID("willowPlank"), getBMeta("willowPlank"), (new ObjectTags()).add(EnumTag.WOOD, 2)); - ThaumcraftApi.registerObjectTag(getBID("bambooThatching"), getBMeta("bambooThatching"), (new ObjectTags()).add(EnumTag.WATER, 14).add(EnumTag.PLANT, 14)); - - //Leaves - ThaumcraftApi.registerObjectTag(getBID("holyLeaves"), getBMeta("holyLeaves"), (new ObjectTags()).add(EnumTag.PLANT, 1).add(EnumTag.LIGHT, 1)); - ThaumcraftApi.registerObjectTag(getBID("magicLeaves"), getBMeta("magicLeaves"), (new ObjectTags()).add(EnumTag.PLANT, 1).add(EnumTag.MAGIC, 1)); - ThaumcraftApi.registerObjectTag(getBID("darkLeaves"), getBMeta("darkLeaves"), (new ObjectTags()).add(EnumTag.PLANT, 1).add(EnumTag.DARK, 1)); - ThaumcraftApi.registerObjectTag(getBID("deadLeaves"), getBMeta("deadLeaves"), (new ObjectTags()).add(EnumTag.PLANT, 1).add(EnumTag.DEATH, 1)); - ThaumcraftApi.registerObjectTag(getBID("appleLeaves"), getBMeta("appleLeaves"), (new ObjectTags()).add(EnumTag.PLANT, 1).add(EnumTag.LIFE, 1)); - ThaumcraftApi.registerObjectTag(getBID("acaciaLeaves"), getBMeta("acaciaLeaves"), (new ObjectTags()).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("firLeaves"), getBMeta("firLeaves"), (new ObjectTags()).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("mangroveLeaves"), getBMeta("mangroveLeaves"), (new ObjectTags()).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("palmLeaves"), getBMeta("palmLeaves"), (new ObjectTags()).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("redwoodLeaves"), getBMeta("redwoodLeaves"), (new ObjectTags()).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("willowLeaves"), getBMeta("willowLeaves"), (new ObjectTags()).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("yellowAutumnLeaves"), getBMeta("yellowAutumnLeaves"), (new ObjectTags()).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("mapleLeaves"), getBMeta("mapleLeaves"), (new ObjectTags()).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("orangeAutumnLeaves"), getBMeta("orangeAutumnLeaves"), (new ObjectTags()).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("pinkCherryLeaves"), getBMeta("pinkCherryLeaves"), (new ObjectTags()).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("whiteCherryLeaves"), getBMeta("whiteCherryLeaves"), (new ObjectTags()).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("bambooLeaves"), getBMeta("bambooLeaves"), (new ObjectTags()).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("originLeaves"), getBMeta("originLeaves"), (new ObjectTags()).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("appleLeavesFruitless"), getBMeta("appleLeavesFruitless"), (new ObjectTags()).add(EnumTag.PLANT, 2)); - - //Saplings - ThaumcraftApi.registerObjectTag(getBID("holySapling"), getBMeta("holySapling"), (new ObjectTags()).add(EnumTag.WOOD, 4).add(EnumTag.PLANT, 2).add(EnumTag.LIGHT, 2)); - ThaumcraftApi.registerObjectTag(getBID("magicSapling"), getBMeta("magicSapling"), (new ObjectTags()).add(EnumTag.WOOD, 4).add(EnumTag.PLANT, 2).add(EnumTag.MAGIC, 2)); - ThaumcraftApi.registerObjectTag(getBID("darkSapling"), getBMeta("darkSapling"), (new ObjectTags()).add(EnumTag.WOOD, 4).add(EnumTag.PLANT, 2).add(EnumTag.DARK, 2)); - ThaumcraftApi.registerObjectTag(getBID("deadSapling"), getBMeta("deadSapling"), (new ObjectTags()).add(EnumTag.WOOD, 4).add(EnumTag.PLANT, 2).add(EnumTag.DEATH, 2)); - ThaumcraftApi.registerObjectTag(getBID("acaciaSapling"), getBMeta("acaciaSapling"), (new ObjectTags()).add(EnumTag.WOOD, 4).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("firSapling"), getBMeta("firSapling"), (new ObjectTags()).add(EnumTag.WOOD, 4).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("mangroveSapling"), getBMeta("mangroveSapling"), (new ObjectTags()).add(EnumTag.WOOD, 4).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("palmSapling"), getBMeta("palmSapling"), (new ObjectTags()).add(EnumTag.WOOD, 4).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("redwoodSapling"), getBMeta("redwoodSapling"), (new ObjectTags()).add(EnumTag.WOOD, 4).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("willowSapling"), getBMeta("willowSapling"), (new ObjectTags()).add(EnumTag.WOOD, 4).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("mapleSapling"), getBMeta("mapleSapling"), (new ObjectTags()).add(EnumTag.WOOD, 4).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("orangeAutumnSapling"), getBMeta("orangeAutumnSapling"), (new ObjectTags()).add(EnumTag.WOOD, 4).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("pinkCherrySapling"), getBMeta("pinkCherrySapling"), (new ObjectTags()).add(EnumTag.WOOD, 4).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("whiteCherrySapling"), getBMeta("whiteCherrySapling"), (new ObjectTags()).add(EnumTag.WOOD, 4).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("appleSapling"), getBMeta("appleSapling"), (new ObjectTags()).add(EnumTag.WOOD, 4).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("originSapling"), getBMeta("originSapling"), (new ObjectTags()).add(EnumTag.WOOD, 4).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("yellowAutumnSapling"), getBMeta("yellowAutumnSapling"), (new ObjectTags()).add(EnumTag.WOOD, 4).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("bambooSapling"), getBMeta("bambooSapling"), (new ObjectTags()).add(EnumTag.WOOD, 4).add(EnumTag.PLANT, 2)); - - //Blocks - ThaumcraftApi.registerObjectTag(getBID("mud"), getBMeta("mud"), (new ObjectTags()).add(EnumTag.WATER, 3).add(EnumTag.EARTH, 6)); - ThaumcraftApi.registerObjectTag(getBID("driedDirt"), getBMeta("driedDirt"), (new ObjectTags()).add(EnumTag.DESTRUCTION, 1).add(EnumTag.EARTH, 1)); - ThaumcraftApi.registerObjectTag(getBID("redRock"), getBMeta("redRock"), (new ObjectTags()).add(EnumTag.ROCK, 2)); - ThaumcraftApi.registerObjectTag(getBID("ash"), getBMeta("ash"), (new ObjectTags()).add(EnumTag.DESTRUCTION, 3).add(EnumTag.EXCHANGE, 3)); - ThaumcraftApi.registerObjectTag(getBID("ashStone"), getBMeta("ashStone"), (new ObjectTags()).add(EnumTag.ROCK, 1).add(EnumTag.EXCHANGE, 1)); - ThaumcraftApi.registerObjectTag(getBID("hardIce"), getBMeta("hardIce"), (new ObjectTags()).add(EnumTag.ROCK, 2).add(EnumTag.COLD, 2)); - ThaumcraftApi.registerObjectTag(getBID("originGrass"), getBMeta("originGrass"), (new ObjectTags()).add(EnumTag.PLANT, 1).add(EnumTag.EARTH, 2)); - ThaumcraftApi.registerObjectTag(getBID("hardSand"), getBMeta("hardSand"), (new ObjectTags()).add(EnumTag.ROCK, 1).add(EnumTag.EARTH, 2)); - ThaumcraftApi.registerObjectTag(getBID("hardDirt"), getBMeta("hardDirt"), (new ObjectTags()).add(EnumTag.ROCK, 1).add(EnumTag.EARTH, 2)); - ThaumcraftApi.registerObjectTag(getBID("holyGrass"), getBMeta("holyGrass"), (new ObjectTags()).add(EnumTag.PLANT, 1).add(EnumTag.EARTH, 2).add(EnumTag.LIGHT, 1)); - ThaumcraftApi.registerObjectTag(getBID("holyStone"), getBMeta("holyStone"), (new ObjectTags()).add(EnumTag.LIGHT, 1).add(EnumTag.ROCK, 2)); - ThaumcraftApi.registerObjectTag(getBID("cragRock"), getBMeta("cragRock"), (new ObjectTags()).add(EnumTag.ROCK, 2)); - ThaumcraftApi.registerObjectTag(getBID("quicksand"), getBMeta("quicksand"), (new ObjectTags()).add(EnumTag.EARTH, 2).add(EnumTag.TRAP, 4)); - ThaumcraftApi.registerObjectTag(getBID("smolderingGrass"), getBMeta("smolderingGrass"), (new ObjectTags()).add(EnumTag.EARTH, 2).add(EnumTag.FIRE, 1)); - ThaumcraftApi.registerObjectTag(getBID("amethystBlock"), getBMeta("amethystBlock"), (new ObjectTags()).add(EnumTag.VALUABLE, 58).add(EnumTag.PURE, 58).add(EnumTag.CRYSTAL, 87)); - ThaumcraftApi.registerObjectTag(getBID("amethystOre"), getBMeta("amethystOre"), (new ObjectTags()).add(EnumTag.VALUABLE, 6).add(EnumTag.PURE, 6).add(EnumTag.CRYSTAL, 14).add(EnumTag.ROCK, 4)); - ThaumcraftApi.registerObjectTag(getBID("redRockCobble"), getBMeta("redRockCobble"), (new ObjectTags()).add(EnumTag.DESTRUCTION, 1).add(EnumTag.ROCK, 1)); - ThaumcraftApi.registerObjectTag(getBID("giantFlowerRed"), getBMeta("giantFlowerRed"), (new ObjectTags()).add(EnumTag.FLOWER, 4).add(EnumTag.MAGIC, 1)); - ThaumcraftApi.registerObjectTag(getBID("giantFlowerYellow"), getBMeta("giantFlowerYellow"), (new ObjectTags()).add(EnumTag.FLOWER, 4).add(EnumTag.MAGIC, 1)); - - //Items - /*Amethyst*/ThaumcraftApi.registerObjectTag(Items.miscItems.get().itemID, 2, (new ObjectTags()).add(EnumTag.VALUABLE, 8).add(EnumTag.PURE, 8).add(EnumTag.CRYSTAL, 16)); - /*Ashes*/ThaumcraftApi.registerObjectTag(Items.miscItems.get().itemID, 1, (new ObjectTags()).add(EnumTag.DESTRUCTION, 1).add(EnumTag.EXCHANGE, 1)); - /*Mudbrick*/ThaumcraftApi.registerObjectTag(Items.miscItems.get().itemID, 0, (new ObjectTags()).add(EnumTag.EARTH, 2).add(EnumTag.FIRE, 1)); - ThaumcraftApi.registerObjectTag(Items.mudball.get().itemID, 0, (new ObjectTags()).add(EnumTag.WATER, 1).add(EnumTag.EARTH, 2)); - ThaumcraftApi.registerObjectTag(Items.shroomPowder.get().itemID, -1, (new ObjectTags()).add(EnumTag.FUNGUS, 2).add(EnumTag.DESTRUCTION, 1)); - ThaumcraftApi.registerObjectTag(Items.bopDisc.get().itemID, -1, (new ObjectTags()).add(EnumTag.SOUND, 12).add(EnumTag.VALUABLE, 4).add(EnumTag.CROP, 4)); - ThaumcraftApi.registerObjectTag(Items.bopDiscMud.get().itemID, -1, (new ObjectTags()).add(EnumTag.SOUND, 12).add(EnumTag.VALUABLE, 4).add(EnumTag.EARTH, 2).add(EnumTag.WATER, 2)); - - //Placer Items - ThaumcraftApi.registerObjectTag(getBID("barley"), getBMeta("barley"), (new ObjectTags()).add(EnumTag.PLANT, 1).add(EnumTag.LIFE, 1)); - ThaumcraftApi.registerObjectTag(getBID("cattail"), getBMeta("cattail"), (new ObjectTags()).add(EnumTag.WATER, 1).add(EnumTag.PLANT, 1)); - ThaumcraftApi.registerObjectTag(getBID("bamboo"), getBMeta("bamboo"), (new ObjectTags()).add(EnumTag.PLANT, 1).add(EnumTag.LIFE, 1)); - ThaumcraftApi.registerObjectTag(getBID("sproutItem"), getBMeta("sproutItem"), (new ObjectTags()).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("bushItem"), getBMeta("bushItem"), (new ObjectTags()).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("mediumGrassItem"), getBMeta("mediumGrassItem"), (new ObjectTags()).add(EnumTag.PLANT, 1)); - ThaumcraftApi.registerObjectTag(getBID("shortGrassItem"), getBMeta("shortGrassItem"), (new ObjectTags()).add(EnumTag.PLANT, 1)); - ThaumcraftApi.registerObjectTag(getBID("highGrassItem"), getBMeta("highGrassItem"), (new ObjectTags()).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("bushItem"), getBMeta("bushItem"), (new ObjectTags()).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("algae"), getBMeta("algae"), (new ObjectTags()).add(EnumTag.PLANT, 1).add(EnumTag.WATER, 1)); - - //Plants - ThaumcraftApi.registerObjectTag(getBID("toadstool"), getBMeta("toadstool"), (new ObjectTags()).add(EnumTag.FUNGUS, 4)); - ThaumcraftApi.registerObjectTag(getBID("tinyCactus"), getBMeta("tinyCactus"), (new ObjectTags()).add(EnumTag.PLANT, 2).add(EnumTag.WEAPON, 1)); - ThaumcraftApi.registerObjectTag(getBID("holyTallGrass"), getBMeta("holyTallGrass"), (new ObjectTags()).add(EnumTag.WIND, 1).add(EnumTag.PLANT, 1).add(EnumTag.LIGHT, 1)); - ThaumcraftApi.registerObjectTag(getBID("desertSprouts"), getBMeta("desertSprouts"), (new ObjectTags()).add(EnumTag.PLANT, 1)); - ThaumcraftApi.registerObjectTag(getBID("duneGrass"), getBMeta("duneGrass"), (new ObjectTags()).add(EnumTag.PLANT, 1).add(EnumTag.WIND, 1)); - ThaumcraftApi.registerObjectTag(getBID("thorn"), getBMeta("thorn"), (new ObjectTags()).add(EnumTag.PLANT, 2).add(EnumTag.WEAPON, 1)); - ThaumcraftApi.registerObjectTag(getBID("desertGrass"), getBMeta("desertGrass"), (new ObjectTags()).add(EnumTag.PLANT, 1)); - ThaumcraftApi.registerObjectTag(getBID("deadGrass"), getBMeta("deadGrass"), (new ObjectTags()).add(EnumTag.PLANT, 1)); - ThaumcraftApi.registerObjectTag(getBID("treeMoss"), getBMeta("treeMoss"), (new ObjectTags()).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("moss"), getBMeta("moss"), (new ObjectTags()).add(EnumTag.PLANT, 2)); - ThaumcraftApi.registerObjectTag(getBID("willow"), getBMeta("willow"), (new ObjectTags()).add(EnumTag.PLANT, 2)); - - //Flowers - ThaumcraftApi.registerObjectTag(getBID("violet"), getBMeta("violet"), (new ObjectTags()).add(EnumTag.FLOWER, 4)); - ThaumcraftApi.registerObjectTag(getBID("hydrangea"), getBMeta("hydrangea"), (new ObjectTags()).add(EnumTag.FLOWER, 4)); - ThaumcraftApi.registerObjectTag(getBID("deathbloom"), getBMeta("deathbloom"), (new ObjectTags()).add(EnumTag.FLOWER, 4).add(EnumTag.DEATH, 1)); - ThaumcraftApi.registerObjectTag(getBID("glowFlower"), getBMeta("glowFlower"), (new ObjectTags()).add(EnumTag.FLOWER, 4).add(EnumTag.LIGHT, 1)); - ThaumcraftApi.registerObjectTag(getBID("anenome"), getBMeta("anenome"), (new ObjectTags()).add(EnumTag.FLOWER, 4)); - ThaumcraftApi.registerObjectTag(getBID("swampFlower"), getBMeta("swampFlower"), (new ObjectTags()).add(EnumTag.FLOWER, 4)); - ThaumcraftApi.registerObjectTag(getBID("wildFlower"), getBMeta("wildFlower"), (new ObjectTags()).add(EnumTag.FLOWER, 4)); - ThaumcraftApi.registerObjectTag(getBID("daisy"), getBMeta("daisy"), (new ObjectTags()).add(EnumTag.FLOWER, 4)); - ThaumcraftApi.registerObjectTag(getBID("tulip"), getBMeta("tulip"), (new ObjectTags()).add(EnumTag.FLOWER, 4)); - ThaumcraftApi.registerObjectTag(getBID("clover"), getBMeta("clover"), (new ObjectTags()).add(EnumTag.FLOWER, 1).add(EnumTag.PLANT, 1)); - - } - - private static int getBID(String name) { - return BlockReferences.getBlockID(name); - } - - private static int getBMeta(String name) { - return BlockReferences.getBlockMeta(name); - } -} diff --git a/src/minecraft/biomesoplenty/items/ItemBOP.java b/src/minecraft/biomesoplenty/items/ItemBOP.java deleted file mode 100644 index 85bd8192b..000000000 --- a/src/minecraft/biomesoplenty/items/ItemBOP.java +++ /dev/null @@ -1,55 +0,0 @@ -package biomesoplenty.items; - -import java.util.List; - -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Icon; -import biomesoplenty.BiomesOPlenty; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class ItemBOP extends Item -{ - private static String[] items = {"mudbrick", "ash", "amethyst"}; - @SideOnly(Side.CLIENT) - private Icon[] textures; - - public ItemBOP(int id) - { - super(id); - setMaxDamage(0); - setHasSubtypes(true); - setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - public void registerIcons(IconRegister iconRegister) - { - textures = new Icon[items.length]; - - for (int i = 0; i < items.length; ++i) - textures[i] = iconRegister.registerIcon("BiomesOPlenty:"+items[i]); - } - - @Override - public String getUnlocalizedName(ItemStack itemStack) - { - return items[itemStack.getItemDamage()]; - } - - @Override - public Icon getIconFromDamage(int meta) - { - return textures[meta]; - } - - @SuppressWarnings({ "rawtypes", "unchecked" }) - @Override - public void getSubItems(int itemId, CreativeTabs creativeTab, List subTypes) - { - for(int meta = 0; meta < items.length; ++meta) - subTypes.add(new ItemStack(itemId, 1, meta)); - } -} diff --git a/src/minecraft/biomesoplenty/items/ItemBOPAmethyst.java b/src/minecraft/biomesoplenty/items/ItemBOPAmethyst.java deleted file mode 100644 index c2c8ef86d..000000000 --- a/src/minecraft/biomesoplenty/items/ItemBOPAmethyst.java +++ /dev/null @@ -1,27 +0,0 @@ -package biomesoplenty.items; - -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; - -public class ItemBOPAmethyst extends ItemBlock -{ - private static final String[] types = new String[] {"amethystOre", "amethystBlock"}; - - public ItemBOPAmethyst(int par1) - { - super(par1); - setMaxDamage(0); - setHasSubtypes(true); - } - - @Override - public int getMetadata(int meta) - { - return meta; - } - - @Override - public String getUnlocalizedName(ItemStack itemstack) { - return types[itemstack.getItemDamage() & 15]; - } -} diff --git a/src/minecraft/biomesoplenty/items/ItemBOPAncientStaff.java b/src/minecraft/biomesoplenty/items/ItemBOPAncientStaff.java deleted file mode 100644 index 3a1c16777..000000000 --- a/src/minecraft/biomesoplenty/items/ItemBOPAncientStaff.java +++ /dev/null @@ -1,194 +0,0 @@ -package biomesoplenty.items; - -import java.util.List; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import biomesoplenty.BiomesOPlenty; -import biomesoplenty.api.Blocks; -import net.minecraft.block.Block; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Icon; -import net.minecraft.world.World; - -public class ItemBOPAncientStaff extends Item -{ - private static String[] parts = {"ancientstaff", "staffhandle", "staffpole", "stafftopper"}; - @SideOnly(Side.CLIENT) - private Icon[] textures; - - public ItemBOPAncientStaff(int par1) - { - super(par1); - this.maxStackSize = 1; - setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - @Override - public boolean hasEffect(ItemStack itemStack) - { - if (itemStack.getItemDamage() == 0) - return true; - else - return false; - } - - @Override - public void registerIcons(IconRegister iconRegister) - { - textures = new Icon[parts.length]; - - for (int i = 0; i < parts.length; ++i) - textures[i] = iconRegister.registerIcon("BiomesOPlenty:"+parts[i]); - } - - @Override - public String getUnlocalizedName(ItemStack itemStack) - { - return parts[itemStack.getItemDamage()]; - } - - @Override - public Icon getIconFromDamage(int meta) - { - return textures[meta]; - } - - @SuppressWarnings({ "rawtypes", "unchecked" }) - @Override - public void getSubItems(int itemId, CreativeTabs creativeTab, List subTypes) - { - for(int meta = 0; meta < parts.length; ++meta) - subTypes.add(new ItemStack(itemId, 1, meta)); - } - - @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - if (par3EntityPlayer.dimension == 0) - { - - if (par2World.getBlockId(0, 64 - 32, 0) != Blocks.promisedPortal.get().blockID) - { - - if (!par3EntityPlayer.worldObj.isRemote) - { - par3EntityPlayer.addChatMessage("\u00a75A gateway to the \u00a76\u00a7l\u00a7nPromised Land\u00a75 has been buried at the origin of this world."); - } - - int var99 = 32; - - par2World.setBlock(-1, 62 - var99, 1, Block.whiteStone.blockID); - par2World.setBlock(0, 62 - var99, 1, Block.whiteStone.blockID); - par2World.setBlock(1, 62 - var99, 1, Block.whiteStone.blockID); - par2World.setBlock(1, 62 - var99, 0, Block.whiteStone.blockID); - par2World.setBlock(1, 62 - var99, -1, Block.whiteStone.blockID); - par2World.setBlock(0, 62 - var99, -1, Block.whiteStone.blockID); - par2World.setBlock(-1, 62 - var99, -1, Block.whiteStone.blockID); - par2World.setBlock(-1, 62 - var99, 0, Block.whiteStone.blockID); - par2World.setBlock(0, 62 - var99, 0, Block.whiteStone.blockID); - - par2World.setBlock(-1, 63 - var99, 2, Block.whiteStone.blockID); - par2World.setBlock(0, 63 - var99, 2, Block.whiteStone.blockID); - par2World.setBlock(1, 63 - var99, 2, Block.whiteStone.blockID); - par2World.setBlock(2, 63 - var99, 1, Block.whiteStone.blockID); - par2World.setBlock(2, 63 - var99, 0, Block.whiteStone.blockID); - par2World.setBlock(2, 63 - var99, -1, Block.whiteStone.blockID); - par2World.setBlock(1, 63 - var99, -2, Block.whiteStone.blockID); - par2World.setBlock(0, 63 - var99, -2, Block.whiteStone.blockID); - par2World.setBlock(-1, 63 - var99, -2, Block.whiteStone.blockID); - par2World.setBlock(-2, 63 - var99, -1, Block.whiteStone.blockID); - par2World.setBlock(-2, 63 - var99, 0, Block.whiteStone.blockID); - par2World.setBlock(-2, 63 - var99, 1, Block.whiteStone.blockID); - - par2World.setBlock(-1, 64 - var99, 2, Block.whiteStone.blockID); - par2World.setBlock(0, 64 - var99, 2, Block.whiteStone.blockID); - par2World.setBlock(1, 64 - var99, 2, Block.whiteStone.blockID); - par2World.setBlock(2, 64 - var99, 1, Block.whiteStone.blockID); - par2World.setBlock(2, 64 - var99, 0, Block.whiteStone.blockID); - par2World.setBlock(2, 64 - var99, -1, Block.whiteStone.blockID); - par2World.setBlock(1, 64 - var99, -2, Block.whiteStone.blockID); - par2World.setBlock(0, 64 - var99, -2, Block.whiteStone.blockID); - par2World.setBlock(-1, 64 - var99, -2, Block.whiteStone.blockID); - par2World.setBlock(-2, 64 - var99, -1, Block.whiteStone.blockID); - par2World.setBlock(-2, 64 - var99, 0, Block.whiteStone.blockID); - par2World.setBlock(-2, 64 - var99, 1, Block.whiteStone.blockID); - - par2World.setBlock(-1, 65 - var99, 2, Block.whiteStone.blockID); - par2World.setBlock(0, 65 - var99, 2, Block.whiteStone.blockID); - par2World.setBlock(1, 65 - var99, 2, Block.whiteStone.blockID); - par2World.setBlock(2, 65 - var99, 1, Block.whiteStone.blockID); - par2World.setBlock(2, 65 - var99, 0, Block.whiteStone.blockID); - par2World.setBlock(2, 65 - var99, -1, Block.whiteStone.blockID); - par2World.setBlock(1, 65 - var99, -2, Block.whiteStone.blockID); - par2World.setBlock(0, 65 - var99, -2, Block.whiteStone.blockID); - par2World.setBlock(-1, 65 - var99, -2, Block.whiteStone.blockID); - par2World.setBlock(-2, 65 - var99, -1, Block.whiteStone.blockID); - par2World.setBlock(-2, 65 - var99, 0, Block.whiteStone.blockID); - par2World.setBlock(-2, 65 - var99, 1, Block.whiteStone.blockID); - - par2World.setBlock(-1, 66 - var99, 1, Block.whiteStone.blockID); - par2World.setBlock(0, 66 - var99, 1, Block.whiteStone.blockID); - par2World.setBlock(1, 66 - var99, 1, Block.whiteStone.blockID); - par2World.setBlock(1, 66 - var99, 0, Block.whiteStone.blockID); - par2World.setBlock(1, 66 - var99, -1, Block.whiteStone.blockID); - par2World.setBlock(0, 66 - var99, -1, Block.whiteStone.blockID); - par2World.setBlock(-1, 66 - var99, -1, Block.whiteStone.blockID); - par2World.setBlock(-1, 66 - var99, 0, Block.whiteStone.blockID); - par2World.setBlock(0, 66 - var99, 0, Block.whiteStone.blockID); - - par2World.setBlock(-1, 63 - var99, 1, 0); - par2World.setBlock(0, 63 - var99, 1, 0); - par2World.setBlock(1, 63 - var99, 1, 0); - par2World.setBlock(1, 63 - var99, 0, 0); - par2World.setBlock(1, 63 - var99, -1, 0); - par2World.setBlock(0, 63 - var99, -1, 0); - par2World.setBlock(-1, 63 - var99, -1, 0); - par2World.setBlock(-1, 63 - var99, 0, 0); - par2World.setBlock(0, 63 - var99, 0, 0); - - par2World.setBlock(-1, 64 - var99, 1, 0); - par2World.setBlock(0, 64 - var99, 1, 0); - par2World.setBlock(1, 64 - var99, 1, 0); - par2World.setBlock(1, 64 - var99, 0, 0); - par2World.setBlock(1, 64 - var99, -1, 0); - par2World.setBlock(0, 64 - var99, -1, 0); - par2World.setBlock(-1, 64 - var99, -1, 0); - par2World.setBlock(-1, 64 - var99, 0, 0); - - par2World.setBlock(-1, 65 - var99, 1, 0); - par2World.setBlock(0, 65 - var99, 1, 0); - par2World.setBlock(1, 65 - var99, 1, 0); - par2World.setBlock(1, 65 - var99, 0, 0); - par2World.setBlock(1, 65 - var99, -1, 0); - par2World.setBlock(0, 65 - var99, -1, 0); - par2World.setBlock(-1, 65 - var99, -1, 0); - par2World.setBlock(-1, 65 - var99, 0, 0); - par2World.setBlock(0, 65 - var99, 0, 0); - - par2World.setBlock(0, 64 - var99, 0, Blocks.promisedPortal.get().blockID); - - par2World.setBlock(-2, 64 - var99, 2, 0); - par2World.setBlock(2, 64 - var99, 2, 0); - par2World.setBlock(2, 64 - var99, -2, 0); - par2World.setBlock(-2, 64 - var99, -2, 0); - - par2World.setBlock(-2, 65 - var99, 2, 0); - par2World.setBlock(2, 65 - var99, 2, 0); - par2World.setBlock(2, 65 - var99, -2, 0); - par2World.setBlock(-2, 65 - var99, -2, 0); - - par2World.setBlock(-2, 66 - var99, 2, 0); - par2World.setBlock(2, 66 - var99, 2, 0); - par2World.setBlock(2, 66 - var99, -2, 0); - par2World.setBlock(-2, 66 - var99, -2, 0); - } - } - - return par1ItemStack; - } -} diff --git a/src/minecraft/biomesoplenty/items/ItemBOPAppleLeaves.java b/src/minecraft/biomesoplenty/items/ItemBOPAppleLeaves.java deleted file mode 100644 index 8a6a5783d..000000000 --- a/src/minecraft/biomesoplenty/items/ItemBOPAppleLeaves.java +++ /dev/null @@ -1,25 +0,0 @@ -package biomesoplenty.items; - -import net.minecraft.item.ItemBlock; -import net.minecraft.util.Icon; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class ItemBOPAppleLeaves extends ItemBlock -{ - @SideOnly(Side.CLIENT) - private Icon texture; - - public ItemBOPAppleLeaves(int par1) - { - super(par1); - setMaxDamage(0); - setHasSubtypes(true); - } - - @Override - public int getMetadata(int meta) - { - return meta; - } -} \ No newline at end of file diff --git a/src/minecraft/biomesoplenty/items/ItemBOPAxe.java b/src/minecraft/biomesoplenty/items/ItemBOPAxe.java deleted file mode 100644 index e4b464823..000000000 --- a/src/minecraft/biomesoplenty/items/ItemBOPAxe.java +++ /dev/null @@ -1,25 +0,0 @@ -package biomesoplenty.items; - -import biomesoplenty.BiomesOPlenty; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.item.EnumToolMaterial; -import net.minecraft.item.ItemAxe; - -public class ItemBOPAxe extends ItemAxe -{ - public int TextureID = 0; - - public ItemBOPAxe(int par1, EnumToolMaterial par2, int texture) - { - super(par1, par2); - TextureID = texture; - setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - public void registerIcons(IconRegister iconRegister) - { - if(TextureID==0){ itemIcon = iconRegister.registerIcon("BiomesOPlenty:mudaxe"); } - else if(TextureID==1){ itemIcon = iconRegister.registerIcon("BiomesOPlenty:amethystaxe"); } - else { itemIcon = iconRegister.registerIcon("BiomesOPlenty:mudball"); } - } -} diff --git a/src/minecraft/biomesoplenty/items/ItemBOPBamboo.java b/src/minecraft/biomesoplenty/items/ItemBOPBamboo.java deleted file mode 100644 index 84e916894..000000000 --- a/src/minecraft/biomesoplenty/items/ItemBOPBamboo.java +++ /dev/null @@ -1,97 +0,0 @@ -package biomesoplenty.items; - -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.item.ItemBlock; -import net.minecraft.util.Icon; - -public class ItemBOPBamboo extends ItemBlock -{ - public ItemBOPBamboo(int par1) - { - super(par1); - } - - public void registerIcons(IconRegister iconRegister) - { - itemIcon = iconRegister.registerIcon("BiomesOPlenty:item_bamboo"); - } - - @Override - public Icon getIconFromDamage(int meta) - { - return itemIcon; - } - -// public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10) -// { -// int var11 = par3World.getBlockId(par4, par5, par6); -// -// if (var11 == Block.snow.blockID) -// { -// par7 = 1; -// } -// else if (var11 != Block.vine.blockID && var11 != Block.tallGrass.blockID && var11 != Block.deadBush.blockID) -// { -// if (par7 == 0) -// { -// --par5; -// } -// -// if (par7 == 1) -// { -// ++par5; -// } -// -// if (par7 == 2) -// { -// --par6; -// } -// -// if (par7 == 3) -// { -// ++par6; -// } -// -// if (par7 == 4) -// { -// --par4; -// } -// -// if (par7 == 5) -// { -// ++par4; -// } -// } -// -// if (!par2EntityPlayer.canPlayerEdit(par4, par5, par6, par7, par1ItemStack)) -// { -// return false; -// } -// else if (par1ItemStack.stackSize == 0) -// { -// return false; -// } -// else -// { -// if (par3World.canPlaceEntityOnSide(this.spawnID, par4, par5, par6, false, par7, (Entity)null, par1ItemStack)) -// { -// Block var12 = Block.blocksList[this.spawnID]; -// int var13 = var12.onBlockPlaced(par3World, par4, par5, par6, par7, par8, par9, par10, 0); -// -// if (par3World.setBlock(par4, par5, par6, this.spawnID, var13, 2)) -// { -// if (par3World.getBlockId(par4, par5, par6) == this.spawnID) -// { -// Block.blocksList[this.spawnID].onBlockPlacedBy(par3World, par4, par5, par6, par2EntityPlayer, par1ItemStack); -// Block.blocksList[this.spawnID].onPostBlockPlaced(par3World, par4, par5, par6, var13); -// } -// -// par3World.playSoundEffect((double)((float)par4 + 0.5F), (double)((float)par5 + 0.5F), (double)((float)par6 + 0.5F), var12.stepSound.getPlaceSound(), (var12.stepSound.getVolume() + 1.0F) / 2.0F, var12.stepSound.getPitch() * 0.8F); -// --par1ItemStack.stackSize; -// } -// } -// -// return true; -// } -// } -} diff --git a/src/minecraft/biomesoplenty/items/ItemBOPColorizedLeaves.java b/src/minecraft/biomesoplenty/items/ItemBOPColorizedLeaves.java deleted file mode 100644 index a0a2c1da8..000000000 --- a/src/minecraft/biomesoplenty/items/ItemBOPColorizedLeaves.java +++ /dev/null @@ -1,29 +0,0 @@ -package biomesoplenty.items; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import biomesoplenty.blocks.BlockBOPColorizedLeaves; - -public class ItemBOPColorizedLeaves extends ItemBlock -{ - public ItemBOPColorizedLeaves(int par1) - { - super(par1); - setMaxDamage(0); - setHasSubtypes(true); - } - - @Override - public int getMetadata(int meta) - { - return meta; - } - - @Override - public String getUnlocalizedName(ItemStack itemStack) - { - BlockBOPColorizedLeaves block = (BlockBOPColorizedLeaves)Block.blocksList[itemStack.itemID]; - return block.getLeafType(itemStack.getItemDamage()); - } -} diff --git a/src/minecraft/biomesoplenty/items/ItemBOPColorizedSapling.java b/src/minecraft/biomesoplenty/items/ItemBOPColorizedSapling.java deleted file mode 100644 index 9d5deb1e0..000000000 --- a/src/minecraft/biomesoplenty/items/ItemBOPColorizedSapling.java +++ /dev/null @@ -1,38 +0,0 @@ -package biomesoplenty.items; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Icon; - -public class ItemBOPColorizedSapling extends ItemBlock -{ - private static final String[] saplings = new String[] {"acacia", "mangrove", "palm", "redwood", "willow"}; - - public ItemBOPColorizedSapling(int par1) - { - super(par1); - setMaxDamage(0); - setHasSubtypes(true); - } - - @Override - public int getMetadata(int meta) - { - return meta & 15; - } - - @Override - public String getUnlocalizedName(ItemStack itemStack) - { - return (new StringBuilder()).append(saplings[itemStack.getItemDamage()]).append("Sapling").toString(); - } - - - - @Override - public Icon getIconFromDamage(int meta) - { - return Block.blocksList[this.itemID].getIcon(0, meta); - } -} diff --git a/src/minecraft/biomesoplenty/items/ItemBOPFlower.java b/src/minecraft/biomesoplenty/items/ItemBOPFlower.java deleted file mode 100644 index 804e3c385..000000000 --- a/src/minecraft/biomesoplenty/items/ItemBOPFlower.java +++ /dev/null @@ -1,99 +0,0 @@ -package biomesoplenty.items; - -import net.minecraft.block.Block; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Icon; -import net.minecraft.world.World; - -public class ItemBOPFlower extends ItemBlock -{ - private static final String[] plants = new String[] {"clover", "swampflower", "deadbloom", "glowflower", "hydrangea", "daisy", "tulip", "wildflower", "violet", "anemone", "toadstool", "cactus"}; - - public ItemBOPFlower(int par1) - { - super(par1); - setMaxDamage(0); - setHasSubtypes(true); - } - - @Override - public int getMetadata(int meta) - { - return meta & 15; - } - - @Override - public String getUnlocalizedName(ItemStack itemStack) - { - return (new StringBuilder()).append(plants[itemStack.getItemDamage()]).toString(); - } - - @Override - public Icon getIconFromDamage(int meta) - { - return Block.blocksList[this.itemID].getIcon(0, meta); - } - - @Override - public boolean onItemUse(ItemStack itemStack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) - { - int id = world.getBlockId(x, y, z); - - if (id == Block.snow.blockID && (world.getBlockMetadata(x, y, z) & 7) < 1) - side = 1; - else if (!Block.blocksList[id].isBlockReplaceable(world, x, y, z)) - { - if (side == 0) - --y; - - if (side == 1) - ++y; - - if (side == 2) - --z; - - if (side == 3) - ++z; - - if (side == 4) - --x; - - if (side == 5) - ++x; - } - - if (!player.canPlayerEdit(x, y, z, side, itemStack)) - { - return false; - } - else if (itemStack.stackSize == 0) - { - return false; - } - else - { - if (world.canPlaceEntityOnSide(this.getBlockID(), x, y, z, false, side, (Entity)null, itemStack)) - { - Block block = Block.blocksList[this.getBlockID()]; - int j1 = block.onBlockPlaced(world, x, y, z, side, hitX, hitY, hitZ, 0); - - if (world.setBlock(x, y, z, this.getBlockID(), itemStack.getItemDamage(), 3)) - { - if (world.getBlockId(x, y, z) == this.getBlockID()) - { - Block.blocksList[this.getBlockID()].onBlockPlacedBy(world, x, y, z, player, itemStack); - Block.blocksList[this.getBlockID()].onPostBlockPlaced(world, x, y, z, j1); - } - - world.playSoundEffect((double)((float)x + 0.5F), (double)((float)y + 0.5F), (double)((float)z + 0.5F), block.stepSound.getPlaceSound(), (block.stepSound.getVolume() + 1.0F) / 2.0F, block.stepSound.getPitch() * 0.8F); - --itemStack.stackSize; - } - } - - return true; - } - } -} diff --git a/src/minecraft/biomesoplenty/items/ItemBOPFoliage.java b/src/minecraft/biomesoplenty/items/ItemBOPFoliage.java deleted file mode 100644 index 76faf262b..000000000 --- a/src/minecraft/biomesoplenty/items/ItemBOPFoliage.java +++ /dev/null @@ -1,173 +0,0 @@ -package biomesoplenty.items; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemColored; -import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumMovingObjectType; -import net.minecraft.util.Icon; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import biomesoplenty.api.Blocks; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class ItemBOPFoliage extends ItemColored -{ - private static final String[] foliageTypes = new String[] {"algae", "shortgrass", "mediumgrass", "highgrassbottom", "bush", "sprout", "highgrasstop"}; - @SideOnly(Side.CLIENT) - private Icon[] textures; - - public ItemBOPFoliage(int par1) - { - super(par1, true); - setMaxDamage(0); - setHasSubtypes(true); - } - - @SideOnly(Side.CLIENT) - public void registerIcons(IconRegister iconRegister) - { - textures = new Icon[foliageTypes.length - 1]; - - for (int i = 0; i < foliageTypes.length - 1; ++i) - textures[i] = iconRegister.registerIcon("BiomesOPlenty:" + foliageTypes[i]); - - textures[3] = iconRegister.registerIcon("BiomesOPlenty:item_highgrass"); - } - - @SideOnly(Side.CLIENT) - public int getColorFromItemStack(ItemStack itemStack, int par2) - { - if (itemStack.getItemDamage() == 3) - return 16777215; - else - return Blocks.foliage.get().getRenderColor(itemStack.getItemDamage()); - } - - @Override - public int getMetadata(int meta) - { - return meta & 15; - } - - @Override - public String getUnlocalizedName(ItemStack itemStack) - { - return (new StringBuilder()).append(foliageTypes[itemStack.getItemDamage()]).toString(); - } - - @Override - public Icon getIconFromDamage(int meta) - { - if (meta == 6) - meta = 3; - return textures[meta]; - } - - public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player) - { - if (itemStack.getItemDamage() != 0) - return super.onItemRightClick(itemStack, world, player); - - MovingObjectPosition movingobjectposition = this.getMovingObjectPositionFromPlayer(world, player, true); - - if (movingobjectposition == null) - return itemStack; - else - { - if (movingobjectposition.typeOfHit == EnumMovingObjectType.TILE) - { - int i = movingobjectposition.blockX; - int j = movingobjectposition.blockY; - int k = movingobjectposition.blockZ; - - if (!world.canMineBlock(player, i, j, k)) - return itemStack; - - if (!player.canPlayerEdit(i, j, k, movingobjectposition.sideHit, itemStack)) - return itemStack; - - if (world.getBlockMaterial(i, j, k) == Material.water && world.getBlockMetadata(i, j, k) == 0 && world.isAirBlock(i, j + 1, k)) - { - world.setBlock(i, j + 1, k, itemStack.itemID, 0, 2); - - if (!player.capabilities.isCreativeMode) - { - --itemStack.stackSize; - } - } - } - - return itemStack; - } - } - - public boolean onItemUse(ItemStack itemStack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) - { - if (itemStack.getItemDamage() == 0) - return super.onItemUse(itemStack, player, world, x, y, z, side, hitX, hitY, hitZ); - - int id = world.getBlockId(x, y, z); - - if (id == Block.snow.blockID && (world.getBlockMetadata(x, y, z) & 7) < 1) - side = 1; - else if (!Block.blocksList[id].isBlockReplaceable(world, x, y, z)) - { - if (side == 0) - --y; - - if (side == 1) - ++y; - - if (side == 2) - --z; - - if (side == 3) - ++z; - - if (side == 4) - --x; - - if (side == 5) - ++x; - } - - if (!player.canPlayerEdit(x, y, z, side, itemStack)) - { - return false; - } - else if (itemStack.stackSize == 0) - { - return false; - } - else - { - if (world.canPlaceEntityOnSide(this.getBlockID(), x, y, z, false, side, (Entity)null, itemStack)) - { - Block block = Block.blocksList[this.getBlockID()]; - int j1 = block.onBlockPlaced(world, x, y, z, side, hitX, hitY, hitZ, 0); - - if (world.setBlock(x, y, z, this.getBlockID(), itemStack.getItemDamage(), 3)) - { - if (itemStack.getItemDamage() == 3 && world.getBlockMaterial(x, y + 1, z).isReplaceable()) - world.setBlock(x, y + 1, z, this.getBlockID(), 6, 2); - - if (world.getBlockId(x, y, z) == this.getBlockID()) - { - Block.blocksList[this.getBlockID()].onBlockPlacedBy(world, x, y, z, player, itemStack); - Block.blocksList[this.getBlockID()].onPostBlockPlaced(world, x, y, z, j1); - } - - world.playSoundEffect((double)((float)x + 0.5F), (double)((float)y + 0.5F), (double)((float)z + 0.5F), block.stepSound.getPlaceSound(), (block.stepSound.getVolume() + 1.0F) / 2.0F, block.stepSound.getPitch() * 0.8F); - --itemStack.stackSize; - } - } - - return true; - } - } -} diff --git a/src/minecraft/biomesoplenty/items/ItemBOPGrass.java b/src/minecraft/biomesoplenty/items/ItemBOPGrass.java deleted file mode 100644 index 6687b96c1..000000000 --- a/src/minecraft/biomesoplenty/items/ItemBOPGrass.java +++ /dev/null @@ -1,27 +0,0 @@ -package biomesoplenty.items; - -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; - -public class ItemBOPGrass extends ItemBlock -{ - private static final String[] types = new String[] {"holyGrass", "smolderingGrass"}; - - public ItemBOPGrass(int par1) - { - super(par1); - setMaxDamage(0); - setHasSubtypes(true); - } - - @Override - public int getMetadata(int meta) - { - return meta; - } - - @Override - public String getUnlocalizedName(ItemStack itemstack) { - return types[itemstack.getItemDamage() & 15]; - } -} diff --git a/src/minecraft/biomesoplenty/items/ItemBOPHoe.java b/src/minecraft/biomesoplenty/items/ItemBOPHoe.java deleted file mode 100644 index a41e074e5..000000000 --- a/src/minecraft/biomesoplenty/items/ItemBOPHoe.java +++ /dev/null @@ -1,25 +0,0 @@ -package biomesoplenty.items; - -import biomesoplenty.BiomesOPlenty; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.item.EnumToolMaterial; -import net.minecraft.item.ItemHoe; - -public class ItemBOPHoe extends ItemHoe -{ - public int TextureID = 0; - - public ItemBOPHoe(int par1, EnumToolMaterial par2, int texture) - { - super(par1, par2); - TextureID = texture; - setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - public void registerIcons(IconRegister iconRegister) - { - if(TextureID==0){ itemIcon = iconRegister.registerIcon("BiomesOPlenty:mudhoe"); } - else if(TextureID==1){ itemIcon = iconRegister.registerIcon("BiomesOPlenty:amethysthoe"); } - else { itemIcon = iconRegister.registerIcon("BiomesOPlenty:mudball"); } - } -} diff --git a/src/minecraft/biomesoplenty/items/ItemBOPLeaves.java b/src/minecraft/biomesoplenty/items/ItemBOPLeaves.java deleted file mode 100644 index 2702bda1e..000000000 --- a/src/minecraft/biomesoplenty/items/ItemBOPLeaves.java +++ /dev/null @@ -1,29 +0,0 @@ -package biomesoplenty.items; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import biomesoplenty.blocks.BlockBOPLeaves; - -public class ItemBOPLeaves extends ItemBlock -{ - public ItemBOPLeaves(int par1) - { - super(par1); - setMaxDamage(0); - setHasSubtypes(true); - } - - @Override - public int getMetadata(int meta) - { - return meta; - } - - @Override - public String getUnlocalizedName(ItemStack itemStack) - { - BlockBOPLeaves block = (BlockBOPLeaves)Block.blocksList[itemStack.itemID]; - return block.getLeafType(itemStack.getItemDamage()); - } -} diff --git a/src/minecraft/biomesoplenty/items/ItemBOPLog.java b/src/minecraft/biomesoplenty/items/ItemBOPLog.java deleted file mode 100644 index 2e637377b..000000000 --- a/src/minecraft/biomesoplenty/items/ItemBOPLog.java +++ /dev/null @@ -1,29 +0,0 @@ -package biomesoplenty.items; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import biomesoplenty.blocks.BlockBOPLog; - -public class ItemBOPLog extends ItemBlock -{ - public ItemBOPLog(int par1) - { - super(par1); - setMaxDamage(0); - setHasSubtypes(true); - } - - @Override - public int getMetadata(int meta) - { - return meta & 3; - } - - @Override - public String getUnlocalizedName(ItemStack itemStack) - { - BlockBOPLog block = (BlockBOPLog)Block.blocksList[itemStack.itemID]; - return block.getWoodType(itemStack.getItemDamage()) + "Wood"; - } -} diff --git a/src/minecraft/biomesoplenty/items/ItemBOPMoss.java b/src/minecraft/biomesoplenty/items/ItemBOPMoss.java deleted file mode 100644 index 5ed536265..000000000 --- a/src/minecraft/biomesoplenty/items/ItemBOPMoss.java +++ /dev/null @@ -1,30 +0,0 @@ -package biomesoplenty.items; - -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.item.ItemBlock; -import net.minecraft.util.Icon; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class ItemBOPMoss extends ItemBlock -{ - @SideOnly(Side.CLIENT) - private Icon texture; - - public ItemBOPMoss(int par1) - { - super(par1); - } - - @SideOnly(Side.CLIENT) - public void registerIcons(IconRegister iconRegister) - { - texture = iconRegister.registerIcon("BiomesOPlenty:item_moss"); - } - - @Override - public Icon getIconFromDamage(int meta) - { - return texture; - } -} diff --git a/src/minecraft/biomesoplenty/items/ItemBOPMud.java b/src/minecraft/biomesoplenty/items/ItemBOPMud.java deleted file mode 100644 index f8fc890a2..000000000 --- a/src/minecraft/biomesoplenty/items/ItemBOPMud.java +++ /dev/null @@ -1,28 +0,0 @@ -package biomesoplenty.items; - -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; - -public class ItemBOPMud extends ItemBlock -{ - private static final String[] types = new String[] {"mud", "quicksand"}; - - public ItemBOPMud(int par1) - { - super(par1); - setMaxDamage(0); - setHasSubtypes(true); - } - - @Override - public int getMetadata(int meta) - { - return meta & 15; - } - - @Override - public String getUnlocalizedName(ItemStack itemStack) - { - return types[itemStack.getItemDamage()]; - } -} diff --git a/src/minecraft/biomesoplenty/items/ItemBOPMudball.java b/src/minecraft/biomesoplenty/items/ItemBOPMudball.java deleted file mode 100644 index 1f977e224..000000000 --- a/src/minecraft/biomesoplenty/items/ItemBOPMudball.java +++ /dev/null @@ -1,38 +0,0 @@ -package biomesoplenty.items; - -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import biomesoplenty.BiomesOPlenty; -import biomesoplenty.items.projectiles.EntityMudball; - -public class ItemBOPMudball extends Item -{ - public ItemBOPMudball(int par1) - { - super(par1); - setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - setUnlocalizedName("mudball"); - } - - public void registerIcons(IconRegister iconRegister) - { - itemIcon = iconRegister.registerIcon("BiomesOPlenty:mudball"); - } - - public ItemStack onItemRightClick(ItemStack itemStack, World par2World, EntityPlayer par3EntityPlayer) - { - if (!par3EntityPlayer.capabilities.isCreativeMode) - --itemStack.stackSize; - - - par2World.playSoundAtEntity(par3EntityPlayer, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); - - if (!par2World.isRemote) - par2World.spawnEntityInWorld(new EntityMudball(par2World, par3EntityPlayer)); - - return itemStack; - } -} diff --git a/src/minecraft/biomesoplenty/items/ItemBOPPetals.java b/src/minecraft/biomesoplenty/items/ItemBOPPetals.java deleted file mode 100644 index ad032cbb7..000000000 --- a/src/minecraft/biomesoplenty/items/ItemBOPPetals.java +++ /dev/null @@ -1,28 +0,0 @@ -package biomesoplenty.items; - -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; - -public class ItemBOPPetals extends ItemBlock -{ - private static final String[] petals = new String[] {"bigflowerred", "bigfloweryellow"}; - - public ItemBOPPetals(int par1) - { - super(par1); - setMaxDamage(0); - setHasSubtypes(true); - } - - @Override - public int getMetadata(int meta) - { - return meta & 15; - } - - @Override - public String getUnlocalizedName(ItemStack itemStack) - { - return (new StringBuilder()).append(petals[itemStack.getItemDamage()]).toString(); - } -} \ No newline at end of file diff --git a/src/minecraft/biomesoplenty/items/ItemBOPPickaxe.java b/src/minecraft/biomesoplenty/items/ItemBOPPickaxe.java deleted file mode 100644 index dfeb6a7c1..000000000 --- a/src/minecraft/biomesoplenty/items/ItemBOPPickaxe.java +++ /dev/null @@ -1,25 +0,0 @@ -package biomesoplenty.items; - -import biomesoplenty.BiomesOPlenty; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.item.EnumToolMaterial; -import net.minecraft.item.ItemPickaxe; - -public class ItemBOPPickaxe extends ItemPickaxe -{ - public int TextureID = 0; - - public ItemBOPPickaxe(int par1, EnumToolMaterial par2, int texture) - { - super(par1, par2); - TextureID = texture; - setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - public void registerIcons(IconRegister iconRegister) - { - if(TextureID==0){ itemIcon = iconRegister.registerIcon("BiomesOPlenty:mudpickaxe"); } - else if(TextureID==1){ itemIcon = iconRegister.registerIcon("BiomesOPlenty:amethystpickaxe"); } - else { itemIcon = iconRegister.registerIcon("BiomesOPlenty:mudball"); } - } -} diff --git a/src/minecraft/biomesoplenty/items/ItemBOPPlank.java b/src/minecraft/biomesoplenty/items/ItemBOPPlank.java deleted file mode 100644 index 7582a7af2..000000000 --- a/src/minecraft/biomesoplenty/items/ItemBOPPlank.java +++ /dev/null @@ -1,28 +0,0 @@ -package biomesoplenty.items; - -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; - -public class ItemBOPPlank extends ItemBlock -{ - private static final String[] woodTypes = new String[] {"acaciaPlank", "cherryPlank", "darkPlank", "firPlank", "holyPlank", "magicPlank", "mangrovePlank", "palmPlank", "redwoodPlank", "willowPlank", "bambooThatching"}; - - public ItemBOPPlank(int par1) - { - super(par1); - setMaxDamage(0); - setHasSubtypes(true); - } - - @Override - public int getMetadata(int meta) - { - return meta & 15; - } - - @Override - public String getUnlocalizedName(ItemStack itemStack) - { - return woodTypes[itemStack.getItemDamage()]; - } -} diff --git a/src/minecraft/biomesoplenty/items/ItemBOPPlant.java b/src/minecraft/biomesoplenty/items/ItemBOPPlant.java deleted file mode 100644 index afaa473ca..000000000 --- a/src/minecraft/biomesoplenty/items/ItemBOPPlant.java +++ /dev/null @@ -1,118 +0,0 @@ -package biomesoplenty.items; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Icon; -import net.minecraft.world.World; - -public class ItemBOPPlant extends ItemBlock -{ - private static final String[] plants = new String[] {"deadgrass", "desertgrass", "desertsprouts", "dunegrass", "holytallgrass", "thorn", "barley", "cattail"}; - @SideOnly(Side.CLIENT) - private Icon[] textures; - - public ItemBOPPlant(int par1) - { - super(par1); - setMaxDamage(0); - setHasSubtypes(true); - } - - @Override - public int getMetadata(int meta) - { - return meta & 15; - } - - @SideOnly(Side.CLIENT) - public void registerIcons(IconRegister iconRegister) - { - textures = new Icon[2]; - - textures[0] = iconRegister.registerIcon("BiomesOPlenty:item_barley"); - textures[1] = iconRegister.registerIcon("BiomesOPlenty:item_cattail"); - } - - @Override - public String getUnlocalizedName(ItemStack itemStack) - { - return (new StringBuilder()).append(plants[itemStack.getItemDamage()]).toString(); - } - - @Override - public Icon getIconFromDamage(int meta) - { - if (meta == 6) - return textures[0]; - else if (meta == 7) - return textures[1]; - else - return Block.blocksList[this.itemID].getIcon(0, meta); - } - - @Override - public boolean onItemUse(ItemStack itemStack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) - { - int id = world.getBlockId(x, y, z); - - if (id == Block.snow.blockID && (world.getBlockMetadata(x, y, z) & 7) < 1) - side = 1; - else if (!Block.blocksList[id].isBlockReplaceable(world, x, y, z)) - { - if (side == 0) - --y; - - if (side == 1) - ++y; - - if (side == 2) - --z; - - if (side == 3) - ++z; - - if (side == 4) - --x; - - if (side == 5) - ++x; - } - - if (!player.canPlayerEdit(x, y, z, side, itemStack)) - { - return false; - } - else if (itemStack.stackSize == 0) - { - return false; - } - else - { - if (world.canPlaceEntityOnSide(this.getBlockID(), x, y, z, false, side, (Entity)null, itemStack)) - { - Block block = Block.blocksList[this.getBlockID()]; - int j1 = block.onBlockPlaced(world, x, y, z, side, hitX, hitY, hitZ, 0); - - if (world.setBlock(x, y, z, this.getBlockID(), itemStack.getItemDamage(), 3)) - { - if (world.getBlockId(x, y, z) == this.getBlockID()) - { - Block.blocksList[this.getBlockID()].onBlockPlacedBy(world, x, y, z, player, itemStack); - Block.blocksList[this.getBlockID()].onPostBlockPlaced(world, x, y, z, j1); - } - - world.playSoundEffect((double)((float)x + 0.5F), (double)((float)y + 0.5F), (double)((float)z + 0.5F), block.stepSound.getPlaceSound(), (block.stepSound.getVolume() + 1.0F) / 2.0F, block.stepSound.getPitch() * 0.8F); - --itemStack.stackSize; - } - } - - return true; - } - } -} diff --git a/src/minecraft/biomesoplenty/items/ItemBOPRecord.java b/src/minecraft/biomesoplenty/items/ItemBOPRecord.java deleted file mode 100644 index 19a7881a8..000000000 --- a/src/minecraft/biomesoplenty/items/ItemBOPRecord.java +++ /dev/null @@ -1,111 +0,0 @@ -package biomesoplenty.items; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import biomesoplenty.BiomesOPlenty; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockJukeBox; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumRarity; -import net.minecraft.item.ItemRecord; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class ItemBOPRecord extends ItemRecord -{ - /** List of all record items and their names. */ - @SuppressWarnings("rawtypes") - private static final Map records = new HashMap(); - - /** The name of the record. */ - public final String recordName; - - @SuppressWarnings("unchecked") - public ItemBOPRecord(int par1, String par2Str) - { - super(par1, par2Str); - this.recordName = par2Str; - this.maxStackSize = 1; - setUnlocalizedName("bopDisc"); - this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - records.put(par2Str, this); - } - - public void registerIcons(IconRegister iconRegister) - { - itemIcon = iconRegister.registerIcon("BiomesOPlenty:boprecord"); - } - - /** - * Callback for item usage. If the item does something special on right clicking, he will have one of those. Return - * True if something happen and false if it don't. This is for ITEMS, not BLOCKS - */ - public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10) - { - if (par3World.getBlockId(par4, par5, par6) == Block.jukebox.blockID && par3World.getBlockMetadata(par4, par5, par6) == 0) - { - if (par3World.isRemote) - { - return true; - } - else - { - ((BlockJukeBox)Block.jukebox).insertRecord(par3World, par4, par5, par6, par1ItemStack); - par3World.playAuxSFXAtEntity((EntityPlayer)null, 1005, par4, par5, par6, this.itemID); - --par1ItemStack.stackSize; - return true; - } - } - else - { - return false; - } - } - - @SuppressWarnings({ "unchecked", "rawtypes" }) - @SideOnly(Side.CLIENT) - - /** - * allows items to add custom lines of information to the mouseover description - */ - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add(this.getRecordTitle()); - } - - @SideOnly(Side.CLIENT) - - /** - * Return the title for this record. - */ - public String getRecordTitle() - { - return "Tim Rurkowski - Wanderer"; - } - - @SideOnly(Side.CLIENT) - - /** - * Return an item rarity from EnumRarity - */ - public EnumRarity getRarity(ItemStack par1ItemStack) - { - return EnumRarity.rare; - } - - @SideOnly(Side.CLIENT) - - /** - * Return the record item corresponding to the given name. - */ - public static ItemBOPRecord getRecord(String par0Str) - { - return (ItemBOPRecord)records.get(par0Str); - } -} diff --git a/src/minecraft/biomesoplenty/items/ItemBOPRecordMud.java b/src/minecraft/biomesoplenty/items/ItemBOPRecordMud.java deleted file mode 100644 index b49ef0b8c..000000000 --- a/src/minecraft/biomesoplenty/items/ItemBOPRecordMud.java +++ /dev/null @@ -1,111 +0,0 @@ -package biomesoplenty.items; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import biomesoplenty.BiomesOPlenty; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockJukeBox; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumRarity; -import net.minecraft.item.ItemRecord; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class ItemBOPRecordMud extends ItemRecord -{ - /** List of all record items and their names. */ - @SuppressWarnings("rawtypes") - private static final Map records = new HashMap(); - - /** The name of the record. */ - public final String recordName; - - @SuppressWarnings("unchecked") - public ItemBOPRecordMud(int par1, String par2Str) - { - super(par1, par2Str); - this.recordName = par2Str; - this.maxStackSize = 1; - setUnlocalizedName("bopDiscMud"); - this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - records.put(par2Str, this); - } - - public void registerIcons(IconRegister iconRegister) - { - itemIcon = iconRegister.registerIcon("BiomesOPlenty:mudrecord"); - } - - /** - * Callback for item usage. If the item does something special on right clicking, he will have one of those. Return - * True if something happen and false if it don't. This is for ITEMS, not BLOCKS - */ - public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10) - { - if (par3World.getBlockId(par4, par5, par6) == Block.jukebox.blockID && par3World.getBlockMetadata(par4, par5, par6) == 0) - { - if (par3World.isRemote) - { - return true; - } - else - { - ((BlockJukeBox)Block.jukebox).insertRecord(par3World, par4, par5, par6, par1ItemStack); - par3World.playAuxSFXAtEntity((EntityPlayer)null, 1005, par4, par5, par6, this.itemID); - --par1ItemStack.stackSize; - return true; - } - } - else - { - return false; - } - } - - @SuppressWarnings({ "unchecked", "rawtypes" }) - @SideOnly(Side.CLIENT) - - /** - * allows items to add custom lines of information to the mouseover description - */ - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - par3List.add(this.getRecordTitle()); - } - - @SideOnly(Side.CLIENT) - - /** - * Return the title for this record. - */ - public String getRecordTitle() - { - return "???"; - } - - @SideOnly(Side.CLIENT) - - /** - * Return an item rarity from EnumRarity - */ - public EnumRarity getRarity(ItemStack par1ItemStack) - { - return EnumRarity.rare; - } - - @SideOnly(Side.CLIENT) - - /** - * Return the record item corresponding to the given name. - */ - public static ItemBOPRecordMud getRecord(String par0Str) - { - return (ItemBOPRecordMud)records.get(par0Str); - } -} diff --git a/src/minecraft/biomesoplenty/items/ItemBOPRedRock.java b/src/minecraft/biomesoplenty/items/ItemBOPRedRock.java deleted file mode 100644 index 670859168..000000000 --- a/src/minecraft/biomesoplenty/items/ItemBOPRedRock.java +++ /dev/null @@ -1,27 +0,0 @@ -package biomesoplenty.items; - -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; - -public class ItemBOPRedRock extends ItemBlock -{ - private static final String[] types = new String[] {"redrock", "redcobble", "redbrick"}; - - public ItemBOPRedRock(int par1) - { - super(par1); - setMaxDamage(0); - setHasSubtypes(true); - } - - @Override - public int getMetadata(int meta) - { - return meta & 15; - } - - @Override - public String getUnlocalizedName(ItemStack itemstack) { - return types[itemstack.getItemDamage() & 15]; - } -} diff --git a/src/minecraft/biomesoplenty/items/ItemBOPSapling.java b/src/minecraft/biomesoplenty/items/ItemBOPSapling.java deleted file mode 100644 index 962776074..000000000 --- a/src/minecraft/biomesoplenty/items/ItemBOPSapling.java +++ /dev/null @@ -1,40 +0,0 @@ -package biomesoplenty.items; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Icon; - -public class ItemBOPSapling extends ItemBlock -{ - private static final String[] saplings = new String[] {"apple", "yellowAutumn", "bamboo", "magic", "dark", "dead", "fir", "holy", "orangeAutumn", "origin", "pinkCherry", "maple", "whiteCherry"}; - private static final int MAX = 12; - - public ItemBOPSapling(int par1) - { - super(par1); - setMaxDamage(0); - setHasSubtypes(true); - } - - @Override - public int getMetadata(int meta) - { - return meta & 15; - } - - @Override - public String getUnlocalizedName(ItemStack itemStack) - { - int meta = itemStack.getItemDamageForDisplay() > MAX ? 0 : itemStack.getItemDamageForDisplay(); - return (new StringBuilder()).append(saplings[meta]).append("Sapling").toString(); - } - - - - @Override - public Icon getIconFromDamage(int meta) - { - return Block.blocksList[this.itemID].getIcon(0, meta); - } -} diff --git a/src/minecraft/biomesoplenty/items/ItemBOPSlab.java b/src/minecraft/biomesoplenty/items/ItemBOPSlab.java deleted file mode 100644 index 7abf0b953..000000000 --- a/src/minecraft/biomesoplenty/items/ItemBOPSlab.java +++ /dev/null @@ -1,38 +0,0 @@ -package biomesoplenty.items; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockHalfSlab; -import net.minecraft.item.ItemSlab; -import net.minecraft.item.ItemStack; - -import biomesoplenty.blocks.BlockBOPSlab; - -import com.google.common.base.Optional; - -public class ItemBOPSlab extends ItemSlab -{ - private static Optional singleSlab = Optional.absent(); - private static Optional doubleSlab = Optional.absent(); - - static public void setSlabs(BlockHalfSlab singleSlab, BlockHalfSlab doubleSlab) - { - ItemBOPSlab.singleSlab = Optional.of(singleSlab); - ItemBOPSlab.doubleSlab = Optional.of(doubleSlab); - } - - public ItemBOPSlab(int id) { - super(id, singleSlab.get(), doubleSlab.get(), id == doubleSlab.get().blockID); - } - - @Override - public int getMetadata(int meta) - { - return meta & 7; - } - - @Override - public String getUnlocalizedName(ItemStack itemStack) { - BlockBOPSlab slab = (BlockBOPSlab)Block.blocksList[itemStack.itemID]; - return (new StringBuilder()).append(slab.getFullSlabName(itemStack.getItemDamage())).toString(); - } -} diff --git a/src/minecraft/biomesoplenty/items/ItemBOPSpade.java b/src/minecraft/biomesoplenty/items/ItemBOPSpade.java deleted file mode 100644 index 6e49371ff..000000000 --- a/src/minecraft/biomesoplenty/items/ItemBOPSpade.java +++ /dev/null @@ -1,25 +0,0 @@ -package biomesoplenty.items; - -import biomesoplenty.BiomesOPlenty; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.item.EnumToolMaterial; -import net.minecraft.item.ItemSpade; - -public class ItemBOPSpade extends ItemSpade -{ - public int TextureID = 0; - - public ItemBOPSpade(int par1, EnumToolMaterial par2, int texture) - { - super(par1, par2); - TextureID = texture; - setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - public void registerIcons(IconRegister iconRegister) - { - if(TextureID==0){ itemIcon = iconRegister.registerIcon("BiomesOPlenty:mudshovel"); } - else if(TextureID==1){ itemIcon = iconRegister.registerIcon("BiomesOPlenty:amethystshovel"); } - else { itemIcon = iconRegister.registerIcon("BiomesOPlenty:mudball"); } - } -} diff --git a/src/minecraft/biomesoplenty/items/ItemBOPSword.java b/src/minecraft/biomesoplenty/items/ItemBOPSword.java deleted file mode 100644 index ca225d03d..000000000 --- a/src/minecraft/biomesoplenty/items/ItemBOPSword.java +++ /dev/null @@ -1,25 +0,0 @@ -package biomesoplenty.items; - -import biomesoplenty.BiomesOPlenty; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.item.EnumToolMaterial; -import net.minecraft.item.ItemSword; - -public class ItemBOPSword extends ItemSword -{ - public int TextureID = 0; - - public ItemBOPSword(int par1, EnumToolMaterial par2, int texture) - { - super(par1, par2); - TextureID = texture; - setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - public void registerIcons(IconRegister iconRegister) - { - if(TextureID==0){ itemIcon = iconRegister.registerIcon("BiomesOPlenty:mudsword"); } - else if(TextureID==1){ itemIcon = iconRegister.registerIcon("BiomesOPlenty:amethystsword"); } - else { itemIcon = iconRegister.registerIcon("BiomesOPlenty:mudball"); } - } -} diff --git a/src/minecraft/biomesoplenty/items/ItemBOPWillow.java b/src/minecraft/biomesoplenty/items/ItemBOPWillow.java deleted file mode 100644 index f41cf9df6..000000000 --- a/src/minecraft/biomesoplenty/items/ItemBOPWillow.java +++ /dev/null @@ -1,38 +0,0 @@ -package biomesoplenty.items; - -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.item.ItemColored; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Icon; -import biomesoplenty.api.Blocks; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class ItemBOPWillow extends ItemColored -{ - @SideOnly(Side.CLIENT) - private Icon texture; - - public ItemBOPWillow(int par1) - { - super(par1, false); - } - - @SideOnly(Side.CLIENT) - public void registerIcons(IconRegister iconRegister) - { - texture = iconRegister.registerIcon("BiomesOPlenty:willow"); - } - - @SideOnly(Side.CLIENT) - public int getColorFromItemStack(ItemStack itemStack, int par2) - { - return Blocks.willow.get().getRenderColor(itemStack.getItemDamage()); - } - - @Override - public Icon getIconFromDamage(int meta) - { - return texture; - } -} \ No newline at end of file diff --git a/src/minecraft/biomesoplenty/items/ItemEnderporter.java b/src/minecraft/biomesoplenty/items/ItemEnderporter.java deleted file mode 100644 index 051aa5437..000000000 --- a/src/minecraft/biomesoplenty/items/ItemEnderporter.java +++ /dev/null @@ -1,66 +0,0 @@ -package biomesoplenty.items; - -import biomesoplenty.BiomesOPlenty; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.world.World; - -public class ItemEnderporter extends Item -{ - - public ItemEnderporter(int par1) - { - super(par1); - this.maxStackSize = 1; - this.setMaxDamage(9); - setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - setUnlocalizedName("enderporter"); - } - - public void registerIcons(IconRegister iconRegister) - { - itemIcon = iconRegister.registerIcon("BiomesOPlenty:enderporter"); - } - - public boolean hasEffect(ItemStack par1ItemStack) - { - return true; - } - - /** - * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer - */ - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - if (par3EntityPlayer.ridingEntity != null) - { - return par1ItemStack; - } - else - { - if (par3EntityPlayer.dimension == 0) - { - par1ItemStack.damageItem(1, par3EntityPlayer); - par3EntityPlayer.addPotionEffect(new PotionEffect(Potion.blindness.id, 100, 999)); - par3EntityPlayer.addPotionEffect(new PotionEffect(Potion.resistance.id, 200, 999)); - par3EntityPlayer.addPotionEffect(new PotionEffect(Potion.nightVision.id, 100, 999)); - par3EntityPlayer.addPotionEffect(new PotionEffect(Potion.regeneration.id, 200, 3)); - par3EntityPlayer.setPosition(par2World.getSpawnPoint().posX, 256, par2World.getSpawnPoint().posZ); - par2World.playSoundAtEntity(par3EntityPlayer, "random.levelup", 1.0F, 5.0F); - } - else - { - if (!par3EntityPlayer.worldObj.isRemote) - { - par3EntityPlayer.addChatMessage("\u00a75A mystical energy is preventing you from using this in the current world."); - } - } - - return par1ItemStack; - } - } -} diff --git a/src/minecraft/biomesoplenty/items/ItemShroomPowder.java b/src/minecraft/biomesoplenty/items/ItemShroomPowder.java deleted file mode 100644 index f095f50ec..000000000 --- a/src/minecraft/biomesoplenty/items/ItemShroomPowder.java +++ /dev/null @@ -1,22 +0,0 @@ -package biomesoplenty.items; - -import biomesoplenty.BiomesOPlenty; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.item.ItemFood; -import net.minecraft.potion.Potion; - -public class ItemShroomPowder extends ItemFood -{ - public ItemShroomPowder(int par1, int par2, float par3, boolean par4) - { - super(par1, par2, par3, par4); - setPotionEffect(Potion.confusion.id, 30, 0, 0.6F); - setAlwaysEdible().setUnlocalizedName("shroomPowder"); - setCreativeTab(BiomesOPlenty.tabBiomesOPlenty); - } - - public void registerIcons(IconRegister iconRegister) - { - itemIcon = iconRegister.registerIcon("BiomesOPlenty:shroompowder"); - } -} diff --git a/src/minecraft/biomesoplenty/items/overrides/ItemShears.java b/src/minecraft/biomesoplenty/items/overrides/ItemShears.java deleted file mode 100644 index f295a97e9..000000000 --- a/src/minecraft/biomesoplenty/items/overrides/ItemShears.java +++ /dev/null @@ -1,62 +0,0 @@ -package biomesoplenty.items.overrides; - -import java.util.ArrayList; - -import cpw.mods.fml.common.registry.LanguageRegistry; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.passive.EntityCow; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemBucket; -import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumMovingObjectType; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.Event; -import net.minecraftforge.event.entity.player.FillBucketEvent; -import net.minecraftforge.oredict.OreDictionary; - -public class ItemShears extends net.minecraft.item.ItemShears -{ - public ItemShears(int var1) - { - super(var1); - this.maxStackSize = 1; - } - - - /** - * Returns the strength of the stack against a given block. 1.0F base, (Quality+1)*2 if correct blocktype, 1.5F if - * sword - */ - @Override - public float getStrVsBlock(ItemStack par1ItemStack, Block par2Block) - { - Float Strength = null; - - if (Blocks.shearBlockIds.get(par2Block.blockID) != null) - { - Strength = Float.parseFloat(Blocks.shearBlockIds.get(par2Block.blockID).toString()); - } - else if (par2Block.blockID == Block.web.blockID | par2Block.blockID == Block.leaves.blockID) - { - Strength = 15.0F; - } - else if (par2Block.blockID == Block.cloth.blockID) - { - Strength = 5.0F; - } - else - { - Strength = super.getStrVsBlock(par1ItemStack, par2Block); - } - - return Strength; - } -} diff --git a/src/minecraft/biomesoplenty/items/projectiles/DispenserBehaviorMudball.java b/src/minecraft/biomesoplenty/items/projectiles/DispenserBehaviorMudball.java deleted file mode 100644 index df13e6c97..000000000 --- a/src/minecraft/biomesoplenty/items/projectiles/DispenserBehaviorMudball.java +++ /dev/null @@ -1,14 +0,0 @@ -package biomesoplenty.items.projectiles; - -import net.minecraft.dispenser.BehaviorProjectileDispense; -import net.minecraft.dispenser.IPosition; -import net.minecraft.entity.IProjectile; -import net.minecraft.world.World; - -public class DispenserBehaviorMudball extends BehaviorProjectileDispense -{ - protected IProjectile getProjectileEntity(World par1World, IPosition par2IPosition) - { - return new EntityMudball(par1World, par2IPosition.getX(), par2IPosition.getY(), par2IPosition.getZ()); - } -} diff --git a/src/minecraft/biomesoplenty/items/projectiles/EntityMudball.java b/src/minecraft/biomesoplenty/items/projectiles/EntityMudball.java deleted file mode 100644 index ae40c093d..000000000 --- a/src/minecraft/biomesoplenty/items/projectiles/EntityMudball.java +++ /dev/null @@ -1,53 +0,0 @@ -package biomesoplenty.items.projectiles; - -import biomesoplenty.ClientProxy; -import biomesoplenty.BiomesOPlenty; - -import net.minecraft.entity.EntityLiving; -import net.minecraft.entity.projectile.EntityThrowable; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; - -public class EntityMudball extends EntityThrowable -{ - boolean isClient = BiomesOPlenty.proxy instanceof ClientProxy; - - public EntityMudball(World par1World) - { - super(par1World); - } - - public EntityMudball(World par1World, EntityLiving par2EntityLiving) - { - super(par1World, par2EntityLiving); - } - - public EntityMudball(World par1World, double par2, double par4, double par6) - { - super(par1World, par2, par4, par6); - } - - @Override - protected void onImpact(MovingObjectPosition par1MovingObjectPosition) - { - - if (par1MovingObjectPosition.entityHit != null) - { - par1MovingObjectPosition.entityHit.attackEntityFrom(DamageSource.causeThrownDamage(this, this.getThrower()), 1); - ((EntityLiving)par1MovingObjectPosition.entityHit).addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 300)); - } - - for (int i = 0; i < 16; ++i) - { - BiomesOPlenty.proxy.spawnMud(this.worldObj, this.posX, this.posY, this.posZ, 0.0D, 0.0D, 0.0D); - } - - if (!this.worldObj.isRemote) - { - this.setDead(); - } - } -} \ No newline at end of file diff --git a/src/minecraft/biomesoplenty/mobs/EntityJungleSpider.java b/src/minecraft/biomesoplenty/mobs/EntityJungleSpider.java deleted file mode 100644 index f7da18a9c..000000000 --- a/src/minecraft/biomesoplenty/mobs/EntityJungleSpider.java +++ /dev/null @@ -1,76 +0,0 @@ -package biomesoplenty.mobs; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLiving; -import net.minecraft.entity.monster.EntitySpider; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.world.World; - -public class EntityJungleSpider extends EntitySpider -{ - public EntityJungleSpider(World par1World) - { - super(par1World); - this.texture = "/mods/BiomesOPlenty/textures/mobs/junglespider.png"; - this.setSize(0.4F, 0.3F); - this.moveSpeed = 1.1F; - } - - public int getMaxHealth() - { - return 8; - } - - /** - * How large the spider should be scaled. - */ - public float spiderScaleAmount() - { - return 0.4F; - } - - public float getShadowSize() - { - return 0.0F; - } - - public boolean attackEntityAsMob(Entity par1Entity) - { - if (super.attackEntityAsMob(par1Entity)) - { - if (par1Entity instanceof EntityLiving) - { - byte var2 = 0; - - if (this.worldObj.difficultySetting > 1) - { - if (this.worldObj.difficultySetting == 2) - { - var2 = 7; - } - else if (this.worldObj.difficultySetting == 3) - { - var2 = 15; - } - } - - if (var2 > 0) - { - ((EntityLiving)par1Entity).addPotionEffect(new PotionEffect(Potion.blindness.id, var2 * 20, 0)); - } - } - - return true; - } - else - { - return false; - } - } - - /** - * Initialize this creature. - */ - public void initCreature() {} -} diff --git a/src/minecraft/biomesoplenty/mobs/EntityRosester.java b/src/minecraft/biomesoplenty/mobs/EntityRosester.java deleted file mode 100644 index e33ba428a..000000000 --- a/src/minecraft/biomesoplenty/mobs/EntityRosester.java +++ /dev/null @@ -1,192 +0,0 @@ -package biomesoplenty.mobs; - -import net.minecraft.entity.EntityAgeable; -import net.minecraft.entity.ai.EntityAIFollowParent; -import net.minecraft.entity.ai.EntityAILookIdle; -import net.minecraft.entity.ai.EntityAIMate; -import net.minecraft.entity.ai.EntityAIPanic; -import net.minecraft.entity.ai.EntityAISwimming; -import net.minecraft.entity.ai.EntityAITempt; -import net.minecraft.entity.ai.EntityAIWander; -import net.minecraft.entity.ai.EntityAIWatchClosest; -import net.minecraft.entity.passive.EntityChicken; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemSeeds; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class EntityRosester extends EntityChicken -{ - public boolean field_70885_d = false; - public float field_70886_e = 0.0F; - public float destPos = 0.0F; - public float field_70884_g; - public float field_70888_h; - public float field_70889_i = 1.0F; - - /** The time until the next egg is spawned. */ - public int timeUntilNextEgg; - - public EntityRosester(World par1World) - { - super(par1World); - this.texture = "/mods/BiomesOPlenty/textures/mobs/rosester.png"; - this.setSize(0.3F, 0.7F); - this.timeUntilNextEgg = this.rand.nextInt(6000) + 6000; - float var2 = 0.25F; - this.tasks.addTask(0, new EntityAISwimming(this)); - this.tasks.addTask(1, new EntityAIPanic(this, 0.38F)); - this.tasks.addTask(2, new EntityAIMate(this, var2)); - this.tasks.addTask(3, new EntityAITempt(this, 0.25F, Item.seeds.itemID, false)); - this.tasks.addTask(4, new EntityAIFollowParent(this, 0.28F)); - this.tasks.addTask(5, new EntityAIWander(this, var2)); - this.tasks.addTask(6, new EntityAIWatchClosest(this, EntityPlayer.class, 6.0F)); - this.tasks.addTask(7, new EntityAILookIdle(this)); - } - - /** - * Returns true if the newer Entity AI code should be run - */ - public boolean isAIEnabled() - { - return true; - } - - public int getMaxHealth() - { - return 4; - } - - /** - * Called frequently so the entity can update its state every tick as required. For example, zombies and skeletons - * use this to react to sunlight and start to burn. - */ - public void onLivingUpdate() - { - super.onLivingUpdate(); - this.field_70888_h = this.field_70886_e; - this.field_70884_g = this.destPos; - this.destPos = (float)((double)this.destPos + (double)(this.onGround ? -1 : 4) * 0.3D); - - if (this.destPos < 0.0F) - { - this.destPos = 0.0F; - } - - if (this.destPos > 1.0F) - { - this.destPos = 1.0F; - } - - if (!this.onGround && this.field_70889_i < 1.0F) - { - this.field_70889_i = 1.0F; - } - - this.field_70889_i = (float)((double)this.field_70889_i * 0.9D); - - if (!this.onGround && this.motionY < 0.0D) - { - this.motionY *= 0.6D; - } - - this.field_70886_e += this.field_70889_i * 2.0F; - - if (!this.isChild() && !this.worldObj.isRemote && --this.timeUntilNextEgg <= 0) - { - this.playSound("mob.chicken.plop", 1.0F, (this.rand.nextFloat() - this.rand.nextFloat()) * 0.2F + 1.0F); - this.entityDropItem(new ItemStack(Item.dyePowder, 1, 1), 0.0F); - this.timeUntilNextEgg = this.rand.nextInt(6000) + 6000; - } - } - - /** - * Called when the mob is falling. Calculates and applies fall damage. - */ - protected void fall(float par1) {} - - /** - * Returns the sound this mob makes while it's alive. - */ - protected String getLivingSound() - { - return "mob.chicken.say"; - } - - /** - * Returns the sound this mob makes when it is hurt. - */ - protected String getHurtSound() - { - return "mob.chicken.hurt"; - } - - /** - * Returns the sound this mob makes on death. - */ - protected String getDeathSound() - { - return "mob.chicken.hurt"; - } - - /** - * Plays step sound at given x, y, z for the entity - */ - protected void playStepSound(int par1, int par2, int par3, int par4) - { - this.playSound("mob.chicken.step", 0.15F, 1.0F); - } - - /** - * Returns the item ID for the item the mob drops on death. - */ - protected int getDropItemId() - { - return Item.feather.itemID; - } - - /** - * Drop 0-2 items of this living's type - */ - protected void dropFewItems(boolean par1, int par2) - { - int var3 = this.rand.nextInt(3) + this.rand.nextInt(1 + par2); - - for (int var4 = 0; var4 < var3; ++var4) - { - this.entityDropItem(new ItemStack(Item.dyePowder, 1, 1), 0.0F); - } - - if (this.isBurning()) - { - this.dropItem(Item.chickenCooked.itemID, 1); - } - else - { - this.dropItem(Item.chickenRaw.itemID, 1); - } - } - - /** - * This function is used when two same-species animals in 'love mode' breed to generate the new baby animal. - */ - public EntityRosester spawnBabyAnimal(EntityAgeable par1EntityAgeable) - { - return new EntityRosester(this.worldObj); - } - - /** - * Checks if the parameter is an item which this animal can be fed to breed it (wheat, carrots or seeds depending on - * the animal type) - */ - public boolean isBreedingItem(ItemStack par1ItemStack) - { - return par1ItemStack != null && par1ItemStack.getItem() instanceof ItemSeeds; - } - - public EntityAgeable createChild(EntityAgeable par1EntityAgeable) - { - return this.spawnBabyAnimal(par1EntityAgeable); - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenAcacia.java b/src/minecraft/biomesoplenty/worldgen/WorldGenAcacia.java deleted file mode 100644 index 8e43b964b..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenAcacia.java +++ /dev/null @@ -1,236 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import cpw.mods.fml.common.registry.LanguageRegistry; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenAcacia extends WorldGenerator -{ - /** The minimum height of a generated tree. */ - private final int minTreeHeight; - - /** True if this tree should grow Vines. */ - private final boolean vinesGrow; - - /** The metadata value of the wood to use in tree generation. */ - @SuppressWarnings("unused") - private final int metaWood; - - /** The metadata value of the leaves to use in tree generation. */ - @SuppressWarnings("unused") - private final int metaLeaves; - - public WorldGenAcacia(boolean par1) - { - this(par1, 4, 0, 0, false); - } - - public WorldGenAcacia(boolean par1, int par2, int par3, int par4, boolean par5) - { - super(par1); - this.minTreeHeight = par2; - this.metaWood = par3; - this.metaLeaves = par4; - this.vinesGrow = par5; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(6) + this.minTreeHeight; - boolean var7 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 256) - { - int var8; - byte var9; - int var11; - int var12; - - for (var8 = par4; var8 <= par4 + 1 + var6; ++var8) - { - var9 = 1; - - if (var8 == par4) - { - var9 = 0; - } - - if (var8 >= par4 + 1 + var6 - 2) - { - var9 = 2; - } - - for (int var10 = par3 - var9; var10 <= par3 + var9 && var7; ++var10) - { - for (var11 = par5 - var9; var11 <= par5 + var9 && var7; ++var11) - { - if (var8 >= 0 && var8 < 256) - { - var12 = par1World.getBlockId(var10, var8, var11); - - if (var12 != 0 && var12 != Blocks.leavesColorized.get().blockID && var12 != Block.grass.blockID && var12 != Block.dirt.blockID && var12 != Blocks.logs1.get().blockID) - { - var7 = false; - } - } - else - { - var7 = false; - } - } - } - } - - if (!var7) - { - return false; - } - else - { - var8 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var8 == Block.grass.blockID || var8 == Block.dirt.blockID) && par4 < 256 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - var9 = 2; - byte var18 = 0; - int var13; - int var14; - int var15; - - for (var11 = par4 - var9 + var6; var11 <= par4 + var6; ++var11) - { - var12 = var11 - (par4 + var6); - var13 = var18 + 1 - var12; - - for (var14 = par3 - var13; var14 <= par3 + var13; ++var14) - { - var15 = var14 - par3; - - for (int var16 = par5 - var13; var16 <= par5 + var13; ++var16) - { - int var17 = var16 - par5; - - if ((Math.abs(var15) != var13 || Math.abs(var17) != var13 || par2Random.nextInt(2) != 0 && var12 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var14, var11, var16)]) - { - this.setBlockAndMetadata(par1World, var14, var11, var16, Blocks.leavesColorized.get().blockID, 0); - } - } - } - } - - for (var11 = 0; var11 < var6; ++var11) - { - var12 = par1World.getBlockId(par3, par4 + var11, par5); - - if (var12 == 0 || var12 == Blocks.leavesColorized.get().blockID) - { - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5, Blocks.logs1.get().blockID,0); - - if (this.vinesGrow && var11 > 0) - { - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3 - 1, par4 + var11, par5)) - { - this.setBlockAndMetadata(par1World, par3 - 1, par4 + var11, par5, Block.vine.blockID, 8); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3 + 1, par4 + var11, par5)) - { - this.setBlockAndMetadata(par1World, par3 + 1, par4 + var11, par5, Block.vine.blockID, 2); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3, par4 + var11, par5 - 1)) - { - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5 - 1, Block.vine.blockID, 1); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3, par4 + var11, par5 + 1)) - { - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5 + 1, Block.vine.blockID, 4); - } - } - } - } - - if (this.vinesGrow) - { - for (var11 = par4 - 3 + var6; var11 <= par4 + var6; ++var11) - { - var12 = var11 - (par4 + var6); - var13 = 2 - var12 / 2; - - for (var14 = par3 - var13; var14 <= par3 + var13; ++var14) - { - for (var15 = par5 - var13; var15 <= par5 + var13; ++var15) - { - if (par1World.getBlockId(var14, var11, var15) == Blocks.leavesColorized.get().blockID) - { - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14 - 1, var11, var15) == 0) - { - this.growVines(par1World, var14 - 1, var11, var15, 8); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14 + 1, var11, var15) == 0) - { - this.growVines(par1World, var14 + 1, var11, var15, 2); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14, var11, var15 - 1) == 0) - { - this.growVines(par1World, var14, var11, var15 - 1, 1); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14, var11, var15 + 1) == 0) - { - this.growVines(par1World, var14, var11, var15 + 1, 4); - } - } - } - } - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } - - /** - * Grows vines downward from the given block for a given length. Args: World, x, starty, z, vine-length - */ - private void growVines(World par1World, int par2, int par3, int par4, int par5) - { - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - int var6 = 4; - - while (true) - { - --par3; - - if (par1World.getBlockId(par2, par3, par4) != 0 || var6 <= 0) - { - return; - } - - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - --var6; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenAlgae.java b/src/minecraft/biomesoplenty/worldgen/WorldGenAlgae.java deleted file mode 100644 index ad7dd8383..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenAlgae.java +++ /dev/null @@ -1,30 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenAlgae extends WorldGenerator -{ - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - for (int var6 = 0; var6 < 80; ++var6) - { - int var7 = par3 + par2Random.nextInt(8) - par2Random.nextInt(8); - int var8 = par4 + par2Random.nextInt(4) - par2Random.nextInt(4); - int var9 = par5 + par2Random.nextInt(8) - par2Random.nextInt(8); - - if (par1World.isAirBlock(var7, var8, var9) && par1World.getBlockId(var7, var8 - 1, var9) == Block.waterStill.blockID) - { - par1World.setBlock(var7, var8, var9, Blocks.foliage.get().blockID, 0, 2); - } - } - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenApple.java b/src/minecraft/biomesoplenty/worldgen/WorldGenApple.java deleted file mode 100644 index f44ea635a..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenApple.java +++ /dev/null @@ -1,137 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenApple extends WorldGenerator -{ - public WorldGenApple(boolean par1) - { - super(par1); - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(3) + 5; - boolean flag = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 256) - { - int var8; - int var10; - int var11; - int var12; - int var99; - - for (var8 = par4; var8 <= par4 + 1 + var6; ++var8) - { - byte var9 = 1; - - if (var8 == par4) - { - var9 = 0; - } - - if (var8 >= par4 + 1 + var6 - 2) - { - var9 = 2; - } - - for (var10 = par3 - var9; var10 <= par3 + var9 && flag; ++var10) - { - for (var11 = par5 - var9; var11 <= par5 + var9 && flag; ++var11) - { - if (var8 >= 0 && var8 < 256) - { - var12 = par1World.getBlockId(var10, var8, var11); - - Block block = Block.blocksList[var12]; - - if (var12 != 0 && (block != null && !block.isLeaves(par1World, var10, var8, var11))) - { - flag = false; - } - } - else - { - flag = false; - } - } - } - } - - if (!flag) - { - return false; - } - else - { - var8 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var8 == Block.grass.blockID || var8 == Block.dirt.blockID) && par4 < 256 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - int var16; - - for (var16 = par4 - 3 + var6; var16 <= par4 + var6; ++var16) - { - var10 = var16 - (par4 + var6); - var11 = 1 - var10 / 2; - - for (var12 = par3 - var11; var12 <= par3 + var11; ++var12) - { - int var13 = var12 - par3; - - for (int var14 = par5 - var11; var14 <= par5 + var11; ++var14) - { - int var15 = var14 - par5; - - if ((Math.abs(var13) != var11 || Math.abs(var15) != var11 || par2Random.nextInt(2) != 0 && var10 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var12, var16, var14)]) - { - var99 = par2Random.nextInt(6); - - if (var99 == 0) - { - this.setBlockAndMetadata(par1World, var12, var16, var14, Blocks.leavesFruit.get().blockID, 3); - } - else - { - this.setBlockAndMetadata(par1World, var12, var16, var14, Blocks.leavesFruit.get().blockID, 0); - } - } - } - } - } - - for (var16 = 0; var16 < var6; ++var16) - { - var10 = par1World.getBlockId(par3, par4 + var16, par5); - - Block block = Block.blocksList[var10]; - - if (var10 == 0 || block == null || block.isLeaves(par1World, par3, par4 + var16, par5)) - { - this.setBlockAndMetadata(par1World, par3, par4 + var16, par5, Block.wood.blockID, 0); - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenAsh.java b/src/minecraft/biomesoplenty/worldgen/WorldGenAsh.java deleted file mode 100644 index 67c009196..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenAsh.java +++ /dev/null @@ -1,80 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenAsh extends WorldGenerator -{ - /** The block ID of the ore to be placed using this generator. */ - private int minableBlockId; - - /** The number of blocks to generate. */ - private int numberOfBlocks; - - public WorldGenAsh(int par1, int par2) - { - this.minableBlockId = par1; - this.numberOfBlocks = par2; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - float var6 = par2Random.nextFloat() * (float)Math.PI; - double var7 = (double)((float)(par3 + 8) + MathHelper.sin(var6) * (float)this.numberOfBlocks / 8.0F); - double var9 = (double)((float)(par3 + 8) - MathHelper.sin(var6) * (float)this.numberOfBlocks / 8.0F); - double var11 = (double)((float)(par5 + 8) + MathHelper.cos(var6) * (float)this.numberOfBlocks / 8.0F); - double var13 = (double)((float)(par5 + 8) - MathHelper.cos(var6) * (float)this.numberOfBlocks / 8.0F); - double var15 = (double)(par4 + par2Random.nextInt(3) - 2); - double var17 = (double)(par4 + par2Random.nextInt(3) - 2); - - for (int var19 = 0; var19 <= this.numberOfBlocks; ++var19) - { - double var20 = var7 + (var9 - var7) * (double)var19 / (double)this.numberOfBlocks; - double var22 = var15 + (var17 - var15) * (double)var19 / (double)this.numberOfBlocks; - double var24 = var11 + (var13 - var11) * (double)var19 / (double)this.numberOfBlocks; - double var26 = par2Random.nextDouble() * (double)this.numberOfBlocks / 16.0D; - double var28 = (double)(MathHelper.sin((float)var19 * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * var26 + 1.0D; - double var30 = (double)(MathHelper.sin((float)var19 * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * var26 + 1.0D; - int var32 = MathHelper.floor_double(var20 - var28 / 2.0D); - int var33 = MathHelper.floor_double(var22 - var30 / 2.0D); - int var34 = MathHelper.floor_double(var24 - var28 / 2.0D); - int var35 = MathHelper.floor_double(var20 + var28 / 2.0D); - int var36 = MathHelper.floor_double(var22 + var30 / 2.0D); - int var37 = MathHelper.floor_double(var24 + var28 / 2.0D); - - for (int var38 = var32; var38 <= var35; ++var38) - { - double var39 = ((double)var38 + 0.5D - var20) / (var28 / 2.0D); - - if (var39 * var39 < 1.0D) - { - for (int var41 = var33; var41 <= var36; ++var41) - { - double var42 = ((double)var41 + 0.5D - var22) / (var30 / 2.0D); - - if (var39 * var39 + var42 * var42 < 1.0D) - { - for (int var44 = var34; var44 <= var37; ++var44) - { - double var45 = ((double)var44 + 0.5D - var24) / (var28 / 2.0D); - - if (var39 * var39 + var42 * var42 + var45 * var45 < 1.0D && par1World.getBlockId(var38, var41, var44) == Blocks.ashStone.get().blockID) - { - par1World.setBlock(var38, var41, var44, this.minableBlockId); - } - } - } - } - } - } - } - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenAutumn.java b/src/minecraft/biomesoplenty/worldgen/WorldGenAutumn.java deleted file mode 100644 index 468aa6c1a..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenAutumn.java +++ /dev/null @@ -1,123 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenAutumn extends WorldGenerator -{ - public WorldGenAutumn(boolean par1) - { - super(par1); - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(3) + 5; - boolean var7 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 256) - { - int var8; - int var10; - int var11; - int var12; - - for (var8 = par4; var8 <= par4 + 1 + var6; ++var8) - { - byte var9 = 1; - - if (var8 == par4) - { - var9 = 0; - } - - if (var8 >= par4 + 1 + var6 - 2) - { - var9 = 2; - } - - for (var10 = par3 - var9; var10 <= par3 + var9 && var7; ++var10) - { - for (var11 = par5 - var9; var11 <= par5 + var9 && var7; ++var11) - { - if (var8 >= 0 && var8 < 256) - { - var12 = par1World.getBlockId(var10, var8, var11); - - if (var12 != 0 && var12 != Blocks.leaves1.get().blockID) - { - var7 = false; - } - } - else - { - var7 = false; - } - } - } - } - - if (!var7) - { - return false; - } - else - { - var8 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var8 == Block.grass.blockID || var8 == Block.dirt.blockID) && par4 < 256 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - int var16; - - for (var16 = par4 - 3 + var6; var16 <= par4 + var6; ++var16) - { - var10 = var16 - (par4 + var6); - var11 = 1 - var10 / 2; - - for (var12 = par3 - var11; var12 <= par3 + var11; ++var12) - { - int var13 = var12 - par3; - - for (int var14 = par5 - var11; var14 <= par5 + var11; ++var14) - { - int var15 = var14 - par5; - - if ((Math.abs(var13) != var11 || Math.abs(var15) != var11 || par2Random.nextInt(2) != 0 && var10 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var12, var16, var14)]) - { - this.setBlockAndMetadata(par1World, var12, var16, var14, Blocks.leaves1.get().blockID, 0); - } - } - } - } - - for (var16 = 0; var16 < var6; ++var16) - { - var10 = par1World.getBlockId(par3, par4 + var16, par5); - - if (var10 == 0 || var10 == Blocks.leaves1.get().blockID) - { - this.setBlockAndMetadata(par1World, par3, par4 + var16, par5, Block.wood.blockID, 2); - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenAutumn2.java b/src/minecraft/biomesoplenty/worldgen/WorldGenAutumn2.java deleted file mode 100644 index 8fb411c5e..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenAutumn2.java +++ /dev/null @@ -1,123 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenAutumn2 extends WorldGenerator -{ - public WorldGenAutumn2(boolean par1) - { - super(par1); - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(3) + 5; - boolean var7 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 256) - { - int var8; - int var10; - int var11; - int var12; - - for (var8 = par4; var8 <= par4 + 1 + var6; ++var8) - { - byte var9 = 1; - - if (var8 == par4) - { - var9 = 0; - } - - if (var8 >= par4 + 1 + var6 - 2) - { - var9 = 2; - } - - for (var10 = par3 - var9; var10 <= par3 + var9 && var7; ++var10) - { - for (var11 = par5 - var9; var11 <= par5 + var9 && var7; ++var11) - { - if (var8 >= 0 && var8 < 256) - { - var12 = par1World.getBlockId(var10, var8, var11); - - if (var12 != 0 && var12 != Blocks.leaves1.get().blockID) - { - var7 = false; - } - } - else - { - var7 = false; - } - } - } - } - - if (!var7) - { - return false; - } - else - { - var8 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var8 == Block.grass.blockID || var8 == Block.dirt.blockID) && par4 < 256 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - int var16; - - for (var16 = par4 - 3 + var6; var16 <= par4 + var6; ++var16) - { - var10 = var16 - (par4 + var6); - var11 = 1 - var10 / 2; - - for (var12 = par3 - var11; var12 <= par3 + var11; ++var12) - { - int var13 = var12 - par3; - - for (int var14 = par5 - var11; var14 <= par5 + var11; ++var14) - { - int var15 = var14 - par5; - - if ((Math.abs(var13) != var11 || Math.abs(var15) != var11 || par2Random.nextInt(2) != 0 && var10 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var12, var16, var14)]) - { - this.setBlockAndMetadata(par1World, var12, var16, var14, Blocks.leaves1.get().blockID, 7); - } - } - } - } - - for (var16 = 0; var16 < var6; ++var16) - { - var10 = par1World.getBlockId(par3, par4 + var16, par5); - - if (var10 == 0 || var10 == Blocks.leaves1.get().blockID) - { - this.setBlockAndMetadata(par1World, par3, par4 + var16, par5, Block.wood.blockID, 0); - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenBOPFlowers.java b/src/minecraft/biomesoplenty/worldgen/WorldGenBOPFlowers.java deleted file mode 100644 index 3ae8ce607..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenBOPFlowers.java +++ /dev/null @@ -1,36 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenBOPFlowers extends WorldGenerator -{ - /** The ID of the plant block used in this plant generator. */ - private int plantBlockId; - private int plantBlockMeta; - - public WorldGenBOPFlowers(int par1, int meta) - { - this.plantBlockId = par1; - this.plantBlockMeta = meta; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - for (int l = 0; l < 64; ++l) - { - int i1 = par3 + par2Random.nextInt(8) - par2Random.nextInt(8); - int j1 = par4 + par2Random.nextInt(4) - par2Random.nextInt(4); - int k1 = par5 + par2Random.nextInt(8) - par2Random.nextInt(8); - - if (par1World.isAirBlock(i1, j1, k1) && (!par1World.provider.hasNoSky || j1 < 127) && Block.blocksList[this.plantBlockId].canBlockStay(par1World, i1, j1, k1)) - { - par1World.setBlock(i1, j1, k1, this.plantBlockId, this.plantBlockMeta, 2); - } - } - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenBambooTree.java b/src/minecraft/biomesoplenty/worldgen/WorldGenBambooTree.java deleted file mode 100644 index e5c7cb074..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenBambooTree.java +++ /dev/null @@ -1,280 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Direction; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenBambooTree extends WorldGenerator -{ - /** The minimum height of a generated tree. */ - private final int minTreeHeight; - - /** True if this tree should grow Vines. */ - private final boolean vinesGrow; - - /** The metadata value of the wood to use in tree generation. */ - private final int metaWood; - - /** The metadata value of the leaves to use in tree generation. */ - private final int metaLeaves; - - public WorldGenBambooTree(boolean par1) - { - this(par1, 10, 0, 0, false); - } - - public WorldGenBambooTree(boolean par1, int par2, int par3, int par4, boolean par5) - { - super(par1); - this.minTreeHeight = par2; - this.metaWood = par3; - this.metaLeaves = par4; - this.vinesGrow = par5; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(12) + this.minTreeHeight; - boolean var7 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 256) - { - int var8; - byte var9; - int var11; - int var12; - - for (var8 = par4; var8 <= par4 + 1 + var6; ++var8) - { - var9 = 1; - - if (var8 == par4) - { - var9 = 0; - } - - if (var8 >= par4 + 1 + var6 - 2) - { - var9 = 2; - } - - for (int var10 = par3 - var9; var10 <= par3 + var9 && var7; ++var10) - { - for (var11 = par5 - var9; var11 <= par5 + var9 && var7; ++var11) - { - if (var8 >= 0 && var8 < 256) - { - var12 = par1World.getBlockId(var10, var8, var11); - - if (var12 != 0 && var12 != Blocks.leaves1.get().blockID && var12 != Block.grass.blockID && var12 != Block.dirt.blockID && var12 != Blocks.bamboo.get().blockID) - { - var7 = false; - } - } - else - { - var7 = false; - } - } - } - } - - if (!var7) - { - return false; - } - else - { - var8 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var8 == Block.grass.blockID || var8 == Block.dirt.blockID) && par4 < 256 - var6 - 1) - { - var9 = 3; - byte var18 = 0; - int var13; - int var14; - int var15; - - for (var11 = par4 - var9 + var6; var11 <= par4 + var6; ++var11) - { - var12 = var11 - (par4 + var6); - var13 = var18 + 1 - var12 / 3; - - for (var14 = par3 - var13; var14 <= par3 + var13; ++var14) - { - var15 = var14 - par3; - - for (int var16 = par5 - var13; var16 <= par5 + var13; ++var16) - { - int var17 = var16 - par5; - - if ((Math.abs(var15) != var13 || Math.abs(var17) != var13 || par2Random.nextInt(2) != 0 && var12 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var14, var11, var16)]) - { - this.setBlockAndMetadata(par1World, var14, var11, var16, Blocks.leaves1.get().blockID, 1); - } - } - } - } - - for (var11 = 0; var11 < var6; ++var11) - { - var12 = par1World.getBlockId(par3, par4 + var11, par5); - - if (var12 == 0 || var12 == Blocks.leaves1.get().blockID) - { - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5, Blocks.bamboo.get().blockID, 0); - - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var6 - 4), par5, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var6 - 4), par5, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 4), par5 - 1, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 4), par5 + 1, Blocks.leaves1.get().blockID, 1); - - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var6 - 5), par5 + 1, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var6 - 5), par5 - 1, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var6 - 5), par5 + 1, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var6 - 5), par5 - 1, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var6 - 5), par5, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var6 - 5), par5, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 5), par5 - 1, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 5), par5 + 1, Blocks.leaves1.get().blockID, 1); - - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var6 - 6), par5, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var6 - 6), par5, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 6), par5 - 1, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 6), par5 + 1, Blocks.leaves1.get().blockID, 1); - - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var6 - 7), par5 + 1, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var6 - 7), par5 - 1, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var6 - 7), par5 + 1, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var6 - 7), par5 - 1, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var6 - 7), par5, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var6 - 7), par5, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 7), par5 - 1, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 7), par5 + 1, Blocks.leaves1.get().blockID, 1); - - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var6 - 8), par5, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var6 - 8), par5, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 8), par5 - 1, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 8), par5 + 1, Blocks.leaves1.get().blockID, 1); - - if (this.vinesGrow && var11 > 0) - { - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3 - 1, par4 + var11, par5)) - { - this.setBlockAndMetadata(par1World, par3 - 1, par4 + var11, par5, Block.vine.blockID, 8); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3 + 1, par4 + var11, par5)) - { - this.setBlockAndMetadata(par1World, par3 + 1, par4 + var11, par5, Block.vine.blockID, 2); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3, par4 + var11, par5 - 1)) - { - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5 - 1, Block.vine.blockID, 1); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3, par4 + var11, par5 + 1)) - { - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5 + 1, Block.vine.blockID, 4); - } - } - } - } - - if (this.vinesGrow) - { - for (var11 = par4 - 3 + var6; var11 <= par4 + var6; ++var11) - { - var12 = var11 - (par4 + var6); - var13 = 2 - var12 / 2; - - for (var14 = par3 - var13; var14 <= par3 + var13; ++var14) - { - for (var15 = par5 - var13; var15 <= par5 + var13; ++var15) - { - if (par1World.getBlockId(var14, var11, var15) == Blocks.leaves1.get().blockID) - { - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14 - 1, var11, var15) == 0) - { - this.growVines(par1World, var14 - 1, var11, var15, 8); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14 + 1, var11, var15) == 0) - { - this.growVines(par1World, var14 + 1, var11, var15, 2); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14, var11, var15 - 1) == 0) - { - this.growVines(par1World, var14, var11, var15 - 1, 1); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14, var11, var15 + 1) == 0) - { - this.growVines(par1World, var14, var11, var15 + 1, 4); - } - } - } - } - } - - if (par2Random.nextInt(5) == 0 && var6 > 5) - { - for (var11 = 0; var11 < 2; ++var11) - { - for (var12 = 0; var12 < 4; ++var12) - { - if (par2Random.nextInt(4 - var11) == 0) - { - var13 = par2Random.nextInt(3); - this.setBlockAndMetadata(par1World, par3 + Direction.offsetX[Direction.rotateOpposite[var12]], par4 + var6 - 5 + var11, par5 + Direction.offsetZ[Direction.rotateOpposite[var12]], Block.cocoaPlant.blockID, var13 << 2 | var12); - } - } - } - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } - - /** - * Grows vines downward from the given block for a given length. Args: World, x, starty, z, vine-length - */ - private void growVines(World par1World, int par2, int par3, int par4, int par5) - { - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - int var6 = 4; - - while (true) - { - --par3; - - if (par1World.getBlockId(par2, par3, par4) != 0 || var6 <= 0) - { - return; - } - - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - --var6; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenBambooTree2.java b/src/minecraft/biomesoplenty/worldgen/WorldGenBambooTree2.java deleted file mode 100644 index cdb403923..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenBambooTree2.java +++ /dev/null @@ -1,279 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.util.Direction; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenBambooTree2 extends WorldGenerator -{ - /** The minimum height of a generated tree. */ - private final int minTreeHeight; - - /** True if this tree should grow Vines. */ - private final boolean vinesGrow; - - /** The metadata value of the wood to use in tree generation. */ - private final int metaWood; - - /** The metadata value of the leaves to use in tree generation. */ - private final int metaLeaves; - - public WorldGenBambooTree2(boolean par1) - { - this(par1, 18, 0, 0, false); - } - - public WorldGenBambooTree2(boolean par1, int par2, int par3, int par4, boolean par5) - { - super(par1); - this.minTreeHeight = par2; - this.metaWood = par3; - this.metaLeaves = par4; - this.vinesGrow = par5; - } - - public boolean generate(World par1World, Random par2Random, int X, int Y, int Z) - { - int var6 = par2Random.nextInt(3) + this.minTreeHeight - 7; - boolean var7 = true; - - if (Y >= 1 && Y + var6 + 1 <= 256) - { - int var8; - byte var9; - int var11; - int var12; - - for (var8 = Y; var8 <= Y + 1 + var6; ++var8) - { - var9 = 1; - - if (var8 == Y) - { - var9 = 0; - } - - if (var8 >= Y + 1 + var6 - 2) - { - var9 = 2; - } - - for (int var10 = X - var9; var10 <= X + var9 && var7; ++var10) - { - for (var11 = Z - var9; var11 <= Z + var9 && var7; ++var11) - { - if (var8 >= 0 && var8 < 256) - { - var12 = par1World.getBlockId(var10, var8, var11); - - if (var12 != 0 && var12 != Blocks.leaves1.get().blockID && var12 != Block.grass.blockID && var12 != Block.dirt.blockID && var12 != Blocks.bamboo.get().blockID) - { - var7 = false; - } - } - else - { - var7 = false; - } - } - } - } - - if (!var7) - { - return false; - } - else - { - var8 = par1World.getBlockId(X, Y - 1, Z); - - if ((var8 == Block.grass.blockID || var8 == Block.dirt.blockID) && Y < 256 - var6 - 1) - { - var9 = 3; - byte var18 = 0; - int var13; - int var14; - int var15; - - for (var11 = Y - var9 + var6; var11 <= Y + var6; ++var11) - { - var12 = var11 - (Y + var6); - var13 = var18 + 1 - var12 / 3; - - for (var14 = X - var13; var14 <= X + var13; ++var14) - { - var15 = var14 - X; - - for (int var16 = Z - var13; var16 <= Z + var13; ++var16) - { - int var17 = var16 - Z; - - if ((Math.abs(var15) != var13 || Math.abs(var17) != var13 || par2Random.nextInt(2) != 0 && var12 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var14, var11, var16)]) - { - this.setBlockAndMetadata(par1World, var14, var11, var16, Blocks.leaves1.get().blockID, 1); - } - } - } - } - - for (var11 = 0; var11 < var6; ++var11) - { - var12 = par1World.getBlockId(X, Y + var11, Z); - - if (var12 == 0 || var12 == Blocks.bamboo.get().blockID) - { - this.setBlockAndMetadata(par1World, X, Y + var11, Z, Blocks.bamboo.get().blockID, 0); - - this.setBlockAndMetadata(par1World, X - 1, Y + (var6 - 4), Z, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, X + 1, Y + (var6 - 4), Z, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, X, Y + (var6 - 4), Z - 1, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, X, Y + (var6 - 4), Z + 1, Blocks.leaves1.get().blockID, 1); - - this.setBlockAndMetadata(par1World, X - 1, Y + (var6 - 5), Z + 1, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, X - 1, Y + (var6 - 5), Z - 1, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, X + 1, Y + (var6 - 5), Z + 1, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, X + 1, Y + (var6 - 5), Z - 1, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, X - 1, Y + (var6 - 5), Z, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, X + 1, Y + (var6 - 5), Z, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, X, Y + (var6 - 5), Z - 1, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, X, Y + (var6 - 5), Z + 1, Blocks.leaves1.get().blockID, 1); - - this.setBlockAndMetadata(par1World, X - 1, Y + (var6 - 6), Z, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, X + 1, Y + (var6 - 6), Z, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, X, Y + (var6 - 6), Z - 1, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, X, Y + (var6 - 6), Z + 1, Blocks.leaves1.get().blockID, 1); - - this.setBlockAndMetadata(par1World, X - 1, Y + (var6 - 7), Z + 1, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, X - 1, Y + (var6 - 7), Z - 1, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, X + 1, Y + (var6 - 7), Z + 1, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, X + 1, Y + (var6 - 7), Z - 1, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, X - 1, Y + (var6 - 7), Z, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, X + 1, Y + (var6 - 7), Z, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, X, Y + (var6 - 7), Z - 1, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, X, Y + (var6 - 7), Z + 1, Blocks.leaves1.get().blockID, 1); - - this.setBlockAndMetadata(par1World, X - 1, Y + (var6 - 8), Z, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, X + 1, Y + (var6 - 8), Z, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, X, Y + (var6 - 8), Z - 1, Blocks.leaves1.get().blockID, 1); - this.setBlockAndMetadata(par1World, X, Y + (var6 - 8), Z + 1, Blocks.leaves1.get().blockID, 1); - - if (this.vinesGrow && var11 > 0) - { - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(X - 1, Y + var11, Z)) - { - this.setBlockAndMetadata(par1World, X - 1, Y + var11, Z, Block.vine.blockID, 8); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(X + 1, Y + var11, Z)) - { - this.setBlockAndMetadata(par1World, X + 1, Y + var11, Z, Block.vine.blockID, 2); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(X, Y + var11, Z - 1)) - { - this.setBlockAndMetadata(par1World, X, Y + var11, Z - 1, Block.vine.blockID, 1); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(X, Y + var11, Z + 1)) - { - this.setBlockAndMetadata(par1World, X, Y + var11, Z + 1, Block.vine.blockID, 4); - } - } - } - } - - if (this.vinesGrow) - { - for (var11 = Y - 3 + var6; var11 <= Y + var6; ++var11) - { - var12 = var11 - (Y + var6); - var13 = 2 - var12 / 2; - - for (var14 = X - var13; var14 <= X + var13; ++var14) - { - for (var15 = Z - var13; var15 <= Z + var13; ++var15) - { - if (par1World.getBlockId(var14, var11, var15) == Blocks.bamboo.get().blockID) - { - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14 - 1, var11, var15) == 0) - { - this.growVines(par1World, var14 - 1, var11, var15, 8); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14 + 1, var11, var15) == 0) - { - this.growVines(par1World, var14 + 1, var11, var15, 2); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14, var11, var15 - 1) == 0) - { - this.growVines(par1World, var14, var11, var15 - 1, 1); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14, var11, var15 + 1) == 0) - { - this.growVines(par1World, var14, var11, var15 + 1, 4); - } - } - } - } - } - - if (par2Random.nextInt(5) == 0 && var6 > 5) - { - for (var11 = 0; var11 < 2; ++var11) - { - for (var12 = 0; var12 < 4; ++var12) - { - if (par2Random.nextInt(4 - var11) == 0) - { - var13 = par2Random.nextInt(3); - this.setBlockAndMetadata(par1World, X + Direction.offsetX[Direction.rotateOpposite[var12]], Y + var6 - 5 + var11, Z + Direction.offsetZ[Direction.rotateOpposite[var12]], Block.cocoaPlant.blockID, var13 << 2 | var12); - } - } - } - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } - - /** - * Grows vines downward from the given block for a given length. Args: World, x, starty, z, vine-length - */ - private void growVines(World par1World, int par2, int par3, int par4, int par5) - { - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - int var6 = 4; - - while (true) - { - --par3; - - if (par1World.getBlockId(par2, par3, par4) != 0 || var6 <= 0) - { - return; - } - - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - --var6; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenBayou1.java b/src/minecraft/biomesoplenty/worldgen/WorldGenBayou1.java deleted file mode 100644 index be8ac2c75..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenBayou1.java +++ /dev/null @@ -1,235 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenBayou1 extends WorldGenerator -{ - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6; - - for (var6 = par2Random.nextInt(8) + 10; par1World.getBlockMaterial(par3, par4 - 1, par5) == Material.water; --par4) - { - ; - } - - boolean var7 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 128) - { - int var8; - int var81; - int var82; - int var83; - int var84; - int var10; - int var11; - int var12; - - for (var8 = par4; var8 <= par4 + 1 + var6; ++var8) - { - byte var9 = 1; - - if (var8 == par4) - { - var9 = 0; - } - - if (var8 >= par4 + 1 + var6 - 2) - { - var9 = 3; - } - - for (var10 = par3 - var9; var10 <= par3 + var9 && var7; ++var10) - { - for (var11 = par5 - var9; var11 <= par5 + var9 && var7; ++var11) - { - if (var8 >= 0 && var8 < 128) - { - var12 = par1World.getBlockId(var10, var8, var11); - - if (var12 != 0 && var12 != Blocks.leavesColorized.get().blockID) - { - if (var12 != Block.waterStill.blockID && var12 != Block.waterMoving.blockID) - { - var7 = false; - } - else if (var8 > par4) - { - var7 = false; - } - } - } - else - { - var7 = false; - } - } - } - } - - if (!var7) - { - return false; - } - else - { - var8 = par1World.getBlockId(par3, par4 - 1, par5); - var81 = par1World.getBlockId(par3 + 1, par4 - 1, par5); - var82 = par1World.getBlockId(par3, par4 - 1, par5 - 1); - var83 = par1World.getBlockId(par3, par4 - 1, par5 + 1); - var84 = par1World.getBlockId(par3 - 1, par4 - 1, par5 - 1); - - if (var81 != Block.grass.blockID) - { - return false; - } - - if (var82 != Block.grass.blockID) - { - return false; - } - - if (var83 != Block.grass.blockID) - { - return false; - } - - if (var84 != Block.grass.blockID) - { - return false; - } - - if ((var8 == Block.grass.blockID || var8 == Block.dirt.blockID) && par4 < 128 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - this.setBlockAndMetadata(par1World, par3 - 1, par4, par5, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 + 1, par4, par5, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4, par5 - 1, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4, par5 + 1, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 - 1, par4 + 1, par5, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + 1, par5, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4 + 1, par5 - 1, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4 + 1, par5 + 1, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 - 1, par4 + 2, par5, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + 2, par5, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4 + 2, par5 - 1, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4 + 2, par5 + 1, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 - 1, par4 + 3, par5, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + 3, par5, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4 + 3, par5 - 1, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4 + 3, par5 + 1, Blocks.logs3.get().blockID, 1); - int var13; - int var16; - - for (var16 = par4 - 3 + var6; var16 <= par4 + var6; ++var16) - { - var10 = var16 - (par4 + var6); - var11 = 2 - var10 / 4; - - for (var12 = par3 - var11; var12 <= par3 + var11; ++var12) - { - var13 = var12 - par3; - - for (int var14 = par5 - var11; var14 <= par5 + var11; ++var14) - { - int var15 = var14 - par5; - - if ((Math.abs(var13) != var11 || Math.abs(var15) != var11 || par2Random.nextInt(2) != 0 && var10 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var12, var16, var14)]) - { - this.setBlockAndMetadata(par1World, var12, var16, var14, Blocks.leavesColorized.get().blockID, 4); - } - } - } - } - - for (var16 = 0; var16 < var6; ++var16) - { - var10 = par1World.getBlockId(par3, par4 + var16, par5); - - if (var10 == 0 || var10 == Blocks.leavesColorized.get().blockID || var10 == Block.waterMoving.blockID || var10 == Block.waterStill.blockID) - { - this.setBlockAndMetadata(par1World, par3, par4 + var16, par5, Blocks.logs3.get().blockID, 1); - } - } - - for (var16 = par4 - 3 + var6; var16 <= par4 + var6; ++var16) - { - var10 = var16 - (par4 + var6); - var11 = 2 - var10 / 2; - - for (var12 = par3 - var11; var12 <= par3 + var11; ++var12) - { - for (var13 = par5 - var11; var13 <= par5 + var11; ++var13) - { - if (par1World.getBlockId(var12, var16, var13) == Blocks.leavesColorized.get().blockID) - { - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12 - 1, var16, var13) == 0) - { - this.generateVines(par1World, var12 - 1, var16, var13, 8); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12 + 1, var16, var13) == 0) - { - this.generateVines(par1World, var12 + 1, var16, var13, 2); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12, var16, var13 - 1) == 0) - { - this.generateVines(par1World, var12, var16, var13 - 1, 1); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12, var16, var13 + 1) == 0) - { - this.generateVines(par1World, var12, var16, var13 + 1, 4); - } - } - } - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } - - /** - * Generates vines at the given position until it hits a block. - */ - private void generateVines(World par1World, int par2, int par3, int par4, int par5) - { - this.setBlockAndMetadata(par1World, par2, par3, par4, Blocks.willow.get().blockID, par5); - int var6 = 4; - - while (true) - { - --par3; - - if (par1World.getBlockId(par2, par3, par4) != 0 || var6 <= 0) - { - return; - } - - this.setBlockAndMetadata(par1World, par2, par3, par4, Blocks.willow.get().blockID, par5); - --var6; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenBayou2.java b/src/minecraft/biomesoplenty/worldgen/WorldGenBayou2.java deleted file mode 100644 index 7f801c0bc..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenBayou2.java +++ /dev/null @@ -1,226 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenBayou2 extends WorldGenerator -{ - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6; - - for (var6 = par2Random.nextInt(5) + 8; par1World.getBlockMaterial(par3, par4 - 1, par5) == Material.water; --par4) - { - ; - } - - boolean var7 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 128) - { - int var8; - int var81; - int var82; - int var83; - int var84; - int var10; - int var11; - int var12; - - for (var8 = par4; var8 <= par4 + 1 + var6; ++var8) - { - byte var9 = 1; - - if (var8 == par4) - { - var9 = 0; - } - - if (var8 >= par4 + 1 + var6 - 2) - { - var9 = 3; - } - - for (var10 = par3 - var9; var10 <= par3 + var9 && var7; ++var10) - { - for (var11 = par5 - var9; var11 <= par5 + var9 && var7; ++var11) - { - if (var8 >= 0 && var8 < 128) - { - var12 = par1World.getBlockId(var10, var8, var11); - - if (var12 != 0 && var12 != Blocks.leavesColorized.get().blockID) - { - if (var12 != Block.waterStill.blockID && var12 != Block.waterMoving.blockID) - { - var7 = false; - } - else if (var8 > par4) - { - var7 = false; - } - } - } - else - { - var7 = false; - } - } - } - } - - if (!var7) - { - return false; - } - else - { - var8 = par1World.getBlockId(par3, par4 - 1, par5); - var81 = par1World.getBlockId(par3 + 1, par4 - 1, par5); - var82 = par1World.getBlockId(par3, par4 - 1, par5 - 1); - var83 = par1World.getBlockId(par3, par4 - 1, par5 + 1); - var84 = par1World.getBlockId(par3 - 1, par4 - 1, par5 - 1); - - if (var81 != Block.grass.blockID) - { - return false; - } - - if (var82 != Block.grass.blockID) - { - return false; - } - - if (var83 != Block.grass.blockID) - { - return false; - } - - if (var84 != Block.grass.blockID) - { - return false; - } - - if ((var8 == Block.grass.blockID || var8 == Block.dirt.blockID) && par4 < 128 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - this.setBlockAndMetadata(par1World, par3 - 1, par4, par5, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 + 1, par4, par5, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4, par5 - 1, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4, par5 + 1, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 - 1, par4 + 1, par5, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + 1, par5, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4 + 1, par5 - 1, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4 + 1, par5 + 1, Blocks.logs3.get().blockID, 1); - int var13; - int var16; - - for (var16 = par4 - 3 + var6; var16 <= par4 + var6; ++var16) - { - var10 = var16 - (par4 + var6); - var11 = 2 - var10 / 2; - - for (var12 = par3 - var11; var12 <= par3 + var11; ++var12) - { - var13 = var12 - par3; - - for (int var14 = par5 - var11; var14 <= par5 + var11; ++var14) - { - int var15 = var14 - par5; - - if ((Math.abs(var13) != var11 || Math.abs(var15) != var11 || par2Random.nextInt(2) != 0 && var10 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var12, var16, var14)]) - { - this.setBlockAndMetadata(par1World, var12, var16, var14, Blocks.leavesColorized.get().blockID, 4); - } - } - } - } - - for (var16 = 0; var16 < var6; ++var16) - { - var10 = par1World.getBlockId(par3, par4 + var16, par5); - - if (var10 == 0 || var10 == Blocks.leavesColorized.get().blockID || var10 == Block.waterMoving.blockID || var10 == Block.waterStill.blockID) - { - this.setBlockAndMetadata(par1World, par3, par4 + var16, par5, Blocks.logs3.get().blockID, 1); - } - } - - for (var16 = par4 - 3 + var6; var16 <= par4 + var6; ++var16) - { - var10 = var16 - (par4 + var6); - var11 = 2 - var10 / 2; - - for (var12 = par3 - var11; var12 <= par3 + var11; ++var12) - { - for (var13 = par5 - var11; var13 <= par5 + var11; ++var13) - { - if (par1World.getBlockId(var12, var16, var13) == Blocks.leavesColorized.get().blockID) - { - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12 - 1, var16, var13) == 0) - { - this.generateVines(par1World, var12 - 1, var16, var13, 8); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12 + 1, var16, var13) == 0) - { - this.generateVines(par1World, var12 + 1, var16, var13, 2); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12, var16, var13 - 1) == 0) - { - this.generateVines(par1World, var12, var16, var13 - 1, 1); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12, var16, var13 + 1) == 0) - { - this.generateVines(par1World, var12, var16, var13 + 1, 4); - } - } - } - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } - - /** - * Generates vines at the given position until it hits a block. - */ - private void generateVines(World par1World, int par2, int par3, int par4, int par5) - { - this.setBlockAndMetadata(par1World, par2, par3, par4, Blocks.willow.get().blockID, par5); - int var6 = 4; - - while (true) - { - --par3; - - if (par1World.getBlockId(par2, par3, par4) != 0 || var6 <= 0) - { - return; - } - - this.setBlockAndMetadata(par1World, par2, par3, par4, Blocks.willow.get().blockID, par5); - --var6; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenBayou3.java b/src/minecraft/biomesoplenty/worldgen/WorldGenBayou3.java deleted file mode 100644 index cb78e3418..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenBayou3.java +++ /dev/null @@ -1,128 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenBayou3 extends WorldGenerator -{ - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6; - - for (var6 = 7; par1World.getBlockMaterial(par3, par4 - 1, par5) == Material.water; --par4) - { - ; - } - - boolean var7 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 128) - { - int var8; - int var10; - int var11; - int var12; - - for (var8 = par4; var8 <= par4 + 1 + var6; ++var8) - { - byte var9 = 1; - - if (var8 == par4) - { - var9 = 0; - } - - if (var8 >= par4 + 1 + var6 - 2) - { - var9 = 3; - } - - for (var10 = par3 - var9; var10 <= par3 + var9 && var7; ++var10) - { - for (var11 = par5 - var9; var11 <= par5 + var9 && var7; ++var11) - { - if (var8 >= 0 && var8 < 128) - { - var12 = par1World.getBlockId(var10, var8, var11); - - if (var12 != 0 && var12 != Blocks.leavesColorized.get().blockID) - { - if (var12 != Block.waterStill.blockID && var12 != Block.waterMoving.blockID) - { - var7 = false; - } - } - } - else - { - var7 = false; - } - } - } - } - - if (!var7) - { - return false; - } - else - { - var8 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var8 == Block.grass.blockID || var8 == Block.dirt.blockID) && par4 < 128 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - this.setBlockAndMetadata(par1World, par3 - 1, par4, par5, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 + 1, par4, par5, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4, par5 - 1, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4, par5 + 1, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 - 1, par4 + 1, par5, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + 1, par5, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4 + 1, par5 - 1, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4 + 1, par5 + 1, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 - 1, par4 + 2, par5, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + 2, par5, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4 + 2, par5 - 1, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4 + 2, par5 + 1, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 - 1, par4 + 3, par5, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + 3, par5, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4 + 3, par5 - 1, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4 + 3, par5 + 1, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 - 1, par4 + 4, par5, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + 4, par5, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4 + 4, par5 - 1, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(par1World, par3, par4 + 4, par5 + 1, Blocks.logs3.get().blockID, 1); - int var13; - int var16; - - for (var16 = 0; var16 < var6; ++var16) - { - var10 = par1World.getBlockId(par3, par4 + var16, par5); - - if (var10 == 0 || var10 == Blocks.leavesColorized.get().blockID || var10 == Block.waterMoving.blockID || var10 == Block.waterStill.blockID) - { - this.setBlockAndMetadata(par1World, par3, par4 + var16, par5, Blocks.logs3.get().blockID, 1); - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenBog1.java b/src/minecraft/biomesoplenty/worldgen/WorldGenBog1.java deleted file mode 100644 index da1c52aff..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenBog1.java +++ /dev/null @@ -1,215 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenBog1 extends WorldGenerator -{ - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6; - - for (var6 = par2Random.nextInt(5) + 7; par1World.getBlockMaterial(par3, par4 - 1, par5) == Material.water; --par4) - { - ; - } - - boolean var7 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 128) - { - int var8; - int var10; - int var11; - int var12; - - for (var8 = par4; var8 <= par4 + 1 + var6; ++var8) - { - byte var9 = 1; - - if (var8 == par4) - { - var9 = 0; - } - - if (var8 >= par4 + 1 + var6 - 2) - { - var9 = 3; - } - - for (var10 = par3 - var9; var10 <= par3 + var9 && var7; ++var10) - { - for (var11 = par5 - var9; var11 <= par5 + var9 && var7; ++var11) - { - if (var8 >= 0 && var8 < 128) - { - var12 = par1World.getBlockId(var10, var8, var11); - - if (var12 != 0 && var12 != Block.leaves.blockID) - { - if (var12 != Block.waterStill.blockID && var12 != Block.waterMoving.blockID) - { - var7 = false; - } - else if (var8 > par4) - { - var7 = false; - } - } - } - else - { - var7 = false; - } - } - } - } - - if (!var7) - { - return false; - } - else - { - var8 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var8 == Block.grass.blockID || var8 == Block.dirt.blockID) && par4 < 128 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - int var13; - int var16; - - for (var16 = par4 - 3 + var6; var16 <= par4 + var6; ++var16) - { - var10 = var16 - (par4 + var6); - var11 = 3 - var10; - - for (var12 = par3 - var11; var12 <= par3 + var11; ++var12) - { - var13 = var12 - par3; - - for (int var14 = par5 - var11; var14 <= par5 + var11; ++var14) - { - int var15 = var14 - par5; - - if ((Math.abs(var13) != var11 || Math.abs(var15) != var11 || par2Random.nextInt(2) != 0 && var10 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var12, var16, var14)]) - { - this.setBlock(par1World, var12, var16, var14, Block.leaves.blockID); - } - } - } - } - - for (var16 = 0; var16 < var6; ++var16) - { - var10 = par1World.getBlockId(par3, par4 + var16, par5); - - if (var10 == 0 || var10 == Block.leaves.blockID || var10 == Block.waterMoving.blockID || var10 == Block.waterStill.blockID) - { - this.setBlock(par1World, par3, par4 + var16, par5, Block.wood.blockID); - this.setBlock(par1World, par3 - 1, par4 + var16, par5, Block.wood.blockID); - this.setBlock(par1World, par3 + 1, par4 + var16, par5, Block.wood.blockID); - this.setBlock(par1World, par3, par4 + var16, par5 - 1, Block.wood.blockID); - this.setBlock(par1World, par3, par4 + var16, par5 + 1, Block.wood.blockID); - this.setBlock(par1World, par3 - 1, par4, par5 - 1, Block.wood.blockID); - this.setBlock(par1World, par3 + 1, par4, par5 + 1, Block.wood.blockID); - this.setBlock(par1World, par3 - 1, par4, par5 + 1, Block.wood.blockID); - this.setBlock(par1World, par3 + 1, par4, par5 - 1, Block.wood.blockID); - this.setBlock(par1World, par3 - 1, par4 + 1, par5 - 1, Block.wood.blockID); - this.setBlock(par1World, par3 + 1, par4 + 1, par5 + 1, Block.wood.blockID); - this.setBlock(par1World, par3 - 1, par4 + 1, par5 + 1, Block.wood.blockID); - this.setBlock(par1World, par3 + 1, par4 + 1, par5 - 1, Block.wood.blockID); - this.setBlockAndMetadata(par1World, par3 - 2, par4, par5, Block.wood.blockID, 4); - this.setBlockAndMetadata(par1World, par3 + 2, par4, par5, Block.wood.blockID, 4); - this.setBlockAndMetadata(par1World, par3, par4, par5 - 2, Block.wood.blockID, 8); - this.setBlockAndMetadata(par1World, par3, par4, par5 + 2, Block.wood.blockID, 8); - this.setBlock(par1World, par3 - 1, par4 + (var6 - 4), par5 - 1, Block.wood.blockID); - this.setBlock(par1World, par3 + 1, par4 + (var6 - 4), par5 + 1, Block.wood.blockID); - this.setBlock(par1World, par3 - 1, par4 + (var6 - 4), par5 + 1, Block.wood.blockID); - this.setBlock(par1World, par3 + 1, par4 + (var6 - 4), par5 - 1, Block.wood.blockID); - this.setBlockAndMetadata(par1World, par3 - 2, par4 + (var6 - 4), par5, Block.wood.blockID, 4); - this.setBlockAndMetadata(par1World, par3 + 2, par4 + (var6 - 4), par5, Block.wood.blockID, 4); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 4), par5 - 2, Block.wood.blockID, 8); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 4), par5 + 2, Block.wood.blockID, 8); - this.setBlock(par1World, par3 - 3, par4 + (var6 - 3), par5, Block.wood.blockID); - this.setBlock(par1World, par3 + 3, par4 + (var6 - 3), par5, Block.wood.blockID); - this.setBlock(par1World, par3, par4 + (var6 - 3), par5 - 3, Block.wood.blockID); - this.setBlock(par1World, par3, par4 + (var6 - 3), par5 + 3, Block.wood.blockID); - } - } - - for (var16 = par4 - 3 + var6; var16 <= par4 + var6; ++var16) - { - var10 = var16 - (par4 + var6); - var11 = 3 - var10; - - for (var12 = par3 - var11; var12 <= par3 + var11; ++var12) - { - for (var13 = par5 - var11; var13 <= par5 + var11; ++var13) - { - if (par1World.getBlockId(var12, var16, var13) == Block.leaves.blockID) - { - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12 - 1, var16, var13) == 0) - { - this.generateVines(par1World, var12 - 1, var16, var13, 8); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12 + 1, var16, var13) == 0) - { - this.generateVines(par1World, var12 + 1, var16, var13, 2); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12, var16, var13 - 1) == 0) - { - this.generateVines(par1World, var12, var16, var13 - 1, 1); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12, var16, var13 + 1) == 0) - { - this.generateVines(par1World, var12, var16, var13 + 1, 4); - } - } - } - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } - - /** - * Generates vines at the given position until it hits a block. - */ - private void generateVines(World par1World, int par2, int par3, int par4, int par5) - { - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - int var6 = 4; - - while (true) - { - --par3; - - if (par1World.getBlockId(par2, par3, par4) != 0 || var6 <= 0) - { - return; - } - - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - --var6; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenBog2.java b/src/minecraft/biomesoplenty/worldgen/WorldGenBog2.java deleted file mode 100644 index 7c18b15e4..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenBog2.java +++ /dev/null @@ -1,199 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenBog2 extends WorldGenerator -{ - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6; - - for (var6 = par2Random.nextInt(4) + 7; par1World.getBlockMaterial(par3, par4 - 1, par5) == Material.water; --par4) - { - ; - } - - boolean var7 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 128) - { - int var8; - int var10; - int var11; - int var12; - - for (var8 = par4; var8 <= par4 + 1 + var6; ++var8) - { - byte var9 = 1; - - if (var8 == par4) - { - var9 = 0; - } - - if (var8 >= par4 + 1 + var6 - 2) - { - var9 = 3; - } - - for (var10 = par3 - var9; var10 <= par3 + var9 && var7; ++var10) - { - for (var11 = par5 - var9; var11 <= par5 + var9 && var7; ++var11) - { - if (var8 >= 0 && var8 < 128) - { - var12 = par1World.getBlockId(var10, var8, var11); - - if (var12 != 0 && var12 != Block.leaves.blockID) - { - if (var12 != Block.waterStill.blockID && var12 != Block.waterMoving.blockID) - { - var7 = false; - } - else if (var8 > par4) - { - var7 = false; - } - } - } - else - { - var7 = false; - } - } - } - } - - if (!var7) - { - return false; - } - else - { - var8 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var8 == Block.grass.blockID || var8 == Block.dirt.blockID) && par4 < 128 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - int var13; - int var16; - - for (var16 = par4 - 3 + var6; var16 <= par4 + var6; ++var16) - { - var10 = var16 - (par4 + var6); - var11 = 2 - var10 / 2; - - for (var12 = par3 - var11; var12 <= par3 + var11; ++var12) - { - var13 = var12 - par3; - - for (int var14 = par5 - var11; var14 <= par5 + var11; ++var14) - { - int var15 = var14 - par5; - - if ((Math.abs(var13) != var11 || Math.abs(var15) != var11 || par2Random.nextInt(2) != 0 && var10 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var12, var16, var14)]) - { - this.setBlock(par1World, var12, var16, var14, Block.leaves.blockID); - } - } - } - } - - for (var16 = 0; var16 < var6; ++var16) - { - var10 = par1World.getBlockId(par3, par4 + var16, par5); - - if (var10 == 0 || var10 == Block.leaves.blockID || var10 == Block.waterMoving.blockID || var10 == Block.waterStill.blockID) - { - this.setBlock(par1World, par3, par4 + var16, par5, Block.wood.blockID); - this.setBlockAndMetadata(par1World, par3 - 1, par4, par5, Block.wood.blockID, 4); - this.setBlockAndMetadata(par1World, par3 + 1, par4, par5, Block.wood.blockID, 4); - this.setBlockAndMetadata(par1World, par3, par4, par5 - 1, Block.wood.blockID, 8); - this.setBlockAndMetadata(par1World, par3, par4, par5 + 1, Block.wood.blockID, 8); - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var6 - 4), par5, Block.wood.blockID, 4); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var6 - 4), par5, Block.wood.blockID, 4); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 4), par5 - 1, Block.wood.blockID, 8); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 4), par5 + 1, Block.wood.blockID, 8); - this.setBlock(par1World, par3 - 2, par4 + (var6 - 3), par5, Block.wood.blockID); - this.setBlock(par1World, par3 + 2, par4 + (var6 - 3), par5, Block.wood.blockID); - this.setBlock(par1World, par3, par4 + (var6 - 3), par5 - 2, Block.wood.blockID); - this.setBlock(par1World, par3, par4 + (var6 - 3), par5 + 2, Block.wood.blockID); - } - } - - for (var16 = par4 - 3 + var6; var16 <= par4 + var6; ++var16) - { - var10 = var16 - (par4 + var6); - var11 = 2 - var10 / 2; - - for (var12 = par3 - var11; var12 <= par3 + var11; ++var12) - { - for (var13 = par5 - var11; var13 <= par5 + var11; ++var13) - { - if (par1World.getBlockId(var12, var16, var13) == Block.leaves.blockID) - { - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12 - 1, var16, var13) == 0) - { - this.generateVines(par1World, var12 - 1, var16, var13, 8); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12 + 1, var16, var13) == 0) - { - this.generateVines(par1World, var12 + 1, var16, var13, 2); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12, var16, var13 - 1) == 0) - { - this.generateVines(par1World, var12, var16, var13 - 1, 1); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12, var16, var13 + 1) == 0) - { - this.generateVines(par1World, var12, var16, var13 + 1, 4); - } - } - } - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } - - /** - * Generates vines at the given position until it hits a block. - */ - private void generateVines(World par1World, int par2, int par3, int par4, int par5) - { - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - int var6 = 4; - - while (true) - { - --par3; - - if (par1World.getBlockId(par2, par3, par4) != 0 || var6 <= 0) - { - return; - } - - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - --var6; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenBoulder.java b/src/minecraft/biomesoplenty/worldgen/WorldGenBoulder.java deleted file mode 100644 index f86c22910..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenBoulder.java +++ /dev/null @@ -1,27 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenBoulder extends WorldGenerator -{ - public boolean generate(World var1, Random var2, int var3, int var4, int var5) - { - for (int var6 = 0; var6 < 64; ++var6) - { - int var7 = var3 + var2.nextInt(8) - var2.nextInt(8); - int var8 = var4 + var2.nextInt(4) - var2.nextInt(4); - int var9 = var5 + var2.nextInt(8) - var2.nextInt(8); - - if (var1.isAirBlock(var7, var8, var9) && var1.getBlockId(var7, var8 - 1, var9) == Block.grass.blockID && Block.pumpkin.canPlaceBlockAt(var1, var7, var8, var9)) - { - var1.setBlock(var7, var8, var9, Block.stone.blockID); - } - } - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenBush.java b/src/minecraft/biomesoplenty/worldgen/WorldGenBush.java deleted file mode 100644 index 13ea6d5b2..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenBush.java +++ /dev/null @@ -1,37 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenBush extends WorldGenerator -{ - /** The ID of the plant block used in this plant generator. */ - private int plantBlockId; - private int plantBlockMeta; - - public WorldGenBush(int par1, int meta) - { - this.plantBlockId = par1; - this.plantBlockMeta = meta; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - for (int var6 = 0; var6 < 64; ++var6) - { - int var7 = par3 + par2Random.nextInt(8) - par2Random.nextInt(8); - int var8 = par4 + par2Random.nextInt(4) - par2Random.nextInt(4); - int var9 = par5 + par2Random.nextInt(8) - par2Random.nextInt(8); - - if (par1World.isAirBlock(var7, var8, var9) && (!par1World.provider.hasNoSky || var8 < 127) && Block.blocksList[this.plantBlockId].canBlockStay(par1World, var7, var8, var9)) - { - par1World.setBlock(var7, var8, var9, this.plantBlockId, this.plantBlockMeta, 2); - } - } - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenCanyon.java b/src/minecraft/biomesoplenty/worldgen/WorldGenCanyon.java deleted file mode 100644 index 41543eec7..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenCanyon.java +++ /dev/null @@ -1,80 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenCanyon extends WorldGenerator -{ - /** The block ID of the ore to be placed using this generator. */ - private int minableBlockId; - - /** The number of blocks to generate. */ - private int numberOfBlocks; - - public WorldGenCanyon(int par1, int par2) - { - this.minableBlockId = par1; - this.numberOfBlocks = par2; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - float var6 = par2Random.nextFloat() * (float)Math.PI; - double var7 = (double)((float)(par3 + 8) + MathHelper.sin(var6) * (float)this.numberOfBlocks / 8.0F); - double var9 = (double)((float)(par3 + 8) - MathHelper.sin(var6) * (float)this.numberOfBlocks / 8.0F); - double var11 = (double)((float)(par5 + 8) + MathHelper.cos(var6) * (float)this.numberOfBlocks / 8.0F); - double var13 = (double)((float)(par5 + 8) - MathHelper.cos(var6) * (float)this.numberOfBlocks / 8.0F); - double var15 = (double)(par4 + par2Random.nextInt(3) - 2); - double var17 = (double)(par4 + par2Random.nextInt(3) - 2); - - for (int var19 = 0; var19 <= this.numberOfBlocks; ++var19) - { - double var20 = var7 + (var9 - var7) * (double)var19 / (double)this.numberOfBlocks; - double var22 = var15 + (var17 - var15) * (double)var19 / (double)this.numberOfBlocks; - double var24 = var11 + (var13 - var11) * (double)var19 / (double)this.numberOfBlocks; - double var26 = par2Random.nextDouble() * (double)this.numberOfBlocks / 16.0D; - double var28 = (double)(MathHelper.sin((float)var19 * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * var26 + 1.0D; - double var30 = (double)(MathHelper.sin((float)var19 * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * var26 + 1.0D; - int var32 = MathHelper.floor_double(var20 - var28 / 2.0D); - int var33 = MathHelper.floor_double(var22 - var30 / 2.0D); - int var34 = MathHelper.floor_double(var24 - var28 / 2.0D); - int var35 = MathHelper.floor_double(var20 + var28 / 2.0D); - int var36 = MathHelper.floor_double(var22 + var30 / 2.0D); - int var37 = MathHelper.floor_double(var24 + var28 / 2.0D); - - for (int var38 = var32; var38 <= var35; ++var38) - { - double var39 = ((double)var38 + 0.5D - var20) / (var28 / 2.0D); - - if (var39 * var39 < 1.0D) - { - for (int var41 = var33; var41 <= var36; ++var41) - { - double var42 = ((double)var41 + 0.5D - var22) / (var30 / 2.0D); - - if (var39 * var39 + var42 * var42 < 1.0D) - { - for (int var44 = var34; var44 <= var37; ++var44) - { - double var45 = ((double)var44 + 0.5D - var24) / (var28 / 2.0D); - - if (var39 * var39 + var42 * var42 + var45 * var45 < 1.0D && par1World.getBlockId(var38, var41, var44) == Blocks.hardDirt.get().blockID) - { - par1World.setBlock(var38, var41, var44, this.minableBlockId); - } - } - } - } - } - } - } - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenCanyonShrub.java b/src/minecraft/biomesoplenty/worldgen/WorldGenCanyonShrub.java deleted file mode 100644 index 5ca93fac1..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenCanyonShrub.java +++ /dev/null @@ -1,66 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenCanyonShrub extends WorldGenerator -{ - private int field_76527_a; - private int field_76526_b; - - public WorldGenCanyonShrub(int par1, int par2) - { - this.field_76526_b = par1; - this.field_76527_a = par2; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var15; - - for (boolean var6 = false; ((var15 = par1World.getBlockId(par3, par4, par5)) == 0 || var15 == Blocks.leavesColorized.get().blockID) && par4 > 0; --par4) - { - ; - } - - int var7 = par1World.getBlockId(par3, par4, par5); - - if (var7 == Blocks.hardDirt.get().blockID) - { - ++par4; - if (par4 > 95) - { - this.setBlockAndMetadata(par1World, par3, par4, par5, Blocks.logs1.get().blockID,0); - - for (int var8 = par4; var8 <= par4 + 1; ++var8) - { - int var9 = var8 - par4; - int var10 = 2 - var9; - - for (int var11 = par3 - var10; var11 <= par3 + var10; ++var11) - { - int var12 = var11 - par3; - - for (int var13 = par5 - var10; var13 <= par5 + var10; ++var13) - { - int var14 = var13 - par5; - - if ((Math.abs(var12) != var10 || Math.abs(var14) != var10 || par2Random.nextInt(2) != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var11, var8, var13)]) - { - this.setBlockAndMetadata(par1World, var11, var8, var13, Blocks.leavesColorized.get().blockID, 0); - } - } - } - } - } - } - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenCanyonTree.java b/src/minecraft/biomesoplenty/worldgen/WorldGenCanyonTree.java deleted file mode 100644 index 973f4946c..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenCanyonTree.java +++ /dev/null @@ -1,134 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenCanyonTree extends WorldGenerator -{ - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(5) + 7; - int var7 = var6 - par2Random.nextInt(2) - 3; - int var8 = var6 - var7; - int var9 = 1 + par2Random.nextInt(var8 + 1); - boolean var10 = true; - - if (par4 >= 95 && par4 + var6 + 1 <= 128) - { - int var11; - int var13; - int var14; - int var15; - int var18; - - for (var11 = par4; var11 <= par4 + 1 + var6 && var10; ++var11) - { - boolean var12 = true; - - if (var11 - par4 < var7) - { - var18 = 0; - } - else - { - var18 = var9; - } - - for (var13 = par3 - var18; var13 <= par3 + var18 && var10; ++var13) - { - for (var14 = par5 - var18; var14 <= par5 + var18 && var10; ++var14) - { - if (var11 >= 95 && var11 < 128) - { - var15 = par1World.getBlockId(var13, var11, var14); - - Block block = Block.blocksList[var15]; - - if (var15 != 0 && (block == null || var15 != Blocks.leavesColorized.get().blockID)) - { - var10 = false; - } - } - else - { - var10 = false; - } - } - } - } - - if (!var10) - { - return false; - } - else - { - var11 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var11 == Blocks.hardDirt.get().blockID) && par4 < 128 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Blocks.hardDirt.get().blockID); - var18 = 0; - - for (var13 = par4 + var6; var13 >= par4 + var7; --var13) - { - for (var14 = par3 - var18; var14 <= par3 + var18; ++var14) - { - var15 = var14 - par3; - - for (int var16 = par5 - var18; var16 <= par5 + var18; ++var16) - { - int var17 = var16 - par5; - - Block block = Block.blocksList[par1World.getBlockId(var14, var13, var16)]; - - if ((Math.abs(var15) != var18 || Math.abs(var17) != var18 || var18 <= 0) && - (block == null || block.canBeReplacedByLeaves(par1World, var14, var13, var16))) - { - this.setBlockAndMetadata(par1World, var14, var13, var16, Blocks.leavesColorized.get().blockID, 0); - } - } - } - - if (var18 >= 1 && var13 == par4 + var7 + 1) - { - --var18; - } - else if (var18 < var9) - { - ++var18; - } - } - - for (var13 = 0; var13 < var6 - 1; ++var13) - { - var14 = par1World.getBlockId(par3, par4 + var13, par5); - - Block block = Block.blocksList[var14]; - - if (var14 == 0 || block == null || var14 == Blocks.leavesColorized.get().blockID) - { - this.setBlockAndMetadata(par1World, par3, par4 + var13, par5, Blocks.logs1.get().blockID,0); - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenCarrots.java b/src/minecraft/biomesoplenty/worldgen/WorldGenCarrots.java deleted file mode 100644 index bd0b87fd4..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenCarrots.java +++ /dev/null @@ -1,62 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenCarrots extends WorldGenerator -{ - /** Stores ID for WorldGenTallGrass */ - private int tallGrassID; - private int tallGrassMetadata; - - public WorldGenCarrots(int par1, int par2) - { - this.tallGrassID = par1; - this.tallGrassMetadata = par2; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var11; - - for (boolean var6 = false; ((var11 = par1World.getBlockId(par3, par4, par5)) == 0 || var11 == Block.leaves.blockID) && par4 > 0; --par4) - { - ; - } - - for (int var7 = 0; var7 < 128; ++var7) - { - int var8 = par3 + par2Random.nextInt(8) - par2Random.nextInt(8); - int var9 = par4 + par2Random.nextInt(4) - par2Random.nextInt(4); - int var10 = par5 + par2Random.nextInt(8) - par2Random.nextInt(8); - int var99 = par2Random.nextInt(7); - - - if (par1World.getBlockMaterial(var8 - 1, var9 - 1, var10) != Material.water) - { - if (par1World.getBlockMaterial(var8 + 1, var9 - 1, var10) != Material.water) - { - if (par1World.getBlockMaterial(var8, var9 - 1, var10 - 1) != Material.water) - { - if (par1World.getBlockMaterial(var8, var9 - 1, var10 + 1) != Material.water) - { - return false; - } - } - } - } - - if (par1World.isAirBlock(var8, var9, var10) && Block.blocksList[this.tallGrassID].canBlockStay(par1World, var8, var9, var10)) - { - par1World.setBlock(var8, var9 - 1, var10, Block.tilledField.blockID); - par1World.setBlock(var8, var9, var10, Block.carrot.blockID, var99, 2); - } - } - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenCattail.java b/src/minecraft/biomesoplenty/worldgen/WorldGenCattail.java deleted file mode 100644 index b347a2c7c..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenCattail.java +++ /dev/null @@ -1,39 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenCattail extends WorldGenerator -{ - public boolean generate(World world, Random par2Random, int par3, int par4, int par5) - { - int var11; - - for (boolean var6 = false; ((var11 = world.getBlockId(par3, par4, par5)) == 0 || var11 == Block.leaves.blockID) && par4 > 0; --par4) - { - ; - } - - for (int var7 = 0; var7 < 128; ++var7) - { - int x = par3 + par2Random.nextInt(8) - par2Random.nextInt(8); - int y = par4 + par2Random.nextInt(4) - par2Random.nextInt(4); - int z = par5 + par2Random.nextInt(8) - par2Random.nextInt(8); - - if (world.isAirBlock(x, y, z) && Blocks.plants.get().canBlockStay(world, x, y, z)) - { - if ((world.getBlockMaterial(x - 1, y - 1, z) == Material.water ? true : (world.getBlockMaterial(x + 1, y - 1, z) == Material.water ? true : (world.getBlockMaterial(x, y - 1, z - 1) == Material.water ? true : world.getBlockMaterial(x, y - 1, z + 1) == Material.water)))) - world.setBlock(x, y, z, Blocks.plants.get().blockID, 7, 2); - } - } - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenChaparral1.java b/src/minecraft/biomesoplenty/worldgen/WorldGenChaparral1.java deleted file mode 100644 index 0ae35a16b..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenChaparral1.java +++ /dev/null @@ -1,60 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenChaparral1 extends WorldGenerator -{ - private int field_76527_a; - private int field_76526_b; - - public WorldGenChaparral1(int par1, int par2) - { - this.field_76526_b = par1; - this.field_76527_a = par2; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var15; - - for (boolean var6 = false; ((var15 = par1World.getBlockId(par3, par4, par5)) == 0 || var15 == Block.leaves.blockID) && par4 > 0; --par4) - { - ; - } - - int var7 = par1World.getBlockId(par3, par4, par5); - - if (var7 == Block.dirt.blockID || var7 == Block.grass.blockID) - { - ++par4; - this.setBlockAndMetadata(par1World, par3, par4, par5, Block.wood.blockID, this.field_76526_b); - - for (int var8 = par4; var8 <= par4 + 1; ++var8) - { - int var9 = var8 - par4; - int var10 = 2 - var9; - - for (int var11 = par3 - var10; var11 <= par3 + var10; ++var11) - { - int var12 = var11 - par3; - - for (int var13 = par5 - var10; var13 <= par5 + var10; ++var13) - { - int var14 = var13 - par5; - - if ((Math.abs(var12) != var10 || Math.abs(var14) != var10 || par2Random.nextInt(2) != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var11, var8, var13)]) - { - this.setBlockAndMetadata(par1World, var11, var8, var13, Block.leaves.blockID, this.field_76527_a); - } - } - } - } - } - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenChaparral2.java b/src/minecraft/biomesoplenty/worldgen/WorldGenChaparral2.java deleted file mode 100644 index 17bb8c075..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenChaparral2.java +++ /dev/null @@ -1,48 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenChaparral2 extends WorldGenerator -{ - public boolean generate(World var1, Random var2, int var3, int var4, int var5) - { - while (var1.isAirBlock(var3, var4, var5) && var4 > 2) - { - --var4; - } - - int var6 = var1.getBlockId(var3, var4, var5); - - if (var6 != Block.grass.blockID) - { - return false; - } - else - { - for (int var7 = -2; var7 <= 2; ++var7) - { - for (int var8 = -2; var8 <= 2; ++var8) - { - if (var1.isAirBlock(var3 + var7, var4 - 1, var5 + var8) && var1.isAirBlock(var3 + var7, var4 - 2, var5 + var8)) - { - return false; - } - } - } - - var1.setBlock(var3, var4, var5, Block.dirt.blockID); - var1.setBlock(var3, var4 + 1, var5, Block.wood.blockID); - var1.setBlock(var3, var4 + 2, var5, Block.wood.blockID); - var1.setBlock(var3 + 1, var4 + 2, var5, Block.leaves.blockID); - var1.setBlock(var3 - 1, var4 + 2, var5, Block.leaves.blockID); - var1.setBlock(var3, var4 + 2, var5 + 1, Block.leaves.blockID); - var1.setBlock(var3, var4 + 2, var5 - 1, Block.leaves.blockID); - var1.setBlock(var3, var4 + 3, var5, Block.leaves.blockID); - return true; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenChaparral3.java b/src/minecraft/biomesoplenty/worldgen/WorldGenChaparral3.java deleted file mode 100644 index 646ec17af..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenChaparral3.java +++ /dev/null @@ -1,42 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenChaparral3 extends WorldGenerator -{ - public boolean generate(World var1, Random var2, int var3, int var4, int var5) - { - while (var1.isAirBlock(var3, var4, var5) && var4 > 2) - { - --var4; - } - - int var6 = var1.getBlockId(var3, var4, var5); - - if (var6 != Block.grass.blockID) - { - return false; - } - else - { - for (int var7 = -2; var7 <= 2; ++var7) - { - for (int var8 = -2; var8 <= 2; ++var8) - { - if (var1.isAirBlock(var3 + var7, var4 - 1, var5 + var8) && var1.isAirBlock(var3 + var7, var4 - 2, var5 + var8)) - { - return false; - } - } - } - - var1.setBlock(var3, var4, var5, Block.wood.blockID); - var1.setBlock(var3, var4 + 1, var5, Block.leaves.blockID); - return true; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenCherry1.java b/src/minecraft/biomesoplenty/worldgen/WorldGenCherry1.java deleted file mode 100644 index ae77001cf..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenCherry1.java +++ /dev/null @@ -1,517 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.item.ItemStack; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenCherry1 extends WorldGenerator -{ - /** - * Contains three sets of two values that provide complimentary indices for a given 'major' index - 1 and 2 for 0, 0 - * and 2 for 1, and 0 and 1 for 2. - */ - static final byte[] otherCoordPairs = new byte[] {(byte)2, (byte)0, (byte)0, (byte)1, (byte)2, (byte)1}; - - /** random seed for GenBigTree */ - Random rand = new Random(); - - /** Reference to the World object. */ - World worldObj; - int[] basePos = new int[] {0, 0, 0}; - int heightLimit = 0; - int height; - double heightAttenuation = 0.618D; - double branchDensity = 1.0D; - double branchSlope = 0.381D; - double scaleWidth = 1.0D; - double leafDensity = 1.0D; - - /** - * Currently always 1, can be set to 2 in the class constructor to generate a double-sized tree trunk for big trees. - */ - int trunkSize = 1; - - /** - * Sets the limit of the random value used to initialize the height limit. - */ - int heightLimitLimit = 12; - - /** - * Sets the distance limit for how far away the generator will populate leaves from the base leaf node. - */ - int leafDistanceLimit = 4; - - /** Contains a list of a points at which to generate groups of leaves. */ - int[][] leafNodes; - - public WorldGenCherry1(boolean par1) - { - super(par1); - } - - /** - * Generates a list of leaf nodes for the tree, to be populated by generateLeaves. - */ - void generateLeafNodeList() - { - this.height = (int)((double)this.heightLimit * this.heightAttenuation); - - if (this.height >= this.heightLimit) - { - this.height = this.heightLimit - 1; - } - - int var1 = (int)(1.382D + Math.pow(this.leafDensity * (double)this.heightLimit / 13.0D, 2.0D)); - - if (var1 < 1) - { - var1 = 1; - } - - int[][] var2 = new int[var1 * this.heightLimit][4]; - int var3 = this.basePos[1] + this.heightLimit - this.leafDistanceLimit; - int var4 = 1; - int var5 = this.basePos[1] + this.height; - int var6 = var3 - this.basePos[1]; - var2[0][0] = this.basePos[0]; - var2[0][1] = var3; - var2[0][2] = this.basePos[2]; - var2[0][3] = var5; - --var3; - - while (var6 >= 0) - { - int var7 = 0; - float var8 = this.layerSize(var6); - - if (var8 < 0.0F) - { - --var3; - --var6; - } - else - { - for (double var9 = 0.5D; var7 < var1; ++var7) - { - double var11 = this.scaleWidth * (double)var8 * ((double)this.rand.nextFloat() + 0.328D); - double var13 = (double)this.rand.nextFloat() * 2.0D * Math.PI; - int var15 = MathHelper.floor_double(var11 * Math.sin(var13) + (double)this.basePos[0] + var9); - int var16 = MathHelper.floor_double(var11 * Math.cos(var13) + (double)this.basePos[2] + var9); - int[] var17 = new int[] {var15, var3, var16}; - int[] var18 = new int[] {var15, var3 + this.leafDistanceLimit, var16}; - - if (this.checkBlockLine(var17, var18) == -1) - { - int[] var19 = new int[] {this.basePos[0], this.basePos[1], this.basePos[2]}; - double var20 = Math.sqrt(Math.pow((double)Math.abs(this.basePos[0] - var17[0]), 2.0D) + Math.pow((double)Math.abs(this.basePos[2] - var17[2]), 2.0D)); - double var22 = var20 * this.branchSlope; - - if ((double)var17[1] - var22 > (double)var5) - { - var19[1] = var5; - } - else - { - var19[1] = (int)((double)var17[1] - var22); - } - - if (this.checkBlockLine(var19, var17) == -1) - { - var2[var4][0] = var15; - var2[var4][1] = var3; - var2[var4][2] = var16; - var2[var4][3] = var19[1]; - ++var4; - } - } - } - - --var3; - --var6; - } - } - - this.leafNodes = new int[var4][4]; - System.arraycopy(var2, 0, this.leafNodes, 0, var4); - } - - void genTreeLayer(int par1, int par2, int par3, float par4, byte par5, int par6) - { - int var7 = (int)((double)par4 + 0.618D); - byte var8 = otherCoordPairs[par5]; - byte var9 = otherCoordPairs[par5 + 3]; - int[] var10 = new int[] {par1, par2, par3}; - int[] var11 = new int[] {0, 0, 0}; - int var12 = -var7; - int var13 = -var7; - - for (var11[par5] = var10[par5]; var12 <= var7; ++var12) - { - var11[var8] = var10[var8] + var12; - var13 = -var7; - - while (var13 <= var7) - { - double var15 = Math.pow((double)Math.abs(var12) + 0.5D, 2.0D) + Math.pow((double)Math.abs(var13) + 0.5D, 2.0D); - - if (var15 > (double)(par4 * par4)) - { - ++var13; - } - else - { - var11[var9] = var10[var9] + var13; - int var14 = this.worldObj.getBlockId(var11[0], var11[1], var11[2]); - - if (var14 != 0 && var14 != Blocks.leaves2.get().blockID) - { - ++var13; - } - else - { - this.setBlockAndMetadata(this.worldObj, var11[0], var11[1], var11[2], par6, 1); - ++var13; - } - } - } - } - } - - /** - * Gets the rough size of a layer of the tree. - */ - float layerSize(int par1) - { - if ((double)par1 < (double)((float)this.heightLimit) * 0.3D) - { - return -1.618F; - } - else - { - float var2 = (float)this.heightLimit / 2.0F; - float var3 = (float)this.heightLimit / 2.0F - (float)par1; - float var4; - - if (var3 == 0.0F) - { - var4 = var2; - } - else if (Math.abs(var3) >= var2) - { - var4 = 0.0F; - } - else - { - var4 = (float)Math.sqrt(Math.pow((double)Math.abs(var2), 2.0D) - Math.pow((double)Math.abs(var3), 2.0D)); - } - - var4 *= 0.5F; - return var4; - } - } - - float leafSize(int par1) - { - return par1 >= 0 && par1 < this.leafDistanceLimit ? (par1 != 0 && par1 != this.leafDistanceLimit - 1 ? 3.0F : 2.0F) : -1.0F; - } - - /** - * Generates the leaves surrounding an individual entry in the leafNodes list. - */ - void generateLeafNode(int par1, int par2, int par3) - { - int var4 = par2; - - for (int var5 = par2 + this.leafDistanceLimit; var4 < var5; ++var4) - { - float var6 = this.leafSize(var4 - par2); - this.genTreeLayer(par1, var4, par3, var6, (byte)1, Blocks.leaves2.get().blockID); - } - } - - /** - * Places a line of the specified block ID into the world from the first coordinate triplet to the second. - */ - void placeBlockLine(int[] par1ArrayOfInteger, int[] par2ArrayOfInteger, int par3) - { - int[] var4 = new int[] {0, 0, 0}; - byte var5 = 0; - byte var6; - - for (var6 = 0; var5 < 3; ++var5) - { - var4[var5] = par2ArrayOfInteger[var5] - par1ArrayOfInteger[var5]; - - if (Math.abs(var4[var5]) > Math.abs(var4[var6])) - { - var6 = var5; - } - } - - if (var4[var6] != 0) - { - byte var7 = otherCoordPairs[var6]; - byte var8 = otherCoordPairs[var6 + 3]; - byte var9; - - if (var4[var6] > 0) - { - var9 = 1; - } - else - { - var9 = -1; - } - - double var10 = (double)var4[var7] / (double)var4[var6]; - double var12 = (double)var4[var8] / (double)var4[var6]; - int[] var14 = new int[] {0, 0, 0}; - int var15 = 0; - - for (int var16 = var4[var6] + var9; var15 != var16; var15 += var9) - { - var14[var6] = MathHelper.floor_double((double)(par1ArrayOfInteger[var6] + var15) + 0.5D); - var14[var7] = MathHelper.floor_double((double)par1ArrayOfInteger[var7] + (double)var15 * var10 + 0.5D); - var14[var8] = MathHelper.floor_double((double)par1ArrayOfInteger[var8] + (double)var15 * var12 + 0.5D); - byte var17 = 1; - int var18 = Math.abs(var14[0] - par1ArrayOfInteger[0]); - int var19 = Math.abs(var14[2] - par1ArrayOfInteger[2]); - int var20 = Math.max(var18, var19); - - if (var20 > 0) - { - if (var18 == var20) - { - var17 = 5; - } - else if (var19 == var20) - { - var17 = 9; - } - } - - this.setBlockAndMetadata(this.worldObj, var14[0], var14[1], var14[2], par3, var17); - } - } - } - - /** - * Generates the leaf portion of the tree as specified by the leafNodes list. - */ - void generateLeaves() - { - int var1 = 0; - - for (int var2 = this.leafNodes.length; var1 < var2; ++var1) - { - int var3 = this.leafNodes[var1][0]; - int var4 = this.leafNodes[var1][1]; - int var5 = this.leafNodes[var1][2]; - this.generateLeafNode(var3, var4, var5); - } - } - - /** - * Indicates whether or not a leaf node requires additional wood to be added to preserve integrity. - */ - boolean leafNodeNeedsBase(int par1) - { - return (double)par1 >= (double)this.heightLimit * 0.2D; - } - - /** - * Places the trunk for the big tree that is being generated. Able to generate double-sized trunks by changing a - * field that is always 1 to 2. - */ - void generateTrunk() - { - int var1 = this.basePos[0]; - int var2 = this.basePos[1]; - int var3 = this.basePos[1] + this.height; - int var4 = this.basePos[2]; - int[] var5 = new int[] {var1, var2, var4}; - int[] var6 = new int[] {var1, var3, var4}; - this.placeBlockLine(var5, var6, Blocks.logs1.get().blockID); - - if (this.trunkSize == 2) - { - ++var5[0]; - ++var6[0]; - this.placeBlockLine(var5, var6, Blocks.logs1.get().blockID); - ++var5[2]; - ++var6[2]; - this.placeBlockLine(var5, var6, Blocks.logs1.get().blockID); - var5[0] += -1; - var6[0] += -1; - this.placeBlockLine(var5, var6, Blocks.logs1.get().blockID); - } - } - - /** - * Generates additional wood blocks to fill out the bases of different leaf nodes that would otherwise degrade. - */ - void generateLeafNodeBases() - { - int var1 = 0; - int var2 = this.leafNodes.length; - - for (int[] var3 = new int[] {this.basePos[0], this.basePos[1], this.basePos[2]}; var1 < var2; ++var1) - { - int[] var4 = this.leafNodes[var1]; - int[] var5 = new int[] {var4[0], var4[1], var4[2]}; - var3[1] = var4[3]; - int var6 = var3[1] - this.basePos[1]; - - if (this.leafNodeNeedsBase(var6)) - { - this.placeBlockLine(var3, var5, Blocks.logs1.get().blockID); - } - } - } - - /** - * Checks a line of blocks in the world from the first coordinate to triplet to the second, returning the distance - * (in blocks) before a non-air, non-leaf block is encountered and/or the end is encountered. - */ - int checkBlockLine(int[] par1ArrayOfInteger, int[] par2ArrayOfInteger) - { - int[] var3 = new int[] {0, 0, 0}; - byte var4 = 0; - byte var5; - - for (var5 = 0; var4 < 3; ++var4) - { - var3[var4] = par2ArrayOfInteger[var4] - par1ArrayOfInteger[var4]; - - if (Math.abs(var3[var4]) > Math.abs(var3[var5])) - { - var5 = var4; - } - } - - if (var3[var5] == 0) - { - return -1; - } - else - { - byte var6 = otherCoordPairs[var5]; - byte var7 = otherCoordPairs[var5 + 3]; - byte var8; - - if (var3[var5] > 0) - { - var8 = 1; - } - else - { - var8 = -1; - } - - double var9 = (double)var3[var6] / (double)var3[var5]; - double var11 = (double)var3[var7] / (double)var3[var5]; - int[] var13 = new int[] {0, 0, 0}; - int var14 = 0; - int var15; - - for (var15 = var3[var5] + var8; var14 != var15; var14 += var8) - { - var13[var5] = par1ArrayOfInteger[var5] + var14; - var13[var6] = MathHelper.floor_double((double)par1ArrayOfInteger[var6] + (double)var14 * var9); - var13[var7] = MathHelper.floor_double((double)par1ArrayOfInteger[var7] + (double)var14 * var11); - int var16 = this.worldObj.getBlockId(var13[0], var13[1], var13[2]); - - if (var16 != 0 && var16 != Blocks.leaves2.get().blockID) - { - break; - } - } - - return var14 == var15 ? -1 : Math.abs(var14); - } - } - - /** - * Returns a boolean indicating whether or not the current location for the tree, spanning basePos to to the height - * limit, is valid. - */ - boolean validTreeLocation() - { - int[] var1 = new int[] {this.basePos[0], this.basePos[1], this.basePos[2]}; - int[] var2 = new int[] {this.basePos[0], this.basePos[1] + this.heightLimit - 1, this.basePos[2]}; - int var3 = this.worldObj.getBlockId(this.basePos[0], this.basePos[1] - 1, this.basePos[2]); - - if (var3 != 2 && var3 != 3) - { - return false; - } - else - { - int var4 = this.checkBlockLine(var1, var2); - - if (var4 == -1) - { - return true; - } - else if (var4 < 6) - { - return false; - } - else - { - this.heightLimit = var4; - return true; - } - } - } - - /** - * Rescales the generator settings, only used in WorldGenBigTree - */ - public void setScale(double par1, double par3, double par5) - { - this.heightLimitLimit = (int)(par1 * 12.0D); - - if (par1 > 0.5D) - { - this.leafDistanceLimit = 5; - } - - this.scaleWidth = par3; - this.leafDensity = par5; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - this.worldObj = par1World; - long var6 = par2Random.nextLong(); - this.rand.setSeed(var6); - this.basePos[0] = par3; - this.basePos[1] = par4; - this.basePos[2] = par5; - - if (this.heightLimit == 0) - { - this.heightLimit = 5 + this.rand.nextInt(this.heightLimitLimit); - } - - if (!this.validTreeLocation()) - { - return false; - } - else - { - this.generateLeafNodeList(); - this.generateLeaves(); - this.generateTrunk(); - this.generateLeafNodeBases(); - return true; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenCherry2.java b/src/minecraft/biomesoplenty/worldgen/WorldGenCherry2.java deleted file mode 100644 index cd34b62dc..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenCherry2.java +++ /dev/null @@ -1,517 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.item.ItemStack; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenCherry2 extends WorldGenerator -{ - /** - * Contains three sets of two values that provide complimentary indices for a given 'major' index - 1 and 2 for 0, 0 - * and 2 for 1, and 0 and 1 for 2. - */ - static final byte[] otherCoordPairs = new byte[] {(byte)2, (byte)0, (byte)0, (byte)1, (byte)2, (byte)1}; - - /** random seed for GenBigTree */ - Random rand = new Random(); - - /** Reference to the World object. */ - World worldObj; - int[] basePos = new int[] {0, 0, 0}; - int heightLimit = 0; - int height; - double heightAttenuation = 0.618D; - double branchDensity = 1.0D; - double branchSlope = 0.381D; - double scaleWidth = 1.0D; - double leafDensity = 1.0D; - - /** - * Currently always 1, can be set to 2 in the class constructor to generate a double-sized tree trunk for big trees. - */ - int trunkSize = 1; - - /** - * Sets the limit of the random value used to initialize the height limit. - */ - int heightLimitLimit = 12; - - /** - * Sets the distance limit for how far away the generator will populate leaves from the base leaf node. - */ - int leafDistanceLimit = 4; - - /** Contains a list of a points at which to generate groups of leaves. */ - int[][] leafNodes; - - public WorldGenCherry2(boolean par1) - { - super(par1); - } - - /** - * Generates a list of leaf nodes for the tree, to be populated by generateLeaves. - */ - void generateLeafNodeList() - { - this.height = (int)((double)this.heightLimit * this.heightAttenuation); - - if (this.height >= this.heightLimit) - { - this.height = this.heightLimit - 1; - } - - int var1 = (int)(1.382D + Math.pow(this.leafDensity * (double)this.heightLimit / 13.0D, 2.0D)); - - if (var1 < 1) - { - var1 = 1; - } - - int[][] var2 = new int[var1 * this.heightLimit][4]; - int var3 = this.basePos[1] + this.heightLimit - this.leafDistanceLimit; - int var4 = 1; - int var5 = this.basePos[1] + this.height; - int var6 = var3 - this.basePos[1]; - var2[0][0] = this.basePos[0]; - var2[0][1] = var3; - var2[0][2] = this.basePos[2]; - var2[0][3] = var5; - --var3; - - while (var6 >= 0) - { - int var7 = 0; - float var8 = this.layerSize(var6); - - if (var8 < 0.0F) - { - --var3; - --var6; - } - else - { - for (double var9 = 0.5D; var7 < var1; ++var7) - { - double var11 = this.scaleWidth * (double)var8 * ((double)this.rand.nextFloat() + 0.328D); - double var13 = (double)this.rand.nextFloat() * 2.0D * Math.PI; - int var15 = MathHelper.floor_double(var11 * Math.sin(var13) + (double)this.basePos[0] + var9); - int var16 = MathHelper.floor_double(var11 * Math.cos(var13) + (double)this.basePos[2] + var9); - int[] var17 = new int[] {var15, var3, var16}; - int[] var18 = new int[] {var15, var3 + this.leafDistanceLimit, var16}; - - if (this.checkBlockLine(var17, var18) == -1) - { - int[] var19 = new int[] {this.basePos[0], this.basePos[1], this.basePos[2]}; - double var20 = Math.sqrt(Math.pow((double)Math.abs(this.basePos[0] - var17[0]), 2.0D) + Math.pow((double)Math.abs(this.basePos[2] - var17[2]), 2.0D)); - double var22 = var20 * this.branchSlope; - - if ((double)var17[1] - var22 > (double)var5) - { - var19[1] = var5; - } - else - { - var19[1] = (int)((double)var17[1] - var22); - } - - if (this.checkBlockLine(var19, var17) == -1) - { - var2[var4][0] = var15; - var2[var4][1] = var3; - var2[var4][2] = var16; - var2[var4][3] = var19[1]; - ++var4; - } - } - } - - --var3; - --var6; - } - } - - this.leafNodes = new int[var4][4]; - System.arraycopy(var2, 0, this.leafNodes, 0, var4); - } - - void genTreeLayer(int par1, int par2, int par3, float par4, byte par5, int par6) - { - int var7 = (int)((double)par4 + 0.618D); - byte var8 = otherCoordPairs[par5]; - byte var9 = otherCoordPairs[par5 + 3]; - int[] var10 = new int[] {par1, par2, par3}; - int[] var11 = new int[] {0, 0, 0}; - int var12 = -var7; - int var13 = -var7; - - for (var11[par5] = var10[par5]; var12 <= var7; ++var12) - { - var11[var8] = var10[var8] + var12; - var13 = -var7; - - while (var13 <= var7) - { - double var15 = Math.pow((double)Math.abs(var12) + 0.5D, 2.0D) + Math.pow((double)Math.abs(var13) + 0.5D, 2.0D); - - if (var15 > (double)(par4 * par4)) - { - ++var13; - } - else - { - var11[var9] = var10[var9] + var13; - int var14 = this.worldObj.getBlockId(var11[0], var11[1], var11[2]); - - if (var14 != 0 && var14 != Blocks.leaves2.get().blockID) - { - ++var13; - } - else - { - this.setBlockAndMetadata(this.worldObj, var11[0], var11[1], var11[2], par6, 3); - ++var13; - } - } - } - } - } - - /** - * Gets the rough size of a layer of the tree. - */ - float layerSize(int par1) - { - if ((double)par1 < (double)((float)this.heightLimit) * 0.3D) - { - return -1.618F; - } - else - { - float var2 = (float)this.heightLimit / 2.0F; - float var3 = (float)this.heightLimit / 2.0F - (float)par1; - float var4; - - if (var3 == 0.0F) - { - var4 = var2; - } - else if (Math.abs(var3) >= var2) - { - var4 = 0.0F; - } - else - { - var4 = (float)Math.sqrt(Math.pow((double)Math.abs(var2), 2.0D) - Math.pow((double)Math.abs(var3), 2.0D)); - } - - var4 *= 0.5F; - return var4; - } - } - - float leafSize(int par1) - { - return par1 >= 0 && par1 < this.leafDistanceLimit ? (par1 != 0 && par1 != this.leafDistanceLimit - 1 ? 3.0F : 2.0F) : -1.0F; - } - - /** - * Generates the leaves surrounding an individual entry in the leafNodes list. - */ - void generateLeafNode(int par1, int par2, int par3) - { - int var4 = par2; - - for (int var5 = par2 + this.leafDistanceLimit; var4 < var5; ++var4) - { - float var6 = this.leafSize(var4 - par2); - this.genTreeLayer(par1, var4, par3, var6, (byte)1, Blocks.leaves2.get().blockID); - } - } - - /** - * Places a line of the specified block ID into the world from the first coordinate triplet to the second. - */ - void placeBlockLine(int[] par1ArrayOfInteger, int[] par2ArrayOfInteger, int par3) - { - int[] var4 = new int[] {0, 0, 0}; - byte var5 = 0; - byte var6; - - for (var6 = 0; var5 < 3; ++var5) - { - var4[var5] = par2ArrayOfInteger[var5] - par1ArrayOfInteger[var5]; - - if (Math.abs(var4[var5]) > Math.abs(var4[var6])) - { - var6 = var5; - } - } - - if (var4[var6] != 0) - { - byte var7 = otherCoordPairs[var6]; - byte var8 = otherCoordPairs[var6 + 3]; - byte var9; - - if (var4[var6] > 0) - { - var9 = 1; - } - else - { - var9 = -1; - } - - double var10 = (double)var4[var7] / (double)var4[var6]; - double var12 = (double)var4[var8] / (double)var4[var6]; - int[] var14 = new int[] {0, 0, 0}; - int var15 = 0; - - for (int var16 = var4[var6] + var9; var15 != var16; var15 += var9) - { - var14[var6] = MathHelper.floor_double((double)(par1ArrayOfInteger[var6] + var15) + 0.5D); - var14[var7] = MathHelper.floor_double((double)par1ArrayOfInteger[var7] + (double)var15 * var10 + 0.5D); - var14[var8] = MathHelper.floor_double((double)par1ArrayOfInteger[var8] + (double)var15 * var12 + 0.5D); - byte var17 = 1; - int var18 = Math.abs(var14[0] - par1ArrayOfInteger[0]); - int var19 = Math.abs(var14[2] - par1ArrayOfInteger[2]); - int var20 = Math.max(var18, var19); - - if (var20 > 0) - { - if (var18 == var20) - { - var17 = 5; - } - else if (var19 == var20) - { - var17 = 9; - } - } - - this.setBlockAndMetadata(this.worldObj, var14[0], var14[1], var14[2], par3, var17); - } - } - } - - /** - * Generates the leaf portion of the tree as specified by the leafNodes list. - */ - void generateLeaves() - { - int var1 = 0; - - for (int var2 = this.leafNodes.length; var1 < var2; ++var1) - { - int var3 = this.leafNodes[var1][0]; - int var4 = this.leafNodes[var1][1]; - int var5 = this.leafNodes[var1][2]; - this.generateLeafNode(var3, var4, var5); - } - } - - /** - * Indicates whether or not a leaf node requires additional wood to be added to preserve integrity. - */ - boolean leafNodeNeedsBase(int par1) - { - return (double)par1 >= (double)this.heightLimit * 0.2D; - } - - /** - * Places the trunk for the big tree that is being generated. Able to generate double-sized trunks by changing a - * field that is always 1 to 2. - */ - void generateTrunk() - { - int var1 = this.basePos[0]; - int var2 = this.basePos[1]; - int var3 = this.basePos[1] + this.height; - int var4 = this.basePos[2]; - int[] var5 = new int[] {var1, var2, var4}; - int[] var6 = new int[] {var1, var3, var4}; - this.placeBlockLine(var5, var6, Blocks.logs1.get().blockID); - - if (this.trunkSize == 2) - { - ++var5[0]; - ++var6[0]; - this.placeBlockLine(var5, var6, Blocks.logs1.get().blockID); - ++var5[2]; - ++var6[2]; - this.placeBlockLine(var5, var6, Blocks.logs1.get().blockID); - var5[0] += -1; - var6[0] += -1; - this.placeBlockLine(var5, var6, Blocks.logs1.get().blockID); - } - } - - /** - * Generates additional wood blocks to fill out the bases of different leaf nodes that would otherwise degrade. - */ - void generateLeafNodeBases() - { - int var1 = 0; - int var2 = this.leafNodes.length; - - for (int[] var3 = new int[] {this.basePos[0], this.basePos[1], this.basePos[2]}; var1 < var2; ++var1) - { - int[] var4 = this.leafNodes[var1]; - int[] var5 = new int[] {var4[0], var4[1], var4[2]}; - var3[1] = var4[3]; - int var6 = var3[1] - this.basePos[1]; - - if (this.leafNodeNeedsBase(var6)) - { - this.placeBlockLine(var3, var5, Blocks.logs1.get().blockID); - } - } - } - - /** - * Checks a line of blocks in the world from the first coordinate to triplet to the second, returning the distance - * (in blocks) before a non-air, non-leaf block is encountered and/or the end is encountered. - */ - int checkBlockLine(int[] par1ArrayOfInteger, int[] par2ArrayOfInteger) - { - int[] var3 = new int[] {0, 0, 0}; - byte var4 = 0; - byte var5; - - for (var5 = 0; var4 < 3; ++var4) - { - var3[var4] = par2ArrayOfInteger[var4] - par1ArrayOfInteger[var4]; - - if (Math.abs(var3[var4]) > Math.abs(var3[var5])) - { - var5 = var4; - } - } - - if (var3[var5] == 0) - { - return -1; - } - else - { - byte var6 = otherCoordPairs[var5]; - byte var7 = otherCoordPairs[var5 + 3]; - byte var8; - - if (var3[var5] > 0) - { - var8 = 1; - } - else - { - var8 = -1; - } - - double var9 = (double)var3[var6] / (double)var3[var5]; - double var11 = (double)var3[var7] / (double)var3[var5]; - int[] var13 = new int[] {0, 0, 0}; - int var14 = 0; - int var15; - - for (var15 = var3[var5] + var8; var14 != var15; var14 += var8) - { - var13[var5] = par1ArrayOfInteger[var5] + var14; - var13[var6] = MathHelper.floor_double((double)par1ArrayOfInteger[var6] + (double)var14 * var9); - var13[var7] = MathHelper.floor_double((double)par1ArrayOfInteger[var7] + (double)var14 * var11); - int var16 = this.worldObj.getBlockId(var13[0], var13[1], var13[2]); - - if (var16 != 0 && var16 != Blocks.leaves2.get().blockID) - { - break; - } - } - - return var14 == var15 ? -1 : Math.abs(var14); - } - } - - /** - * Returns a boolean indicating whether or not the current location for the tree, spanning basePos to to the height - * limit, is valid. - */ - boolean validTreeLocation() - { - int[] var1 = new int[] {this.basePos[0], this.basePos[1], this.basePos[2]}; - int[] var2 = new int[] {this.basePos[0], this.basePos[1] + this.heightLimit - 1, this.basePos[2]}; - int var3 = this.worldObj.getBlockId(this.basePos[0], this.basePos[1] - 1, this.basePos[2]); - - if (var3 != 2 && var3 != 3) - { - return false; - } - else - { - int var4 = this.checkBlockLine(var1, var2); - - if (var4 == -1) - { - return true; - } - else if (var4 < 6) - { - return false; - } - else - { - this.heightLimit = var4; - return true; - } - } - } - - /** - * Rescales the generator settings, only used in WorldGenBigTree - */ - public void setScale(double par1, double par3, double par5) - { - this.heightLimitLimit = (int)(par1 * 12.0D); - - if (par1 > 0.5D) - { - this.leafDistanceLimit = 5; - } - - this.scaleWidth = par3; - this.leafDensity = par5; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - this.worldObj = par1World; - long var6 = par2Random.nextLong(); - this.rand.setSeed(var6); - this.basePos[0] = par3; - this.basePos[1] = par4; - this.basePos[2] = par5; - - if (this.heightLimit == 0) - { - this.heightLimit = 5 + this.rand.nextInt(this.heightLimitLimit); - } - - if (!this.validTreeLocation()) - { - return false; - } - else - { - this.generateLeafNodeList(); - this.generateLeaves(); - this.generateTrunk(); - this.generateLeafNodeBases(); - return true; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenCypress.java b/src/minecraft/biomesoplenty/worldgen/WorldGenCypress.java deleted file mode 100644 index f616e9a77..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenCypress.java +++ /dev/null @@ -1,159 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenCypress extends WorldGenerator -{ - public WorldGenCypress(boolean var1) - { - super(var1); - } - - public boolean generate(World var1, Random var2, int var3, int var4, int var5) - { - int var6 = var2.nextInt(10) + 15; - int var7 = var2.nextInt(3) + 5; - int var8 = var6 - var7; - int var9 = 1; - boolean var10 = true; - - if (var4 >= 1 && var4 + var6 + 1 <= 256) - { - int var11; - int var13; - int var15; - int var21; - - for (var11 = var4; var11 <= var4 + 1 + var6 && var10; ++var11) - { - boolean var12 = true; - - if (var11 - var4 < var7) - { - var21 = 0; - } - else - { - var21 = var9; - } - - for (var13 = var3 - var21; var13 <= var3 + var21 && var10; ++var13) - { - for (int var14 = var5 - var21; var14 <= var5 + var21 && var10; ++var14) - { - if (var11 >= 0 && var11 < 256) - { - var15 = var1.getBlockId(var13, var11, var14); - - if (var15 != 0 && var15 != Blocks.leavesColorized.get().blockID) - { - var10 = false; - } - } - else - { - var10 = false; - } - } - } - } - - if (!var10) - { - return false; - } - else - { - var11 = var1.getBlockId(var3, var4 - 1, var5); - - if ((var11 == Block.grass.blockID || var11 == Block.dirt.blockID) && var4 < 256 - var6 - 1) - { - var1.setBlock(var3, var4 - 1, var5, Block.dirt.blockID); - var21 = var2.nextInt(2); - var13 = 1; - boolean var22 = false; - int var17; - int var16; - - for (var15 = 0; var15 <= var8; ++var15) - { - var16 = var4 + var6 - var15; - - for (var17 = var3 - var21; var17 <= var3 + var21; ++var17) - { - int var18 = var17 - var3; - - for (int var19 = var5 - var21; var19 <= var5 + var21; ++var19) - { - int var20 = var19 - var5; - - if ((Math.abs(var18) != var21 || Math.abs(var20) != var21 || var21 <= 0) && !Block.opaqueCubeLookup[var1.getBlockId(var17, var16, var19)]) - { - if (var2.nextInt(3) != 0) - { - this.setBlockAndMetadata(var1, var17, var16, var19, Blocks.leavesColorized.get().blockID, 4); - } - } - } - } - - if (var21 >= var13) - { - var21 = var22 ? 1 : 0; - var22 = true; - ++var13; - - if (var13 > var9) - { - var13 = var9; - } - } - else - { - ++var21; - } - } - - var15 = var2.nextInt(3); - - for (var16 = 0; var16 < var6 - var15; ++var16) - { - var17 = var1.getBlockId(var3, var4 + var16, var5); - - if (var17 == 0 || var17 == Blocks.leavesColorized.get().blockID) - { - this.setBlockAndMetadata(var1, var3, var4 + var16, var5, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(var1, var3, (var4 + var6), var5, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(var1, var3, (var4 + var6) - 2, var5, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(var1, var3, (var4 + var6) - 1, var5, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(var1, var3, (var4 + var6), var5, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(var1, var3, (var4 + var6) + 1, var5, Blocks.logs3.get().blockID, 1); - this.setBlockAndMetadata(var1, var3 - 1, (var4 + var6) + 1, var5, Blocks.leavesColorized.get().blockID, 4); - this.setBlockAndMetadata(var1, var3 + 1, (var4 + var6) + 1, var5, Blocks.leavesColorized.get().blockID, 4); - this.setBlockAndMetadata(var1, var3, (var4 + var6) + 1, var5 - 1, Blocks.leavesColorized.get().blockID, 4); - this.setBlockAndMetadata(var1, var3, (var4 + var6) + 1, var5 + 1, Blocks.leavesColorized.get().blockID, 4); - this.setBlockAndMetadata(var1, var3, (var4 + var6) + 2, var5, Blocks.leavesColorized.get().blockID, 4); - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenDeadTree.java b/src/minecraft/biomesoplenty/worldgen/WorldGenDeadTree.java deleted file mode 100644 index 69fa14058..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenDeadTree.java +++ /dev/null @@ -1,518 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenDeadTree extends WorldGenerator -{ - /** - * Contains three sets of two values that provide complimentary indices for a given 'major' index - 1 and 2 for 0, 0 - * and 2 for 1, and 0 and 1 for 2. - */ - static final byte[] otherCoordPairs = new byte[] {(byte)2, (byte)0, (byte)0, (byte)1, (byte)2, (byte)1}; - - /** random seed for GenBigTree */ - Random rand = new Random(); - - /** Reference to the World object. */ - World worldObj; - int[] basePos = new int[] {0, 0, 0}; - int heightLimit = 0; - int height; - double heightAttenuation = 0.618D; - double branchDensity = 1.0D; - double branchSlope = 0.381D; - double scaleWidth = 1.0D; - double leafDensity = 1.0D; - - /** - * Currently always 1, can be set to 2 in the class constructor to generate a double-sized tree trunk for big trees. - */ - int trunkSize = 1; - - /** - * Sets the limit of the random value used to initialize the height limit. - */ - int heightLimitLimit = 12; - - /** - * Sets the distance limit for how far away the generator will populate leaves from the base leaf node. - */ - int leafDistanceLimit = 4; - - /** Contains a list of a points at which to generate groups of leaves. */ - int[][] leafNodes; - - public WorldGenDeadTree(boolean par1) - { - super(par1); - } - - /** - * Generates a list of leaf nodes for the tree, to be populated by generateLeaves. - */ - void generateLeafNodeList() - { - this.height = (int)((double)this.heightLimit * this.heightAttenuation); - - if (this.height >= this.heightLimit) - { - this.height = this.heightLimit - 1; - } - - int var1 = (int)(1.382D + Math.pow(this.leafDensity * (double)this.heightLimit / 13.0D, 2.0D)); - - if (var1 < 1) - { - var1 = 1; - } - - int[][] var2 = new int[var1 * this.heightLimit][4]; - int var3 = this.basePos[1] + this.heightLimit - this.leafDistanceLimit; - int var4 = 1; - int var5 = this.basePos[1] + this.height; - int var6 = var3 - this.basePos[1]; - var2[0][0] = this.basePos[0]; - var2[0][1] = var3; - var2[0][2] = this.basePos[2]; - var2[0][3] = var5; - --var3; - - while (var6 >= 0) - { - int var7 = 0; - float var8 = this.layerSize(var6); - - if (var8 < 0.0F) - { - --var3; - --var6; - } - else - { - for (double var9 = 0.5D; var7 < var1; ++var7) - { - double var11 = this.scaleWidth * (double)var8 * ((double)this.rand.nextFloat() + 0.328D); - double var13 = (double)this.rand.nextFloat() * 2.0D * Math.PI; - int var15 = MathHelper.floor_double(var11 * Math.sin(var13) + (double)this.basePos[0] + var9); - int var16 = MathHelper.floor_double(var11 * Math.cos(var13) + (double)this.basePos[2] + var9); - int[] var17 = new int[] {var15, var3, var16}; - int[] var18 = new int[] {var15, var3 + this.leafDistanceLimit, var16}; - - if (this.checkBlockLine(var17, var18) == -1) - { - int[] var19 = new int[] {this.basePos[0], this.basePos[1], this.basePos[2]}; - double var20 = Math.sqrt(Math.pow((double)Math.abs(this.basePos[0] - var17[0]), 2.0D) + Math.pow((double)Math.abs(this.basePos[2] - var17[2]), 2.0D)); - double var22 = var20 * this.branchSlope; - - if ((double)var17[1] - var22 > (double)var5) - { - var19[1] = var5; - } - else - { - var19[1] = (int)((double)var17[1] - var22); - } - - if (this.checkBlockLine(var19, var17) == -1) - { - var2[var4][0] = var15; - var2[var4][1] = var3; - var2[var4][2] = var16; - var2[var4][3] = var19[1]; - ++var4; - } - } - } - - --var3; - --var6; - } - } - - this.leafNodes = new int[var4][4]; - System.arraycopy(var2, 0, this.leafNodes, 0, var4); - } - - void genTreeLayer(int par1, int par2, int par3, float par4, byte par5, int par6) - { - int var7 = (int)((double)par4 + 0.618D); - byte var8 = otherCoordPairs[par5]; - byte var9 = otherCoordPairs[par5 + 3]; - int[] var10 = new int[] {par1, par2, par3}; - int[] var11 = new int[] {0, 0, 0}; - int var12 = -var7; - int var13 = -var7; - - for (var11[par5] = var10[par5]; var12 <= var7; ++var12) - { - var11[var8] = var10[var8] + var12; - var13 = -var7; - - while (var13 <= var7) - { - double var15 = Math.pow((double)Math.abs(var12) + 0.5D, 2.0D) + Math.pow((double)Math.abs(var13) + 0.5D, 2.0D); - - if (var15 > (double)(par4 * par4)) - { - ++var13; - } - else - { - var11[var9] = var10[var9] + var13; - int var14 = this.worldObj.getBlockId(var11[0], var11[1], var11[2]); - - if (var14 != 0 && var14 != Block.leaves.blockID) - { - ++var13; - } - else - { - this.setBlockAndMetadata(this.worldObj, var11[0], var11[1], var11[2], par6, 0); - ++var13; - } - } - } - } - } - - /** - * Gets the rough size of a layer of the tree. - */ - float layerSize(int par1) - { - if ((double)par1 < (double)((float)this.heightLimit) * 0.3D) - { - return -1.618F; - } - else - { - float var2 = (float)this.heightLimit / 2.0F; - float var3 = (float)this.heightLimit / 2.0F - (float)par1; - float var4; - - if (var3 == 0.0F) - { - var4 = var2; - } - else if (Math.abs(var3) >= var2) - { - var4 = 0.0F; - } - else - { - var4 = (float)Math.sqrt(Math.pow((double)Math.abs(var2), 2.0D) - Math.pow((double)Math.abs(var3), 2.0D)); - } - - var4 *= 0.5F; - return var4; - } - } - - float leafSize(int par1) - { - return par1 >= 0 && par1 < this.leafDistanceLimit ? (par1 != 0 && par1 != this.leafDistanceLimit - 1 ? 3.0F : 2.0F) : -1.0F; - } - - /** - * Generates the leaves surrounding an individual entry in the leafNodes list. - */ - void generateLeafNode(int par1, int par2, int par3) - { - int var4 = par2; - - for (int var5 = par2 + this.leafDistanceLimit; var4 < var5; ++var4) - { - float var6 = this.leafSize(var4 - par2); - //this.genTreeLayer(par1, var4, par3, var6, (byte)1, Block.leaves.blockID); - } - } - - /** - * Places a line of the specified block ID into the world from the first coordinate triplet to the second. - */ - void placeBlockLine(int[] par1ArrayOfInteger, int[] par2ArrayOfInteger, int par3) - { - int[] var4 = new int[] {0, 0, 0}; - byte var5 = 0; - byte var6; - - for (var6 = 0; var5 < 3; ++var5) - { - var4[var5] = par2ArrayOfInteger[var5] - par1ArrayOfInteger[var5]; - - if (Math.abs(var4[var5]) > Math.abs(var4[var6])) - { - var6 = var5; - } - } - - if (var4[var6] != 0) - { - byte var7 = otherCoordPairs[var6]; - byte var8 = otherCoordPairs[var6 + 3]; - byte var9; - - if (var4[var6] > 0) - { - var9 = 1; - } - else - { - var9 = -1; - } - - double var10 = (double)var4[var7] / (double)var4[var6]; - double var12 = (double)var4[var8] / (double)var4[var6]; - int[] var14 = new int[] {0, 0, 0}; - int var15 = 0; - - for (int var16 = var4[var6] + var9; var15 != var16; var15 += var9) - { - var14[var6] = MathHelper.floor_double((double)(par1ArrayOfInteger[var6] + var15) + 0.5D); - var14[var7] = MathHelper.floor_double((double)par1ArrayOfInteger[var7] + (double)var15 * var10 + 0.5D); - var14[var8] = MathHelper.floor_double((double)par1ArrayOfInteger[var8] + (double)var15 * var12 + 0.5D); - byte var17 = 2; - int var18 = Math.abs(var14[0] - par1ArrayOfInteger[0]); - int var19 = Math.abs(var14[2] - par1ArrayOfInteger[2]); - int var20 = Math.max(var18, var19); - - if (var20 > 0) - { - if (var18 == var20) - { - var17 = 6; - } - else if (var19 == var20) - { - var17 = 10; - } - } - - this.setBlockAndMetadata(this.worldObj, var14[0], var14[1], var14[2], par3, var17); - } - } - } - - /** - * Generates the leaf portion of the tree as specified by the leafNodes list. - */ - void generateLeaves() - { - int var1 = 0; - - for (int var2 = this.leafNodes.length; var1 < var2; ++var1) - { - int var3 = this.leafNodes[var1][0]; - int var4 = this.leafNodes[var1][1]; - int var5 = this.leafNodes[var1][2]; - this.generateLeafNode(var3, var4, var5); - } - } - - /** - * Indicates whether or not a leaf node requires additional wood to be added to preserve integrity. - */ - boolean leafNodeNeedsBase(int par1) - { - return (double)par1 >= (double)this.heightLimit * 0.2D; - } - - /** - * Places the trunk for the big tree that is being generated. Able to generate double-sized trunks by changing a - * field that is always 1 to 2. - */ - void generateTrunk() - { - int var1 = this.basePos[0]; - int var2 = this.basePos[1]; - int var3 = this.basePos[1] + this.height; - int var4 = this.basePos[2]; - int[] var5 = new int[] {var1, var2, var4}; - int[] var6 = new int[] {var1, var3, var4}; - this.placeBlockLine(var5, var6, Blocks.logs3.get().blockID); - - if (this.trunkSize == 2) - { - ++var5[0]; - ++var6[0]; - this.placeBlockLine(var5, var6, Blocks.logs3.get().blockID); - ++var5[2]; - ++var6[2]; - this.placeBlockLine(var5, var6, Blocks.logs3.get().blockID); - var5[0] += -1; - var6[0] += -1; - this.placeBlockLine(var5, var6, Blocks.logs3.get().blockID); - } - } - - /** - * Generates additional wood blocks to fill out the bases of different leaf nodes that would otherwise degrade. - */ - void generateLeafNodeBases() - { - int var1 = 0; - int var2 = this.leafNodes.length; - - for (int[] var3 = new int[] {this.basePos[0], this.basePos[1], this.basePos[2]}; var1 < var2; ++var1) - { - int[] var4 = this.leafNodes[var1]; - int[] var5 = new int[] {var4[0], var4[1], var4[2]}; - var3[1] = var4[3]; - int var6 = var3[1] - this.basePos[1]; - - if (this.leafNodeNeedsBase(var6)) - { - this.placeBlockLine(var3, var5, Blocks.logs3.get().blockID); - } - } - } - - /** - * Checks a line of blocks in the world from the first coordinate to triplet to the second, returning the distance - * (in blocks) before a non-air, non-leaf block is encountered and/or the end is encountered. - */ - int checkBlockLine(int[] par1ArrayOfInteger, int[] par2ArrayOfInteger) - { - int[] var3 = new int[] {0, 0, 0}; - byte var4 = 0; - byte var5; - - for (var5 = 0; var4 < 3; ++var4) - { - var3[var4] = par2ArrayOfInteger[var4] - par1ArrayOfInteger[var4]; - - if (Math.abs(var3[var4]) > Math.abs(var3[var5])) - { - var5 = var4; - } - } - - if (var3[var5] == 0) - { - return -1; - } - else - { - byte var6 = otherCoordPairs[var5]; - byte var7 = otherCoordPairs[var5 + 3]; - byte var8; - - if (var3[var5] > 0) - { - var8 = 1; - } - else - { - var8 = -1; - } - - double var9 = (double)var3[var6] / (double)var3[var5]; - double var11 = (double)var3[var7] / (double)var3[var5]; - int[] var13 = new int[] {0, 0, 0}; - int var14 = 0; - int var15; - - for (var15 = var3[var5] + var8; var14 != var15; var14 += var8) - { - var13[var5] = par1ArrayOfInteger[var5] + var14; - var13[var6] = MathHelper.floor_double((double)par1ArrayOfInteger[var6] + (double)var14 * var9); - var13[var7] = MathHelper.floor_double((double)par1ArrayOfInteger[var7] + (double)var14 * var11); - int var16 = this.worldObj.getBlockId(var13[0], var13[1], var13[2]); - - if (var16 != 0 && var16 != Block.leaves.blockID) - { - break; - } - } - - return var14 == var15 ? -1 : Math.abs(var14); - } - } - - /** - * Returns a boolean indicating whether or not the current location for the tree, spanning basePos to to the height - * limit, is valid. - */ - boolean validTreeLocation() - { - int[] var1 = new int[] {this.basePos[0], this.basePos[1], this.basePos[2]}; - int[] var2 = new int[] {this.basePos[0], this.basePos[1] + this.heightLimit - 1, this.basePos[2]}; - int var3 = this.worldObj.getBlockId(this.basePos[0], this.basePos[1] - 1, this.basePos[2]); - - if (var3 != 2 && var3 != 3 && var3 != Blocks.driedDirt.get().blockID && var3 != Blocks.mud.get().blockID) - { - return false; - } - else - { - int var4 = this.checkBlockLine(var1, var2); - - if (var4 == -1) - { - return true; - } - else if (var4 < 6) - { - return false; - } - else - { - this.heightLimit = var4; - return true; - } - } - } - - /** - * Rescales the generator settings, only used in WorldGenBigTree - */ - public void setScale(double par1, double par3, double par5) - { - this.heightLimitLimit = (int)(par1 * 12.0D); - - if (par1 > 0.5D) - { - this.leafDistanceLimit = 5; - } - - this.scaleWidth = par3; - this.leafDensity = par5; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - this.worldObj = par1World; - long var6 = par2Random.nextLong(); - this.rand.setSeed(var6); - this.basePos[0] = par3; - this.basePos[1] = par4; - this.basePos[2] = par5; - - if (this.heightLimit == 0) - { - this.heightLimit = 12 + par2Random.nextInt(5); - } - - if (!this.validTreeLocation()) - { - return false; - } - else - { - this.generateLeafNodeList(); - this.generateLeaves(); - this.generateTrunk(); - this.generateLeafNodeBases(); - return true; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenDeadTree2.java b/src/minecraft/biomesoplenty/worldgen/WorldGenDeadTree2.java deleted file mode 100644 index 38f604f3a..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenDeadTree2.java +++ /dev/null @@ -1,124 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenDeadTree2 extends WorldGenerator -{ - public WorldGenDeadTree2(boolean par1) - { - super(par1); - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(3) + 5; - boolean var7 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 256) - { - int var8; - int var10; - int var11; - int var12; - - for (var8 = par4; var8 <= par4 + 1 + var6; ++var8) - { - byte var9 = 1; - - if (var8 == par4) - { - var9 = 0; - } - - if (var8 >= par4 + 1 + var6 - 2) - { - var9 = 2; - } - - for (var10 = par3 - var9; var10 <= par3 + var9 && var7; ++var10) - { - for (var11 = par5 - var9; var11 <= par5 + var9 && var7; ++var11) - { - if (var8 >= 0 && var8 < 256) - { - var12 = par1World.getBlockId(var10, var8, var11); - - if (var12 != 0 && var12 != Blocks.leaves1.get().blockID) - { - var7 = false; - } - } - else - { - var7 = false; - } - } - } - } - - if (!var7) - { - return false; - } - else - { - var8 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var8 == Block.grass.blockID || var8 == Block.dirt.blockID) && par4 < 256 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - int var16; - - for (var16 = par4 - 3 + var6; var16 <= par4 + var6; ++var16) - { - var10 = var16 - (par4 + var6); - var11 = 1 - var10 / 2; - - for (var12 = par3 - var11; var12 <= par3 + var11; ++var12) - { - int var13 = var12 - par3; - - for (int var14 = par5 - var11; var14 <= par5 + var11; ++var14) - { - int var15 = var14 - par5; - - if ((Math.abs(var13) != var11 || Math.abs(var15) != var11 || par2Random.nextInt(2) != 0 && var10 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var12, var16, var14)]) - { - this.setBlockAndMetadata(par1World, var12, var16, var14, Blocks.leaves1.get().blockID, 4); - } - } - } - } - - for (var16 = 0; var16 < var6; ++var16) - { - var10 = par1World.getBlockId(par3, par4 + var16, par5); - - if (var10 == 0 || var10 == Blocks.leaves1.get().blockID) - { - this.setBlockAndMetadata(par1World, par3, par4 + var16, par5, Block.wood.blockID, 0); - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenDeadTree3.java b/src/minecraft/biomesoplenty/worldgen/WorldGenDeadTree3.java deleted file mode 100644 index 93c88b677..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenDeadTree3.java +++ /dev/null @@ -1,518 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenDeadTree3 extends WorldGenerator -{ - /** - * Contains three sets of two values that provide complimentary indices for a given 'major' index - 1 and 2 for 0, 0 - * and 2 for 1, and 0 and 1 for 2. - */ - static final byte[] otherCoordPairs = new byte[] {(byte)2, (byte)0, (byte)0, (byte)1, (byte)2, (byte)1}; - - /** random seed for GenBigTree */ - Random rand = new Random(); - - /** Reference to the World object. */ - World worldObj; - int[] basePos = new int[] {0, 0, 0}; - int heightLimit = 0; - int height; - double heightAttenuation = 0.618D; - double branchDensity = 1.0D; - double branchSlope = 0.381D; - double scaleWidth = 1.0D; - double leafDensity = 1.0D; - - /** - * Currently always 1, can be set to 2 in the class constructor to generate a double-sized tree trunk for big trees. - */ - int trunkSize = 1; - - /** - * Sets the limit of the random value used to initialize the height limit. - */ - int heightLimitLimit = 12; - - /** - * Sets the distance limit for how far away the generator will populate leaves from the base leaf node. - */ - int leafDistanceLimit = 4; - - /** Contains a list of a points at which to generate groups of leaves. */ - int[][] leafNodes; - - public WorldGenDeadTree3(boolean par1) - { - super(par1); - } - - /** - * Generates a list of leaf nodes for the tree, to be populated by generateLeaves. - */ - void generateLeafNodeList() - { - this.height = (int)((double)this.heightLimit * this.heightAttenuation); - - if (this.height >= this.heightLimit) - { - this.height = this.heightLimit - 1; - } - - int var1 = (int)(1.382D + Math.pow(this.leafDensity * (double)this.heightLimit / 13.0D, 2.0D)); - - if (var1 < 1) - { - var1 = 1; - } - - int[][] var2 = new int[var1 * this.heightLimit][4]; - int var3 = this.basePos[1] + this.heightLimit - this.leafDistanceLimit; - int var4 = 1; - int var5 = this.basePos[1] + this.height; - int var6 = var3 - this.basePos[1]; - var2[0][0] = this.basePos[0]; - var2[0][1] = var3; - var2[0][2] = this.basePos[2]; - var2[0][3] = var5; - --var3; - - while (var6 >= 0) - { - int var7 = 0; - float var8 = this.layerSize(var6); - - if (var8 < 0.0F) - { - --var3; - --var6; - } - else - { - for (double var9 = 0.5D; var7 < var1; ++var7) - { - double var11 = this.scaleWidth * (double)var8 * ((double)this.rand.nextFloat() + 0.328D); - double var13 = (double)this.rand.nextFloat() * 2.0D * Math.PI; - int var15 = MathHelper.floor_double(var11 * Math.sin(var13) + (double)this.basePos[0] + var9); - int var16 = MathHelper.floor_double(var11 * Math.cos(var13) + (double)this.basePos[2] + var9); - int[] var17 = new int[] {var15, var3, var16}; - int[] var18 = new int[] {var15, var3 + this.leafDistanceLimit, var16}; - - if (this.checkBlockLine(var17, var18) == -1) - { - int[] var19 = new int[] {this.basePos[0], this.basePos[1], this.basePos[2]}; - double var20 = Math.sqrt(Math.pow((double)Math.abs(this.basePos[0] - var17[0]), 2.0D) + Math.pow((double)Math.abs(this.basePos[2] - var17[2]), 2.0D)); - double var22 = var20 * this.branchSlope; - - if ((double)var17[1] - var22 > (double)var5) - { - var19[1] = var5; - } - else - { - var19[1] = (int)((double)var17[1] - var22); - } - - if (this.checkBlockLine(var19, var17) == -1) - { - var2[var4][0] = var15; - var2[var4][1] = var3; - var2[var4][2] = var16; - var2[var4][3] = var19[1]; - ++var4; - } - } - } - - --var3; - --var6; - } - } - - this.leafNodes = new int[var4][4]; - System.arraycopy(var2, 0, this.leafNodes, 0, var4); - } - - void genTreeLayer(int par1, int par2, int par3, float par4, byte par5, int par6) - { - int var7 = (int)((double)par4 + 0.618D); - byte var8 = otherCoordPairs[par5]; - byte var9 = otherCoordPairs[par5 + 3]; - int[] var10 = new int[] {par1, par2, par3}; - int[] var11 = new int[] {0, 0, 0}; - int var12 = -var7; - int var13 = -var7; - - for (var11[par5] = var10[par5]; var12 <= var7; ++var12) - { - var11[var8] = var10[var8] + var12; - var13 = -var7; - - while (var13 <= var7) - { - double var15 = Math.pow((double)Math.abs(var12) + 0.5D, 2.0D) + Math.pow((double)Math.abs(var13) + 0.5D, 2.0D); - - if (var15 > (double)(par4 * par4)) - { - ++var13; - } - else - { - var11[var9] = var10[var9] + var13; - int var14 = this.worldObj.getBlockId(var11[0], var11[1], var11[2]); - - if (var14 != 0 && var14 != Block.leaves.blockID) - { - ++var13; - } - else - { - this.setBlockAndMetadata(this.worldObj, var11[0], var11[1], var11[2], par6, 0); - ++var13; - } - } - } - } - } - - /** - * Gets the rough size of a layer of the tree. - */ - float layerSize(int par1) - { - if ((double)par1 < (double)((float)this.heightLimit) * 0.3D) - { - return -1.618F; - } - else - { - float var2 = (float)this.heightLimit / 2.0F; - float var3 = (float)this.heightLimit / 2.0F - (float)par1; - float var4; - - if (var3 == 0.0F) - { - var4 = var2; - } - else if (Math.abs(var3) >= var2) - { - var4 = 0.0F; - } - else - { - var4 = (float)Math.sqrt(Math.pow((double)Math.abs(var2), 2.0D) - Math.pow((double)Math.abs(var3), 2.0D)); - } - - var4 *= 0.5F; - return var4; - } - } - - float leafSize(int par1) - { - return par1 >= 0 && par1 < this.leafDistanceLimit ? (par1 != 0 && par1 != this.leafDistanceLimit - 1 ? 3.0F : 2.0F) : -1.0F; - } - - /** - * Generates the leaves surrounding an individual entry in the leafNodes list. - */ - void generateLeafNode(int par1, int par2, int par3) - { - int var4 = par2; - - for (int var5 = par2 + this.leafDistanceLimit; var4 < var5; ++var4) - { - float var6 = this.leafSize(var4 - par2); - //this.genTreeLayer(par1, var4, par3, var6, (byte)1, Block.leaves.blockID); - } - } - - /** - * Places a line of the specified block ID into the world from the first coordinate triplet to the second. - */ - void placeBlockLine(int[] par1ArrayOfInteger, int[] par2ArrayOfInteger, int par3) - { - int[] var4 = new int[] {0, 0, 0}; - byte var5 = 0; - byte var6; - - for (var6 = 0; var5 < 3; ++var5) - { - var4[var5] = par2ArrayOfInteger[var5] - par1ArrayOfInteger[var5]; - - if (Math.abs(var4[var5]) > Math.abs(var4[var6])) - { - var6 = var5; - } - } - - if (var4[var6] != 0) - { - byte var7 = otherCoordPairs[var6]; - byte var8 = otherCoordPairs[var6 + 3]; - byte var9; - - if (var4[var6] > 0) - { - var9 = 1; - } - else - { - var9 = -1; - } - - double var10 = (double)var4[var7] / (double)var4[var6]; - double var12 = (double)var4[var8] / (double)var4[var6]; - int[] var14 = new int[] {0, 0, 0}; - int var15 = 0; - - for (int var16 = var4[var6] + var9; var15 != var16; var15 += var9) - { - var14[var6] = MathHelper.floor_double((double)(par1ArrayOfInteger[var6] + var15) + 0.5D); - var14[var7] = MathHelper.floor_double((double)par1ArrayOfInteger[var7] + (double)var15 * var10 + 0.5D); - var14[var8] = MathHelper.floor_double((double)par1ArrayOfInteger[var8] + (double)var15 * var12 + 0.5D); - byte var17 = 2; - int var18 = Math.abs(var14[0] - par1ArrayOfInteger[0]); - int var19 = Math.abs(var14[2] - par1ArrayOfInteger[2]); - int var20 = Math.max(var18, var19); - - if (var20 > 0) - { - if (var18 == var20) - { - var17 = 6; - } - else if (var19 == var20) - { - var17 = 10; - } - } - - this.setBlockAndMetadata(this.worldObj, var14[0], var14[1], var14[2], par3, var17); - } - } - } - - /** - * Generates the leaf portion of the tree as specified by the leafNodes list. - */ - void generateLeaves() - { - int var1 = 0; - - for (int var2 = this.leafNodes.length; var1 < var2; ++var1) - { - int var3 = this.leafNodes[var1][0]; - int var4 = this.leafNodes[var1][1]; - int var5 = this.leafNodes[var1][2]; - this.generateLeafNode(var3, var4, var5); - } - } - - /** - * Indicates whether or not a leaf node requires additional wood to be added to preserve integrity. - */ - boolean leafNodeNeedsBase(int par1) - { - return (double)par1 >= (double)this.heightLimit * 0.2D; - } - - /** - * Places the trunk for the big tree that is being generated. Able to generate double-sized trunks by changing a - * field that is always 1 to 2. - */ - void generateTrunk() - { - int var1 = this.basePos[0]; - int var2 = this.basePos[1]; - int var3 = this.basePos[1] + this.height; - int var4 = this.basePos[2]; - int[] var5 = new int[] {var1, var2, var4}; - int[] var6 = new int[] {var1, var3, var4}; - this.placeBlockLine(var5, var6, Blocks.logs3.get().blockID); - - if (this.trunkSize == 2) - { - ++var5[0]; - ++var6[0]; - this.placeBlockLine(var5, var6, Blocks.logs3.get().blockID); - ++var5[2]; - ++var6[2]; - this.placeBlockLine(var5, var6, Blocks.logs3.get().blockID); - var5[0] += -1; - var6[0] += -1; - this.placeBlockLine(var5, var6, Blocks.logs3.get().blockID); - } - } - - /** - * Generates additional wood blocks to fill out the bases of different leaf nodes that would otherwise degrade. - */ - void generateLeafNodeBases() - { - int var1 = 0; - int var2 = this.leafNodes.length; - - for (int[] var3 = new int[] {this.basePos[0], this.basePos[1], this.basePos[2]}; var1 < var2; ++var1) - { - int[] var4 = this.leafNodes[var1]; - int[] var5 = new int[] {var4[0], var4[1], var4[2]}; - var3[1] = var4[3]; - int var6 = var3[1] - this.basePos[1]; - - if (this.leafNodeNeedsBase(var6)) - { - this.placeBlockLine(var3, var5, Blocks.logs3.get().blockID); - } - } - } - - /** - * Checks a line of blocks in the world from the first coordinate to triplet to the second, returning the distance - * (in blocks) before a non-air, non-leaf block is encountered and/or the end is encountered. - */ - int checkBlockLine(int[] par1ArrayOfInteger, int[] par2ArrayOfInteger) - { - int[] var3 = new int[] {0, 0, 0}; - byte var4 = 0; - byte var5; - - for (var5 = 0; var4 < 3; ++var4) - { - var3[var4] = par2ArrayOfInteger[var4] - par1ArrayOfInteger[var4]; - - if (Math.abs(var3[var4]) > Math.abs(var3[var5])) - { - var5 = var4; - } - } - - if (var3[var5] == 0) - { - return -1; - } - else - { - byte var6 = otherCoordPairs[var5]; - byte var7 = otherCoordPairs[var5 + 3]; - byte var8; - - if (var3[var5] > 0) - { - var8 = 1; - } - else - { - var8 = -1; - } - - double var9 = (double)var3[var6] / (double)var3[var5]; - double var11 = (double)var3[var7] / (double)var3[var5]; - int[] var13 = new int[] {0, 0, 0}; - int var14 = 0; - int var15; - - for (var15 = var3[var5] + var8; var14 != var15; var14 += var8) - { - var13[var5] = par1ArrayOfInteger[var5] + var14; - var13[var6] = MathHelper.floor_double((double)par1ArrayOfInteger[var6] + (double)var14 * var9); - var13[var7] = MathHelper.floor_double((double)par1ArrayOfInteger[var7] + (double)var14 * var11); - int var16 = this.worldObj.getBlockId(var13[0], var13[1], var13[2]); - - if (var16 != 0 && var16 != Block.leaves.blockID) - { - break; - } - } - - return var14 == var15 ? -1 : Math.abs(var14); - } - } - - /** - * Returns a boolean indicating whether or not the current location for the tree, spanning basePos to to the height - * limit, is valid. - */ - boolean validTreeLocation() - { - int[] var1 = new int[] {this.basePos[0], this.basePos[1], this.basePos[2]}; - int[] var2 = new int[] {this.basePos[0], this.basePos[1] + this.heightLimit - 1, this.basePos[2]}; - int var3 = this.worldObj.getBlockId(this.basePos[0], this.basePos[1] - 1, this.basePos[2]); - - if (var3 != 2 && var3 != 3 && var3 != Blocks.holyGrass.get().blockID && var3 != Blocks.ash.get().blockID) - { - return false; - } - else - { - int var4 = this.checkBlockLine(var1, var2); - - if (var4 == -1) - { - return true; - } - else if (var4 < 6) - { - return false; - } - else - { - this.heightLimit = var4; - return true; - } - } - } - - /** - * Rescales the generator settings, only used in WorldGenBigTree - */ - public void setScale(double par1, double par3, double par5) - { - this.heightLimitLimit = (int)(par1 * 12.0D); - - if (par1 > 0.5D) - { - this.leafDistanceLimit = 5; - } - - this.scaleWidth = par3; - this.leafDensity = par5; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - this.worldObj = par1World; - long var6 = par2Random.nextLong(); - this.rand.setSeed(var6); - this.basePos[0] = par3; - this.basePos[1] = par4; - this.basePos[2] = par5; - - if (this.heightLimit == 0) - { - this.heightLimit = 12 + par2Random.nextInt(5); - } - - if (!this.validTreeLocation()) - { - return false; - } - else - { - this.generateLeafNodeList(); - this.generateLeaves(); - this.generateTrunk(); - this.generateLeafNodeBases(); - return true; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenDeadlands.java b/src/minecraft/biomesoplenty/worldgen/WorldGenDeadlands.java deleted file mode 100644 index a94035141..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenDeadlands.java +++ /dev/null @@ -1,30 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenDeadlands extends WorldGenerator -{ - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - for (int var6 = 0; var6 < 64; ++var6) - { - int var7 = par3 + par2Random.nextInt(8) - par2Random.nextInt(8); - int var8 = par4 + par2Random.nextInt(4) - par2Random.nextInt(4); - int var9 = par5 + par2Random.nextInt(8) - par2Random.nextInt(8); - - if (par1World.isAirBlock(var7, var8, var9) && par1World.getBlockId(var7, var8 - 1, var9) == Blocks.ash.get().blockID) - { - par1World.setBlock(var7, var8, var9, Block.fire.blockID); - } - } - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenDeciduous.java b/src/minecraft/biomesoplenty/worldgen/WorldGenDeciduous.java deleted file mode 100644 index 8c5c29fc4..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenDeciduous.java +++ /dev/null @@ -1,276 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.util.Direction; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenDeciduous extends WorldGenerator -{ - /** The minimum height of a generated tree. */ - private final int minTreeHeight; - - /** True if this tree should grow Vines. */ - private final boolean vinesGrow; - - /** The metadata value of the wood to use in tree generation. */ - private final int metaWood; - - /** The metadata value of the leaves to use in tree generation. */ - private final int metaLeaves; - - public WorldGenDeciduous(boolean par1) - { - this(par1, 10, 0, 0, false); - } - - public WorldGenDeciduous(boolean par1, int par2, int par3, int par4, boolean par5) - { - super(par1); - this.minTreeHeight = par2; - this.metaWood = par3; - this.metaLeaves = par4; - this.vinesGrow = par5; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(15) + this.minTreeHeight; - boolean var7 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 256) - { - int var8; - byte var9; - int var11; - int var12; - - for (var8 = par4; var8 <= par4 + 1 + var6; ++var8) - { - var9 = 1; - - if (var8 == par4) - { - var9 = 0; - } - - if (var8 >= par4 + 1 + var6 - 2) - { - var9 = 2; - } - - for (int var10 = par3 - var9; var10 <= par3 + var9 && var7; ++var10) - { - for (var11 = par5 - var9; var11 <= par5 + var9 && var7; ++var11) - { - if (var8 >= 0 && var8 < 256) - { - var12 = par1World.getBlockId(var10, var8, var11); - - if (var12 != 0 && var12 != Block.leaves.blockID && var12 != Block.grass.blockID && var12 != Block.dirt.blockID && var12 != Block.wood.blockID) - { - var7 = false; - } - } - else - { - var7 = false; - } - } - } - } - - if (!var7) - { - return false; - } - else - { - var8 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var8 == Block.grass.blockID || var8 == Block.dirt.blockID) && par4 < 256 - var6 - 1) - { - var9 = 3; - byte var18 = 0; - int var13; - int var14; - int var15; - - for (var11 = par4 - var9 + var6; var11 <= par4 + var6; ++var11) - { - var12 = var11 - (par4 + var6); - var13 = var18 + 1 - var12 / 3; - - for (var14 = par3 - var13; var14 <= par3 + var13; ++var14) - { - var15 = var14 - par3; - - for (int var16 = par5 - var13; var16 <= par5 + var13; ++var16) - { - int var17 = var16 - par5; - - if ((Math.abs(var15) != var13 || Math.abs(var17) != var13 || par2Random.nextInt(2) != 0 && var12 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var14, var11, var16)]) - { - this.setBlockAndMetadata(par1World, var14, var11, var16, Block.leaves.blockID, 0); - } - } - } - } - - for (var11 = 0; var11 < var6; ++var11) - { - var12 = par1World.getBlockId(par3, par4 + var11, par5); - - if (var12 == 0 || var12 == Block.leaves.blockID) - { - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5, Block.wood.blockID, 0); - - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var6 - 4), par5, Block.leaves.blockID, 0); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var6 - 4), par5, Block.leaves.blockID, 0); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 4), par5 - 1, Block.leaves.blockID, 0); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 4), par5 + 1, Block.leaves.blockID, 0); - - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var6 - 5), par5 + 1, Block.leaves.blockID, 0); - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var6 - 5), par5 - 1, Block.leaves.blockID, 0); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var6 - 5), par5 + 1, Block.leaves.blockID, 0); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var6 - 5), par5 - 1, Block.leaves.blockID, 0); - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var6 - 5), par5, Block.leaves.blockID, 0); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var6 - 5), par5, Block.leaves.blockID, 0); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 5), par5 - 1, Block.leaves.blockID, 0); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 5), par5 + 1, Block.leaves.blockID, 0); - - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var6 - 6), par5, Block.leaves.blockID, 0); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var6 - 6), par5, Block.leaves.blockID, 0); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 6), par5 - 1, Block.leaves.blockID, 0); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 6), par5 + 1, Block.leaves.blockID, 0); - - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var6 - 7), par5 + 1, Block.leaves.blockID, 0); - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var6 - 7), par5 - 1, Block.leaves.blockID, 0); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var6 - 7), par5 + 1, Block.leaves.blockID, 0); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var6 - 7), par5 - 1, Block.leaves.blockID, 0); - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var6 - 7), par5, Block.leaves.blockID, 0); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var6 - 7), par5, Block.leaves.blockID, 0); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 7), par5 - 1, Block.leaves.blockID, 0); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 7), par5 + 1, Block.leaves.blockID, 0); - - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var6 - 8), par5, Block.leaves.blockID, 0); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var6 - 8), par5, Block.leaves.blockID, 0); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 8), par5 - 1, Block.leaves.blockID, 0); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 8), par5 + 1, Block.leaves.blockID, 0); - - if (this.vinesGrow && var11 > 0) - { - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3 - 1, par4 + var11, par5)) - { - this.setBlockAndMetadata(par1World, par3 - 1, par4 + var11, par5, Block.vine.blockID, 8); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3 + 1, par4 + var11, par5)) - { - this.setBlockAndMetadata(par1World, par3 + 1, par4 + var11, par5, Block.vine.blockID, 2); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3, par4 + var11, par5 - 1)) - { - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5 - 1, Block.vine.blockID, 1); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3, par4 + var11, par5 + 1)) - { - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5 + 1, Block.vine.blockID, 4); - } - } - } - } - - if (this.vinesGrow) - { - for (var11 = par4 - 3 + var6; var11 <= par4 + var6; ++var11) - { - var12 = var11 - (par4 + var6); - var13 = 2 - var12 / 2; - - for (var14 = par3 - var13; var14 <= par3 + var13; ++var14) - { - for (var15 = par5 - var13; var15 <= par5 + var13; ++var15) - { - if (par1World.getBlockId(var14, var11, var15) == Block.leaves.blockID) - { - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14 - 1, var11, var15) == 0) - { - this.growVines(par1World, var14 - 1, var11, var15, 8); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14 + 1, var11, var15) == 0) - { - this.growVines(par1World, var14 + 1, var11, var15, 2); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14, var11, var15 - 1) == 0) - { - this.growVines(par1World, var14, var11, var15 - 1, 1); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14, var11, var15 + 1) == 0) - { - this.growVines(par1World, var14, var11, var15 + 1, 4); - } - } - } - } - } - - if (par2Random.nextInt(5) == 0 && var6 > 5) - { - for (var11 = 0; var11 < 2; ++var11) - { - for (var12 = 0; var12 < 4; ++var12) - { - if (par2Random.nextInt(4 - var11) == 0) - { - var13 = par2Random.nextInt(3); - this.setBlockAndMetadata(par1World, par3 + Direction.offsetX[Direction.rotateOpposite[var12]], par4 + var6 - 5 + var11, par5 + Direction.offsetZ[Direction.rotateOpposite[var12]], Block.cocoaPlant.blockID, var13 << 2 | var12); - } - } - } - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } - - /** - * Grows vines downward from the given block for a given length. Args: World, x, starty, z, vine-length - */ - private void growVines(World par1World, int par2, int par3, int par4, int par5) - { - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - int var6 = 4; - - while (true) - { - --par3; - - if (par1World.getBlockId(par2, par3, par4) != 0 || var6 <= 0) - { - return; - } - - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - --var6; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenDesertCactus.java b/src/minecraft/biomesoplenty/worldgen/WorldGenDesertCactus.java deleted file mode 100644 index 3d6e611dd..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenDesertCactus.java +++ /dev/null @@ -1,51 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenDesertCactus extends WorldGenerator -{ - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - for (int var6 = 0; var6 < 10; ++var6) - { - int var7 = par3 + par2Random.nextInt(8) - par2Random.nextInt(8); - int var8 = par4 + par2Random.nextInt(4) - par2Random.nextInt(4); - int var9 = par5 + par2Random.nextInt(8) - par2Random.nextInt(8); - - if (par1World.isAirBlock(var7, var8, var9)) - { - if (!par1World.isAirBlock(var7 - 1, var8 - 1, var9)) - { - if (!par1World.isAirBlock(var7 + 1, var8 - 1, var9)) - { - if (!par1World.isAirBlock(var7, var8 - 1, var9 - 1)) - { - if (!par1World.isAirBlock(var7, var8 - 1, var9 + 1)) - { - int var10 = 1 + par2Random.nextInt(par2Random.nextInt(2) + 2); - - for (int var11 = 0; var11 < var10; ++var11) - { - if (Blocks.plants.get().canBlockStay(par1World, var7, var8 + var11, var9)) - { - par1World.setBlock(var7, var8 - 1, var9, Block.sand.blockID); - par1World.setBlock(var7, var8 + var11, var9, Block.cactus.blockID); - } - } - } - } - } - } - } - } - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenDriedDirt.java b/src/minecraft/biomesoplenty/worldgen/WorldGenDriedDirt.java deleted file mode 100644 index df26ab94e..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenDriedDirt.java +++ /dev/null @@ -1,78 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenDriedDirt extends WorldGenerator -{ - /** The block ID of the ore to be placed using this generator. */ - private int minableBlockId; - - /** The number of blocks to generate. */ - private int numberOfBlocks; - - public WorldGenDriedDirt(int par1, int par2) - { - this.minableBlockId = par1; - this.numberOfBlocks = par2; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - float var6 = par2Random.nextFloat() * (float)Math.PI; - double var7 = (double)((float)(par3 + 8) + MathHelper.sin(var6) * (float)this.numberOfBlocks / 8.0F); - double var9 = (double)((float)(par3 + 8) - MathHelper.sin(var6) * (float)this.numberOfBlocks / 8.0F); - double var11 = (double)((float)(par5 + 8) + MathHelper.cos(var6) * (float)this.numberOfBlocks / 8.0F); - double var13 = (double)((float)(par5 + 8) - MathHelper.cos(var6) * (float)this.numberOfBlocks / 8.0F); - double var15 = (double)(par4 + par2Random.nextInt(3) - 2); - double var17 = (double)(par4 + par2Random.nextInt(3) - 2); - - for (int var19 = 0; var19 <= this.numberOfBlocks; ++var19) - { - double var20 = var7 + (var9 - var7) * (double)var19 / (double)this.numberOfBlocks; - double var22 = var15 + (var17 - var15) * (double)var19 / (double)this.numberOfBlocks; - double var24 = var11 + (var13 - var11) * (double)var19 / (double)this.numberOfBlocks; - double var26 = par2Random.nextDouble() * (double)this.numberOfBlocks / 16.0D; - double var28 = (double)(MathHelper.sin((float)var19 * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * var26 + 1.0D; - double var30 = (double)(MathHelper.sin((float)var19 * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * var26 + 1.0D; - int var32 = MathHelper.floor_double(var20 - var28 / 2.0D); - int var33 = MathHelper.floor_double(var22 - var30 / 2.0D); - int var34 = MathHelper.floor_double(var24 - var28 / 2.0D); - int var35 = MathHelper.floor_double(var20 + var28 / 2.0D); - int var36 = MathHelper.floor_double(var22 + var30 / 2.0D); - int var37 = MathHelper.floor_double(var24 + var28 / 2.0D); - - for (int var38 = var32; var38 <= var35; ++var38) - { - double var39 = ((double)var38 + 0.5D - var20) / (var28 / 2.0D); - - if (var39 * var39 < 1.0D) - { - for (int var41 = var33; var41 <= var36; ++var41) - { - double var42 = ((double)var41 + 0.5D - var22) / (var30 / 2.0D); - - if (var39 * var39 + var42 * var42 < 1.0D) - { - for (int var44 = var34; var44 <= var37; ++var44) - { - double var45 = ((double)var44 + 0.5D - var24) / (var28 / 2.0D); - - if (var39 * var39 + var42 * var42 + var45 * var45 < 1.0D && par1World.getBlockId(var38, var41, var44) == Block.sandStone.blockID) - { - par1World.setBlock(var38, var41, var44, this.minableBlockId); - } - } - } - } - } - } - } - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenFen1.java b/src/minecraft/biomesoplenty/worldgen/WorldGenFen1.java deleted file mode 100644 index 6da72eb59..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenFen1.java +++ /dev/null @@ -1,131 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenFen1 extends WorldGenerator -{ - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(5) + 7; - int var7 = var6 - par2Random.nextInt(2) - 3; - int var8 = var6 - var7; - int var9 = 1 + par2Random.nextInt(var8 + 1); - boolean var10 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 128) - { - int var11; - int var13; - int var14; - int var15; - int var18; - - for (var11 = par4; var11 <= par4 + 1 + var6 && var10; ++var11) - { - boolean var12 = true; - - if (var11 - par4 < var7) - { - var18 = 0; - } - else - { - var18 = var9; - } - - for (var13 = par3 - var18; var13 <= par3 + var18 && var10; ++var13) - { - for (var14 = par5 - var18; var14 <= par5 + var18 && var10; ++var14) - { - if (var11 >= 0 && var11 < 128) - { - var15 = par1World.getBlockId(var13, var11, var14); - - Block block = Block.blocksList[var15]; - - if (var15 != 0 && (block == null || !block.isLeaves(par1World, var13, var11, var14))) - { - var10 = false; - } - } - else - { - var10 = false; - } - } - } - } - - if (!var10) - { - return false; - } - else - { - var11 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var11 == Block.grass.blockID || var11 == Block.dirt.blockID) && par4 < 128 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - var18 = 0; - - for (var13 = par4 + var6; var13 >= par4 + var7; --var13) - { - for (var14 = par3 - var18; var14 <= par3 + var18; ++var14) - { - var15 = var14 - par3; - - for (int var16 = par5 - var18; var16 <= par5 + var18; ++var16) - { - int var17 = var16 - par5; - - Block block = Block.blocksList[par1World.getBlockId(var14, var13, var16)]; - - if ((Math.abs(var15) != var18 || Math.abs(var17) != var18 || var18 <= 0) && - (block == null || block.canBeReplacedByLeaves(par1World, var14, var13, var16))) - { - this.setBlockAndMetadata(par1World, var14, var13, var16, Block.leaves.blockID, 0); - } - } - } - - if (var18 >= 1 && var13 == par4 + var7 + 1) - { - --var18; - } - else if (var18 < var9) - { - ++var18; - } - } - - for (var13 = 0; var13 < var6 - 1; ++var13) - { - var14 = par1World.getBlockId(par3, par4 + var13, par5); - - Block block = Block.blocksList[var14]; - - if (var14 == 0 || block == null || block.isLeaves(par1World, par3, par4 + var13, par5)) - { - this.setBlockAndMetadata(par1World, par3, par4 + var13, par5, Block.wood.blockID, 0); - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenFen2.java b/src/minecraft/biomesoplenty/worldgen/WorldGenFen2.java deleted file mode 100644 index 8102276ef..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenFen2.java +++ /dev/null @@ -1,147 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenFen2 extends WorldGenerator -{ - public WorldGenFen2(boolean par1) - { - super(par1); - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(12) + 10; - int var7 = 1 + par2Random.nextInt(4); - int var8 = var6 - var7; - int var9 = 2 + par2Random.nextInt(2); - boolean var10 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 256) - { - int var11; - int var13; - int var15; - int var21; - - for (var11 = par4; var11 <= par4 + 1 + var6 && var10; ++var11) - { - boolean var12 = true; - - if (var11 - par4 < var7) - { - var21 = 0; - } - else - { - var21 = var9; - } - - for (var13 = par3 - var21; var13 <= par3 + var21 && var10; ++var13) - { - for (int var14 = par5 - var21; var14 <= par5 + var21 && var10; ++var14) - { - if (var11 >= 0 && var11 < 256) - { - var15 = par1World.getBlockId(var13, var11, var14); - - if (var15 != 0 && var15 != Blocks.leaves1.get().blockID) - { - var10 = false; - } - } - else - { - var10 = false; - } - } - } - } - - if (!var10) - { - return false; - } - else - { - var11 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var11 == Block.grass.blockID || var11 == Block.dirt.blockID) && par4 < 256 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - var21 = par2Random.nextInt(2); - var13 = 1; - byte var22 = 0; - int var17; - int var16; - - for (var15 = 0; var15 <= var8; ++var15) - { - var16 = par4 + var6 - var15; - - for (var17 = par3 - var21; var17 <= par3 + var21; ++var17) - { - int var18 = var17 - par3; - - for (int var19 = par5 - var21; var19 <= par5 + var21; ++var19) - { - int var20 = var19 - par5; - - if ((Math.abs(var18) != var21 || Math.abs(var20) != var21 || var21 <= 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var17, var16, var19)]) - { - this.setBlockAndMetadata(par1World, var17, var16, var19, Blocks.leaves1.get().blockID, 4); - } - } - } - - if (var21 >= var13) - { - var21 = var22; - var22 = 1; - ++var13; - - if (var13 > var9) - { - var13 = var9; - } - } - else - { - ++var21; - } - } - - var15 = par2Random.nextInt(3); - - for (var16 = 0; var16 < var6 - var15; ++var16) - { - var17 = par1World.getBlockId(par3, par4 + var16, par5); - - if (var17 == 0 || var17 == Blocks.leaves1.get().blockID) - { - this.setBlockAndMetadata(par1World, par3, par4 + var16, par5, Block.wood.blockID, 0); - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenGiantFlowerRed.java b/src/minecraft/biomesoplenty/worldgen/WorldGenGiantFlowerRed.java deleted file mode 100644 index 8269f672a..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenGiantFlowerRed.java +++ /dev/null @@ -1,83 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenGiantFlowerRed extends WorldGenerator -{ - public boolean generate(World var1, Random var2, int var3, int var4, int var5) - { - while (var1.isAirBlock(var3, var4, var5) && var4 > 2) - { - --var4; - } - - int var6 = var1.getBlockId(var3, var4, var5); - - if (var6 != Block.grass.blockID) - { - return false; - } - else - { - for (int var7 = -2; var7 <= 2; ++var7) - { - for (int var8 = -2; var8 <= 2; ++var8) - { - if (var1.isAirBlock(var3 + var7, var4 - 1, var5 + var8) && var1.isAirBlock(var3 + var7, var4 - 2, var5 + var8)) - { - return false; - } - } - } - - var1.setBlock(var3, var4, var5, Block.dirt.blockID); - var1.setBlock(var3, var4 + 1, var5, Blocks.logs3.get().blockID, 3, 2); - var1.setBlock(var3, var4 + 2, var5, Blocks.logs3.get().blockID, 3, 2); - var1.setBlock(var3, var4 + 3, var5, Blocks.logs3.get().blockID, 3, 2); - var1.setBlock(var3, var4 + 4, var5, Blocks.logs3.get().blockID, 3, 2); - var1.setBlock(var3, var4 + 5, var5, Blocks.logs3.get().blockID, 3, 2); - - var1.setBlock(var3 - 1, var4 + 5, var5, Blocks.petals.get().blockID, 3, 2); - var1.setBlock(var3 + 1, var4 + 5, var5, Blocks.petals.get().blockID, 3, 2); - var1.setBlock(var3, var4 + 5, var5 - 1, Blocks.petals.get().blockID, 3, 2); - var1.setBlock(var3, var4 + 5, var5 + 1, Blocks.petals.get().blockID, 3, 2); - - var1.setBlock(var3, var4 + 6, var5, Blocks.petals.get().blockID, 3, 2); - var1.setBlock(var3 - 1, var4 + 6, var5, Blocks.petals.get().blockID, 3, 2); - var1.setBlock(var3 + 1, var4 + 6, var5, Blocks.petals.get().blockID, 3, 2); - var1.setBlock(var3, var4 + 6, var5 - 1, Blocks.petals.get().blockID, 3, 2); - var1.setBlock(var3, var4 + 6, var5 + 1, Blocks.petals.get().blockID, 3, 2); - var1.setBlock(var3 - 2, var4 + 6, var5, Blocks.petals.get().blockID, 3, 2); - var1.setBlock(var3 + 2, var4 + 6, var5, Blocks.petals.get().blockID, 3, 2); - var1.setBlock(var3, var4 + 6, var5 - 2, Blocks.petals.get().blockID, 3, 2); - var1.setBlock(var3, var4 + 6, var5 + 2, Blocks.petals.get().blockID, 3, 2); - var1.setBlock(var3 - 1, var4 + 6, var5 - 1, Blocks.petals.get().blockID, 3, 2); - var1.setBlock(var3 - 1, var4 + 6, var5 + 1, Blocks.petals.get().blockID, 3, 2); - var1.setBlock(var3 + 1, var4 + 6, var5 - 1, Blocks.petals.get().blockID, 3, 2); - var1.setBlock(var3 + 1, var4 + 6, var5 + 1, Blocks.petals.get().blockID, 3, 2); - var1.setBlock(var3 - 2, var4 + 6, var5 - 2, Blocks.petals.get().blockID, 3, 2); - var1.setBlock(var3 - 2, var4 + 6, var5 + 2, Blocks.petals.get().blockID, 3, 2); - var1.setBlock(var3 + 2, var4 + 6, var5 - 2, Blocks.petals.get().blockID, 3, 2); - var1.setBlock(var3 + 2, var4 + 6, var5 + 2, Blocks.petals.get().blockID, 3, 2); - - var1.setBlock(var3 - 1, var4 + 7, var5 - 2, Blocks.petals.get().blockID, 3, 2); - var1.setBlock(var3 - 1, var4 + 7, var5 + 2, Blocks.petals.get().blockID, 3, 2); - var1.setBlock(var3 + 1, var4 + 7, var5 - 2, Blocks.petals.get().blockID, 3, 2); - var1.setBlock(var3 + 1, var4 + 7, var5 + 2, Blocks.petals.get().blockID, 3, 2); - var1.setBlock(var3 - 2, var4 + 7, var5 - 1, Blocks.petals.get().blockID, 3, 2); - var1.setBlock(var3 - 2, var4 + 7, var5 + 1, Blocks.petals.get().blockID, 3, 2); - var1.setBlock(var3 + 2, var4 + 7, var5 - 1, Blocks.petals.get().blockID, 3, 2); - var1.setBlock(var3 + 2, var4 + 7, var5 + 1, Blocks.petals.get().blockID, 3, 2); - - return true; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenGiantFlowerYellow.java b/src/minecraft/biomesoplenty/worldgen/WorldGenGiantFlowerYellow.java deleted file mode 100644 index df76c7a3a..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenGiantFlowerYellow.java +++ /dev/null @@ -1,67 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenGiantFlowerYellow extends WorldGenerator -{ - public boolean generate(World var1, Random var2, int var3, int var4, int var5) - { - while (var1.isAirBlock(var3, var4, var5) && var4 > 2) - { - --var4; - } - - int var6 = var1.getBlockId(var3, var4, var5); - - if (var6 != Block.grass.blockID) - { - return false; - } - else - { - for (int var7 = -2; var7 <= 2; ++var7) - { - for (int var8 = -2; var8 <= 2; ++var8) - { - if (var1.isAirBlock(var3 + var7, var4 - 1, var5 + var8) && var1.isAirBlock(var3 + var7, var4 - 2, var5 + var8)) - { - return false; - } - } - } - - var1.setBlock(var3, var4, var5, Block.dirt.blockID); - var1.setBlock(var3, var4 + 1, var5, Blocks.logs3.get().blockID, 3, 2); - var1.setBlock(var3, var4 + 2, var5, Blocks.logs3.get().blockID, 3, 2); - - var1.setBlock(var3, var4 + 3, var5, Blocks.petals.get().blockID, 1, 2); - var1.setBlock(var3 - 1, var4 + 3, var5, Blocks.petals.get().blockID, 1, 2); - var1.setBlock(var3 + 1, var4 + 3, var5, Blocks.petals.get().blockID, 1, 2); - var1.setBlock(var3, var4 + 3, var5 - 1, Blocks.petals.get().blockID, 1, 2); - var1.setBlock(var3, var4 + 3, var5 + 1, Blocks.petals.get().blockID, 1, 2); - var1.setBlock(var3 - 1, var4 + 3, var5 - 1, Blocks.petals.get().blockID, 1, 2); - var1.setBlock(var3 - 1, var4 + 3, var5 + 1, Blocks.petals.get().blockID, 1, 2); - var1.setBlock(var3 + 1, var4 + 3, var5 - 1, Blocks.petals.get().blockID, 1, 2); - var1.setBlock(var3 + 1, var4 + 3, var5 + 1, Blocks.petals.get().blockID, 1, 2); - - var1.setBlock(var3 - 1, var4 + 3, var5 - 2, Blocks.petals.get().blockID, 1, 2); - var1.setBlock(var3 - 1, var4 + 3, var5 + 2, Blocks.petals.get().blockID, 1, 2); - var1.setBlock(var3 + 1, var4 + 3, var5 - 2, Blocks.petals.get().blockID, 1, 2); - var1.setBlock(var3 + 1, var4 + 3, var5 + 2, Blocks.petals.get().blockID, 1, 2); - - var1.setBlock(var3 - 2, var4 + 3, var5 - 1, Blocks.petals.get().blockID, 1, 2); - var1.setBlock(var3 - 2, var4 + 3, var5 + 1, Blocks.petals.get().blockID, 1, 2); - var1.setBlock(var3 + 2, var4 + 3, var5 - 1, Blocks.petals.get().blockID, 1, 2); - var1.setBlock(var3 + 2, var4 + 3, var5 + 1, Blocks.petals.get().blockID, 1, 2); - - return true; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenGravel.java b/src/minecraft/biomesoplenty/worldgen/WorldGenGravel.java deleted file mode 100644 index 427347574..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenGravel.java +++ /dev/null @@ -1,60 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenGravel extends WorldGenerator -{ - /** Stores ID for WorldGenSand */ - private int sandID; - - /** The maximum radius used when generating a patch of blocks. */ - private int radius; - - public WorldGenGravel(int par1, int par2) - { - this.sandID = par2; - this.radius = par1; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - if (par1World.getBlockMaterial(par3, par4, par5) != Material.water) - { - return false; - } - else - { - int var6 = par2Random.nextInt(this.radius - 2) + 2; - byte var7 = 2; - - for (int var8 = par3 - var6; var8 <= par3 + var6; ++var8) - { - for (int var9 = par5 - var6; var9 <= par5 + var6; ++var9) - { - int var10 = var8 - par3; - int var11 = var9 - par5; - - if (var10 * var10 + var11 * var11 <= var6 * var6) - { - for (int var12 = par4 - var7; var12 <= par4 + var7; ++var12) - { - int var13 = par1World.getBlockId(var8, var12, var9); - - if (var13 == Block.dirt.blockID || var13 == Block.grass.blockID || var13 == Block.stone.blockID) - { - par1World.setBlock(var8, var12, var9, Block.gravel.blockID); - } - } - } - } - } - - return true; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenHeath.java b/src/minecraft/biomesoplenty/worldgen/WorldGenHeath.java deleted file mode 100644 index 55da00c76..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenHeath.java +++ /dev/null @@ -1,244 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.util.Direction; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenHeath extends WorldGenerator -{ - /** The minimum height of a generated tree. */ - private final int minTreeHeight; - - /** True if this tree should grow Vines. */ - private final boolean vinesGrow; - - /** The metadata value of the wood to use in tree generation. */ - private final int metaWood; - - /** The metadata value of the leaves to use in tree generation. */ - private final int metaLeaves; - - public WorldGenHeath(boolean par1) - { - this(par1, 1, 0, 0, false); - } - - public WorldGenHeath(boolean par1, int par2, int par3, int par4, boolean par5) - { - super(par1); - this.minTreeHeight = par2; - this.metaWood = par3; - this.metaLeaves = par4; - this.vinesGrow = par5; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(4) + this.minTreeHeight; - boolean var7 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 256) - { - int var8; - byte var9; - int var11; - int var12; - - for (var8 = par4; var8 <= par4 + 1 + var6; ++var8) - { - var9 = 1; - - if (var8 == par4) - { - var9 = 0; - } - - if (var8 >= par4 + 1 + var6 - 2) - { - var9 = 2; - } - - for (int var10 = par3 - var9; var10 <= par3 + var9 && var7; ++var10) - { - for (var11 = par5 - var9; var11 <= par5 + var9 && var7; ++var11) - { - if (var8 >= 0 && var8 < 256) - { - var12 = par1World.getBlockId(var10, var8, var11); - - if (var12 != 0 && var12 != Block.leaves.blockID && var12 != Block.grass.blockID && var12 != Block.dirt.blockID && var12 != Block.wood.blockID) - { - var7 = false; - } - } - else - { - var7 = false; - } - } - } - } - - if (!var7) - { - return false; - } - else - { - var8 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var8 == Block.grass.blockID || var8 == Block.dirt.blockID) && par4 < 256 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - var9 = 3; - byte var18 = 0; - int var13; - int var14; - int var15; - - for (var11 = par4 - var9 + var6; var11 <= par4 + var6; ++var11) - { - var12 = var11 - (par4 + var6); - var13 = var18 + 1 - var12 / 2; - - for (var14 = par3 - var13; var14 <= par3 + var13; ++var14) - { - var15 = var14 - par3; - - for (int var16 = par5 - var13; var16 <= par5 + var13; ++var16) - { - int var17 = var16 - par5; - - if ((Math.abs(var15) != var13 || Math.abs(var17) != var13 || par2Random.nextInt(2) != 0 && var12 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var14, var11, var16)]) - { - this.setBlockAndMetadata(par1World, var14, var11, var16, Block.leaves.blockID, this.metaLeaves); - } - } - } - } - - for (var11 = 0; var11 < var6; ++var11) - { - var12 = par1World.getBlockId(par3, par4 + var11, par5); - - if (var12 == 0 || var12 == Block.leaves.blockID) - { - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5, Block.wood.blockID, this.metaWood); - - if (this.vinesGrow && var11 > 0) - { - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3 - 1, par4 + var11, par5)) - { - this.setBlockAndMetadata(par1World, par3 - 1, par4 + var11, par5, Block.vine.blockID, 8); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3 + 1, par4 + var11, par5)) - { - this.setBlockAndMetadata(par1World, par3 + 1, par4 + var11, par5, Block.vine.blockID, 2); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3, par4 + var11, par5 - 1)) - { - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5 - 1, Block.vine.blockID, 1); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3, par4 + var11, par5 + 1)) - { - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5 + 1, Block.vine.blockID, 4); - } - } - } - } - - if (this.vinesGrow) - { - for (var11 = par4 - 3 + var6; var11 <= par4 + var6; ++var11) - { - var12 = var11 - (par4 + var6); - var13 = 2 - var12 / 2; - - for (var14 = par3 - var13; var14 <= par3 + var13; ++var14) - { - for (var15 = par5 - var13; var15 <= par5 + var13; ++var15) - { - if (par1World.getBlockId(var14, var11, var15) == Block.leaves.blockID) - { - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14 - 1, var11, var15) == 0) - { - this.growVines(par1World, var14 - 1, var11, var15, 8); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14 + 1, var11, var15) == 0) - { - this.growVines(par1World, var14 + 1, var11, var15, 2); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14, var11, var15 - 1) == 0) - { - this.growVines(par1World, var14, var11, var15 - 1, 1); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14, var11, var15 + 1) == 0) - { - this.growVines(par1World, var14, var11, var15 + 1, 4); - } - } - } - } - } - - if (par2Random.nextInt(5) == 0 && var6 > 5) - { - for (var11 = 0; var11 < 2; ++var11) - { - for (var12 = 0; var12 < 4; ++var12) - { - if (par2Random.nextInt(4 - var11) == 0) - { - var13 = par2Random.nextInt(3); - this.setBlockAndMetadata(par1World, par3 + Direction.offsetX[Direction.rotateOpposite[var12]], par4 + var6 - 5 + var11, par5 + Direction.offsetZ[Direction.rotateOpposite[var12]], Block.cocoaPlant.blockID, var13 << 2 | var12); - } - } - } - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } - - /** - * Grows vines downward from the given block for a given length. Args: World, x, starty, z, vine-length - */ - private void growVines(World par1World, int par2, int par3, int par4, int par5) - { - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - int var6 = 4; - - while (true) - { - --par3; - - if (par1World.getBlockId(par2, par3, par4) != 0 || var6 <= 0) - { - return; - } - - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - --var6; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenHighGrass.java b/src/minecraft/biomesoplenty/worldgen/WorldGenHighGrass.java deleted file mode 100644 index 1d46f868d..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenHighGrass.java +++ /dev/null @@ -1,48 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenHighGrass extends WorldGenerator -{ - /** Stores ID for WorldGenTallGrass */ - private int tallGrassID; - private int tallGrassMetadata; - - public WorldGenHighGrass(int par1, int par2) - { - this.tallGrassID = par1; - this.tallGrassMetadata = par2; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var11; - - for (boolean var6 = false; ((var11 = par1World.getBlockId(par3, par4, par5)) == 0 || var11 == Block.leaves.blockID) && par4 > 0; --par4) - { - ; - } - - for (int var7 = 0; var7 < 128; ++var7) - { - int var8 = par3 + par2Random.nextInt(8) - par2Random.nextInt(8); - int var9 = par4 + par2Random.nextInt(4) - par2Random.nextInt(4); - int var10 = par5 + par2Random.nextInt(8) - par2Random.nextInt(8); - - if (par1World.isAirBlock(var8, var9, var10) && Block.blocksList[this.tallGrassID].canBlockStay(par1World, var8, var9, var10)) - { - par1World.setBlock(var8, var9, var10, Blocks.foliage.get().blockID, 3, 2); - par1World.setBlock(var8, var9 + 1, var10, Blocks.foliage.get().blockID, 6, 2); - } - } - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenIceTree.java b/src/minecraft/biomesoplenty/worldgen/WorldGenIceTree.java deleted file mode 100644 index 0e4b3200e..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenIceTree.java +++ /dev/null @@ -1,143 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenIceTree extends WorldGenerator -{ - public WorldGenIceTree(boolean par1) - { - super(par1); - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(8) + 12; - int var7 = 1 + par2Random.nextInt(2); - int var8 = var6 - var7; - int var9 = 4 + par2Random.nextInt(2); - boolean var10 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 256) - { - int var11; - int var13; - int var15; - int var21; - - for (var11 = par4; var11 <= par4 + 1 + var6 && var10; ++var11) - { - boolean var12 = true; - - if (var11 - par4 < var7) - { - var21 = 0; - } - else - { - var21 = var9; - } - - for (var13 = par3 - var21; var13 <= par3 + var21 && var10; ++var13) - { - for (int var14 = par5 - var21; var14 <= par5 + var21 && var10; ++var14) - { - if (var11 >= 0 && var11 < 256) - { - var15 = par1World.getBlockId(var13, var11, var14); - - if (var15 != 0 && var15 != Block.ice.blockID) - { - var10 = false; - } - } - else - { - var10 = false; - } - } - } - } - - if (!var10) - { - return false; - } - else - { - var11 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var11 == Block.blockSnow.blockID) && par4 < 256 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.blockSnow.blockID); - var21 = par2Random.nextInt(2); - var13 = 1; - byte var22 = 0; - int var17; - int var16; - - for (var15 = 0; var15 <= var8; ++var15) - { - var16 = par4 + var6 - var15; - - for (var17 = par3 - var21; var17 <= par3 + var21; ++var17) - { - int var18 = var17 - par3; - - for (int var19 = par5 - var21; var19 <= par5 + var21; ++var19) - { - int var20 = var19 - par5; - - if ((Math.abs(var18) != var21 || Math.abs(var20) != var21 || var21 <= 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var17, var16, var19)]) - { - this.setBlock(par1World, var17, var16, var19, Block.ice.blockID); - } - } - } - - if (var21 >= var13) - { - var21 = var22; - var22 = 1; - ++var13; - - if (var13 > var9) - { - var13 = var9; - } - } - else - { - ++var21; - } - } - - var15 = par2Random.nextInt(3); - - for (var16 = 0; var16 < var6 - var15; ++var16) - { - var17 = par1World.getBlockId(par3, par4 + var16, par5); - - if (var17 == 0 || var17 == Block.ice.blockID) - { - this.setBlock(par1World, par3, par4 + var16, par5, Block.ice.blockID); - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenJadeTree.java b/src/minecraft/biomesoplenty/worldgen/WorldGenJadeTree.java deleted file mode 100644 index 76d3a4492..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenJadeTree.java +++ /dev/null @@ -1,143 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenJadeTree extends WorldGenerator -{ - public WorldGenJadeTree(boolean par1) - { - super(par1); - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(8) + 8; - int var7 = 2; - int var8 = var6 - var7; - int var9 = 6 + par2Random.nextInt(2); - boolean var10 = true; - - if (par4 >= 1 && par4 + var6 + 1 >= 80) - { - int var11; - int var13; - int var15; - int var21; - - for (var11 = par4; var11 <= par4 + 1 + var6 && var10; ++var11) - { - boolean var12 = true; - - if (var11 - par4 < var7) - { - var21 = 0; - } - else - { - var21 = var9; - } - - for (var13 = par3 - var21; var13 <= par3 + var21 && var10; ++var13) - { - for (int var14 = par5 - var21; var14 <= par5 + var21 && var10; ++var14) - { - if (var11 >= 0 && var11 > 80) - { - var15 = par1World.getBlockId(var13, var11, var14); - - if (var15 != 0 && var15 != Block.leaves.blockID) - { - var10 = false; - } - } - else - { - var10 = false; - } - } - } - } - - if (!var10) - { - return false; - } - else - { - var11 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var11 == Block.grass.blockID || var11 == Block.dirt.blockID) && par4 > 80 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - var21 = par2Random.nextInt(2); - var13 = 1; - byte var22 = 0; - int var17; - int var16; - - for (var15 = 0; var15 <= var8; ++var15) - { - var16 = par4 + var6 - var15; - - for (var17 = par3 - var21; var17 <= par3 + var21; ++var17) - { - int var18 = var17 - par3; - - for (int var19 = par5 - var21; var19 <= par5 + var21; ++var19) - { - int var20 = var19 - par5; - - if ((Math.abs(var18) != var21 || Math.abs(var20) != var21 || var21 <= 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var17, var16, var19)]) - { - this.setBlockAndMetadata(par1World, var17, var16, var19, Block.leaves.blockID, 4); - } - } - } - - if (var21 >= var13) - { - var21 = var22; - var22 = 1; - ++var13; - - if (var13 > var9) - { - var13 = var9; - } - } - else - { - ++var21; - } - } - - var15 = par2Random.nextInt(3); - - for (var16 = 0; var16 < var6 - var15; ++var16) - { - var17 = par1World.getBlockId(par3, par4 + var16, par5); - - if (var17 == 0 || var17 == Block.leaves.blockID) - { - this.setBlockAndMetadata(par1World, par3, par4 + var16, par5, Block.wood.blockID, 0); - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenLog.java b/src/minecraft/biomesoplenty/worldgen/WorldGenLog.java deleted file mode 100644 index 714a05aa0..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenLog.java +++ /dev/null @@ -1,76 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenLog extends WorldGenerator -{ - public boolean generate(World var1, Random var2, int var3, int var4, int var5) - { - while (var1.isAirBlock(var3, var4, var5) && var4 > 2) - { - --var4; - } - - int var6 = var1.getBlockId(var3, var4, var5); - int var61 = var1.getBlockId(var3 - 1, var4, var5); - int var62 = var1.getBlockId(var3 + 1, var4, var5); - int var63 = var1.getBlockId(var3 - 2, var4, var5); - int var64 = var1.getBlockId(var3 + 2, var4, var5); - - if (var6 == Block.grass.blockID) - { - if (var61 == Block.grass.blockID) - { - if (var62 == Block.grass.blockID) - { - if (var63 == Block.grass.blockID) - { - if (var64 == Block.grass.blockID) - { - for (int var7 = -2; var7 <= 2; ++var7) - { - for (int var8 = -2; var8 <= 2; ++var8) - { - if (!var1.isAirBlock(var3, var4 + 1, var5 + var8) && !var1.isAirBlock(var3 - 1, var4 + 1, var5 + var8) && !var1.isAirBlock(var3 + 1, var4 + 1, var5 + var8)) - { - return false; - } - } - } - - var1.setBlock(var3, var4 + 1, var5, Block.wood.blockID, 4, 2); - var1.setBlock(var3 - 1, var4 + 1, var5, Block.wood.blockID, 4, 2); - var1.setBlock(var3 + 1, var4 + 1, var5, Block.wood.blockID, 4, 2); - return true; - } - else - { - return false; - } - } - else - { - return false; - } - } - else - { - return false; - } - } - else - { - return false; - } - } - else - { - return false; - } - - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenMangrove.java b/src/minecraft/biomesoplenty/worldgen/WorldGenMangrove.java deleted file mode 100644 index d963985c0..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenMangrove.java +++ /dev/null @@ -1,258 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenMangrove extends WorldGenerator -{ - /** The minimum height of a generated tree. */ - private final int minTreeHeight; - - /** True if this tree should grow Vines. */ - private final boolean vinesGrow; - - /** The metadata value of the wood to use in tree generation. */ - private final int metaWood; - - /** The metadata value of the leaves to use in tree generation. */ - private final int metaLeaves; - - public WorldGenMangrove(boolean par1) - { - this(par1, 4, 0, 0, false); - } - - public WorldGenMangrove(boolean par1, int par2, int par3, int par4, boolean par5) - { - super(par1); - this.minTreeHeight = par2; - this.metaWood = par3; - this.metaLeaves = par4; - this.vinesGrow = par5; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(3) + this.minTreeHeight; - boolean var7 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 256) - { - int var8; - byte var9; - int var11; - int var12; - - for (var8 = par4; var8 <= par4 + 1 + var6; ++var8) - { - var9 = 1; - - if (var8 == par4) - { - var9 = 0; - } - - if (var8 >= par4 + 1 + var6 - 2) - { - var9 = 2; - } - - for (int var10 = par3 - var9; var10 <= par3 + var9 && var7; ++var10) - { - for (var11 = par5 - var9; var11 <= par5 + var9 && var7; ++var11) - { - if (var8 >= 0 && var8 < 256) - { - var12 = par1World.getBlockId(var10, var8, var11); - - if (var12 != 0 && var12 != Blocks.leavesColorized.get().blockID && var12 != Block.sand.blockID && var12 != Block.grass.blockID && var12 != Block.dirt.blockID && var12 != Blocks.logs2.get().blockID) - { - var7 = false; - } - } - else - { - var7 = false; - } - } - } - } - - if (!var7) - { - return false; - } - else - { - var8 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var8 == Block.sand.blockID || var8 == Block.waterStill.blockID || var8 == Block.waterMoving.blockID) && par4 < 256 - var6 - 1) - { - var9 = 1; - byte var18 = 0; - int var13; - int var14; - int var15; - - for (var11 = par4 - var9 + var6; var11 <= par4 + var6; ++var11) - { - var12 = var11 - (par4 + var6); - var13 = var18 + 1 - var12; - - for (var14 = par3 - var13; var14 <= par3 + var13; ++var14) - { - var15 = var14 - par3; - - for (int var16 = par5 - var13; var16 <= par5 + var13; ++var16) - { - int var17 = var16 - par5; - - if ((Math.abs(var15) != var13 || Math.abs(var17) != var13 || par2Random.nextInt(2) != 0 && var12 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var14, var11, var16)]) - { - this.setBlockAndMetadata(par1World, var14, var11, var16, Blocks.leavesColorized.get().blockID, 1); - } - } - } - } - - for (var11 = 0; var11 < var6; ++var11) - { - var12 = par1World.getBlockId(par3, par4 + var11, par5); - - if (var12 == 0 || var12 == Blocks.leavesColorized.get().blockID) - { - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5, Blocks.logs2.get().blockID, 2); - this.setBlockAndMetadata(par1World, par3, par4 - 1, par5, Blocks.logs2.get().blockID, 2); - this.setBlockAndMetadata(par1World, par3, par4 - 2, par5, Blocks.logs2.get().blockID, 2); - - this.setBlockAndMetadata(par1World, par3 - 1, par4 - 2, par5, Blocks.logs2.get().blockID, 2); - this.setBlockAndMetadata(par1World, par3 + 1, par4 - 2, par5, Blocks.logs2.get().blockID, 2); - this.setBlockAndMetadata(par1World, par3, par4 - 2, par5 - 1, Blocks.logs2.get().blockID, 2); - this.setBlockAndMetadata(par1World, par3, par4 - 2, par5 + 1, Blocks.logs2.get().blockID, 2); - - this.setBlockAndMetadata(par1World, par3 - 1, par4 - 3, par5, Blocks.logs2.get().blockID, 2); - this.setBlockAndMetadata(par1World, par3 + 1, par4 - 3, par5, Blocks.logs2.get().blockID, 2); - this.setBlockAndMetadata(par1World, par3, par4 - 3, par5 - 1, Blocks.logs2.get().blockID, 2); - this.setBlockAndMetadata(par1World, par3, par4 - 3, par5 + 1, Blocks.logs2.get().blockID, 2); - - this.setBlockAndMetadata(par1World, par3 - 2, par4 - 4, par5, Blocks.logs2.get().blockID, 2); - this.setBlockAndMetadata(par1World, par3 + 2, par4 - 4, par5, Blocks.logs2.get().blockID, 2); - this.setBlockAndMetadata(par1World, par3, par4 - 4, par5 - 2, Blocks.logs2.get().blockID, 2); - this.setBlockAndMetadata(par1World, par3, par4 - 4, par5 + 2, Blocks.logs2.get().blockID, 2); - - this.setBlockAndMetadata(par1World, par3 - 2, par4 - 5, par5, Blocks.logs2.get().blockID, 2); - this.setBlockAndMetadata(par1World, par3 + 2, par4 - 5, par5, Blocks.logs2.get().blockID, 2); - this.setBlockAndMetadata(par1World, par3, par4 - 5, par5 - 2, Blocks.logs2.get().blockID, 2); - this.setBlockAndMetadata(par1World, par3, par4 - 5, par5 + 2, Blocks.logs2.get().blockID, 2); - - this.setBlockAndMetadata(par1World, par3 - 3, par4 - 6, par5, Blocks.logs2.get().blockID, 2); - this.setBlockAndMetadata(par1World, par3 + 3, par4 - 6, par5, Blocks.logs2.get().blockID, 2); - this.setBlockAndMetadata(par1World, par3, par4 - 6, par5 - 3, Blocks.logs2.get().blockID, 2); - this.setBlockAndMetadata(par1World, par3, par4 - 6, par5 + 3, Blocks.logs2.get().blockID, 2); - - if (this.vinesGrow && var11 > 0) - { - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3 - 1, par4 + var11, par5)) - { - this.setBlockAndMetadata(par1World, par3 - 1, par4 + var11, par5, Block.vine.blockID, 8); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3 + 1, par4 + var11, par5)) - { - this.setBlockAndMetadata(par1World, par3 + 1, par4 + var11, par5, Block.vine.blockID, 2); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3, par4 + var11, par5 - 1)) - { - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5 - 1, Block.vine.blockID, 1); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3, par4 + var11, par5 + 1)) - { - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5 + 1, Block.vine.blockID, 4); - } - } - } - } - - if (this.vinesGrow) - { - for (var11 = par4 - 3 + var6; var11 <= par4 + var6; ++var11) - { - var12 = var11 - (par4 + var6); - var13 = 2 - var12 / 2; - - for (var14 = par3 - var13; var14 <= par3 + var13; ++var14) - { - for (var15 = par5 - var13; var15 <= par5 + var13; ++var15) - { - if (par1World.getBlockId(var14, var11, var15) == Blocks.leavesColorized.get().blockID) - { - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14 - 1, var11, var15) == 0) - { - this.growVines(par1World, var14 - 1, var11, var15, 8); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14 + 1, var11, var15) == 0) - { - this.growVines(par1World, var14 + 1, var11, var15, 2); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14, var11, var15 - 1) == 0) - { - this.growVines(par1World, var14, var11, var15 - 1, 1); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14, var11, var15 + 1) == 0) - { - this.growVines(par1World, var14, var11, var15 + 1, 4); - } - } - } - } - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } - - /** - * Grows vines downward from the given block for a given length. Args: World, x, starty, z, vine-length - */ - private void growVines(World par1World, int par2, int par3, int par4, int par5) - { - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - int var6 = 4; - - while (true) - { - --par3; - - if (par1World.getBlockId(par2, par3, par4) != 0 || var6 <= 0) - { - return; - } - - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - --var6; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenMaple.java b/src/minecraft/biomesoplenty/worldgen/WorldGenMaple.java deleted file mode 100644 index ade2489e9..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenMaple.java +++ /dev/null @@ -1,124 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenMaple extends WorldGenerator -{ - public WorldGenMaple(boolean par1) - { - super(par1); - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(3) + 5; - boolean var7 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 256) - { - int var8; - int var10; - int var11; - int var12; - - for (var8 = par4; var8 <= par4 + 1 + var6; ++var8) - { - byte var9 = 1; - - if (var8 == par4) - { - var9 = 0; - } - - if (var8 >= par4 + 1 + var6 - 2) - { - var9 = 2; - } - - for (var10 = par3 - var9; var10 <= par3 + var9 && var7; ++var10) - { - for (var11 = par5 - var9; var11 <= par5 + var9 && var7; ++var11) - { - if (var8 >= 0 && var8 < 256) - { - var12 = par1World.getBlockId(var10, var8, var11); - - if (var12 != 0 && var12 != Blocks.leaves2.get().blockID) - { - var7 = false; - } - } - else - { - var7 = false; - } - } - } - } - - if (!var7) - { - return false; - } - else - { - var8 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var8 == Block.grass.blockID || var8 == Block.dirt.blockID) && par4 < 256 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - int var16; - - for (var16 = par4 - 3 + var6; var16 <= par4 + var6; ++var16) - { - var10 = var16 - (par4 + var6); - var11 = 1 - var10 / 2; - - for (var12 = par3 - var11; var12 <= par3 + var11; ++var12) - { - int var13 = var12 - par3; - - for (int var14 = par5 - var11; var14 <= par5 + var11; ++var14) - { - int var15 = var14 - par5; - - if ((Math.abs(var13) != var11 || Math.abs(var15) != var11 || par2Random.nextInt(2) != 0 && var10 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var12, var16, var14)]) - { - this.setBlockAndMetadata(par1World, var12, var16, var14, Blocks.leaves2.get().blockID, 2); - } - } - } - } - - for (var16 = 0; var16 < var6; ++var16) - { - var10 = par1World.getBlockId(par3, par4 + var16, par5); - - if (var10 == 0 || var10 == Blocks.leaves2.get().blockID) - { - this.setBlockAndMetadata(par1World, par3, par4 + var16, par5, Block.wood.blockID, 0); - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenMarsh.java b/src/minecraft/biomesoplenty/worldgen/WorldGenMarsh.java deleted file mode 100644 index 297503e49..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenMarsh.java +++ /dev/null @@ -1,147 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenMarsh extends WorldGenerator -{ - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par3; - int var89; - - for (int var7 = par5; par4 < 63; ++par4) - { - var89 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var89 == Block.waterStill.blockID) && par4 < 256 - var6 - 1) - { - for (int var8 = 2; var8 <= 5; ++var8) - { - par1World.setBlock(par3, par4, par5, Block.grass.blockID); - par1World.setBlock(par3 - 1, par4, par5, Block.grass.blockID); - par1World.setBlock(par3 + 1, par4, par5, Block.grass.blockID); - par1World.setBlock(par3, par4, par5 - 1, Block.grass.blockID); - par1World.setBlock(par3, par4, par5 + 1, Block.grass.blockID); - par1World.setBlock(par3, par4 - 1, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 2, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 3, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 4, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 5, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 6, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 7, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 8, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 9, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 10, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 11, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 12, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 13, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 14, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 15, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 16, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 17, par5, Block.dirt.blockID); - par1World.setBlock(par3 - 1, par4 - 1, par5, Block.dirt.blockID); - par1World.setBlock(par3 + 1, par4 - 1, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 1, par5 - 1, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 1, par5 + 1, Block.dirt.blockID); - par1World.setBlock(par3 - 1, par4 - 2, par5, Block.dirt.blockID); - par1World.setBlock(par3 + 1, par4 - 2, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 2, par5 - 1, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 2, par5 + 1, Block.dirt.blockID); - par1World.setBlock(par3 - 1, par4 - 3, par5, Block.dirt.blockID); - par1World.setBlock(par3 + 1, par4 - 3, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 3, par5 - 1, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 3, par5 + 1, Block.dirt.blockID); - par1World.setBlock(par3 - 1, par4 - 4, par5, Block.dirt.blockID); - par1World.setBlock(par3 + 1, par4 - 4, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 4, par5 - 1, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 4, par5 + 1, Block.dirt.blockID); - par1World.setBlock(par3 - 1, par4 - 5, par5, Block.dirt.blockID); - par1World.setBlock(par3 + 1, par4 - 5, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 5, par5 - 1, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 5, par5 + 1, Block.dirt.blockID); - par1World.setBlock(par3 - 1, par4 - 6, par5, Block.dirt.blockID); - par1World.setBlock(par3 + 1, par4 - 6, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 6, par5 - 1, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 6, par5 + 1, Block.dirt.blockID); - par1World.setBlock(par3 - 1, par4 - 7, par5, Block.dirt.blockID); - par1World.setBlock(par3 + 1, par4 - 7, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 7, par5 - 1, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 7, par5 + 1, Block.dirt.blockID); - par1World.setBlock(par3 - 1, par4 - 8, par5, Block.dirt.blockID); - par1World.setBlock(par3 + 1, par4 - 8, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 8, par5 - 1, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 8, par5 + 1, Block.dirt.blockID); - par1World.setBlock(par3 - 1, par4 - 9, par5, Block.dirt.blockID); - par1World.setBlock(par3 + 1, par4 - 9, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 9, par5 - 1, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 9, par5 + 1, Block.dirt.blockID); - par1World.setBlock(par3 - 1, par4 - 10, par5, Block.dirt.blockID); - par1World.setBlock(par3 + 1, par4 - 10, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 10, par5 - 1, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 10, par5 + 1, Block.dirt.blockID); - par1World.setBlock(par3 - 1, par4 - 11, par5, Block.dirt.blockID); - par1World.setBlock(par3 + 1, par4 - 11, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 11, par5 - 1, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 11, par5 + 1, Block.dirt.blockID); - par1World.setBlock(par3 - 1, par4 - 12, par5, Block.dirt.blockID); - par1World.setBlock(par3 + 1, par4 - 12, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 12, par5 - 1, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 12, par5 + 1, Block.dirt.blockID); - par1World.setBlock(par3 - 1, par4 - 13, par5, Block.dirt.blockID); - par1World.setBlock(par3 + 1, par4 - 13, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 13, par5 - 1, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 13, par5 + 1, Block.dirt.blockID); - par1World.setBlock(par3 - 1, par4 - 14, par5, Block.dirt.blockID); - par1World.setBlock(par3 + 1, par4 - 14, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 14, par5 - 1, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 14, par5 + 1, Block.dirt.blockID); - par1World.setBlock(par3 - 1, par4 - 15, par5, Block.dirt.blockID); - par1World.setBlock(par3 + 1, par4 - 15, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 15, par5 - 1, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 15, par5 + 1, Block.dirt.blockID); - par1World.setBlock(par3 - 1, par4 - 16, par5, Block.dirt.blockID); - par1World.setBlock(par3 + 1, par4 - 16, par5, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 16, par5 - 1, Block.dirt.blockID); - par1World.setBlock(par3, par4 - 16, par5 + 1, Block.dirt.blockID); - - if (par2Random.nextInt(3) == 0) - { - par1World.setBlock(par3, par4 + 1, par5, Blocks.foliage.get().blockID, 3, 2); - par1World.setBlock(par3, par4 + 2, par5, Blocks.foliage.get().blockID, 6, 2); - par1World.setBlock(par3 - 1, par4 + 1, par5, Blocks.foliage.get().blockID, 3, 2); - par1World.setBlock(par3 - 1, par4 + 2, par5, Blocks.foliage.get().blockID, 6, 2); - par1World.setBlock(par3 + 1, par4 + 1, par5, Blocks.foliage.get().blockID, 3, 2); - par1World.setBlock(par3 + 1, par4 + 2, par5, Blocks.foliage.get().blockID, 6, 2); - par1World.setBlock(par3, par4 + 1, par5 - 1, Blocks.foliage.get().blockID, 1, 2); - par1World.setBlock(par3, par4 + 2, par5 - 1, Blocks.foliage.get().blockID, 6, 2); - par1World.setBlock(par3, par4 + 1, par5 + 1, Blocks.foliage.get().blockID, 1, 2); - par1World.setBlock(par3, par4 + 2, par5 + 1, Blocks.foliage.get().blockID, 6, 2); - } - else - { - par1World.setBlock(par3, par4 + 1, par5, Block.tallGrass.blockID, 1, 2); - par1World.setBlock(par3 - 1, par4 + 1, par5, Block.tallGrass.blockID, 1, 2); - par1World.setBlock(par3 + 1, par4 + 1, par5, Block.tallGrass.blockID, 1, 2); - par1World.setBlock(par3, par4 + 1, par5 - 1, Block.tallGrass.blockID, 1, 2); - par1World.setBlock(par3, par4 + 1, par5 + 1, Block.tallGrass.blockID, 1, 2); - } - break; - } - } - else - { - par3 = var6 + par2Random.nextInt(4) - par2Random.nextInt(4); - par5 = var7 + par2Random.nextInt(4) - par2Random.nextInt(4); - } - } - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenMelon.java b/src/minecraft/biomesoplenty/worldgen/WorldGenMelon.java deleted file mode 100644 index 99d3bebc9..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenMelon.java +++ /dev/null @@ -1,27 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenMelon extends WorldGenerator -{ - public boolean generate(World var1, Random var2, int var3, int var4, int var5) - { - for (int var6 = 0; var6 < 64; ++var6) - { - int var7 = var3 + var2.nextInt(8) - var2.nextInt(8); - int var8 = var4 + var2.nextInt(4) - var2.nextInt(4); - int var9 = var5 + var2.nextInt(8) - var2.nextInt(8); - - if (var1.isAirBlock(var7, var8, var9) && var1.getBlockId(var7, var8 - 1, var9) == Block.grass.blockID && Block.melon.canPlaceBlockAt(var1, var7, var8, var9)) - { - var1.setBlock(var7, var8, var9, Block.melon.blockID); - } - } - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenMesa.java b/src/minecraft/biomesoplenty/worldgen/WorldGenMesa.java deleted file mode 100644 index e3f2408f6..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenMesa.java +++ /dev/null @@ -1,80 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenMesa extends WorldGenerator -{ - /** The block ID of the ore to be placed using this generator. */ - private int minableBlockId; - - /** The number of blocks to generate. */ - private int numberOfBlocks; - - public WorldGenMesa(int par1, int par2) - { - this.minableBlockId = par1; - this.numberOfBlocks = par2; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - float var6 = par2Random.nextFloat() * (float)Math.PI; - double var7 = (double)((float)(par3 + 8) + MathHelper.sin(var6) * (float)this.numberOfBlocks / 8.0F); - double var9 = (double)((float)(par3 + 8) - MathHelper.sin(var6) * (float)this.numberOfBlocks / 8.0F); - double var11 = (double)((float)(par5 + 8) + MathHelper.cos(var6) * (float)this.numberOfBlocks / 8.0F); - double var13 = (double)((float)(par5 + 8) - MathHelper.cos(var6) * (float)this.numberOfBlocks / 8.0F); - double var15 = (double)(par4 + par2Random.nextInt(3) - 2); - double var17 = (double)(par4 + par2Random.nextInt(3) - 2); - - for (int var19 = 0; var19 <= this.numberOfBlocks; ++var19) - { - double var20 = var7 + (var9 - var7) * (double)var19 / (double)this.numberOfBlocks; - double var22 = var15 + (var17 - var15) * (double)var19 / (double)this.numberOfBlocks; - double var24 = var11 + (var13 - var11) * (double)var19 / (double)this.numberOfBlocks; - double var26 = par2Random.nextDouble() * (double)this.numberOfBlocks / 16.0D; - double var28 = (double)(MathHelper.sin((float)var19 * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * var26 + 1.0D; - double var30 = (double)(MathHelper.sin((float)var19 * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * var26 + 1.0D; - int var32 = MathHelper.floor_double(var20 - var28 / 2.0D); - int var33 = MathHelper.floor_double(var22 - var30 / 2.0D); - int var34 = MathHelper.floor_double(var24 - var28 / 2.0D); - int var35 = MathHelper.floor_double(var20 + var28 / 2.0D); - int var36 = MathHelper.floor_double(var22 + var30 / 2.0D); - int var37 = MathHelper.floor_double(var24 + var28 / 2.0D); - - for (int var38 = var32; var38 <= var35; ++var38) - { - double var39 = ((double)var38 + 0.5D - var20) / (var28 / 2.0D); - - if (var39 * var39 < 1.0D) - { - for (int var41 = var33; var41 <= var36; ++var41) - { - double var42 = ((double)var41 + 0.5D - var22) / (var30 / 2.0D); - - if (var39 * var39 + var42 * var42 < 1.0D) - { - for (int var44 = var34; var44 <= var37; ++var44) - { - double var45 = ((double)var44 + 0.5D - var24) / (var28 / 2.0D); - - if (var39 * var39 + var42 * var42 + var45 * var45 < 1.0D && par1World.getBlockId(var38, var41, var44) == Blocks.redRock.get().blockID) - { - par1World.setBlock(var38, var41, var44, this.minableBlockId); - } - } - } - } - } - } - } - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenMoor.java b/src/minecraft/biomesoplenty/worldgen/WorldGenMoor.java deleted file mode 100644 index d1fe68b08..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenMoor.java +++ /dev/null @@ -1,58 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenMoor extends WorldGenerator -{ - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par3; - int var89; - int var90; - int var91; - int var92; - int var93; - - for (int var7 = par5; par4 < 128; ++par4) - { - var89 = par1World.getBlockId(par3, par4, par5); - var90 = par1World.getBlockId(par3 - 1, par4, par5); - var91 = par1World.getBlockId(par3 + 1, par4, par5); - var92 = par1World.getBlockId(par3, par4, par5 - 1); - var93 = par1World.getBlockId(par3, par4, par5 + 1); - - if ((var89 == Block.grass.blockID) && par4 < 256 - var6 - 1) - { - if (var90 == Block.grass.blockID) - { - if (var91 == Block.grass.blockID) - { - if (var92 == Block.grass.blockID) - { - if (var93 == Block.grass.blockID) - { - for (int var8 = 2; var8 <= 5; ++var8) - { - par1World.setBlock(par3, par4, par5, Block.waterStill.blockID); - par1World.setBlock(par3, par4 + 1, par5, 0); - break; - } - } - } - } - } - } - else - { - par3 = var6 + par2Random.nextInt(4) - par2Random.nextInt(4); - par5 = var7 + par2Random.nextInt(4) - par2Random.nextInt(4); - } - } - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenMoss.java b/src/minecraft/biomesoplenty/worldgen/WorldGenMoss.java deleted file mode 100644 index ef45697ec..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenMoss.java +++ /dev/null @@ -1,41 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.util.Direction; -import net.minecraft.util.Facing; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenMoss extends WorldGenerator -{ - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par3; - - for (int var7 = par5; par4 < 80; ++par4) - { - if (par1World.isAirBlock(par3, par4, par5)) - { - for (int var8 = 2; var8 <= 5; ++var8) - { - if (Blocks.moss.get().canPlaceBlockOnSide(par1World, par3, par4, par5, var8)) - { - par1World.setBlock(par3, par4, par5, Blocks.moss.get().blockID, 1 << Direction.facingToDirection[Facing.oppositeSide[var8]], 2); - break; - } - } - } - else - { - par3 = var6 + par2Random.nextInt(4) - par2Random.nextInt(4); - par5 = var7 + par2Random.nextInt(4) - par2Random.nextInt(4); - } - } - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenMud.java b/src/minecraft/biomesoplenty/worldgen/WorldGenMud.java deleted file mode 100644 index d5b5e4061..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenMud.java +++ /dev/null @@ -1,61 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; -import biomesoplenty.api.Blocks; - -public class WorldGenMud extends WorldGenerator -{ - /** Stores ID for WorldGenSand */ - private int sandID; - - /** The maximum radius used when generating a patch of blocks. */ - private int radius; - - public WorldGenMud(int par1, int par2) - { - this.sandID = par2; - this.radius = par1; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - if (par1World.getBlockMaterial(par3, par4, par5) != Material.water) - { - return false; - } - else - { - int var6 = par2Random.nextInt(this.radius - 2) + 2; - byte var7 = 2; - - for (int var8 = par3 - var6; var8 <= par3 + var6; ++var8) - { - for (int var9 = par5 - var6; var9 <= par5 + var6; ++var9) - { - int var10 = var8 - par3; - int var11 = var9 - par5; - - if (var10 * var10 + var11 * var11 <= var6 * var6) - { - for (int var12 = par4 - var7; var12 <= par4 + var7; ++var12) - { - int var13 = par1World.getBlockId(var8, var12, var9); - - if (var13 == Block.dirt.blockID || var13 == Block.grass.blockID) - { - par1World.setBlock(var8, var12, var9, Blocks.mud.get().blockID); - } - } - } - } - } - - return true; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenMycelium.java b/src/minecraft/biomesoplenty/worldgen/WorldGenMycelium.java deleted file mode 100644 index 8546de285..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenMycelium.java +++ /dev/null @@ -1,78 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenMycelium extends WorldGenerator -{ - /** The block ID of the ore to be placed using this generator. */ - private int minableBlockId; - - /** The number of blocks to generate. */ - private int numberOfBlocks; - - public WorldGenMycelium(int par1, int par2) - { - this.minableBlockId = par1; - this.numberOfBlocks = par2; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - float var6 = par2Random.nextFloat() * (float)Math.PI; - double var7 = (double)((float)(par3 + 8) + MathHelper.sin(var6) * (float)this.numberOfBlocks / 8.0F); - double var9 = (double)((float)(par3 + 8) - MathHelper.sin(var6) * (float)this.numberOfBlocks / 8.0F); - double var11 = (double)((float)(par5 + 8) + MathHelper.cos(var6) * (float)this.numberOfBlocks / 8.0F); - double var13 = (double)((float)(par5 + 8) - MathHelper.cos(var6) * (float)this.numberOfBlocks / 8.0F); - double var15 = (double)(par4 + par2Random.nextInt(3) - 2); - double var17 = (double)(par4 + par2Random.nextInt(3) - 2); - - for (int var19 = 0; var19 <= this.numberOfBlocks; ++var19) - { - double var20 = var7 + (var9 - var7) * (double)var19 / (double)this.numberOfBlocks; - double var22 = var15 + (var17 - var15) * (double)var19 / (double)this.numberOfBlocks; - double var24 = var11 + (var13 - var11) * (double)var19 / (double)this.numberOfBlocks; - double var26 = par2Random.nextDouble() * (double)this.numberOfBlocks / 16.0D; - double var28 = (double)(MathHelper.sin((float)var19 * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * var26 + 1.0D; - double var30 = (double)(MathHelper.sin((float)var19 * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * var26 + 1.0D; - int var32 = MathHelper.floor_double(var20 - var28 / 2.0D); - int var33 = MathHelper.floor_double(var22 - var30 / 2.0D); - int var34 = MathHelper.floor_double(var24 - var28 / 2.0D); - int var35 = MathHelper.floor_double(var20 + var28 / 2.0D); - int var36 = MathHelper.floor_double(var22 + var30 / 2.0D); - int var37 = MathHelper.floor_double(var24 + var28 / 2.0D); - - for (int var38 = var32; var38 <= var35; ++var38) - { - double var39 = ((double)var38 + 0.5D - var20) / (var28 / 2.0D); - - if (var39 * var39 < 1.0D) - { - for (int var41 = var33; var41 <= var36; ++var41) - { - double var42 = ((double)var41 + 0.5D - var22) / (var30 / 2.0D); - - if (var39 * var39 + var42 * var42 < 1.0D) - { - for (int var44 = var34; var44 <= var37; ++var44) - { - double var45 = ((double)var44 + 0.5D - var24) / (var28 / 2.0D); - - if (var39 * var39 + var42 * var42 + var45 * var45 < 1.0D && par1World.getBlockId(var38, var41, var44) == Block.grass.blockID) - { - par1World.setBlock(var38, var41, var44, this.minableBlockId); - } - } - } - } - } - } - } - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenMystic1.java b/src/minecraft/biomesoplenty/worldgen/WorldGenMystic1.java deleted file mode 100644 index 913560cbf..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenMystic1.java +++ /dev/null @@ -1,146 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenMystic1 extends WorldGenerator -{ - public WorldGenMystic1(boolean par1) - { - super(par1); - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(6) + 10; - int var7 = 4 + par2Random.nextInt(3); - int var8 = var6 - var7; - int var9 = 2 + par2Random.nextInt(2); - boolean var10 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 256) - { - int var11; - int var13; - int var15; - int var21; - - for (var11 = par4; var11 <= par4 + 1 + var6 && var10; ++var11) - { - boolean var12 = true; - - if (var11 - par4 < var7) - { - var21 = 0; - } - else - { - var21 = var9; - } - - for (var13 = par3 - var21; var13 <= par3 + var21 && var10; ++var13) - { - for (int var14 = par5 - var21; var14 <= par5 + var21 && var10; ++var14) - { - if (var11 >= 0 && var11 < 256) - { - var15 = par1World.getBlockId(var13, var11, var14); - - if (var15 != 0 && var15 != Block.leaves.blockID) - { - var10 = false; - } - } - else - { - var10 = false; - } - } - } - } - - if (!var10) - { - return false; - } - else - { - var11 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var11 == Blocks.holyGrass.get().blockID || var11 == Block.grass.blockID || var11 == Block.dirt.blockID) && par4 < 256 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - var21 = par2Random.nextInt(2); - var13 = 1; - byte var22 = 0; - int var17; - int var16; - - for (var15 = 0; var15 <= var8; ++var15) - { - var16 = par4 + var6 - var15; - - for (var17 = par3 - var21; var17 <= par3 + var21; ++var17) - { - int var18 = var17 - par3; - - for (int var19 = par5 - var21; var19 <= par5 + var21; ++var19) - { - int var20 = var19 - par5; - - if ((Math.abs(var18) != var21 || Math.abs(var20) != var21 || var21 <= 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var17, var16, var19)]) - { - this.setBlockAndMetadata(par1World, var17, var16, var19, Block.leaves.blockID, 0); - } - } - } - - if (var21 >= var13) - { - var21 = var22; - var22 = 1; - ++var13; - - if (var13 > var9) - { - var13 = var9; - } - } - else - { - ++var21; - } - } - - var15 = par2Random.nextInt(3); - - for (var16 = 0; var16 < var6 - var15; ++var16) - { - var17 = par1World.getBlockId(par3, par4 + var16, par5); - - if (var17 == 0 || var17 == Block.leaves.blockID) - { - this.setBlockAndMetadata(par1World, par3, par4 + var16, par5, Block.wood.blockID, 0); - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenMystic2.java b/src/minecraft/biomesoplenty/worldgen/WorldGenMystic2.java deleted file mode 100644 index ec0991ac9..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenMystic2.java +++ /dev/null @@ -1,147 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenMystic2 extends WorldGenerator -{ - public WorldGenMystic2(boolean var1) - { - super(var1); - } - - public boolean generate(World var1, Random var2, int var3, int var4, int var5) - { - int var6 = var2.nextInt(15) + 15; - int var7 = var2.nextInt(3) + 5; - int var8 = var6 - var7; - int var9 = 1 + var2.nextInt(3); - boolean var10 = true; - - if (var4 >= 1 && var4 + var6 + 1 <= 256) - { - int var11; - int var13; - int var15; - int var21; - - for (var11 = var4; var11 <= var4 + 1 + var6 && var10; ++var11) - { - boolean var12 = true; - - if (var11 - var4 < var7) - { - var21 = 0; - } - else - { - var21 = var9; - } - - for (var13 = var3 - var21; var13 <= var3 + var21 && var10; ++var13) - { - for (int var14 = var5 - var21; var14 <= var5 + var21 && var10; ++var14) - { - if (var11 >= 0 && var11 < 256) - { - var15 = var1.getBlockId(var13, var11, var14); - - if (var15 != 0 && var15 != Blocks.leaves1.get().blockID) - { - var10 = false; - } - } - else - { - var10 = false; - } - } - } - } - - if (!var10) - { - return false; - } - else - { - var11 = var1.getBlockId(var3, var4 - 1, var5); - - if ((var11 == Blocks.holyGrass.get().blockID || var11 == Block.grass.blockID || var11 == Block.dirt.blockID) && var4 < 256 - var6 - 1) - { - var1.setBlock(var3, var4 - 1, var5, Block.dirt.blockID); - var21 = var2.nextInt(2); - var13 = 1; - boolean var22 = false; - int var17; - int var16; - - for (var15 = 0; var15 <= var8; ++var15) - { - var16 = var4 + var6 - var15; - - for (var17 = var3 - var21; var17 <= var3 + var21; ++var17) - { - int var18 = var17 - var3; - - for (int var19 = var5 - var21; var19 <= var5 + var21; ++var19) - { - int var20 = var19 - var5; - - if ((Math.abs(var18) != var21 || Math.abs(var20) != var21 || var21 <= 0) && !Block.opaqueCubeLookup[var1.getBlockId(var17, var16, var19)]) - { - this.setBlockAndMetadata(var1, var17, var16, var19, Blocks.leaves1.get().blockID, 2); - } - } - } - - if (var21 >= var13) - { - var21 = var22 ? 1 : 0; - var22 = true; - ++var13; - - if (var13 > var9) - { - var13 = var9; - } - } - else - { - ++var21; - } - } - - var15 = var2.nextInt(3); - - for (var16 = 0; var16 < var6 - var15; ++var16) - { - var17 = var1.getBlockId(var3, var4 + var16, var5); - - if (var17 == 0 || var17 == Blocks.leaves1.get().blockID) - { - this.setBlockAndMetadata(var1, var3, var4 + var16, var5, Blocks.logs2.get().blockID,1); - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenOasis.java b/src/minecraft/biomesoplenty/worldgen/WorldGenOasis.java deleted file mode 100644 index 62c56b5ec..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenOasis.java +++ /dev/null @@ -1,63 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenOasis extends WorldGenerator -{ - /** Stores ID for WorldGenSand */ - private int sandID; - - /** The maximum radius used when generating a patch of blocks. */ - private int radius; - - public WorldGenOasis(int par1, int par2) - { - this.sandID = par2; - this.radius = par1; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - if (par1World.getBlockMaterial(par3, par4, par5) != Material.water) - { - return false; - } - else - { - int var6 = par2Random.nextInt(this.radius - 2) + 2; - byte var7 = 2; - - for (int var8 = par3 - var6; var8 <= par3 + var6; ++var8) - { - for (int var9 = par5 - var6; var9 <= par5 + var6; ++var9) - { - int var10 = var8 - par3; - int var11 = var9 - par5; - - if (var10 * var10 + var11 * var11 <= var6 * var6) - { - for (int var12 = par4 - var7; var12 <= par4 + var7; ++var12) - { - int var13 = par1World.getBlockId(var8, var12, var9); - - if (var13 == Block.sand.blockID || var13 == Blocks.redRock.get().blockID) - { - par1World.setBlock(var8, var12, var9, this.sandID); - } - } - } - } - } - - return true; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenOminous1.java b/src/minecraft/biomesoplenty/worldgen/WorldGenOminous1.java deleted file mode 100644 index a387c4f1f..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenOminous1.java +++ /dev/null @@ -1,146 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenOminous1 extends WorldGenerator -{ - public WorldGenOminous1(boolean par1) - { - super(par1); - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(6) + 14; - int var7 = 4 + par2Random.nextInt(3); - int var8 = var6 - var7; - int var9 = 2 + par2Random.nextInt(2); - boolean var10 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 256) - { - int var11; - int var13; - int var15; - int var21; - - for (var11 = par4; var11 <= par4 + 1 + var6 && var10; ++var11) - { - boolean var12 = true; - - if (var11 - par4 < var7) - { - var21 = 0; - } - else - { - var21 = var9; - } - - for (var13 = par3 - var21; var13 <= par3 + var21 && var10; ++var13) - { - for (int var14 = par5 - var21; var14 <= par5 + var21 && var10; ++var14) - { - if (var11 >= 0 && var11 < 256) - { - var15 = par1World.getBlockId(var13, var11, var14); - - if (var15 != 0 && var15 != Blocks.leaves1.get().blockID) - { - var10 = false; - } - } - else - { - var10 = false; - } - } - } - } - - if (!var10) - { - return false; - } - else - { - var11 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var11 == Block.grass.blockID || var11 == Block.dirt.blockID) && par4 < 256 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - var21 = par2Random.nextInt(2); - var13 = 1; - byte var22 = 0; - int var17; - int var16; - - for (var15 = 0; var15 <= var8; ++var15) - { - var16 = par4 + var6 - var15; - - for (var17 = par3 - var21; var17 <= par3 + var21; ++var17) - { - int var18 = var17 - par3; - - for (int var19 = par5 - var21; var19 <= par5 + var21; ++var19) - { - int var20 = var19 - par5; - - if ((Math.abs(var18) != var21 || Math.abs(var20) != var21 || var21 <= 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var17, var16, var19)]) - { - this.setBlockAndMetadata(par1World, var17, var16, var19, Blocks.leaves1.get().blockID, 3); - } - } - } - - if (var21 >= var13) - { - var21 = var22; - var22 = 1; - ++var13; - - if (var13 > var9) - { - var13 = var9; - } - } - else - { - ++var21; - } - } - - var15 = par2Random.nextInt(3); - - for (var16 = 0; var16 < var6 - var15; ++var16) - { - var17 = par1World.getBlockId(par3, par4 + var16, par5); - - if (var17 == 0 || var17 == Blocks.leaves1.get().blockID) - { - this.setBlockAndMetadata(par1World, par3, par4 + var16, par5, Blocks.logs1.get().blockID, 2); - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenOminous2.java b/src/minecraft/biomesoplenty/worldgen/WorldGenOminous2.java deleted file mode 100644 index b69a86b7c..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenOminous2.java +++ /dev/null @@ -1,190 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenOminous2 extends WorldGenerator -{ - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6; - - for (var6 = par2Random.nextInt(4) + 5; par1World.getBlockMaterial(par3, par4 - 1, par5) == Material.water; --par4) - { - ; - } - - boolean var7 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 128) - { - int var8; - int var10; - int var11; - int var12; - - for (var8 = par4; var8 <= par4 + 1 + var6; ++var8) - { - byte var9 = 1; - - if (var8 == par4) - { - var9 = 0; - } - - if (var8 >= par4 + 1 + var6 - 2) - { - var9 = 3; - } - - for (var10 = par3 - var9; var10 <= par3 + var9 && var7; ++var10) - { - for (var11 = par5 - var9; var11 <= par5 + var9 && var7; ++var11) - { - if (var8 >= 0 && var8 < 128) - { - var12 = par1World.getBlockId(var10, var8, var11); - - if (var12 != 0 && var12 != Blocks.leaves1.get().blockID) - { - if (var12 != Block.waterStill.blockID && var12 != Block.waterMoving.blockID) - { - var7 = false; - } - else if (var8 > par4) - { - var7 = false; - } - } - } - else - { - var7 = false; - } - } - } - } - - if (!var7) - { - return false; - } - else - { - var8 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var8 == Block.grass.blockID || var8 == Block.dirt.blockID) && par4 < 128 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - int var13; - int var16; - - for (var16 = par4 - 3 + var6; var16 <= par4 + var6; ++var16) - { - var10 = var16 - (par4 + var6); - var11 = 2 - var10 / 2; - - for (var12 = par3 - var11; var12 <= par3 + var11; ++var12) - { - var13 = var12 - par3; - - for (int var14 = par5 - var11; var14 <= par5 + var11; ++var14) - { - int var15 = var14 - par5; - - if ((Math.abs(var13) != var11 || Math.abs(var15) != var11 || par2Random.nextInt(2) != 0 && var10 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var12, var16, var14)]) - { - this.setBlockAndMetadata(par1World, var12, var16, var14, Blocks.leaves1.get().blockID, 3); - } - } - } - } - - for (var16 = 0; var16 < var6; ++var16) - { - var10 = par1World.getBlockId(par3, par4 + var16, par5); - - if (var10 == 0 || var10 == Blocks.leaves1.get().blockID || var10 == Block.waterMoving.blockID || var10 == Block.waterStill.blockID) - { - this.setBlockAndMetadata(par1World, par3, par4 + var16, par5, Blocks.logs1.get().blockID, 2); - } - } - - for (var16 = par4 - 3 + var6; var16 <= par4 + var6; ++var16) - { - var10 = var16 - (par4 + var6); - var11 = 2 - var10 / 2; - - for (var12 = par3 - var11; var12 <= par3 + var11; ++var12) - { - for (var13 = par5 - var11; var13 <= par5 + var11; ++var13) - { - if (par1World.getBlockId(var12, var16, var13) == Blocks.leaves1.get().blockID) - { - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12 - 1, var16, var13) == 0) - { - this.generateVines(par1World, var12 - 1, var16, var13, 8); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12 + 1, var16, var13) == 0) - { - this.generateVines(par1World, var12 + 1, var16, var13, 2); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12, var16, var13 - 1) == 0) - { - this.generateVines(par1World, var12, var16, var13 - 1, 1); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12, var16, var13 + 1) == 0) - { - this.generateVines(par1World, var12, var16, var13 + 1, 4); - } - } - } - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } - - /** - * Generates vines at the given position until it hits a block. - */ - private void generateVines(World par1World, int par2, int par3, int par4, int par5) - { - this.setBlockAndMetadata(par1World, par2, par3, par4, Blocks.treeMoss.get().blockID, par5); - int var6 = 4; - - while (true) - { - --par3; - - if (par1World.getBlockId(par2, par3, par4) != 0 || var6 <= 0) - { - return; - } - - this.setBlockAndMetadata(par1World, par2, par3, par4, Blocks.treeMoss.get().blockID, par5); - --var6; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenOriginTree.java b/src/minecraft/biomesoplenty/worldgen/WorldGenOriginTree.java deleted file mode 100644 index 8580b6ecd..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenOriginTree.java +++ /dev/null @@ -1,124 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenOriginTree extends WorldGenerator -{ - public WorldGenOriginTree(boolean par1) - { - super(par1); - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(3) + 5; - boolean var7 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 256) - { - int var8; - int var10; - int var11; - int var12; - - for (var8 = par4; var8 <= par4 + 1 + var6; ++var8) - { - byte var9 = 1; - - if (var8 == par4) - { - var9 = 0; - } - - if (var8 >= par4 + 1 + var6 - 2) - { - var9 = 2; - } - - for (var10 = par3 - var9; var10 <= par3 + var9 && var7; ++var10) - { - for (var11 = par5 - var9; var11 <= par5 + var9 && var7; ++var11) - { - if (var8 >= 0 && var8 < 256) - { - var12 = par1World.getBlockId(var10, var8, var11); - - if (var12 != 0 && var12 != Blocks.leaves2.get().blockID) - { - var7 = false; - } - } - else - { - var7 = false; - } - } - } - } - - if (!var7) - { - return false; - } - else - { - var8 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var8 == Blocks.originGrass.get().blockID || var8 == Block.grass.blockID || var8 == Block.dirt.blockID) && par4 < 256 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - int var16; - - for (var16 = par4 - 3 + var6; var16 <= par4 + var6; ++var16) - { - var10 = var16 - (par4 + var6); - var11 = 1 - var10 / 2; - - for (var12 = par3 - var11; var12 <= par3 + var11; ++var12) - { - int var13 = var12 - par3; - - for (int var14 = par5 - var11; var14 <= par5 + var11; ++var14) - { - int var15 = var14 - par5; - - if ((Math.abs(var13) != var11 || Math.abs(var15) != var11 || par2Random.nextInt(2) != 0 && var10 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var12, var16, var14)]) - { - this.setBlockAndMetadata(par1World, var12, var16, var14, Blocks.leaves2.get().blockID, 0); - } - } - } - } - - for (var16 = 0; var16 < var6; ++var16) - { - var10 = par1World.getBlockId(par3, par4 + var16, par5); - - if (var10 == 0 || var10 == Blocks.leaves2.get().blockID) - { - this.setBlockAndMetadata(par1World, par3, par4 + var16, par5, Block.wood.blockID, 0); - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenOutback.java b/src/minecraft/biomesoplenty/worldgen/WorldGenOutback.java deleted file mode 100644 index 124b62231..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenOutback.java +++ /dev/null @@ -1,48 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenOutback extends WorldGenerator -{ - /** Stores ID for WorldGenTallGrass */ - private int tallGrassID; - private int tallGrassMetadata; - - public WorldGenOutback(int par1, int par2) - { - this.tallGrassID = par1; - this.tallGrassMetadata = par2; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var11; - - for (boolean var6 = false; ((var11 = par1World.getBlockId(par3, par4, par5)) == 0 || var11 == Block.leaves.blockID) && par4 > 0; --par4) - { - ; - } - - for (int var7 = 0; var7 < 128; ++var7) - { - int var8 = par3 + par2Random.nextInt(8) - par2Random.nextInt(8); - int var9 = par4 + par2Random.nextInt(4) - par2Random.nextInt(4); - int var10 = par5 + par2Random.nextInt(8) - par2Random.nextInt(8); - - if (par1World.isAirBlock(var8, var9, var10) && par1World.getBlockId(var8, var9 - 1, var10) == Blocks.hardSand.get().blockID) - { - par1World.setBlock(var8, var9 - 1, var10, Block.grass.blockID, 0, 2); - par1World.setBlock(var8, var9, var10, this.tallGrassID, this.tallGrassMetadata, 2); - } - } - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenOutbackShrub.java b/src/minecraft/biomesoplenty/worldgen/WorldGenOutbackShrub.java deleted file mode 100644 index 14e61ccaa..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenOutbackShrub.java +++ /dev/null @@ -1,63 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenOutbackShrub extends WorldGenerator -{ - private int field_76527_a; - private int field_76526_b; - - public WorldGenOutbackShrub(int par1, int par2) - { - this.field_76526_b = par1; - this.field_76527_a = par2; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var15; - - for (boolean var6 = false; ((var15 = par1World.getBlockId(par3, par4, par5)) == 0 || var15 == Blocks.leavesColorized.get().blockID) && par4 > 0; --par4) - { - ; - } - - int var7 = par1World.getBlockId(par3, par4, par5); - - if (var7 == Blocks.hardSand.get().blockID) - { - ++par4; - this.setBlockAndMetadata(par1World, par3, par4, par5, Blocks.logs1.get().blockID,0); - - for (int var8 = par4; var8 <= par4 + 1; ++var8) - { - int var9 = var8 - par4; - int var10 = 2 - var9; - - for (int var11 = par3 - var10; var11 <= par3 + var10; ++var11) - { - int var12 = var11 - par3; - - for (int var13 = par5 - var10; var13 <= par5 + var10; ++var13) - { - int var14 = var13 - par5; - - if ((Math.abs(var12) != var10 || Math.abs(var14) != var10 || par2Random.nextInt(2) != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var11, var8, var13)]) - { - this.setBlockAndMetadata(par1World, var11, var8, var13, Blocks.leavesColorized.get().blockID, 0); - } - } - } - } - } - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenOutbackTree.java b/src/minecraft/biomesoplenty/worldgen/WorldGenOutbackTree.java deleted file mode 100644 index 24467bd25..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenOutbackTree.java +++ /dev/null @@ -1,52 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenOutbackTree extends WorldGenerator -{ - public boolean generate(World var1, Random var2, int var3, int var4, int var5) - { - while (var1.isAirBlock(var3, var4, var5) && var4 > 2) - { - --var4; - } - - int var6 = var1.getBlockId(var3, var4, var5); - - if (var6 != Blocks.hardSand.get().blockID) - { - return false; - } - else - { - for (int var7 = -2; var7 <= 2; ++var7) - { - for (int var8 = -2; var8 <= 2; ++var8) - { - if (var1.isAirBlock(var3 + var7, var4 - 1, var5 + var8) && var1.isAirBlock(var3 + var7, var4 - 2, var5 + var8)) - { - return false; - } - } - } - - var1.setBlock(var3, var4, var5, Block.dirt.blockID); - var1.setBlock(var3, var4 + 1, var5, Blocks.logs1.get().blockID,0,2); - var1.setBlock(var3, var4 + 2, var5, Blocks.logs1.get().blockID,0,2); - var1.setBlock(var3, var4 + 3, var5, Blocks.logs1.get().blockID,0,2); - var1.setBlock(var3 + 1, var4 + 3, var5, Blocks.leavesColorized.get().blockID, 0, 2); - var1.setBlock(var3 - 1, var4 + 3, var5, Blocks.leavesColorized.get().blockID, 0, 2); - var1.setBlock(var3, var4 + 3, var5 + 1, Blocks.leavesColorized.get().blockID, 0, 2); - var1.setBlock(var3, var4 + 3, var5 - 1, Blocks.leavesColorized.get().blockID, 0, 2); - var1.setBlock(var3, var4 + 4, var5, Blocks.leavesColorized.get().blockID, 0, 2); - return true; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenPalmTree1.java b/src/minecraft/biomesoplenty/worldgen/WorldGenPalmTree1.java deleted file mode 100644 index 5139eff29..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenPalmTree1.java +++ /dev/null @@ -1,92 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenPalmTree1 extends WorldGenerator -{ - public boolean generate(World var1, Random var2, int var3, int var4, int var5) - { - while (var1.isAirBlock(var3, var4, var5) && var4 > 2) - { - --var4; - } - - int var6 = var1.getBlockId(var3, var4, var5); - - if (var6 != Block.grass.blockID) - { - return false; - } - else - { - for (int var7 = -2; var7 <= 2; ++var7) - { - for (int var8 = -2; var8 <= 2; ++var8) - { - if (var1.isAirBlock(var3 + var7, var4 - 1, var5 + var8) && var1.isAirBlock(var3 + var7, var4 - 2, var5 + var8)) - { - return false; - } - } - } - - var1.setBlock(var3, var4, var5, Block.dirt.blockID); - var1.setBlock(var3, var4 + 1, var5, Blocks.logs2.get().blockID, 3, 2); - var1.setBlock(var3, var4 + 2, var5, Blocks.logs2.get().blockID, 3, 2); - var1.setBlock(var3, var4 + 3, var5, Blocks.logs2.get().blockID, 3, 2); - var1.setBlock(var3, var4 + 4, var5, Blocks.logs2.get().blockID, 3, 2); - var1.setBlock(var3, var4 + 5, var5, Blocks.logs2.get().blockID, 3, 2); - var1.setBlock(var3, var4 + 6, var5, Blocks.logs2.get().blockID, 3, 2); - var1.setBlock(var3, var4 + 7, var5, Blocks.logs2.get().blockID, 3, 2); - var1.setBlock(var3, var4 + 8, var5, Blocks.logs2.get().blockID, 3, 2); - var1.setBlock(var3, var4 + 9, var5, Blocks.logs2.get().blockID, 3, 2); - var1.setBlock(var3, var4 + 10, var5, Blocks.logs2.get().blockID, 3, 2); - var1.setBlock(var3, var4 + 11, var5, Blocks.logs2.get().blockID, 3, 2); - var1.setBlock(var3, var4 + 12, var5, Blocks.logs2.get().blockID, 3, 2); - - var1.setBlock(var3 - 3, var4 + 11, var5, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3 + 3, var4 + 11, var5, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3, var4 + 11, var5 - 3, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3, var4 + 11, var5 + 3, Blocks.leavesColorized.get().blockID, 2, 2); - - var1.setBlock(var3 - 2, var4 + 11, var5, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3 + 2, var4 + 11, var5, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3, var4 + 11, var5 - 2, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3, var4 + 11, var5 + 2, Blocks.leavesColorized.get().blockID, 2, 2); - - var1.setBlock(var3 - 2, var4 + 12, var5, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3 + 2, var4 + 12, var5, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3, var4 + 12, var5 - 2, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3, var4 + 12, var5 + 2, Blocks.leavesColorized.get().blockID, 2, 2); - - var1.setBlock(var3 - 1, var4 + 12, var5, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3 + 1, var4 + 12, var5, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3, var4 + 12, var5 - 1, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3, var4 + 12, var5 + 1, Blocks.leavesColorized.get().blockID, 2, 2); - - var1.setBlock(var3 - 1, var4 + 13, var5 - 1, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3 + 1, var4 + 13, var5 - 1, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3 - 1, var4 + 13, var5 + 1, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3 + 1, var4 + 13, var5 + 1, Blocks.leavesColorized.get().blockID, 2, 2); - - var1.setBlock(var3 - 2, var4 + 12, var5 - 2, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3 + 2, var4 + 12, var5 - 2, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3 - 2, var4 + 12, var5 + 2, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3 + 2, var4 + 12, var5 + 2, Blocks.leavesColorized.get().blockID, 2, 2); - - var1.setBlock(var3 - 2, var4 + 14, var5, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3 + 2, var4 + 14, var5, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3, var4 + 14, var5 - 2, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3, var4 + 14, var5 + 2, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3, var4 + 13, var5, Blocks.leavesColorized.get().blockID, 2, 2); - return true; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenPalmTree3.java b/src/minecraft/biomesoplenty/worldgen/WorldGenPalmTree3.java deleted file mode 100644 index 1000cc1fe..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenPalmTree3.java +++ /dev/null @@ -1,79 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenPalmTree3 extends WorldGenerator -{ - public boolean generate(World var1, Random var2, int var3, int var4, int var5) - { - while (var1.isAirBlock(var3, var4, var5) && var4 > 2) - { - --var4; - } - - int var6 = var1.getBlockId(var3, var4, var5); - - if (var6 != Block.grass.blockID) - { - return false; - } - else - { - for (int var7 = -2; var7 <= 2; ++var7) - { - for (int var8 = -2; var8 <= 2; ++var8) - { - if (var1.isAirBlock(var3 + var7, var4 - 1, var5 + var8) && var1.isAirBlock(var3 + var7, var4 - 2, var5 + var8)) - { - return false; - } - } - } - - var1.setBlock(var3, var4, var5, Block.dirt.blockID); - var1.setBlock(var3, var4 + 1, var5, Blocks.logs2.get().blockID, 3, 2); - var1.setBlock(var3, var4 + 2, var5, Blocks.logs2.get().blockID, 3, 2); - var1.setBlock(var3, var4 + 3, var5, Blocks.logs2.get().blockID, 3, 2); - var1.setBlock(var3, var4 + 4, var5, Blocks.logs2.get().blockID, 3, 2); - var1.setBlock(var3, var4 + 5, var5, Blocks.logs2.get().blockID, 3, 2); - var1.setBlock(var3, var4 + 6, var5, Blocks.logs2.get().blockID, 3, 2); - var1.setBlock(var3, var4 + 7, var5, Blocks.logs2.get().blockID, 3, 2); - var1.setBlock(var3, var4 + 8, var5, Blocks.logs2.get().blockID, 3, 2); - - var1.setBlock(var3 - 2, var4 + 7, var5, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3 + 2, var4 + 7, var5, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3, var4 + 7, var5 - 2, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3, var4 + 7, var5 + 2, Blocks.leavesColorized.get().blockID, 2, 2); - - var1.setBlock(var3 - 1, var4 + 8, var5, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3 + 1, var4 + 8, var5, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3, var4 + 8, var5 - 1, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3, var4 + 8, var5 + 1, Blocks.leavesColorized.get().blockID, 2, 2); - - var1.setBlock(var3 - 2, var4 + 8, var5 - 2, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3 + 2, var4 + 8, var5 - 2, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3 - 2, var4 + 8, var5 + 2, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3 + 2, var4 + 8, var5 + 2, Blocks.leavesColorized.get().blockID, 2, 2); - - var1.setBlock(var3 - 1, var4 + 9, var5 - 1, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3 + 1, var4 + 9, var5 - 1, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3 - 1, var4 + 9, var5 + 1, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3 + 1, var4 + 9, var5 + 1, Blocks.leavesColorized.get().blockID, 2, 2); - - var1.setBlock(var3, var4 + 9, var5, Blocks.leavesColorized.get().blockID, 2, 2); - - var1.setBlock(var3 - 2, var4 + 10, var5, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3 + 2, var4 + 10, var5, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3, var4 + 10, var5 - 2, Blocks.leavesColorized.get().blockID, 2, 2); - var1.setBlock(var3, var4 + 10, var5 + 2, Blocks.leavesColorized.get().blockID, 2, 2); - return true; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenPit.java b/src/minecraft/biomesoplenty/worldgen/WorldGenPit.java deleted file mode 100644 index fdb6f2a00..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenPit.java +++ /dev/null @@ -1,69 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenPit extends WorldGenerator -{ - /** - * The Block ID that the generator is allowed to replace while generating the terrain. - */ - private int replaceID; - - public WorldGenPit(int par1) - { - this.replaceID = par1; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - if (par1World.isAirBlock(par3, par4, par5) && par1World.getBlockId(par3, par4 - 1, par5) == this.replaceID) - { - int var6 = par2Random.nextInt(32) + 32; - int var7 = par2Random.nextInt(4) + 2; - int var8; - int var9; - int var10; - int var11; - - for (var8 = par3 - var7; var8 <= par3 + var7; ++var8) - { - for (var9 = par5 - var7; var9 <= par5 + var7; ++var9) - { - var10 = var8 - par3; - var11 = var9 - par5; - - if (var10 * var10 + var11 * var11 <= var7 * var7 + 1 && par1World.getBlockId(var8, par4 - 1, var9) != this.replaceID) - { - return false; - } - } - } - - for (var8 = par4; var8 > par4 - var6 && var8 > 20; --var8) - { - for (var9 = par3 - var7; var9 <= par3 + var7; ++var9) - { - for (var10 = par5 - var7; var10 <= par5 + var7; ++var10) - { - var11 = var9 - par3; - int var12 = var10 - par5; - - if (var11 * var11 + var12 * var12 <= var7 * var7 + 1) - { - par1World.setBlock(var9, var8, var10, 0); - } - } - } - } - - return true; - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenPotatoes.java b/src/minecraft/biomesoplenty/worldgen/WorldGenPotatoes.java deleted file mode 100644 index cd2eeae71..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenPotatoes.java +++ /dev/null @@ -1,61 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenPotatoes extends WorldGenerator -{ - /** Stores ID for WorldGenTallGrass */ - private int tallGrassID; - private int tallGrassMetadata; - - public WorldGenPotatoes(int par1, int par2) - { - this.tallGrassID = par1; - this.tallGrassMetadata = par2; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var11; - - for (boolean var6 = false; ((var11 = par1World.getBlockId(par3, par4, par5)) == 0 || var11 == Block.leaves.blockID) && par4 > 0; --par4) - { - ; - } - - for (int var7 = 0; var7 < 128; ++var7) - { - int var8 = par3 + par2Random.nextInt(8) - par2Random.nextInt(8); - int var9 = par4 + par2Random.nextInt(4) - par2Random.nextInt(4); - int var10 = par5 + par2Random.nextInt(8) - par2Random.nextInt(8); - int var99 = par2Random.nextInt(7); - - if (par1World.getBlockMaterial(var8 - 1, var9 - 1, var10) != Material.water) - { - if (par1World.getBlockMaterial(var8 + 1, var9 - 1, var10) != Material.water) - { - if (par1World.getBlockMaterial(var8, var9 - 1, var10 - 1) != Material.water) - { - if (par1World.getBlockMaterial(var8, var9 - 1, var10 + 1) != Material.water) - { - return false; - } - } - } - } - - if (par1World.isAirBlock(var8, var9, var10) && Block.blocksList[this.tallGrassID].canBlockStay(par1World, var8, var9, var10)) - { - par1World.setBlock(var8, var9 - 1, var10, Block.tilledField.blockID); - par1World.setBlock(var8, var9, var10, Block.potato.blockID, var99, 2); - } - } - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenPrairie.java b/src/minecraft/biomesoplenty/worldgen/WorldGenPrairie.java deleted file mode 100644 index c46a3ce73..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenPrairie.java +++ /dev/null @@ -1,143 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenPrairie extends WorldGenerator -{ - public WorldGenPrairie(boolean par1) - { - super(par1); - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = 6; - int var7 = 2; - int var8 = var6 - var7; - int var9 = 3; - boolean var10 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 256) - { - int var11; - int var13; - int var15; - int var21; - - for (var11 = par4; var11 <= par4 + 1 + var6 && var10; ++var11) - { - boolean var12 = true; - - if (var11 - par4 < var7) - { - var21 = 0; - } - else - { - var21 = var9; - } - - for (var13 = par3 - var21; var13 <= par3 + var21 && var10; ++var13) - { - for (int var14 = par5 - var21; var14 <= par5 + var21 && var10; ++var14) - { - if (var11 >= 0 && var11 < 256) - { - var15 = par1World.getBlockId(var13, var11, var14); - - if (var15 != 0 && var15 != Block.leaves.blockID) - { - var10 = false; - } - } - else - { - var10 = false; - } - } - } - } - - if (!var10) - { - return false; - } - else - { - var11 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var11 == Block.grass.blockID || var11 == Block.dirt.blockID) && par4 < 256 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - var21 = par2Random.nextInt(2); - var13 = 1; - byte var22 = 0; - int var17; - int var16; - - for (var15 = 0; var15 <= var8; ++var15) - { - var16 = par4 + var6 - var15; - - for (var17 = par3 - var21; var17 <= par3 + var21; ++var17) - { - int var18 = var17 - par3; - - for (int var19 = par5 - var21; var19 <= par5 + var21; ++var19) - { - int var20 = var19 - par5; - - if ((Math.abs(var18) != var21 || Math.abs(var20) != var21 || var21 <= 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var17, var16, var19)]) - { - this.setBlockAndMetadata(par1World, var17, var16, var19, Block.leaves.blockID, 0); - } - } - } - - if (var21 >= var13) - { - var21 = var22; - var22 = 1; - ++var13; - - if (var13 > var9) - { - var13 = var9; - } - } - else - { - ++var21; - } - } - - var15 = par2Random.nextInt(3); - - for (var16 = 0; var16 < var6 - var15; ++var16) - { - var17 = par1World.getBlockId(par3, par4 + var16, par5); - - if (var17 == 0 || var17 == Block.leaves.blockID) - { - this.setBlockAndMetadata(par1World, par3, par4 + var16, par5, Block.wood.blockID, 0); - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenPromisedLandPortal.java b/src/minecraft/biomesoplenty/worldgen/WorldGenPromisedLandPortal.java deleted file mode 100644 index 51fea2a9a..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenPromisedLandPortal.java +++ /dev/null @@ -1,62 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenPromisedLandPortal extends WorldGenerator -{ - public boolean generate(World var1, Random var2, int var3, int var4, int var5) - { - var1.setBlock(0, 64, 0, Blocks.promisedPortal.get().blockID); - var1.setBlock(0, 64, 1, Blocks.promisedPortal.get().blockID); - var1.setBlock(1, 64, 0, Blocks.promisedPortal.get().blockID); - var1.setBlock(0, 64, 1, Blocks.promisedPortal.get().blockID); - var1.setBlock(0, 65, 0, 0); - var1.setBlock(0, 65, 1, 0); - var1.setBlock(1, 65, 0, 0); - var1.setBlock(0, 65, 1, 0); - var1.setBlock(0, 66, 0, 0); - var1.setBlock(0, 66, 1, 0); - var1.setBlock(1, 66, 0, 0); - var1.setBlock(0, 66, 1, 0); - var1.setBlock(0, 67, 0, 0); - var1.setBlock(0, 67, 1, 0); - var1.setBlock(1, 67, 0, 0); - var1.setBlock(0, 67, 1, 0); - var1.setBlock(0, 68, 0, 0); - var1.setBlock(0, 68, 1, 0); - var1.setBlock(1, 68, 0, 0); - var1.setBlock(0, 68, 1, 0); - var1.setBlock(0, 69, 0, 0); - var1.setBlock(0, 69, 1, 0); - var1.setBlock(1, 69, 0, 0); - var1.setBlock(0, 69, 1, 0); - var1.setBlock(0, 70, 0, 0); - var1.setBlock(0, 70, 1, 0); - var1.setBlock(1, 70, 0, 0); - var1.setBlock(0, 70, 1, 0); - var1.setBlock(0, 71, 0, 0); - var1.setBlock(0, 71, 1, 0); - var1.setBlock(1, 71, 0, 0); - var1.setBlock(0, 71, 1, 0); - var1.setBlock(0, 72, 0, 0); - var1.setBlock(0, 72, 1, 0); - var1.setBlock(1, 72, 0, 0); - var1.setBlock(0, 72, 1, 0); - var1.setBlock(0, 73, 0, 0); - var1.setBlock(0, 73, 1, 0); - var1.setBlock(1, 73, 0, 0); - var1.setBlock(0, 73, 1, 0); - var1.setBlock(0, 74, 0, 0); - var1.setBlock(0, 74, 1, 0); - var1.setBlock(1, 74, 0, 0); - var1.setBlock(0, 74, 1, 0); - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenPromisedShrub.java b/src/minecraft/biomesoplenty/worldgen/WorldGenPromisedShrub.java deleted file mode 100644 index fdfca62ea..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenPromisedShrub.java +++ /dev/null @@ -1,63 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenPromisedShrub extends WorldGenerator -{ - private int field_76527_a; - private int field_76526_b; - - public WorldGenPromisedShrub(int par1, int par2) - { - this.field_76526_b = par1; - this.field_76527_a = par2; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var15; - - for (boolean var6 = false; ((var15 = par1World.getBlockId(par3, par4, par5)) == 0 || var15 == Block.leaves.blockID) && par4 > 0; --par4) - { - ; - } - - int var7 = par1World.getBlockId(par3, par4, par5); - - if (var7 == Blocks.holyGrass.get().blockID) - { - ++par4; - this.setBlockAndMetadata(par1World, par3, par4, par5, Block.wood.blockID, this.field_76526_b); - - for (int var8 = par4; var8 <= par4 + 1; ++var8) - { - int var9 = var8 - par4; - int var10 = 2 - var9; - - for (int var11 = par3 - var10; var11 <= par3 + var10; ++var11) - { - int var12 = var11 - par3; - - for (int var13 = par5 - var10; var13 <= par5 + var10; ++var13) - { - int var14 = var13 - par5; - - if ((Math.abs(var12) != var10 || Math.abs(var14) != var10 || par2Random.nextInt(2) != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var11, var8, var13)]) - { - this.setBlockAndMetadata(par1World, var11, var8, var13, Block.leaves.blockID, this.field_76527_a); - } - } - } - } - } - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenPromisedTree.java b/src/minecraft/biomesoplenty/worldgen/WorldGenPromisedTree.java deleted file mode 100644 index f698c19a8..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenPromisedTree.java +++ /dev/null @@ -1,147 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenPromisedTree extends WorldGenerator -{ - public WorldGenPromisedTree(boolean par1) - { - super(par1); - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(9) + 9; - int var7 = 2 + par2Random.nextInt(4); - int var8 = var6 - var7; - int var9 = 2 + par2Random.nextInt(2); - boolean var10 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 256) - { - int var11; - int var13; - int var15; - int var21; - - for (var11 = par4; var11 <= par4 + 1 + var6 && var10; ++var11) - { - boolean var12 = true; - - if (var11 - par4 < var7) - { - var21 = 0; - } - else - { - var21 = var9; - } - - for (var13 = par3 - var21; var13 <= par3 + var21 && var10; ++var13) - { - for (int var14 = par5 - var21; var14 <= par5 + var21 && var10; ++var14) - { - if (var11 >= 0 && var11 < 256) - { - var15 = par1World.getBlockId(var13, var11, var14); - - if (var15 != 0 && var15 != Blocks.leaves1.get().blockID) - { - var10 = false; - } - } - else - { - var10 = false; - } - } - } - } - - if (!var10) - { - return false; - } - else - { - var11 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var11 == Blocks.holyGrass.get().blockID) && par4 < 256 - var6 - 1) - { - this.setBlockAndMetadata(par1World, par3, par4 - 1, par5, Blocks.holyGrass.get().blockID, 0); - var21 = par2Random.nextInt(2); - var13 = 1; - byte var22 = 0; - int var17; - int var16; - - for (var15 = 0; var15 <= var8; ++var15) - { - var16 = par4 + var6 - var15; - - for (var17 = par3 - var21; var17 <= par3 + var21; ++var17) - { - int var18 = var17 - par3; - - for (int var19 = par5 - var21; var19 <= par5 + var21; ++var19) - { - int var20 = var19 - par5; - - if ((Math.abs(var18) != var21 || Math.abs(var20) != var21 || var21 <= 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var17, var16, var19)]) - { - this.setBlockAndMetadata(par1World, var17, var16, var19, Blocks.leaves1.get().blockID, 6); - } - } - } - - if (var21 >= var13) - { - var21 = var22; - var22 = 1; - ++var13; - - if (var13 > var9) - { - var13 = var9; - } - } - else - { - ++var21; - } - } - - var15 = par2Random.nextInt(3); - - for (var16 = 0; var16 < var6 - var15; ++var16) - { - var17 = par1World.getBlockId(par3, par4 + var16, par5); - - if (var17 == 0 || var17 == Blocks.leaves1.get().blockID) - { - this.setBlockAndMetadata(par1World, par3, par4 + var16, par5, Blocks.logs2.get().blockID,0); - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenPromisedTree2.java b/src/minecraft/biomesoplenty/worldgen/WorldGenPromisedTree2.java deleted file mode 100644 index f5f296443..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenPromisedTree2.java +++ /dev/null @@ -1,124 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenPromisedTree2 extends WorldGenerator -{ - public WorldGenPromisedTree2(boolean par1) - { - super(par1); - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(3) + 5; - boolean var7 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 256) - { - int var8; - int var10; - int var11; - int var12; - - for (var8 = par4; var8 <= par4 + 1 + var6; ++var8) - { - byte var9 = 1; - - if (var8 == par4) - { - var9 = 0; - } - - if (var8 >= par4 + 1 + var6 - 2) - { - var9 = 2; - } - - for (var10 = par3 - var9; var10 <= par3 + var9 && var7; ++var10) - { - for (var11 = par5 - var9; var11 <= par5 + var9 && var7; ++var11) - { - if (var8 >= 0 && var8 < 256) - { - var12 = par1World.getBlockId(var10, var8, var11); - - if (var12 != 0 && var12 != Blocks.leaves1.get().blockID) - { - var7 = false; - } - } - else - { - var7 = false; - } - } - } - } - - if (!var7) - { - return false; - } - else - { - var8 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var8 == Blocks.holyGrass.get().blockID) && par4 < 256 - var6 - 1) - { - this.setBlockAndMetadata(par1World, par3, par4 - 1, par5, Blocks.holyGrass.get().blockID, 0); - int var16; - - for (var16 = par4 - 3 + var6; var16 <= par4 + var6; ++var16) - { - var10 = var16 - (par4 + var6); - var11 = 1 - var10 / 2; - - for (var12 = par3 - var11; var12 <= par3 + var11; ++var12) - { - int var13 = var12 - par3; - - for (int var14 = par5 - var11; var14 <= par5 + var11; ++var14) - { - int var15 = var14 - par5; - - if ((Math.abs(var13) != var11 || Math.abs(var15) != var11 || par2Random.nextInt(2) != 0 && var10 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var12, var16, var14)]) - { - this.setBlockAndMetadata(par1World, var12, var16, var14, Blocks.leaves1.get().blockID, 2); - } - } - } - } - - for (var16 = 0; var16 < var6; ++var16) - { - var10 = par1World.getBlockId(par3, par4 + var16, par5); - - if (var10 == 0 || var10 == Blocks.leaves1.get().blockID) - { - this.setBlockAndMetadata(par1World, par3, par4 + var16, par5, Blocks.logs2.get().blockID,1); - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenPromisedTree3.java b/src/minecraft/biomesoplenty/worldgen/WorldGenPromisedTree3.java deleted file mode 100644 index ddb411e43..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenPromisedTree3.java +++ /dev/null @@ -1,181 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenPromisedTree3 extends WorldGenerator -{ - public WorldGenPromisedTree3(boolean var1) - { - super(var1); - } - - public boolean generate(World var1, Random var2, int var3, int var4, int var5) - { - int var6 = var2.nextInt(15) + 20; - int var7 = var2.nextInt(5) + 5; - int var8 = var6 - var7; - int var9 = 2 + var2.nextInt(2); - boolean var10 = true; - - if (var4 >= 1 && var4 + var6 + 1 <= 256) - { - int var11; - int var13; - int var14; - int var15; - int var24; - - for (var11 = var4; var11 <= var4 + 1 + var6 && var10; ++var11) - { - boolean var12 = true; - - if (var11 - var4 < var7) - { - var24 = 0; - } - else - { - var24 = var9; - } - - for (var13 = var3 - var24; var13 <= var3 + var24 && var10; ++var13) - { - for (var14 = var5 - var24; var14 <= var5 + var24 && var10; ++var14) - { - if (var11 >= 0 && var11 < 256) - { - var15 = var1.getBlockId(var13, var11, var14); - - if (var15 != 0 && var15 != Block.leaves.blockID) - { - var10 = false; - } - } - else - { - var10 = false; - } - } - } - } - - if (!var10) - { - return false; - } - else - { - var11 = var1.getBlockId(var3, var4 - 1, var5); - var24 = var1.getBlockId(var3 - 1, var4 - 1, var5); - var13 = var1.getBlockId(var3, var4 - 1, var5 - 1); - var14 = var1.getBlockId(var3 - 1, var4 - 1, var5 - 1); - - if ((var11 == Blocks.holyGrass.get().blockID) && var4 < 256 - var6 - 1) - { - if ((var24 == Blocks.holyGrass.get().blockID) && var4 < 256 - var6 - 1) - { - if ((var13 == Blocks.holyGrass.get().blockID) && var4 < 256 - var6 - 1) - { - if ((var14 == Blocks.holyGrass.get().blockID) && var4 < 256 - var6 - 1) - { - var1.setBlock(var3, var4 - 1, var5, Blocks.holyGrass.get().blockID, 0, 2); - var1.setBlock(var3 - 1, var4 - 1, var5, Blocks.holyGrass.get().blockID, 0, 2); - var1.setBlock(var3, var4 - 1, var5 - 1, Blocks.holyGrass.get().blockID, 0, 2); - var1.setBlock(var3 - 1, var4 - 1, var5 - 1, Blocks.holyGrass.get().blockID, 0, 2); - var15 = var2.nextInt(2); - int var16 = 1; - boolean var17 = false; - int var19; - int var18; - int var20; - - for (var18 = 0; var18 <= var8; ++var18) - { - var19 = var4 + var6 - var18; - - for (var20 = var3 - var15; var20 <= var3 + var15; ++var20) - { - int var21 = var20 - var3; - - for (int var22 = var5 - var15; var22 <= var5 + var15; ++var22) - { - int var23 = var22 - var5; - - if ((Math.abs(var21) != var15 || Math.abs(var23) != var15 || var15 <= 0) && !Block.opaqueCubeLookup[var1.getBlockId(var20, var19, var22)]) - { - this.setBlockAndMetadata(var1, var20, var19, var22, Block.leaves.blockID, 0); - this.setBlockAndMetadata(var1, var20 - 1, var19, var22, Block.leaves.blockID, 0); - this.setBlockAndMetadata(var1, var20, var19, var22 - 1, Block.leaves.blockID, 0); - this.setBlockAndMetadata(var1, var20 - 1, var19, var22 - 1, Block.leaves.blockID, 0); - } - } - } - - if (var15 >= var16) - { - var15 = var17 ? 1 : 0; - var17 = true; - ++var16; - - if (var16 > var9) - { - var16 = var9; - } - } - else - { - ++var15; - } - } - - var18 = var2.nextInt(3); - - for (var19 = 0; var19 < var6 - var18; ++var19) - { - var20 = var1.getBlockId(var3, var4 + var19, var5); - - if (var20 == 0 || var20 == Block.leaves.blockID) - { - this.setBlockAndMetadata(var1, var3, var4 + var19, var5, Block.wood.blockID, 0); - this.setBlockAndMetadata(var1, var3 - 1, var4 + var19, var5, Block.wood.blockID, 0); - this.setBlockAndMetadata(var1, var3, var4 + var19, var5 - 1, Block.wood.blockID, 0); - this.setBlockAndMetadata(var1, var3 - 1, var4 + var19, var5 - 1, Block.wood.blockID, 0); - } - } - - return true; - } - else - { - return false; - } - } - else - { - return false; - } - } - else - { - return false; - } - } - else - { - return false; - } - } - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenPromisedWillow.java b/src/minecraft/biomesoplenty/worldgen/WorldGenPromisedWillow.java deleted file mode 100644 index 70a64b1c2..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenPromisedWillow.java +++ /dev/null @@ -1,263 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenPromisedWillow extends WorldGenerator -{ - public boolean generate(World var1, Random var2, int var3, int var4, int var5) - { - while (var1.isAirBlock(var3, var4, var5) && var4 > 2) - { - --var4; - } - - int var6 = var1.getBlockId(var3, var4, var5); - - if (var6 != Blocks.holyGrass.get().blockID && var6 != Blocks.holyStone.get().blockID && var6 != Block.stone.blockID) - { - return false; - } - else - { - for (int var7 = -2; var7 <= 2; ++var7) - { - for (int var8 = -2; var8 <= 2; ++var8) - { - if (var1.isAirBlock(var3 + var7, var4 - 1, var5 + var8) && var1.isAirBlock(var3 + var7, var4 - 2, var5 + var8)) - { - return false; - } - } - } - - if (var1.isAirBlock(var3 - 1, var4, var5)) - { - var1.setBlock(var3 - 1, var4, var5, Blocks.willow.get().blockID, 8, 2); - } - if (var1.isAirBlock(var3 - 1, var4 - 1, var5)) - { - var1.setBlock(var3 - 1, var4 - 1, var5, Blocks.willow.get().blockID, 8, 2); - } - if (var1.isAirBlock(var3 - 1, var4 - 2, var5)) - { - var1.setBlock(var3 - 1, var4 - 2, var5, Blocks.willow.get().blockID, 8, 2); - } - if (var1.isAirBlock(var3 - 1, var4 - 3, var5)) - { - var1.setBlock(var3 - 1, var4 - 3, var5, Blocks.willow.get().blockID, 8, 2); - } - if (var1.isAirBlock(var3 - 1, var4 - 4, var5)) - { - var1.setBlock(var3 - 1, var4 - 4, var5, Blocks.willow.get().blockID, 8, 2); - } - if (var1.isAirBlock(var3 - 1, var4 - 5, var5)) - { - var1.setBlock(var3 - 1, var4 - 5, var5, Blocks.willow.get().blockID, 8, 2); - } - - if (var1.isAirBlock(var3 + 1, var4, var5)) - { - var1.setBlock(var3 + 1, var4, var5, Blocks.willow.get().blockID, 2, 2); - } - if (var1.isAirBlock(var3 + 1, var4 - 1, var5)) - { - var1.setBlock(var3 + 1, var4 - 1, var5, Blocks.willow.get().blockID, 2, 2); - } - if (var1.isAirBlock(var3 + 1, var4 - 2, var5)) - { - var1.setBlock(var3 + 1, var4 - 2, var5, Blocks.willow.get().blockID, 2, 2); - } - if (var1.isAirBlock(var3 + 1, var4 - 3, var5)) - { - var1.setBlock(var3 + 1, var4 - 3, var5, Blocks.willow.get().blockID, 2, 2); - } - if (var1.isAirBlock(var3 + 1, var4 - 4, var5)) - { - var1.setBlock(var3 + 1, var4 - 4, var5, Blocks.willow.get().blockID, 2, 2); - } - if (var1.isAirBlock(var3 + 1, var4 - 5, var5)) - { - var1.setBlock(var3 + 1, var4 - 5, var5, Blocks.willow.get().blockID, 2, 2); - } - if (var1.isAirBlock(var3 + 1, var4 - 6, var5)) - { - var1.setBlock(var3 + 1, var4 - 6, var5, Blocks.willow.get().blockID, 2, 2); - } - if (var1.isAirBlock(var3 + 1, var4 - 7, var5)) - { - var1.setBlock(var3 + 1, var4 - 7, var5, Blocks.willow.get().blockID, 2, 2); - } - if (var1.isAirBlock(var3 + 1, var4 - 8, var5)) - { - var1.setBlock(var3 + 1, var4 - 8, var5, Blocks.willow.get().blockID, 2, 2); - } - if (var1.isAirBlock(var3 + 1, var4 - 9, var5)) - { - var1.setBlock(var3 + 1, var4 - 9, var5, Blocks.willow.get().blockID, 2, 2); - } - if (var1.isAirBlock(var3 + 1, var4 - 10, var5)) - { - var1.setBlock(var3 + 1, var4 - 10, var5, Blocks.willow.get().blockID, 2, 2); - } - - if (var1.isAirBlock(var3, var4, var5 - 1)) - { - var1.setBlock(var3, var4, var5 - 1, Blocks.willow.get().blockID, 1, 2); - } - if (var1.isAirBlock(var3, var4 - 1, var5 - 1)) - { - var1.setBlock(var3, var4 - 1, var5 - 1, Blocks.willow.get().blockID, 1, 2); - } - if (var1.isAirBlock(var3, var4 - 2, var5 - 1)) - { - var1.setBlock(var3, var4 - 2, var5 - 1, Blocks.willow.get().blockID, 1, 2); - } - if (var1.isAirBlock(var3, var4 - 3, var5 - 1)) - { - var1.setBlock(var3, var4 - 3, var5 - 1, Blocks.willow.get().blockID, 1, 2); - } - if (var1.isAirBlock(var3, var4 - 4, var5 - 1)) - { - var1.setBlock(var3, var4 - 4, var5 - 1, Blocks.willow.get().blockID, 1, 2); - } - if (var1.isAirBlock(var3, var4 - 5, var5 - 1)) - { - var1.setBlock(var3, var4 - 5, var5 - 1, Blocks.willow.get().blockID, 1, 2); - } - if (var1.isAirBlock(var3, var4 - 6, var5 - 1)) - { - var1.setBlock(var3, var4 - 6, var5 - 1, Blocks.willow.get().blockID, 1, 2); - } - if (var1.isAirBlock(var3, var4 - 7, var5 - 1)) - { - var1.setBlock(var3, var4 - 7, var5 - 1, Blocks.willow.get().blockID, 1, 2); - } - if (var1.isAirBlock(var3, var4 - 8, var5 - 1)) - { - var1.setBlock(var3, var4 - 8, var5 - 1, Blocks.willow.get().blockID, 1, 2); - } - if (var1.isAirBlock(var3, var4 - 9, var5 - 1)) - { - var1.setBlock(var3, var4 - 9, var5 - 1, Blocks.willow.get().blockID, 1, 2); - } - if (var1.isAirBlock(var3, var4 - 10, var5 - 1)) - { - var1.setBlock(var3, var4 - 10, var5 - 1, Blocks.willow.get().blockID, 1, 2); - } - if (var1.isAirBlock(var3, var4 - 11, var5 - 1)) - { - var1.setBlock(var3, var4 - 11, var5 - 1, Blocks.willow.get().blockID, 1, 2); - } - if (var1.isAirBlock(var3, var4 - 12, var5 - 1)) - { - var1.setBlock(var3, var4 - 12, var5 - 1, Blocks.willow.get().blockID, 1, 2); - } - if (var1.isAirBlock(var3, var4 - 13, var5 - 1)) - { - var1.setBlock(var3, var4 - 13, var5 - 1, Blocks.willow.get().blockID, 1, 2); - } - if (var1.isAirBlock(var3, var4 - 14, var5 - 1)) - { - var1.setBlock(var3, var4 - 14, var5 - 1, Blocks.willow.get().blockID, 1, 2); - } - if (var1.isAirBlock(var3, var4 - 15, var5 - 1)) - { - var1.setBlock(var3, var4 - 15, var5 - 1, Blocks.willow.get().blockID, 1, 2); - } - - if (var1.isAirBlock(var3, var4, var5 + 1)) - { - var1.setBlock(var3, var4, var5 + 1, Blocks.willow.get().blockID, 4, 2); - } - if (var1.isAirBlock(var3, var4 - 1, var5 + 1)) - { - var1.setBlock(var3, var4 - 1, var5 + 1, Blocks.willow.get().blockID, 4, 2); - } - if (var1.isAirBlock(var3, var4 - 2, var5 + 1)) - { - var1.setBlock(var3, var4 - 2, var5 + 1, Blocks.willow.get().blockID, 4, 2); - } - if (var1.isAirBlock(var3, var4 - 3, var5 + 1)) - { - var1.setBlock(var3, var4 - 3, var5 + 1, Blocks.willow.get().blockID, 4, 2); - } - if (var1.isAirBlock(var3, var4 - 4, var5 + 1)) - { - var1.setBlock(var3, var4 - 4, var5 + 1, Blocks.willow.get().blockID, 4, 2); - } - if (var1.isAirBlock(var3, var4 - 5, var5 + 1)) - { - var1.setBlock(var3, var4 - 5, var5 + 1, Blocks.willow.get().blockID, 4, 2); - } - if (var1.isAirBlock(var3, var4 - 6, var5 + 1)) - { - var1.setBlock(var3, var4 - 6, var5 + 1, Blocks.willow.get().blockID, 4, 2); - } - if (var1.isAirBlock(var3, var4 - 7, var5 + 1)) - { - var1.setBlock(var3, var4 - 7, var5 + 1, Blocks.willow.get().blockID, 4, 2); - } - if (var1.isAirBlock(var3, var4 - 8, var5 + 1)) - { - var1.setBlock(var3, var4 - 8, var5 + 1, Blocks.willow.get().blockID, 4, 2); - } - if (var1.isAirBlock(var3, var4 - 9, var5 + 1)) - { - var1.setBlock(var3, var4 - 9, var5 + 1, Blocks.willow.get().blockID, 4, 2); - } - if (var1.isAirBlock(var3, var4 - 10, var5 + 1)) - { - var1.setBlock(var3, var4 - 10, var5 + 1, Blocks.willow.get().blockID, 4, 2); - } - if (var1.isAirBlock(var3, var4 - 11, var5 + 1)) - { - var1.setBlock(var3, var4 - 11, var5 + 1, Blocks.willow.get().blockID, 4, 2); - } - if (var1.isAirBlock(var3, var4 - 12, var5 + 1)) - { - var1.setBlock(var3, var4 - 12, var5 + 1, Blocks.willow.get().blockID, 4, 2); - } - if (var1.isAirBlock(var3, var4 - 13, var5 + 1)) - { - var1.setBlock(var3, var4 - 13, var5 + 1, Blocks.willow.get().blockID, 4, 2); - } - if (var1.isAirBlock(var3, var4 - 14, var5 + 1)) - { - var1.setBlock(var3, var4 - 14, var5 + 1, Blocks.willow.get().blockID, 4, 2); - } - if (var1.isAirBlock(var3, var4 - 15, var5 + 1)) - { - var1.setBlock(var3, var4 - 15, var5 + 1, Blocks.willow.get().blockID, 4, 2); - } - if (var1.isAirBlock(var3, var4 - 16, var5 + 1)) - { - var1.setBlock(var3, var4 - 16, var5 + 1, Blocks.willow.get().blockID, 4, 2); - } - if (var1.isAirBlock(var3, var4 - 17, var5 + 1)) - { - var1.setBlock(var3, var4 - 17, var5 + 1, Blocks.willow.get().blockID, 4, 2); - } - if (var1.isAirBlock(var3, var4 - 18, var5 + 1)) - { - var1.setBlock(var3, var4 - 18, var5 + 1, Blocks.willow.get().blockID, 4, 2); - } - if (var1.isAirBlock(var3, var4 - 19, var5 + 1)) - { - var1.setBlock(var3, var4 - 19, var5 + 1, Blocks.willow.get().blockID, 4, 2); - } - if (var1.isAirBlock(var3, var4 - 20, var5 + 1)) - { - var1.setBlock(var3, var4 - 20, var5 + 1, Blocks.willow.get().blockID, 4, 2); - } - - return true; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenQuagmire.java b/src/minecraft/biomesoplenty/worldgen/WorldGenQuagmire.java deleted file mode 100644 index 14f24c128..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenQuagmire.java +++ /dev/null @@ -1,80 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenQuagmire extends WorldGenerator -{ - /** The block ID of the ore to be placed using this generator. */ - private int minableBlockId; - - /** The number of blocks to generate. */ - private int numberOfBlocks; - - public WorldGenQuagmire(int par1, int par2) - { - this.minableBlockId = par1; - this.numberOfBlocks = par2; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - float var6 = par2Random.nextFloat() * (float)Math.PI; - double var7 = (double)((float)(par3 + 8) + MathHelper.sin(var6) * (float)this.numberOfBlocks / 8.0F); - double var9 = (double)((float)(par3 + 8) - MathHelper.sin(var6) * (float)this.numberOfBlocks / 8.0F); - double var11 = (double)((float)(par5 + 8) + MathHelper.cos(var6) * (float)this.numberOfBlocks / 8.0F); - double var13 = (double)((float)(par5 + 8) - MathHelper.cos(var6) * (float)this.numberOfBlocks / 8.0F); - double var15 = (double)(par4 + par2Random.nextInt(3) - 2); - double var17 = (double)(par4 + par2Random.nextInt(3) - 2); - - for (int var19 = 0; var19 <= this.numberOfBlocks; ++var19) - { - double var20 = var7 + (var9 - var7) * (double)var19 / (double)this.numberOfBlocks; - double var22 = var15 + (var17 - var15) * (double)var19 / (double)this.numberOfBlocks; - double var24 = var11 + (var13 - var11) * (double)var19 / (double)this.numberOfBlocks; - double var26 = par2Random.nextDouble() * (double)this.numberOfBlocks / 16.0D; - double var28 = (double)(MathHelper.sin((float)var19 * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * var26 + 1.0D; - double var30 = (double)(MathHelper.sin((float)var19 * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * var26 + 1.0D; - int var32 = MathHelper.floor_double(var20 - var28 / 2.0D); - int var33 = MathHelper.floor_double(var22 - var30 / 2.0D); - int var34 = MathHelper.floor_double(var24 - var28 / 2.0D); - int var35 = MathHelper.floor_double(var20 + var28 / 2.0D); - int var36 = MathHelper.floor_double(var22 + var30 / 2.0D); - int var37 = MathHelper.floor_double(var24 + var28 / 2.0D); - - for (int var38 = var32; var38 <= var35; ++var38) - { - double var39 = ((double)var38 + 0.5D - var20) / (var28 / 2.0D); - - if (var39 * var39 < 1.0D) - { - for (int var41 = var33; var41 <= var36; ++var41) - { - double var42 = ((double)var41 + 0.5D - var22) / (var30 / 2.0D); - - if (var39 * var39 + var42 * var42 < 1.0D) - { - for (int var44 = var34; var44 <= var37; ++var44) - { - double var45 = ((double)var44 + 0.5D - var24) / (var28 / 2.0D); - - if (var39 * var39 + var42 * var42 + var45 * var45 < 1.0D && par1World.getBlockId(var38, var41, var44) == Blocks.mud.get().blockID) - { - par1World.setBlock(var38, var41, var44, this.minableBlockId); - } - } - } - } - } - } - } - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenQuicksand.java b/src/minecraft/biomesoplenty/worldgen/WorldGenQuicksand.java deleted file mode 100644 index e81430926..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenQuicksand.java +++ /dev/null @@ -1,62 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; -import biomesoplenty.api.Blocks; - -public class WorldGenQuicksand extends WorldGenerator -{ - public boolean generate(World var1, Random var2, int var3, int var4, int var5) - { - while (var1.isAirBlock(var3, var4, var5) && var4 > 2) - { - --var4; - } - - int var6 = var1.getBlockId(var3, var4, var5); - int var96 = var1.getBlockId(var3 - 1, var4, var5); - int var97 = var1.getBlockId(var3 + 1, var4, var5); - int var98 = var1.getBlockId(var3, var4, var5 - 1); - int var99 = var1.getBlockId(var3, var4, var5 + 1); - - if (var6 != Block.grass.blockID && var96 != Block.grass.blockID && var97 != Block.grass.blockID && var98 != Block.grass.blockID && var99 != Block.grass.blockID) - { - return false; - } - else - { - for (int var7 = -2; var7 <= 2; ++var7) - { - for (int var8 = -2; var8 <= 2; ++var8) - { - if (var1.isAirBlock(var3 + var7, var4 - 1, var5 + var8) && var1.isAirBlock(var3 + var7, var4 - 2, var5 + var8)) - { - return false; - } - } - } - - var1.setBlock(var3, var4 - 3, var5, Blocks.mud.get().blockID, 1, 2); - var1.setBlock(var3, var4 - 2, var5, Blocks.mud.get().blockID, 1, 2); - var1.setBlock(var3, var4 - 1, var5, Blocks.mud.get().blockID, 1, 2); - var1.setBlock(var3, var4, var5, 0); - - var1.setBlock(var3 - 1, var4 - 2, var5, Blocks.mud.get().blockID, 1, 2); - var1.setBlock(var3 + 1, var4 - 2, var5, Blocks.mud.get().blockID, 1, 2); - var1.setBlock(var3, var4 - 2, var5 - 1, Blocks.mud.get().blockID, 1, 2); - var1.setBlock(var3, var4 - 2, var5 + 1, Blocks.mud.get().blockID, 1, 2); - var1.setBlock(var3 - 1, var4 - 1, var5, Blocks.mud.get().blockID, 1, 2); - var1.setBlock(var3 + 1, var4 - 1, var5, Blocks.mud.get().blockID, 1, 2); - var1.setBlock(var3, var4 - 1, var5 - 1, Blocks.mud.get().blockID, 1, 2); - var1.setBlock(var3, var4 - 1, var5 + 1, Blocks.mud.get().blockID, 1, 2); - var1.setBlock(var3 - 1, var4, var5, 0); - var1.setBlock(var3 + 1, var4, var5, 0); - var1.setBlock(var3, var4, var5 - 1, 0); - var1.setBlock(var3, var4, var5 + 1, 0); - return true; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenQuicksand2.java b/src/minecraft/biomesoplenty/worldgen/WorldGenQuicksand2.java deleted file mode 100644 index 53913396a..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenQuicksand2.java +++ /dev/null @@ -1,57 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; -import biomesoplenty.api.Blocks; - -public class WorldGenQuicksand2 extends WorldGenerator -{ - public boolean generate(World var1, Random var2, int var3, int var4, int var5) - { - while (var1.isAirBlock(var3, var4, var5) && var4 > 2) - { - --var4; - } - - int var6 = var1.getBlockId(var3, var4, var5); - int var96 = var1.getBlockId(var3 - 1, var4, var5); - int var97 = var1.getBlockId(var3 + 1, var4, var5); - int var98 = var1.getBlockId(var3, var4, var5 - 1); - int var99 = var1.getBlockId(var3, var4, var5 + 1); - - if (var6 != Block.sand.blockID && var96 != Block.sand.blockID && var97 != Block.sand.blockID && var98 != Block.sand.blockID && var99 != Block.sand.blockID) - { - return false; - } - else - { - for (int var7 = -2; var7 <= 2; ++var7) - { - for (int var8 = -2; var8 <= 2; ++var8) - { - if (var1.isAirBlock(var3 + var7, var4 - 1, var5 + var8) && var1.isAirBlock(var3 + var7, var4 - 2, var5 + var8)) - { - return false; - } - } - } - - var1.setBlock(var3, var4 - 2, var5, Blocks.mud.get().blockID, 1, 2); - var1.setBlock(var3, var4 - 1, var5, Blocks.mud.get().blockID, 1, 2); - var1.setBlock(var3, var4, var5, Blocks.mud.get().blockID, 1, 2); - - var1.setBlock(var3 - 1, var4 - 1, var5, Blocks.mud.get().blockID, 1, 2); - var1.setBlock(var3 + 1, var4 - 1, var5, Blocks.mud.get().blockID, 1, 2); - var1.setBlock(var3, var4 - 1, var5 - 1, Blocks.mud.get().blockID, 1, 2); - var1.setBlock(var3, var4 - 1, var5 + 1, Blocks.mud.get().blockID, 1, 2); - var1.setBlock(var3 - 1, var4, var5, Blocks.mud.get().blockID, 1, 2); - var1.setBlock(var3 + 1, var4, var5, Blocks.mud.get().blockID, 1, 2); - var1.setBlock(var3, var4, var5 - 1, Blocks.mud.get().blockID, 1, 2); - var1.setBlock(var3, var4, var5 + 1, Blocks.mud.get().blockID, 1, 2); - return true; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenRainforest1.java b/src/minecraft/biomesoplenty/worldgen/WorldGenRainforest1.java deleted file mode 100644 index 63cffc204..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenRainforest1.java +++ /dev/null @@ -1,255 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenRainforest1 extends WorldGenerator -{ - /** The minimum height of a generated tree. */ - private final int minTreeHeight; - - /** True if this tree should grow Vines. */ - private final boolean vinesGrow; - - /** The metadata value of the wood to use in tree generation. */ - private final int metaWood; - - /** The metadata value of the leaves to use in tree generation. */ - private final int metaLeaves; - - public WorldGenRainforest1(boolean par1) - { - this(par1, 8, 3, 3, false); - } - - public WorldGenRainforest1(boolean par1, int par2, int par3, int par4, boolean par5) - { - super(par1); - this.minTreeHeight = par2; - this.metaWood = par3; - this.metaLeaves = par4; - this.vinesGrow = par5; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(8) + this.minTreeHeight; - boolean var7 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 256) - { - int var8; - byte var9; - int var11; - int var12; - - for (var8 = par4; var8 <= par4 + 1 + var6; ++var8) - { - var9 = 1; - - if (var8 == par4) - { - var9 = 0; - } - - if (var8 >= par4 + 1 + var6 - 2) - { - var9 = 2; - } - - for (int var10 = par3 - var9; var10 <= par3 + var9 && var7; ++var10) - { - for (var11 = par5 - var9; var11 <= par5 + var9 && var7; ++var11) - { - if (var8 >= 0 && var8 < 256) - { - var12 = par1World.getBlockId(var10, var8, var11); - - if (var12 != 0 && var12 != Block.leaves.blockID && var12 != Block.grass.blockID && var12 != Block.dirt.blockID && var12 != Block.wood.blockID) - { - var7 = false; - } - } - else - { - var7 = false; - } - } - } - } - - if (!var7) - { - return false; - } - else - { - var8 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var8 == Block.grass.blockID || var8 == Block.dirt.blockID) && par4 < 256 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - var9 = 3; - byte var18 = 0; - int var13; - int var14; - int var15; - - for (var11 = par4 - var9 + var6; var11 <= par4 + var6; ++var11) - { - var12 = var11 - (par4 + var6); - var13 = var18 + 1 - var12; - - for (var14 = par3 - var13; var14 <= par3 + var13; ++var14) - { - var15 = var14 - par3; - - for (int var16 = par5 - var13; var16 <= par5 + var13; ++var16) - { - int var17 = var16 - par5; - - if ((Math.abs(var15) != var13 || Math.abs(var17) != var13 || par2Random.nextInt(2) != 0 && var12 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var14, var11, var16)]) - { - this.setBlockAndMetadata(par1World, var14, var11, var16, Block.leaves.blockID, this.metaLeaves); - } - } - } - } - - for (var11 = 0; var11 < var6; ++var11) - { - var12 = par1World.getBlockId(par3, par4 + var11, par5); - - if (var12 == 0 || var12 == Block.leaves.blockID) - { - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5, Block.wood.blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 - 3, par4 + (var6 - 3), par5, Block.wood.blockID, 7); - this.setBlockAndMetadata(par1World, par3 + 3, par4 + (var6 - 3), par5, Block.wood.blockID, 7); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 3), par5 - 3, Block.wood.blockID, 11); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 3), par5 + 3, Block.wood.blockID, 11); - this.setBlockAndMetadata(par1World, par3 - 2, par4 + (var6 - 4), par5, Block.wood.blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 + 2, par4 + (var6 - 4), par5, Block.wood.blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 4), par5 - 2, Block.wood.blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 4), par5 + 2, Block.wood.blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 - 2, par4 + (var6 - 5), par5, Block.wood.blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 + 2, par4 + (var6 - 5), par5, Block.wood.blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 5), par5 - 2, Block.wood.blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 5), par5 + 2, Block.wood.blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var6 - 6), par5, Block.wood.blockID, 7); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var6 - 6), par5, Block.wood.blockID, 7); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 6), par5 - 1, Block.wood.blockID, 11); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 6), par5 + 1, Block.wood.blockID, 11); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 3), par5, Block.leaves.blockID, this.metaLeaves); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 2), par5, Block.leaves.blockID, this.metaLeaves); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 1), par5, Block.leaves.blockID, this.metaLeaves); - this.setBlockAndMetadata(par1World, par3, par4 + (var6), par5, Block.leaves.blockID, this.metaLeaves); - this.setBlock(par1World, par3, par4 + (var6 - 4), par5, 0); - this.setBlock(par1World, par3, par4 + (var6 - 5), par5, 0); - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var6 - 3), par5, Block.wood.blockID, 7); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var6 - 3), par5, Block.wood.blockID, 7); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 3), par5 - 1, Block.wood.blockID, 11); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 3), par5 + 1, Block.wood.blockID, 11); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 - 2), par5, Block.wood.blockID, this.metaWood); - - if (this.vinesGrow && var11 > 0) - { - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3 - 1, par4 + var11, par5)) - { - this.setBlockAndMetadata(par1World, par3 - 1, par4 + var11, par5, Block.vine.blockID, 8); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3 + 1, par4 + var11, par5)) - { - this.setBlockAndMetadata(par1World, par3 + 1, par4 + var11, par5, Block.vine.blockID, 2); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3, par4 + var11, par5 - 1)) - { - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5 - 1, Block.vine.blockID, 1); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3, par4 + var11, par5 + 1)) - { - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5 + 1, Block.vine.blockID, 4); - } - } - } - } - - if (this.vinesGrow) - { - for (var11 = par4 - 3 + var6; var11 <= par4 + var6; ++var11) - { - var12 = var11 - (par4 + var6); - var13 = 2 - var12 / 2; - - for (var14 = par3 - var13; var14 <= par3 + var13; ++var14) - { - for (var15 = par5 - var13; var15 <= par5 + var13; ++var15) - { - if (par1World.getBlockId(var14, var11, var15) == Block.leaves.blockID) - { - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14 - 1, var11, var15) == 0) - { - this.growVines(par1World, var14 - 1, var11, var15, 8); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14 + 1, var11, var15) == 0) - { - this.growVines(par1World, var14 + 1, var11, var15, 2); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14, var11, var15 - 1) == 0) - { - this.growVines(par1World, var14, var11, var15 - 1, 1); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14, var11, var15 + 1) == 0) - { - this.growVines(par1World, var14, var11, var15 + 1, 4); - } - } - } - } - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } - - /** - * Grows vines downward from the given block for a given length. Args: World, x, starty, z, vine-length - */ - private void growVines(World par1World, int par2, int par3, int par4, int par5) - { - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - int var6 = 4; - - while (true) - { - --par3; - - if (par1World.getBlockId(par2, par3, par4) != 0 || var6 <= 0) - { - return; - } - - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - --var6; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenRainforest2.java b/src/minecraft/biomesoplenty/worldgen/WorldGenRainforest2.java deleted file mode 100644 index 99d6648c3..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenRainforest2.java +++ /dev/null @@ -1,187 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenRainforest2 extends WorldGenerator -{ - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6; - - for (var6 = par2Random.nextInt(4) + 8; par1World.getBlockMaterial(par3, par4 - 1, par5) == Material.water; --par4) - { - ; - } - - boolean var7 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 128) - { - int var8; - int var10; - int var11; - int var12; - - for (var8 = par4; var8 <= par4 + 1 + var6; ++var8) - { - byte var9 = 1; - - if (var8 == par4) - { - var9 = 0; - } - - if (var8 >= par4 + 1 + var6 - 2) - { - var9 = 3; - } - - for (var10 = par3 - var9; var10 <= par3 + var9 && var7; ++var10) - { - for (var11 = par5 - var9; var11 <= par5 + var9 && var7; ++var11) - { - if (var8 >= 0 && var8 < 128) - { - var12 = par1World.getBlockId(var10, var8, var11); - - if (var12 != 0 && var12 != Block.leaves.blockID) - { - if (var12 != Block.waterStill.blockID && var12 != Block.waterMoving.blockID) - { - var7 = false; - } - else if (var8 > par4) - { - var7 = false; - } - } - } - else - { - var7 = false; - } - } - } - } - - if (!var7) - { - return false; - } - else - { - var8 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var8 == Block.grass.blockID || var8 == Block.dirt.blockID) && par4 < 128 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - int var13; - int var16; - - for (var16 = par4 - 3 + var6; var16 <= par4 + var6; ++var16) - { - var10 = var16 - (par4 + var6); - var11 = 2 - var10 / 2; - - for (var12 = par3 - var11; var12 <= par3 + var11; ++var12) - { - var13 = var12 - par3; - - for (int var14 = par5 - var11; var14 <= par5 + var11; ++var14) - { - int var15 = var14 - par5; - - if ((Math.abs(var13) != var11 || Math.abs(var15) != var11 || par2Random.nextInt(2) != 0 && var10 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var12, var16, var14)]) - { - this.setBlockAndMetadata(par1World, var12, var16, var14, Block.leaves.blockID, 3); - } - } - } - } - - for (var16 = 0; var16 < var6; ++var16) - { - var10 = par1World.getBlockId(par3, par4 + var16, par5); - - if (var10 == 0 || var10 == Block.leaves.blockID || var10 == Block.waterMoving.blockID || var10 == Block.waterStill.blockID) - { - this.setBlockAndMetadata(par1World, par3, par4 + var16, par5, Block.wood.blockID, 3); - } - } - - for (var16 = par4 - 3 + var6; var16 <= par4 + var6; ++var16) - { - var10 = var16 - (par4 + var6); - var11 = 2 - var10 / 2; - - for (var12 = par3 - var11; var12 <= par3 + var11; ++var12) - { - for (var13 = par5 - var11; var13 <= par5 + var11; ++var13) - { - if (par1World.getBlockId(var12, var16, var13) == Block.leaves.blockID) - { - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12 - 1, var16, var13) == 0) - { - this.generateVines(par1World, var12 - 1, var16, var13, 8); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12 + 1, var16, var13) == 0) - { - this.generateVines(par1World, var12 + 1, var16, var13, 2); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12, var16, var13 - 1) == 0) - { - this.generateVines(par1World, var12, var16, var13 - 1, 1); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12, var16, var13 + 1) == 0) - { - this.generateVines(par1World, var12, var16, var13 + 1, 4); - } - } - } - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } - - /** - * Generates vines at the given position until it hits a block. - */ - private void generateVines(World par1World, int par2, int par3, int par4, int par5) - { - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - int var6 = 4; - - while (true) - { - --par3; - - if (par1World.getBlockId(par2, par3, par4) != 0 || var6 <= 0) - { - return; - } - - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - --var6; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenRainforestTree1.java b/src/minecraft/biomesoplenty/worldgen/WorldGenRainforestTree1.java deleted file mode 100644 index 3749c8868..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenRainforestTree1.java +++ /dev/null @@ -1,256 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.util.Direction; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenRainforestTree1 extends WorldGenerator -{ - /** The minimum height of a generated tree. */ - private final int minTreeHeight; - - /** True if this tree should grow Vines. */ - private final boolean vinesGrow; - - /** The metadata value of the wood to use in tree generation. */ - private final int metaWood; - - /** The metadata value of the leaves to use in tree generation. */ - private final int metaLeaves; - - public WorldGenRainforestTree1(boolean par1) - { - this(par1, 8, 0, 0, false); - } - - public WorldGenRainforestTree1(boolean par1, int par2, int par3, int par4, boolean par5) - { - super(par1); - this.minTreeHeight = par2; - this.metaWood = par3; - this.metaLeaves = par4; - this.vinesGrow = par5; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(2) + this.minTreeHeight; - boolean var7 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 256) - { - int var8; - byte var9; - int var11; - int var12; - - for (var8 = par4; var8 <= par4 + 1 + var6; ++var8) - { - var9 = 1; - - if (var8 == par4) - { - var9 = 0; - } - - if (var8 >= par4 + 1 + var6 - 2) - { - var9 = 2; - } - - for (int var10 = par3 - var9; var10 <= par3 + var9 && var7; ++var10) - { - for (var11 = par5 - var9; var11 <= par5 + var9 && var7; ++var11) - { - if (var8 >= 0 && var8 < 256) - { - var12 = par1World.getBlockId(var10, var8, var11); - - Block block = Block.blocksList[var12]; - - if (var12 != 0 && - !block.isLeaves(par1World, var10, var8, var11) && - var12 != Block.grass.blockID && - var12 != Block.dirt.blockID && - !block.isWood(par1World, var10, var8, var11)) - { - var7 = false; - } - } - else - { - var7 = false; - } - } - } - } - - if (!var7) - { - return false; - } - else - { - var8 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var8 == Block.grass.blockID || var8 == Block.dirt.blockID) && par4 < 256 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - var9 = 3; - byte var18 = 0; - int var13; - int var14; - int var15; - - for (var11 = par4 - var9 + var6; var11 <= par4 + var6; ++var11) - { - var12 = var11 - (par4 + var6); - var13 = var18 + 1 - var12 / 2; - - for (var14 = par3 - var13; var14 <= par3 + var13; ++var14) - { - var15 = var14 - par3; - - for (int var16 = par5 - var13; var16 <= par5 + var13; ++var16) - { - int var17 = var16 - par5; - - Block block = Block.blocksList[par1World.getBlockId(var14, var11, var16)]; - - if ((Math.abs(var15) != var13 || Math.abs(var17) != var13 || par2Random.nextInt(2) != 0 && var12 != 0) && - (block == null || block.canBeReplacedByLeaves(par1World, var14, var11, var16))) - { - this.setBlockAndMetadata(par1World, var14, var11, var16, Block.leaves.blockID, this.metaLeaves); - } - } - } - } - - for (var11 = 0; var11 < var6; ++var11) - { - var12 = par1World.getBlockId(par3, par4 + var11, par5); - - Block block = Block.blocksList[var12]; - - if (var12 == 0 || block == null || block.isLeaves(par1World, par3, par4 + var11, par5)) - { - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5, Block.wood.blockID, this.metaWood); - - if (this.vinesGrow && var11 > 0) - { - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3 - 1, par4 + var11, par5)) - { - this.setBlockAndMetadata(par1World, par3 - 1, par4 + var11, par5, Block.vine.blockID, 8); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3 + 1, par4 + var11, par5)) - { - this.setBlockAndMetadata(par1World, par3 + 1, par4 + var11, par5, Block.vine.blockID, 2); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3, par4 + var11, par5 - 1)) - { - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5 - 1, Block.vine.blockID, 1); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3, par4 + var11, par5 + 1)) - { - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5 + 1, Block.vine.blockID, 4); - } - } - } - } - - if (this.vinesGrow) - { - for (var11 = par4 - 3 + var6; var11 <= par4 + var6; ++var11) - { - var12 = var11 - (par4 + var6); - var13 = 2 - var12 / 2; - - for (var14 = par3 - var13; var14 <= par3 + var13; ++var14) - { - for (var15 = par5 - var13; var15 <= par5 + var13; ++var15) - { - Block block = Block.blocksList[par1World.getBlockId(var14, var11, var15)]; - if (block != null && block.isLeaves(par1World, var14, var11, var15)) - { - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14 - 1, var11, var15) == 0) - { - this.growVines(par1World, var14 - 1, var11, var15, 8); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14 + 1, var11, var15) == 0) - { - this.growVines(par1World, var14 + 1, var11, var15, 2); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14, var11, var15 - 1) == 0) - { - this.growVines(par1World, var14, var11, var15 - 1, 1); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14, var11, var15 + 1) == 0) - { - this.growVines(par1World, var14, var11, var15 + 1, 4); - } - } - } - } - } - - if (par2Random.nextInt(5) == 0 && var6 > 5) - { - for (var11 = 0; var11 < 2; ++var11) - { - for (var12 = 0; var12 < 4; ++var12) - { - if (par2Random.nextInt(4 - var11) == 0) - { - var13 = par2Random.nextInt(3); - this.setBlockAndMetadata(par1World, par3 + Direction.offsetX[Direction.rotateOpposite[var12]], par4 + var6 - 5 + var11, par5 + Direction.offsetZ[Direction.rotateOpposite[var12]], Block.cocoaPlant.blockID, var13 << 2 | var12); - } - } - } - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } - - /** - * Grows vines downward from the given block for a given length. Args: World, x, starty, z, vine-length - */ - private void growVines(World par1World, int par2, int par3, int par4, int par5) - { - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - int var6 = 4; - - while (true) - { - --par3; - - if (par1World.getBlockId(par2, par3, par4) != 0 || var6 <= 0) - { - return; - } - - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - --var6; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenRedwoodTree.java b/src/minecraft/biomesoplenty/worldgen/WorldGenRedwoodTree.java deleted file mode 100644 index f2a934553..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenRedwoodTree.java +++ /dev/null @@ -1,378 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.util.Direction; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenRedwoodTree extends WorldGenerator -{ - /** The minimum height of a generated tree. */ - private final int minTreeHeight; - - /** True if this tree should grow Vines. */ - private final boolean vinesGrow; - - /** The metadata value of the wood to use in tree generation. */ - private final int metaWood; - - /** The metadata value of the leaves to use in tree generation. */ - private final int metaLeaves; - - public WorldGenRedwoodTree(boolean par1) - { - this(par1, 30, 0, 0, false); - } - - public WorldGenRedwoodTree(boolean par1, int par2, int par3, int par4, boolean par5) - { - super(par1); - this.minTreeHeight = par2; - this.metaWood = par3; - this.metaLeaves = par4; - this.vinesGrow = par5; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(10) + this.minTreeHeight; - boolean var7 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 256) - { - int var8; - byte var9; - int var11; - int var12; - int var81; - int var82; - int var83; - int var84; - int var85; - int var86; - int var87; - int var88; - int var89; - int var90; - int var91; - - for (var8 = par4; var8 <= par4 + 1 + var6; ++var8) - { - var9 = 1; - - if (var8 == par4) - { - var9 = 0; - } - - if (var8 >= par4 + 1 + var6 - 2) - { - var9 = 2; - } - - for (int var10 = par3 - var9; var10 <= par3 + var9 && var7; ++var10) - { - for (var11 = par5 - var9; var11 <= par5 + var9 && var7; ++var11) - { - if (var8 >= 0 && var8 < 256) - { - var12 = par1World.getBlockId(var10, var8, var11); - - if (var12 != 0 && var12 != Blocks.leavesColorized.get().blockID && var12 != Block.grass.blockID && var12 != Block.dirt.blockID && var12 != Blocks.logs3.get().blockID) - { - var7 = false; - } - } - else - { - var7 = false; - } - } - } - } - - if (!var7) - { - return false; - } - else - { - var8 = par1World.getBlockId(par3 - 1, par4 - 1, par5); - var81 = par1World.getBlockId(par3 + 1, par4 - 1, par5); - var82 = par1World.getBlockId(par3, par4 - 1, par5 - 1); - var83 = par1World.getBlockId(par3, par4 - 1, par5 + 1); - var84 = par1World.getBlockId(par3 - 1, par4 - 1, par5 - 1); - var85 = par1World.getBlockId(par3 + 1, par4 - 1, par5 - 1); - var86 = par1World.getBlockId(par3 - 1, par4 - 1, par5 + 1); - var87 = par1World.getBlockId(par3 + 1, par4 - 1, par5 + 1); - var88 = par1World.getBlockId(par3 - 2, par4 - 1, par5); - var89 = par1World.getBlockId(par3 + 2, par4 - 1, par5); - var90 = par1World.getBlockId(par3, par4 - 1, par5 - 2); - var91 = par1World.getBlockId(par3, par4 - 1, par5 + 2); - - if (var81 != Block.grass.blockID) - { - return false; - } - - if (var82 != Block.grass.blockID) - { - return false; - } - - if (var83 != Block.grass.blockID) - { - return false; - } - - if (var84 != Block.grass.blockID) - { - return false; - } - - if (var85 != Block.grass.blockID) - { - return false; - } - - if (var86 != Block.grass.blockID) - { - return false; - } - - if (var87 != Block.grass.blockID) - { - return false; - } - - if (var88 != Block.grass.blockID) - { - return false; - } - - if (var89 != Block.grass.blockID) - { - return false; - } - - if (var90 != Block.grass.blockID) - { - return false; - } - - if (var91 != Block.grass.blockID) - { - return false; - } - - if ((var8 == Block.grass.blockID || var8 == Block.dirt.blockID) && par4 < 256 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - var9 = 9; - byte var18 = 0; - int var13; - int var14; - int var15; - - for (var11 = par4 - var9 + var6; var11 <= par4 + var6; ++var11) - { - var12 = var11 - (par4 + var6); - var13 = var18 + 1 - var12 / 4; - - for (var14 = par3 - var13; var14 <= par3 + var13; ++var14) - { - var15 = var14 - par3; - - for (int var16 = par5 - var13; var16 <= par5 + var13; ++var16) - { - int var17 = var16 - par5; - - if ((Math.abs(var15) != var13 || Math.abs(var17) != var13 || par2Random.nextInt(2) != 0 && var12 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var14, var11, var16)]) - { - this.setBlockAndMetadata(par1World, var14, var11 + 10, var16, Blocks.leavesColorized.get().blockID, 3); - this.setBlockAndMetadata(par1World, var14, var11 + 6, var16, Blocks.leavesColorized.get().blockID, 3); - this.setBlockAndMetadata(par1World, var14, var11, var16, Blocks.leavesColorized.get().blockID, 3); - } - } - } - } - - for (var11 = 0; var11 < var6; ++var11) - { - var12 = par1World.getBlockId(par3, par4 + var11, par5); - - if (var12 == 0 || var12 == Blocks.leavesColorized.get().blockID) - { - //1 - this.setBlockAndMetadata(par1World, par3, par4 + (var6), par5, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 + 1), par5, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 + 2), par5, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 + 3), par5, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 + 4), par5, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 + 5), par5, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 - 1, par4 + var11, par5, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + var11, par5, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5 - 1, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5 + 1, Blocks.logs3.get().blockID, this.metaWood); - - //2 - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var11 / 2), par5 - 1, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var11 / 2), par5 - 1, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var11 / 2), par5 + 1, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var11 / 2), par5 + 1, Blocks.logs3.get().blockID, this.metaWood); - - //3 - this.setBlockAndMetadata(par1World, par3 - 2, par4 + (var11 / 4), par5, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 - 2, par4 + (var11 / 4), par5 - 1, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 - 2, par4 + (var11 / 4), par5 + 1, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 + 2, par4 + (var11 / 4), par5, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 + 2, par4 + (var11 / 4), par5 - 1, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 + 2, par4 + (var11 / 4), par5 + 1, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3, par4 + (var11 / 4), par5 - 2, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var11 / 4), par5 - 2, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var11 / 4), par5 - 2, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3, par4 + (var11 / 4), par5 + 2, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var11 / 4), par5 + 2, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var11 / 4), par5 + 2, Blocks.logs3.get().blockID, this.metaWood); - - //4 - this.setBlockAndMetadata(par1World, par3 - 2, par4 + (var11 / 6), par5 - 2, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 + 2, par4 + (var11 / 6), par5 + 2, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 + 2, par4 + (var11 / 6), par5 - 2, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 - 2, par4 + (var11 / 6), par5 + 2, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 - 3, par4 + (var11 / 6), par5, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 + 3, par4 + (var11 / 6), par5, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3, par4 + (var11 / 6), par5 - 3, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3, par4 + (var11 / 6), par5 + 3, Blocks.logs3.get().blockID, this.metaWood); - - //5 - this.setBlockAndMetadata(par1World, par3 - 3, par4 + (var11 / 8), par5 - 1, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 - 3, par4 + (var11 / 8), par5 + 1, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 + 3, par4 + (var11 / 8), par5 - 1, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 + 3, par4 + (var11 / 8), par5 + 1, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var11 / 8), par5 - 3, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var11 / 8), par5 - 3, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var11 / 8), par5 + 3, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var11 / 8), par5 + 3, Blocks.logs3.get().blockID, this.metaWood); - - - if (this.vinesGrow && var11 > 0) - { - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3 - 1, par4 + var11, par5)) - { - this.setBlockAndMetadata(par1World, par3 - 1, par4 + var11, par5, Block.vine.blockID, 8); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3 + 1, par4 + var11, par5)) - { - this.setBlockAndMetadata(par1World, par3 + 1, par4 + var11, par5, Block.vine.blockID, 2); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3, par4 + var11, par5 - 1)) - { - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5 - 1, Block.vine.blockID, 1); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3, par4 + var11, par5 + 1)) - { - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5 + 1, Block.vine.blockID, 4); - } - } - } - } - - if (this.vinesGrow) - { - for (var11 = par4 - 3 + var6; var11 <= par4 + var6; ++var11) - { - var12 = var11 - (par4 + var6); - var13 = 2 - var12 / 2; - - for (var14 = par3 - var13; var14 <= par3 + var13; ++var14) - { - for (var15 = par5 - var13; var15 <= par5 + var13; ++var15) - { - if (par1World.getBlockId(var14, var11, var15) == Block.leaves.blockID) - { - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14 - 1, var11, var15) == 0) - { - this.growVines(par1World, var14 - 1, var11, var15, 8); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14 + 1, var11, var15) == 0) - { - this.growVines(par1World, var14 + 1, var11, var15, 2); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14, var11, var15 - 1) == 0) - { - this.growVines(par1World, var14, var11, var15 - 1, 1); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14, var11, var15 + 1) == 0) - { - this.growVines(par1World, var14, var11, var15 + 1, 4); - } - } - } - } - } - - if (par2Random.nextInt(5) == 0 && var6 > 5) - { - for (var11 = 0; var11 < 2; ++var11) - { - for (var12 = 0; var12 < 4; ++var12) - { - if (par2Random.nextInt(4 - var11) == 0) - { - var13 = par2Random.nextInt(3); - this.setBlockAndMetadata(par1World, par3 + Direction.offsetX[Direction.rotateOpposite[var12]], par4 + var6 - 5 + var11, par5 + Direction.offsetZ[Direction.rotateOpposite[var12]], Block.cocoaPlant.blockID, var13 << 2 | var12); - } - } - } - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } - - /** - * Grows vines downward from the given block for a given length. Args: World, x, starty, z, vine-length - */ - private void growVines(World par1World, int par2, int par3, int par4, int par5) - { - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - int var6 = 4; - - while (true) - { - --par3; - - if (par1World.getBlockId(par2, par3, par4) != 0 || var6 <= 0) - { - return; - } - - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - --var6; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenRedwoodTree2.java b/src/minecraft/biomesoplenty/worldgen/WorldGenRedwoodTree2.java deleted file mode 100644 index 489e975f4..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenRedwoodTree2.java +++ /dev/null @@ -1,323 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.util.Direction; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenRedwoodTree2 extends WorldGenerator -{ - /** The minimum height of a generated tree. */ - private final int minTreeHeight; - - /** True if this tree should grow Vines. */ - private final boolean vinesGrow; - - /** The metadata value of the wood to use in tree generation. */ - private final int metaWood; - - /** The metadata value of the leaves to use in tree generation. */ - private final int metaLeaves; - - public WorldGenRedwoodTree2(boolean par1) - { - this(par1, 25, 0, 0, false); - } - - public WorldGenRedwoodTree2(boolean par1, int par2, int par3, int par4, boolean par5) - { - super(par1); - this.minTreeHeight = par2; - this.metaWood = par3; - this.metaLeaves = par4; - this.vinesGrow = par5; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(10) + this.minTreeHeight; - boolean var7 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 256) - { - int var8; - byte var9; - int var11; - int var12; - int var81; - int var82; - int var83; - int var84; - int var85; - int var86; - int var87; - - for (var8 = par4; var8 <= par4 + 1 + var6; ++var8) - { - var9 = 1; - - if (var8 == par4) - { - var9 = 0; - } - - if (var8 >= par4 + 1 + var6 - 2) - { - var9 = 2; - } - - for (int var10 = par3 - var9; var10 <= par3 + var9 && var7; ++var10) - { - for (var11 = par5 - var9; var11 <= par5 + var9 && var7; ++var11) - { - if (var8 >= 0 && var8 < 256) - { - var12 = par1World.getBlockId(var10, var8, var11); - - if (var12 != 0 && var12 != Blocks.leavesColorized.get().blockID && var12 != Block.grass.blockID && var12 != Block.dirt.blockID && var12 != Blocks.logs3.get().blockID) - { - var7 = false; - } - } - else - { - var7 = false; - } - } - } - } - - if (!var7) - { - return false; - } - else - { - var8 = par1World.getBlockId(par3 - 1, par4 - 1, par5); - var81 = par1World.getBlockId(par3 + 1, par4 - 1, par5); - var82 = par1World.getBlockId(par3, par4 - 1, par5 - 1); - var83 = par1World.getBlockId(par3, par4 - 1, par5 + 1); - var84 = par1World.getBlockId(par3 - 1, par4 - 1, par5 - 1); - var85 = par1World.getBlockId(par3 + 1, par4 - 1, par5 - 1); - var86 = par1World.getBlockId(par3 - 1, par4 - 1, par5 + 1); - var87 = par1World.getBlockId(par3 + 1, par4 - 1, par5 + 1); - - if (var81 != Block.grass.blockID) - { - return false; - } - - if (var82 != Block.grass.blockID) - { - return false; - } - - if (var83 != Block.grass.blockID) - { - return false; - } - - if (var84 != Block.grass.blockID) - { - return false; - } - - if (var85 != Block.grass.blockID) - { - return false; - } - - if (var86 != Block.grass.blockID) - { - return false; - } - - if (var87 != Block.grass.blockID) - { - return false; - } - - if ((var8 == Block.grass.blockID || var8 == Block.dirt.blockID) && par4 < 256 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - var9 = 9; - byte var18 = 0; - int var13; - int var14; - int var15; - - for (var11 = par4 - var9 + var6; var11 <= par4 + var6; ++var11) - { - var12 = var11 - (par4 + var6); - var13 = var18 + 1 - var12 / 8; - - for (var14 = par3 - var13; var14 <= par3 + var13; ++var14) - { - var15 = var14 - par3; - - for (int var16 = par5 - var13; var16 <= par5 + var13; ++var16) - { - int var17 = var16 - par5; - - if ((Math.abs(var15) != var13 || Math.abs(var17) != var13 || par2Random.nextInt(2) != 0 && var12 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var14, var11, var16)]) - { - this.setBlockAndMetadata(par1World, var14, var11 + 12, var16, Blocks.leavesColorized.get().blockID, 3); - this.setBlockAndMetadata(par1World, var14, var11 + 6, var16, Blocks.leavesColorized.get().blockID, 3); - this.setBlockAndMetadata(par1World, var14, var11, var16, Blocks.leavesColorized.get().blockID, 3); - } - } - } - } - - for (var11 = 0; var11 < var6; ++var11) - { - var12 = par1World.getBlockId(par3, par4 + var11, par5); - - if (var12 == 0 || var12 == Blocks.leavesColorized.get().blockID) - { - //1 - this.setBlockAndMetadata(par1World, par3, par4 + (var6), par5, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 + 1), par5, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 + 2), par5, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 + 3), par5, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 + 4), par5, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3, par4 + (var6 + 5), par5, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5, Blocks.logs3.get().blockID, this.metaWood); - - //2 - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var11 / 2), par5, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var11 / 2), par5, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3, par4 + (var11 / 2), par5 - 1, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3, par4 + (var11 / 2), par5 + 1, Blocks.logs3.get().blockID, this.metaWood); - - //3 - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var11 / 4), par5 - 1, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var11 / 4), par5 - 1, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 - 1, par4 + (var11 / 4), par5 + 1, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 + 1, par4 + (var11 / 4), par5 + 1, Blocks.logs3.get().blockID, this.metaWood); - - //4 - this.setBlockAndMetadata(par1World, par3 - 2, par4 + (var11 / 8), par5, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3 + 2, par4 + (var11 / 8), par5, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3, par4 + (var11 / 8), par5 - 2, Blocks.logs3.get().blockID, this.metaWood); - this.setBlockAndMetadata(par1World, par3, par4 + (var11 / 8), par5 + 2, Blocks.logs3.get().blockID, this.metaWood); - - if (this.vinesGrow && var11 > 0) - { - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3 - 1, par4 + var11, par5)) - { - this.setBlockAndMetadata(par1World, par3 - 1, par4 + var11, par5, Block.vine.blockID, 8); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3 + 1, par4 + var11, par5)) - { - this.setBlockAndMetadata(par1World, par3 + 1, par4 + var11, par5, Block.vine.blockID, 2); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3, par4 + var11, par5 - 1)) - { - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5 - 1, Block.vine.blockID, 1); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3, par4 + var11, par5 + 1)) - { - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5 + 1, Block.vine.blockID, 4); - } - } - } - } - - if (this.vinesGrow) - { - for (var11 = par4 - 3 + var6; var11 <= par4 + var6; ++var11) - { - var12 = var11 - (par4 + var6); - var13 = 2 - var12 / 2; - - for (var14 = par3 - var13; var14 <= par3 + var13; ++var14) - { - for (var15 = par5 - var13; var15 <= par5 + var13; ++var15) - { - if (par1World.getBlockId(var14, var11, var15) == Block.leaves.blockID) - { - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14 - 1, var11, var15) == 0) - { - this.growVines(par1World, var14 - 1, var11, var15, 8); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14 + 1, var11, var15) == 0) - { - this.growVines(par1World, var14 + 1, var11, var15, 2); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14, var11, var15 - 1) == 0) - { - this.growVines(par1World, var14, var11, var15 - 1, 1); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14, var11, var15 + 1) == 0) - { - this.growVines(par1World, var14, var11, var15 + 1, 4); - } - } - } - } - } - - if (par2Random.nextInt(5) == 0 && var6 > 5) - { - for (var11 = 0; var11 < 2; ++var11) - { - for (var12 = 0; var12 < 4; ++var12) - { - if (par2Random.nextInt(4 - var11) == 0) - { - var13 = par2Random.nextInt(3); - this.setBlockAndMetadata(par1World, par3 + Direction.offsetX[Direction.rotateOpposite[var12]], par4 + var6 - 5 + var11, par5 + Direction.offsetZ[Direction.rotateOpposite[var12]], Block.cocoaPlant.blockID, var13 << 2 | var12); - } - } - } - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } - - /** - * Grows vines downward from the given block for a given length. Args: World, x, starty, z, vine-length - */ - private void growVines(World par1World, int par2, int par3, int par4, int par5) - { - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - int var6 = 4; - - while (true) - { - --par3; - - if (par1World.getBlockId(par2, par3, par4) != 0 || var6 <= 0) - { - return; - } - - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - --var6; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenScrubland.java b/src/minecraft/biomesoplenty/worldgen/WorldGenScrubland.java deleted file mode 100644 index 6258ddd9b..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenScrubland.java +++ /dev/null @@ -1,228 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenScrubland extends WorldGenerator -{ - /** The minimum height of a generated tree. */ - private final int minTreeHeight; - - /** True if this tree should grow Vines. */ - private final boolean vinesGrow; - - /** The metadata value of the wood to use in tree generation. */ - private final int metaWood; - - /** The metadata value of the leaves to use in tree generation. */ - private final int metaLeaves; - - public WorldGenScrubland(boolean par1) - { - this(par1, 2, 0, 2, false); - } - - public WorldGenScrubland(boolean par1, int par2, int par3, int par4, boolean par5) - { - super(par1); - this.minTreeHeight = par2; - this.metaWood = par3; - this.metaLeaves = par4; - this.vinesGrow = par5; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(1) + this.minTreeHeight; - boolean var7 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 256) - { - int var8; - byte var9; - int var11; - int var12; - - for (var8 = par4; var8 <= par4 + 1 + var6; ++var8) - { - var9 = 1; - - if (var8 == par4) - { - var9 = 0; - } - - if (var8 >= par4 + 1 + var6 - 2) - { - var9 = 2; - } - - for (int var10 = par3 - var9; var10 <= par3 + var9 && var7; ++var10) - { - for (var11 = par5 - var9; var11 <= par5 + var9 && var7; ++var11) - { - if (var8 >= 0 && var8 < 256) - { - var12 = par1World.getBlockId(var10, var8, var11); - - if (var12 != 0 && var12 != Block.leaves.blockID && var12 != Block.grass.blockID && var12 != Block.dirt.blockID && var12 != Block.wood.blockID) - { - var7 = false; - } - } - else - { - var7 = false; - } - } - } - } - - if (!var7) - { - return false; - } - else - { - var8 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var8 == Block.grass.blockID || var8 == Block.dirt.blockID) && par4 < 256 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - var9 = 1; - byte var18 = 0; - int var13; - int var14; - int var15; - - for (var11 = par4 - var9 + var6; var11 <= par4 + var6; ++var11) - { - var12 = var11 - (par4 + var6); - var13 = var18 + 1 - var12 / 2; - - for (var14 = par3 - var13; var14 <= par3 + var13; ++var14) - { - var15 = var14 - par3; - - for (int var16 = par5 - var13; var16 <= par5 + var13; ++var16) - { - int var17 = var16 - par5; - - if ((Math.abs(var15) != var13 || Math.abs(var17) != var13 || par2Random.nextInt(2) != 0 && var12 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var14, var11, var16)]) - { - this.setBlockAndMetadata(par1World, var14, var11, var16, Block.leaves.blockID, this.metaLeaves); - } - } - } - } - - for (var11 = 0; var11 < var6; ++var11) - { - var12 = par1World.getBlockId(par3, par4 + var11, par5); - - if (var12 == 0 || var12 == Block.leaves.blockID) - { - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5, Block.wood.blockID, this.metaWood); - - if (this.vinesGrow && var11 > 0) - { - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3 - 1, par4 + var11, par5)) - { - this.setBlockAndMetadata(par1World, par3 - 1, par4 + var11, par5, Block.vine.blockID, 8); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3 + 1, par4 + var11, par5)) - { - this.setBlockAndMetadata(par1World, par3 + 1, par4 + var11, par5, Block.vine.blockID, 2); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3, par4 + var11, par5 - 1)) - { - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5 - 1, Block.vine.blockID, 1); - } - - if (par2Random.nextInt(3) > 0 && par1World.isAirBlock(par3, par4 + var11, par5 + 1)) - { - this.setBlockAndMetadata(par1World, par3, par4 + var11, par5 + 1, Block.vine.blockID, 4); - } - } - } - } - - if (this.vinesGrow) - { - for (var11 = par4 - 3 + var6; var11 <= par4 + var6; ++var11) - { - var12 = var11 - (par4 + var6); - var13 = 2 - var12 / 2; - - for (var14 = par3 - var13; var14 <= par3 + var13; ++var14) - { - for (var15 = par5 - var13; var15 <= par5 + var13; ++var15) - { - if (par1World.getBlockId(var14, var11, var15) == Block.leaves.blockID) - { - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14 - 1, var11, var15) == 0) - { - this.growVines(par1World, var14 - 1, var11, var15, 8); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14 + 1, var11, var15) == 0) - { - this.growVines(par1World, var14 + 1, var11, var15, 2); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14, var11, var15 - 1) == 0) - { - this.growVines(par1World, var14, var11, var15 - 1, 1); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var14, var11, var15 + 1) == 0) - { - this.growVines(par1World, var14, var11, var15 + 1, 4); - } - } - } - } - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } - - /** - * Grows vines downward from the given block for a given length. Args: World, x, starty, z, vine-length - */ - private void growVines(World par1World, int par2, int par3, int par4, int par5) - { - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - int var6 = 4; - - while (true) - { - --par3; - - if (par1World.getBlockId(par2, par3, par4) != 0 || var6 <= 0) - { - return; - } - - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - --var6; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenShield.java b/src/minecraft/biomesoplenty/worldgen/WorldGenShield.java deleted file mode 100644 index 43b7b5a67..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenShield.java +++ /dev/null @@ -1,78 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenShield extends WorldGenerator -{ - /** The block ID of the ore to be placed using this generator. */ - private int minableBlockId; - - /** The number of blocks to generate. */ - private int numberOfBlocks; - - public WorldGenShield(int par1, int par2) - { - this.minableBlockId = par1; - this.numberOfBlocks = par2; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - float var6 = par2Random.nextFloat() * (float)Math.PI; - double var7 = (double)((float)(par3 + 8) + MathHelper.sin(var6) * (float)this.numberOfBlocks / 8.0F); - double var9 = (double)((float)(par3 + 8) - MathHelper.sin(var6) * (float)this.numberOfBlocks / 8.0F); - double var11 = (double)((float)(par5 + 8) + MathHelper.cos(var6) * (float)this.numberOfBlocks / 8.0F); - double var13 = (double)((float)(par5 + 8) - MathHelper.cos(var6) * (float)this.numberOfBlocks / 8.0F); - double var15 = (double)(par4 + par2Random.nextInt(3) - 2); - double var17 = (double)(par4 + par2Random.nextInt(3) - 2); - - for (int var19 = 0; var19 <= this.numberOfBlocks; ++var19) - { - double var20 = var7 + (var9 - var7) * (double)var19 / (double)this.numberOfBlocks; - double var22 = var15 + (var17 - var15) * (double)var19 / (double)this.numberOfBlocks; - double var24 = var11 + (var13 - var11) * (double)var19 / (double)this.numberOfBlocks; - double var26 = par2Random.nextDouble() * (double)this.numberOfBlocks / 16.0D; - double var28 = (double)(MathHelper.sin((float)var19 * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * var26 + 1.0D; - double var30 = (double)(MathHelper.sin((float)var19 * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * var26 + 1.0D; - int var32 = MathHelper.floor_double(var20 - var28 / 2.0D); - int var33 = MathHelper.floor_double(var22 - var30 / 2.0D); - int var34 = MathHelper.floor_double(var24 - var28 / 2.0D); - int var35 = MathHelper.floor_double(var20 + var28 / 2.0D); - int var36 = MathHelper.floor_double(var22 + var30 / 2.0D); - int var37 = MathHelper.floor_double(var24 + var28 / 2.0D); - - for (int var38 = var32; var38 <= var35; ++var38) - { - double var39 = ((double)var38 + 0.5D - var20) / (var28 / 2.0D); - - if (var39 * var39 < 1.0D) - { - for (int var41 = var33; var41 <= var36; ++var41) - { - double var42 = ((double)var41 + 0.5D - var22) / (var30 / 2.0D); - - if (var39 * var39 + var42 * var42 < 1.0D) - { - for (int var44 = var34; var44 <= var37; ++var44) - { - double var45 = ((double)var44 + 0.5D - var24) / (var28 / 2.0D); - - if (var39 * var39 + var42 * var42 + var45 * var45 < 1.0D && par1World.getBlockId(var38, var41, var44) == Block.grass.blockID || par1World.getBlockId(var38, var41, var44) == Block.dirt.blockID) - { - par1World.setBlock(var38, var41, var44, this.minableBlockId); - } - } - } - } - } - } - } - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenSmolderingGrass.java b/src/minecraft/biomesoplenty/worldgen/WorldGenSmolderingGrass.java deleted file mode 100644 index 72a936b3f..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenSmolderingGrass.java +++ /dev/null @@ -1,83 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.util.MathHelper; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenSmolderingGrass extends WorldGenerator -{ - /** The block ID of the ore to be placed using this generator. */ - private int minableBlockId; - - /** The number of blocks to generate. */ - private int numberOfBlocks; - - private int blockMeta; - - public WorldGenSmolderingGrass(int par1, int meta, int par2) - { - this.minableBlockId = par1; - this.numberOfBlocks = par2; - this.blockMeta = meta; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - float var6 = par2Random.nextFloat() * (float)Math.PI; - double var7 = (double)((float)(par3 + 8) + MathHelper.sin(var6) * (float)this.numberOfBlocks / 8.0F); - double var9 = (double)((float)(par3 + 8) - MathHelper.sin(var6) * (float)this.numberOfBlocks / 8.0F); - double var11 = (double)((float)(par5 + 8) + MathHelper.cos(var6) * (float)this.numberOfBlocks / 8.0F); - double var13 = (double)((float)(par5 + 8) - MathHelper.cos(var6) * (float)this.numberOfBlocks / 8.0F); - double var15 = (double)(par4 + par2Random.nextInt(3) - 2); - double var17 = (double)(par4 + par2Random.nextInt(3) - 2); - - for (int var19 = 0; var19 <= this.numberOfBlocks; ++var19) - { - double var20 = var7 + (var9 - var7) * (double)var19 / (double)this.numberOfBlocks; - double var22 = var15 + (var17 - var15) * (double)var19 / (double)this.numberOfBlocks; - double var24 = var11 + (var13 - var11) * (double)var19 / (double)this.numberOfBlocks; - double var26 = par2Random.nextDouble() * (double)this.numberOfBlocks / 16.0D; - double var28 = (double)(MathHelper.sin((float)var19 * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * var26 + 1.0D; - double var30 = (double)(MathHelper.sin((float)var19 * (float)Math.PI / (float)this.numberOfBlocks) + 1.0F) * var26 + 1.0D; - int var32 = MathHelper.floor_double(var20 - var28 / 2.0D); - int var33 = MathHelper.floor_double(var22 - var30 / 2.0D); - int var34 = MathHelper.floor_double(var24 - var28 / 2.0D); - int var35 = MathHelper.floor_double(var20 + var28 / 2.0D); - int var36 = MathHelper.floor_double(var22 + var30 / 2.0D); - int var37 = MathHelper.floor_double(var24 + var28 / 2.0D); - - for (int var38 = var32; var38 <= var35; ++var38) - { - double var39 = ((double)var38 + 0.5D - var20) / (var28 / 2.0D); - - if (var39 * var39 < 1.0D) - { - for (int var41 = var33; var41 <= var36; ++var41) - { - double var42 = ((double)var41 + 0.5D - var22) / (var30 / 2.0D); - - if (var39 * var39 + var42 * var42 < 1.0D) - { - for (int var44 = var34; var44 <= var37; ++var44) - { - double var45 = ((double)var44 + 0.5D - var24) / (var28 / 2.0D); - - if (var39 * var39 + var42 * var42 + var45 * var45 < 1.0D && par1World.getBlockId(var38, var41, var44) == Blocks.ash.get().blockID) - { - par1World.setBlock(var38, var41, var44, this.minableBlockId, this.blockMeta, 2); - } - } - } - } - } - } - } - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenSprout.java b/src/minecraft/biomesoplenty/worldgen/WorldGenSprout.java deleted file mode 100644 index ff2a763af..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenSprout.java +++ /dev/null @@ -1,48 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenSprout extends WorldGenerator -{ - /** Stores ID for WorldGenTallGrass */ - private int tallGrassID; - private int tallGrassMetadata; - - public WorldGenSprout(int par1, int par2) - { - this.tallGrassID = par1; - this.tallGrassMetadata = par2; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var11; - - for (boolean var6 = false; ((var11 = par1World.getBlockId(par3, par4, par5)) == 0 || var11 == Block.leaves.blockID) && par4 > 0; --par4) - { - ; - } - - for (int var7 = 0; var7 < 128; ++var7) - { - int var8 = par3 + par2Random.nextInt(8) - par2Random.nextInt(8); - int var9 = par4 + par2Random.nextInt(4) - par2Random.nextInt(4); - int var10 = par5 + par2Random.nextInt(8) - par2Random.nextInt(8); - - if (par1World.isAirBlock(var8, var9, var10) && Blocks.foliage.get().canBlockStay(par1World, var8, var9, var10)) - { - par1World.setBlock(var8, var9, var10, Blocks.foliage.get().blockID, 5, 2); - } - } - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenSteppe.java b/src/minecraft/biomesoplenty/worldgen/WorldGenSteppe.java deleted file mode 100644 index 8aedbc32d..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenSteppe.java +++ /dev/null @@ -1,45 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenSteppe extends WorldGenerator -{ - /** Stores ID for WorldGenTallGrass */ - private int tallGrassID; - private int tallGrassMetadata; - - public WorldGenSteppe(int par1, int par2) - { - this.tallGrassID = par1; - this.tallGrassMetadata = par2; - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var11; - - for (boolean var6 = false; ((var11 = par1World.getBlockId(par3, par4, par5)) == 0 || var11 == Block.leaves.blockID) && par4 > 0; --par4) - { - ; - } - - for (int var7 = 0; var7 < 128; ++var7) - { - int var8 = par3 + par2Random.nextInt(8) - par2Random.nextInt(8); - int var9 = par4 + par2Random.nextInt(4) - par2Random.nextInt(4); - int var10 = par5 + par2Random.nextInt(8) - par2Random.nextInt(8); - - if (par1World.isAirBlock(var8, var9, var10) && par1World.getBlockId(var8, var9 - 1, var10) == Block.grass.blockID) - { - par1World.setBlock(var8, var9 - 1, var10, Block.sand.blockID); - par1World.setBlock(var8, var9, var10, 0); - } - } - - return true; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenSwampTall.java b/src/minecraft/biomesoplenty/worldgen/WorldGenSwampTall.java deleted file mode 100644 index 05aecc657..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenSwampTall.java +++ /dev/null @@ -1,187 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenSwampTall extends WorldGenerator -{ - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6; - - for (var6 = par2Random.nextInt(6) + 8; par1World.getBlockMaterial(par3, par4 - 1, par5) == Material.water; --par4) - { - ; - } - - boolean var7 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 128) - { - int var8; - int var10; - int var11; - int var12; - - for (var8 = par4; var8 <= par4 + 1 + var6; ++var8) - { - byte var9 = 1; - - if (var8 == par4) - { - var9 = 0; - } - - if (var8 >= par4 + 1 + var6 - 2) - { - var9 = 3; - } - - for (var10 = par3 - var9; var10 <= par3 + var9 && var7; ++var10) - { - for (var11 = par5 - var9; var11 <= par5 + var9 && var7; ++var11) - { - if (var8 >= 0 && var8 < 128) - { - var12 = par1World.getBlockId(var10, var8, var11); - - if (var12 != 0 && var12 != Block.leaves.blockID) - { - if (var12 != Block.waterStill.blockID && var12 != Block.waterMoving.blockID) - { - var7 = false; - } - else if (var8 > par4) - { - var7 = false; - } - } - } - else - { - var7 = false; - } - } - } - } - - if (!var7) - { - return false; - } - else - { - var8 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var8 == Block.grass.blockID || var8 == Block.dirt.blockID) && par4 < 128 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - int var13; - int var16; - - for (var16 = par4 - 3 + var6; var16 <= par4 + var6; ++var16) - { - var10 = var16 - (par4 + var6); - var11 = 2 - var10 / 2; - - for (var12 = par3 - var11; var12 <= par3 + var11; ++var12) - { - var13 = var12 - par3; - - for (int var14 = par5 - var11; var14 <= par5 + var11; ++var14) - { - int var15 = var14 - par5; - - if ((Math.abs(var13) != var11 || Math.abs(var15) != var11 || par2Random.nextInt(2) != 0 && var10 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var12, var16, var14)]) - { - this.setBlock(par1World, var12, var16, var14, Block.leaves.blockID); - } - } - } - } - - for (var16 = 0; var16 < var6; ++var16) - { - var10 = par1World.getBlockId(par3, par4 + var16, par5); - - if (var10 == 0 || var10 == Block.leaves.blockID || var10 == Block.waterMoving.blockID || var10 == Block.waterStill.blockID) - { - this.setBlock(par1World, par3, par4 + var16, par5, Block.wood.blockID); - } - } - - for (var16 = par4 - 3 + var6; var16 <= par4 + var6; ++var16) - { - var10 = var16 - (par4 + var6); - var11 = 2 - var10 / 2; - - for (var12 = par3 - var11; var12 <= par3 + var11; ++var12) - { - for (var13 = par5 - var11; var13 <= par5 + var11; ++var13) - { - if (par1World.getBlockId(var12, var16, var13) == Block.leaves.blockID) - { - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12 - 1, var16, var13) == 0) - { - this.generateVines(par1World, var12 - 1, var16, var13, 8); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12 + 1, var16, var13) == 0) - { - this.generateVines(par1World, var12 + 1, var16, var13, 2); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12, var16, var13 - 1) == 0) - { - this.generateVines(par1World, var12, var16, var13 - 1, 1); - } - - if (par2Random.nextInt(4) == 0 && par1World.getBlockId(var12, var16, var13 + 1) == 0) - { - this.generateVines(par1World, var12, var16, var13 + 1, 4); - } - } - } - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } - - /** - * Generates vines at the given position until it hits a block. - */ - private void generateVines(World par1World, int par2, int par3, int par4, int par5) - { - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - int var6 = 8; - - while (true) - { - --par3; - - if (par1World.getBlockId(par2, par3, par4) != 0 || var6 <= 0) - { - return; - } - - this.setBlockAndMetadata(par1World, par2, par3, par4, Block.vine.blockID, par5); - --var6; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenTaiga3.java b/src/minecraft/biomesoplenty/worldgen/WorldGenTaiga3.java deleted file mode 100644 index ab90ac40b..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenTaiga3.java +++ /dev/null @@ -1,181 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenTaiga3 extends WorldGenerator -{ - public WorldGenTaiga3(boolean var1) - { - super(var1); - } - - public boolean generate(World var1, Random var2, int var3, int var4, int var5) - { - int var6 = var2.nextInt(10) + 35; - int var7 = var2.nextInt(5) + 10; - int var8 = var6 - var7; - int var9 = 4; - boolean var10 = true; - - if (var4 >= 1 && var4 + var6 + 1 <= 256) - { - int var11; - int var13; - int var14; - int var15; - int var24; - - for (var11 = var4; var11 <= var4 + 1 + var6 && var10; ++var11) - { - boolean var12 = true; - - if (var11 - var4 < var7) - { - var24 = 0; - } - else - { - var24 = var9; - } - - for (var13 = var3 - var24; var13 <= var3 + var24 && var10; ++var13) - { - for (var14 = var5 - var24; var14 <= var5 + var24 && var10; ++var14) - { - if (var11 >= 0 && var11 < 256) - { - var15 = var1.getBlockId(var13, var11, var14); - - if (var15 != 0 && var15 != Blocks.leaves1.get().blockID) - { - var10 = false; - } - } - else - { - var10 = false; - } - } - } - } - - if (!var10) - { - return false; - } - else - { - var11 = var1.getBlockId(var3, var4 - 1, var5); - var24 = var1.getBlockId(var3 - 1, var4 - 1, var5); - var13 = var1.getBlockId(var3, var4 - 1, var5 - 1); - var14 = var1.getBlockId(var3 - 1, var4 - 1, var5 - 1); - - if ((var11 == Block.grass.blockID || var11 == Block.dirt.blockID) && var4 < 256 - var6 - 1) - { - if ((var24 == Block.grass.blockID || var24 == Block.dirt.blockID) && var4 < 256 - var6 - 1) - { - if ((var13 == Block.grass.blockID || var24 == Block.dirt.blockID) && var4 < 256 - var6 - 1) - { - if ((var14 == Block.grass.blockID || var24 == Block.dirt.blockID) && var4 < 256 - var6 - 1) - { - var1.setBlock(var3, var4 - 1, var5, Block.dirt.blockID); - var1.setBlock(var3 - 1, var4 - 1, var5, Block.dirt.blockID); - var1.setBlock(var3, var4 - 1, var5 - 1, Block.dirt.blockID); - var1.setBlock(var3 - 1, var4 - 1, var5 - 1, Block.dirt.blockID); - var15 = var2.nextInt(2); - int var16 = 1; - boolean var17 = false; - int var19; - int var18; - int var20; - - for (var18 = 0; var18 <= var8; ++var18) - { - var19 = var4 + var6 - var18; - - for (var20 = var3 - var15; var20 <= var3 + var15; ++var20) - { - int var21 = var20 - var3; - - for (int var22 = var5 - var15; var22 <= var5 + var15; ++var22) - { - int var23 = var22 - var5; - - if ((Math.abs(var21) != var15 || Math.abs(var23) != var15 || var15 <= 0) && !Block.opaqueCubeLookup[var1.getBlockId(var20, var19, var22)]) - { - this.setBlockAndMetadata(var1, var20, var19, var22, Blocks.leaves1.get().blockID, 5); - this.setBlockAndMetadata(var1, var20 - 1, var19, var22, Blocks.leaves1.get().blockID, 5); - this.setBlockAndMetadata(var1, var20, var19, var22 - 1, Blocks.leaves1.get().blockID, 5); - this.setBlockAndMetadata(var1, var20 - 1, var19, var22 - 1, Blocks.leaves1.get().blockID, 5); - } - } - } - - if (var15 >= var16) - { - var15 = var17 ? 1 : 0; - var17 = true; - ++var16; - - if (var16 > var9) - { - var16 = var9; - } - } - else - { - ++var15; - } - } - - var18 = var2.nextInt(3); - - for (var19 = 0; var19 < var6 - var18; ++var19) - { - var20 = var1.getBlockId(var3, var4 + var19, var5); - - if (var20 == 0 || var20 == Blocks.leaves1.get().blockID) - { - this.setBlockAndMetadata(var1, var3, var4 + var19, var5, Blocks.logs1.get().blockID, 3); - this.setBlockAndMetadata(var1, var3 - 1, var4 + var19, var5, Blocks.logs1.get().blockID, 3); - this.setBlockAndMetadata(var1, var3, var4 + var19, var5 - 1, Blocks.logs1.get().blockID, 3); - this.setBlockAndMetadata(var1, var3 - 1, var4 + var19, var5 - 1, Blocks.logs1.get().blockID, 3); - } - } - - return true; - } - else - { - return false; - } - } - else - { - return false; - } - } - else - { - return false; - } - } - else - { - return false; - } - } - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenTaiga4.java b/src/minecraft/biomesoplenty/worldgen/WorldGenTaiga4.java deleted file mode 100644 index 52712eb4c..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenTaiga4.java +++ /dev/null @@ -1,146 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenTaiga4 extends WorldGenerator -{ - public WorldGenTaiga4(boolean var1) - { - super(var1); - } - - public boolean generate(World var1, Random var2, int var3, int var4, int var5) - { - int var6 = var2.nextInt(15) + 20; - int var7 = var2.nextInt(3) + 5; - int var8 = var6 - var7; - int var9 = 2 + var2.nextInt(3); - boolean var10 = true; - - if (var4 >= 1 && var4 + var6 + 1 <= 256) - { - int var11; - int var13; - int var15; - int var21; - - for (var11 = var4; var11 <= var4 + 1 + var6 && var10; ++var11) - { - boolean var12 = true; - - if (var11 - var4 < var7) - { - var21 = 0; - } - else - { - var21 = var9; - } - - for (var13 = var3 - var21; var13 <= var3 + var21 && var10; ++var13) - { - for (int var14 = var5 - var21; var14 <= var5 + var21 && var10; ++var14) - { - if (var11 >= 0 && var11 < 256) - { - var15 = var1.getBlockId(var13, var11, var14); - - if (var15 != 0 && var15 != Blocks.leaves1.get().blockID) - { - var10 = false; - } - } - else - { - var10 = false; - } - } - } - } - - if (!var10) - { - return false; - } - else - { - var11 = var1.getBlockId(var3, var4 - 1, var5); - - if ((var11 == Block.grass.blockID || var11 == Block.dirt.blockID) && var4 < 256 - var6 - 1) - { - var1.setBlock(var3, var4 - 1, var5, Block.dirt.blockID); - var21 = var2.nextInt(2); - var13 = 1; - boolean var22 = false; - int var17; - int var16; - - for (var15 = 0; var15 <= var8; ++var15) - { - var16 = var4 + var6 - var15; - - for (var17 = var3 - var21; var17 <= var3 + var21; ++var17) - { - int var18 = var17 - var3; - - for (int var19 = var5 - var21; var19 <= var5 + var21; ++var19) - { - int var20 = var19 - var5; - - if ((Math.abs(var18) != var21 || Math.abs(var20) != var21 || var21 <= 0) && !Block.opaqueCubeLookup[var1.getBlockId(var17, var16, var19)]) - { - this.setBlockAndMetadata(var1, var17, var16, var19, Blocks.leaves1.get().blockID, 5); - } - } - } - - if (var21 >= var13) - { - var21 = var22 ? 1 : 0; - var22 = true; - ++var13; - - if (var13 > var9) - { - var13 = var9; - } - } - else - { - ++var21; - } - } - - var15 = var2.nextInt(3); - - for (var16 = 0; var16 < var6 - var15; ++var16) - { - var17 = var1.getBlockId(var3, var4 + var16, var5); - - if (var17 == 0 || var17 == Blocks.leaves1.get().blockID) - { - this.setBlockAndMetadata(var1, var3, var4 + var16, var5, Blocks.logs1.get().blockID, 3); - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenTaiga5.java b/src/minecraft/biomesoplenty/worldgen/WorldGenTaiga5.java deleted file mode 100644 index fc993fb60..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenTaiga5.java +++ /dev/null @@ -1,143 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenTaiga5 extends WorldGenerator -{ - public WorldGenTaiga5(boolean par1) - { - super(par1); - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(9) + 9; - int var7 = 2 + par2Random.nextInt(4); - int var8 = var6 - var7; - int var9 = 2 + par2Random.nextInt(2); - boolean var10 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 256) - { - int var11; - int var13; - int var15; - int var21; - - for (var11 = par4; var11 <= par4 + 1 + var6 && var10; ++var11) - { - boolean var12 = true; - - if (var11 - par4 < var7) - { - var21 = 0; - } - else - { - var21 = var9; - } - - for (var13 = par3 - var21; var13 <= par3 + var21 && var10; ++var13) - { - for (int var14 = par5 - var21; var14 <= par5 + var21 && var10; ++var14) - { - if (var11 >= 0 && var11 < 256) - { - var15 = par1World.getBlockId(var13, var11, var14); - - if (var15 != 0 && var15 != Block.leaves.blockID) - { - var10 = false; - } - } - else - { - var10 = false; - } - } - } - } - - if (!var10) - { - return false; - } - else - { - var11 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var11 == Block.grass.blockID || var11 == Block.dirt.blockID) && par4 < 256 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - var21 = par2Random.nextInt(2); - var13 = 1; - byte var22 = 0; - int var17; - int var16; - - for (var15 = 0; var15 <= var8; ++var15) - { - var16 = par4 + var6 - var15; - - for (var17 = par3 - var21; var17 <= par3 + var21; ++var17) - { - int var18 = var17 - par3; - - for (int var19 = par5 - var21; var19 <= par5 + var21; ++var19) - { - int var20 = var19 - par5; - - if ((Math.abs(var18) != var21 || Math.abs(var20) != var21 || var21 <= 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var17, var16, var19)]) - { - this.setBlockAndMetadata(par1World, var17, var16, var19, Block.leaves.blockID, 1); - } - } - } - - if (var21 >= var13) - { - var21 = var22; - var22 = 1; - ++var13; - - if (var13 > var9) - { - var13 = var9; - } - } - else - { - ++var21; - } - } - - var15 = par2Random.nextInt(3); - - for (var16 = 0; var16 < var6 - var15; ++var16) - { - var17 = par1World.getBlockId(par3, par4 + var16, par5); - - if (var17 == 0 || var17 == Block.leaves.blockID) - { - this.setBlockAndMetadata(par1World, par3, par4 + var16, par5, Block.wood.blockID, 1); - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenTaiga6.java b/src/minecraft/biomesoplenty/worldgen/WorldGenTaiga6.java deleted file mode 100644 index 22ec0c862..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenTaiga6.java +++ /dev/null @@ -1,143 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenTaiga6 extends WorldGenerator -{ - public WorldGenTaiga6(boolean par1) - { - super(par1); - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(4) + 9; - int var7 = 1 + par2Random.nextInt(2); - int var8 = var6 - var7; - int var9 = 2 + par2Random.nextInt(2); - boolean var10 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 256) - { - int var11; - int var13; - int var15; - int var21; - - for (var11 = par4; var11 <= par4 + 1 + var6 && var10; ++var11) - { - boolean var12 = true; - - if (var11 - par4 < var7) - { - var21 = 0; - } - else - { - var21 = var9; - } - - for (var13 = par3 - var21; var13 <= par3 + var21 && var10; ++var13) - { - for (int var14 = par5 - var21; var14 <= par5 + var21 && var10; ++var14) - { - if (var11 >= 0 && var11 < 256) - { - var15 = par1World.getBlockId(var13, var11, var14); - - if (var15 != 0 && var15 != Block.leaves.blockID) - { - var10 = false; - } - } - else - { - var10 = false; - } - } - } - } - - if (!var10) - { - return false; - } - else - { - var11 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var11 == Block.stone.blockID) && par4 < 256 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - var21 = par2Random.nextInt(2); - var13 = 1; - byte var22 = 0; - int var17; - int var16; - - for (var15 = 0; var15 <= var8; ++var15) - { - var16 = par4 + var6 - var15; - - for (var17 = par3 - var21; var17 <= par3 + var21; ++var17) - { - int var18 = var17 - par3; - - for (int var19 = par5 - var21; var19 <= par5 + var21; ++var19) - { - int var20 = var19 - par5; - - if ((Math.abs(var18) != var21 || Math.abs(var20) != var21 || var21 <= 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var17, var16, var19)]) - { - this.setBlockAndMetadata(par1World, var17, var16, var19, Block.leaves.blockID, 1); - } - } - } - - if (var21 >= var13) - { - var21 = var22; - var22 = 1; - ++var13; - - if (var13 > var9) - { - var13 = var9; - } - } - else - { - ++var21; - } - } - - var15 = par2Random.nextInt(3); - - for (var16 = 0; var16 < var6 - var15; ++var16) - { - var17 = par1World.getBlockId(par3, par4 + var16, par5); - - if (var17 == 0 || var17 == Block.leaves.blockID) - { - this.setBlockAndMetadata(par1World, par3, par4 + var16, par5, Block.wood.blockID, 1); - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenTaiga7.java b/src/minecraft/biomesoplenty/worldgen/WorldGenTaiga7.java deleted file mode 100644 index 6302c13de..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenTaiga7.java +++ /dev/null @@ -1,143 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenTaiga7 extends WorldGenerator -{ - public WorldGenTaiga7(boolean par1) - { - super(par1); - } - - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6 = par2Random.nextInt(9) + 9; - int var7 = 2 + par2Random.nextInt(4); - int var8 = var6 - var7; - int var9 = 2 + par2Random.nextInt(4); - boolean var10 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 100) - { - int var11; - int var13; - int var15; - int var21; - - for (var11 = par4; var11 <= par4 + 1 + var6 && var10; ++var11) - { - boolean var12 = true; - - if (var11 - par4 < var7) - { - var21 = 0; - } - else - { - var21 = var9; - } - - for (var13 = par3 - var21; var13 <= par3 + var21 && var10; ++var13) - { - for (int var14 = par5 - var21; var14 <= par5 + var21 && var10; ++var14) - { - if (var11 >= 0 && var11 < 100) - { - var15 = par1World.getBlockId(var13, var11, var14); - - if (var15 != 0 && var15 != Block.leaves.blockID) - { - var10 = false; - } - } - else - { - var10 = false; - } - } - } - } - - if (!var10) - { - return false; - } - else - { - var11 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var11 == Block.grass.blockID || var11 == Block.dirt.blockID) && par4 < 100 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - var21 = par2Random.nextInt(2); - var13 = 1; - byte var22 = 0; - int var17; - int var16; - - for (var15 = 0; var15 <= var8; ++var15) - { - var16 = par4 + var6 - var15; - - for (var17 = par3 - var21; var17 <= par3 + var21; ++var17) - { - int var18 = var17 - par3; - - for (int var19 = par5 - var21; var19 <= par5 + var21; ++var19) - { - int var20 = var19 - par5; - - if ((Math.abs(var18) != var21 || Math.abs(var20) != var21 || var21 <= 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var17, var16, var19)]) - { - this.setBlockAndMetadata(par1World, var17, var16, var19, Block.leaves.blockID, 1); - } - } - } - - if (var21 >= var13) - { - var21 = var22; - var22 = 1; - ++var13; - - if (var13 > var9) - { - var13 = var9; - } - } - else - { - ++var21; - } - } - - var15 = par2Random.nextInt(3); - - for (var16 = 0; var16 < var6 - var15; ++var16) - { - var17 = par1World.getBlockId(par3, par4 + var16, par5); - - if (var17 == 0 || var17 == Block.leaves.blockID) - { - this.setBlockAndMetadata(par1World, par3, par4 + var16, par5, Block.wood.blockID, 1); - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenTaiga8.java b/src/minecraft/biomesoplenty/worldgen/WorldGenTaiga8.java deleted file mode 100644 index 46807e022..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenTaiga8.java +++ /dev/null @@ -1,143 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenTaiga8 extends WorldGenerator -{ - public WorldGenTaiga8(boolean var1) - { - super(var1); - } - - public boolean generate(World var1, Random var2, int var3, int var4, int var5) - { - int var6 = var2.nextInt(15) + 15; - int var7 = var2.nextInt(3) + 5; - int var8 = var6 - var7; - int var9 = 3; - boolean var10 = true; - - if (var4 >= 1 && var4 + var6 + 1 <= 256) - { - int var11; - int var13; - int var15; - int var21; - - for (var11 = var4; var11 <= var4 + 1 + var6 && var10; ++var11) - { - boolean var12 = true; - - if (var11 - var4 < var7) - { - var21 = 0; - } - else - { - var21 = var9; - } - - for (var13 = var3 - var21; var13 <= var3 + var21 && var10; ++var13) - { - for (int var14 = var5 - var21; var14 <= var5 + var21 && var10; ++var14) - { - if (var11 >= 0 && var11 < 256) - { - var15 = var1.getBlockId(var13, var11, var14); - - if (var15 != 0 && var15 != Block.leaves.blockID) - { - var10 = false; - } - } - else - { - var10 = false; - } - } - } - } - - if (!var10) - { - return false; - } - else - { - var11 = var1.getBlockId(var3, var4 - 1, var5); - - if ((var11 == Block.grass.blockID || var11 == Block.dirt.blockID) && var4 < 256 - var6 - 1) - { - var1.setBlock(var3, var4 - 1, var5, Block.dirt.blockID); - var21 = var2.nextInt(2); - var13 = 1; - boolean var22 = false; - int var17; - int var16; - - for (var15 = 0; var15 <= var8; ++var15) - { - var16 = var4 + var6 - var15; - - for (var17 = var3 - var21; var17 <= var3 + var21; ++var17) - { - int var18 = var17 - var3; - - for (int var19 = var5 - var21; var19 <= var5 + var21; ++var19) - { - int var20 = var19 - var5; - - if ((Math.abs(var18) != var21 || Math.abs(var20) != var21 || var21 <= 0) && !Block.opaqueCubeLookup[var1.getBlockId(var17, var16, var19)]) - { - this.setBlockAndMetadata(var1, var17, var16, var19, Block.leaves.blockID, 1); - } - } - } - - if (var21 >= var13) - { - var21 = var22 ? 1 : 0; - var22 = true; - ++var13; - - if (var13 > var9) - { - var13 = var9; - } - } - else - { - ++var21; - } - } - - var15 = var2.nextInt(3); - - for (var16 = 0; var16 < var6 - var15; ++var16) - { - var17 = var1.getBlockId(var3, var4 + var16, var5); - - if (var17 == 0 || var17 == Block.leaves.blockID) - { - this.setBlockAndMetadata(var1, var3, var4 + var16, var5, Block.wood.blockID, 1); - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenTaiga9.java b/src/minecraft/biomesoplenty/worldgen/WorldGenTaiga9.java deleted file mode 100644 index de411a27e..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenTaiga9.java +++ /dev/null @@ -1,146 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenTaiga9 extends WorldGenerator -{ - public WorldGenTaiga9(boolean var1) - { - super(var1); - } - - public boolean generate(World var1, Random var2, int var3, int var4, int var5) - { - int var6 = var2.nextInt(10) + 10; - int var7 = 2; - int var8 = var6 - var7; - int var9 = 2 + var2.nextInt(2); - boolean var10 = true; - - if (var4 >= 1 && var4 + var6 + 1 <= 256) - { - int var11; - int var13; - int var15; - int var21; - - for (var11 = var4; var11 <= var4 + 1 + var6 && var10; ++var11) - { - boolean var12 = true; - - if (var11 - var4 < var7) - { - var21 = 0; - } - else - { - var21 = var9; - } - - for (var13 = var3 - var21; var13 <= var3 + var21 && var10; ++var13) - { - for (int var14 = var5 - var21; var14 <= var5 + var21 && var10; ++var14) - { - if (var11 >= 0 && var11 < 256) - { - var15 = var1.getBlockId(var13, var11, var14); - - if (var15 != 0 && var15 != Blocks.leaves1.get().blockID) - { - var10 = false; - } - } - else - { - var10 = false; - } - } - } - } - - if (!var10) - { - return false; - } - else - { - var11 = var1.getBlockId(var3, var4 - 1, var5); - - if ((var11 == Block.grass.blockID || var11 == Block.dirt.blockID) && var4 < 256 - var6 - 1) - { - var1.setBlock(var3, var4 - 1, var5, Block.dirt.blockID); - var21 = var2.nextInt(2); - var13 = 1; - boolean var22 = false; - int var17; - int var16; - - for (var15 = 0; var15 <= var8; ++var15) - { - var16 = var4 + var6 - var15; - - for (var17 = var3 - var21; var17 <= var3 + var21; ++var17) - { - int var18 = var17 - var3; - - for (int var19 = var5 - var21; var19 <= var5 + var21; ++var19) - { - int var20 = var19 - var5; - - if ((Math.abs(var18) != var21 || Math.abs(var20) != var21 || var21 <= 0) && !Block.opaqueCubeLookup[var1.getBlockId(var17, var16, var19)]) - { - this.setBlockAndMetadata(var1, var17, var16, var19, Blocks.leaves1.get().blockID, 5); - } - } - } - - if (var21 >= var13) - { - var21 = var22 ? 1 : 0; - var22 = true; - ++var13; - - if (var13 > var9) - { - var13 = var9; - } - } - else - { - ++var21; - } - } - - var15 = var2.nextInt(3); - - for (var16 = 0; var16 < var6 - var15; ++var16) - { - var17 = var1.getBlockId(var3, var4 + var16, var5); - - if (var17 == 0 || var17 == Blocks.leaves1.get().blockID) - { - this.setBlockAndMetadata(var1, var3, var4 + var16, var5, Blocks.logs1.get().blockID, 3); - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenTemperate.java b/src/minecraft/biomesoplenty/worldgen/WorldGenTemperate.java deleted file mode 100644 index 217ba4a06..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenTemperate.java +++ /dev/null @@ -1,143 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenTemperate extends WorldGenerator -{ - public WorldGenTemperate(boolean var1) - { - super(var1); - } - - public boolean generate(World var1, Random var2, int var3, int var4, int var5) - { - int var6 = var2.nextInt(25) + 10; - int var7 = var2.nextInt(3) + 2; - int var8 = var6 - var7; - int var9 = 2 + var2.nextInt(2); - boolean var10 = true; - - if (var4 >= 1 && var4 + var6 + 1 <= 256) - { - int var11; - int var13; - int var15; - int var21; - - for (var11 = var4; var11 <= var4 + 1 + var6 && var10; ++var11) - { - boolean var12 = true; - - if (var11 - var4 < var7) - { - var21 = 0; - } - else - { - var21 = var9; - } - - for (var13 = var3 - var21; var13 <= var3 + var21 && var10; ++var13) - { - for (int var14 = var5 - var21; var14 <= var5 + var21 && var10; ++var14) - { - if (var11 >= 0 && var11 < 256) - { - var15 = var1.getBlockId(var13, var11, var14); - - if (var15 != 0 && var15 != Block.leaves.blockID) - { - var10 = false; - } - } - else - { - var10 = false; - } - } - } - } - - if (!var10) - { - return false; - } - else - { - var11 = var1.getBlockId(var3, var4 - 1, var5); - - if ((var11 == Block.grass.blockID || var11 == Block.dirt.blockID) && var4 < 256 - var6 - 1) - { - var1.setBlock(var3, var4 - 1, var5, Block.dirt.blockID); - var21 = var2.nextInt(2); - var13 = 1; - boolean var22 = false; - int var17; - int var16; - - for (var15 = 0; var15 <= var8; ++var15) - { - var16 = var4 + var6 - var15; - - for (var17 = var3 - var21; var17 <= var3 + var21; ++var17) - { - int var18 = var17 - var3; - - for (int var19 = var5 - var21; var19 <= var5 + var21; ++var19) - { - int var20 = var19 - var5; - - if ((Math.abs(var18) != var21 || Math.abs(var20) != var21 || var21 <= 0) && !Block.opaqueCubeLookup[var1.getBlockId(var17, var16, var19)]) - { - this.setBlockAndMetadata(var1, var17, var16, var19, Block.leaves.blockID, 0); - } - } - } - - if (var21 >= var13) - { - var21 = var22 ? 1 : 0; - var22 = true; - ++var13; - - if (var13 > var9) - { - var13 = var9; - } - } - else - { - ++var21; - } - } - - var15 = var2.nextInt(3); - - for (var16 = 0; var16 < var6 - var15; ++var16) - { - var17 = var1.getBlockId(var3, var4 + var16, var5); - - if (var17 == 0 || var17 == Block.leaves.blockID) - { - this.setBlockAndMetadata(var1, var3, var4 + var16, var5, Block.wood.blockID, 0); - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenThickTree.java b/src/minecraft/biomesoplenty/worldgen/WorldGenThickTree.java deleted file mode 100644 index e1618f9e6..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenThickTree.java +++ /dev/null @@ -1,178 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenThickTree extends WorldGenerator -{ - public WorldGenThickTree(boolean var1) - { - super(var1); - } - - public boolean generate(World var1, Random var2, int var3, int var4, int var5) - { - int var6 = var2.nextInt(15) + 20; - int var7 = var2.nextInt(5) + 5; - int var8 = var6 - var7; - int var9 = 2 + var2.nextInt(2); - boolean var10 = true; - - if (var4 >= 1 && var4 + var6 + 1 <= 256) - { - int var11; - int var13; - int var14; - int var15; - int var24; - - for (var11 = var4; var11 <= var4 + 1 + var6 && var10; ++var11) - { - boolean var12 = true; - - if (var11 - var4 < var7) - { - var24 = 0; - } - else - { - var24 = var9; - } - - for (var13 = var3 - var24; var13 <= var3 + var24 && var10; ++var13) - { - for (var14 = var5 - var24; var14 <= var5 + var24 && var10; ++var14) - { - if (var11 >= 0 && var11 < 256) - { - var15 = var1.getBlockId(var13, var11, var14); - - if (var15 != 0 && var15 != Block.leaves.blockID) - { - var10 = false; - } - } - else - { - var10 = false; - } - } - } - } - - if (!var10) - { - return false; - } - else - { - var11 = var1.getBlockId(var3, var4 - 1, var5); - var24 = var1.getBlockId(var3 - 1, var4 - 1, var5); - var13 = var1.getBlockId(var3, var4 - 1, var5 - 1); - var14 = var1.getBlockId(var3 - 1, var4 - 1, var5 - 1); - - if ((var11 == Block.grass.blockID || var11 == Block.dirt.blockID) && var4 < 256 - var6 - 1) - { - if ((var24 == Block.grass.blockID || var24 == Block.dirt.blockID) && var4 < 256 - var6 - 1) - { - if ((var13 == Block.grass.blockID || var24 == Block.dirt.blockID) && var4 < 256 - var6 - 1) - { - if ((var14 == Block.grass.blockID || var24 == Block.dirt.blockID) && var4 < 256 - var6 - 1) - { - var1.setBlock(var3, var4 - 1, var5, Block.dirt.blockID); - var1.setBlock(var3 - 1, var4 - 1, var5, Block.dirt.blockID); - var1.setBlock(var3, var4 - 1, var5 - 1, Block.dirt.blockID); - var1.setBlock(var3 - 1, var4 - 1, var5 - 1, Block.dirt.blockID); - var15 = var2.nextInt(2); - int var16 = 1; - boolean var17 = false; - int var19; - int var18; - int var20; - - for (var18 = 0; var18 <= var8; ++var18) - { - var19 = var4 + var6 - var18; - - for (var20 = var3 - var15; var20 <= var3 + var15; ++var20) - { - int var21 = var20 - var3; - - for (int var22 = var5 - var15; var22 <= var5 + var15; ++var22) - { - int var23 = var22 - var5; - - if ((Math.abs(var21) != var15 || Math.abs(var23) != var15 || var15 <= 0) && !Block.opaqueCubeLookup[var1.getBlockId(var20, var19, var22)]) - { - this.setBlockAndMetadata(var1, var20, var19, var22, Block.leaves.blockID, 0); - this.setBlockAndMetadata(var1, var20 - 1, var19, var22, Block.leaves.blockID, 0); - this.setBlockAndMetadata(var1, var20, var19, var22 - 1, Block.leaves.blockID, 0); - this.setBlockAndMetadata(var1, var20 - 1, var19, var22 - 1, Block.leaves.blockID, 0); - } - } - } - - if (var15 >= var16) - { - var15 = var17 ? 1 : 0; - var17 = true; - ++var16; - - if (var16 > var9) - { - var16 = var9; - } - } - else - { - ++var15; - } - } - - var18 = var2.nextInt(3); - - for (var19 = 0; var19 < var6 - var18; ++var19) - { - var20 = var1.getBlockId(var3, var4 + var19, var5); - - if (var20 == 0 || var20 == Block.leaves.blockID) - { - this.setBlockAndMetadata(var1, var3, var4 + var19, var5, Block.wood.blockID, 0); - this.setBlockAndMetadata(var1, var3 - 1, var4 + var19, var5, Block.wood.blockID, 0); - this.setBlockAndMetadata(var1, var3, var4 + var19, var5 - 1, Block.wood.blockID, 0); - this.setBlockAndMetadata(var1, var3 - 1, var4 + var19, var5 - 1, Block.wood.blockID, 0); - } - } - - return true; - } - else - { - return false; - } - } - else - { - return false; - } - } - else - { - return false; - } - } - else - { - return false; - } - } - } - else - { - return false; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenVolcano.java b/src/minecraft/biomesoplenty/worldgen/WorldGenVolcano.java deleted file mode 100644 index d0934e394..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenVolcano.java +++ /dev/null @@ -1,50 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenVolcano extends WorldGenerator -{ - public boolean generate(World var1, Random var2, int var3, int var4, int var5) - { - while (var1.isAirBlock(var3, var4, var5) && var4 > 75) - { - --var4; - } - - int var6 = var1.getBlockId(var3, var4, var5); - - if (var6 != Blocks.ashStone.get().blockID) - { - return false; - } - else - { - for (int var7 = -2; var7 <= 2; ++var7) - { - for (int var8 = -2; var8 <= 2; ++var8) - { - if (var1.isAirBlock(var3 + var7, var4 - 1, var5 + var8) && var1.isAirBlock(var3 + var7, var4 - 2, var5 + var8)) - { - return false; - } - } - } - - var1.setBlock(var3, var4 - 1, var5, Block.lavaMoving.blockID); - var1.setBlock(var3, var4, var5, Block.lavaMoving.blockID); - var1.setBlock(var3, var4 + 1, var5, Block.lavaMoving.blockID); - var1.setBlock(var3 - 1, var4 + 1, var5, Block.lavaMoving.blockID); - var1.setBlock(var3 + 1, var4 + 1, var5, Block.lavaMoving.blockID); - var1.setBlock(var3, var4 + 1, var5 - 1, Block.lavaMoving.blockID); - var1.setBlock(var3, var4 + 1, var5 + 1, Block.lavaMoving.blockID); - return true; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenWillow.java b/src/minecraft/biomesoplenty/worldgen/WorldGenWillow.java deleted file mode 100644 index 961f9dd0a..000000000 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenWillow.java +++ /dev/null @@ -1,190 +0,0 @@ -package biomesoplenty.worldgen; - -import java.util.Random; - -import biomesoplenty.api.Blocks; -import biomesoplenty.configuration.BOPBlocks; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class WorldGenWillow extends WorldGenerator -{ - public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) - { - int var6; - - for (var6 = par2Random.nextInt(4) + 5; par1World.getBlockMaterial(par3, par4 - 1, par5) == Material.water; --par4) - { - ; - } - - boolean var7 = true; - - if (par4 >= 1 && par4 + var6 + 1 <= 128) - { - int var8; - int var10; - int var11; - int var12; - - for (var8 = par4; var8 <= par4 + 1 + var6; ++var8) - { - byte var9 = 1; - - if (var8 == par4) - { - var9 = 0; - } - - if (var8 >= par4 + 1 + var6 - 2) - { - var9 = 3; - } - - for (var10 = par3 - var9; var10 <= par3 + var9 && var7; ++var10) - { - for (var11 = par5 - var9; var11 <= par5 + var9 && var7; ++var11) - { - if (var8 >= 0 && var8 < 128) - { - var12 = par1World.getBlockId(var10, var8, var11); - - if (var12 != 0 && var12 != Blocks.leavesColorized.get().blockID) - { - if (var12 != Block.waterStill.blockID && var12 != Block.waterMoving.blockID) - { - var7 = false; - } - else if (var8 > par4) - { - var7 = false; - } - } - } - else - { - var7 = false; - } - } - } - } - - if (!var7) - { - return false; - } - else - { - var8 = par1World.getBlockId(par3, par4 - 1, par5); - - if ((var8 == Block.grass.blockID || var8 == Block.dirt.blockID) && par4 < 128 - var6 - 1) - { - this.setBlock(par1World, par3, par4 - 1, par5, Block.dirt.blockID); - int var13; - int var16; - - for (var16 = par4 - 3 + var6; var16 <= par4 + var6; ++var16) - { - var10 = var16 - (par4 + var6); - var11 = 2 - var10 / 2; - - for (var12 = par3 - var11; var12 <= par3 + var11; ++var12) - { - var13 = var12 - par3; - - for (int var14 = par5 - var11; var14 <= par5 + var11; ++var14) - { - int var15 = var14 - par5; - - if ((Math.abs(var13) != var11 || Math.abs(var15) != var11 || par2Random.nextInt(2) != 0 && var10 != 0) && !Block.opaqueCubeLookup[par1World.getBlockId(var12, var16, var14)]) - { - this.setBlockAndMetadata(par1World, var12, var16, var14, Blocks.leavesColorized.get().blockID, 4); - } - } - } - } - - for (var16 = 0; var16 < var6; ++var16) - { - var10 = par1World.getBlockId(par3, par4 + var16, par5); - - if (var10 == 0 || var10 == Blocks.leavesColorized.get().blockID || var10 == Block.waterMoving.blockID || var10 == Block.waterStill.blockID) - { - this.setBlockAndMetadata(par1World, par3, par4 + var16, par5, Blocks.logs3.get().blockID, 1); - } - } - - for (var16 = par4 - 3 + var6; var16 <= par4 + var6; ++var16) - { - var10 = var16 - (par4 + var6); - var11 = 2 - var10 / 2; - - for (var12 = par3 - var11; var12 <= par3 + var11; ++var12) - { - for (var13 = par5 - var11; var13 <= par5 + var11; ++var13) - { - if (par1World.getBlockId(var12, var16, var13) == Blocks.leavesColorized.get().blockID) - { - if (par2Random.nextInt(2) == 0 && par1World.getBlockId(var12 - 1, var16, var13) == 0) - { - this.generateVines(par1World, var12 - 1, var16, var13, 8); - } - - if (par2Random.nextInt(2) == 0 && par1World.getBlockId(var12 + 1, var16, var13) == 0) - { - this.generateVines(par1World, var12 + 1, var16, var13, 2); - } - - if (par2Random.nextInt(2) == 0 && par1World.getBlockId(var12, var16, var13 - 1) == 0) - { - this.generateVines(par1World, var12, var16, var13 - 1, 1); - } - - if (par2Random.nextInt(2) == 0 && par1World.getBlockId(var12, var16, var13 + 1) == 0) - { - this.generateVines(par1World, var12, var16, var13 + 1, 4); - } - } - } - } - } - - return true; - } - else - { - return false; - } - } - } - else - { - return false; - } - } - - /** - * Generates vines at the given position until it hits a block. - */ - private void generateVines(World par1World, int par2, int par3, int par4, int par5) - { - this.setBlockAndMetadata(par1World, par2, par3, par4, Blocks.willow.get().blockID, par5); - int var6 = 7; - - while (true) - { - --par3; - - if (par1World.getBlockId(par2, par3, par4) != 0 || var6 <= 0) - { - return; - } - - this.setBlockAndMetadata(par1World, par2, par3, par4, Blocks.willow.get().blockID, par5); - --var6; - } - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/structure/BOPMapGenScatteredFeature.java b/src/minecraft/biomesoplenty/worldgen/structure/BOPMapGenScatteredFeature.java deleted file mode 100644 index 36f1cd958..000000000 --- a/src/minecraft/biomesoplenty/worldgen/structure/BOPMapGenScatteredFeature.java +++ /dev/null @@ -1,116 +0,0 @@ -package biomesoplenty.worldgen.structure; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Random; - -import biomesoplenty.api.Biomes; - -import net.minecraft.entity.monster.EntityWitch; -import net.minecraft.util.MathHelper; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.SpawnListEntry; -import net.minecraft.world.gen.structure.MapGenStructure; -import net.minecraft.world.gen.structure.StructureStart; - -public class BOPMapGenScatteredFeature extends MapGenStructure -{ - private static List biomelist = Arrays.asList(new BiomeGenBase[] { - BiomeGenBase.desert, BiomeGenBase.desertHills, BiomeGenBase.jungle, BiomeGenBase.jungleHills, BiomeGenBase.swampland, - Biomes.badlands.get(), Biomes.dunes.get(), Biomes.oasis.get(), Biomes.desertNew.get(), - Biomes.bayou.get(), Biomes.bog.get(), Biomes.deadSwamp.get(), Biomes.fen.get(), Biomes.swampwoods.get(), Biomes.swamplandNew.get(), - Biomes.rainforest.get(), Biomes.temperateRainforest.get(), Biomes.tropicalRainforest.get(), Biomes.jungleNew.get() - }); - - /** contains possible spawns for scattered features */ - private List scatteredFeatureSpawnList; - - /** the maximum distance between scattered features */ - private int maxDistanceBetweenScatteredFeatures; - - /** the minimum distance between scattered features */ - private int minDistanceBetweenScatteredFeatures; - - public BOPMapGenScatteredFeature() - { - this.scatteredFeatureSpawnList = new ArrayList(); - this.maxDistanceBetweenScatteredFeatures = 32; - this.minDistanceBetweenScatteredFeatures = 8; - this.scatteredFeatureSpawnList.add(new SpawnListEntry(EntityWitch.class, 1, 1, 1)); - } - - public BOPMapGenScatteredFeature(Map par1Map) - { - this(); - Iterator iterator = par1Map.entrySet().iterator(); - - while (iterator.hasNext()) - { - Entry entry = (Entry)iterator.next(); - - if (((String)entry.getKey()).equals("distance")) - { - this.maxDistanceBetweenScatteredFeatures = MathHelper.parseIntWithDefaultAndMax((String)entry.getValue(), this.maxDistanceBetweenScatteredFeatures, this.minDistanceBetweenScatteredFeatures + 1); - } - } - } - - protected boolean canSpawnStructureAtCoords(int par1, int par2) - { - int k = par1; - int l = par2; - - if (par1 < 0) - { - par1 -= this.maxDistanceBetweenScatteredFeatures - 1; - } - - if (par2 < 0) - { - par2 -= this.maxDistanceBetweenScatteredFeatures - 1; - } - - int i1 = par1 / this.maxDistanceBetweenScatteredFeatures; - int j1 = par2 / this.maxDistanceBetweenScatteredFeatures; - Random random = this.worldObj.setRandomSeed(i1, j1, 14357617); - i1 *= this.maxDistanceBetweenScatteredFeatures; - j1 *= this.maxDistanceBetweenScatteredFeatures; - i1 += random.nextInt(this.maxDistanceBetweenScatteredFeatures - this.minDistanceBetweenScatteredFeatures); - j1 += random.nextInt(this.maxDistanceBetweenScatteredFeatures - this.minDistanceBetweenScatteredFeatures); - - if (k == i1 && l == j1) - { - BiomeGenBase biomegenbase = this.worldObj.getWorldChunkManager().getBiomeGenAt(k * 16 + 8, l * 16 + 8); - Iterator iterator = biomelist.iterator(); - - while (iterator.hasNext()) - { - BiomeGenBase biomegenbase1 = (BiomeGenBase)iterator.next(); - - if (biomegenbase == biomegenbase1) - { - return true; - } - } - } - - return false; - } - - protected StructureStart getStructureStart(int par1, int par2) - { - return new BOPStructureScatteredFeatureStart(this.worldObj, this.rand, par1, par2); - } - - /** - * returns possible spawns for scattered features - */ - public List getScatteredFeatureSpawnList() - { - return this.scatteredFeatureSpawnList; - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/structure/BOPMapGenVillage.java b/src/minecraft/biomesoplenty/worldgen/structure/BOPMapGenVillage.java deleted file mode 100644 index 5e0c325b9..000000000 --- a/src/minecraft/biomesoplenty/worldgen/structure/BOPMapGenVillage.java +++ /dev/null @@ -1,95 +0,0 @@ -package biomesoplenty.worldgen.structure; - -import java.util.Arrays; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Random; -import java.util.Map.Entry; - -import biomesoplenty.configuration.BOPConfiguration; -import net.minecraft.util.MathHelper; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.structure.MapGenStructure; -import net.minecraft.world.gen.structure.MapGenVillage; -import net.minecraft.world.gen.structure.StructureStart; - -public class BOPMapGenVillage extends MapGenStructure -{ - /** A list of all the biomes villages can spawn in. */ - public static List villageSpawnBiomes = Arrays.asList(new BiomeGenBase[] {BiomeGenBase.plains, BiomeGenBase.desert}); - - /** World terrain type, 0 for normal, 1 for flat map */ - private int terrainType; - private int maxDistance; - private int minDistance; - - public BOPMapGenVillage() - { - this.terrainType = 0; - this.maxDistance = BOPConfiguration.villageDistance; - this.minDistance = BOPConfiguration.villageDistance / 4; - villageSpawnBiomes = MapGenVillage.villageSpawnBiomes; - } - - public BOPMapGenVillage(Map par1Map) - { - this(); - Iterator iterator = par1Map.entrySet().iterator(); - - while (iterator.hasNext()) - { - Entry entry = (Entry)iterator.next(); - - if (((String)entry.getKey()).equals("size")) - { - this.terrainType = MathHelper.parseIntWithDefaultAndMax((String)entry.getValue(), this.terrainType, 0); - } - else if (((String)entry.getKey()).equals("distance")) - { - this.maxDistance = MathHelper.parseIntWithDefaultAndMax((String)entry.getValue(), this.maxDistance, this.minDistance + 1); - } - } - } - - protected boolean canSpawnStructureAtCoords(int par1, int par2) - { - int k = par1; - int l = par2; - - if (par1 < 0) - { - par1 -= this.maxDistance - 1; - } - - if (par2 < 0) - { - par2 -= this.maxDistance - 1; - } - - int i1 = par1 / this.maxDistance; - int j1 = par2 / this.maxDistance; - Random random = this.worldObj.setRandomSeed(i1, j1, 10387312); - i1 *= this.maxDistance; - j1 *= this.maxDistance; - i1 += random.nextInt(this.maxDistance - this.minDistance); - j1 += random.nextInt(this.maxDistance - this.minDistance); - - if (k == i1 && l == j1) - { - boolean flag = this.worldObj.getWorldChunkManager().areBiomesViable(k * 16 + 8, l * 16 + 8, 0, villageSpawnBiomes); - - if (flag) - { - return true; - } - } - - return false; - } - - protected StructureStart getStructureStart(int par1, int par2) - { - return new BOPStructureVillageStart(this.worldObj, this.rand, par1, par2, this.terrainType); - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/structure/BOPStructureScatteredFeatureStart.java b/src/minecraft/biomesoplenty/worldgen/structure/BOPStructureScatteredFeatureStart.java deleted file mode 100644 index 3581cf3b4..000000000 --- a/src/minecraft/biomesoplenty/worldgen/structure/BOPStructureScatteredFeatureStart.java +++ /dev/null @@ -1,43 +0,0 @@ -package biomesoplenty.worldgen.structure; - -import java.util.Random; - -import biomesoplenty.api.Biomes; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.structure.ComponentScatteredFeatureDesertPyramid; -import net.minecraft.world.gen.structure.ComponentScatteredFeatureJunglePyramid; -import net.minecraft.world.gen.structure.ComponentScatteredFeatureSwampHut; -import net.minecraft.world.gen.structure.StructureStart; - -public class BOPStructureScatteredFeatureStart extends StructureStart -{ - public BOPStructureScatteredFeatureStart(World world, Random random, int x, int z) - { - BiomeGenBase biome = world.getBiomeGenForCoords(x * 16 + 8, z * 16 + 8); - - if (biome != BiomeGenBase.jungle && biome != BiomeGenBase.jungleHills && biome != Biomes.rainforest.get() && - biome != Biomes.temperateRainforest.get() && biome != Biomes.tropicalRainforest.get() && biome != Biomes.jungleNew.get()) - { - if (biome == BiomeGenBase.swampland || biome == Biomes.bayou.get() || biome == Biomes.bog.get() - || biome == Biomes.deadSwamp.get() || biome == Biomes.fen.get() || biome == Biomes.swampwoods.get() - || biome == Biomes.swamplandNew.get()) - { - ComponentScatteredFeatureSwampHut componentscatteredfeatureswamphut = new ComponentScatteredFeatureSwampHut(random, x * 16, z * 16); - this.components.add(componentscatteredfeatureswamphut); - } - else - { - ComponentScatteredFeatureDesertPyramid componentscatteredfeaturedesertpyramid = new ComponentScatteredFeatureDesertPyramid(random, x * 16, z * 16); - this.components.add(componentscatteredfeaturedesertpyramid); - } - } - else - { - ComponentScatteredFeatureJunglePyramid componentscatteredfeaturejunglepyramid = new ComponentScatteredFeatureJunglePyramid(random, x * 16, z * 16); - this.components.add(componentscatteredfeaturejunglepyramid); - } - - this.updateBoundingBox(); - } -} diff --git a/src/minecraft/biomesoplenty/worldgen/structure/BOPStructureVillageStart.java b/src/minecraft/biomesoplenty/worldgen/structure/BOPStructureVillageStart.java deleted file mode 100644 index bffad5719..000000000 --- a/src/minecraft/biomesoplenty/worldgen/structure/BOPStructureVillageStart.java +++ /dev/null @@ -1,70 +0,0 @@ -package biomesoplenty.worldgen.structure; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.Random; -import net.minecraft.world.World; -import net.minecraft.world.gen.structure.ComponentVillageRoadPiece; -import net.minecraft.world.gen.structure.ComponentVillageStartPiece; -import net.minecraft.world.gen.structure.StructureComponent; -import net.minecraft.world.gen.structure.StructureStart; -import net.minecraft.world.gen.structure.StructureVillagePieces; - -class BOPStructureVillageStart extends StructureStart -{ - /** well ... thats what it does */ - private boolean hasMoreThanTwoComponents = false; - - public BOPStructureVillageStart(World par1World, Random par2Random, int par3, int par4, int par5) - { - ArrayList arraylist = StructureVillagePieces.getStructureVillageWeightedPieceList(par2Random, par5); - ComponentVillageStartPiece componentvillagestartpiece = new ComponentVillageStartPiece(par1World.getWorldChunkManager(), 0, par2Random, (par3 << 4) + 2, (par4 << 4) + 2, arraylist, par5); - this.components.add(componentvillagestartpiece); - componentvillagestartpiece.buildComponent(componentvillagestartpiece, this.components, par2Random); - ArrayList arraylist1 = componentvillagestartpiece.field_74930_j; - ArrayList arraylist2 = componentvillagestartpiece.field_74932_i; - int l; - - while (!arraylist1.isEmpty() || !arraylist2.isEmpty()) - { - StructureComponent structurecomponent; - - if (arraylist1.isEmpty()) - { - l = par2Random.nextInt(arraylist2.size()); - structurecomponent = (StructureComponent)arraylist2.remove(l); - structurecomponent.buildComponent(componentvillagestartpiece, this.components, par2Random); - } - else - { - l = par2Random.nextInt(arraylist1.size()); - structurecomponent = (StructureComponent)arraylist1.remove(l); - structurecomponent.buildComponent(componentvillagestartpiece, this.components, par2Random); - } - } - - this.updateBoundingBox(); - l = 0; - Iterator iterator = this.components.iterator(); - - while (iterator.hasNext()) - { - StructureComponent structurecomponent1 = (StructureComponent)iterator.next(); - - if (!(structurecomponent1 instanceof ComponentVillageRoadPiece)) - { - ++l; - } - } - - this.hasMoreThanTwoComponents = l > 2; - } - - /** - * currently only defined for Villages, returns true if Village has more than 2 non-road components - */ - public boolean isSizeableStructure() - { - return this.hasMoreThanTwoComponents; - } -} diff --git a/src/minecraft/biomesoplenty/worldtype/BeachNoiseOctaves.java b/src/minecraft/biomesoplenty/worldtype/BeachNoiseOctaves.java deleted file mode 100644 index 2c6814990..000000000 --- a/src/minecraft/biomesoplenty/worldtype/BeachNoiseOctaves.java +++ /dev/null @@ -1,65 +0,0 @@ -package biomesoplenty.worldtype; - -import java.util.Random; - -import net.minecraft.world.gen.NoiseGenerator; - -public class BeachNoiseOctaves extends NoiseGenerator -{ - private BeachNoisePerlin generatorCollection[]; - private int octaves; - - public BeachNoiseOctaves(Random random, int i) - { - octaves = i; - generatorCollection = new BeachNoisePerlin[i]; - for (int j = 0; j < i; j++) - { - generatorCollection[j] = new BeachNoisePerlin(random); - } - } - - public double func_806_a(double d, double d1) - { - double d2 = 0.0D; - double d3 = 1.0D; - for (int i = 0; i < octaves; i++) - { - d2 += generatorCollection[i].func_801_a(d * d3, d1 * d3) / d3; - d3 /= 2D; - } - - return d2; - } - - public double[] generateNoiseOctaves(double ad[], double d, double d1, double d2, - int i, int j, int k, double d3, double d4, - double d5) - { - if (ad == null) - { - ad = new double[i * j * k]; - } - else - { - for (int l = 0; l < ad.length; l++) - { - ad[l] = 0.0D; - } - } - double d6 = 1.0D; - for (int i1 = 0; i1 < octaves; i1++) - { - generatorCollection[i1].func_805_a(ad, d, d1, d2, i, j, k, d3 * d6, d4 * d6, d5 * d6, d6); - d6 /= 2D; - } - - return ad; - } - - public double[] generateNoiseOctaves(double ad[], int i, int j, int k, int l, double d, - double d1, double d2) - { - return generateNoiseOctaves(ad, i, 10D, j, k, 1, l, d, 1.0D, d1); - } -} diff --git a/src/minecraft/biomesoplenty/worldtype/BeachNoisePerlin.java b/src/minecraft/biomesoplenty/worldtype/BeachNoisePerlin.java deleted file mode 100644 index aac58709d..000000000 --- a/src/minecraft/biomesoplenty/worldtype/BeachNoisePerlin.java +++ /dev/null @@ -1,223 +0,0 @@ -package biomesoplenty.worldtype; - -import java.util.Random; - -import net.minecraft.world.gen.NoiseGenerator; - -public class BeachNoisePerlin extends NoiseGenerator -{ - - public BeachNoisePerlin() - { - this(new Random()); - } - - public BeachNoisePerlin(Random random) - { - permutations = new int[512]; - xCoord = random.nextDouble() * 256D; - yCoord = random.nextDouble() * 256D; - zCoord = random.nextDouble() * 256D; - for (int i = 0; i < 256; i++) - { - permutations[i] = i; - } - - for (int j = 0; j < 256; j++) - { - int k = random.nextInt(256 - j) + j; - int l = permutations[j]; - permutations[j] = permutations[k]; - permutations[k] = l; - permutations[j + 256] = permutations[j]; - } - } - - public double generateNoise(double d, double d1, double d2) - { - double d3 = d + xCoord; - double d4 = d1 + yCoord; - double d5 = d2 + zCoord; - int i = (int)d3; - int j = (int)d4; - int k = (int)d5; - if (d3 < (double)i) - { - i--; - } - if (d4 < (double)j) - { - j--; - } - if (d5 < (double)k) - { - k--; - } - int l = i & 0xff; - int i1 = j & 0xff; - int j1 = k & 0xff; - d3 -= i; - d4 -= j; - d5 -= k; - double d6 = d3 * d3 * d3 * (d3 * (d3 * 6D - 15D) + 10D); - double d7 = d4 * d4 * d4 * (d4 * (d4 * 6D - 15D) + 10D); - double d8 = d5 * d5 * d5 * (d5 * (d5 * 6D - 15D) + 10D); - int k1 = permutations[l] + i1; - int l1 = permutations[k1] + j1; - int i2 = permutations[k1 + 1] + j1; - int j2 = permutations[l + 1] + i1; - int k2 = permutations[j2] + j1; - int l2 = permutations[j2 + 1] + j1; - return lerp(d8, lerp(d7, lerp(d6, grad(permutations[l1], d3, d4, d5), grad(permutations[k2], d3 - 1.0D, d4, d5)), lerp(d6, grad(permutations[i2], d3, d4 - 1.0D, d5), grad(permutations[l2], d3 - 1.0D, d4 - 1.0D, d5))), lerp(d7, lerp(d6, grad(permutations[l1 + 1], d3, d4, d5 - 1.0D), grad(permutations[k2 + 1], d3 - 1.0D, d4, d5 - 1.0D)), lerp(d6, grad(permutations[i2 + 1], d3, d4 - 1.0D, d5 - 1.0D), grad(permutations[l2 + 1], d3 - 1.0D, d4 - 1.0D, d5 - 1.0D)))); - } - - public final double lerp(double d, double d1, double d2) - { - return d1 + d * (d2 - d1); - } - - public final double func_4110_a(int i, double d, double d1) - { - int j = i & 0xf; - double d2 = (double)(1 - ((j & 8) >> 3)) * d; - double d3 = j >= 4 ? j != 12 && j != 14 ? d1 : d : 0.0D; - return ((j & 1) != 0 ? -d2 : d2) + ((j & 2) != 0 ? -d3 : d3); - } - - public final double grad(int i, double d, double d1, double d2) - { - int j = i & 0xf; - double d3 = j >= 8 ? d1 : d; - double d4 = j >= 4 ? j != 12 && j != 14 ? d2 : d : d1; - return ((j & 1) != 0 ? -d3 : d3) + ((j & 2) != 0 ? -d4 : d4); - } - - public double func_801_a(double d, double d1) - { - return generateNoise(d, d1, 0.0D); - } - - @SuppressWarnings("unused") - public void func_805_a(double ad[], double d, double d1, double d2, - int i, int j, int k, double d3, double d4, - double d5, double d6) - { - if(j == 1) - { - boolean flag = false; - boolean flag1 = false; - boolean flag2 = false; - boolean flag3 = false; - double d8 = 0.0D; - double d10 = 0.0D; - int j3 = 0; - double d12 = 1.0D / d6; - for(int i4 = 0; i4 < i; i4++) - { - double d14 = (d + (double)i4) * d3 + xCoord; - int j4 = (int)d14; - if(d14 < (double)j4) - { - j4--; - } - int k4 = j4 & 0xff; - d14 -= j4; - double d17 = d14 * d14 * d14 * (d14 * (d14 * 6D - 15D) + 10D); - for(int l4 = 0; l4 < k; l4++) - { - double d19 = (d2 + (double)l4) * d5 + zCoord; - int j5 = (int)d19; - if(d19 < (double)j5) - { - j5--; - } - int l5 = j5 & 0xff; - d19 -= j5; - double d21 = d19 * d19 * d19 * (d19 * (d19 * 6D - 15D) + 10D); - int l = permutations[k4] + 0; ///bwg4 made by ted80 - int j1 = permutations[l] + l5; - int k1 = permutations[k4 + 1] + 0; - int l1 = permutations[k1] + l5; - double d9 = lerp(d17, func_4110_a(permutations[j1], d14, d19), grad(permutations[l1], d14 - 1.0D, 0.0D, d19)); - double d11 = lerp(d17, grad(permutations[j1 + 1], d14, 0.0D, d19 - 1.0D), grad(permutations[l1 + 1], d14 - 1.0D, 0.0D, d19 - 1.0D)); - double d23 = lerp(d21, d9, d11); - ad[j3++] += d23 * d12; - } - - } - - return; - } - int i1 = 0; - double d7 = 1.0D / d6; - int i2 = -1; - boolean flag4 = false; - boolean flag5 = false; - boolean flag6 = false; - boolean flag7 = false; - boolean flag8 = false; - boolean flag9 = false; - double d13 = 0.0D; - double d15 = 0.0D; - double d16 = 0.0D; - double d18 = 0.0D; - for(int i5 = 0; i5 < i; i5++) - { - double d20 = (d + (double)i5) * d3 + xCoord; - int k5 = (int)d20; - if(d20 < (double)k5) - { - k5--; - } - int i6 = k5 & 0xff; - d20 -= k5; - double d22 = d20 * d20 * d20 * (d20 * (d20 * 6D - 15D) + 10D); - for(int j6 = 0; j6 < k; j6++) - { - double d24 = (d2 + (double)j6) * d5 + zCoord; - int k6 = (int)d24; - if(d24 < (double)k6) - { - k6--; - } - int l6 = k6 & 0xff; - d24 -= k6; - double d25 = d24 * d24 * d24 * (d24 * (d24 * 6D - 15D) + 10D); - for(int i7 = 0; i7 < j; i7++) - { - double d26 = (d1 + (double)i7) * d4 + yCoord; - int j7 = (int)d26; - if(d26 < (double)j7) - { - j7--; - } - int k7 = j7 & 0xff; - d26 -= j7; - double d27 = d26 * d26 * d26 * (d26 * (d26 * 6D - 15D) + 10D); - if(i7 == 0 || k7 != i2) - { - i2 = k7; - int j2 = permutations[i6] + k7; - int k2 = permutations[j2] + l6; - int l2 = permutations[j2 + 1] + l6; - int i3 = permutations[i6 + 1] + k7; - int k3 = permutations[i3] + l6; - int l3 = permutations[i3 + 1] + l6; - d13 = lerp(d22, grad(permutations[k2], d20, d26, d24), grad(permutations[k3], d20 - 1.0D, d26, d24)); - d15 = lerp(d22, grad(permutations[l2], d20, d26 - 1.0D, d24), grad(permutations[l3], d20 - 1.0D, d26 - 1.0D, d24)); - d16 = lerp(d22, grad(permutations[k2 + 1], d20, d26, d24 - 1.0D), grad(permutations[k3 + 1], d20 - 1.0D, d26, d24 - 1.0D)); - d18 = lerp(d22, grad(permutations[l2 + 1], d20, d26 - 1.0D, d24 - 1.0D), grad(permutations[l3 + 1], d20 - 1.0D, d26 - 1.0D, d24 - 1.0D)); - } - double d28 = lerp(d27, d13, d15); - double d29 = lerp(d27, d16, d18); - double d30 = lerp(d25, d28, d29); - ad[i1++] += d30 * d7; - } - } - } - } - private int permutations[]; - public double xCoord; - public double yCoord; - public double zCoord; -} diff --git a/src/minecraft/biomesoplenty/worldtype/ChunkProviderBOP.java b/src/minecraft/biomesoplenty/worldtype/ChunkProviderBOP.java deleted file mode 100644 index d80422ea1..000000000 --- a/src/minecraft/biomesoplenty/worldtype/ChunkProviderBOP.java +++ /dev/null @@ -1,682 +0,0 @@ -package biomesoplenty.worldtype; - -import static net.minecraftforge.event.terraingen.InitMapGenEvent.EventType.CAVE; -import static net.minecraftforge.event.terraingen.InitMapGenEvent.EventType.MINESHAFT; -import static net.minecraftforge.event.terraingen.InitMapGenEvent.EventType.RAVINE; -import static net.minecraftforge.event.terraingen.InitMapGenEvent.EventType.SCATTERED_FEATURE; -import static net.minecraftforge.event.terraingen.InitMapGenEvent.EventType.STRONGHOLD; -import static net.minecraftforge.event.terraingen.InitMapGenEvent.EventType.VILLAGE; -import static net.minecraftforge.event.terraingen.PopulateChunkEvent.Populate.EventType.DUNGEON; -import static net.minecraftforge.event.terraingen.PopulateChunkEvent.Populate.EventType.ICE; -import static net.minecraftforge.event.terraingen.PopulateChunkEvent.Populate.EventType.LAKE; -import static net.minecraftforge.event.terraingen.PopulateChunkEvent.Populate.EventType.LAVA; - -import java.util.List; -import java.util.Random; - -import biomesoplenty.configuration.BOPConfiguration; -import biomesoplenty.worldgen.structure.BOPMapGenScatteredFeature; -import biomesoplenty.worldgen.structure.BOPMapGenVillage; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockSand; -import net.minecraft.entity.EnumCreatureType; -import net.minecraft.util.IProgressUpdate; -import net.minecraft.util.MathHelper; -import net.minecraft.world.ChunkPosition; -import net.minecraft.world.SpawnerAnimals; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.chunk.Chunk; -import net.minecraft.world.chunk.IChunkProvider; -import net.minecraft.world.gen.MapGenBase; -import net.minecraft.world.gen.MapGenCaves; -import net.minecraft.world.gen.MapGenRavine; -import net.minecraft.world.gen.NoiseGeneratorOctaves; -import net.minecraft.world.gen.feature.WorldGenDungeons; -import net.minecraft.world.gen.feature.WorldGenLakes; -import net.minecraft.world.gen.structure.MapGenMineshaft; -import net.minecraft.world.gen.structure.MapGenStronghold; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.Event.Result; -import net.minecraftforge.event.terraingen.ChunkProviderEvent; -import net.minecraftforge.event.terraingen.PopulateChunkEvent; -import net.minecraftforge.event.terraingen.TerrainGen; - -public class ChunkProviderBOP implements IChunkProvider -{ - private Random rand; - private NoiseGeneratorOctaves noiseGen1; - private NoiseGeneratorOctaves noiseGen2; - private NoiseGeneratorOctaves noiseGen3; - private NoiseGeneratorOctaves noiseGen4; - public NoiseGeneratorOctaves noiseGen5; - public NoiseGeneratorOctaves noiseGen6; - public NoiseGeneratorOctaves mobSpawnerNoise; - private World worldObj; - private final boolean mapFeaturesEnabled; - private double[] noiseArray; - private double[] stoneNoise = new double[256]; - private MapGenBase caveGenerator = new MapGenCaves(); - private MapGenStronghold strongholdGenerator = new MapGenStronghold(); - private BOPMapGenVillage villageGenerator = new BOPMapGenVillage(); - private MapGenMineshaft mineshaftGenerator = new MapGenMineshaft(); - private BOPMapGenScatteredFeature scatteredFeatureGenerator = new BOPMapGenScatteredFeature(); - private MapGenBase ravineGenerator = new MapGenRavine(); - private BiomeGenBase[] biomesForGeneration; - double[] noise3; - double[] noise1; - double[] noise2; - double[] noise5; - double[] noise6; - - private BeachNoiseOctaves beachnoise; - private double[] sandNoise = new double[256]; - private double[] gravelNoise = new double[256]; - - float[] parabolicField; - int[][] field_73219_j = new int[32][32]; - - { - caveGenerator = TerrainGen.getModdedMapGen(caveGenerator, CAVE); - strongholdGenerator = (MapGenStronghold) TerrainGen.getModdedMapGen(strongholdGenerator, STRONGHOLD); - villageGenerator = (BOPMapGenVillage) TerrainGen.getModdedMapGen(villageGenerator, VILLAGE); - mineshaftGenerator = (MapGenMineshaft) TerrainGen.getModdedMapGen(mineshaftGenerator, MINESHAFT); - scatteredFeatureGenerator = (BOPMapGenScatteredFeature) TerrainGen.getModdedMapGen(scatteredFeatureGenerator, SCATTERED_FEATURE); - ravineGenerator = TerrainGen.getModdedMapGen(ravineGenerator, RAVINE); - } - - public ChunkProviderBOP(World par1World, long par2, boolean par4) - { - this.worldObj = par1World; - this.mapFeaturesEnabled = par4; - this.rand = new Random(par2); - this.noiseGen1 = new NoiseGeneratorOctaves(this.rand, 16); - this.noiseGen2 = new NoiseGeneratorOctaves(this.rand, 16); - this.noiseGen3 = new NoiseGeneratorOctaves(this.rand, 8); - this.noiseGen4 = new NoiseGeneratorOctaves(this.rand, 4); - this.noiseGen5 = new NoiseGeneratorOctaves(this.rand, 10); - this.noiseGen6 = new NoiseGeneratorOctaves(this.rand, 16); - this.mobSpawnerNoise = new NoiseGeneratorOctaves(this.rand, 8); - - this.beachnoise = new BeachNoiseOctaves(this.rand, 4); - - NoiseGeneratorOctaves[] noiseGens = {noiseGen1, noiseGen2, noiseGen3, noiseGen4, noiseGen5, noiseGen6, mobSpawnerNoise}; - noiseGens = TerrainGen.getModdedNoiseGenerators(par1World, this.rand, noiseGens); - this.noiseGen1 = noiseGens[0]; - this.noiseGen2 = noiseGens[1]; - this.noiseGen3 = noiseGens[2]; - this.noiseGen4 = noiseGens[3]; - this.noiseGen5 = noiseGens[4]; - this.noiseGen6 = noiseGens[5]; - this.mobSpawnerNoise = noiseGens[6]; - } - - /** - * Generates the shape of the terrain for the chunk though its all stone though the water is frozen if the - * temperature is low enough - */ - public void generateTerrain(int par1, int par2, byte[] par3ArrayOfByte) - { - byte b0 = 4; - byte b1 = 16; - byte b2 = 63; - int k = b0 + 1; - byte b3 = 17; - int l = b0 + 1; - this.biomesForGeneration = this.worldObj.getWorldChunkManager().getBiomesForGeneration(this.biomesForGeneration, par1 * 4 - 2, par2 * 4 - 2, k + 5, l + 5); - this.noiseArray = this.initializeNoiseField(this.noiseArray, par1 * b0, 0, par2 * b0, k, b3, l); - - for (int i1 = 0; i1 < b0; ++i1) - { - for (int j1 = 0; j1 < b0; ++j1) - { - for (int k1 = 0; k1 < b1; ++k1) - { - double d0 = 0.125D; - double d1 = this.noiseArray[((i1 + 0) * l + j1 + 0) * b3 + k1 + 0]; - double d2 = this.noiseArray[((i1 + 0) * l + j1 + 1) * b3 + k1 + 0]; - double d3 = this.noiseArray[((i1 + 1) * l + j1 + 0) * b3 + k1 + 0]; - double d4 = this.noiseArray[((i1 + 1) * l + j1 + 1) * b3 + k1 + 0]; - double d5 = (this.noiseArray[((i1 + 0) * l + j1 + 0) * b3 + k1 + 1] - d1) * d0; - double d6 = (this.noiseArray[((i1 + 0) * l + j1 + 1) * b3 + k1 + 1] - d2) * d0; - double d7 = (this.noiseArray[((i1 + 1) * l + j1 + 0) * b3 + k1 + 1] - d3) * d0; - double d8 = (this.noiseArray[((i1 + 1) * l + j1 + 1) * b3 + k1 + 1] - d4) * d0; - - for (int l1 = 0; l1 < 8; ++l1) - { - double d9 = 0.25D; - double d10 = d1; - double d11 = d2; - double d12 = (d3 - d1) * d9; - double d13 = (d4 - d2) * d9; - - for (int i2 = 0; i2 < 4; ++i2) - { - int j2 = i2 + i1 * 4 << 11 | 0 + j1 * 4 << 7 | k1 * 8 + l1; - short short1 = 128; - j2 -= short1; - double d14 = 0.25D; - double d15 = (d11 - d10) * d14; - double d16 = d10 - d15; - - for (int k2 = 0; k2 < 4; ++k2) - { - if ((d16 += d15) > 0.0D) - { - par3ArrayOfByte[j2 += short1] = (byte)Block.stone.blockID; - } - else if (k1 * 8 + l1 < b2) - { - par3ArrayOfByte[j2 += short1] = (byte)Block.waterStill.blockID; - } - else - { - par3ArrayOfByte[j2 += short1] = 0; - } - } - - d10 += d12; - d11 += d13; - } - - d1 += d5; - d2 += d6; - d3 += d7; - d4 += d8; - } - } - } - } - } - - /** - * Replaces the stone that was placed in with blocks that match the biome - */ - public void replaceBlocksForBiome(int par1, int par2, byte[] par3ArrayOfByte, BiomeGenBase[] par4ArrayOfBiomeGenBase) - { - ChunkProviderEvent.ReplaceBiomeBlocks event = new ChunkProviderEvent.ReplaceBiomeBlocks(this, par1, par2, par3ArrayOfByte, par4ArrayOfBiomeGenBase); - MinecraftForge.EVENT_BUS.post(event); - if (event.getResult() == Result.DENY) return; - - byte b0 = 63; - double d0 = 0.03125D; - sandNoise = beachnoise.generateNoiseOctaves(sandNoise, par1 * 16, par2 * 16, 0.0D, 16, 16, 1, d0, d0, 1.0D); - gravelNoise = beachnoise.generateNoiseOctaves(gravelNoise, par1 * 16, 109.0134D, par2 * 16, 16, 1, 16, d0, 1.0D, d0); - this.stoneNoise = this.noiseGen4.generateNoiseOctaves(this.stoneNoise, par1 * 16, par2 * 16, 0, 16, 16, 1, d0 * 2.0D, d0 * 2.0D, d0 * 2.0D); - - for (int k = 0; k < 16; ++k) - { - for (int l = 0; l < 16; ++l) - { - BiomeGenBase biomegenbase = par4ArrayOfBiomeGenBase[l + k * 16]; - float f = biomegenbase.getFloatTemperature(); - int i1 = (int)(this.stoneNoise[k + l * 16] / 3.0D + 3.0D + this.rand.nextDouble() * 0.25D); - boolean sandbeach = sandNoise[k + l * 16] + rand.nextDouble() * 0.20000000000000001D > 0.0D; - boolean gravelbeach = gravelNoise[k + l * 16] + rand.nextDouble() * 0.20000000000000001D > 3D; - int j1 = -1; - byte b1 = biomegenbase.topBlock; - byte b2 = biomegenbase.fillerBlock; - - for (int k1 = 127; k1 >= 0; --k1) - { - int l1 = (l * 16 + k) * 128 + k1; - - if (k1 <= 0 + this.rand.nextInt(5)) - { - par3ArrayOfByte[l1] = (byte)Block.bedrock.blockID; - } - else - { - byte b3 = par3ArrayOfByte[l1]; - - if (b3 == 0) - { - j1 = -1; - } - else if (b3 == Block.stone.blockID) - { - if (j1 == -1) - { - if (i1 <= 0) - { - b1 = 0; - b2 = (byte)Block.stone.blockID; - } - else if (k1 >= b0 - 4 && k1 <= b0 + 1) - { - if(biomegenbase.biomeID == BOPConfiguration.originValleyID) - { - if(gravelbeach) - { - b1 = 0; - b2 = (byte)Block.gravel.blockID; - } - else if(sandbeach) - { - b1 = (byte)Block.sand.blockID; - b2 = (byte)Block.sand.blockID; - } - else - { - b1 = biomegenbase.topBlock; - b2 = biomegenbase.fillerBlock; - } - } - else - { - b1 = biomegenbase.topBlock; - b2 = biomegenbase.fillerBlock; - } - } - - if (k1 < b0 && b1 == 0) - { - if (f < 0.15F) - { - b1 = (byte)Block.ice.blockID; - } - else - { - b1 = (byte)Block.waterStill.blockID; - } - } - - j1 = i1; - - if (k1 >= b0 - 1) - { - par3ArrayOfByte[l1] = b1; - } - else - { - par3ArrayOfByte[l1] = b2; - } - } - else if (j1 > 0) - { - --j1; - par3ArrayOfByte[l1] = b2; - - if (j1 == 0 && b2 == Block.sand.blockID) - { - j1 = this.rand.nextInt(4); - b2 = (byte)Block.sandStone.blockID; - } - } - } - } - } - } - } - } - - /** - * loads or generates the chunk at the chunk location specified - */ - public Chunk loadChunk(int par1, int par2) - { - return this.provideChunk(par1, par2); - } - - /** - * Will return back a chunk, if it doesn't exist and its not a MP client it will generates all the blocks for the - * specified chunk from the map seed and chunk seed - */ - public Chunk provideChunk(int par1, int par2) - { - this.rand.setSeed((long)par1 * 341873128712L + (long)par2 * 132897987541L); - byte[] abyte = new byte[32768]; - this.generateTerrain(par1, par2, abyte); - this.biomesForGeneration = this.worldObj.getWorldChunkManager().loadBlockGeneratorData(this.biomesForGeneration, par1 * 16, par2 * 16, 16, 16); - this.replaceBlocksForBiome(par1, par2, abyte, this.biomesForGeneration); - this.caveGenerator.generate(this, this.worldObj, par1, par2, abyte); - this.ravineGenerator.generate(this, this.worldObj, par1, par2, abyte); - - if (this.mapFeaturesEnabled) - { - this.mineshaftGenerator.generate(this, this.worldObj, par1, par2, abyte); - this.villageGenerator.generate(this, this.worldObj, par1, par2, abyte); - this.strongholdGenerator.generate(this, this.worldObj, par1, par2, abyte); - this.scatteredFeatureGenerator.generate(this, this.worldObj, par1, par2, abyte); - } - - Chunk chunk = new Chunk(this.worldObj, abyte, par1, par2); - byte[] abyte1 = chunk.getBiomeArray(); - - for (int k = 0; k < abyte1.length; ++k) - { - abyte1[k] = (byte)this.biomesForGeneration[k].biomeID; - } - - chunk.generateSkylightMap(); - return chunk; - } - - /** - * generates a subset of the level's terrain data. Takes 7 arguments: the [empty] noise array, the position, and the - * size. - */ - @SuppressWarnings("unused") - private double[] initializeNoiseField(double[] par1ArrayOfDouble, int par2, int par3, int par4, int par5, int par6, int par7) - { - ChunkProviderEvent.InitNoiseField event = new ChunkProviderEvent.InitNoiseField(this, par1ArrayOfDouble, par2, par3, par4, par5, par6, par7); - MinecraftForge.EVENT_BUS.post(event); - if (event.getResult() == Result.DENY) return event.noisefield; - - if (par1ArrayOfDouble == null) - { - par1ArrayOfDouble = new double[par5 * par6 * par7]; - } - - if (this.parabolicField == null) - { - this.parabolicField = new float[25]; - - for (int k1 = -2; k1 <= 2; ++k1) - { - for (int l1 = -2; l1 <= 2; ++l1) - { - float f = 10.0F / MathHelper.sqrt_float((float)(k1 * k1 + l1 * l1) + 0.2F); - this.parabolicField[k1 + 2 + (l1 + 2) * 5] = f; - } - } - } - - double d0 = 684.412D; - double d1 = 684.412D; - this.noise5 = this.noiseGen5.generateNoiseOctaves(this.noise5, par2, par4, par5, par7, 1.121D, 1.121D, 0.5D); - this.noise6 = this.noiseGen6.generateNoiseOctaves(this.noise6, par2, par4, par5, par7, 200.0D, 200.0D, 0.5D); - this.noise3 = this.noiseGen3.generateNoiseOctaves(this.noise3, par2, par3, par4, par5, par6, par7, d0 / 80.0D, d1 / 160.0D, d0 / 80.0D); - this.noise1 = this.noiseGen1.generateNoiseOctaves(this.noise1, par2, par3, par4, par5, par6, par7, d0, d1, d0); - this.noise2 = this.noiseGen2.generateNoiseOctaves(this.noise2, par2, par3, par4, par5, par6, par7, d0, d1, d0); - boolean flag = false; - boolean flag1 = false; - int i2 = 0; - int j2 = 0; - - for (int k2 = 0; k2 < par5; ++k2) - { - for (int l2 = 0; l2 < par7; ++l2) - { - float f1 = 0.0F; - float f2 = 0.0F; - float f3 = 0.0F; - byte b0 = 2; - BiomeGenBase biomegenbase = this.biomesForGeneration[k2 + 2 + (l2 + 2) * (par5 + 5)]; - - for (int i3 = -b0; i3 <= b0; ++i3) - { - for (int j3 = -b0; j3 <= b0; ++j3) - { - BiomeGenBase biomegenbase1 = this.biomesForGeneration[k2 + i3 + 2 + (l2 + j3 + 2) * (par5 + 5)]; - float f4 = this.parabolicField[i3 + 2 + (j3 + 2) * 5] / (biomegenbase1.minHeight + 2.0F); - - if (biomegenbase1.minHeight > biomegenbase.minHeight) - { - f4 /= 2.0F; - } - - f1 += biomegenbase1.maxHeight * f4; - f2 += biomegenbase1.minHeight * f4; - f3 += f4; - } - } - - f1 /= f3; - f2 /= f3; - f1 = f1 * 0.9F + 0.1F; - f2 = (f2 * 4.0F - 1.0F) / 8.0F; - double d2 = this.noise6[j2] / 8000.0D; - - if (d2 < 0.0D) - { - d2 = -d2 * 0.3D; - } - - d2 = d2 * 3.0D - 2.0D; - - if (d2 < 0.0D) - { - d2 /= 2.0D; - - if (d2 < -1.0D) - { - d2 = -1.0D; - } - - d2 /= 1.4D; - d2 /= 2.0D; - } - else - { - if (d2 > 1.0D) - { - d2 = 1.0D; - } - - d2 /= 8.0D; - } - - ++j2; - - for (int k3 = 0; k3 < par6; ++k3) - { - double d3 = (double)f2; - double d4 = (double)f1; - d3 += d2 * 0.2D; - d3 = d3 * (double)par6 / 16.0D; - double d5 = (double)par6 / 2.0D + d3 * 4.0D; - double d6 = 0.0D; - double d7 = ((double)k3 - d5) * 12.0D * 128.0D / 128.0D / d4; - - if (d7 < 0.0D) - { - d7 *= 4.0D; - } - - double d8 = this.noise1[i2] / 512.0D; - double d9 = this.noise2[i2] / 512.0D; - double d10 = (this.noise3[i2] / 10.0D + 1.0D) / 2.0D; - - if (d10 < 0.0D) - { - d6 = d8; - } - else if (d10 > 1.0D) - { - d6 = d9; - } - else - { - d6 = d8 + (d9 - d8) * d10; - } - - d6 -= d7; - - if (k3 > par6 - 4) - { - double d11 = (double)((float)(k3 - (par6 - 4)) / 3.0F); - d6 = d6 * (1.0D - d11) + -10.0D * d11; - } - - par1ArrayOfDouble[i2] = d6; - ++i2; - } - } - } - - return par1ArrayOfDouble; - } - - /** - * Checks to see if a chunk exists at x, y - */ - public boolean chunkExists(int par1, int par2) - { - return true; - } - - /** - * Populates chunk with ores etc etc - */ - public void populate(IChunkProvider par1IChunkProvider, int par2, int par3) - { - BlockSand.fallInstantly = true; - int k = par2 * 16; - int l = par3 * 16; - BiomeGenBase biomegenbase = this.worldObj.getBiomeGenForCoords(k + 16, l + 16); - this.rand.setSeed(this.worldObj.getSeed()); - long i1 = this.rand.nextLong() / 2L * 2L + 1L; - long j1 = this.rand.nextLong() / 2L * 2L + 1L; - this.rand.setSeed((long)par2 * i1 + (long)par3 * j1 ^ this.worldObj.getSeed()); - boolean flag = false; - - MinecraftForge.EVENT_BUS.post(new PopulateChunkEvent.Pre(par1IChunkProvider, worldObj, rand, par2, par3, flag)); - - if (this.mapFeaturesEnabled) - { - this.mineshaftGenerator.generateStructuresInChunk(this.worldObj, this.rand, par2, par3); - flag = this.villageGenerator.generateStructuresInChunk(this.worldObj, this.rand, par2, par3); - this.strongholdGenerator.generateStructuresInChunk(this.worldObj, this.rand, par2, par3); - this.scatteredFeatureGenerator.generateStructuresInChunk(this.worldObj, this.rand, par2, par3); - } - - int k1; - int l1; - int i2; - - if (TerrainGen.populate(par1IChunkProvider, worldObj, rand, par2, par3, flag, LAKE) && - !flag && this.rand.nextInt(4) == 0) - { - k1 = k + this.rand.nextInt(16) + 8; - l1 = this.rand.nextInt(128); - i2 = l + this.rand.nextInt(16) + 8; - (new WorldGenLakes(Block.waterStill.blockID)).generate(this.worldObj, this.rand, k1, l1, i2); - } - - if (TerrainGen.populate(par1IChunkProvider, worldObj, rand, par2, par3, flag, LAVA) && - !flag && this.rand.nextInt(8) == 0) - { - k1 = k + this.rand.nextInt(16) + 8; - l1 = this.rand.nextInt(this.rand.nextInt(120) + 8); - i2 = l + this.rand.nextInt(16) + 8; - - if (l1 < 63 || this.rand.nextInt(10) == 0) - { - (new WorldGenLakes(Block.lavaStill.blockID)).generate(this.worldObj, this.rand, k1, l1, i2); - } - } - - boolean doGen = TerrainGen.populate(par1IChunkProvider, worldObj, rand, par2, par3, flag, DUNGEON); - for (k1 = 0; doGen && k1 < 8; ++k1) - { - l1 = k + this.rand.nextInt(16) + 8; - i2 = this.rand.nextInt(128); - int j2 = l + this.rand.nextInt(16) + 8; - - if ((new WorldGenDungeons()).generate(this.worldObj, this.rand, l1, i2, j2)) - { - ; - } - } - - biomegenbase.decorate(this.worldObj, this.rand, k, l); - SpawnerAnimals.performWorldGenSpawning(this.worldObj, biomegenbase, k + 8, l + 8, 16, 16, this.rand); - k += 8; - l += 8; - - doGen = TerrainGen.populate(par1IChunkProvider, worldObj, rand, par2, par3, flag, ICE); - for (k1 = 0; doGen && k1 < 16; ++k1) - { - for (l1 = 0; l1 < 16; ++l1) - { - i2 = this.worldObj.getPrecipitationHeight(k + k1, l + l1); - - if (this.worldObj.isBlockFreezable(k1 + k, i2 - 1, l1 + l)) - { - this.worldObj.setBlock(k1 + k, i2 - 1, l1 + l, Block.ice.blockID, 0, 2); - } - - if (this.worldObj.canSnowAt(k1 + k, i2, l1 + l)) - { - this.worldObj.setBlock(k1 + k, i2, l1 + l, Block.snow.blockID, 0, 2); - } - } - } - - MinecraftForge.EVENT_BUS.post(new PopulateChunkEvent.Post(par1IChunkProvider, worldObj, rand, par2, par3, flag)); - - BlockSand.fallInstantly = false; - } - - /** - * Two modes of operation: if passed true, save all Chunks in one go. If passed false, save up to two chunks. - * Return true if all chunks have been saved. - */ - public boolean saveChunks(boolean par1, IProgressUpdate par2IProgressUpdate) - { - return true; - } - - /** - * Unloads chunks that are marked to be unloaded. This is not guaranteed to unload every such chunk. - */ - public boolean unloadQueuedChunks() - { - return false; - } - - /** - * Returns if the IChunkProvider supports saving. - */ - public boolean canSave() - { - return true; - } - - /** - * Converts the instance data to a readable string. - */ - public String makeString() - { - return "RandomLevelSource"; - } - - /** - * Returns a list of creatures of the specified type that can spawn at the given location. - */ - @SuppressWarnings("rawtypes") - public List getPossibleCreatures(EnumCreatureType par1EnumCreatureType, int par2, int par3, int par4) - { - BiomeGenBase biomegenbase = this.worldObj.getBiomeGenForCoords(par2, par4); - return biomegenbase == null ? null : (biomegenbase == BiomeGenBase.swampland && par1EnumCreatureType == EnumCreatureType.monster && this.scatteredFeatureGenerator.hasStructureAt(par2, par3, par4) ? this.scatteredFeatureGenerator.getScatteredFeatureSpawnList() : biomegenbase.getSpawnableList(par1EnumCreatureType)); - } - - /** - * Returns the location of the closest structure of the specified type. If not found returns null. - */ - public ChunkPosition findClosestStructure(World par1World, String par2Str, int par3, int par4, int par5) - { - return "Stronghold".equals(par2Str) && this.strongholdGenerator != null ? this.strongholdGenerator.getNearestInstance(par1World, par3, par4, par5) : null; - } - - public int getLoadedChunkCount() - { - return 0; - } - - public void recreateStructures(int par1, int par2) - { - if (this.mapFeaturesEnabled) - { - this.mineshaftGenerator.generate(this, this.worldObj, par1, par2, (byte[])null); - this.villageGenerator.generate(this, this.worldObj, par1, par2, (byte[])null); - this.strongholdGenerator.generate(this, this.worldObj, par1, par2, (byte[])null); - this.scatteredFeatureGenerator.generate(this, this.worldObj, par1, par2, (byte[])null); - } - } - - @Override - public void func_104112_b() {} -} diff --git a/src/minecraft/biomesoplenty/worldtype/WTBiomesOP.java b/src/minecraft/biomesoplenty/worldtype/WTBiomesOP.java deleted file mode 100644 index 311500dce..000000000 --- a/src/minecraft/biomesoplenty/worldtype/WTBiomesOP.java +++ /dev/null @@ -1,395 +0,0 @@ -package biomesoplenty.worldtype; - -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraftforge.common.MinecraftForge; - -import biomesoplenty.api.Biomes; -import biomesoplenty.configuration.BOPConfiguration; -import biomesoplenty.helpers.WorldTypeSize; - -import com.google.common.base.Optional; - -public class WTBiomesOP extends WorldTypeBase -{ - public WTBiomesOP() { - super(4, "BIOMESOP"); - this.removeAllBiomes(); - this.removeBiome(BiomeGenBase.plains); - this.removeBiome(BiomeGenBase.desert); - this.removeBiome(BiomeGenBase.forest); - this.removeBiome(BiomeGenBase.extremeHills); - this.removeBiome(BiomeGenBase.taiga); - this.removeBiome(BiomeGenBase.swampland); - this.removeBiome(BiomeGenBase.jungle); - - if (BOPConfiguration.alpsGen == true) - { - addNewBiome(Biomes.alps); - } - if (BOPConfiguration.arcticGen == true) - { - addNewBiome(Biomes.arctic); - } - if (BOPConfiguration.badlandsGen == true) - { - addNewBiome(Biomes.badlands); - } - if (BOPConfiguration.bambooForestGen == true) - { - addNewBiome(Biomes.bambooForest); - } - if (BOPConfiguration.bayouGen == true) - { - addNewBiome(Biomes.bayou); - } - if (BOPConfiguration.birchForestGen == true) - { - addNewBiome(Biomes.birchForest); - } - if (BOPConfiguration.bogGen == true) - { - addNewBiome(Biomes.bog); - } - if (BOPConfiguration.borealForestGen == true) - { - addNewBiome(Biomes.borealForest); - } - if (BOPConfiguration.canyonGen == true) - { - addNewBiome(Biomes.canyon); - } - if (BOPConfiguration.chaparralGen == true) - { - addNewBiome(Biomes.chaparral); - } - if (BOPConfiguration.cherryBlossomGroveGen == true) - { - addNewBiome(Biomes.cherryBlossomGrove); - } - if (BOPConfiguration.coniferousForestGen == true) - { - addNewBiome(Biomes.coniferousForest); - } - if (BOPConfiguration.cragGen == true) - { - addNewBiome(Biomes.crag); - } - if (BOPConfiguration.deadForestGen == true) - { - addNewBiome(Biomes.deadForest); - } - if (BOPConfiguration.deadSwampGen == true) - { - addNewBiome(Biomes.deadSwamp); - } - if (BOPConfiguration.deadlandsGen == true) - { - addNewBiome(Biomes.deadlands); - } - if (BOPConfiguration.deciduousForestGen == true) - { - addNewBiome(Biomes.deciduousForest); - } - if (BOPConfiguration.drylandsGen == true) - { - addNewBiome(Biomes.drylands); - } - if (BOPConfiguration.dunesGen == true) - { - addNewBiome(Biomes.dunes); - } - if (BOPConfiguration.fenGen == true) - { - addNewBiome(Biomes.fen); - } - if (BOPConfiguration.fieldGen == true) - { - addNewBiome(Biomes.field); - } - if (BOPConfiguration.frostForestGen == true) - { - addNewBiome(Biomes.frostForest); - } - if (BOPConfiguration.fungiForestGen == true) - { - addNewBiome(Biomes.fungiForest); - } - if (BOPConfiguration.gardenGen == true) - { - addNewBiome(Biomes.garden); - } - if (BOPConfiguration.glacierGen == true) - { - addNewBiome(Biomes.glacier); - } - if (BOPConfiguration.grasslandGen == true) - { - addNewBiome(Biomes.grassland); - } - if (BOPConfiguration.groveGen == true) - { - addNewBiome(Biomes.grove); - } - if (BOPConfiguration.heathlandGen == true) - { - addNewBiome(Biomes.heathland); - } - if (BOPConfiguration.highlandGen == true) - { - addNewBiome(Biomes.highland); - } - if (BOPConfiguration.iceSheetGen == true) - { - addNewBiome(Biomes.iceSheet); - } - if (BOPConfiguration.icyHillsGen == true) - { - addNewBiome(Biomes.icyHills); - } - if (BOPConfiguration.jadeCliffsGen == true) - { - addNewBiome(Biomes.jadeCliffs); - } - if (BOPConfiguration.lushDesertGen == true) - { - addNewBiome(Biomes.lushDesert); - } - if (BOPConfiguration.lushSwampGen == true) - { - addNewBiome(Biomes.lushSwamp); - } - if (BOPConfiguration.mangroveGen == true) - { - addNewBiome(Biomes.mangrove); - } - if (BOPConfiguration.mapleWoodsGen == true) - { - addNewBiome(Biomes.mapleWoods); - } - if (BOPConfiguration.marshGen == true) - { - addNewBiome(Biomes.marsh); - } - if (BOPConfiguration.meadowGen == true) - { - addNewBiome(Biomes.meadow); - } - if (BOPConfiguration.mesaGen == true) - { - addNewBiome(Biomes.mesa); - } - if (BOPConfiguration.moorGen == true) - { - addNewBiome(Biomes.moor); - } - if (BOPConfiguration.mountainGen == true) - { - addNewBiome(Biomes.mountain); - } - if (BOPConfiguration.mysticGroveGen == true) - { - addNewBiome(Biomes.mysticGrove); - } - if (BOPConfiguration.oasisGen == true) - { - addNewBiome(Biomes.oasis); - } - if (BOPConfiguration.ominousWoodsGen == true) - { - addNewBiome(Biomes.ominousWoods); - } - if (BOPConfiguration.orchardGen == true) - { - addNewBiome(Biomes.orchard); - } - if (BOPConfiguration.originValleyGen == true) - { - addNewBiome(Biomes.originValley); - } - if (BOPConfiguration.outbackGen == true) - { - addNewBiome(Biomes.outback); - } - if (BOPConfiguration.pastureGen == true) - { - addNewBiome(Biomes.pasture); - } - if (BOPConfiguration.prairieGen == true) - { - addNewBiome(Biomes.prairie); - } - if (BOPConfiguration.quagmireGen == true) - { - addNewBiome(Biomes.quagmire); - } - if (BOPConfiguration.rainforestGen == true) - { - addNewBiome(Biomes.rainforest); - } - if (BOPConfiguration.redwoodForestGen == true) - { - addNewBiome(Biomes.redwoodForest); - } - if (BOPConfiguration.sacredSpringsGen == true) - { - addNewBiome(Biomes.sacredSprings); - } - if (BOPConfiguration.savannaGen == true) - { - addNewBiome(Biomes.savanna); - } - if (BOPConfiguration.scrublandGen == true) - { - addNewBiome(Biomes.scrubland); - } - if (BOPConfiguration.seasonalForestGen == true) - { - addNewBiome(Biomes.seasonalForest); - } - if (BOPConfiguration.shieldGen == true) - { - addNewBiome(Biomes.shield); - } - if (BOPConfiguration.shrublandGen == true) - { - addNewBiome(Biomes.shrubland); - } - if (BOPConfiguration.snowyWoodsGen == true) - { - addNewBiome(Biomes.snowyWoods); - } - if (BOPConfiguration.spruceWoodsGen == true) - { - addNewBiome(Biomes.spruceWoods); - } - if (BOPConfiguration.steppeGen == true) - { - addNewBiome(Biomes.steppe); - } - if (BOPConfiguration.swampwoodsGen == true) - { - addNewBiome(Biomes.swampwoods); - } - if (BOPConfiguration.temperateRainforestGen == true) - { - addNewBiome(Biomes.temperateRainforest); - } - if (BOPConfiguration.thicketGen == true) - { - addNewBiome(Biomes.thicket); - } - if (BOPConfiguration.tropicalRainforestGen == true) - { - addNewBiome(Biomes.tropicalRainforest); - } - if (BOPConfiguration.tropicsGen == true) - { - addNewBiome(Biomes.tropics); - } - if (BOPConfiguration.tundraGen == true) - { - addNewBiome(Biomes.tundra); - } - if (BOPConfiguration.volcanoGen == true) - { - addNewBiome(Biomes.volcano); - } - if (BOPConfiguration.wastelandGen == true) - { - addNewBiome(Biomes.wasteland); - } - if (BOPConfiguration.wetlandGen == true) - { - addNewBiome(Biomes.wetland); - } - if (BOPConfiguration.woodlandGen == true) - { - addNewBiome(Biomes.woodland); - } - - - if (BOPConfiguration.plainsGen == true) - { - if (BOPConfiguration.vanillaEnhanced == true) - { - addNewBiome(Biomes.plainsNew); - } - else - { - this.addNewBiome(BiomeGenBase.plains); - } - } - if (BOPConfiguration.desertGen == true) - { - if (BOPConfiguration.vanillaEnhanced == true) - { - addNewBiome(Biomes.desertNew); - } - else - { - this.addNewBiome(BiomeGenBase.desert); - } - } - if (BOPConfiguration.extremeHillsGen == true) - { - if (BOPConfiguration.vanillaEnhanced == true) - { - addNewBiome(Biomes.extremeHillsNew); - } - else - { - this.addNewBiome(BiomeGenBase.extremeHills); - } - } - if (BOPConfiguration.forestGen == true) - { - if (BOPConfiguration.vanillaEnhanced == true) - { - addNewBiome(Biomes.forestNew); - } - else - { - this.addNewBiome(BiomeGenBase.forest); - } - } - if (BOPConfiguration.taigaGen == true) - { - if (BOPConfiguration.vanillaEnhanced == true) - { - addNewBiome(Biomes.taigaNew); - } - else - { - this.addNewBiome(BiomeGenBase.taiga); - } - } - if (BOPConfiguration.swamplandGen == true) - { - if (BOPConfiguration.vanillaEnhanced == true) - { - addNewBiome(Biomes.swamplandNew); - } - else - { - this.addNewBiome(BiomeGenBase.swampland); - } - } - if (BOPConfiguration.jungleGen == true) - { - if (BOPConfiguration.vanillaEnhanced == true) - { - addNewBiome(Biomes.jungleNew); - } - else - { - this.addNewBiome(BiomeGenBase.jungle); - } - } - } - - public void addNewBiome(Optional biome) - { - if (biome.isPresent()) - this.addNewBiome(biome.get()); - } -} diff --git a/src/minecraft/biomesoplenty/worldtype/WorldChunkManagerBOP.java b/src/minecraft/biomesoplenty/worldtype/WorldChunkManagerBOP.java deleted file mode 100644 index 4e33048b0..000000000 --- a/src/minecraft/biomesoplenty/worldtype/WorldChunkManagerBOP.java +++ /dev/null @@ -1,334 +0,0 @@ -package biomesoplenty.worldtype; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -import net.minecraft.world.ChunkPosition; -import net.minecraft.world.World; -import net.minecraft.world.WorldType; -import net.minecraft.world.biome.BiomeCache; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.WorldChunkManager; -import net.minecraft.world.gen.layer.GenLayer; -import net.minecraft.world.gen.layer.IntCache; - -import biomesoplenty.api.Biomes; - -import com.google.common.base.Optional; - -public class WorldChunkManagerBOP extends WorldChunkManager -{ - private GenLayer genBiomes; - - /** A GenLayer containing the indices into BiomeGenBase.biomeList[] */ - private GenLayer biomeIndexLayer; - - /** The BiomeCache object for this world. */ - private BiomeCache biomeCache; - - /** A list of biomes that the player can spawn in. */ - private List biomesToSpawnIn; - - protected WorldChunkManagerBOP() - { - this.biomeCache = new BiomeCache(this); - this.biomesToSpawnIn = new ArrayList(); - this.biomesToSpawnIn.add(BiomeGenBase.forest); - this.biomesToSpawnIn.add(BiomeGenBase.plains); - this.biomesToSpawnIn.add(BiomeGenBase.taiga); - this.biomesToSpawnIn.add(BiomeGenBase.taigaHills); - this.biomesToSpawnIn.add(BiomeGenBase.forestHills); - this.biomesToSpawnIn.add(BiomeGenBase.jungle); - this.biomesToSpawnIn.add(BiomeGenBase.jungleHills); - - addSpawnBiomes(Biomes.alps); - addSpawnBiomes(Biomes.arctic); - addSpawnBiomes(Biomes.badlands); - addSpawnBiomes(Biomes.bambooForest); - addSpawnBiomes(Biomes.bayou); - addSpawnBiomes(Biomes.birchForest); - addSpawnBiomes(Biomes.bog); - addSpawnBiomes(Biomes.borealForest); - addSpawnBiomes(Biomes.chaparral); - addSpawnBiomes(Biomes.cherryBlossomGrove); - addSpawnBiomes(Biomes.coniferousForest); - addSpawnBiomes(Biomes.crag); - addSpawnBiomes(Biomes.deadForest); - addSpawnBiomes(Biomes.deciduousForest); - addSpawnBiomes(Biomes.drylands); - addSpawnBiomes(Biomes.dunes); - addSpawnBiomes(Biomes.frostForest); - addSpawnBiomes(Biomes.glacier); - addSpawnBiomes(Biomes.grassland); - addSpawnBiomes(Biomes.grove); - addSpawnBiomes(Biomes.heathland); - addSpawnBiomes(Biomes.highland); - addSpawnBiomes(Biomes.lushDesert); - addSpawnBiomes(Biomes.lushSwamp); - addSpawnBiomes(Biomes.mangrove); - addSpawnBiomes(Biomes.mapleWoods); - addSpawnBiomes(Biomes.marsh); - addSpawnBiomes(Biomes.meadow); - addSpawnBiomes(Biomes.mesa); - addSpawnBiomes(Biomes.mountain); - addSpawnBiomes(Biomes.oasis); - addSpawnBiomes(Biomes.orchard); - addSpawnBiomes(Biomes.pasture); - addSpawnBiomes(Biomes.prairie); - addSpawnBiomes(Biomes.quagmire); - addSpawnBiomes(Biomes.rainforest); - addSpawnBiomes(Biomes.redwoodForest); - addSpawnBiomes(Biomes.savanna); - addSpawnBiomes(Biomes.scrubland); - addSpawnBiomes(Biomes.seasonalForest); - addSpawnBiomes(Biomes.shrubland); - addSpawnBiomes(Biomes.steppe); - addSpawnBiomes(Biomes.temperateRainforest); - addSpawnBiomes(Biomes.tropicalRainforest); - addSpawnBiomes(Biomes.tropics); - addSpawnBiomes(Biomes.tundra); - addSpawnBiomes(Biomes.volcano); - addSpawnBiomes(Biomes.wetland); - addSpawnBiomes(Biomes.woodland); - - addSpawnBiomes(Biomes.forestNew); - addSpawnBiomes(Biomes.plainsNew); - addSpawnBiomes(Biomes.taigaNew); - addSpawnBiomes(Biomes.jungleNew); - } - - public WorldChunkManagerBOP(long par1, WorldType par3WorldType) - { - this(); - GenLayer[] var4 = GenLayer.initializeAllBiomeGenerators(par1, par3WorldType); - this.genBiomes = (GenLayer) var4[0]; - this.biomeIndexLayer = (GenLayer) var4[1]; - } - - public WorldChunkManagerBOP(World par1World) - { - this(par1World.getSeed(), par1World.getWorldInfo().getTerrainType()); - } - - /** - * Gets the list of valid biomes for the player to spawn in. - */ - public List getBiomesToSpawnIn() - { - return this.biomesToSpawnIn; - } - - /** - * Returns the BiomeGenBase related to the x, z position on the world. - */ - public BiomeGenBase getBiomeGenAt(int par1, int par2) - { - return this.biomeCache.getBiomeGenAt(par1, par2); - } - - /** - * Returns a list of rainfall values for the specified blocks. Args: listToReuse, x, z, width, length. - */ - public float[] getRainfall(float[] par1ArrayOfFloat, int par2, int par3, int par4, int par5) - { - IntCache.resetIntCache(); - - if (par1ArrayOfFloat == null || par1ArrayOfFloat.length < par4 * par5) - { - par1ArrayOfFloat = new float[par4 * par5]; - } - - int[] var6 = this.biomeIndexLayer.getInts(par2, par3, par4, par5); - - for (int var7 = 0; var7 < par4 * par5; ++var7) - { - float var8 = (float)BiomeGenBase.biomeList[var6[var7]].getIntRainfall() / 65536.0F; - - if (var8 > 1.0F) - { - var8 = 1.0F; - } - - par1ArrayOfFloat[var7] = var8; - } - - return par1ArrayOfFloat; - } - - /** - * Return an adjusted version of a given temperature based on the y height - */ - public float getTemperatureAtHeight(float par1, int par2) - { - return par1; - } - - /** - * Returns a list of temperatures to use for the specified blocks. Args: listToReuse, x, y, width, length - */ - public float[] getTemperatures(float[] par1ArrayOfFloat, int par2, int par3, int par4, int par5) - { - IntCache.resetIntCache(); - - if (par1ArrayOfFloat == null || par1ArrayOfFloat.length < par4 * par5) - { - par1ArrayOfFloat = new float[par4 * par5]; - } - - int[] var6 = this.biomeIndexLayer.getInts(par2, par3, par4, par5); - - for (int var7 = 0; var7 < par4 * par5; ++var7) - { - float var8 = (float)BiomeGenBase.biomeList[var6[var7]].getIntTemperature() / 65536.0F; - - if (var8 > 1.0F) - { - var8 = 1.0F; - } - - par1ArrayOfFloat[var7] = var8; - } - - return par1ArrayOfFloat; - } - - /** - * Returns an array of biomes for the location input. - */ - public BiomeGenBase[] getBiomesForGeneration(BiomeGenBase[] par1ArrayOfBiomeGenBase, int par2, int par3, int par4, int par5) - { - IntCache.resetIntCache(); - - if (par1ArrayOfBiomeGenBase == null || par1ArrayOfBiomeGenBase.length < par4 * par5) - { - par1ArrayOfBiomeGenBase = new BiomeGenBase[par4 * par5]; - } - - int[] var6 = this.genBiomes.getInts(par2, par3, par4, par5); - - for (int var7 = 0; var7 < par4 * par5; ++var7) - { - par1ArrayOfBiomeGenBase[var7] = BiomeGenBase.biomeList[var6[var7]]; - } - - return par1ArrayOfBiomeGenBase; - } - - /** - * Returns biomes to use for the blocks and loads the other data like temperature and humidity onto the - * WorldChunkManager Args: oldBiomeList, x, z, width, depth - */ - public BiomeGenBase[] loadBlockGeneratorData(BiomeGenBase[] par1ArrayOfBiomeGenBase, int par2, int par3, int par4, int par5) - { - return this.getBiomeGenAt(par1ArrayOfBiomeGenBase, par2, par3, par4, par5, true); - } - - /** - * Return a list of biomes for the specified blocks. Args: listToReuse, x, y, width, length, cacheFlag (if false, - * don't check biomeCache to avoid infinite loop in BiomeCacheBlock) - */ - public BiomeGenBase[] getBiomeGenAt(BiomeGenBase[] par1ArrayOfBiomeGenBase, int par2, int par3, int par4, int par5, boolean par6) - { - IntCache.resetIntCache(); - - if (par1ArrayOfBiomeGenBase == null || par1ArrayOfBiomeGenBase.length < par4 * par5) - { - par1ArrayOfBiomeGenBase = new BiomeGenBase[par4 * par5]; - } - - if (par6 && par4 == 16 && par5 == 16 && (par2 & 15) == 0 && (par3 & 15) == 0) - { - BiomeGenBase[] var9 = this.biomeCache.getCachedBiomes(par2, par3); - System.arraycopy(var9, 0, par1ArrayOfBiomeGenBase, 0, par4 * par5); - return par1ArrayOfBiomeGenBase; - } - else - { - int[] var7 = this.biomeIndexLayer.getInts(par2, par3, par4, par5); - - for (int var8 = 0; var8 < par4 * par5; ++var8) - { - par1ArrayOfBiomeGenBase[var8] = BiomeGenBase.biomeList[var7[var8]]; - } - - return par1ArrayOfBiomeGenBase; - } - } - - /** - * checks given Chunk's Biomes against List of allowed ones - */ - @SuppressWarnings("rawtypes") - public boolean areBiomesViable(int par1, int par2, int par3, List par4List) - { - IntCache.resetIntCache(); - int var5 = par1 - par3 >> 2; - int var6 = par2 - par3 >> 2; - int var7 = par1 + par3 >> 2; - int var8 = par2 + par3 >> 2; - int var9 = var7 - var5 + 1; - int var10 = var8 - var6 + 1; - int[] var11 = this.genBiomes.getInts(var5, var6, var9, var10); - - for (int var12 = 0; var12 < var9 * var10; ++var12) - { - BiomeGenBase var13 = BiomeGenBase.biomeList[var11[var12]]; - - if (!par4List.contains(var13)) - { - return false; - } - } - - return true; - } - - /** - * Finds a valid position within a range, that is in one of the listed biomes. Searches {par1,par2} +-par3 blocks. - * Strongly favors positive y positions. - */ - @SuppressWarnings("rawtypes") - public ChunkPosition findBiomePosition(int par1, int par2, int par3, List par4List, Random par5Random) - { - IntCache.resetIntCache(); - int var6 = par1 - par3 >> 2; - int var7 = par2 - par3 >> 2; - int var8 = par1 + par3 >> 2; - int var9 = par2 + par3 >> 2; - int var10 = var8 - var6 + 1; - int var11 = var9 - var7 + 1; - int[] var12 = this.genBiomes.getInts(var6, var7, var10, var11); - ChunkPosition var13 = null; - int var14 = 0; - - for (int var15 = 0; var15 < var12.length; ++var15) - { - int var16 = var6 + var15 % var10 << 2; - int var17 = var7 + var15 / var10 << 2; - BiomeGenBase var18 = BiomeGenBase.biomeList[var12[var15]]; - - if (par4List.contains(var18) && (var13 == null || par5Random.nextInt(var14 + 1) == 0)) - { - var13 = new ChunkPosition(var16, 0, var17); - ++var14; - } - } - - return var13; - } - - /** - * Calls the WorldChunkManager's biomeCache.cleanupCache() - */ - public void cleanupCache() - { - this.biomeCache.cleanupCache(); - } - - private void addSpawnBiomes(Optional biome) - { - if (biome.isPresent()) - this.biomesToSpawnIn.add(biome.get()); - } -} diff --git a/src/minecraft/biomesoplenty/worldtype/WorldTypeBase.java b/src/minecraft/biomesoplenty/worldtype/WorldTypeBase.java deleted file mode 100644 index db19ec6f2..000000000 --- a/src/minecraft/biomesoplenty/worldtype/WorldTypeBase.java +++ /dev/null @@ -1,36 +0,0 @@ -package biomesoplenty.worldtype; - -import net.minecraft.world.World; -import net.minecraft.world.WorldType; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.WorldChunkManager; -import net.minecraft.world.chunk.IChunkProvider; - -public class WorldTypeBase extends WorldType -{ - - public WorldTypeBase(int par1, String par2Str) { - super(par1, par2Str); - } - - public WorldChunkManager getChunkManager(World var1) - { - return new WorldChunkManagerBOP(var1); - } - - public IChunkProvider getChunkGenerator(World world, String generatorOptions) - { - return new ChunkProviderBOP(world, world.getSeed(), world.getWorldInfo().isMapFeaturesEnabled()); - } - - public void removeAllBiomes() - { - this.removeBiome(BiomeGenBase.plains); - this.removeBiome(BiomeGenBase.desert); - this.removeBiome(BiomeGenBase.forest); - this.removeBiome(BiomeGenBase.extremeHills); - this.removeBiome(BiomeGenBase.taiga); - this.removeBiome(BiomeGenBase.swampland); - this.removeBiome(BiomeGenBase.jungle); - } -} diff --git a/src/minecraft/bop.png b/src/minecraft/bop.png deleted file mode 100644 index c599ae5d7e5ccacba9cd8ae8da8e910039bb37b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20616 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 O0000n diff --git a/src/minecraft/forestry/api/apiculture/BeeManager.java b/src/minecraft/forestry/api/apiculture/BeeManager.java deleted file mode 100644 index ebcf96d28..000000000 --- a/src/minecraft/forestry/api/apiculture/BeeManager.java +++ /dev/null @@ -1,39 +0,0 @@ -package forestry.api.apiculture; - -import java.util.ArrayList; -import java.util.HashMap; - -import net.minecraft.item.ItemStack; -import forestry.api.genetics.IMutation; - -public class BeeManager { - - /** - * See {@link IBeeInterface} for details - */ - public static IBeeInterface beeInterface; - - /** - * Species templates for bees that can drop from hives. - * - * 0 - Forest 1 - Meadows 2 - Desert 3 - Jungle 4 - End 5 - Snow 6 - Swamp - * - * see {@link IMutation} for template format - */ - public static ArrayList[] hiveDrops; - - /** - * 0 - Common Village Bees 1 - Uncommon Village Bees (20 % of spawns) - */ - public static ArrayList[] villageBees; - - /** - * Access to Forestry's breeding manager for breeding information. - */ - public static IBreedingManager breedingManager; - - /** - * List of items that can induce swarming. Integer denotes x in 1000 chance. - */ - public static HashMap inducers = new HashMap(); -} diff --git a/src/minecraft/forestry/api/apiculture/EnumBeeChromosome.java b/src/minecraft/forestry/api/apiculture/EnumBeeChromosome.java deleted file mode 100644 index 0321d6590..000000000 --- a/src/minecraft/forestry/api/apiculture/EnumBeeChromosome.java +++ /dev/null @@ -1,6 +0,0 @@ -package forestry.api.apiculture; - -public enum EnumBeeChromosome { - SPECIES, SPEED, LIFESPAN, FERTILITY, TEMPERATURE_TOLERANCE, NOCTURNAL, @Deprecated - HUMIDITY, HUMIDITY_TOLERANCE, TOLERANT_FLYER, CAVE_DWELLING, FLOWER_PROVIDER, FLOWERING, TERRITORY, EFFECT -} diff --git a/src/minecraft/forestry/api/apiculture/EnumBeeType.java b/src/minecraft/forestry/api/apiculture/EnumBeeType.java deleted file mode 100644 index 7fdd52cb4..000000000 --- a/src/minecraft/forestry/api/apiculture/EnumBeeType.java +++ /dev/null @@ -1,17 +0,0 @@ -package forestry.api.apiculture; - -import java.util.Locale; - -public enum EnumBeeType { - NONE, PRINCESS, QUEEN, DRONE; - - String name; - - private EnumBeeType() { - this.name = "bees." + this.toString().toLowerCase(Locale.ENGLISH); - } - - public String getName() { - return name; - } -} diff --git a/src/minecraft/forestry/api/apiculture/FlowerManager.java b/src/minecraft/forestry/api/apiculture/FlowerManager.java deleted file mode 100644 index 3f2f40693..000000000 --- a/src/minecraft/forestry/api/apiculture/FlowerManager.java +++ /dev/null @@ -1,12 +0,0 @@ -package forestry.api.apiculture; - -import java.util.ArrayList; - -import net.minecraft.item.ItemStack; - -public class FlowerManager { - /** - * ItemStacks representing simple flower blocks. Meta-sensitive, processed by the basic {@link IFlowerProvider}. - */ - public static ArrayList plainFlowers = new ArrayList(); -} diff --git a/src/minecraft/forestry/api/apiculture/IAlleleBeeEffect.java b/src/minecraft/forestry/api/apiculture/IAlleleBeeEffect.java deleted file mode 100644 index 6738c3199..000000000 --- a/src/minecraft/forestry/api/apiculture/IAlleleBeeEffect.java +++ /dev/null @@ -1,47 +0,0 @@ -package forestry.api.apiculture; - -import forestry.api.genetics.IAlleleEffect; -import forestry.api.genetics.IEffectData; - -public interface IAlleleBeeEffect extends IAlleleEffect { - /** - * Called by apiaries to cause an effect in the world. - * - * @param genome - * Genome of the bee queen causing this effect - * @param storedData - * Object containing the stored effect data for the apiary/hive the bee is in. - * @param world - * @param biomeid - * @param x - * @param y - * @param z - * @return storedData, may have been manipulated. - */ - IEffectData doEffect(IBeeGenome genome, IEffectData storedData, IBeeHousing housing); - - /** - * Is called to produce bee effects. - * - * @param genome - * @param storedData - * Object containing the stored effect data for the apiary/hive the bee is in. - * @param world - * @param biomeid - * @param x - * @param y - * @param z - * @return storedData, may have been manipulated. - */ - IEffectData doFX(IBeeGenome genome, IEffectData storedData, IBeeHousing housing); - - /** - * @return A texture file containing an icon representing the effect - */ - String getIconTextureFile(); - - /** - * @return Icon index of the effect's icon, return -1 if there isn't one - */ - int getIconIndex(); -} diff --git a/src/minecraft/forestry/api/apiculture/IAlleleBeeSpecies.java b/src/minecraft/forestry/api/apiculture/IAlleleBeeSpecies.java deleted file mode 100644 index 2acf3906b..000000000 --- a/src/minecraft/forestry/api/apiculture/IAlleleBeeSpecies.java +++ /dev/null @@ -1,26 +0,0 @@ -package forestry.api.apiculture; - -import java.util.HashMap; - -import net.minecraft.item.ItemStack; -import net.minecraft.util.Icon; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import forestry.api.genetics.IAlleleSpecies; - -public interface IAlleleBeeSpecies extends IAlleleSpecies { - - // / Products, Chance - HashMap getProducts(); - - // / Specialty, Chance - HashMap getSpecialty(); - - // / Only jubilant bees give their specialty product - boolean isJubilant(IBeeGenome genome, IBeeHousing housing); - - int getIconColour(int renderPass); - - @SideOnly(Side.CLIENT) - Icon getIcon(EnumBeeType type, int renderPass); -} diff --git a/src/minecraft/forestry/api/apiculture/IAlleleFlowers.java b/src/minecraft/forestry/api/apiculture/IAlleleFlowers.java deleted file mode 100644 index e95ad9411..000000000 --- a/src/minecraft/forestry/api/apiculture/IAlleleFlowers.java +++ /dev/null @@ -1,12 +0,0 @@ -package forestry.api.apiculture; - -import forestry.api.genetics.IAllele; - -public interface IAlleleFlowers extends IAllele { - - /** - * @return FlowerProvider - */ - IFlowerProvider getProvider(); - -} diff --git a/src/minecraft/forestry/api/apiculture/IAlvearyComponent.java b/src/minecraft/forestry/api/apiculture/IAlvearyComponent.java deleted file mode 100644 index 2e6df0a06..000000000 --- a/src/minecraft/forestry/api/apiculture/IAlvearyComponent.java +++ /dev/null @@ -1,27 +0,0 @@ -package forestry.api.apiculture; - -import forestry.api.core.ITileStructure; - -/** - * Needs to be implemented by TileEntities that want to be part of an alveary. - */ -public interface IAlvearyComponent extends ITileStructure { - - void registerBeeModifier(IBeeModifier modifier); - - void removeBeeModifier(IBeeModifier modifier); - - void registerBeeListener(IBeeListener event); - - void removeBeeListener(IBeeListener event); - - void addTemperatureChange(float change, float boundaryDown, float boundaryUp); - - void addHumidityChange(float change, float boundaryDown, float boundaryUp); - - /** - * @return true if this TE has a function other than a plain alveary block. Returning true prevents the TE from becoming master. - */ - boolean hasFunction(); - -} diff --git a/src/minecraft/forestry/api/apiculture/IApiaristTracker.java b/src/minecraft/forestry/api/apiculture/IApiaristTracker.java deleted file mode 100644 index aae3bd563..000000000 --- a/src/minecraft/forestry/api/apiculture/IApiaristTracker.java +++ /dev/null @@ -1,52 +0,0 @@ -package forestry.api.apiculture; - -import forestry.api.genetics.IBreedingTracker; -import forestry.api.genetics.IIndividual; - -/** - * Can be used to garner information on bee breeding. See {@link IBreedingManager} - * - * @author SirSengir - */ -public interface IApiaristTracker extends IBreedingTracker { - - /** - * Register the birth of a queen. Will mark species as discovered. - * - * @param bee - * Created queen. - */ - void registerQueen(IIndividual queen); - - /** - * @return Amount of queens bred with this tracker. - */ - int getQueenCount(); - - /** - * Register the birth of a princess. Will mark species as discovered. - * - * @param bee - * Created princess. - */ - void registerPrincess(IIndividual princess); - - /** - * @return Amount of princesses bred with this tracker. - */ - int getPrincessCount(); - - /** - * Register the birth of a drone. Will mark species as discovered. - * - * @param bee - * Created drone. - */ - void registerDrone(IIndividual drone); - - /** - * @return Amount of drones bred with this tracker. - */ - int getDroneCount(); - -} diff --git a/src/minecraft/forestry/api/apiculture/IArmorApiarist.java b/src/minecraft/forestry/api/apiculture/IArmorApiarist.java deleted file mode 100644 index b2e5518dc..000000000 --- a/src/minecraft/forestry/api/apiculture/IArmorApiarist.java +++ /dev/null @@ -1,24 +0,0 @@ -package forestry.api.apiculture; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; - -/** - * When implemented by armor piece items, allows them to act as apiarist's armor. - */ -public interface IArmorApiarist { - /** - * Called when the apiarist's armor acts as protection against an attack. - * - * @param player - * Player being attacked - * @param armor - * Armor item - * @param cause - * Optional cause of attack, such as a bee effect identifier - * @param doProtect - * Whether or not to actually do the side effects of protection - * @return Whether or not the armor should protect the player from that attack - */ - public boolean protectPlayer(EntityPlayer player, ItemStack armor, String cause, boolean doProtect); -} diff --git a/src/minecraft/forestry/api/apiculture/IBee.java b/src/minecraft/forestry/api/apiculture/IBee.java deleted file mode 100644 index 4c45bcfe2..000000000 --- a/src/minecraft/forestry/api/apiculture/IBee.java +++ /dev/null @@ -1,93 +0,0 @@ -package forestry.api.apiculture; - -import java.util.ArrayList; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import forestry.api.genetics.IEffectData; -import forestry.api.genetics.IIndividual; - -/** - * Other implementations than Forestry's default one are not supported. - * - * @author SirSengir - */ -public interface IBee extends IIndividual { - - /** - * @return true if the individual is originally of natural origin. - */ - boolean isNatural(); - - /** - * @return generation this individual is removed from the original individual. - */ - int getGeneration(); - - IBee setNatural(boolean flag); - - boolean isIrregularMating(); - - void age(World world, float ageModifier); - - void mate(IBee drone); - - void setIsNatural(boolean flag); - - IEffectData[] doEffect(IEffectData[] storedData, IBeeHousing housing); - - IEffectData[] doFX(IEffectData[] storedData, IBeeHousing housing); - - boolean isAlive(); - - boolean isPureBred(EnumBeeChromosome chromosome); - - /** - * @return true if the bee may spawn offspring - */ - boolean canSpawn(); - - /** - * Determines whether the queen can work. - * - * @param world - * @param isAlveary - * @param biomeid - * @param temperature - * @param humidity - * @param x - * @param y - * @param z - * @return Ordinal of the error code encountered. 0 - EnumErrorCode.OK - */ - int isWorking(IBeeHousing housing); - - boolean hasFlower(IBeeHousing housing); - - ArrayList getSuitableBiomeIds(); - - ItemStack[] getProduceList(); - - ItemStack[] getSpecialtyList(); - - ItemStack[] produceStacks(IBeeHousing housing); - - IBee spawnPrincess(IBeeHousing housing); - - IBee[] spawnDrones(IBeeHousing housing); - - void plantFlowerRandom(IBeeHousing housing); - - int getHealth(); - - int getMaxHealth(); - - IBeeGenome getGenome(); - - IBeeGenome getMate(); - - IIndividual retrievePollen(IBeeHousing housing); - - boolean pollinateRandom(IBeeHousing housing, IIndividual pollen); - -} diff --git a/src/minecraft/forestry/api/apiculture/IBeeGenome.java b/src/minecraft/forestry/api/apiculture/IBeeGenome.java deleted file mode 100644 index bd5f55850..000000000 --- a/src/minecraft/forestry/api/apiculture/IBeeGenome.java +++ /dev/null @@ -1,42 +0,0 @@ -package forestry.api.apiculture; - -import forestry.api.genetics.EnumTolerance; -import forestry.api.genetics.IGenome; - -/** - * Only the default implementation is supported. - * - * @author SirSengir - * - */ -public interface IBeeGenome extends IGenome { - - IAlleleBeeSpecies getPrimaryAsBee(); - - IAlleleBeeSpecies getSecondaryAsBee(); - - float getSpeed(); - - int getLifespan(); - - int getFertility(); - - boolean getNocturnal(); - - boolean getTolerantFlyer(); - - boolean getCaveDwelling(); - - IFlowerProvider getFlowerProvider(); - - int getFlowering(); - - int[] getTerritory(); - - IAlleleBeeEffect getEffect(); - - EnumTolerance getToleranceTemp(); - - EnumTolerance getToleranceHumid(); - -} diff --git a/src/minecraft/forestry/api/apiculture/IBeeHousing.java b/src/minecraft/forestry/api/apiculture/IBeeHousing.java deleted file mode 100644 index fb880765b..000000000 --- a/src/minecraft/forestry/api/apiculture/IBeeHousing.java +++ /dev/null @@ -1,56 +0,0 @@ -package forestry.api.apiculture; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import forestry.api.core.EnumHumidity; -import forestry.api.core.EnumTemperature; - -public interface IBeeHousing extends IBeeModifier, IBeeListener { - - int getXCoord(); - - int getYCoord(); - - int getZCoord(); - - ItemStack getQueen(); - - ItemStack getDrone(); - - void setQueen(ItemStack itemstack); - - void setDrone(ItemStack itemstack); - - int getBiomeId(); - - EnumTemperature getTemperature(); - - EnumHumidity getHumidity(); - - World getWorld(); - - /** - * @return String containing the login of this housing's owner. - */ - String getOwnerName(); - - void setErrorState(int state); - - int getErrorOrdinal(); - - /** - * @return true if princesses and drones can (currently) mate in this housing to generate queens. - */ - boolean canBreed(); - - /** - * Called by IBeekeepingLogic to add products to the housing's inventory. - * - * @param product - * ItemStack with the product to add. - * @param all - * @return Boolean indicating success or failure. - */ - boolean addProduct(ItemStack product, boolean all); - -} diff --git a/src/minecraft/forestry/api/apiculture/IBeeInterface.java b/src/minecraft/forestry/api/apiculture/IBeeInterface.java deleted file mode 100644 index 7ef2ec523..000000000 --- a/src/minecraft/forestry/api/apiculture/IBeeInterface.java +++ /dev/null @@ -1,69 +0,0 @@ -package forestry.api.apiculture; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import forestry.api.genetics.IAllele; -import forestry.api.genetics.IChromosome; - -public interface IBeeInterface { - - /** - * @return type of bee encoded on the itemstack. EnumBeeType.NONE if it isn't a bee. - */ - EnumBeeType getType(ItemStack stack); - - /** - * @return true if passed item is a Forestry bee. Equal to getType(ItemStack stack) != EnumBeeType.NONE - */ - boolean isBee(ItemStack stack); - - /** - * @return true if passed item is a drone. Equal to getType(ItemStack stack) == EnumBeeType.DRONE - */ - boolean isDrone(ItemStack stack); - - /** - * @return true if passed item is mated (i.e. a queen) - */ - boolean isMated(ItemStack stack); - - /** - * @return {@link IBee} pattern parsed from the passed stack's nbt data. - */ - IBee getBee(ItemStack stack); - - /** - * @param genome - * Valid {@link IBeeGenome} - * @return {@link IBee} from the passed genome - */ - IBee getBee(World world, IBeeGenome genome); - - /** - * Creates an IBee suitable for a queen containing the necessary second genome for the mate. - * - * @param genome - * Valid {@link IBeeGenome} - * @param mate - * Valid {@link IBee} representing the mate. - * @return Mated {@link IBee} from the passed genomes. - */ - IBee getBee(World world, IBeeGenome genome, IBee mate); - - /** - * @param bee - * Bee object to use in creating the itemstack. If a queen is to be created, make sure the mate genome is set. - * @param type - * {@link EnumBeeType} according to whether a princess, drone or queen is wanted. - * @return ItemStack representing a Forestry bee. - */ - ItemStack getBeeStack(IBee bee, EnumBeeType type); - - IChromosome[] templateAsChromosomes(IAllele[] template); - - IChromosome[] templateAsChromosomes(IAllele[] templateActive, IAllele[] templateInactive); - - IBeeGenome templateAsGenome(IAllele[] template); - - IBeeGenome templateAsGenome(IAllele[] templateActive, IAllele[] templateInactive); -} diff --git a/src/minecraft/forestry/api/apiculture/IBeeListener.java b/src/minecraft/forestry/api/apiculture/IBeeListener.java deleted file mode 100644 index 93938ef31..000000000 --- a/src/minecraft/forestry/api/apiculture/IBeeListener.java +++ /dev/null @@ -1,36 +0,0 @@ -package forestry.api.apiculture; - -import net.minecraft.item.ItemStack; - -public interface IBeeListener { - - /** - * Called on queen update. - * - * @param queen - */ - void onQueenChange(ItemStack queen); - - /** - * Called when the bees wear out the housing's equipment. - * - * @param amount - * Integer indicating the amount worn out. - */ - void wearOutEquipment(int amount); - - /** - * Called just before the children are generated, and the queen removed. - * - * @param queen - */ - void onQueenDeath(IBee queen); - - /** - * Called after the children have been spawned, but before the queen appears - * - * @param queen - */ - void onPostQueenDeath(IBee queen); - -} diff --git a/src/minecraft/forestry/api/apiculture/IBeeModifier.java b/src/minecraft/forestry/api/apiculture/IBeeModifier.java deleted file mode 100644 index cce63accb..000000000 --- a/src/minecraft/forestry/api/apiculture/IBeeModifier.java +++ /dev/null @@ -1,60 +0,0 @@ -package forestry.api.apiculture; - -public interface IBeeModifier { - - /** - * - * @param genome - * @return Float used to modify the base territory. - */ - float getTerritoryModifier(IBeeGenome genome, float currentModifier); - - /** - * @param genome - * @param mate - * @return Float used to modify the base mutation chance. - */ - float getMutationModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier); - - /** - * @param genome - * @param mate - * @return Float used to modify the life span of queens. - */ - float getLifespanModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier); - - /** - * @param genome - * @param mate - * @return Fload modifying the production speed of queens. - */ - float getProductionModifier(IBeeGenome genome, float currentModifier); - - /** - * @param genome - * @param mate - * @return Fload modifying the flowering of queens. - */ - float getFloweringModifier(IBeeGenome genome, float currentModifier); - - /** - * @return Boolean indicating if housing can ignore rain - */ - boolean isSealed(); - - /** - * @return Boolean indicating if housing can ignore darkness/night - */ - boolean isSelfLighted(); - - /** - * @return Boolean indicating if housing can ignore not seeing the sky - */ - boolean isSunlightSimulated(); - - /** - * @return Boolean indicating whether this housing simulates the nether - */ - boolean isHellish(); - -} diff --git a/src/minecraft/forestry/api/apiculture/IBeeMutation.java b/src/minecraft/forestry/api/apiculture/IBeeMutation.java deleted file mode 100644 index 271e728dd..000000000 --- a/src/minecraft/forestry/api/apiculture/IBeeMutation.java +++ /dev/null @@ -1,18 +0,0 @@ -package forestry.api.apiculture; - -import forestry.api.genetics.IAllele; -import forestry.api.genetics.IGenome; -import forestry.api.genetics.IMutation; - -public interface IBeeMutation extends IMutation { - - /** - * @param housing - * @param allele0 - * @param allele1 - * @param genome0 - * @param genome1 - * @return float representing the chance for mutation to occur. note that this is 0 - 100 based, since it was an integer previously! - */ - float getChance(IBeeHousing housing, IAllele allele0, IAllele allele1, IGenome genome0, IGenome genome1); -} diff --git a/src/minecraft/forestry/api/apiculture/IBeekeepingLogic.java b/src/minecraft/forestry/api/apiculture/IBeekeepingLogic.java deleted file mode 100644 index cb8327a0f..000000000 --- a/src/minecraft/forestry/api/apiculture/IBeekeepingLogic.java +++ /dev/null @@ -1,20 +0,0 @@ -package forestry.api.apiculture; - -import forestry.api.core.INBTTagable; -import forestry.api.genetics.IEffectData; - -public interface IBeekeepingLogic extends INBTTagable { - - // / STATE INFORMATION - int getBreedingTime(); - - int getTotalBreedingTime(); - - IBee getQueen(); - - IEffectData[] getEffectData(); - - // / UPDATING - void update(); - -} diff --git a/src/minecraft/forestry/api/apiculture/IBeekeepingMode.java b/src/minecraft/forestry/api/apiculture/IBeekeepingMode.java deleted file mode 100644 index 4a3d72d1a..000000000 --- a/src/minecraft/forestry/api/apiculture/IBeekeepingMode.java +++ /dev/null @@ -1,65 +0,0 @@ -package forestry.api.apiculture; - -import java.util.ArrayList; - -import net.minecraft.world.World; - -public interface IBeekeepingMode extends IBeeModifier { - - /** - * @return Localized name of this beekeeping mode. - */ - String getName(); - - /** - * @return Localized list of strings outlining the behaviour of this beekeeping mode. - */ - ArrayList getDescription(); - - /** - * @return Float used to modify the wear on comb frames. - */ - float getWearModifier(); - - /** - * @param queen - * @return fertility taking into account the birthing queen and surroundings. - */ - int getFinalFertility(IBee queen, World world, int x, int y, int z); - - /** - * @param queen - * @return true if the queen is genetically "fatigued" and should not be reproduced anymore. - */ - boolean isFatigued(IBee queen); - - /** - * @param queen - * @param housing - * @return true if the queen is being overworked in the bee housing (with chance). will trigger a negative effect. - */ - boolean isOverworked(IBee queen, IBeeHousing housing); - - /** - * - * @param queen - * @param offspring - * @param housing - * @return true if the genetic structure of the queen is breaking down during spawning of the offspring (with chance). will trigger a negative effect. - */ - boolean isDegenerating(IBee queen, IBee offspring, IBeeHousing housing); - - /** - * @param queen - * @return true if an offspring of this queen is considered a natural - */ - boolean isNaturalOffspring(IBee queen); - - /** - * @param queen - * @return true if this mode allows the passed queen or princess to be multiplied - */ - boolean mayMultiplyPrincess(IBee queen); - - -} diff --git a/src/minecraft/forestry/api/apiculture/IBreedingManager.java b/src/minecraft/forestry/api/apiculture/IBreedingManager.java deleted file mode 100644 index 25fb9a20b..000000000 --- a/src/minecraft/forestry/api/apiculture/IBreedingManager.java +++ /dev/null @@ -1,103 +0,0 @@ -package forestry.api.apiculture; - -import java.util.ArrayList; -import java.util.Collection; - -import net.minecraft.world.World; -import forestry.api.core.IStructureLogic; -import forestry.api.genetics.IAllele; - -public interface IBreedingManager { - - ArrayList getBeekeepingModes(); - - IBeekeepingMode getBeekeepingMode(World world); - - IBeekeepingMode getBeekeepingMode(String name); - - void registerBeekeepingMode(IBeekeepingMode mode); - - void setBeekeepingMode(World world, String name); - - /** - * @return Integer denoting the number of (counted) bee species in the world. - */ - int getBeeSpeciesCount(); - - /** - * Moved to IAlleleRegistry - */ - @Deprecated - void blacklistBeeSpecies(String uid); - - /** - * Moved to IAlleleRegistry - */ - @Deprecated - ArrayList getBeeSpeciesBlacklist(); - - /** - * Moved to IAlleleRegistry - */ - @Deprecated - boolean isBlacklisted(String uid); - - /** - * @param housing - * Object implementing IBeeHousing. - * @return IBeekeepingLogic - */ - IBeekeepingLogic createBeekeepingLogic(IBeeHousing housing); - - /** - * TileEntities wanting to function as alveary components need to implement structure logic for validation. - * - * @return IStructureLogic for alvearies. - */ - IStructureLogic createAlvearyStructureLogic(IAlvearyComponent structure); - - /** - * Registers a bee template using the UID of the first allele as identifier. - * - * @param template - */ - void registerBeeTemplate(IAllele[] template); - - /** - * Registers a bee template using the passed identifier. - * - * @param template - */ - void registerBeeTemplate(String identifier, IAllele[] template); - - /** - * Retrieves a registered template using the passed identifier. - * - * @param identifier - * @return - */ - IAllele[] getBeeTemplate(String identifier); - - /** - * @return Default bee template for use in emergencies. - */ - IAllele[] getDefaultBeeTemplate(); - - /** - * @param world - * @return {@link IApiaristTracker} associated with the passed world. - */ - IApiaristTracker getApiaristTracker(World world, String player); - - /** - * Use to register bee mutations. - * - * @param mutation - */ - void registerBeeMutation(IBeeMutation mutation); - - /** - * @return All registered mutations. - */ - Collection getMutations(boolean shuffle); -} diff --git a/src/minecraft/forestry/api/apiculture/IFlowerProvider.java b/src/minecraft/forestry/api/apiculture/IFlowerProvider.java deleted file mode 100644 index 6b50aa0a6..000000000 --- a/src/minecraft/forestry/api/apiculture/IFlowerProvider.java +++ /dev/null @@ -1,44 +0,0 @@ -package forestry.api.apiculture; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import forestry.api.genetics.IPollinatable; - -public interface IFlowerProvider { - /** - * @param world - * @param species - * Integer representing a species' ordinal matching {@EnumBeeBreed} - * @param x - * @param y - * @param z - * @return True if the block at the passed coordinates is a valid flower for the species. - */ - boolean isAcceptedFlower(World world, IBeeGenome genome, int x, int y, int z); - - boolean isAcceptedPollinatable(World world, IPollinatable pollinatable); - - /** - * @param world - * @param species - * Integer representing a species' ordinal matching {@EnumBeeBreed} - * @param x - * @param y - * @param z - * @return True if a flower was planted. - */ - boolean growFlower(World world, IBeeGenome genome, int x, int y, int z); - - /** - * @return Short, human-readable identifier used in the beealyzer. - */ - String getDescription(); - - ItemStack[] affectProducts(World world, IBeeGenome genome, int x, int y, int z, ItemStack[] products); - - /** - * @return Array of itemstacks representing valid flowers for the flower provider. The first in the array is for use as an icon Return null or an empty - * array if the flower does not have an itemstack - */ - ItemStack[] getItemStacks(); -} diff --git a/src/minecraft/forestry/api/apiculture/IHiveDrop.java b/src/minecraft/forestry/api/apiculture/IHiveDrop.java deleted file mode 100644 index 924d4fe02..000000000 --- a/src/minecraft/forestry/api/apiculture/IHiveDrop.java +++ /dev/null @@ -1,33 +0,0 @@ -package forestry.api.apiculture; - -import java.util.Collection; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -/** - * Bees can be seeded either as hive drops or as mutation results. - * - * Add IHiveDrops to BeeManager.hiveDrops - * - * @author SirSengir - */ -public interface IHiveDrop { - - ItemStack getPrincess(World world, int x, int y, int z, int fortune); - - Collection getDrones(World world, int x, int y, int z, int fortune); - - Collection getAdditional(World world, int x, int y, int z, int fortune); - - /** - * Chance to drop. Default drops have 80 (= 80 %). - * - * @param world - * @param x - * @param y - * @param z - * @return - */ - int getChance(World world, int x, int y, int z); -} diff --git a/src/minecraft/forestry/api/apiculture/IHiveFrame.java b/src/minecraft/forestry/api/apiculture/IHiveFrame.java deleted file mode 100644 index 4ab97c3eb..000000000 --- a/src/minecraft/forestry/api/apiculture/IHiveFrame.java +++ /dev/null @@ -1,22 +0,0 @@ -package forestry.api.apiculture; - -import net.minecraft.item.ItemStack; - -public interface IHiveFrame extends IBeeModifier { - - /** - * Wears out a frame. - * - * @param housing - * IBeeHousing the frame is contained in. - * @param frame - * ItemStack containing the actual frame. - * @param queen - * Current queen in the caller. - * @param wear - * Integer denoting the amount worn out. {@link IBeekeepingMode.getWearModifier()} has already been taken into account. - * @return ItemStack containing the actual frame with adjusted damage. - */ - ItemStack frameUsed(IBeeHousing housing, ItemStack frame, IBee queen, int wear); - -} diff --git a/src/minecraft/forestry/api/arboriculture/EnumGermlingType.java b/src/minecraft/forestry/api/arboriculture/EnumGermlingType.java deleted file mode 100644 index d16d9deb9..000000000 --- a/src/minecraft/forestry/api/arboriculture/EnumGermlingType.java +++ /dev/null @@ -1,16 +0,0 @@ -package forestry.api.arboriculture; - -public enum EnumGermlingType { - SAPLING("Sapling"), BLOSSOM("Blossom"), POLLEN("Pollen"), GERMLING("Germling"); - - String name; - - private EnumGermlingType(String name) { - this.name = name; - } - - public String getName() { - return name; - } - -} diff --git a/src/minecraft/forestry/api/arboriculture/EnumGrowthConditions.java b/src/minecraft/forestry/api/arboriculture/EnumGrowthConditions.java deleted file mode 100644 index 99e117b40..000000000 --- a/src/minecraft/forestry/api/arboriculture/EnumGrowthConditions.java +++ /dev/null @@ -1,5 +0,0 @@ -package forestry.api.arboriculture; - -public enum EnumGrowthConditions { - HOSTILE, PALTRY, NORMAL, GOOD, EXCELLENT -} diff --git a/src/minecraft/forestry/api/arboriculture/EnumTreeChromosome.java b/src/minecraft/forestry/api/arboriculture/EnumTreeChromosome.java deleted file mode 100644 index b45875220..000000000 --- a/src/minecraft/forestry/api/arboriculture/EnumTreeChromosome.java +++ /dev/null @@ -1,56 +0,0 @@ -package forestry.api.arboriculture; - -import net.minecraftforge.common.EnumPlantType; -import forestry.api.genetics.IFruitFamily; - -public enum EnumTreeChromosome { - - /** - * Determines the following: - WorldGen, including the used wood blocks - {@link IFruitFamily}s supported. Limits which {@IFruitProvider} - * will actually yield fruit with this species. - Native {@link EnumPlantType} for this tree. Combines with the PLANT chromosome. - */ - SPECIES, - /** - * {@link IGrowthProvider}, determines conditions required by the tree to grow. - */ - GROWTH, - /** - * A float modifying the height of the tree. Taken into account at worldgen. - */ - HEIGHT, - /** - * Chance for saplings. - */ - FERTILITY, - /** - * {@link IFruitProvider}, determines if and what fruits are grown on the tree. Limited by the {@link IFruitFamily}s the species supports. - */ - FRUITS, - /** - * Chance for fruit leaves and/or drops. - */ - YIELD, - /** - * May add additional tolerances for {@link EnumPlantTypes}. - */ - PLANT, - /** - * Determines the speed at which fruit will ripen on this tree. - */ - SAPPINESS, - /** - * Territory for leaf effects. Unused. - */ - TERRITORY, - /** - * Leaf effect. Unused. - */ - EFFECT, - /** - * Amount of random ticks that need to elapse before a sapling will grow into a tree. - */ - MATURATION, - - GIRTH - -} diff --git a/src/minecraft/forestry/api/arboriculture/IAlleleFruit.java b/src/minecraft/forestry/api/arboriculture/IAlleleFruit.java deleted file mode 100644 index f468af08c..000000000 --- a/src/minecraft/forestry/api/arboriculture/IAlleleFruit.java +++ /dev/null @@ -1,12 +0,0 @@ -package forestry.api.arboriculture; - -import forestry.api.genetics.IAllele; - -/** - * Simple allele encapsulating an {@link IFruitProvider}. - */ -public interface IAlleleFruit extends IAllele { - - IFruitProvider getProvider(); - -} diff --git a/src/minecraft/forestry/api/arboriculture/IAlleleGrowth.java b/src/minecraft/forestry/api/arboriculture/IAlleleGrowth.java deleted file mode 100644 index 60b34a631..000000000 --- a/src/minecraft/forestry/api/arboriculture/IAlleleGrowth.java +++ /dev/null @@ -1,12 +0,0 @@ -package forestry.api.arboriculture; - -import forestry.api.genetics.IAllele; - -/** - * Simple allele encapsulating an {@link IGrowthProvider}. - */ -public interface IAlleleGrowth extends IAllele { - - IGrowthProvider getProvider(); - -} diff --git a/src/minecraft/forestry/api/arboriculture/IAlleleLeafEffect.java b/src/minecraft/forestry/api/arboriculture/IAlleleLeafEffect.java deleted file mode 100644 index 1a3e640ef..000000000 --- a/src/minecraft/forestry/api/arboriculture/IAlleleLeafEffect.java +++ /dev/null @@ -1,10 +0,0 @@ -package forestry.api.arboriculture; - -import forestry.api.genetics.IAlleleEffect; - -/** - * Simple allele encapsulating a leaf effect. (Not implemented) - */ -public interface IAlleleLeafEffect extends IAlleleEffect { - -} diff --git a/src/minecraft/forestry/api/arboriculture/IAlleleTreeSpecies.java b/src/minecraft/forestry/api/arboriculture/IAlleleTreeSpecies.java deleted file mode 100644 index 5a3ccf1c7..000000000 --- a/src/minecraft/forestry/api/arboriculture/IAlleleTreeSpecies.java +++ /dev/null @@ -1,57 +0,0 @@ -package forestry.api.arboriculture; - -import java.util.Collection; - -import net.minecraft.util.Icon; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; -import net.minecraftforge.common.EnumPlantType; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import forestry.api.genetics.IAlleleSpecies; -import forestry.api.genetics.IFruitFamily; - -public interface IAlleleTreeSpecies extends IAlleleSpecies { - - /** - * @return Native plant type of this species. - */ - EnumPlantType getPlantType(); - - /** - * @return List of all {@link IFruitFamily}s which can grow on leaves generated by this species. - */ - Collection getSuitableFruit(); - - /** - * @return Trunk girth. 1 = 1x1, 2 = 2x2, etc. - */ - @Deprecated - int getGirth(); - - /** - * @param tree - * @param world - * @param x - * @param y - * @param z - * @return Tree generator for the tree at the given location. - */ - WorldGenerator getGenerator(ITree tree, World world, int x, int y, int z); - - /** - * @return All available generator classes for this species. - */ - Class[] getGeneratorClasses(); - - /* TEXTURES AND OVERRIDES */ - int getLeafColour(ITree tree); - - short getLeafIconIndex(ITree tree, boolean fancy); - - int getGermlingIconColour(int renderPass); - - @SideOnly(Side.CLIENT) - Icon getGermlingIcon(EnumGermlingType type, int renderPass); - -} diff --git a/src/minecraft/forestry/api/arboriculture/IArboristTracker.java b/src/minecraft/forestry/api/arboriculture/IArboristTracker.java deleted file mode 100644 index 8e7ce8a95..000000000 --- a/src/minecraft/forestry/api/arboriculture/IArboristTracker.java +++ /dev/null @@ -1,7 +0,0 @@ -package forestry.api.arboriculture; - -import forestry.api.genetics.IBreedingTracker; - -public interface IArboristTracker extends IBreedingTracker { - -} diff --git a/src/minecraft/forestry/api/arboriculture/IFruitProvider.java b/src/minecraft/forestry/api/arboriculture/IFruitProvider.java deleted file mode 100644 index bf839d89a..000000000 --- a/src/minecraft/forestry/api/arboriculture/IFruitProvider.java +++ /dev/null @@ -1,63 +0,0 @@ -package forestry.api.arboriculture; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import forestry.api.genetics.IFruitFamily; - -public interface IFruitProvider { - - IFruitFamily getFamily(); - - int getColour(ITreeGenome genome, IBlockAccess world, int x, int y, int z, int ripeningTime); - - boolean markAsFruitLeaf(ITreeGenome genome, World world, int x, int y, int z); - - int getRipeningPeriod(); - - // / Products, Chance - ItemStack[] getProducts(); - - // / Specialty, Chance - ItemStack[] getSpecialty(); - - ItemStack[] getFruits(ITreeGenome genome, World world, int x, int y, int z, int ripeningTime); - - /** - * @return Short, human-readable identifier used in the treealyzer. - */ - String getDescription(); - - /* TEXTURE OVERLAY */ - /** - * @param genome - * @param world - * @param x - * @param y - * @param z - * @param ripeningTime - * Elapsed ripening time for the fruit. - * @param fancy - * @return Icon index of the texture to overlay on the leaf block. - */ - short getIconIndex(ITreeGenome genome, IBlockAccess world, int x, int y, int z, int ripeningTime, boolean fancy); - - /** - * @return true if this fruit provider requires fruit blocks to spawn, false otherwise. - */ - boolean requiresFruitBlocks(); - - /** - * Tries to spawn a fruit block at the potential position when the tree generates. - * - * @param genome - * @param world - * @param x - * @param y - * @param z - * @return true if a fruit block was spawned, false otherwise. - */ - boolean trySpawnFruitBlock(ITreeGenome genome, World world, int x, int y, int z); - - void registerIcons(); -} diff --git a/src/minecraft/forestry/api/arboriculture/IGrowthProvider.java b/src/minecraft/forestry/api/arboriculture/IGrowthProvider.java deleted file mode 100644 index 91db285d3..000000000 --- a/src/minecraft/forestry/api/arboriculture/IGrowthProvider.java +++ /dev/null @@ -1,33 +0,0 @@ -package forestry.api.arboriculture; - -import net.minecraft.world.World; - -public interface IGrowthProvider { - - /** - * Check to see whether a sapling at the given location with the given genome can grow into a tree. - * - * @param genome - * @param world - * @param xPos - * @param yPos - * @param zPos - * @param expectedGirth - * @param expectedHeight - * @return - */ - boolean canGrow(ITreeGenome genome, World world, int xPos, int yPos, int zPos, int expectedGirth, int expectedHeight); - - EnumGrowthConditions getGrowthConditions(ITreeGenome genome, World world, int xPos, int yPos, int zPos); - - /** - * @return Short, human-readable identifier used in the treealyzer. - */ - String getDescription(); - - /** - * @return Detailed description of growth behaviour used in the treealyzer. - */ - String[] getInfo(); - -} diff --git a/src/minecraft/forestry/api/arboriculture/IToolGrafter.java b/src/minecraft/forestry/api/arboriculture/IToolGrafter.java deleted file mode 100644 index 97aea1adc..000000000 --- a/src/minecraft/forestry/api/arboriculture/IToolGrafter.java +++ /dev/null @@ -1,19 +0,0 @@ -package forestry.api.arboriculture; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public interface IToolGrafter { - /** - * Called by leaves to determine the increase in sapling droprate. - * - * @param stack - * @param world - * @param x - * @param y - * @param z - * @return - */ - float getSaplingModifier(ItemStack stack, World world, EntityPlayer player, int x, int y, int z); -} diff --git a/src/minecraft/forestry/api/arboriculture/ITree.java b/src/minecraft/forestry/api/arboriculture/ITree.java deleted file mode 100644 index 9e66112c9..000000000 --- a/src/minecraft/forestry/api/arboriculture/ITree.java +++ /dev/null @@ -1,78 +0,0 @@ -package forestry.api.arboriculture; - -import java.util.EnumSet; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; -import net.minecraftforge.common.EnumPlantType; -import forestry.api.genetics.IEffectData; -import forestry.api.genetics.IIndividual; - -public interface ITree extends IIndividual { - - void mate(ITree other); - - IEffectData[] doEffect(IEffectData[] storedData, World world, int biomeid, int x, int y, int z); - - IEffectData[] doFX(IEffectData[] storedData, World world, int biomeid, int x, int y, int z); - - ITreeGenome getGenome(); - - ITreeGenome getMate(); - - EnumSet getPlantTypes(); - - ITree[] getSaplings(World world, int x, int y, int z, float modifier); - - ItemStack[] getProduceList(); - - ItemStack[] getSpecialtyList(); - - ItemStack[] produceStacks(World world, int x, int y, int z, int ripeningTime); - - /** - * - * @param world - * @param x - * @param y - * @param z - * @return Boolean indicating whether a sapling can stay planted at the given position. - */ - boolean canStay(World world, int x, int y, int z); - - /** - * - * @param world - * @param x - * @param y - * @param z - * @return Boolean indicating whether a sapling at the given position can grow into a tree. - */ - boolean canGrow(World world, int x, int y, int z, int expectedGirth, int expectedHeight); - - /** - * @return Integer denoting the maturity (block ticks) required for a sapling to attempt to grow into a tree. - */ - int getRequiredMaturity(); - - int getGirth(World world, int x, int y, int z); - - /** - * - * @param world - * @param x - * @param y - * @param z - * @return Growth conditions at the given position. - */ - EnumGrowthConditions getGrowthCondition(World world, int x, int y, int z); - - WorldGenerator getTreeGenerator(World world, int x, int y, int z, boolean wasBonemealed); - - ITree copy(); - - boolean isPureBred(EnumTreeChromosome chromosome); - - boolean canBearFruit(); -} diff --git a/src/minecraft/forestry/api/arboriculture/ITreeBreedingManager.java b/src/minecraft/forestry/api/arboriculture/ITreeBreedingManager.java deleted file mode 100644 index 76cf23422..000000000 --- a/src/minecraft/forestry/api/arboriculture/ITreeBreedingManager.java +++ /dev/null @@ -1,42 +0,0 @@ -package forestry.api.arboriculture; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Random; - -import net.minecraft.world.World; -import forestry.api.genetics.IAllele; - -public interface ITreeBreedingManager { - - void registerTreeTemplate(IAllele[] template); - - void registerTreeTemplate(String identifier, IAllele[] template); - - IAllele[] getTreeTemplate(String identifier); - - IAllele[] getDefaultTreeTemplate(); - - /** - * @param world - * @return {@link IArboristTracker} associated with the passed world. - */ - IArboristTracker getArboristTracker(World world, String player); - - ArrayList getTreekeepingModes(); - - ITreekeepingMode getTreekeepingMode(World world); - - ITreekeepingMode getTreekeepingMode(String name); - - void registerTreekeepingMode(ITreekeepingMode mode); - - void setTreekeepingMode(World world, String name); - - IAllele[] getRandomTreeTemplate(Random rand); - - void registerTreeMutation(ITreeMutation mutation); - - Collection getMutations(boolean shuffle); - -} diff --git a/src/minecraft/forestry/api/arboriculture/ITreeGenome.java b/src/minecraft/forestry/api/arboriculture/ITreeGenome.java deleted file mode 100644 index b4f33ec30..000000000 --- a/src/minecraft/forestry/api/arboriculture/ITreeGenome.java +++ /dev/null @@ -1,38 +0,0 @@ -package forestry.api.arboriculture; - -import java.util.EnumSet; - -import net.minecraftforge.common.EnumPlantType; -import forestry.api.genetics.IGenome; - -public interface ITreeGenome extends IGenome { - - IAlleleTreeSpecies getPrimaryAsTree(); - - IAlleleTreeSpecies getSecondaryAsTree(); - - IFruitProvider getFruitProvider(); - - IGrowthProvider getGrowthProvider(); - - float getHeight(); - - float getFertility(); - - /** - * @return Determines either a) how many fruit leaves there are or b) the chance for any fruit leave to drop a sapling. Exact usage determined by the - * IFruitProvider - */ - float getYield(); - - float getSappiness(); - - EnumSet getPlantTypes(); - - /** - * @return Amount of random block ticks required for a sapling to mature into a fully grown tree. - */ - int getMaturationTime(); - - int getGirth(); -} diff --git a/src/minecraft/forestry/api/arboriculture/ITreeInterface.java b/src/minecraft/forestry/api/arboriculture/ITreeInterface.java deleted file mode 100644 index a4c3c7478..000000000 --- a/src/minecraft/forestry/api/arboriculture/ITreeInterface.java +++ /dev/null @@ -1,38 +0,0 @@ -package forestry.api.arboriculture; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import forestry.api.genetics.IAllele; -import forestry.api.genetics.IChromosome; -import forestry.api.genetics.IIndividual; - -public interface ITreeInterface { - boolean isGermling(ItemStack itemstack); - - boolean isPollen(ItemStack itemstack); - - boolean isPollinated(ItemStack itemstack); - - ITree getTree(World world, int x, int y, int z); - - ITree getTree(ItemStack itemstack); - - ITree getTree(World world, ITreeGenome genome); - - ItemStack getGermlingStack(ITree tree, EnumGermlingType type); - - boolean plantSapling(World world, ITree tree, String owner, int x, int y, int z); - - boolean setLeaves(World world, IIndividual tree, String owner, int x, int y, int z); - - IChromosome[] templateAsChromosomes(IAllele[] template); - - IChromosome[] templateAsChromosomes(IAllele[] templateActive, IAllele[] templateInactive); - - ITreeGenome templateAsGenome(IAllele[] template); - - ITreeGenome templateAsGenome(IAllele[] templateActive, IAllele[] templateInactive); - - boolean setFruitBlock(World world, IAlleleFruit allele, float sappiness, short[] indices, int x, int y, int z); - -} diff --git a/src/minecraft/forestry/api/arboriculture/ITreeModifier.java b/src/minecraft/forestry/api/arboriculture/ITreeModifier.java deleted file mode 100644 index 18a12a54a..000000000 --- a/src/minecraft/forestry/api/arboriculture/ITreeModifier.java +++ /dev/null @@ -1,40 +0,0 @@ -package forestry.api.arboriculture; - -public interface ITreeModifier { - - /** - * - * @param genome - * @return Float used to modify the height. - */ - float getHeightModifier(ITreeGenome genome, float currentModifier); - - /** - * - * @param genome - * @return Float used to modify the yield. - */ - float getYieldModifier(ITreeGenome genome, float currentModifier); - - /** - * - * @param genome - * @return Float used to modify the sappiness. - */ - float getSappinessModifier(ITreeGenome genome, float currentModifier); - - /** - * - * @param genome - * @return Float used to modify the maturation. - */ - float getMaturationModifier(ITreeGenome genome, float currentModifier); - - /** - * @param genome0 - * @param genome1 - * @return Float used to modify the base mutation chance. - */ - float getMutationModifier(ITreeGenome genome0, ITreeGenome genome1, float currentModifier); - -} diff --git a/src/minecraft/forestry/api/arboriculture/ITreeMutation.java b/src/minecraft/forestry/api/arboriculture/ITreeMutation.java deleted file mode 100644 index 2870c39a9..000000000 --- a/src/minecraft/forestry/api/arboriculture/ITreeMutation.java +++ /dev/null @@ -1,22 +0,0 @@ -package forestry.api.arboriculture; - -import net.minecraft.world.World; -import forestry.api.genetics.IAllele; -import forestry.api.genetics.IGenome; -import forestry.api.genetics.IMutation; - -public interface ITreeMutation extends IMutation { - - /** - * @param world - * @param x - * @param y - * @param z - * @param allele0 - * @param allele1 - * @param genome0 - * @param genome1 - * @return float representing the chance for mutation to occur. note that this is 0 - 100 based, since it was an integer previously! - */ - float getChance(World world, int x, int y, int z, IAllele allele0, IAllele allele1, IGenome genome0, IGenome genome1); -} diff --git a/src/minecraft/forestry/api/arboriculture/ITreekeepingMode.java b/src/minecraft/forestry/api/arboriculture/ITreekeepingMode.java deleted file mode 100644 index 92e65cc3b..000000000 --- a/src/minecraft/forestry/api/arboriculture/ITreekeepingMode.java +++ /dev/null @@ -1,17 +0,0 @@ -package forestry.api.arboriculture; - -import java.util.ArrayList; - -public interface ITreekeepingMode extends ITreeModifier { - - /** - * @return Localized name of this treekeeping mode. - */ - String getName(); - - /** - * @return Localized list of strings outlining the behaviour of this treekeeping mode. - */ - ArrayList getDescription(); - -} diff --git a/src/minecraft/forestry/api/arboriculture/TreeManager.java b/src/minecraft/forestry/api/arboriculture/TreeManager.java deleted file mode 100644 index dfd6d00ff..000000000 --- a/src/minecraft/forestry/api/arboriculture/TreeManager.java +++ /dev/null @@ -1,7 +0,0 @@ -package forestry.api.arboriculture; - -public class TreeManager { - public static int treeSpeciesCount = 0; - public static ITreeInterface treeInterface; - public static ITreeBreedingManager breedingManager; -} diff --git a/src/minecraft/forestry/api/circuits/ChipsetManager.java b/src/minecraft/forestry/api/circuits/ChipsetManager.java deleted file mode 100644 index 8baa4c95a..000000000 --- a/src/minecraft/forestry/api/circuits/ChipsetManager.java +++ /dev/null @@ -1,8 +0,0 @@ -package forestry.api.circuits; - -public class ChipsetManager { - - public static ISolderManager solderManager; - public static ICircuitRegistry circuitRegistry; - -} diff --git a/src/minecraft/forestry/api/circuits/ICircuit.java b/src/minecraft/forestry/api/circuits/ICircuit.java deleted file mode 100644 index 1607036de..000000000 --- a/src/minecraft/forestry/api/circuits/ICircuit.java +++ /dev/null @@ -1,27 +0,0 @@ -package forestry.api.circuits; - -import java.util.List; - -import net.minecraft.tileentity.TileEntity; - -public interface ICircuit { - String getUID(); - - boolean requiresDiscovery(); - - int getLimit(); - - String getName(); - - boolean isCircuitable(TileEntity tile); - - void onInsertion(int slot, TileEntity tile); - - void onLoad(int slot, TileEntity tile); - - void onRemoval(int slot, TileEntity tile); - - void onTick(int slot, TileEntity tile); - - void addTooltip(List list); -} diff --git a/src/minecraft/forestry/api/circuits/ICircuitBoard.java b/src/minecraft/forestry/api/circuits/ICircuitBoard.java deleted file mode 100644 index 81a013d7a..000000000 --- a/src/minecraft/forestry/api/circuits/ICircuitBoard.java +++ /dev/null @@ -1,24 +0,0 @@ -package forestry.api.circuits; - -import java.util.List; - -import net.minecraft.tileentity.TileEntity; -import forestry.api.core.INBTTagable; - -public interface ICircuitBoard extends INBTTagable { - - int getPrimaryColor(); - - int getSecondaryColor(); - - void addTooltip(List list); - - void onInsertion(TileEntity tile); - - void onLoad(TileEntity tile); - - void onRemoval(TileEntity tile); - - void onTick(TileEntity tile); - -} diff --git a/src/minecraft/forestry/api/circuits/ICircuitLayout.java b/src/minecraft/forestry/api/circuits/ICircuitLayout.java deleted file mode 100644 index 5dc731875..000000000 --- a/src/minecraft/forestry/api/circuits/ICircuitLayout.java +++ /dev/null @@ -1,11 +0,0 @@ -package forestry.api.circuits; - -public interface ICircuitLayout { - - String getUID(); - - String getName(); - - String getUsage(); - -} diff --git a/src/minecraft/forestry/api/circuits/ICircuitLibrary.java b/src/minecraft/forestry/api/circuits/ICircuitLibrary.java deleted file mode 100644 index 1f38d6cce..000000000 --- a/src/minecraft/forestry/api/circuits/ICircuitLibrary.java +++ /dev/null @@ -1,5 +0,0 @@ -package forestry.api.circuits; - -public interface ICircuitLibrary { - -} diff --git a/src/minecraft/forestry/api/circuits/ICircuitRegistry.java b/src/minecraft/forestry/api/circuits/ICircuitRegistry.java deleted file mode 100644 index c412f53d9..000000000 --- a/src/minecraft/forestry/api/circuits/ICircuitRegistry.java +++ /dev/null @@ -1,31 +0,0 @@ -package forestry.api.circuits; - -import java.util.HashMap; - -import net.minecraft.world.World; - -public interface ICircuitRegistry { - - /* CIRCUITS */ - HashMap getRegisteredCircuits(); - - void registerCircuit(ICircuit circuit); - - ICircuit getCircuit(String uid); - - ICircuitLibrary getCircuitLibrary(World world, String playername); - - void registerLegacyMapping(int id, String uid); - - ICircuit getFromLegacyMap(int id); - - /* LAYOUTS */ - HashMap getRegisteredLayouts(); - - void registerLayout(ICircuitLayout layout); - - ICircuitLayout getLayout(String uid); - - ICircuitLayout getDefaultLayout(); - -} diff --git a/src/minecraft/forestry/api/circuits/ISolderManager.java b/src/minecraft/forestry/api/circuits/ISolderManager.java deleted file mode 100644 index e9420ffbb..000000000 --- a/src/minecraft/forestry/api/circuits/ISolderManager.java +++ /dev/null @@ -1,9 +0,0 @@ -package forestry.api.circuits; - -import net.minecraft.item.ItemStack; - -public interface ISolderManager { - - void addRecipe(ICircuitLayout layout, ItemStack resource, ICircuit circuit); - -} diff --git a/src/minecraft/forestry/api/core/BlockInterface.java b/src/minecraft/forestry/api/core/BlockInterface.java deleted file mode 100644 index 4bec3cdc8..000000000 --- a/src/minecraft/forestry/api/core/BlockInterface.java +++ /dev/null @@ -1,33 +0,0 @@ -package forestry.api.core; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import cpw.mods.fml.common.FMLLog; - -public class BlockInterface { - /** - * Get yer blocks here! - * - * @param ident - * @return - */ - public static ItemStack getBlock(String ident) { - ItemStack item = null; - - try { - String pack = ItemInterface.class.getPackage().getName(); - pack = pack.substring(0, pack.lastIndexOf('.')); - String itemClass = pack.substring(0, pack.lastIndexOf('.')) + ".core.config.ForestryBlock"; - Object obj = Class.forName(itemClass).getField(ident).get(null); - if (obj instanceof Block) - item = new ItemStack((Block) obj); - else if (obj instanceof ItemStack) - item = (ItemStack) obj; - } catch (Exception ex) { - FMLLog.warning("Could not retrieve Forestry block identified by: " + ident); - } - - return item; - } - -} diff --git a/src/minecraft/forestry/api/core/EnumHumidity.java b/src/minecraft/forestry/api/core/EnumHumidity.java deleted file mode 100644 index 50cf3d668..000000000 --- a/src/minecraft/forestry/api/core/EnumHumidity.java +++ /dev/null @@ -1,48 +0,0 @@ -package forestry.api.core; - -import java.util.ArrayList; - -public enum EnumHumidity { - ARID("Arid", 2), NORMAL("Normal", 1), DAMP("Damp", 4); - - /** - * Populated by Forestry with vanilla biomes. Add additional arid biomes here. (ex. desert) - */ - public static ArrayList aridBiomeIds = new ArrayList(); - /** - * Populated by Forestry with vanilla biomes. Add additional damp biomes here. (ex. jungle) - */ - public static ArrayList dampBiomeIds = new ArrayList(); - /** - * Populated by Forestry with vanilla biomes. Add additional normal biomes here. - */ - public static ArrayList normalBiomeIds = new ArrayList(); - - public final String name; - public final int iconIndex; - - private EnumHumidity(String name, int iconIndex) { - this.name = name; - this.iconIndex = iconIndex; - } - - public String getName() { - return this.name; - } - - public int getIconIndex() { - return this.iconIndex; - } - - public static ArrayList getBiomeIds(EnumHumidity humidity) { - switch (humidity) { - case ARID: - return aridBiomeIds; - case DAMP: - return dampBiomeIds; - case NORMAL: - default: - return normalBiomeIds; - } - } -} diff --git a/src/minecraft/forestry/api/core/EnumTemperature.java b/src/minecraft/forestry/api/core/EnumTemperature.java deleted file mode 100644 index 4051c3a12..000000000 --- a/src/minecraft/forestry/api/core/EnumTemperature.java +++ /dev/null @@ -1,75 +0,0 @@ -package forestry.api.core; - -import java.util.ArrayList; - -import net.minecraft.util.Icon; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public enum EnumTemperature { - NONE("None", "habitats/ocean"), ICY("Icy", "habitats/snow"), COLD("Cold", "habitats/taiga"), - NORMAL("Normal", "habitats/plains"), WARM("Warm", "habitats/jungle"), HOT("Hot", "habitats/desert"), HELLISH("Hellish", "habitats/nether"); - - /** - * Populated by Forestry with vanilla biomes. Add additional icy/snow biomes here. (ex. snow plains) - */ - public static ArrayList icyBiomeIds = new ArrayList(); - /** - * Populated by Forestry with vanilla biomes. Add additional cold biomes here. (ex. taiga) - */ - public static ArrayList coldBiomeIds = new ArrayList(); - /** - * Populated by Forestry with vanilla biomes. Add additional normal biomes here. (ex. forest, plains) - */ - public static ArrayList normalBiomeIds = new ArrayList(); - /** - * Populated by Forestry with vanilla biomes. Add additional warm biomes here. (ex. jungle) - */ - public static ArrayList warmBiomeIds = new ArrayList(); - /** - * Populated by Forestry with vanilla biomes. Add additional hot biomes here. (ex. desert) - */ - public static ArrayList hotBiomeIds = new ArrayList(); - /** - * Populated by Forestry with vanilla biomes. Add additional hellish biomes here. (ex. nether) - */ - public static ArrayList hellishBiomeIds = new ArrayList(); - - public final String name; - public final String iconIndex; - - private EnumTemperature(String name, String iconIndex) { - this.name = name; - this.iconIndex = iconIndex; - } - - public String getName() { - return this.name; - } - - @SideOnly(Side.CLIENT) - public Icon getIcon() { - return ForestryAPI.textureManager.getDefault(iconIndex); - } - - public static ArrayList getBiomeIds(EnumTemperature temperature) { - - switch (temperature) { - case ICY: - return icyBiomeIds; - case COLD: - return coldBiomeIds; - case WARM: - return warmBiomeIds; - case HOT: - return hotBiomeIds; - case HELLISH: - return hellishBiomeIds; - case NORMAL: - default: - return normalBiomeIds; - } - - } -} diff --git a/src/minecraft/forestry/api/core/ForestryAPI.java b/src/minecraft/forestry/api/core/ForestryAPI.java deleted file mode 100644 index 8d807b051..000000000 --- a/src/minecraft/forestry/api/core/ForestryAPI.java +++ /dev/null @@ -1,13 +0,0 @@ -package forestry.api.core; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class ForestryAPI { - - public static Object instance; - - @SideOnly(Side.CLIENT) - public static ITextureManager textureManager; - -} diff --git a/src/minecraft/forestry/api/core/GlobalManager.java b/src/minecraft/forestry/api/core/GlobalManager.java deleted file mode 100644 index 71e2b0f75..000000000 --- a/src/minecraft/forestry/api/core/GlobalManager.java +++ /dev/null @@ -1,12 +0,0 @@ -package forestry.api.core; - -import java.util.ArrayList; - -public class GlobalManager { - - public static ArrayList dirtBlockIds = new ArrayList(); - public static ArrayList sandBlockIds = new ArrayList(); - public static ArrayList leafBlockIds = new ArrayList(); - public static ArrayList snowBlockIds = new ArrayList(); - -} diff --git a/src/minecraft/forestry/api/core/IIconProvider.java b/src/minecraft/forestry/api/core/IIconProvider.java deleted file mode 100644 index 297c8281e..000000000 --- a/src/minecraft/forestry/api/core/IIconProvider.java +++ /dev/null @@ -1,18 +0,0 @@ -package forestry.api.core; - -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.util.Icon; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public interface IIconProvider { - - @SideOnly(Side.CLIENT) - Icon getIcon(short texUID); - - @SideOnly(Side.CLIENT) - void registerItemIcons(IconRegister itemMap); - @SideOnly(Side.CLIENT) - void registerTerrainIcons(IconRegister terrainMap); - -} diff --git a/src/minecraft/forestry/api/core/INBTTagable.java b/src/minecraft/forestry/api/core/INBTTagable.java deleted file mode 100644 index c2e71ec5e..000000000 --- a/src/minecraft/forestry/api/core/INBTTagable.java +++ /dev/null @@ -1,9 +0,0 @@ -package forestry.api.core; - -import net.minecraft.nbt.NBTTagCompound; - -public interface INBTTagable { - void readFromNBT(NBTTagCompound nbttagcompound); - - void writeToNBT(NBTTagCompound nbttagcompound); -} diff --git a/src/minecraft/forestry/api/core/IPlugin.java b/src/minecraft/forestry/api/core/IPlugin.java deleted file mode 100644 index af659849a..000000000 --- a/src/minecraft/forestry/api/core/IPlugin.java +++ /dev/null @@ -1,17 +0,0 @@ -package forestry.api.core; - -/** - * Plugins get loaded at the beginning of Forestry's ModsLoaded() if isAvailable() returns true. - * - * @author SirSengir - */ -public interface IPlugin { - public boolean isAvailable(); - - public void preInit(); - - public void doInit(); - - public void postInit(); - -} diff --git a/src/minecraft/forestry/api/core/IStructureLogic.java b/src/minecraft/forestry/api/core/IStructureLogic.java deleted file mode 100644 index 500613a9b..000000000 --- a/src/minecraft/forestry/api/core/IStructureLogic.java +++ /dev/null @@ -1,15 +0,0 @@ -package forestry.api.core; - -public interface IStructureLogic extends INBTTagable { - - /** - * @return String unique to the type of structure controlled by this structure logic. - */ - String getTypeUID(); - - /** - * Called by {@link ITileStructure}'s validateStructure(). - */ - void validateStructure(); - -} diff --git a/src/minecraft/forestry/api/core/ITextureManager.java b/src/minecraft/forestry/api/core/ITextureManager.java deleted file mode 100644 index 1849d1b13..000000000 --- a/src/minecraft/forestry/api/core/ITextureManager.java +++ /dev/null @@ -1,15 +0,0 @@ -package forestry.api.core; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.util.Icon; - -@SideOnly(Side.CLIENT) -public interface ITextureManager { - - void registerIconProvider(IIconProvider provider); - - Icon getIcon(short texUID); - - Icon getDefault(String ident); -} diff --git a/src/minecraft/forestry/api/core/ITileStructure.java b/src/minecraft/forestry/api/core/ITileStructure.java deleted file mode 100644 index 69c149fe2..000000000 --- a/src/minecraft/forestry/api/core/ITileStructure.java +++ /dev/null @@ -1,55 +0,0 @@ -package forestry.api.core; - -import net.minecraft.inventory.IInventory; -import net.minecraft.tileentity.TileEntity; - -public interface ITileStructure { - - /** - * @return String unique to the type of structure controlled by this structure logic. Should map to {@link IStructureLogic} - */ - String getTypeUID(); - - /** - * Should map to {@link IStructureLogic} - */ - void validateStructure(); - - /** - * Called when the structure resets. - */ - void onStructureReset(); - - /** - * @return TileEntity that is the master in this structure, null if no structure exists. - */ - ITileStructure getCentralTE(); - - /** - * Called to set the master TileEntity. Implementing TileEntity should keep track of the master's coordinates, not refer to the TE object itself. - * - * @param tile - */ - void setCentralTE(TileEntity tile); - - /** - * @return IInventory representing the TE's inventory. - */ - IInventory getInventory(); - - /** - * Only called on Forestry's own blocks. - */ - void makeMaster(); - - /** - * @return true if this TE is the master in a structure, false otherwise. - */ - boolean isMaster(); - - /** - * @return true if the TE is master or has a master. - */ - boolean isIntegratedIntoStructure(); - -} diff --git a/src/minecraft/forestry/api/core/ItemInterface.java b/src/minecraft/forestry/api/core/ItemInterface.java deleted file mode 100644 index fd17e1252..000000000 --- a/src/minecraft/forestry/api/core/ItemInterface.java +++ /dev/null @@ -1,117 +0,0 @@ -package forestry.api.core; - -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import cpw.mods.fml.common.FMLLog; - -public class ItemInterface { - - /** - * Get yer items here! - * - * Blocks currently not supported. - * - * @param ident - * @return - */ - public static ItemStack getItem(String ident) { - ItemStack item = null; - - try { - String pack = ItemInterface.class.getPackage().getName(); - pack = pack.substring(0, pack.lastIndexOf('.')); - String itemClass = pack.substring(0, pack.lastIndexOf('.')) + ".core.config.ForestryItem"; - Object obj = Class.forName(itemClass).getField(ident).get(null); - if (obj instanceof Item) - item = new ItemStack((Item) obj); - else if (obj instanceof ItemStack) - item = (ItemStack) obj; - } catch (Exception ex) { - FMLLog.warning("Could not retrieve Forestry item identified by: " + ident); - } - - return item; - } - - /* - * public static Item fertilizerBio; public static Item fertilizerCompound; public static Item apatite; - * - * // Ingots public static ItemStack ingotCopper; public static ItemStack ingotTin; public static ItemStack ingotBronze; - * - * public static Item wrench; public static Item bucketBiomass; public static Item vialEmpty; public static Item vialCatalyst; public static Item - * liquidBiomass; public static Item liquidBiofuel; public static Item bucketBiofuel; public static Item liquidMilk; - * - * // Crafting public static Item sturdyMachine; public static Item hardenedMachine; public static Item craftingMaterial; - * - * // Rainmaker public static Item iodineCapsule; - * - * // Gears public static Item gearBronze; public static Item gearCopper; public static Item gearTin; - * - * // Carpenter public static Item oakStick; public static Item woodPulp; public static Item carton; public static Item crate; - * - * // Tools public static Item bronzePickaxe; public static Item brokenBronzePickaxe; public static Item kitPickaxe; public static Item bronzeShovel; public - * static Item brokenBronzeShovel; public static Item kitShovel; - * - * // Do not touch - contagious! public static Item tent; - * - * // Moistener public static Item mouldyWheat; public static Item decayingWheat; public static Item mulch; - * - * // Peat public static Item peat; public static Item bituminousPeat; public static Item ash; - * - * // Bees public static Item beeQueen; public static Item beeDrone; public static Item beePrincess; public static Item beeQueenGE; public static Item - * beeDroneGE; public static Item beePrincessGE; - * - * public static Item beealyzer; - * - * public static Item honeyDrop; public static Item scoop; public static Item beeswax; public static Item pollen; public static Item propolis; public static - * Item honeydew; public static Item royalJelly; public static Item honeyedSlice; public static Item shortMead; public static Item ambrosia; public static - * Item honeyPot; public static Item phosphor; public static Item refractoryWax; - * - * // Apiarist's Armor public static Item apiaristHat; public static Item apiaristChest; public static Item apiaristLegs; public static Item apiaristBoots; - * - * // Combs public static Item beeComb; - * - * public static Item honeyComb; public static Item cocoaComb; public static Item simmeringComb; public static Item stringyComb; public static Item - * frozenComb; public static Item drippingComb; - * - * // Backpacks public static Item apiaristBackpack; public static Item minerBackpack; public static Item diggerBackpack; public static Item - * foresterBackpack; public static Item hunterBackpack; public static Item masonBackpack; // unused/null public static Item dyerBackpack; // unused/null - * public static Item railroaderBackpack; // unused/null public static Item tinkererBackpack; // unused/null public static Item adventurerBackpack; // T2 - * public static Item minerBackpackT2; public static Item diggerBackpackT2; public static Item foresterBackpackT2; public static Item hunterBackpackT2; - * public static Item masonBackpackT2; // unused/null public static Item dyerBackpackT2; // unused/null public static Item railroaderBackpackT2; // - * unused/null public static Item tinkererBackpackT2; // unused/null public static Item adventurerBackpackT2; - * - * // Liquids public static Item liquidSeedOil; public static Item liquidJuice; public static Item liquidHoney; - * - * // Capsules public static Item waxCapsule; public static Item waxCapsuleWater; public static Item waxCapsuleBiomass; public static Item - * waxCapsuleBiofuel; public static Item waxCapsuleOil; public static Item waxCapsuleFuel; public static Item waxCapsuleSeedOil; public static Item - * waxCapsuleHoney; public static Item waxCapsuleJuice; - * - * // Refractory Capsules public static Item refractoryEmpty; public static Item refractoryWater; public static Item refractoryBiomass; public static Item - * refractoryBiofuel; public static Item refractoryOil; public static Item refractoryFuel; public static Item refractoryLava; public static Item - * refractorySeedOil; public static Item refractoryHoney; public static Item refractoryJuice; - * - * // Cans public static Item canWater; public static Item canEmpty; public static Item canBiomass; public static Item canBiofuel; public static Item - * canOil; public static Item canFuel; public static Item canLava; public static Item canSeedOil; public static Item canHoney; public static Item canJuice; - * - * // Crating public static ItemGenericCrate cratedWood; public static ItemGenericCrate cratedCobblestone; public static ItemGenericCrate cratedDirt; public - * static ItemGenericCrate cratedStone; public static ItemGenericCrate cratedBrick; public static ItemGenericCrate cratedCacti; public static - * ItemGenericCrate cratedSand; public static ItemGenericCrate cratedObsidian; public static ItemGenericCrate cratedNetherrack; public static - * ItemGenericCrate cratedSoulsand; public static ItemGenericCrate cratedSandstone; public static ItemGenericCrate cratedBogearth; public static - * ItemGenericCrate cratedHumus; public static ItemGenericCrate cratedNetherbrick; public static ItemGenericCrate cratedPeat; public static ItemGenericCrate - * cratedApatite; public static ItemGenericCrate cratedFertilizer; public static ItemGenericCrate cratedTin; public static ItemGenericCrate cratedCopper; - * public static ItemGenericCrate cratedBronze; public static ItemGenericCrate cratedWheat; public static ItemGenericCrate cratedMycelium; public static - * ItemGenericCrate cratedMulch; public static ItemGenericCrate cratedSilver; public static ItemGenericCrate cratedBrass; public static ItemGenericCrate - * cratedNikolite; public static ItemGenericCrate cratedCookies; public static ItemGenericCrate cratedHoneycombs; public static ItemGenericCrate - * cratedBeeswax; public static ItemGenericCrate cratedPollen; public static ItemGenericCrate cratedPropolis; public static ItemGenericCrate cratedHoneydew; - * public static ItemGenericCrate cratedRoyalJelly; public static ItemGenericCrate cratedCocoaComb; public static ItemGenericCrate cratedRedstone; public - * static ItemGenericCrate cratedLapis; public static ItemGenericCrate cratedReeds; public static ItemGenericCrate cratedClay; public static - * ItemGenericCrate cratedGlowstone; public static ItemGenericCrate cratedApples; public static ItemGenericCrate cratedNetherwart; public static - * ItemGenericCrate cratedResin; public static ItemGenericCrate cratedRubber; public static ItemGenericCrate cratedScrap; public static ItemGenericCrate - * cratedUUM; public static ItemGenericCrate cratedSimmeringCombs; public static ItemGenericCrate cratedStringyCombs; public static ItemGenericCrate - * cratedFrozenCombs; public static ItemGenericCrate cratedDrippingCombs; public static ItemGenericCrate cratedRefractoryWax; public static ItemGenericCrate - * cratedPhosphor; public static ItemGenericCrate cratedAsh; public static ItemGenericCrate cratedCharcoal; public static ItemGenericCrate cratedGravel; - * public static ItemGenericCrate cratedCoal; public static ItemGenericCrate cratedSeeds; public static ItemGenericCrate cratedSaplings; - */ - -} diff --git a/src/minecraft/forestry/api/core/PluginInfo.java b/src/minecraft/forestry/api/core/PluginInfo.java deleted file mode 100644 index 627d55472..000000000 --- a/src/minecraft/forestry/api/core/PluginInfo.java +++ /dev/null @@ -1,49 +0,0 @@ -package forestry.api.core; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; - -/** - * Annotation to provide additional information on IPlugins. This information will be available via the "/forestry plugin info $pluginID" command ingame. - * - * @author SirSengir - */ -@Retention(RetentionPolicy.RUNTIME) -public @interface PluginInfo { - - /** - * @return Unique identifier for the plugin, no spaces! - */ - String pluginID(); - - /** - * @return Nice and readable plugin name. - */ - String name(); - - /** - * @return Plugin author's name. - */ - String author() default ""; - - /** - * @return URL of plugin homepage. - */ - String url() default ""; - - /** - * @return Version of the plugin, if any. - */ - String version() default ""; - - /** - * @return Short description what the plugin does. - */ - String description() default ""; - - /** - * @return Not used (yet?). - */ - String help() default ""; - -} diff --git a/src/minecraft/forestry/api/core/Tabs.java b/src/minecraft/forestry/api/core/Tabs.java deleted file mode 100644 index 985fafbdc..000000000 --- a/src/minecraft/forestry/api/core/Tabs.java +++ /dev/null @@ -1,10 +0,0 @@ -package forestry.api.core; - -import net.minecraft.creativetab.CreativeTabs; - -public class Tabs { - - public static CreativeTabs tabApiculture; - public static CreativeTabs tabArboriculture; - -} diff --git a/src/minecraft/forestry/api/farming/Farmables.java b/src/minecraft/forestry/api/farming/Farmables.java deleted file mode 100644 index b307c3780..000000000 --- a/src/minecraft/forestry/api/farming/Farmables.java +++ /dev/null @@ -1,15 +0,0 @@ -package forestry.api.farming; - -import java.util.Collection; -import java.util.HashMap; - -public class Farmables { - /** - * Can be used to add IFarmables to some of the vanilla farm logics. - * - * Identifiers: farmArboreal farmWheat farmGourd farmInfernal farmPoales farmSucculentes farmVegetables farmShroom - */ - public static HashMap> farmables = new HashMap>(); - - public static IFarmInterface farmInterface; -} diff --git a/src/minecraft/forestry/api/farming/ICrop.java b/src/minecraft/forestry/api/farming/ICrop.java deleted file mode 100644 index bad171ae2..000000000 --- a/src/minecraft/forestry/api/farming/ICrop.java +++ /dev/null @@ -1,16 +0,0 @@ -package forestry.api.farming; - -import java.util.Collection; - -import net.minecraft.item.ItemStack; - -public interface ICrop { - - /** - * Harvests this crop. Performs the necessary manipulations to set the crop into a "harvested" state. - * - * @return Products harvested. - */ - Collection harvest(); - -} diff --git a/src/minecraft/forestry/api/farming/IFarmComponent.java b/src/minecraft/forestry/api/farming/IFarmComponent.java deleted file mode 100644 index bf30de490..000000000 --- a/src/minecraft/forestry/api/farming/IFarmComponent.java +++ /dev/null @@ -1,12 +0,0 @@ -package forestry.api.farming; - -import forestry.api.core.ITileStructure; - -public interface IFarmComponent extends ITileStructure { - - boolean hasFunction(); - - void registerListener(IFarmListener listener); - - void removeListener(IFarmListener listener); -} diff --git a/src/minecraft/forestry/api/farming/IFarmHousing.java b/src/minecraft/forestry/api/farming/IFarmHousing.java deleted file mode 100644 index 8ba6d227f..000000000 --- a/src/minecraft/forestry/api/farming/IFarmHousing.java +++ /dev/null @@ -1,68 +0,0 @@ -package forestry.api.farming; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeDirection; -import net.minecraftforge.liquids.LiquidStack; - -public interface IFarmHousing { - - int[] getCoords(); - - int[] getArea(); - - int[] getOffset(); - - World getWorld(); - - /** - * Will run the work cycle on a master TE. Will do nothing on any other farm component. - * - * @return true if any work was done, false otherwise. - */ - boolean doWork(); - - boolean hasLiquid(LiquidStack liquid); - - void removeLiquid(LiquidStack liquid); - - boolean hasResources(ItemStack[] resources); - - void removeResources(ItemStack[] resources); - - /** - * Callback for {@link IFarmLogic}s to plant a sapling, seed, germling, stem. Will remove the appropriate germling from the farm's inventory. It's up to the - * logic to only call this on a valid location. - * - * @param farmable - * @param world - * @param x - * @param y - * @param z - * @return true if planting was successful, false otherwise. - */ - boolean plantGermling(IFarmable farmable, World world, int x, int y, int z); - - /* INTERACTION WITH HATCHES */ - boolean acceptsAsGermling(ItemStack itemstack); - - boolean acceptsAsResource(ItemStack itemstack); - - boolean acceptsAsFertilizer(ItemStack itemstack); - - /* LOGIC */ - /** - * Set a farm logic for the given direction. UP/DOWN/UNKNOWN are invalid! - * - * @param direction - * @param logic - */ - void setFarmLogic(ForgeDirection direction, IFarmLogic logic); - - /** - * Reset the farm logic for the given direction to default. UP/DOWN/UNKNOWN are invalid! - * - * @param direction - */ - void resetFarmLogic(ForgeDirection direction); -} diff --git a/src/minecraft/forestry/api/farming/IFarmInterface.java b/src/minecraft/forestry/api/farming/IFarmInterface.java deleted file mode 100644 index d784876f8..000000000 --- a/src/minecraft/forestry/api/farming/IFarmInterface.java +++ /dev/null @@ -1,15 +0,0 @@ -package forestry.api.farming; - -import forestry.api.core.IStructureLogic; - -public interface IFarmInterface { - - /** - * Creates {@link IStructureLogic} for use in farm components. - * - * @param structure - * {@link IFarmComponent} to create the logic for. - * @return {@link IStructureLogic} for use in farm components - */ - IStructureLogic createFarmStructureLogic(IFarmComponent structure); -} diff --git a/src/minecraft/forestry/api/farming/IFarmListener.java b/src/minecraft/forestry/api/farming/IFarmListener.java deleted file mode 100644 index f3c1069bb..000000000 --- a/src/minecraft/forestry/api/farming/IFarmListener.java +++ /dev/null @@ -1,71 +0,0 @@ -package forestry.api.farming; - -import java.util.Collection; - -import net.minecraft.item.ItemStack; -import net.minecraftforge.common.ForgeDirection; - -public interface IFarmListener { - - /** - * Called before a crop is harvested. - * - * @param crop - * ICrop about to be harvested. - * @return true to cancel further processing of this crop. - */ - boolean beforeCropHarvest(ICrop crop); - - /** - * Called after a crop has been harvested, but before harvested items are stowed in the farms inventory. - * - * @param harvested - * Collection of harvested stacks. May be manipulated. Ensure removal of stacks with 0 or less items! - * @param crop - * Harvested {@link ICrop} - */ - void afterCropHarvest(Collection harvested, ICrop crop); - - /** - * Called after the stack of collected items has been returned by the farm logic, but before it is added to the farm's pending queue. - * - * @param collected - * Collection of collected stacks. May be manipulated. Ensure removal of stacks with 0 or less items! - * @param logic - */ - void hasCollected(Collection collected, IFarmLogic logic); - - /** - * Called after farmland has successfully been cultivated by a farm logic. - * - * @param logic - * @param x - * @param y - * @param z - * @param direction - * @param extent - */ - void hasCultivated(IFarmLogic logic, int x, int y, int z, ForgeDirection direction, int extent); - - /** - * Called after the stack of harvested crops has been returned by the farm logic, but before it is added to the farm's pending queue. - * - * @param harvested - * @param logic - * @param x - * @param y - * @param z - * @param direction - * @param extent - */ - void hasScheduledHarvest(Collection harvested, IFarmLogic logic, int x, int y, int z, ForgeDirection direction, int extent); - - /** - * Can be used to cancel farm task on a per side/{@link IFarmLogic} basis. - * - * @param logic - * @param direction - * @return true to skip any work action on the given logic and direction for this work cycle. - */ - boolean cancelTask(IFarmLogic logic, ForgeDirection direction); -} diff --git a/src/minecraft/forestry/api/farming/IFarmLogic.java b/src/minecraft/forestry/api/farming/IFarmLogic.java deleted file mode 100644 index ef2d48519..000000000 --- a/src/minecraft/forestry/api/farming/IFarmLogic.java +++ /dev/null @@ -1,33 +0,0 @@ -package forestry.api.farming; - -import java.util.Collection; - -import net.minecraft.item.ItemStack; -import net.minecraft.util.Icon; -import net.minecraftforge.common.ForgeDirection; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public interface IFarmLogic { - - int getFertilizerConsumption(); - - int getWaterConsumption(float hydrationModifier); - - boolean isAcceptedResource(ItemStack itemstack); - - boolean isAcceptedGermling(ItemStack itemstack); - - Collection collect(); - - boolean cultivate(int x, int y, int z, ForgeDirection direction, int extent); - - Collection harvest(int x, int y, int z, ForgeDirection direction, int extent); - - @SideOnly(Side.CLIENT) - Icon getIcon(); - - String getTextureSheet(); - - String getName(); -} diff --git a/src/minecraft/forestry/api/farming/IFarmable.java b/src/minecraft/forestry/api/farming/IFarmable.java deleted file mode 100644 index e3110ca4c..000000000 --- a/src/minecraft/forestry/api/farming/IFarmable.java +++ /dev/null @@ -1,54 +0,0 @@ -package forestry.api.farming; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -/** - * IGermling describes a crop or other harvestable object and can be used to inspect item stacks and blocks for matches. - */ -public interface IFarmable { - - /** - * @param world - * @param x - * @param y - * @param z - * @return true if the block at the given location is a "sapling" for this type, i.e. a non-harvestable immature version of the crop. - */ - boolean isSaplingAt(World world, int x, int y, int z); - - /** - * @param world - * @param x - * @param y - * @param z - * @return {@link ICrop} if the block at the given location is a harvestable and mature crop, null otherwise. - */ - ICrop getCropAt(World world, int x, int y, int z); - - /** - * @param itemstack - * @return true if the item is a valid germling (plantable sapling, seed, etc.) for this type. - */ - boolean isGermling(ItemStack itemstack); - - /** - * @param itemstack - * @return true if the item is something that can drop from this type without actually being harvested as a crop. (Apples or sapling from decaying leaves.) - */ - boolean isWindfall(ItemStack itemstack); - - /** - * Plants a sapling by manipulating the world. The {@link IFarmLogic} should have verified the given location as valid. Called by the {@link IFarmHousing} - * which handles resources. - * - * @param germling - * @param world - * @param x - * @param y - * @param z - * @return true on success, false otherwise. - */ - boolean plantSaplingAt(ItemStack germling, World world, int x, int y, int z); - -} diff --git a/src/minecraft/forestry/api/food/BeverageManager.java b/src/minecraft/forestry/api/food/BeverageManager.java deleted file mode 100644 index 35efb5d60..000000000 --- a/src/minecraft/forestry/api/food/BeverageManager.java +++ /dev/null @@ -1,8 +0,0 @@ -package forestry.api.food; - -public class BeverageManager { - public static IBeverageEffect[] effectList = new IBeverageEffect[128]; - - public static IInfuserManager infuserManager; - public static IIngredientManager ingredientManager; -} diff --git a/src/minecraft/forestry/api/food/IBeverageEffect.java b/src/minecraft/forestry/api/food/IBeverageEffect.java deleted file mode 100644 index 14b91b130..000000000 --- a/src/minecraft/forestry/api/food/IBeverageEffect.java +++ /dev/null @@ -1,12 +0,0 @@ -package forestry.api.food; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.world.World; - -public interface IBeverageEffect { - int getId(); - - void doEffect(World world, EntityPlayer player); - - String getDescription(); -} diff --git a/src/minecraft/forestry/api/food/IInfuserManager.java b/src/minecraft/forestry/api/food/IInfuserManager.java deleted file mode 100644 index 87527731e..000000000 --- a/src/minecraft/forestry/api/food/IInfuserManager.java +++ /dev/null @@ -1,17 +0,0 @@ -package forestry.api.food; - -import net.minecraft.item.ItemStack; - -public interface IInfuserManager { - - void addMixture(int meta, ItemStack ingredient, IBeverageEffect effect); - - void addMixture(int meta, ItemStack[] ingredients, IBeverageEffect effect); - - ItemStack getSeasoned(ItemStack base, ItemStack[] ingredients); - - boolean hasMixtures(ItemStack[] ingredients); - - ItemStack[] getRequired(ItemStack[] ingredients); - -} diff --git a/src/minecraft/forestry/api/food/IIngredientManager.java b/src/minecraft/forestry/api/food/IIngredientManager.java deleted file mode 100644 index a7851c973..000000000 --- a/src/minecraft/forestry/api/food/IIngredientManager.java +++ /dev/null @@ -1,11 +0,0 @@ -package forestry.api.food; - -import net.minecraft.item.ItemStack; - -public interface IIngredientManager { - - String getDescription(ItemStack itemstack); - - void addIngredient(ItemStack ingredient, String description); - -} diff --git a/src/minecraft/forestry/api/fuels/EngineBronzeFuel.java b/src/minecraft/forestry/api/fuels/EngineBronzeFuel.java deleted file mode 100644 index b65857776..000000000 --- a/src/minecraft/forestry/api/fuels/EngineBronzeFuel.java +++ /dev/null @@ -1,29 +0,0 @@ -package forestry.api.fuels; - -import net.minecraft.item.ItemStack; - -public class EngineBronzeFuel { - /** - * Item that is valid fuel for a biogas engine. - */ - public final ItemStack liquid; - /** - * Power produced by this fuel per work cycle of the engine. - */ - public final int powerPerCycle; - /** - * How many work cycles a single "stack" of this type lasts. - */ - public final int burnDuration; - /** - * By how much the normal heat dissipation rate of 1 is multiplied when using this fuel type. - */ - public final int dissipationMultiplier; - - public EngineBronzeFuel(ItemStack liquid, int powerPerCycle, int burnDuration, int dissipationMultiplier) { - this.liquid = liquid; - this.powerPerCycle = powerPerCycle; - this.burnDuration = burnDuration; - this.dissipationMultiplier = dissipationMultiplier; - } -} diff --git a/src/minecraft/forestry/api/fuels/EngineCopperFuel.java b/src/minecraft/forestry/api/fuels/EngineCopperFuel.java deleted file mode 100644 index bb2d817b1..000000000 --- a/src/minecraft/forestry/api/fuels/EngineCopperFuel.java +++ /dev/null @@ -1,26 +0,0 @@ -package forestry.api.fuels; - -import net.minecraft.item.ItemStack; - -public class EngineCopperFuel { - - /** - * Item that is valid fuel for a peat-fired engine. - */ - public final ItemStack fuel; - /** - * Power produced by this fuel per work cycle. - */ - public final int powerPerCycle; - /** - * Amount of work cycles this item lasts before being consumed. - */ - public final int burnDuration; - - public EngineCopperFuel(ItemStack fuel, int powerPerCycle, int burnDuration) { - this.fuel = fuel; - this.powerPerCycle = powerPerCycle; - this.burnDuration = burnDuration; - } - -} diff --git a/src/minecraft/forestry/api/fuels/FermenterFuel.java b/src/minecraft/forestry/api/fuels/FermenterFuel.java deleted file mode 100644 index 6d7cf379b..000000000 --- a/src/minecraft/forestry/api/fuels/FermenterFuel.java +++ /dev/null @@ -1,24 +0,0 @@ -package forestry.api.fuels; - -import net.minecraft.item.ItemStack; - -public class FermenterFuel { - /** - * Item that is a valid fuel for the fermenter (i.e. fertilizer). - */ - public final ItemStack item; - /** - * How much is fermeted per work cycle, i.e. how much biomass is produced per cycle. - */ - public final int fermentPerCycle; - /** - * Amount of work cycles a single item of this fuel lasts before expiring. - */ - public final int burnDuration; - - public FermenterFuel(ItemStack item, int fermentPerCycle, int burnDuration) { - this.item = item; - this.fermentPerCycle = fermentPerCycle; - this.burnDuration = burnDuration; - } -} diff --git a/src/minecraft/forestry/api/fuels/FuelManager.java b/src/minecraft/forestry/api/fuels/FuelManager.java deleted file mode 100644 index c1125e5f5..000000000 --- a/src/minecraft/forestry/api/fuels/FuelManager.java +++ /dev/null @@ -1,30 +0,0 @@ -package forestry.api.fuels; - -import java.util.HashMap; - -import net.minecraft.item.ItemStack; - -public class FuelManager { - /** - * Add new fuels for the fermenter here (i.e. fertilizer) - */ - public static HashMap fermenterFuel = new ItemStackMap(); - /** - * Add new resources for the moistener here (i.e. wheat) - */ - public static HashMap moistenerResource = new ItemStackMap(); - /** - * Add new substrates for the rainmaker here - */ - public static HashMap rainSubstrate = new ItemStackMap(); - /** - * Add new fuels for EngineBronze (= biogas engine) here - */ - public static HashMap bronzeEngineFuel = new ItemStackMap(); - /** - * Add new fuels for EngineCopper (= peat-fired engine) here - */ - public static HashMap copperEngineFuel = new ItemStackMap(); - - // Generator fuel list in GeneratorFuel.class -} diff --git a/src/minecraft/forestry/api/fuels/GeneratorFuel.java b/src/minecraft/forestry/api/fuels/GeneratorFuel.java deleted file mode 100644 index 20c1b67d2..000000000 --- a/src/minecraft/forestry/api/fuels/GeneratorFuel.java +++ /dev/null @@ -1,30 +0,0 @@ -package forestry.api.fuels; - -import java.util.HashMap; - -import net.minecraftforge.liquids.LiquidStack; - -public class GeneratorFuel { - - public static HashMap fuels = new HashMap(); - - /** - * LiquidStack representing the fuel type and amount consumed per triggered cycle. - */ - public final LiquidStack fuelConsumed; - /** - * EU emitted per tick while this fuel is being consumed in the generator (i.e. biofuel = 32, biomass = 8). - */ - public final int eu; - /** - * Rate at which the fuel is consumed. 1 - Every tick 2 - Every second tick 3 - Every third tick etc. - */ - public final int rate; - - public GeneratorFuel(LiquidStack fuelConsumed, int eu, int rate) { - this.fuelConsumed = fuelConsumed; - this.eu = eu; - this.rate = rate; - } - -} diff --git a/src/minecraft/forestry/api/fuels/ItemStackMap.java b/src/minecraft/forestry/api/fuels/ItemStackMap.java deleted file mode 100644 index f85181b18..000000000 --- a/src/minecraft/forestry/api/fuels/ItemStackMap.java +++ /dev/null @@ -1,57 +0,0 @@ -package forestry.api.fuels; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraftforge.liquids.LiquidStack; - -public class ItemStackMap extends HashMap { - - private static final long serialVersionUID = 5383477742290646466L; - - @Override - public boolean containsKey(Object key) { - for (Map.Entry entry : this.entrySet()) - if (areItemStacksEqual(entry.getKey(), key)) - return true; - return super.containsKey(key); - } - - @Override - public T remove(Object key) { - Iterator> iterator = this.entrySet().iterator(); - ; - while (iterator.hasNext()) { - Map.Entry entry = iterator.next(); - if (areItemStacksEqual(entry.getKey(), key)) - iterator.remove(); - } - return super.remove(key); - } - - @Override - public T get(Object key) { - for (Map.Entry entry : this.entrySet()) - if (areItemStacksEqual(entry.getKey(), key)) - return entry.getValue(); - return super.get(key); - } - - private boolean areItemStacksEqual(ItemStack a, Object b) { - if (a == null || b == null) - return false; - if (b instanceof ItemStack) - return ItemStack.areItemStackTagsEqual(a, (ItemStack) b) && a.isItemEqual((ItemStack) b); - else if (b instanceof LiquidStack) - return ItemStack.areItemStackTagsEqual(a, ((LiquidStack) b).asItemStack()) && a.isItemEqual(((LiquidStack) b).asItemStack()); - else if (b instanceof Integer) - return ((Integer) b).equals(a.itemID); - else if (b instanceof Item) - return ((Item) b).itemID == a.itemID; - return false; - } - -} diff --git a/src/minecraft/forestry/api/fuels/MoistenerFuel.java b/src/minecraft/forestry/api/fuels/MoistenerFuel.java deleted file mode 100644 index 15bbb1b88..000000000 --- a/src/minecraft/forestry/api/fuels/MoistenerFuel.java +++ /dev/null @@ -1,29 +0,0 @@ -package forestry.api.fuels; - -import net.minecraft.item.ItemStack; - -public class MoistenerFuel { - /** - * The item to use - */ - public final ItemStack item; - /** - * The item that leaves the moistener's working slot (i.e. mouldy wheat, decayed wheat, mulch) - */ - public final ItemStack product; - /** - * How much this item contributes to the final product of the moistener (i.e. mycelium) - */ - public final int moistenerValue; - /** - * What stage this product represents. Resources with lower stage value will be consumed first. - */ - public final int stage; - - public MoistenerFuel(ItemStack item, ItemStack product, int stage, int moistenerValue) { - this.item = item; - this.product = product; - this.stage = stage; - this.moistenerValue = moistenerValue; - } -} diff --git a/src/minecraft/forestry/api/fuels/RainSubstrate.java b/src/minecraft/forestry/api/fuels/RainSubstrate.java deleted file mode 100644 index 7aac5bce7..000000000 --- a/src/minecraft/forestry/api/fuels/RainSubstrate.java +++ /dev/null @@ -1,35 +0,0 @@ -package forestry.api.fuels; - -import net.minecraft.item.ItemStack; - -public class RainSubstrate { - /** - * Rain substrate capable of activating the rainmaker. - */ - public ItemStack item; - /** - * Duration of the rain shower triggered by this substrate in Minecraft ticks. - */ - public int duration; - /** - * Speed of activation sequence triggered. - */ - public float speed; - - public boolean reverse; - - public RainSubstrate(ItemStack item, int duration, float speed) { - this(item, duration, speed, false); - } - - public RainSubstrate(ItemStack item, float speed) { - this(item, 0, speed, true); - } - - public RainSubstrate(ItemStack item, int duration, float speed, boolean reverse) { - this.item = item; - this.duration = duration; - this.speed = speed; - this.reverse = reverse; - } -} diff --git a/src/minecraft/forestry/api/genetics/AlleleManager.java b/src/minecraft/forestry/api/genetics/AlleleManager.java deleted file mode 100644 index 7ae88448a..000000000 --- a/src/minecraft/forestry/api/genetics/AlleleManager.java +++ /dev/null @@ -1,42 +0,0 @@ -package forestry.api.genetics; - -import java.util.HashMap; - -import net.minecraft.item.ItemStack; -import cpw.mods.fml.common.FMLLog; - -public class AlleleManager { - - public static IAlleleRegistry alleleRegistry; - - /** - * Translates plain leaf blocks into genetic data. Used by bees to convert and pollinate foreign leaf blocks. - */ - public static HashMap ersatzSpecimen = new HashMap(); - /** - * Translates plain saplings into genetic data. Used by the treealyzer and the farm to convert foreign saplings. - */ - public static HashMap ersatzSaplings = new HashMap(); - - /** - * @deprecated Use IAlleleRegistry.getAllele instead! - */ - @Deprecated - public static IAllele getAllele(String ident) { - IAllele allele = null; - - try { - - String alleleClass = "forestry.core.genetics.Allele"; - - Object obj = Class.forName(alleleClass).getField(ident).get(null); - if (obj instanceof IAllele) - allele = (IAllele) obj; - } catch (Exception ex) { - FMLLog.warning("Could not retrieve bee allele identified by: " + ident); - } - - return allele; - } - -} diff --git a/src/minecraft/forestry/api/genetics/EnumTolerance.java b/src/minecraft/forestry/api/genetics/EnumTolerance.java deleted file mode 100644 index a30f64f23..000000000 --- a/src/minecraft/forestry/api/genetics/EnumTolerance.java +++ /dev/null @@ -1,11 +0,0 @@ -package forestry.api.genetics; - -public enum EnumTolerance { - NONE, - - BOTH_1, BOTH_2, BOTH_3, BOTH_4, BOTH_5, - - UP_1, UP_2, UP_3, UP_4, UP_5, - - DOWN_1, DOWN_2, DOWN_3, DOWN_4, DOWN_5 -} diff --git a/src/minecraft/forestry/api/genetics/IAllele.java b/src/minecraft/forestry/api/genetics/IAllele.java deleted file mode 100644 index 67921dc5c..000000000 --- a/src/minecraft/forestry/api/genetics/IAllele.java +++ /dev/null @@ -1,17 +0,0 @@ -package forestry.api.genetics; - -/** - * Should be extended for different types of alleles. ISpeciesAllele, IBiomeAllele, etc. - */ -public interface IAllele { - - /** - * @return A unique string identifier for this allele. - */ - String getUID(); - - /** - * @return true if the allele is dominant, false otherwise. - */ - boolean isDominant(); -} diff --git a/src/minecraft/forestry/api/genetics/IAlleleEffect.java b/src/minecraft/forestry/api/genetics/IAlleleEffect.java deleted file mode 100644 index 2e08148c7..000000000 --- a/src/minecraft/forestry/api/genetics/IAlleleEffect.java +++ /dev/null @@ -1,23 +0,0 @@ -package forestry.api.genetics; - -public interface IAlleleEffect extends IAllele { - /** - * @return true if this effect can combine with the effect on other allele (i.e. run before or after). combination can only occur if both effects are - * combinable. - */ - boolean isCombinable(); - - /** - * Returns the passed data storage if it is valid for this effect or a new one if the passed storage object was invalid for this effect. - * - * @param storedData - * @return - */ - IEffectData validateStorage(IEffectData storedData); - - /** - * @return Short, human-readable identifier used in the beealyzer. - */ - String getIdentifier(); - -} diff --git a/src/minecraft/forestry/api/genetics/IAlleleFloat.java b/src/minecraft/forestry/api/genetics/IAlleleFloat.java deleted file mode 100644 index 2ace6d1d5..000000000 --- a/src/minecraft/forestry/api/genetics/IAlleleFloat.java +++ /dev/null @@ -1,10 +0,0 @@ -package forestry.api.genetics; - -/** - * Simple interface to allow adding additional alleles containing float values. - */ -public interface IAlleleFloat extends IAllele { - - float getValue(); - -} diff --git a/src/minecraft/forestry/api/genetics/IAlleleHandler.java b/src/minecraft/forestry/api/genetics/IAlleleHandler.java deleted file mode 100644 index 593351b2e..000000000 --- a/src/minecraft/forestry/api/genetics/IAlleleHandler.java +++ /dev/null @@ -1,36 +0,0 @@ -package forestry.api.genetics; - -/** - * @author Alex Binnie - * - * Handler for events that occur in IAlleleRegistry, such as registering alleles, branches etc. Useful for handling plugin specific behavior (i.e. - * creating a list of all bee species etc.) - * - */ -public interface IAlleleHandler { - - /** - * Called when an allele is registered with {@link IAlleleRegistry}. - * - * @param allele - * Allele which was registered. - */ - public void onRegisterAllele(IAllele allele); - - /** - * Called when a classification is registered with {@link IAlleleRegistry}. - * - * @param classification - * Classification which was registered. - */ - public void onRegisterClassification(IClassification classification); - - /** - * Called when a fruit family is registered with {@link IAlleleRegistry}. - * - * @param family - * Fruit family which was registered. - */ - public void onRegisterFruitFamily(IFruitFamily family); - -} diff --git a/src/minecraft/forestry/api/genetics/IAlleleInteger.java b/src/minecraft/forestry/api/genetics/IAlleleInteger.java deleted file mode 100644 index 61e089e35..000000000 --- a/src/minecraft/forestry/api/genetics/IAlleleInteger.java +++ /dev/null @@ -1,10 +0,0 @@ -package forestry.api.genetics; - -/** - * Simple interface to allow adding additional alleles containing integer values. - */ -public interface IAlleleInteger extends IAllele { - - int getValue(); - -} diff --git a/src/minecraft/forestry/api/genetics/IAlleleRegistry.java b/src/minecraft/forestry/api/genetics/IAlleleRegistry.java deleted file mode 100644 index 77e35845a..000000000 --- a/src/minecraft/forestry/api/genetics/IAlleleRegistry.java +++ /dev/null @@ -1,154 +0,0 @@ -package forestry.api.genetics; - -import java.util.ArrayList; -import java.util.LinkedHashMap; - -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import forestry.api.genetics.IClassification.EnumClassLevel; - -public interface IAlleleRegistry { - - /* INDIVIDUAL */ - - /** - * Tests the itemstack for genetic information. - * - * @param stack - * @return true if the itemstack is an individual. - */ - boolean isIndividual(ItemStack stack); - - /** - * Retrieve genetic information from an itemstack. - * - * @param stack - * Stack to retrieve genetic information for. - * @return IIndividual containing genetic information, null if none could be extracted. - */ - IIndividual getIndividual(ItemStack stack); - - /* ALLELES */ - - /** - * @return HashMap of all currently registered alleles. - */ - LinkedHashMap getRegisteredAlleles(); - - /** - * Registers an allele. - * - * @param allele - * IAllele to register. - */ - void registerAllele(IAllele allele); - - /** - * Gets an allele - * - * @param uid - * String based unique identifier of the allele to retrieve. - * @return IAllele if found, null otherwise. - */ - IAllele getAllele(String uid); - - /* THIS SHOULD BE PHASED OUT */ - @Deprecated - void reloadMetaMap(World world); - - @Deprecated - IAllele getFromMetaMap(int meta); - - @Deprecated - int getFromUIDMap(String uid); - - /* CLASSIFICATIONS */ - /** - * @return HashMap of all currently registered classifications. - */ - LinkedHashMap getRegisteredClassifications(); - - /** - * Registers a classification. - * - * @param classification - * IClassification to register. - */ - void registerClassification(IClassification classification); - - /** - * Creates and returns a classification. - * - * @param level - * EnumClassLevel of the classification to create. - * @param uid - * String based unique identifier. Implementation will throw an exception if the key is already taken. - * @param scientific - * Binomial for the given classification. - * @return - */ - IClassification createAndRegisterClassification(EnumClassLevel level, String uid, String scientific); - - /** - * Gets a classification. - * - * @param uid - * String based unique identifier of the classification to retrieve. - * @return Classification if found, null otherwise. - */ - IClassification getClassification(String uid); - - /* FRUIT FAMILIES */ - /** - * Get all registered fruit families. - * - * @return - */ - LinkedHashMap getRegisteredFruitFamilies(); - - /** - * Registers a new fruit family. - * - * @param family - */ - void registerFruitFamily(IFruitFamily family); - - /** - * Retrieves a fruit family identified by uid. - * - * @param uid - * @return - */ - IFruitFamily getFruitFamily(String uid); - - /* ALLELE HANDLERS */ - /** - * Registers a new IAlleleHandler - * - * @param handler - * IAlleleHandler to register. - */ - void registerAlleleHandler(IAlleleHandler handler); - - /* BLACKLIST */ - /** - * Blacklist an allele identified by its UID from mutation. - * - * @param uid - * UID of the allele to blacklist. - */ - void blacklistAllele(String uid); - - /** - * @return Current blacklisted alleles. - */ - ArrayList getAlleleBlacklist(); - - /** - * @param uid - * UID of the species to vet. - * @return true if the allele is blacklisted. - */ - boolean isBlacklisted(String uid); - -} diff --git a/src/minecraft/forestry/api/genetics/IAlleleSpecies.java b/src/minecraft/forestry/api/genetics/IAlleleSpecies.java deleted file mode 100644 index 1b8546fe9..000000000 --- a/src/minecraft/forestry/api/genetics/IAlleleSpecies.java +++ /dev/null @@ -1,68 +0,0 @@ -package forestry.api.genetics; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import forestry.api.core.EnumHumidity; -import forestry.api.core.EnumTemperature; -import forestry.api.core.IIconProvider; - -public interface IAlleleSpecies extends IAllele { - /** - * @return Localized short, human-readable identifier used in tooltips and beealyzer. - */ - String getName(); - - /** - * @return Localized short description of this species. (May be null.) - */ - String getDescription(); - - /** - * @return Preferred temperature - */ - EnumTemperature getTemperature(); - - /** - * @return Preferred humidity - */ - EnumHumidity getHumidity(); - - /** - * @return true if the species icon should have a glowing effect. - */ - boolean hasEffect(); - - /** - * @return true if the species should not be displayed in NEI or creative inventory. - */ - boolean isSecret(); - - /** - * @return true to have the species count against the species total. - */ - boolean isCounted(); - - /** - * Binomial name of the species sans genus ("Apis"). Returning "humboldti" will have the bee species flavour name be "Apis humboldti". Feel free to use fun - * names or return null. - * - * @return flavour text (may be null) - */ - String getBinomial(); - - /** - * Authority for the binomial name, e.g. "Sengir" on species of base Forestry. - * - * @return flavour text (may be null) - */ - String getAuthority(); - - /** - * @return Branch this species is associated with. - */ - IClassification getBranch(); - - @SideOnly(Side.CLIENT) - IIconProvider getIconProvider(); - -} diff --git a/src/minecraft/forestry/api/genetics/IBreedingTracker.java b/src/minecraft/forestry/api/genetics/IBreedingTracker.java deleted file mode 100644 index 76f251439..000000000 --- a/src/minecraft/forestry/api/genetics/IBreedingTracker.java +++ /dev/null @@ -1,75 +0,0 @@ -package forestry.api.genetics; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; -import forestry.api.apiculture.IBeekeepingMode; - -public interface IBreedingTracker { - - void decodeFromNBT(NBTTagCompound nbttagcompound); - - void encodeToNBT(NBTTagCompound nbttagcompound); - - /** - * @return Name of the current {@link IBeekeepingMode}. - */ - String getModeName(); - - /** - * @return Set the current {@link IBeekeepingMode}. - */ - void setModeName(String name); - - /** - * @return Amount of species discovered. - */ - int getSpeciesBred(); - - /** - * Register the birth of an individual. Will mark it as discovered. - * - * @param individual - */ - void registerIndividual(IIndividual individual); - - /** - * Marks a species as discovered. Should only be called from registerIndividual normally. - * - * @param species - */ - void registerSpecies(IAlleleSpecies species); - - /** - * Register a successful mutation. Will mark it as discovered. - * - * @param mutation - */ - void registerMutation(IMutation mutation); - - /** - * Queries the tracker for discovered species. - * - * @param mutation - * Mutation to query for. - * @return true if the mutation has been discovered. - */ - boolean isDiscovered(IMutation mutation); - - /** - * Queries the tracker for discovered species. - * - * @param species - * Species to check. - * @return true if the species has been bred. - */ - boolean isDiscovered(IAlleleSpecies species); - - /** - * Synchronizes the tracker to the client side. Should be called before opening any gui needing that information. - * - * @param world - * @param player - */ - void synchToPlayer(EntityPlayer player); - -} diff --git a/src/minecraft/forestry/api/genetics/IChromosome.java b/src/minecraft/forestry/api/genetics/IChromosome.java deleted file mode 100644 index 1a6668a1a..000000000 --- a/src/minecraft/forestry/api/genetics/IChromosome.java +++ /dev/null @@ -1,20 +0,0 @@ -package forestry.api.genetics; - -import forestry.api.core.INBTTagable; - -/** - * Implementations other than Forestry's default one are not supported! - * - * @author SirSengir - */ -public interface IChromosome extends INBTTagable { - - IAllele getPrimaryAllele(); - - IAllele getSecondaryAllele(); - - IAllele getInactiveAllele(); - - IAllele getActiveAllele(); - -} diff --git a/src/minecraft/forestry/api/genetics/IClassification.java b/src/minecraft/forestry/api/genetics/IClassification.java deleted file mode 100644 index bf9ae2359..000000000 --- a/src/minecraft/forestry/api/genetics/IClassification.java +++ /dev/null @@ -1,97 +0,0 @@ -package forestry.api.genetics; - -/** - * Used by the *alyzers to display hierarchies. - */ -public interface IClassification { - - public enum EnumClassLevel { - - DOMAIN(0x777fff, true), KINGDOM(0x77c3ff), PHYLUM(0x77ffb6, true), DIVISION(0x77ffb6, true), CLASS(0x7bff77), ORDER(0xbeff77), FAMILY(0xfffd77), TRIBE( - 0xfffd77), GENUS(0xffba77); - - private int colour; - private boolean isDroppable; - - private EnumClassLevel(int colour) { - this(colour, false); - } - - private EnumClassLevel(int colour, boolean isDroppable) { - this.colour = colour; - this.isDroppable = isDroppable; - } - - /** - * @return Colour to use for displaying this classification. - */ - public int getColour() { - return colour; - } - - /** - * @return Indicates whether display of this classification level can be ommitted in case of space constraints. - */ - public boolean isDroppable() { - return isDroppable; - } - } - - EnumClassLevel getLevel(); - - /** - * @return Unique String identifier. - */ - String getUID(); - - /** - * @return Localized branch name for user display. - */ - String getName(); - - /** - * A branch approximates a "genus" in real life. Real life examples: "Micrapis", "Megapis" - * - * @return flavour text (may be null) - */ - String getScientific(); - - /** - * @return Localized description of this branch. (May be null.) - */ - String getDescription(); - - /** - * @return Member groups of this one. - */ - IClassification[] getMemberGroups(); - - /** - * Adds subgroups to this group. - */ - void addMemberGroup(IClassification group); - - /** - * @return Member species of this group. - */ - IAlleleSpecies[] getMemberSpecies(); - - /** - * Used by the allele registry to populate internal collection of branch members on the fly. - * - * @param species - */ - void addMemberSpecies(IAlleleSpecies species); - - /** - * @return Parent classification, null if this is root. - */ - IClassification getParent(); - - /** - * Only used internally by the AlleleRegistry if this classification has been added to another one. - * - * @param parent - */ - void setParent(IClassification parent); -} diff --git a/src/minecraft/forestry/api/genetics/IEffectData.java b/src/minecraft/forestry/api/genetics/IEffectData.java deleted file mode 100644 index 2ac557d68..000000000 --- a/src/minecraft/forestry/api/genetics/IEffectData.java +++ /dev/null @@ -1,17 +0,0 @@ -package forestry.api.genetics; - -import forestry.api.core.INBTTagable; - -public interface IEffectData extends INBTTagable { - void setInteger(int index, int val); - - void setFloat(int index, float val); - - void setBoolean(int index, boolean val); - - int getInteger(int index); - - float getFloat(int index); - - boolean getBoolean(int index); -} diff --git a/src/minecraft/forestry/api/genetics/IFruitBearer.java b/src/minecraft/forestry/api/genetics/IFruitBearer.java deleted file mode 100644 index 13478b764..000000000 --- a/src/minecraft/forestry/api/genetics/IFruitBearer.java +++ /dev/null @@ -1,40 +0,0 @@ -package forestry.api.genetics; - -import java.util.Collection; - -import net.minecraft.item.ItemStack; - -public interface IFruitBearer { - - /** - * @return true if the actual tile can bear fruits. - */ - boolean hasFruit(); - - /** - * @return Family of the potential fruits on this tile. - */ - IFruitFamily getFruitFamily(); - - /** - * Picks the fruits of this tile, resetting it to unripe fruits. - * - * @param tool - * Tool used in picking the fruits. May be null. - * @return Picked fruits. - */ - Collection pickFruit(ItemStack tool); - - /** - * @return float indicating the ripeness of the fruit with >= 1.0f indicating full ripeness. - */ - float getRipeness(); - - /** - * Increases the ripeness of the fruit. - * - * @param add - * Float to add to the ripeness. Will truncate to valid values. - */ - void addRipeness(float add); -} diff --git a/src/minecraft/forestry/api/genetics/IFruitFamily.java b/src/minecraft/forestry/api/genetics/IFruitFamily.java deleted file mode 100644 index 10393b724..000000000 --- a/src/minecraft/forestry/api/genetics/IFruitFamily.java +++ /dev/null @@ -1,27 +0,0 @@ -package forestry.api.genetics; - -public interface IFruitFamily { - - /** - * @return Unique String identifier. - */ - String getUID(); - - /** - * @return Localized family name for user display. - */ - String getName(); - - /** - * A scientific-y name for this fruit family - * - * @return flavour text (may be null) - */ - String getScientific(); - - /** - * @return Localized description of this fruit family. (May be null.) - */ - String getDescription(); - -} diff --git a/src/minecraft/forestry/api/genetics/IGenome.java b/src/minecraft/forestry/api/genetics/IGenome.java deleted file mode 100644 index 955ff214a..000000000 --- a/src/minecraft/forestry/api/genetics/IGenome.java +++ /dev/null @@ -1,21 +0,0 @@ -package forestry.api.genetics; - -import forestry.api.core.INBTTagable; - -/** - * Implementations other than Forestry's default one are not supported! - */ -public interface IGenome extends INBTTagable { - - IAlleleSpecies getPrimary(); - - IAlleleSpecies getSecondary(); - - IChromosome[] getChromosomes(); - - IAllele getActiveAllele(int chromosome); - - IAllele getInactiveAllele(int chromosome); - - boolean isGeneticEqual(IGenome other); -} diff --git a/src/minecraft/forestry/api/genetics/IIndividual.java b/src/minecraft/forestry/api/genetics/IIndividual.java deleted file mode 100644 index 9a8654253..000000000 --- a/src/minecraft/forestry/api/genetics/IIndividual.java +++ /dev/null @@ -1,41 +0,0 @@ -package forestry.api.genetics; - -import java.util.List; - -import forestry.api.core.INBTTagable; - -/** - * Implementations other than Forestry's default one are not supported! - */ -public interface IIndividual extends INBTTagable { - - String getIdent(); - - String getDisplayName(); - - void addTooltip(List list); - - /** - * Call to mark the IIndividual as analyzed. - * @return true if the IIndividual has not been analyzed previously. - */ - boolean analyze(); - - boolean isAnalyzed(); - - boolean hasEffect(); - - boolean isSecret(); - - IGenome getGenome(); - - /** - * Check whether the genetic makeup of two IIndividuals is identical. Ignores additional data like generations, irregular mating, etc.. - * @param other - * @return true if the given other IIndividual has the amount of chromosomes and their alleles are identical. - */ - boolean isGeneticEqual(IIndividual other); - - IIndividual copy(); - -} diff --git a/src/minecraft/forestry/api/genetics/ILegacyHandler.java b/src/minecraft/forestry/api/genetics/ILegacyHandler.java deleted file mode 100644 index 18412e85b..000000000 --- a/src/minecraft/forestry/api/genetics/ILegacyHandler.java +++ /dev/null @@ -1,10 +0,0 @@ -package forestry.api.genetics; - -/** - * AlleleManager.alleleRegistry can be cast to this type. - */ -public interface ILegacyHandler { - void registerLegacyMapping(int id, String uid); - - IAllele getFromLegacyMap(int id); -} diff --git a/src/minecraft/forestry/api/genetics/IMutation.java b/src/minecraft/forestry/api/genetics/IMutation.java deleted file mode 100644 index 290f68627..000000000 --- a/src/minecraft/forestry/api/genetics/IMutation.java +++ /dev/null @@ -1,62 +0,0 @@ -package forestry.api.genetics; - -/** - * Bees can be seeded either as hive drops or as mutation results. - * - * Add mutations to BeeManager.beeMutations - * - * @author SirSengir - */ -public interface IMutation { - - /** - * @return first of the alleles implementing IAlleleSpecies required for this mutation. - */ - IAllele getAllele0(); - - /** - * @return second of the alleles implementing IAlleleSpecies required for this mutation. - */ - IAllele getAllele1(); - - /** - * @return Array of {@link IAllele} representing the full default genome of the mutated side. The array _must_ implement this format: - * - * Chromosome Must implement Customizable Note ----------- --------------- ------------- ------------ 0 : SPECIES IAlleleSpecies X 1 : SPEED - * AlleleFloat 2 : LIFESPAN AlleleInteger 3 : FERTILITY AlleleInteger 4 : TEMPERATURE_TOLERANCE AlleleTolerance 5 : NOCTURNAL AlleleBoolean 6 : - * (HUMIDITY) (AlleleHumidity) Not used. Anything passed into here will be nulled. 7 : HUMIDITY_TOLERANCE AlleleTolerance 8 : TOLERANT_FLYER - * AlleleBoolean 9 : CAVE_DWELLING AlleleBoolean 10: FLOWER_PROVIDER IAlleleFlowers X 11: FLOWERING AlleleInteger 12: TERRITORY AlleleArea 13: - * EFFECT IAlleleEffect X - * - * Make sure to return a proper array. Returning an allele of the wrong type will cause cast errors on runtime. - * - * Alleles marked as customizable can be populated with your own custom alleles. Make sure to register them correctly in alleleList! - * - * Other alleles must be populated with any matching pre-defined allele. Retrieve those via BeeManager.getAllele - * - */ - IAllele[] getTemplate(); - - /** - * @return Unmodified base chance for mutation to fire. - */ - float getBaseChance(); - - /** - * @param allele - * @return true if the passed allele is one of the alleles participating in this mutation. - */ - boolean isPartner(IAllele allele); - - /** - * @param allele - * @return the other allele which was not passed as argument. - */ - IAllele getPartner(IAllele allele); - - /** - * @return true if the mutation should not be displayed in the beealyzer. - */ - boolean isSecret(); - -} diff --git a/src/minecraft/forestry/api/genetics/IPollinatable.java b/src/minecraft/forestry/api/genetics/IPollinatable.java deleted file mode 100644 index 6bdec1eaa..000000000 --- a/src/minecraft/forestry/api/genetics/IPollinatable.java +++ /dev/null @@ -1,38 +0,0 @@ -package forestry.api.genetics; - -import java.util.EnumSet; - -import net.minecraftforge.common.EnumPlantType; - -public interface IPollinatable { - - /** - * @return plant types this pollinatable is classified as. (Can be used by bees to determine whether to interact or not. - */ - EnumSet getPlantType(); - - /** - * @return IIndividual containing the genetic information of this IPollinatable - */ - IIndividual getPollen(); - - /** - * Checks whether this {@IPollinatable} can mate with the given pollen. - * - * Must be the one to check genetic equivalency. - * - * @param pollen - * IIndividual representing the pollen. - * @return true if mating is possible, false otherwise. - */ - boolean canMateWith(IIndividual pollen); - - /** - * Pollinates this entity. - * - * @param pollen - * IIndividual representing the pollen. - */ - void mateWith(IIndividual pollen); - -} diff --git a/src/minecraft/forestry/api/recipes/IBottlerManager.java b/src/minecraft/forestry/api/recipes/IBottlerManager.java deleted file mode 100644 index 2bfc43a70..000000000 --- a/src/minecraft/forestry/api/recipes/IBottlerManager.java +++ /dev/null @@ -1,34 +0,0 @@ -package forestry.api.recipes; - -import net.minecraft.item.ItemStack; -import net.minecraftforge.liquids.LiquidStack; - -/** - * Provides an interface to the recipe manager of the bottler. - * - * The manager is initialized at the beginning of Forestry's BaseMod.load() cycle. Begin adding recipes in BaseMod.ModsLoaded() and this shouldn't be null even - * if your mod loads before Forestry. - * - * Accessible via {@link RecipeManagers.bottlerManager} - * - * Note that this is untested with anything other than biofuel->fuelcan conversion. - * - * @author SirSengir - */ -public interface IBottlerManager extends ICraftingProvider { - /** - * Add a recipe to the bottler - * - * @param cyclesPerUnit - * Amount of work cycles required to run through the conversion once. - * @param input - * ItemStack representing the input liquid. - * @param inputAmount - * Amount of liquid required for a single conversion. - * @param can - * ItemStack representing the cans, capsules and/or cells required - * @param bottled - * ItemStack representing the finished product - */ - public void addRecipe(int cyclesPerUnit, LiquidStack input, ItemStack can, ItemStack bottled); -} diff --git a/src/minecraft/forestry/api/recipes/ICarpenterManager.java b/src/minecraft/forestry/api/recipes/ICarpenterManager.java deleted file mode 100644 index b8d3ba15d..000000000 --- a/src/minecraft/forestry/api/recipes/ICarpenterManager.java +++ /dev/null @@ -1,67 +0,0 @@ -package forestry.api.recipes; - -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.ShapedRecipes; -import net.minecraftforge.liquids.LiquidStack; - -/** - * Provides an interface to the recipe manager of the carpenter. - * - * The manager is initialized at the beginning of Forestry's BaseMod.load() cycle. Begin adding recipes in BaseMod.ModsLoaded() and this shouldn't be null even - * if your mod loads before Forestry. - * - * Accessible via {@link RecipeManagers.carpenterManager} - * - * Only shaped recipes can be added currently. - * - * @author SirSengir - */ -public interface ICarpenterManager extends ICraftingProvider { - /** - * Add a shaped recipe to the carpenter. - * - * @param box - * ItemStack of one item representing the required box (carton, crate) for this recipe. May be null. - * @param product - * Crafting result. - * @param materials - * Materials needed in the crafting matrix. This gets passed directly to {@link ShapedRecipes}. Notation is the same. - */ - public void addRecipe(ItemStack box, ItemStack product, Object materials[]); - - /** - * Add a shaped recipe to the carpenter. - * - * @param packagingTime - * Number of work cycles required to craft the recipe once. - * @param box - * ItemStack of one item representing the required box (carton, crate) for this recipe. May be null. - * @param product - * Crafting result. - * @param materials - * Materials needed in the crafting matrix. This gets passed directly to {@link ShapedRecipes}. Notation is the same. - */ - public void addRecipe(int packagingTime, ItemStack box, ItemStack product, Object materials[]); - - /** - * Add a shaped recipe to the carpenter. - * - * @param packagingTime - * Number of work cycles required to craft the recipe once. - * @param liquidId - * Id of liquid required in tank. Anything other than Block.waterStill.blockId is untested! - * @param liquidAmount - * Amount of liquid required to craft the recipe once. One bucket of water = one unit on the carpenter's tank = 1000. - * @param box - * ItemStack of one item representing the required box (carton, crate) for this recipe. May be null. - * @param product - * Crafting result. - * @param materials - * Materials needed in the crafting matrix. This gets passed directly to {@link ShapedRecipes}. Notation is the same. - */ - public void addRecipe(int packagingTime, LiquidStack liquid, ItemStack box, ItemStack product, Object materials[]); - - public void addCrating(String toCrate, ItemStack unpack, ItemStack crated); - - public void addCrating(ItemStack itemStack); -} diff --git a/src/minecraft/forestry/api/recipes/ICentrifugeManager.java b/src/minecraft/forestry/api/recipes/ICentrifugeManager.java deleted file mode 100644 index 76a3948f5..000000000 --- a/src/minecraft/forestry/api/recipes/ICentrifugeManager.java +++ /dev/null @@ -1,74 +0,0 @@ -package forestry.api.recipes; - -import java.util.HashMap; - -import net.minecraft.item.ItemStack; - -/** - * Provides an interface to the recipe manager of the centrifuge. - * - * The manager is initialized at the beginning of Forestry's BaseMod.load() cycle. Begin adding recipes in BaseMod.ModsLoaded() and this shouldn't be null even - * if your mod loads before Forestry. - * - * Accessible via {@link RecipeManagers.centrifugeManager} - * - * @author SirSengir - */ -public interface ICentrifugeManager extends ICraftingProvider { - - /** - * Add a recipe to the centrifuge - * - * @param timePerItem - * Time to centrifugate one item of the given type - * @param resource - * ItemStack containing information on item id and damage. Stack size will be ignored. - * @param products - * HashMap specifying the possible products and the chances of them resulting from centrifugation. - */ - public void addRecipe(int timePerItem, ItemStack resource, HashMap products); - - /** - * Add a recipe to the centrifuge - * - * @param timePerItem - * Time to centrifugate one item of the given type - * @param resource - * ItemStack containing information on item id and damage. Stack size will be ignored. - * @param produce - * Array of ItemStacks that can be the result of this recipe. - * @param chances - * Array of integers corresponding and matching to {@link produce} providing the chance (0-100) for the ItemStack at the given index to be - * produced. - */ - public void addRecipe(int timePerItem, ItemStack resource, ItemStack[] produce, int[] chances); - - /** - * Add a recipe to the centrifuge - * - * @param timePerItem - * Time to centrifugate one item of the given type - * @param resource - * ItemStack containing information on item id and damage. Stack size will be ignored. - * @param primary - * Primary product produced by centrifugating one item. Yield 100 %. - * @param secondary - * Secondary product that may be produced when centrifugating the given item. May be null. - * @param chance - * Chance (1 - 100) for centrifugation to yield the secondary product. - */ - public void addRecipe(int timePerItem, ItemStack resource, ItemStack primary, ItemStack secondary, int chance); - - /** - * Add a recipe to the centrifuge - * - * @param timePerItem - * Time to centrifugate one item of the given type - * @param resource - * ItemStack containing information on item id and damage. Stack size will be ignored. - * @param primary - * Primary product produced by centrifugating one item. Yield 100 %. - */ - public void addRecipe(int timePerItem, ItemStack resource, ItemStack primary); - -} diff --git a/src/minecraft/forestry/api/recipes/ICraftingProvider.java b/src/minecraft/forestry/api/recipes/ICraftingProvider.java deleted file mode 100644 index e80ef69af..000000000 --- a/src/minecraft/forestry/api/recipes/ICraftingProvider.java +++ /dev/null @@ -1,19 +0,0 @@ -package forestry.api.recipes; - -import java.util.List; -import java.util.Map; - -import net.minecraft.item.ItemStack; - -public interface ICraftingProvider { - /** - * DOES NOT WORK FOR MANY MACHINES, DON'T USE IT! - * - * Access to the full list of recipes contained in the crafting provider. - * - * @return List of the given format where the first array represents inputs and the second outputs. Input and output liquids are returned as itemstacks as - * well, representing itemID and damage. - */ - @Deprecated - public List> getRecipes(); -} diff --git a/src/minecraft/forestry/api/recipes/IFabricatorManager.java b/src/minecraft/forestry/api/recipes/IFabricatorManager.java deleted file mode 100644 index 3ff32afdd..000000000 --- a/src/minecraft/forestry/api/recipes/IFabricatorManager.java +++ /dev/null @@ -1,12 +0,0 @@ -package forestry.api.recipes; - -import net.minecraft.item.ItemStack; -import net.minecraftforge.liquids.LiquidStack; - -public interface IFabricatorManager extends ICraftingProvider { - - void addRecipe(ItemStack plan, LiquidStack molten, ItemStack result, Object[] pattern); - - void addSmelting(ItemStack resource, LiquidStack molten, int meltingPoint); - -} diff --git a/src/minecraft/forestry/api/recipes/IFermenterManager.java b/src/minecraft/forestry/api/recipes/IFermenterManager.java deleted file mode 100644 index b311da4b9..000000000 --- a/src/minecraft/forestry/api/recipes/IFermenterManager.java +++ /dev/null @@ -1,48 +0,0 @@ -package forestry.api.recipes; - -import net.minecraft.item.ItemStack; -import net.minecraftforge.liquids.LiquidStack; - -/** - * Provides an interface to the recipe manager of the fermenter. - * - * The manager is initialized at the beginning of Forestry's BaseMod.load() cycle. Begin adding recipes in BaseMod.ModsLoaded() and this shouldn't be null even - * if your mod loads before Forestry. - * - * Accessible via {@link RecipeManagers.fermenterManager} - * - * @author SirSengir - */ -public interface IFermenterManager extends ICraftingProvider { - - /** - * Add a recipe to the fermenter - * - * @param resource - * ItemStack representing the resource. - * @param fermentationValue - * Value of the given resource, i.e. how much needs to be fermented for the output to be deposited into the product tank. - * @param modifier - * Modifies the amount of liquid output per work cycle. (water = 1.0f, honey = 1.5f) - * @param output - * LiquidStack representing output liquid. Amount is determined by fermentationValue*modifier. - * @param liquid - * LiquidStack representing resource liquid and amount. - */ - public void addRecipe(ItemStack resource, int fermentationValue, float modifier, LiquidStack output, LiquidStack liquid); - - /** - * Add a recipe to the fermenter. Defaults to water as input liquid. - * - * @param resource - * ItemStack representing the resource. - * @param modifier - * Modifies the amount of liquid output per work cycle. (water = 1.0f, honey = 1.5f) - * @param fermentationValue - * Value of the given resource, i.e. how much needs to be fermented for the output to be deposited into the product tank. - * @param output - * LiquidStack representing output liquid. Amount is determined by fermentationValue*modifier. - */ - public void addRecipe(ItemStack resource, int fermentationValue, float modifier, LiquidStack output); - -} diff --git a/src/minecraft/forestry/api/recipes/IGenericCrate.java b/src/minecraft/forestry/api/recipes/IGenericCrate.java deleted file mode 100644 index 814cb83aa..000000000 --- a/src/minecraft/forestry/api/recipes/IGenericCrate.java +++ /dev/null @@ -1,11 +0,0 @@ -package forestry.api.recipes; - -import net.minecraft.item.ItemStack; - -public interface IGenericCrate { - - void setContained(ItemStack crate, ItemStack contained); - - ItemStack getContained(ItemStack crate); - -} diff --git a/src/minecraft/forestry/api/recipes/IMoistenerManager.java b/src/minecraft/forestry/api/recipes/IMoistenerManager.java deleted file mode 100644 index fe991f2e0..000000000 --- a/src/minecraft/forestry/api/recipes/IMoistenerManager.java +++ /dev/null @@ -1,28 +0,0 @@ -package forestry.api.recipes; - -import net.minecraft.item.ItemStack; - -/** - * Provides an interface to the recipe manager of the moistener. - * - * The manager is initialized at the beginning of Forestry's BaseMod.load() cycle. Begin adding recipes in BaseMod.ModsLoaded() and this shouldn't be null even - * if your mod loads before Forestry. - * - * Accessible via {@link RecipeManagers.moistenerManager} - * - * @author SirSengir - */ -public interface IMoistenerManager extends ICraftingProvider { - - /** - * Add a recipe to the moistener - * - * @param resource - * Item required in resource stack. Will be reduced by one per produced item. - * @param product - * Item to produce per resource processed. - * @param timePerItem - * Moistener runs at 1 - 4 time ticks per ingame tick depending on light level. For mycelium this value is currently 5000. - */ - public void addRecipe(ItemStack resource, ItemStack product, int timePerItem); -} diff --git a/src/minecraft/forestry/api/recipes/ISqueezerManager.java b/src/minecraft/forestry/api/recipes/ISqueezerManager.java deleted file mode 100644 index 6d118025b..000000000 --- a/src/minecraft/forestry/api/recipes/ISqueezerManager.java +++ /dev/null @@ -1,45 +0,0 @@ -package forestry.api.recipes; - -import net.minecraft.item.ItemStack; -import net.minecraftforge.liquids.LiquidStack; - -/** - * Provides an interface to the recipe manager of the suqeezer. - * - * The manager is initialized at the beginning of Forestry's BaseMod.load() cycle. Begin adding recipes in BaseMod.ModsLoaded() and this shouldn't be null even - * if your mod loads before Forestry. - * - * Accessible via {@link RecipeManagers.squeezerManager} - * - * @author SirSengir - */ -public interface ISqueezerManager extends ICraftingProvider { - - /** - * Add a recipe to the squeezer. - * - * @param timePerItem - * Number of work cycles required to squeeze one set of resources. - * @param resources - * Array of item stacks representing the required resources for one process. Stack size will be taken into account. - * @param liquid - * {@link LiquidStack} representing the output of this recipe. - * @param remnants - * Item stack representing the possible remnants from this recipe. - * @param chance - * Chance remnants will be produced by a single recipe cycle. - */ - public void addRecipe(int timePerItem, ItemStack[] resources, LiquidStack liquid, ItemStack remnants, int chance); - - /** - * Add a recipe to the squeezer. - * - * @param timePerItem - * Number of work cycles required to squeeze one set of resources. - * @param resources - * Array of item stacks representing the required resources for one process. Stack size will be taken into account. - * @param liquid - * {@link LiquidStack} representing the output of this recipe. - */ - public void addRecipe(int timePerItem, ItemStack[] resources, LiquidStack liquid); -} diff --git a/src/minecraft/forestry/api/recipes/IStillManager.java b/src/minecraft/forestry/api/recipes/IStillManager.java deleted file mode 100644 index 60640499e..000000000 --- a/src/minecraft/forestry/api/recipes/IStillManager.java +++ /dev/null @@ -1,29 +0,0 @@ -package forestry.api.recipes; - -import net.minecraftforge.liquids.LiquidStack; - -/** - * Provides an interface to the recipe manager of the still. - * - * The manager is initialized at the beginning of Forestry's BaseMod.load() cycle. Begin adding recipes in BaseMod.ModsLoaded() and this shouldn't be null even - * if your mod loads before Forestry. - * - * Accessible via {@link RecipeManagers.stillManager} - * - * Note that this is untested with anything other than biomass->biofuel conversion. - * - * @author SirSengir - */ -public interface IStillManager extends ICraftingProvider { - /** - * Add a recipe to the still - * - * @param cyclesPerUnit - * Amount of work cycles required to run through the conversion once. - * @param input - * ItemStack representing the input liquid. - * @param output - * ItemStack representing the output liquid - */ - public void addRecipe(int cyclesPerUnit, LiquidStack input, LiquidStack output); -} diff --git a/src/minecraft/forestry/api/recipes/IVariableFermentable.java b/src/minecraft/forestry/api/recipes/IVariableFermentable.java deleted file mode 100644 index ce51b1f6c..000000000 --- a/src/minecraft/forestry/api/recipes/IVariableFermentable.java +++ /dev/null @@ -1,16 +0,0 @@ -package forestry.api.recipes; - -import net.minecraft.item.ItemStack; - -/** - * Fermenter checks any valid fermentation item for an implementation of this interface. - * This does not supersede adding a proper recipe to the fermenter! - */ -public interface IVariableFermentable { - - /** - * @param itemstack - * @return Float representing the modification to be applied to the matching recipe's biomass output. - */ - float getFermentationModifier(ItemStack itemstack); -} diff --git a/src/minecraft/forestry/api/recipes/RecipeManagers.java b/src/minecraft/forestry/api/recipes/RecipeManagers.java deleted file mode 100644 index 5f5cbda62..000000000 --- a/src/minecraft/forestry/api/recipes/RecipeManagers.java +++ /dev/null @@ -1,40 +0,0 @@ -package forestry.api.recipes; - -/** - * Contains all available recipe managers for Forestry machines and items. - * - * @author SirSengir - */ -public class RecipeManagers { - - /** - * Allows you to add recipes to the bottler. See {@link IBottlerManager} for details. - */ - public static IBottlerManager bottlerManager; - /** - * Allows you to add recipes to the carpenter. See {@link ICarpenterManager} for details. - */ - public static ICarpenterManager carpenterManager; - /** - * Allows you to add recipes to the centrifuge. See {@link ICentrifugeManager} for details. - */ - public static ICentrifugeManager centrifugeManager; - /** - * Allows you to add recipes to the fermenter. See {@link IFermenterManager} for details. - */ - public static IFermenterManager fermenterManager; - /** - * Allows you to add recipes to the moistener. See {@link IMoistenerManager} for details. - */ - public static IMoistenerManager moistenerManager; - /** - * Allows you to add recipes to the squeezer. See {@link ISqueezerManager} for details. - */ - public static ISqueezerManager squeezerManager; - /** - * Allows you to add recipes to the still. See {@link IStillManager} for details. - */ - public static IStillManager stillManager; - - public static IFabricatorManager fabricatorManager; -} diff --git a/src/minecraft/forestry/api/storage/BackpackEvent.java b/src/minecraft/forestry/api/storage/BackpackEvent.java deleted file mode 100644 index 83d06e705..000000000 --- a/src/minecraft/forestry/api/storage/BackpackEvent.java +++ /dev/null @@ -1,18 +0,0 @@ -package forestry.api.storage; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraftforge.event.Event; - -public abstract class BackpackEvent extends Event { - - public final EntityPlayer player; - public final IBackpackDefinition backpackDefinition; - public final IInventory backpackInventory; - - public BackpackEvent(EntityPlayer player, IBackpackDefinition backpackDefinition, IInventory backpackInventory) { - this.player = player; - this.backpackDefinition = backpackDefinition; - this.backpackInventory = backpackInventory; - } -} diff --git a/src/minecraft/forestry/api/storage/BackpackManager.java b/src/minecraft/forestry/api/storage/BackpackManager.java deleted file mode 100644 index 64af8cd01..000000000 --- a/src/minecraft/forestry/api/storage/BackpackManager.java +++ /dev/null @@ -1,22 +0,0 @@ -package forestry.api.storage; - -import java.util.ArrayList; -import java.util.HashMap; - -import net.minecraft.item.ItemStack; - -public class BackpackManager { - /** - * 0 - Miner's Backpack 1 - Digger's Backpack 2 - Forester's Backpack 3 - Hunter's Backpack 4 - Adventurer's Backpack - * - * Use IMC messages to achieve the same effect! - */ - public static ArrayList[] backpackItems; - - public static IBackpackInterface backpackInterface; - - /** - * Only use this if you know what you are doing. Prefer backpackInterface. - */ - public static HashMap definitions = new HashMap(); -} diff --git a/src/minecraft/forestry/api/storage/BackpackResupplyEvent.java b/src/minecraft/forestry/api/storage/BackpackResupplyEvent.java deleted file mode 100644 index caa74377f..000000000 --- a/src/minecraft/forestry/api/storage/BackpackResupplyEvent.java +++ /dev/null @@ -1,18 +0,0 @@ -package forestry.api.storage; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraftforge.event.Cancelable; - -/** - * Use @ForgeSubscribe on a method taking this event as an argument. Will fire whenever a backpack tries to resupply to a player inventory. Processing will stop - * if the event is canceled. - */ -@Cancelable -public class BackpackResupplyEvent extends BackpackEvent { - - public BackpackResupplyEvent(EntityPlayer player, IBackpackDefinition backpackDefinition, IInventory backpackInventory) { - super(player, backpackDefinition, backpackInventory); - } - -} diff --git a/src/minecraft/forestry/api/storage/BackpackStowEvent.java b/src/minecraft/forestry/api/storage/BackpackStowEvent.java deleted file mode 100644 index 94c837a31..000000000 --- a/src/minecraft/forestry/api/storage/BackpackStowEvent.java +++ /dev/null @@ -1,21 +0,0 @@ -package forestry.api.storage; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraftforge.event.Cancelable; - -/** - * Use @ForgeSubscribe on a method taking this event as an argument. Will fire whenever a backpack tries to store an item. Processing will stop if the stacksize - * of stackToStow drops to 0 or less or the event is canceled. - */ -@Cancelable -public class BackpackStowEvent extends BackpackEvent { - - public final ItemStack stackToStow; - - public BackpackStowEvent(EntityPlayer player, IBackpackDefinition backpackDefinition, IInventory backpackInventory, ItemStack stackToStow) { - super(player, backpackDefinition, backpackInventory); - this.stackToStow = stackToStow; - } -} diff --git a/src/minecraft/forestry/api/storage/EnumBackpackType.java b/src/minecraft/forestry/api/storage/EnumBackpackType.java deleted file mode 100644 index 13faf87b6..000000000 --- a/src/minecraft/forestry/api/storage/EnumBackpackType.java +++ /dev/null @@ -1,5 +0,0 @@ -package forestry.api.storage; - -public enum EnumBackpackType { - T1, T2 -} diff --git a/src/minecraft/forestry/api/storage/IBackpackDefinition.java b/src/minecraft/forestry/api/storage/IBackpackDefinition.java deleted file mode 100644 index 002bc0209..000000000 --- a/src/minecraft/forestry/api/storage/IBackpackDefinition.java +++ /dev/null @@ -1,54 +0,0 @@ -package forestry.api.storage; - -import java.util.Collection; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; - -public interface IBackpackDefinition { - - /** - * @return A unique string identifier - */ - String getKey(); - - /** - * @return Human-readable name of the backpack. - */ - String getName(); - - /** - * @return Primary colour for the backpack icon. - */ - int getPrimaryColour(); - - /** - * @return Secondary colour for backpack icon. - */ - int getSecondaryColour(); - - /** - * Adds an item as valid for this backpack. - * - * @param validItem - */ - void addValidItem(ItemStack validItem); - - /** - * Returns an arraylist of all items valid for this backpack type. - * - * @param player - * @return - */ - Collection getValidItems(EntityPlayer player); - - /** - * Returns true if the itemstack is a valid item for this backpack type. - * - * @param player - * @param itemstack - * @return - */ - boolean isValidItem(EntityPlayer player, ItemStack itemstack); - -} \ No newline at end of file diff --git a/src/minecraft/forestry/api/storage/IBackpackInterface.java b/src/minecraft/forestry/api/storage/IBackpackInterface.java deleted file mode 100644 index 0012fab11..000000000 --- a/src/minecraft/forestry/api/storage/IBackpackInterface.java +++ /dev/null @@ -1,19 +0,0 @@ -package forestry.api.storage; - -import net.minecraft.item.Item; - -public interface IBackpackInterface { - - /** - * Adds a backpack with the given id, definition and type, returning the item. - * - * @param itemID - * Item id to use. - * @param definition - * Definition of backpack behaviour. - * @param type - * Type of backpack. (T1 or T2 (= Woven) - * @return Created backpack item. - */ - Item addBackpack(int itemID, IBackpackDefinition definition, EnumBackpackType type); -} diff --git a/src/minecraft/forestry/api/world/ITreeGenData.java b/src/minecraft/forestry/api/world/ITreeGenData.java deleted file mode 100644 index c43d8bb87..000000000 --- a/src/minecraft/forestry/api/world/ITreeGenData.java +++ /dev/null @@ -1,18 +0,0 @@ -package forestry.api.world; - -import net.minecraft.world.World; - -public interface ITreeGenData { - - int getGirth(World world, int x, int y, int z); - - float getHeightModifier(); - - boolean canGrow(World world, int x, int y, int z, int expectedGirth, int expectedHeight); - - void setLeaves(World world, String owner, int x, int y, int z); - - boolean allowsFruitBlocks(); - - boolean trySpawnFruitBlock(World world, int x, int y, int z); -} diff --git a/src/minecraft/forestry/api/world/IWorldGenInterface.java b/src/minecraft/forestry/api/world/IWorldGenInterface.java deleted file mode 100644 index bff246648..000000000 --- a/src/minecraft/forestry/api/world/IWorldGenInterface.java +++ /dev/null @@ -1,17 +0,0 @@ -package forestry.api.world; - -import net.minecraft.world.gen.feature.WorldGenerator; - -public interface IWorldGenInterface { - - /** - * Retrieves generators for trees identified by a given string. - * - * Returned generator classes take an {@link ITreeGenData} in the constructor. - * - * @param ident - * Unique identifier for tree type. Forestry's convention is 'treeSpecies', i.e. 'treeBaobab', 'treeSequoia'. - * @return All generators matching the given ident. - */ - Class[] getTreeGenerators(String ident); -} diff --git a/src/minecraft/forestry/api/world/WorldGenManager.java b/src/minecraft/forestry/api/world/WorldGenManager.java deleted file mode 100644 index b2147a647..000000000 --- a/src/minecraft/forestry/api/world/WorldGenManager.java +++ /dev/null @@ -1,5 +0,0 @@ -package forestry.api.world; - -public class WorldGenManager { - public static IWorldGenInterface worldgenInterface; -} diff --git a/src/minecraft/mcmod.info b/src/minecraft/mcmod.info deleted file mode 100644 index 43047aa8e..000000000 --- a/src/minecraft/mcmod.info +++ /dev/null @@ -1,18 +0,0 @@ -[{ - "modid": "BiomesOPlenty", - "name": "Biomes O' Plenty", - "description": "Adds 72 new, unique biomes!", - "version": "0.5.2", - "mcversion": "1.5.1", - "url": "www.minecraftforum.net/topic/1495041-", - "updateUrl": "", - "authors": [ "Adubbz", "Amnet", "ted80" ], - "credits": "Originally by Forstride; gamax92, enchilado, Tim Rurkowski", - "logoFile": "/bop.png", - "screenshots": [], - "parent": "", - "requiredMods": [], - "dependencies": [], - "dependants": [], - "useDependencyInformation": "false" -}] diff --git a/src/minecraft/mods/BiomesOPlenty/audio/bopdisc.ogg b/src/minecraft/mods/BiomesOPlenty/audio/bopdisc.ogg deleted file mode 100644 index f6b34ebcba1c79692407e0b76c1880ad1390eaa1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 521300 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 r#R^7GG?P@kmRlxoFW(V?22!PY^ zSckp~4jnRvSd!dV+_dvgqsjC0g-L)PWVz&{xXjp!CMeb;`F6E9nJw#-ykszsW+X1t z!!-e#Y>HF9DNM+UGq>*3KO=&n{CQGz+pb2Tw}bM_&kH*;b@$@iki|qXg_azmeY9lS z#bSNE72iKM2mW>1;`CR+r(vi0sqYYyhT*}i!RKliE$DwFOfE{Qkib@0Kopibj4xkP z{m$roNcv~k&OIGtyv2l2U@QVO<-<#0Nx-`g3Vwyr+xcM=k-@h*ev&RDd<#WA>--rC z$$n5{G7{7Tz=0!|tBm7gZy#oC=b|N0>D0@%*P2tXOZe{X5(AAZ9nSw<-%&jsY5wVy z->g56#xd#J31$cutEn*V3!k+P=S47Smjq|&@VP=mWCE%(!4bYD;H$6VkJq;b$6ln) zHc26)M6A0fA((KRz*+_v{f$N_r{d%|fw( z%rIMS+D`Q369r5~6Fzckm9^$uUYB@zg|FV6yz5YMLFIq=X=K7#rp|Ob+Rz(ngP+oR zY9j$+X3~3(@Ig!gybcY?u6-!l?^sd1!K3MKiD;AJ$48OkL-sppmiXb%d;a z^>hFZbM%So0ClJFhD3jE_EPUgW#!Rh3#9Yv)rP{@qA?JyC@6+IwmvsPM1z{X*QWKr8DD6#EH@oDu+R^$nouqI{BuZWdD<5iNaqgKVOv&%XVz(HpP@ zB@as;x~+LR0P4=;j00d%^+!cRgkS$I$=BO!J96~|jc@f2{F^n>6HDNGIyB5W!8^n1 z_iu-Spmr40sfBLM;ZMorbco`#Vg7iF5h7N)^n1X~Hb{W&n!ONEpdiR)HZ-H$XoWr~ z0MtBE0lRm#j|^4BD=AJP+>Y2#5LXV>0V=#g58y%PTA;C0q@T*PY!%D0dw7_TLUQPL8<|8Bnz@RC`wG9C(mrV9a z{!GMOyR?YFcRA?NdhUVk1jP10hu2_h>zC()(a5nJU-8d6U@Up#avu$LK6Y~c=n-p3 z=9NBm@W=_bZx#a|o8Fw+i-w#5 zaj^&8kUmW)WOw8Pzxr+NPqT37x}j>kKYqb?5dDWcp+F$u>jON=ErGUHnBufj6VguNv2ELdIg=qUgQ z*iIC44?(~?)mDQ1?q~$aL7v^-k$`9cdKZDCGC>%DI*D5#OONJU7~{NurT2R9W&;QK zlHHwmeh3L5~T?=!|s`6IoM%h1#$l=b!S1GJPK`oLn}XHHstp3{LfXtcM{r2ENzi8{OY07 z@mxW1TFu3|)rfu$h!veEoaeZZD4V!fpAmzlPaXOcaj`Y`!-R<0j%TGTty^vWoBw;m zDK?|TspE9Jw|-hV`(SfNr8j(u{D%=(4gnv0Um^V9?cTE2rol@OlcSAn!NmYD){N4u z>ZzM{qaDkjOc>TIr%Af(-1Pa#YeoX_?2QPcbX=>d+QF#xKc{OBwC-v6?<8Q*d51;l zZdd$R!o;tZQdD6*R{uvuO-;trr_$o9U%!0+(dhJ->yZ3d`hKLc0L2v9VfFoV1;wP4 zELS-7WS8j;jbCqg@dL9sn8ZjHfmDBkCHOMYgY#qOZ+XK}j3h?e=$$8|&ispV;9y`= z1IjL|oi4givYoTHB1oBG2AOTa<_(V+pVNgNl!A`!7Qo5PGPB`@Pv6t9h)23cWo{IA z_5b2(1}VhLxxppr)rvNaaM-%B(-&ehrC$kHA(V%mGwKHKz}CRCLm~6yD-xZ!g3shh z{3-;twjh`#cISJ_F}>HrA|w8!=suFM%2C1gf)sP0dB1oQy7rP_E8#GkaQgfHwG^GA zrYtF3Iy59|M+WJ1C^ChPY(au8)QZgq)_EO#U9<1;S&=UFl0W~g$>t0x91M{o&HjeY*javnZi*?F_iS_iQ55kN#1Y!$6SFHxRM+0~9&(4Wpbc>b1 zKMQzL8)NyjB!((?UW7wwJ`2!FH@uOG(a_N*s5(kNgsKnvmX*72AzEJ^@om|0K};f7 zU-!Sd{@bTcP>pG$FWpBHu4L-j;ZC>?wOl{7tKZC`&uQuO6(w;~l%&=^hBWuUkKO_0N=Rv~omc93X>LO_FHmla9VvLg1DwIw z#}G^g9Lk;weBT?IwLqD%SoNUbH08PIJU>JAzFM<8tA3k7GbU=n|0r$E-!Msx>s8uC>oFo zov#)}Jg}KIU~@_Gxd?~si!dF-!cYZi%k<@MuQ;}=lFdWQA6Xig=Kh6f9eW;~D~sLU z{O0#}4cNc+yZ#uAkhyh>DHySF(86k7e{=VeR8iA5=Ch6{)2_lIQrF68tIGjL{$i6A(A#83V;QL0kP6A@%l z)pkfJ=v(G4XGpEo>3bN7e+zH^yB2zz13_BRZfDzi2*p~AH!9l!R_0p3c1J;+U&IqD zzn@9YM!r+8e8`}4;j>&*za}!_^?r#GOv1@vk0Pz40n*0Z^HZ#Vr&D}mQCQW&K5%Wf zC}{;A@On;M{ZyqR1>x5h*yO6pSco`X9dqI6H23L)P}j{$JAeZJsgDG9lrnkCl|P(2 zyE@x-|0Y{hO)m!S8{1a-%bORdkDRv?gGsXnQuG>zCx)oK5LS@4B7fv{;xKE{;~Q++ znpp}khl;y%Bj3`x4&$@RaquQgjK7-seg{Zzzt?#{5{EKGenxCk0TmEiBv`~x@#UKl zN(KI&TV`LPG-10FJa^nsZ>eDSoTFoGALLSwO7uuTe=4r?6nm+2ufwo`&Isy)Gd^rvW6*Xp8|89|n3E=#?b+E*3T|s7^ zUJe+&b=ue)D`D_63j)`Zr7uao!S6_wCg=J)!F(PN2VT?>83+i=`@IX|$L1q{!x_Pa z!0VS}D2O77`t%x<$_V(HxQSv#r6EQba|OD*M!B{ZmC^}SLUGHW)zzozrJ?m;FoovbG0a*ji4^QBzI2jY_A&yX~7*dX|#F5 znMb#YYG_uJgHE*6vy0+~aGF^Uxh=9cJkP^S^)zY^iq-@qbgiLiO&>8`)ni(kpwNujb zkT~%V21S>*0R1txS*TQ;WTUwIyV(gMMMr#Am#0D_zFR49|FeUL5$P~6nU*=4@m8|$ z`yK&eW)~rF_^1gV8C)1wTsjSF!LnMTM-*oV9nY??;)O}zqR(z)*+_`wC***0W5R&# z)R+o>ILI%y^_B;@E5n)9$0Pv~VizKbFDOp~Zg)u4GDbDgp?)>Dio{9k^04N@VJWc( zO83@Rem}%OT)0i@WZWZ>yEm%<^d-BvPaYQJ^ts$worD0@on0HUEWN< z%$y#8SrM!8a2a5&U{*Hvp4>pCLPkFDyxO~=yaO(ezAz`m8%7IK_%N*@+r@~KjRgLD zaYi)(!yKy55St{qkX@OS55@U!>Bb5R`@;;oD0MqvecZJ&Y(q#1>{WkRTQ33TCQ#r} zEyEwUVJFo;2l?w?f!Uy{NueUh^|keTb@_b+r7>{f=qEvPDn4B2AY z)VC1WBX$=KFNf=~7$I=9AY%W06|jnKkpZJHaJu~7zp`_zIb}(vZQ={SW$?H0%fUX@ z@jys(dn>3W4#)Md)d?>UtSj&+jUfdZ=Y-V5KJy8S!O8UXWPFYcQugmP;%rk8FA5dh zg|jK}jr-wa#S4Ju&p#k|CswX{<(>>JUpVI|2xR zO~94FR`=datEyguXctqbYH6g$7b!3~)b)G=4x#5@zb|BPihI|MGgShbnia*jF$sp7 zZHc4un3p$!w*phW&q>T&)~! zf+u~p$gmZ%S}^%)*I*c-&|3Xa*1VTCV3+U#+MFOOQ!#f=GizhTfRqP3-%2iF+O&Cr zf~63Exk4pSn2+BF{0IT!3k2ORN8m%=?fFtLhsjkKKLbdtOLMCPuw}O|TcXcp*rAwW z)W0Y9V%KxEx8W3_^B30og}2r!bSd*o@CmlIC8FP(82jFIW9$z4b|O5yI{zaMdM+$@&>Je-dQQT3k<0(oDU5&uK$ua%TIdJC|WkPQ#G9k!z4c}iwO36nw z8hg(U-D?$l3}|hMXJVWY{4#vno#Fhk8&%AiRaMVQE45kN2n*mCJY>)}XAB${##7Be z=|yMlYT&MjNWqzXhBo4i&K{N$XUZ3hvCa2!WcZKy_K*d9=??(YjO#9rKNK(tyMX#@ z(2xUWyg|k5uAj)f`LT>)C9{CF+;}&*#<+mz4BHmch%vFxjN2j#EfGdc_xcb4pr-;w zV|j$oX9Jx%z0u`u^VM00F(UpYwR=lfwGO7Wuxxly7+Z*>fKWv&(a2SteNskCRk5bI zVKdU90tK8aQEjl#e&n$1eW0|qvzsJpZH(oM7YmXO%IX}^oEN9SC}8^gQz}^PsvFKe zv3$?ejyoPE|1L=JP~Sot9Ke^o!6Zdyrv&e`Iv{VAy{Ur8X#Fh~~$Fd-yzXNprp=%-*Q8`Ye5J{{`BXk{8EsmMohDm{*Z+h0a z^k@_aU3OdPB;O&0$lM$f_JnE;gGv4$X;hG@yh-}h#-5vbkB?3N`_j_evL!v`J+gay z^wy9tpQ>Xn!Dqnerw)L*LpM|Lu5a;Gw_l@c@=OT~hKKWm%)B~DV63F}OC&n+zL@aO;8ajRU9MTa4pc@Se`p&Ni_B!Srrxtlgpmg+P z{QKqBX}mmg%S!C*=$*(ypd%rmkXdnoiEfuD(jlY>C=8zb$j69Vf5*%!I-YoV$KODN zKGjTyGl<{+_E`g4rku|08d(NTS^&l~C_>es`1r<1ep!1~=UDXxC>7*hrL<>Ih!N|@ zKdeZkC9dZOQ59;a*ViX2tVlMD$YolaYd%A%-DD+-7o+Faf}qBs(#o~g7}6)HiMu1Q zTkA)6f2@g`zHb2(24yIUMNtV^-r*@WiI2GtS8phH{F}3FX|`7wVEri{Z@G!$eSwt$ z*C6PpBeQ~_bO4B+U6OMhXerdTA5E=-M!s>xnZHXJOqwbJ=IE4_Ft_PEaH{-mgGw+Z zKSUz4!F-s5xcF!(9Ogix+S`w;a3})tVLi9kfvHI4he(w`n8Z3Z?8=9>T(K!i#OzM8 z%)HOWmGg!#3wKWZXFV+Xvorp!8uuYI(p~5WBmP4po#~M&Lq>a6c>G5A;I_<v%A1u{=J$sT%nBV1;}XWf>akFWpreyo&4DC^^BzoKo|W`t33v`-lPB7=vk zAZuRJINpS(dZ1RDJ%8PWjK1dcLu32 zM&22OYFU@&AxLM^8yeUqeT@&_?6A+fhQPa>#+ZKs4xG3(1CfST10#x4QXu7zeC*k0ep(NX zX9DKEs?^QFnb2H7Q)hcfzE640httk%D|gh*y&v@?asTWCdZRsI>R6-)d0AX@tFJ0n z=Um}s*YAQQH84U29xFkl+3J;1n{#;YlH3JIh0BwcUYnge4k4N z_k6{-VhicZQBKvi3;W$BfzQ|a&6omkH0;^7;LxeC5(uoF7DCY4<tATvRe(-z3}WesG_F%ts2 zOD%&dL}@6Fco-X?Oaj94!vuV#&fX%^u$fl9-{Rn57d}=)YnZ%~1hKuWy#e963=0Q2Xk_aT}h=m2>XgLJSY*((_ z87irC0lrGpchaeQ&D3`Y`?sGr`>^@ejlYD4wjcwAphMn)C!p{KxAN=&^#7d6OJ#dT z8(mC}&*wWo5d@x7g`46Qe8JPA)A?~(K)$LHFsh?BnRfA&1}SkNK;&ThN{&cNRd*;K z>QLc+TWQTD@mK7^Tmj-+C83HNaP<*;j|oyPF*bTDaWM}1xj~s+YUq?&Y~=dsgI+Zm zEjQ?zV-N=&8|$?j2h*I|Fg6EC)XV5pXotZ(!aW``sYJ zEduwtv|xwK_;JwnNuZPrxTDH|^C9Bo)txIxNHnS-=^l7Bbu7MM(JcxHF~5I9z%{;6 ze)DXdxZMn(5C=>K@4y`N!^5cc;i;<=cKx&NWg+i)q!e@DOpGH>5_^BUeE;17%V{Zg zi(^Ib>4SA{qY_yAH<&u!I(C-(vS)u&R0$p7Yylhwrc0&~IRJ z0O%?RqI3*%7boUgS*--CN}(=OIW=_3KZbJgs23AEHkszZ~IKND5uP4nxnOd*@-|Fj(?uzO8LQ$zzK9ECSG> zAod0@xcsNb6GZh#HKM# zVlMrxv-!*9BRE?Pm^2-HO5NMQKB@!vMN-~2wclYUp#oy?qa_4-qBopA<(_gd6JmxE z0fw{HI`B0DrG3k-h9n)0Sz)((WEcZd=jm|v#GI8Nn4~@%5chm8B*|C``6WQI=wdpW z!->0~>`^GHAZWq0Uo*`lWW%#6bvyF?8?Y~LN=&6jZ5M#$Wsyno)q6iVMIqN;eIidT1$finG4)`pbYkFEQv=rrqgPZhXK_n%>;o z@$@`BYu#gj2P8YQMR@BF*V+%eEnXS<=3;?mVZ)^_cYtW0#tQ(-&%?akBEo}jl6ONyNm^24h_E;9*hM?L}CF!0T%)TLjwa?!K}cb zKwnl^h`+Dz1%E%U^FHVN&RsZv?!5nL_cJ~hLarrTPfWUgGa=#5ja#>_-G7jFH}&?D z%*>2}jEqMGxsM(^d{Ug9{wOPneLE>P>%sk$wELM4GgGrt(z5TTKTds+o|KZBo^k*2 z!^f%FIeGc{j~+irdyt-2kW=vR@spgKXN3jD#Z`sb1y4$gYM+!;7C(7h`n;g1xTK`8 z@Nxdbf{e%cg}FHopXNL%&U^YK|7mH-(`QefKg}yFEh;Uqtf?ujXe_BMt0*fd$}h-& zQuyTA)BNJ+dBxR51^K0U`GwF>D5j5v%<419raN0o?cZiNZh|Ld|Gi&@01rr`t(WEC z4~vyM5Nsj4Xiq)#bpY&zg=WySW#gRQ5})59@%j04v7o|l0~n2fp-O2tc^QZ5a8{ME z-!ax4cR<(*7#KIJ$zD$z8_NKk8=SUXq1YsXCGMM8MK~y^R*FpHwD0f@I_PR@_~&-+oB#DIf1J+Wf?gko>WC%p|E&b-gor23^VWflxk)pC=PxC}=aj)}@?8ls z9vt@Mgcg>iQX7Q@RyAD$7J^dbzFz_iQw7GMQ7Ra}g{Z5QQYRx&{$sV_yBN$w?#{iY z;0uwcCC@`_Iu1TH1(`>E!c*!KI2>Dim|=wu#w$9e zkvLzcrLl6r?N~;+O`)X3O3=~d((ybqK)e)YX9I3(aWd0V)6*JJapFANn#5a#Yshnk zb>7lLXcv3EI&8``o%n!t*9|63qqX-pEH=D7xP}D2#a;_G(%#3rO<3jIwHU%)<+S8m z)0P^74oQNswK^>iv3rELRLv2y3~)(F3V4|!O-I52qF2*jUJz!|?r@q03P-tS$j>eT zg_S>4#GdYD;>H9kX;@+~89aEDOjEt{g6sO5bR*!0S1oTVl7}FEBq15zI9__z|6VH( ze=Tbc2!Q>i0AzPk0f9#SI9k$%F7j)bgLxB35+1$%MMY3wUjUA2^b`ptdge9#K!1o} zeE^w234LKaXE27jX#8YaNW)abIuAoye&{~|g3ym?BLp0}nGa>(W1D8qp8}ySC z@X^isRb_#W(!J?UK^xmNpdjYY*bj5lytj_~>Cup}?DXgTI$cnJ*f_*i6wDd})tq?) zFrw|b3a6IrB{9YGTR|5El$|tC6D@)#?@mtuLgDPYwDOf{N z;2lQO!J~gI0={!vdmeY*h3W3D$zz(x=+8u9C^_DKFY+w~X1;$a+lydz#S#VnF7VZ@ zJe@s<%uEv}gz%q=c7#13uu2d@1Lo{Ii|?;w#DUhUw^>DuVHM!6CeGo*vxQ**jo%G< z2536O$*Pk?$`Xd^07bW@xK0{HnywX%?f*;*VlPfsNf%PlHwKt z&((?JtOU@v%}6YpuTZ+N$VWGP2_dO18OC*ml*mpVa z$&HhmK}1>CwYh!9pf4Tpv-%$hM%)dVi5%}+AMcjm{x=jmI`til-pBqNhfSd+nT_6u z-axU>4@WcC@k~=g8hcdg2HPoN(#8CpabQWHDL#5pXcT3H5FxHx2^Oxcbj<|64K5VP z_PL;(E(yvpGfHA+LE7XiF>%@|A#HW6ZY3DK9yNP~D90d;hFac&2Kup2?5vW-!Eo96 z9PgL)J0x=bU={s6wLq(_x5HzDlm4pR2=={ok9)Q*&sAvrD*LB9EOlvt7+eY+){xVE zS1_v%fRj`vR=?H}G}7CwQI1H9%d$z*#1WWQS(gS%NlHvL1+YQTrAU;YOQ;f`7#E6_ zL0OpPUTB#gU!b{`H{nKTl>O85AgX=M66E=IzV8yE2Pnj5=lbztWTaqSipDwxnxe;O_W7Rb;i;Pr|y^z=l& z*9V_dqQtF~w$=6*VOgtk1@+>_L#Z3jdB~z*54l1NQ7T9A5VNDr4DIKFI<-+Sp}tNu z88omxpJvftC_V8r%Fs^bR>?PQa4~7A+Msb00jHAih#>kk&9^LV9uEY>jC~%<%Z9pE zfFVd`TEl_7^Rt40g1^7a{XRI%XVo~V){GP;Gmxiklb~X{k4zi{v zfjFZFa_&i2H4As?B!sQ8$6`^q1Uq;V{kx@q{yci?W8U)E*QQ|9KUZH;NAv;LM4_?d zJ!?-h{3f>j;n|h+?q$4l_;G8B2w3Awr#&yDaUK!?R~)&I9Z_Udw|=q)FJJVt5N$Hn z^~DU;3&j^RJ=0Cx6=9PC9=-*U4@MYsyL8s#nWTLhxS&Z>+2ms%iC1l>_k|}P-aGI$ zWBggnA_Dn8tF8&t1L!8RK^v)sTcHtfQ&%qqoIF3h1AcxO#{3$v%=X2EAdcmm!s7b8 z(JcSyQ-bICKdC#`GS=fiE~XHEEwjd{pvi@z9`>hQL!6NjQH284K)2{M@lo=8;uSnD zqe*Gm&qN!x-#59RXS{B_G%-xAcLs4cQo}uhI;Wax)BgMG99}g%avmyrQEI^;PMr_56mn^cUL$nz+aIQDv_D=nSm$? z%loYb4O%r)*LU1cJIx>|U4naG_VbpFD61trIXPcfZv2JoZ-UQ3c|mD@>NagToHcLn zUBMgM2^fWj3qLj)`T4<7CoK8B;&!h#fH6LQC~QsyUK6;gD3Y5GQ+z!Gl__@O>3Q+@*=JMV<^r1R%! zM668;_Jvlf1C=fyMN{0gQ5BOkHl0VdtMGf0*T$5HZm-UT#dO|Pe6VxB;O_N8 z&>sGLX`>;Yte!UF6le*_2ddNk=UkC{ay{t8(ihQNfMpv~9-fTe@z_FX;iG&c5zls- z@QX8)2bdM+6s-1&Pr@#-<;T`?aFP=fq7}StxJ6uPqmW+Hs?~0A@7&i{@;_%i5bhRa z4vG@Icih#Ce<qYE%YETc8^F)*C_+e#O}47iK8D z0qqCSqkS^3Xs)S4E!%$49lyY{FZG1G&f_xOvpv~*qM6G3YLl}DH2=a#?XbmzcziMH zIb5dKqXRpkISt$8Z&MeG2csHB~GLbj}A6 zM3APVR@#JogjJaJ8Mtvjm*|sNIs#I(r666`_dvS-_#>esX@p1(6SJtQv32}+w?TYlP3x1#>m6(qM7;hS7Q_Y&+MaZus>nKS%^c=EchVoS zObI4seA^NIvHqhqYeC)83dFjGWJ=;r53UMgnpJkV(-7#3k$M>tLT^-Cqed60tJ+KRPiwcsnrr#;WAsI{ipy!qOSDJqlTw{v#hv|p8atiT&y zb8`Hqagph=rC4jb5MiZcRhTGtJla=(Rv&t^4{Zz?e%zvKV-lS`MHo_uZT$R$rJZwe_~aR$6a^@d z4)Nvds+cFf6v2D?T{nZ#nOi73!X>{Am?{$DmM-idF^oL@)^g@RT%B6>N(&T4e z)s~>dZFb)g`ah=LJRZva`yYQ@voT}Mt~91dvP48=8>wg|m3t|EkMQ5F0bK403NbJSTkZxcP@erv4b$ ze~&(+GI*+4aU-#W!r9#zuWI%U!Q518IX?1OmXJnzCe2mF81y)TZW=QzegQWtc!?&H zm7yPO<;PIE<-FQdIEN4$)=)Joh;#viFBSfNvOP<#`U^40s4Pb;C z70FlR4y7!C4+V2i$?5iJU?ZUqmCRi9*T0`g$lprhHJSw4fPdM&hZn;L8*^Y{*eB%@ z^*qHICOSSZ=rzJEEs>pK zpSOnR4icy5^Gj=L+W*-HGe)(5_rw?vPdu?tNb=>i{bVe~RDNm468J5t_5|j)@kT6s zh=`Y$F53tWWqZD6xHdA`gKH+CuI21pg}(T0h`mDY_$ftHr3Nvi=$8{G>ooPTR%;=? zYuc%`@$?ycgK@BBdvvRwO9@K#^raPGpWU1~zX{t=A%~7$$-0587d1jH!=1S6jwpRh zvle2SyCR|`x{I*pRCMsN!EeV1>egZH)P-RjriiGLEq*K6Xtrt|jiFERYPA85y$FhC zzFEHGbb6ddiK2)))$$gYakR40BR+GV=MRTlW%(T<0sDaG4vxeDNQ5N5hIkv*zW+Sg z_wp;Gfy<6TT`+Ve^}W)rz`SS7mg0V_NCu)zj3U$N=tEP_P1vQ_y6c2KBJ*h?t&5o8 z?C3JDCE^oe5)x|^(h8#i`}k)mSA)UUyF-8@4z_cfwq=&G@Q8alMvSB2dy({-X5-YG zhF9Q4BW7a8V&|r$f`JDqVG>Q~nm*r3AmR4fNV9B^FU}s4P~=z@?_P`Eo;b9&(h~_r z5mt^@2?DT2gpYhb%s>kl74Xn$&$#8J-ZgEjuFEPyhuGTEdz&8JQA>Tv>U7&-diwTI z!RBbZ@p5cuc1^DRWxAsBBG_!E&&*S^zUgTOh;j5V?FLalLz0SY%PmCks_Hpee*3)T z%<}!6c_@I=QN>f`yQCpornR29lS9x}sG$7zZ3f|0+B~O6hMS|#FEruU3GG(iM*X|5 zmMTwYp42+`^;^R@tAVh`Dllrf+AB5_~GBr6@9np3%i3B)IW8 zVo0ua%z-;CzLptN7OF*N{l|{R#xRCdzjbUia`9)8$zz6I;&L3)5y_w@5hQ#>3VDc7 zifYfV8bkd@GK{(Wbs(d^3h|@*)q+kl+1JzD&$yqF4gSl}|NpC5THgA+0m*v}zl2+wbWxEaIoaq1tgc ziiA~N?XRD%L2?&@BpHRjplA0|1^15Ibj5h>!3+QY7q5HLvCARC(2DzXhI=HZroE`8 zRNq**;f(Kx-vr0#1;T6hF;&Qg9TxyIXt}2YvpJ*pNfwHF;Ip6C8ed1*@=hWpQiv`` zs*R^qm-C4yM!q{T5LLoFLl)80^b?LPPD_J%)#6|~GfJJ{h5dKLU-r$rkiTMpJ%Yuj z1CnLprE5W7t^L7jO%R5-js#Q%?@pN;(*y3?*gVcDSrwuLI@Lx-lnO=GY~(6`F9J)U z<`X(9g@Op%*c3u~e^qje4h)tVmM5T3A_teYkoWY=#C?vHM%ZkW_0V4aXa^4@*>RgT!Gf}~ zGOHShM?#aOm1Hg+lz+%|&vhqD-Gd`o_aA~!^FP_|&eCSzd%A*=z6Gbq8CX7ZGa6~{ zbel}D49}L6XCZ&?f=E4;zlOpxZIFRnd!KNbpQ$pq<_vZq>kPXyehpHn=7tZDl75S# z=|s-?+{K$>Q9b9+u@XLbef;G=_sKj84<1oX^{x9IZdP{<4${ZZZ@xs#LGF<)_M`%J z2zCWi3I75P^YoUSK8ZOO<_eDN>ZK{yt84}OX=om)-kESp;o~Xj@NbJr zcPS=gRKq@KCroqn<0AevC0hm$PGjGoTSlq@tnW z9(}l&iV%A z0ysh;GC@y#NF)!4Vh_kXmeKd7>ic-IDDdFACEGrnw>KyO^|(jbOmzsd%bnvTZmYB3 z84wWHaw)JO)MK8G9Hr-pBBpHNQv$9He%JJBVp&TSp=&N|t0;56_*1cA3uHoBTX~qH zpDGfxV>W{fp21O+=ZW#3`aK%l(V@hse8QEZ3C|F`X-z<3X#Oh$*Ln2p*uoO;BE0?0 zgVj<=WPg}De;s;8enH#=6c*OC6QX8L+w4&DvuJB*SW8Q>$5=zDaGs7sm}1rY%MDv; z9h98PvSP+A<0L%B-jLcA0X-w>578Vpncfp;Z-|xa{w@Jeh4qE_so}9!oewX z{7GdJ_)ke%KrCf)BWs;(i-;PGV4aC4C{;ktG|4T&vidQXWFtJecQ;<;Xa`que!89C zU3A-geIqD+VaS%@1Z?ehR_vTmJqpwr#hOU6Mvs4B(wLS{0U(Tdf%2pP6429l3;tZ( z54RptS4%vKV5CVDUXA@wOvEx`6O|FS00}${+?0>-+L`3Fk`6*uq`PtD!o^ac5w`9A zcnhA#RO*2+4amF*7>4McS&;_jAHAck3rB570CTHVLYHIWJ^+QIsyT$^0w$#As|f7K9RAj0b@ zAK|i=-iqd!N-YKRxsbkk9XekK0w(>VgwpEz35917{*}P|`pgmG*I2$D z)EjBudd`OwK-u3f$qz)~qEPz9DwA_U-7geq41>6DhP0&CL@16=a^y^E9DINPWBs$f z1mWvu)jg?weoL^ouQMd2=E4Vo{m|BWiG@p z*2Faorxa*TElQ-)9>p?^V;Mfv-%s-hYbk<36$0~@DpFEB3-I#_js#qjl2Sd|RcWo% zO8(EH<*z>682p&m2tZTx-GPfM)?j!{;`VMR!NzGW^U$V7e*&5N`4ol(&$sxan?w(M zdb(%}6+f-iD0PH#O+=a_B@^x{%tlE$iZaEX>(V&oYJt{PT;JpT<(y-S{~jEI{GWZ? z`E$QR#HK#DB#rF{eCDgJ&IM1!)(l1ipeM8CK`C;GOFgJe;La99O-9ovLQ5(eoAh!0 zc^#eZ3c@2%_LA7GUBf$%D_nys#n-PbMOyOhTKmo zyBNvP=~L9@n-uNO3U#}J@D0zAP9S2n!5x|0)EfPTfUYG3DPsJN8VN)jWyJ8;OU*;o zR%Ic}rYhst&<@6~X_WH#Qqq1ZmXI_|lQKiGfZi-opHU&E5H<3YTS2{+fO^Hbz6K=_ zdz@R>vBLFeey8c^-fnZ@T&k}N%R8MUtwJXpVIqAifj8mR8Yc>ziupiIJJbk?@8jeE z|LMZLqC4=dDlsWML+%!gJfFzWrmec;qG!AgTbp_8xv!Y0=266-+rVpdjM~0KK}8*T zHMw>Z&_>M;opKT`GfUuZ&hcE-?N7lEnRZr9a#MWg4-WWJ|gI6 zP~ZCo+@lBoq>oC%QuF=Iv+-2?sV&cy%8V=9C|Gh@{&bw*R;a_KX?e$e^uK|)<~ubz z9#zvT;qEY9WJAgF1-dBU?}t08`%F;avDEM5ZRZj0pMehZ!i>iQ{xdn6OI<(8`= z4k_ezD>>pRhBN!(by#ik1_0u0s#KenbCzBhjtB)&zx3+ILI%}@)s4^G*13^ zS&RAe?x9Dhl#Owa%WSh&;l+qGG&GiTn9Lnh2oF~eh$b?(uQz0POA--7if!{u%9gVa zyChS+qKm9%$8r=^kxY{dx1Bz5mh63%F%^etBfm9c>ki>s*z6~tw`(G=y*)vRlm4iA zX)Wz`1uC4pY(;izcy52^eTLSUJx41EX zp99b&8_J|Uw8%HB`DbD-&Tm>XXQ{O#dje9ZK)|Ux|FPPli^hsOp!vWHv($(i#gxe5 zc=GVZQd?2Xb~v*X-ulpq|)<6tZSRVU)4OlOCX z=ARK?boPBAqG8dRbK1h4gDgD*P?@hF%ua7T`0Jw){psoGzwQq$irsS<-)^91h3^UU zC?O9>%r#`R_hVAFnIyvZG`{HD$5BL@wI{3I455@zUW<5OtUPm6KZTnbiBPO5r77Np zbu4B&_6mWnx$6s4XEC*VjVyV~R?cm~5h#$nc>|3z2BM~^sn?FuzZ4nWB%<$Ii#B?T zfmEzGn8PfHmI7m5*z;>__I4dw88lw8iqbg)-MCQ)k=YwT#q9#@1;Mdm1gOg`8!|wG z&{C11o%oJ7i@M0osB5uIat(dW@p(uR*?mguZt@*C&;t1!$+R$OA}8^x?WSFuxa-MY zCNeI$_*NhNQyNT4ysX_dNpZC6Lvc8S8uBH1jUwT7KYw1?@>@7c6V<$Yb_M>2e+$T$ zK{z^4dge=N^uq@PlyniAyTVJOv}QxR=Ez)`Wrx`E@Opf0Dj^-&Yh342=I`(_+12ztP$RDEJGIbyn**ut zJ#3=>!<(3(r7`gGSe1rhyE5Wv$n47#%5tf{prVN8aQB%Ca+rN&ktk*V8e@Q)o`qYK z8!?Iagr2t~bGzVVn{qf6U8Czh=sD_uY8`KN|F;1me?GLuzQ}XNcm->^#(`2z<1Od4 zE9!hyu^SG;=ix<*e7zUjU${w#4sdi*i`CG-{X)(m;XTe(5uu<{*C=^WR9!B5q(#S13A+|M#a~RkHpZ7pBcHB1 zbc}fcr+Q^LdZ`sE;D^-2wvit?kaWDI5N_7J9Y&LeHvcr=ZQP$JiE0lmO}(&JxKt@q z-qFRz9M^_BPz75{H5&hU-wp7gM-3ZGnom&(_>|QY6%k&ZO4x+u;qtM2-N}e|K%~9T zin|EgOwlM1c^;0{4%kLp9lOCLC|6&7YI}>nf++U9fp}1~g-}Zm6gd-&jA_~78)>>y zFLung={~Y~-m=OyvM$ws2*u&~xUwiMs5w0Q!u{%Y82@Mk#D7?%YXH%SfreP$KipTa zGILLmfzLG1*^Uf2!;)BRUCMuR8)FK}tl|lxU7KRWJZOAM^#Nw^6F8DDEsmm}OK{80 z%3^It>z{X z5QA|ByH&zVzfq7g%K{F2dLZ5Ya_0@Wf_&ANPNjEYKjFVCcO+06k?lhCo7C3g$K5r8 zRXaUpXxpm;WT%P;5(&06{^B~Z7+|R*Pm%W{wd%uVy7=(At`ga`vy4~&-A}uxhE&-$ z={p2Vv=){o9>(KRdbXdO=2N4S3|edNuD2tecqxC5=EB_N@V`3m)BZrAJy56q%=9o~ zzK;#p05Nd4!}Vl*)cr`EucGpTBS#0OSHXbZ0WnhH&@}w|(ub|Tj;sXVYyd<2g7TYO zXUs$Vxu|N2t|r=JTd7 za8-BBx|2EltIL;iB0ws~xY}m|@>y=R|sWhl$b>owKF5+KBq# zsX#A~*du*5UH-H!syDmVU-_L*LkXdJVviCz)GiA@Rhl=MMD!}Ddb{hvHg%a3I?FMI z`QqQXh&l2Uyf*W(M9S9Y@l4~FU;&}+kehWm5ns&wY#^G(2K=&#Gp6Fs6lto z#-1BWqwis@CdIgu{&mnge$(&$NOz~#=s zhj{}B0Ra8B|0{TZ`@&M;Ur1vP`{Bh>GA#If6Y6xCotN$BHl9yb>yOMyMui82J&N+Y zDGq|Fwkie2+4Bi8;p+hDN_Y}fKzc5TODg$`be!41BXDmd4Zm;=SkDsia5E9t`M40t z4X@@bL|Ts$9UTbKD7xu8Yo3u9sVaRr$9V4|)=D6WaaCvAoKZAe9Djb#N&}g<6v5oi zeXl{8o*T)xq=Q6^m>DCXQ8dYtx+XTB`ORE@ic86uK}>7wNk zTz7^t2UQ>2v~d?vmg?2@mcMqv+Km}?N@N@P1)^*gVtsfIRw|0EnUBvX2`F7}53A_y zH-4BQ35w$Ok{)4M5%20gB?Rkasomei{p7v{!F7ECBj|33Egy`}frt!EztjDyxD*0I zG&`!8#*akOFaPDdtHBAJyXir3rwBS4ldnkJ*QKYAl50QC<5LPl#UFI;y6?pynjXOq zONC?V&@=Nxl>#(dX&QV_RiKfyJukUAwwU~P4(j>Q>`=QNGAClep4Kk|&1w>jec|Xi zaGUA?^Jc>O6<3HO=3@ZY@U6YUy^n=a_Zr}G=g##X5$usb?>2c)d|lvxmW|IkIZlh= z2?vz;SD||Jve@&l6qApHw~csa42d+}x;VgVUbUr&*61}|PoVPuq`$=$ry~jq|ST;X?^Fk%%UN4hWLJieIBqTA6|+H zz)yzOtDep{$e9a(%clYb#8Dz76{w-AiD&uG-dV$RuAzUl`A}f2w^DKIBBX*hS7@5~ zEZTmmX9bApndtDbWWnasD4yhAsN@|j>t{}2gr)VLcrmGo@J=<(LI>5=)Xn^*m{;wq z+T86&7$>%0)N9CGDJCHUCi9MB0~zsMMdJ9p&WKjyyQZ+4NlTK6{d?h@F<+B;TCdwT z4}lSz4b%hNIA(T`8ns#mSn|uGx+TIhphAHACMQ9+QVphvsts195)i9vzaP*UM5{%rm1LX6-1c(!t4HiR zd#<3r3RgsgaBE@$aic{`0&8CA+LL<@tyl<+lH0>TZ{V-10b@t3j^5SWUDqGOL!i(j zLrck}ZG|Y8)kefGe}bP49m*+r@~YRr|CcI!Jvh_0mB8ets>(efn2@R!iF3mbm>5Sp z{f)DA3Naje5_V?DmVv@A66ZnNzeh_Zav2zR1k`+1gxJrcXdU4<{p|)O762TgJKS6m z*^D=D_E)Kg{Qmx*bsrbz7Fb<;2SbuMn^5{xB646izm8xkHRb&@0cp>D?D36Bh7U85 zdcqCwdF?Qd?>%3X2|wy=Br=sG7;RHxOn0xTO;(RbiGcXbw40(#sB|LAO*gNI^}(&np&o~BLpmeztDgHD7L_BXaIc#NfvO<Z^I<=!<8NVv$ilKSd|z5P(W59d=yH9?VG)#h&+K#?oXwt7R-jClP!Nmo zy`^6RhXoYJ-vO)n^SjoE6XH^3FY99ZW5HP%IOVnj<4*wMKDRVLuoEdJt~%XirRt2( z;e~6a4r7vt{I!2+b^IJt40o`Y8;LUy!wbIo#A;z$uGg&4ly zCv&7yhG~6#LEOM}BZb&=`UQLZq`rzNO`MmHFEpeaMBIEBl96O@MzD}UZ;4PkQ*OTY zc&dYZ^!Tg#6AwgpIHv2L%DiKGK>vS(uPUFF5GI2Iz7-|c6gLEC86wtek#W%BtSV#J zeZ;@%Y%j6Ws}dJSnl%-6=R#ifcAFeHw-0_(WxK~GwHH)(r&TKAV#7D~CDbAIo1D0o zVRvhcHBlq*x!HB{gp}r&v%qm3RE3AGPLZ=;ZXRdo=QC6pJsj#<*U<8Zlgw`$y zMrJF)96-eH-Go{Oa>8P&eNfYic9$M6V-bGSu7NHDh2)?d@L>!6z0UTER!zvy4$bTWHZMaWKB z|4YgqA8gTRqMq2``D&%f&ij}P-34U8Ra*!w4{WHVXsGntf~1mSN~5l{Y}QuUfY{5>ubc7>_hJd$>!Om_V2H><+2!FKu|N9gA&*cm zJwNPCoGHrgdcb;VD`# zt+kHMoC=iS`0(@0V9$f*gAIbe`t-x-^ue(S4cJA*`$A+y9irntL}=Y>Ib0eYQl1$Y zbz;@)#h@ZaDn`X;$G-r4P*{^A60L*F|4O#5n7fA1@#56o$ItQ0mZ9WDclW-u+KQ3! z{e^hlu~I3WahR78P=kAj(O9IAe~Fn`dC6Ii+^28k49@HMNfhd*nH7Q%NVO$t%GWJC zN_hDjOcx@3E4n@)rKt8t>pnzb^li-j09w-|9B<2v($|>|?VmYs!9b$ppZZ75o90~M zFH=0Rve`EkL=N>=y_Fn&Ar_9F`+b{R2q02xdHnqw6~xtKj>Pj;wM$}T8c*a+sh3Ws ziY;H{E#|Gv1a@_90{t>?a~k%R)RqIlPn|MK07Yvs&EQ0J#kM=8TMmwC5|(!rFA-xB)5QN|qa_ z>p`y=JnYzO$|uRP(j}-(%G!%2E&KSrFQz`*6t|!Eb#LvK-v$>()fIyotO>aIo9EJ9 zQ8W*gd>vZ!t?2c{hG@IVz|hr*`-xL=Cz=WVTli@ZL?7+e^JYW6DMg$+vj}?^4eMyW ztYUXJ*<>&RUZZbTk~LK4jF@u0jf|n4NSo(tZD|Zhh1#vLa6-X;q>h+}cUsM86h1{# z%v8Ady{wv}R>+}bb^vwI{qW)Zj>MPi4l_JLZ<}4%`cp;@aEPYdjgTY(>TeZt3b00z5@))lN#m-eR_cz}N6VWSx-oXnQ}zI|1R*(xEeJtk z5J4h@>6HHz4gX-hjwV z&w4}Ajs<8H!dG<$VeRZ~*u!Nk8io(Z2lK<@H!YP$=Bi|9BTIZKI>_99Fq-j}lB!Oa zRZ{c1q8)UNr*d&+wb7kM(jrzj7j_$!*}$1Ka^_kV_huGft1y*B0{Pll_(f088aR-c zU8nG`%H32@aqpp;TuH}=TvapcU{P*Z-xnlU^RiTth~XkRqgsfdGS-;TiSa3exmRuN z#SuO*azMW{H$g;?JbZO~jI#M~Bh2$DJF8LPr?467M>%fws#4>%8y{_mk?5);QEypz zIL26e3D-Aa{fCp=er^6KmUnz~y{67zNv9d8tj^n_bkK8C+PnyWu_t#Zc6%vT&VFt;B>u+m{|C za7?FHq0A_Qrm?kfh_5;4)Rp!n-3l7BoWB!bN2|OG{Ev$JQMh@D&zL9`H}3l3!*2pc zRLYgoTQv}~YsWoF*;1&-ya1phTRmxT)<1Tr8Y_A8`(RS~2t1@QhO$}=`f}!nZL5Uz z$*-y%xeMra9jm?NTwm>H=x6-ZRMz~7G(l}VVW=$d!o}rq`_24d4cA(VBVClZFpzt^ zFpxFBfyhAY%Dee_(L(6jYXJvqbg=rPUaKP z%!pXtFY+>`WO=3ufAn%N5wUedNRbtDu8Zzcny|L9G~deDHWD*bJ#CXU-Qw}O`!qcd z3uL)0_dVyI8+M!Tgle2vXXv1Q0VWlr`lEL!+|Zc)Re_g>id-YNf@>P};QR%M=Z4YN zx-%FRIgHky>pQxDS3evM6M2r-$P8bV!y%55WwsrH_n8|}B}|C%7xybpydJ|)SE{Oh zpJ!A1){-qP`iC zd%Ga=m+Y5|{{;2!7a66Xu6up*+_$+H6I>`F>+AV6IkuY38jpZr0I|$6S~TpO2y0im ztA%_E<6=^!-wIkpn{6dyX%7YB&HTD|HFeFgr{hE)g}vBxQ$E8wp5V1C_wCiy^Juvf zr}yruyUnq?Z~`h`_}^211M{;+N-}UrP~@sxjiITJ#Am<0!y(N0bccdNv$4SsW|TxU z*eB}*I<)f=z`AtShXAglh<#ZyqZkok^)QSpiXr$}*Ry>(e$MD@Jj!XwaAx zG^TT|OFk}(`xtPsu454^Z?))(|v5&X)k0+gsE96;jvE%Ub~0 z`uCAjvrvr&d&&(olM3E&?lQ=8df7|DRax9t-`m28fENFbd3ewH4kRgtE{Y;|KyybSoi?%*ptKrq$rMHI$&P?GZM|9$vv;m>TPpf!6QWZ+1XakYj0kmf)odGX zF~Otf)CRZOZ9O@c^2B-D!s&|yQa4^xexO@V^-?7iD^sO&sc7y)?!|t|Ewbjo4%x|ycb=K_+QNKNf?(9 zZHndmC~A0Kv&ZN#1(`G-u3Z8raB3C=M#yR5p=9__p$QIs@<-VBqt&Zg`nH@oH}~OG zXP^i^w;WCDW=FTi5*!2vM9WrVI_CDkx6cBOyE(VSLZk2@7LNUzdhv1qP$i|q>FYve z#m^B7nbpU7mMUm(T0BF}-p==*BaPy=3@lptdCTH2SM4g_`)?L=*A-iI=CAu^Wg^Wz zDnTk6iNdQ6XBS_~0|S%Mr+mW)v|<`v*oPkuUn+b-tSjKZqoH+3C-QymJ&y}-re=+& zZ?8g8RwQoUTd^RjD0HEEoMUq))EmoVT2UXo0!Kt8Vt8HQ;b)6Y&LZ0I8O|J=4*4M; zzi?{V5ebG~Z2k8J8h1#i9+B<1*GGKd zw)>z;n?c>?PG~}POb9x&%8vlLhR}&0!etGpFhP=AdzRaX7#dFx59RPED16usm86c| zS5JZ7%}attz`j3gTC?xjBpN0#p2qi?OKnDiEpsi;>+0xDv8_wH z*57wok`|sF+lgE=exEUzmeoIlqD`N(I7V_O-gj=6iQmN$tv~d~VUHFpN2`ulDgbEN zde$j44{`UH77AN`NPD*m1?1X&Ca=&x)xQ8PFmLwtChg|idYqeK?=k+00)S)CQ!9dt zJzWfugJ<1p$0-c`Jk814oOr~X)fo;>CAY7{kCksYu#28Rz{@u}Ez499VUfD7Guf`n zGS!4jxDIdY!9HIx1k3lHsU09wYOiFg5QLrhJH;wIF%mLdLs7yz-PpXxHHd=hKanPc z?(E3mA1~)WW&J(Vhoo@~iOo$Een~jAw^ppl<6ZKFHEaS-32A@vpUu_eEvx$&{!7*5ihu3pYtRoz-y212KO9pHP~}ZQ&BK ztv(V3+JNO^%-<1ICUg9O6fd(GesP)J*VAaU(6rRoEZA5Pk@4Pn=xB#OlIA7G4vF!r zZW7u?zzb=VT6HDg0~&RaI^uHEuCH-K!`DSyxkh|xRIc)3l~SzejHJH=$1dQtlyFKn8xfWD543a(&vhx=*_`Z6gP|?f7;nb{N@n81TBBy={FVvZ8{?k-1@1V;M|9J zQt05Q-vBRRy&XVZ3l-8M3zuBT0Ae;1vPU-b)8Vkl3xKmR@|D- zwFGd{nH%9sKkc6wX)FKtz<-7*lS8&JyD1eA8UC3-Jnq{Jr(F*}rJ_(eVGf!zfciEo zfnG{1Tn`*;vT_f;|y?LoYM)P+Ja9^Vt5%Ux9bV(Qn4 z^ZswU6dHQM-Ao&ab>7Jaggvo`UaI(j#!<#dA-6NyI*JgG^?W+aR$7^lJIfQIwHIH0(=3>S9 zp-wV^$GHCk-lS4QIlj-@Pecdn(#w2dEstzor4@T>`2d*R_aU7?@$3et)^S zF!q26DVm$|%;#6euKTSRBkh|)!s*zZXh^a_WbsrL$~N`&YG?bZ|GbkKOTM~Dy76!S zKFa`o2CKD+QWOZbj?44M3_?TzvOxC6> zfM$XY?V?7jLcDuqABHa+p2%mLBZa{$T@iOdCrn7*yF9N)i|IQae%IPR1|}p3{&{(y zTPzhzyIQ&A#pUxi`FCSA7*dZCHr*w<(O?nZvWm8mLawZ+G@`6n^gryPamWVUx*ymX zz2E5_8T|)0r5Ew2f|*kYo*y7Y1dq3k9D!cyDpvvn+z%dX z#;h?XuEUxCfy%mKw&v(qI!0!er|^o+MW4u_2r5#(De^r36B89iik@m+$$cr#MP7a1 zCRKEtF2vP2+7V?AU%gqnn0je(w5g4Yj{#5JF~@+ZaG66DG9A9Ws>l}N=zM)tq0O?= z;7bUa6gn4(`&G|Rg=dEw4LzS02Ft%&r(m66L}Z;e=p)p%hBB*AKxV)vLU`oKg8f|Y zIU*yp@xs&2@>9rxx)X)$w1N9UPzX4E*$;YAknQR+7m*Aa^V9=65A(4yg5 zdbqFZ?c=L};Xu07mY{*o@=E==q(6%pa#ge=p-SIH=X#t;*k2n6oZhK+v68^fh>i2x zt0hsPib*PH#=@Flp>X_P_dl*q>I>bDDCpp1QpJ(=2{w{5uX7?Sk@@&-1c6@xDw&%F zCD1cz4<&_8tP(Hr;#rveGf)%zyUdsIRYIRU@loPM{I~RV1n<=zDwDnY$lAMPS`#aS zDFTbnOoiHvu7~=ViZwZ9Fk&n#(}LVs8zUv8GE17u0Ub1kea(R|4tS>p8( zn?+KBUkXOpczun3t%Jpyri zX2TF`EGN-64$z7*;_sv3=rgJ7IoXCC;>yH0>4oiknl6cQfuxK~Avcv?OB%AXhM_|n zq_w?yq-bG)`gEIm{T02}nQ|4T__zOID(d*tL*!{yRUty9JJ(`}7@zR*<*>=yXH|rv zo!+m9!QSWA`Ku|~qBIOWyjw9*yZ^t(D|Fqbhz#tRCgiY2BO8f0Gwi6Q2aU;~t`3AZ zt7xnI+C9N(#)f^mj}#v5cDBXiL8i%t@6gX18W>zjq1(2&G1%g6g`sLTg}L+1a&OpRklRS?J4 z;oNF1kd;yJ2T~IRGr<$;?JJWjg!yD3%hM=~^OS-n^`Oz}>)IkbA60H;#9m)VFJEeebWa~`s6=oW9T#a{ z-OypV*C}Gh!)^EVz?`W)f%jejlB^jNUD5(E;D{^g$E zXnd0%GF>sg5-N-@?Zl$SdX3OWB*?I`AXMbb*kQGM3S^Ppl}|AW;~x(Jro#-alH%0% zR*_*m`cZY02%Wy)#`Kg_bw&l@Bi5A5`t$5VRQo3G`%ie;z)1;1f8iv?F6e08Zx?wL}9O___0 z8BX*KW@nE({1omLuytw_*#TzRHyi$WjgZY&wxuzuj}70gPJqJ~`t053qPAr{^ZV16 z7mJY4pkT8+5G7|G-+W=#ri(EVdsZ6>8m*vZ*^fC{I;Q9wuhR?=^-q^QO4h~5K;U$8 zx(E%THFi^V`UdJq|;!PUFBg)14;{s%XC z#QH`-<9jZE5BFV@YrtVV8atx~HwBF^+ec8*Jqh|Rz9dWrW56_x8|_(d=P#Z4LX4SQ zjqn%gvNAmADE1rm2{mU_^{NCf)M6J*YKzc;UWb&;9|v$9l*MG9h(oCv1SveC3E3(Y6YLN7_?vT@8-W zgULwul09>2EJ0nw?*@sEeH4$T`g-^jC8=u|%|BObueadgnUViFVF#(K-qeBw_rc6y z!Se^gz%S{F;W!xQrsO|DP9KD!C^_EGaV#$tYx<#xfDck^^yzJ;@l&%=FLMc0-3A9l zrvl5Ip4x$SFmecUddNWHi1v~`>M+syM$D+wCTGw-e{c9?2*znFETA(GII(* zoLz2#X17lWH~Gyp1>b}h->t_1H2->%+-yol1!cRA!H=N;wI5j&cMf4J$?TcPZ#g1J zJLK!4$!ses!pr1u?aSp&n~bgX8e(7JYkd0!@H@p|;tIXrjqE6+c$lp!828 z_CuzV;6vKCwOvFnWi{7t-{WOnKJBTOE&j3<-ToW8R4#x?aRrR<{heh??wR^S^{#a^ zNOw9PY$k;Gi4Y}0=B?gnkSzQ2dq=AI;GRf?@R}YaMg=C|bWF}E^Yf7Abk8RKWr9oB zrr2K+kf)0v?X$o;v9#F!$sWui*q8y+1_HhB7tZK#_2Qffxd|lXB@_5%ikrdziIxoq zc&?1IjQ+LQ%Xid{q3?XNesS@WKso-O>pRW&1UHdc4CKV2CDUmh2LYw?+fwKaRxb@0 z%tBH7AKZtn&5<<-9=bqo%G?!RJ)br{Tueq_f|uh!#Foe?)BP0T|13PRCGT+_UO zA7OC4wy~T-LJ{3)|Kt}=y9-uZfLP;SlM-k7hWb#AzmBJv68Aw2JnyORnlSWWYj}_~ zy2e&Mv?8{M02g~l?!J6#$7&xrcO6N_|AqR*l9%#@jcQV=Wh7c+@wMGI3=u9572zn) z_^|L~vV4QUeMFY?ZF4am2uOfTSU$fVNWfV@Ew!93N16cf697eMHQYLLVBzRF@B1W7DVxKOS4w| zyl^quT!=~#1Gi-bU2D0v+CQneB#xUoE{4v3j;uO$^ByLM7h$#on%vYfL9yCz+zwD9 zdVf3r=cgzy*lbj2E`-Gp{y;G}fE>^gNJN@iG(jD-gIW$Z9u?2pqOjswL!{YN$7uUP zVH0O|@D|>M)|l~!P9?@?S}E|XF}~@y_3bvrxNIoNg%POVLo3|FirA_tGtZ7#L(UhC zrrK=Fbz3KT@yFWNg(6>!iI<{SNP69KASi}~OMywNk=Iw1acVX%3oNq8ro&;(S|e2p zUMlxaAjrT)!=OA7UaQN1c|u=yO_+`uwR)k#?l-`&8J}?`;qGZR{D)$EN=Sad4WQxJ z_|&?Te7H>>$D?z@&4M{(ye_k)YkQ*=v07eDK+*8l`jwmr$%8?F;}=ZepCj@5$d&6l zwh^L06%qfD7GHT{hyP}WWY!6dw7=}aezq0jRD4e+sWw+Vp~LhhVJM?14RI14^%??c z9MvkI`D0B``GXF7?^Du8_$#f{$9p38HS;3+rzYhQ6Lst2y+3L&4mK3_t(Sww5PPad zt+yiTega~)9Z_u>?u~YJ*p3a>qGn$X6&YBFW_$O{>vC5Uq&RGPqe{`zwz<}>mbNub zF>u|7$7x(WAK~|ywlw`f?Nl`LmZ zI2ISJi-N8_jr%s%2F7VT)SKfeU&4<6wxW|3YpFdv_MAIZA`*@!pNl>)WfJi^X#LAe zW`2z~=g;qm{MSwdMyye7+-zKf)E%?*<0Rt7{I1ms{^#-@6k#W>aueL=7iHDhX3G=` zEfEi!4}w^F3Y~M5)&4B@;i*?(sPRMgR|qB@+?wwM!L$)Vw}RSBivNw*HM8Gk6Sxpx zybAYLWKR8Vr~txFO!<=Q78L&a$=fWGpMYOXZm9fHPBrKg=eT>H{PeUn_8O|~qbV^y zA2YtCGOK{Fm)KkCDzTO1sd4Lnkq`&El4Wwj!(Y5Gc`zqg<|WM0V`M}Yzy8PeP|ZPiPkXZ!*UFat43OZ`!@#LAx zWWxwS12?xj6Go#Ut34Y=bqhKOehlwWmot{*(#UHWF;E)B-F#zn+zr8c&C@@*h&dq4 zwW+p{_(L9*^8gY0=4%*aE<6Gkb66lDzqQT^{)Y;`b`z09#l*7vpEm zAWrQfzLdwTWlR4LmrO|PCq^B;9;>Q{)=t`9Q&g6QyEk-RKgb#LB?w4IrYDFL#pTcn z!EIhUTQ;+P8{ecbI6?y}2YeVsEW?d6Y+VB$t^~BjW{28*NIPsvcQXEd!|}h1kPZ1y z|5E~Fy`_<)zO-NldRRC$M_8V%zC=d1Ts?IKM44`_Cee;0LlxW%cIOV(@&K+c5s0_Cf|t_ z_D&WAwUZAaB*-f8lbserZXu%KsqI)wN0vRtB|I2$CbY>>b%r&+%*{n?z?i{qagQeN zT|KuHGtgP`Qy+jIBcI?aJ2 z0BsCLzjFpVorXS6R;#j`y$F>HUv0;VQhedUOP?)UKMYq1|FvGY@w}$y(5kYTHn0N_ zX=|Z3Fbqc?W1mjmt{OZYWrzfWX2|ZPPMWMgh2J*}5FK+4>S6OWUAm^MLww{;PaWS< z`+Si8y`%dpqw<2za)E6W$K_L&edUcs^JsU{I87wxR}lU!zftHBE4nIJ<@U{bH9nz#68w~ABj94<K9=TDxrXv(o%c7F*s9eGjJoZ7!9-;i!N zEnojJIGO2l8#uP~{z>5fN93o;r}mZw*L7wCV1=`v6^TyqVP$z2K8mL~XBO`cj&Ku3 zLle8O{b;uTb)<>OB8+9#LE-lJdy}Q+0*O>y!>)C~_@F#dI-@qJT(I2%u?O#cWj#*l zy^PY1VqLEnR=%`-9gpzt(+m@HD?EKGK8D{q*D$( z$S&^~QiLzcxH}O^_Eo%dRT(*a)APi=*%_c%Ojo)S*ddSSBSs=_J2xQrjQ=q1f?Q0@ z8HMFX4s`V`Qb(M-efWXIbh5GrnxFgJzOqA4Y(2_|N+>L`Y!Ux#NzmWG>AV?mN^5p; z&$-LELW7L_eC_CoU0%LLD`@TM)VkVx#bg~vSX!^Sx?lnv){0JFZJ>*u?Tl!i9x{Q0 z%B}F7u?}(tPai|keP`@XTg={r(~GK5;6R&I$iunt$yH4>xHeN>YtU-v@(YxoSMwsRAnMLbKI za7Lu?m&oFV{$@G+f_Yd8)-%2w(KqDoAfoe|Z|KAsu3T{QEKtD(eV6B?VD==?Su}E_ z#+&9tE+8u4;iYz1%B}VqzRJ}QgE9jb0D%Z`N@s}d*Ck+8#ois&L&#(HyGHulec4_y z8E(&_w2^hh(T62a#^_KuZAC~Ib1dl^WJH#w?!b7^SLA~T??)+qe|ubBHWFB@GoWu* zN@gwypFm*_*Dv3En;yxduH}~5_ol~=5sSlbJ}oZ~p8K>8@jcIx znfj5UB>=(eWzq9UI6hNxb?W~S^(Ej?Z~y=2GmB*`V_&ijDhgRc)`^O4n^t6-LZ~cB z+4&%8QD`H=h^R}9$i9qJrpS6j*+zuQGM4Pj|M=eS@89#>NB64xeC9Zx_j#Y!_Lj5q z(KIqr&|8-<#(^+zw6pr1-@8_ffi%x(O%)#oR6jW2eU$N0k$lH%#F^S_4#2Bsav~~y z)ywHiL^sAnvff@%Bg(Ab^^=xL65l~yA}^>~ZU~3roOKc4?j`(q4Ek9&E~cbMSGEVf zS&m}M!XtIuuxjN(AYm(%UKFSai0H!Mo`1Vh#_VxmSgvyId*(<796=id|Gb6QylgrL zsyr7*tsmtQ`0!3Fuq!8{3n9-SYYVr7gJFbGg?fa!t^JP02)|pX$=p*q;?~=o}6cb-v$^xc=U~fKj-ySz#Tf~+IkbF%8o7R zFAL=J(Rr!S2e7YHEZz`fB5@Z#7sMyg_u#^o%udN~BFo=jdV0*f^5}_ue*kVs@^ab~ z2=J9oY}{0!tAYjGZo{HVQtyPo0v+1l3$-9~cIhX?b@;vX19DPZy1T=kt_%dJ2!H`# z#T$&x&JUBQT4vvgz_{13ELhGj5S8}C$V*c^XLte3!~R+E<7(Yzlt{ZQ-FiQqiwjf; zv|VnXe|U)JaOWta@c#Wu0q?}26Y&tqVkvlK@TG2%l^n9qG-x}q?;$t#=jO7be#idE z54^!xCsVZ8sN~(CXHhbgILpc1Qw!@5h4)iQ!~fm*S_%&0K;F9@8(J{>9^oFZ+C}jK zgTZ6zVWFE*Hsn5Bfl`&z^6~%yLziA1@1jTFe);ANYeI0ybV|AY4xmm(@UtarIb>s@ zVzXx`M?92mxSN26{odEs+Jf`eqi`B2>FY+x7hxQRE#(zyGbnDy!j+=pvQ0ctw9`us z7FKrAa*dVpQ;PWOU#u~NxyFe(+ z%haTOwXx?}92VUrOAeaaL?9C4&6R5IGR7;(nEO(DhSd6SqmMWPqHG3TA(d_KiN)WqzFIXd^<(9I zunnZouptV7{ytgi2o*JW_22bw{etZB7P*@5y(`y1GPoPua{Jo|#4ShkK!0X>X81&{ z4iAQoEG{_-46ox6l~%#ni%;>O%j-8@;+H|BG$DR(gYlNwj&%WLFnnw`qp8Q|F&>Iv zn0qx(^Ol=u@g*WHlECwJqUOzO%|ed*vEFSH-%gZlzx=*xw~vC~qkpx;;t{^Gb7<_F1K3u69UjjcAZ#1fL*om~0CfF`N(F(v zb$^6EW4Gc6Aza;XFFV^_hA{M$WWPE5g7z*$)+TurZs!(ESS=Y~AVK#ru6nN7blg5H zmtAWojw7XDWVJ)RDOcqfJ#l;*wH~XU-heB~J7Uz^fTNe5bkC&ZtPwBplSEnUFdp76 zWEC4bV3e&N*lSJ#8soPtN4A*hA>OT{E2MCd(^Tdbi>C$a-21Sv=oig*2q$Qt#XEA> z_fqX(x!9H2M2Y$<;tw#0EPf$?nmBG7&(SK+o>6F(q@Vj0@xu*DRnV_e5}>Ri2Ua<7 z@d`qoh!R6g{q5kt@h?@VUoBc!^A4XeO`kPTj|8ur=(T>c9F(ct>BMm8)NtZ^VtVh) zH7SW2_2%!Fher`;nf0=qa^^PR5oq;4BoddlxWf`KA36&DE|58+594!o0EV3Khy(3m z4~SRbIqvd zFz|6*1c^$$;oE2&)Ce7jROwf;X?|i$Q7So*Amb;7I4(VHr=BK1mDfI3cj~~|&41LL z5G8Gy9l~x1t^)1W-*2cU>s;1P2?GibU~O;MU8Q>h%YfR%(<{-30O$={y1Di>!oqa* z&W?((1=uIeTALu~3l$8oxyq%_#=_X|0s%jJcZ_(s;Eej+cS(R8cQLYW#4f&`m#Y0} z*+Am1iaYSJt%xKAK5rUA=G2jGd3=Abenf_plQ?_=?(=vi5utGMSf+vC_WNJ2*`E28 zaplm>|IR%F&_5jbze|OySO)-ZJ^Z7&8*J%L8`QU{0~X%4$;0&p{#Co`5J4*N`Bd}?X^ZZH9Z#u-v&W&5#2 z%vfyAjGj-w3xvTA++-BS_{==RTo%0drjWz>^cMHUkEkDTfQR-bv1KNYSlANALok&r z@4xhs@ghZPufm_AAplMOfgYX`~lg9{yup=5YKzkuYV00$82N`!k^;4@~2 z9T>j~cShs;C$sh(>BUo=y;E^_3#Gx#M?UZ_ffMbUHeZb4!9Xl(PW_0bd-%4)y!LbE z@#>XrQh@$}$C&quQpSDm>uk0(tifdo!`Ws7vKW5kB4=}o?1@v4bl;c7G$T9@uD&Jk zUau8#l!WvobWjX_daQIf)kJ^4%i^ELLWq7RADtyUHk$EyGdTT7$=2rbU8n+m_+DTD zzJin-*k5+zLD}pkE2#zp1RcTyO5nQh7aR?$`UTvDxx_hqJm5j{WZ0hN=6>RioWPXXh`d+9u z;yJsk0qW^P1GR&{!2xWe-JFh^%EvfqtBw!!c;+HK8K-eVZB37rCMo@* z^nXQ1yD(qW#=;R+}p zKi!%0J%FRYc`g}-zI?4~n^9d!D5;sgE5F_f5r9gu^w8hm3_JCQ(l69DL?O&s4nT@n zuYbppf8Ru0Y(DX3e#0AS1YJ-61>Biwin-U8qlhSs^|hVe=dGc$+k4aQx~iCdH;K8p zD!#4p*kq1^Z0HLkZ(K_IH%fH}cL$Suax#+c{%5oN1Qk0Mrz7lUVB@j=4uZSGU6p}D zm%qY?-?hvOG|piFFJEi8fc3;>c*yu9B&snJ)n_u@Y8Efl`kDPgm~dn=HJiL+1tCA9aa;dp^W~?wh2dyF;nEqi2MJo$q&4uYG{! z5ZbMC&8Ph#3OJ)*8;SwZ>n$oCK9ee6Fgz1r;EFJ;^YELh#9CF2$|7J&SzX7er7rKZ z1f&ZEqE-Gg+VZ6qU~Vt4>(J(VoRY&_G-O-?l1P`p^BdJcAnk|Hv7#>u#~6Ois=Eiw1yv8B%LgdlXcBW7oeI^Oi+Bgr^5Kw0iR_heiS{^+R-Ux{#bbu0rqRKW5; z+eVZkXr=A0vW%nm{}6=lW5twRNK`73y=*6Up~Y<+L$^gvvDp@jL9lrGBXMaOWRjCN ze{A^XsaR60qQG)E5TxICC=P#=2w<*6o|DAuFav|C++= z$*{Np=hopMWBT=*&(r6_2CkTc?cw6K->3Rd2E}72HfJ}Z0CGWdtL^ceOr`PB@W18qjjQy zFcF%tdZW-zLsRx0ZF$9Y%m(lh*<3a?-lsT?IpfVMR0G^sQmA;)FiOxHS?lH6HMPly zkhP$(kM-(ax(e`&mzMLh*=|4fF{LVkTL%L*O5}lRw@=t&2cRPZ& z>GFZ**}^YXkYgSRx^eReT+_SZa4y|N3?LYT6U{+PMZ><=6<_&!f+u*v6Aor7jB`>{ zHv}c-&B1eh%_{g7T-hMZ$(68Cx~O&;3j_I` zUSBHPxXf_Y^lP6ojIZHmJ}gid%zH)D_x`p=lovg-H?fa{j1OZMaD*vubC1l|zbTD? zP#ul)rs}@+06q_aC8~FCoU_RYj!bnTlFx-#>E)?%XD&dC0dEihMucT(R9+9K1 z{r=p30Z)E!7bX?&*yEHT2~Ni=zMECiwj`jAtrs+_Xt-*o0PQ}mU2rBz(C~3|WIr*0 zBf!~0zMW?;F3r}wooa}%Jh0zfkUvgxIVLhB_mOurcp`kHwv%JC~04|L`{lKI1Q&cu?AcJgF9w-TRHfHsJ?^ zp(7D;5YOciU%L8YLH{(onJtDGkk%SNwYq?m;wZ6ho(JKs`9ZMUkw*KSe}OEusQD~L zQN=w$I%0g;f!wN4e~B{MjEd}5n0t8r0v2#V7S8*qCrPu#E%uU>wm^I^99B1EH@Rk= zD@-?~|KbCs)2r&O5RFK?*i$90o9jUYH(q)y^)_rY)U<4AK7Nj*@ldXSUrs=zs??n$RMtnap6?xtVsH#lr6@AO41F1}qzQ)E zlG2ay+%-$Lx>v3z*1LFt`KYUMs+XVU``n;A+%}1eG+Itw_bA+qhul^tX%pAYw$O^$ zoi}uo_e|2^ri8*h2XMNjVJpPntJG@44`ac_>qZBA;df5`+6K{YA;@J{f5$PyD$mn5 zL~&oQCLi=#ue(t7Euc#Zk6O54LDCdfb~%(@_hr>?3XkHh*D8N?^LX_c?SBoE z#`yK+l{rrs)0+LJvwwH3-EIsz^y!wwFKj^A705;=N;Vykmt0jxP^$LspehnDrv`5p zYB$}Vwq(|>psY;bOMgXC+p2`|Er2N~^9Ca(=izhf0xt@QVxl|9$6^>t>W``&`9Pn7 z9W|v!?4+&lDfkIMzKJIkUfhB)hl@c_=Lo3h8=^E89t>!Z5I{nhN2>*H6!5tVKd2cJ z06efZj!(Z__?;EK7>YC|y@PlEl%O4~uu>lqApcxPmzPTUTp0PV*Xb|`z!*wnXSJ+2_-VLZBGK>$hO zK7(Cw4Cnn|RV=z!p6yshd32YqSeG&tb-5ty?(`<$Qq_%V51;A4h(82`-|Q)chI8^T zWc_kf>rG?KsH`l|fM%3jbCzh?!NqJaGo-LZc(2m2Nz)COX&N-nK6Q#TGQhb5mKOKzO&M|#{q?8YWB~5lXAqr&*BQI=-pute z*eD=mLqVYze@TvzD%zj`0{W)c;Y3fkLrB0uqU!8PqY^A;Fo3*BnbmWHs~vps`+=2I zSW8YCLk-k^KwcR+2IxNf?S5~(4{xhONmX1(>v=%04{~3LRx)*w05!Ex+t`fk@SW~s zm^u!S5doIddxcSB`cj0bMD$3diOenxm-mVXavX4mTzMy2xiBdh|dUnr;9o~wY#1oz_g;Buv< zkU-Ku&N%wXT@Mj-c)f_#|BqbgZ`s z#d>oBpI(mEA%t+Z*L>#gaz08=aow9{y2*Dlh>t4*R&yH7d*X$87*F-=t$5RoxougW ze{rZ+2)2Wudt^I58P3&8*S$jL7Ff=c$i8U%sYL>*7?&oA)c|{h9=A&14?Gi=Pw=Mz z%2%fj1lUKkSYS;`BGrgQX#w}t^uZ|Ca#)k$EYoN*0ybko)a!$&|2?<`nkHfNI*FTf zW;aw1f)mRaEB82DQI{@KHm4{y!1{}`6JF3$?8HEU6@4%lUAu2xu<8uBhPTAKw&T2j z?wX0osax{+VF`q)tz_RnntJaJB8^R??^Dvj%e>f}$@+_+HP&)?NT=%9##`4*RZ%89 zZWC`fe6p8(cE%Boc*+#wtNjNFNQ-;PEa`)1U^0ByZ0eIgYqUUDy@Q5~F+@n=(5aEx zB`;1=+!Gqc5nFXxbKBv3h$l3Ht76P$)|eU~wVH0B9W_Ad<(iCi?`VEN9U6rr;A_Vx z-gHJ`UL`G-?IaBq?iHR3-`no}D?Cyk0dFTlfNZ1Y4apfIZd{flve=1MqpC<3yC zRS^!2ed$9fsyjnnc4%;6}u%K@see{ zw(209$g+k-Sm@M{hSiA~GY=uVpAWdAU8N3Q?>`pJ?*O7E(VnOkwBNNM9!&o^GGq&*?!Cbh%8&@;A+fj zoR|v2dk69&n=q)+9DaFfTdmkJl>5Vj!T>*ION6=FkLGEq`27Y!{58qOe1I>Y9A2JG zCwce)-u8UP8y40TM8&qSODh zHZU+AJ{4Y}RjATD`$U`_VhE_lgR_YA!e8RReLo_;dO)}?3buAW`m5Ct9b$IKV$Y4m zwY1)(4w!JL0mhNqD9!f^Q8noxNV70Rd29bJ3=-svHU9Fwb;`0132-Hb^3$RUaNKb_ zM1@F1_xMpodGrET&3^4;gJ(1L$DY&K8vTw_nNW_!f=}XJSg^Polr_ZR(CWxX7QV9m zx*f$Tuw=Ox^hd!<2e{F%4d}zWp{=@{i&V9th>JQ8SXt(P6l#^T07@>OpKeI|o&OMc ziF>cVv;sKaaYbfytGDRZ^dlrsvzflB!_rTV1u`U%9 zr>VHSEBRFISqYOMpp47(WLX+Kf0HH+0Z@YJL8A-saI zzZ3Z~#Zl8WSQqFggZL@2@|gO+AeSQ%-7C6-#2r*+Z$uy;5Ubgy9sPd%y=CnA6YpO< zD~U)*YWlMorshK~;^C;_Ufq@r;_*%~wCqWk9tP-3S}`tc(?%uu`UbJa3xBjX&ANq^u0{4!|?I_J~>)uNK`*OCeW$AJ7O(1yiHAUGqm# z3)Ft`bbM_(4iBBM`*`acudVXa<;HJotqscntKALtX5v2Bc<$=wM|`gc!J>7%jk<~J z;U49KXYGi&ge{MEX#lH06HX|#@5NjM15npKJZSVF2NyE(9tt_=HjmEBo5G%omOTrA zIszyhn+&~ptPCK!Rx#>YYWkuBP-g7_s+vL=i&npVdwJ@D00`AG>J$WAbEc<=RowmC zY)-Wsi}C?R@fLEBYPgv?C%RQrN59=60vMO?DZ%MPJIGurdz`XmG3^OimeIIp#|!1% zG0KAQu!YL!ZCPe^LbiYF2a`0@{%yyipq;PhvgxaL)2*+PJK*p>?*AG2=t{72xF4el zG_-1PV4`Q`aL@5MotyV%{h#(2BJ?lb@UEPWI~bCy@!R+l7EhXmO#{NNiTQTH{qUQ$ zfrtz1XW{Af31RjunfUc`$6s2y@g&$)gWQ5E9NN-a38bjZfLjBf@{B^Ye2FrM16_Jc z7s;wF7pdVsel!#EdE!6sQT7{fZ&rI?NP|CG*m_~f&TFlZ+K=PZS&i_l{J{&TT-g(! z;P?8xuvq#q%$EDoc`qDX$-$B6UV6+y*yLC}USWxTEzJ#W_))W*Rt=c5Y(TXi=L%>V z1?s=kP4KAla?x#Z6H>ulnnu6$*9L>gyLj?UH=)0@O!A;3;9@ac@kK!{DV4M z5IzkGMobH`FfN5#8txR^gy5m+Lh%df<5m&hbS;9|$Xn%MD499o4{yA3y_Loiy2+gXu$7oqp52XPP#M>ohD^ZE{VS!#|f zfA7qz^iUie{wo6Bu4Oc)-7CFiPm|`ygI#r8%$4HX_@S%dW>(j^gnY;&(0Ek{GN~WS zM9}#-3^P!{I^y#u6>RbrrjS4c2NWL9W$@H2o$V({C=&uRc3$J9S&2OTLqPh2MPsLA zsGAAu*G<_8m9Ykvvn*H)$VAxjNlO9c)R9%J&DdvXM5KOQJZ605AIJPbruMus2dEi} zgjzc_rlAw!GhTFoy(|n7?t)U~?ze!a{Ds8197VnDAXyQPlF5$iz#iZxL955Dx~L0N z-1jg{Uq8pO*S2GtcwLf5fpd{!&c1(U7~9w|9b=x|eL7$a@so9Bq=1v3yO>4Gu7ux*sT4 z)GkiEX_i570m1f>;g^0Xa4%2rF~;w-`oE71r%xjupw8Md;ELFY1c|6|H1P%BFcP-k zypw9ENvQu(EckbZnht(rN8H-?zlYue^4!)yY2l~YlGRTe=8^cRg8{^H_#1_A*m7M1 zi?z>rVMeHiZ;S5fekv8*Pf}D^LM%9!rxy3jQbebo*cEhW;-RQutX~R18{B+^h!_T&6eIMvc(1ooewnQt zN6L3%8)qB1y~Jo7kMGMqDuT#xeLJ#4Ehx}xTBdufLc=w`W(1vlraAlq0_r80bAgNQxZ!dtT-n~W{Lz>zKB5Ok z3V0@fij`3lr{!rq*r?5ZmICo>&d3@E)3v_gJD{?r^u(&AGr4;i355*jt>)e*0IzT@ z5>T^zEBZcIrYKhgks-_Nfa8q6F!=Rp;0K+q_jDHLh`J8^+#LW49 zwluf3&Z;AZAJu6XbMjFPX1`<{7`W!P4Gj0l z-JTyb^eW%I57nJ9cvtQ$>VZ%`5e|g2P3TXsv=)#>litQ(dP5|(zdo0bF(~!q#8|!U zTgZ0QQ`$T+(M{)KFCUPlY~H%Dz@PPCP#806WjZ8;SrWLQHpNS6djc2rAJU zX|wlj1q0T(4AQVF$e}Zn&U-lyIANf2+3TnpCi?oJ^dp@; zy~U{H@}-_rdT^%z^Mb2yj~s!n@Z*ru>RoETVeRk6p&Ib@j_JTFJ?{~yRvytF&?b9x zvP{|Rn6tk|q37aT(L6Lzk}ms9ti18RHrT71XL%i2DizIW6a~cfwUZkCY?Z1iPRl8w zCp`vR1I{e+w_->Gw$oa&{k*aj{IE=*ccTyU=rk%uo{N|ZAYU61;dyu)?q{sWQO|2; z=375$A5h2Qh5juWgpf|T`@nXnuo|~%!87oY6eoBtV${&RaY4pg7@w=2WvqLL?)^svP;(F(~AY>%)T)^Hjgnp zNvh|*d1mVRE4y_mh(<8Ik+H=Il1eRf(p@|yvKki7lgvHlMDH9wUgjGEVF1G+BGP)( z<&HSxw&Sk)cG6e==npQP3RjCfW8t_uglxAK_XC1s^h!QlQ_Qu75q>9wwzEY|PlREa zc-VJVH$0acFc~lqqH&8Q?I9LD<)ntcRuG9`_w=w4KVO9WNzr>OWXfrk0t2_xZSkwH z1(B<=UD5?2A;}5@nlsD^`kT)78;*7|ow$?OZXK1%}6Lo8!B(M=Mx1j`Qh9RZbw`5ZmL1s=3|MkFi*64^>6+sa^pqc2jT0W z%+dTprH39s(~_PPT;15v%4R_05rVpu!QSV+HOy8YEMPOzPKHhHlydrgr&=EeYWfkf zzCDorb)QFGc=k9K!0ghE=e$2R`^GF=WNjtC9fS6;i*Z-{r==pBYfh6kmsuvpA7R(u z!VlQn_=(MY>;ao=L45w(By9Kh#(RuLE_cfJ!s9En)J80<%uw3yDH46+SuW}Dtvi3+ z`LBETm*DD#v^f`?m}|Sf>kgC|NCbvJ>KyK8sp#rL@-AQluN`RD0{k$aOn-16Nn4xF z+&=JhNfvsb;$_6K%!gfg>O=dvpOIo@uj%DeJ7D`)AaXBrSdE71+evade!Uvv?sAEo zzQw3nsvTmy?64b}%)+L;t76qtq9NEwLaWpoV+ytrYhB?%u9jf#Xsw&>xz`jW0m5@dDlaezJcY zi55B}cKwY1j~PH3dY6WSQ{>_m>^gYHTHM6?h78Goy3&86-}GAJpsYT6Rj}!4e%S~` zz6){UTl{;yfegcJenh$ps)0%HVt3d zXpB-jH~<}9MA`fmm^~KirJJDhCBu4P&iZS(_dsRb@81hWyr85e7brJxMN*Dnr7HvH z=hGpU5ze=mT-*}>V($(=RVbphE`XVJ-ak&0DiN(#V-=uMuv$r5Ik}Q>ySwfyhIB)g>V2Q&)As`E6Cw1VsLEJ@2MIu2jZl0 z?I9L19a5HvY2SORkw-!+>2Pr}*PZU4~xQ^>&VY zhXG)UjziyYgvXYr>sHTS8lp`9OPq81zgeFCD`4}~Z0krllyr>rpC1W14&S=h3=Lp} zggAzrCqwI7&|Bf#0KaPM!A`C)od`}MN0lg6Ib$oFbtnYwH-0*YVUL6h5t+Xua zGU*;W&i|SdLz&$Q4nA6)X8}9}0glpIt$BuA+;^PkHpYN^)^!hemu`)^tOpHHNs0Z+ z^CPuET)Vt+TS)}*^=38F4YU+8Gf$UJWvJz$cY56lqZ<`BP`ftfH{G0gamn0hfBl{R z5sp!IAa*nmd*am!429bXqpy-`Qarb=gu-*Lq5+nR!mWVb0h2tS14RUMnJnEp@^v~U z$9U0~y*k%N?+r>3po6R<^U#ykr+j9&^SYK8E zr{@L}g|o(b05X&?aBCZK461@Z@aYYAEd0fw;fm2;=rgSKIt^OEE=4rGA#^8(iDv?t zSs)9EJD*D`%5}Y&xfZ?4Skj-ADHsx}!t5W#N-GDZl|pccALw@+Z@vg2c=R&_J?Jz| z958Ue!OP)avr^!t+uDJcyTPmN9t9rLE!uTL%#(z5Rur;q3uubN-v$aJFwAdm?27AV zHSvSeWiK|D_U{t{F7~eI{ED`h1LFfm=zUMRgY=S@9U1tn^@w`0UZku0>0`)KoFJQ{ zfi2yNbIOXB8^Ek7=NV~Sj;lINFjaySx?<;u59VQ$i>gZLveizjKe_qDNxCS_G+&Hd zFU92hFgrn_dlv0<18Bk3j!P}@grRG7Li0JTkQ?N8JlV7utfobR!WNyU3C8f_A;GI( zt=Tvm2}lROC9Xbd*~MP6u6CKuRN9L1=>+RPG>@l1V?C?qrva3& zd-_a+cgj1r%`!TbP_zGN$bBGv^vIj-{TNn^dC-_HtSq<> z6UzOlcR7lGE|_>|Hxh#P71wLuN5Yuw!g^`$YV(7+t%ucm>0_~fJ^(gE7dA~BbjYww zUdb%$88gbY2&Rcs2IR8+KEw8V&n7rm4hsgnU9at*efJLvFFfI|Lzd*gFLod2(rYEC z!2L2`+4fd$Drg}v&3hN-07!>TBR6f$7L>&Ii^>{{ds5_Uc_!Y)4l<6x+I>gEb~H>n z%NxVuaesB6HQ#2Kq=>BSzN*Kt`RCzeD6opJf}&u(q4R+j(g1;G3j?ojW&{ z9ecNrlRlC1zP2$!u6!tVKCV|kmW%#d98ij+eSX`Zzk0mGs%^Lqh6)F6reUhZl5d|6 zFj50E_n)q<{O&gM;<8#)2BAK0Uh>9GbeZv>7ya_zp6&cMdw zNL-3GU>Z63KB|YSZn6O5BX{7)Pkp#S8-(*Od7POzxItJ#E#(0Gh#gpgYA>|g6mBx9 zyHh`%dT8?*zMp!$J5_|3^D*$+KlIB^Jw{R=Z`0EL>{Isn!Nf`Z>#|C?-W6uz86_L z+$f%Z9}zw8oBxL!F2!<^Ooo;g>!heOnKbVmCXBodCOgRV9rO>w;ACjAq@D##$4@V4 z1O!0P1VfR3*B(bclXC%JDQ-oHMxLX;E_gNe4_(|sLUJHKO)-*X*?42Wo&U+Hd@p?N zGo6n&yqZBYMjBAGKE5GD;A?(T;HgF<^<~543V9XchZpd z168+PLz}h)Sk(K0K}!LBeG{OpxUWmmr7#j-_Y}WH$MQXSGv306p`?Gssj)7+=4Y8` zU*|t&px>kxNQ~I~w^KrzX4Q;V`)Wim zV5qxF@IDZ-85GEh57y8UNk%3|jJe1~76rtg4@rj*7}oezL3!K3O}cgu?3nwGe)tbt z<)kBND$h3<`O=Ab_4hE~a!&VIg%Cui#J<2N^C&o#C96`p;S>X0a<}H^RW&3s}k#dMVNqgh&lx3aP%^w4E7&=PI%$; z6jY z`6~w832`0B+lf?*z}_NyOS3a*+SS~$vyS~T|nA9Gf?*R#DC%2IIY`nOI^XuYezg}wMPnajukPg0oaIS3W zDQSj^Bv!BM$3ghAG7?+h@#>EQMy1E=lWy}#(h%@`s&kwOQTM8!lipugV*`BKbJE>K z!SEq?YBhjgx6i{6i`A8cr^2NlG8KCn7cJ%*?7q(n!00=9facdXMKp-STR5$G)dk8x zSn!w%;Su|Di@+-#O#B*--11r?hm-4X=9Z(apUjT6K0LbP1PPw8Sg#KF;Cn_73ft-N zWZe6Ax3tVoNA+9{2+TNkBy-stW;4y-AAZ52WS5 zJtEkgdr#!#`Z?t>dDbx!)_t(deYbF$r1J)&_}sWIL}Ct2{I zgWnx?&2=Q+GSb0~3B_NywN?3*9_KxD)R~Mb`0ry*^|JgynxyclA)lwp!)9)s`b*%@ zmVYJk`E)lDbETE87zihbeTI%2rfAkGFQC{T0%*FP^NRLxeyK80Jc!<5!Ssf zW7bHmviI6;sd*e=@C9=-f6GB*Lh-jBE&YIWt6xWCtHr0uH?02s7YAx&N@QWWPL(f@ z!CEQ%0F{Uwj2E?gS9V!fKwnIJB8rk4OhMQAV{yM9iAFfza^WCJ`ji(q|7`-*thPfw z*l2tACW2i!s*v!nER?elnK8y9Y|($Z?~R7`sOmu&!maP!n5rQl!|L35R@L$mK-qr* zwB7O29(Z*QT{$rK%CnX&*%MULbrl1O)7QJf>Q6OLaC<3H+X@iM4>PK?E=S~ZRs7r^ zYk>jf&$mcS&4ypf*ap6cqc1P<&crBTaOlPPeOV1+b{3e`o2??9=G4cn340pAtWa5N z?O4jg3^lmE$D`j2?n_8IF?K*Z$MO2!?HdG5$kK5(j2jcx|462L7FZ2JvIAw+m)NMn zg9TJwQc`?;JrzMeT;v50p2*OtozRH)OAwH*PPR4J0pU{M?+kjsyY@NQmWEdf!Em9S zQa32^z^8nP0lcvMCIrh2&YF#eSFS}bgt{)J+V*2x*+gi#Yz#2;cK9b9m z_pvTms!EI|Ldo>H#=e`JHjsy38}c%${3TV|gP#<*U9@ryIg3g2PB4LXhY|F6}yms3MV z9Ph)v6Y(>=w-NCOe5bmuUF9xzho4M!wZ1^T_e$n$*TUGA`v!ROpghG0H|{@Ecgf0T za_scjkm3)v`0#ZMI@qHTW)Y69i~$B*vEM%iSnD8ncW;uARkPHyV!kA`Y-7Bkv8&wc zYBWHYhxtDkl89D@4vC{1hF<(1KQ7ILakpG$->U^(7pVvv8fZ1p|TVZ za!!2?`uZ7j@;>{Q)O`??x7Muhj;ZLbsp~*!xpPv@r5ny|Tr5mv5^1*2wlN-Kslxfl z3>xWrLe2oxctD+^<#7?NXYv;#j^hamf2dp{Dix~3Bn0k}{V@CF{fKEQCzK~1_?IYe z9OeKhKL;qOg>$#9H?BPp0L-a{{r}jiV1aSPkc4<%SkddMl^?+U5*YKo@wmJd4xgZ= z$1yYFcFvs%xKGXP=a1P2{8l-BR$mon>xx3P$^=4TcS%zoC5 z@&j&Z+c2)U%|6;1jSWIeLd*o1JZj!I)Ee0#J3et+?lb&opZC=~i}AF# zYfdHaei?Nhg)QmSS3s6TYOdG>tZ|2G(D%Nl2lomD@qxL4T0DqXtnF7A8{dml_6t~< z7E}rohOTQzE|pD=1{le65qv%uQ4yb|egvE!3q&?!JNMjx*@b59q|@$%$5xNqHnnL> z{#Q1b{PxJeWp}$LrJwu^5b(Cs{NHfgzkc8V4*Gs{l*K_x=y;3qd{anr->kiyMil`p z8=<$^gU`Nos)3@6${oBS^!Zms;VWX$mHEx|nwnmjL@h_)FLkp5PViL@`7x2h7yZS8 z;4VM(lEY$$AJ-;OrK94w{3GULfR{HVs#$}0KjmdY#H`(Odh~jO*9~P%jih-usY2-x z_qlye@+v1ew~9lgyh(FghwL+tQ(tXAawr#vCcp#AXZ zQ;csuyA7LwsaZ1ns_+$xs#>gX+?(8I89VjAM-H)qy%1X-Z1zTjJr@FdE_y+I-LMK* z&Q=VI3&!ErCXeM7g&q( z6d2IE2q>;gFmOj6!{_YaMB+mzI_7747yz7cMOUq;Y+x~}DkHnDdvPLE))GTs-RVUR zyL2Y_DM?3<`17ICVH{4X97 z;={#Zx|Q-;CM~96OoF zh04|>P-!jRcM0qjzFZLP_}eDK}3+&M1SMIbxsRZiNv1Czy`s1 zShKIx(=hbeDw(zE1!c3=pCY1%Nc?KR^_JAnmV9aImIS0p$@$-KQ70!>Ie}H}OK7jW zeE=`8@IVJofxc4l{+VgwLO^qsTn*Kf6T|u;4(RQl&<_@XvuLGu0Ry%(R-Aa)#IFd? zs1~)M4-)Q-N&;7$wfBp?a`+n(6(?Lm4$33+oz8okc9@DCo|K3P7cAD8PC9!t6UU>j z-O5k#xfLz9h@|budTiVS390fPx$>HSqJd5Id7)220{SGlvW7f+yzcS=fw%`}`X^z( z9Dj8cMpy6xQrd3^$-))rVuiov9pFi$7s}A>lpAm@NL%~xLW+dc$6$b%9ySO=-Vv5; ziXqd(SHiIa&vV=I}Qwlae;BR zI-sf}*Rk}Ay6kVl%I$I=l=J8mskQk+R}64jQGlM(n!Mz1_83$Y-5f_`u&dm*aE5g3 z_3K!)eK`0MP~`x_ou*kJp;fwoT3K04oskBAF}q)=1Hm*~NQSAB1o@sFJzu1H?Z0Gy z64VUJbzn~Lm3pSddFnMlB=v&A!7g|>-{6Oup(NPTizZG8sw2=3}*P$%hYMz+NpLN8sXl<1Iyg<0OHy z_l=tm>LtK+X8V6%9wHhG?GFiW?2YMV^{^W7Gr^5Xvc@r zf0l5i{%f(#DhD<-!rx<5vrS)E^xd0KBnG8WQms>x%7vnO{)r1suuu$C2*XN|;y0|d@RtJpRTdt8eQ6e>%C4l*N?(;0y)JqEy0YYDSwU@S zaRu#F{_En`WkvZVuS;u-iwld&YF^W;tLP=g)%5C;mqn$t;#c%S_>Ejzaq+Xfm!+k7 z6(vQvIhk3xIk`nIinFty=j9dTJ)>r)XTQqGOiNEpNy$h`d6blvnDrz%D10C&r z4tns#0z?2_lvjQ$Zq}aV(cMj;P8qKh-xtsikMBJ{=o`Z$SGV}{<{-p=%HJuP1*WeQ zQ7x{DaoGmxFU6FwSTp`nFr;Sej>_^-b-XoZ4AbgrHg)^bZ6R{F0Arf|>Fj`S9-UuP z1qoX+>nABIW6E2TTn;DiJ*WvieUu{?*tzWKI5GNV{CM0pAo8yr%CHE!FxrpFdItdx zGPxIyV4RR_tGk4Q?-{Ar1lFhFHF0YXPQQkOIOtXlXL}2UEd1UCQ2b(B0yWX?{SzO} zDu1b=j}B#GfLU*6)s?Fr@r(x$3>@|Kr>p$2(Cxlsb(*F&TL*D|M!_RpAZ);sJcL>*K>5D+Mt+1`)$Fn%CjGZrxj;U_m`RA}A^nQbMx9o>tldubSA=M+V^kz;I z1B4;9yK?j6OOTtYh}DAW^<8n5Yvr=++g+#UoGxj>{NqkIp0;n46L2^3bYHj-vT+i+TJ1Kkr$Z_I;z&Bve{eByE#Wgt8W;hAh#l zeV_M8g|u-cB4dqd?t*VnkZ-=3M8uBL|jHU7W0UtEsX_ zd*6D*PTgo%VV4VG;o@4*s|xyODPQVJeJYHWU0U-4J0z1CXW2-VRT}dGY_N2 zkr3hWQAxvk8bBp!LZJt4lOGFJZ_1ETrY|Q%os>G*&85P@FnCvDl`H;#W`_ai=dFb7 zQ%&>4)Y~#mvB6$>L~Xj3Vh53|-H(LKa9*e$9o!*G$`}%h@A9cz7zhl#QG)h!{q!~S z)2Sb;7VbS(9w{GaM_7mqr#(C1P>&EuQDZqH;`OA$kzV$Yp6R%rmatnxd57;k;FJvf z;YlC8VTs0<;N$5eYgaRi`g7e^P-rMW{;}fArhVRt=7C6+M&kFo2_P!yrTs@$b-Nxq z&?PDw#t&Pa<1_6Lg>j;ZFpA3O+MJaVt!vFZ2Kq(kPRiuB0u%z|0LwADZvFHdc^dnr z64U+gUi))E%c5lTcaTq*k=uSnuk2?an}TU|PM0gGplj~*DMS}trle64UO!h3L~R}) zEiAq6+mWiLLe(nsq9N;|)ZDQgi`|EC@5uf2-6TcpesxpjYw{J^uPRiS16t>34!4)B zTthtxLYvEXb#tvGs$2g#(6j$_0^k2QebGjsSBCMb4pg}L>r#Bx?F1Z~;N@yr&RsmX zCtUzT@)gnMs4A~|mm%Nm`D)g*KDJ$$kxk_Uz~W}^qd8Y-v}mgGGW44J%7%)p6Uu)n zEjC?fCoGJM>ot)2XjeY9{K~zYWS*#5kad4Ip(I)}e#kq;txU==z5@7hi4K{*79%QL2z z>O!4TO)?kNmPenJ7%^a%X^Arkbpz-6!_a$Se8RSU##%OHOc;q+XAuj(I7G=W)L6L0 z1%krFm>7|E+k$s1zNGV41G|MfTq0bWh5Cm(p%QW^3)9rt>4_PSziHj9JhKy&!Fsk7 zJ&B{25Et+@3gdx{ofUMDyQ`Z`15%@u*qS`AcjsTtG72_hY2_cvKN4uvs)(iQwW4&B zNz=bSyuN6ssc%16-HHI} zi>P0#lypwp8{QH&4RJ2N)pd~pj5o}E6M4thx`w^2OPIY>inZyKnFnn~1t+U|$NHdk z;#O+PHGMakq_+^2+*Nwa1j7eM^ga`_(fsE(_|QD%0>Xb>mwDz{vSdb!{fNI-eH80H zxDrpiPbK%G?!)H?DIjGEHN_rnGI@i?_6-^|+W)y&Vcf(%H!1Jd(5d6s_-^I-e_Mvc zzkV2k#x+X)qkz!-55%sMbMPilfrhLw`-O^X`}|=Tj@3rGlzS8pXh-~5o3sSfG`D(C3=XjJ-cburP$@?)`{v< z_|PuHYh=U~9R|?Hi_X*J4>GGwVF;i1+ZYmH^!el|f-`)8{X%yaoz3L&6i0NCAH8r< zLgHl{-YT|&OGJ^2m|opBR8U_?@LlpJqtlEAvZ6*J5sL5Z3;OMk{&{9Y#4mqR7OFfv zd5e4<%@GZ)SDo&-z{_^W=n+m`$J@Cbs@m7q5$YpRvT>K=D)mil%}_}feHLLk`>fm^ zU15o+16F|P-(hoa!?CRT{+%~A4J}^C23^Ag%K#5;fft9EM{!#|zW((5x*Ny{9`HM1 z`xF+9%un!x%w?@OvI_3ljmAdzLG6idR+b!P{9Zru>>%Pyp;X2ymRwYB!9L*2>@kv! zvNLR=#psO42HRw%&B{71^JOfb`ST8fsAw`A|1*0lg?dY_{+cw<-Hmko zJ|U+A1Tbx2Fq?eK9i3ov-en+v_d>$YL+?!GG0XL1vn~wEdGxigC{3 zCR+51a%AiLTOl?50>lm)<*q0EbUI)eqA@B_8{+^UEl}aH#Y^YuZEpK5YNi5F%UqW< ze&h>5sjPZ{!!uiFDMV*)3JlLa zf?7^UAm1%DaxYy{1yW068V~FX@;GY?wXvN69yRh6^mmd@pH_#PbrViB~79$I8Fwa}FJwx%;s==Nu zN8f9%R#VF&){g|C{00+1!h~Zi8&T$ioY9suTeH})OY@09{b*#h0;}euy!E>8TlSnU zgGV<|Vn;?T0cQTb4>53X9O!vw*5@@=3~B1;!SDA5hGE^fVIgr*scR}=%{pX^ShqpF zw!v)22O?sPPC1nan3SoZ<5rz+!Bn)V;p&2Zf3x0;oaHsj2V%RN`YJ~GVJbgwhDe2l zyu$wX*2HSJ4+B)Wmm(x|DEw~AnrzfJx->@$PqZjXBDMl1 z8Xm?5Y1MTn4my5oJEZ>oEvWy#d7lpn2PcKnqAWzKQQ+j|U8N0_{4f^RYYGsBXXZ_y zM*0h}Rba##jw1@hpw{2MIF}tyRC$g9tHOy&AQ019Shq6SpV@d!6?~2d*VQy7eka zB!t-J0if=hQ;9?%X+E1t2ihURZD5SO8sVRt&uqImeaCw-3DiSyPD`d{#r>!1E^{Y3SRygkW`xe-iq%e*as#%<{(jQJ-T#>0BJ%Z+doONU4)d3t9y zHQ+-&)uN5apsk}^lxBDzKV~_L>968PQW?$b-)|@PQt-WkS z9j=3~4p&}*|Cz)31n}008%d@sIla(HM&ga1Hr)+}77P2{67U^@zXzs-Y%Y-Kv|t7H z1sEyVj?I0a4f}8taRyf+ds!)bP@q1u@Q)wF_TQ87A2dtbUR7{U_PI}%>@(Fxd13gX}@DXrEN}EGWm>c#+gFWyYe%nYTENgzSZVStUy?Y zZ}p>Ehod{^vFjThb)+h9jQiIs(2|SqUpS$j-{Fg`_p2 zWZyjpKhFw5Q^tyFw=IgGGj?l>Z}Li%Q@MN{`6h)U)~|l_uDqsy+L_pK;x;`UcUU*f1!bAt4&2@Smk&oci)jp4q=_W<=N>hh;qhyJ% z@2B~4^BAg{b!@Pp5tjqN^T9U>0K=U2vA=r8+;2~^kQnqc83En*Z^_E*3yh~kZh7?& zF9p@pOqAJx@5d9v4ON3gn_Q9061QF5Z=)Y1zq@$sa9lo|4!C_GB?A!0G`Ze&GIzR& zC8~uPl(R9%2G+x}`I|jnZk^@uA-W*qJ}Nf^+DC*e9AF`wp`pHZHGVgH9jSj(X*jJm z(LB=u1|XU7WZ$0DNg`V@JAhE{>T)}&1+V{p=zcfSQM^=c9{YMg8~IH;LCL#}SA*16 zvue&{>sodwlpG~65cBjOy1G#nsXIPK6!R508p{@V*tNn%U=a|#Wsi+#`G-oKiq4cS>CW1m0;?ojq#Y~Y#@n(fNX!aC>TjqXqOX{)0+PMw8ViO{@s z_2g#Wi39y>QN0jDp;Eya*>DqNWWA_zN|+ht=!%}@5A~s?S#vNM7f!~rPVZV00jEQ1 zSGTX~-cfy5i5p=p?4xtQB5a$wY5{@4G9Pt#Q8^Jxt)U^UbBmsgXzoRa>WLFIK@cuF z>Op98Cqj9)lT`X9#Gap?9tw;IHg6sHNJLfZ1ldmg<7PKWNLbgRwI&lduJeCbYLuC3 zBo{4V_MA{Eie{cWQMxBHTvaSPuzS{c+0=2#qTqTyl%4qG`JFOC^?5gZVP*1H`n(Sg zR3+L5Vk-OJ{?{vX7p%4bMp1P?Xmf)&yMCSL7f-^?&u|CD%BCTipX1o01WnGYxG$t1 zwK+K@4}x>tRkhD8~xe!H_;eRW~&wYNbwYV}+Hc4U#IKjmRG6;7A$6bd}b@u6aGL=n8>m*!E^azRH|%`U{>&xlQwnwm#X?~BB_ zaNn0>d}wZpGrj6!_|2H7&uBscTJ?Mm6I(b}q@4-0!|k64%KI+M(9F(SgPv%%@)nKXWu)IWCwDb*Pb6RCpJFW8eY59(E_b|``elo3d^5KbLqptL zcS)GrxCjt^Bn(-Xe+KOG)@)-R;r>P4iWQN3mFub~c|Eq&n{npa!5^j3M>o043#%8m zv5^4+<1m^Hs9z~MTH|DZ;E|@sKrES;8EPNP=5@Nx)h`SkY~vH?FD4=tCw!R^_FapI zArnprXI6Kf-?W@s{m-)i{8{+O)y)%8FY!&44nya*i^g2eu}eb0Nsu|KBLmIw>z8&p zt}+!AxXE{kU5i$X8>_4-cqXy;zZM>3rJs){oU-k*eCYTWc%fV(#J=66>`HK7Y~ekF z=1l;?jf_pKhG2(F95KLauYZMv$4Quh8>79%Ao~j{n_l ziVvMDxJ{|mmK9ibR%~7RwNHS7t9@;F5Cp#uJWieB}813a};CrXMZI{fgw$`4m;&X?!8;{b)Z#1h_&Dg`)6*!*ilc~ zJJKN5-#&PFCbYjPfoyok_gAdUe8p4O6+Jcl|L`xP$UBg%7AE;@48uc2lZpC-_BgGC zDY7V#8)1-oWOU1(t;ZUZ*VV7vxbm-=lljz|sl|!pv$@6I(#7npu>&dg~?%RQ<(?)%Q4n?zbKpA#~ITYpkae^X$gNq@MrT=^OIBVIvWRzZbbpy>`^1if>7rL3u2GSZg)E4; zkvQq$wBsGty#UBLQRiImW4%*$KYg@8d%VJW;}-DFfhVbO+8{rA{El?BidX%i8XiulF(~?WV=Ekp^?z9rtrhWV8{6;Ge z`F211zvJKNNp8sq*%bC##JnYMZ6=ha@xDARq@sE!Wf5!L_bYE#5%gGjOw0E*!t%)2 z#r86%Gr#m?&zmG(Z!#@Inmgg5b!HaMR79_0GLKRaUiO=W)1nw(XyvhdB>k74Gpbmi zu<>atZK{0mOU0Bs5QXu+XZ%^6D^})9A%k!v?dXRY2V=;_m2fRQ8Ea&DxZNf$HV){1 z#F$OJ!Y^)Lf1~lgjymPg$S!75_SveSkdAeaN1!boethEL5}5stoj~ZjD}><;%M#;L z1S;s4WY4wC4-ZZoxsSJH@j}+}<9qPQf*WKPC2CTM8hft#t4}Tx@6XPSDYKI%UGfsH zvQVrfq1et2?Ce)t3&A22jN}Mpgigw#jU6Hj(WfA#!D?b(6l4vrF~|$t2qn zZxU(oI;&r8A}vzYk3btw|E4}WuYa=_;N>L%Yl zjhInH_`HV?g8(VI54qB5yoxQd|M-K$A%ViV+NeJtvHDM|h_!ocG%tTB3t~5S`^#oI zqhJn^rtKIizYI{g+Or=}WA;`U0|#*H-Dx#%73Z6lXJ*e;s^d5xcK;&1;k?C!dU= zeAk5nBNMKdLS4YGqG5A+L|?e6X3zd;wi2QP41ogg(I3WgzOSjIUGE_ZtFe zeQQufAK(S(a)^2joELF8Ff=j}Z$FR6eH3P&N#v8vQGixdOTfjXxyqj=O_5!?O2My0 z!A!xe+!5*hxc@sz4MRO*ygv4^O9u*4M!L<4LN&HxR7RLQ5{z4KS=SjZ=~Sraj`>bs z*F2(B7#FdFBh=#F01Vb$TvLijVPUnEcAK!?rN->0ifgA1zJjn#^pI$SX2OnZM&5_C z2r*y&Zn`oFpDkj*^Ayr^Nb3g36OtW!A!Gein(*~S>EbQ@C4unsWaL@*R2_w#BGRM) z>}3*HsEXH*2tP?>b|s$ej;G-L-{5WfnwERZ-}j8z@9wKjP2d$vpYjHgJvY1-CJd^) zgNDjKotO$h>6HB3S!XdJt>#2KA@5)(U;c8L4Oq?Tlvpk;SkdzILl`a+5QGZ}lE(j0 zCnqks{fr-;%qH4b{_`J>Yp>4q-YI?luLy2P97znnQ?`y$O**1xZ zVNqC49PGLvVhN#ub$U2F@L@tKzoEzQQJE3&Wh_6iuGl=QRkwf-sV%r*Ikzdrs1JMw zjuvS27cxiO=$juisPbV-v2udw^{ruVjNdP0Bs=M0KKhwLojywOTcb)vJ&g)yx9{B3 z(?F=AHVdRL$@%c?4&r}ttzS&LjXy2Mc@>#|(Vw`3wgj>iVB=@*G$QQ(|2p9R5rNIw z+IeFUxwxrJ4iJLqt{s<}BjLF0g16HR@Xmei@3Lu+?(@O9ry-pkpU!6MZEw~>v3|BJ zz=h$pJAJdt-Fx#6DYy=IOdRAxJ`4?X@X#QkBv6Hx<;A%DXhkDIFL6TB5&{jMqC)uI!gRH+FH5SiHboYgcYS^vE|7FGq{T_r?yR-A;i|whj(8Y zBnw;L(@kH9phOn}Dk8?_LBt`^oKDR?#5Oy?OFLLJ^wlD7O1tC5WL|L-j1?AUN$Blq z-sl~?;_l&Uej#Jsev5YL4WOTrqqxfCtGuq`a1xm>Wc&V-hFYn(%_gLArfgFj(P|4{ zkDjFvsbD5@T%s7PvQ(R>?t;75H)!NmOI?t{{)+K)Etl2lp2SAK6WcUHm3-3Qf#_;= zb~HBwDl=LlVDlsKoXd-p=DA;Gq0ociCkp2iILpQI@n#07oErMyigP)S*az$|UZZQS zfO)wH(y*;T!zV3XeY_M*nJabQZz+v_hj$2miyNLIGd=bYT2A}n9-SlnHkjVJW*M^e z!YF^hFO~X=j<$mZqneaDOKCi%@h)cThQN#Hz+Fw+ou0@_!%@+<3Hbj=?lWC3L~Kmu zFnD`)MR?}*jwAeZq<(7z1#zShd(H-7RyP6nd?*qt69N@5Xhq!y%$jJ<>@VZ1bF$&4 zv*53(1Z7)V-M=_b2jb#f%L!heF2<_2h|#Md@p2$TDf{wU;g$ znF?*9no+GHx9!*kA}}CT&B-~pSO2C?ZE1IogkISHvMrMwb7jtp_P+EV!k&v-Y~rrt zXC>F3st7U&U1Y=CfXf8b&4^L6B4W49_^M5dd7bI z0au2jUW7d18PG6!-6+3oIa>1N;baYFJpX7%D#%8a2YVoCzv-W?mO<@~w95oqRKV+m zFn^VrJ;)eT*_2`;Uf2BjxSQigd%mO~l)B@cZ2@!7na{w50`NuG_bn+lF%^a*yIMCg z|DK#FmXk2)gA713T}Mq#Un~g*HhiHH;TEj9t&N0^_RApJY8YxO!Vjvk0u3_lm}}qZ z`1jf69v{?<<{Lmr9@yo@K6&)+DuS6Y5j~G5-f}u8xxs#UuhshfxQ2%2Ix&2B)t=(u2t6lzq&%t|#rBxz%3s~9~ zy^{hVWz~aj6XIJpS$N&p@KrWL|Nn;Tf{T5srAqH+O}#36p%3-7apx$+I6a3&9yz$7 z1pg91@`J}OX8@9I`qMS1s4NW;qKG;&zlrd4|ZD+1C{PFXO?JFIB(rIDXH5(ci4BZC!tP?S9(q;<@S@aE7I zSekMpJfl1y$9>STCBX%^sU$*+|6A zR~b=lvmcHJpi)YPqUS$n3U5t6g8oly zpakOtfdVu<^gk@|*8PC;7kAnt84OQIQ;jO9;bkEFQYSH-sNuFmJSQX_U6+LSCwXW% zYSJoW`eJll@vo>nT#=B`{$8cAJ~RMOqG1>>x_3KWL$u%2935{^$(>m@pM0{UpbLuo`b zIxkl_RO%yFX-#ndWa@WYBGR|m{#BXlt`9ABXD>G6dobac8@_sH|5#&Gn}fcQ3Y$WH zhT51ODEbc#y-^b^>g}#QmwmN``59z@KE9N*a3*q=DN(`3U4}XBnBx^UdD~Qmvo;eT zLmq3?#8hDE_~UL!rIrE4o4{7W(9@5llD$KXd^l;-WWZ8;b@&%z7{9mm<%FdDBWgam0G8^~z8ynzR7Af$eu0l>TO~<{ANqcmUo|PhIs{#bbvOU0bzUp$xUG4& zPb-zk=E;Gd{aeh0caZ&M)Y+Gao~t)9G!?yihJ~J}Z#Q*HJUoSuoRmt=C(-B(ycb4$(a3_ zNL!~6{Y5fJ)5cc*m`(S#?`C-lU+jcN@gv@^c4$5MisK4T9qPH5XwC%43MJK^`UpE) zc6rdP9IAty#yLJze;32+PVOL~`p!%j_$5EBT+Sl<8_ke{+NS>vU#KYT@Fb%MNVt9V zgdA_x%a8x|w|_A;vwp|nED_N9}t;g4xqAOyN8y_q~xfehO3OL%Q1G~^Oe^F zR*(HCMc0c7dRdr&AvuyvllHsEHN^>r%oZti{z%CB2p+d@x+l;4bJ!E?&c82SMdz@Q z-)mu?`Eg>qvJlJ>I@Z-#{N_XUQnkDH2*IhqpFByz*yRMYz<4&KnIm^A9%})kY=heQ zdcnMM8ITV~bCLY(3*KJ7x2L;GV7W9V|2FpBuKgGAE;flYyn z-5n&@UHkbSQwyq%h z`9dmw7h_H=##&bi*L_tmd$7KpN7ytWw8BTG*PN!{bWhYas+4%fMXGvtGMVHoMmHvc z%}x_Yz{Y%7wOuOHTXyNaMYQBe*SWp{1k8^ND73y^nzZ+Gduxixa zoP{{rX)T%CZ~)PMTjMMOKO_Oh5UUUE6lxh(9Nmv4{dt5vFG5Hv7tih^yC^?SjaJ}> zTdrD=&qxxa&1UE#k7xn9-DO+WF5H)G0xyY#=?Cj5-5(WEMG8 zm-}3I8+Ck}%k+`2bbWEbN3~bUw%Q3a9O#-i3`>cilP3xeOjc|K&N`?T1;FcNEi})N zS*G>iYxrN#I|C^I^A7~8`MjlcZjzul{1P|sj44&ZqW+X424iG3W&A~F0>=J1BkX&7 z*j!d^2xivv@m_tbsc@D^8_k5}Q!b~0S~C0|TaMP(MK2p(O&6S!e8=@?D)LPc_2aX& zgY<{M6gqDC4okv@;jWf*R}P!+b3#f2RxXG2_ul9G8gStFz@C8=>1{A`eAt!&tNumq z4z*&t6^r?#KZUrA&|Cj^>iLk$nS(M=;P@8yr$Z@-Xf%`5wd3lqARoAh2D+$atroK1 z;H+5v$qXA(nze#Dg|{FW(|rF{bi65l*l1c~I#6PN-jSwVPz;?oxjC~ho>7<1*d+*h9cl&E|Pf7DOGn2Ilat3%VZ z?X=8=$)kS*#aLVZZ?3cUW8gg)I4SH`urmbZm{Rp!M6A==X*q;#WLWGd0Z zR9Z7p2iXG#s&BrPG}G);$|TW(5~D!ZxYJxlzAlBrj9+j|nY2sQaX>wl!2&j8hSv+O@9SjHrCdye45D-ot;!U}T%+tpcRH)twX zeqNxDQIZ!&x$apoex9;qizR5%m2ZJDEv=^Fc`7|%*# zo#+oF;4iD94`T}(k#mn~QH1+jlWY=x-r*n`+Q#s@P39bo3Q)l3<^JfzCi;#xQ@AIz zmynS0h}gzR-dZ0yzb?XZxsWG#l|u*rR$R7T;OZI`HpwMH`g)Rp0j>iUT=xUlR3($l z-)#$TD>HQ$gdMfL@rx)Ovk1iU`v|_hn%v`)Gd3N4UjDTw;RGBZ$ow${zt<5}RBs&c zNcX8<3NK`#vjf=zplHe%R}@3;+iA}9jj66c-f6wc(99VZn>%x-bnW~QvqNX5 z`|f=K^y`i}1!tw#F$`%+w#<)5L;l>9P+Ny#w8TG>rUNPgn^BTb{-j)$h|dZ`qRUAd zX#;z0V8i+M%E;yGDYK9HQtG`WwrO&)8&+O;^Xq>PMIut3YfAFsi1^0+=9+5%CuJ=% z(WL;-aMT(x1p1H2K9Z@;`J`zH9|gpswh_^n3Aep9a*A$Oyyk~)R>CJ+iENDdlcQwW znr&reQ3Q>7mtQ~1%k5RaF0C)S^XsS(o-ub2f0tONHQt3JYYRNy^b`;cuNChasj9NB zncK;%Ql;NId@tN!;68GvU#xgc5TtG{##d65zWT}ZeMzvd4ZWsad-K!*`74WociR|* zS&Ix09x zy>!iomA3xz0o^O!m4GaJ1NeTk#dMH%DBjmCRIt*OkT8~~Rh|yZK0A7y9+0{WqT1Rr z5E19eBbybvmTYi^I)*%lv=O}09B2Dk2?LS72sbrEz!e#JFNF}{=T&x6XOFgTcxcK< zOY)kW;*s3E5PyAqo%7U9>SJLR#?~)B)AN+nl#i+;8oz!o^9|&-$e~x|RDuAVdNr2K zC#W>N-1+XoO_JwruNul8-=%S+_#z!~^HA-foMEs6;1SOv^dwxG0 z{gvxn!^b}vmCyAh!2lJqQHz4>KfCSkIrKiZU~_F6bcBpG5N*O$XLa&z{ETtmoA%1i zjRd?VEua7RZxQ1yY~}hTN8DsBrqi*X2dnQ>v39xNyXAE4doZPUcfKKo%_;_k-}mpC zQrWxeZ*Oq{a}hyPPhD#%<{$!*k@??(MgE#D*MPDloMgM242x(_1q9~>eb|lcZ;ts^ zT~T)Cn2Y_X%T2)WOb3kGa+*IR+=pg95X$?hL5odUn5>u>#9cy`T*UB&G5)}a%D$M( zy3+P~-WI!^89$^21`9{F)c9##>_#P)*3q>)_a2rJTw)>WE~JS{g{u#plaAej7FzB! zg4DHS=w;0hBL7e}uMDOmR@#^}Vk_fy7!m7C5~FXb5jTY(JqV7e1HOf3* z*Ie&`SW>r$jls4&B|}wOML~CL@*Kl0r9xRCw|j@4Fs74SF=}qW_JqNYH;~(xy ztnFRg-8KSo$I8iq?{t>d@+*rW`8%L^VWq<+IZ+Yx)``$>+dsinx&G6dnx4|Pi>E;e z`FgSjw;}$pf}h9B$2%W5VfbYipCTvPkEq_w^FYPa8^oWJ9|ufNA?~wv<{=qDe1_ z`!0bx9yT^@@sy4^X8Lczi#O8C_vP;aY~X&ocHo;tr*jvrI>2tI)^PC)|EE4~`61T{ z_`+QdiD1avpEPxYpIsgtAN;$#rU(WT3iwrvJW}aP$TBHCsdZ-&;j?;gyVXq5>DidS)%sbRWzNXPzHV~!=^>O=#tW^YO@ik<* zNI**~s0fWP*WL$W^ex6_8n6VW=B#k7{*75LrBO#u4VsFCggqy!a4C5Ey+kFmoAeZcGkzrJJwzUXudElaG zwLS05J2yHE3=AJRAYTnuMz%DJi|@HjP~lYjgtL3B$md@R-jVx6ZB_LZ zJSuSUfawphP)-AW9JmXWPhw1uZi1zLrWs1dRK{!AdX-+=Kkn5B@qf9?-bELCOBA&j z|C=kkOd>)t@ANDFu;PnPc7!KBSme6r2tow`Nkn4iI&@e7eF&`L+bwrsDJ{pB##*O< zI>x&*XYcu#Pf`&3Cj^Ki2YBUH;3G6(7vsv?XF%Uvd3e*rf{7%V+MUrMD84YdsW_pl z;xY?VT(f)&RoEB!=7f^htyfPC$mOPAX5tyX{^W0acc8L@#?O2Tw{3!|kG$XQWE8`G zab<%Z%JCb99M+;=kmEMH-YLYh%HL`KVuTWZ|6-i;^8Vu6|9mg>*`aJw>nF2$e#d~M za-w*yw9J2H9w}!z-9wq1)roDtvG6q%X6m;(r9&7G+jO4Tl#wHQBF`aKr&8KfzJLF5~$C%YgU$D8+<#(8y~g5%p? znGGWsIaEIZo4t__{kpG9_LPJF7Cw|~O~mwm!ebfKGNNtKTyw&?mk*$qZGkh8R7}TL z5tOqo|E|z!G_Eh7ZM=)r1J;r+yDBfuDV01oSA6=JPuC>^(PVsfllNvp9gPnH{RGqf z+40rs)>5c!>JFV{rhegQK*O2?h^9Q3s^I91V{85_z>CSxweVsCNU)3s85-| zncXJFj9C+XG}V-dcbRNKNv`YNSYpKSt^O{0vnKXrnsNf(CBr9g#}^XKcU^{jnxyZ& zb%!i9M#;{dm{CyCxY1+Vu5R}u@AnMTV_)wJ?q$P7>sRJtlgR|H;)Jyhy{&lu0Hn$h z=buyYPyf?}PtAtD-ccetVY`M`GaNQk9C`f;^7R4YF0L_rI%zIqwW$m{aG*{Iv2x4F zP0H7TG3H3?=7qs6(ufPl=Jg-?1pN6p*td`07dp+|$xd0mfg|GjLLV^I>M}AWHU5P* zt~sSf5ZBYaLp~&tQB62`d+l-=QM;5d>u2>(wk;`xuYYVZYf*Zyd+~0K0g1=dEAQuV z_)bd~9@OPdr2rIeFf|BHDF8i>m?3*$RL%GoXBoYi4%7uX$0RcARrci=+6>dm)ai^k=COWp^Z4J`+N;Q%w_~1B2*##HsNaLN=tLs%Cz1~L}rmwp$rvTW)O;OvRV&p`%DW9lNVA&3s zW~3ggh1<^d`Tj+1QT-hSOl=TAk$CR>8yx-#-FP1L`-NuW*mt=AKAIhIYOE?xIm8G_ z7ZMdCv7`OpRr#mQmXr$`)zdo7Iex;(bZS&PXaB&7&7-T?$+GjEQYywSIt@RP;*zD^ znLS91;N9{RiF2uzVbbm#<3pqjqIeI=2szSmypjLO${#Wr&&Qj7ZW+0B*+dU<1Lg>b zLm9@_r}cH8>=N;1^_YvT^!J9qO1tjaE8lku&M01W5=67=!FeG<#SRUHZie4N1lB*+ zx0z==bf9DKKG^ht6reNl#*`42DVyCHM`c)L#dN)4Yj1ghSo6wA(0b-1^Q!|!@R}5z z8CsT1>io?8e!E_Js`~njD!t5)gpn~6!0TrBOT|cT2awd+8p{$P+o#80Px}v}zk5}y!ja9h1Q3%Zp^x2DL zyGmS_PPWNY64f^)Y|9Ch5Y|;z{xOJ<7Tuj$9{;0I&ZSXyh z)4phK3LTWXup@bKXT^D1&m>DzJS?e=F0-?_PD{ z*?eWeU-KKD>g|-}V8VTg+LfIa$`?8>R4X$t5|j*Rsx6rX-xH|K2Ud{flula6G2g3V zF6Rh7d)D6Xe^>JApUjLLT939d90K28RuEYW1lR{}wdSqQtUckq6!!AclU>HGj2Sqh zTnBjNVWXe?9=U86P~^4HcqIZuik*B&9GBuvDms5w1!;x@VCl9neY{`(=v;Kni~hm4 zR@OiqhSYbakXneS(Y?D%8c(<%`YT&rtG$qekC z`#l)&Kn4EJ>+%Wbg_j=7vIVghSV>sQ<{Wc`9})4Le`Y4+9rY67#gt+-`xnG%`+{oK zw*{pH0{X>BYnv?J97&-sO^&!JlBc$l#LQOkPRfvI6a3%Gvmhg7)YhU4WU7 zTnZ|hR<#K3U$OSwh0m_@%w8L~_Kwq&kl>k5ohF-3DsWJ1Xh!P0ukd=>NA+EIyHUP4 z75L{AGhAa!h^iWa))2~e;P1pf7(CS9d3y}3L%oN5ZjPFt9&bK7`WXNFWI5@d3y_d zE#LXp*ovd%Kz7TY(&X&`#E~;N(l;jk%JaapWqkdr39tKY83uIssP1QykoAj_u>v>VNT!w^)>?G!xNR9VQoHPU=t%?G&M=C1zR zopJ|?VZmH|=wxH4{O-o&JxWlRv=%ff>CC>h2<}VVF3_)v#0N{oS|Z3L!9gQhz}@9d z?@jLbL;??l6_K8nf@n#U4++0hQ==B0VJg9Dj93s~v$8dYz>0jcvVV0WkB$pB65xCrDFUK zw|?w4{NW5-xkjNism4F5pi_*4?K=E99`gIL_wO4HM`|PYnOxcIbd+|B#PzAkIzJ9n zK}ojUu-Ar*`BjF9JMeqK%rZFd%!7VA;y2LCz8?EMdbt4Y{>lBk-J2$dheIN-Tz0IU zCmjBB@PO;+YuiMnXyX*&re|6m`5HOaMyh)stp7II@XhYRz25)xONo{xVs$RZ`kbpj z1WW)D*jjJM!o(WdQe_80zk*&w@;sM{?|AUQDLd!qNuh#0zNLd%xU_dysKUmPvE)B6C|nso;FIn$}kn<*w|zPxDvrUT!_bhGzz<5a}(Gd7?=s z-8cBa;`EFL zi;4E{6eQ!By<7unwBeRY^OEUh1u2QtVJQ*RKdHg)esJXiAN86_CzRY5#R&Jm)Cir8 zx?I1~sKPDhRc-2IRroc>toj09Ftb{CA?>g5nw_TH4Y z;3~}>nfZO9g@U3Yt**+Z81^f7R;00GmsIx0){~et53SfJB&5{6W!)RyC0?|Xy-G+h zqA#tjjj6EeRNPJ4cB74`?CPU}Jzmlq@%mEL364rZSLr8yb5Q)(LQq!89yU%HERwU$g=4c@C$DC=L zE{}xKT)2@bNIgm}xn9gy)lBfWkqx$DN=7~L)>**|D>O#o0~BaJFP}&d%=~yx8x{5R zday29oILiPkWuxB{ZvUDV=6o;)i}#OG6m(@_qncw1F&g2gAE-!t{z(rel_X~od+kH zXJJi_f3lcQs_e?ApN3p)-o8`=tNT8}K3^p>KdH=Fg;yyYwRLrAS*Y5NqRJTae5GO} zjrrU4Z4IuN{;&kwCdJ}}JN4?_jvDoE)MR;8(=%_{_~!;T^^(QMZ`)UF<1jwizjy9pF2|1~G*S_SH zz?~3|o8CSYP4J@O)+K22s4z;BD6P7oXi{M?of|NCrudIsyr&7B7a*P~HRvCsa3*cLwvdVd za%pMcG#K$~$&cd!-K*GEiGsmJNN0r1; z6#u1)yLM+kp0P^K*(pqtUAzi;o(o^4p-&_^5aw;% zVD2ekzK$Sojo+CZTOzle7AIz-`&^dRO{UFQtJG*QC*{spp29HchJ=U6rTXv2>BlHP zxQPhyv9PX@sp(QkVi?H9N_k88GdVY2g*-qHz#64;dsaSNQE>w{Bcgj?AR;DpLKuZK z&ELIsCd#RS$8IN&bI;X??PD_Rst*xaogHV}Ym_*FT#KTAB;zdJ-KVWelS6dXD-x)D zR_^GEYP#KF4g_UZF!;w5KJ?;9kYsa`HolG$FR)BNN>dG-9=@e31UFZFqY7wk`3sLV zcOQA;zve{c^EZ2;=X_+|d>!2l zM4>4olnN~~dweME!c$3Er(KVfN<|rm1|g27N*vh{$H?aVZr`5YUr(>6S1%v$alh~T zy081XlGhv(-(9STE^7S8+6{Te5FF^sIV4}NUjT9;KYZZ?9;rW;oNa~f-F<{x2%`Q2 z%AV8fhJ9NHZ-4o-(+V+&4PS(cVl-N2_H<*>A`d!IbnN@|XP1~+BJ^#u`#D_G1VQ$+ zqGTfRj-Jt}#NmxCuNJNpA5+}qy&TsEbYc=i?BhgYw;0$a5@hHC)gRv>>GdWLcNgD$ zva0(=!+$izs7?>+qy@B4G;;q%td+SgpBB|o6ID-kZmdnqbEKap| zvbwNha?Z%cM^Au7J@JAt6(~j<*yxr*%0iVF=1F9+A2>NrfG~I?R9jNQe${ssx$;p< z>uA79104QrUd%$_W{xENpurI=8UFld&pXONvo>Yg+?zSSyx) zZ7^t8PGRZ(826@2$TbqEbP&%cV%}4_x)tWCt#{?^jSZdD1rOFRndXXLvH$o(mC2m$ zuf5i;j|)??Fm&eNKn(~8u$adq*uCNi3|+F~`Osj@#BF-(m<_YWeJ1^!Fml9SN44Tc zwwn%=JCaA`W1b*u8z=MFIXQv6hHK5PsTDT;1^A=$curEdUFha-B#R`$GWSFG))7jG z4CXB6cS?Ynuq--}kAbq5KaYnKRCPiQ`M}2B!bB`{-ej;FnYvOMpT=1Lg-pHL0W7=( zvh^5aD1Nrut zQxPvtSD+O0znJLtiLIihxQUBE{^ZQlcX{%hrW5|;^+-dZ+wTDYHl$-Jcv1`Y=m zB@tej@iu6(LntQ+m59<&_4?fCb=Be_v zu}kzA8HdJ&V36E#*T-AQ42|c3s;wtY-EuzXLd(eQ)t~Z7fC}z&p57a?cKzO#DaQ{H zZlNSGF~L<0svu-Iy_@rLw*1gUjSKVWE$KsAeudUH%TEx@M*}doZ_kLdxO71`W+{I%C^WO* z`#|N-2cP!-RfPioKGMX0rszGX;v+WT6Sc4;+?yrHdoGCCI*Ln$uR!sM(*RpA{Ijym68)!8`#;R_+;<51o9#^lA#o`uCT_|Zr;1N6w2%RLRF zNpGV92)8Vd$t+3(;uJFQD@QDPZ0_tzub!pPX3sa4N}?Qc%ffvRhWrL#I;0J9DdyL9uVGi7x)14;BSpuZIrRs#Kw$-C&tPt%Q zHPKPEbsct5G()2*cjFSr3eO&BVGUj!(E^}7o@bSo>=bBA#=BYvPFP z6VPC|v1Bx0wJWG|vDFLjA_058@)JUH!^-8{FB*mzI_{n?n0+4S3tnM?F+y7HpONaC zouxc~ku=_tF$H8<9j5_8aBSh=Gp3LW`RJ65JfgB7anW0%-j1s zkt;fY4Jso)VZR5W!NO>pwRZmD?%?S+t_xKQYGB(e5jN#OihlLb7x>r9c@=~UONkrQ zM=zbc0a|W|@u1R}VSv9_vReUmnU21-gZ09&5F=wq1J^$wNRBt&XcCNB6LY)eQTidS zs3Y?EUnopo_o4PYD>8(<^-cr}Zj8nJ_bagECi~v-Pb4E89Y)NNVVdTbm?p{D)d z-Ff49Et6jiVag#G-EmjjS>hUv2P3OX6upzZ*YW@5ChI)Mse#^D69n(3!}W_P*6foe zTgd23za;Xr#G%|cEVKr;9e-ku4h5}$XYAWyY}@^@bCQha+A7CG<|gC%^;@v}tHYX4 z69f)rwLRJ*Y@T?8#Y{?6?LAB6@TYGT6%vV-wVu>8?^`n77?o0t!l*bU*A&${*ddB} zBo!tRXw5cAQ%3^6a#P!>r+2EP?fX7h%M;(9 z_L4x}rh7H2K_Q=vd+rwsgJqBGSlTE1Ci-Bqg@{$L#N)d{TK}u#Ppl`;^vY|Pcm#nPndiQ+OC-*9)kHeN_;#^NcM7?Tt2$HMEaVd zu4_cZZ8~&%0brB&UPM5dLxvHHeH<(_ObEZ#n+XS~Qr@3K??bl!Vu?u)i(?&Se_pOPfilL)T*Wx?h z-(LowhgWlx7CL+{y?FKmalCrls>{1%=Yz4L(jb0X(fmdWnNuU0j#6{qADK_PVUTPX zoO5G~R=v%32w|Kfq+3Z#piUxMH_+D@${iD%=mTqZVvL5a$$5b#!N~Y#J$@oCx!W6|)|UHvPba`@fxp z!LG7ibms#{3EhYrK72YjxH%sDyTYS3?_jEulmwROk=^RI#V#th@dbX!c4zZr z#poa2Fq8F%^y9jpN)(whu=5llq!@`cTnBO%RTEI-12S4WAFE{T?CSp=u==j zk5)FfD*lB9t(C?22zfE)boct;?i>Odb2fuzLW-8(gy28$R(_nD|CZY}9j;NlE9nSA zw{6s3t+5q-9+9#qeI?s@HvnU2`0F-{$4>GwH{?~y_DVAZ8FAZH$Yw%wCVZkH%ILSY zohK`K&EZyJU$rdi8vz*x#-!bvv`MY1vr`1?jaUU-l5MGKr58$o(^4z=_cM^yV^EhzB2|iB|SHsx|X6)Dq8BsShE5H5pe!Z_!7LU z9L0*5KpQZfSw%oIM#;Amgfw+#st`S9Q|sr{O@>V!k6zs{&XU&r$nN?J_V@A^vs8ph zXNF^P;&w!R01Mc{ON&ca)YLDJc3{tUNI?e$S$-2lx8v##?oXO3Z~BusWNj>h)M@3l zhOEI4UJwBjg?PvN%8W8l$442KJ~+O$_I& z{T|2fqld^S`Z7_+^?lnB!nLF8Qs|M$$79pS&q7Db46~f1t`7A@1`NwDipdOiO!DLr zr!-|qIInkv{q)&eNTiDL{#oxY3UAlw#iFS3?c8-Xi4}{cnOMY^P-eo-G+7snbv>?9 z2+?_ZpkSXA#R@7pj7cbN%P8ByAUL+`OUb1%l9r;fZEcF%K>V%`_@LuopvkI<6Ur5| zc9$}w`T~N=f>A$T91Wwd+tl`1s4wUB%#JHrPp>a^>&o0Q1JB`Y9#7_fbwiPLQ+UUR z;4|Prf>^m}|NKvv(-P}15H)C>m)$Y^Xm%eNQTkqK)3SMwj=hLO>BFXi=mig26p3lW zYnIv!nKG^=ETI@6qnD9(cWBGwd(H4Al6}_lVz{7NSBnzs0y(~b2(MoA2=SAVh#Tf} znbP`R=%}|=VDZUK9}Ab-OaB}5--NyeQlGM*y0gObYQlpnKS8oHB~yP9j+TJ>1P(iVC9-D`6qd9*AbKxE;0;OjZ3F3aUP}9NZC{uBi~y z3;LKBm%TYy&ge>oXt$ULSb)gzn7+GQ_BZ^_ z;UxLIF{OO^GgmbkEhH8^>jqzeRwRDn$NR-jT!T;TjiSbIE1yob@S;P~pm!(L7qvqn zntRzd{c$e}8JUOZSN49`R!AzY30pos*F>`di%gioey|^15}-msd+`iTus9V)zJ= zd7a^2i5_6-mSuYnejGsMO8OLh>HW5qrtJ}>$~OC-AVih9&8Qsc#g7b6sKypik%ifL z2SVfCjP`sV@EtepaBm*HsK2%u_@9yEQm#n{fK-ydZ5M zku_qm+cYAsUHQ0WYf9!mKnP`ERXF^b8C;^o_7!8%*7M)Dzp)^riKwf)(mb_9O80p$|8sJ6YJh-C}?9K7s3xyB_pOeAXw*@zHlN`13B^x z-Pk)l(v_7+ZIP5&Ya+&;M9d4laj4K91qWDS$b8coi7i&-3zTqXnowKJuVTJ4bvrM_ zIF;Y}*G`wT%rgJWsO5ILmgPi*wX;R7#zZ2o-JvH4kERSNiwW z7n|LFoYW?iHd_@fo-1YM9EK^p3eW2e4bB$-a36A#$;ot3CbV2i#3Ro`0u^6`+(ZM5 z)r8UZSjWUG#x}i=7g~eA0E~UOz86}&-_7!&zRo=Ke0yLQM_zNwV61+wrXLz_trNdM z8TSmDuqHs#^a)T9Dq`%ujx14#(Tl4X%WTc*UJU&d(UkD6IH`U8m|NiT<@vW|L_UdZ zQR(adPp*wRRhP_3t;s}PU3r@Y`ozu*2TO~Z zHGL;zTvE!VXJBbWAd4|86^PBJSXyiu$OYc2h~YG+9<&g%Z`(`!XJF1rO7r_qt46ne z8M^cL3|6E}Ztt~rsl2$%n}QmYGt=O_Q86bEc=lZq*D3JkTleqk9ldoP6bgoQIgfdi zq9Icn!iAIxtY+8m8VHw8vZMs^Gj7Jv9bEsppdC$P0cI8i5StrRU{@|ILF{EHHWTt++FmFKHx9d@t*br3FDbC3BXHh_x#LH#YAL16#5;o4fLiaV=C=hS^J91EV|ERs4>dx1l#XvIR zOH!s`W-@PrPX#iMqdU?mC=0*!$O>5!IeTu5LzL<=;{K!21VWBSrN3&Rwiu_Ab}5ZF zHq$q(wff`dxRLL9&foXdyXw33WQgRG;N7(BX|AtSVd3=0j4{T+8{Up|F#C zmyduR%I_B?ZNwQGk9?Oc21xMuzGd2bMlFx$^=j8)e-w3SI{eX13! zv?91q_{qDInwQSBU==Y=g=)dX;kT2E;#s5vwbxMxUTBqG^?|F7KoPyTphtCUuIE@^)7iLCS z9-<8zZGYY*Jw2C~M?yJDQXlvE5+3tFif6sfykf91qHyRU!JlN^_F|jWm zIz{&y&i~AOv#PuFPv74?m6rCdvJw_35p5dto=|W6NHi0qkU#y}yi#T2Gq6wbjo*lv!GvE&+YxPVm^$jCxT_S-kW8l7JfnZch~{MW zkMoQrEJH1&Id(dJ9OG0AA}--n89(bqh?4-@`Km5rPGa;l3l?R<^?DjsadO|r%?39g z=^V>mUUTqfZlCuxf05q*k(Io~4aCYWV^~cS@i{)y+%nPlRT`Q5)uYu)H&b57&=gCieakqWF?& zJBW;Mz1m+p_q3Yjyi##nITS=-)hEy-nGD|iu}eB=4I+){l%%%hHH!sbZC}F@t+@M( zBBGZZw5ofZM>ePb)ZHiif1ljEWZ|fK2J2i?XMcM^PzPw8HBAr15df_|m>#KQ2p@#I zBfk$8u8IY>skVdq_rmz_qs7eWf=cS()QA!jG4xT$^xFU**=4thw02jc1H@v;1dbzy zpLyg`;WT2xZcqv=L#XU!C7`Pq5?eMy6|PwK>yfJ6vGg4c zxgj25-&Ex_GtYgxO4WrQ&!R@tb~4yTVj*KOjUReVpYElgvS0VwA$LE&AHyZ|k-?zI zc2wj=n0OBF31Zb+BNxx`9)dMlWnxZ7I|f4q(b$h{5p=5T>uJ|j$8LR~r>u6qXLQmG5ot|_R$Otj zE9bZILHR3o+6L3mxDq<*l20}uV`ad6+(6rv@0fgMFBMgbKwayh{g{uj`E7x2>H)Th zx<+4}=-=y1hwpP3YlyKPSN7a?6S2k%N5_ENj9#P)q9PT{TfSlc7#M>*aQ+=LA7C@q z?wj!7G^Sqrs$ozRp23%2f}Y_SjXQO1$j!m~TsRox0K1yHET03=T*9 zr%M_*!l;JVWN+S>b<>}R5}PsP^JH2Z!r;H)PsX;8#_eM=k|7U7zsjP#kS_KxS_^DL zY;EbkFZwJLA0B!De`WJo3$cXseH5hI_$hibH5uW(WH;=`3to_ngf?46uHp<+b(T>3 zQimkM@R29bm^wsek{Wr%I>W~_B?tM?du~Wa9;3%lni+xN6h*gnlr~UdzO}+E?tc-H zF5wCV_&H-SZo^m(eZHXKj5Ol3Jq?}*vOZ@dLKv+mgFI%cWX_maRL6S0-w{3uDaDdl z=C;qKg*==7)H}3x0s3)%QimgoT7Nt#lU){vq!WnSTvD-lH&6+(Aa4=S9{~yrGW+2H`M+H zM`|skeT71Pn#kx>bed` zVeqrQDv=L)#e979<;D1(Uj>RY@8CAUHQSan9U%~jx?Z}xkra|+_&TxM^{>S~9uGVs zSfpQM_k$QsPA2>!N?=ne6IOVA%?Tl&ps;OfT7{RBz4xs15IUpX!1#|&l&37l`YtSx zWsw&CXIAg-W-{pPJWg6n8jiXQ#Q?_d;x{)AP!)K?Y#^fJo;B4?Ek6&IS9}o4C!p5( zt0@x?<`1wtDt{dNO~8FS)xq;V|TlP+u2 z0U`T+@AIU21q?A)V9P&v$ikA~bv;muA3u;a_Nu$ngx;GBj%<_EBNG=Bh0LdZ#5I3E zjxOw|jM@lVxKHol85L1N%(NhfzPIQb`kwYjh(IR1`Q)o+elO=RPoGVQC0ME(OR-J^ zVLQ>Dh!1Lv&hxW~Ww;qVdX)rHPDZU%9v##Z%`8hYPwfRfvkd5;JBX6BWGh%;1ed;CIT z%To23@ex_B)(XLf%MBj%jwg zgfSU62@Z};06lo_9e%VvQV>N@IG%hEDjRi>cy{@Zx6dr!hL^Va@G1;0AojJVV*+l) z!y|RGh|{`;oUbw!#oxzEv;=QUJPpMR>uC}Gsn)5%U%o5auZiy94c4f~4lzBL76`v= z^N$a45l<78R*J3`7Y-$z_?5gy@~P(mg-y%;K7DjQ5z=w40`#s54}+LD{`itssD=@u~KdbbV&_$Smxt-1Dz6S| zo~G9($|>f*IO&?@EyP5zmw^R^b*8!KcAL7l<<4zFj6*B7AeW&lWKc)2Dz${MlgVbj zb>OOJ=caCA8h#`UWE18il&})vzy?fDtob9M)!U?txiVAvKdsEFlix9Eko&_ zF8K+p=E!<(F%Ws@07I2#-!^9$ptjrB6y!F%I#GREi|HvX!dfI9kG`*L_+Ph8r{rWZ zZsWUYoq{i+>h_*Jw{`%5P`iIHO&UmDv&C%!ci{K3`n8?V*8{&_LTaJm#4`w)BG~Aq z>s%MJB@2(Ae)gIkBr$`@wf`1irJ_pDM_~GNO0A=u{CtcL--EtQ2Bx2B%?T#V_hlno zoGy_tgbc(s%MK0IabmLhzrHvG^9Be^uT`P{)`n~5I;{P7>H^z49t4Mz00r4Sf&ne(W|CxzfQCKMn$uEiRBa8{WF_C{G;p>s0sxuqfPBpP@%R^ z-?bzEAvlgDDcRep;OO);z~T~trEWWZ3i+|Zt@7m!po)P4hvmRKJSyw`YsG`{%n{So zX0A>sUbI%DKxE<)t@rnz3~&*)IG+Ppj;qp)6fM7%$htK3GD+{pMg}38yPa_SDj}FW zS_8PvlGw4&sU~E+0qdzpKVxKA#)pxYMkX1ZQEQRd;b=pAwX{rS$znURjbYrpUfv-u z>*F;e{QlRMQGO`IAFTT7vqDBu-LlMm#L#ogV8q|$v|5pABgV2rr&H#8_*o%E7Q)3oW=|B@T9E6O~9 zW9tZq%t^ya7(+HSMj1^{v|;FZIqB_fEN~brTSg>U<|#8mF~;X_u6Vxx+{eCmGz63& zAC(Z3i|hSQ1uoksv_|$F^uN3ty=I~28oSpUle1UN|91cYN<4?$p!T!(b@7D06+bbxjBu2+v zCf(nRnOsBuUcR9G@RPV3X4LCd8=Z}HDZa^K;A7{ONO=gciV84<%{3~r;tNn7hK$1T zBBpDu8et@xXcjdsxkU&*)`t8JUw3Kszw5WGdXnyazyRdu7_GLiWnn(TZAVpzv|nRq zXm(BT27h-b7X`Em|J}U-PAgJ+59^imgf!I%2&rdJu50XMkIZbn`_tt&RO5WdbqIb5 zV{4MT6p%ujLYWvX{{XS|*|8M~>S{<%c|bOGLiR|HXa%%mr;;wW-aEV;`6qk1Fb*gZ zS!F;ed?*O1SthQ4Xk%omNtQi%;nFH`Bqdj|_9FMuHj#^x#`z?^2q=+>TkdcuqC0J@ zm6UnEmn<$Q{?y7vXRn`2CS;w6ktd2rRa(nI2*6EcYq(RFc*EAlF*>GCU}!#AR^$Ky zCFtkq@gh*;?4%y9uZH5=<#$A@lW`Ye>W-S|5q}1;)1M$UUY4yR#rXtNgvB9Kh0B=d zlm&6$Ks@SzA7<5Qi@qihbXHLGgy5XYWO))a%imu7V6;tSN9}GnsF9YwfO6s#vNiFS z%%F8z!Qt;${wKO~dHukzziZhef!uQ1335Uo<9J_$6c5q zppD79w~c`EtCjJEIV>dKOec-A0V6Y~_j~P~j4&3M8YxspEPtcyx)+y(5aYhx>}fAn z_aRhEWS{>)Ry9cW1|f-Y@;EAHWPr9x*hafot5=VQF0)RvlL%A!eAo|~?_pqR#o|A3 zn0(xTNvyJ{(J#95d47Ai{w7F1zn(mwAO`0Y4nZY6ye1bA^JaN9OwT8w6O^GNe=btz zpME&h67c<@@AuCXsl4^m;ckJ-v$vCnU|>A}`9)ESO#iXyFF<`ZeNdFPd2VFu0CyB2 zz3BCOF(sQ)GW54*mDh5}h%{mUhEEJcl&ZrKOG{9_&lxS$8u`3L3Z*qNAB?I670#!# z7~hv6mbCPoxiCJYz-VkF`VEc<3DkX$>@)jthXBf-PljH5Sttwuv>ghSIIVnC8SiM#7>oA&AY=lb&C{Sa>}1}X`hi(l&O8IcYc5CCfC zbITe~x>{<7Du#HrIfsp{zwseQmRH;cmM-VIU2^BFjR2aVPH3T@sYy4F5Q$2cjeOMB zNV%>ETc(~?s}-_k(SXYVRDF=U6!-cnBtj$`GL^q`u0I93&dDz`nc)K8=H?FV{%y#0x_zK}K{X>LmzhIonAIIs+(FRLd z~5UV)-y#{HBA8#h0A zrj%N$<;^#cn;m2`9?9E1KC>K70w>uW6c4R!oscKruOkC_`YLzhJ^4u|_uTS@=l;a` zK;irp5bfSrfdWe(!--hlf=hnLh3ht}h9XDHSTo{*KrzltK3z6{X(Gr!t>+7@7h{2= zqurW6DXEDDAH0^rqZHw?^7NBlSoFJNwyJ#}gC!Bw*ZN*r_flw5T3%WP z^;51yi(S7I#QI|z#4QORFTa8BePz$`^i{Xhke?;fnVX1NGS1CC6<#0hOq@vwYDQV3 zaqkHU^Ldc}$x$gt>8sJU4{KMCT=2PZ+U@49JGGl{{)ejH7bP`CSD>D+pMy?**hEHU zIXev>pyyd-N5O3&hrkHG|Be-qM8=nj9_FYW>ZU7=A5LnoQBmf;XaSON+r70J=kvSu z&@TN%;YP1eRW!;!S*D4)_JS+(pQT(UBWkp$AGUUD! zhH$Tkh4%Hjx?2Ix(rr7vXZw0DjPmKM&%A&|xvU)jrvEoFGmkS86~Ht(LycuYw1m}M_{D$KbNz2XgWY**z!YBW+JJUz z)K{S|$tAE4|7Hi@+6d9frNG3K{!c5PTV@CmF|Wl9ra2ykx*lnglK=4y=5;#criF4| z_l90uT-F|A?e&R9WHf(BLw&n1;GMeVy)yq|t+FgT@~BVkLohnHZ2D-l%Z`y0a7<3i!ec==Z{TsA4bme zp&5Ew!R5>>U}8;&9dzEMgYd4Cu&AM1MER^QL&&Q5`Zi^x4hpO%M8AC<#~gy=Yqw># zcd-ZdRyEkKA7>#(^fV6|W43&F zlpOo4-{iD}TVc=BD>6`&Uf@wDuGStzj4h^iXfv$fj1KikU9~<$hmT|wVJ z8?jFuzzNHR22J_CDu=$S*ohlvfilc=tt$yZlUysh6pBNHieK|2qn~IHJJxwLj>8+El}BGr*!|NZXv&e z>+RGiIK3=iPaYTC-cCVvgjjd9eFlt9olP7hH!7?&)RN4p`L}t@@blj*ehN<`@%xz~ zH{Hfge;XrXy{(92U1-(__874lG=$b)A)u{pf&j1sMwBq^)tfN?Vs604z2a+3?s338 z8@Li^Iv)g*)1`-qB|^x0n@K*!MwW3B@7nQtP&-M_5!`Rl+zJP={wD|}(=GieeQMxf zG9{;TVhfA(j~ba=s$3)`uw58cl>RbO^II+YU|e-;L!GDIF8Z!TXXL+|t&EA%f}@a2 zd(9;`*zMvgnGiB*6|w_XpwyS{j-lW3b<)9b0B#^Zp4^<mIcFO74VWT^WUD)n2 z2bvL=|G*6-!0$GRiuN0XV)TA(AqlA`CXx?cWdQT$x6DdeNxA`I*~0g@t9w^%6pq;M zm#2@q{eLX#aiKGtr`Z2(;MocI+p;NJTJOA>6=G8>86iWX ztKp%}K=`E&QNIIlv2Xge`M5!^boa%h<-T(fj;yJ}LTGN`Rc+lEq+!@)x?nsr4!dHz zRN$N6^gFPyQ9dMNONZDYuamOLhC9bl+gVpH|NC2l;mws)U05I1*a)pQTywjbFF`y1 zvvd0P<=3IF7Mxa{1+L5z29A>xM`smR7$SzLFnZm$fErS&_*hmXuxYmPjqYU$~uw?$2L!WK$-|n*^FtSXnpRVrOQ7>oX^~({eB0T8<%W_~csfYMFQQ90K8a@uc=mM8+#)uWRw{DaIVP*(@l1<5=0eo%U5xxp}WdBW}A&R3&^tS6Y*Uf z^ezKZLzdQdT}N%?Gwoze#p~291&uQt7~>9^(eR1EJjlsxImaauTa!sc9VqfQN>8v+ zau1g`)PvlOYnw1UQXK)25xK>RAeZ0J!TQtvQ|?3sWN>(IEMN8IN|2^{m;Zz3aDR{c zuxv#Pcq>FFW3_+a^v)%F-wX=BGQdnvNEymlE*cb6Nx*IgoYVf33k){;9J? zQ^e;|s8q3N5L+YU^VUh5sgm0{X7SHWiU(FzZrJ`mAZ!Y6cX;N40edy${|c3?!{kihMgWwy;GQ z<1G9F@ZDqaO;{1aUwfOt>in_NTaCOLUmvX`i@0gd{yVHCX{mXGzA7D*wkdg6Pmq`YSs}5!>>ld=D)%uNwr74bj6iX^Ym!mCunB9I(ia!! z_1EF+w(;txJPl!x9HF&ND0Ng@I8YuM7DEbhw704P;37COIW{?UDMLA7rzi|T$HJh= zn95D$i{Zn(2R)+X?Z}>f&U_(LU*?8iI028c3{lf_V|U!NH&78`g)7qT&>S$DZ-)or zFrvRT%43$ki;&WGU;9{TrOiq2ASlte1Aru0+de080+`v!uj2(vVtzlZy8~Zju+S9m zFM>km!435atRy>^awM}{aSy^@@}ozGh|Jd&GjH_^2QJC~+fDa`EgyaGBDtdpymwmK zrIhhVA=J){(!^=#23r?M&eA7OTO-T+a!5f3r!bA11pPR_k2$7;hKPzwvub4Vx`5mF9zurm^I+n233Q{F2XDY+y)vAzBm#a% zeK|Mw8-`Bh%6^TS)Qe5LYb8?tyQv%Ye{QOpX;THYgU>8fZ5}zdUxodP;=R}aqR8qaqJJp%qktoXCj(w2zzYf2RPv8P@`M@1B+E_`IBL7{wNA-uh} zz-m6}Q#rrv!iN3edgc1UplEyo9*?j|m|8zvC6hkegt$|Ux2}qaAu#(y^YezwMmC>Asw6F}9Pg^RE?tb#^q3pF+=X+QP z@xsi2C{6A2@iXy7hn{3-X04Tm^@x@3O;*9C*3h9YXeOZ55-e^<0nhq(rE=)ylAB+O zLBT~fNw}8l^b|Aj8TTREKn#Zaz~OhnCn3q0?mK<74fAFUspz5T!|P5AG8k#fB7Lh# zH0oyP)say(A`5NB@=C+D?aK(=yGKdvqR!eUa=&AI)?UyW`wLvtWokF`$2ZC1`+l2j z0OHSyXHiU;P<9qJu;uIaO%Oo%K9IT*D|zUT06?EiE4+E>+020Ax8PtH#yM?6ji|Vy z2Innz7ON+6`9do9_k}oaW}IbtkwMaRB2=t4nQw5R6f?Po(w+sW6(#pyNB2yy=lbfL z_k_G9;aTTbolw{+xy0VPzv|b{uWtM9|0N??6C11W=6FH#>U|rMKCHsdrdMWD~nO>4vMPu!P>)Q+?*i;6a}BJ zM*r-;-p$ zS>>-3N{}~$k%!@vwYVdnfO^3ap;RAq*g`5r17%I7cEzF9M!^Pgnwoc-_{$R%hP}I1km{fp0Mm2xcyxZGQ-bY|0tuNl zCOB?QMD2$kc03AWl3ywv_gjS`Gc655C|5uaTgXLF6(xS9T;2%?WJQfkkCXJ8nmzuF zMh`&cb77blwzi>EfHS@E8Yb$`q-<~M+?Tt}cq^ERmCVK#er-7gOz?xE%mcRp=08yr ziETMa1y2+?0^a}n+--y}S|Fszu7qkdR6GTym2f>*!rnrm!JpSBKyuucT6_GCXMNx?Ki%z?Uup+x*KA(LnEVvWsjm z(3S_^)h$de(ZyKqc}WK=voBBHO1fL9h;XH6LMZLeB=DM*M9J|#h^%_DLHwrp%1Kuy z3$F59$920K#$q7_R_E}>2tKj2NSRX<&HhRJJ>fH=2`#i3W#Y`e+AAf$uG-YEsS>?X z`|p@+bYhv1ptSB{$me6%;5w2kPqJ!!xIoTWAOnaY=PTA^u`!*4_{}L+lqJ^C!pe;nG*N?Ka;zReSm2y+}1a(RY7`B9*x{ zOQUe&i9b5%OmjST=kuY0Am}x49fqCVGz z@lU}EA{q;?bH{wOzs!mGBhXECn zi$fIr0Q~?aG-EI$iY_acU49Jr#mVTp(UDW`31{`TX+F``Y+C#4e>)w|@=c5o;ya`$ zmkWEnUw-j2pQt%w0|^w8OT@$u4xNEo&LnAA2i8*$b)8e54ZoDsuRLei6FV5EjfF&w zLSEC`$d6XEzZU1fAU!MWkjX3^dE>gj6@{Bthz6;QQBY!(%0tzrg9w+Inaw}^0^d(y z8vcA?=SNFEyAfR=e;~ba(LhRC&N^#p&KoyAPz$OX6TnYS|L+s$aQ9>xx+rPD8lW%M z6ML^k=<8OT_4jm0m=KEU!Du>)5EWmKCu83<0Pie+$IN&TjA(pOKju&E^_fYr@T!;% z_$rLjqt1dX}|d3=IU`$)Ei zLDbl#vtF4j^%V;%Lk5AUtuJh)8jUDTZQAX;#|KOHkNI1=^9OFMQZ6yZVp0yLQKe`i zC%$@H&F{Sh?!D`4OkYvpOIg`c$oj>=7szSkwvonR#&Q$+$fX@n>CR-1Sm|I2IO59G0alL-85+XH;G@cf!j zSGG06VvfGFR(rOXlHKv8NO_~x>D>7h;Gp0MTvd&k0e-pp>9_-luO1D*S&PEvuO-<* z<#E*?!-qPs#qSE4-)61!4`Bu4ep;2ek8WVq7>E^dR|#eSz1&FUx`W+0CG^gLs2aR} zN`w(k4V+}yEh8qD>{>#)BRJ=#>{0!=<^OoP4sfdb_x*g&GLF4PNK2*c5OJE4iWZVM zMMEm0?D3_%X&Eh4IF+O*(m>YHKxLe!7EY1TFhU&b{Gao_zw7^ASJzeN>dohT#xw5c ze(vY`of1R4)c+y~;)J#Y>m@nHaBUqZzL=uZZ@w5W<)iwT4|wT;byd3Hf*G8CX^COj z_Y08O@)7w}Q?>%^)!#t{xtAT|HNCgLFB{Ie9Q}E1fFh)g7`(xOHC0qO^6-^*H+w=w z=ShKX`-E)1(xBFB3fbDc$vbT}$0>`!sZm@(p^i=S)F4=QY+3VjR=KE5j%+yp&($?Y zD(|dL9ne2C{U2S2^i}`m#j>di5{cGD^pyiFVgonyC9Cg^kJ&@ani4GnbugsH_H#HrjJKUJLEmMrjRY65wZkWfYs*h#-5j+V$A`uFqLldi(u&*q=r^J>m&=Xga!urOBEz4+W z>wpHo=;WUD^-ipJubL-%;!Xx<8vV}CqVomK!eF%s&4Aj#z93)y?H=dcU z)Vye~cR+TI!nME?B^HW{3q)JxLL0X*rdXUHqz$>&```PVUB|>X?s%6kz{J>MHnQgU zhX|Oz93vjt@-FJ-{k<5%?;}`JL6eU^XM89go1|7met#P#TH+0YFW^eJilHMN|Kn^# zIK%6+66z_D&T}U;;B95u>MhABGk`@Y=jGb53?d=u@NS}y-X5R?FQA(M`s9d$^D@2b zOLi$#=e(^-FjI|18R7BDlLXvZH4?&QiBW!9JHf(J`9^Z%aV@Mk$2NRIkdz%IsU>3L ztT>6Jk!6J>v4SD^x)N9EM2-92wuy81?RMm>YM!M&bADY|II#tIjk0*oGecjVz8!QPUJV zG%g0Mca|(uxy*c1)y$itSogz}*+gyx* zvDqqeAwZl7`0I&(SUgT8)gs0mG9nYV{&3y7w`!erGuDM1dz4Ay{!r3zvR-}tK7imV?bQ& zEE#6X%?KkWr^|DbEf7IWMDNmQm%{p%zm3KyPv05$)GlDmK(y(RWXm={yqalw5sYOdDb%jnhrXyP9Xi7V*A<2>ZVa4zb4Gs7 zE*06l8r3t#bM4vcjfXKbxzvgRjuBs&?Ur&MIvu$3&VdI^q|qJfn5SjL?gnypQzlWH z5a{$`$2=+El`hbdq~dn{(#VP;?!&>(b_r2?5^AZABW*)P6`p6VoL$GcClEoXyeA1W{pVfjX-~G*Wd)JvkNp^o_pr|fJb3W*Y5n2*Vx@^o&x&Adq-5WBR z_HdRn0&xd#dJ>SKeFUc5QK_@>gct9^Bor!L)i&eOEDyYiL-%p9+md1}hN)o=ll8e{ zoiRR}9pDtAw}o0?ae~F*b^96@2$(&;Q=4y(-~YUCE85Y;Lb|`8vI+ata{g#?CvfSS z>UOIbTGB6q+grKV-vlFR#SVQCWJqu|b|nHx+J-o*98RTpsLwNzy%>L?ZJOB} zljNqoSD0yOh`ReD7twzO-ByO+?Bp@^3t%~YS%c5@+~}C1PKiG?SC9K?3paL z+FV5#KbdBqcX?b07z}lKg+(h5!A!Xyf!L5UJW^w@Bg=ZdZLD9;QbZ{ zr5#W3O|}VCq~2bktkkkf!XSwWLkFZ^FJAmcStVpZF#pnhR~odJVK08M??I-2G+qL` z=#U_ni$L%zl2qV#u&}6WEdqOTys4F1#5xHH);(SNml)O5fhpi!!GFNz&~4IisSJ+? zvrNLy-<~lLx^Ty)4G{`zNFC?OS}-^DwZ%ikh-+CWaEDh=EmmueU)lQpG5SZ~sOEpt zzY?=F8igso%!%g9g#}1tqtrPySAu^N> z5G-XJgUy;>A8Q8c-ZC3)+5Mf`<1^Fc}NvKG}gjB zj{@;H9ml{)Dw(_03OPI>W=i}YCLaAci+4Y434Vo_P&jD}e{NuVOhixL25t!iSNADU zoCwKsjW4wWlq_C;+xnzy^rxk~53Cdl>$)#+&JbA0aQ=sz=S$HtJ-J45Q)g{b<)1)KT!gOz{1F~ltXn9n!+ZXY z780`%Qi@ix*vBNd^%6R*6t7&)|KT zk14)_(I-+m_iCD@(A!mPgMw&jPq4*^$5nW8(q57sT1Jr3Wq0GpWyz)4QR(zJ>%Ln{ zV6<*EYl`7~a*3)<_lEVy-CnI% zj$;E8^Vy05oir>*24wg?TY7$D@8(BpMUNJSN&kJ@g@qvhHUo?zypkgJg<_Aud+R&t z|J4g1`}v=xvw-LB$Rzff45sH%fP1*(^PSc=Uq6X`IfEfsOT;wxc!4=u_eaj)uQg2# z5256uwjNiUoKe*kX~?QfM35(FNxLFPr}V&12_;<&ek6FYf7RfebeTfVGNPqeH`(Rc z;AOF{f%X&rzVF{#$A!%j`Q=InT$4KQ3aj&=*)iw;j?yr(>ER4X?tX(EXgQwO{2lq> zxW8-YtMJh@l-6}nr7Uo97t{IqZqfE|gIx?GZQ;@6LS85x zwEroj3^1Jf{@yyqO-Z5}8duPgc&X;L>>***g+l?+ZgV{Z0qa-NuZQ01`7<-?*QboD zvj(zIwS@b`0KcNfaUI7L(mV=*F)ZCWq0Q)?sx3Va)b<01ex$J?q!}r>*}%CWPxz+4 zI-M}QNSGT`G+A>PN9>w36OSfen&5cog=CR}0@wUl1dl8m~Q5&52a6 zZ~JuR-5QKMVdtxR(|~2?X$^)`>sSIAAssl6LUNAVj30Xy+Szm&Z`0w&zI^^qTuOql z*#<^pt*}vo)b8~ zCNTf-_xK*@^PB>j_%k=TiVb;6W(t`u<#q42IhUm2q_uh_e_{J{U_ENGm4iM_|A1~u z@_FwfO6>+R{7MW@$shG7rOzyekb%`FxDNoRdnT`O@6kBgo5>T@V9F}LR8@{NT8k|! zkIa#2S})<{9(3gBhUH5{8+Ig`3dL6$!oH6)<-nHOOn1F(z%drP{r<|%?CbdYbcWsu zRNC=p3;20U#y*5RGqvIe8wp20zq!5n9lb8BxsBNdwC+=sCQ=OJgh*z-MbKq zqa?9mj;zW5?B+(&+o`FFFk1S#aoNEEchH%CXm~c&-=UUTdsxb;j4w98YYi{FLs3;pV#y|~2qral3txuHrUVLuVz8B6&_`BjPb zX4H}}{5WuDn#q_XhZD*mD{6{luF%2>{;L#etTVD0WbX{H)nw~~PH+`A2H^b*NF&5G z&#HFoI^Q(B>N5Q>zSCAL(}dV05Y%RI{RUMh1)KVkJqX8Qvtv{*T^$t<&-g+TD|qFw z0&p(^hcBckdko|UPjwJ?z5a&kq(wGt&?1=L$%#p(CHkJc87K;vEcL;4c(tN}?m?L_r z20{$K$Grr7i~?faj2@ODh9e9yX6D_k>|DQs2AjW!_g5#IFq-eGsGgqBT+b#xwb_!%Le4a8aLjjg$lem+;bX3G$tQdV` zkP7G3R|UBMq^8?a7!qV*WGf)jU1Q7I-x&QnHMqgPavt(B#%ne~`*6%o**+6~ZOA{G)c2PS;Ckb_$}~}A$Bo~fkiUL9ZYca-Mp?R*LVaZq=dE#gA(=~o ztbE(QOJ1ccE6REJWp8-NV5Kop@XM$OL)AcSX3L)`RBJ8u(@plEvhR~6L^Kt~D5u7# z7z=h&#p{5T*c(oWbG=yiWMPpXE1%-F92|G=-iQ}`0O3>oPnTPmg|HK({q4UZyq%qM zFZVX*`n@Y@1vd-sT)UZb^V-eq+#8u!&ZcwDU*u$6y?QO@+O4aXZeGi|dOa`qM%K;S zxdnIc-ORstD?9VXwM%K~m$Fi?UcH){edSu#t=#Lm*K)J-vU9HH-MDk7@MeD2mFyc= zuU}6~zm{<|lXLmvl}o8tuVq|5n{qBA^*7EuzQ1Y@7c9UuJ1+mcl;6x18|uNHa#o6Sj@c67)m@@X69_Nzr%DdrZ+r~ zw$S~b3-CT6L@){5+sz9Ru|N4h31;R0qDXsSUAd1&TB{ss-4oUCq9qs`cHbA4=?qZh z41Ll)L4h(R}El~bsaHQLZyJk4;r~DfqXEKA4BIpf6YLnb!s5o%eJ^D z@k8-1)yn+~k^j&bhy+bBKM+JoJ8x_|jjT-4#u57J>zA<4L39!|$=CdbleLjG<*xJ_ zirRflbmq-l_kF9;L36F``Y#rJ+@s?AAMmT~zfk-5A?S=Wfw8JR6*SG_pgo60Rj5Zb zo#EaNqRYuWDbM}kKNS*)#|G$gW`L7_F6&5O5n_@}6M@2m3tYziBKQ2(&aemlmzYcR zf2dGGRUjR(#S`f3>g%5^&DBNsQz!qA_=e zejkW9C2M}~S?{gc5!L(9=xh!V^T*p{7yR^wO$;T9NM*NMz)0V!l2@Y!T-z&5Ziu6f z1xzM&s>4&sM@9ta3}kd|kk@n5?c;4;5c8D6B*SEp#*)twZr(Q+du^&w$_R1!HJjVPhs_gTT8fS6kGS)T2@l=64# z)SM4hhh;#V={lRkc|n=X35d)lTz3y@ZGHLzoGj&!{7;dkW-W{I<7Yh_9U4(^x-)6+ zwEb`xZtP(9#D@Yi)Yb1@N$yh<)-!-(19E|s*kf{xKKor*?r{)1^w73v!rw1);K$Ud z_b^LW7fKg@b@r42Zm`e`CcjYg%<*OAnygtA#8uIOi)7m+;8hC$1UZo|uQ7Bx3`t@< zo9H!qEhFMjyzUU}@8iUJ%8>?9O=bO)70p%J&NEKhtDlQ}>#p}d0T~xW5Q5-9^~1!P zcbabL=v-`mSpQA#l){GkZDN>$e_i;5oPi~Q#tn~9!(AoZ&rjGNEmT&m8yrl3PXnj$ z$-rM91db+D?#Du$Du;nbP@;#VJ;705dMuM7zXuVW;u|`C6NFO88Zq{UrNP8Vg=6dv zHYIH#P3Mefahk>p8kTee7T<&&>EBnppt)Qv>}YuLzvjzCX6+m5-=1uI%A$y zwqX1wD;(35+Dbk_xM47JDl5RNztgkw*e=x-oy`)%E+2cqIRHz-U(IjR` zBXPFzy%g_# zjJZ`s4Q+eZIV=>>hBohR`KJc!XmjZNoy;!%+w-YlXis4&6+KD_-#QTxT-cWBw@(z1 zeccKItWkP@yGwyTjf#r=Yj`OK2B?+2tB3=T6|Kqpx~tDfr<}sl4!p9AHYvg3-C3kk zXv*NdtiFz^bBqU-^p`xe9)5|VLcEte?E;Zwr|T6TaBkN573mdPz<(Yc8f@8+Id0A! z5bOUVSzyGw9TRFj`s-hESaGKBr!tT669f!8A_q&{#-VgAo+uq0G#YHQp_ZOYxzUQ8 zjV}6ZOte>wDDoxQ+m15mP(G)rd;Z@)<@?Zi*;<%*eR*mm=YJAan(lW)&zQoYWSwR) zXrmXegPcterRHVEtJ4f=UtTTe!n?R3&%OUY8S~CIX@3~A7vp-H$|{k&YA;PY*k?X2 zMw|Ii)NYaOw=<)_8XIhn>B8n8Qlk=>532$D<;u0S1QfiqIx(YwZt8vjqw#}3BJcQ@ zeeUgaw9B}k{=4Y580dU9q3l+*rX%S*>N>9X@l?JA!Z$r9Tdu$nsCcYZ0a%;qqnoZ| z1+`eKaCBpK&H-bqkaaOj=oM-v^qiwGxN62Jrv&G{yVpPdU&+*hA$56KjG&NScC=kx z{KC4IYedRg`Slg-C<^K9GmD5{C&^EK{(=GV+J_l_lKU{`Rf-T=7X*!C(AzO@Kcex% z>ldQ4_gjaTZ_IyG_+A?Ik4-kK34Q#49DPy)&?fU2is-Hj=sZgu;aA4PSS90u7AZ+- z_|r_AvWKvW6I4<-<6JZjN2H)7)mZtOZk^JF&CeB_tJ!aLIz}1)B{c(WGH_rwYnXCm z0N)V1ylRuHh;s0yaq+CDRJfcTD9gBv#$B#ySgr5lA53SR(84bYqzRy^#tlawdieH*P*tuByX^1DrHR|3mP+w$`rN-* zm&l^lvp#7JZRIgLV3&WlB;5U$e!zRWtX7G!vKZ&)sRe~A?n}A-T%@`&{C~^6wiVoD z*huMo*cggJEJsW8T70(Ls8K_4fVGOF5@7mfHIvx>1zppdiMQ0pz6-F$)fnXJr4%Tn z#e*JZ*xRhnFJ-i?d#Y}0V1;`00;|&`+>3xO%B%Nb6Z=Gpm-_YjYX#jMKF_>< z;D2NUq%&S&)u<+QY^m1}&lBaebxjsCe-Qk*6e|MQuPHDsPaO%N2|BHJ8vqda!0O5-wkp zwbv+yTI)a^rfN@>+f-NeMG4Mn@A*q|cgzK??$vXby0~%L_E%qjxkBra;x_L(QO+1W zR4+n`-K$z}Dq$Lce$yW)d)0QwxYOVt-sk@Bh{^7L`71i3Nj79HZTLt}7) z62M2(>NNU!+sNbm3BQ4VPTLkcu0h(qUDUL}ySwBzAw|pFgZS_po!WCtyI3Mgi4&8n zToqOXl;5^fiIoxp=H$J1M2^3pe*xruA$q@DXHY#Xed!YCXCL~Z8<1^!viaKK1=p6! zikME^0eLpRg`$}uCMl;Y@7J-n`JrexpI%bF3uG~}v_A0PG`+-}aOEtV2(WO^St{$7 z=C-Z(icH^Kywv*5BoLF6PT|b1bKRHtr+WMCZ$NQu>k7*QQXjpTc`y6NSy{0jkK9FkEt+ENq_EK<815vv!!Pg zH(LBJY|csYmwh|`1NM=z4}^Zv7%w<=52I#*abqn$9~3p$fP@s!y}$}i2)+PtkH%VU zV1nbmRCS4tcR8{+nxT(xKH2kmxboedtz{iWUV#vtJ1M^jqXDeI-LU#VJ_3H}dm;_a zi|?U^hMU8PNu0u88tEa)8KA38G*LG3eYI4bBvXIVNNu{7y@Lrwhi7!_oVxvvqA*7*@4at=oFitSbrGsvk}wD!_w-5i*I(n5v_6R!=sUCl0e5-jJ19W&XDBPe6xZu z;#Xb}mRM~-uiqZtM+`^H{&IZODmX6tP6qZEC_q6)j52=%T2Gvf{8ujG zJrF^D)AlgXnZZ`)r9*2QlRr0~RiN^D5mtYnZe3?F5C00N{wCARL5R&7WYn-)L{~XJ z>l6xWnj3YnvRn%DswIf$mW2I{Y8;w9ux9`Fl3-sMxX^5)1*jatm*RWO$T+44jHKVp zq&8u`3W%=?01vhYrt5+yemL-+jG}3_g3i|MS{!K)d_@qid9(KX@qHN&K3O(cAgnx6 zU4*3!V(yHHGG;gYxh4S@h9V@~-}TH~wePX|0}RfJD=*W>MBj&tt%85A`eJl1iy(@v zMA$N5J4t*X~&z!E(P8tY2t&C1k2T5a*B)=*7R>mruj(kT4a0kg>&t`i%R!b^>C4h zzE4zesT@7Xgky%h7;Z*Q4C~3|3u#*T(D@e|F6pg77X#dCJ$}to1{~gwAMe?t#hU+p zfi4yFaP^r=Go$+7gx}wJ!``n~u~3p#U0F!S0XgS2NW^!z$@OCukw+Jj%iz>RP#@o~ z_sB~!XvKxz89F)!(Veq+$Ms3~UXm>~@?_{d9acw^3s%`sJ+R^67}vVMfALwvYdiC& zoZbD@OxqRLfeJpS;l9+{nV4W}iN#8%JKwk-1ng*6$^aeQ&U7k9Dhku!^Z7v5}r8H`QMuC;W+lAxD9F%oRs?b)5pP zlC*pM+cD3bI?cvefFy3aA}k(s>1n5q7gQNt2&(@wtji!>J34-Hb*kW)W;4 zGY^Xx2`O-Y#5F1%L#M&3gyu|{hddt( z7;2)&KXSAATd#|tHZth8XJ4fn1!eoguamYa_^(b?5djq;%Bvcgf109>Jhr*LN^1tM zF-kB^uN_7{ua}FlsmoV}CfQS(z}`f)@i94bOlR}XX)fv;FAlMrJjBx^7bB8o=ZP3@ zqLvzOE7v;FrgZHav>lLj=(FhsB%ZV;7_p>ye#)3f9$Y-$^sw{RmVp+D{WG!U|2Iu? z;w@rNlRoRge?%;tj3!)jYy7DUkmn6VX`Xp9u>J#$98OhpO_o7f=<@{E4TunXU1f

ua_G=C9=n#Jq68Po8T$qSq}OOY*&Ou{cDV#U`jO?a5gpgW1aSnNzJRklH%z42ZlVaWyu-f_6pyLBG`9U80WYkiT?nO<85=Bq3#JBP!q@)WerNn3-XS3ZzBjCXgfb`amg? z#`@x;Te{&|=vgf+WP;@`S*O_%2tPaYD#4%(cDDn!$nqk7S+&H8Flx8KBALOd)fPy? z(vbVO5jfmy2C{u?x+tp>*23Js%RJ_gF~M?+AOm}}UoG9Ddh^oD3$@i*W_wmXEtHW0 z!{6GXdZddXhxS*X!1J`ay$eG&(sS))Ivq?eJ)p9@{WnLU+r8xoyl>Lfi3clsf1mNv zK2Q;M6PvT0(qb%9 zrt7rEw_gM32-zJD(7v(P89qn{lNDbG?(mbDb0qzbv!7Imk+#NH$aEPp)_UX=IQCJX ze(fA3TdCSzgic+R$r6!yJAdl&!DMIt>zR4K+?J@?&A^T8tGa|6m#Cpbju{qPc*2ec zYhV6n-tN1+`CEX()`z5WvV8((78zV1*0xl(2nUrrnsz zz2)fNMS#pQiiahW-gIK_RNg)57l&oAvWtHUdo`WKC;pqMJvwUXVa>g4}(9?#HV z$&SM!Fs(rE2e#zkk4lW0>leGg1sAzTz#s>^Ji+c5UPJPM!*e!#(6?iB2;wrj1uN#& zG&|0~Mxw7Wsn*6ws*D;<05XyfwGrqVJ%!mEx+_buYx>LN2QQd=&d`%4x5()$so|_a zXL~~pu<>DL$UEIX`nY|K>&GKgm)Zmp=eQ&lNuS~)#quMr5$~nA60NFcTqe8J-DAARsA05YiH82X4v)Y0tCNNW;A177Y^PT}8rbsMgW2(g|eicuqY*i_(-Kd)3P#M@? zx1WyMJbyRC_{ZB+XfPNj$~=K-inSsBCl3wE>6oR}y(uvZQU9rlT;9SJ`x7|_{zRra zb8u>uy2JFQ^o`#)`RrV?MdjMm!w1)$x1&%W;Y1QFic_1J9@NWXk~)gjZ@1K6@!59; z_i)c$ruJzJsw0yrti|pzp1)A^1}3G*?&CP?`FdQo7F4HI11VjX_lHa1^V5{GHL`?9d@u?!yd z*_RI;>u~pg^+OLXmd(Q4X=oGybkmVv=p)eN*_HWgG?oR|4>c;xL}f);ROw=4Rq;vo;$x&nX$MoNKOkI7kED%#*AzEhq$7SR?cdJC z1D|J4EUp&qCEL{G!}kg*e;M7Q%Wy3dIBejZWIPDOFEg2$Pt}2ZgIUDOu;QAh9v_C_ zYy$|6sxkp^D4;sFpQJDZ>!8_xTl% zmDRAE)lhE2J0*ljZH^0cc}@Iw`@*$}S=##O9nRQu0!wh#>Q>;+(M;XOnv8WN*iJ;0 zVD7c7fU9S0D{4~;R@1uJvu7g-2k`=8xAe@2FO>E<WPCkdGiKo7k`?q^9NWX}pyuG&SUQx&UY&6(rzYj$ z(U-jI%V!3lU5rQ1f+({QDe-=+(i3_L}e}J-~z`=S@NAQtZLOsL~c@SGtPQu z(e)|Za87G+vN7S-*YK9qS|@>nS)L3L3L$M0O;7Zp$V{vntIcOHN_CK=lN*d(+D>hm z2_H0)7GVU~6pGPgO+5mwACUgZ8H)S}2{u*}JN{*;zAv5MYHFznIjsjbGHyj;3Z(Zy zRxUV71K@PZ?Wb17bD(%6#ZzeF89d@LmW^=EjR}*!Lp6v)@~t$9JH#(>a$N?qT79Kf zTsp$}Uo;O?FP4@JXo6QZ zKL=13*?z>|VL(4*D^&CwA5vVz6*IV;^A2BrKz}PC+XDDS_IZB_xgo))ct;rB54V;o z4?mV5pX(|}ppfLC@=9Ko2^kfU<%AvQi#-fj2V^R!YN(*^F|t&i8@4>#P|K@s-ezC3 zRcY!Ny7Ho#|I$(ufZND9jKyozy`L^>g8;a0Q!$vd6}1iq-z`9BF(;V9eO`?Q({OuL8C>B7*FkP(E!YokIHJNNb#v zB;0s~=7L&Twe#1ieDaR*+}Th6Jr{W6F`9EYsi>bK`Cw(cUUH(J@iWQ!defKB3CtGl zWhVw>*4oOkH19}iQU}IkTW_c6+`V`m*I0YHH|z=alobC!X`gmOrAGvaYk=My#e!Gs z=eWYY1uf=%|D3cL-kPs9Uh?~}8nEidC2EIGVv5We6Pkmf3h6-fta(#&60<0dgmoo` zk>Ois3?CDRJ!c8N)pR-cH9E2j6j8`vWz-7WRqH4=B?0Fdtp0Z0tuyv+*3e6Sj&e@? z&S()&hCd-0Z!M+7ZW^E~wf~qJ_AhOpT~yK1b3Ae$^t~73I_`4%IEs(_%V!B}%TeLF z{dnT?m%P*)8SbE1q=k!XKgj-Okd5P#M-u~~FNmMbLQO>AUmaawJIq-`!&lDgctznR z3dek}kQwe^$F>kOt)Y!mvkCrqeuDllPP0BdCfA>diJ!Y$6r;thKSX#w)%w|gT6Nh4|_+m5iY4E(6$|H^u_P@b_q zw`%2a_nD$_vbU9iH2yNW47<^tqSMhoGwb6!%};ewct82y4_n)6=HEswA{!}Iy4td| zC^;bYLHw0Kyla1!V6|iAc>Mxv#x$)%$iHutz= z&DAiPo9eRL|9_Q`gNEQ1v9HmZ!j{tVgr@n_81{ka8%t1J&*nhn=`ux7YhHjAPu$&H zTgvL@o7h4)AD-$;bAyAix&$M7w|xmvX^pI~9hx&Husmz~JFAd}4?bKuwaguT`d2#f zcK{8qUr=RF$WbNOuu9cCv=V&w2wQXQp!xyWK+kiQ2bq!wnmsFTpejq!)A2CMY|F&jr z3)`&Q9o?e(XXAX%ct_{Z@b^;c1VFt zViisSMmImCS{*{8yLuBo(-t?J=waxMH1Ad!{Nn&!0j6;riYzbG6TICF=lFyXE%C;S zv#E2Ej~Dr$o~smknz2YW`M)Vpjfn_VOC5^&C~E1LAL#ZG)mA=7oVKHq9A$D8tAsFU zvyc2Z)T9EOJa>psHypqn)xO|6#T3w!boUPHn7h?6;V}FTkk`?BhfA37Y z^M=AI9r(m*8EgG@RCCT-BgC#|SE$W1wkH{Xy1eehgruOt&Onp+j3lxq?oc8byH3n7 zT=rH0XVJ_lleGbnSC!{njB7fzQl)?OX~riL(RcQysIwP5K)~aS5a$S}n1p=&h1WCWUf>Ka4hR#&%q}F? zb3C}IX`*?>562NtDO6kT9g&LpSt-;-K8);93G&i==(C8ny7LBfxm#KJd6&%`Sr_I& zU8J%hxq!P}3eGXDcCJ4n0U2t6%FHS8zU_(GM%kt}*XJ4~9@qL8fs`G2nW!LjXnKL? zeUeJARZGeoj$v!;auaD~j9ea`y>CBW2WY8-`kr(#_TX>IDcesyn9BXF-#$HNCw>hq zzHSr6QI#c%Qs7|OT4}lKiQhzz(*u{$V{50flFXy)GXZ7@i!ritIsiQkL@-ydw8?Sl zdA$`XIyxV1Y5T*7`ze-Jl20(bGzqeRR0iz!Xi*DH-a}@e35}TZymaA$=6MObo&HyP z&|6<+7uW7JHl_@}LKC!q&Rq3x$?56maW0m#@JYXyBp>X;a~^poPxPdJHoJHOKVF_h zh@UjWgjX|SQp|R5nXHF}>-X=?HA{h&QlWvhPdMN~xC*Tj4!n`)Q+|Z>tg3YBI?3r& zhCe;i@6`tQNWw*L7&)N8<<3bBo&$w+Z++;SjutjhnW9tRI?z_PzU5lL@ru-v(ErMK zVtPVuu0zsdHC{P4>J`O}F5K+%3?3H=V9Vs<*$B;5?3Iu(Euqt#Q$8s^sr{2dv+J{#jaUmHBsmqU+rqlLO1O@#Zd?g=yoQV){rF z6Dq_!?Vs!M6^IrJ=2?9s`LaoY14UTHX0XO6?YZ`Zv<1r}4U#^_+%9r|XXS{@EobFi$aruH zbKV7s&f?iHHW?=)fjZ<*RC3(`aJplT*!Ty?ldl#R9@3tf%~RAJYASjG9b%XCBqBPlm=2xu}G z4XpXpnW*iRHLfzCfu}z4tC3RZdix39n;V&gA97VFWUtA(U1eztv18IeBYtWwG3V`i z?=BkxB!{AH=5%@CB@1<2lJ!ltb{3o?!lr^@*dd0E`o=ULo@siRk-C@1%~ujHt0N5m z$1pgkrq)+RPwjMI-I+S&U;V^E3$aDmw$iDALKfqZZ(~qJp9-|ocaGTg;3E6J3Mc!X zZ9Q;(Uv%-sRaj*D;X%Lf9lt`v00$c;L&WyL``efFr$LIioKp>OoaasJv*#ogC5Vl4 zL2JbxDb5X^FHT2gsyP5#dLyB=Me(A~jPnVbuCLwm@yN#YwW3+T{6-<-A<7bdGeioR zw*{2BTRksji;_1osKnKYNkaH;e8NA6RjO7-6Z40Jfb zjmh(FJav6r`dqEh?U~Hpj~4m59ypSI=uDAG;cFUSV4)V9xTPF)A`%UB_NDl~F@A$) z=1}IZ`9{-%0oY+1x69pDIC57Sbm$eYuY){wP^UkyMT<3CQ^RgSW=5e^a6B z`&(z0=hwF5?#Y?>rEE~d2JxV*7?odLA?~-A<)%@fJvV>dj;lxUCw#s37zQYhCt|VC zGARkhpN8q=#eOw*_gFcOX#HJG0hbU$6GJxHM#l>tI=~7tkS(7m-5Ps}`jiH;LV*S? z1KY1CB@^{Zd~F^jX{H!h4PL2n265#lk}_D-S#9iMAKLD3b#{S5=;kRGz5X}rSr9r^ zgIv~E5~5DF?JYklp>K5h6G3+Gic^LV+uzgJ7fz#DoNM!;pm1T+5T zlZhvL)emW2voGqvWMgqFcz?qDd`*i@2u>7z%+x_|6cR#x`jurXC@+sKmB9Y@_Vmlk zTLLx%k45mj?h!e>CsI(z+(FR{LGq7?>-|D^YEy*z#`W(x@+Zg#TB7&bi`BnLE|TY^ zx}4ak=R%Sbf3}p~t`_n1Ie*@qJ?)MiHPTR2)oeP3Dow#t;i?;T_L|BOm+*+e)KK4i zA2DoEie%&o+oZ60&;%!^cvygSCFVNQw?&>)l7k)_onsVMwXh}W`;1jribfAgaD3q@ zomXT9z3#}+cAX0*!_mBpSn%w4#;Nu z0qaQFZ-u(92twJ;Pl)0f7~|G<3WC?akH@(Ho>Vx2!KvwMCH}*zZ@6i;G?*B%Jz_rE z2ub}1-aw9G1bs9y134DDN$UC{Y`)wi%p2{Mjr z_*Q#wN)1&=xz7&0?Hp{BB5J^}MO4TA6*n=Q*pqZa_EZOxRr*OL*o%oycGI7TvrJLp zVObwDd2m#3G4@IyqwC>&UN?m?fw2f+$91D#+zE>zSF!hs2Ts7 zKE`7dKyTavI+#zi?ml=gWDW%mI9;?2sXNVP^0yK#_uSF`7bzR!|y*hU9Ff}hbUG!WA%^KMgl4!k z*~ryy4eFm6Zd<)r<90OXp$|NYUT=WA{9-0*yDTpjJ2Zx0t0JPD=0-Ak9;GohHopkz z+RtZ^ATv2OuqmNsCa{?5F4DD0sE^N~NEU|>T*>`x>7>UTjN_+_p0V%eep})4(KzGS zURUo|I6(*aI1LVP7me6c%l8pA^LSnN>oBka*4cLnhedH0$5cFZ@d|OC>9KPxIE5cT zUW?V}*EgPp+f+ZUKjkA0YbN*M|KMPv0(si(pREhdfw9oHg`5~hqv*MS^vykIGqPWq zw^S?r`!0bLMN?3-g*QW%Gt~u@ogPQ*q>;+Ou4yl6w`QRZ=IZcM_L7Ifo|Wv2t9#<@ z#5A%yfep72e{6BU1D8rPvU({doep~OF{}dYhQyu<;NN>+oblWkV`1P0&4upGG|0I> zat8S*%@i^;fz|2IgdySTW#2km{s^g08@Aqk|BzPDayLbCBNM_aXA@-U>=0&BQxW_e z<8d6oToNS1l#(kjd`$AN<~&n^DC;wXp+D(iE=eA`qN3mOZUrXABO8?C*Vy$DHbJ)iII`6rj_ddzEH%USMo zpZgRSO_U)E_x#LX#?J`?mwxlwnsLX}Nq{RXZ1tr;J;-kYBC)K65$>r*1Y`CRuD zF{&8@dlILoXSb5S%w0q5|sUhj71>x zBYWELH)i3-#0ur{TKlhf04YLm7#$8$gy2`wTp1|rV>Sn>5f0iMh0#ztX*f|mf7>k& zayx&<0x(SU+^Frbh+s>bVrO~bVm&V@@_s^htG>f>`)9wFR{Sl{|7k+L%5pvmJ_hKb z>@K94$clZwe(5h8ikGO3*yR=>*%Lbndp6R25*yMOnGA z{8%2;_FymUd#J4pAr4vxuOqg~z@+VFIk8>z~n=VEqKI8E;+gX6z;!Th}$Q;w-mS@j>s96Q4sflAN8i}~wbAjj_8 zLIXNZ^Xh3-u|PH5m_t%ng7&%tAMfw5d%M^gGkz-P*5iO%aoJQV*&eU}!`$E5AtMn! zp+p?-=uy)AARn?7?$QwyvG9%(;KI zB3`z&>QntT3}&(G)N<&l0M&wO=wt;tlZy+w2iJ|nhK?;19+@q3cmyBq!s^@XHANy~ zK~p$RW$k^sT==Jm$^X8=h{V7e2Oc!+bY-nW0%aBT(NySF7yjFpq1MIZNbf92tvNz1 zA45064^;*Q^E~ebP=AL$NiU@)-@#%}oQC80+uaY=?zBn0zI?@h#R=@u;PXS2YKgN< z7N7LjVNj$xsurASkcQWFZnfvyq`|77z8D^JjLstNSA`~t)XM8e!>Ajs4eW#EZb9Zv z?!w`L_$NaW+cBZeY&FX%YMzM(W&kHFzgqKBm51i!sfr@PFcl8^-?0%vh^T7_w!iqYh%Gp3lo7 z79<>7&-a((Qhrk(9JvFfTQlmldSn2{BuKn{EpBmTT|&&MO>$fQ9{V?S(JJlyV5C7F zMh_Q4#rD4&`ga5YWQBh>FE5`Z^sNlL7bRFk(=Z0g*nD~G>T)N?K&DTcn zp=S>QvCn0G^Fdw{a@`yzcB6PvEoF2R*SJkHtId7c0^*}si^h4as9f}z?51peW9nk8 z=$S9#+&W`q>mmi;DLb6tbShG(XRn#F-d#FI^Y!l2A({J5_O&38p7SdgDY&tQk)eZ$ zdQkcyga_WGH9ZM9D*^8)yQ_R4_3c3*TPIYA2y;{#Kj1Xc+%tYOo;15&Kgkiy8?!3VZj*`ICB4<=#HGSZ7`nF9 ztrxClf1%8oRpmp2pOg+3BropR_vUp>PjJQEYqK*yrC$%8B{E3cEAa_wT4FzUfJCqX z_T#9_$`5;^ST4Z(UMG_bb4YjcmIs|T7$i#wM&*dC_H(ByH-~&wOvIacp|@$JYpgTV11Li~K*a zG^#pE)M+p&Qe9Q=9C4v!(66Tr2dqoJo4SrTaRGGXiCh4WgcTk!DQ?MASF zZDfkAz>Syq;xUS*w9dtuJxyy-?jP7r8BKGPM``fsM+uZ$Dq~KYK;;O{FA@+~37l`W zyj+AX;I`5Ms+aTIqC+W(DQ07r9^!Dj9m%G+Dx}=w-Otzl=QO`{R|41*yML_ zCBe%b>JQK08xbprN;JX3cF5xhr~A(bG3x|cOfk(0n=|wopD)V!rfcndS>|LQu4at_ zFTqq0obvg`3eU=xaE|Gt`?Ye|3Cqg>zriK!)hKdS;fL=>La8$w-G zcTsSX*Q-9fx)U)wdGFl)TJe3eW0UOHf1m%RqVapUKdz@}Tn2ixOt4K$X6IA^ezVEp zv)5lWD--0}*(dDHsx3GYh6xm~%qa`t-8J2H-$e8x4{2_3R>AP#=egjj z$6e)N6N_brW4^GE`h4tYt^_*;OP_#9d%b}h|qB55f;{JR6 zy=q(+8EQFJQ;Ojl_-$d7#`sbN;(W(17)c{puXLl}Y15E%U$upIpJCJZZx1T}!6o!2 z=|kgPz_;?Fgf`+n9+=Le=h*<=k>Hj5dHUfhMP)(LgaS*YTA5>bMNdrf(e!4VJE!sL z76m&UAAg|w&y5{lwV>i+&DpoCgkx)0iQ@Z?IigMEyezrSS-(c`-w5q~jwH1S-#Ah}lx!0aFyajhUbH|gWR zGha+q3VKt3ERbRbz@%8GRNI*<^LNiigWcC5H;WK=#Fbf#Pd(r{!$(-!uqDYrJ=#W zgAU$S;RWp}_^QI&=)qRLOdxXzc;D~`dPkI@G|Dn}N5`m{wZrEhw_`U^fIAd{6NhpX zySG5__<^|d7wGy2$$F)73OU{_b+4PrUY?c2W3O?8zCuOaLkS$rb4C{D*hapbDUm$9 z>r3>K)wZ<@u7U^)qO|wO@leEA;>;pwwo+G2Yd1?sfmD#%aqW&D-;YH!f z+K_j|T!zzMM4TLZ0(ju$!nwM2_-~c9m|?_Fk!d9`-J1@B1b-NM?n) z(4KG@)u#$Dc7)M&#BPJI#Lo`F>D78j0TtpI%GpeQ{;^lEJdy28A=CRLF zUFWbAdI+Ll3dKBT3ui*kx7*u&3zBjpUTmsqQp-e_89Q>E-}>AOV298Egac3&idB;A znsaOthyIlM6Z}(dg<30(#7gxlWg=H1E2Y+Yi!E?jN>h<=q#wC;9f3P}d=v4trc^&a z?oRw55xmF3EK zTKO}omKutI=`79VEmA&&^qFrGZ-Nxy)GG0h+A=QqR>YmIJo2jCBe%2EYlq{GBLnq+ z!{ee{l#kq=Oj}VxrOOgygVd8$sfWf%=wC4M^3j+-4=kP*U_jAMkado{*LbpdKL()k z%c1v5ZKtiS|G0@8CzHbY)+wMuL+IzJa=T@qy-3J9VS+lu5E`cT@3O;&9Jsx^Z^d3E z9$%(uCApGt6i6simGYl~tWtptxF}COu6TW8=NaY-x6__qmfyK=`p)ymUntXWIiYFE zUNVwF zNIA$U(0d{6Z=5d!^OW?Z0F`@m{pk`~`K<@OEuVJZX&ukf{D0l)p=wO38I)U<#4gUn z{sZ#oW}juKCzM+yO^!`ve;7P338gj2Qy)4K>T2l|b0xFPH*DeqI%dZ+FB7eWm}4|G zJwvj?PF4O7d8 z#eQs}-6YY-hz6_SdGwg8z3*-%8@{|~Z^llb+sNpP%&<(HDa-0Cd@dfL`0-vxosJ{7H))%0=5N3eIE-I{9zNQSMNP^ZUO&R)T`^NF;}O z_M)@vwtyKzJH-ws&P23AtQt8!pk1{t&9 z=}tMP&I>*v*=|0mU(2?BrI7WF9k{H5Fl1>O&LGWUcu|V^QgG%otLX5+JaRAK_UOZzY53gpecjwQ2Zj(@EQE}qL@~!F)__^2;u}?DyG|MWpi7M%{ zv2sk6)~a6@DPSDt#9b#^S&9_ZrPINR@zFRgqY|eE$Y8jF#zpp7#CT=X9k9oqr-|P0mqPcY(ZYQWwh>hv;dl}eOkYcn zvs%lcO_CB6c<~65hgpvQ8bqEgGblWNwB!}Ts;likVHRJ$Bg$Tw#VM-^EJhc&i#q8F z2G?a^$c~S?PY06CfrV`K$;`qA|3<%u`**iB7xHk%Y|YpVbf#Z)+OSH~@+&(e2wLWw z@J9&Jw`N~3s-*Z6a?DKux#?c*Dw7XjxoI;i3B7Z18Z7sA;QpA<@fH8wtMo6Q2V zBWvFl+k2^&bBZM3L`TYu^Th1kSM)sALRCE>K3=ugiSjRH2SQjiT9&ex($2LR6yMOh zv*+}R56-Vr{+m~UBQ-(`h?YB%UZT3;x%TQe9Nq^g31`CTUKL zrXa7Io8^Y;u*Y6K#YG=~AZjNn8aId?$@BHQ^Xu}C%02lC@X*Kr2^_Ds4!)?c2eg^` z!Zdlh4Vk+HCpi-2$?Yr;8^vu?84R2V9T!INBB~gL?FTo`I4{?(tNrG@{;?CUuKy$lg1f-)F!N%JVa^8pZXHhkm<;SRwKrve0FxSB3DSB1 z*rT~O+DdY3o;4k=Yq@+l+7Z;gOd#~;tS$r25ycXMsbHaT<|0GDaO}Phf;^e!yr~|t zI)%TLxh@=OPG8WRQ&Qat%c6EbUe62*xpZwv##!epZmmddcGBFs>N4l8{w8JwK?;9G zjBq=Rl=e@C&c+@RD<@+?h-8jw?1tMvf-YlN${%{J+BNv6*if{Syl+$ZW^FhuBXaU~ z1D<|!ZrnrH04DG>w=tojWSE&F1))k=7b$trFiNL}%$-l4fs)}+7Ow7SN=@6bU&r)jLeyM`%UTcr9roLNPN$uo|ZoY-)5LGj# z@+x7R(Gy9LJ?Za0_Pa`MzC4OpB+;>DWHcm94BkN54jPK*0s9vt{x@1=i+(4S^*MhY z9{LiDBb8LJY#27vSeT0srFV}R);>5NF|QdNo2JV?n%V~4rCnj%`>X$87^$u^;5+4T|AFSif9*<_eK z!BHBg3`!#=9iGi2V491|!Qa+lCmyh%AwPH-*GjhixToueLxal;5-CDi?gTwC>rX|k~4 z6DL&Rz6#D4OAUPq^fj{X|GxP%p5|+p+{p1F>?_*=WRKgot0_#u*BQRl(P0J@j?{=z zz)YW>60Vm*GSm|5OA{rkmPRDe1P0Ixy=y4Tmmdw=42V|%s$~==T-CXzl=|XSL*w^% zp2s}4w;aqG`1>I1BLsa?d=A~1-$U;X=y+J&ga(Zh>g!WWfRO~!IL8K&!mzf2%83|T z!8?032-wmt14%mdy{!?-5Bsw(qsi6TA~=FjdyW?!j3Y>E{vrqtbrENAmlZ+PPxYr6 z&#P#occgidS_Tm28)>^d($F3=Z@43D$4+5B-BC+y%{5_k~y@PEr?(OkhQjs*9?EEvV%0l#Y1o z@UCr>UXJ7agV?w~c$mf6W~G9{z~5*A7L<(G)gIKmoa+(L?I7$nYh{9MtUND>uvH3A zQj(j+O(M9SFEov#(Y`uuODH%ff5FCW&V9x8UtWKc7Li+ojnb&zm!~9I5s&Sxg6Ri% zANrsDmB0U;zRucj1-8KdL?Rlzl9j}u0`v^InurvVd-qHUZSZY)!e_SnS{C4g&F+@% zKGlq-N_ok!vSd(@pc ztxXiBJ7xR1kh|tKeV-G2>_&d;x?i9EKFmC=Z#RkFk1rm^u1smIvQ3i5^70?=Vq^r? zy5YO@9Ho+PIX)AZZ{;)L<(O5se%+^^dsnt*3)f<{uW3!;xQrg+Zzs_4^SioK$`yfg zR(p74wv2x_lhbIiV%6F?q}HKz>SQjlm>UXfuV`}mWn`hS)@dlZV3)2&ZjjiTj1%X# z+@BUAf*#&PNI^GoJ65rFFqH82>bNNWOcL*TclET&qt`^KgGCc%xc8Df;8vN|*7_d$ z9MRdK6j9`8QO}&IT{>8dF?qjHAziI@^v_EuPac-7!ko6VDQY9+dFV@UPFP2r;iC%B z^-q|;jrOt$+j6;53QS2Zy(*EF<&kvLM{fI`)G6{CL!%}xh;Uiqd!%OJv{rlL_M6RX zxNes;(l(#M`;#}vTcgGn_W-Ag{iFp1bjrX30us_x9$j8hH{ZJDQiRW*I=#kqdT{0W zr$n6jT-k)mSYg-QkA$m|{z^hnV{Y4W3Md@vb4550^2?24i{k%5^|H{!pt-f=G)_?EAho60{sR zZ%n8@q2n*j8YCg@`D~@zOE{W+Q;eyO@WtBudM!sY4Wbohi6g5%mqkxVwHH*VJ;>K+ z+x6_c-<`juK_owg^2Wa?e z=Z&1p{-|q?)I6eaf98r*OTrwl;}!FIKi*rq)nw=BzNaUH`G~U#gr7xZl&xcV($ay4%3_QRcTv$*XM@Ss1S)Gva`e7SZ!#R>4h{que;U1- zEQRHp=l{dgG>6Y%|4%&@D~*Ui1cdxm)I}`@;a?6dLo9?2mei(KNANKkK&c6(pcd~~ z@YU_8258lKGAuKS8MY_r!0}60&}Ekt$vFQB)xQ=dVwpk?8d- zlJO1?WdZ+Dk%A6~N_H(>=7fAe%0a{!4mioar5>L&rksO%YoNPuv*_endK86Rtznh7 zT5s992V${x=DQy|?JF*BdH?Yq-tqBXO%Z&nNh-;C;-Xd}Fq%Jq{RzBDw%^QUY$(t) z$s)&fsVG%6jbJ}1-HtzCBFQhdKRPTNEF96>;gI34jje43FLNUkg+2r&kKnr%FE(Jo zZt>?ola}a=6#q%3!#cK!4t${+(;FAt@@wS9#eQ#w-H6%Fky!TLX{vZ-55w(_$yVYGJ5zeW!EGYzJ<{8lzY`7W?)}oxgvmxX>g0p&DVp~mg!cG# z%doQD89eUh+!}2E{m;YZnMzm%L%9T1L3jj_er>FLg3{i^=te*3?4`J?lellBj=m2xk%b3G=3qukIVX zF(NzoTkB8G-YR;1jsuM=vF2{?3RT(ok)+jQgh$LxBtv&R88}ukG`zDbxa|+BZt~~2 z64?}P&e-qI;A}N4ReA@ygAt0^!mFf{>t(FOJ*VrPH6X*FMG$w4I7=mWGZ33blOS=- zv5&ndxHTwm^^NNrY3rEHhq36|{Q?iqP&16ZnBSu-lkU0tcmoe_)4yJ8H9b&xts@mY zL@xMi6y4--r(WZsDZVwc5u6=x=T{?65i1O`-KIyx4N*){F+>^vPlL(C9-FOl2`tv( zj3A!Wq|TBbQo6=C3fU!k-(!WnWseH(+lL&R?S4kN{&89T7=qi{=%Jy`df+h(B<_Wq_j)dgc2u1#SwxGVhS8q9;?M2_X}*CGiR0U3vRFV@sd@@m~vM=|Gb$<-pI&Tqz)y{2t7-j zK0-L3LGrZcbv%qs&xR9B^a&VzstQ%~N3Qw?qACN}+5EGmGtKINq0Z>RqULv9^_b}g zl+5La_~SJn!SsuMqXL?2Y|}lmDV!6+(=nOsDyz?de2Eqa_#Js;7iCZicB$$E53CYY z_AS%&i9J}K$lQ7|ch_T^GIN!h1Al?aTjJ(psyz1KXmO{25m1{NHpOCr6~5Z4_Y8$*|&Y0>X0O%Y_iDgq=kbl#OE zk3V_FiFa19F=F4r=q9x@WYn1e08aSnT^p)de{qf zt#FUrHL18qOd_$XOwq63bKQrFq8(CsKQ|)QlLBccH^ZCUsmhDyvGMCiSxgq^ejZsK zQMnB{V5Z!N#b^WTto8DK=Y16?g-YBMxGZ6}tlK}u?3|<}lT>JqF2%HTNu!YYAUOVb zBrTo*t$0OP3>xVwUOGx%>7@y6$>e-SxB_fvSX z{=$yCXlQuP*N4VpaO8CoWBgYkaM&F|oN328!_STP*zed`bLU;pC$yDS@5`XOQ*i@0)Bp9l|0*Ntn2U?vT(&Q*z6vs>*6D_ocH?%vCgy`>l7`{u9h6CIU>rgdC@ z(#n+2*QZve<7*YD`Oc7o1edK4u>Iih*rleQnsaLQT?D8d*NMycjLB~8#0@^CSB~{oJ}nfwW>=lir;`o>db$m0L|;9! z-cV)wJi8&r=4F-BZm!*R*v(gTO2I?f7z=TF4j3t4D~TuH?NwC#JD7y$*^@9GcM0)! z!CT8r*qz8g{m-hAz%SD>Q^v*v1~#g*U~NID96Iu_O~@TrvufP{{oi9D0!KxqE5ejt zQqcd$USnBKxK!NI&otd7iX20VG1HkIPOhd{1z$blBVD%T^oJrp_P+MTZY!%#QaeTR z?qz3$|M3XUaCxk8Y=z-GUafTUFJ1JIqW6>OqFkHP9Kw0-M52V!(Y#&A^+WAh#6Ennz7OLpOg$H5=2vSNcf|N1LE0AI5ACY_oK&y-UTAztTL z&BL{rCYrdE;=dR%$oZvjB64V<`!ES3e}>@R?F~^ZdN!aQ<^3yfXr(w@i?zV?yYwFL z-#b|l1uQ6>DUVT%SzM~MWiD#g8DdO^l%Q%s?_O0Y~kTuXINs) z2bYu8voA+=pZJb6nQPXQLqDD@k`hQI^iI?S&U@%5(23<Lq+6J|K!<5>0^KO5-h?Vo) z+EWUkJ7*ff-HO4y7$vLo3WZD(h8P+RL<%<=8d&w3;GRu3mXXD6czg353Ak4HV&Yx| zkyNw3c>FD4x1j5QeCbpoPYIO7-zb1h20^l{qOa;{Hl#A8vV83p zeoO{`EoxQ=nveKuq48lHaxDl!;q0q8Ps-C7KZuf20(q9jKh3!(>QvL#{)^wF7Ol z`F$DNV;A|)`cJH_Lnq?;=|QaS!NdcKX=win82#-!soK5{1WC;l=*)`qQd$M|IpL~; z`&hR!RoCJ@oH0;y=;L{UJ<|Wcj=`oo_DIFecsZS_&^jF)7@-^tbe#72&YE|W;oHsF zxZ~UBQzn^bj{L$+X?uS}dZbkag}SYnd|nq~Ryk&8{1Dm}SeAGN8s*ZlZC;$rWC2^7 z8|5hpzsK)nLDlVNWRDUOtGfpeg20Sye!zqzb$%0c9+$Ht)6`&b?;M&5l{GquVLRWN zD!*4enp#UGm*8$V**B`~rb~4ezNmHxiQ1R zOyqE*Q0mKfU^{r&EiYp>J96^kQ9iS~;+P9?`iW^6Y&qGlm(IBR`nkL8!fhIsU(!A% z9>|@fKtxksMBAVI(1rAza0@Pqg?m1f{tqPP>u2_kpPKnpALHb`NuZ1wxj(gb)L0y2 z2P{bs60wCHOF^xC11SX>ebNx%@yTeidDWaRmzc6jNqz?~IjeG$NI0qwNQc~_okJm0 zK^Lr|ziw$%%fLO^eC*ECZoj;l=_bvMJ%@pupL^-#FjtW~Vah@QnfJppyZ^~t{?c$W z_Tz47^Y1jnRyqE!c6qo=-c@hI!fGyXo{&w&D5cSd6dLf=Bojn$wT9!)v$t9oDx?8`Or+a49|94Zuo25{MaRoNkdY(Lf>B0>>_95pS9T>im z$RcS8{$5DQ+yptsISm_8T-&;DUYA*ei{7)f6aSiHW+g~<6!g?0#nI&~6^4`;wV3w= zk4%@RJJ4)Rh$_uR@2I-%_ZhkzLUxFF!AW$a#9PY}8o^(;R)l_X+VWVeafeCt*H1n! z4T_)4m4p75xM(WnFqDgE7oRAuIE`GJoT7EdX;`&RqmW3sm_hh>QaCN~HDRxAx(sRk zap}ffp}WrnIwCeAPxv@V?f5enhc}U4&^>VmIAj1(m2uvooz5v)LCV<(B3DEj0y0gN z(E)jw4SGjh+VgMA(=#usv)bOr7%Zv&aG(v3sj6uCGXHdMvaI9-e{bs=&eJExX6Ou! zi&~S{URjAxqQ9F73?Svi%hv+8!^xo$!6h=$TYc8GCFpE^YrAF@CFkr_#<8C)z}#Pz`U{_2xLAJ# z@@Zo>})_xi~&n0(Hm(LdDm5&c7`yis;6cWyp&1`e_hAXeNy{ zArTK%UJ36YX9}EioltZ)6Wm_dxaI6xZ9JMbe}S;i8bN}(#lSPN32}(HP3Mr04#K`q z_QyDjfztb4JMM*{j6oxVEg3A6-Xc1ep)S8Ty?yD={vONDn9l)z^_l;lvJ*rs+OQ!d zX+?<$cXu6Bz_`%|p-(cV5tX8mz_d9f@LP4$p|95luY}A)(~2STWX~c$!O==98ry$Z zjz2>O)YNA@A9nYq`~8%o?Tgi9`OM(OB{oueZMbXYBuftfqk!0=g_g~1AgR|N@v~hQ zV`E}+)T>3QKe-K=B7DXlTfZlmRvUmJ&xhuC{>4T99t-h`069@`MHO?7#{{2jcc1`| z0p5`gMfXNhCx2=dHQrC!s)f6v=_R;r9f5^d%|$4wM@wgdMhy#vyGp5XCBI)6>k}&N znN0rF-C(+ar>q;7iVH$G+bY^@=-RKu-1HZz4Ew})+p{#Pueu0y$CP0BN0Ua^r2U2B zEee8DDxvi>Z;TZZKHpw^#!pm~c(!I&{RB)N*>IlJi7p-&eAM3~X} zCgh8e5Pd|K{RqE^Qw-2H#|l#6V&`%~zQ2#qZHeq-GP(%L7y(nPg3W54jBe83*Sl}8 z?BhEPY9~Af_BLc<9NGURLSnB3vii31Kljl6?gx7O*nJns8cUT4Ge_K%;#=|{2~eCS z>#B(3W(s~^AowZkmvl~6qj_y|qHcY^g$Q0ZwNob05aOPKZCb94iG)G>``O*#2$yLz zg_F~`-|WEHR&+@Qt`+RlSP)Wd68v?b!C7+SulM;MT~REoZ!Bee^Rs7qL~@OwgW#+D zM2&Lqy`TRkvBL}fuSRVR!T>G9n94;`t@i7uO*k9!b{+pmS27BN#WoSgUPY_~53s;Y z%F5tYBEc@x*lcr(X3NfA&t56bNVlz81MCMfh?wH*-D8q{Dq!Y-PgTIRyicFxG8@1B z%@fCmQU6*&VSLHhq#V>iGh!cB+Z}f4qsM``LkC#MxLmaze;)53ILPdgI$e8U=-bVj z!qFSuPt@^sTNf~R9hH%DZqM&q54vO*!ot!2fN?E_+`VDteTO6tYh){5LK~!6r&wpH zeC#jUEwUwhZWrt;|MfBPMYZRyd-wJ@Rrlm?jv)Bwg+?xu7pHXog31!=?m|Rj_AGQi zlX@4gfOqx>$6cQ>M(R%cL4mhO1f_j%ECoT7ePpao3M#<8=sM=sG=z7>l^k%9qrhxG zark~iRWVHhb}x@qqaPAyuug{&x^n4gQEkl>eFpZ`-n!l>bv5hW&^AGUy4$*jq#_Zf z;QGA3NF(#hUc4Py94&G0u@8F{(`Ji8X=9U{&x=CeqD_;i13PNkRkUd}AZWhFnS6}s z#_xDKX@v3F6=XANOVL060nijExMlyJ_GyjtU6YwVzI;i_wWz-%*GdaXK*Xt31fW6TIcWjs*jpx z@^Lz3h=u)6t+|&Ga0K2+?313YmiVJzpgRHXWc_`tXrOw4L@r|-A8tg1f&(~9_{E;# z5bUqt_oM`xQzYZO2%c{?=L!%FYa?ezcULT>#DE_FgO00MF4NR$<~4jz*(Pb$`mo3A z?gc&aX*PoHUv(v}N|tdKeqvkD5V?OrxOh57@ef7OGL#r^__^Sn0)mpigQAEyl%e^D zOsqjXr46cb|vQ08vmjm|=RWLM$U_~rOgZ$T-xkRb{ z4zeV}z=lI9pg`b8H^&6<;1#7rN;(QQdiGD30P(#X4cw8ThJvrt7UT^{T|Q(PTj+3S zK}hEnd?n36V{LcU=lU}Rr{r7?h&eDZBz*E z5D>ka+u?&O*)__nv)}+9@)hJ&P<34oSHX&5G4mXA`nccgyi8k3utz@YCoD1 zCH8bHl)f@?!)XqsMdHCnY2%ld|JXrUdUP5$j%wwQ|G6>r>BGBzDbp7G@zM;OyE>Ys z{>>_oixO;eP)k{L=-8(uqsVnBNojw9tVi2>mIADM*TCSfBjEDP@_Q!XJ@;d?Iu-5* zVr0D7L43Fmjr$bfS(7V=`fWk`q)eXXY;dqKMpWqS@$IOsM{7x=gs{53xm=2+BIt`Z zQl{WK@TL0J9b*OUs|xr%@=wgxM|Y|9<|0IYSOGKtn`1%a$P1h%^NN>`oCFjS)Yj>@8Fms|5K9@0eMttp<{m@G&KQ{ zqf5j+H*%(VN!&W_qDwMMU%q(BC$m61nEBVQodR|Jo5(hzoj7s}~N>hUb$; zLgfT%Il&!L3%F!&_810-ZX$~BPh-XTC~_W*YWwh<$)jg21yo{Ky2|}LX9%@&nYbkx z&tK*KxWF1ZyQKR5;I^pmPREb@QtwXdtEs-wxQ${FMV%=y4<{_V)m6UT!UKnW4IXJD ztZ$bk!LW56z;j8Eknqn!>9z^AT45cEq(#gW!a*kvj^vBiB4yCQO2I7&&hMX6hPg^$ zc}SugrlcDwp7ewpnsK5#`Z;{`Q$>3D)A`3zHyahld|n#t>(@0Z0T$tI!b#x~uYC&q z(Kk!DEk{DdEv6qZPS|{RvuJ1#x$?@_Lj`$H5W3qrDGxYhiF1yxUs#2aN4*{uOb31GSuIcoWk3(pis8n8F9syxo%6OEfmw^^dLGwM&wvb^A#t*73XA? zhkTT}yxvkX?8B*T3lDW6zR4M%D!L!^V+gnk#4%1kz31;+neV%sLiWY%1Pd%n?sps1 z)aVRUooKk^x<3|ShgZ4ev8F)+f;E8SYPo<3iCZl7*FZ)rGy>bmjQrg&R zbiwVJ$gad#_@qhMypiK_Xu?X3i0(@OS1TEvt_4&9lMLgZ?K1=((XIv-SqcE>r-Xki zdzmVM@Uw#KY}GhYtq)4i5pm0?TuPrTM7y9FwKZ!ieeq7aSOZdTXx15DJ#p1N1KYUG1Gh} z&9LcvHvRkAE$&hF#HXF9+ZN^dcahc+jZMAv$UEx*gyjGIeBJY%=&iDU#QeMF7OK!; z@I}ePlh+6nYkyDhhbv1W>lNUMJqX6>hM|Y8pcS5BpNbm?D6bU=j6w`!7Sa(;qw8`M zgXzX`To>#T(ts@@3u;#KnwIh-ubk`I)Mx+jl5S#tau8qj&zNw3P{vhyu*($e>KaD> zdjIOOn{LxY*K&QG%iRO}E?^vIprZ-t9UN~!lMFBxP zfK~EMF%I0~-$VRL^Tkp}f_1nLbeBjEo1DQY7?l_?+OW;vHtk{moJD!bOa9HO=--`q z9s?d!)bGUdvh^IUlySJY?tTNC{}%AjC}cY7#)J(}$i}q*=%-qkm$twD_N1@y9>z6C zj|kt<^bg%wGd$prlf~Y<)GGo!v-f36i2tQQTxu&$X0-XVLn) zyr8Vld2i06d-L*JokVe85Py5ffW7KI6G$$35^F@HZg^=A&|cv(;_iW3c9<>u9Lo}a;zcF9lhcW0~`%fIE7_IhvqXLG@s$tD@2EB@ks)|dB0i0g)3ef7^n zQG^k^Z`Glv_jchQ$Jv2)!!HrW52E;DbhcY~!q}2jX0au#C5{D&iz)1u!PHPUU!S#ix59x+RhvKej^1^YHCIXPB9Hwk%G!|r zo@#+wX?Ae4=jX%feSgE7yuN?01Z^(CT#N5iAsM$r<@Hl+k0c4U`?DpBBJN{?EEI=& zSLnvuGGu?x4rC)0BGyqozU?f%1!;V<8_0o zje5uVw|+AZJy_jD*jtV7pSPV-KZMw9zh|1KwJmZBJ2RFVjeuQKX9> zUI25D;x&hkThO7iaC2%*Uec0(@3dAB)@Nz91$+tAP)rk-jT6dnPKb@moH<2_qQRQuItWsj=BMnwE1|Kx z{`rd!A)EZ>u8mPY(=kG1=}B1(krZX_I7QiNyLQ?Zw6CBN_-LQ&@}9v>H0V{5!(YHz z+V{tW1pgO(@z|rypuer2_FyY$BbQPWM7ZQxBrtKr(M1x9K}L3^n)ZC=JWO~ZGk|?q zM%m`?r)%$^i)*xRr?~?iJj|<2#4TG~rWK1R+pxOCNAz6zscQ{Sk z)$;|7!^lF^U69Wk+sPzHq)LtsR8x3HuE19^9UL_U1C9#|VuuzjC-SCnoV6V?O5oPB z6?|$-WZRy(Yzb(@;tig=`<&=)%j+uy?e&$WlGVFbHs?z}x#w$hbsGu|DJVY@efImc z7j~SQoVV*_lNj(rr&E8&V3JMN-p6yF>;diw(ck~W9h068M6SfIqQcRw0GvD$k|KjDd=YtD>YxN|Qh$9j&jieOkSZ%&Fq#v8@eW)~fi4_Mn=4rYshV+@su zXm|^0B}p^he>jV|{n&by7^)lFD(-i_6Q%WV40R9nl1|eqDh z!|+VrgDcA}T)5Ne_pjY$Np$loz&S||zb1|;gs7S$U{Myq2&%*Rg+fd$_&x9GfW>G` z-JIxzjgkvx(jo=HPbNqk-_z2j5xSw+VJ=W2L zq>?{Urz$3n##CRbeUX<$by#SS`V+>^$Vp23g^J@CZ{61y@0|aT*Nz^p<%KHD+JUFf z=)r`WAZLlAfJ6Zm1qER+p#nOn z2ud0Q!8L&qkZ=cd!3eAYGb1KUfS6Fypdz>iP*+4n7!?&GQ2{0V>yF>w=Xv(k?!K5y zcUM=PI(4f09^`=uW;TBFkU*l}a&fEQ6?nj2N|sg46mpG%uT+i(^#%s)Qy9C>{E226 zuMD+AEVtg&KYK^@YrLwse0KLjWVVRZdV23SSm`W1cuwhdhrbO9SJYNPYXc4*W@xu* zK>H_zt{aKE!&obJo4w7TZzOUw^6si_SKsJ;gxJaslGsIrdVG1UHh=3Um$`Vyr zc0qVdx%4t$$KD#4x`1w7KmO;Kk>}Q%JRhq+v4>}WP3h7J{I-9N(%7f?IGg4LTDNSQ z^TFxXJ<+#g*7Gr>A~q?^K!nL|=$(a6cB}z`s|l-9imWHTI-tBUG)f6n6+xxkfu-zq+CzUnMJ+kFjLuOAWnpRMsYa1^yl zUJ`;;m~p0d_S1&EWA9z+zhX{o=k*BMPf(xLF=}z47i*aI>s1??^l(pBfQ$h+34*#^ zZAHR*VcC||iN>O-B=H4)iEUPof6v&#+ktoH{QmC_lPZz(dWEGLjmZN5r zl9lYd*zcf4q4ojNhEObe!&cuB-ycX@Upf>woW64!5Zm|Duk_z!2bv8l3xj@KXOOsjmIlgEYcZS4fD(`EXzgYAo|UA_xrE?Q z<>+E*980Y=gT%!1ffuxf^A>8z_)K~Ka`RT6P;wnJO3ts=X#@Y3?ucl6V5p4dp7w3l z%Fi3~!%nI77^>*!u^KzB9GqhIb^3-PyG{0L1?5$!Nz52e99Um1Zd!tdk4<3&%9YIP zl+X^t2r7Z$rrCJdS{t15!V+SLCl8_SOUa$d!+kwtiSi`qg`4M} z++fmktg`NESZ~!Vi;c@ReNgHxcZ#lf>w+v?j=Sr$M|g+9(a_+G@uZuvgD6B2Z$Mcb zzGNbw1h2weksrp5=DU69t_LfbJE~ame`T_h-h^t&!uhcNeTks>C{dSvjj~g$|o}&~lpoZ&0{c#_k)QP9p zYzZBW8pt1UaAiz-i8@aD10$}y%a#rOLm+=`C~(lh_ck$!mSBl(Ab<&^fVe@=EA!`k zwM7NuX(dMnmCBW3cYm~wLT1PL6*%+PtfJ0h*VNqmq5IB%+uoM<{Xyl^{>7Q|AUj~b z*jU`JDSEl+zlOa1=JkG;xj3mSU>ZgYw6+V)D1h$Mg_bv7lAbm`p0X0O>J?)hOGqRT zvg=F~3?#jW|Bmgr|Cvd44iSzl;;%({GsJ{c#usfS*<(vHCZ^We1N6NKkrr zE&tWcVaKu?ne6|_554&5iC69f{=MLR!sFHm9=sYSOzijwI3X@N05l&=flM5mtuQ&uIR6V> zCq6cz#edT)bqVP*zToZGyM__P$6omA3h>**1=M99V+_=s(C2F-wQQ|CkYm15OuYY zNXl2b@=?!&FNM?)KvTc8$(LxJcl+KbZe2aM_u1Mi=M6#6FK0zpP?9Xl;Vu6nBlVOGwA&WRggbBl3c6>L_3bPOS85T2#XiO z+StVwbMdLirUXq#rPxpd2FpkZ2wXYNR_F_y*-5s!SwbTNoeR~r$BGG2 zZ{A{#ybR;5tx46}@hQBPScx)ApXDgnjAbE;mPhzy$zOs{hN&^_U3@hi3Lm|Dq>}P|q=nun zon}c$?T_=yZUwEXY;9^>5_jjbBUmzi_w19#>^b<;odd?usAo0N84sNSp6rg7mJC>v zh|{Genf@1s3KSj`6L=AlOm_%DS%81d+uT&01I{=AZn|I!waLUrvrRKFn(j2jRr}_~ zZ}oL+`VUwA!#mUtuh@o3&oj3E9#dSaC#$MIUbXkQ$w?EtGxTLzsUDU;4D<)p;L1lv zMHyT6e)BK2%vUVxHcqLay0S4;@bK#}SRN>W;JrFH(4-kE2eg^p{VOPsboiN z5Cmx7eZFP|cPve=kE8Ea($$b&)w@4JD(aD}4XLD$xtA<%cyK(*ZeI9izpqx97`vGy zvxT;)x4+y#ArQ#%?YMA|e|9Bg=k?T+vEY-9^cY4|RWR{5M}n=Iu=y(KEHW2*dORXc zWDb==35v^*4njh#w{P~IQmK#I_x}W~8_~RHyrL!(wCSiIMi)GafNFGE=M5oRMPxxDzo z?79?;JP8oJhSc}bbR$yj=p(|r-a&;4!RZ0CI^6r}^l1?xs0 z*;;SOI`{nlwfcTnjyWdZo74vun6}) zeqi$3B|L#3W4CZWlw7HcG@x8ibI1Wa>I3GXBAbj?&b>E|YR6p-?lOM%ZPIU@O{`So zFbH`0z{%H|*VNp#7WSGxr%m7A;{GEt3o__RB)jfiWm#(^h>VK0N$w%qF(S^*tjT z{$5eO=jO496voh!Y%P6)H(95^K6)%RMGd-VNZSox~jGDI=y`ZEZNnewvUyc zevrZ;29)z3l^oFG%iNEmjyoxRGH4iG1F8M#Kr1bE=^9gV!dhfn-XzK>XA~|emMfrb zy7$Im?YPmw9lKsXx*W=;>vSzIk2^(*Al;lgd{hPOk{kvsi_m%y6qDT^N>tP9e|w}K zNg5NnOYZIPVG8+jHZ-T66bYG5c!dw`xT&$DL{GbW&nTI;Jj;na@_}Y?jBGRBBwXzX zhnj=cM~5+A&zWVv|Mn))^~+6b_KNFv{wW@(FQ4zZ!AXsBz>vcg9N}Y7j{Wug)R%YY zs?1nP6-oF8+kG==H(s{F;Tl5_MY;{<2?-6On;sf^~BYHOxx*h$7JKjgza0 zG4*Nf`?)80c}{HO!OGf@ik81_d~iMYYGIDEDv|md!*ZV!-|V!fWKiyg<_Z)`z7Bf? zhFnS#msnII-t!{=@vub|R&WG9vi*(s@ zyI*n_;4nU5)`NSjsTcb`=A%lI{pPJmf86t_v_sMez+iU91rRX z;URujH|OKCxF0CsMFoded)JTyeB0?k-UxwSEU9inA)5U8`B7E^ay^$aa^J7nco)%c zFu~#!-k&n`G zMKX~)pMdZ~Pq3HZFpPLKW%_@|`r4qs(RY^pf?JzJ&#&hrTj*GwEn9F+ce0Q5xxeP} z=@>8-Rwi0tb^GGwZO#{ikhB+;k->=#O0xds)$B>Agz8~pQPGJgpF{H0hri|s4)#q5 zuIGAsR{W&6?cO3W3N$LsJxSUrj|lkJHN$mm?~QMIaicZM%}UB5%e*#Yeb;)G9TuG) zWGB1mr`J7_NOzw>jf$dU_XXm4t5y9LwNKP*Z6x zP#Fmts^1mjI-_Usx6LF;C7L5>z&+Koi8SeXApdv`vxkknyFYK7{$&y(_ji2xo2N&n zA63@bVTPUg$i{S`tkbRHMw8cWWPuzc@BzVn&H`tHRl8mS1{hh^34PVKC={@&1s%Nh;hiY!}YIDZkv{Nptlr z-8StX2FHPF)4)0z2JTI4*qF-4g5Kmv1xS>W*3m3#<2W_X!a;`Ap+cosLRJ_lD}Nx2 zH1Uq%7k_GvU3IkjsA0F_M*dZP_RFw~*%-MEFaz8bJ>CC1iW~7h4lJG0=!UQ%TThyd zE#^ZD%c)X(=uc#0ETb^c`~in^Kab7uhKKuUYA@TB!MY(8?&l;t95LD(pZ{afRV&&B zjD4?_@oHFi;}3p?zDe)h)hpJ=O+z*jTR|3&wa0=%@YOqn{zud%678SnV$0i7>mIxm zjW=brsFxKYlbI;%>*9m@A!xSc0!Or(lr1%`tTKnn%TsqliCZfP+16rp!o3Es;@FE3 zCeNK)<7V^nui2IlyFM=dJ7FQm$~h+}a+k_qyH){86{n7oeM8?}VrQ*}SZ{S1`(d&@ zs18=uO3HOGzoQ?zaD)0COcp0|HO}~(T@~(25ED-0;?fF5eo|E0L|}}@&D2!-_GdGD z`1$)Q(Y=j*neDkQfom18&Prz^j^pLQ)B+SxK0Wn*IObQjdh(v{F|t}|BHiY)6j-BtJkiJS{J=0X2r_CV%BVkUb7}Ta>eRZQTX36F>6-Gtd5LYy*z65 zsuh1NUlFw;YE9I#sK|)Lil@);gQS4OCrL<7e_5!7P(~Evhb*guw~-K z;>AlsmWahmgM-9ji$cSK#Nv?9u!a6%p#dQaf`S$V1_jLz2ntx>ALJkCzaY@x-#=vG z9RI)oKfif%=K0R`Um)_I>*pt$Ie%l!smw!1|2cH%!2ayLdk_4xd(Y0S{r~LQzH58d z-d*WwyLWBN*uF3GpKWOw`}ZC^c_jCk^k8Q8!NX^c9y%mFlzrsDu>;wMa*rN9w0G~3 zgPBMEIh1i^$IhMG)3#(t(*I6R!K1*Fe|YEJM)ssl1OM#U-){USe)<sV{-rN ztB4ahztaB#7dg5nKeTW{z=bkZD0~%oAIFWE#}kFkXwFGwHBroknSD)Lz<`ziw3+(zsXD`BWx)ea$@u^gwb z<6wm>W?i5W_HU2;fb7`IE=ky#W+)yUa#v~DK*-l9EPEbu37?qlE{moC8Awn@>j>S` zREmkAkRaPRVu5EqwwA>5F`1{$?Xp-4$l#1=Y}tebeu{qTPMpmTDYhX;v%J6UB1 z7k8{!tdijN8h36p1II%geYy!mSoCm7*ogs;xu8Fnt!_o6S1;huR7HVp=5W5Ol3Dk6 z9EW0lFahN;^!k37?Kyz1!l2vDl7&FqwdmEbNs1Iw7L|Y_%_i_!@t<;tyliq>nt;|< z$le`_F2QtC&py2ZP+&qQu-H;2t5)-~0)3YKPdz7UnKwMyVKiA9g=sUdqOj|TcJP(lzTMH2>VIwL;o;$I0&4Ntd98cTrc^ICA*4!-U5S`Sh#`~p z_Ufj0XZYXI86K?m9KdS&cLMt{&^5_B-i;JdU$KAkr&F+xmQootjYT=hjBB<|WMK27}Uz~mXLE^RxX;FIpQo0~bsWIgT?QFWBh(t0~vAj$z zEYda5cW>wXgr)TA@)SK<(U*`&#pWBg{6RQihr9+yJ?!qToOy+1xRn_zspm~d-yTLF zvNEK5Bb zHZ;%i(-tn&5Pq8w*f?DvH6#)s>}j4=9Sf!!(Yyk^Hl^_Ytu2zy!Hi#=x^O={I)kpb z;yAAR?}jy@5Bpdk>8a&X_cskps0ksY7)kRIO%O* z@~4s7-EAf{xgR_Opil{=uYZosf{xE$(W%(u4KNG-cTt}eca_h|NS!Ts6xm4+98>X!q@7ELTQHN+f zU~BGSno2e4;QVEp{oaRe-_ank+VS#qZ$$9FHxVYw-}Y)|UVF55jDMy#4|-<+j=OXZ z(RZEnE=dhwgL`z>Z(X3CI%9Sh*j6|^6`I@H1crke{xG0 zZt#EoQ8j(fvJU>Ut@>4Q<)g$3x#LvDHvTYKsOVyzZAQz+?m<8pb*d`J71!9OBhBH# zv4I~I%*fvam5t=1W%So)@4)IPiX@r?uyl;F+qJ8l?YE<>VFR}&idTe(%1kPl^W9yYd{2CiS3>5E3I7o5?TdM8XpEtW?A6Jy z@tvvK{;ILc z@yVj0Cj6H{qy!}V*^LDCWSG2Uf(ldJ-zfy>pkV(m%UoJb;#-6&^NSxro-_biUo_2U zSu<<4Rfm{-b;DbJdmJ)-X;;hNZgi9a+XX*)&5eGN@aAI=NLPNc8_59@IPCOh3+0qF zTvRpxYcgIhSu=J9V%Z8yH|8v2D)#vm&lrBQOAx0cN+J7`oiu|NfzB~Z0_Y=Lh-6dA z#D=(^y!_eo62|7=M}+kS)AJV-eds3yG{LNglP#|_#t0NDd3Ajav_5?|q|@yQVw5~< zxg=lKqHRM@wd34b0py#8+ z0=Xlm9B-~&_@QH=FCuAi)AEVCY@+@#WjHR>IX)Wu7Oo|Fs`5SX8I+NWr?x z*hFEktt1dsYu7MbI2@Z`7Nl^+qCY!0vj%st^3mmhX#HUb8Wvm}n9gN;VXsWlHtSUe z{&jbTm_jCC`7*$4G502V7qE|%|9pq}S^>@nk@tUP3Sc8foVK9=4d^q3*2i9sI@;Z7 z#4_Pgh7R}cd6sPMVpV>p3x3(N8vD%)w%sh-BdSLbaSF1~Iez z1cy}!xtHW>G0xT?z}zuxX79|HP59XY_=SO>J(-{;(ITW+ql-8;C^^o$BZ%A@tKY8lAE`8u-W~20j#gVbBAa7Xe4rPd6Nli8Bb#|;vxxuC; zU=pLaVuc62I;0=Jg$LVl6O{b_QYn9Hk21@h2o=&UE;k4|C%yef3qwuIHasX2!*`ee z%|a^^OhJuS3vy7LFjNkd5KOT4+A4ynp5H7GBHVIzxn_jg zN&2Kr3#J|ik;;!98QxUk2#8y+>8qaE!(DcdsBz~_^OXG1gmfdUn4u+}H`7|BmEk(E zChmy2{ol6bj9_#hFSnZ!F|lXm_{4ZF~64O#ug$-_^FdQI1Tkw&d9E| zs}-(3H<=I`#P(Hqi2CA#1J6$sOC76I3CWn+fj4^yNYTv?;c(>*pBz zLs9N?Di?)L-|-G>jlTDNa1xXe5&dy)ATLefI;em(befyQO4Nc_d=HhVcFsVuMxhTo zJeeReNi21}xfO`LT7#REmf?I4BcVv5RKtc~)&-Q$(7y4!+1PKifgGz&di&SG53YGj zRwSaLo+rjOORI|!yGCgT>ntJ;EF*KLU|~}q)9f!{Dd!7cBb)fnQk0Ah2L<>-OBkR| z8HvPs1O=a_L#NzD*93>wC}GFC{V4M*I5JQq3&j_e@q_+Z+x|W1^`i38QjeIc7M;d{ zl`q#^5gYFcBWDHS8$ecdUy|{Kc{aLWSy;-n8K$U>ct>T>M(==UDC;}l#uUOv{CrsT zD=85Fvar;)^thfjR+j7tVULOx+s5uP6!QWJ1?2M2nu*T1NU^?iIuF&3&3zF+Ohh7q zI4ft#;)$dDoquK#P)NwKh;EB5DEo%uV+1n8jbUG#WuN>BxdUCm<9_#E?nl9)Q8*hZ zmteLuGam>|iao?qS+Ok?AE!s?5}L|nvj}vJv$~UzgJaMxW6DzCRZq)Bl+i_ zPOkLd$Oc~wC-7!PH1}E$@{|dzP+VOuONv6|*slDC}iV=1~l#-3dOLdQ+U511lGWJvLTegyNeg5vr#mR*D1} ziELR0hP3g*U(dx{(2%X7U0{N6C^vv5XdzNiFP{) z&rQ?*H)-X_!17H^pH7zjem-vI(d*fLRsYDG_gemxfq^?CbMmh;22x*vMaTGIFC!L8y>gLOddL~Sk{Erbi zKO*Eos@Dt8+G_KdOIR?Of9Yy@E}8lv_R6;9<5YMi0YfTMOGdu78tQYy$w7pbzX6wW zXPPf5aAL=nUKbLSw*AkiHu)UkW_Qd?-4Xe#VU{A((z)9~ino$&=p1R=52@Ma^-28k zQZ^=weX1847L{Y6^~5{AxL5n>dIKCo5d=E}&=$v}KX)It9PmmR^XXHfw~qz{wLy_a`>o1TZT6#Uq#nAK z!`~O@y==%!ss8Q3=$(u&B~h^t>z8cC585+gD?-sCSVn~3(Cb9t28S3<}# zkw@D>;3b(W3V`TU?Yovr2kE6pivxB0RL}jlsEIL4=8;4MC-4H!ocbIeOaoO)S@7L{ zbbbncxGt1>-ew5d&EFyg1-js#h)N@rbfT!ya2i38=<~T5Fhp+Ulw1*I$?#V3TQRFg z0+2Rzo8AW}5cPixH`;Gqel}(0`e7=L?u$nC`+Dya;BQBlN(P5Pe9w+##u+6Rg_zVi zx_{qN&=ximvg=b3OHEF=d&z$R61<1i53pI23}g&#kZwX~MJ_#opQ0=N3bQyr!rzK^ zP)Dynap9~$x-p`m{U3uaN?w~`A z{%JIK@wfX?)Vt*?>aU1`QwGqsF0eZB8Jllv{cf#$5Pqsbv1F-3HK9%=l2mnu4F^OL zy|CqGdv%DKudL!$LYU+$@ZPd%k-mN*)-o<(awf$YHu#}ai63Iplw8*wjR`#6dzV-A z7?~PcG4pHXzlX+DeML+o12I?pjg+L}9p0@L-Bp5_nocq!l0n;h0q`?m3N1 z`E1tDK8#%ET!E4}Owb@zdyO6T-_bzO|Gl4~eSa%$6+w|nf%){O5V=i9Bt!@A|=1`8aK(FwKsp)v77HL4;M^}M2+}(+z zfmgF(GO>^lDE#aQzm@bU9mxoNyJVsKu+9F91yQI7X{Ay9oht@GR&~Y+Y;oh*^mUk8 zvQhsd3j;Sh0CU^u_9UbxoYDVD$0Clh5=<_J=;OpBsnnEFlcgjVQzMSc#_*(|;3SIC z_GbOYYgO2_U|8BdNgJFhdK?~&(Kv6VFI|>_Ymi$4KZDQ)W2sU->Su48XDz-8faCmS zeFu3$1)KE7o5@R;Bk^5hr)$8FdNHOJ36DOVaX>Z^OY}fboXG3DpEdjUK00sk@`#B# z+k1C=_!mPuZBP{St`{EC<()gR6cUCzx{7Int_JodScqv1>Ma?V!vkSCLA6nL6-Y`- zaikcW#}}$YX4_^Vu@=70Q&;wptRyK%iUk-uiu-Iwcy=p5_R^y+cFz-*p2Cx2OfN?( zpZwB#iez=aDx|T6S!mzI(3DV$FJpw!SwjLo2+wMVKxhBsATi-T#@VMn7m+7?rwkIrHKw7$oxHlxRNE0=fGM5 zhiKq8s%EHvllw(vb_H6ho`@>Vrr#@uNZIwJPMp~ zpa5NjY#4L_7SaRX2mKLAE&9AK$>!hfu)b$XajP=#*Eq^eBX;^<^8*)Q$+a7>frYki zY4``fi8Xz#7WUUxl%Ji;O)P&*5f32hIY$#zxy&8nC|lOy_1Q( zh6D}R@g>X-GOiPhd_?9x=u`t^WTuWa48>PO_tCC1yZkIwQ)M5mYZA(Hnd8?bV3*>J zLu{7s$O=+`hUR#nB!z=eqL=KhM$up!J88_LWhU^iHuipLqixi%yk*}Q82HR%E%o&s zu_$HK&O|JfhZg4dU|aPl)r}@!?ksjmNOgPBX`xcs|L#P%YWOY{Som2T;vLoLj3A#z z&i1<5yL2epDVTbgqxpI#)^CeuKwpg3h-rY0s2c5rES1e4!Sa8lB7B9a19_x?kLCbvnmH3=&3Sc|E`UORelvF1A2pPxkGqoh*?PyLb0gDM+n< z9IR%dwD{{?Os?bYC?$?;fMDId3hGLVAs@Jgsu`kn|2uJ2~pVqV~wM z<)XSb?W)uqrfjhi#f@#lq$W&!scbC?r@*Z#NCFhIw7*z=JwZJPrM7Znb*x&576JAN z)P>+g@>n&z_O$JaFbaGXe|+U_wEgy@=ZcAhR-}E(4;6t`nNE$odUpDuL?XLGf;gSyNOSI85#I|~i20*V8KKmZD*-i&5Y0&e5!&H|ExuD03Pn{< zQ4&~huZ@?U_FxJ$1z#E0B8_;`C^8}EB&J5HL8SC!?c29boSH0hLi7han`OvHu0#G5 z&m~=V~H0%bu(J1aluV(`Z! zp|JduSlP05B#6KPaPB(tF2s{v(4D3d+=BDU*+NVa)iqbo`#v&<9nNtnVt+4$vmKpm^MR+XuYlY-tIEaz1bgyu_Dq`FK6u9Va3;}c;sg*A%FQdb;>HC!%RdtIv{R`=AdL_yK90#>#2`507bJvC zG+ijFJ3;IfsL5{67P*avH(^wqjn<8{0*ANM6Z1a4LRl z)guPt|4Ia*(Tp}c8#j6>bq{@>)M~O5f+(ijtC@RBhZmkYhHgCm# z3(dU*tzRqd>%;5$#{+0yUfk~c{$4`p^vwxZu4ax?QAhpAN}{ugl;2YxB4+Ecs9Gex z#EIdAR3XjyouR{lbalPoOWvcz{-M6z0!wv_U}9CuJxYjF3RZ~!kpjJxz8UIY<$t{X zNME_(GIOJHKkOJv}CAcD?o;+q{5RQlX zySQP+K4cC+n6F>mH7}>sH9X4`$tGHgGhnH;TlQG-~(ui>-EN7BYZ=UYxMWExRR zq^up}jCNHNA}Z`E0bONrUmopY)?6^HxuAFu@9CKX3!X|Nb|Q78-9rdX8_Q7`H}JMu z_96-73oB7{gQc`)ZEcvrcW9bxh8?eWt}LygcVUP++nVfaB#m~%uw${ zXhdK6J&Pr4?B;w(KEX6wk??ZM*rRi`wN(~D-GA7}ih0ZGrZq^ZqYjL{8!Jsw`0U!m zP)~xgaT}a94aeEYCwuC)+hm$S&&(6M$QLS*y-8uVFVb~aDOORx&3?z*F70K5_y1I5 zPM^Y=v(z%G-GiP-Cj%*pk+FW!7$_FbB;IRugxbrAe7Kn$*!aR%ZLCUZ5!0V31 zT;gHqHPDu^Fk|nVqD`j5EVyD=LkhZJ84(`|`caihy22Da`p|K^4k$eRxjW{pCgJqS zrlF51TJDi&7ZWw^lvUlRCPMrK`x8j$C=jeCfk(5zXu!}YS-QrZO;?PK_b|zHIo67Q zj$S4duC@`gNy@}W9jCcsNTG+hqGL?gz0hT){8zdEk|It*+WtLt$-}x$=bT?S?{Cdu zkc|=!+CkZ(9~lBmK26p%d)_?56jmysly|c&CJofmr)-vM^9A>ralvUI}^`qh0DWZXk;G_x1n_`o$ zOet``4n?0uYTGOH>5Sb&57bu@@HBOY33T^>wtz1yC#Fr4+_wS`MZ9{Eu1ULh`aoum z?PX6;!0pP%y{(t0JPl+E>q{A+fs^LIw2m&GY{CRc7Cm|?qEx&g6`{z>2>%vc@18qD z8~!t4eK$g)94u;x9gI{r?W+WS5mmW5W5V&$at|@6BwzJ!wq!iHCM}V^tsk zWZCjF&X9PsI!98@1st^0&b@G$53^Xkt5vN){dnjnepV1cxkYdhrE0f4+bm;F1(T72 zSTch$!lBlh34cB^_tl*f59A+$EY6K+R~bXQb}n1VB@FKW^{>HwQQa0x!UrePP31f| zpQZl@pGYEe5IkU-(k6?|8V*buYH)L=sRJJ~q5k4+Tk-Mv0&WZO&t|E9l=2I}Ty@6( z4u$qx#eEBC3r?%qgQqfIMtgX*oTCe#k^);}QaFzR0!iPjCB*=KDLqMa2zI@;U?l?| zaG-wInsLB88)j@;I-F0g^}(4uQ0DD9npRoB9UhX(3LDmJb>pQTUb8Qc-EKU>@{PPI z;x1joIQ_f_KSd&BU~wWzi7>bohtor!{1DYqPK3GdNvHKgKch9V=b9C!%+{^ZTo4! z^(lQWdMyl8{#p6f4>xUh<33kxRL1zxqsE>B)d5ZH*>c3W2C$i$g9c^NzO-?iA34- z)p(pMru*dXTy2ctZe(d0L=UJ9v1nShobdkJf4bt3@x|;*Bnzx#KfUFmZcJT|XMcUH zRn3rAJLu1mZ`0j*3i>5#kN_kWT0Ut^PD+=~H5M8kuQ?iW`KyovS2JxcJ+fHNDe zpnF1-?fv9?ef>H@8zo}Z*D&*8IRsw-dmQ^%f4R6uLiLZ97!lMIOAg!Sf(p!`&lrFI zPb5deUgP1%7W3{mIy!|a*h0(keqiA3SICRO?kW(2cwihS1l?8XPsBW~;!6u3iV$#P zXV+OPZFK>11IZ0SCUyfX>?|~Nq&2oO({#lLIM^|Iqw-z4hsN?KO6ZTTS*a9(`*^k`LB^?P{SR#Rac zgZf2!*N=UHCystWzGo?Fn=*qms3y}X*iG>hidv}O3>(e$DzL@$&;DrA=|LXy8~M_{ zBRjXaW4Wsa=X1@<@m;vlnmWHym6|yc6-Lyp*C+;)Gwy9hISR(Ta(Tmf91b^3-ciKk zsS8gqg#pLXx9W*9uL@NWuBB|hV~$n6LCdz;kf07F;3#auCY1^rFJolIL^mNh-rx!dtUG3zIG`S>FJ{^nxxZivbN0*= z(poo}Iqf0vx9ODZuks0x$33TAsp$KX%e2mF+{LeR0r=_#EXHi;_H1(odxvfw#ViaJ zRmBa5o}AW}y<0m7b?DzXkg%#ms`e`qZ!i*yDbGlpl7se{JgB}ETJ*4ajIh5c6;yjr z%E-FujKa()(C3eBa@Nzo?`%2p_P88N%Qvk$qY4kA%z6noa+@_vfWw>|zhgHI@%BrN z3~y63`3n=VpGrn|@EMy{rUGB6FJKD1LZ?~EE>ArM_==sU#6$`F5Q5{*r00$Aps~eh zzj3E}-`wMTS)vkM4)*R_TwyXNJLzAZpy70?Pce5VBsG6>pa`8y)^HcoY zr%!d&82;D4_T<`Aam&zH{K!{0vu*8Z+><#QNg*37VSZf(?J#54ea%{m37s=i#T!aT zp#)d1SNdc+M-R$=*dctpUm+Z!)bAnP<-QXKUtunq*VlpDqJUfzH0)0G?jD8Pe(m79 z<=d>$A!Dco=eiz{zcB6frd!3@$SH`pU_IHpdUq}e4U6CG+n!lQP=nD^yHUBRB5F6` z>u`%es)!~XoLpbG{KcZK`&p}_sy;3=-&+#MKwtCZ4B}EWMsHYAKpr8aDxpYjmi>NE zk@_^1l!XbyUlb_1iD>A6LLeTFVRTeOb0-(VZ?#Y1yfD~M;ZPOn!ozQz)V*y-uFqAY$Oj!7VZ2Wd}r zG+WqYNzX;!lqIs#U5~b;gaP$dn0U zzAS994UnS`I3O!!Qp5iD$D^Cq zZ^UEm+)|5>XQC24Wuj=@MP!c)iS+MeG$Dm#CKX!twnqjwP%c~Y_XO~?q^i%1+X^F2 z>JW~JviH}7!kjkBC=O!On5;zFjj8@Inz>`qBv+S@*3fUC!M%~amxfa~jWS~KxKnWM zgf+Z0#Qs|9pMpXe6f}WR;nKDM7Xz4vQzeGz{vn#j@(KtlsfF(^8cDp6wF9ssE z%OJAjq^wWO;&ifj3->w?YjU8^>1MePd zK3%3KKOVqGfINY6ZwQ6f|I~1*2?p*oW_$4s6>Sg|SDo=fS~tViAT=dnjzE)Y#vFfa zJ6rMBYF_+vgUlTR+{S1wDzHLD(t)n1alZ3-(wPP&5J;}7sJBLIcOe8sG6qtu_9=Y% z?>;MS;DcyE_{`%YC*vt}A z<}P#C&=xdt5i)p?RPhg!fJ1Y0u4)8;z$-tU3XmvIkO%2vV@s|gp}Uv9ZEjqP%3nzn zG+pkRS+t;2iKE+duWaBMBNDShvF&@dUYIKG_-~1B>~8|Ov_b}EC>h!QA`s6wTYISH zB2dfK1jUKaeTt}gx9YfTI3ZX1<5P0|KW5P`%lt21QvBRo@iSR=>)c)*Dmo2<6^5it zOJbZSGX?$L7#DmXpa?QduVXFMCZT@Y3|mq@xpErA3ifaw!PHkx%H3uheJ&w#jt-ZJGALN#!Jq;0ANB;=%VEZBgEK{ZMCYJt4)?vZK zy}zoEG$-W!Q-a-uowiw)w;YtXEIWKInEvU~Gu3x_Qv8_7-w}|agI!^8)tk7me+0Z_*jve8^RYRTG7j-YS)Z(@ zYdL~lnRkIXO~E>SoN^K|fQ4{4xnb5)NALDO_vBN3Tnqle`Z&eh#Cr6^RWzw^g&T=p z8;l@u$N-aKRy&qq+kdyQ7HTK;#&msc0xLSoj~1fdMFrNonQF-}9zX#D=}8uvBz^xl zDQL@RZPRnLtIRB0X2;Ev8B{R0RL~7%rwXtVsg6py_7!)hPRE^Oht0>BgO4R{Vl*cLdc#}yLeSA#&?OxLZQPDz6HMi8BzBiK) zUEosLBrIb}pF7H65c_?w7G5H&s$PmE_IBf^_|tOy>DSjU6%P|-u0V~Bi-pK9786$b zr|+ew52M|Yhw0fTP8mlsUEiODPk;8Ki0|mtf)^XFIA_y|6ym2AcDwYI306eQ$k_gA zS{#88B|ag=2gum{HGWj}lNnZf2|e2RbC!IfL0Z`1^zAHnGqVdj#v#hzJAU-M5^WH2 zq+Kieg{CcKSScUk(4_$7;tLZ0BlR!=MgZg1)FuY);f~`7gfA~A12sPS zL8KFfMe__>drkOdBv7Z?iu7m5@huBAJ=)UJw~gtbfkMJbn^_$-oG%EURHEGme23q~ zX@J){{I21n)Qt27oxD1HEmd)D z>74nr1FH49dDG;mz9KjSwdNMg5`v3g&HqAeOujawIZgVGpzruE*rK&hU|S` zvZ}UG`-hs>QxJ#&RlOOdbHeStcB2rf+iTmEqM#prJENAsS0zp0jxmh^9;csGK++`l zTpi=yj!(p5Og6@UiM=uox54duYc(9>DA%zQF$MTpMX(i{i{|y@kIV53 z)?RaA%9agTmaxukV99%-rVEp&im~~%?0UJy|7Cf%vsP~b5U|t2l^to?Gm?k7blzbEQnE3Tn5hg4%!sP zYfjkimBIVMvdFX~zQitixCQrMD+%WaJ$tqyx)C^URtZU@+Xa3&YJ!(hF<0a5E?AHH zbX|x$FC4+IP&PltrT6ts`q}!pljvs*xy&jvvzraeXhHqR)A#JL2r)+3OY)UXE3d9e ze^_VCrD4o4D^+GM-M4vB6!g^cT;Ypd8-596~u3Hn7; zCu5T^_3wVI7p$n(t7!QETa@KhF`lNqAl$s8K#CImL`uSJk6p+@1{!JB68>WwDnPI! zL?ZcDO_{DR-Am_?84si%&X^rK9@ny^(Hn~m2&BA)@1Odd)%W(xJi&%@%AfmhTG2mm z2f3=3gk&2_X1Hc5N^~&8uk<8@lRj{!p6275gnF5b0?S>bJyz0art5L~HeK2ha2uvt zn{XG0tUQ4PMff-sOvoA2cEALvv`(ImX6$t?iv*`j|?-bBPyHiIN#6 zvC4ws_pnndukW%3^8E%iR3LYRgom`@^-V|ly zI#__Jub3vl-u;9R-p7$ZR14iIe2oa&U}|?jBBiZtV4n^cs$IbV2N-PAok=tM!z+fbb(L zU9Kk+N`k>fNCSm8>5u=o#POtG`;2r2%yXohybAf+El#FP>AuSHOf1_FE_WD2qGsvmA{Q$Z;WbwA7rbN0!J^$4NiqgpWv%uBUv=81LkIBPM>D#ladvT0Mr zg?o0?q}zAyrN+7c(!P9`Jo$VSnm&Kzc=_kj9#1}I&aU%;DoNJShB}#p$z&;J(3a{# z&%6B0;gt@TMOjik91-+?f8$BEGafwi&12TBiKA8|T)E@ZzzP(Tr3}Hqn$XnmQ(nBO zPVK{vLF8?AU-ty+QeJJND-wUzY#t~2Bue1hIHLyTw7_#R32Lc_b9PUyl4ogzw48-k z9am<~IkA!W`FadmP0AZJr=b{T%N1;3DV&1Es1Lf!H9#;e@k5oCj1*P}olvHzq!lm* z-ypPOYbjC^&pT1i;+83{P_QMvL=IE}1V&ClJAfsIu+B^OlMOO38N3@3sLm`&&|NBKNw%giU z@zYp%3z5Fl!ZU$!+d)is@;rX7kGGs=;XPKb#p$&ufVv@KlGvln6lM6kQ7Qc%5~E=a z`%sszi&OFbzaQOcb()c}7ctsQaXXgqaUM_}bdABQ2bn7&c^gl&RRx|mmj={LC~hFy z(SNQ^9;iio150!l0(ouX0_OM`SbyyO3Qujl#1m%Z58nR8}N-1mJ{ zgnz)=CL^ETe>R#32=4rUhmF>uj%9ZLM-_qZkr6!XbqPke7^*5H_IQB|hLnM1i~j@3 z9q<-l5!kDqyE;hN(}bA(iUL)NIXtT6DnW*k#+vkxYx#c{`AI%jn!%l|oij^8PUjkd zT72$2;0mlph{8^TH2oKP1VI><{5s|J5m@HrqgP~5JDP(h4ECASv2@=S8;P){%<%t~ z34gXDjHNHNWUOB&&cT?hbP-lL;8qr4G1UmZ3qeS##iIY+6|owIOh_Ofo~Hg$65N}( zB9FxQmBIGd2dqw(NX7sC-7mAEiO*N{DJoO06HER91@5tdcP{~n##Iv$fFeCz8Q<>zqPfbZsg zdo9enom+5)xDX@^iN<(C(^=`v^`Q^CWWXXE<*Egb%rizHeO>Z7El40|dOAhoKGW*< z580CQloGx=@I^n%_~x;mmglVr7$@b{OJgyOdU4NU`7kb3eyb!vzy;l6Vg`;3h4^MD~zLl2w%)hhuHr|h0 z!quDXbdRr3R_#D$P^G$fT4sRX(oiYA&5FlYH>ep%kzE9)nrw zfyxn9@j>1uazmNJ%{<;3nx&nGf5^_3lp81J{_eIZ|1;a=<=71Ch_7zQJKx?u)nD^W zx0j{TD#zJ|@zJfaoeckE(*7^Syu6#(!S1o{`kF15%Cq%1;yzvdaPOm!j9dz@bYZ}F zYj>fI+Irvpmgf8wjW2A;Sycl2`A%0zg~}(@zDy>=qY<-_?WI38 zRC>5pAGXoEX$%XU1aL;2Fp?JbrX&)-OrajFIh}H3exT7R!>+T&G-wyMw{cQTd%^>< zGoI|Q5oK&NYyFtSY-??Fkrj=#6c>*#O$Y&Y^NGJOqN6Zhi2c>?A-d1fy}p*wbncII zsUZgI#F=E$y{xd4X{>OmVf1hP&Dp|v9#T+mvEKq)Z=smT>pJPyk^IBW7kz1Cnd`?2 zW1ds69CKk@VEASFo#^T_$C3dEqo~>(o_sqI8r5K;)aK5Y5MT=7pNo+N7?6q_ zAosk72<#cAsJR6tPH4=_A3MU!V+mhy&v$=8HK={()^*kH;J2T@u(vl|Mabsa%Zxw4 zAE@O9oiW@qTCsGjpXROYrS3})bg|Q}Rl3N2byU1ND^oMD>f+zO8eJ3a2%ci+^3JUa z`+nq?l=c6XUw=M%y~Fefm7T@RH^nxjXE?*Q&W0<+5YA(LFyJW(_O_Bm{xJf~kx{=m z!Na>vm>U0exKpxO$$=2I)ZUK(!(kG8pI*DJF9zIU?G3-JkPI~(bTbVHC7wjT-r+RK zuHKc*y7_drc#vsBg=qCbWAVmLZ7MfD_KR}Gs(Rc;+i$kxoehF=c!mGQR@Vk$!aw3R z+j>6m$@zUrRK3cE;-bWcI)ShIO;>5%1Nl{6P@rRX$OyrX$SLzhE^tIHs7EF{#FK%^ zuIECG`onFLmlZ!hj|Rx1E&6kJk9CuRb;hRad4tK*&0KXT4|+D{*&>S{O0p2jWW6i4 zywYTBIJW{U>>6ndU;9{8(@-$7;{2TXooN_0CiSut&rI|i5j+rmN5`Xf6KE3sbI0X5 z^~qT6#y+VZUu5l{<-SNHe4-#+D@lVQh=6c@JO!!{(Gmm@XB$}n{X2@x2NB%hIc6&%bjd(pC&T*e}_-y|+&`V5+?P_*`9U8j9<`qfVdf zp-J7aij6ZzPnSBcJon)DyH;yC7Vi!#Mv4|&wf;!1M{2!w&GyslSyI7d#^0Ec7tj_ap3xqUVAQpT1WqVEr>WjJxs~z zM<{@=34Mz$0@kN-*7dyb6kP?e^bcvkFfOlvLj8Rkx2$Q%o%ffLu~^JZ?bF$0k+JP` zxw(_jgBIL)Ecuv=pkI+{yN6})|5=>ki|UjE-Os14eHI$rKsWoo5`-IBy-ssv6wWWaymfna!nX2g37=Q3T@cJ?!A3WN#Io6r z28u8YaI>c*)?i!(iRmw?q0}@3BJ*Vlis6!Qc8K1MAp{nkjF11xzcWl1 z__t-UCvGx9Y{@o~O(n$)gu<73j~*^2+!|jbmEF42AV*U@M&yun$A_}?H)m;^XMGq> za#0JU_g@!#-rv7VL0GWWPpeS1OL@P2t)wTLw2}U z0Z;D;>fp9@l&dUa@>()2jv=48&a1?$q8`8470ntrHu7p})Z@;dyF+%i5ZaOORWj(W z_=n-XbdR9!)Q3T*h1J+O_u@F2%zdja{yMytC_0<|x7+nVPHZX`N}GI_LVs#MDxVxK zL$pxmHy?e=?l?6(gygH7P?hEb_k0k<&)8)c4$;G!O$K6HiXebdeq#nyaZR+DZR^~w zcbR%xawV6rXRhOpPkAsbe-<43(0Iyk8CsKEb4l@Kuvvn%!5`_2s7VxekK|~MUwEdh zQFjkx`HcFUgQJo4z-ai9ys^g%-&C+e^zHhLWfFxvwHi{4-C!Gn|k);5}$A4%V#$ZGKNx9uECIIqUa`gkR*h zMCixG`*spEU+X4{4BWm;DDX$`&Y$>_M|1|xJ{joJvLvRlU6;`d#-vImqY1V>@#<)h z4S9~;QvnEen8ZNwS8&8bjAy;qT?}wxK_$rGza>Hp$xJ=(bEVq|Oohbtk%6yXCjxhB zra5nooz!`~$A#Q?1(?drVFtYdIUMF?X5tty@*yWtYfs zBNG~CDJ+uS9btnz?W26`vlk8r>}AVYarBc;K2u!(4HD1rKe(bCX$kC|n<3NPNghw#-m%r?X|AT*)^;#?NS-#t zkYr>$KDDnrpX`1+JosyC?~4DdMwrYG8~NlJn*5COuUIvVKvzRuo={=lXjrMh0{?!4 z1=k`|PFSI23&OGmQ z);V+FD6?t=aDn%MEA=)E3W6aqwO$4>w*z9B**{KVup+`wGpT+GiFSx&-_W+PCN$+D z7qUKn`L=1lP#3iF+U85+m-fZ02-D*cxs%Rj!}J!aR~%qefS(FlnAxL#tW zY8trw6 zRUqd7dseDKt5_RnbTHK(sEqo`d!6kYlzdfZpBdBmRkFqk_8Y7XZss<*FcsDn4G;x3Fc&~q z^YLza`jRO2Sc_MU2dkTnB>e_{u(Gjw_n+@W_682lf~|uYhao~$l*IQM$Y)HD9dks& z^E%g)lPfDl4E4hK;o?4|*7~>oWPvr}FO3a$e$EE9skZ<8tCN0hcFi58g2a`^;*k#| z<>WIXTQeW2_4>xHcPNDp=c@XKxwpOG&d*yx4Wu8dWYk>+<7RE$Cq`(YWri>C-> za8Zg+k3<1s{KqNm^UV(!m?1-E>NNl=S)moFeTQy_I)@JCEEQtEY@dBz-S#D+E}yuc zakbgkYV0!IQuef;^lb8GWcWW9!;0;AEK623=Ecr@Y+hkmN~yz7jg*f@JX?35x0#Iz z9^w?5{p`0o>04ssx*Yy9A$rEC8lWA1)>xl2MtNxZChq6;|F+g>zF8g4rlqg)fj$(_VIzc zbF0+0IgIic5_{c~EXG3jjt$P2acYXB6}^x96c^*ZyYtenc{z`K^ZXH=dWKA7fGi%R z-nyOp1<{ky-0_)14oljLaTCH)m4O}!Svm}mRfjMqTZBLCEUr-9@@2C0-^C8aoxe)zlocNZTUd8{EbaV@uDc2X!q*BoLZr+!T9rU zCPx=PUE5SeP?qoa7^|6=Hs_Ho&#(DJib8Vn-4JAlO3lYog$5~DIbiymx@D50V`oyUg%mQu{+=xQ*H52 zh@nV~8nSv0BnBqTko2kiNVpg=_L2^4ig%4FA`;=a8(F1eOm(y8@RW4o94YC$t4)_w zCBu$6v>$Lny5_*dyMB9fIR;P77?X9nAnZ(=&_xwwP}8K(mT(?lxuoyw*cB64GQ10g zbWduE4t~pALSV>142z;X3~4>!7}uT)uueu8SDb?`6K9BsV$1dwjtil@fK*rBpmgjN z$xhO^lT4_)!nY#R#(m1ERaIJJ@YY08Sa`s{mE`W2dq1a=HO$aWma41Prob=8w^`%b zrT-4m-Tp84g;A2K=q2yzm%E#I;{E~hjEsr8Gs1kufB_ty-u#qegkiuz(xxjr0?5{= zL5hTMTr}*!z+Lf_ocaJQ<}-lxybwJ=qTcVuWL}ySGk0XMzkNtqihh`lZRma+_QpAy z$pu+wNqY$WYPeS|IXV|f>U?D>c$|09-!YuKIX20f{p37OQeMJAQaoGIiNAKI;}kG8 zkN6vQ`gzU8d56liPFgtMKJ^u3@GSe(*85@5vOreaR1FER($+x#6ZSX@B50u9#4yW1 zNT?|rn8fIB`T>%mH^c*7nxr)EP-du!VnNfyApK5Ouf9yndrG3ST~i3T<5$B@6!(h^ zkc7D=(eT0j-SUW0PZvEv)xvZckpsYnmXKJWN$%?$wG>A7XP+`@(h!$Y57ts`R` z*Upwds>tcqnK;lRiFJnCvie5=OvNKdAc9o|4qDCS>xaOzN@k)jBKC+4D@cV7zV(yR zyugcZm?M(rVYcR|hHyWJJ;_yol=j`-CdP98)XqN_CmiJd@R8|_XRA(E;w($uX3_7d z`SCz9ur~>DLEEv%#l!n_i$n~DXJZNl*giwSik_oEwg3t&Z2D6d;o+(HM*=J_WluST zyTSA*p1&I=ApbSEbcS93M8^H`2Lo&rzxv-3~fC^uT$VBnPuIIX-%`L$@%PE zS(#CRH9fZ5`>y~JaPbmR7^or)BWDjp(=p^H(gJg_Dtb6?11{sTpBRujumHyv9~g@& z&4_jd_9Qfw{Gm?PxwEIk_NMmDM2y`Tt(Ffegv{p0%@tUYt}kqq9U}ADYW|d#sucHf z-TV62M^d1ok(U!W!uD!xTra&7m8{{(xVmiMf=FFkX3zrb(VJ5`F{o@nQY0;#LMRH9 zq&6duYleaaGJwEh>km^#cQJw+=5i}FFycLh$b_3>e#x7!N=$-6G50EN^Elo|%a}!Q z^d2#dh!}REQ2dlo?ip*Rmk;zWZRIn`Gv-fQPIkWdHAr=~ER%^ybRkk;|9-YPBTGV> zrd!XJ5hqu2_-1QO{9(1VA>Tnnknk_OYAFVwBe)a|q(KxfymSKr(A&}cmnSwO*v+y9 zVj+fIh+q9yyO{aQOpsA>nb>N|x57J3QGBz+?Oiu1i72N!>y~5%0}GfS+P5aCH#4T+ zT~-g~J85~-$I>!ow~=89N@^o0B?9OIVds#lT>B|-)G^I$ySXy|0_UrM{eXtt40>S)Vr+C$^RGqLZhLA9Bip6fIGfX zv`CRnH}SgnC+7^;(7Sg?M%!D61pl$)dvFRW(2qeqffNDr{Xi(z)0P&ky5VQKAo$}wlB$e{q8AlI^zut*mlS;j5e9HG6T1F^&R*3AM8$J17 zK(XZ%(8aV{cWbk~I5nC>T#fu|)6ew>wxpR)nFuhgatYa^;_lmQL0}1RA>aM+yBht< zpWVclgMcJh39rgRSnv%_pvc=Z5642HKuH2Ts~A+AM9-=?%xd@mkH5s#qFgg#Zh>BE zjZz!c#zAE3QdGJG^1F$klJLKWptim~lHAo$ed2#7)pOa-fByD)^}{*5bn43Kd#WYc zbzoS-fgkXhzn~>X20-O+S?mtL|0+yJI@h!?xc)3$C)-C-sUS&*$Q?Z-z-=!ug3WjY zd+m8@;0i!0+0iM08v`vYb5O1)8-DM$vS`Q-s5S@rbG} z>ZBN>O8&GrHhl?YvaKk!dcYJEU4ekWGZvy8RBikXum@DKH&tOANDg{#_$B^3FFzJp zK^f3OOvkAEOE4Clzk$doeQ97!i%}luO?+VAr}CnTH_{BLCY{1YZ7#$+ua?Z6i(DPB z6#8`ITUuQ7$coB2YF2V~u^ zGQ$as7;xRD{4^?RjUJ~czY-20q$QxT56>&M^RiHF`cw@oyOqGg(#* zJ|s=c|2^J(F08XTpVMfDI<|e4 zZ4sw;dgBlSRuY^yi5Edpunf|44um02R00Oc09x`w*xJDpO$1P@A*XYJah}Cz5NBph zSPRDdtM$b2HozcffQC>&bmXQ7JhJ1+W2Fzw=2Qsgj+uhyH_9wUmu6&i!`*YWLUsv? z9M+tq-&$-|(lXbH;(JfM+7|h-OVa=O_7s{H8-I-*8G5)8?w61Ry<2g5CU7ED7a*t)SXn&gf&C6o z86=iYU`{T8X*H^rMi!$k-cBRQfsm@7hR!}jMX17mH!Pi1V|}@%Ancp}U8)KhEK>~a z=0k^Y(opy{)4zT}_{cv+r^THfCFm4x$3?#!V+45ze#FNHfM~@`ODJoRMUo!hAeCpjnG$ZDy2l-9b#8 zgJt@t6X)`(zpb3+VYLe-@lQ3p3Du&D5ly?uz#p^2(Zp6CJR512UbAjuXekNa$i&%( z7&2};i10e9;HHi9(T#!dHqg3fX$wI&BPrt_7s-g#3b0RE&Ue563RZ+S9%HRMNkQ`p z$zR#SK4UdfhAaaosn1{ZgLLVVR!br2wXacQQ1Ie1d^AfY zOXYilts&Opurvp3Hj|5O&W)(U56Ap~`arvXC89Uy7y$1EA(Ok~t40DcJ>m&h4+jtD zPxglugtb4_eHU zU8JQ(ndtB*Kj-9u%v;-RCtq_w{H+wak388=yv_ED@|gHp^rbnk%NAN2UI^0NE74V! zKw(w}+}j>!UXrTOh1Gi{1!a4XJ-IAK`zN*)Hndx=S^z7FxI0`QOR`uI*nIGp~NTF52_Ok#8-Hzq7pI z=;$uj+5!i4%)%uge#of^p0EO)*&2wLyFNt0N8}E?4#QC_I7Y2*7~oI@6)-s-;iTDr z!VF~T4`Pt6Z|=)(T&RUNn3uOO$PQ48>fmavg-U)i{8R(YE&Bmo#`PKl%{U!ou=2)Z z5BFT+vz5e~6ycWIsNm%1qmQS4^Rg%NIzM46q^c0goBCg*kDGnsSw3v>l*{mmZt;7A z@J&^Wq`BpyCJ5~KiUdX}J3AEET;3yiS;IQ!g~qnaNPpL zwB}e0_NQgu(@zC3E3xVUV9nmCkmFH|AOz@bPz>7`=qdN*1GP}8IK(K&2O9PSa5kmn zrP#ipXxv_8P>L*fXX{@B2Ez(!-}A2QG9fBfG38UqA9a;k5z2=h*HZd^y)k&6aE$|m zb_T0}vT`8=3UbF+&1_LbwwtK9)5*?PddNVHFy7J{iy$t=La_I?6i{r9vCHLdqR(6Ai> ze61=ieMpqre*nLakXA{%N1u*AE(X)Q`XKK3`Jh&SIh@*L{~5*J-8!i| z{Q8l9D#EoEjqNxqh@!??GGkdsIoi>Z&j?k9FB(a2S+aMJ8h;sB&51VxrF^y9EsMz+L`InIEV<)Bd^HUcZhKI{aOeq=pDjIH%&QlNVb zTh7sSp@M(7%;FYLm?OBryU#i=c~Kzl^y7KNq0M}h#1nXg6YFi9ii>jkDlo`_m|V{c z{?{8lR{*bk2vrSbB#op2`bB5T6zL7Pcg+8O>b)O&kL$@I)9U>qtL4d@DXBlLP5i_I zz2#|wN5zUd#obI5t#_5zY(Uu}9Su8J=x$GRUHY!&oc>}5wYc$vEwoFc6;E*yfk0%Fll@fhEz2;erervX77pUKqR|AWpOAa8)cs>E=;>XQd$rSR&&3EKWfo8K0> zjGF?-dnGiIpIAiwQc7EhWGt((RoWLB4Y)1WFX4O}sblG{j91uMe#zSuWg+x``xEq3 zym)uPNUlzMu%9ev{F@|T*28J9#2}cx6wd?Z(;MtqMRZ_{4Z}%FxDbJ0mU?tj%YmRG z49Q;`GOVEjElpfZgcM!v8lIVxQ}7nsOowBUc(_w?ThRcU{8p*R);mhRIf{}XwdTS+ zy4MyJo|s*b&=&YxYn_klZF|)V$`ukK# zqq`=$UcE1uS^T<-P2E@1T}~hB^vY3MHnNm9%F99PFXuM3q(vPGqrTSYI46 z`>)UW@gvo#Hlo}vncX}!=Xv8&+sCKK#*NbAFdo5__Gw>3=RsqboMWWzGkyp5T`ay; zv#|BH;hNFI4eB`8A17X?ef#mHh)jZmn~gu&*OQ|i$6bxn$nu&s8?Kyp2xR|Xk;BOa z0Er3v>-AO%NO0`cmU;@CV9W8&njWTO2Psi-w%4C@pS5bd*Hz#&M#1N|b?Y~m%g#I+ zYk*fov(@aqN19ui#kB>pXuVI&(Oi~kihBB4FrEc{MbJ05zPf56{7?0FOtYnX5|1)` zTJ_6^6b$Tm(#=ApemC-sPkxgF4T-4$y8?=;-GqQimQR5l7)LBJJU!BhtLPuy5OE?P zu^Y!%BdR>1x~NQ6q3TtjyP>V6_aqG}kQ^ET;?{EYUo{6RT(=Ce+T??FDWv$Us34Vi zhQvdg60XNZc(PDPX4kDA-(Bxz{+-~LZjvPSPRKWajC_^RH{zi2C;0G2E*sN4q`&7P%)(aR_2U_D;gf*K6Xs&}8yn3p6j*#o&zmlk>DWDp@nj0VT^>kxMZ zT09NNzGO>?R%R8C(a3MhVF!?atuFZ6ta!2=_ou8Xgo?N$x!a6uCB(@Fm^G7?(Tf?`^T0#QiHOY}y@@ z+rxoX*;$^m?I57mbxb1$29xs1%yb9Qx(Q^&N|-`o6U;)ZT#gZ6iBkWt%0me>G>!cF zc3%a_PM;xs*ATXAyHpgW{)vQY2(gBEwuR+Mfj?)RB8s6xeCAd?cj{{;pVxP|g&!=> zVne^AodNQm%P&b3fgD&9l)oamd&nz|nMoPJmW9$2Pd-r)5_{)_RRd85xp+LI*t3C5 zAe+M{?KRl^trXE055ob;M>uZk$})IWJJB8f;Ov}XAdHfDiGOK$zE04*nP7UVUUHUz zkZ(D9jh9GNis9}@MS`rILbsaWQejsk6SpX6|%f&ug zz(EF)6u>dIOg#XxDR>SHEifdMExaVdv1Rau{shOB321p;Amq{7hJ47+B6xhoIC4`f z(r>vjw%lxDLdaE{_a$Sq-V9rLVhqe0s%_ur28fm_U!t@fy<147`*=KtCz|l(1>rq4 z6RM}$rUqmeKd1s=+&5%HBG&vT8v$3keykD1LxA{?L(rcT$3a zj~3wGtpr8+9Iz_NANq0d(vufAseLJ=ZwexL+7kY2JVSZ&%(WXzMI0;_$39k%$*5B< zCZW`&oX6L>%BP->JS)BqBv*XgySqQUpRoxqSc_Yfd2piE>y0{AV5Bvn`97 zQwhI_wEkL;d~=2+Rpy!%0eL>8XhaMP}__Pvzg#2)Otc)!H1X9>Cm-HCdm z7WL>iuLRgV>VJHCajaG8qRpCI=;8+H&v#e9a3e_YEFV3$+hnMfhl(V1(S;&EnD9ou8yv z2LyWH5r`?Y0Q$x?S=!)b@U^mtf*cR{xF`MS`3@;docG| zwW?>K=Yn6)a_X^aI^g6)xhr`E@{hlOHqTnMwxrKHzK!H_Mw+vVA2 zP5{^^8nq z;PMqF*%!<=XdZs`)K8DnaQgOFiCLqD_IVZ3c~0Hgz)(3cCj4?p%9wM$DWg~)*JQAV zmB$&UE1&^R8nq9dF``f9_*<*S*S%7MNx>Ma``_Gc-Uq01db8s<3~&~~ao)+#^8o0t zbEndur3SrD<-yeg#LT9XeK@9};~dEDj}JC#7+(Vu&cWOtnl2OI51M(81vO%?&=s$M zR$`7gAv~R+yW1>!u~yc+dLA+wufu>hd3eG#qBss2k^9||eTg+Z#rXTxC`%jScUg;f z)3-Gx)lfye*<&o7*W7P@FKxzakx=N)6#Q;C7Dg4@f1bfp-b)%Q{T`%;ARIQI&}mcQ zwq11R^r3*a;wdn{_)Bl}v`r8!=?RsrF8}H-u6<%>HAGfG(oz-Aq)ebnEu%2bj?ad0 zfO!zH%X{E0?)=f7)(5*zMmNpkTFI3+r8R6E6%OP-#$MUkh^X{9e`)3B^+~_fDf3O! zo0G|A&AJCZq-eyZcS{cq=_S)HQIA1!_jr&Vpuo-rnXC~AjPIGPY0SZ_c56Q=2LAn* z^%u}2dx$4_Y@2mHpA1aN)Gaq$x++}?@T_Hs;CV4dQ(uawUK`U-s7>eI66OBFX6{~K zLZ*ldLfus$<-k|ePjuv&oYpCc=)9nvqT2MnlL{{py`4!C&#&@OMOO!wkokC}p4*Hv z@w`;dqk;4%sf3WuPnKMda*$voU@A5Rz6AEGa=-A%Ihpd9scS%fjD{+R8`KPe9)G)- z&*!+$f#qbN;qiOQJjDo6fyiuqM#oHxL7!9MBTx$=qj#OJzH>UJh=0hgzUr2p0*I&Q zl}1a#f8{ahonaQ;6aQ3tAuqz(hKuEri~}|IYFN&F8y<%qt11aamSKdVor|pyE_Fck z(TsNL#Bh)^1VqoxMjke5!#GxbS#rw79v)734?2-qwmlg(svaVfu#$QC(I zzT&VlAd{5-?ao;u(|gD&sLa1=TG5M*GZu)#kP}jiVy&LjKC|+7h zp5ec=GSKc}^W>P+3&$^GGtXVkbYUc{1$q`>NR>yJ(mXJr%mS8m_uHc6F(l_SWL4(t zSa}Z~I_;42Xi$?6EfXYiiV=!ULljN~Ty$Ovd9aLVMbEBtnY4y48bgtlCC&x|?$aW@ zH5(R{)R#9YU$NMm<*UB!SRLugy<1%a=4|gf6B7%4Tn9BI4#PBD01e&>g$7mlqCX%T zwCr%Vf0E;K**}kmw5WsExJ_P|vYZzKEhY^MZ*3mwfdVVC;0&9LF^}yAxSkxUr>tnl zp0-H)>>M%Ne(A5RVT3QNqVtlH{my1tMq$9n%Hym3lMg&SKdF%hXj+3uwaZ@pQSO56 zTXO}Qxe>lXUyWIspIr=Jy89m5O#VfzPQT6GIV_K@hXD30?GR3Ih=h$VLdTi}0<0fu z7eMIh;G{9Y4pm(ssCUa%9}7>WFoWz@wHpxBTOF(W@{0}gyHZO~^Q?{rheimQKU+gE zo1+hHna@Pr^IBD}T9pjymhx+N7HOiumK(R6{j%B7cM!<&@8OuLQ;vJ8h?XW2(J{8#QFSWFR~QGu_YNdUg1$$$VJLer{Kgu3Gx zEHD@avB0KLs+-BncqDcFqNPoujNVaHy zQ4jYlK3r``Ptf&F^^^pxg2>hq)s?XQ$7gZ)WD66e-lRrpz_Vgcfi3$qjBlE{;N91! zY<9P}5}~-)VlkC*Ar_rPGHT- z#R|4zImb>ut4{Lbs;P*+-aTIp(~wB(7eB~Sk%V??Gh&4(-zM8eV%c45Rh#kkKbFM0 z?T{z!)2h#v+(Z_^t0+sA2ZwPJPRG35il-lhyS(rpBh=k`OerJN)>lc(U3tjTveVxq z$t%OKTH-?Ynx6~=95vtF7Q{mCJx6WScqbZYRL!pF5spn7mZ{Z$Py(YTJ6(fqRY+G8 zlaQVK%=F)BAovArDWQmhx}2noU;=;nW&$<;EcI7RAnCU1LS@`=2`rTHF?5IUocG`E znL4(8YeMuwFW9CAm;5>#65ex;Y38K(zlr*x_Ws}Lp|j<_kJHyRnZvI zQ#yMZd)f-Ds$EK{1#uqj>-l=rxWMWTGP;FWcUgpJM3b6)h* z+Yj?ZcBq{6l{Uro@f{!89>t zmW=?NjQTaVK=$CSk0RQ4)HdKbNVgCHy-J@Z)ty3BmM%~q6$)UHH7{}ya4PXVYd#DE zcZl$jp0Pj{xl(sDVb0eIBB8sxtm zw`7fBd)PG8`JMu-M%8&WOgajT`RFNa0vf-K!)_2O_wX`UJ3wLgXHzG6SEzA`;o2I* z#;2s=S}1{HQN?#GyewA~W*F|T%L#@g&#L}&`zpAEeVg11bQ!Y~+_8>SUj7VmOen8HxcoJ`0QGwLO z#bQcqZ<(h07d#mpFga>QmD)M8bs4#v5_V9vQoBw8tSfVbU_*dM?ks$V@Wpwhv%%)S z{f-K9wR;}V3dyL_b%#%hsa+NY5$=~W2IenZTSqot*JDrGI19s{*oa+~Gy!_Ish_j% zw=6!3`o&%iLb2Aqlo$uGD;~adaXC0Jx6AVT1Vu;>T-jhk@da(zNv`t&XF141)0pvF z;EiJ(&OCe8ucq}3gzD?xw1zEO#AA(X&OY;|#GuM3dLgNKV^P9&eEEYXAGy;3d1MJ;LPz83#>4Z zx3O-xhbH)*yIf=5v$D74f&jk`sNpo2;ATgdXgQPh{mhrN&d=c{=p&^LeRE*%riurU z!cyp!pXGj&nZ2Jl+^eId$(PNb@BMW=j1VNi72Fs&bm4e`U*Hk_*dzsgSMOGN`QBhj zkQ((L`or&A1GuBo2P@d)Bfr(yWWvPpBHK@`(W&6d-AbkGKXsuaxWyDSSjDk7@seW~ zgfQz!(4&$M__i}1-Nd$rR{0<)NAu5c14YtR?MuKER{`NBntg3fG=iSIz7^>kroBuK zT8Pz0@=s%GD*pJ#6V%9u!|MtC^*?~HP_yfmn4X;d=3Ybh_{X(c$GklnTDygZWF)I& zkMlj}@9p>kc`PRT=<2pA3QJbrd>i4dzFUnX>9c~Rg&mK2>x#P2`Z4m%%8*llswiR@ zR>|q!9!fj3cgZi0+ zW}ovwupB$`Y+A(|>#)@n5O3Yxc zviM0Bszi0Z3Q73*6JYO0d>*SrY90LB4TXGatP4j^}|ky!jj-#D&| z%A9rIe=bB9ZVIk@>Mwu)OUbwJ)X!Q2$vZ!#$Q4Mpglon1CTGG@~UjJ;lh1^wy{x0KLpgYg&}Zt%YKf^!o!)vtSY z0{{Q0(gj+0cm1DHr4;Zl??`CDNzi}zV0;)MFeuQ~H`p&QD8%2(+c)TupQp2%pR21A z998P!;p6Y_?d|X8;vMMW>l_&1;pyjt_w@-52=F2V`?x`fqqnaNZ=QZGkKEmyyj5+%~{Rgi1-5xkP zJaTgI@^yF~m6RTn6!$zPG3IGxQc`qkTufqod|Y%~LUclOeEjpIq?hq2smV#Huk-Ut z%St|e`tY%;ygWa@;8Q_ne%(1hgS+uUlN-q6_G9;6Tvul;XyP_rwW7;Q6xw2>B6Q7t zv*|Yt?s#>le{YOzo0-aGb!Iz%EAi2C?SK8d6`I9V$-&Yy8!EU{yR#0pyvW80J=;GN zygjpK#)vnVpaJFXn_$zwlgIUaRT@Du6FWK<)F{lrNpux}Zo&b`_|6IF0!QKuuTHn) z3ir6dYBHv~Jh&)NWP{p_iZ65hhtoM#gon+=nIM`{xlI}0-Fq*CIB=9L8aMLBgjafW zYd#a1gl7b%BC`DTG<$5yKa*EVFtjXXnZ#1Y(c_4HX4@wS>`rGY;!BrOAOcwXges(^ z2Xe7-QoUo)qpPWeBxd%f=Po=1fV?%URjDOs8KasqegEFGQf3ITOS!0LGh(+?)jX@x z_UmK+IC{>8w4C@hOKo;_X`Ku|7h`=Ee|hi6XjPCuy=qPD$nFXXnDmz?SWNAs34uey zC@dAt_QhFBg3<<#H9bO|a)u3Ps(TuuUxWf77E0^meKKff@U*~KV`2pn$ zvLGOf+M*ubROOAduYK>GdmuIBpV$zegD0-6^c&ZH;tGy<(`6h?J^s+|Z+GiwjLY)a zkM6_2uR)_y?PHoVW&|ysEn7@4ff6j$P8b=1VSG?$sLTo-HQo+8-1_CCsrD3q8)~#t zQw6XS-=Edi1){_WUO$nkC8L5KDN-*Ta< zIZX@C`6dm^g-w-h_0ay!lM{W#!x638hGs(c*hu^J&f5q~xB4_y9P4$uYc8xb*^{f= z)L4}{^gt^4-EYSBV*+TlgqJYW(F}m!``{`{0NUVwX(QLGNjjp3MOS!|=qZYhW*af> zNXbj*mI93W#@X+hWut~KyVfp92L&WI=INyEht*wEmf9TKi#h6ldh`LcIJ2|2OHKTF zGJCq8SjzS;A=S*bXt}4_P7dL|tynmjCv}>(mtDnfaQh;r_SK z@*qfv?PIx*j6+IKZalHABBqhirv&-mtWSbNMuZ>#*CtsrnlD@{MjTyL4?F&PW27U5 zGh2@*K-i_C>U^us`nK?Y*6NMNS9pU^iYwO5;rgElp^sv#X?x_dL)Qj3=!xKLnuMuG zxe@z5<;^2C#DTLFzSovxQfgA3;F(E0{@pda z)I2)`t)*`ORYpvmHnWu_SpVTD(wIbr_@w>%c3%6{-8ocn<+vXF?VZu72psBI&gS0t zQW}$)J;aWhN$vDSN(@2v>_b5#=~dU`HoOUgsYF{);2LK_-6Iw{e$p+Rc>07 z_F2OnJ}K4p53$DBA9xqFeyoa{2G1f}9AN5UQdWVWP%_!za?HcxMORd_P-+_Y+h^I> z>!9XEodYDQ=bt$ZeSg!zeSd${HDuOWx`Z)@3VCJpD8X_0b9KX!T&4!OolFFgDjCJ) zC!2Cw;cy{6GuPq7!AOQ9>oITmg+eWzaS`?Xxp`LN&zS{>$*3A0z-NY-x`kCwo@~ks zAcCQqBjn;UVdF@_q9Rg>Tgk6AnTnjkuPT^=;?_ebITt>IV*teKOAG_^E|HZobuV_>F}t z*^0FgY7$?KLbmrmf>Xzs3ogfUU=g0d-2@-5pw+9QUdsIRnXPpqfSu4rI|Nx|hY!y` znNu7_WdIHiA}*e7d*0cmrjwyV~q_a&kG#t+k27iSam++epBBjIVe7%tm#bjyHFf-rF_^N+_%%IDch~FwXx6`Xq8M-eWLcI< z5F!~dBCK2C37ZrD#)q+i0RsMV8olAqhW8DYgjo(8XQKXjaIJlNIog1#OghstO=8g} zHSn#E$neY$RIsy!ANEAXz42)I=hx#?2ZR9qy@6|%DIu#|D>mQ85v>#Zl~_EQv9@>Z zGPbS~lknq(`T0-nRlC-F{;WFu;JD&{KGjB>4zdv+YT2{+ZwhzsDz?VDlD(d$>2_2) z_v{j)=azia{opLBOc#UshQbEcn3{khKmUX*yu_=n^jGNzB{M81_>(ii*k3!ZS1e6C zl&7x_oW_x=#-fpru#ss811PHHGGa^hsTUG=KX|1;8M5EV;~(E(N;%-RzmEv2Ut;Ut-DffmTNMJc&4+8;gpKw;{>pXEgb*&b$Fg|z ze#>!W_EJx3V(x7z8%#x5GL_P@IIS&+J>^^O^I=ZS={Z77$RWiS%WtGK4w zspjxj9IWogXm^&BYi~Ea&iUmgTrGB)jiASel%&WKIDF#b_LsDslO9~Zdu41kT19I( zr|#PD38rx{uZfyjo)#BOet5@dTck%fgVnsUvA!(nCdXhe6EBBYOj26c#Ve+Q>aCC) zYzkse`=bfS-RApKm$TS{!W&e{vc9)2EuvVWMN5v&)m(?ti zQyO8=$((GftwGGN~oUE~&p^TL24?7aW&7V{> zn;(QK-aT(2Pz1Nul>-vNfNlsu1poZ2q968WR6Rak%muQ?&nhckka@K`-Mq^%NB5EB zNE23G;Rj>b&K3dQcJ8IZ-ImI%zIBJ4^bAd)(@cWu$Ic<-<*1YLQF_I^26kaqzQB z)qQX!c;c&CmgiW(&u_JeFqe|UiBkV5g_U5{q18_A$_dg=J@vT9jwoilWGxTD{IS|2 z#PewTaWUe*(93c&;P)pv4eAgQ<<&p)SB~WSJF3z7w*XHolmw>13O!l;_r3fp(dI7- zCMG+5AIJRU_>)FFqv~OQg9W_*On36TgXQg+;y`06c@{gh_B_Ug3txCzX-A*e(yN!A zJTE^c(;1J7X^kCY4i&zi8RB`c^88g4y3AtwHWuUG&pf9W&i7uk+bAt(+pS-gW~_ZkfU+n8?YMd1CP{JA~+ zOUSQeoHte=|C7l))8pEd!}vrH!o0(^M?tkR?y0M<4<>VEiyrd7duK7>;BdRK;`u$- zToq}W|BtD!42$af!aXxEbhm&s(j_3E#86U751k@{prlB{01^@s5-JFYARQt|NDN)l z-9t%t=iI~ZfA90$Pv_%$_StK_>s_(e3StA&yMn+HKFvqQH`qwXnTm*-h=8%$hSy%c z_TJy}0$m_pFzWDO(N)X*iqh0}^TeJ=*cRb*n}~EQ^7N?b^+iyRN~y!)YMqCVx+`w; zim}guiah+ca~*xA?WVaaf5<1buW-W7*(X8du2_bNvADJ``NDX!pIfm)K>Ilb0Ca+4 zAE?V2YIm15aAgC^(vrBp0m2h0Bl)GIdAsvb&udZN2>Y4!1{l0}!Ns+)*LIHA1sp!kfQAQ~(ZGpCe^)hrVw zA_AtGK`k(G+6i7R6_|NbP74!Q z6fpVC%;{`_@#TsqX*CgUVsd&DFctabx+$K z&SsE$F~sdWpn^HyXhchW#e9%nIo^^9?p9 zYY6-m~Q-i+=f~8C$b_uMXN2IZTjGUAVW&C?tj(lbRWZ*XtPNjkkdT${S$uR zGKKdLmB+2RqmL7z{(d+)aZ00FA;et9EX$TP96YH!=>CvB#D8v2%3wOafkP|%KGyES zfGr-H+2>1OUF9j9>MI#oqP(SWjyZIh4Bu+cGgVxJsJyaZc0&j@`ojZIRakyJRCeo| zr}FXJ>vIJ71*i8jTj&Z6*o@{mqUHX=BetN=wQ^JJr z@(0{qV}UEbqnk^)f$bHP0%NzydjR41^V?ooWRGuz4=W+Zo}TK~)7|Q-TZ7_ zIKk+yt=vttXbVhJ2zfnJ4Q{`K*5h+;hq?&`cimAeCooHfQt_GJbg{;Qtx284GY|lo zQP_BQ$wIo?aNZaJ1-w4Z7mV+i{5>9Cv^S%0ad++(-*S%A;tOAyp`4Put{-9uXz=?X zv42{K(vt7~dbUp~oL2L;PRB6S^fL3PrXof@f-S5;F$jl-U(wivhDzxKX#k8!Xr45dXl?6>3VI{qjvMAkEB!=e34z&9V2*vFys z_3yL$8jhvTJ8vY;_Ch~q(6-7X_JkbuTn>b}diwTOCK9qBY2owpyHA^+Qd}faIc!x&axWIS!F5WI( zMwnDU{*3F}os?y%Qx(@e8RugXFLP|e_knWAuomy@VaWV15q_5?DeiUH%b(o9jubqT zfd5Pc-~YQ+UK}?I6ik(RQotelZs3GP;7sMvuT!n*P`=7SFml!SUVD~0#Omv>fs!g} zCdmwLj6T_l>N`uuG&-6U49C>SuBEF7>YtXQQ{eM!$l5lXI7p>~__2m9_0o?gV%5}$csgp?F7T9SRObIZ<`f~Dfvp$CjJ0`_yR)T8p)PRr zedo$HZ~#@Pm9(j)chJ}$SKqY0aECY}kn=R{ZOf>Pp>s-U%Bytj5gw|=Yc6{cx0@CE zR+&uT2B3ajfR_nl=68u=$V$pmP#r#49!YlL%R)o|>67x7;M2q|@>|`pQ+PNcqJ1E( zQD~e5RqZ|f@hl{?*2furqW@=l%BJ2EdBgB`p4YwZTq2=cu`Rax`n#y?Z%tY)WEC`T zP37q4gx!rBf2aSmGYJBbRx-)N2Uj5`>Hf5u0xGyzgP!WS!1(dB``}Z7qaSM)QyErE&{GY0scXY8Yh8L5 z(bx0A{p*|1=@ekGM|2IJeZJJaVd#NDgdCuoE~^=VhuJRm%qW25^>JzY$Q&L5`UWrzu{44RVP z4}IT~&z&dO^G?hxk)i*c`m=;*u+i7}x8Pa|&U8qy5rn{z=gcb=oqkM34;cwY*KwKB z#9`@Ch6spNK%>Ghv9bqbf4s|>>5GcD7v{;gnC{`V6cE$31l-UZLB}v23%%iM{>b83 zB=dV|`C^ex#ac=?{5>rG3%igQ0XBVXO0(bc{b3BMI(F%1YUSMBpho?NeX1mXus}Cr zI$t{$1GWIAnI&74hylW>mMP-@!byiN?oRM)x^yKvO{MP1Vu6o_&<;#bmQR>#9-?=` zL<3&0D8l8i|8-yjPvnm9TS_JBiPjYMu#h}K+L>k8XG4s-5wF;iUMWRpivR(jKv0De zT6VxH3x>{-{3q{cQYJI6^w6f993WFpU@2x|^Q*$4dR}GtXy_@uU8){Mzy(9!o?MFA z?8m@Y*GsE|d?-1bJ+4xjQ0%abo9M!g77CW(wLiadR%jza(qH+u<=_n^#MqK)@an*1 zyZ&<{@gd;j05tRAu%6kQA)a&Bq+HU(nZuC+UF`vUbGi5Cjvc$6lauA07Z|&<81$MN zi{d4z>gejXdH4B8={L+n!D)~9noFfG@FlG`4>QIHzu*D~zP5D5K*eay8f{=vLG4xy}fD7@2@&#rjOK))|H` zkAJ(xh=+2_ITl@ocLA`mu%fL!vCpT0wSzmaTrkl$*!r^7+k*DYRy$jitF%8j)^Hd< z&`t5+(T&MJ3SH--;Cr58q%Q1)uSzSgS^&;<>yifv7uo-)9&^$tk456Q(t*V$K5aKk z3NSK1i1sM=&ht#O-|5QzY)w2zWMxRnFMmm}b#xcgb}4kTAGmaYk2WQ%J3ki+#U9k! zn#q&2I%6=B|DD(2j^3$)J~wJMYS2?$AM-H~kS7tO767UH|1Z*i$F0Ha>D(%}^clRZ zUNRK{Ht;XMlNJA6#eFV=KJK0s8(Vlr*^VLpY<&auQtDoz-FeYd+P~?*yw-a6oy0kx zye#g|%U`)sd-B0JotC7d8RXWip~zTy4#CYYB#+A;E3f{RWT9Q;fLi>gODv!+{pV}` zDg7h-D(R=aKcivkk);God~|x+#o$AGRY^eIHnmM@HnX_3P{xf}$4xk>TgE*&Jvbh9 zp&8i4Ul6$xvBP8u;)gmJ!^W z0|e?c>Uf#>whsqo(BNK2iq1I8SxJQ!>cWIK9WMje*VMoHeTbaA(59bz+pG?54Z1V; zPzJFegc0|l^>**cHLdf5o^@G<{-czfc^D8p3qWR|ZkAz#G_eWv%6W@oUU8)>7A2-p zkLsgM1oY#8hDm%aO#rwj1NFSXxDetR?gjbQect!FQPysnz(jWRu zCkY5W*^?{ZR0eloPy%c~#!&C_8t?mR9Dthn{bkC$&?R$(SRgD7#$WuEc_9QKSU#L4 zs+6f9L^j_&=Y5wFCzdy|k<-edMjHa|fRpWF1sys|0@f)#j86Eh<5QGORnpO?8JJ=I z1**+6Xju9empUFm#q_SwQ~b`WfVuBh$0au{%d%Utbgw#1<-;E$SgT zV{bg7j{6tGM zuFUT4G3g<)V})*VZ~B>J^J+rl@}G+;PgUr}^lO&-iy4SZn1dN`-((M)4nw_R_0HO# zn-gzX=v%c;2;D5ZfelmSK^*^k2q+f(xvI-3kTZGR1yJF+x_)S!D_MX*(!7KhcKbf7 z@j-$6ST`oLS5EAlD-SkJsYbP!3<1))a8QI7Ii$irwkr;IJbk+c?UJG{FSwIh666+m zmq|t|4{;-S#l5NW*cS`P?!*QcDmfDUZ0DBbFN|1lqPx)jTJaBEE3 z^^^zyr1?@WFTYx?rxxn60>1aa;cjP!>1x!9#C1d?_6r+ zWWy|5-;@fySU5o7;sOO~u_539eB1#MoNc_i=h#g0TCIC54nGj@K5gj7zp-&k(jiu& z_@8QdEoY`+f&P8+T)}dbkqL*mB)I1k_y^|CkZOJkTGP93EK-ticn^ssYFna%hmxrh z7f#x~o&Nq{ci8?H$rZ-d66q)DHM%bQg)8w*1N6>72+&eRpa{sed#)EIVDnjC81~0B ze^L!f4Iqk8@_<-$>72slAxiX8d)?rGB-*N-!M176*sc)bGb|?}5JG-x&8OwRgBtA; z6gkHn5WhZb9X=r(pc>%%OGNiI#rsEU&`p^4*(v&CDLB*A3BsIlb6AU}vi)k#5J4b~ z3@aExK69t~#ysR>4927{i$^KzR9*AN1ipu{QPjZxcW9$!)W=5vY7-op(}a+f)jmjj z4-&^RI3V<}Il05%%j z^aF)l8J8TY-^ghNsoDffULkVq1mJmI9p;sCgwRst(yt1q<`^28zstjeCyj3&% z29*+=Pxi2`)wo3YlnQ~@ zv(>bopM5o2wfCiHC6{3adbT3xSvuH}<+{N~$N_W0I+%os!=JpH@#2U)8q(Ti8G$F( z8xTZ446B~e<|9w<5&?k=9pAE}M%fLyYTGV17E4+FCk-EJaP1;aubL-(!d0LEQPPM# zoMU?9l1N<;Soefrcmgr>jinnc98RhweGWo0JaT>n-^{ zQwj4&9%piLv|1MRP+391(8)J22%BCcCZXaRxTq-dAzRp(nPb3~bjm?V0a>k1%$pV6 z`uBA`(XgsG6>LyC_;$)F{(r&W3+E?FiPA&?Pdt3EX#3Ni8RP)>dQ5dA9n{dCuNUhG ziejP{N=XA~o*++P3;svjdq1kt;Wm62JXPrO&F>5tHt}Q{oPnUzJ)ip?VFgP~6(=Ho z`aoCFqthWm?(0h?ys@mX8g*l~|I0sII-73qo7uVW>8CcEuJA&1%_`L|b!wE!Dvff7 ztfkRQc2Y##4VJTnOR`=)!S03rF@KSCrsex`%p@If>50s^SlKbmS4c>w$%GR=|Ee!- z%q{Pd!S>Vf!CnmgxUf^aQ}(EEQ*ns{aMKyYbqk)EzF?H_5FAPE3hSRH{q)Ni0X9VJ zX_cF}A5@Zi`KCY1HIfm6prQ8lOQP;2KitKgUE)>nuhahaRFQW1_x8^|2~?s1oGz1c zoo)}b{rsW)*%Q8!*_kz*bg{`rJXg&tYyi2(p@kk5i<*W4lul+Qj?df`vBQ1#@ zP0({2)=b}8BFbdmwY*#qZsp0|-l;?a2XE>4vkO=u5qs7nXCK6)S2){)5mYOj z3EH{hBrePwUxy|QUUb?lZONu3&DZl~Jy7}G>3-mSKHi_)I}X%fUG03|2U`U+1)!8D zrBJcfl>4sV>DrXN>56QNnQUG;nC#QDb%E8p+i2bjJSRA80Q2d@fcDR4nT2q5Q0#|W zi#dGcYfPO=+H3f;r?p+NM*AyzOVEd`;R@pwleAzXb+=INa`nw!6lZ3D&)-#2pxn1V zo?74@|Ha)Q?Ca)NF|6E4rZX(82P}(ON+8E!28Z%TF}@`Qb9f?;m`4URYTNX?wTPML z30?YLAPB66o?n{za(f@F^eY)VW>*@fv(y2yth~r-Ta&P-vc^!qpBn~g-4O~#S=8mAoLA3)O*43m=1zJb6y8yQ}mR_QExxH$n&5 zVrJLsiRKGkvUXCVfoCJ1d0jk6&t|n`18~S{y1bPmp^!7)XCrBUEKTQ|LnS5n#v?d$ z!qNpfDgG8YcH!ysgUkxFQgrlt2}z@P()}4q*ZuCKcqYuZgqw@>Q?tMihrbV(Dv%F)6G4-cO3z-Z-mPF4 zd$mZ%Hya>fY-{8`8OQN5lwusAY6StkEHiu`AoE`Sbep#j^`8x8*6MQ4FhLXm2UD1# zTK}JSWFL{5);N;J%=%u-`T2zW3K=*!!VI-P+qi!~nTu;zw|6;p3Lzn=lkL!Aj$=vK zq91&xoIE&|pfKp9Cp7ZJE9EC!c>0J|3G;D@#y2XUVd9%5paaCWeyE0h!6It}n*(on z8SCPYmd<5Swgw0SI6LrO;A!rLrz#c$`(tp6OQPqOQn%B3IVlrnzgI_x1AC{Kr-w?j z1PA!uxNwPmy-ekI>&l)GA~;}4SHN9klc>sd{O#1#H7cIJMR@2_PdgvJLm@>>#20{R zGKkbl38F+JwG2+`y3v`#7g2xg!kxa{ko&KI0(kq#@6#iLXAf#^HnoQXYlF0KpBG|d z-Xhdi7J?*Ju7vonMSMsjpw6-#;AGpG><$`^5XYp5w1~jxTj)&b(+W0BEHJ~XaUw_`tuftV?@54lk!Q(AhHtfXLBTyE1?rH$+)?xP#q*s} z{Ic=%l&?8{WCMT;y38P2rWJ?!1FaSt?bHo2z@jq)Id1i?g8q zSBP}mERuEdvxP)9TKgUDJ$3yR+}#R190l-dt(oB>#AH6p5x!O~0LI>e(D<+DgDR^% zGnx~#Br;&FJGqRh#iz*k88xGZ&kD_);~9xZnA~-QES>~tFMGv%jeJ=I&zaDx%o&E- z**9CYC|vE20@yQ^6XXgy96d&SSKS4Z28UaBebtpqM##)J*}&WzsKO-x+k3`0q|t5w zX5y6WXF+yVU1-m`l+c$#Uf4ilK!UI57m`f@skfYluzjKCkp09*e%Dkrr47|urES~e zc2{p8QZVgCjrbE(Nme}$ket*~-m76RaBssuuVC%ch_8XZ4%^`yi3LXzD;^brK5#R^ zDx__8d#hU{lGrFY-m2jeCbvDD*7X{*Ed(b(c3wtF@sVKL(0qm$Cu6SJnLO1wG|`f| zw5|ke*WJ5g_R;Cqb@2~5C>8p2zD_atDD$&yGbI4L<&7KjA2*F1aZ;&`E*|X3mL6c^ zBqjb?;3!yv%!b}f1c73)lqjUum?Uk1_`ttK+0ycFNLrI~SIhHm%Wd1UZKx$n!TZ!>MT9OUSKM&4(4_E9>b zj^ubqNb#R8Q6N>>!)HUXDNu4hij~uzrT?sfeUwgV1Ji!MX4~_TyDM>-T8GU{!}HRl z;r)`QJsvZmt3odK>gX=mEiz=#9gQ76ji?yd)s+Mxm5Ee9C|LOtgv*PkB$WUC`8cpI zj|iPhj|~_1 zW!HuhNL<`)&#*i%U5r|iiT1N?w2G&eD`k}b9=dri?Jmy9X2K@?kZ|xBc^p_Q^2W+O zOu*@`Wt7<(@_zTG*hrMbp{D1OLI@jVqU2hcQb2qQNe$LxY?g!AZkeGHW;eYBg3(`Q z(S^J~_By=0b?tX(+0S?EVtEg&-J+{b`}cAB8(mf{O6O54Jo8??q|O`UD1Y#A5}c5; zhoDgjiVR?{Ft*Ptca7WlE$KjP@wTv-DY6Rjl;?#G_IDcUr|^! zLgp}!0sW_>Uu57Ai4f&}vZ=ttqyjY$%~0CSzU(B#4E^J|+Azl>C9w7Z>Jgj(o(57g z6vu!6*K9&t`cxS_qY``ES`wGe8~HO77;&sispM zTYuN;Vh@KDbb=IJuSG@A{R8GtgJq>dn za_2EcH#F=&I~~vk65{W=lQIHlA;%kaSCVUd(yLjwPG;Je-|k!n=jwY3!hP!8j;Vi0 zD?yHfLiSjEN3$pJA$r5&5MyH382<~}{2J;tE7*yJ>b0_}3BB)6*MjFx_ybR=^R?AEd;1+c07(x93QzDwL+kXT{uHLUK(1mw89b7!((;9^8>G z4a~Gpq_40ofS{nG%CSg$(RfBBNlrd}8QRjul=@ZY;pJD?omoeU6UBz)#^2I}=au{G zCjLZw4Y1{&IAjF_786oK0pa#~Tz!SEoYhDn#=yl8-?Q!=f|rS)uP0Oq8}#6@a4LY` zZA5@90i@mTUk~J){8qsn%$Qw10s-hw7kmIby%+oW_(lDF$u3uJ=6>4?Rec2D_C@xwVA7*0t$v$N%`f&f zs^vK65D(~N^XHVq*q5bp=hODPumnxfXnK}ILOs=~8aVA47G1i7e~qUDqk;g%(}EE< zi`dds>{I0;g^JccCg7rw^obx^?lwRniqQi%8ggqb;Z{rgW;BSG5I9z5NFu($%2m>% ze*suHDP9@GHYdlLRf#RMQn`ED4|reAX#^5>pf`}07z$+yD;JFPh zDL~O39Ps*@!EyQBeSgIw+qU@nZ&snGheq!^)pbE727fUR4w>3=geeOLE-{AC%dZkUWA0w@-0Pa_zm1IcSkf~V5f};URq!tOVu~2e5 z4I=S+ssDOob05m2aiJNV#M;i{@*rwv0?p`zp48CtjnnJt9SiU4($GtlJVQEoN zD4vOnoc~9g9hV+M_=Y$lnU21%OITdh;2>y4fOAf)Cwj4dOgohIR+x}*GVrbSLk-j# zAIE+#D3ffd(#P ze4{DL)8D*4e!l?=qKncxBqVt3I7`@ugi5DuaG_{Y-Z-cgvn71BEip;TB~xepK?c)^ z*C&A79uY|k#-*ONcp6}7rG}4PC`85@_rV;|V+k)Qggz$_R~Bm#*F$XU=gP5)tI%|f zsTgd@@J+Y)iHW}vC27=GfkV&yW0|q<9}Pt+Agk32lTA0dhsX@xutccLRF5!(m9O0y zGA;+r!dghX2$0D$+a=zC^NlR84$(hz9O*JTPkkd54nVgG(E9E{YJBD3euEvx{?1lkgN zN;91*5(fUZdnWuwa4TbSiLj{vmq~uDaW6XHux3g75sXUskPz#R)~izm$OOK=evaLf zUzPiBI0Z&~i(Ny>+gt9kMu<~s#3bVV_diLI+Rwm;Ohu5}>^>TQY|sLCwA2h(AV@nG zyOd{&^v19=aPr3z^+x%q!8YH*kI+x6fIgt5=;K{POU?^3Plt+KtlRk2e|08-qgfSAN-Ju`2f^?oi+Js&E z3D{sWMCqS1pXs$HU+<^z`VTptGO8=^$mnKLC~s0k@B;x8@}6)W7)#=WPD-XW@oiR> zMz==DCdB}TMKsyiT=i+DcA=)v^1&MoN)FY&I>8K#|01PDc%V>* z*I9H9&KU>L+b=9En339|&;K@ezQhT+e#g2ymjYpPKqfifh0g4GlL5(a;! zG8^3bUxJa4w(VC(k^w!E8_32;SRlF^=*YjGlJ7?>72o%sKb^>k-iNLA?Y+skG6eRpfe`u#8aGR@`XrzI3_{?EFpyYt4% zn)5iC!3%Wt1abf{=31oTa0K?5{}u^~c4rf%_ZSs|6@k9wyY0q>!!#B@>e`;Q@$D_1 ziWQyqf1APhbjX&Yk54&c%VoLuegG3f$dv=#4)EQE+2VG1cCzPZ#eLoG11p`!8hJ~# z?`+k=Si!AiU<1GyK=rosuFDv}C<&n4KZ8zpKvEugz=WBq*mcE})o(FWoz?i~`dh8H zQ!WnQ{QT=G->J8Q+5g~OUCY(T8aogU2oUW-%a~Wa$T%P{35!aC1>;}GN=;hvTc;+h zA5Ih<$m$1@*m!Whg~I|SSWn?+U?5=a$zqJP7dz@c-8c2)36r$oCKJdTkur7Wnn^wc zq22!`PBz!~F#T?d7=|M*+3P>6Z!!YVH`X&2E&fQVfxSW?c|UPR%SCxc_~NlW*{*{a zv4^I3$}?(3UKf9VLRJ0TiTf+6V1K>J-T!1>B+BILv-USg)4;gYkpuAxWQ$EtJcN~`87>h zkZxciDzC!$<`;3U?vG9tP6t9<106alP#kCls#q=)1mLGGnKki$1SK{x?Bm4hWe2LUSP0JN>GoY3s(ASc`Yxw-#BELbs%{#-#QSVXi#*^ z>)NenxK%VRwO@NqEPxs%yYd$ID}btWn=u`adVBYfDL5%?qkX5eE+xmT2v>a9=NTuK ztu=@+)~BdRplrf5#cBXN=RKjmzp`3UOJuno{jLab2=UI*MdhdPJLW|RZygUN?w&P- zcs}Y4?Jqsw`tY5BWTz%@Jy8$XL!e6gT^Rsh|L>+1lwe4MWA=F^zLLs?!DpjF-ueUm zBEfxwL~d@`3Dzo<5tjCZbxNl7fBtAY%Ix6_&g&#Db9ycG|V_hxU%| z&0>XhY0>`~KYGzG^-PKjHuU=9-HnzcoD!`8nC>tGzQx-lKdfrjXZFxt3B|cQ-MyS8 z3a=tH1dFqb1iM-)jD$GI$s0O#Qc%l4+yuGSfHv4ZpW;qdyVS%a_yQzoFLt=ar>j?@)@$%9lcH(JMfozyas<8p7Yj!Ds}*TD-Fk_)f_VVj_`#4GQVTIDoZmK?JOPqABSLf@f^ zALp=vgjD1dr3%po0fA)_XOC8N{AEAW$%`8gC}p+Vt_~sx5+V8F{dRsaUXmYkFXfn46Nxdc0K*E6BsiiHst0)A)$42XRSXLc@>pG5aR9@Gz_+H z(ntIr9Z6NVlsCLbG*`oBP?)PayT>v3oyQ2D#~NEHeL|-SH34XYXqy>NjApiTs-VSL zkq!siMCrl2IzSRLgAlVwBKfH@{$+@8_1jsr7DaUz?W9WQ&41hmoGaWz5<0IkmBMlZ)aLmt9pOdHSRdA)eFe7M~AU{Q&fnXp~mAQvQ zb}^Y2^6oNdQ4i{?4?@B0f`{qu+*i0{l0IiR#lJs*quXSf8>%Vb86MmdNJ=gx# ziy+d8wB!`RKEzGq(n$hb) zi?nrFo> z`RdhBwZYYk!F;+TAJofz~Oz<<&UBXti;)O=%yLYw%EBD$>Kwbx;!cQ1W{C7cl zRxV^l*LKNjfSKkgyCImr-z$uYt**GDDEP-+(O8>e-o(5YsD3fev6TfXe$hdS7d^IM~J1@xTWB2azXF&lJmfPd5N$7lEk0+L}h~bAR6Q%~s z|1Xd8Y)7i!&@1xa%x$rq=12+T#a+^pxGiw3F%-a?qh4u>A$1RAseOItK-q?GUK~m$F1~ydB}RcLRC(GusEPM%L7k%xVgD?^Yi{zJu{3 zYQOl{SJaM+H`|F=zaI9GwZ{laLbn_l^$??)7 z32O;}2#JTP1vOf8V-)X{%=iSDIxe&3WEQ>fJwN|)P!grF`a<~MwRS?#aqK0T`w+5o zuzJhJC666$^)+3-umF6-o$zbqadG>U^2vti4DKAU9K+e<0CQC-(8gez*-&rZk=BB`$cEgMr@&}5@Cx$sHsyCVKu0_RiNW01DWl> z#DCGx4pIxB=tDsP6%qzfy|lJ`+WzNxhQz|9v`L1?$`TL|7V>_$(LwuH()O$YRSk(Z z7p8*JHjo<=1c7y8UjEY}vy6UaL<4Xei0}`+?xUX*uUP#n$bQ59U@m`7jDa&j-93?m zga|=iiua%F37iPRN6Spvxj2m~ZT_5;3- zgY%Qc+>tzQZM(YDbq_&Q$Z++aKjSvg<$niTc1OIZJDG;gqw^<&O^M^^eAAf{Y zHaSRN-$7yj@zsOGB62tZly8@fnvk@IBUe>h3T@M8`H4B=OqD&)H-WfY4OMCNTG;jw z!$xsAUXw8+aFZL$cnORr!J*TB#o>C^#M3UyHD6JeNUf5e@b;+xqk)D4%Q$Z5murVCnfu5X!H zfRy!B8Qn_{BfB(sj?zd?;KGkF0Zuv+TRVPb2>Q6-Y2MH(s&UhUqwJV74*;pUg zbr*ROKo$F|FkaMu_47W(x z?4f5t;@Zvm1^?U7F$VxAEAr*96m~Dm=}W7lM&h2N3g(-=TXiwiEmnxByGwTGHXhSL zKL^e>Gd1G6|C>#ALrC(4eD=@?OoG569EK(tRexVeQnr4Sjrnq~bVsexW7|ta<@qy3 z_1(pTgL!RDXX)W9hFn7!J$!CN>(ahpck~iKhQKxtdbY&;SXx@zHCw*CETVeG%JU*e z)qKe=^OlNvqRybgoz`|%23V???*~KArxb9UvD!vq(r!5j7|YjtgMYN%Y?tkpeQ|kS zKFvCDrX1%75Y^K{4;z1bSgd~uI9BP?#Ic7k&8+rEE^oS=kpL`g+6Gs&%wvbPnk4sW z5G-_Uh&=s#vR7oYgttExHGy**JFvunKUFk0QHDF=J92RY>ZDPq&W*Gm-<~n=X3&xJ zZ8D;)9VL6^XOlLCi*;-QE19n=)l3j|%h2j%LqaVA<<1Z7I1D|o9GrQ5Vsr_9}wc?smP({I726B+?J6akm-AgGIsN*X04u6=0wMFIjWT=QZ(6I$Hc z^+9WqdFbTf%+a|Btcem?YKryZeT^gIHD&M}k>=1Z1ug-_Q!=Bb%9~=*L*ML*_2~X{~|-{M6Bf zkmXz4qsE^YKOdv~%p!m;4Yi=dW)$>m}c&{UOpKemy=2+phv_`^Rn3Zh0Q zKXYYdp4X-^0Pui(v!41Ef3@OQipBe~Gs=kuM1eyHy||e?!FUr`6zIjkh<5_&(kWuc zG6i;~j!t%(;oskXt$LKn+zw78hP7^s>($tc)QLT=DzOeO7fY_FMy#Ooz)=EHn zi-nF25e#x9L|N9o4rtc5YVPiUti4IMGeW!v{(fDNxv#%j^+iHsP8&*^t5t_nC$#|x1B0G z6YFvf#(WDyXu|{d)o-t4i_VX=mJx7Zh>Kb7dqW;Ke;iq;ue-;TnU1c*2R`dJqMZ5b z^7u?gc!D%lWN~1^kh}^7#wp|SRj5h``WW1F-;VQTaM-;E1alS|4yy*>POvp^#MpNI z{6+iv%I5Hc$mO+g#cef4?ZMQBtQoDiT@1eujTOn>zr&AL!DXvc#Nfi$%;Zp)?1Zej zOpXLsFF_?Tpe+9ur949<2(0!`na~|s zXX1MK74lNS1-IWOn{JVgZ!Zn<U?r+L_yLs{J}+Iqk9YW=u$}rg{De?t;04m-Ymc4AGK>Mgqv@^m zmVnG*z+kkf=qCoitC}9+*(&K7zHZLj9+7OLVW>BFk%s;+|B*eOf0{Ak{z&NWR zxPJKd8kw&o8J`T0^tatAO%0Ug`TIlzqX$PslMm*T3)g41jceIy6-%95c}Txn%QIYJ zPAP+LXuMCjz-OzarI`c$PCR^B0I+a2Uugr?>$V1gU zaxhtP3W_ZomruzA2P#_59LC@ir^W<+e)Z7D?#`{ksssAZ4v#w4%`v|m*{|iz-6aW~ zu3WgCleU)dXOEq;XLj%UpIy5!!~qotgePsEMd+xO53gB8{}tni8y{0|lyrsJ8ovEU zK}lL_rYoLo@{Zhy;?_g}TP(b-JW=7-SZ7g>L@7noNo2iz@S;B~=s`;f{`=2-UDI=9 zdq3^jLm;d8H&9tTUjn`m!D+B#6415_TuG_6!<@(iUoZjR+PnBG7y!JTv|khksKQNa zy|6OH=ojyGcibdATWj|;1o=H`Ktr)UWm$pljkBhpw*E5|(wi*`E9|giKA-`N08zo% z9FsQ&K|Uz_LnsH(2`jD&jLOOXaQQi{uh#5r>4030Dq~Oddg*;dk(>dr!EPk^IrD*+ zUF7VRsq)l-RTdeZh_+3FZh2PWmtXv}e3@mp`L^4vkoJU#A^H~XlBRj0dZm^FM@59K zs#8FrP&t0`tu86RQ)@Mf#oL{d=9H|{)WZL?}`)2}epiZ8^Kisp$=MVU; zUUEnMe6F6TuO9ttvdw{D^>Y}VO<8{M^RvkuqpWx~PADj`3LXt*DQhXovKy^;#v4_ zL?ju_zYcG`5czu4oqg2YyGf&yMC)0l5|NY280K3RInZv>t_{*2FauQq$t<(!LxD9| zp?kmBzxzZikK?AoaHM8R1>uM!0-)|te8xA+vdaAXmd#0@b?$(mFhFJ?d0^eAxKgyh zvm>`askIvm2+=*)`}L1}=DB7*AC5e4e#Pj(FS0m%nz3fv_o{4cgrKY{mL#0a((i&n zbX>@BEa0l#ZLM0feUB%or>KAcNgby>Wb#?(&o{NEM+7qC!Z`d>2GVZ>d%T%NFk+Z* zs1*rje8EPd2}Oe#;wEQEyo~Ykqe(PJ2@k z-BIe-;A+JG?y&-fj%{(0cVGu@o}Ik5&VR*ww%6}DaKDKT=i*!0Q8Cz4`gT&5mGH`H z>Z^Y!*N04efCqexBYM)YqImgNZ+}>e_TtXoFwNfMOtM%wju6k=_h}Nt=fB@XDa4oj zIdoYqBJ+())2JuQYYBy=cZzVawBvljeY8kZEdwypffHvAZ9f&Fs-EU?peph`G&_haB8owM1E0pEd&HQ zHRGK6V{v?|v?4ht%JMVrvtPoJ-l$lXvQ^F209!^*f zZGNVM(9R3kM%HN7+?}S5`FGcHF^#5T|DW~p<=@8svpb|WnmtVt@y!0&sep_P!k-+= zpql+*8ZCoJ;(RX+#vzU2j&(LpTi9i0?YjD(dwdA>#0V0ZZ({<>5Qzm0&)^>I`SE}y&EP1p6ojP{NO2}gK zher^15-=O|Iom6t=B@oGh_Ih`H_tttC6OA0t6u;9bOwV8sI5x;%nTT&+?1qg$RDF7 z&N{|5fxIgfrc2FF4>=~9Jx?^}zAj$s{otfa|K;)-x?4BIg?R`VoBy&|QjA1fqihg_ zB^~~LJ$vIEd&E$pL3LGj-$*I~vps~&i?bsM(UD(V?<=V(#(?9BhBX7zV=?=;$)8Lm z7by^%()k91?G0fPf?o&aFJ+nz8N3=FkoTsOIdxYyXe#frbDVkJRXJ7%swjx8{xhOI z(7y4)k6jF(Q>T44ZR?N|*XLe8`}EbR0y=`pQ@^n&I@g2JuA*Z99DA`}W7ivG<;aYd zlVxLt!nzm7hCgLe8Dod1`@)5zMVW>24Bs~XmGQGLB43)pi!0szJ$lS|@XYy__EZCO z?9;F^^WSIUgkac8$YLbctD8NadY;J4kFA?6g{Z@QkgI#Q>_PFlT(+qhSyefdb=v*K z>@NzVTKK`~tVs>BV`dhzi7htTiWxquiatqUh_5}n{Mz2arTCR||0BbT9{zVsjb9%= zR2)wOHPq5>6OabZOXe*i1Wf%d+^`X%(DV#GwoeD2RiBNl+7N!zx8i`-;`#gGXL`=u ztvSOMEOOeb=UTu9E_GOUn_BD7%Zaw4{zw8cGZhu1tAxH5;jyy5WK|rmjCm)K&UsTU zi6xdpuO!S(~i8G68V&JMT>8gBPSw$qsSP6MR-S__JQ(M!WwRpzToRpU7dcK+^s3i zYbM6_8}0t`NS~Afgcs*6$A3b2amaPN61UJiF1(?v#O-O(F$dVrF_!prgGA&o6e<%2PL8@d~TiJ zgx+6DlExW$s_B1y(aGq3`P2n@2vwEgW+f<5`~L~nyS{vv?CdN+&tEsY`9=nk-MHDe z%jX8a8PLp7yXBM1SZQapo;>$laz}@dqus*0`gV0jQ6KC78))rL(eCR3Rt6)nZtu2u zC3E+Kuhk!N`;R=b7d4K&3@i2~-9kH{ci@nu5WK;|H7<2l^ZtkTS3}fl83KE(VFG~2 z`)af5TdJW<&Dk(gn4QsUTd&=04;?x;rg=*%Bg;n^CR60!^F7t1GIp&`SEab^pQ)Rc zlV9k+Zcw2*{n`4COuxRq7&!FbClMdB5p8Z;#ax4MbTO4(o%WEpDJA0j+rY4zQ3%t( zA2&Jcn#mu(PdzPCBPs9SDH}<#h@KvhKP8wQkgLWr5^cF5FjvWb$Ee7bWmM1ATwe4c z@9fPRmcB=)B|r06&9gWkmQ8-9e3b#8!49pMtKAno%dh_%k9wban6O=@ff<~CGiwg> z)i}r(Y*sDcxx`r_ zp2>20Oyj~0r-yUg$#P-Z98b8)#13&n?SOIUA5adp1HA|bZ{c|04JAFf%6KR8(3Hg&cc4+A{S*cW)*>#x_Y z2Auq0Jej*7oPBiN!o=|y$H)Gu1kF*_n(OcJ96EEbAo-3luWTxT@EQk^*~24yE;m*K zoR2E?URj1*1)zI#zR~-(`|;bY-8T!d__0*AP+?s}{UFl+;-2N7hOJwe93Q|Dtrhb{ zt6bnwcDx(o`_}9Pl^-JTpAC7;XjjG-M67}l+UsHduaavm zip)%d6$~0ZFJ7LK0;7sKZ&)WUd|Lh2s2fhtuo|?{XR&&Sdb^0aAcQu$p1TY|%B`A{ zWUhqOO50w_8oG^_X-R6hU}E-f_@15gPjkY_cudoPvgEiwwsxUbn|K+FdZm8bCH2Gw z^-^cgnu}MlgA@(w>i1877cYZ*SUM6r6NDZvuw9-V&;fd)wxJ<&={#$QhtDO4_ILoizy}JZ6NfD|MW&snnTa zCr63QS)@EjGd}EMVyM0jg1#Ts39gq9J;G#iPVi$G#oix<8|9DHsU|d}(2eV$4=JN8 z*Dt5XPx^ga@bjh}$v78)D_9Mx8SyA!cqMWE35^4savPux|1UC_Ij<=Mqdvt}?VG>O zTngE8H7)P$3tf8o5)j-ecej#%%U2XrHd_X7`IU#3mj>sGpo)KVk`F32bpJ5sAyUoQ zl9NxL?Fdyx9Se*v&VOt^{6*-b)4gYpeVJeIy!5zvp4$#I4M=Z6g%Ijy3nEmp5pCIP zQj(`5xmD>tr(cfI?TLEq#;i0k z@|vAI_UAbtSGLaUM4yW#fH1A7@qBa+Um&n4=e}!8Q|zjwv1$-d7k<$Pv%V(SKIVJ$ zobHXEqsV&?^nm&Z83_7~D$QvbUObY{(;s|wfX5_`_WIrHYxk>uT(M#}q<0b00c4ia zKkAOi>Aznlu-K${sNlSBVog9C9_TWXQ(nQGNXh zR@Sx3@S`4H9{q=lYk}4CrNj(0u6QD(s2Y%1&vj6f_GK(ApUfi5(P$ zj@1gcMNh=)l4pni@*^2C`r<(CviaOC&7>2wy=!A{Jze)!#$+{3ZO%QqJNusbs5t9O zI+oMH_FBSQ*Kcjdb4>J zknHC>_E-NJF+EO5HjqkeCNk^hAlrYKUEPr=@xM{#PQMy0bt*~`^1;|Y#(pZ5-8YTg zuMO)N>KSC3{yUSD(v*~OA@R;Pf@L$?-2T4xuq$)6QqJD{p($KcYYwLS-j!=t!~~iJ zB@YjEj2tVpwDkLnJ3ia^1<~C~Ue6pBByC12W@fR25i&o}$r%fc+(4=pv033vtKK-$ zkQ@$ug~a`><*1+y(dT|e+6~=!bTcrE(AGI*Y1Ox0n53cvTT2l zk!?H}fm0f#6ZCMWU+JDY(rW(Sp^z|kJB((Nj0hu;p|Oc=zyf5AkE`_!En9Y*8ZQ`+ z!V5YsX5uzW?u`|{)EqwVZo}h=rA_&a-P$OMv@x?5u$56wCsPcS_MBeEeX?B>B-OxH zm|c^x0wbF-w(;RkTkI);2+vQ&B7_cvcz|Vnh(r`)!dvJpe%OPEAv~88y?w6 zP2B>w*yw4ZMg{KfGexxFD~57g5-B*OM;8bQ>)P(&)Gop82as<93&ukx)Aw6)&!eaB zQ_r!EQE34mv8Yq}j9mArX>KP}VLQGNJGZ>$|9NfimMQcMiYV^}l*N719^HPcxM(k* za^gFtKQFk}eXrZ5a<(Acwpl%Lr5;+QyZS9sM9$Hi5|M^?Nw#Z_bm&Q)KXnwgzuTcH92~H zA4ddr8XT`34%GH78}aiAwpKYP+9=T0n4KLseb_K1`4~mj%lwsI=0kihNS3 z%K>^~*Fh*8RA^y=)(i@%nF1f$asiZ46kNHVV~~ozrFQ$kY?Gl+Yy5$sUF!<|jELQl z=({h{v(0r9dVZ4^azmT7?OEUa-0nTH)FN;Fk5|{x6!(LlmLo@^@D)X6(~{aTtO1f- zxTfcX)a#4Peo5fn&doWHx0Ncd6$1TjU4ObwM~RBZlmh9t8#l1$kX=Sl^>vw)7W0uF zZpmf<@2J3KYAq^r5H?DiWQk%yI;nOXdw~whNZPkVL1@^$0;A@^G!w3>z8Su~w1dqY zy;iE#Gj3eh#;dy-k2!c`=~pGa6cBk(F=EwW9KFBL<{_Llw32k(<`QeuQ~rVBS1DU% zwBtnq=;Q*<;2qk>n>K6s$)I`Y4)q)}u)o>xur1aP-dThuKwrSAC;mIJqe!`rCfLPX z(@#bDs7d0!07?kSgJk=Xr&yEdF!0J+NrwUKx2R28T5)mA4T`xiTAi^#8&tHnwZq#0 z?2Lwoj%wrv{wb_aI3Z`#!1h(}cgbB_-*{5g;L7W!)5A!~<#P=z6(H!br|bR=kiG zexmcjiM%9dJN4)l2~kNkzp0AwUBUVhmEbHt-D>%@AxYl)qEjm)SN6u6=a+VTkABEx zd>dx^?0RdtVD1WT5=l6K{og-6mmx|!Ip^?FBhg!{>pHW--{N+X&6ouk+gOt@U~jTC z2@7mMFEvPlVa^S;oBSZjfEkw-!yI_m2c@>Vjj{RiLE1N-e*Ea?LsE2jcw0|rCX9B7 z_6!d~a{54p_GrkjBAHd^dnRn*o7LT4YS=7Ye`?>HrQ)u@nA8A{*px#`V4P#^ zJq_f!i~-y^i4;`P=UJSTmMY-BJgWJ&%E-HMx2$bc|5@%V_wYCEAh~i=+_N=5$>Zj4 zKE_8UMm3w5{x&u3TFCUR+X{VbyUwmn>X25Ad_E?*yhqSGT1~KD*5>TOM~&m;&MK;H zg|5$Yn*qCq$9H|`!WjWrG6%#y3|bb_MhDa;sTHeH1>_3QXyJ{j6QSeUVq#5~d8jwx zZl^PqMh143@ zIy0DksD}em?|Sn4?EfmF%WAV>TXsCVnKIZ4CmLD*R@J%Ys&O;4--&yn?Y#F%T1H3o zjzFUWC3xR-H;}?0R4LmkH%ZMnO?q)mZA4E&O%^V^lx0oZ1LbhtWF##}^1}htGBJM- zP=ifnFwI>D)?u?{BIOj*XfxA?T#5mvtRo~C~?-G|uNXWz%#`<`A} ziG@DRuIQa!#48SRVq){dZxWO>KFQ~ns*vO0@|aY+uRgQK)e~>rx?|4 zUk8SLBFbUV((yy03@);mrlI4*qV>@5EV)AK3_bqF<^4EGKy+YQ4y6jDEvN0}meKjG z&!8sDA$I%A&|rMh)hi|2q{|1!om3(RWjS4M7!F&bDBEg%F+H4|p+G%!LXOR3a1I zAx~a9T2uZn>baNh_LMvS_gxXAhI|LD=SI~D@X1?zKH0-_s9SfQ9NqC-mvd`|%XKs*c3 zI(VQ?<@(DAdesoI!E3SBeX`8Q9mX}yKfaJCR*!!q}l_8D*3dsvGZs5w-gi%a5zgpH&0U_As{!{MEBDitW4s+)q=&^`-b z=cqKr=tk!!F`j064wd54Qb%xKC1cJqF+p~Q-VYkJ&fyW2+=}cpuGY@(sdp%f`@sS} z0PeXRqSOAx<2XOKTs7FOW#Qb(cE-8rVx9P)+H~VY=BZ|y@@DDS$##KP{hs&+p`<67 zv6Y7BECI0F!Qw(`&;`ggwFEcauV4W2y|o(_9`Uj!CW+n`2(bz6VIojLfxnY}_PWx2*u4=ip)NC2ZS*A%mQXD$}rpjT%V_!ODq=;yxSH}+h77lcb;Jw?$L@#Sm(qU^4R4xr*W^I z`86#Yb#7!fjl1~MZG5TS+iK55)8m^ZW@_2a^lL^}-Yu(8b@^|e%H~9P3T_C9RYQ`i zOKmvr?u-CSt)>#&S7o_0+7I2&%pgTbTZ8(DbcWa|7 z)W9j7A576V-Gmkr(fEiVb7K*nG$d6)TF;)5)E*jqMXQ0Fn)Bg8AKf3`Q>`3w)$&7a zU9C-KG5Z(qhY#>>dfGOQ41N8+XK7Vbl+GPj$lt(XUHcs(t?zo@xfGiy(}{yU55Gs? zK0T&X$}4=5*^D_h$WP4p21b{GJapSfz3(O}x#{eCm| zSjF;X!#?K3jiL`{_l(0sv)gKRvZu+sbbOJfv@BtDsYhSE%`>Vd=$BzxfF0#w?0aUg zRR&FUgES!6LNzD!1k+Fxb;=+inI~dB$=k~nWDLl(A2D)DadUqgy$fUOxsnn*A0KW}ztS=o|61(9t_5 zfUnwf0_Yjk1~W&6#f{QV(J_2rc$TWz*?(zfE_K#OeM+*B-8+5&VWDWvXgQysIW1Zn%;=Yp-7=T97*o9>r(|NEP zXkF*eq$ZkaNdRa)+(|(Lb~Kpax9q@o0*a?dxbi=8H=}e|s)n8nsQ}v$+S4`BPGQ)U z;!ez*K2?6xd3<8a`>a_n#a6-S!s(JF<~d#JIja`24yZx~`@gdJ7yXalVK!f>Jjf)4 zGijdJlvH5nB{BcH1L;Ch4Q5(7&sCKODc7Q(Tc*gFXm{&ljp#Q4$Rs+W4ED~013!4^ zt=l-@-vZTUL_DVh_iL7ckdse8$C`+>0L*~Q{Sm{U6yq!Y^>lgs#JKSCh+|wzo8k~> zz1Z{ZkP(hjyQGl{S7?b$IWF7wSbYoq_a$&S!lxqH&ClGcA`nBm-5r-_3u&8cB{?#) z7B)zc&bmvgwloEYDYIB70o+ypg+mZ_@KKlhAZpQ6P;r>R9ZLk{y?VZfLO);e6-V3` zd;pSUi6PQ?NB51vDEAb`Qz?cde#XQ1+O zo@Fj)N0n9v!pPzlq@9~6{SCR;zD>}gvsL?akI#6Zy$8w!1YLd(UQ-eMY7ju0jYGhs z2oz|k!fV`nYP&Hf(C{GdGz<*cc|OKqMx~!KsPyX9vd&2Vnq(o7!X+hJzKjheTUa=8 z`efA*IpAU7eNDM84suj{r{@T}MtZ%w8G0>z#VTXp;GZ-atvN(An}b@sIyeGud|_+; zu;9{+w3l8JFbM9#=;!>W%d^yA<|AnDnni$6voRp@{f9YDo;VVt4Gz4|pk=iFa0Sb@ z%r=HdP1_{>kxFb%$cpwpm!~~VtYUL;N?ZzaMq-ldlk%BkN;=EHQmEZ~P@`$^LCr1p zu}5XGtr;bx4++yv?jsx@6ZlE*hFi^!Lr1wadI+QVe&=hM>U2k(7NRsI7$WrpBlb%a ze)cOLY{)M#C&&wcT7(aR3N*v#r6AIP3B-VMcSeFD5rJ10#sDc($_-$QA^n_&-Aqs9 z$R$KA9v{-)$QwKHk8&g{f`WKIsz5krWZebzE=^&OvVZLyhypF z+T)&^n7ME~?~T6^RnpyyHvsrl)ISP8m`9#kFQ<-i*~jg)Dm6>s00fAnFPi9WQE(&? z1IFK|BLr>uv-Xppq|%^0dLRxC4h3SMV*fgSmmTJ z(4q{Opjx`(!^8fi8!6$y)@H)w#{=LzG6hBT#T26?zy>0>VT?X~^cqMqf@FGxfW8lY z<4Iu7R+6~Q{1qNbOCdxI4)8TWNvW{tIUIQ^U3+#&PqHENa+X#^WP94BlLig=?g2&; zlNKoFaY~#HXn4=V9{GwzGUY6vQy8Ma>rP~r?g~tk$3i?FAG?pt}t3vABDNBn8^uo z?~NlF=d|`xmO|&P`>UpBzjmMY2Q~~{!g;I!FxX&v3qua_9rA%o)JOlURyrXC_~UWT zGOQA8u?^fk23IRS_5eax8evY&w@;)DK!%~YGbjPb3vT zI7xTz2KU^}U|#G4Tj3?Ir=jN?@Db`jHxKLi$VxnS>S6BNBFyY_QMx~E$3lO3^e2S= zVgCF+(z>3RpxynU_j8#70xDOW4WLfR{l<@<97|GN6u9p$3KqJcWkl~s*8_-0)e7+35jrH@$*xuC4B^@vS|!Sk zuvJ6H)s@yz`h64&VOK|le+_DwCKoopggXC z19OGSpp~wI8Vbt>LqeD!$Ak$y7Y#huD_BcAq7=IP6ePY)ws<8qW7&*vo#h{==EEBQ z|2zB`=KR69Lu1P1#9GSwJ!eY&_aSFI>B$%fJYTj6(Cur`F96@&_1i7X=Bu};j`E_$ z3P<2W(5RpQ#4r#3^Zag&K$83XFd{^ zg!ZicS3k3Tap?ERYZe5$y>pi9zJ=+|Z2dApfmgIC_mtxVB7{%-U>o+pMBsV?SsN%jk|Hv`Wi9l}`DQw6tYT<#ww{fb>p50tcXw+ZQi z^k7G9R_DWx1x@?azdvPFNLZ#~;#iU^>;4iBao;PZ0L3%ni1hv87<_Gv^t zXfHcG5ui?Gx@1Q>bg4U46#-6{m0Kq+C1iUAR$So$1P?whjz>>QeBG&jtMk~Ex?{fr z!7ElEN?n#KnHfwAxN<@@Z8x@KV}`~6KICnr?HuWnK@Lu!!*##>RGUT2{_{_Rlwqw| zmFhu&yb>Yq@T*egDX8N?)@wu4dH@{!1K#65xdi8O10kt3kMP`6Po8&r{c0fJOd+{# z<4%;V>q6jkj&kzjM?#Il`cIm<)d5*^fZFf7w50kT8gEq@&4AxtzwYIGWsdK+dp`I27G47Xt#tNmx6L)?2i6}EGR+#h=Z z(7-a;m!YnkkzNutyzt#QmawmfpMYT=?YeH>)EpJ*RuhYw1Z6rdZJn*S5S7dLuQ0?D2nZExcVCBTQHP=@gzpi+$ z{bK}bbHP|(#;jP!WM`Uk9I)J?-mct=IE{-*VO)*ZfBbof;?M}VY&Y*irAhJ$I?Inu zpSTLZzxbn6po3Y_0|93q)M$y%yA8D(!U0!D$0fy>Y9p7JW7*>kvN6hK^1WqXlU9KH zJG+>f(1z5)Q4+vOtavk$eEE(<8?;2+*oeXJ7{aOxaid4pF4;9kHX=#8?Y4YFeC)`? ztyOoul-Ux)a2FN*0S#-l#%ji#EoVUF1gHa<5um(^yWB)u>brpmEQp|`8T>RLf)Gv9 zR};nr#z&LE@1;X9xvtYs--@ww+oXX$d!pa5hxhhd+1tI{=W=90)qBDDw?h71E-gtZ zEQbOB)jS;uS+$YAex7?fM`1o}|2s{LYqNly!8)_~qoy0%gfSpaKtol}} z!PmjJ&12u|LiVIywo@}cYi?eJCStW+{)JFiy#;Z5%8~=1Yi-mZZ_kkyph4k(DqPaI z?k60EPs~I?n@<8;@owv_^riM>jME9w{ua|jl>h{27icAzds$AM{2)fnNTqa}N&=c5 zo6~c;oG1kccHUvP_|8F_yTu7Ev^U}S1dj*2)UVCfkPW`s;r&rQ9C(P#dYJ|JAVLX@ z;PUetJg|#!UE!x7zoU1qy8yz$zo!3LGCsz`R3zo6@cVBc8>dv%wL^#6?j^{dn_E8d zB!b0FR|BDS3VEOme4PfDA=Koz)ZQ|?agwd$L>t@^|GP`2x7+dP*`svEn--WmooVh9 z#-F55=+Mg2B&(VU9ip9L6*Eh+`l;8wAKS5T&HuNm&2H<~M@?TL(EUSP?2(;7N6c5+ zsVDNSIo8G=6)!$oZ$&NCpgrd`0`;sfO+gn>Z7>9##az_U@!k8L;(%}pH~x+kAr9=w zo7d&)t9c?lCWenNoErUE5Iz3e5_(KwUt4B?pt{x;uCZc# zjBg--5zOiIKn9G8bVK`x5(LhR0+qxju+D%b(^T?gf%1zFmFevO?g;CzX*r_i*wTtWl7qJ(F4FnH3j(VaE8 zXA^k{P84Shef$SgU+^E{PxRMAPHk^Kn_qcfzShY(w6z$CJj#QIBmWyrHU*0-0cF_f zxuQLR@tLWnJp?34b2sA&oGG6i1yp*R)mY`hTz~?j((w&ZoYFO&YI}DOfvKf|yc#MZ%Klm_2Jkb7H{j}W<$W*H_xfey zx_)Dt2#0lc95`u!6O(l$GAeOjXl2R&G}`v79j;(Gyrp`9#EhW0%Pwr`5ErOOoK~N9{^J3%@~RL!Dx8*Vd28? z=p^g>ngS+M2rPD7>X9RReVEbvWU|gCGx(ZnnE<`ql$vJgYl;i2yRAF27vAtK_OBuR zQYb!LfJNge*t7qG*bIJPXJ;Wi>piB&&I~PaYD11MHFZbS&9#UpQ99NQpX$eZFz8Nh zoYq-O-_D$=duQdcWEN*ED_l=-qzyAUn!JvFDon^d%zqp>h{BqE#*tTBU+&Ml;6ZO) zMhb>lH1atsk^-_WC7Fi7B0BRgxoT8mouH z2yxW^**4+|k6NBsav8OEM_ZGFqcX?+ANTsazHzKx!ApAJ!Q>YVcx`Dp1hrI)Qtpd= zKnc6=Nel8^BK-BWT@-y@1gonG3h3E2dp3HIrC`k~K@``jqbrz~*i6~kUzz zr~{>x`~}(ZVLDmH1sNj@nq(j@gh(Kl+PVHMX)VSL^oKhabC@ z8r|{JE-EbJv&#*o0q1S$0NMgu2mxQy{R3)3W7!rShQ{E|Gq-L?vzw^C%&g4}k|q}7 zklvs_s~Av~SPgoePSOLGl*Fa%KJSEQMtc__@$r)9J+Zdd)5G&0bb)b&Os_3Sru%fl?i=LeAM6+4<$c4?+sDt} zC&1U!H_+ET1TJHD_YU$2^l=H%pc z-P_gE(Zku@*WEY3&DrU?wY{^ur`vU3H?Qk(|GKN6yN9Q{i`#WKA1BxA&Q4yg&YoTl zo}SnJJU#uKd_0|fTs^LPx&-(*db>FIJG#SF?rv^wK0dDQ_WpihKH2Gyv-9&`loY-! zD9q0=e%mhwf5#W;dS*OrCx>S1ZF-zR`3SoQS}HZ4Yk*^oC#7 z9i(Dd*EJ^&$~H5hsiTw;4*-4%=`}Zr^=H-g*~1_dDc9*LbO`}kbivvp}>y&?yGh^Eb@A4K-!u(qWGYYh2ovDbK5T;Vq}8n}_$wje(2R=x_FZ)iK-p zMls$LD#W-Q13m@zz%)!*qEXq`D?<>k0G8p%e3MxFC;vow397O&I{VLo+}S8T#HH;R z0;=i-cRPJp!K3VXSWCZkF{rw0rSD9FF+KQwIs;$flwko-fjcx6kEyO?;8`q)`atLX zGk{-4*aw7PVaoNWDx1Q!kcyP<6xsJ4w&2jvn6#qJwFG z&H5^-0`?QE`V`_Gy~xHfH0+k{8rM_+|_X3ZN zDOSH#pr1;0=_Zv<`UfttUZLc)ztRddr;Hzdt?!_3$6h+TIMyRe79~-n!ffY2YNyLM~V>; z3Vwy7tj3$d+QoOew60F7f&qnf2xa%{;MaqVeq{vg-cVY6=a?b7ew^EH=-mVUE!EHc zJvXJ%C;<{+8oeV!lM3C8cHGMxz#n});zgt(l%si;T! zA~>eQgVrk^hHepE*_&l#;ie;v<{oGRkl_;@E=6=4V+VQsipD(r`McMN^Zy3(W5m9* z4y_p~f=3ro>T!C3yI*1lsil&3k8W@~#?hHauei7gsLJEBD_h>2?kn1q&6y%$@3E?h zgyOeHf$=Cz0I70JYd-2`G-8~}ziGrA>6sm_XnoVvF%t+yy`u(c`w>ur44xaj6s3{d z5O#tx{j2ZbTjwI>IER9#tGlPs2J)^l`tyyg6d*3Avx9GxTvq^E{r>#i?mBbY@S5-6 z7xHtzRdTokoiHo|U#T+85P>T)?3JoUacAsJEP4ZFE-%=giPdb;n>^&$>}Numxh5E{ zyN^=Wo~kg~e4rYY&xUk=<2jsJWfpJ+M-Dqx8EO40W~ucYb`IgTgg{~XRkkt!o(ftb zQY2|NwdrMUVrRThG|VY3?@z7e=S9xb^zQs+T(+hId2Ao)ZOgEEYq!;PVClj8YeT`4 zOIyDc(ZRI*>0fDH^!2wF|DH5ta;MR80Hc>*ve!TmA7DJmqvp&LAs;CTC!-QcMZp=C zP4kS5`|9%Gpt5Ci6DtO-k8t317Hh@^j_9dIm(b1-7T4!PdxAal<#tvaw|-#fDsIDc z@K0hGR7dESx!FPL)P$s%)7pke_$bK2>{9q>=Y0Paan31iEWFW$39ZQRZan%!50=>e z`g*sY`R(ie8-wb2+!FXK%@)0xx<$|LG4!n6Q0@dP7*%`8v8HNJl=j2kgw2dVbyv{u z495FcZ9ng9_Bi!0l@&)Q6XHD>+VHlQHmRn}V)I$V{%N=BJA$o&r<)uNzMXu2r$x7) z8U*e@#Vdb$KLVz%zi^g!)iy<6QUXM}iCc+DGTUXAv#^4l9W1Xjq=+_bbT>2O(7g^C z1_QDVj4|3}3mzGIM7_gQR|y4Ji8;NIyD9$cGH8;5j#8CHsZZNXFy>?+;aPPPyqBAQ z2{pb^yg<-5T)HQpXe`%C|DfEI;D8W)C_@WxI|k{uBn<8{Cml;YBqW0c#(yr+AD_4g zKV42$dneoV)@Jjmg{9&Cd}Wa+9|@qdvFyVnKCu@J#|EePx9p-tZ>NU?VwEvEy8}yd zy@`$Wyb9?_MIgiHtYfJFG~BhEyRS$kOM( zDc+FPzn=xB0}d}WV1ch-EJfFIq`@DL0o-GzF|{#mdpgh$9$ZK4<~kH%DMhSik7TNQ z{A^)?*Zr-x%bdq_0~h1oxi=ZbZ0W3d!2yfAG%7+uVYMYOLk7ODp9M7xHHZ`Eoj$qB zMJ4F=whmxP_&{+ezo!E5&pF9dUSW|K)h}FMZ#|>$y4&;OO%I<5pq%@Q5Y}5E@cyvK zBxN=HnjVbb%{t#iB@K#-1UJub9KIe_7z3BA`?~bAxR$VOjkml2h9U1FxIdV{BpvC$92H-D&1>&Z$?`G!eObR43A8 z&oMe{WTFR8+zu>{)Fr^C$^HS`b&jC$*8g2_EtK8G|g7evo6lIA|m=ROBOSrLcs|H=nIG_zxDFwNu{<8a#n zYgKwcRg0JNV@&iWUXu%q)=p4~i2}M~IA3)=@Ko2I?bfTug8$VFrCZ{(c+`B-DYb7; zAWroj0yg{NrU?#oYn+K@N9z8zbMGE7=SewV#uwM7!SY+~Ifw}wyGIN4D9ou4J>+K5 zMUD7!IQuz_A{dZOIf6BA2H#Yv2}1^Onw?xf3KdkB@|FDD_{Kfjh2;P#4Hq4i&)MAz z62o2lX2@vq1baa&JeL*b`91v6#>@uRECa5+v%eQYbjIz&_rN3iy@%o|sN9C(-AD#) z!}G%qHX7fBv=>YJASMjPr**zjGGVsko@L z6^sfCh~s{vSK&b1v}HHAw%{o;Xuhu6U)B@Z}z2` z3Hp!6AU+)k~MwH@P$AyqsGY&nqlkQ<%3xOD@3bGCq~hx&vXv57a)`!uY;xJ{9f z<=~J|*BY!x885eLgKw>tu*wjczU-CpO=1>P{m(HX{6Sp@Iou_$DM@5Bt&f2L*eP1r zjT7S1$&<&sK6@GKd4E{_=~BD15**K5+r9=8)24Xuv;WE}{bRYa!C34!pmi?IZYB1n z&J9x*B2NZHCe7A|85CAwWY?I_{9Dsz+d2ymcBa3-#O3C4Krpq1e_fi}RgXa_d@Op)xPJ8{aT*d zSo)!SPi32NBaWmpi`D5X-}ig^J@5T(^Uf@Iup7xX%pUvIQrsE0jkc{s;YRv15l2Gr%!ox zKmEb8JlON`nO-o0?F56(L=XE1O?co*Pi$KpgH0f-A1}SgPM)#BG}in*8WbDGC6U0? zlqSpv_&i$#3yD@47am<*^61c9x%9a=c{B6&3TZWTdMD=Ms&9is{=E-*8^>%%8-ys9 zu|wzIZM&u)UJ%E9tCxgz7_Z5x7F)FP*uQ^6!Iv9MA?tB-@RL;FTNBt~7_j}DS_;g? zIhv#F#95yx=*{J@c3y^9ptQI5Bz5f8by?~7p|c$Gx5*j}{ZT)hm}r|q^k}$VfC~Df zm;9xNk1|HQqlna}nHVKKFbK3DMMX$WV7-aeUp7M=Z_14SeOI;Nv3JSpPt%`;il*1i zM6TqY;+!F0U=`%U*{k}E0eeAnj8(|^>Vl>R>-w*@qG9~AjlYMD0bxu~12lcZI8D=m z-l|YMnjTH*!GPW5>S%)4m^+=S_iFTjugA({H?S#gfxpf#&yaPTKv-4$a>*vm*GcHO zWWbS@;FbK?w#|0$y;gk=r9t|Dhu`@3zT{P3V%)o46Xl-#FY~d$-&p#&j*L@o%X)hAP-alEd zRH)DRl;QO(v}y9>eDzB!AIn_032f)(NnbkXV}(DpVn$a8OI78LbTo>NE3g(bnAnBc1-4?t6~9z??( zx(}b`3G=d&Ey<1r4Vu5qukM+Vk<+>I#G&Z2;M*CxHjC>_#yu&Z0JvKU=Tt5W5bn6(Y{%b&)Fq11g2Z*w) zc?bE7fS_U18t|>4z>v5_E)1-8Pr=;)QN_u4_HjG;=!|xP=wy4u4GNoAWwENJ`Ux(9 zdx>j5Nyy>Qdpxz`+Iye!?x7l`%GwQMvW}PIMMJJn&_5s_*XwRL2YRCtse18wwqp#$1ov2O9K%=K}Z^0srF1pkv1<>iK6O^L` z7v0T=pZ{X(p&u<4hK25%m}43!75-6fAMJkJCQK7w)yZ?>HDT_T#N$}XjIT9_Ej#94 zM_Mw?e~n{CEsZP(SQzQ$l`+_MgQ>F_*~`+QK{4rL#p+}>f?IRE(6dUa{4hrD=w6PP%^bFhP| zHA|Wd0Yq(ob;1h}e-7fV?ITOmP2H3pGr_;wei)nDd}$zdXVEJVpj0bH>;7MFb9xUw z`l&^rR7cLMIZb>&7$0fnK#XL%{=I; z;1)U_RVgf2yL*yCPoQXOLrpUob2r<$NMIa04CbEU(R%V(M6JxvE#-nScC@9LGpZK8 zUAjAz;}-xS_6<31(c$G|^IdFr;vPZu(JWFOsGM^X^J`H2pH+|MI*tAdi6g#O(Wie| z0mI&UzfZt$eLxFY$FhIpV`grAneJ^F(A}&GM!$GmKUqV8oe%qCdY!Q*qcWh^kse)y zsVn0nOIt3IxP$%O-m5^Mwoe?WuyhQ~QNc6VQiJh;y-jDI5sGi&Hg40n;Jg`<>h>^ofXVQdb2fF)%0%Nj;jzB|&J^sbN^BA^ zzLF$J(aN(r%Z~1&f@X-e(^ zUi9EGgRqb-77jbD{3yuf3;)S&8y*>7GTk-bu_G8tsh|S~n&dQGXR|jl4QB~AtBOfI zy0*-)W3Sf{6QSsM)$c}~&hEV(p^yP7os7It`cDtJv?&L1k9U=z6Wkl?n&bIXREmQX1U){QU?Wiy;BiGsythvu0$A3oY*K_#I;5i-a-)3hh?2 zQJ`IgLtHe0iLkL5~U>UfAc1<45r6S7F|M+0BR35cy+e(k z5nUR%G*DS{Apg>J5E$jtLthLf#@#8FY1B&DkGZjg7JaB!*4@w8_@^)yz8c`d9D zKu3G6)fWAZtE&kx19bxU#Im#~;U(A}+DZoDp3ZYYdoC~9-2x~QKCnUR=u{%vr!+_N zgN%?dW?+S^MG8B=&olYy&Q4tkXqc6D?BPbT>Kd;w7s@E(l#K!&#uF!QAIl7IYI;*7 z48Np9&MBuFX3)TPwz(jl?=!_DImdwz6Yu!>h*I`@nmsKdHe6a49A$zSAe&J1$O@Xe z7HS%Ney*ou7IA({(nAE35|&qOXfpC;Q3|Dc-B$0z)%;*EaNH&Ba(n)!XZ_K}Sr)Rd z`J@vwN2B~{kn3DQAX5|wlZ?D@%SO##`D(<_;BK6<;gj0uSE(%E ziA9F6y;qkueajodJfCW?uIt;i-z2=*B+IGKh5KZ74J$zQyg24s?SEI`*g?=;I(se8 z@&bgZW2h)Fh5jrJi_6Y(>-R0KzRfVFujxH>{l4(%K~ zWOk79__X%IQvBVOP~%za>kr9p7+r00lN#5G$+~*hdw9q1*W{ie;t?+tN;nm}_BpH_ zZVGzS?$?jRTV=WDMG>%LNuDzggf^LdrK3oG2(7-q zFA9l5yMN5q562cyG;B(A=nuwMNv&CHA2KFad=}1l7OMSSvF_P|ow~zr&r9pekLco# zH4KFHY2+4b#7%7>_1;-eY#!|7@?&BY z%m`^Il2^Y~;YamrB$^(2jn|G3d;9iDhHt%1m-m+@w)B}N@266}HC_mg^HB@*IbCSy z-f?SK_4oEN;FE8I)e!cH^ywH**I7~PA)v*>NI=Zo!ThrY&2Mev4mJNy>&~Zsa*%y* zgd!w~-~}8@HBjy-ooezVG&dp+Ra6G%_<8PD7yV2eJ4^O%7?7FUz7aJ3M(HBb+ckQv zBdRA0zua@YouSfPi;NVoJ!6Dc2ZFmNuXKt)AKSt7<7bUd-3{bBwEyHHctsEN{ zYwR3?OB|Z+Nd>lp;fWmpM^*zO_G1&(3YJ ztIz!cHoR*>O~!&7erI5>{GD>sZCn0D$JKkrj@Tdn1MRJbRKpog@i6Qn4OB5L_6alx zG+-#ZyXIRJYSpLRe6X)K#DQ{wr02&f2ZCi91K1nO(mN5a5nRS+4u5OoohI@ACg5K^QJn#(@q)d94)c% zp*wl@{yrsY;mSh5;F?I{b!6r{c6>dZ1RL{_`R4NMUpm_k_SinJcU&XuE$>p6!l_VG zF?aR{;M7OI;XYCj;^X$!bOi#Iv$Sd#Ij!>TT{X`IfbsQ6LyjgL~Q$h zJS3kyI^Cl|AOi_@--wO`pp#=beA4)#9^|K-s|&+O?xe@k@wdBtDl5LOb&WahT)*59 zlVe&>z5+z;xRXp#EM`s~Fch`?fwAPGIkfQejl;6C_cMvdk4v78gg?M91m68Fro1#4 zy;dA{xZaNWm5Xk^w|fZ;jmbdA8V(#o%twAy2u_K~F>R4>BndQe!DcnWVveKlOzr_a z8W^r7P^;rmPd+Eah6>+H`Ph*<#LuXnCQCn(k~vgI3H{}8K`RC~aV~?6@giQQ7MmZp zLSt(7{D~uZzTY_@?P6#|t^00vrH*g( zZIP$jfg5DLd46Do#hea)dAMs;2DRM%b-yr^&;i&NPLi=dSXsYOVNR4Cq2sm??BOh! zRi|3#at-5bM3hnT%YRO1F*QB6o)E|#v+%r288U?kgEuaI{FgGD;j@2#1RW_T|5{Rt zpBQ=`aqmIWNA9-QHx^cfIlGy?s_8R$3`qJ5H$c6vN^nDTAI;IyC)=yY3a$o3jS8y z{NcANBlp=)o`DTb6Q-6bwmBRxk?kHI3`}J9|3XvB%r|cT2}LQpsUCIFafjYLoAJdS zjC-W`@IvxP$`coIA_9{7=*2Fa)Vj5J>EFA~O9s*DuTOay$|4;RZ;8~;bt;Ndr@ehH zUj>qS`hw4X;TN701H1cWkh_GRz>iBm9X?KsOc2VxYh?E;#uViR-`u=y6gyiZ-QPPv zpCi+P$G;I6-3*8JyuCgU=wU~vL`QR!D@3xcly8n&xlvqCZ1mh+e;43jx65CR)jPtb zduG9zn4R-`97I)yCmP+j^5nADSf|R)jioY>`B}kZFXswVuuJ~CRFWVc*4Bs_PK+*z zoVl8nqk4Eiwt?67Jk7AzhbJ^aTd3H zbf|%M@SkgP;knj0IBq|=r7_YFgUB`Scv(GizDMcd@y>F4P-=Q<_sOY82BEk@cideN zKE2~jyY7H6q0hmSAvY%%6Rs7{P(ml3Db7CR%IhS1q$`u~(2wxJYhBuAIv=!2m7o9p z*1zf-{{`adjQ~T*EAtpqhyxp|f5c5`l}1S#$*Scrdx?gGK8e4$PS2%Y`QEF|2hwNn zZ?raerd%4CpE~1G#YKS6audlD2+!T)w|@0LyBC?faCJDhbESTS^FD~khCZD2seGoE z-D3Fs-QxobF`Xnht^@S6v0hyO{jj`p0-Fr~jGKBeyNRLQBj)*#vqSwQ8@@1Fy17Li z+@}lDeiiVfVXEwia+39ClODRzpyy{$6udh z^XN}Y4e6On7}v*x@I+@Yj#+1S7jil}P(t74+ssl6wbW1(Iju6zHPtq0pP#nRgBJYp zP=o-{nN}Ugyui(pEQ?yr{KAOGm1e%xu& zHVFlU7t{&=%uB4ksEFl+sUqpEZ~s*jYKIW+^l>|*&83srNKt2Sm*+?3J?}b%Qc&S5 z7w`RI_!PhyD6Qp?Y6(O2=v_`zNQo7kg&C|6g4YzmK?E!Gw}SsQlpeW z>bkEXuPvp&>Ru7KT$?pi20_Y-+EOQ0gSiVMINjA5YU4*WSA^U1ZMpNq4yR_TahyXr z$Z#FUnX@Qw7`A+S)v}wF=@v$rXwaLofdw<~jou}FLoTdG=Y`(>7Nc1}P4Yj5=2dG| zom;BDC8e)?xt&fl@&DAwmmCEqr?77O zE(-CuK^Nd<`z$WC~V5qu`O)0#}Ec0pKRxBRrUr{@Ea75%Zw&+h!@ zQsUMSP^T3(jY#`M#MmiPMYo5imY zPcQ4`+s46RLOc`vR$x~G*Z~dZ61CKXy$yv26gcuga&e31eMMIHrHvfg9|!ajF<-Zd zp5CK{XI&2A*<#$_wF|+Fs->UuN|XExslf|FVFwLSTUWczc%kW;2ygJRN)B=m7%6Ct zVcMmFm5&7~uKC9s)C$2~leUdV7=rhR;~gS-?y&O)O&$ZN6r4V{Z2*1v z1EWEwhaq0enq;%grLUa&zIy2h*ZC}Sulatf=8mNUPFGz$e|v8)1hH_{ixrhiAUXRr zqyY(MLdNZ4qS>imk}|o>c&WWSE?OALrtvvq;L~7RIT#?Vj*sVDgWXlTwNIoQw7+G@&7w8naB-jmQ~Y|%2J+o z&Sgn!2}MU^dp%)@l7#-|A!A9tY)|3~S^5EdebD*h;I>$C% zHTjJ<0xCUW#m^Q$a>aw4ms=|7ug${0$5K9+(kMe3UK;Tux(W7gossXP*qyC+&xDUu zNmJFGc)|uv5VupqCn7!cl%am`CgXDSpC$^aS08RYxTH1G=_*CU($`vw|Ia;q#v>%a zMg@MqK}yB35OgW<4F#jkCpUj4q{=mq9W9I#hMPSb7;43W_8AuV{reZVP1+e-Pw|xQ z3vO1>5l*)z{6LE!T65NhfCe4lgGga<aR)b(A!? zJ^*QzZ>Xs@Uy6ex=>heQk3;9@VfShES1*f`ah{_kQ)FE6ST~GT@JSvk?(^^rlSw}k z`o3;r3&ZZY{gj#Crz84DL(LT0M22$na2S>5jbiQ=V^FL_oClYK-)h>r0kO2wy$s! zuJ@-Typa5i9#Ml2rcSzKA6|&cbU?tiPS_#TG)V!yRkDMLS>s#7_yQyOcdV4re4?Zz ztoUUoV5E*!UFSxs@%FxYgAVy0SMIE39$G%Y>S3g8@Ac)|gRTL;tg|17C+#vR0^gQ? z>0^aAYWwm2;LNbb5Smh?HPJJjXVr7dRH!x92M`($!$?U_Igz)2lJL`ax%Kr&5B61D zhcQ3c&-ec>aSo`wZ)!jEaW@u4CC2c=5q)aFVj#@h;K}jZxn=!bhviylTf?X5M^W?e z!hfDrhycgXj?1JYU2JRSkiSodIv@Je78$Y)x|}2l?Sb(qPsxBAV-Fc9#3d-nBFHj4 zIuO7EBftp8`QCSMT&%tH#s`D3kQE6)B4o;Q*!fVmDtCirI6c)4$={|NIV3EUr3x?PJr5BFh>!Tn3s3!EYVTm39M!yg8>SE(C?02)*RH3fd0WCK0}Hr3oCicvQ!oF z7ep_eZxqPI^IL+Y_}Zed|A{C&KAQo(fb0RZxn)l#PnOncLnso&S6w!>JZTr@H?fh3Xy$6G%;$b6P1;yy1bA1e6nMlamcP0LQhHiFvTu z$fuKhuvWWrJ!*C+@775=+q^4=9Kw$~onK!S(fP02p3C+rb4&hHT`!?BMhFwPlXTQq zk9?_xN3pKoYzQ4XW>vn+$v|H13SLHb4p+7qA%B~<4ndVOxvYpBf)T|s*&vl1v_}eI z^1q=!j7>JPeZH*l!Yvu;^AeS>HwU)P01*ux8KFnqpx>@ci19HupGh zx2w`!I8>_x#F$&Xmy)hqDHN#ZOs{`EBg4<&4FUve0x$FB_Gb=z(tZ1J;l}BXE{x|3erMBL0Ik z_MIyFl9CPePQgvL%V6~uhx?Cv)!CtUaX8HqA74bp;Kohl{tfg_^u0)qB;D#gnPZhtQxNlATDHV_{HIT94++O}W zFZSxwqLe$n8a5UJa9P(B{PDB^Ou&d;?&B&XB_5dKZlZ^Y8|3zgDYwJqLfF17#q? zxk3X#j2P(pPoZy|Z;P3{+juE{Y^xccB`kiU2uicxeRM2U?C36$xthEGzR=s#lN-#u zN>F37lQ-d4UY#jR(#?>cbgj<7URP$svSD{Sp&bUu?>(P(MvqrRQzXWga@1q9)T*^g zN0`qPmIIs~MU1c`J3p{XEnfMO4+%5786e)h^{%6D+{j_@*D1trf0Y~sM9O1mmiBk8ckDF)0~J z?l=kfgE5?xS=dgUF~0tH(_|W&!z)6#$wj-@Q*rEkFceZ(^v|c(y#T=j>ksKXNvE;= z9A}R{v=rYK?(~shZX0K?ItMj=D?ZT0Cr$&U_KtqqH2ruMV7PfbvHuRi zc(?BdXOrL>CeMDIi)l|JL6q1GJxkT2BVj|Zt>v%ydMiV;mZ9{uz53QAhd_! zc%O9ZSZzz}WN*(=7mZ`79Cy%wi_6%<24$49__Jlyh2&AXw+o6YmR_dj%mgnLTwPEs zmXE$ATC2|}g|>c5+;;Blm!UZopZ@{b>H2eb!&c7;L2-?`UfurlqN1_K?|0pE<$w+5 zWt_%NSD4qg(}?FZsH-B5Xk2tu^I3Vb&w56|vCn}BV)zuoI?NaZ>Ojh*^swX=hb56+ zcU9V0{JiHBqr3s*1vj}h=QwG|9;9a|qI35HK!ZeIX~){Pzg(u=(6UG`fckH%X7YSZ zsB?>|dQ8au5?e0${$`U_gCn$+AkU7ub2p?l`dAZ$_Bq!}W-bCiHc19B@J*XhY?QmQ4acn!v`xCwg7pT>YG25R29C z9S9Of%PwUZwSk}faF5tba1K@_gjKskSdk%7o&dP@BrdQGZC&|6_`B`J4JLXur6nkr z9s$QiAwJOhGm5OHc2H?0a2N#1ny<$u#C^U|Dh=iQ7m@OwM^z&N%`gkR?0)xhnDaex z;)`m0fud%@5XP(4Z@sMMz_t3`>8#mFQPNMEK(I#RRyF!iNaArNZmj)RlFYEqsKedPGD@PhWkBR|8TzZTLQGABq4Or2j1>#w zxpLE@40>m@!PVw?X}jR=uwC0`+=;p%_sC%#?dG z$j8q#qwz2Vr20Lzir;#Io%z;yeZ|uPM)oQy3gkGy8$^Zy4i1PPae`m>`*DnNI7}>Q zj+4b(1Qa9pB&}y=?d!T|+$zC-c3rtOSrMYKw1XzJ+w^H?uqyiD)&y=-@a!6Y7A)6> zqVbtxBeHR~V5AfLa@DVEbU9Wr=as0wcmpLh7?cr18Y0q8xLV@W9=gWBVahXP}M#T>mR>GQ1N%G*{tk&a+OYPpuq<@I%&XOY=)Y+1+6>?-`(WIQ>AoK1@5MtA*&=p z-8Y*z30w#-t2(g`ve!Zpkp87x$@7FS&VCou+&jk&#SdeIrf+{wFBZbG*~fbrPQKvkL>hN46~&-HgX!G)qegHACMY zZCvnUbi=n2V5M*b{_K=EG?opMV2UD_imjAcd_KmlP5IoPVO=_%Qj>;W0QeWb73u*1 zE*zyTEl9zfX2P^XYIj+ryZ^IDVK87_m?K#oU@{cLBa(lhAr`hyozo2cwIhXHex9TL z^{fOP#yQH{1`SF;wr679s4e)UpaM0Cxgq7FB-)A`GO_qaFipm^rWi|2CgOyAMi>%E z#`m9O;14>QUBV?MUwJVX6!Ra8LfvJ>G{N>IZQnZ_;$&)F2kYTz@2$a*8JOC$;g4r- zxpN10^=*^ca32Ta6yAq?yn-#z0GSLQMd@Oj<9JOX-reXyHI=Z983z5HvahB$@FN)U zIT!IUYQc_7I--vTOBZeJ`Q*3WaSY3KKa2OI(33wIyqC^eP9bz=3=I~xdPvx@bFkx` z#K-m&n}q!yLoc@fDZ?GHr}T$IE4dVMMo~P(HFf1JpV~M%x#d61&YC867qIX%+FfMT zHi!qN=?3%(K!nmd=L_Rnw?#0MYWP|%+b;|!ap9dKU0b8HYbi#2O);u z9vXVYjV1=%CA>l|t$ne-JnT0CTM0}Nhpto_$X&dmYVp@XpaNiidT9_NnLCEvKgA?SlZ{N`GYx_$NbFb{})z@ zq2ApZLmEKl*`+orL-V|HBH7l084@+|XpWMh*rXElZpx0XOXc++?Fip{3^^RRa!fIe*hF9~)g1wqNIp z&lDmi5};r_$45u73u-Mz0r3YU26GA=OdbQS*70DfDzxYc_oY)k?O*i4_g!Lmrj7}W z{Zy*BLBTZXpWl~y99D%J59=MEUM`{|3V}$fL5=V5M-jL6b#n+DWpn{ELcN`(4~tD) znuSgC0jF#ZxHC*6k-wybTg zpRUZ2BSu?w;VV-GzckJo4Q;z@P8$YbZc1Qn2+oE2sEc%hjDh~qh@63F!BQNVtFY(P z4)w8|KIxgKZ~_ShNFUuC{a~McxkE_>SP^3yDyRJnCCpuS0?`9b7O4=uRjJ6!d1N?8 zWA*U2%J|*G)4)$;A2)M|$z%pqgXkJlH%`{3#8AH^YYOD>HIP~yDn4JlQ${_|j#P?CBD_bUBD;w(j|rgDLGfoC*j+hI_4B z$Smmwc~G1GP&cUAKeD1@A9oW&) zrs7eM?!kUrK2Poc#F8`|0&2g`s#+|_uE#|JhEAW< z^K-2D3}E!Yu}lHIOEUHH!9AUWS<=$L95E0reO}(rfe*c&u~-;Rexny#H#7HA?efuK zWcfqqjV~G^-qw@HFRCFHw^MQ~8A)2Z4u8v@cB@6w;`8MR^6P6^z7~RwuJQR68*DU* zKF=iuEJ={S)*)W#YZL8N_z`?-mhN8Iz1!&!rs$ru=icQXb06H(vrZoyyCRQs_YUEz zM+GfG=~?Ro$vA57pUvlZVIU3LQbTPupr48g&<=03{&Kp@rFx~1EgtDx?7H%(TJJri zKHlNx_<-p3THXbEz?`iqZyCT7BME4!#8WAud5z%gZS@anK@HDmb282jGK^&gBF-e- z1|@z!3{X8wURVo*jS50r1aH}`!(^Ikl&l+u6btvi=q45uPoi9{1%7s0bQ24lCp3A9 zq$xRT7-qI+SZLr2G_^4(#UPIONzpflwqJ`sl?#IhvBUehJmb6YY=;r@U}EWTjZnhR zMu&Fjgc?$3x^{fZu53!|VbY>TW5#u}#-!^=-*HEQ7e+STF}E=g=o5d0 zJLOGLgJG9hq1!bzg`y+l{*!PeW~{!SYo&D6{SUq+gY62(@UOXtCeFY$j&g#uWO-D zv~%EwtAG>(G-!USeEAl^yD#QKeaXy>`_yGzoGua1$#x<3FO06OJZf+v-NGQ96xbX}`P{)kM1AR%9TvBKawL?w(eBen6T$1=%(jE)lFdo}0BX zHY+B9(tiDEZP@=Q7ggJjST1;za#8ni`zC6GFnje|55qd{pG{cy%Y$VT*ez)o1|Rz> zCA=;rXPb{@iTLn`v9{@w8Aluk1%uPYN(QajXQ1Q(uH#1(xQ4xent|{P|E}t075$1R zwa)l>&VM#lp82QJaJBMm?&lXjbpE${*wy6=fxGa+>PivMrtO#GOl9pvsCELp6j#{s zW5zIj^Z{S3ji8OebL_ik=`xbGH7^u5FqJ9ib-$Tg-d&jNID>B9|M2E<)QbpPtc|6` zHJFcE;tG?NOCoF_Z-`JRQHwx;lhKOn2{(AL(3Y#qp3yJzT|2goyUaL_U3?({>9n7U}3=oPf za1N6O)Jv$Zqp!;9PyUcdON+aBtG0HVz(xd}0(9=3x@pXR75i)028#}GfMLULqsiL9 zWV}~RoTb@%E?<4D$}Im#x!8kfi=?L(G0z|d00dU37a+M@A?Fi8(OFf50l*nzf*Rg= zj_vSHUAXrF8IsSNfj*lHfANdv@|m%tFY(e9T)d&Aki!6!>P7{H(m*?OPcON7X?j0P zyl=k{WJ*8wyy*gG`wg!l^QY`OPk}6&ZhWD@5>f=|k?^AmjRn;{8;}RdzP-|@l{#EL z@5`dd+VZ?E=pe(^)MqDKw`1AG$X*A;B{Rb)HY$1GV;&O&6MG&GRmSv+@)T|gv35sr= zQ`%_%tQri>?;j|(a6*%zK_1j=5;Y4YC3|AVYU?*CM;mfs7#UNYHW+;`>l(I=I!!xW ze|YitQFnR~vzriSl(>d8nhgdruJio(+_V9*g$6R76SitoLhm2(NFDxh>%Kp2sq|YN zFlrjQP9Q$b3_r*05*3~GT|Hs)Yz(I?#Y;j*K~d3d_7a)93@N4ocaxjWoDIdmq@(De~X>`4-o4;VMsEEvYc2vr`X$~7!G}^%SrIf zRbaCcvAXAcZ@9tdUhkL@4^8MKrb&b9u=;-Jh6Cd0h#hL@MI0Rqh$?r9yMOdZn_gVx zG7JCGrTIqnrK?`M5Pzjdsa6Mw3JfAZu5(wSZ-hc$|DHHyx4aEj)Vx~V{*m;&55FwD zy30dQdGVMqaLIG!Ux@lObTAcn;~7P`@OzmOCV?4MGDKUX4epQxh0>7K{yoLy?OC8& zIxJ%-tEXHwCq;Qzl4=|v1IQ3U&u#mHEKncX8C`(tX(%%%LBuoGFReerKPgY+Ss?yF z)Glim{CK-ZGR@N)Z+>q8vsA67egPbHilP(=A_wF(L$!OG0M1yOW+C<$YOg zMrlf(b9em)(f`kDkG3p$*Lu%yhfkw!_3z&{7Imw-l8W64RwDnfO^uf~I#Sntw@zt{ z&_>xv&G~kjDBK?cgr+(o!^7e-AaS#JwMMUCeFL?6@#}XkS6~M&7CeabiGMeH4a!+& zu%emgL^$+hKS-RCo#kckFHtT(ED+z?;-8(n1BQsO5`P}iJ^8CuwNgX>%jK`~&B=18 zwA>fqRqc#OhMC20FKR}PrguO26`8hdj-+Rz@E({OO1F~Z*` z3q+C{UO64eQeRFy0K`-vTg+jE2#zVtY-XvFn`OoQ35&BEGul5ajmrBgWtDbbr817u z3->|zu?{yr9O>XPg%zh0jS8-U=v!*uLM(JkmctU{CaOj_g%RUT3FoJkV1<~I|5U`! z&rt9k4NAu|hLy1c(SOyNop`scgZtp=T5jYQR$??FWveRofobon=eKkz%ZjNyUwlT$ zPst3^WaR(W%YdINk_sr&Hr5sf>h-O=UkLe6JDh-J@5h)Ju{`q#p6&_b1jCUF_WsY z*>`CcXkW1cmGxq4V(V|$05Hk9iCk2E9Jp2^2#QZ!hu&F6M~_&}Wchi0mKM9APR>-h zdare^TP0!GlMw$he^O(~q7%(;hnqY)R#y93A{qytSOpL`E|b+LL&bi}Ey7)q8=Ga) zJ1|8f&vMewZ{?g>^vIFRaw2><;z7XB#%V_RSSTFrA!vc-AIP&U7KWodYzulmRaUq@ z`ed8QWNjNpyc}LqbLsLamy;^y${MfqyuWaU9^XtDw6!m?MUSC^(EMx4T@cDd}TbCZ>XX zMn;f5h)~^RLA4qC`3cD9cV5N&Wojm2`m8G&vcL=k^mA-?-NUk-+&g3Hl-AAsXhLZk z9=2%nE!X`^_b%Zx-Dt|>&C<4;5Y9KopJ?SF{YF)dYSHYZpcX%;?r2`?XJJ}F*3Qye zCt@OdP#2+UVRin4v~gn)F0seiZ2Li@cq$y#VzYgV5b!Uc|LfTIuRE?$$<_H(6Tu-w zIbBmNXL2TeFNY{ghw&6pEQ%Aw3NaNr^O+=md5kjGxaF@WChT&FN=zEW@^g}6`t$VU zHf(EFVKOS+k^=H^OK^^rU+1ye?M_l#XA^$@JzP?1Z?B-=A_$o*dA!P+o74Mp^PcQF z9n?lrMPC8O^im~mDk-FL0L(KP>PZCG4!>%BH*3K#&Ra8oXzeqFOH=SEdW%8f_-4M%o2 z@b1!$TU3E@4AUQqLniw7mY1`K3Gc{GJa+NnuTDvh!p?M$$**Ln67*&Uk0hB2!iiAT zGDWr+dq{hBtd82R=U7OZ#xu$0lDvf4WSi8;rBVZKMM`lNP_a6R@O=ZcmWBPK&X-V0r6XhQB!-Ht@N zEenqQQH%z)b?Hx0f14imJCELq^>beq`rE9@DD%omjQlAX5q```H?NNLTAe?ZS{r<( zVGx@kGf|OX5grh?0*$5>1B!quYYoPGav|~;Rpe;x^bSVIt-LR%bg4kf+`6O$;_KT&-6M58=oRKID*kBpc$DIq1D&rxbRrUEH4V z#qlHnhMk$gB$GmtUJBE~^xv*3UYxX3{wS~hz;BZA#vy<89BBh7be=eX&dYN0iO?yrIu!(6rzJ%sYZO129&DCE zYPatcwWV{4wwDnvME`sC$g5&0^k3s`;p+_*fi+PlJUrQwJglQW>c}vb88V+oUv8QT6z3G;_#2Sz>Oc1yRFXXEp;+#F zVo-Z0Z6^p2PD3W~ZqEXkZ&2T=wA;+DAr5Ek^(NQd=*8K}90qM!D1*1Eafu{QPjzz1O#}sTtZ}oV_&2;lFLH~j}zmh)eh|b;5Xy}fO z^sfZtIH6fL#(0w_k#3(&T<_I!u3~v))K_kdi$-jnrVgJyknXzU(C9sbqj~zx1Q52E zbaTkwCx}eafcGs zcGgw{**}fAJ7uxvpH9+|;>Gbu;;qET^4s})N4_+qe;Lbl;Ogg{lW+e!=pOaTR+pA( zSJ&<>fPBxCDZGD=;y)mEOLn%L;^~;054X7)lfc6Yh1nkZ!hajiTpuxX2H=?+L2Hp7LpEurzAjsA}KAfiM8m$BzK~V zE%P4FVYy#Ag`4)@gFCCe|6=))vj2gymEHG*o%%2(R?+yhWo4PPU5);x_iMOMuU0hv z&3vRwh4}DvagN2uG4sqJRr^AT90fc@l9rTrNen|NDBxD+{2*cF*Tsgy0(Wc9d3Nz1 zUgmaaafJzGL|}E&Ek#kC#@x$#Q+_|T$NJ>y9)#ZRNCA@%vZ|ygs%w`;4#x3c!j*G# zk!R&BD^kOzdcVf*2;F?7{7%n2{i<`TS8E#m9KD5H2ZC4~1P;*i2Kb;$b&d~Co(YU1 zh4p1%0@Q*tbVgzBV^Yi$jqhs3nRAhyzcpH#uN!^dPDTbFJPHgez&V(g+Co_GnFeb; z&wFwBeMQD+J|CTQsy$IR-SjQ{Z+y7EDNvb^uNP;lJ}wuMmk7sJY8gZG#9Lj%cs<7} ze4?d5XN`3ozJEkwt#(faWt}8Q>6oT92G7~z9(qebt(p^IAO0TdIGt(`bLF<6Lef&q z8~aCm%jtF%w7jyAJm9;_X2_b*qBHq3YXc@$EmBe-kuD#2CaXI8AmW2lCta>49Z4Td zQ>(y$3bdeq{#I*Hk-pLw9L_G>U{Qm?dKb}cdD2#Z)= zZ6$H(Sc`N@Xv`I%63xA)7)Rf?v9uFNG!TOEj5A#QAG97Sc}WHy%_^-2)&-(-!7-3T z{XvOe)WOtmn}m9*R zh2q_g1Vst``#Gx-Sklec&-~wcvr8Kkf#gAsGq0Wo1oa8hxNYdjhBr|81waH2i1v=Y zg+rakY;AE9njtq57p0_LnV-qtd-`TeAj>mhJUpndIoB{^*AUuTj4hCSm2R?$+;u*Y zeOFkq%x5lX#cgUuUzNbtNG}C)JircsdeU>(sPt zucUF$5LbK5(xsSU8^M|Chwlsf!`EK4s`2jv{TdVGjkhoARxA+oAD3OvrfJc_#@{Y* zQY-SP@#|ASJd=J3&X5a1)k1aty$oo12idXMfy>6&KZRN0kQkCc~+ zN%yyZIoyAe#O$2dKv_UJJ?0d`=l4HM7$-G4>M=&rSUxQ-N4ZH=id$gKI;*WL&X&Fh zZjUHBY=o)djQtgeEMNICi_=#1R&yK^SQ-#`IA%2Yb{v}jAAIdayJtTtZmI#zWlj7e z=Ebdgrf%9OhynheOfXdI^Q#<1Pp-x0`qq3(&WzZ9QOZaH-rtr~4~2z${!7-($lhRW zd>vRCPDLfr`Ix_jqSeLB7@2=k!e^RE3K7l-bT$mvie{z+ZrJ8an*VLyQu@O2$)cYs z;FgY~88B(Hb7t=v;5MWn+286KmwsM2*LGxS0YhZJ_6yxJo|Qlc{SjPrDjOC4(_@F@ zL|Dq?JKT3aK4Cwr+gGIQ)r4(X&C+o2srKm@GzQ)o5}a#UE_0~A`s(%YBcghDwsEvp zz5rVlzn5g&xUXB1vtsGsxLAPkXXzTOjKGoW#LI=ZYJWWFxYZ8dTUdb4NcC#__gmXV zd^hYJCVpNIPTQVOAKw!pUffnz{z16H_jIcQEnL(R+Wv@6*<>Pf{+0jZ&qc$ouU?=V z9~U!?#d$GbX3JosW;hot=CyH9qZA#bplPrGT{w6K)VCk+VOcTpD0>-ekQq%j*;b#svsS!!THBVC{}881sL zFkfIQdG4sXSOZv1kA48lJDMLL4`N*#k|pT_El5gO-ly*wA6-fahCjwUKTPzdp8Z&F zA8_}C?|tW7a`>)t9HK>N;?JXfMFzG1Ac8qS1vS5&ugZm8-lX^JeeUd`K0EzKS_gI^ z!v86Gl)IF`^b*K`SRlO0Vn5MXOl+=y$WUhfLSKr)t_}v{Cg#2;%>Vu|^!z?FTm!2I@sLcYr@1W<{cMWq( zAKKw#*>qI=BKQ0*f(~jKfF<|jkb6hE^5Va6Kr^;1Fg%Pt&^@NyQd=%K6mMW9D)wDY zLh3$Efx|GL(2$hrg#wT>Fz8}AK)Jct-=!+8>h?MW(;yf9H=xoS${o@!ULK^3d2mvX;|mnd;TG!q!%RZ=;VVzqP-*^tzqB zlD+G$dvT9v(h6zzJ|>7xL!j8{0z1+bB3P)#Pc=70SdpXMfmMt-Ay*e@uBHA8lUmA*QmJ@srgjp;Gokr!G^_^w5L7(Jbod@oaO z{G}=(Ua-;7H)*7BO#gi&D!LxdINC`P1Cm!WUB~ONtueW)DDa&$@!{;fTap>K!Ekln zE!^p!!(U6jkDFha`B}Zp%^Bm7AGrccxDnR%awcalUJU)QZBUh)~B#qX? zdhgKbeLba>w#GLDy3Z}IeG22E)G2`_F-8ac%nGEOrdX^3ECu*aM zlg8g*r3ZlzA#pb@C0=Ff*=@PYqb&+QF9kK;i3`aqdQx!q-1*IW1*u+qdFYGSH&D+0 zK$LJ6Yy=NdpV_l=;QC#M>g(g*j;6r{h0oE9kH1HBi(SPIPEBX;3%hWF z|Bf-Y+-8voRjOuC4usVxQwPF8$0&r>zOiCMzBS&!fo(Y7~Sw%nD9Q?*<rrlxm z!p%M1qK0nhTqlRRg|`QpI3QT=9(2s+D85qkVZ*(pFZaVa{#m2bf<~|ok%Sn?_E?PN z4DZjDLY@)*DYKL&*}FTNb+gKMNlH1$5D}PSg8``b_tfM{dIVLePBn~N_EFj<2K&v{ z-9QBvW;$zezM-~R*Ebu|1zs_G&bl0ZYNl_0Ikew5K~_9lLnbma`U3SH=Qf%xiTQtt zJFOqAPCpQJTZ1xTi7mQ$Oml+GVAByN^|19 z>l5sU7dGC~fO`!S7XL@jkT~|=RN;h&grCiG=?&!X6ADo$nQ!Y`n!b$4h5v6i33&6R zclTR~O8v(|djyfV5k6kmOaB+dh8=aoKJv1fcq{l2Ypg-2dK%lrng0CM-+}{&8}y0T z+`QzlEWMHLf%7X2X5Ry4aNs3NC^l=`H*thrX(_mUkm`g)XT3>#u!i7&9v!>H5PtJ;8fF*98gEUZ)bKvRzc~p8ss(FKfW^%ToGgmLSU> z_kiUEOBfFNqNqZ4uCb33=O`~x|BIKrhRV*T+32!)3e{BvEq^!x1DlmyjQa1M#dWkZ z^x@hrXO(ufm$Vs??(5;MLmV1xBWDoT!o_-VZ?1}!EgTjVB zDjRC^#1yh|k-E;@zk6ArhHGVK=+Tc-{LMgeUZ`R76{y#9?C<9Ng}2{VeW-g6g5Le^ zTH$fXvw|&(-(*AYWh&}68ilcJ<%Spn-@|A#nzhYU$If{pZ}rQ*_*#u>oxHZ%;p~EZ zW$Pn1P)_Vl5wf5Gs;LlPY2<1|GB@9 zil!fF$h8*#FOof78!uQ8_(xYa%=P8=IQy@qJ^`?>g0MNU?DWRb)%xw3v6_2kF1=vUvXqrF{_~Wp1%ceY zweQ~~@Ijs72gZ?=B2dp~NaJGd7%jTQK5hHgOX$89RP;Cw{H&GBInwjV&Ve=v0S(5J z_`*Xqq%GQ)F(rnKJuRjA1>1CkGWiXcuj}- z$rlF?p$OT0DHo5Y0!N`^_Wwrer|?<#Jv;^pk&@K=?}nfMuQ0_AL=^uuF1wr8`fiO3 z(d2#-mEY>(6@`Q{4_BW)M((c63FI(&Bcf{d#{|HN4>HlgJt05ur{R~y^;<@?v67^J zGo9buu8jP5G^j-AamO1H@i7WQPCylc_v~gCX3BB)) zSKdBcykdIEP=@VIv-o@d$oX<~zAQX@;Nm&-dv*YQ+RWFR&20yzOJ6n;p|y0p3iVW# z_!+p4hx>0oKNjhK`|D<(F%u30br9|B5|XtoVXoDfz~@Q`jJ9Wq$7GaZC3t&3hin2ai$s#IdmYn;Mhs zoyLlemno1bzK3JqQHxruT(ef#_nv1&zfh;u&s3*&YmGN_Oywj4z$ z`5@f*c{pNwR`;y}!+&KM&*(!;WVwc|p(QvsHaPEJS&qONON2#e@kBY&QY7^d6rT&9 zKUqaQ>0iFA_@8f^-=~(!l$ZIF3)kY5Smp$z9b_S^V9|Agl%z7o3uyK*{Pq z@v&5apeJuW90kYqHCJS1KGq4586SHhKkGcUV|uM?a53?rr-g2lILm58?J^$NaVi~u z_;cu5y%X=Lca3gb7PZB&6Uu_$P>Cp1DzuF*-OmHF>vz#Fu8KgtlbCOz@2*P1A*ihn zRK7O(nCVQvDBqX#@rBta-p(<5kzY~wECc!O!*W*30HFsKa*}ZA8K2|Yd~J(GyWkcA zi*x3sT|nM{etR#W@%rHU6Yf2t;0V0<`VpRI+_6|e#KtRF4?Xi5s}}kEOjCjS9kM@#$m3vmTQnEo*~^3OfD(^v_$1L_2GorT05JP^}9nnZ5Uy4EmAC8{$AO-GOGIQ^S!f!Qy(38m|<5%o36cnv9Z(l zD6$Tle?y6tg5S-IcBt{HQr@Rgw`^u{a{QW-{d7ki~w*b^G4K-S)|)3Z;;Mpgz;rcLu^3 z+JoEo%&#mg;txjlE8gzcIw^B-SUoQ9Fwyj75Xph^iZn|jortx?){_v6-0)q&sV z)FlSUVv03tW{rbIML5s+CD%aLz!I*mUOnHwl9|RL@AVHmZSl6@0i3}Nv{OGBRUP8p zSF)!jJeJFRg0$;T@z#762_Enr0cT~bK70tVX!s10u%!^B0M#B_!&>CHn=5YM#gaNdIUhdGd4JUI)rLLWo3hkIKBCC)Z5~4sJLaj#?SxCJZvvgt}!C=P1nB*K%;zfJJ_(R8CCxT zi+gdda!z?ox$OOxbl{DfQyez{-}1$(e2_44-;S8li{8l%WiI>@j0z7hXZkX0lE?L1 znV0~w9m>%{#vt!l5s=cKf2-W)&2S4^F6g?&+F12Pm`m&4y113o_U?*SeQto zhizf|2M>;IaW*U@3T;?iZyeD}ytQ7Zw&9@$Y`+$L>=Nk~)c#A(IgXKPMC|mc*fa{i zdKtHvq5RN8&cTVM#Ajo#pYFEBkq`bP(aM6-t|I@yglRm!ES24vlGsbD>_$?oUQz>; ztmd znO%m{4C=0CgdOfNblaWl0~-ikjJ&vFavKMS``BFCMj%W>Dtfv{RNnXKgWbJ5ZVw+} zy0huJ@GuQ)y6frK)Z=x0VU~m4pQF#3rnuq~@8xnNSV1yFA`iZWe`065e2Bte>aV=H z((Dj4Cm|C6pMR^sk9*z=V@?J_7wnk;ET1kfUF=`mys*sVl(i~)@7X$HB6DUt2d73n z`P&D*u3%AZxay;NUG}4oKk?CgV|E&Qf<^CJAzsD()QE(CKAg*De&aHCmJjLN=|Lf( z=TE|dm6Gn{mJoUi8}(p*>oblED{vF&Jiiz*52 zm_Xbz@5sTAMZB9K4?E4ZyM|C3mD4{AiMA-Abpz@`;?z%)zCVt4^I}8)f!#1#KP;M5 z9CU4H6UCW~?xH72+FMVjS!n)B!;&XuE?Cla(8IqS)UH zT#6!@2E%*UNbzx^KfM}O;MRm#15Vgwg5)~92!VEa-irZ8(>;DoAyh6RQ}s5#x{?{! zA}m-sH{I>~9MTW^%q-iYkV86?-_d zdnM^$)a)ShZHZ^XYfH7wtDAsrsC(rh3Z}g1#9->wIdhQy)!3`nmNz}H{V`T9{Nz=e zTNiktn{>gPF7lvZuKdmDAojwtc#2a1uN10X$AqZ8=j}tB*8r9%+^Zz?(|q{)?0+Is z)+bbUnIt<#Xg~G+jLU$_N_eu_)_g&PA$VSwe)*1fd)$4bDjp=0f*#CFk znTlQ)Ctq>cxOC-&(xr1lH)0^+rW%7@S#rD-EPHi4@oG2WAY7Qh*CdKe2RF_MMU!&F zWbG6Y)aT>qbeV`?BYP^WXO@ujg3ETvi(hV=eE&|_Azj0nXxw}Gr=->tf8D;LQugoD zS=a6MeG>Q?y>H}ZZuxZBFEzF*2kVDL*L7@uS0;Tjq2ojT`$#452i?sbaBJuqf9eCI zOg5K)>%Y+~YI@*)4}xfD{PUSYa&cseKk9 zt>{sEAL4(88X``rg;IwpKZAtV;`~PK=1Xr*)hQ(P~m7Z{Idroa6ITnGNR5 z9`S849?}7e%w#;hP+xRaU|m4SXG}*wGBq*Ua&(*b2K>8){t$)75~#l#EeK-4BW`o29|hUWi01kYf#vwRWnxY?ay)9p0W6` zMM83BCE4gN?s&uPhx;zFuTQB|S2wS^_dJVP3*tNRN74bWU4ehms=G#JDiN3@Y)0d` zg;8K_dj06grCIjsA+eJHlUSFge86fpCSh|Io>u3}3}!dF?>>9)*-Ybg=ilKsF_-s_`dITCb*ozkGz#PAK5q(*o`2En=@$(L2$a>YgDcD}| zjuOYmF!LG0JLlh%an?rTf{~tqohHf+rqiSUF_-hEPbs`sIi+{!FelRAaIoaasMbk4 z=1@hlA`SL?0r||A%lx6*t|(W7>!s&^DTj*T%v(+AfYb;N;AEXfYMz4sGLwQ)jGe4P zEMLK{-lq#*HreY(9VhUGxLUe3>z&_BBpI5*UFLhyGIDUE>(+!D!eFJwkRH5w{-7O| z*Rp+^I8&xjeMl$UO%gtb-wB*;i04fnTXVhj;zmdPO{xN6X)Vy+s6H#=+fY@wUJ#vA ztR@uKH8nbdQa@hp6QcNmvUl*IqL8Z@)<4j;;sXj@EhZb2tiCxI#n2ObwMsufZb>9) z5RnbAKim>17@_uYzUhXNK7!DKB$&n&6Z5?=hxoWol(GITn1%Y|dbeQ~2yrvtjA5SQ zw%kjCKYfCJpVRZPe$B1qdGt*A{e_KXvbz5nl6l;T0JD-x(L0si`~LWbJU!MhHX1Z+ zlR@5|D4!1A9K5q{adhqD+T_os;6|d%;%f9MyY~UxTb~jHm}GP2OMsM&Ut0IoP*Tmw zprX~H0(NYVx1;`{b3^{j?FdbQSIH2WI}el^w1z|E4N~n%tlqAid^@0y%<^a*;mraX zSf!{<6oM)ueOdn^$p5btG(Si81TI*%wx~}GaFAPma}F=$o+XnVs_~jq4X?jx?j>zS z8LiM?+%~(`nzpLqF3!_lb;?-K<6zlyFW_L2z*Mz5hWjT&=w;1>Jy7fn#G9%MKL4i4 z;2=oF=8R9;zOFJbmf}3+KzQ=+5#KP2Yv~pCjTEbPPDnJ?E&;fp>he^f22;toAY2BC zD4?wg{7`!na9KGYZzv$B|EZO^i``t^l7@4qp zSvP-Hx*q+@F1_vA(-ZHq5tmrwjF}j=Ivey4E#k?Vt<%%>tZwD_==NP#QbLX|Rlfb? zsD4+7Eh!;sC$0icdiu|0Qu)pElN-7waqi0q5WLSp2~>6Cpgi&G#9Kc}_s_Bj&7f3QaOG_mJJ%|y2wVjCkz9_lkCOdtm1Nx^6s zK|$6k$-^<7c@^C%KKUuZewHxYs0lKFy};~$5n?MsR>m+9iM=%rp)?j1Odp(&i{ga0 z=hodsue%5QaSTf%wLp5pcH8cuF>|$qN;dD-O|07}r0n9o0VW0+8JLO?6>Tvb)P-ThUYu?35iZ8(XX4hKQ5 zh%Zbp%_Af-qBJ0~%QLf=TR%_1yE%cA3lYt?Cbkhx?~x6HDVv{IW9yhS zO(aK>I_WPOj7mhZAw_n1zL1SnbFAiF#yKu5=idVsP>T?cb~k+JWx^iC%g6^=CSUa& zHC_k|loPNWFj6tAlZYO?SFM7&5O#`@J#SjWh<`W($JA0kM8b*LoL$G|X~m7^;LnMT zyo9UDxiw{y#EEa|D6aB)cG@Umk@({Pp(^dAj0L3%QGjev=Tpk5Li?`DWl2kcO&P4f z&GZFSuxSQa6CXe}W&*C>#ligI0xanY@w=Yz+Q(}V^*Rqql43YHzUpwP-d*q?T5%QB zkkYsv5_z;DZ}40N11c-1BWR;-U;7HibKKw_k;IGoh61G}X@McwAB|A(vAj-T&d~Z! zhO_MXg&3d+d2R=nX4TxS4Pw2oSET#ExYlGt2is^%-(1#x>$k$&tw0UiMD=A%8Bn45g)=E~X<_4{0IV0d|P^U3Nxv!!)H&Tz#kd z8{-gQB{<)}GvVuZST14y>>Y4|x*^K-&T(0P^ke=JqxXNj-+$c$w7thUT*w3zyz;HX|BNf2=}RJ zZ?@I2ZU0}TcoM=>Lcjm16hlP=5G6Eqol#i!_S1*5(wa|{#@a9Cm5ntG)%A^a)s;=P z4fSOeCGWqK7gtu6efadLx~k~IyZ7&kON;W}<`ra;QqxnC)6>(_QeVWxr^lr|C#5C5 z%t(CvJR>>%W$Mec#Q50Qxb)PRl*HuNw50gt#OJYbkK#OzBrcp775W$-8X55%9~KcBLWm|r;6lR)VZk20 zjEsyTh7zNqA_(En!kv*YWnKrM-R=@>x;urO{9$#qWKQLyus98 z_Wk?hDnk9;s3SruRArrK11kzR*9^u6?8P*Mf!*FHx#>0q-hSK#jt%8oTY`vu%*a{T zT0q}CGVJ`$1p*j=U)spL$Z`vNQSsF2V&-fSLnO32`~}#Bq~P?#@k7;&y~))3RhjkP zv(Gyuc4w%#g={m*gMm{*-d?{Ry;Zk=e+R)T^v?B-W_e=+LSmvfC`6{#xtTMt!yFGM znuljs6ZgZ2!!F!wBEF%4ekh7JP5rq>o}k-5=8Ow<#DAqI%Jx1}>}X;HY}NV)yxT)w z6_O8q2Tjb@KN`@trb)M_t1KV0!}JnZ9k86oZ%~`IwFwHYMHOB%NpQ>S0Ed}ilaV6~ z-zq-mMgXT7j}u3o5}T_@C6kl2_gII9L%Y8D!=Bmjx9^Q#nA(0}E)dY;7TUM~ zRNBO2Lzzv8=O&AQj1MaOEVPv$RDv3T-e^TuwwC05B=vfpv%TMY_eixIKjzVUf$p>2(cnU2+uJE+5W=a;qiI%V zna&>87)581np`b=L3<^2l9sY|CD+-+!VT69imgMqppX{jD1m}UQ+lNy{1IrPkS0uTQqksx61H*(c*UQ&&J{Vv;IqUks zb@$SyR&$Bu-Xo5r+mg$DX$UNqkuBwb-6rnC{G!n&4GE_bZ@%151a4uT0tqf{92Crk z$QvLNc%cM^B3v(cTq0wfd~qAKMRNT`VrP@C*(`(kKO?L#k>qJCA-<;HeC0tmlZ&P_ z0Nka*Cy_$`b3d5Ffx0D?;6t>-@)OQD!i@cn_BNH?5_KhEq2`j?r!tqK04+H~@mmrt zKkI!OYuxd0zv34vhLS{~+W^ ztMQi7;-&9D<-uO3U99uAn>k6k21p6(yJSfLl{f=Taa8?pBm*Bx_2naZ;5S3T56jHB z&ttxqj7;yk{nJkX|5adcS9Rqe%~qC9-{9yuoaLQg*q+*O9pHY4coY`e`z|UIjoZ532N#_^{=QN8EE$N;I)gO!U%WbpzxgvD@K(on}PPmJpDaLA5Q6m32`Dq zZ0K0|HG(kZWK>VYcka)uBb!^yvpkpzM1v%sim8};%lIK`wi_*RBAHFSTk5w)2OAp+ zJDy|muQ&c1rcsz)F*fsB#&^YVfx6J_BM?L2u1uYOb@FqEM8jI&(SamO4Dhr#bE7ep zgMV?kFP!Cj+M(%M$wKuxDT7Y~L7J?y(m_-SCb<0cM7$oHQs#E~kGrJ8o9OO3`)M|C zy7LD&AQUUP3AD!-=%K+rUls~O_;gH`Fj49gXB#0e#j@d$$z$Yh>c-b9PT?b+abw5s z1{wkC#dS2FB`m9|m;zv{@$G#Zf;O=oY2jD?{p;&xa>>-K5-1*;F(sA$8FCQpgViU@ zaC82q*E-J^Kjes6;enMlr_{BmsSr)|m1X3gmkE1lZ>CBAj&x+M=v=F8T=n`827E2@7h+!4ESp!h{rg zI~I@Pp!_Smp_hwz1#@xcrqm!4@}knXDQqP9ADqZK&j@HBP$Py-m5X?DRzaj2i>l{< zPzavZ6GN%2X`5TMb^{}1XE1=grR%b8G2SB(SkF|`IQuIlq^|__;QOlE)ZGD#t+k5D z3wq-xg*DXsO4{j+R5`{Dt**M8)H310KHQnG4&(aq;Kqa9Ea-L+ZJan$!Lp~1WR{SR z7wjB~rOJS*Xi2z9JbFWTR=UX(A*IZF8UrZ3m$=+eOU|OgygLu%R*uV0G6!ww!`8FW zy;>%4!ZPBI8sD=z&ie`&x<-W%-?E5ZK<^3kIc7?~-sy=U&yTT7qK4HDE@65CT@{DX zbn-U&1;U`F@W!$5N7Al=>VMf#p+8o(V6>xJ=$k7(t3t7^HW4`OQ(=suxe6Bf{4O(*VGOt|YNNDCmfS8r>!LuHVI61Q*e~DJ8jQdsP^j^$l~+PC}VrN-K-fh`_n!NoZmVO^Twdy_L6qj()vdK z?{We8ZsX&@|2YJlUG$$=hm4GMdVD0x=WHwta5B_TE0UsNKEIKg5p)PYX=82x zTOf$#$vR4_z#3TTth!XE!!m+7N)xUlK#}BtO5|EFR+mdHNO06{e!7^$jey}{v_GIO zKXcyrH>Y&%*AA(fd_QMqPvJ*E9}Lp@ncp+6k(15-m1NX+ZibVI(5H3g=}rizN07p( z^sk-2WBd0DRVgs>(D-#5>}Oi}9qjYw-+L9KfJVo$PUv>y6EBy}8sMEac9#-7P{4H* zC%(~kL<-TqTM&;VjQIxk@bQ5-L1tevX-2N&D{e7axm`hq7R>8r{xa(n%MDPGz%OP5 zdkm)vR{$O_l`owR_n?C%-IWP+Cx;!#M8kG;7REFO$mTg`n0)VnLCLlFZ=-*vyT|MZ zE8IL&Bhf5kKU|n9nN9^?D;$kyZ3wDYKg6Xjhml=>_}J1DzAN)d3 zF&-}gLVk!nY0003VcI2xBg{Ew%?v?8qpi@2y_WkXDv&XxIYN=Dri*;HgD}}bYu}J~h-K}M_|LftJAb6xUs7$IW76^N zknILTW>`T&q=H#Sjot5c`6WVA3Or?-(-fy7ZN8=UDJVs(SyU`?#(weP=uprtF~W9v zr)u!`)}?xd{h%7YTXl@P*a->ilG^(xEO#i<-{bWj?@OBNF)c<%I_JbzhvuVP6pI@t zRskRF39lf2_6-N9sSQ8d?l_mIMSxGlpXRfVIX8lKv!k1jrA14@ZdmMjAQGZ|I6~?m z$@_Inq$Ou0Re1l0fY2Yotl{@f4U!ib2FqMDD%=ax^{lbHzaN6>XcP$vNfBlXi+S84 zfzf6NAdnhGyY(V0{8+P3*3@j*hVKpaX%Oa)=@;((cOo}5lWF$Ky}Y++O)6-BAyeD{CovLNgEim+MDs&Pvj zz}qK-SD>lnmUuq-czajMP>~1C5pjCi3+6W$zYXgRTx1TYRLRfd;0ALO7pT_&;TDdq z*_=aXP=Ea_>=t1XLw>nY5H&-xt##Ht!ZMjc2$wmiMcvhFOzukpbooA^{0Ml4nZrj4 zT4a?oAel2uwNPoPuh&=4*7Cv1!;+#$K5qfXC&8jGg{FcjlAXJgWp;}zkf?UMgK-_W zb%1~9nRPgUFM2y1Wy5&Gz+r6h9Yy;vrra6lmG?$tTY*}Ujx&E@%u+r%sI}sRXK4Wb z>cX6YW*jMR8=U^TeIFID&uVhyo<|KUsKuegQ6QbldJ7s1X5Se1_F`Qm2n(@r%IIJ6 zIp!l+I{+8LWUTW^xa^SIeZSeN(6 z!y#=oXRyt-YWr#0HETeK%79=H@Xdws&!MBdRvcx>B?~7tB6)rLqD2(S3L^ z$-{@^`!N|5%q{%fa1Bd+?d;BZZY$Q3i-;xNI+ zN765>u#vaq<1;yo{5N^bk%~Dyv$Kno&E9n3+^$em^CXPeK4RCpoG~-de7Huv^hQcF zJ+xTn{m^Y`%GqTqmk*ATHjtyE&FuTEak|z_zEpHrXNeX3=z4Tk64oB?bAqi4bJ)x* zg^jQDx2ILxPu9zTvQ2x(ZtZPYT;%l4bL((|wh(6J#Bo9;nTt=Aj3n1}@age+!O{#K ze@(vb`Qq+r6?iS$hSiI8fZGmV1EbHaAyv8bTjYw}+z=?E70IvL3w{f~j}(qK93Xwb zj!swem+dW!WLC>c&X>dZ330Wx#1}kVGq$|2zBZ8zKc6T{>oq}qZpPxy1`g{PAhs+BNQWo$*tg8M735yzcGgR8)n zGGwf;zqM#`5?p@Ou!Hu)0upN2T`wV+kWbieTqG?xt*6Rl@Dg^Ifs0v!p}x_Ndg~;* z3N>1%kJ2$jRK*TtqxNHU&v)R6RDlaneH*-b0$;z|j6ps>9~n$PvgK@1)e~}NGdp#A zhsLhm<(0Fr<*DdI@Nn)mnyB|hv0KkW^wiG>$}i3$G+{&DS*(Qr9>EWnrdMTyIZ?LP zLeJ^dk%;BtXdj(h3=yCrKh!v@0H{n-O{QLuuck`pt^Rj@6cXl4*2_Nn>j7}V41T(5 zhDmUG-oV2J=0he;{Kqr=CUtENODJM$YUA0vf2$OL2x$ez(rtgN-Xp&~d$#o%6rOjm zsXjw@%)h*ee083ZPd~CB#Q7rTF2cbmR7_*J3x< zzh)Z~^~{+j#7jBuGlp4n`rXIiPs2+t$i~YSSU+GCFi!vedngB+Lf5yw&?VHJtTm25 z=+o9E>oy{5K7Lv!_dUp^Ir*rEyUGAhCS%4J4`JN`7RWuWl|;CZF-VMi_TvuB&ZV`i z`L@(H>E}wn^A*D6&We;YSX5=UN~$+Vsia6I6uHISHX7>OWW3)$o($B#&WtQuw z?7V| zS_O=hk0Tps$J;k(a;H*fmp*|bPP&^S+QD7whx?J$TM)BQj2!!rKVc=NbCg^IsXOZ| zvjbd2h}}2mlX<>Ng`f3D!y-6<`|3UhXAE~J4XiYkG=hP0$A>NLXJ1z&;>@rXV3795 znVV$x#lJI9-b-TGpWnPW=mfZ#4aHBBYw;m0fH`{wJ()fc@B`AtD=5~ zs<0-y3>m>Dv-rYS&jIX1Z^?Rup4tsAj3qoBt-i%?BUe)?6(#!MExhm{X#z@uTA0-> zr5rRCPIafVK5dWyB+iNO(x6hodi^L*ar?KA99#di!4y~m?lbV7zFrgP*+HpBe+2KJ zybb|r9UY4IYXJ%B>7%-2`uCrD^KA?R+!>}x4atBF`sZULTN=Zb!N$dxbvP#Z*$3IZ zU**fTVR@zt`vRkZ6Z24oCFs_@e0F?tZbCmtB&3b z&iy)VG%s+w_}c_2F+UD?jwcNHUu%9-_RCELe{nFhVdB5w?S!<6CbfGtA^WS*Fc)!} zi{hQ-Z=J6Lm|p7ZJtLpE8NM+Qpm_QpSPgA+e|xTZW3J$>thwa3DWA8BG;7^f3vH`} zq2~DLDn9*0(d^~Jm{jaC`|0m^-cNy6?e*@3D7R@@c`6eL^*bN{g&j0dlDdvBD-rM_ zk?-Uyu130Yy>x@?um7mkl}iq?l9vp0RSrn`NXGZ4>*0}Xk))@;vJ zhjdMmO9_#n`Nmkas7iVzM-G=~RjD#s2Rn!uVZhwL&PjmtPeI|*lyT8@N- zN`3z%kK#Dh6#tOGVk12)rmM@_%|zcVM=Fq-ijzM|Ak5xC+m3Hyz3%STW@zxS|2dX4 zL&jY2kfMN+oBP4evzm+(rZ@4fF7`qBGKh4>xj)|LU|?Z-lYg%$lwLiehx#NU=NhoK zyixy$iAm@2eqRoXU{tpcPdI!n;MLFi-+@nY?kj@GNQ`PGtkZfB%ecG1jP z1xhH936Z@oY>rdRiGjbWOr9sA3+tXyiSP|QK$WF4dBG(HlfVxw;+%6L5e7Fol>XLH zR237nhP}($ARolkrCGj2zSmFfgMEn2UX7=(3119pICcBku0H$fHa=qZr{2?3%!y0Q z1A1fok;6)*lEI~m6*_+eD4fI%UshG*+}=MueoE&Z-^)GSlJIDiqzG2DDj9~|He&_8 zb}Lw-{d=)Hz=WiXZ~}i4ZhdpL@zEDS-G$DYD5b!ss)CsMd=)u=foy)D!v`pV$FBRM z!*YSk{5V^_5lF6i%#VR0)p1U4kKiF~=Y|Db5))Nhjp!st_-EY>2EtX;jB*Kh zg4*o$W>(F?puWjlc(5f8vY!S2iGnrE^&-<{;3ux9{Lgpj3HO|MMecT zg7vXq__CNV6dV|Ph4rK#eRb5s#lh=~iJa#xS75Y)v6FfK?T8GZ3MaEYJsF9^OSF=3&T;#C@}w@iK^NKW*Kke3N}MA=nwH=iSqa0d53h^`TNl09Ks`N5TcWT} zyoJ+>Affm$)uU%>w_reImf!9e_-#M-AS1Yl9|*3p`7vNDT(V!Tq#?loH#qoMUjV0m zALnB>j=VfsbX3aT)mdf8GA|Zigud4`>gaDGeor zjmdvt=O348j@@MQ4K_0kcclj*^7+WSud5N1NmJf#X1*>|y||PI^K2l?Pvy2l z&kyTN;HH8DsjcOG-=C(V(V?Iwf%7Ctr~>K2Pgxpj%b8{5BF4;GLk#2%jSx&BB?zF7 zsvhTL3L|qm3HsI!$j77T_dd&``hix(==`?@i_;1?Jth)XL+{5bh12!!)$FI)u*WhB z1xFB|{jWgTAbDANCfM?FV1p@XZCqpi`LBtiG;!Ui`BMf4^+qEftPh*v-q*oRdIez1E9kvcI2IMA-|EVXA5W728dEo1KlR#jly zZ&hTmS$|3=PUAfnq|Qblx`T4XtmRc00K0?qvyuk=tJUf?$PB&T1`>N*sz_gGzL|71 znE&fzLhMuToE}R#uaDs{g8RHC)C#%iMHJIpi&Rs%+$aoCV1yS|(+T)u;n15RFpsT> zn*~4IY2_znEHw1SEQ1U1H9It$8YQ_$I%Vy!Hl@-uwr>M_p<~6cIS**W{`)MB&M+t>N8(vI^2w~ zC;Zr(4j_G|CBmUaRV}GGEtDlxgyb>zt^fo$=}h4{exDlu@xnI%bbm7g^?t{>n(BZG zXwYb376NR`Nw-*3bR!pg4)YRxipPa67`J@fZQ>?kI6|_4Td>}DriL8wr(%f4R~vj} zj%_>5c&gyq8Sd7UT}4H3*+nR1;zAC^fL6sC{@`A$DB^&)*cTZ z037;J^b{ZgyXu0GW)?ETZfPf<=>lPK?IOSRero(vw2|5Ris6`yPo`DC*oKixGxKQc zmu^~o)z>iBpM^s@8F$Z=E5^l~VHxjxgm@@ezV4~{v`ye@Bn%w=Cl-K&q%X5w>i$(X zO5M*%ZPeRE`sPujIrK4JA!rggB^h(O^1ev;z2@)}BL=OGUy@pvC^%?P>Q_iTG%e9adIAJb{Qe_?!p^1tzcxRjfP8svG zJ^PjcJqi$x5t@5!2`g{^K}1QY_2tDsS*u1-q#T?9%W2gBG=T6xf`Q9YfrJt-@Otgn zH44Yd6I_PQ_C7(y#3}0oN?HfpD-I>4Oms%_HwaHaNspUfvZ@);y(eKbW;N}d&>dy1 z*C{et^X}KD)+v(0v^>*mi*|QcarQb}r{g9U%bpG)Ui~Jvst~(y;|Bt^vpS$Cnz0W!)gv?4I>yRWF zl_G>_@J*4u9ZJY*$;c>`CX$M*LmA145+%;wo9w&ayWfBJ@NoBeeO~X^`!$}grTO6g z)P0&BD|*EOjcQ{Bzk4pjam1%*-&=|Gw|pTon&XEzzOY^}sqOfslko6jyK`koKQT+A z+(-fg84QXMO?&a7ae1f>Uf{S0nt#G6o=>o*m6&$9y_JqM$|6b?C%SUw_TGbw6v4+A z|J7ZuQR_nqfLd`N4lKJNQP@6NDuHwa!-CyS);__uL?HV44v&R*y@{lohek;cZOGC? z9FYd)xIFat^!tN^H(4ydx1B`Gedoq9eu(;3?0hWI&)h|kt6x)K;~z?#Qn&s`7zJ33 zd6ofaiAK@uBzH&9Qh+4J%&CSQ*?RsWv3vj3y#qsq z+zZjH;|qJ{&FJ&8>VXM5lY+1ENnfs=_+BmIHJ|oUsPXrq_nA|~*etsX&*ALwt%BAc za*=-QcNYEYUEzbl7pEBl54Dvc!47C+5tpe|PgBBCR@2;yBBN?QK0uWkU#!jmR^upc z1LyEv1`2ndz|E?EkI^I$-g=@35cxOQ>ugP^axdJ4mBb2MkWgo#2; zopD&ScQMFtz`O{0ATYu-6(ii>83T^H;C;vJ5v48O$I$qUV=&iW_A|l^7f^pB*#Q6Rdd*1}xs8@)g&53fqb>TCNIn(|v~DOvrx+W=rdfP`hq3vYwzRk`eL!On=0HD8Cz5G^8yA?YZ6S_1Obf%A39%1u%d;L9&)mjBJ;~bSc)Uu zJSdRRu+0L6_ioFtVp7WcR*v2&yb%!r_T$EIweP@a{~N5;05{wnOKY_kusZ7pmx;s8 zG*LH`SYeAIC=UI&I2hH%uHcYU-e{VsXl=ppwPi*VMMxY4cAAdzJpp!rBplapSi zaJRljXc>bld0y2|KkVIZ{zZxM@ys1^g>MTA^Y;OYK+y8l%>1lq&m`u%^WBmPO!jYz zF6*3%G^2505Vy~*s8X!Gh3z;+RUZJJcGo1=Sn{76V({Bq{*Sk4^qR6vc-@E7a4&fe z;>3>t_C9wEo4TxMPxFfs)30n_PUbaPLb@KrmrmVkIS)^Lhck_hW-_!dNc>dfOrx@_ zaZ6jc7*XNfX{t!*QC8iQjlx#8dF-R42p;&1`M^c^?$KwL!Y}1d;4Sq-@2|956;^wF z5sUyl^Vb7ZG2#)unB@^@9mzRWd#G_7v3_s^061#)EiMy&|CeqWYoLi2(kD_UUb;*4 zbY6f~rvqQf%|mzog!6TO!~xJ1*$Ju|7(BHP6&ktWU{blzw{>O70Sq+fVUo#vW z2Y-fQubmGA33m1meJxKubtF|EV1E5s!}&aX$y(W|eEKb;c2Hmomy0^kqXfZ(BktK8 z3MiC_Q0=JqsJP01kXyMyVnP}JI3><9t=)^B!m?Mn58We?O%e1jWMHML9FTdfvh%eC?FR%TMYAuKJn0HYk2-INpKU+q_N|RYN%Qnt zEec8e!Q=!*V;-ND&Ru%dA2yb}J;c&mX{@eK{x1Tg0=bgY?6mSc;L5;5!m27Xs2_9J zi=nEeEyN(L)okzsLh)8E1)&a*E~4f!iFKBHd(Fyl=R4evd-^zA@y=bGY5f5!js+g0t<>7q_TY$ z&VP0(`R@M;RrQzh-hc{mm6gVUb@&f)V=jRd6A~bE*C*2Kc0+RLfl)W56yZ<2!p%=s zfjJ;l6_iIT-J_`Pz9)TulkBfjV#fFUTeOXjSU|l<)2A*hn35VW!?MnkskaP&Up1Th ztD2YmYTuPe?AW_#4=SXD!tGfIolf}D;FLqk-keKjB88<3!j5%Y7v|~vFOJ;K*ScUC zu@6LuVaohi4HZpmh@}3$QJsU9D9V?Ba$r8{s*eH$kD8D z0G`QD1w;3pCaobP*aZLj2wO@5ytJDHJ<}xtTJ#}C@E&)eCF^=5WBeCu%)PyHJ@4uo zxqvenm1$^@TPI)O2012NIE93gY}SFLUs(LS)*R2_iVZRi&<*|r)E1KXOxyQw857GV zey7!MvFhEsJ(JUa6Y2|2y$|4~eTFhQSp*7Cy>tUs?GRSIf6*OsS2xHb#UvR8^YVXM z=ac9l`*f#(e72ywgoNo^QS1zl`g3VXqKjR9r#9CW89@Cps_l3kdp05kc=-Q0zFY7^ zwU$(o@hXP84QELGc?+$p?Ksir{oOZ9Nz#(R`>OO=MGw~QEo>L55h=}@Fvfr)-0CF< zs)J-N`1BG!K7By8{_~YlsG6Bgh9S_0p#2d%%Et>eHC8bE^pL3AAn(M?msjquauZKK zjALP&CY^a<3aE;F!^*VPHGG^K`+U&3=EKJ}PgVr(-j!uDu&SdLy{@h1HhAd=6?^CN z?|%|xwZs9aMhBiQ6`r%0b9>quP+0eY|7_xkcy*WS&UfoV z-4VE~IllVu+kg3Kepvb;HQ=c5me1`G$LXvTtvj|-b~e{lmXd; z07oe`DLExpOwqRCqwcM!?WZNwc-G3F}qJLXng_Yo8Qv0@Vw;sg6P3T#t807(f+DP9d+cl}X) zLbz##g`t1!Wp-@0WP7xrojf-Ny$7Ku0BlwDE1&_s`DwK63a7tbU=8ys&&@Voay+|- zS|4?!|Cd03T)z}YL5cun89qZ+b}yiPml{3L^&qzQ&48nJ;Xupv4zEY0z$oaB7=soK0CxCZ z5{Ip;>P~3ANOmF#_NwrPwFjxQQZKQCY9JF1UA+=M%ICQhv&;rU%>nG0v8B!CBfJY+ zF=1|cER|aB+uOebQZ$3fbEdR_Eqq)W->Gs75rtptwgPANslP7|b$?G1W>w2gGs8LK zN5Y#SZM3nsNjQid5XwqvQFA-dqG8bPS|A9h6wlIq7^-1%n{Q7F3KH1Z|L9|Z2WY7R zH-L(x!W}+&`{)<@0`Ko;7d=^y_06*Ei>&#$Cs?dwq1K@YYzTTcax ztD(B~><|5fG*ak6hw#H)pXC7G{Fj1%4!@3u77>p7ADC!~*t=I^Q7oXsLyjbQY}J_P zKxYdLUKVr(nnBYFDQBkwAUkmDAv#nP?0FSF{7_O?5`jC;J!nz<$xtVV3#_hSwkJSxS{f%GrJ{@1LNyBSV>1mve#>gZd0h; zkux5T&CGJw#M>XYZkt&wybm(_(saR#Gn_GXgBW|QCTKZ5)T@dMNIF{!8$Nz^y1zfG z^T(KJ_Q(y&Qj%Dg^NiJgy;g*SI@kSAyvWqU_ZjbN3v^Cyse#@?hs!t+h%y`(gM$$w zBMe*h6B^RLPhrk{^)L!vRYVR$rk(Ki!Oq_#BiRah0`gCyQ`_fHwmxGy;)pfxO0OP1 zk{0aS$Uk^I`C4I{>H>#6(my0Ex2^$I%1N}VlrHilwe8m1Hmt`ARn^@hM> zYr1gt7Hb0vympGv%CY5mtloOOfSWXn^;WAx6$SIUa#xAZx=!we7m~ZBr4_LtTi-`~NQ zBMuzGs*p_I5)VG7Ehak+edXuzk2+-bWMZ?~`)smhMUzmAqDt~tYBF=hh-28pps$27 zBo|joC`$C(xSH#eO7gKiy?S9}dZat1+5?ajXCUfr~TJrSPs&=u#0s-74yD~-U044Nt$t}w)Lut2+GC}4e% zcra%!Hud<8u%7|)IR^gof7rRzc#!u=a9yT}|FhaIJ+eA+V`xYzDTI`ePMa! z{3NB`1GeUu9d53SkMG(zrFsORAIM}$84^O4-!NCC;0nJe8Q7CrtpI3Bs{O%`*yVXc zwK1rXDfQtjwh~?xkZqdBf$c-*#pk@AzA;>>j%xi9^0QMmk9(){WHl)hxvJT?$(Pn3 zXPN_V+JnLCR<}dXw_#ogi=2FSj=gekA!{&2wW~%1!d~M40=@Mb%`y=o(EGjN46idY zA2vNNT!M!aw)PpYl+vFX0ZN2rr}#A(eTV7UV6LaD0IY0|0_cs$A5Gis9d zo$~vJVe_Xg2A|-9xn-hpc9E(dTh7*uPS=zT(mW(RyddnAT=qoMn7zv6ML_$m;<1xB zo6+e#zMV|?FfjkUCJY0J<%HiM*^?8o4t=`S8?MJ{gg?xI2XMW_Qb@&F0CyDO$3wR2 zU26(NTT^AIO8A+*glPslXfKz}K`2Q& zq8`k*(v<{LK0 zd|k*os8pKYcl@l4j(J7UNZf)jh932#^uVXRn8Pv6d!!*vfsW9q&x~EPfA{0==kl!) z^AP&VzM#a+9Dgj)N?%8}9`C%a2V&0OQM3nCq0u!l3Jw%6Gnm})!mq1#d^^-tKz?sA1;^N5)`3V(>JPPbts~`nb6>aK1)2j*BB)WJthm zuC85cQS^)*X4v>))0ML7yLTET_i{ZQ$Io9@OeV%&M^tHETX-nsS>d;8d-qRNDoj>~ zZN&6=l%4S?jZ7X{nGrsNc~`2VQIAyvWRt0{XHI_dL=PI|ByRt4l!WlsKoP49DHzK2 zv$g|!XiTOhQv{SK7p#ZcAb`@qZG0WVKBa~E2p9&jbcslI()yx!>|UATn5D*A(!m*? zlB1K~Sy`sSA~tXrn;{BQP|E62)xa88O0~@Y?Xt^%Q&_Ym{jM+KrRR*%qi^s<0_yrO z1gJX2-YI_G_*|&Him|A_aPoWNS#tcn^y*hAjkTkwFlT~2Wr0ZLST7I)U_8VVv%Sn- z6#NtA59pkV#8o>6Oi?r!Pky)-o5HJEVd;p_hv5GICk_gZf$83o*#iF99bjT zNb&01CX_1++`Tqjaw|OKL4Ejld25(5emL@4XzmpP3g__uFmMY67{~s&x~Kc$LVf?T zBtTkIBJ4{M=dJIe?L%-(hSjrs(#n9c>I&0dKbX<%_Xc{K;VBk-W}q}%)R{G0B##Au zQoH!Z60uHHek#N5yWEEA=^s_|G3L|iJSAHjPWrtLS8a&%95fS?%#>c&tUbJ%oST=+ zS)MLGW0zbA`Z5)HY3;jWYPl>2?OT84zk4{3PtUxukChSLC7H%+y>^;Kvv@;l{vHB4 z<^tMTnQEI5l@v&tI1m4KPXta-7m8Xh(n#Q`Q3Z}ow_)@p9pZIUIWE#aoVDccQy*vf zdSZ2jweM3q0BkC_S;Bmm;~ux&QI>W7GWSjUXTt_clMAJ*1ROeofGe3?SsgpI3-um; zez}8bb<=j&>q!&vEr66s2RwHJE35jbuW$arE|-e{?ClSpF#%U9*nqmH&0#1RI^MxIfpsKYtze(Vf@2T z9?v}M1>|YB19IN6S#g!BASpgA-UsL$`udSwB;oIRS!r zbH3oS2g)3H9(>U#baW+i%wCFh^{TqX1hn7@%ym|I%*EO%(+c3dWkuoIhDmm^t3I|p zDqs`dUguGg;QMNelc2rxB})C_ip+uR2^76;YO?>PYJBAWq}WtKmbWux8_1q=LVXHq zFC;zKznjID>oAyS8&Vf;Ct^Y4Wk)^kUS?&PSC8*P*MCBud)(N|&W@SspIcSfDyhy1 zI-k;YzAXGg{e9D{UF*NFB~N%bS9(9O(>tRBC=!iZo6wr!Qp058sH`8B*}zt|Fvu0Q zDB7xr-9B~-sM;$4m4a|M8wNRE#-e^!{P`o0Ah|c=oUgOhx$5zEvY#ygm|9VS-s3Kr z*C#Bc#ScrBd<;W(HvwlRwV7#ZZa@VGNaW3$nDKB#-=8nM$~E@o{wpdYt_>#(ZmgXu z-J0a$p(cO!>=(pP*MCZbun{Qg$JMo&_nNM=Uk)RHuJL}zfih>xbx9GY_b*VY zXE^YS6CZtD3s04TPP1(xx3kt|!yV!6r6-=ck}XuVBD+s|V`z++Jn!TMqL>L74d*vj40>kAV$;?A=eG60pVB(_eL*!}Lq5jMsjQ_w?>66RgM#%Me*7b{lS z_Ct7%9#4(52X%S+zg_(AJ|urwvOdm#rU}qkJ?H^5a*CLQ#OBSj!aTsMQ9kcz&q952 z)<+ge+t$&P`V-ZYe$*<(MvP6)AT$du_plye>;P9qVsSR6CBD>$(jB>~#{!L-r?ssb zQ4c0s8sDJL9Lu7x2T6j(cKZ3ZJ|mhroaU2pW2)y>|C)unU30UzEH|;$-xg4M;GLQm zQsr|p&el28MM*lh_u`l2zL^MJreNEknEP&gRaRvK7Rp?Ac^doUj^JU2(UAXZNL~L(^Hku^8u53qoXP!0oHVFwYcq#mTYxL~1)bmIG ziDcmL{PPdm_bZ%>Eq=B%Gj0~^9}u>)vDuZ$6f<1t%-rIbztNGdYaWOJ&vNu}*1oOP zI0(XzNYd}?hvF#RZ-wbjCpGEA%^1-AArf2xq#$^?#xXs?2Ga3n^j{pJXXd&7MbEU4 zTx};0f5M2~RN&{QXF%T-r7}Y>fGqkt-Nb`2`&ZNYmD6TSY|AGHg|4|ky4=V<9nBxS z*?EcKJ5)tE3)J1Lfb{$kQRY$Zt^B~7yEthHFZ1H`@>pY(9v zsvYe>Vv72SS`W^{S0pfyBN_7`D(HK3;Z+AmCO$|tgLDLUHr z%J1f`cMk#==OUPtaL4gNlfWAQ$VJrbw2HonZ5}egjU|5olpuXYKyj>pTx)Eh257jg z+w5B?AWcA}{lrGSqa|5UDf0CF*h3#TRZrQk*WdhfR+bV~-HPEji211+`OV>$N4x^R ztJl$e_hWCmo~YEu{$9*@Pup2lIc-@F4n3QeY;$G4h0 zP6ZV9VGhYwLLNjF*aa^Age`6puz;f~={|vF-H{y}1=%JwFl2M(CiM(*lpdEGo|-v$ zH-UCff$UVMQv}Zqtgc`<{+%3~sLzqB0J;axp;6UI_O9bl3jf=LmhpoBE6t^}pTc9w z7ONlL9?kx;7+W>*y!3Nr^$=w^>uoEHUvo72@Z zxwWNG`BJM&jUz>2B8$sFe`+_NUTeTogRqS8N5s;Tn8ixB{~XS89ZVNr50hqvnjFx} zvIUDC?3e2K{^l_YY_$gSKxlT#JxUG43U0PUZ>DqqQ6yQ989cR#F%PBxbqL_u4(ll! zXPCYZ^lxJr*eDq-Sxwvr!Ct1%JWhmW`D!WvdQq=|$aftob)cE=a^n>LE>Qagq4v!f zU5`(KF_I1oHTDda(Fh4jG~6(o+-cFHG%qODmBzSC;{F}K^o=k{j!V>eUckF$r{2IK(dOeTO(h)?*RQhx* z=Dx|Jxc#O~zM#P&ckf10Y70`>$NB1~V&p(c(Z0;v@?P#o7;4WxXo%Goh{N2|wX#I% zIYUc8?@y4n41Tn*=E$|Wy|(|k$-hI{+1pPf?xWaNPp5GJKVt_Y!`LAN%Zp=`I?M9u%2ZwbE~9uppRmVMxA zn!@B&-VBy4(%CjVo}hi?depOF={B6lh+mvbs2L<9X1YwrC`%nnh zDM_Qip#aa>=c7*+IVSG0cG~DBfduO{fkiSt~o70Yw#4O zwrf4$J_NeIFG$KeZ=O0%edGWfxZI*YmkI#7@;p0mOgF^G9%mJO=h^FqavUVZ?Oe&; zmizKGL{Hst+B$lZz0Hq63$W`}`gsh`dL>{34Sc!txt`~X`{OSzDSzyYFqoU#)Dx9P z0I7H4%_XCE3py)Hp-WlE!g%yzqC$&#oMR&Nn1%_Uc@weH8b&zU7sQbd3_mPIbJz(1 zX%_DWIPXj7<3R7BQ&=@N(3dud&~}>S`S)}N4iX>xYZh+`RFi;nKzV-Z;wEkHJm#y9 zT>7O4UgXk4sCr;iPWG8YpENDUOrNoW*e`VsAz!pc{6DwuvmC6^Z^W_Id)?N%FU`6> zSIsT5uyiR0i8zQlvYKy5kap0v)}m2AG86W#+oZq>XBC~%em#`Tyuy*_`G|(FG^YWt z0smqkj{$w9x3QWw$oitNc^dk&iXgh8_;&?>i(cb8p;PoukUZyby(L3JS)7)IO_PgP zlvItx1YVo8lG)pRwA=I2?zT{U-5axaqF;t=-W{&*kJxPvD()e=gTcpYAd zT6TcFN%7MITX}c&|J$ki+N(A!ut1a+aOIxI;5m8Q55=-W8rRSCuB|*i==-E|)vPAZ zn|VJ356U)J^FurZ5;cBmO>fn$q_o!k;m^nYjo87n))L|`P4knaJ#*{B0Ou&irWBgg zDua-l;GNdLAJxE`3%uPC7RIw$HXfk^#bM>5X4b&wf`NavFOyGuwRtLvctc7Vlia1gqR+i&PY&bpQZ&BxOi} zrj6<~8FHmPIFJ#@y1zgZqo9iPIOQ_WHJ00?%VrxkXuqcFVd{= zglEt93yp#9t6%BoTq{DZodd&TV%xtiY5lbP@pI18KjLi3aL6jPGY1)lL;6BVp4jdx zE$YGzWk9|zzM06be>6y(f(54;Zt}U4l2m-!8E}x4UW+aDKd8Qt{4s418@sT}t>aF= z{uj6W>YthCLEqOUrTpuUEzaI&!~N7=50Xk=p0`fGd+r$jZ>Tex_G52lkn+P@W;5?9 z)~<~oY_wT5SZNyaUcIQXwymy=e>OHhWy)ZnVn8jT8?A?z7xh-3?^@6RWJgfnAA`m~ zpYY>1DxA7WdcFf87xIfv6x0g{(T1n4?YxpyeJw%w$~Ps;*cN1cW?rW`Prs?Pe$PWn z!PdE&H&4EOt_-x<^tcm)INZ@K@U0WdPhMKu^X~iLKv;IDAWhE1Hn69s>4qjiKS@{L zPI96FpeRab2lAy1AzJBt^HnS?(V%#4^AMD5ePJknThJD<)(fiT%KeT>Tps)^!0P-9 zr{3YjIQA)Uk94L2;_0GaH^CnlNI7xT?5ML$-eqo|_A=*(P1Elm$vKh^U_jCyXg&Y@ z-6Y@Y>enA$y&S%lt~t}{a4NoW^P#@7cG!v%4y*Jnf>Fu9vjFH{zFRZ{ZZ%isOi_?l zeMo`6r-}vSDuG2c9Q2q^{&V*5rF${$%89Z`2BK$D`ghK^9q{6f(s-Lw7Ph0a=h!do z?WOHhpI;N&>idNQj}0)7bAJh$$f3Mn>^k`}F{fWvGJg)c{!qu=uHAAruX+v60lQkS zmqO{UNn{Yl@Z(E$7h|cOduXk!FzNJ!*L#Zu&LizDk7!hbEAJo}1_mH34ErAAT%gk5 zxA?=9WGX-+PUI1#`72sp7{Lj-1g6}IJG~HKiBPFsu9^wQ_kgMC%Eq}Lx#LYIX%IxrB{z$Xw@IbP*-G}AMs~cMXX@|b1 z3^(TNW=28iFU~a-9(|Qn-2a@z+~jkUxQD-UE9qw)zSXU{71l4TAU#F zFw3TEY0iNA344qD>*z^CBPYL4?N*N^KK>mzS#$LllXWVQB&l#|mifJ}VqJ?~u#|L!@~1YM7!%0_&y0<7{-Y+VwzD&4-`43xaT4!37Ft$Sz+#!8 zvPkRK{s6l?Xav|i^moDnsYV|&q|TK)6qFRDGtSc-G%nWC(7s25*<@!npTbO z-^sadRF?D4N&DQ*=kF{PR&u&k<#UHl$diK_OrCvb_LecZQ$7q=-m&PYzabH^e~d3k zOb@*!DY3YbAE7g&F^yq~$_WU+0R!oEjfZ})QA9?~JCH6{N3VL= z0P~qv^u7o6gKaEfH|(nd99?gk^)mj-{il7TTJ!p1=gvi^{)xH5OjJ!Ye1DDxCju_! zgtNxgJO{avBz;=B6Rc~4=IxGJB*8{I2LZU0F(Vodcqx$FA90lO9$5S{UVD2dEg^4* zndg?-C$H7fB%OzM@QcE>lKq`A2|eGwAe#)=@b3@KDf0x)ikC=pZ-wkDcjb04RNO3G z%%iM+%P$~QMA&TSJgEx)f`B1)$I^?tfs$U1(F?8*fLOCOC?r0G1(YOK{!%acfTbdU z;vQiEj$zd}0fRV5RDZr}@t&K&F~ZR)vf1k`xtm3k$5Xxc(YJM0=heHt6E8&-=sO&L z;I^vEQk(xs(PgEuW^R8^h1%H@q5(hG+8tE?i0R+dHq8Hh8zz(3)rlmZTyD-f0vRdCCLE;YWm0YyM*0vr6IetWQ^x zlq@xw=br0VKh*lHNjtW$ZSMo2+gVwAIOT<_Lz#TDZ>*@3-ST;LFpuBwFu`WQd6wQh zr1LUac~QU;osLC zkHMF#{}dobsACYya@4eaT+;KH4BO$?iZaZV@Ns|6`30RSXj5As7(^b_Bicozk9fUW z%1_XIvBT)Tuv60c2Vu9eH0CIR=Bf(cY@j&G-0?gjyjpqp4B#~>H*^$61Mo4A96d{3IZ*+2J3)5{ghH7;4Z zy=KAQbiqV~u;clmyF0Tg=_N_;xU_5f&Iz+@*KBNO@y$GcIlp9H#Wd;Lx|S?3zg&H) ztx7RRp9kOf)p78QkReEGvtNtP_>Rv-%my}@62J-z+HIl{L6tKQhzxpy1Y+Rx5uzvZ zV35!9I~Y47y)C$8`LyDsnye-Gv#67`M<%oO$`i^jqe7#L{?+6lr#rK0k#1+!5c{pW z(<@5K_RH~-j{@#(U@eV!*1a$}5r3;6c-}`{Dw(ZPK=WyeD28rFR1VduV4)@euvkQN z?nZ5)!9ZhoXu`fU6mw9FEBK|b`CXv#pTVijQs%)uOO&IwZ2G-5+Z@9C&+g0I^N@aa z_pY9s1r1MZ{)XK#x;TIgZJgn{64q#Ew<@`@&}8}WN>sTSyohPj%(@^ydv;$dufzcf z6fF9(Zy%W!;3X^nx@XKujga(24iCa$)pMLW zEb#a07+vSm>a73CtyMjcIWF1Ak8BM67Hl-PYGLiegCZt(yWt-=_s3Ag;Wp(3Jg;1*5#p!%-~;VE|9~Ih&$RhY^{ekf%MA(rKOeWvRuV#g?5LRE$7RXLcw5Z9 zM$M_cr~3-;EZrUzg`=RS33U-FpjeT6zWOc|xv96t0zQecQc_v)picqlO-ONQvhNk0 zu)Ha4VQ`=@_g4I^@UDm6z7OjWoey&**Pgs}Z;rfoLE?zbV`0rjOxx{P?c7L&2mIz06; z%#p_`+QG;JLCJg=RoNrHbhMc{wI;m3Z zV_qrLr?SYj4j#LqolDtVML*c7l3>e2pSC0qeD2;f$_uH+c$^!y* z_7&&6TBNjIy2#x^cQviQdXvaz=V2F-=(VanSEDsnGx zFKiDQUl5|BBzG6^$&Cq6!V(P+(3UzQkdVvlh#{SJA(nE8ng_-`x^)dH-5u>=v$~f{5Dsk}nwe*sCA-+gUNT$RA z5GFqJBgrao113t=|ElIp83`5!wzMH`ERCJv2A_V)Kw6e$ijREcfIZ#soAcud&+5?B zCAOvuCyvYWL=Z1$F;D*3{Z^xG_Ell??AI|Bh6nQDx6a?GEB#G9hfJ9=$2|2aN7)o= z+en|z_K&~;57Ystl`KbI`dWw~Q3c>!NnQh6Z@^(iI3AcdZgjl{W{qVi{uq^c76u*# zO@fX7C)8uqsMb5LL$jz~VYcN)gLXmecFR*iF0e5dNyH)wAT@TZ6&srVvoAvett6c&-Q1}Wd#Yuu_@lbf5#qxB;=W3mdvuE=r!IATH7~DMBE%C&+kMCHdIGyh8+qU2K1r zdFBD07h|t9Q_su&73XGh?TnV#Egmo%qz3zU7`uc+T3=pzzZOhuYs&mhHw`+TtHel) z5v?Wg(*HIh+0oq!>{M!%5>hnuTN>0FM~W+N6w!;{Lm4~?TTlS6RV)ODr36Y-xfqI~ zM#RVq?$o~R8#-raj>~X&Zm*H-4)4!=KMnXVPTqYQ^LBCcO*y07EbI5Cpb*<;|G07X zy8lG|Py4X#n{BZgSsa^^^@yR04gi1)bN)?N! z^`NT&Y_iGe=q&#aBA~r>W0?x7l~_c zC6}h&$zk#9wZDa{*TV4NBd^;tfIAgWy;PkD;vWEP8k|RKRpx}y_Rx1@q5z#u&vXa+ z_?w_;(7=BjXMu4hv=H8KYrt@sgT?cdePYemB&^*=zx}r{`m_^WRiE zhbsX~i+4zRvHKn}wfcHvo-RLU8EH;jT&mbYYDIjVg6!5q9S~3y{wAg4hIzl3^;+dI zV9Ez5PRbir0}b08@GMW$(RqYqx&!|h7Oj41oZ5{A9pf>fmf`vnl=Z1oHS;Zlhyk2WpB^lZU_r-V>7edeO{q7fA?SWj7jso{VP95*PB)S2D+Qd7B8qr z6!pf|-xsS2&;M`|YblG*d2n+(LkLeF4+CmWWih|qJ(_T2@{LCx8IRUj zRYl-+)IiDcP%A+3i_wbpuA{1{6IAFe8d5f?Raf6ph226@_uNcN$|408p-*M8OV zdz^_oz4mB`h!+}IOpsYCR&=KBU;f>Yk*~VFS{SypXe;-Y~Ax=bQa2yP2nn>>z{N`bSJ zE!XshxOQhZthUGe5a>J-dHwIMzYBt&aqHMKYx*74w{0~){5+_;mG2wV>~O1VDJ=ZK zgQ|xPgOkqbeHIn<#+`q2XU0#)=;TJO@F$WHffy4QQH$ zfR-INi+Dn%06L1e7?HyI0+hXmpkF}$rF{*1>ezy=vQm~gJ8n!O<`!3&4Tyw{>3m=pm|NP#TNbD%w3_dB4eMpK!f1ySD&TM2V$EhJ!=2Ja}Gz1&-;Zfsq{e4cxPw(Zq9 z-njiLEZ z0Cu!%iyGr;DFxKNWsx(rKHML!|M0NuF=+8_xT1Uiy;4T%gQC?ZmZ|!Cy=wZVo=q)X zsDGKgecaBHYkBBNCo5$wt=FJz^X}Hm6^uOiPP1m)qJCY-XyEO z;yyPQA>fGxLuggfq=GQju(;Q?X6gq*t_EpL77`Gnn1*Wr>L3Cx=$C`rcsg63CW`I- zk4xw5z8D@v;hoe3+gN9_{ctHqn5XGEF(vI|4n%z4CKEn3Nc{z`I=xP z&?0aH?L{77h17pT*{R&{@hlzQto=T5GS1|81u0#U5%s%o>#%#B4$IatK4d$|0A%Nv}DWo1smN!Op3jv_e%9BYBF9#qozv%t=u_ zy%LhC^1Z7D*sax5AVm%~^fucgohiz}b?Hq9&qprmeT=O_RS}m8U-`=s8TB z_!8D=iH`i0^mJ08;Hj(CgISC|4%lvc1yRNEt*ZdE>FVd}H}nO;-Ao(^<0+w$VbLi% zt_M(+KH?70>qhuqV8UCMOPr=iBp{U9^aa%4vB0dZ_%nUP01QMCi(C z=9HKcmy`6sa>wY2G3{;ZkDu?)>sBTlHq!%V8P?&K$O<;?dTpdGRCA9$wT(5!`X``} zRTB}fbQmze?IA)A&pu*PV894iNb6FdV;9xaatICw<7C|)WF!Ra<~mUfZD6foagVzE zv-XE#3aTf%PMwVC>MhKQi9NWG<8iLqA|-n}y+p6CQL^v}{ltQS)N(Y#t5;M2*S$>( zyeJ=nZ->wSciB3{Y)LoM~j3GCoan<+AQuGXM^E;+6cSjd|d*$^Rbz z_!4nEtx}cUzqFIB!llw{;m>WuuIZ8@jBEdFWZ2Z4WwY1H+?KMjW@UlF;nrF1KqAY{ zsjtb~kty6*S)0WrA1)y^Tcf3|0LOpUmwG4%R?mwID-oFlDjBX%G%v};-4xG6fdNR# zLx4{o5yhtRqQ%zMb{tZ`c!Kc8Zt9|hbeH|E7>%{7+n`Q?|NVvhdlEXjZf|$p-xaW3 zc>T6-zcpsZQm=|geaH*TtJycCD4srKH5Lw@bqU8jQ57cFquEuzBE#uwq9g3KMxOsd z4@>FNg^?jk97O;&kYbg`>oUci;_fw@rQ0vX!o8)GM4ww zI{$g;5;QwfBGviU{kg>9uY*~_{B|*~Z^U`VtT`v@$VJ??3CtQ!ovYmFe{yn*7K(_f zRP$Xc$2B)!G(G}E@omh8c@!vVXuEAQYytMyJ&aNwi0?(6w=PiFg*d$NAU76_Mgu%m zA4)$~-Auh>qtJv`I+tjG*i51RrrESgq(di$!b;GuSf4Mn=elfJvMqYPl zMl4*gn8M@eKvcz2S!v^YdK9Qp2_dh5?IDO2Q8k_jm6Bws#VED80juJLkVITK)QuI- zm7DS#K$p~*rtw|>O=p(!@k8>3cSaW1u9%)X@bD-3?o-*^Prs*4f=b+^wNChk=hvRT)A8xt)0+@9qaHdS!fOf+qWpQ(mQU-=?zeN$6 z^ROzQk_>hTk=XdKkDnU+y3@4-&*OH=Z=Q2?Z_+Krlc74vbM6o-VZpUL5wutSo&H#n zp*?BY;1w6mmh)ORTY2A{UPn*RWtZwj>HYcEg|(}%+uJ7_dfpwvU|)%KUtp&(z8Jb# z3sVIy{N?o;h6*0~z-iSic2*C)6#%7zrh)9LS~K7fFpe(CFKyu7;oSXJy4<``a`E|J z_qTU+M#2xB*m=%;_xTs}3muz#&7wNmc5|;@j0onw>Z68xbG|%_H8op&xc+qKwYY%Tw3KNlf^z?uZsXF{D7hnEkty<0P)iHL=;bC zj7y>FM!;!>q>DzoSQ~ZlSLL)T-{z~>P3WytFnU_xUW76E+~u+$Xs5dGqh4F%o4%)4 zpO8tn-+z+1eTbAUT-=jaJ(jP1K7$9%{W)tv0NvmABp z;~c*3NCBmNQOBH5>C^t{Jv_C)0pz~IgJ7A5wbz^1O$b1qDo$_!qfq7u9Hx{iyA9$F ztcN1B`)$ES3EXyD)-(*!!mQET+}=NTyX4#S_&(eAbF%_TT_aQI1fSrmw32iVkFzz$ z*bk>*SgwSBO4i@bk6*atP$TEJ!E&-*$##pz255Etk@aV*q3`tvFO+ZzNjXT3cv#EA z<*_9KD5bk7lAP2)Bn{{(@DbGi5%Fv7EQi2lp>ttVAs_l=Pg(YX5SrrW|Gc>Kq2;xW zLE~EOxb3aa`z?i|fAVL;95fSex$6zRJ`=;0YR=89UdQR@F)wf$uWMTby&|YxkX-vA zG)Dx^tKx?%eglPRpIGWuEO>+m#XZL#8jkE?2h{t#K)(-f$ieX(?YKghj@_-6@FLQY zvEI8o+$WpP_)Z-tIs5$5uj5w!{C;y^eY$$SuYCI8(v}aj?DLZck=DYGB=ZN_qUZ#4Ny66vOYel zP+dMhd60KF+2#5azeu*ydKaeaScQf+w=Q2cGxv$rcBQ%TaUNCfmOxhwAk7i>T5MlM z+?=cSc@50jBUa~-l*DTUG23Z&D1=~W4l4vz&-y>cADp)cT~YNcH`?^{tM$ zg0$b#gGrKRcA@+$JUdD$hmBjC75R9Fd-Xi~4;XUxEudAQCOcP)X4hFYiO2z5QtI$UTL|TZTafs459a;%dd~uKb~B)tQxXhpDcEKugjAZ@-t1* zV<<4bWJn@SQ9D*oI>I4sB7CS;f{)5#vtHkAfa%$lm3lUZAy8(}1xx{fBBcFw5REz^ za^6Fe8E}3@%8cjmcbX&-nq?1!5b1kPp{|S-sN3!-mq~aFUP3a2gtNVuz#dA z#_>Sv-43@K^9M`9z|`*{92NjDkX(J5!G>07^+7--mSA@XJOgwlZcN1y-p(@#VhH{i zX1lREf7*k5IGSI`{^e+Z8Dsx+{-)!gUU^mMVA@*S-|vT17+vwn{w*!rf<>LEX= z)zSIrK9K;^jp0(ZZ(-|O-#Qkg5aG4rsosacpHT_Dc)<<#)g()2KPJjuGd^7^{U zXFFLgZp{-(dR9f|qk(q_1;fcq=j0f&4nG5&u1j*qk5uXA#F0 zf)xv)jd=9kE$HpBzzX;mT&{|JuW?B9sgHg7=8|Yz`MdhO_b0F2wSFXFuTgd9`~HxP zOh}P#R&8##usdt>31fhot0TYfNj;PRf!Axnp?;GKoce??De18jp>$oEdt<{A$)QKNiL%R_=BZG>G!|!w~nHBxKIN$du)qr`< z3~7s!y7>N`H1D#kC!6Wm@jg$Ufq6p(riPaR%(vcSlYTI&zy4LFzpJ4m^ku?7_xS2E zxfadroGu(Ta+?XEhA?d(_7DJPI>pnNE*XJDYXr3EMXG8Kd#eG81+v(Pf$*gG6c?*X zA(nQsU|9;2l>t6X+&t!H0o#vBkLN!!KW~2(g(@6c`q4h&GF@O~l2&0nCc7eh!Pkl8 zA%fzhalE2COQgO^6}hmv(Asrya-{qBm9(?FUq9Yu@4ll}>v#rj>xot-4?W^l0Bk=6 zZh8&ZtAWp0LIR_^pprHYoC1l_SR&jD7EBdCcoSD99Z{@Uie6jpgt_k8NR|Bc?>X{X zL{-g{?A}v6YBfisn9PY7EEj3&Ipj|L)O^?&mV; zciemW_`6joK`bZrjYhLefJ}=whvzOM(1+FW>;tIxi(>(VN`}2t5&jX-*Uw>|{Xiw! zZR1ff>3p3MVJFKUU%TM2QI`1mma6;=*)74+=cCbW@7+@!p=@^l{vdM{ZvS1iwCOqJ zjs;D68pAQ&kTdBs_9Op32M%gnLsa-BAX&{AVZG_bj5qXgLsNGy0OS3j<*=a$_xAd2 z48TjGp4FkiY4Is$ru%Iqw;H9N*Dx{`Sh8Bk&#KX3uOV-kjcI;yfnc1T$$7nEZ|8;W z`I?Yb)9vQZ32s;E0Z(sgJs(&fO?mLJ^*+Z?gl@FnV7Y!k7{$zcE=83*>=e2V=f)Ak znWfmb5Qb-=B&-B1#=)eGJ`(GQWddGrz<>-M1|so|bF3;~R7zJ;3^}fmjk6=@G>?J9 zzg@;zjGgCi20AzX>~(QsRQnm%G3e1%eRXp8-g`S=4#S>5lkc)@7H$reU6Wd*b|38Y zS^pgwvu4RySU1RYS|Z(!Xt3o3h3X}!vOFzE#5q#Eh>JFT8Dc`q&16DUIXl#$db5xg z{89G>NE+h3@Jt%V_3j>hBx*!hBtI$$PxBId>1jS}?ICp0(v$^zb?t>B{YUMa5t=Kz zVRf@r?xulSE<1SbIc!IFCKb4nbTd#n6ieS*`$$c^jt zz{^=hp^<&L^j$enoPJjNQQZ*+QWsh&CeR+p`}$DXMsUCp&RCF$L1AT~+XRe?#S8=r zcCd$wsp2WA{MsV}CYj4BQUev?1<7kH8WP4-a=7K9AICs^} zAR=m_vS|oilhfWF{#{}_NiVc%?VXoa$rmxN#CvaCR?RU}6qjig2R=OMZ zEKI8`t)XGgOrWPuL5kw@0U=OY44xSwuoi`b46$;b7y%1O+X8sPZvazq0M~0rQuSj+ zJv7q)!&2cd`NdOW!8-En^u~Fjkb+yoEmhT9jQmM#b-rm+K{^%kE52TXg9GN&J3MiS zV-fw18uobu(JfDuLFo7Nw_edSIPoNE52 zXkrC-93l*l!^pt$1kwg4SQH>_o10Ro!LV^!0aW6_Pb?X3$5Wg{JC#!3<5#1(5>K1A zSTI(zl*cKK{M-y%Ue#pDNDUSR+-7D&-&L6kJeL z_O?uTG_on0_QpSAqe5qWGl&aIFf%(B5_%4R>(~ba5-cSCQZJ4U4uFTCfG3vc871CF z5e1(37l5UqJF1D*F;S7V{K2bL0GisA=6wJk@0>8FzycLMs= zF&5`Yp4DkX5v5(W#Z@$zu}2?;XoW1TK|_91&urLMyxTrwtWNhzNZwnTf?Y##-1ch9 zC$Zj?n;~}h7jx^RjsMl?Jzbt!mSBqt58J&2O%*GJqy%kXQoIaNDLU*Z-cvU`qmb&W z(cpe7WRPIZK(hpcJ@Cu4P|4#<5WPbZ!O_f?cr57ptzSj@fmzo*)0@|x%M!b5sV@&H zs8##MY_0#SiqnWaM`M`4nYLW)Gn`?$8Z$9EJh+fEep|@u{nz=|UE~uBVVp?! zP{g^a9e$E(;s|bf9vJ^b;djrN?opVqDRm?h0tU4`T$n5i-aN4fA_!TA>v|xvmT=)j z%6Gq&XVdr3S4T1qF^jh%*Dswp;x1$Se6VO#e&yiV$}U&MwcgZ4#e#?)#fNS7F;bHJ z7{Gsv;8(MXsq&sWI^@+PYOIg{yB5%h1)_TO4O1vWeL(O@%F+MrOruCO;vth* zgow~5y_m8ts&ul5A7en2!S+avNq|$%wl3)ND z5MwkK^aul;^AXIfm#X0knA2+NvFx>z=P(sxxXFZAktmW7j(UsUdw52{P+R1$MqI4g zIx!n@KLv>k5kH#my=i>y#{*V+mxF3=r#^2v(2a{rByyWYRT<^nRKio)jHZ=aWWs|F zl#EB4WiLFr630cQKc)CboUp@@NOsx?jVb~mV!Tl-vs}Q^KLCtd!DJC23DH}afhm9I zq)6GLOhF|Rgzh!ScJ;5@*83-MusgO{r~jzj>xWLg`tN+iioBm@-?%BJJ$?Q1VAq`j zPfTiLl$QRnu+|?u1?wxp=2Hpm`D+phibK5h4*1#~M?qM)8arT&SHuDL^-)J4N=FeY z!07yE3^!{L8nPHx$XzUfd9dOLlawc}*E8ls!f^^)A&E|Vj9X~7`7I{e0@Jl`v?nLJ z-TsuK}% zK0?$1&&S)DM!zcj`Wg3oBVFIxclE7hb7suaLs6!ezMmCg-=-6{KOYKX)Us6mP;|#9 zb6?XNLBiy2`MVW?hkxv{rk%$M$CZtzk4{M#VV!E|G8QrOXc<1AZA%Z5ZQOoakU)R`1pXxBH!1>*_O;* z1lUA`+C$rpR<;24#BagK{rwt8k5G58r2X>1yG)RF7p(?+G3B5F@1vYxqXFa7ds9e7uDA`8S)o6J!i&}F#M4@zt_b?f5PsVa7^_p!I1EK!bu>(S_Yz%NSG~?b_BpR#;5lnMW0d2q-`& zs2<2_He-lLUktNa7V{!Y2y0c9I#KU}y7f9cIADTm~*yYaT+cClmf| z@y0R3J+hF)ATWf;72L3Vi)&9fpQe4TyM3qWz38Q|A8J5XV_%{~Sr%@HfQSP= zM1v6#bz=DZRCFD$Qs-ZR`P+zS?VYIpB*-MZ-vR-8?0cEC4mWF_(j^waxe&mJk)uyC zW1f|&bh1SWA1B!en{S1oHvIZGG+#w;t-elb@r{9njG%Dy?V)A=MOtvjuIH;6#eiG3 zBP^rNAL!d@uWmFZmw$+m3Ew`mFJz-w^H0~1XJlu@8ZFjd4fJ1O$@I$w!k@hy6rjln zMA6acnM-vD1&e=)<)<;ER=~XJf=XWZ2{uXmF|abBSSec|C7oY2_;KTyTaa1dp8D#N z=F6kJzQ4GFZZ3QMBmUg|;Hh~0d$+*EkIj*JU!Dj3gPXE~!}dd@i@WPryY6i6a@~Dj z&ma=MAPPL4%acpFWP&krOYk1DxWr|pc@<6z(h3FewGd} zKVuok&+VnnWRZIC)Bpk8_+nm&>O8^yZySi>T6AZW7;Jg4%Q^ldHj)OrM9#l2x_8zU zu3!46SvZ5=QU1m$S`U4dvLnw{EQk_`yR`w>)+3^IE|_do!uHJS{GlQdXaWhjuLQ9{8FXP zqbnRXn)_OZ+FlKW&t%wZN85ykj%*!M@mdRA`p+oRM%b;1BTSc-1*mTxP>QLt1W})| z;S?gkX$U$;^d%JJ?1T}hb;G|zXy`$BLfE?CCb17hn+QjE3E=_d76q@=YFVOn9X1Y8 z|7yu!ugp0kQz6~9u_Ednob>C~&;@pz0{1WD@5B()i$Y^X@1kuPjcKQ?=X$jEpOHhZ z7(=Cp66%oDkM4-DhB*R=YFpF!Uz);1EBY^*xjHZy3x^wDLYj)vB_uKN-c!i4bD&h@ z7<Xm+-Qewb6|oD_AoO&>sIMB!D$$iRLlvU>($qs8EOB@OX1w7y=3QR7LIdZ9s6XyT~)CDr{}5_02SfJD4N(iH{}&}=!vTJaOs@ZUbi?ZGZNH;u>p^W6>vLhiIQo5Hx+Zv=3QS>}7re{BSOLwJ(kKKz< z;iXE9-#q61%TD^Xg6Bc?4HyE>94VZkhD3LUNMlnpmtzN$^uE(oRQ=~h3mhEfK%Ab= zojWZ#?O};-D)gG}UF!AS!h{4~&I*SSPgORDv<9n0EhxOrlthV#pa~Z-VCgqOf;9-b zVZtQ+9qK*{iMzJt9P6`-yrnBShVk5ZzU;(o{++vb^v{?atxjP%wQqW+%-kWOyJ&=Y~2^>A1+cpH^=+JYC@3{wYKM9EL6oq<>cDYsla3r|-u@sn(;p(zhxyb_e>g&1YGrsj8SYX@tC-km zQv3RxBQSGAXz|nbtPyIAUe~j0yOLtWE9j3@Xs}z1CIegnFIejUiHrpCL)_=pmEutl z&ZcZ1pwHoK*Yi#xsn06r$t96&8B-f?tE+{G+?4-6-TPA-~4T z@nN*hu5tTlep=yfeZUl9-V8c>pi}2x8Oyix(y<3D+A`KYVYWc^uw2-yrN_^uk=-)yj~|6)g5QA$$%c1pVBuA8QrQ zvfMa0otbNvX=eJl^JSYrr+fNg%KC2AyE>_q%vpPl=LyR8FKoVeh-+pe^%%%GM!9?imMK2mnm1qz%{+1t2nj zdiL>HC)*v-&oJM-{ziKD`dycoPreU#S`pt>hYIY)y^DU7gPY|tPB-??ZY*rQ){A%8 znl>f>UXB*2GCH*q#Ve@0ox}Nj_f*>2tUnOEL|KXFqRjEpuJpe~o!GYo>>)q`AT-A; zdtL!Lz+D%BIqzP^!59V+!e<|O;l)Mn65d7PP2@MNn`zEv+H&(brk6Col$jHcwZ`P? zRn(*m)XarWoSW%y;Tie;Zg%qtUE9qo=V0BG9us}%`-SvZJ5k$PoyF#aEXM;VUnKn6 z3?oxn^Bq292(~N3@rWl-ddcPbh>YZUQndxpg6AwNWG$?NehfD`;&FHz`E{Yt(H}{g zYxz9XsuC#QynH<3^YLn04bQnpXFZIUto1U70veiUNql8z`msu3>v69$)zUO&a=mW< zHM1KeHLvSbFFH{e!Wfses<6Y~?xjc(hHT&eLB>JJ>(O0L@$BFr!=r&T>%VhK!(g16>V=ai4-7 zbgpEqfNU!xY{V1&e+9)}xUGPT-xn!XL=6km!PC4yZel5&#M(heYths4)2K6{WnLCJY)Vv~n5#%~^V`bJxs) z>puQxzkUfV&pzJmcKMLfJtKjGrClB$7Ou`=uXXKa&T0>Y`-R>}6 zX1?y*qmGp~ghLa@LK%pshN}n}Yv8BuJL)eE&~hI@87tPk$Ll%@Tu;GuJ_Jkxg5nj9 zm}f_MOP4b!Z2R%@(uDAhR_ngjKhpK`ab0@is*(oNVZnT)`6v5a{Vwq8cRc#rodhhJX=|17u5Rf(9ntWq9I?`7ygS{I7Me+j7-D=m#_F(p-Z^duL|o4# z3hiaN5TWKbrFyq9K|whfaYaG9zX~oCuRHKI* zf+3U0K=hZ7+h6X0;GM-)QQgdY73Kh=d=Djp4-1Tc!*d=Br1!2~(G8#fo_;*a;j)s{ zFMU0oD@1EHffO~qSL4TJ_b8KA_A-wrU(#9+c3YJzb&iTBjq$4R4@$~=#jG;K{oA@P zu{{2vRWe9es5vb(9HGztwLAvMr@yUjuu{iy!v85yNF4 z0{)`Nzz&8zDHq|5pn80?k~yz592B*CN&3KHr2_*mYx_$3J%t_A-7kI5$;M?k&tTo{ zuB`lU3SAUhed2qg#dgSqBk}tjqo4on@gs~gChhAF`VMv=>!E+&U?#!(bNN9*$W!QN z(7h0u&p4!n9mv3LipC7+hA+wt2$y6jAsnRp5~+J30K(Ja{hX+n9JY6tmmhx`ePHkb zGwrVmkDJ6}TJCQN->glRW)e&Xw|7im*uTksby4}oUF7h(NhC7dEJ7QX+dWWT-3ej& zAO_-WWcM3@+h*5Oscr^f0==%_ZNlIAW_J$?OM-x?!H-C6Ec8?(6#)E%0D;18R{?{c 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 G!T$pQSpqx& diff --git a/src/minecraft/mods/BiomesOPlenty/audio/bopdiscmud.ogg b/src/minecraft/mods/BiomesOPlenty/audio/bopdiscmud.ogg deleted file mode 100644 index d7c3f0bc678780656fca42cc766130c46dc9c58d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1712056 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
X?c^({pF05O#>T20O3WDV9S14fSLAU}0L2>^c zT%hp6L05quEFSjDA4{xigb1uqkR{5Kb!#%YqUdriAw7`WV2Uy1|AOyNm~O=>Ct>Vi zg@4^+qoEtinU|z#8lf;eVAG+rQiBsMe)AaC6nA%WMsz3k4f#ufDE~Wz^By4I!mhf$6Lb1o%Gb*wQhvP_^ zpRpE%W+|7aESiliR-dYKY<=dkqCoV;g!{sR>%EB!tq^Lr7&7T68S}@C)FYCM<5B7L zX7VTRx;)O-tnD%;9C6c8teJod>%iLG_F+amjFbN4VMFtdr5Wx%V`oHVO11@ss;5;iazba7bLKIy1K0(1Oj!Gwr#91pAIJo>2m>2S5-HR16L zHSfnaN=h?Vg?!l8YmcTYhJUr<^PfoXOqcG_iB!gLW6H2_xqD$Do_C%h4wYF`nLw&ha~VH=LWpFqlUnse<1=6d!lK&6IQh*VYLEW z$o0Jjr}VCL)xTY7>13qdlDHatWnAxiBCA8GwGm%xzt<6Y7EIL4F=D*i;v&nKY{7y3 zM50yBn%9gjKh=9)`~g?IxTF&vNvV4Kt!2Iq2Uw}tUeouIo0c1VV>$2!{AhfTfSWxO zycowix?E8Fk)LJ75*a<3zW2VC&ZyqDoZ}H~x8My5TtEZ@oJ5(`JF+U{9XVS$?pF(| z@JCLA$7fw;XD#)g`L^)MZ$X3^ zFkN@iAGxO@d+Od6(e@O}A5jJ8lic3OA^@l+S*08DS!mG!4$^P#``F_*j}$LsqU6H7 z8N_z?S;hF>J*TM(Bx&O{4wb3z@&almF&ehU1pbIvuNvs@KCl>43dcE~9_=FXJNvv? z|Cg-;26WgUaAZUNLS0d*By>4xR`IkkHsJ=$;Zy|@IH}E}UQoEdt}Mj8oBg}kLAfr+ z7yZUYzrDH7Rr5LLqP#4wBhF7fek8RpJ+_$W)wv$Gw;&o^H?MK8df3?~oOj93bwv(; z;pCE=@%lF_H6p6*!f6%CQJqfQmp#L=dym~79J$Jmw>@ViNeSVO1xB$@; z%d>U5kesFaQt++M>*{6gDm(a=s1+RkSJn;G+9xJ^Xk?5zig@#`J0wF+QoaTrv?VUq zp=|ri~EVE04Oeelp$4g8a}d z3Vb-=z~2eal_*h4svh&NZ-tjz);qU`-7oq=5ihQcObCP4L^L95#B}^~+{&g*@0cK_ zdHGM)4q@mix4Ao~Ne51|g1-*BJXVN+-cXaeVp`#5j`xhSR4sIQTV5^(D1Xx-s@o%N$(`mIpvLuQ5^=;A&px!gb= zMle=fi@_0m?ZO53pEPe;uqy-C(DV zEqgnb#e2h7!LMCxflx}5%1Is6O8V1)ua>xHt$sCXd(cvsAbfCoqa$Vo@&AYpv;Pqt z)F9E(^}1shzrA;~ZJ?*U+|@Z(>2IXw^uLo!#|@Cy;9{?;|v z?{m_v>K>>G4{Wu;nMM)G$%Tmdi0qGf9J&dInQYxnmqc;^;BG;ab@!V9tS9fsnw3r{ z<$VNe#-m%iah)D}>0zUFlZtV4oX;~+)3vz98Y?Odtr8lk1mGobQf%QAjD$;A48MA9 z6eV!qZF=yIr!J@e2|k$C+ghQ~Pl(W?KHAtbydUmS)aC>?K^HdS*=P|=~TQAf& z?_(CLOIgr5_bbp|VO5p-%!ivS@3b^^nW)1y8;NJZ%+Kb@(w=NwTNs5jCXtE=j^d z!tsH0q@Gp%Xj z0{F6Zqr6)vnb$v`(=%*^)Bu|ws{A3MYMgk01y}#e1gWUEEBWmHSG-Mav}pdP3zEpy zH>F&a;2?inFwhDWGYu@JS#<8 zAIBZ*)l-_!;hP&Ww3JG#@P{N554A&HRfGq6y&tkqexx3a=mH{lAhGLc+VL+fvj$8L z&gF~KtMs?KqG!R}OUgmhmE9zBA+nH?w^Vy941GS8{5(@Ae!Wapn`26VrO@cAg>j-( zw8s>gOoDE&hC70&x5DRjEGx0NdV6rae2Ego#~Owu|1m;WAHxF>@Rmh6EfGsRoZ@#B zu2u`7isr!jAy$C|`P3-D%Ph*Fup$3zIy;j&#b8qLb@l?PV7M+v)0NX;l*15(b{Y4} z8-030TRX!y6p6CgqGx(wpDH-Q@pQkcwgGj!eC-KQZKFe5mY=?KT;*flK+#aBeUjvc zi)igQm^ZHUC5_@HlCQn z@AF}{mx&8h2#1=(D*@V3gT22R0`>)*Q;?02ctW5n_5p&u_q@HJiImCW?L(cY)(qsE ziJuQ3GBN{JjMktZZ&N~EbR#Bx8KByliP*k7Zpp($6?q65hIFT)C#pvfsjUMT4F!3A zT{HIaC6XC@H*B@RMWJiI8Z!+B{SYc5NG*W=Q|qx+=~u)vAGd=}E`nc`Ocb4=m9j4w$ zaxss3U#mAek_u$OohMsBC}kyRD;R+&+P`df8vMQi7tZEU3(B$A{F=LYjoT){Wo;hl zfk@rFB;P;sEJCC3^K@8LvwP(t8}U>Mc#{Q(zLM@Xe#yGgiz2BXjrT3|h#DS3+7KTl z4nb8kO?JES%*^DkqmQ>~AN(d9xc?79fyP>G@WU4*7Mz&pVs((S;b5W*0D@hra*PmJ z&(Idxzvi%=U37hUt)XYtz^EWV`dCrEh00!pQ<4Nw z!Y;AZQUKa)(px;YieDwnfpWGu$I@}jJ-3Shw3~?`ob}4M$x&?Q@`p*Sb(hD+4~(Ml zGDiR1$W%&0K`B_ie(oUWiAGprs=@o!uZA6q#WX1DGnzrUZHe*a9zLIMuCEmWHX#4W zDNqI7nt=ceaS^I%nfr8Z^cT;f!OBu;9AM+9PX*}da3pXsDABmA!eXrbNrU`$9#iWQ zk6A7QJ4)gdi(o&HNx|N;!CXyGcVpI7+UbkD9y#pCTnUi{ zi9b*JRKc)^jO2_rj@&~hPd+s0Yj+xPD_q=F$qy#{hnWh;OC$(^|3*0$)APMUL2!N1 zY1R(Mw-A-%m1`=AfX(A9E3e-Su*_h<{1Ot9ER~m-;=|twFB%91Beg9l-0*TUoRRYp z`oznBgHvm>Qw7}=&|h=auQD(*(^%x=pXydYoDX~D^gv3lAcn(1xk5xr3xf+92#b>_ z-&G(KF{}`Z<}uMv4`2NlNANX{PAIR&i&)6|5{fc~d~`V-jXXme{kGZcgMMV@-J6lUB3j>=z`^%n%_P) z`Ah6V!E*Ra-Y7!?Ws6(3O7>_8>5f0y-dwr%Szsmizs(Ye(7_l(T^K@?%>o%mH^pRF zq!n~iNm^cu+B`(^P1^gWuTSfz&%Y3#7$$*k=$oE6W}S8K*mVcdh+aQ@+zvs4IaNfGK!Y`dXe|hl@Cii+O2F_&7Gm&|{7$pGMCsQ}J?mpW1 zV`c1yS1VN@eOsg=l$QbXg#$P2ObppDfb85+&c0qN7j%iBbyE+nqTsaHw?vyPl}xAt zotzbINkY(oHbJkU9pzRqJebishV3LXfiF%v{te;oPG+WSfHj*_@~akLy#@U3f%n%1 zQ1Eys_{6Kda@f9vgKL&_gv2hw7+FMsZWYDP5XuZgVjLVArzocWI^zRld4|t;)Fy4! z`1jE&S}ivy{gfKbPKLfAN_LX>dxpy@TG#DR4ox_?ZWH?$A(44i#m*xnC{g~;K=SXl zYkhIj0B{+kyRjY9YrBK4N=8;Fxn|i8k9~C&RLXjwS1+@7Ql?R@(drvKq+by>R9^2U&-qLFpPpxIFFqSuTE;Uaf z^a2U*vbF2peg->N4>L_HDv(~0IUUMF|c&q<@2ZZCbUqltJ;wN~_%uEZHsVjA&JT2)J~ z$Ug&^p5r_%{A!TC$I@T#E(HMxc{uW*Q?&%~oJ@9|?R!J1 z#zr=dLQyBvO{ijC3JYKae37RuPGD?yLNe@NIeUy}`Mq><9`t-;PLq8$5{|E7#=%%^ zcG~F0#9_}Im9si*XO9k@pfjE&0X`yc4~m^kUlv2f`pAYg?08Vj0=791>%^vTrD&aH z@QHx_%J-=CRDTmPj)-L^ZTP63?1pKuJ@3D+d>L|pXKI?157`M?OLsdrQQT6lmb2-H zN8MXVw8iN#rspMn24nd_iU&1sMu!2sxiAjuST-CU zxwy`2!<`68PT)St1gpvvCxNB6DQ}w39FK3$|A-p3vV5B2Yexu_$2ABkKUsOyX)mrv zpHIwOTQWtT9!WpbORXJ_Tz!gE54VOI{FYc|dERZJ zR?WjOVF=y+j1e!v$|te&1V{Uhxz8GAu6#C5Djhrg5z8cCmWXSb`#uA%#2g@_m6PR22)P8+&S$s=`Zryl=~F9 zuD4rOhr?IqI8xT5|5a^40L0B1La>Ir8*%F6`Eu84*xz@yZB#9Px__aw!Ct7pR)0+^ zhdXFy$#8b^_m7v`wMM3V<3jH7#-$7^Dd1n@f2pu=VJ+mCdV|%odCfdUB?n|ul$|v4 zmFC2ni4Jl>AWq#*4~3TU!4Ns*+;u3hb@o>MoOCU0S1&DfYUTln_t!o;cv?`Yb`SNH zzj?N8S6*vW3y?tdqyo; zOYbn0c6};zDfdBZI%S)T9`6EthCOKVMe99Wa=@C-2c{G<8K|+RrEC{YMS*T!x5fz7?^R%$PVXNns^7!4+;SeLN-gZc zZ(ee5z=OHD;EJ;5=m;MQ;HI&JT)aP95C^ML#gvk`-e@RuQ6mV>3*DC<4va{;dvx(_ zHTp9z@^RN59ea~r@J79DP|zdG@Cgd8KAPeag8@`<7sq$!!KIHnQiwMWCTkLyB=SNE zeFtbph5hDJem(u#C`^;|C+W-h7EJ~+`6CSQ%WOlJbKj;-r?F9!(&il;Aw^0@C+n=O z@rZp4^gi(vm1d3H7EL^!cHQLay1C4!ll!s?*+>S@$NOz*jGuXbe96OXjz$i{1dFek zi9lUT*?-dDk>(rUPTUfA5jH&--i(Tmez$_anF8TiNmA2swDfeNbP-d$ITcyw3C0W( zL9q%3%kV7|BHKG^LqCeA+*Z6L{F3ebjR~vZg-(^kDpV%@Hk!N=rGAu9%zJ$3?C0od zFoD>TZM-W>-wAIi(Dtra=0KkoyxvLBF!%W;lK|ItEb^lwWi6sc^&r1Sd4b&M$B<#J`Xa*mNKFOOb3k z5NfGyU{fBD&j^Nj;?_yBxH3}CapC=HbtfX}JnVC2D(oSJOig+^?FVkV=9zM$+*HzC z?2U>{v8dZd)lokNI;>Y#{MyE&3i&?oRRF}Ndw!icqxfAGKPwIy2T7oY>XmX=k z#tJS+6QR&hnYtCbGBje0GHac*wR>RrRNWw5IOphG`{7V#O<&*A*L~6XGgc;nHj|Lk zA|HB9jkm*77_>$bTjDRczJG`Wf*8dOTCf`>3)?chc*ruDk>lbE3brsCcJ!7kV=@tr zW1!Nd%qDwG>AohJUAue!QQi_G!{quf`ls!9Cn67r=vvI-dik)h#CYrXc zW~Fd|ceaoL0ZO-W`iBQ6M_-Gq*Ui&7?)F3HX@fRxxwoY5770B%8O}!FZx1S>c)Cm2 z|Fvb3ntnA?sUsA@cnn3v$U`&bga{-nM#$pEJ4qa!EX%lM$E<4J&{+G|*CqCOt=O%N z1i0+scLaDZ4~GhR)Eu$%(elHmpr^dYPA%COtLzeqqh6{d`_R;OezERIS$}>W^hTk= z4d?RW$3EY-N?Xs|Q{-6=-z6v2%*R|kynrk}zsXsOlBU%AL_hY@*i&`hpKi+c;bx)_ z5$FAeJIBN1Mk`le11%g@Fa2fMKw{yas?A*oOtbp~Sp$|i2D2GO`|708%}UwuIrMIRqR}~ z`LCog<59P?k`rm++aUz!%4|H!0g=W{?o;HtQoXBj25NtQg#QW*9M9i_p9uE2^MKFu z!+QZ;{mi@htSzJia56-MHS?ym5W_zX;m#D45wwX?xCO-y^N)!ncRV(7T+7ocL0jR) z+&(7P(#LxQAA+g5bpS>hT`xL226k*CaJHG&?3h$0m2*_HM+XQR-;QpeQcSiE>q0F8 z|C|VUz=zZ^3&)W*4b{;dAJ*%OsmrcEd*;DRs!VINbz{j72NufOkFF1&Z0d({p52eU*21Gd1qQ7p%N-#_Y z(MrDVlibIskPvLfymhWQtFy4*IG6KTER2gXO4b`8Igg)xrBz--`&kuU$kDQ5GwYn# z7(wwk7m6!Pw|V{hUkk2X56fBZxUk1)fReO-tFydmuw#P=MkvedK4fabx*jHCJb6Y- z?M?;I`oGqJJNivxDuGWN1}?#=Gh7+^1=hUE+xojg?{BVFE3X!Kg%RF}@KZ_>Gg~Rs z-nN5w;`X|(n_Irk&d+jJek?UYexF{J_5Rt-3gKK^eUE{2C9V$u5yz^FcyjU1lzCKuiSYXuV8I4uoz6e@=abGF`Aw?vW6y-2bA3!Yx(Xu4G?lr0 zf-C`Qi->Vmbmzum-1hP=#-&L6NZP}5c0}4JIQYQP0lm_A+@~|3hc-3)^_LDsGbh#@yn7@bbKat9r=q`Quq7Gr<>fY zcGmdA5vNqrZF%+MBn6xX^Hr`PUK{1{G=)%sL=vm;9K9WmXYQXn7%{^9F3DSixL-$R z!Aaxa_RO?S2map$8=iHo_(-L`9gG3HUa*Gg{Yk_}12{6M=%f{KwSF(x@wtc$+}>si z+M8@WTWxebX?oQ2qs`DU*0=bQ=)=nvUOLUyfC>wm_WmB|(x3BF9Z|abt9MM7zLY@- zhqcAov*8vqFnXm^=lvr>6qHX=<}vsUwV?{(gV2>0sTXM0^Q+N#=>^#Rz6yJ)JO0mK zAKctK(iy~;^Sj-rLcK^gZXNR0Ds9!S?Kd%9539p-UddazY_wt+|FKfq{WSdg|OrZwG3Y8Z~SsW21GCc98=u~1^_De zbupMl@gu5U{9X%F6)%`N!sD%GTf6b2>(tAkwFocN(se^{`3Pt7X3wq9lMJAmG-g zL3=o5Xsl+iU4&IP;tU6Qj|&!HHeZfkgx+(}QLtg|&;s)F7gyeg*@J{1*d&j1O4M>~ zE8l)-%NZQxO=9*->Dqr06&fB7Lf3GJec!^OWoDV>pox4a*9(|-r|t3v@R4@h^^W{) z#ppHy5JN7lzcF;|?Z7JE8fa4TBZ5I;7S^P4H79(G&ziR8J5uS1&d|uNnEH+c+sl;x zPKA4ylb)P*3>5v0r8cXpW>){8XX!8nI}8t9kJua+2fgYkhO(Hf8Xj>zLC}o(pT0xc zjebB3@;)9IRt-5E5u~~YBBLDe(rC%-!o$On=^2U$G^R(kxrG=P4)1gV3zixF%i_Y4f$Vu3uK!_G!N(@{*b4X;ahr z`_gyD`ok+aw}xpnlXt@Kpl<6~y0vB6+j)IktS%dF8{Eq=q_ zebs%sTieJtMv;HN$j@<4uK)gHxTed8m_*MeYC)oo@Wwdr?$h~B`xMM}Pxv_e1xINe zaf-Te_LxFLP(pDauRfpNnBu2Z1aQc?paTHgBP|dc zv@hH4HSE<^3d|c(pgF`YUX1u^dUyegW^NF%kk_DtH%j+=*O1NjrBLWcs&*t6w~z5s$Hd1f^qMneN6|7bvET^}cWtqJB7L@o> z9U8Q(!<8pGe^cpM<$wT_L06upQ$xvm-`_h+gxfyBQ^u!No7okCinNM*tYit&GlKMT z(&KB*nOWmL`oYNgM8;Ob4gOUY>cHZ+nrc_-%wokcpvt15ks7CpPCM zn~)?Wbr#2@>wZgNBzibwp<@&C#(~#Ay?Bel?&Xi&r<=?%y%K`YbcTLrR(h?8>`hqw zZ680CTZDvgic5-i!N=v680JDmoke8C6mWzR0?S~L%Cp&J&%~j}U zqxnj5`8Ndl0xODBK5S7(mC?Ypw7iQ6~Wa+*Hi%?lX z`S0N`<8`c8yeEbEL*E>}Ilnt3aIjpN%1jhox8hx}9#mwTI8t?p}Ht|s1zb@CJ8b>Z&;%jKj^nU>_!2|2C%n<1y%Fm(qr zY~66O_uY4E7;BA0Kw)Tw&s1R!OPUk=fp~&+1Vt4bkr&Y)`lGF7QLyp^`ufhsdUgE! zj#+DdBeGi<#ri@|R^}d30FALjvts~?Fl!u^n(G>+Tv3Uh+e$=&LEGqBWOOF6$I{Ey zJ}Bn);sq!7L~Hk(k5TCjsGa-&t}HNdodVwOfT7*ep=vO^j&Roam{)FN)nqcg zQHTQ6bVXeezY-kv!zTJd`W+E<3^v{dA_ z1!0Q`Z&%=d?Y7Y3QjOmJ`B&wKF7~_n6kLE9%ZyvM6AaXW6z;k=D& z>)U&pmJOI-cY6A~+I9CWF@?)z)O{ebweJKmz`qOuG1mM803;7|A->-UTgvKMzx3i3 z7`XYq{B=9E!;b2BtAvSdLCUi!u=Do4P*!RCmQ+;|obhFz{>*ZjGO z^<7v(g~XzMwQ{4%&orpiV4-g=aWk>bmOo(L6Q z+n4FB*U{TH>1E%)bQE~6#bssRjxTE{OYo}oVL@Wf2Av8ZuLeRLR)XGD3nZ>px`wJ1q3MT7Pz~` z;T&~oWPW=dTpfPn3v&eeIw-3pAzTSX;7x6p(Hs1jbLmmK+fefGkRil^!{<%y*^%gI z6xim$JzLSXZw#%0Z}qYX0e+iT3o0euyk)tlW<@p|H(;5$P#k3XaP{?VB?C4=-Ke2m zTnI4x>bdIP3=4rIE3~Id1p8b3^Lb$2Lc7pWBySO?NgRnB_tO3zU!jgr=iK5@QPC?6d`WQ zp_TOH(9Mw6?T5!G{%G6T#{i#$wXaW}K2)EHr;Z=9eA8)_GNup4v-iCQ+lsUg#j7Vc zSgE(+`bj(V7)zws`~!CXr2OWxxn9+5_9t%zhd{vd)v6^QfhGY+L1R57JR;LKky8v+kV1U-3uX=14T)P3oc zeEunOCFQ^=@`aIEmp6j1$l!M}k4hb%V3z<%4Cf2%NKWkpI;0bhlr5tOp&FAl*6|G& ze%5`DTdtdf>6B!;isDh>a%XV-09h+kaAQsi3IG~!>2)FhCJzov+2n8>wIA;V8lObC zUDb>0R8&>Y`HbW~nI>rcyp|?bZm7@IM#TPuCY>@Btk*iIWj}Y+_u&A3sfdKSy0bYN zGLGo!m;EKpyOZydch2k_39tL}nS=jI5nSq8y4Tj+7PLOQbU52?oxvklP%}f{!s@sF zqWf4R{S=k!8^LSmDrbQ~cebU8I00n-6uiQW8N3StLgMj;-=`GGW4>7bd6RH|EP?G; zw5C6=@{e)7+MvKDv_X|Cf!3lwEeWnDcekWFM~#(%=}wRJX?`T!xnjYwMDM25LIlA- zZlD)>b~K%FGf~W*$XbY6!=@;7BB5HvuM|$v*srnv)B}2HNXmxL37dW96sU%A7mjq@&UlkWSvE=N0a3Z{mPV84x!%%@mZ= zau>*fs(fsnNuNDb;jmk=ZtePPATPID zv6KbCEz_hM#GxsGM%sKmn|k)&4O7VcwL14Qxs8@(xAu$2LSao(xGJJ`;r)ulA1P8* zk~ZU%;V+Wd6LC*AL+2#0w_$HD<<9>qDDbE_Jv6E1ndQZI#>R8v*%~6RK~|0SNQaO6 zU%LSW96Q`=i8Z(_i6R}Xwt6%u1?0gBm)6qFFF_n_S*^$ z0LY~nOA4!#66XdhuxA!w?wDZivj;mJBaK`U*qZity&A=@Bf`N*ro^oCttFhWmOahk ztGemSjrlmRTRU(=j%jp1-UD1^u|=kE|l}N^@bph zXjx|GezNr^p5j1Cs=yL>&h_Cs@YONA`v$<^4JjjiNSwp&G=@La(E*x7qTN!E-1rzt zss3|(v$2dx2Y`?{c`=Y7vJTVh4Cu?qHypZNvbv4ZZ02W_VOW?U?P8sbD6Q6O+lH|#$6~GsN)Wp$y0KX?~T88 z2-E%8Szq2GIIUoE5JxEewfg3I(mXvK-S2K|Y4>h{Bc`_Iv<%bY>4;`@?%ued3S{>G z!6UI^F!qQ8h^3wHCzICtwBM;`u;K8bzzujmo;}9K0VZw>O3{8%U2IEVPPSfB5aEyX z-MF>XsmNIh?J!M0cX9#E0E4#vi^xg!6w{XPJSVqF$MF<0y76k9jwWh4dT^!fL38Ct zvE{Dh=+$Hbz$s#v?s=zL-E}n^rFqt>0$!sx!vk^bEm~Qsi-IhB=HumYeo%#;h9Ps` z3##eOgyz)xjn!-g79ZpIpV5v47np^%%AoOp^z9QJqlp#?hPB}6d7)0+VszO2bsFAy)T zoP@n2mWk+cRE+4uQ7po6@BCzS`~kh)SHm~PS;)an&$(aWU4=|n#_9&=$fJn)j|*=2 z$S#kQ+qu@AmaO|%^)8*(?_>DiK|qbvzpB?donp|>*@qbK_u7#!%@G6WPJMF<6#(fP z;!l{#qfRW&sP_5Z`Y-IXh*6`5nnw5ed`_~stQ7J;@-RIgRS2t%a6#e{h65!j)!*ID zTOcT{#N7p|8#@fTAk?Kf!mF>yt*DoEeag26kX=PJrXROF*{sYyBCEse99hBdl}3l$ zMQ&tf8jjYQeAxcmU_s)_v0IZ?y86;*>y34upv!`xk0_J5+Upy3XGI-xF=-a-P8AZ& zoF%Z}6);U$@Bn~Kq&GZDC6VhxZu$x&Qq93-C~99If(~J3kQ_Qt4^x=K0!Z5SGG!6diXPlz&;mrQ@G{ z+(^g}BoX6>A@5f0^@^Uvs5k`ubh)?XaJ*LD5G6WW)d9?h+duqA=*w-;Lcn}1S8HFY zg@X~F`Xg$K-YutZ@Q!>&Kr|bnfI0?_ob+&>yN?gYg+=UuXwa?u&h*9I-NK^9solEt zJaQ=;s^qizX9QcJ4_EaSeDcUtU&o&nVMe9DFhzG9J9Gp>4;;M0;#Ljy)e%DEGgGx~ zu(%Urrgt6WryP90UkC-0efz}2xp340iQrHRiTzV&3s>BF@ePZhQ>2=gth8%87k@{) zQvsW(DTjX7+V~}l>sR`q0*!k=utKy#BlsiY;?Z1aqA8p)ebkx`d{}|*7W)&XBZr6; zqzw3R4>1RhdL)5A2Skh!a!fsuT1r{w14~bO2}QSTRtc?SY}xpKXrh0!GBTF@rtlIN z{o07%^GW>~`2!#4^z>&=A{0R9%7R!-B9L{Ta;Q96dp#&ELum>Qp6CAOw*N~Esrl=R zlkZyz*h+6$(Zyu~uwgMJxpO3R0fMFSv*uINzJ%4CvjiWmIW{BB1uP5|C8gG;GSj!4 z3VU1A*OEEuv})0Cvu8OhY;0X7ZC{>2a{k3h*}}$**N!StDgV_5K+5YUkn+a zaGr~V#%HXjsapau${OXtYMEk6M;Qn4r9&M^IDr1k4x2b)_a$T#kOQb+2{px^5ZYBo zHc5F6-YQCednI3Wq2tp|N_K+?yxG9Qve=mIp>y7mDmu7ywYq)WPUxBjMJ>{0gaBEkd_bl?|9TBVQgOJ zh4O$cqEN27kw4;=@48JL8{vX)t*$+CKj&~J*VmblVq@lHgug0hN^((=z&w80nm-;6 zF~~D7{7&(c_`5C)^YPUH1^ObO^<}gL^6`zXP^;_}u z)ohbec=1fg!Szf8WE*pt=@T=hFUH1l57!+zkjGX}TlD(rl?+J+IGR$fu5%|J0v04m zoedXVR=l*NS3>OgCibRDi z`UBoe%af4rmjJCye|VYrm8-=?-jDDhhvm(qGwH$46|32^wt3YBos83O@yA`3Oae3k zDnu8@J!23Mb#He%Ex|A-r*AhZqTmv06Z~i=17qb3x_E@TryVrE`QY_%0a!t+r+lwu z|Lztgen3vnt0-bAIGWoL54g_NW7k;t)8!-&*~|G7bX+iHIl;MH-tu)F#XpfchP?@Q zVuZrwx~a1zpyaLpg%m&ea)pAbCg6Eq4*!A-AT6`?cyZ-z6=k{8IW#gq1#lmwbQ$O) zQ4S&;Wh@BJTjW5DL^k8lHnHUj-kTyIuWH0KV?(&%P+e4-_T7t5) zlGG>y?B(qaPD_wW)C92v|HgUC1!dFe089 zy5aZIXaLjL>p$>$qdJt5?F)cZ6iy-6SfZ9Tp^l_cZ{dufsJ#74Zi9)ISFa0bl1&P5 zb>b%B2k9G5bFq(E>7a}{ZBJd7aa9Iyfr+5{MO`8tG4H^jI!RcwP%bGDg5wv!ViJ-> z_d|AN=Mg<`-x-oj3qME^ihYG_7e&Yo#ks$w`50$^j!i);P%`AJ5JUdJL0X!5XKRt9 zVa1_KWb;7R)O1&isX$3CcYjbYdsqDGn65HoGS~a(T{K#^FU5|*TWC`Zy%G;^Haf4x z7nx+SbKkJ<#s`S+vL%H#Iip5NW~AcNN2KcTW^Zq5Km}F>o@OEA zywwHhnL5No-Gthw%u63D`>=`bsM@8&;5&dQw7v2V!i{GeBx13pQiSDkppdB_o}}ct zd84_iq$Y2l-_7FJ<1a17ety?^b6_^s^yN1D*f5ZW>qDx;CdFW*2^fBD@o6){{()i< zxqJTlfJjXGCV9b;3cWEZhU-fzI;HQcQ!gw_XJtqPE93G?-llS)HP#^Xm_-#S<%Vb= z!{B1)zNJ0T=dk>RrZ1vX+lBQnsC-Xe1(w|xuLY|4Z|1Jt+|noBY$z51Y}_k(3yb6j zho!V6vYFplgnS>9E~$c*bYZ(9>-QDMZte&GSu2V_Gg!+cU0jSl2k#(e7v$bM znt|}6L7Z(ecTkt4+Mm`ns05E2z3-TZ+a*iKU9Ri+rt5@r&98JTLG%wsYJR~&&hJ4l zBCprKt*xP*`v%9dUN9v+$0zy^2M9a{HI!+8eQJi}Q2{Y_U??XQ5oUDeg4j*`2dF_C ztVPQEEKG3;B;jx-xbLyNnd{j*WmN7R3~t-%#NZgUnG|B2|LXZ2TJ|EU`XZl-S9W`X z9L;8t%M|}n{|Qm6TujWnSjXy1WH{{dq1x`H7X)bbc`r1=p3sv=SudOF8;@=3t?}IW zm9O1T&bv9O!p)njoFgIfu=Bv;$!ZFkO{x3)7rZ?|^R-pIK0>H$5lx{~99ky6&lZ*j zk$aOm=V7EXpv_~cfa_PI1W;pPl(@jFKe-%FtdwSr?@$n!2N=pW&*O1Ug+3UA7Y9#)XKLgHgadCo zNj%`keBt2K%g~fM2&nUkBCquNv3HjGALd>tZyhASQIJsBh)Qy}#Q2f&z2--ueIY(q zoDEI4VoM>cx}~X};lAh|e*?;DCWb_nPZ+2Bk{bY=KIBChU$+ByhnuCOlC-8Znl^bj z60-X=nol;|^Km<1`ZA{j?tEZK;z~qF!z%@#9ntjxTJdqcT-OU8aOV(xaTwz&M{V-w zfwDs5)TO1cQ9r`+*4}0gTz-I^=T85A9LORFTDh1dO9o6ZqVf$ zveuhY%`l99sd>B{KK` zeb#w+G#Q#+PZL#DG;EqvyXAcSkGyl6jbWj(hM&E{-8@oI8@s`lC+uE5Gq%yEj-eY4 z!Xt|C*#VC}1m?m1>HR==d>~x#M@m{SfcZQl=hiM$`NeT(nl{5pcA^X{8QeI1%1rDxQ2e+C|`B9hYk|oONXQrlFdc zcgrGt@I|NAIq~y+e z_-Sx9&1IO>xBTIw_pyO?Qhx{$KKeNtw~myMvrvrKT)6Cbn2NpF6A|?mMn@z0?iu2W z62A3JWSq67ynZmhknAw?tO7q7uqWokHq7tx!f1O`gNlDJBwK)Pc8!$N1`}@`V5|__ zV+N@g>hsP*0kkghfxn|Y3_?KqAA7(tbkT#c-JVLs!4}XjkhG}l6CML%%nUe-#okX54jbdu;&q558e2HYIauz!|brqg_MLYW9RC@po?x1`1*)ULaY@z@yBr>6Ui zkL^1nXXBbi$8Qkl|7MZq)mJNP5&gj;Ee!Mn~m{I5JE(RLX* z78-0pW|TM#Fr6Vc55%2{nsjkM0jZ+vfEaiLEQd#`4-JA@H(_VgOKu#VqmN-K-}(=o zxn^Q$0BwOvoDef9 z^NP~9qg_whQyudIiwi6%N{NcMC6}KJY9mr2i0G#zaTm(7xVpauCj;+QcrmEv1!UD$8zjTFF|j8)R#7 znK+pfig_eb8qhv!vUw${cE!ad!n$%pXU-*5)>73pi(?ZoRObF{wrsQ7_d}Clj;(RQ zJg~>vL3XT{fme zZ9))c^vdDh{EaXjvdCmqFUDIsF0K`Cu?D#~ry>l}Tn!HZA|GwBn zd=2}V)7OXbJ6o-wm4l-nUT1c@V|ZrV`6Zj9?Rm70O+@Y6UgC|k!s_YM5;xJGp9;Fz z1KLLBP`B${L;uSmA2SVCAI!qx57*y6lG*CGZpgTfgCh3a zt0V4_csFnq4aUPz3G&e z60s*Ujiivq1W{fL&?ziV6CB1H(Mm4VNih|m8^I73c7xEUR7e3n=95OX_5oV~POoM( z;+pnaRoB`@Zw{oxp8*aUOZ0M&Ua91}heRDtX7bUk)0-&o!bGCk>Do*0P8c$eA7>Ln zODOJ$i^UYgoL{YC=m5pZV>49@+j7^DWVMAXZ`+({JFvXjkb)CFZgJe4iaM_q)P?zy zcQR8uejxHyzynK-tME_SS$5K=q#dQFmZQOnxEt8k{i%PMp`b+-?0bMM_HSY-T1DOK zr|~NSXGI`PZv;8D;SVu1o-u)g;fopB4~KUp-G7JfeOAt!+uBaP_FwO9UsYL9TKV?yTCMp5nPIhJL8J zuKG6GUJzu~}^xa{WO?n#qngk5|3Y5=wVgRs$uNGH&rohq)UCUFjVXt^}^ z3o&!8rAtlT-kh{C$4gf!jhoLUaj!XhE4$#=r48Dy(XYr1#I~1DnlLL7yaVz6bK*!4 zM9z1C!R_LRP8C%#sIt+9ZO95b_o{A&C>*i~yFVKmaPp2z_d@u)(N*@nWmKtx!&~fh zD#j_-uMZ>LF>Ld+w`g;x$~b7VOhZizdU44mhO&m=yj;EDt@-GHnGB5C3 z==Iq`7%dTuT%VEXXtM)>9@%^nyVf%#H~<#rLRn$WVB!s69MI-$Q-gt=m$~bpx*;?l z_JzJ!?ppNwk!6kITK=fQvh|ts0~zQPqx+?Af*}R3shnZ@ixnT*>%OyI7 zfQ_(g#C2K!@B_>b7=t^oi;o7TkIjJ?bXo^*gn=AxNMF!lh~jY_oX@Sc|Dc&u#^E`LC2vD6lJ=Pv(mz}?Bj z&kD}5fF#9Vwis?zpG{&g-ljxpBd+?`j|@Swx(I0M;_%k(~!z;80;-}(GMog z%mvFtww=FM$Vf0c@B6I|k)L8dlqSHzXD)!i4AB4ImT9K>@^nOvMs<_p?>WvwRrLb+QP$H+085eXO%K#EoM(bgRDj_W2=0@>5Jsgk4 zmF?V-ckua)X1fSqP1x2=mLuzL*ne>ySvWR(VVv5V%(grqGTTY_2J%tc>YXO1$@w_6 zp)7Z7E)I(8%-5yOxdEB`-~f@>Xc9!It)TBdi>!rWE7cb^Q(02Niif~*6BsGrmwS%o z;l$#Yr!f2$bs&Jn@mnjr^+j1@C0CAe)LW~}&MRuG9jGMQv_Z!o60XC)cktlN7-R30 zQice^)?V`^sOB86EnO0Q+^_Xj9O9zDFvdd2!N{qlJue=Md!O)L5jU~LH&q9Z<^WwO znTS=xn@0}6;4owF_%takWEJ_018${%_K!o=7&-3o(WF*NYVl>z(FE$|V--$UEca!cKkXjD2f+#kGj^ z&WG#mAS61K_S73X%NT9GAMxSb=?S{;-IM-Y*$YNlGL9WD?fZJODfj=zNSDAlM1Tip zLLiHoU8%_gLdfVg5!P5~mU|t?AwqIgK>Nlg;JqpVMHdUJ?HJnYFInT|q$;wZy2tl&1dt`|dDp zkwG!|jgp%jPEYaj%^nwx$)}O~-8+wyl7cDr8Vi-9}Ajg40h#Yd(`O}57RUV)1(_hn5dL@aqjoMR3H&|yf z*y%H_AQ|DW^Z}l~%~t&U1u}yYVTWb#ac`0E!s#m!o4rC!l)UD%XJ<|ICBHq7Z@ z-UYmpo`&g?>Kq=8Alkk>s(o|LBomBGKJf z+3ULYgxByTmh9jI#prhW%7h>BhyMn12o#fi$lzwu{SnY4;&M=nisH^Wb+%r_C_Peam2v!2 zWIrA5fWXG^>xI{3gWte66$mMUDL3t*TJIjSUwi8;nC%RGprjd=%Wi=fL9*MWaEZsq z|0mq0I4Lt-6A>@Uzj3u7VbRll$@Z^;*N;5a)?gfzbQbjNvV^dC{7J1GhvOh@U0oxW z+cX$iB>4}mo`f_IPUrvHmx)A0Ol?&gQZ3h` zr<1pC7YZff;w9XuF3&m)hDQOl!<~r(=ubrTwL7f)iq1lrmZf}?P7RhjcXFj>u`vda z=K;{P3h2KA6I4))-V%si*qd3WQP%&w<^&*a=m_GhHvoD9D7(+WizWzN6+V!_j%bag|_3xaonZ(aCjcNp_uT1t6#uK?y5 z2JRRRa0Vl11R;mUAvnT=Wd?Q+RPyl5yugpWx_Z@fD-GuKRx$oi!-<`#^4AqnkePA& z$4=j+u+`nwEdpSZC!*qM5yefHQj-&)II+QzBy;Fq!8K~CPB8cpzIEVXjf@~})$-yI z@Ap-fjK$h@fEFL$ z-MzZHOx@-^<5>FMzrFEWA}+E$*ELS-3a%bSt_`D1Ue@aGj=?fnHcEl~7%a+)JMNe9 zKx&EIC(SkFSY$B(pUz!GrYxF{^|1YHK%MpaXf~bPeJrth_nY7=h+<>n)w1(S>s>4%1j;Ef^o-vLL6=1^YBrYeu*&NJifvf&@1Zmtaf(q060KI=w#(OP zi^F>_)ncTpj7<|Qq3qaj(8&KBc#Qnl&(KyTdI#X4JF_ zLq26JBGZLfA)p2`KzRLM;SjiLI{BGP0K?`f1{P1ca)1_=>K#OGg$_CL1iAWk2|wfR z)c&4!5qD3N4Q`iSx8vKs7FCgly!q&*!c>p=eVuOSZ*T;~ds@sx;|cZWFs=VBM9jbt z$}1>~C)L0)m*nqb&pD5><&W0!PD(dL2)tiVnO|VefFwZweH9|Gc|nRd7)xXFHD|Wc zR4nz)&@{7-{BL!K(~HRhy(id$5{x&wt=N!ivs!l_od+v=s018mvs3(AiuNtq04{b( z1zD?$2V53O0J?BGXG`0fSrs*D>EfTDq-KKo)a>gJgb=rU=k1%3D}Zwr9h(!0^2;nq zJp^cu`vnMkI*ABnYb(K6Dc0y@_)pA26g2tRJ^6Oi{Nj%s%%1KJ1jcPF&G~|+#R1XA zO9&z0*Z}(Z0FFMAopyF!k+ zdgz&bV4wf-Hh3U!^Pl|(OcqV`aoBly zV9uoph)@HA29m$-M^AlEP4~U!#hS8-&hNYLy0FCB+H4}8$K;SlXP&N_+t;TDEM#TF zf4zr6Q#*NO-I|dcAMG>=25M4Mo|EPynG(80LV{c;&8AF z3HFtt^GBJ@`)YmPZL2a)iiB%--`EDl)Aq4m)WWGCa>8-e){S;E5z2p34Xa{r;YM>eW88ccf4jZ|Lxg3RxU0T%l zSkDtH0k^Lls^w(A=$bg3%f`&^n1mGYxZl=boYUlM$-V0L@%eP8Hs!)GHtihJ3i=v@ z#jm{KHuMlpoV>i2?_QOOqi5Mgvab;7nwvgYk){xbcc@lIp0z zXvR$ufwkRc@6zc9w#X6l*K$F(880Camc;>zu7C)_ich7d?RQ1|K{xrxK8H(fUkC+1 z7ohP1ngbLV*!7Kb8uY9A?H}LpQPh*stQa`7C%1gF2EM4!GAR3UW^_JKOw_d+V54tc zlv?EqB*Hug0fY@!PC0C4dIC$)o`SwD70nl-Xo z0>5B#=B5$N^1@EV&bdBjbu0+6&SC^gP0<=WD0?K2EV%Z6Hi7 zQ)&EbbephN#`#V|mL_P0;-U>}V|m2SrDj;$&A8QHzf}^}4Lv=w{v+qxRIa2njSXGC zxxuEfgB`ryZKNg)A4;o5F4B~O|K~5k`hP74da&i-!BCon*V)+KG0;7{)ZM-`Gq*dv zw0Aw++q!U=4+^aQ`2ry08+C~RB-t#`v zC`+q72wi%FL)`AHsN9jg7jhMK}!R??OMc|+T_LRH9|`YKXorZeP<80TW3 zCeyWMfCPzT{Y$$NO-Je7H(`7N2dE_YyOpYrUeo4<>R zyOasnhw$o5GB~pzrW3#a$|&UZ8FeJXO!fgr&Dx^qZ}bwGB@q?c>QQ~)yK!}*6YBvY zDQLrJU#}Ar^UA+{eiP>q95Bu2dXP9rQ^G`aTC1G3Jb@4Y?rHZ$uXIV*rFW~fq1S~; z!RfUJEl;qJ_!+uTO9)+LJq$RQRRuTLh`}FFFT&fdakx5i%h(fl+TVQr+mw6!Hs%e; zZK{*Th33)ZH?vzO?Ekb(Q~bkW<=s&>;y17ur;_{AkSvPYomlsHl?{uq0u8Y&uCB8^ zMn2F`7E!}G`+N84f|L)N>IbvdMp&!KvpFTWv)nW+$VzEWR^1zHu3)>_3c;|JC|XY~ z9Dyd2jCa5GMsuoVHTGAi-mEdTQvXj>9Z3L?1RvF6B)%eQQ!G%IjSGcE_ti7es0?v#&Ns#Zk<0d%rEC`6R$su z9Wh72&X7)$Lbv)Eu9-$QqVy<*T8I<~C%J&Ft0aYR)rPWrmmLxlCg#(%<_p53fH=Md)%G0Hwo+LF7 z7J%#%_Ft|(;Kn|s?}cbzm`Oi?>%kC!o23}*f0@gkA#2Xw@>P=L9%tHfxy8AVK*OGX z!3|C)PNATxVg2CmShpWGldukFLUZ=grI(nk?S{dpD}E)q=*fzFC!Pg!;v%Q?tk@f~ z#L*#!jWn!E7GG*nn+gtwLG=Aod%+mVx*%-1#CT0*MB6z>;PsNO7d=T0g5JdXX21aq z8azl}T&aTE5OpevqO>J;0;N9BwJG5hbN>&f^3zL(I})o+92cqROfT`jhdWVv$%}{w z;X03xJtW_>CqjzLAXpkVr^3b{?#jN{)FwihjohelC(>=Ze&>LpZ-!BWXKfigOpZvE zu+000+k6d)!OcIT#Ns5*KKR?Sr*truM9QC@mxPDw;Cf*>)n`wlhX}BROyw7wpO)GBj z6P#1I!puo2>)|oQCQ;!553uGi*7<0;-W#=3TA>DDY0|Ck)F-_ zuhgVu05*2)oV4|9@{8DhSs~rucGk@kV%!U+b=AuAZ?qB2%u65PX*EZqHFf_ktPE0{ zj~!cOwdq*jDD8*ZP5wH|xImuh{#`QOc6A3GO@_*UASh#%4IjM!;~vlcW2x=ct7>N@QqmGY^HoUm#kq7v_+tkMD8@A@qA`V74c0Mi4 zHKn@H{RGc_8p1j^$@u;ugAoi#Ovx##H~OcZ zdWWBl*+Cr|1GQvarkb(maDkVFA!yHsEW+cRn!N_|Yql%5^v3-Ma}h*P{F`!aLN&8S zvjt8RXAxW&*rF8sUeA2`3zsDS(#}j~EEPiIb>^=EP<$V?$CH+B4+3KR=+LVCk}S*M zS#R_*y)G8+5Rb@#;@Xbvr|V9Dy=-;&MM|B*bZD0s1)cF#eTWtBiK3JZI|Bk%{WPWa zOWlBLkSwX)7hcn`rOn=fsRgA|e!lxm<&k=}DiS71j-wo%N!j~8`pQ4=Y-We6V`DVo z!KI-AU68X{0wK6s&`-ZnRH~o6Z|lV#>{p?!5cL8cJHQeKm>h_qF_DUwCnDatecG+i zEJ})+P_D=x9F&JzsMrRKFS{U9h&)vF#fs^9wQ0j?%@}$PMKEG!1o=6LnX^fEo|&qS zk&F$O@qVep6ZUoi7h*=vAMeBEsL0k193<1yYfT7rT2vh=#$Bsj&l>^A!!-^WDr@1L zNBt5MkM?c%6!uG~MtKc6dT719B>i}}RjS<98rT?R$Kt9c4gR(B;g)dx)F_D2?N-N0G|q=` zp2o6q*&Wc6gZU5T0VP(dhQ>5dn0||z)K&fNoBJgU-11rMy@mA+^knf0^#Ii5W(4my z<016UJF;<7BZ`vvPh%%?KfDj`Kaw|Zi6LNVX`b?OX18W!|3==oJ-fQRXEw7y`~LXE zW(E~O7GFvmg9nn2;Sp}d%pl43c<)W7Rwfr{Ke$3j?FH=U?u9lZMrpjO++0HTHKMPO zN70*SL`fb^srM#_u+~rJ;@OCtxHs+@!x`zqY%X6^?LqF|X$Oz5CcWGCt4) z3*7iMETF)qG_#MwjS(vUx>;W#w8>35Q;@BDw}SsEhS$`kuV{va#BIayiI`o;>M|}` zBqaQiBn0gm-u=uRUwDZy<@gv88-SJ>n$M)G{b~VmBEkX0YH}OP(wHqo;=nJ#)sY=! zZkE3-Wd*!kwqe=R;YT_-2j4wHK3($FRgbxx+UwzIKJV*(0FPN(8v|@eDQrxMn!-=m z3xDDn-L^+;S6^5p4R|1?FB?jhxqb!pFqh?Iu=aYeLT(ejChT*gS8?C9%`AdcYg0@w zJP8R+*xqSV<_6|?H=*8olNVljHyE1pH;&qU61 za}9ZNmzIH!^zHOhY+=#7<7;e=c<0ZvcqpSEt0|D(aOtpGXtI`St#5X<++U^BcvA;O zTv^JTV5XCY--=r-z4G$Su+S5Hku?eX8q1H4M@68T$YS5Rn5DbgpbPs5!~42k$Dl(0`7F7y6GLGLWTVP`IA=0uP^@$1W8 zZw&+*tF8--5s^?oSxOsp4Y)E6AfUi`2{echD(z~|xi6>O4Cgfx(;sGqYaRXC7F^iV zl)_iD+H|0Ah5-2eUfgl00s@C)6iLla=sb%72OyyisMx6YzOBYA&)8+? z5J43{fug(fDpu`?{HyiwKFrTf};%36F4ceGXYK763yD(#I? zHX!QD1GFQ2I?J#yF?7Kf)jH~P@!snJSVbKhf!{>dVCI724{1NE{{_$G6a+(DJN_Ydy~w%1^d z>rQ#yFx=$iv(H}^ad9nQUmVSv+;>VMaP88+F2m5Rh{JqOP8e$a6gJH(M2MT)6sD+W z-s6dI;ZWMpw?t7Z^E!Jt_G7kSQM%{BPRbR+bf-@a*UEnYQ{&wvpN zQ#>yjB)`8&OYAtOw9#hifgEO09qbj8n5ci7e2{w=m9k|;2J_uXbTpC@#+VR##f>2t zQMg;I3H!xVU^;{3!u(z%cwqY5xdExfnEyGk=usB%zlejz|MeT*fc=JA!z~HCp^1); z-pRS~xzVYi$)1tX!R493=l-M=L4tKg{0G<_! zN*+N;_a!_W-M3@7$X3tf{aNMdXFrsPBo#Xr>Wsh6W8Zk0PMs1w?Xl74)I_z|``tTJ zC&@{E07y%cdp*)HTrUtO*Iif3r1g_Fnb-!{`w7~3?)?ij!~9wKrFQPCZ`n7-V(I)b z!_H_EZGkaAJ=|?nMvSI0`0#&lNwd~}>GkrMnYBH!(EBX1dP=`BE29_2O1%sp9i8U8 z-$CSC~`((14z2A#sJ}zvWvG>OFtpzg~vEks~5%OH_hUVC(``DfFp*TH`9i|!z z=9m7!=<799U_IuCWrQjTs+_EMNidq#$3!KO2kjvIa9A`<4J8kn$;48#FMjt3UqlP=qI_K=&ztYLI5Jp>9_&gKkiO`(j}*OB zT*b(UEVBfo?jw-hgX4I#_MI{$pd5n9d8HXeX}YE+eB-iVcq!d)dei#}t4|7!gEme+ zF8u3prKjCn!8y&PPgyj&JDMNw3mErBFv5UC&-cZeq-k;Q#MAv$`pDnmJfF|AzG?iC zBIcsE+Lm`wIk_5k=FuW=vLl*1B87cal$&tztWk&M-9`%>J>FhB45fbbzwKvV@e%lD zUUt2TPTk%i1xM|4veP?hb~-czPwGfy@Ac4lbM#CsWHwsWWI48AD>xpzEFl|XN=3>n3+ad4T6uR%y8IyzW@BEjORj&Lh{_0OWYiHb| z4Nz+&y8^JkuhK{#8jc;ceMyf;8}z?o(MAZz<2J0ot}cKbm4AlmcJ1$pprV! zk(xlJ4*I$`RK|*numF}qoi<*+J3OvSU1RI==3>6M+$;XEr8~D3M)vN9}^R?(9;cHCMcyvGWRal28{@1+p!2 zR)lA()ZFC)4&}o`;V0L^hmW}i%_?hYuo#>`s%za|?I-k#5c2Q?o$i6^IpQZ@W0_z^ zOB4rPMZ#BWhZF8w*Ngb3KPzZ=pt-|q#Bw0MB@>1i4Gf4Yjw|bmNl zE!<4ky83*}8nL}VM@kVr7AG$hQcjd4R(KU{=^ZS-ec#?5T?Z>mD87omN`%@PIpFZK zA$!rlH!*yiWD{^yzuKKi|0dRVWM%)-T9+!e)8``XVPfxu8%lWXm>0h5%lJ(sW;De8 zEq$q%CsX{8;joT}gisQ+AdRmJFaR}<*&Tr5Jsk$X%brEGN9|84cGF7KgX&qtLGP)3 zXf@y$O;qL2H6Akw0|fr=qKT)Go3)aDNV_Ax+~Y2Un5s{YS2Gi3vSD0nBg=n#6vD6- z%U0W%@2~CMxx_Zw5;tN8I_Jh-3Y*uG;BL}x1=izd3;bw!rJ7_<`JaR{a|&+o+s%Rk zSi=!HRJuydl@04^s4I24xkIwOuAeVfocaig=1>A@W9J4#r}?rxe(;jE1xhcV#U9z0-ZmHcI;J z5Pcm|nglOC(=D$YM@UW8S*dp-z;b=-b5?LczvhlV;Me|C-*<>x_^lImZHF$jmgaq{ zF#T8Gj~JYZMMsB^icqJ4#R02}(kD$Mi0dG67rYW<(`ubOxg8W8coc0S0?6O1l_0rU zOf5$H!-Z2ni%>Dh!$6?izUp$>v($|a2h0YmvRWAJr^9Bm`KPlwKF+hv5Alz#i`ook zqh@>x_a9Ydx<$wX|5U1vm^C&HpGNUn?tu4t(BzgKNNc8oyaM*#&g`rUNcj`N)^E^% z;az-10^nvV!ec2&|5m3mfvcS*h|PVzAww%IzK)XD*o+;zi{C}9j(aDvSaN{<%t;XO zbj<_ZtDH?Oz60}N9+=@@ei;pqhr^u>osyHZ1*=xJ_W5Q;aU*I47=HcPSPqzbuPx&={yYj?;-a^m(Mr|RGY!-%LQlv1Z%)kCJxNkvUQ%Nww`sCblRHvQ{YEQN%W2Ne$DM`!O=;2 z2`t|=r3;q`wSt2}ovVrg5_9h>hJ(3fzIMhD!IZ4)3B8cC>`=J<=TLVC5`bdpxlRYR z7SbK|%JmLc3Fm&)gFtl=5j94G#=0o!?s_n(nmw(tgW6+eWmG}1t)Z$x=ZBni3$I0h zJr;XCQA_^dmYGWJR@9fFF2Tr`-hgmrl9tg{cXYBwCV40Z*!89aj9~90q}bXFG1a7NZr4Q%|wjn&Toa7yeV>^_% z&3giFcQ^4hz_UE}C+4U^7W&<9=xuXmmdyc_2_`@~@0f?rqj#v-O*_DnU6W;S@0@XXe0+KolvJwVX?Eq^v6t;x7M)UEAj?sPM4pQc<< z9VuV!l+W<64q;Z9Me@K#FLRaPook*07l*B=__7}YStHnf1@?|+1s(NBD40uw3F)_=vp|1J+Me#C_k z%VwTa$)ZTLk~%C{e3+-mi$#LOWntxDx3?VJY<^s!Ygppc@6kitN09h|Kv7t}bn-Jb zjU%OjpKtaS55nD7>Y|p*=ivhFF<~RJ2GcOp_yMc-^npVru&NQ|{z^Ehs^=0V5NHR( zrnXKFAhZKEv_vv9lyPzGgNcosGFPW;_ydQHIK;N53D4Kl8OBt?MLn99E9oL#Gshly zL2c&ivadKke?p{%IcHc6sF+WaUeKiGUOe0>rGq&aRhcfx=kr`t}f7j7(W+R5)*!su^4)i^R*PcapKQ9MxiG06d82016!E50>6c@?q@IH=J%8KJ1 zd?tp#)Js6$e0D$(?JBY`?k`Un`8X-5t?c!Amv@mjc$jESK`v)4{uA>|78U{mUn9C| z-?q!llAIWVO@k`JHt6bL57MZo=85LwHAliggg z)q(jx~V4~*9msR^YYBfQs|6Xir1(WIG=F=@3@;*f>!-;e^HF=%j>z~Ej zZoNsJk3Kx_!xN>ja8m-EC2?Hv+29P7cfDI&W(XAx#) z|P(oLvia53Pgvl2Fr-i)w8v>ST@ieP4{v~=4Mc5wTJL_Lr5vU{$QG9nn!=8R_ z_G*>ilVMs)mWoQvtgCIBeQljgto)NssRxf{ElYEYe+YrZN$pD0DvA^D89uNsSp3)s z%EQs-pXYC9vUn3Ad2XM5+Lozk*1S71&!;p58T&yynrn*pVK4k2;X&xY-wbUsQyjUM zdv%m2$#VEqcXu}Z#9&8WYO?%SeG{ujsxa~+78g=33H3V^_&>j>PkRSqeM-#lSJP3^ z0_F-8i!d>t|D6~@=*WsXL>%_&iyOOVz_K1pzo{mA_9^PzvK?EQ-9czi-Lj&-sONn zX#ZYgNY@`hrGQb8LDBg73YKS?a?89dM@O7$3E@s!qXsc!`{eYCb-i7?)U zt4wDURCPYO4!rNcwhdeN1XveNzJDU`#7My>pa1Rkj zPom}1J6bQOIv&mR$IY)a<}Af4l|nIP;9zo}=9a?Yf%bZYSjak@IJMYy zwag-vIYCc}(MCYe9vz9at>F|RGU0la_ zG8km>u<8y{rrQU4BrLN>AGdg--Va3>5#)120x_^E2XFP-cQG98^#_MDt&~4LX>13> z^aYI>t&Y|_o!`F$7wlhxefHEG0eE2}x$h=pTr+Lfyr~h2cm~jUwnkwJAkuMW-QjsO zJPv91p?D(xJYoBV4lE;+TbGR4ZFlwd;)$8~FwJh>JOMy?BqZX_{L&ZVtgDkfXg{lY zOM9U~fWOpQ(&C--#9Q(LKo>EV*8s7G3wDYk+56_Aq?XVI&7QEes|N8*O)-F`=jE|~ zFMX)7pG!2w&!6qn-lMR{dj%?&xBT}at){)*W9QXQ66-Myq8S2}3u*gnWhc>d>t52t zA|wAVd=vVAT?7!f1jGdKLr-=o}g88|myA9GD%N9-lrmIQRwwPC%v!;K2)P zCyf)$dsZ?7F3?xE3Y1Tnf~{SX+Vp668B$q@=F{6tbm7IWy6bEdf&ku?wD(Tq0{Dcm z!$ZfXWl`8j)BtRI(k3}FbuiY=y6Ryv5=3y~t;(;wl9&8<)@>vgxG04yG$@SaoDlED zPYb;DAM-8R&M`RwBa@SvSMIVcd2Ec;+){hi*6KHv`Y~Ab+Wuos`?b4@qPSnR%bTJL zE9dwTb!sZ~ZnU>r>)l)VRt)WxEK z0exyXttv(48?i}H5B(Dt_aS%NHVsb7o?6^Jub?^dnH*!-Y%qT3NxGY0Um?%R8lN~fG_M{PD2!8 z%I$RC6<;E*0dcZbFCr@b_PWs(*?1zJ)Gy($DUb9*n@RN0bk!8t;Kxo+NpGQ7Q&smH zZnB~SX$b#VAAK=Ut^$S%xD40=#NGX<^}s3-(C}RvhvSDd!mIBuVnb#7)&(7(eBFiz zJig;?zI5VRGutozEh7_NP|Sh3%$VwY9aN63B8?Alx0TtEQW=V!&;F&iHl4qu<3X@v zdWpjwKPPY2H- zbi=>2FSwm1!`_j06~&&t%(MmXQ>g2*JT$P54PNcI-v}>dR**jLgRwpcMwdw-&nteT z?-4m#*~n9@xl^J`8u;#V5n7=Qh*AuY5#TWpVaL5{Aa8fl2DBd68YeATJa@=X803(`#fSAsb7YhG;RESn$oe1JzG{^5?NhF zkF3bD=J$t}X{H|};?CKz$B2Ztw_Lb8Lv%%EP4!{G+7kp~9UH*08DM1UM~dxnlN?KJ zL8S=;d_8Y?3)=L?sV;R~+_Y3!9qOs5&Hq%ZBBGv~59S{OZ)`J8VapB5*8VCx^Kb{u zn|16Ygwqbwr_{a#w0t-s8C5+DX8Tw%{sBzy%7v*(+I8D30de=dpjyRWg%K<`JpSnQ znsUP)%B)8`oiuzpxt}XE9QKp*%!yq*rVufR&Fr3X=R`zXohA3+dx@V~URJl4U9BM? zHlhapV5%6pgA)kUxTAg3g#~IJZorL`l2%PlDj2WcxkcJYH4;<%Qn4ZVvMimT)F*Sqydv0iK3=O6)@seg_~|I6)M{T(RDBM-|M zB6F9z)*|xd!e@aAbGL?+b9fPm=c~(ghZ_%S-3b+)H?LZk>!)=y8}{83^ZjfkQnh`= zcH?$_qJ+3FcL2hsG(@Vy+DI~^Sp*apMX$J>l@JS=2k_JxRYNQR-#|BrQt%7@R7KK* z1nFNxnoj(?Ql4MkukfyN3k-`bkO!}nN@T3$LwgZfbZaxchjd6a`4Y@`2)+39@K3vN zBHuKBG|h9dzoLWvo|Owvw#cOV-x9<+10ZX$(W<#d?IAs8SG4?DObdZ0JQHzz6ZUua z_wevQV0*EqBbR5`Cyrs-tyDFRyX^J{nQL3y-NypPS7_ghb7uW`;%RH#JUoT_^Jdvi zf_G78A+Qz$aV!+0yYC+F{CAJnUL(noNDb=7Yjr8KYIiqL*8Z453HDChh@5%*CeMFg z77>dfEHMsvbJ%cnyBg=8zHqMbQ82VSkc;?ju;cob^GRFNx?$N#8jZyv5noc2*~?3M zO$jd!&w#!%*(@r!pFsImyG5BZFb*}p$&|~z)_gx=XE|}+8b&fA*K*5=87)kG&m+_Hz~HNgE;Cxon(7yr4r3A4RY9j5;mi5Mybx>$+vdZB!y zO(ryN)~ry*5_x73}G+?%ZXr!{-R0Qws~rDp^)O|Aa#+DdULBKP3sY zL<4{MzW5^i|0ItkXjH39a`-XgVZf&J?GF2CMvZAcygmt6EG#aCHvoFZu+zzG&x_v0c7 z5#W(&(~Xu>DPdD!!al90gO&USS*Bk$r&;X8Pi@TE&im z#!@74gBvCWA?qMX?bMe~_~VPezJ;lYYw5z$&a2=8Mlq`Z?xpKb&1*WCmJ^mb9Z~e^ z-mWDi@$9nf86Qk69EVTkc9g-tC>p+s|3c+RI=`h!-$TQ;$Y2Gdv?QBbhc8VrC#18e z^TVS4Kcdbus*3OL;&X{hr_y~1m2Qv*=@dk|q`SLYl-PLAtw3rR&li&-h#a zwH{yKTZWl4bH4lRy+6E_D{jzV9$Y?0Yx}0RVaq%wBT6J(^kZ^8{E6vi#YeMAhF~Ly z92oEr@JogSV$J{Px*X`$5|lF6v4Jafe6FZ6c0H~l+CD=7Mo+q%0r23W!`c6WOVmF? z)8xso;y~a7g?4&nr5}GkMNYw|I^T@llsHpco4eOs2>>E`X5@L@*?hiey98ne&KvfH zT7bDH8F!CsplO+O9_0WIo-Qe)w?Lb}JWtDl> z$hE2KcFuuigDGG`lVuun6zH1(wR>=Uxm& zKDBPYGfBgJyU?EE7jH0irF0sBO5=MwR)Jo=WRsZpa<&&kU7q-nK`n5K3~~P0fg_Ak zQew67m5v@?M?KY-d9?bwW%qV84?e3J!0%yFoxWHgVn;~qa%|wjNKfBx>Mh5d8&CKy zDUY+0-wej|yK}w-vi((i?A3oX26m9fAOH!3_HRA-)G@ek-Pg@kO_B#i2MVxK!y)`6 zYQ~ZYg=Sb!7a3&_{Z(HCnW?{@^Tl1KVUolFffi!W1Kx43Vyb$5su;lIO4~r+_9EM};?;F*_WrdK z)u53mL61Ip^RXi@dAc9N3xkQ%j_xBFjmrq*gXkYJNQ%tgV>3Y#Z7uw+UWam9M-*A! zKi6Sk@0TX(y%`adj3$n(^(d(2kGvIvZM&FJi>6J6Ks3zi492N-SR8~N`!yCtcMP>*0G#gq%D~fGN8p%yAsHSAl|B#B;o37 zarb5vhcvakO&`o~zOAMUia<6arG^`eAza>h%rJi&(Duj~b(miw=1hR-<2SOUlT1X` z*l=nw5P>f)Gyu~meRuyEs215a8Y8*?Ok*N{p~Xt<(mX7CbBqKHbUy*;2Z&#-R9WfT zz>AJt3O$X1$%nofvk~i&^Qi?-8YdY2EYC1K9 zLlZYvS%MMy+GF(&@j|Cum)KZor!FUYk;*4npUFpLf5~!Zl}!jnO`%hl#K2*0*1 zPbfk2#z!NyXp{BNY%y%whFw}*q!LKvO$q_7?+>y35?^k>r!lQwdQ1VJ}4UL!=&?r2VT{w){ z`3;nKTvFVHForbT%2MZk3$uQ@+H(95iU7&o4)J3T`~rI|jJCRsFUu(YtyHsVlqRM5 zv^p_$NIAvq{!~T2ge<@gR|uGFNu`p_OC%RpbvPhXLZa9UyiXnv@Pv#nFBpVZGn5nw_ry_=2ASNe@bdxkMCB@B=kK}?@3=~GQMY31p-fgkAqt=Ep8cA2(YURwUj=E8D%pBh zkkx@q&;l^NP>Rd`7Qk@OC;0B2aNoG?_l=ipUKe29w*riON;(XV0sMnWUqqwW@!9W) z-p7G>!ZK?36@sPpl`~fbKJ)$VUMe#x&28$3h8}#e{m4o}bN)Ut4y?Z4418#o|Dd>a z#Pc>j@jN@~2qw&qaWi2z5ZrGKNDMRe=z4QEfT~6kA~Iixt95-DtM8PF#o6!KBjZ>L``fc|1&?7{J(6$2+9^eSLSjFTDn{7+d7+n zwf8TzcZ~N84@`}AkAZI&EC9GZm;rURnt0CF=B6@pLZPS^d-Sgo)$r;0zHK%&I)I?M ztFGCq*5P_RSY`MFN$2SvyQ|Sa#rDz~aVOa!z~_;@W)R)RB}*19b8&Y2onE9}oNoIp zuANDVfloP=C}BQ2F84`_TNv?#&;~)2DRHlKNwb{}!U&7SUS|_AAm}}79ayxUr|Rz5 zb*z*UyBikye9Wv65gwk}NBL2JzBg*5Sz!vd`EJ;kc28{&bNA>=vg#5hh=M=@vsdPo z4xlg-c^`xrAJxM}25ZU)EEx`oPm+ugok3}9_da~pYWF_SFzZs)b&MOcq}43}m_yW- zY%Xwr;=ke5YSy_UzX>4i>7%`~3-DOG*fEGMH2C9m^JkSZU9$_+=02-Yj% zzsf5ot9t^7D?wq8UltTzmMA*E#*2RejiJ}H5(bT2oKHLl$>9l({gECNM=o^_+q&g~ zw*f8ME$Dv9T>>9yZj?9c_V2f9DzK8t@$ytD`Xb*Fe5Ey?FuK+Bl(j0LHW|fd%hKQx z*~Q)G4bylQe`rM|Ex?0dq%e~3J6tb4)5+8PQvW!ZwUvj@4b39#1LtlJs#@N+QP~v1 z(DlW0yMibuq~M)ZL@=5EZ_-}?T_->b>W?GyvJV^Oqt*|THcR&1@wMCA{+$v@bX?%X zFF85Wk?u-w!7(&yYsL>IMZ z=ic?Q)2AxDO+I--E42@yz)fXTln<_fshNm9qVICF_lJ>>l9Yz49#vQAyXO4TynQ`% zDX6m}QA-tt6vBqiQ=4PN`#HJ|6V)RHuSe*t-~;ND929trB%mn+gd%};{1y~oWR!5( zv{akyhIfq0w!yi~tF@e+5P%Yes(zFMyA)N8jWPrR95f}M2aBQi%7&djYz_)B$y=c-^8?lt-WxCesPv3J)&|6Zshmpy;(G^!~ z1i?DNA@G%B`dIzXyvp9+tZCX}-CBu+fx$X{EUr3`Z%Rkc@wo>P-Lpv3Mn{zKydo!$Q z^-O*+B5>TtTF5wK^uf2xlOG;4Ps79-!b0UTe(PB~>YZybuxV=M>_kfM7{W(=-brv{ z^U9`eBb4eRsrLuiY;iT#eb_n|AgnQ^_7GUxJZ&NIzX9z$>_BQe*w_HNrW?+lKO~m2 zZ>MOf1!G{MrvaVn`0wNrRO#@cH`aSrm#3L}4hC)SmP`%yD~{zmJfeq2pRoQGwc6k+ zU%d$V0-2Yub>Iy3MflFXV}|=9>=J&ZCfjjkK>-5V3<$i_-*M+22HcmZyXayu4p<6tc27VDpmXWzL0=Tw1=I6*n&o~ElwSc0j z1SbPu2jgWYw<=>>pXhN>9)p`qSJ06Z-);Z|LOkOoKR3T_T3>}d@Eje*5f(B!hGGB% z#qws|bYKky4Pjpv_nfGwW_#Io8STU;_gTlv+g%f#^+C4J6>iZR{})#xIUAb%1wqiK16kp!1cvn7ScNmQZfe z)8R*4|0aVRj*l)r*Xj<1S1g|PJ*hr5x+#aeM^>|+Qs&NKZ0ok!-qBt>UwuRK2^3Le zH!~l+1MzMDe*JlT7liEx-baQ*t>#~aVpurTg3Rb*SoCSG5pn~vYI}O~bH02N=X^g5 z+M0)-5@XM^Pc;OsYwsAxVT}}vOTJmmZ{8sp2QWjKb{+p{kw~ZGmHQS5116Zbr>#|V z`G#{l@jM+$V#Y-pbmV>8HxjqsB}zl*YtK#aKU5&eh2gfg)NOn6O||#l=RakADopstmP_762WiH*`Ee)UK;!-M}WCu<>vt6 z_{XEC9^3H-|)Fdh&{gd-*7@=n0!f;lVwJJG%ah2&Kt4Ui2s z&*X9fscnm3Cv;7=x1vQ*&vB`0$RDX)xdJ+vallpVf~Vj1-{z$t*<>yUkyI2$lq1(_ zY~E-4)H><()I1NCi`UbSZ1r&Np8cuJ#E}p}MKsd~8yWv+}LKGtp5&!9?0-34%-xPJXfHn!&dtQH!BLytEj zeo<=XTBfkgX7-IqX5-2LlXg~*ti_(`pQhPzBR*RzgB#GY11^v@IRpU9Q9gm#fF!FQ zqp2|uQlZ*0TGt}r+ad0Zur-rTP0#QNTqO*$u{lMwXRi~BGeqPs5Bgogw79i+2Gvf> zZ$+hZm}tLD7G#xQO;b0@TMX!J?%rUzqG_v+X*H8K=U+{nhUrc3A09>N zx}0T7-srb5atd=l(e#|gnpB&)3kC{ZNsV!*Ju9s>MP)A29<}f1l2nI9_;R@139CKU z3ww+t9Njg4&)Z(p{j6>K=hy?=?^o&morLg52OW0nVXddf%0cgRj2?mj>?)2xUk<<+ zC@!Ic^}ZZ=-KaTZr{+&SoqAUoc419dni~AZXX$l0pY!7WX2UndHg;xBOvildGmo&| zz}f&Jia<(%?kR>`F9#IVaeiT|$?X77Mx8?jtZf z2|hDz_ihTQ&-_bEhYDlcu$GNsqt$e;*PCUd_Wi_j2_Sbv%@vjMWGK*t!FZ`<@8tM0lSOY= zrz;_$N@unoFUAC0PV3o%6m8&7e>{j)N-|)s3wl}!);y>NbA050<=Gj(*lBsqqu5sG{Q8u(b(m=M zm8n7N7xYe_Y7iMW2a9469PjM-!bXehJMGF(EMRo?iwHL=QDw@!82fA3Sz~+-K+t~obKm}p3L%9U`SM(%lF#)oFc!yeA zB;liDp6N}@HeXn_R9dsI8N=vNM45&Okx8&iu3c?>p73CSRR%H(P_VV}NAuucrT7es zR5uksYVP7a264yb-Lix9n+F=d7YtITC$*pZ4aOq`N1xic+-X1Ulpk3+@a|H!_GT?e z(A%e;pXtmHWPKL;>sPBn!-`8cS>neMOt@;^C##Ef7GA+4YGuj{@;=>i~#ky&iJQth9cU|P|u zo)KgJ_O@@B^erNPAo77s#1S%GWz;J<*sDzD$*JqDA2g|Z4<)LavuED76Ha=|EamRl zE>Y^+dBfwAIDtO0W*$^bozO47*C>b;F@58_->>GH6M~Rsu9?*RS0mK+U1S8N9zV>06aqc$%(c_@9DBj8r z01&U4p6SH^9kt%TzcC4u{AG^F-uY$t*Sz;zr+th)+=8v=(=)qe1aoL4B)9QGmrZ_9 z$H=JU3s!FK>YvS>^-8rCvefAJ?TNPFGaT27vD;!tV{I(llFJ3BhMx_evNI|rr) zC;EO3jy&Fg5GY&F!H@s%7M8tcSRwPtATeCPGbsV12-NpTB7^*}fe6#^DGjcv)6X*P zSD1Wb7`w^Ka1S5GhsZu&j-N9PD8!K#14`40dj6cI;uqGB56_NM01{y6iM}xSSml)1`DP#)9nNuD=#Yaj`Iz_sw+)Gm zRM@<(XIl(Sl4a9}zfR?!V}YRO-&nVdp4UsWI<+c8J`lwl+zYPWfF&sZ9zk?)*Xf4| zD+#;Y6Jxdpj7$-aOXNXoo~(wHNo2Y^f2B!=7yosUU)7}`QGUs6eug(EA6(HgT@D0V z`yAkkU5XdFqHC>l_=Nv;wf{-;TG*Qwr*w68v#p0@n@Dmlv*mSJzDRA2ZGL$=7m{Ki zBeQ>hqPv@3v+ATb6c5GYl^ibmhTJl0_X)SjEuQt0qGVD{9zE>lhC%qT(PFG6$}_S| z(c$)c%+vNTp}vy~?v=km47{m%_SLopkPQ+Az;5xg|Jp-DsHN<*`jAvVtI{*b;p5TL z!W!Fh;@H(*TPk$j&#XNyB0@zF5{fOKj&JKNN7CNL&bC~n8^#T#I<>NHukG0nz1R|5 zwzmX>09^^%D{MGoyl?XG&S{vru&CxMxs?=+{A}Sa6jif^@bj%hJ%d&<{ZMtnn9Q_Z zf~dx=ZuUz4a;}Ky{QFE6EAJ29P5IWwJll;LKH#y6@Z{OYO{e5#v+ue|9D;yH+F;{J zZZ$|Q2E?d7jfj_ix`;`V6$Vt_fI%FNJkugrYuQ%F_j=*zpFcxC`c#~XI%r_WSE_M( zpGvTN`AWs@*LXPNyu6lU3NMR!Vig*Hvm5r!_-jH$duV8x(KvBhS%}dB0U=2$Dsfu^ zM-aAe-iG%I)n{{&8lOB7oDF^3Y|lmJps7#wBzMQ%Nw2q~TO*eA;9D)Pn{4f?ga0~H zaHL^$xfx>>64J>rKd1LmsEBqqrr^5U#`phc`u^8o;tzmsLfnMuc5y9mrCXv;C=BGw z!(dnNFd@P4y3FjVsOcjjr2W=qY-I!gEtrw!o#SMX+C(f5CvM1b>aLQ{bZ+$I+Od|S zl}`Mar2qRob;IWxx6_VmTQrr@VIq4$cxh=!V)ra~2;_(G4=Q1KJIxVhMMnWDttn`B zINw(nudLbQp)>s?Z}^tay^s7o-K*$^@%1H>2wu_M4D&J_m}j~QJy|T=$~@qa#Aoyi z4UJ?!iB9=s?`Cp?G1^gs51flJ{^*ib?}C-Y$aS0ZD7yt(CEdH)`T|fPqEl{)(3bu9bv0S zW+O^S+xUbSUxD-XP>xTZEz+R@U-iL?I}7WX@)#m}ZsEyeTILNr;=~*L3MK<@12@ep zm4RHK+Kb>o^XBT;ca}?A2x3DQe~fo;QbhmShdDldeR%(-*~NFmH#5~`a%zoV99S}+ zfqnTbg)k*Qc0U$9$D@k$3V06R@p1s!w@=9pUw7CXh8( z(z6iTq?>NS?}7Js1oM_dV|l=w&44c1{g-IXz6P>Zwt8A>;x0iPzxPbF8`svQG%tz% zJS{(k&@+};LC~-#SCQ!+@i+WMJ>@%l=y_OA5$iR(Mlqz8sO&0nW-{umL3u(P0g@@~lHd{#n>cU1*`?g2ziX&2eEvq9+jSY_C{K-!i zn_4gxvQ!WAYOX23U;(tCzU=t&&zJHt5L;pVqLR6gf7anO<_?)OB+W=4V566lmQ*Ui za~fBSB+VYKw%Nb&KI9&JHuwVNa;|^siy@8AJFT>O69sAG26&7AGQrd0obUbbZ*$Lk z)%#9|VI}wKV&@J}z6zBmxu#01y~7JwQ1GqsD`E1hMZB#oR9L>Tqi=i%u3=bVAAQjt zJp#FkedB;z1FdG$hip+-im~s4Y8Y;N8igBUEwo?advTvdmva?;a;anv0fq^Ln^z<5&rkd2P}G*!5aa1` zcUPJdg&@>$oGR0g8)}u3lm1xLhu3opA8Ju)>!E!0m)_e?RiaYH z1^njSvz~|JZsyLJ2PFOj`PexLQGLIb9OUR0GIV(>v_h1FN^MO4(PZfUNmi|G|E$d@ z-lhf5k9ZM&B6}LvVo(?0sV z>)FlxWaxN8;FYe}8k2EoHjvfE{p61Kfa&Qiy(|UbCnPdG^Wl-1o&B5CR}>-+R%#DA zuvw8K7*~%%ubpbEX{PXYZaGqeBnO{vwndGX^Ql7jwNA`45(kX#6>pC6*0DMXpN z$Ao+*BH2@eM+g1N{*VwLMN@$Wk^lvf81mr}bn!}2VezNkSeb>hZ?5z94%u!RJSh&7 zt{8TDs@Ebbo$|s}Z5*&DWTDCezlN}N4Nc_m0Ya^-8dUL|$uBs8+ga3d2l4w4Z|FWp zU3{JP=-3&-3M5l|lpU3|VzozL)bD2&)4}0)exi4=pktos3&;^-Qp59YInROL*6mU? z3|K^NjFBn&RC7-v+{Wx~Wc1AYZDrfB9852QM8Hf2@Qa+-{t1x*+{Sflcj?*a9Tp8q zdA#^R#r1(C?wGnHjq@wrr-+xMw+#1G#~ma@2lR;G_<<2h5YI& zIrL`2Q2AnEA!9FY|8wqiVPmmfkLu>wza}in5APaz30myxIGeG7hFFnv9K!v$fj~<# zTPp_>Es)cF;t&Inw0be9>e!H|WlCw*Q!HU(+!ki(k%`jZp}Q}w&kG&kH%`qo^V4>% zQCwOfuFiiI>f6mXmqSNeNGvAp^x)?6%AeUvSFaF3j~N!YF*UDz0hWvjM6Gn)ejzwr z-5%8vTSI$GQ&I|8%9NN&M(ud1m_0HsSh>Hv?OuzdPAwY1aS!6n`gDLri=n}Dhe0y^ z;EwuZn7U-|>!`$t%+vhEZPlgb49}sGmX5@uU|h6%#P>P>37JZvfmJ;2m5_^r?iR9x!@6ZEds5;K)p-Q^yUNL$#) zlAfB#FZG{0s*}jU8tvE(_hQX`_E3iYzHyogQ2FWaHHl5-D)_ghyiEACB*jce_=|$X z+nJAmc&QIY+=jRQq~orQ^O~hzMLCX!(}M_wM9$*&?IhsU9^)yQ%jY6GgXOEwx*1*! z>|h0U*IkO}WEjo4PQJ-qY_VtQg@>html>9x=>2FGYmqGxHdd^1OSfluSsQs$2%kNu z>KWJK+ncnSzMnqyGUPLJtt|a1?P~qOT15w3_fYVHM%KF70gQ2RoTDw1pe`X+R=F2q zg&6BD;OtF0KpDR&b+Z}O1wmWwk$?Ujy7u1GG#r9zUP+P*>qw;_MS2FKacG znM!=wm?vd5;ky%1s%b;GqwFa1bC7AhOgX=LTkg8Dv%B2Od1jKA3?E3=s94bGpTtv6Rx+P1NM@73LndMnVI;W*JkS4t3n0o8r$c^ zrw_Zwv=w9UX8NKMUpG5JV>(?XFVn1{WU!LYjUV(Xrga;ddL9u4S}xsLWf{*9uaWm!f)3gX}l`oL8yY@ zV*otE$lQUD>%-s)HV{|!+YgYV`-JexJ&_u#zAX-}RbT4+ETc%(PTAz!!*I%B{Ulrq ziC5Gk%a@t#8}=|0v}4gP%>>}D3#B6wyGJ`F85;wR7dFt3(V_xB(`)mt7fs`LRZ2iH z5m-{*ijp1~*un?Ag#~wJg@Eizk;cpx5N@2U~t;^Xm2c^!i72Eu$_Gs0lYGD(891?DGffR6y{}=yZr97 z%m8TLQYWIGLO$k?_^cvqs`q;d>8+xdY$K8XvyUNWMI@ ze{yQ9r9&iTLE2dZv?A*TU6n9aYRQVdYPxa9>goPx^6+(Q1n7gLW z*yv6oE}PJKY$IB>^Q&KFK}xEEj|It-y1ZXF#8Yo#fRF(BO?~BSE9}L*AMM3oq*#xi z4$%1vhUsZ4P7B8d@<{v~tg{ka4vSyA2ry8BL)SmNy^^8Qzt+pR(8x|wE<&#wsJh{s zk|b)76uiP(&qpj^-oPy(2Rj-cKM4xdboH+#l!LywuAVGpjg6?;$JB2=`_iEFXf~( zlS`F?za$F|Ey529NU?7PzKy*S5PC$**DNYAf3V?JI}-ke%saGOfY7Lf*X!_?)TEg% z#v)+MFwZAca*WX^rn>56V{Sw3GZYhVA|X<=cI}IvmgMe^^)#}OFe09!K@|lm@P=K# zk1F%Ad0#*QHhh3X2T6i?iwF4e**#E`E>qw66=gBxLvqL>4vLUbh?U=P-AR~IIpfL5 zwnPc9?havspn*wEjP+c=pV}$#YRn*3MBhYU)#aCtA%vJ1Uf`NfTac76eVDk=Ug6E< zq(EOASEjpf`TUKjenrdk%j?5qahS7-b0*5!bJ}(v?Ob)k48rXv&%yfOmgY6vaY3?R zw=5cx?AYxhj910D9Wm3l;Z8dTmx>oxL2pA8W{3OaX$d-``40sm+V~hgcJj+jtaBY= zp?JMw=VBG0kooq`$kg6l=bK`owlku;uH>yPiIFqQdD!mAa{l^o=08*d0-a^xkRc5? zzbnV#{c5YgC0WuWm@*B$h{^;z8bVXm1Y(jBl9;QQBU|eZy%g5m@XkjJ_U*17hxGk+ zFYqdlx3?`&Ok#(03`F&74b3R{8dsKBIgdpGrEv2=O)q7doED+Wdg&Jal2r-J$DBhi7{`sjIdd_UZ+Xt z*L@RD=0F3$7y^i6eW!!TDXIz!*q490b6DQkD6{}Y6{}cD>p}*k7q1ox!UGnl7SEIz z(FQ-8h(3^p;2|IY?2~`>_jZ<qHy(OdDS3b?!y_a%-WLoQWA)>HqE znCnObN^>iBWF-Sb>6C43b-dbNWe5mI6OX%i8` z_*fBo;&1xy8!djAFKZo{t2iH!WJA|;EkzYG7f+AUcuIOP~Z;&xLW8iF0VOWr#YvV z@^0;j|Fd_gEJyfwvMXKLn*vv7jTeaq$8;=e>>Oj8eE5=WZig-Cke$iBSX}79x|H*rG^_Z`3^D&1hzGP4* zy0~lgDd7WZ;%KM!1Qj%DH3}E-#xf%_WuFHce4D|y){g55g(}lp2KcwqApe~ft$xy2 zW;S67!R2HXYvO^)+Si)O+Qi>{q0UXTB@42|>g&6>0CN%5%|CajCF6CNeYSequa73z zw4+IP3UBz_re>eRe>C~0ligiRGuJAt=&jy2n}Kc5p#6<>y?V|Aob`37o#0Fr!mATG z6yAiC<3Z}r`pne9b9S9jetov7u1}GrWme`hZG%s8PbnYVu9eN0zhNop@kVYU-)rOF zJ0)Duetf?TM;E&%0DkPVU0OHRG=A`;NVR+Z1F!#8w=t0sQre*h%T9P?EPcOYX70rZ zcjpidX>>4%pxUZ5Y^}J;VwKsh)eTO;Br&2gXKi%y`52;wrGMPC47qC}@z=4*9{LnP zVy3^4Czxa?|)3qaN1To{0XuTSOBQt*Q@`S=%uR z1(@j00xDaEh*0HDRX)|#5Xax=YoAtnB4TW+gvrq%on4+}r>F*(OrfP0vMfbW>!n*j z5KM(`PylM@2KuR!u8H0e^H76lFv|XCO`!xfhtGWj6pr|NvI(C@AL%3=ZTZQ;(miIG z9kAZ7MGKAv#iO1Xm`m<~y(>3N|4a~rhGXD)yAUl_y5F*$74K6SMXa6oyiL6}^V>ia zsADqwDpNe2wEAq9N25dX-2TE+X7%&Al@x#eh4%(uikNqQOk%^aygj@pzY24~rmgnu zs)BZ(Qc90mii!|K4>6%-9|iR?r`#5nzF>&lH4jW$R1*?Vzv+F}h+!l_%XuZ1$U8qN z3^{2=h(|*I!*%*5?`vQO z)*_kt%p3Z-0mU+}Y|tr$n+2IaxOfL%k?kRy_);&A!-K2P3U~A`WP5~XWgdl zcDFTaud>r$k2v8@mvNhPU7SH>*TW6m=;P3NRkY>B?j`yu>&=|a;c;I#By)z`_es;vVs~ zv_02)C6!@pj}*P4zVgKyeF=Q!$hY6OS58ihN8$J>s#K8qIq2_lEbh z?iLr4E#6~BvIJ2&9o1_nFH@$+yRg}?xcEjbN538!cxYZ!iB+ijk-xfQ^!*dEKL|&l zW&qT03$XzxSati{>%O}NO^A-7!Yq+;EFF)6{5P^EjyxhMGa&LN3bdoh5WLr(sXYHl z>dlv1@#OjaE!^1P*EQYrC+&%iHsiJer9nOV-y~p-{t#O|N zM-kL-HJ*Xi0TEyJKt4Ph#ChHztp{Y+@y%GMD3IX&>XRHy-o=Xm?M8J$QBF624-Kg_{ zSQ$8%D?()|VxM1(u=Kf&l>)N`(gle1QYl&tfDPV(dFkM;(7A7a?~*wr1&R8hIgc{c!<8f z=nPi9fvBG5qHQREn9*NDg+*`bh?eJebYfyv*=)bnIkW1!5)`)yD?^jC6$U~t#*{p2 zZtSzoou2Txv*sF!=f3xMuk%7;TjC?y53-Zpx6V)N&w;iZFp|aHvEi@>W-gWSa1nXD zs#z5udO}_IF(BN`Dn^hO!O&C4`X7XM1H_4vWg0UbRK1B)=I4gqM9E|>AwSy-SO*2} zRNUP*r=;ejTb@jl<+n+!r7{~{g}JhnIUK*ET9$lcego#delgVyv7<`hrv%8;0cTv| zhVrq}e0@SDh*%ia$Q zc#Pjtz#K;JlX<<6XoHcgqmo-PCo}ts|2juRlw9$Qao3!uKtO~=K`sK2-Zp~-4kuLo z!G1Lpi72M814$ydE`St-z%86gz!^-pb4W{-1nR?o1jIgrErpJpixAs>$Ihn8eA9TK zn|FU(RrP%Pc${33A*4;3$-{k#L`fk8K>?^^^YAWrrvh|-07m&8CCWSv!o&|#YuC5Q zrsYG(s=JQ}`S9x74ge8YplVNmXvhiqfUPxjXZ@kN!rgHydq`8-;+ppLhvqxwbtoxr&0Y1|&D{I=pCDopso%tIAF?!+4B6+qOLfdfyBc@)vFV zx#(KXN%JShLe}jQI%g`y>K-H|0HDc3R1}4I)O3XGP$n{k36ir!LE@OIiA>G>;~3pe zUedXb#R|lN&g)i1^5XJCgE3TRS9w6rh%zZAbDQ?y?jbK^of|J$ zMMaWVHt$!I4PHMjH$OjQAo}PkGbYkFurh-DRw2-2a)!%Xt98x17Rqy$I5nW3`7iR1 z3A+EyD=WdvxrNZv!on=Q5OpnpQXEGlloVvG8+=xvkH8G{Aj z7aXNkA601BxISRHX*7KyucQ8eBrHJUP~yV~*1oh> zDdt={?jdWT0kkoL=BY6FQjcLm$p3xf^v>-JO&U zi*Uy`x%ccQKc01hT?;SLAY8It+V__oZm6K!phD0F9*vN0_8^U}H{Z|M>}|E(mBr9Z zpPjq{od`ii<`m}JnS^Zd4d>ak%{;v;Nm{q_euUKpFbMM!JO!Ww#31L0*9yV&L6+3% z00%%Ury?H}0bK{GPmW-UEyJG;(Dz@Z-280PF72;2J#esDgw~~5IK+L51u$KveiCKx zEC~M9r~@?0=n6}A=rE5~S~+Avt?mpJos^Oy8*Y&ALYnk>qz*p&;(O*1Gz?!nBf&4S z#a&W1$Fym=K?^>`aIB)%kxuXDKRh$A{6(8iQqh(CT@uEa%Vz-z@rcm*BjSNsiV_Oi z30bB_yp{|EN-zs7rj9>;1GbfNcMu`<_ma`f6<*fjEq`_{s~Q2=%Se3zwLJvlQ#E{A zIi1SmPn!l0P!lDcK2}eNh_?R zok>;tLofry_m9hHy0PSic= zwY)570;eT4$+`?nA1mkq|9=E1VE%vrB=qgP5i&TGVQ0N#h|@)wytj>mVy?5@M7@B) zVDu;&^U4A*HQOABp4wfOYLA;E2l*|a3@ZUsr$3!}t)Hkv-!_o)y|@c+wRvYoj1;&n z{;7cLcafaxWOK1rvC%aHD$^w5&e@dAR9#JLAv{J*BWN5$GXL3dHhgwLr?KX3hl z;fQV_IQMV*0uIH+VgPM?H)rF5J?GBVxpcauNz$$l;&;79a>GZxG%^lSuHA7SVX>W$ zQ^v;Fz^5tNGY506n(Vu8JJ^gk{*C|IQ+^Em`{^jpIWR$xaK%8FnFAqz!Oz{<+jR>7 zGand1bn$oImjRah{zL58jXd?Q#7j~%?OvruXFnS}c9Ol{gZ*rlB(#N3oOLS)$1($f zhz|D8UQYA4AUxQB#y|iA-_7WK2ux6mH;l+i(Ol$ACG|baqPGjGfF=1O=MzO1{ zga#{u5%^&n9@LO4h#;b=2})oI*Q9+l@@tmT*cOF*cvDXB=bb z-6t$CmiMnRR?#2}0SLtAQd0?;12|OBYYR}2cOc^~5Hm*b8?O_0r2aa(RgK0bo%+{k z_~@F)k)J3MMV{CNoRHuCiIb}d;pR0mfYf{MN%KV}fs1yrVsBr8g^g8Y_$lC*G<)P8 zqK_+i+EIpNZ;5|c7z-KZoMwEDeke91F-J!PijXYrtdyv|C-)M9dG&hs9STig`5lzI zJB+B5^UPC>_T|?HyFUxwP8FALAJvBxx4w8|-eMe0&`UpDYPdB~f(9IXKo+FeID=Fc z3Uu1SZ}~y|%ffWDLjcH|b)t`kBFecji#55bP1bT&TbyL&A8@ ziH47ah@Xh|+rGqOO81s%Tx$4BaW+-5t^)T>^r1DBaQxLr6$>cPSv9(n@zD-QC@Ax96Pax&L6+ z?7i1o-6M151HHqT;N7PSbX8KE;!NdDVL=$!ES(yj03;vhGk@$f@FB_ZQ=LC2kCN~q=V zpVA*FKQdPTr(tFQauJ(|k7!Z_&OUGoXar}g1{p@7L|_o$=jIJ2%3-TT+$fL+&wlE7 zqAstMZM#QdtNHVAoL8@%(K0jZNwFfxGjNf&o0g5bDZN^(MnI*mEH;Z>;~gAueZNLu znU11-h1|H5JycAhnEWxQ`#Db1Wvf`cN0JKr;d+L*NW$_5<5!Nk*8sH~@#p4!I&@_? z#jx&o1Hv})BvX?-RNhD`d?F&dhO4Lv!^-I!DcdpPU#+VnywZKOmR4kI3F9(u;DM31 z7+~yD+5o2#@ElafFtyhwP8qz!CjND2Uk7!)o zGpV$%oCEQh%*#I7Hw#v|Y&n)Zvc2PRe5^J<(#y~@6#8rf_S@I91H}UA&trg`{3>9o znG*IM>FqR594t0G^zR4gKM5?&K+Uv$-;-bIRL-AAJ1TBHjSIh-a<;e3Gr9TUx{qIy z9!T^HN0T+$uPE6&XO=%gVY!qrmv9x=k3roR)M!|sqLmg&9YSL1d2P_QS_l?>>ED88 z!_(R@Nv-lwIx=;3nr!bb*eTL1jo<|tdVNJSTWwNT!Jism1cpC5N6@ApmSlM#&IBsHBt_h3fRivoQIo6&?W zT*U?@lG;*d!opIMOzfeLO!lfAy_)A$x3| zGh&7L-K1;}>C>-B_Uyu2H))xX%}A1z(s_EB`#P9;L&;MW&%KNT@7jE}P#c4+u{I*qZ5@aK_f zIjSYcJxD_&WhoBJn)<7X+i+CHsF3UK1lWOolu+mkt&MZi`Xp;G>HQQ!;YllI`HPBJ zKp-0OAj-{#VA5NS^BQ9!94}V>Y%9q>VX0q+h&UwUY2>r^_x7`zTErX+1#2&!o8Io2 zH(4g-fwSiig@EHh@xNA>u6o#m-WDCo7*`Yzm#bhh7NtQ_dJCFx`7{icSt=NINP8o< zFHBF?XDt<>l+{y6t!*6<<1?{m!;y6Y?$SdgFZRjj3JKs%YZc>R@)xSZ~^g6k;7-e zwXG6cUnP>GiWxBV9^vDkX|~wZvp+!bMi7cAM(3wOrtt3-AN;g6xTUSK;nnLd%is}O z&}RByX8(pf8CkYZ^=Wry2X77KdK>&MRAVu|oDXu2Y)|F@!B6;lkkS&P1`Zs-^f%}d zitoKK!$#~X0RizJf^4axd4@)8o3yM;wC=cxd}fm{Ty`NjFw9=i;C$~zyNt9uy~i3R z^h^(46$ks{#v%!itYRKZ#e|!F8ab-<-7uGQI>GPuSOeBP2Rdv^S(!N=n{(edU#5bNll1_D7k9w?qwf zrRd_$d5IqtP!})91h+$btSdERl0^NW{y9Qj>>AEk9VFi8)AhUN!vpF)5>?8+ZZIsC z;^?*FZ(bud31M|UFr^y4a}s3uRvu=?eM%sDxtayMelM>Q@Rx|{XBfrWGl@!wIc}`B z)4}kbbh;tKFBHkf1#S}ON9?-+Wl9|PCA}r(e_2)k5eih|i6ildlZ(r0`@fYKMdtvy z_&`OPh(OWqVPRovqiNqzK0cVUzC`E1Y&RR?yH~g#v%3dg?;?=Eq|+T!M4M#{vZ6-2 z-R<+!UMPNPjoilsK`-gQ-}P6_1cC+~Y*pn&``J79u_>@D`_r_B9%~e&)Lp=NDNYHx zsy!+vvdGPK^>JZs9AJ6s0iICj_eEK!%BfMSCyOGV`I>z^pXNO`ucZ3EBpuFH2w5q8 z9y9f7&kRHgn_uGFbw~dnxS;X>-~t-}F8HWdIpeJiwsd#4RkpO&^|g0*cQ%i7^!5&q z0mM5a@Ieh5u0tb8I~ggrZd7WqjM4qjDYk#ArVgY_z?>Ol8)Sj36mt@$uncF>nw;#;M(ob(l9RjxEgCkm- zT1+x`2|VXKLSSa-XPlayL=>+8RtqZ0l>`Ci_AJDRC_+F)909P8wl_>LAkYIUxj_ip z*Bsc7suUoY+?@~;;0_=Uuf48XI=hSCayPJ}_s;x8<}mts(EqJ{NSV-WRf{IEibW~L z0l6;dr<;YM#&l1i<3%|?l9^A-z-ET)OsBN0Hh+9@+*jVAe3R~cgx7Mqn_-AT!8pNL zBN~{eA`^4QQi&>!w@ibVPMu(OTmtg;aLol0#1qlRk<#(SQ<%5FnYyol{%uZ+r*ltx z+B=|A&GfOYF-J)3|SOe_{(T=B2ZxcI@<6=zrH-Fkisp!l`DB%TS?hO3$vnwtj z=k7x^n1t(Q;vQu%Ib1cUeTc^f9WmD}>W({jPKu{n9XG-#mr1@{Qt2So+k>dGrNTtX zP@3p%`xt_sLgf$KIA_ud3smeg(kNbQWGYkde=06&dK=7c9<$5u%72-8$1JFHYUh`; zGJLKDAU&55nlGKj?0^%gGpIj|L*-^6?MO2-DMB>nsNetw%^2hnKNv=UC9kD6{*cM6 zaP8P;6dzsU9AB}Cf(2%!EvwZvn161pQ;PSV#^gT7I;Cb(=a2H(9LvA;CfCbjj?dsu z>i(<`=zfXAT38VgGum6&EtYHo-DX<^|4Qthk$53yecKlXx6cFpfFS)FYv2XqJIdYR zt;Cvgs*y~!P=tUCqco_1xC-ndy1n=np0y+AgNJk1UV%^6wF2`Fs`2Z`~RlA{;vnbLUmna7M~-dIeGd^txk21p`K!|2idh4a8f*#?`BvMC307dWG+_iy!i7~ zA%Q1brde4Kz&OPV0-gQ+=ln8;;l1^{^_dxYsy0yEEyO%n zZ4Y!`UGk?T>~8pZ%!l*EkjurWQcX;8F3xi7wea2NSt5(*^a(>2k%SZO31zH_$9fgI zsZJeg^C~Xq5CnH_bET*4c;b-f!jWg4+${Xa7b5|(`!XD0TJ1Ap2kzxp>+-mz`=jj= z(&a;{FbqI(R40k%4=E{Jnd2|_Tc+o4pPwJk_X8X8OuL$wQdeJR`|e+Eb7lr$gyn`dfxYVd4~#hQ9X+25j~z|5Ce}HY_G+)k7Av9SHT^;5^MO6(3J zD3EBV>Tq+mVptZIVC1SGW8X6TjjE}UW4WX`TQk9L!V(aKA zS?_qR(m`mWQ3)Gw(Y)4VbbK!ycQe=e{Kpy<^Ax^_7$cK{*G7?%8@(93C^Vm|^$81*&n-l1$HPoLiBr8$uK8Er z)@K7UFouzkcT3*oqW{aR*|E4)PRe#m3OUIS)eX*43Krk5qa8FUjNkSiaQ^juVn4PVKiO{&72fVAn}4FcXr@1~e_7n=QpPf^~hWQ22qbMKUd ze;pOXN!{en%;w62+DMp8gdP!Vyn@qUcScPn0*^=b7+HGT8PZ?PlG*`#OJg?4pOmY0 z>BygTo96iu=QOLR2(?j4n0sUGd)NB=%XV00bkn{)Wk~ygsT>u3 z$wck2^HrAJ#;lkuT`XO4KGL%FN3oBeAuzvOQr{r&B^6M7%v;QK-XsT_`$!lBQDXPY z6wxWb#2&B{mD)DS?s;~LLNcSBD?vT)Y(NWLkTu<4Ms==%F!|3|)ce+Z+go?9=5&JE zx4bU{lZnqbZ|XOXp;SkFE{{#??x!9q5+@GS99%4EQ9Cx3NP9yUY^0DL`VaV53eMSpX`gQ=sow}6&DhvJD|a-Squ>|N%0ERFa&CO%Bw(3` zzqS~4QgI>`O)9htSUs|{$25ijDI< z*NEbs#%>yuDlM}JnWTGUh<+JZ7J!aZgoY^;SXuu?IM2_TRDlGDKRwu zGDL=f)3COiYx24apUZ?cmrA-rMl|lGP83zO!=6|@y>CQ&YzXJ|np|u^6uw0_i3lwf z!ZMVS)yWxtbO@f&lAjr%b-#_7;{!GF>xiT*IxM#+#;p2j)h@MBp4Rajzrrqc*ycqK z9WHu*wEm+d4+BULZ~zm_pwTgK6!T?IFAaLlxoDM%U|(!8fazJuKuGYacl||)0GMw= zvzz6c`MB>pr)1&IK$ z4h$HSI|+#M#zDTRF%4yX>v4SOttEnkO9_Nt z9lZgnwsSFvuF#l`&Zp?BG(qQ!)Ixj4AgRJguB1Vlf(-`SY@0Pug?SvE#h*no{M+K| z5kn1kQ{5qz7mF-AD_K`I-ndvcbP!`k^JzdId}%PrC83?5Nq}c<9C3ys#fQ9GQ#u=I5LI?e`7KA*vv7Fu zk^8tVEw=FQO9~;by;LsCmHO7T6-*SB_7N!oQJa`1owJ^?wLF{AqpHaNa1Ou!$2r)6 z!T6HBAnMJ~=xBduUwcdUU|;=M&+yRD#OR-v?EC)(E`R@rPeCnpw1VfrTggy*nD2p~ zCqey1aX^z*xVVJw+}i5BXNH5I@N7rr$#d%;SqA~Bbba!s+swfeG-aXnPgxF+|H6WUzKo3Xn?- z9OW5N^JeQ)##O5h8N_^%y=_4=T^arZ7Z*FUB`Dt+&q$0nQ{nkeJwbXgiz_sS}Vap37X4-`xxqkv zomXi>N;&nr1O+=~K+Zc92oO#qhIRlLS|ECNv6N)~<;k1iQyFNK-WatCO4NA=lAnoF z3J){Y&(lPEd$=KT>hL5sobxe5g{fZTw(v1rzxna5{1{jFJEXQvmS(T3;4RQ~A(F>P z;?q)IfWz{P%#pk74X0WQ62HhJl2eI>wMzdi`iS)Bq)X(7ZD2qac3MkDCvrz&Z#5wl zN@Zu-*5jXML91igZ=Rx;P(3|F2BbnFs-t;uAC+7Rl$PJh5nBJ}|)DWY~j^@R7 z3@}?1Xx#b*{B$+xU=kirlC#R~WCt0JAPhEm?}s_jr5i&!)?r{^tSx;r=~YLS-!|ej zJ#}Ky@D=Vf)YW-fnHp{5S%)86C(W>BP$PS2C;1i55n6O2GB#-i-q*Cg`mOK!lT6Lw zUrZ#>B+|L*K>HsWaH05XWXAxO?VHX57(ot@E6uxZ0-z)bInZlN%k$oB@r0GU9Vezi zsQ%NQy$6}iqW6j(a?uXjOktkfKyd=)qFXa6~-oJY^jII=8)x&z5au@B=n!#({JjZOP=2ZfV$z zMeLy4Jux;-STewmRns}JiN5}G^uZ2R}nR@lgF7me5{NLF32l4GmJykM5~Gp zSE*1Py00Bb_KgrHg%=-epoo9Py*v2PkQx-@6e%*+Ien$y8M4LENO!;L)Tr{&EV~}_ zjl}IYckEnmF!t&)$efmF;Vmt>NsHs5Q`n$opvzob=aBuzN^7`^=a1;Vyd&Lgz<4kc ztOYhIAb<%Kh(JIFj!)9b^zL8$kaEggq&;vw;=Ww3hJrjUncS+WU3E1FTgmk|y65}w zlyOw9cexqPhl|wmtP2pL2GooCYeUWE?-Wrne;T8m=XiMGgg{K5@={-USjUPZwCtvK zUc!S>P@j-v&ss9vN%t{yaSZJ75^-NuaSt7P!(N|SI$Ul+h+;o+UMP<(9_L%w*Ti9? zzG0&wXwzJk@U8?Uq&|BUGqTmI|U zVDGU#VTiFmbodUefWhz!qz)KYw4HcReavdJI@m;o`odp`Q}w?0aG@5~&GtpiIB!cx z82Ym_n=&5S)s7amf|6gA{k4srA=m1}A^tu?vN*PTiRK&vL*5p3t z@A+Xd{o%u@@ai$5l3LkV+!EN80YFd$v^bi<0MiIqni9h#>VEgOgS%UO*~|G;hrBT? z>RaMX42A``SSjE&f(UGRl|8!~keB8?$U6I4uhNjb%t@yMVFoJ0 zr!wR)-JkRn!+hD6Z%y|EeG@MhuA^Dg=0wIimAF=acs*NC<9v_Y-|LiDo;{5nEhK1u-w!$Vgf&1XvMUmGfMYL(MQ#>>-k=!)A13pffeOs8zNTCW^7794M= zXq-df!u+GTU}BQCn}NZY$PU@q%38#NulhQ7T3+Ld0V6E4_V@G@6x01}?PXlpyxjs} zlPZvT9s0MSv54k^$yMAGcVD;%CVa7_gQ5OMar!?LdczQQfm(;?m6B*Cf%i3%Q zIhXf44t)Y#8J-T&A=^C*3#;5G(NR8NnUz_z)G_Hohlxri#{AH^JgmE;*X8JbTJruT znxZHT=1U!tK{T-w>WPZrP1w}k=wL(*Ov@1$#!8i=b&TT4-Y z=SstNqXoZpz0B{J+UHLN?NqoL)r8}!9bfcI^27~;Rr8C)In4)^0@`6F|CRg!g zZy50iB0G-YF?o0t@_r4(zM+AtLfK21KLv_tD6Y-FDumhP(7N)dgtBTgZ>^ROt(hz9 z3>+DfrqUYc?rFvp(n^Q|j#GE%YmTYXJW>}qFS zq)W0L-JEb7%mK~)f2J!%BQY>=qwlm~zN~~AHAN}4q}*D($%hfgiG2^9hN)n~We9bn zkqe}}jpcjD! zsMLXf+5|{uyd1%Ufe9dP)PmmW?~#INvct~7N>?CZ*~l;~J!D=u_Z|*C#e$_ByxsT` zm0lm8K{zqA*W1f>q*7_UuEJfhM5yge9i9@qv9@t!fKsv%&}m&Q}&*Kq7{c z`V^I{RLa^hb7-@zKJJy4dFS{0>^JogSXh2Yz{zlmWkBcl{#tvQSV36ttlCr}$%*On ziR<4C(^J{m>*B|jS%JnAo=jEmlU*g6TSp0Ed}h)sx;~O%)pGciy+uC2Q=ZnI1VXli z`iXxs8Ld>Ggj}fjQDT8~#bFqf1J+tV=m`o^k$mU@`>7TFk6K3XjLkKuX(2`xGA&bA z@ZPCAR||yi{feG;gZg5E0w6v~d9f^RWse?2QwU74#gegqxoaa)(Ne7GT(EJSzI#@+^2 zQTT)xFX}_4I|{$e3hT*|bj|1y%<@D^g0Kx#SLXp90stOpOx&O(+6j!GKEm9_S znv2CpB%lqoF!459(zsW+>P36Y9IP*XB4?&R6CRx_C+0t*{yGqmW|o*gp{s4M%8u&Q zB`@$fXHFnqry|BarS3~Jo;e@c-E0&h3+i5jG-9y1U9f6x-2RrY<9-L(EIY*uHERf+ zJ?+3D3iNInyk@AT6)uR@S?1^2Ax_l1XoEYk>-Aw|IT9c&B$>T#W%4*|-y=F|QSg;QSrd=V>37w#Q zAP&=9S2kP@(2qbnrO2HVPbGtz7jjX_OHI(>6lV8^7vs?H;{gOlLC?l*)6w|qc7ba14B*+QD6!KJk*7p~35(Y=ou{h>j>rN8Z$VS2&G&9x+h zcT-oNHV)OVdZLuxhmt7{kUl(c0j>sue?r4mjelY2(CT7`U5}C5aBAefhtQQ+b4xC+ zvA2`lKtRYaWg8ry#r^vFTvzer&HI(t`}?0CQUuz5@qDziY8~}&UuY9=*9b)Xf^c5e zQmpW3y7D>x9p(7S#e1GMtjiW7jjn181 zn`bwh0u> z81;b*K>JZ5t^BFwJu@Ihh&dJ04EFw<3EaZv;J`I~2?Y za}Y>SO?K4NRrqHHpiqNMec@~$2M&~TZ|`9#y0Th7bIZGg|M6^Ml~BR!*^&P?s{S@6PQeXpYS zZD^pd`Y0FQ=Qo}tuf*x>)(ABCXOHQMZVe$4ozaGYbo@H_0bNeWR;HgYKW|To&uxEa z&*i-G64!T;GiOS9v>(|UjGNh1Zu&6CZ9&;Z_cn!Q!trNmNj8n4-@gz&Q0xGp%L2Ux zM^4*PLex6Kn@j!THz&+-meSo{)*sqXw268Xgxows?u7gVs&j0Fd} zj2U?uXgxLN{8){6Zv*`5k3@fnD&xkaeOjevX!Uy(B-pMi$8tgthcVg?!MPmBDP`H+ z88r|al%McRJ5I)!;8yQ~9WO;_XL-b*^rzcSe(x~9qwK;8NryJ6H<+KFbP~o9=^sc= z2n3((RQ5rG;NQZ<LRc>cLmUWFFmPu>z>g1#5<=;AYi1ybcw_mYv43Kp*y zp1fXTmd~;-EXmr?t30)Hlin-?cWv}L{EplhVfTid@>sD96xnv=3^{DMjm--fagl!4V3h}ET7LfQosPsfSAsQmiQ^OXvR-4Hwk(H`OC~E ze5It=N}sn+-xRNgJY%z%9~hoYCJytVafe*Th;@XoG{tq$DVs4X-y7(q@;9$~y7avV zrUT%MqM=BbqXsmy=(5Aw-LAC(T0tIkvF{0CNMwU*Z~^4fW1j&lL8@+?vtzpV&^IgZ zydX(|((4bKPCQlnekfhLbpfAWFgacanHdVG)1_ZGaT9-YVLU23*s4oB)~b{d^=^lk zd@Yi8D9cX!+Sdyfm-6;6W%J|8vu_0KgXeg)E==H<9x=fmbJmQ8@FEGxVI51;x1T-3 zDuR-mvy#08?)<+xSl{cKg34t+73A+{7#Ggkrr2>-)7tAbX$i~`w$14Pnk!)J2O(}t z|5Iy(*!XjblG#>TvlI1uN2+{+vCMtQ)h~es;aiHo!(ecdl@AXi$g{Kzn|^3@*%eHo zH_`GMG08wreb@Fj;zz&F%MpCNR0!Y9vo52p*e4(cb;w^ndik?yzG5{dh|S^yQWX>N z@LihrG%9pAdXw!k=9LL9E@iZS>XdVMx2FZHstD>;`@us71DgDF+g{Kmqb?C_VQvtj z%JO|;E>~zH9Zr}?t%1hMg9ysZa&o)-hPw2aSIAIM%Y?p?|KZ?cn9XhC@{Bo>=)xsD z2)pWEs3WLJTysuEsPCraIB=!}Dfc(5=sO56Dq(zl7?$?U>n%B@67u?WtAkcu_H@65 z%MbO`7TtH(S8+A0i$@rCUwamNDmgD8pOOX-E?NxC{XvMRXMJ)YitqVX*RAB=wQU?{ zZfWe_;6Xv4mO1V(;Tjq787rKK;_rUC#sH^?$&>$~dfsL0u-si-whMPNbCf0fg zi?(tT@u9PBws?Ef@O*PcQQtA#LU0`INY-Q0WRdszv3nC)qDQg#snJP}w?*#=>Pyob z@5|QQ%f-tR^R4J)fsbMH<0)^Yp89Ez(!7z|yotC!Gzm3XV|UM&rWvn(Kg>8u zUmDJw8XYFd-Una|+|HsgBH#=~z&2U>{YlJ^NX;XvK4X+48;Ttw|06Oitgz7X>%$b# z&4T0h@W;z+jL7Bog+%~C?<^3>cXqYaNj`fVZbWEh9P-kA6C<2puy%i;xOnaR1M1=X z6=FSsc;cr>Tzcb+P=nJ&nTXW@5GjfFi7^*D08nz5hx({$pfGLG)UhWX3QF z)I4>MtLRfQZ2^(vh--2U5McetcZo}@=_f0 z;lem&La#}hGysZd-0;3}FDI@L`}~X|>X&6XWmnM>`FX4~Y{oi<$tNLgqNSIC*7h6I zC}&NC7DlhvNX3}AJctgfVKa>3e~d(!1Hei^RRISrZ71H&$L_9&pHvMppct6X>Y%fC zNdWRftwRHsl+K=G_|kTqMMnOVzVqm|X5ppY>fsp|wBH?ZBz3W|ug{(VUq1xW#`r;7 z1hp#_Aw(_G>N6;t<`-JYuSd(A_xFVXi`rkXOj+0Ozv731_z56!Z!0y%q;sV9M6YQ` zvITu@)@oc$%c8l)P`=Z|I$I?qeBlpm($?qO9qwcrZ zK>IR(iG&af_*vp0;$T~(_qc>u9ZScJE4uhUeZ-|;jMceh3Z-i9p_vL)62GrKL|Prg z+dbN?Gs*49#b(9cSN?UOlFt1J1Ytjr&r~szmOUru0u@4!Nl1~i>9yeQ!QMuHU4frXxYGTM+9|lvkL-mJ}ak`&f&$K zAjW5w&k1*NWO|bPn3otF!+^#AXE%({Pfu_xtURZ8N?| zCh4LJZ=M52+$HE^T`dB$xbE8CHMJpcXhZ}N{G##V64CQPuV#~ozD?_b1AC%phxE0BpMMmXqlyG>U<4+ZMN=b3 zUHsTWdWV$@cc#o5Yia0#6rc!3#DC%S3}AqXm!x*Pk!@X}ChCS*Y(hkTa7F`dF5SPw zepm3VxO7zV^NWlrCnyNc{hHb;3&DPzZK=B;@pwijg6H?Gve?tc7N7bkiFTU89Dm}9 zQ@!i0Oy@WycqLM5eiTW zqkVZrK_on^ygU`|mgn8ur(g4w$@wAY`>aQO0&3dsQNJYa(Ye_3?5(#`L82a&7tAVyOlY#h>8$nz6rL}{ zv}@dOCn4#p!2$)ZcH-c`Zel&2TP+799;z8F6qAp#59ajpohT&k!!_QE)<#jm`l%Vb zPyBO3Uj?|5z0>}*ohW{ww7l5bNm24VPjcjsA4D+R2jqu5ojYUjz}Sl*DGEp4CwO8& z)N%P_$e+B30^OcD*V02>lbV6BBruz($J5NeY5A4@LkoY7(TKz=!=ZA>7VkodYm8*3 z`@t~nvXt9peoT^OZ+IZ=tIstd97X5w;fvgiKM8H{>@1AeJ&L4gUic7q?h0tef{}O^ zwS&0S{RvVCArO4EjR(c5r9i^0ByD(*KAn+NQnC^$ma@;v9Yxz440X~a^EyuHei_0u zuo}2?f3z;9d^4MC)}ueVj1uARg29P(j#)e60`~h?p7pO-CkYq#U!XE4*UN>fOi+7g zCC61LyUFR%8( z#WYA@IU1$J5D7iMa^c^|oY7kF%RJx;MFpZ)5dozZbJw3M4zFH8N;R-CsI8w`-byYU zYr@tUuHr$Kp4{Fl^*KH$;yEI8{#96ClpwB1OxEZiPGQadboj;TrmnfOD&9?7UAf@o z2-#6nwu4_7r7pvwDjKa7T;ne_9cFmJC{L4*)U#=7ldW1L`M|HL`GSlWcA0*JI4o$x zfc*WDwCzi-Oz3Y&`0x4V<#LsdfdYM#@MszZiKP$xoM^9g^&>CAEti3<_7!>jZN$zM z-sx(*iNqJHFu)D`U$enZCBAqdns#p2P-1ogO$Kbp5EOL7g+<(I`E9l|Mw~Ov5`saYoD+B z)Im`2A`>IU@dSyiT-W8;R1oY>(Wd!?3B9PUNlx@;S8bu7a_5*)mdcycT6X0Rm}Xsv$!z|T)jG*HyaZgER@A&h{vQxA{r^A&CjdkwDf4{C`_nVf z^1G+C>Q_r+LtAr8M^oc)OKabM%(VatW+Vng!?()S=r!*@_i%2Wv6Oq{6spmk;oyNZ z2LM;IynJ&OzFKk%X91R+uhYE<%N=w7kl7a#w&3pb%!A$1~vR;Ul_gI z&3XN`B&6_x&>|t;KMTI3(`TklyQ#Z1a?QoD<-BS#A7biY-m1}Irq2=`Gl5E+>f_6I z+<$?-kLD?Sc8{vy>XEeGXBLKj(@Q``HFC8v#x&J?V9&nY`x} zXh@~NDI+JUjfGk8O#ODX`S_VMPeC4K_>(mp&fy@d_j2mYv%~q+&vY2kf4!XqP&uPj zK=y09XZJ(JSH?&1WBMrbkC9wt1PIC&Gb$7bGt+c13@Z*&W7aOejP{xz`ZHmJw=BY= z@9P5FBb&I*703~d&;zL z#Y;;lA#qJQl+WX6Zs6I>3mo6H(LeUiE@_-suI*|4^P!2J>m5rD@4`ev#JDZmZ-n@3 zj~p3#T-Gl7h9kfHmz~D#+;&h0ZiZJdi5xf^U?reCB@Z6EWSCN39h-P9v0JI}gvtVg z=g6*dTKN`*t8B)kn^#B4MfH8CWGFf<(yIc5N zGI*^Qe@=m=!a#>@F6Tnwhr$Z@OT8go&aWS%u1RfeGoVvda6m}u{@11Q{UKEsdSXXh z@a^)>R7c4|tuLYL9u;=6wAYJL9~nAg;6CSU9yVQr5kc&74-6Z%3Mz*=ja!S&#SEw`SO^Dqy6No7AT%N74%9{1q%Wt z=OBc)#5eHa{0=j^=`2xM{%PTag&in?8_0?_HnEXL>a0I>UqL!g?-I3S(8{Z~60Rft zr?r=e%Hlw2c$Kkirsgaw{AoIuNTf)m1|uBvGBNlSM)bc5_#vYt;CsFTj~EZ{^D=aW z>56->r%?lUEE>j&$)KOSK1qk^k63P8?c`jRw=3;d`_rkYtVYG?=tnHBbb|vC?J^BM z_ddT}2TBde_h;tr>MyJ{dG-oA7j-wS(_i#8GVWP*5 zphheyp;4_C6;9JKWPZQh%D<14w)utc%on+J@WHV$`%%1Jo&X!1MmV0BNcj?Db zyh%D#^rrTO3!(iUILdK5ciD@9quf_K1lbeDnu|$OL0(EqLqDX{BElM&4(nc;`lZIC zY5kpx{yYQ!c*&_^R=ptE_e~A$*NR7$?&&+kR2laE&Z<`CpeIdis1J1*c%)d<`Lu^>FirLMHb#CGkS@Bc{8bRDwPTr{U^wv$*lpp*W|ACu0dLC0ZQ;ipNI%h0*teITMZQTPxSSO;5Kyfx^gQT*VuvCQv)nuH8%5uVD_ zyJWEXlp%sR7$*La#_TJE6P<`w*~LxOTVIXDt^DKABi3*s4fH-8(^ zE56SD9%cQr`A`#QWRo3qAKz6&@Y-QV+jwxSbDBc{P&Bl!*AMX~`qyc#eh}ew6oNb1 ztTxVte0;tk8D^K`c=%n5gF_xs<`$L4=|J1yXn!BrKLNU!PLU_z%^v0WE zhKc&n0Bd$TPI%~iqVGfMYX>-8Pe5jFgP2~>e%DQ#YmQx0>=pX-?v4u?dLl=3EF>>~ zpv=6utbmF@n;Hu(Vwz<$GwFcCVY==)Rw1oWKfK;g`Q|rV;|iDx($pwGmEU=Rpkty1~vw@ z_Cv7^9FGs+i;R>YOsP-)IGc~9hW5vL9ahe+PSQ6a&ccx-wuGdYMQr3~a{>hZ)p8?+ z;!P8_uy^PE)r$9~I*v_;#?dLwORAUg#ua(KC;J>5P!j?)pPcdY{17eZ?HX)aFzMzy z%s6ce3Up>HB#c6g(;&bpDFw^G)4`5DG^B!RABhwG{IN}m^+l=VfCtwsPt2N$VT@KY z`TVN*xq-rU`%E@tH6Vm6x)~G{q`N~x zK)O4mySuwX>E=D&d!Oh1#Mjv~oU`{{|FwQAwRYE;$(myB*%YqAftzajH^Wnqf2&yR zQ4O3a)$MT(_CAdheJA67w;zMtVPyecMnh8V?yQ1A-LP8b-x0z--;*?p@_Leq7JdTV zyczAJgy!Z!S5J=-*Yu$+HhpE1e>N8|x&&gRLFCLjTp*7m#b0`w{Bt4Y+5FiWK(E+iQZM=(FbKD8MfWI`Kd0 zEXL`onYL3VC0l=DWfO|9qaLtiYmt^Rs9N^+q#~hg{vHMhyZP3OAT-!}U6J8`Z?gUZ zP?~2yChV8%@@8IfIKlw+iTXXl@<82XSdD%_3L@$S3CTL;9|I0tE>+b6i8K~0{}9?Z z`*80b?0$5ae&;p0voyJOs$RkSw@qu{i{$|HHq=M0z+z&=(A{IWfyUImSMWRwS3 z&k-j^SuZrlz~;yaJk{22n4s$^t>g%oa`S$-Vca|o z2@$VJBTI7TFkJX4h(e#)N{{SS=7gI9P$~gRptdb;&LM%@>jYNIEKs^*Zr5UWDWtg$ zs{M`n<7Q{K(&Y1;W2k&kc2-e(s^sg5p`9-&Gy)=QYB(uoW3J(fihEPU1VFrsv|ieZ zt(OB?9N+4HPQ&7KpidM0<~#Z;L+)rR2Usmxkk^`lEX7_BQ)EHhSSYjj5^%Ws z)BAYy_0h+n&%JV0Z8}_ySu2V6wjb{~eCioo*r9NF>Stz(v@wS+V{MSjDY(4*Ff2S* zp(eg5x|sZrUEA-(fif;Ny&SCojrpHkIJ0Tm;spP12))8;X>u>uQp=)OF& zV+c9d@z4v>JlJrzJNcO?eQSk%O>Z8+*Lv`z>v#%|<3Sz;T8Gtt+mZC7U)9~@9ndc@ z`%tI6$bS2<1uN%9YepMd>9cZ|IeN8t{xQV5sWSQ+Ijm=0zzW<0PE4Bgf!6%6v@-b!g9SAC@r0#aN9j4>4D)F3Fgilu$TF5 zNczfjp!V?jWp?Iymlg+OFZELj9V|&PG1n}o^DZvFMDyk9f*8hXoa_FI>G;We=OY~R zkY;&^Q6u=Vfrf2m(AOxQC6gZwzfthTNrfKfNYE653ZI@kHx377WslEOpbsrX`=s|O zgNH(pIKWMfz-K17$k2~msit{A#c%WyA!eHdFy=T&1ZHS3kW7072q zE2YZty3q1%`lx#)(P8_TezP?OI!MM9-TZmbP(TpiL}UD-|lC{!dbCE{K0Syiep3blg+ zZo?`!%-93^j>D_ptAM(R z8IH6uUCo;lMNh2qw9NL{7XB2hkm7@@vS6WBTOPPNYHW64a>d<}Ys3t$!{L5(;-@tW z6%q4VK|22dFeC;x6Y{zJbC#}ucYM_M5z36wH6tWNlqdq;r?lQ}RCn#hqL1ew%sQPVe8b(c&uQb3cZFzl-d1YtR#&yx`+w5I z^Z!c^oZw^0Y)-p{-`CYJ(9<(iQ`^(gKhW1TJTclmG%7my&rs_$0Cw8|i!s_IkzWoxYT*BG>_z53*msbst-+qjbo6zEpTfKfe~O_2j13fXo#11@*}r zCmGG6%{)uQGnC6Qh;Ee@U;>_tj zN(RI!@Ff9GvR3reJj4&HoEM)iKI26C@6RkNr_0nMQF0zbz^(56Isj604uNcd_YWtx zhyV2-QQ!6>1R=uI&zRA&xD~ztlr2^synQKDGrdD(p6ppGz7IoWYxmnx9#8s-GkueP ztnU2~Kw&T);1@&vVGk3X-RdI}?H9-*t7o4ST`YJ(uLi8spLzcp;>lOHHKGROc;OIX zi$GO#=yJZ7Pnty4R7K>+vhgA*1z)Jac4q(S#862UH9pkXlhV{wzU=k>?hl8AcX~P; z%D?xatJ$Yp&^gm;E%R+bOZ zl7XILS}>THvQx6Da#@z{2LCureM0Y=>Sfke7$m1|Ug@Kls4`cdQsd&C_UVFC1`?Nv`NeoJXvIZ1zwq zO0_yrR_|WK0vx~{sxNT8FqF?GeT`JxwTjgRV~We_eYN>LY~0P>ktOxf;*mF6q7Sp9 z&G5e5*wvba%l_9-b~A)+{}e1a@%-{L@pqrZvv%%#IHwD5@J(1WpGNMdfTi_ zY6YrLe24mkp~v?3PcMdXPkU`UhqHHUoO}((a%tVpiDoDtn`h7(^-Fju<=0_S=^Ug_ z9$XkS{RjSS=bqqp&Iqo5bwpqEam zikr^VVW*f*gtsOwXFHv!WctGLh9*H-O)s9pRV0$AYlbxOa(dwnQrD#fO{|wd&+F)f zx4u2p(wszvx6&5I+0$!uhuvu@Dhs;DY9D3>PQ+n z861&EFmh3Jh;at0F?l|pSlHFD5$|s3y1!;-lDtpN8#-@OPBAd)Om7^n5PE}x1uME( z{cos$jnW5RlP#}KGcvARW|}h6;j>RDy{~9P^JuBPEp(+a#-_C$DZLV60e%*c(ah^0ansVi?x5%{(@ymO57dXka;`SK8#cPw%gV(6psg zvbXgN?{pQ}p7$8qy)3sCG~3P)2s|%@fuGs+y2=dnUETCo`%f32@+59E0%a6}26$>$ zU-Mi;X%u@!vQseKOdfX&9OwL&@A zZQyNE6LJ*w(xP7u!Bc7O3~D~2-&gn@L^)E-fQHyh)rX)*c@@jOPg>N+zxD~ngP-pv z@j4J*p(_2?{4^H4C3-#mL#9jm2-nhQr&i=Ix?L_2T;>Or%PZqoyZ190!)VV7TmJ~u z)qD7$0m;4Rdsp7W&B4CA6NdOn7CO3Wzb0qwHZgWgmTacQiEsX*HklD;pcA#tqst4; zXF>JPJ_9C2MJNheS0#i)w4T^^QQSpl5bqUlkMK`dUDVhZ9b(PlKlrLv44dNNV$7Q1 zvRShu%?*V^EZYoxfvzU6h~3i3M4qaS%LV!Q3UZ}+LMIdY zTYYDLY*ER$r0TbvTe|r_d#?CJoUzuADlZJJnYlXLnxSVNgdu>7i2Zld%>H}EH(w1L zFZ{+FDIJ3n{eo`OzNV3nO~st|)MSl~7fzd6tj@K$bhen{-Xv)ZJ}MIE&Sra}0g?;E zGVIx5(!M97Wt25H%xZ|JsFsqI$J%&{1pIPIc0S3HRSaq<(&XuXCll8YAln^WKK^TU z*1-92Er#B!B@gJg3TfhN-V2ojJ9v)?K7V{m1mgAHO(dU2|7i&5a>$$dU= zRM2|R7ngja$rGnEk}lK@fI`;4Bt>4i6DYiqnsg7oUFf@fMYhEPY$47EvH=!_FaoKd znBQf{j97y>nE1(fDAaX^(e3bMslM0@Gz-7&oLJAbAMz zF(OFX*AdWsZkbzo*BBrt2ccT}GXN9C9ZNN1bNws~9R!lqv)bVODhq3;;!V&VBZ;Et z8)Mw4zbA%pkCYS{Q3shSpOFnUOoZ`ec%7d}z4b5O+4RS7o>Ke<_9U^{N6gC|i*1{7 zR*y~mM9f^M235V1fJ%^asQb4^aA??9iBi_hXpMSovidz z=i;9M?+^avdkjL1!xw|6bCE^)xgjb~EHste-Axz_GTlQghd% z2d8W*TH2tQ4v%5u@b>e{D*Mi8E;XT=5oK;Sl|hxGp;Q)9rHdCfC}e6v0DY?!VEG?ZDU)lU$ebyZ7lYA;{6T-#sWGdz)lh1CEQan^NFrJx#cSMcAds=$ z<5vIG2Q+a~rHzCiH(9@H6S9iQ&J<$l$~9yb3d;pM*y6ly3JPBEnqZikrE?H1FWkXX zGl3`_K3Pb9z;iP0gQ`^^WzpZc5^m|P7wLi@&`SQ%AQU)f)D%5LY_n$`!n0}9cp4M_ zI?9O8av$n&isFJ&-&=8A>=J|2rv0p;a}c`u4}U;8ImZmi2C8z8j{7b@g(zpjb}+C2 zaQs_I;)D&!u0%z&rWRyf9C@~5X72~_<~V7vxa(Vf!uK$Ny{u~pFY2LF1;trfy-u%EiXWRuDdg-bYUv8-H3oqh6#r4LKfH0s1WV-M`hFJ;pWKc&L(8RpCX8oeN~RB zsZXIP`nm+e{Z0j^-fxsel=^}pU}pUlBR4Ahe`=&E(47ix>-YRif4If$F+s22RYJtF z+i@s+@v@1&X@D2*@AowBeUlP*neAzOMn34zZwF(iMv%|`D3nMq=IEY3N*oD&13Ja@ z5TmcPA&@_=LCx>Ou{r1a>gN=5(iP4KA~t3;-mar(h&0}b%tWa0Qqj1OIb{$sf)vOQm#+Sw2lz{n;bHSzW|fpzIz-_ z@`Ed!Wk~z#il5dZW*oyc@69!g(Z3!hkQ>hivRbku_SpU)16kD)=q$ibasOEiz!MeV zD3X?TK5=8b_I_~+O4Eh6q0`SbAEmw463iTyml?iuXB8jPW!V2=Lnr>n0u@TZyGq=_ zPRxMS^VSrC4Gj59Q0^ldPIuk*oepd8lr^Oq!{x+=J2_3oA*sGGS&HQSo@eYh$-Iq9 zs3ZN-NVmA-*6ZwHbLy)GM`=NZXbR-bnu~1+?Te)U!yRPMaL1i)5Qd` zL3>^Z2a1h^rp%Wq#kefq4BHIulg!r9#3HlO>fP5&3acsCKUrEc#lOzP3D!nS5Ay=9 zgsE_)gVX>tanE6-s$#=UY^$#wh=nNCI=>1zTQWRsT-%xF;Wyo5xhJ8PW4^eh&bl#x z`;WZ)hk z`dRel8g@&!1GOe;iv+1{N#U~u##ex)&#;=ai z43{_~xbBb%=2icZHHf{U!YUnF{_P5vc9G!O+(ske$&EDHk9&bd!LHHt9*=W?`)qH` zF##C*Sb%9(yQ&(TSFDr#H_rt&ZXkbamevO5V1)cZi9iUhX-nFYEgK%BxcqA^8Zyqn z0bnbr7!T_W!j`(bRBECC{>ZP@5cl<3;JgKqdq+v0Gd9*ac)%J<_?MWnZL=6#e7L3c zrR2#E{{4brR_u4#lPd4+TOXIBO`UAI7{z_00XtZL^1*`n$Zy#eCu`?n%y=SnkSHu; zuCInKMC}Fn7uS;bFDo|4m&D|bhHvehCP)YQgu!=Q)}Q8NxHGz>$1{PFbn_AqLkCsF zoZN}#4_6KrY)Ci?jDP8-#5}Q{P`?O_v4{`^y>B+PnVhks;Tiz`ConJ~fiKAawq$UD ze;Z`8cku_uI!C&OIyyTBhlhK520JH*`nyKK)q{@~2;D~dkFN3;-dd&|MwF>Tz6a6i zT`(gov`B&ar?fQJ^qg7?Wjh}^nlCbj!dGdDI1hzW-eSg$h@8*+)K7tpDERGnd4yKx zDQGzBM^A_lqAwi04bNODdzE`H=xCoNfBakWehuG-t44dumXg%>%Zl}eGS{H{l;D>do z4a-m}Gv~&fangL!r?x=~Scc2|cer7MDj4s8F;SJkSBW29ndyh`^T{3x0Ef*ch@%)L zUzwsc6x4e|J{HGMhT~e5&XhXFo~Ku{@}7L`-)C(yMy9~S{&AAw=%}}l4!qI=i1gZ4 zy+6Qx2}8M!TD|5-R{T{V7NCfOdG00Lypc_NJUJB|k|CG126OIuQ;(9ZPTEI-Ec~K? zFfQuN4TPBwy;W04N)~=ePSNs8{j)+v26i3pq%d$wXBZLxLH?^yx`ZrHHPRy;iHvW;pbH z>j`=CTxv2+25W-lRSOmo3zMBUD%9|K9xX3>sQA%XC)hAn^$X>+A_(oQ;CXJ@XyD7; zm+f42^>MI_<*;2_*>oRn9F$4GN~tWo+^dq&9DVw^Gi%sN?6Ujlv)C-EJM{~tbOmCx zFoYouVqmlp!3BtZJzN_cj`+Js5Yi4i-xv883&0U_f@KGO?a3+7QB%Lp`MB>}MZ@^a0ZsnGa+TF1tRRg;H##oVa3h|X@Ku9Tmp>ju#7s>6q=#da|6P#$5kGs<=gg22#xR+}JD?3gxTg zN4JBU&{px`v!TWdRA3~Ed43hu_!Q z3;%dw*-_D=ItL{9{CQtZ0giDT1|Hq<@mA6H%0vZh(z=8$MIx2GG18>O$VGY%6fb~L3Df8UL}+k{bJ2fD>N@( z7)BZIPdklq%}DGb;|yH8xkDfVdirO-vQ&RXGlqM+!!vit{DH3?qCz^Z^)CNCBz6~w{^B-DDC(OWe!urviP^`B<51*c{=PuV0iFh>1_+b@LqsVD~veTR>BbWm!L`j5clPL z*TT_1;2+xCb2X%Xqam55@mfw6(RW{u*w$l>d!6|BWXiqTNF&x9juU1{ER52}A}Z6Q zg~U45{Z=M^5_`Xv{=D>}W!q}jfto5(8!zVOv^Pm3M3=_>i#5y9&r`U8Vg2eU&Bd`j z5BI7@^2~)|1x7$?qe{Dg5&{)%P@7VEa)x{5AdVL0?6`z+GH(TK@qieCBYIl-wDiH} zU5EV#vF0lsbU)0*u$!ODz1A*)a`s~y3k4UF^K3j(S*1e0fLuVAQZEb@|ARG!bAdt9 zwuk*^TBG*WQew3EUAk@-4FZQMcqMoZw8OZPH;RT>g1nz)x+bGJQ_|e#T{_c8m&1Q- z_(;j`{j{|t+o)uiyAZ&yHJqbsauR)@Y~o<`o@nO3NRq&&B13L{c;E#O0N{9@{lAaH zn7D{N`-pLg+@+YNcylLe5MVALj6=!U_(A%WJT)i!xpvC*SI4ZR2l~@z6YE+3AAWs~ zC6A@2FChZbLtJwL!S~l5FVptO(bzol=+LV*9LREy?&G+~q1>cc;meOOIlB9HS!7tG zFHbXAb)OJnMOUG+!r~ph@%a+!t4x$CrsT9l3tb<{QyV?dqHff@N?|{ylk5w=ZWMhZ zs?4b)C1jR?U+|_xXzpeC?epI3@@y_Ds9}LRV*l|BI>-eMjFEPZ07TKnMTu;oVW^^U zRv~gYG?OI1io#3~@cqhp9OZNq{ZmyQP?M@!sTcSS51l0qBCTU`HxU^I4yiYe;Qpb=^S~MhLO{ zb?35F8UDs6qtJf>4()mf5C(O-ra8}^l=Qv4EMg{Mr24I$b= zz_g8BM2V{(K8im&^2p43VA9ilC3B-X)yVNme1LIJFBs{U0O#)QPbMPHC4lGQ2sBAHurM4w~B7kbARiFq1zK$s4@T~Hnbx5wvf-nCs zMeQiv5s$M6p15qU-3X0DBaDB$4-92c7VncH5(@-)LsXRdGom3h`+M&UYung;-C2RwtOxJA_0MkYM-Y9+wHH-)1j>F2H)i&JN|>15=0HM?6C&S>Rt2*1`oKk^uqXyt~qteUb28;3s>4d=m2(hxR!q!3*px%G9# zC2SSjh)xH`SyI3K;j)XOi)#`}pjjp_=WRPNM7C9YNy=Lzl5>6Hqc%lx`rn%IYK2ZXjb_ET9&@+t4z@SpNiRfkae^niKfj)~ zC+fx>d3bNF{KHIwbe+QED;&V717Wu0lTOlzHt(eiEO1(23dx2Mflk7ICkNtaiLonv zokibFen-f9`sqEc@esc!RuuS1)_S@5ZW((*T%WCW&HURlUvJgPtS^l_oaxf{C|OJ_)^%LB;`$I+r$YywTso3A$1 zP^Jy~_<_Ij=?ibDJSu*-0IjG9Hv-v6~P5-$0e(;mqK&rD(?OI|r(v9dBO>}}VTrR7%Zg*V5olT0n zuL1xV7JF;W4CUWf$0WL@2{+d3nwp+J<;3 z--NNNmebw^!?h_Dql=frbn2U&obM<}Poh23{%1n{n7{*r2m&bWQFx>^@RIT+8BH~Z z<#D(_w`%CWdHx=MyO`0yQh53B(3Lp}Cvcj2B-ZIL<>g3h;L=KUU(+cq``(WFz4PgT zYksw5@||%btVf~!AiD-v^+-=8Lkd9YN9as^l8;Fh*@5|WBBjw-w?5-{CL%ax%LgBj zq}DcAD8f9ziBY?pNkcF_iVP)fV9ZAEu%hKq?G8B~4Ab$(O445Iwl|$M6233pKY4MH zrCx|(V%_BW6f8tfP~Qh5-cb#g?JNjaN&)vq&j5KU$k!mXP^)~2n~QS(?_BYNXvI@zCcb`J}mbJ3_8YEtDu3qe|A$ z_tOaJQ@|^0wqfq1#_ir`SnoWi_X2CeoNq3cg=Y=`qyL_)K!OB#n-w%4m1JM7`dxqp z9DPN|{vlo>26P-i7&&C6W3TXxpaUP&Tg7!fu+UJ4&tdhDl*fXbZe>a~A*RL$ylY`o;?g?osF65w~IK>a}e@rL9_UeR1OtAeN~r(8D!~n^5@(M&+4wzOv*Tmk!*#>G zonwQegTs9jy?s;9`}*Lz0cyWu&?qcUp-j0Zjxk=rH(?UBaNwJwc>=j5C#Ou{pr-pC zL@#LD<;!C^)SR0B<&3=&&Wex_!Ja;K^Om+xerPT}L z4~D$qjxfpf&qY`a9MtQNBn+!uh>70C*O##%kJmAe*dz$mAy}p;d+0KTVkb=kjqf&@=*c_8 z<#(%%`nc#2K2!gsvacKPlxhJ4YoIcUym_Mi<=uzOlHlb*x|CHkbH!n#%!10Zv3uMM zXykH+b>!u#kae+h^6Jb-F0(c{RzJSJ@V0=1w3>yc#?n!E&=<-K1}@}RrT;mGpfi0@ zaa!A%c!|SNa!^=tctUt@*pNvn{8zns3a@p^<9R?HSH4Kdd2)2abQbc<2D1gc=e-E3*r zp}HCJj7Ml|!I>~%1cV$6tiI?`LEz4Beey_U&b{Ni(?~f3HR;IG<+NlUx()LR*rl!Q zzna3fILB{_ZDHVgVQ75nrRJf*(a(oO(ZV+w3}Y9Q#W0uWlXWYG{ca_W8E((~5R-6) zxaTe2v5VT&xmH~1R7}HHZkVMZ`*RO1YvM?7z?O3!=T{ZDbl(lWBN+`Wy2#wf~eLX*?3dxkvy926-o%UnWF&bW9N05BQ{jwRP8_%u7D5lj@> z9cHc;Ql_+vXH5KKSq}nWGa=F0*WA!)c+pJ$A|(Y=Hj!4i_a?PJ{MS&w&t~$RD0b@C zJ1q=uRO{JlN&IT`!A|#MUq2^yx<0N6QJ?DnF1s!8+$!e5q|<@G z*j<)F7oaRXP5PFUUfMD9VYDNHjLd8BU?j$u_X~MI>NgA$u(Aa-3q?1AtwKOQ!Bu+2 z(NS04N;IDY++8p+0V@+o=^}TM2d9+MB^k!4FU&PQ2NvCa?Sbj9T!T$VRV`5aSqa}j zhZ<||D@@^HZ32$?sG&v`_5d6KZoAO8b+s0L+YfPgy$_Fal96B3+(4B_NJ1kIOK$oSKcAp#FJI0epBbye&%MfI9z%+6OM`o}iTK^Cdp}6Tw~2H)8(r`9w^UWqO90hEy(_N!dLO zJ)38zE%0ByWxDu7Pyr?HnElZ_S4n=UI`7K_PV%~xzb0IB$W z@3HSf$!AKeDUIU-viAd%aHh$RRtwwwJnJGts8mn}?|xgSa4caYBKJOL??Q={rp%>p zZyPaM_}g=nD~B{B)Xm2cL1*;|BzRk(o9EkbXvaTRMC1)n;@Fd>k zE#mZrG{ijWk?qEZ`b%U`qh=w4dzU}iOFH3b+R7J?Hdon8=IpzxiIud!dpSXsN8W36 z02(E0Y>kYs@`H~SIW-Xd(w^ngnBr5tz4vp1zPw7!WR-KuD)t=m=4`ed+rm3tA77G_ zFxB4vB3P!6SZ9hag4`=`+~tk-6SA$dqqm=yOKp@zxK87K(W>?WKz<0$>R%PMO>ePw(=KHhHkYZME$%4C8zGyE$ z|3E^f3O>k3y!tQ!|2j%#drvF*oyYmu0|C%q&xQ*?ftTJ9Ssc$ZOBs9LW0RFE;b({$ zAZ{&rzT9q0W!SlYkC_vp91}T(rx9cQgOkD54Nl8r`z>MLppHHED!I)s$UDaZrK|y0 zw1{Xzs?fNbuvD(=^pT*y1f|yB8X7g+m${OCl4w>2hL%vl78(?&7Le4Y2LaRg5~|Xe z&5LiZGKP{*6E_mk*PE{ppc%oAKvVr11pu|ekk_Qn(G2vC67HD#T)gjL7N@OjTm8th z0WWaSr&YxNynR$qT6_B)-ZIu)rM}%B;3_Z%IEg$DRI850H>t>e_nGruVXe4gZ4lzW zQ(o?cUTF*koGu4#6L^YX)1sJeRtC)G34d34tAbMgy=f++S$$62Gi0j`-GWJea+yCU z<5=`1t?9E}+n@9~88%y&8H16mjJr}Ga{&BB(4q(axmQ}CXdL0otEHqD8UZ@CZ+G9) zujj&wR#aQ9@xf+Cf<8_q92)r7N)dndeX=IgqK_ZLcW08Gc`(O#u_PkwdVkUPak8=x zf{*}H7&0ELIyS`J4g2INBs*UbZG(^kYFg4_$Xip=dKpyB@?E9-+7f=Gu`_tgP3WO62o;g+ zqj3CQH~+H-9`(Ty0}-^}*aFngI#1TdcPg$d8AVb=LI0XrV($n7#AbgOl&P@^}# zazV%Xx1Ba?wH=$b1KH|Ex23?l>D$b$t`z)V)B?l}b!$0Su7g<37r4mmVDPvU<(g%C zCE?nU7B+>@e*7wyZr5!daZyNQB?r6N`S(}y=u&Ca72R4*qN$Zpn{nSSBW%@l8 z;L%&To&yT>|LN*IU=D|?0G@(si8;J~8#t9=fi?;zT~wNl(`*U~U()@<*o8f{@J%|8SbZvTNa6NRF#*)uG$D#57?T$tEf_iI`h{fqlUtf0 zM7CXw&s=<#b$Ua6lQE<3(6*F;^6G*izBURxMaPQh<=<5CPEz6?y;0{@8AD0$w#Fc# z)jWvMOFB@dRx=w$=ZM!;QS4Ez+DTaIqlV^1H`aKMN|k1({n3xha`F1?8Co*assHYd+@Cf^k-RZT91S0dTr6gnkwU3i+Vq9jpGOwZMAozkPk8>uR|%E`tSU z&b|;n1WPjQ(LsaI#eUOltpHk*B}5Mg=&&$6UbyWI0>GSHSrC@DJBbD%EYw`>@Jca! zK}5%9{JV<>=`KT%rwM~}RgmS7tiCCxY`b@NJ2JewITH@{;iVE9whEe!#~*m3lI3C% zKda0qFbMbV^94J;;rw4?u zwO|;tAyvBjCs(#*ekZkwoea3^$@q*FS11*HM|BVc@l%l)^E_$Vax?i^ffBD44BKi! zi1frsM;t(O;xGG=Luv1&h79S0zFHmLo)Z9gRB=J(z2}@ue=QCLwC#sq*Se^B<8r?v zTa98*W(JU90Rya-3yFxLBr6VB@}c*qE{sT@3~HE%`L48zntCVy&R$9*t!wRMTD*1a zw#Uiw)K!_vG(W`~E;9RtT>MVwXSjRsykoNqS>u5sfu+GHf)QvzfC0p59rNLkflFM< zPhO*z#Gf2+J64(N5ITCVP5}|*mzqQ122#K9H6NYLl^iuO(mr(u%JW{tx#S z!XCmmyhU3izzw3EGSs3!0JzhE;)31pv^ih(cFcnX^Cp z_o(aFMdu5UA%%;W-~B;~Ktq~8BN6s4N$?fR%i7#FHu$De9L6GA0Rt>`$%4}6?1WL$tTkyu4LW1VA_ND- zLbWNo?$VCk4K68MNokcVTo>Gx0Qo|iD_Hb2SwAU{!Uz?`3oE>vQyU>2b%3m^M#KBu z1Ap$wJt4fX@UOnT#^zw6SI9pZ>a{jGLcbh598t!MdYXWzQ~Yt-A|fLS#rV=i#KhlL zj`Ia%r9F%ABncsGhX&59vAzl}bfHX)u123k(0vvjnik7NnJ6bxGj+G*hICCc)>_6B7`Gev@w<4 z7c0Nk%kQIPsk&BU3r`o=C`d&o@*onov=`BcmTUJ)cohA_jsBSDbZuePe<@~|-*yEW zB8c5=QKz>?><@xA5ljFkzv76Ae}P_9(kF{l{7(+dP_|lZbmeHDUVHB7Y}Aer4q0&S z3nyXDs8@aDmikRh2px0xbJ%PX&C&WE(e0QpDzwJSW|9r+Te|m_Tpy@2%0&CXwFJ5j zNyAMXPg^N&C2YO9tGWYtc?V#cik7c9q7#QNKcaLDemO$oFtjGk>yP%nC?+nqZZ;cR z)J_u`Cig8rP|6PJZM0-nF=cr7?R!V_ud-rRA2zs*`3J= zNV>cH^ZmMHQ3INjp2}xKYk9$3o8vaTa68j!48up`B8`Fl0&EmlmV>2s>Bd<}=t9Pm z=*oCE`Ra#V2YN#~W=BbaOU5Dp8GLf=9bITMZspFqo76NQP5dWuL zc>lk4!2@a+{$$5dc;f>T<5N4U(;F)rVO8( z5UyLqHYnem@Zm#a4#NXAkyt<(ytR2o6I(t z^y@ma;#1tMO^xU?l{@=lT1v5aOZQcvN z?e&!wOcqZM{&H?iEg@kdr}&WJ+VTuPr(&I}D)Y5gIhl|;1mzX!q%(fraMMfe*a2k! z;cq{q;=T^W1w)Wb)92uakgK+KcHrX#0_wa`e`FXHR@)spAjY?PUGf{%S`i4kv=#ls z0*n`w#y>Y`BKQaf49>HAXoat2m55OfQp)rWOsA#r?rM!HyN)amCl~WwoI6hbX#PHA zv5(N?kuNf}OT#mT?{*ZMc@BWT42bjqDJ)>22~5?3R@?Ug{g{)rRNE|N+(ZuXG7pZJP5L9aH7q(a-IL77pCWd9W6w*c^@hSTZo%g}$HW33 zeU0ym9u~-(5TQbtXe+^D0%jIL08)Ev_#FG|bUoPE-{z9Seh-ld<|}KN&2(PEFXEP( zP%5Ku+4}*B{&j(JtnDu5x!RrmWv< z=aedr^3z>UV(tP-IAg8%Jj>kVB{&1(4yB(`mvIIc2(>f5_w(xgtWB1bHHwy{IzCP znU-;P=pC`M{`*1Q;gk={d&hp`Ql)WNv?_ZCw5@*E6+U%{H$GsDIS*9Z6WXm|aL~lv z2_CjEDOSD8>IIk{xge1UCL$EYeCw<{u7RpIu&ZSFwy zxW&@LK(Z7kDwG*udnBKioi=Md&!OVRv^+}PBa?`6&re+lwMd;){D?wbQxZDcx#KQR z;tKW)N-hjI+kA39Ia$4AN0zmWS+bgGETE4&_FCgLDNPSQBEa&q4oS)V>h|1RERSOJ zPbCD87p-p)Nr<4L>zH?Ld4Fe%Z}|v21c7;wI!c&bfZ~c=q39BU2qj0^mZk+=8$kzH zjuy5U`6;=IX04v18De`|>XcW$yIwn&R5&q*qfCf6XnH@*fD5B8eq)Uwb6}jIGET_8$$~6Ji1QUx)m<-byyV-wt7LT7MsFM9{%)`xh6;*$Ai} zyDIhAdd~XGnXz~0aUGy#rrVIbH*K2x(J(_~n>F=nPtRvr0r9lgr7@ow_XtmW&-eub z{$k(-2im`81HiM0Q+x?-Y^>53I@d>oUb_RQ$ds1nhP(dHn3M}Njc>@D(8OOs-VUP4 z)3FRX-G~-Bst$0$G9(f-);4NvlgDZv*|x{;YNAP4eOW@uQOGyY7oF>o!eaMfQvOpd z1L;BiCT9ys;N!U>z+99<45H-V4O5sE`JjEbB);o|n~GOS!Nmvgf9 zRhU}+v{cy{vkvo<-44$n(rod&4%}KZ@rEDk zWL&kqCf&GPD%VWB=YV!E0W3h%($k(lJU(n9y7&z<#UYWojL(dJ`Ag*5^wu~4zyL+h zZCC1!Y7w$;LE{zPA6NqFUxW0O@lI~q7vI=5xa~58kr>t2H|Z1Fe#on0%(a_kPr3J* zj&1wNE`6FvUXb1wP%>$+4DDVy%;54K))l?e$EGa$1j8DD3y$f=5jRz(4OY`j>#?8v zfm=Asiz5-B8g(3A!NqaZ4Fia071xwi$B7BIt!!N46Yd~29=|`To;x}@C)f7dQ5n6# zt<@{}lvkgC5cav%FIM=DiFa}8PZg1N7Ci*&!x;z=h^^?^8%I)plbHy@31UqPZZYs zi+e2Je94!S=0lz7xLRpAUMn6l5Mn1zd9l)_;eAG`*g*t9>b@Fa43KB3w#T6ZPF(~XAtaOX-$wc*p0Q_jmZh=V3GV zzOQxt*IMzJ<1b?Ul%I-b=T2D{7W`5pa{MsHc6Mfus-q4|K;7o!mCLW!vuu-m&jeZ@ zan(GG? zsm36DB$mLc51|;qzz;AQ`z`5vUjob=p9n&;m;&nk2iNqB;MtiICzp;@fws1?fv2ZZ zO()ENT1sohL=eY1FYPF)t#7`T5+P=xczi2KIUsY1nLr#2^44!>I=RfB)uBwd{t~UR zyQZh6faRDoX9L8}BzMt%3uTsH5AacjY~izoeH9-xPK%xpeBI$$Sh|FA4nr5D3*nP__kdr*x|r zG()(919BlSo|}y%l)lW+#!>HoC6S|-p{%!~IuFZ*y=B^kLz(fLdXxGr`3_T!81;7_ zxr-t3%GMVgVT|)@jAnxXCek#S{WifMRng=-p*#=!K)-aa9PB3bvyaQuhe&Cn&CoBvpeoFrnckg%g`qK6&+hY z2}VWw<&$^+$D@v{KtaD8*nEX60P2qTXB+x2=MjuZ-F{`4?u-w)?$!k|yM39v$vI)q z#u7f5(ne{zp(xtSC@rk(PSv^0&*vHOa{Z!7l-v;=wk#754IY0>M7cfh^b3Jie~qjj zDgRA3aKmog(;&@Hx+26%BJ|WCntoezz9Len889~<*Irh)KnZ_Bp?ywSFO{$>uMuKB z`@%bCEqb3i{;a=3JB>hi$~0%a53Uf_>3`4E)g&JysQ;U?n_A=6$U=zQIpQdr-(b7{ zNqF_?R@?bZhi4rcbNY{@n1k{Zi`AGNp4t(6g{`-ikF=0N-n{NRknNcfs1=Oi0qru7 zqD^))Kj<|{8<%oFyY+XN;2tl#HEi8IOjy*&rat~ISchB*!WaLlSUa{^rV6B}^FLPK ztR->D`ml0?wUa~xDcHA7f*wQokp>Xp^7t=N_YLI3q+@<|s?8wzds$L*7|4UF6MZa+ zj13;iOm>^*5M~^)*xAkKL&bM_8P=G`3ulfq$~OtNneXOSggdTieCxBR4w^l2zLo?| zz(QF(=o8@_`e(2nJpK61An2^?lK5myfCadKM(eEu8m$17Bcx8ccwy(gx5?ypqJQ~A zhM}ak-KNo@+487bQ-rDn$Q5=ur8P=GIPpVv^1JY1N1g_9{mORKZ+*Nq!>>;j;i$A= zl*j^1Y~&sms5-*9Ji;g`q%Dfw;-@tIR^17jSqk3=O~~$*2OOw{(y_-?xoK81kf@Xt z)?}ep#bpVc!av@m%qk9d*zD=?uvM#WAt>gh39+9-y%7H*f8@H&tM>i@AeCqMQx}oxC2qe=of1sucXrK-cC6rKxSQx#;_(yKDT1CoD9HB$rzboBSsor9iQ@o(f>s_n zt+Su41J|Ra5lGRw=2o}d??~+pGFnRMnn9`sn#t6O#DijfByh0Znkw(Ub!PyIqD?_Y zUM8?X3ntja;p@hzyK|cuCMGBbceR>DvWy}hZvAgXSa6jo6Du9P7>ir2PpN6I4NOff z4k!}AhJ;mtzN?(8ozIi+AX#KMp_Uw8CLu@FiiC-M=|9{Jj!Vp-yU^_Gt%_O1oc~$0 z?{fSD&5ws|fBzL1^{;AR-Li-A9^Zu7&zV^TC8()<;gX@n1`M0Hh83VFdQXBJAfe^vO=cuxv<}2yA$!;sZDivX%)wjK6<>Pm1>DKEOFNV z__zP^K>KUA@*aJ}XpMwPu1U;l)|qN^mc(|3HG5J28t(tf3pNw^iPU z2%A@jfejH`Q*Q}#{-^+S`{S6MTtBT0+$u`uW?B#%dO0xDE=7IN2fx9K_Ngu;H#CG6 zDW>EbX1`BEiXz;H(<@+S>Gz|JwxMpIyr9r%l+Ih|2{y*U1QqNdV1Lvr z(POvl==ww%vRox;X%Tyl+Os!E2Uoi&!28bY?HtrMb}*clCdk`vL&$1yUb1`nU2}&V zTNI$z7I%uyKZU@f7m`t1W##X+q@Dt~5%FYZF*G}uqwH_Hc9mU>;3kg?n)T+axk$Lr zROYASnfUy0l3)btHODVv?$JvItQ>AFYt;cJr)-uTyDQP{*B>ax*Yh3}OF^OkbQLB{k-j5n(c$FfikJ4%u-J z=!`!4GT?RV?)PEklW3Ws?#D#>Q{1^+fWvSP3MLn?l2D?-LyESrNPaYMrNlZ0J#J>g zT}f*sHY#5@0tE%c<)0~5ZDe8PbE;Co`Nfj1@UP!irdb`esc7cb)vaH!e&T$aKRI7W z`BQ+^=Uj)>jE1#KZJNYbL$F@oA{5Oe5~a5LUFhh5#~mzf}aTW!G#qwc1dk!)Z~ zM$b~xSQ_zg6rjB~3c{j`m7z12|4EQGC}cTz8@Y$2%Xoa#3M(y9g`Gr>Eu^%*@qp{t zG^B3W&)*oS(K$VU5qJlf6!RnbU*~Hr(o0@{CyxS)6!aYfb7+iBEN%c^OUrmb%hWMB*koK-XFGHx)>mUF20;Cz-rqY+^cRy- zMLdPi_^APnnNhoTwv++>Td>vm@GRTl+nAg1CJ!^2eWjN)Qn!WQ3(Zx-s3&1beF>>b zBg$_r-#Tq)zIZdKvy{m1_V+*m)_;IEWpWyn?bv_YOt>H5c5n?J2viRApq{T{JLBOE z9t)8N!yypBF+n9OZhA46%AaFdny1&~-^QPb@pn;9!xft*5-p3>G+T#`-_OtUNit`# zy}XWxa^0Oq+&`*?k{Q#+OC#{mfMIHa(7LxBZgw=~{h}7~#BjqvtQ~A^>Cf|N+i+4- z4&8BreTV{e7Div&9js_o_ z930;U9aEY%TW>z6|}lOD6o++~G|WCO3i^|Lw+Q;^<6Ne7#A08{7)pam(V>LZ;O-0y4xPXLX1!IJaZl|i^kmg}CON7WVI5B6 zO zrd8QE>LE?(o6E*Et5rzkBbOL?Emvfxw=?-x){X77Z$IY0E#1Nhs+{-We5-jW93Vo^ z?iS^5`7v|M!-L*n?F?I4d>y)oK&A}7w&Y-eMg`N@P{yVHmdrR!K}BuS`Rt zF@|$ohyiB>=OipFn_iQOasp|F8H1~}^`#I6bXTgasF7AJ0^Hi3=7O!v+e7izJFAKN zyLZMyb~zoKA&?pOTl5l`zZUf=2D*wn1Mq~fZ&%-7vQ<&Bo7TbaXjNR>y|BxuUMM^5 zbHaq>NjPn_V>5viKn$)f8S;Aa4%iNKbY|%EH3P0CTdRrX^!WXFR(H>3^QiW;bvO26 z_XM2bWiKKf(?O$e@ZE^4;vQKz;zBiF(J)3oJLi9+@Z%J%k~DUK$q3m zOC`kpi-BA%XyXm7LnLD2K{kj%;X^a{GwjHb#jl)>+P|he7w>v;@R~k{os>yRSX(J4 zJ+sv>9j;8NK^z#zmi~Nf06^Z#V7pY(XG{d3UJ;IV&@>>~Eo*fXfk7&JZDGf*v%|U` zo9Cn*f2E(l-04B&o zNl1~WmfsfnTrcaLY=+}?ofGJ@ufCMMuA8m=j{&H2ho1G^vL?n45ma52o4w{+bol05g1n#>wLm!+y{g=z3- zFwlrTgeheS)bDgBIhm@Qe@&^CBSXX{bKSUA(g>)uOwuc{(VPtwoC1x=cqO}MZjBaM z_NVKzKcc=29Wju?0^B|g&|xxwmiqUY`RYO>0rKLOSp)2&Q(p`ae<8N%_l9#4qA#yt zLHixN{U;M+C2P*#m+&-fH}!f?^KZb6>oJ^OM<#VBp4f?2qR(UbtWbv1>DMNbsMo{Q_E$itdB z&g4l>PLm)Cx&ggFCj?Ajb6SfCdLgBXh~50P7QcM#!tR3(v5H#+>dQEUATt`ER-g}) zhFZovdb|3**>fkDoCruVhAFx$uc-DE&@5kC;s@6VN^{dD;#xk(k%Z7Ab& zUJIUXPOyPX|M0@(xY6Wx{Avw|&;3(aA*yFS2#t*hoH0C4Majjb^KmsOcEmHT$=iuPC$vob zC&$XzKv&P~m=4K!dGXKwJ}JPr*vUi#_*R5fwiEFj&UXNIw1Q44RZh-h9y~ZMP2-b{ zWYMt2{E$+l9_Q)1PqH17)&rv}HI-I-*jJzyE8MG+J??=F_6`ekm&cunKp3&5BYtSr z^3s2W-4aIMh*^f;bm^BZy}ic*T;L(spd#iN2IGnNHW1}adIsp#KqiTnnqDVapTr|A zWj2bycSGH0rnt`hEbTIk?UOB{)b{I+lQgEN;_i37YSx%$LrEAQd06tvCjZDo2e?qR zQ81@DOE~=t^BykJj6whjh5yxTPRiO|j4JQJSR#Xy`f!@W1k@jJxfMd!W2$7e|6-AX z4r7`-Jo|;i>vU?#ODB1^(d(D_L(5mck2$znDyUr8M+n`W6>fH;wD<)cg|>j$e+oeJ zu@5`|?;Jv_USdZ|dt?RMoh>Iha<0do*Np%i(}3M`mGe*-bBa=!iE0QZS6!KrJdV$zgI9jU!^-_QXq6KlsY8Cy#(Mpq}C)#a8iCW?wE1%M4Q+ z-#P*;rx#@ZfJuF>T7M75I(F~BsLhd(nh%V{2Yo~7SZ~*A9_QAlD=2p1WzJK}iW=of zIEAx03WR4PlG1KAmd3%a>NLJF&-i@&fy7NFQRT)!_)@#Gg(yT5W9?<}pHq0Vmf+u; z2ji(-HQ_l8O%N+$6?}BWzX-6FH5{UKpZ$P_4zyVVy(UzX2a1}>vww;mMrA|1*U_GptB|;go6_QK+4+k z+(HK>F1aRHwxeZ+>L;jsFOHc;CMhy1pBR2fMb57-w*t@cp|s9z@d`hX6Unkjt&ZHIX<1zh=PJN^9uGeu?s2>W z@1jWI=hoj-d=!r8hhwIRV~*WZL78k1hM_CPyLEI$HcfT@u{)jRFGd}WlQLaW#d4kA zqL;nzhb1kZ{D;%U{RPkt9xPXsUt$eJsN7!LUj@#hlRoa%U!_Oz% zqj%ElYQVPu*#Y=QK#Kif3FN;Hi)0F|Ec|9uMBjG1A69KNfAXbI@n&Z_yWA68AIAyd|5r5V{XfwFdL{q_T2C%`Bh%C4GwXx9M+=jK zE0E#(@`i!+&Gr2w66oURUq*s4Af#?8WLj<`j_&lg8P-`G}}-g+}6N^9S54cxbQuv?A_N|)i*7tH|VJoYB(TTPL2@-;waYad4|5I zwAxR>7OaVL_<0VyPRFCCZ;ot}eC9tQ)Jgqu>?g0W4KH^$3E$ytO_+YHryshC$#OX= zD1;^d&mdzwy`Tz)MVmw%z$ow03W*XRK;DGA#LYu|-v(%6bJ0@Rb^NdivwLlw7K_ zKU$9wjYHiq;ui;rsYVEZN1W2K^UX>w4g}=82u2EAr8$`v+DyErkcW2BvA%rZPR~PD z4_wW(8-wOl4>tHl@v5DgZt%h8h9U5__6@S4ZYLWCj3|E#YL3=(^W(bTFznLf<`^pF zr$H2JVZr?ut2YO|4f(?Y<6-j`ReGH4clI!Z{-wVQL1oByQz&<$C-Foe_ZDbLC>ED| z3#7_$wF1Fn1kL4bqUUSSgRfTc3)e$cJ z4saGvH*LC{I{In=V=QCql(F>&BCNc@M#1qF34awqjb3CKG z0y3LAUYnx4eZ`*bKF{jTkCZhD8gBl%?i#?d=R&xgt7f*CrF$8MpE}kz=4VuN8>yG) zQZ!U`qny#AqqJay;7Gh9w2Efxzfa>Qx1)N=0Pe}OQBFdUkh~rcyAM(E_6@oxfp9+w zIXe2NNSzAOHwCR>IY#*|&$bivSj#7NQE?=79`v&*P3*G5FdkF8(uasX)>h}iiMW4$ z7-jL!@(&uRyM)fDzi-=5C!$C4gV*gsqn_+gdCr(@Ng^F(grCIpoWdGTR)a53iu9mIA zuyS1Jq(ymOZ9E1UU~R+lNGdR(fUeN!yH*Jjt@mKTWj)5fjGU&r$F|OuM$>PjCLGYI zf@j{!75QTUqoZhtQ4K|IN!d$G&jJ}qs>3v6y3>{G*NkFYh5lnjPmLyGo5vqQW|_}o zx;Emg1acb;$w_|r*GWUDebD7(b(iOi3}WW}EY_z2(4_F;l93v=F9^0>p1hA&DW>n(iI zd#;y#G4X7Z~003-8oUzKi~gTV^U&UChh#+$oyi>U@=r-(r5f(D${c z#_wJC#Cs9KH(PF1RS^yL9wSzM5d;xrjK!};LW)M=xIY+#zS zfv-;f(CGqN@4^e*t{6vI(&#sT#9jDc2x2pC>^&Gqqy*+izriGQX^Vcror(KsY}z%t znqwsE8lhh+%rvdj^yjo|{5S~2Zc*bX6tzh_QS{ikz|#?fgt&es?%wF84vyfaLKgZf z4IB7xPW;yb#t8+|0ybNsz1g#W3SjNIg1#D(>A@6PcJhJO+aTmlz*$rxt?4XbipAf_ z_B834i-UQNBhnf6E`jIMfr>_aI)x6Ua->Z}Y1yEw#a9zl072(IQ0#;Y=0oj@mZ*sr z0#I$l?ns*u-;^m%wk^J}mJ6Wd0U@%Sf@u^l%y;@!B$-4NS2qq(O)Kd5}Uq`1SF6C4w9I`}$ z+EE8{Iv|P{JeU4)M*)`9>yd>a=OEHj6v~WkTCAboNvg|gIWbcE=(b{A z$|*nZ9AX2VHjIFKj1$7mSX~OTbf53Wb7XgW5<5u56q0N0TvsS-5p-7 zHpNVC!50*8;RALOjrZZmeC37=U}-}K*T))SuRNcd{D(`(@HBd#(2Ak%S}It`ZEPWE z&vEFxqaVM(DIry6gNB-_XmPJgEiBB9v*}my%C|a3e!pff=Gxkb-V%qeMnnpeIyiO` zNd0UH`F76+AHttElzxeYb~`XZ2z9OW9t+w7<^T*8r8Q+WX`j&3!ujUY`lNoBAB$rl zel3|zqyBhQ3C6aIEgK#DRRnmNyMD5>%Dta5)Z!kmWxGK0F)6FQZ+URlsGmsvGfH@` z@-)D@w;fSBE>d;IS6~q5Z$f2nOgxCF)Y8Iyy`5@0O@irmT-7P{>uF>Kq(6kcauL!= zz;zo4chY~`=m)9S=0X#Vb3ml_>!E*ZcKRp$Gr`R3Q_4QN(Tk%2%ZB-)#<|#UxsUj_ zH&vD2OVz|JXEpppc)2JJ?mgEEb%o{!ZO`w;N8S93O;1DSZ}nzTB+mDU-!;;X?e2q~_c)gwQ;U#_QTMz#^R_&zGj`cr}6OhU7mJlcj7Z+JJk-o>E zDcAm!tSfSj#ny$h>2BTH5MQwe1Fe<;GA8vor&sHAs)L*c*0XF41UE%7=I=8yWxvJq z8#<6}ZanUT6GN{wRRtxAyP`*Azkfe%PY_|ELvwmWq`={k!G?vsQ@k~OXKTFbTOpMEq3PE`eTCW^`3$Bl-KA5NclGgNB?*E@@{* zQW!(gI*pHRO#uO?gM_NEJ`NQRLbZ#8-FChmF=PsFKgS5XpF=UtR7)|%{AgOZpJzXA zB`;4CouK+bf)k-zCaj%Xje44gEF#Q)JXzU{7=BF{MyZYH%j`D7m%sEN*fr&WyIYj* z1yD2zF~sc&lP!$Mw+C_D{`hunp})fHXf+eggG2h4)Tr;qscqm%gwc@gET_bWkxXlj zstTKX?^<;vBLKH{mWz9%AfAo~kM3L^b0@ogvDuv_vFo^AI8`Nj2$=%I8ARdsJg za`zhn9kncX2blu}q2E6LlW{kCAQ{}>immFg?S`n>Pmym!9XLNQRgZUWP0UH(dDeYL zx7TQOU)Y7En(daUP?qnPJ#E6Il_$NQ7b^yQiG=Ld4GzgK|L7o@B$dAHSm{Wd5ii+N zr-jw`%!(N`KV75Xzm)}F zLQ2zbMtnKFeG$7C2x*<6gMGI_4d}QT0jvtTfwJ$=S@LIM3^X8|cKCXSo1p%5-Ym0k zNxb=}1{s{uy5>BLHZq?juG6pZ5x>hR{K>K<0(4Lxg|-=gdUHS102LZOtQk7l45=Z4 z8jC<(c`BU%h?(b>q`*zy8s!o6NAz_t4S|D6v~D zTmy5t>=CNhqhr!IZ^wbw3#7D1&>x$O8D*h+LpiTV@Kk5#RH&x+*GFUuy%9QC4`Bm? zlQ2F}^5N0W?`3UY+mFzl_Oc7M98_KuEC#E|tYI)K`qxZU81>xK5MjXBmPTp3sNH3_ z!9QL)2{^8X(1&;Yn+Rau@(9YCHB``|QUHI=D+*EN~e7iVpaMFJ|J!SrYkj@#!t z$LkpIW1^noqY5EzX=J|p24kqtdRJv%&@FxQa?-;_yO7m_`Ad9O%Of=R{XgOQpbQD~ zJ*9jEG)eSkA2sL4E%fhlDFu%YbkBjBr<)=EFxx-nTw`cY@Vq8j&s#XUccdjH)K`{d z`P7jRO!;^8)t2=qwA@05pU6-EGgenu3_I0qPNX>wv+8&H*H0S6umHqIh@>O&O?RO_ zag(;Xjz#~(!NF^XsuPN71~q6*UaTh`9tOblI_hJ3@ooelMBZKOA-qPPRdlh8ha5EK zP<5sd6;L>z;lH#e0$hjYQ*I+t(!6jB(=hV$jCGo8F0u((&b&d)A-tcZmSNYI{wvh6 zs4|9LhRKXq)5$Pag}s977htf7#s0=!#Uyf5%N+GLH5CPJzAS4{)r%lk8Q9cxdS|i> zUeei2Z;46vH%c$SniB{E388;P{Czwx&eGlN8IM;m217FLINpI95?`3*2V~rLp5NQe zGdJ@RfB1MC|G+Jw=sMIzg@lEZbdvD`9Yz!ERkuzbX?ovi3AemxPXADjp49IagWJW$ zXh5-vp2_yWGu3*bwL2~8Xwli%rNs9WwzA(XVuEgcNT9VQCI9t}qsPpP$>X1{IRG^T z??2hsSGs{{&%AADHHISF3$mZqomw?5ziUUwe)G=xqv26*QI8l1QJBZDbB|Pe>6(i$ z;{+FjwMBkhKkBN8!|U9jb2jFlkP)UvgULs{b})uEvEdTDD9$QbzOYJ<M!{}F$hn?Ab-#vj#=LI=Nh`PLvsioKaR9~N*^58+!AnbyL3{+j=2?|? zW*mplx0dzHxuYdv5D40gUGI@hn>Uc?%`lhuBlx!dn>+&K^EbI5_@QfWzMaamtPZr3 zypx?*U5VdgCl38N#$lybN*gpHBsShQML8?vJrr37Hq#1!TR9_V-m-CTg`sDRwolkp zsxOR6`5AnkbZ#=vjX}0G!vtOyp=2A7eq{j*z)oVQ&WnE|$#t5<|5^t0v&6uo0voV_ zMJdqywQp4Fm%A9mi`P>*sObv?F{;l_-8Wsnzn7r}9|8=N+@rC4bof+(FC((#L+pFeI#zHR$bYPQ9mwC(-2ZW4rsKMa z>=d7W%*DFMSuK)Gdn5LrZC>f39QuhE_E{Ee?-!iR5dS!#WjcOqA_ZP=E4j*;s+oaV zOi_qFGyo-$ma5`N=~!35gdw)D!Y1#2qmG?I>gQvWIjW~{)e`z%oxuFn01g=p`b{E0 z`L=-VBic9!`0F(lpz9UJ9dh~1gfx4?`$pn##VU?qk%J$8&#n`lMsU5zVCJi0ckTKr z+H-h@(>AR}hjF=niqCy>z}2gAvYy;{qV(%_4@3F!PJG?LsCbislr6G+ZQL$*;a0H_ zli@)bF;wEb+JPS6Dw;(tb)F|ILZ)9<2a$8pyU~FUzN)P_v|y?Wv#VZXtNgj zfazW7#e$Oxj|0ihd!EzJW+sWuUcp7H6BnEBdTfJknNdKE!KzpjO@V13XW`3P{4*cE z4pUISvJ=I7Wi-D#-0G zs%?FgjT+FREFg}O7bnihE&7I#adT>vidsG~M5$$)J**(8Y2@g1NuN#d?ETqEO=W~R zPR9hVDOlEFX+uFe+zp9LE6WuguC^6bIMm@BO%-13F}EMO>Kf7@e90LB5*~T5DM9Jc z5^#{nwA1V_Ez-Q!5@KV_lG!baUc)-1&8 zaW?A17XpHV=TU*5IeP>(Wzi#aZw*4oODNqy~3x%#^a-^H50QrZVL=f$^fzg+q(-oGEl<6ZP0gc zdp(!_`gxm;1O)4jRD7T;0UMbnkL~G838*|}T`U6}p5n4VqxN9tm9sZd%+dvV4>!@Y zhGy$|v}E-p=Q!>r*v9M7^nqKoUpM)_LFEdKOx&4TPMtw;f_C>EGz+i{dfCXEA;3Y0 zg41B9Z-U|kyCH52z%AZqj<}?M9{@2}I32I3=E>s~ca{TRVefo%C1?)UQ#GredgiE+;@OVXJnM)(L6Hm%;sPV(Q3o~9Z1 zUmRMhcoO>2xnW6D@h|LMoQ%$X?IcOleOn5JR}}%EdZ2 z_Caz30?;bGUYI^5iH-LGx-EVJ0xdd~*b)OJ*%uSj?x9LKM>%-!nQ`X`zW3_J5V?j| zq}6evEm%}}xBmU*gSL6eE_dn8#MF6T$+YZ^cuY}TQZm4$wR?lP@jc=$y8WDe;zs!p zlkG&EqkaO8`=7M=S=dMEH5uDG!&k;VLjD(z&NO^hG z2xjZ2GUCpe-HAms>xBvKwXTTsjlV-8dAk?oIWSvWPwMv;Ix0PBM`?d8l#x(dC4s?Z z$-mqWk5oj^Zd#pASJ=%(^FWRz9*0(i;wXgXOFpzy2GmbMn8dAOx;{FApTZQ>Eh3}q zMKuXvWZ&&dbU(M8DdMMBislS`NIY1R!avt0e1Z{?>L3Z`1#6#edxWi6`U=(fr`zy` zFdF`sfkj!j_fL7u&8xxA>4pn}-6Y}LyATA9VDrMsAtnm6WJyVkQmgv*BI(WEdV*S8 zJS3f4?WBCw9l0t4@qS!2yG$-hO3p!n<;&sc+#VgaVA8G-AjYv^27vFAvdb1A}J31K`}g;exRO0?CJ3KnDt$!{Ecd39?M*H?v&A{=h^6N5$+Bo}c4qS=R4NqhRv#p?n zojBag#hoM{Z4wpJh>&!2uy*#hvGMHjH3+X4NE|*}%l^8K&GGvO8EEI&K?5n_r;LNj z(`eHGK-n6VyNL+5*m>57=^PlK&(YDiA;GsGR+!g0aInG`P6(=2c(E7x3N1vVq$Pi= zg-Nqx>?P{e6qPlQ9((i#j$FrbOyXm;xk?`1(VF%yneoV;WwNg4q|1)wPsY?pxD$O{ z$;@505jf~~0S{`bd7Ar|c$JbsZC!Ku_Ou(pggSr&_=ZQ@4%nZ;dG}ia=>(WQ7~m)- z8oJuhUm}4X{=91KE#%}XR}Ktwtks15bxUqs;RPdIvk{O$>H0eTXbEXi^!P?3_X-P;G3OTew8+&Qp!C4+B52!C<@tQB;@)Q@jAc%|JjotulZ{teWkO z3G&D6Oq1o|TBe(GK$nW-$Rp2$cW4ieD$anUa4f&OH5RIr9SdbeVtA0S@0?jRJnbWP z?3o$@L3glF+zIm_ix_&RN2|ucn2B04^AJv|5dy$t0vY7Im{GLy)Sur>)!qKYTiDn} z>nv&Hb^5V*MC>9+siywPol5^ZbD5IwLW~7rF=hvo;+hKK(|k-dDiByDUi4ue0jNz_ z4L-OIH0Kj89CG2n0v`#%*Hn20#V#h|Se+un7&_T{^g057QoIqF-S(&F>>w-zxqkWW zH%L}Ds2G?!=ICH*+T9Cu`p0!mPf?vn+Mt5~jpUD=OUTfN0nHdsI2fUWI-Dr^mlV1@ zM%?WBVJHNQs)6m!e^%SUMD%x-ymzL##m`N?7sw5JG(il zojw?mV+y&TT-+S6+R}jc8E9!E8Xj)3Q$Ojy_~iOT;QMdQ{rFxfb7Wmse3lGEEpLni z+^+z2L%42YRaaJ`JtmrkL89uCCARA5h*+J_X?DDuBljhO2Y)Qm&|PJJvTHRe*|ZG{ zvw=iUMZx$xsl9jw;`VrB5lfE$)h_U%PA%w<5cDk}2>reKSnv^VaPcgbenPbV?oJ7&=qbsf$Wfp zRMO#WsLuC^f}K9KRHI04z5{MV4CtNm+}6N~hwffq!Z))i{aM=SvR#7d#0 zATCCUqHFP?NIzHlTb9vq^r+G9C%WM7S=m;NF@)dszF2|rxFW7-W|R%fpQf|dWFSaV z3KtJ56?{Aj935m>B$QYg0>vzPc#fw#FpdrKNeU4KDYHDTD|idA7#@x<)Jf%EdljVz zbkkyHSu@5Wq2{7wRJchXLyQAzDBznEK1*zQ37mO)ZH**|lCvQtV7*ce|M~6&)G)mj zQjkQ;#8ju$QBAsDMs^>`pSzG&elJXm@{G#-VM6*TCC`#{RP}GPV$}gT3Vb{r0$@0@ z2`w3b;gp$)w*U&!6f5bS-?pLlBoRmLEx*(Z5fTkyI>d}e3GpILK{HXxb$~pHs9s@a z-UMdm{ayWAS|M-xm3;v*j~m!wT+ai>I%0A2?;_t^Ibk~9M&}D~H2-Rq-mshLfnZ*Oo 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 z zA_D#mO&HS9O`@esE%1VSRp8NUKK{q86*C`YBc7p*Q^8Iqm)?WmZX_qsQev<;YE8D@ z_*yHz6y^3mEhMc@SGt+`*dE!-&)doeoB6@D)$ysHDyffKFFp7Qah&MtFeNEhxTXIg zZ8_tM6d@~Gd#U+{naX~uz#1}Df0pDw{0X)tD%OydtlJ{?E6-TWeKOt$M9XHTY4sXJ zHjXOsPubXK=8mS#gmZK&Ls@%&hw&-renkO#L6h%1&ES2Schwb?14)#-K@54Y4j?V2}GPkKf2?Mu_zlbf8j z`Im@N>>x>@-7)rG`z@goJ=$M=ygnGw#JB0G+MgBb_%h>QoN+v&aYQ`#&5T#xm z&|hY4B@rn1M=G)Bo{CB)5qs*CD|0aIN;{{oS3=4cULKgBvnG(V40PttoRv|LPXH#a z6m>nfvWplId7^S9o44R~YDMYHSY})m}CYcuAfJ8%y6stq z6lM$sRRQB+3A=Tzz0ls?-}S|noQ1Vk^Wf@qnrZ5V#fl~LtDvj1KVF{5b16qeGfoRr zwoeUZM0+kr-nFN6zZB71L`I8ZV?1{u=0q;CCNJMCxE z%8THO_EIgoO{(O@Kh3W~AhY1hMxo``;9z>V2Y{L5*_LRP>1Pk6PAR3P(0pC@*%284 z%w3-p*o)EOaM4K*(qw$#C2+!ta zZ;9iXShft6b6}rHW7|0Y&gJCFr3(|wb-xN`-PiSlO6TCoGj;So{^(A~ zC{STh3LkI=MJAk)wy=D#5}VFWHy6iJhzo;K^}X?+WFri5?n2OIfxzq!i>V7#=3N{J zpQ7JYK>=?JJEVi2!?|bJfgc)Xk){-sEc-(-zi9Ln?+s2mKDs>kE_=IJ&ekA(J-M+o zXd>7d+N&6-J+&#^DO$21qk`_PwGsAw$u!3uQ+x@clBVO*!VJ))uogeG3A7@(fAM0i zwm)8${~j@4Dbrxjo(C;0F>NcEwnD!Wm|YNOR{6pi8M56$Q)g~za;#C!gEWsXSt3Em z5;wu3Y}Cu;bG$ZAq3{+?mz@K;^}i21su?`zb}V$0ogJbQ@sQy|qZg(rc&z4*95^Zp zX-cwKiXjp7oe`}yKizLJ!<$7RAIs(~WCzs@AFew2Z2KB6;bcB&rG0C3;@{wC@+sjB zh#9|xN3J9a_xz5q^okL2+hR<-vVBl$nF{7l zIOjldTM90lz8tR8DC)>Nwyov1;rBMPkve!?T1|7y73wD(8GaXyyg2`O$Lm1l!G+iK z2@+f(07OE^aEQ++;+j?P`fAr2`4bz^{mC(hLV|+kn0@!l6CwUG@v_iNp?-LU;&^ag zhxOV3Rv~g>olnKmoAQXU07uHDPX%b{s zS$^o@yF;S1K4z8jl6H|5Hzm{mkfh2CO2hMAv?k}!Ggy%e|_uiHbLtW}Oi`H2+HoVv=5bAIIID~-11Yl!9^YE1+W)l$fIqQaC)}=h^9sV#z zGZtM`cx=2JtFf4cB_$F^Je7fd=JCr3te%&BOKW_Uxx@0`ZleT}FM z3y`PL6Zq?gt|)R|uF!2|sUE&LgO9lf11k7H;Fg!04-s(wlz1y~H}CE;G@LdNn3jAS z?!+Fu2&;i@-F*8^{V zTZpylJu9DIgJ8n0VDU|}tYAJY0u(I=QrYKsY)}YdSDDvg(&!GM>G3}I z-f)-qE+4=DJbf|f0}KgE!SQ(t5hjf4%qHzB);BTb&6Wrilo(5IwBL3I`CdB?U6v7q zIB!g11KE$RxW3+|&4*yS{;!E|^&E9fu6&Pb) zAL3%?udG!LFv zk&^E24k-a?q`Rb~k&YpilUf1rJO*9VYIwJB?-nD($dJ*l9w;WN@!&4zGI}Z|LJkvuuTGa~(WZ zThgD6WE)b~{w@;wdw=L@!my+YW?*Q%*VxQ9_nWY3U&f$(e?)4J#g?3Auneb*6kF%M zOT z?Fp;&M5y46Uj(!2q0SM|441+a=OgEGv9sE~@#*GG{`NmUAGjSPoqjuaZ4#9ksg6%CFz|u0~faorFN0 zg%16d@ac#<&phj#GBlr_sLVck1w!%k&X92}ET-n0V%NC=gpifrlnCBXp`+(#Q_+1s zs{hpyjFu=)bM~{6Jkje|WC@P?sTV%!;hN;kEY%qR&tTT0X^PyJG65QBO5FF>eqX!3s+?M9$CY!rP!&Oe-rUT%}&vH2= z+tes!B_v$pQd;N8w$=(a&bC49p9{DaWo=;=xTFb18cGTz%f{`3N9MFQ}3 zDXnW%w*0+u-p4w_KIWocKCul$|S;U;w#0zs^XId$6++A7bKmtNaVKY zG=;TLjGxtI!kA~sf(mFJgPK`!b~CVZ&wQNd&pJ+w7u> zx%ptu@k?+pwk^huVx>se{CW9Tr)(I+Xo(FWKphq~1xrH>kw=voW9ttl2E3|FfuOoDNmG{O$Y{vIvo z(=}>-D+^4cy&h+atsIEX$YIXEOk=uMY(@nJWu~5g_eMOuG3G!eSP#82k5G+L#7l(XjrX$Ko7j^c()v?un;D!q4%ZDZ zUZY&GmhDZU@Wb>T6Wp3?j`jB7a0)pIqa`9EVa~H-Z0aBe2nR5VY$@Xg{082^gU{SK zNa0DeVp;3?Zaf$tcI@NCx>d`eCpKoa1A?0U~88*}*@` zzmK>Cm8JQBQ9{o_#Lk&7FZ=fzg3YtP6k^bq_ZVw)A;O(EyJC{KP29hy_zXx$Tf|UR zrr4`Z+8$x%&dOB8c=JSFB;fw zg^88LrLDD{!KP~ce_l+yh7%SL0F|`^dH4FwSFN^#Uvt;(m?!n)f8ao1gmp|IAfA1b zj*7C^n&x!FUds8kv0W9bYN6TNHoIx{(!fL2fLEJ9Hm4Um@%e+*JG`H&4{q$F*u}b4 z9*8Ib$H{vZIg4F0uiKhU;R>sYl*se_eF8h%%y!EJktYC=;tS!LX!#&){y7u4G5Ktz zizX+$VFi;S+qgn8m!-aFart1wEz)B)(MW0jT8e$eYG#F0+p0GwED4p*NtZ(b%J`Mp zq7-Hnrh=dRSRQ|PC;)2bNaiXJg7QNA^YjX?u{D{>{sVBgn%2fDqEH8OpqPh`xm zSBFSqYo@-CYsh&EcGt;H)LG^XF6?AxtxP5er$h%Wlx)JcM9?m=#j8zaz6sXaMzp|j ztD!+4n;(P%#JT^=pool$s_0<}tuFE*jehdJjb1iB_U$Y?fB>qsC_iONeitNmpI`5< zwDym?p*OBBe+qp)OXjgvE{J$ou`l$fGpL|Rng%T`ww6yq_&}8mqC{2eE;?TLVD4j$ zKLJkSwDw1%%WLHbEvkK|MI;r7SU$8nekE8AD~AVzJRM6SBJQHyN#cac5@%>V@BMZo z@6trx@fUr2eFMahuJ}#$ag@#5Ocq`o69ehpYR{wWtgK(n#o@Bedv0<1GJUi{1OFHg z*aM*a9Po_Gy$Z+rg}K3dO)T|9QhPnankV{Zr>f%wA0@Y}?1#u_#7;A695%|{2?_Uk z7I`r&mM3DV4E>&~k*g7}7ZYdj55+b9Q^i=pc4vTV%S*=gg-!C|ke8tqUIKUwsMeLPF%hUowRU#(b-)NlxkRwp57zN%nah zEw*U8SzJJA_BZ-;74pP=HNCAF8s9bJ0goJ(nm6I;Skty#oBVh`I}fiOZx#qS^rwgS zoVu2NBDP`jFeqhLzE{xBxw2gRN#Y8W4$_>b-ZpUuN{w}WhR30F_L|-e8p91wLJ9rL zqs7DUCyve7D`9}}x{yQZ;vtXkID?CqgN3gr`Yjd8I-$fHlaay`IPe5`0lEU@SK))s z^>5hI=gW*^ZeOZvhkEIgx_sz#@Y8|j9t0|HjFEu~)=%iNZ_}t{gLn9^g$jn9m2@V( zCsraE8470z`kt$AmL6`ZW{chGQ(H>>AK`1x5J=|5`+2;7=-$5LuE=Req-sD%cB+K~ zvF0in&=_y^=Z{o-McQ~yX5Z!HRDx9??&0Y}l5#zbl`yTtP7F}C6XZ99UCtF&Ipo-~ zE}CZ;?Ub69v=H}_j^O>oJ3}wtz6LkIFQAp%Xw>!mZss9y`gb~Yo6G7F-AezzC_a$! zNea4tXo9i}4aBuF%v!8d(C_FQlc9g8-m^J!ClpxI!s-NHQT{1s;RM%gH;%4ro!YT- z2?I&Kvc7&ODGcjqJ8>KZXR3}@zx^+tdq!VmDJpV0-sR#3TCm`y(|EN>_?+0a4ici8 zbU*P4EAZea1RxLAELc{97$nf-CHrKrJQ0QOQRXwTm)<2gTDZ;BL-Om@cNF#V(U=f@^_cVPR8N;ad)k z^?bqef_#l+ZZf^w13j6Te#v+_)pRqp1Q*(+;Q^%q#cTU((7xQ7Q$TQ6 z({B$MqT=>hdyL#-jEZr*>R-KCawOiU;v2Z7v>9pL(m(csm#%&7w1$l!^uKhV-2()~ zT;MJ@4wy!YYOjTM9$#7mYlhqoBGg8=#0#5DoXLNVj>wvSQE85)>Sg(T{jT0Y*;|tj>gAGVJkQh{Ym1^1~fjGdFpS zOb$mbBltT=Ii>kmpPFG8DUu?R<2MeltQ=ex03Ke%`;B-0Ms`U#%s#&*U(3+qw;}AR zs-A1CWM%}NGI(e|NRBc1IhhR_6o~65L!73yxP-3R8JJl|%h|40Oo&Eq#W2GpysCk< zW}zRdZ^5BRrzoMvqF6&a+zBU-{>3IHmuF(y8^?)Xxn=V!DS@orEY ziv05e1OMc4X#2QG5F`4Wa)Eu;!G_s^Ha|}D-DE^AC0*zdtI%uPmm1Ij@~w7EDk^yz zi%}R4Hutq@Wh6Cx@^=dqTi7$z20FF>1QPBP)(pCODgzvpw32uZ`^gEVP_pfZ2)Pw{ z=zud@bnOw5g>ub)Hn0>*bfp^(fU4sl@f zT5!q)^v90)+5~c@dcGq%v2QCnWPxx}M|7XG7k*O6z7Wq4J=E=Q=4E0JB-8#2c{}nEF9RNj-^>V#!evqpYyU}xJ^tpi!LtfaRCF_G z)9(q+X)@Y8miV-BV2Lx#OD2=nVb8Ct57EB`X@{Jh8&x@g2wWyK=;$MMH5}yeAfo!I z8t5GL5a=KQEnZTNO(d!q-4&j*}8qwmXR4B2PB?q+>H zBD|Eac6vXpCH*865O>CR`>UM37_(z^K#0^Ec{O&r@=M>_gqo8I4BYvnyC^oTyCpLD zhEtx;69<(KwL#tQ0|DUk4hPU_-PGlejSLZ~u{#)jhb!^IKSP1TMSxszKJG!y!6U%A$p%pnP8J2fZ3WQjGz={Ik*+_;7WuvQMs@MCt)h?MeoASop~9 z2^2DRe;#@`aW91Y1IT~BaEI~3K&X+4eAZyn)z&5j+cAA~$3hai-GKrbU{?gnG;=DJ zu(1P){j7%vc^RzAWt(E(vy{NmYs4T-Jnjp98CqIm*=-k|uhh;-$skITn3w-5I9pz| z#vTs;uOLJOI;mI~0KgIY>o0>JnUp`ppBR6dUASS|Yt(>Rz!8g4I`_5PTC|HPc#{uq zd?8KmU_;F1i=&R0C|qx&55|KX*ImoS?u5Ti+`fBwo%6Rx85_~VabUr{u<;%v178T0 zwIF6(LR9iR(#Bp0(aftJ;B`rOw#PE}^dd1<~)`Z0N2C&62$_}F~wKmuS#X31Y! za)0pwTC=pzy!0UB#(j+k&d~X7xLUlcN{_n->7K85?E8`rRv1@TkvasUvL}0iZIX2P zYOjm7@q6$1-TEja!dULaZBhzbZ>G{HK%3*ax%8ZNE$nG&@5bgAn7rr5kEFkMfeO~Y69g~8-H1oQ zY4hn*p$J9Dp663rpHLqv&NlN(cAhbkE-AsRhHwcvE6~&8sUwvI2;vfohz?Ex%-nkRprO>7`~r%^ef^>%E!y$4)1oYU~B0n)l%$Xqt>@ z0lMBYOFKq0&Q=RI6Q!Gp!%4p=iI*+qaN`}cC!BHERVc1(;;Sbq80=o0k#h97)hrL+ zdQ?1o;JZQ%Uz3usJi|WV^EUtUmGy!)ZKh}V=&@;C{hbFV=jJMDJM7F@xx>nlyfIJA z!SN-$s2%SAC@h?J5deVM1Z}wybpK*S-IR}dTAE!zJs=}zOj}&%;0;rhe}{CDkC7~t z!;?jTbyL+&s&65m|6_;?FSxxjZr@88|D@7#?|53iv*W!u-oh=c!4P`$edYHFJ+yIRWY z8k=DawXoXuu6kHaUsoR(Ci4$;`xlx4*J>@RW%p9xm|0^*gWb4*@M5+c8eb~@PlvKQ zJdu07ov`?{*Pb%PskpK_eR%bqT&G{YU_s9$4P6v3Hj%K++fV2*fzdTPV5PF@hiJoC znD9W0nnSIev)^_gEMV7V!XV{ngSkIe)VO?W9%bXpJ{t#!sYKm9))l*V8 z40L&q3`ea9e3Xx55zW$@%^DeYvXyIJHrDW8q-@ zNG%b;xB6mw_t@+I9itGXn9OL46^BQ1V+uE#6(?%9SQ6WYY<~X-9LJ-Xp6jmMQiQL@ z>ROH*n2rR_fq=OsaQO#R1nQ@U;keKGcg0BJiJWDM$52zgE&TMNkRHS7dQO_t0k(^N z+sd2Mge6(l;^n`$O_X-Wu5!btr!8ocUFvsyEal;JVK;;R%HMMRwK&{I7YlE+*!`sF zJwe_S-?98ye@5mpWT!=P)kVFLjPK@e6(^3zY|&vm`rg6DmHX^`E*6LL9P@1i;}n9Y zA6(3Pk-5UAx~DHFQ)j-`=xJj2^jO=}`qLMvkc7IMzXI8FAZP`q=zzC`zWL{Kygr;V z^pm<2si@@_RheMUM_AbV6GilR@BEw;(?zaW4c`y)=kkveaHT@}w!&!!UfySBEI75j zQ{vuwZHvWalqsL{&H8@B7idmLjy3l6+RK&=3)hY1UeuS`KLq!E3E4oD)qgo(-+FQKOR&r%iUu=CXc+rqn=PckR$m6wRuNs;L{osuIY4-Q(F+Ujh z{g0sHdD#O-50-ZiRLNkh(UI_DR)usS6a|BPtvI0Tybq~|JoJ^hFO9C-F~f_X*v#qOBY$oPR!+|gcFmZa&3tA_bN&z;?(vx@@Q&EX)TpN9xtbyp*gPRL?zXapNC?j ze2>{l2Z-suX-05D^Z#(Qcjw07S4Z0%Thz{vh+=boCre3#ikeUovHSVtOTC_LsE5VP z-jfL5Srsg!c^_NTRB$nEqBzT!@2MFZ%2FDCS*rNy?&I5x6iBDSlW2tX2wL^l_GoEq z7-b-=)o5F9;rxw01D1e<*2mx#Pj3%i9*i$iJ=Q*#DL~{$VVQ zdr4A6Gvdo%t{!refoUY;&G!>tJdf++Ivyjvx;dPAHVHJRvDnDFoLGvhn%u8}r`<_# zW&C#&0S!Iyi+_66F0(?J@riR0X;nB%sfpsKDe)Q5^B^y_(|+elnTUBOvW*_aF;Ky2*&pVa*VUVS@Q7UGmmfQ z*`P%do}FyhQ02f&fx%kXs^0`7f@d{&epnt#g6D@la@^e64=4Jas=R5)t2iJVURqTS zlwfITml@M*#aHV6V*fhlQ0aW;zVuN0*1D>drK%-q0V1_li4m}w?Hk(d`|zh~-s|+U zyAXHkXanoIhqO*L9a5fMhE@9RvgboYP4{vzk5xOx^W$kYxlv8Vx9wBhI`*0qnzpK# z&zd`J;w=P^pIS`*D1Fk`vhIBvK^_!4zMnbDaOE^tV95J>usM6%Ea%E3_0j|hR5VP2 z>sjL3*bqePf26!>2B9zPH^eLw-d!A{b z(h;fuC5t~SVZqZq>#6eN)9l);LC3>-%-3$)`lu+S*8$YKb`!r`Ie?H1-U{(}L zcQl+Jzt!SFIPjoh&kW8rWv;b%!0}$Kevt)D&$!nZnT`*FN!sb-=0uos z;#Fj^kIgO-GW>373+UqV76m7DNaK|QmY1RGrJ2& zsUis`sfqD8Z)HnE1Jx2vP;XWaSQN!Ch-Yx+R%M6wIvoGF1s~FeYy3?5j^~y;D46K> z)B<1Qjlz0kUR*a*SpMx~QbAc1w~k1$i#x z4-`_mMFXhnOL|bN)F6Ath8enn^Q`#-72NPqnmVGrLq-58q8ma4{H!|NJ{v>6^ zM>g;;$6DgN20U6dWh^@|sW^=5?knm8u*Tq2uA->4W~)AHL96Uy6fd9d{V=PGjNjY>@yFdIJgvxVs+nl*z)Rd&##Q*)aAf>Q7M?r(|#8{d{HImIQH5CUJNAmWzJcp*CR_-RVj(Aw{cT45b+ z3f~AdV#H{QNk|6Z{oTI|MhJo44Q!d-u6FNZC%a7M7#*{fam*p;8n?SzR* zXn+A1Y@r7JY|l~t!y?X20Wk0P7Vs(QlJ6&OFd ziSiQNUEpL_T%vRryi;|nCZHQ;!Qb;(mD64kuynSHT$Ed&^}d%#mv9;R45+?52?AvL zdreTXI$}RMoJNqh4TF>bp%dZW`^=Y;NrQ2}hu>W0J@(gN{~1h>5n&)UR$$=6f!~Ku z#?05=FvCe^O!X+gpLAinK6T^ThI{%igA@$?0n60~;E@Jp5!LflUtZtjqaNoyQ*%Jx z7n99cQ;8_s&)UvX4|!@TO(S}n)JB~wI)4ubZ2owCS9r4Hlh%Q+Jkm9nzqD|{;2329|`b35vT%jI^` zzqjmbXx~#;l(WjX<6Ocz>8rz1@kEy;L=d|>h3yhJ*f`wWPyYJ3@WA3GV(ra`vvz!H zfR){{SB_)A*Y@8KBm_q^sNk~SV5(nBMx>M$z&cltAwrU4fZmsS2?j{LA936jmdT%` z7d~Hiyms%Im>@zzdGUR)N9YMtFrx#H;&R-1C0pxj&JhIDPe(QIStt|n8Me{DfabSK zHq0)iuD`ID;2Kh3p**c=EVfC?cyK61Bf>JSk83@VKFh6ZJ06m!+ER-xTa&SLW?vGmYX|_UZ`!*p;64%=}SyhNGr0!Qyt2V1A*?=!@)uNU*jl-u!ox3k8g0 zFpx1h!fm7B1L$j6{W39$pn3%X0m-N{!OSn+bY`_6y5m5aDiqGn_oauIKAkPhHY=;1Xl2}`Ro~EtHL$<)rZeC23#T)kjBVu`{N&~~&s9y{xYQ%tw{$TKnt=Le zG;GsmTr9^Lf$E8Wey8B10L;sD#A9E7eqzZAgPT}K0%-p-U&XwUE~Pe}(k`~}vYWl= z7%{0m=k3`4{9b?6f4@^L!CxPC<=2%1;{F-~R0x!P<^=_Pt7c#|io1dwdJ)@32 zs81qNIq+rSaoi~K^p;W=_@}A3f0jS>ZDRS1urO^+8lOy&rj)&Ungd7O!2c;tA^lZB z3U2bKa2TM^5-klVZA^RdLA?N||M#l{ORyezfQYiW^ zbRPXpeN6V?X?H*8u5+!$&?iAwO=S)73x2^5Nz-L-QZrx)*iygj(`JoM29k9{`}M>< z7?WaaPe7LS#lPb9+8HbXv0}f%zWLvFPgfn%&S zbx=0M<{TEGV^iXjvi%rR__o5H$#Z_^#mTw8&U-fEE0r#73!RECslRP-(36y6bN|ec zfKJ>K;OD|;VAB9oiyT|{`1$idfi#_*u`Sw1dlE~70BXJ}#wht9tywEy2O5Qg6DssB zdzg=;i$$HkoJFPwd!V#`rUIvuOJs9pq}744Yl=~NOj}Q}nqdo8kKu8vU6&L&`_bxNU5Agbf_LK$9KYauaU;wLe-v1U^V^9t~v*G}SA3 z>C5JoiM6MgV_QUC&hOJ&AF~*aag$TH?ndQ1U}7C@#Jvw{_n@}F6E5Q&o0!i0_Cjjq z@S_#I?7{V0B4DM)66%Q|s}YBztHzCwElF8?#cV!&d%M{LFIJ_X$^3NYnE8HVgTHGy z_F;YmeI}zf%j?uS={(HlIfbsHT0=${|2uXegzTRi{|m4`CIL+|UXwGw=^6=3YJOlL zFrjdScn6FcLxas<=)tzuF34I@FTFQtxsb+Fb-hw4p(JVMxa*iuzVg{QM(`D<;8Sa zq~ryatx*HFGD)u*oAu95zhINSgvgp}uX1uHQ`g?m+7B$#R(bHmX3ghwHE*YN z#knnWDBLMEFmxb3RxU@C3z7WaC}Z>gk21iB6M*X%$Mnmd*3Ryqy+1oAdWOemM<=I; z+XjBXKxP7XrJe4AJ}$g#l41@g_pPjNYa`u`&Q=XdH@^g<0b_74&>%l8WWcvZ#}Gf& zzJdeuMDZV}DNh`zT$F6SDg1oURilyYFV^R#gO3Q2N$|DhY%J?KVu5Xav}X2Zl{u#O zObm}KcL+?a<7l)fT_25h1v9#-iDo7y>NKAbgnKAkD)6~Z7<~NXRY)Cv{_<0! zlU#0=8?VXV%a*GPpgs6_G06-myL$<_u6W^8&gzOifLkPM8yFC9oRY7jt+C_*Hf?eZ;A59$kTrXX;qnC zTw&I>#We4~dD$EuXF#Z|`NqV7g_Q)VNZ4ZYgY7^B2OK;`cUhyVzAJ)lI?;Gb;4Yh}8J9Np*s@^?HXUFN5A$RlI00 zg<0Z(!1#qyz_<9QzD!DICLY6cxVT^nMU2Th^{6-i-YDo&F>w!*OY@DC_!35n!c!TF zh=V!OFsDm`f@^ZSU^#&o-=xLyh}pUEXklM?!^=`5)t&TMd=W0o4*_Z1NgU_N**Gi$!I3)`jXYujBY=XEGG4+oth`TpgSIy5=it<){n(AYs~pn_ z2D3wzhu3${Z;RK5UXK>X=(2P#`r9mFZ=pi$0 zCp6wd0K5S=XexT#uP{P3Z=Mdi%p!G@vGgbgyP_-sq2(N_Q;V?niA*uBoUO%^Rg^EP z#RL}H%8MdW3NB~x>}pNFkQMtS?jCo0t%e)Lz|0*wDoIdkSSu!^bI#}) z;AQ0&`)m^SdLV;eA3&srlYSipU8SsnKaaCyR~0^8N1=hbTbSt0E68}m4z**;>&KiuD~XJ+Bx3sx|uKsQNm6fjrr zKfVkzZ5bkwemGcuN+aRwKn~(a-b#=bnCMSS*x67}^ltwr9mhTWdqC4E3Vi|@V}XUU z(Sp<2-|5?O;K{IF0xeIc*vYhnD=2SvWWvYOPY4jcc)ILu-v+AT28MK0@!<0hv)-Er_Nev1i5rEa+8=G(TPFVT%WuvUA)J%L8k^Pcrxu~ zr_j7L=^`H~Jh)sTa$_8~bB?ImZ6UG~8*6=pg>0NwZ*Xn=J6{#f_rdAryIj7f>E4K> zZc<9)9I26855Q3P;QYPYGZV)^t3=gl)H~jJw2F!(OmZnfINFj6ooY9m+`19c?5P#9ckiNbylp_k&4i z`SRSB(xd<_2WG9Kapc3`?^V+5Td*Rx4ESw;1LOkCtj@DU%^GQ#PwUq#j-z-0A;2uc z9&YGdDvIo!}FnZk4Gz0xO^<_}0ZL z*wdO9FBT6fvMU+w>)mZsmP2*Bzk#+YE|sowahoVZ2!uZ zrslWQZ=GGfl_Oe4u&$QG%e|E;P$o2k@%QP-Lgx&JLYJDpesZxCr1Eq z{ILT+lwG2x6a)h0-6EL=$J*&-S%bu%ntit#GqN~|>2?!-hg3Q~UCow-)~TyGqvkDG zz!}CEt9;7EX5$iw`0a)Q-}-wCxogW{FaMWeAWr48Xu$IFU1OG6U0}P158U!^T1Be8 zMeebQCB{MRf_TPbONwBPkG04f2_;dO@|WrN$LL(BX@=&sp#T1G_-bw3BdtRDt6yKq z1|Q~|mpwLrX5-F^bAh!lxaon^&3`?1CX`hun-6nRB*5n7F2U)=w^ERHH_3>$h9$$; zZ`4g)BECkVd*fy{e^Sv;%PP3Z(%_3e{_l&7(e z01;ca!{FzlmUO@hLMqQZbZit`l^nvNey=KFA$V40z1aI1 zcONS_1BfYTs3`O3BuSg?em!L`emPv@n(sg}gL@Lrm`{o(8i3~3U$&j>n2>OqI(#GX zhoe*r)iw@9UlI=G4N&pc_L2MQYKxA@Rsz*LJGioCr(I!+m3k?H3?HzyAGCoF)cnA9L#e$^>w;2MVSr zW3LUTU>NM;+d)+*096sK^90kA^e%rNGDbxXKqQ&F^9s>P-3@>StXnsGarWQQ&r#b) zX(w+*>Oj&gKHAZQNKt?0Y*_+m1(cjUvyBcT!ylwaeWtcb zL`u!fj=u6w8AI*MQpo1GxSP`lBj2mI063^sA9>fqVDQQOq#S@e&>Ab+1V3opMNAbvJCmIL6|ftEj~3@0+~Qf8#$q`h^6sm5I|Ux z43*8@+w%2l74}LIv6(7}=e{r~WXX#qKm88RrV0OTDK@Xs1tmPTQWWO#h-pG?l-@BOgD&?J$M=S@cG~!6)$V{?!`>_;-)G zzc^-12b`>-b&lKe`9o+y4IIF#dN{-=^}>!W02LvwY*EQU14l4_F0Y2|6{i^6I~Ni@ zl*4q&KG9#13g(i$8hRWSDlIg)70K`xqq_36rxgUl$zSyR%bk|8~6(}2Tirif6#ARF-lWk+F-zXeQ&2su| z@6xr;Pol5_BwTaK9@tlO{<-v8xP=I(7sW4ePa8nbX7| z`m1XW$DrUqLkQsF;OoA#l6>U1w1t~m!6&RH$q}N0Bn@VHtTa+GeQr3%hWpVtLXXFM z@lKA*y;(W?yQl)s-83taNC@s(>ZPZyDOw~C>$sc{KoF5aM_kQ-MA=gV3SWx@7 zZf{e=G~-y!a5$2BGQ)&xXVBZ4dURxQ*DcM)Xpe5il~Dh0{(ubiTQ6hQC(TT>iYcoj$5+ay_MNYP>Jpiet(y*bDS`kgXvqyC8n~x$ zn~^^@Q&$q$ja8Vo5o$lNbn-$aK4&9gQ+)L7lTn>8>`{QHadR9G^H@OJhgCI~-R2zQ zyjnTQI8Y2`UW@qIuzARy?DS;R^BI2<^ERRm|Bvl=u-G(+RGpo@3q{PM^|GwTsrScG z#TsIC;b^HuS*I{GXq=S6)dmd7#HH^vK@#3Zu6 z%A*>K5|r_j$;XapvlqjvULiu|;^*>^_JOC{Ul0Htd+#6TV$LwbIp#b9+qRznj+j^l zB2nxiCMVS$HZETJsj=~SmuqxL;)^oAbxpVM{-*7mH~z1_TEQ;$idPl>;hAy9NLq%? z_WB`fJRou35kn;dSynVG9D7r}3_(#Q%Wu}TME9CP@{0D`9tpWiPAMh4n%B{AVc{CC z8{Ak}`B0Gqk9lm@2h`ln?(AZX&FOBrSNBd27b_X%u%*lV-&8 zEcopI*{h0}r1TsOKbN5)`8(yumV6@BpAsae>m*G@ zAYvFEf8zSqN5NYk8owZ(%?B%{vF{6y>Mc1FWBTQGr@$Dm5i8jnH(Y&`7vQIM>!FeU<4-dP!5cdL^Zpt7Xj1;evv!C64&Z}e&bc?5+ea-InbpvI&0vHzSLQYs`8M3| zAh!Sa%oWc6J#%}p-TS}&*>+w;i7sZ!Sr9bzwKrn%;@u!SN4vZ1>-N4;+lub)O`GUA zncB_9nfZx!{>crxlUP8_;U%t2oNJf4mu`~p!zw(z{Nb=cYyOx54~v?3BJITs?Xs1) zw)6)0`Eu8|cP*b5{K*d!SV*6bb=dq5J8_%e%lKGdSdvpELF1&YbR1s=Ak4*vZMIe+Ry1FarA@SX&MP)|fgoDfH zU^1d68~;@{+_Q|KNs?2?w8D5xeY^R z{2SvaaKj4isOKbo-z?{9t`c4;UKq%;>cmpIqLZ(L-(j3mPZ;{ksF~=NSWr#GZkJK! z{2R%GAXL#JipdDQ$VA2}+aNvdK+%2HazgtUy-Z$>C4Er??Vb6m>|%J~9^$OT%VsFG zsp#;ht}R@S#;-E!EI~V=$R;CNJKfR2o9RC|C!g#7SR{_H9UlLBy*DJwwJTmnWmU*wBd>Pnlz+Yb*#q{ zXUc^N_fzBIE`yI#-|T(J#Iz1O7MPV8)t|Bp^tDHI8n42b2G@t|<#Fv2JL|%wc)2qM z9ACXvL|2fQ6331jB|#mHmhCSzIE7@&T9Cq$cJI`PUk3cIF$E1xi4<@XQK zisf=!@6DCg^ih}j`Lp!J?eamDbwmW@-gXPjAy6~^A17_o46K3LfsHNZBCYMWOk-%q zXlwe6Do{Lfnk3AB?w{|4muz-R?DZb@MreE=yB}u#H+ra6epe2A>YDi!eX}m$BD*DP z;}9vR31*fFot<2vxL(_q{GQ<^u0Qo=E@E*`0v{MFQ=(zzeqzs6lb(SW`;6kB*kZR6 z{e&=aPKHeni)Kwo0`gZ#i8Wula7+&&=f8iS|HK}goZ8s)VO=XDH{mImlq==R+WQNN6Nl*gw8tVfCyX4Wd<^t1FNfiq`GvgQO zu9s5rAfg>MV1Bm8VAf90<)wMMW8mccM)|l_t0T} zJo#`!r}cbnQ1FL^PR_V4B)y1!LVtDs2P-f0n~VrkRyWC^%0M%;%08P(MNWdhqwCOAxtJ0l@qV_xTe7uElag9Y^w_V7`TNdW`PcdK172e3MfRC&bxH`uw*Hw*u>< zfg$E74EO1gSpMi>)VNJw`mPY6F@bs@=OK(qzQ{zX`SQaeRIJ`w<)h}680q=_@x8C? zOBrHRNrN-ryw?aq+Zug0DaV~*mYszX{lCsKpSq2mXc#DnhMhLlkX>u`1`(F|hF$mm zMt#^AK(^1q7JZ3XS^r4oJ~<8B8{+Zo311fYP>ip}W-p=yZU4ti0_U4mau9L|mUj)U zPZ49#UKXfH@Q@o0={beOXeKFyhskJs+vaPKP2OL~pIK14C~LHzo;eBW)C<*nr$Hli zS$R`{8-EqSZZ&&#FPWogMSXkcq`u!`F@tPv@qPW~v19kQi};LXsr4n9 zn1rE)1lTQySG+8??;$rpwlE29;JM2!c#t4Y%N}+hLPUMpT>(je#?z(Y${NShh3I|J z&rTt{uaKbWKvch~!0@Zdr){X#)Ts~`IMarXod*a9`@|{>e3^Y5Y|ta?A!(xUC5$~> zp`f8o93Eu9Vi?v}{x9(u0p$45KpK}#*{Y5{&IPFvDY2U8w z@Q&gPt)=@I8f|YvR>jJ@29>!?EBSBC2)J6m?=BPG zS^CP@@Sb8(Zm%GW)>mVS6XKQ5i3={I))S!=3j;VY=%b(4+AroPIy#a9SOOdStphqL z$%Mqz1jEJ)VMJPf&X&;PtHZ*VvZ8Ii?3>Q|-9rTkez9a{aMRg2#M-#BYEa5I9t7fR z>j+rlKHVO-kPOpTf`L+;pu?zG`%W=4ae4xz@}ps-#o1(6dvppZRVXjX5>L}`*>XF% zLE0ArE03d*Rtn#HhS4(!TQ^bWf7*$EElXheXw{h#20u1?ZVK0j>y!NO?d+kWIH1vW zScU;2y8^p!iCBpK(?3z?5 z*fLc#2PW9Eu)k__+&f0&MlvV9I!3Irs+SeJ2Orgj^egcsE{vIdL^S*KE1REq7*L&l z^pn&9S`gi6ijM?4KS~o&EZh0kGdMJZf*ipt-Ph7yzhpCU>ZCdhY4 zI9k+aFgdx|ANuzSKDtnBS1Iq5<4zfJGHfdj$C?Q%&Z8QZzsf?6OS3@j7v{TJlHmKY4{-HWW4up zw72V#P8y%^#Iua-~FyFLYX25b)wrb=9j+^eh>|~ z=7&P{Bi3{4{?JpxVk`oYfXcic)OoOTSJ?j9HlLaf!#6QEViIQmsc-eG&S_qvbWlfn zBJD*Zxmhn1=<`|X3#^_0;89ivJMpWkph+2eapAVzY++8;6Z^8mN18C{1yg^wzU7QdrBh_dDqE^VOfT8EA>;Kycb$2ntRG{hoq*YA~Zd7rRCufn!%}Dm%Qi#!)ys zy2pRUd4zFewOWs|Jg=I*3_t>q_?Llf5i>st9Y$C{nga2H%^TV_l90V~T2HVphmX*- z3pfC0iTd?%19UJmx%0UmYvz^lTcvk}xM*N2tIbe*vL9xjE}GZnwy z^Up`A*qaTsWA;XMqzW9nAe+O~N!D3DThu(fZRX`!;4T~NNke7lcA`wMc$6s@Sg#D& zqeG0l%G!3Zh?#S{WBLEu51#*PScn1*3rr-$$`8H22KuL_hGwP)hv!Gf2gZg5>+9M( zfh@XzI~idA0!;WsRE`fw9NAN-6PfV)O5@$IwU9XlQNBR_!A88zcsz^ovy-^rC$3(1 z2rkNQDfgWZa}LfOk*^WnucjG6zYQ@NvE;oqW5wh2IRI!6w(k6@Gf+0TQ&3F+ zE7p{$2!X>7ixe6e$uyMQP#Rw}U!*uSp<&*(bG185ezSScK!a}P1@_M3NWG$k`NgcT zIwjjgC@CQJczG!Hq5PqQnPrpY$0K%fQ{L1U7fN9WRol{$-fh&dOEml}9FnG=aYz0n z)3ji)&D)V_n!nOmc+jC037Mb?5flQ@fO8UN(77IvAP;`m=Y)%Cxfy6QA2+bvyXs$Y z#(yYYsy;J9E1i8?Ay|G(ej?b83Os+wfbRT~^AlJP8H9GE zqfWyetP@4)6Om!&3V*ODdQY_eV3;JhA6_jaFX7o*D-wVwi$6(Ur$Zf8wSn(=;=L?% zifVgq>*V=~7Y5M!0>1U#yH&bSg3zBaSk$(os@D#$jr%?7osq@FL~I}{P@rN_6$t>n z360BdNOv|48T)j=x3`aBu{xwZo`@Ps$S@@0@2Uii^*7hTT~c_u`4 z`BR|Bo5`>8tPA$Rx#|E@+`NK8$)Xi%DT2O01&Zdrr2)H;&rkP4j0WQqI*p}PQ)4w_$DQbG}v`CIu) za{i49M_Mlj3I6K~^7x+!p%u?i4z~;HhFO*ba95_UnYr=ACc0pCU^w?mUG?&Pz6Z6H zEJx83JmWHlcqhK`1;;D_=-j+8Dp(jP>|3<*AZ~6K*H{GgphNY{7mCoo-<~pBS}Y%P zw?&=((hC^}j4E2qB>W~XGzsmAn6- zL4^DLFVf1)k3ZLP=@fyEXE?a;jRR!(9eM(FNumaX&MFP4I10>@q%S-;&JP z(?{KBYIntdyz#a)46iOUT;a9Lm#s_vg(DdJh#XmrEJ!Xr=(%Eh1sBUtv~ak(3-8g+ z!2UbjY?ajMK`PVyVGUQN6*gdKlEbmEEV0u_Zh8HS+S6agw#)040UVQO6nJB?u_i~I!2QYSL9e9s7@C^J`aG@Umld$r33PV z<07N*c*M0sIQooOfn^m$^=u9uiAQ+OpHt&O^Z7SCQBHhlC_>13qw9W^i6^&-uCj|0 z^>{pUXp_X#w<7e;KJ?2Z|Hc?jD+Nx_3Qe++kEsODc9%abxKvq(esuE8_C+lF&2gVn zav9tI8{7kL8o$nNlpEn%_y))iWRwUwqZw(k2#295fv|PDd3(Q16vRR-)=|sEbH!Fu zDm1WUqR*IESrQd!5A7?-FZ;$sD$hJiloIMlq}mBmyqOcc)em+=kv9GfB;oYpIVAu^ zO;%@taC?Nh46QqQAsLD@QADI%05C5Oh9hz1Z1P2HwZAQT z?>XL?m8*a8*~4DphOPUzqRvwnOg+KyH(S@&Z{rwCj&sQ@IQmxX4SDMSLwTN0*Up?4?;(A}Y{76DV560nq6 z&uJdp)|KETZy84V$U1*HbnGL|2En(nv4eEc(6-5GVPv(8(wl6WNys5L3T-eDQMi&eEdz}wm#D@`ZDcvBWM}Wv<>lVdzDBr&e zFpaK9yPT6-0=w;@08!fKNw9Vs#YTOhM*NhEIpUT22vN!JhHc|%ih$&a54yio>h&Nm z7rPVI1XCv@eoW2YDLrc4*#%d1`wg-ncQ(~kU-s{@^zrQKADwpF^u6B?Ep?Hq~mEwWrJxO`NCw_ZffI2{Q6JojZb<7gr!V@hzuTjcp_oEzjkLyXG4#o zf$S6l`mr*b4SwKaV6flP89u0P&!3YOX+1Tbyv3zNLL9cIl-$qAxqlpV{s6xf9vx-N zBv&eazq^musfHDt=u1Xos;*O?j>Cpx%@wfH{2D^buA|ATdbV1&dQ~xw2@ffw=>N9& z*?;jm9*r_h5zp0^9<*d|SDA~>$%eU=5Gg$S9usx$+n>TbO`g=z9;CAiZB(5*zND1K z10UC5%M_+JM^}@Ru*ZbGhQ;RBRp||4=EC6zdZ1=P1I|GCwv?~{e$acV@ohoeH!0i) zEN}w`7`F{373UO4{7$D9w01z@K-1UKEFg7F#iqyPQIqbF;I)A7K>sa}BGq_KJF)FW z>dpn#xaKHIP;6xbMfbSd|I_m_oR+!JofE2z6!Y+JU&XJj!o;`Z=basXb0?H=XEtmt zu?R}`y1jBMWc8pN4*IB5_jODvlEOSj3j87G*#xMxvE{CW_*ul7cvN0tvNC<=J=DD& zC+%eBA`;GsK#Rzfl9ZIx)YO5MbYS*U#tWDe?pBF|vOyg8i^t}SgbSI2XR_xO-(haK z-l~oWp#?2H*#r|7<0a#D{y}4eb6Rl~j~F;5x@fkBytO8h6KVScw~Yg|1Gk^_&+K<+ z{h38QdOaS|XmlMnUaG>1lQs>dOGy2Iw#S7|{u5Y>8F6jhyTwFB5wG>yNdVzvP|tY{ z9@7dP3R~btq?W<@^%SP^HKu-!YBnPoyPOGx4@x8|PGDCf8>y{a(jv0_W;f%7zj9m| zUQ%Q2h_Ez*Sx&3axgbmnI0pRdY)L-?7(4WLB}i`5fh$8ztYBw12?(L-)d>}Jtbw9; zCV@ujP#B+L6#0?1ATq6ss}kR~{DF%1tFvgCbvgCpP0a5&-6V39;`)a{Z+z@w@NAFA zZ324y-3_LO>mAQn7s5C$Xs(d<>*2g+9cwW5$8$?#*C$fzZV;$%|B&)+%{vMnkxVUX zp!2dK^dLnx8lh~@`1joe2YryK4V=*j3_>p>IaBFkud|JJ@)57XFcD?gnKiMPoV zGUF~R6<|;dw5LA<;og`4NIYos;)sQc=P1b%W!Y(F)jil64Vq#Gjq%-p0AH#=Cvl)? zCMy0)=RK?UnVqOF@_KzrAR6o*vpV@>m7Zj+!q_jq(Y6-W>_&(RiwYkla!He0+OXf@ zYw^dadm-KXZ)GxQsIb?YUReFWvrmRR1Bf^*wO01=evCXjEo--K;rbSxzD zUX6EhxSUBSjceeX#n3Eqh9PM!DMT_bM83x=e)%9Svl;QiWn~^&@$PrKAQYdV_5!S*XxtRZXwf9L*C%dlX;Qp zv!1(QMgMxUXkVC_5Kq!@ju2gA%MsGTgaUKcMg_AEXIf@KHus(#dQJBV$uIML(rX$eh>2-cZ}xrc+T^7< zJDEvg!HYZd>4$Q~&Zo?T8N&8_Jz}n{uJOo>dTFAjzs7p`oLMa2kc^vSMz8kUxion) z9*m6cgbu9-vRFUUp+AJKA4Znn4Ut)|Zz2W1X{d<=R|H2HnG6o6m*3(p9?~TUT)d9p z4g2!)Egg)PN&{By+95vPXDmFOId@kZY_l2cI?LOD&O_wCdzANF7+bMU zz+ihuytdaXMkkGbb-QSlSB>Vi%R1#rS7arsiB88!gYr4w-1IwZN4jCf#4MZ?rDR87 zZkinJl-~8x5mk`LSNKu!_;&5I^l$#*3@?9h?z#yrh{k5Ta~&q!p{)P*DRNFUT-@p2wOe)!Er`p>2ltbNKVE zYD-bXpG|VK{Y+;Ci@z`W&;2xu`gPCS!7(-WSQ=~|rgxGMiFr*q52@7}rP+>L@xjJ^ z?{-DcdT1snq1ZX$-%k|OrVxQj0;^Qw4=40|)c$|q4t?t)&rq!jPpKlEKcvFcJj{jE zjW-y>My6Ud;iHrfto?Y0!0dSpD60SML&~>Cz>;zPTKcjylwnL`l_$>06ASW_fF|Oi z0k0NF2-BQPYME?OIeg2c`qlK~S_4Il zYZlYLB`y04Q5Yp5Cq&8lKElf!nWubxt|#bcIvY&l?q-`KZ}h^)+qIp?JkFd%s<^7) ziF%-$C%_wrY`fRtScrH_ic!Ey&%4QlToA}A0az78z}$F zP8j`PD?$vo3dqv16i!1!b7fg?OG8s_Q+;DoS6}b4TV-SG>g(StFbD?ypBV*Ab@uX- z?=`oQC=p1s;F<<#!owA-?c=qoXuy+OL#_W*O9B9?_vVoHex4wQA<^<^uectSi*KF=;w#d8I`+@%w zIs`>ijvq8#=&YIMQ>h9Ggofb$fO+bZwjA%UY!sIEZ9lh>c4rv>=-8u2*{(@?6Z7D1 zyJHM^=)C>}^B*Mq8-m<=0Tc*?LWZV52?R`p77r*-ysrs zf{wpVjP`cd)<|nQ;G?XbKYH(Q%!FS~Bo}=p!ZnEYy7b?3^;iz}gJ}mmw6gw|MSf!5 z48;}6=S6CVgMgH$6;&`3MB*1J?eKy~l8h!>3>?$`_zI}7cO2h+_;Dk(q*fKXSFB*?39P^uCmakZF3?qTz#SPhB7z&jBF>&P)7}|2`~4>dCPtvNRrkc5M_DeU01y zvp%-Lp@#2Afxoi-dZ2q!`ICiF>=dL)>RVpgY&U+xA1j|AXh9>tpjM6hUWYP_ie6z| zJl$qyK@^om26|^FOKXU65`#0g`rZINJ(28t>{^TICyJ7mr)W-NPSvu2wKcB&0XnZ8 zN!!mhcn_R+&aG1Sy?xE1G`C*F|K&D`-2MwcYC;#fU3&;siGrDEm)XH)r8s@25n_Lt$<=|zA4NkA9?V!q z0e_y?y}R!_HZRbRXVh%nmd8K#If*C$S*Y?(vRzM9eI&O*v<(8c;!*kNILW&`MX9_t zM2g}MHJpv9Rg0wcGDBGCF{lOGh!xrPMz;rAo1EJ~MCL4@7oWNZrm9@Op=%i!r3N4u zxruCcU@tYnC`h6rB?g5nQ<&AwWJTgH@AHz?vbEomS*4lgnUDMSM3&U)zXn%(Yl90W zXT6Kw_iUII{I0I23*)pkspU(T>?;UiC}QjlzVdWJd;iH>L1Rg== zg>{^%b5J?ig9jdEo3xHxG&D%63FHem+n3yUrC1c3oE(QU!Z!Agc%6UTk`vYLHV7o0 z)9Zd$@ocjQg#Y!%4d+>B?kCS$o*^3;dp7ho{(dZouf4Mx}jKb4?Bii;_yA9;FP=yR+o`t(q5U8FE&)aD&nIk-pH zylj#VOvFu`#fw-oFjP9i%kgQ+ZxE>*Sy_AfC->ZFq>(oZo*mAjo-X%gWe5!qxowRL zsguh;;-no7o){I{y7Tb?p)|`8z;Z*6AAoJIQslOS|2A`y7~9f6?tCxHv*A=ca`tQC&H#3La|6iAeO^wZF;@W zfMMBK+1B=lfs55*7%@T9` z7yNE(+U@*94^~P&h3nSQYrDENTs3HU%y<2_})RQ#}U=;X%A|rsmZu7A}ZyzjPB!)cZ>AU&6>6TO6b4BmoLWoV;Ys3P~%AFsb99}Z2V`K(v`#w zQ8FCKKdMDVP3RmMf0AZhmE?PqZPKv5a0CQ4cH7=FiocuM{=t_TMWi-nM~qiFtF}%WL!o2)~#pr z*`Ij=Crg+3wL`Q`LfefRnm3Q}`rhb72Ea4}_{vj0{U^CbGKoiYqB5HT^=-fj{siQT z5WH{ln|pFtsBjzYUnlDx8@-zq_f=0i8NrVp2orGI8KIuCir??{PuD zqo%EnVZgjuQFKTa9Iwi3oJBfOySgCsBu(jC!u0jF)W#LpgrdSHC8NJ%ec{E+6zG=u zCDH+FnUh?^kaZXvyMTOG)m-k4l&}oq11mnA+tixliTe__$J~6RrH)nJ8& zG=6T!yMV`{TS%zZ1leDKiCKo^WsUOfb$xISs4$)MRv8(T{S$}@>@#bkfV47DGiFzu zz1=Rfi)Mx~ZE!Dhh_3qf8w56)@}1e-FD z%}bh9x**S;`qQ;;Y%*ge57VV za=g-8iyJj>FgLMq*hWQlOjxkL3d&`E7lRwKRRK$UF!~92A)h}W!vFS5{%iPi!?Bb2 zCb)oOhV)+I7R>ZnNWxP=3kvi{oKiv*l92tVdUYpzc3uBVi*@`iX0BH8HNCuZ&fV5_ zlV^RTDKU~I=QLsv1VJbD+8CBGbkp%INV{)=)SuAih#;0v4A7XSn+I7$Hs$WEFprk| z9(B3w39ZJbQf03?%W5Q!bRoFz*c%QytqG$^J$9!*;p{odj>5!&&9_sjWK{gVNm=gw zT-+My(q~)U-fKEvsDl}p=zz`y!0dkz+dOb3ODVo?@RpGbk=8|R1`a(!M?6uL0^@5- z;P)r7kYQX3jM&aAm$;Y@4B97XYe#GHEe7Th_^PzZ4`)bEcC;6LU9LLMQ|CimY&V?4 z2!MaFmdX%5yYOYKuO~+Cl^6l$R%?P?Q+fDaxn81(O9iC#@T>EYR<7a@+q5z{a`~kk zB&9vbhc4neemDpg-{>`J3~#JndlJT3Pr~23-tnjK?>fLH7XsTs{`+NBsEM0CdYV^z zp%&z_+zU9KOFw>u2B3aY)!?C5_I2;;NQ~QF2eHj~_~)n(h!ugicHhEs&M=7R7*IZX z(!hcc=(&M>Kn2i1geRr#8SboS#)O>e?mE)=TTCSJX|v5^(R|N~myd?7);FoGf;($=iOP@GY%YQn94TVD^?gUp>@jkGVs#_2R<-(_jkV$X%A@%)*n zP7&ccQ9>T<`(X>sCUg);So)q}6Z;9oa`%ZPlBRP<<#nxz0?5$Z_Mu zW|M`w*R|ak&1CjC-lR=q9|nPscY9rYkjycn&%6cs#-=>Zm~Cf#r|qNKMD(J<^stY^ zlF%+_E%qGym?c}Xi^8>vt6jvmoo8(qht5}`wKLV{xCeLNXahFQ%uX6V6BJm}9f(A7 zj^x;|-K6bRe3tMpfFrV~7di}n+-v2P8rdzyj^35|4pEv^h08(SS65*fcK2}VXPUJy z6)}_l5Cx?e{TF|ZAFpUy9PfR4&&Q8}{2%;=mep8_^iyJHO9Tgq+3~QxP#C@w;jRs& z8cbITsgGx-mo{7@MS5gM#*t!(3KvlnG?=Z{=&h97wwN5MJWog-=<|QvntvPqE$^+w zSG1L?Z5tA#YhmBcrXv61)ccTHtS=u&s*KAs{a)qapvFOEa-mL?q^O~dK*jL$Qmvr3 zZjzA&>=$FwY^N1`9=s^?72Y}~)3mzYBxn#OpWB4~3eW=j%UJP;lCI9A#!sk~V1OU+%Adt?JN>=&?~tUcw}4zZ8{ z9lqt9V~l)=b39cNd;_$K>gy&kp>$FGimt63*E5mUkGe+n$~$i7SXFE{1m;dm(S76% zBAYC2qv~?bS#J(QHp3ZHe5_=r=$gc`+57~G$p^OhfhqkXFP%M%veLOp6n*m(bgom}H=~iSA z&+_)WkM6M5%iE~9=^(58vPP1QqydkU{jx;|D>v$AXHD|V)F?EFC^niO4|cXF(96O= zDL;OC{<#~qKilt6!6gGUgw%OFTXfR;7#M0!CxY4sOJ*f{v<3EtR|IN~pOVUg^lvXT zD@F?|_Le9dHwJaa*0XwlX|xAigjO>+B|Gs>iY zN~=a-@uyB?7lrZR$jV53q~vN;&JQQb&+n9LFxs?)V zkjL;T^?IO33pxkBSMs8#|1u(6d~f?YbT)o7kc7V2VzQxSOre4St!DQHvqvK)>u9b2 z%cC&6wL~@(GbX>u($U`+bEUBKgY*D%<8n9}2=t+h!v+^X(E=F@Y~99_1b~PTZiuiU zgrPM=92<%T7a6U)p<8GH9;5@giHBgoq6UDfI2HwgMC=JFM@>5{Y|ZQU|*-|5=lkR_(prCVygtCzBOTv(i zyv4+cMu(WML=3U0wd5dqSqZ>BW5=1?_|osNAjG$7c$|Y#*LhN*q*Q=RU$a|W36FpP z6vZu}ebxO$x|(``Vg^^q0Typ-dgIJiuk=Nr`6RQ&MQcc-ywYZcuC@tlVR6J}ak!4P zrN)gcXu6V{Gd(4N$yS!-o5*Sq|5i$VuFu?o;@5_gkPPu$DGU`!;_mRRNgsDZcgJRLICrUb- zsFQdTzT~b9;3brVu;oT(X}+D#OMJ_#Td;Qx^SqK`a&8-Bq5m%On81sep&@u6)1Cm$ ze*nNl;(BWTBT9u1j^n$ZdO)uF}fR-9YbZsgKl(LtmjL8VmL#mM`XiwgFnX@_WTU*{I<(j3xt+u=}riIH13 zq#Jym39VQgSq#^4*r$!Enb9>%>|a_o!yVL)CIm!dC?bGo!+*TQKPBq>Zn$eI(Y1Hw zi#imF#M%KMlL4piDG7d5qNo%G5F!-z!~OOe*TWZq=fdr|smn>p8JvxF%QNqO___j{ zC^SIxCPv8~(+0hWp(nwT73>|4leq*s7cH6rb-PUdfCx|D7-OR4-1{m7F)b}U^TE#_ z3QqlWPS5^m>;kmWDLP=Ce!aAy$H`_W?>+>KdQCHxgB$q$H{4a5k^EsFGG`uQHY!p! zUMw5q?y`j8Y|a@CuOF?+^25zf^PFx$>SUur0jW?cb)9Bv(vUb7a3KTutcDuS1v59w8Nqln@N>BNUa!95r?4p`4T^ zFnzprX^<(aS-gxY>;JT?=d6o!m2t*(w=9@XTK&Ws9bZ#&I=*$WFkZ!a;{>sj8wz<#c!$ z{qr~JIla;|2cO0DLe2u3fiCAWcC@Qfhi`i4r6Wb$ukU?47(_K_^Ci<{4({FkDgQ7} zpiD3=?EsiIs9hxgdLesX5<67?$h3J7?Mm9$~o6>k}|^j#NL&yoSDFsJJJxKTE7TUps1gPFNme=Q8Hb|i0@1yU7zfB}4$16wdNbgoAthUbH0v`tMiXzEF%2ODY zy-Ej%m+FD4FH}bQA(iu+rMPkC!ADA!U57!QUq;&g=KCBPKPUo6(BIsjj4Dh(ng12+>YvXy|I8<_SY|If#0Zcw16vUu5!mIR zK(nw0(jbfPAf*uTFoY2k_lEYLoT?*Xr4eV6Jc;!;%|k7%&LWbg;kWah$I<%cr?$!f zdkgz@|8lZ3*7dhcN!dCWfk04P*nm0^{Qa355%k9`jWZ1aeLnm*_uIsqn$RU9g3QVb z$q*-kGCwoa&Wasvm*y8Jg^;9|@b{3gn8iiQQzd+-c`7N({PrirCyN#e|HFT{T|Q7Sev@7sh1(PmopgAaZL4Y{cNhoHCU?{$ z&>aIqIygaocs*g2c;)!_!gignPOruuTRhwJ+I188PrB~q4jKoxpB>XxUB-*(bL-=< zNmu#aD#?&2yfaYW*ngGGO6M^vA+|{uI4~ z)!41_>!2CF#dx=jAbgm#g{O)R##0X^z5jEhZz^r4d$rzkzp-v@tNQI5hK#R><8suH z{ue!(==o+%YncKJg^0}2pQ9b~2hk&%JOfXlxLXgFa*LyH?oSv7cIj+-*vGSETQ$ z6f0X>*aMtL)Mc|<9nA+Zanm97M^^t8EK5kOcRPpmv-*jhO32YxYm=% zAR;{w1r&ALCq8o(c@%eR!1bp;AL8iHuU`v)Na*I7gz;aL zQx1r^^}(Mn7Z-9j5JsP!o3O(MZ0_`RGEP`r1<_N8F@&WsU^e!DN;ubnN;!kb<{VDv z#$})=e@GZ%E}CF74hJ=dG!yf@t@pqK$y|<=9t&hVTairrrxQp&g|YzWj=zA5Vys`k z&dEPV?HZob9}dTz6YNe|esG>=cHe2Q@tCx}Loxiem$x;t1i7&(P2whql#F^o8ZrYi z#e4?3oRv;HIPh;|dHc~6bl<-GnAe};l1|mU)6w{Uj496BG#VSI%t!Gx}l{ zh+FBi#A==M+!+C+S*PVj@|{fO`iG+EVvvRnJZE)}J9t{V ze82}|eGy0*TW`4Z(n2$oipskA4N_*@M{6PpPC8g`o-ha@IROKnsDSCm@99M;5GhzL zTfOF&`u?HRTZ*CQ5ju1+5ZBp#+<+*S4rT&RDe{PjVg?Q5KH01-c;3i~7kw_$K_<50 z+?yGBS{!WIU0i&lH=6~K#&q3Ct*W&ff|t&84T0)fOlJrxoh1EQ%c;~R)gkN4DT-)h z9ew91us$a2_pF&|{JntH4?`Fh8nJg=5o?P|dQjUK?5#r7k=kaTzCkY^K7H(pXR#nI z^|yuSFG5>zrX5$}J9_B`79*6q)U~l)>9O(SLiLK89Uz+OpL?A2ZRx-1f=I-4T|{x` z->{fHy}dSlC^e9CRRkQ9*)SyThe!|E>;0j#fND%a*&Fi7{@+5{BG`7Bp9d~J=g-BD z51ac#qiu>27%+bK?1Bggntv+Rq-Dz)sE|N*D^%tVV!Uoc3AVF?I4(?yN*4GE{iH81 zCNjXmDtDdg550&x?2@okNIwBf=llrj4Edtt;?^*%P%H~n0f^5TmHYIP!}_STG_19> z297P^DRr{mf(d`qPRVrg?o6bj)>BmAA8gY-1!lYa=YPpyRKfa<@a)<8rDtgtqlv%r zEv#z5!yTjxZJ??QWMXJwVn__&hL*iO>U0S(+fqz&zHM&xlar1;4jvZq7kN9bHkx`* zzMT=XfI<G(e!SBQku-<9AS*|mBn|^|8WkwBg zvJe@AB(2nsU_jITPu`SQg_`{x>Kjy zn7GxNut;K|eRPSA=zF5%kt(lYWj`ltn0o<1{z2s<|@us{X8NJf!>8@Plq${cN?@+{ku+by@! zR7M!qf|}&^PBoUT~`OdkT-mdZzKO=qD5V;A}t zp={W^arCQGnF+P;T$X}TTCUSqs*n@7}3;|UF?P6pRVafB^0xWnU3x%IaC>k%`I2`fS*Tv=iz_zoQ7OMPe;oAQ-IQ5~LT{nckSZpORmPm2bpE3K5)N z35%TBaV~6hS&Hfr2A#<8c~@ho)6=V6E1^+IsGu**ecKaWXE_1jkbnSt01IGLBsU22 zAq*+t;4_3Cc9T!zN?-($y2z9xfe0xifc9CxqF_u{yUSRSk$2}~?Sk!AyX$7j?5k+k z64X-%hOQ7g7}~>~0}2`UVXZS!+LdTAY<1IWR6FV;em)WDcC6OkI8FsjSg^T~oY81aCZ9H13i*q9aEoYfZqwf;iCs73YB?E4 zI_YSX&UhF%jN@I@p^2Agfu*y(0)7Kfe{e`c)H>1xL?`zri8(_3o#)z440ZiF(7H50 zq^JF*AHlx?)rvS?f&@F-dha5SPTiV0!Jfz01ADZyBDFj7KZt%8_`a6iDP{)@8K?;8 z=l#<0$cZNcTiUrsgp)~u$bucvf*n$wfs}op@nr)<*$xgpsIRznf<*)ESMY*fiCMNS ztYb#=Bbl}t0tEfi(&NVV(yxwWCo~odf6>i+4aY|KqBYmvw)>57*zh<#>_C_&v?C7n zru#dW58@mY@M+1ch5(#0(foo2M>w<@C;s~KFFgsIfc-viQ*1j9+CvoVnccqkXAVPh zIFnUVqkNA0t8-I*On2Y;hLM=l-xcOGNLjo5_@Hra1A}n1#kc|oe28354_MeyxkDmh zKu$L2Y1+@Z$4CywD_K9QL@4fZlDu&2(nDacH8Z%14#{>R+suN@4L znOW^>0hTTNmrjg~<VFRm~U9ijPu@P_>?8ucz=|k3U=B{&Scl*85Edzrq4zTw3XZRncCy8DW9zUkQx1v&>UvPwt-#^|(dAC*lPSzhYqn_JzV&!e18Uddx5k}J!& z)h*`ZRJ!;dO?X%a)QIo`LCYywqo!G{*AfIU;!&pXIJMOWEbBaSe&Wf@mjitCvx`#& zPPRVFKMjSb8161y7B@U2xOa=E1W92SDt|`vE-9Ixs&T(1J<;73N8p><`tQ4_y5ft9 zqID2Un}!rx0~hZC=TO^jh)# zl!rsb0T)tfl)Cl5R(6cH6-$eKXjdocB)k?khhp6mm()+a2-O8tWX@Fdo2bi+@Ka zp<^v#T4Z-fUW&CzRa_Cw_r9Znr$zBcA!5u{A8;Ui(2%h-NMqhgTv_ z%kjK<6$Z$|h4kZTw>M>Y!}iql_118!P|wTcmY*APz&YdVL)H#uQHuWhUoSu9xEIRH z1>zk^rC$vSlYf2s(O6njcvs=&Wn(&G?+cmW+gxGpcy?QKtY<;I7$gPuRiH3@zRd-m zq$(Q!zfU10#Z)fq>)*wC+Oa|Rx6vf~Ykn_UUbf&F!2OndMoMa+tOqa6z@*>VYIc|Z zo$*~)aRYJTM7|nnp6Y0{sfx=L|BO-uJrm{dj@|CQ{haQHzmluvK@|10J9fq;~&_|O<_p#L_0YjVT2KHI;v3bbp z=?E|1uX`N+!iF^8RS^(j;9^*O1Bm$FV+8Ot%fJiZ1FC}imgRHujfnWzU>Ot@T}1#Y zPBF-bkSoSx&Q{}-566#}d3E+xXAz|B@2B#_G-b8kLMCm7!YY}aRJ<8>ZmBOP#YHwV z=@xz=Yb2sx_k4;?^7w7H0Q+I85^Q}&7lQZQlSz<3NR#?$g&yPGt^rIsA;kODMk9Aa zYxuUBLc{GSVJ+o^m$UcI6HIF|F8= z6#>3bgs#=7__fNa{XtIn>bYU`s8fl^S|#zN-S~?S3Ps0A@syl|*-=iX>2uJ_x*uV= zDYOjrorL(ht}_(6pF)*UnJy`g1o=r_p|{6EP-&0-06wMu5 zBJS>WZfA*1zIn2BjZJ&zs?@bMUI`w1R`Xw$j+}V*P1^9^(Y1k)8UTQ+UIHw80qdwJ zONCfZ{tcXR4w5tDvRFH?QTO3JJc!hhau|U2`us&8`Bx;>KU{wL^moNN%}y4zdmZzI zljuf|{LtD`Du3}jd1|Xr#Z==9jpdkR zFzB1c^;tPV4o+^8>?NL%?HD>zt4WY6>^m!=Pd8Ht?_TSVXNMo>;tFjeZ=HL7L;NJI zD*P6(`Fl|cPMGcgghP&mV5j{V>24N?7vTL_}%$< zKkeff43~tGT2Di<(-v=+vV%&*4~fW=M$3wGa?C+Cv`q_e=4ryv6*fzKeaQIa<9;7u zT9i$7_Ct{6rVxAXqL`~9)b|aqnXX#TTwjaA z!Ht*>hblnpJR|_#SAB^Bm7s3HODdrl*DY0we8hG$nCxv!SP<~$zVE|jrX&|zc{_DZ z1xS8MlAkZ{bJq2I1IP)WyKERaJsS}C)Fiua(7q^vb;*kA-vGZrnz))-*R-ABL5^qS znY6;qyY*zKsocMr#ASTrUKU4rz5Kh}+)`ZO!sgDr63a>E^Q;RIVOf6ilDzwEaRaqK zO|QmN2>u^aZy8oq_l0{ex{;9X?v{{7x)tf}kPhh*5J9>@Qo6f0CEeYz0qI7NuCsjp z=e^FmKkUzYUu&*8=NRL@fA?hNQH3cL!S6mB<104~=_3RvXG5iTeEPWCJI%f8)KQsH z;{U&#qM4UyES>_*$12luQ=fg~8YjmLm+~8^9wM|zynoZuX3nfvW#l6}v8JD;L}Yb` zk=Q_%Iy>!zrj8`0_`op2$1P(iJe|Y*x|tj3+4~GpnGx-@f!6!dThh>o;Is=Sg~9nT zU$f`Gr1J7BLRXzQw#2@?(>@w&T5i*8f$r@WoH;lYVeHYZZ$_p5i4haB^c_uhGGiUf z+D*l)G8#KGu28xW;5F=by*S#iA~_Y!8Up2?Aoko8769;Flo32X1+GNE3alxMCxHzF zt|*z~a-r47lFa$%bpNfd>{&N1tu0&`RgV-)_d(UYPT9R(s%Q5_jSUuhXk5uF70lHN zaGp#&WgaMNF?K4RY7wjUM5nqaQ>AGSu6*=qW74UG3CILr_n+vgjHfm$q~e?Gqf+9^ z&DCDK9Hv`{t=yvYJd-5$XORfWLEuJRG<2iIB=yH}#CTZ1b$XUcu3T`sL3|>kgatUk zyacyRxnn%==Vz40y)93DzSuDQ0{znGjt`59`0ZZtGe9fI2a}wT7#SA!qolguJ;OQk zn5-}3BI4Pa6@F+dBL%H0YkOK&$^==};S66tojs?RL3Oz$Ei3{XSSh7@`m@aj$Hypp z8R795E;DT(M`bS5=2p2%`_^Xz4aU)0-i?UMu~rXuLXj8(H3!+oMLgqK$vZeV5e#zlu}+z6}V3)t7_G9o`556*lSu&T7VeCOy=V-JJPS;v2 zpK|q<%EPbeda_aKi&D%9!rNg5fraRUqef(@R_E74QyFUgq?uDjVNTg^;ZxH0FA(QK zb+$ajaa?{Fm(sgzjm~zC5PxV_;s@`e|Lzjcwf|tDa*aE18?Ttgd|^>FpNV0 z-8cCP)YS6Yza+%2{!n0c=p+jk>pp$URayK(b;r-~UUd5a)s949^SQ4mn>k}>XsIR)Kq*lx+#*VN%MAI>Lhwy7%6;2HwJ1%XPPZykDvnglx- zLj;LsT$iKir_RlG?3PQIYv$ZE*T%EE*>6QFH`I4Xfs$qLn6b)(+HuFciHZ3asD>kW znf_;D-}v*NRkEs=IivwiB${{SK~~O1-3Ed4Bk*zQ7KWBfO+MZ}?4x^ky-A|NEh;`9De@5!i$RI-k3Ef(9f3lBK6_&&BeMSAX2O3HT$pWh41*yZ8t z+d6@X;iMdx@zq=*lCXyFj5Ywpc{O)@WU!ejlSB58*te-tWzA>Nx~aIYoSt`kh@~36 z=kW!HE(|v0kzVK6+8<2^f`(*v;P=Q%Re@?jl4V->vtME6c1wYVym8t{?zA$5c!LQL zat`}2Mk+#jgvBoLGmN$CBoBT?w%TtmW-i87GG zy4>B{^m&1>w`lPSYB(P-q%Rp?)=&KAc~=RI&Mx;f(->WMflitUoj2v9gz*+h-O9o5S-RpcRB1g=` zW;XF*vytlHck?+u;c(UGY^D$0x9p~fL+N!*l2z+X`h3ys&ZZxDx}tx)hIV7v+cY-Hvxo# z&mU}WBL8f=xTcg*5SkIqlr2p)PGDhbbC9>msRd`qyof;1f`_^inw*1@0)*A?q>kOZb))hzW9)D^Z&V2(sXGIh2;KzQcyQBRxOEd&}7CfB_>l@}4}OUEZ9DZ9vv#q7*6#DTC(`57o_Tine<1Jt}FD(dj^f;d=>{`f}Ss3tPW%K zH1ueDyY?*nt_KxE*0R?%!OtGaGt?CSQozA+8s~rC=WxxrpTYLglJe1bqVr>{VApDR z4S-4wN+DBwKHc&)Nk>u}j6c63PMWxZ$n01AC`h!6)T>5-8Wl?sGQ))#PFJp^yqOaH z{odA|8ou2z^in4f@5bJURBMG32qpR%1)lQn*U z!uNk{b8+)3CvbS91=u%ev8{ZVSe~=3v#7emAM?dG9)$~&8kS>DkV=#$y-M((K2oi^ z5y>|Yyj$|R{_O3^fo-=uIDch`!}p^2*|=bU_3qifZa0sveaUzA%f!w!e|J4Y96k-JhVsI82ydIfSK3(Ra4i44leH+^eXUYKp>xxB`h+Vlf8 z13)}(*Zn05tBYAu%L)4QXf;xqX#~ebC^p?5-aa1lM_2VfK^>Ydk6$KpFN<{@fL>3+ zT^Ac!8b1FhR^g{r@*uJ}6TJrEdLLg-!N+H+RRVHubMK-O<8`b0tCQ9Ccs8^6_C} zkB65?%jQj=>_et++hwAaZHa`#9-lshW5^2bteu9W#-q&hPdU3h?G0xcB2N`eP@GQF)s`mcEpPK9<857aRbKZrCt?XDsQ_np9e&%buSE}z zh(Ljr%5eoF;ADJCf>*q2^Nm)Br0dVDL?ACYY8WErRH8HbTT-*T(IbQ>Sxv%gS(kLE zZ<)^Fj_zqrz|~UW!|w#auS`WrHVyoX&+Va93u8+%l@qcRnqvL6#tuVX1;B=pJu}Kt z8tqU)COifLR(^QLsWGcO4s0a$#_qB3H*}+Q9~%TX_sAA%oW&Cb?SbtK7F3)S>=ncq zZAG-X#-+v=8jT!j196t?Ax^R~O&7YC=@MEZZV_ht$zV#Zw}l1ND8rd?4pjn7W&|@> z-#G~l56a*HTF&slSLgs?PS0)2WS>0lDP;k=0^Bal{$kQY43%PmI(i zD3FBJdU4LT9xI9UKZ~~srNhWq`en*&53s67^wl%+rfCG{r=&vI{$zNO$HSYK@}J7= zMca6n4!jl}`p>Nn!rj2hOTV`E3we#!jT@mbAMJ*pk2bL>PYmz!tHJbF?^Qu>L#mP+ z;V1DYA-)LcQDqbF_ooyg?zo(GkMsAw_=uegJ%5nqMl#|-Nb;#g%NRQ4%4XU40x-!~ z{wzh6gQDn8#~LU@?AcN|rwY@>?Lz2KouWf;kS}{=`>v;Bj+A!C)bhND?WQ05FWIVL zzoeye6n;DIj|x{$35MM({0Jh)opUzhEZKX9xlFvU96f4noPo@zQ3}zae<4yEQ%&)( zU4SsM{h-DAG*V~(;2**C<>i(pG|v;h;6>|8&wxNom{cj+0`M|C>mNnX-7wpgf95Gn zxA%!o0W8lU+z zEjr;AcAgDUr#`kgJ>N%jquqHcVqs}LDm$8qC7onW=`~2&VW9j4EBs7P2TEPvrTtod zr3WMY4W`0s=GZ~Mi)mVso~|S@(Q<5O<0akT&-wKbBKf_iajesQZrMz(DaXVsb_9vR zHnrmR_9?$2#OEi`m?P(fI)8tFlbn0y1Y^Ymi}Bdz+O6+4FxKI3&IM>$IKvQKSXjqYZlln%R z$81+wo5R4?3evzPxxvt}4{Bl<1Ev4tH)1Sizf`tE?mBTdEz(ypT7L$_c#V;FEnUMJ zhb(5&V;M4I)0mpiOgyHOi3u5)ol%!S1{`(^cb;Zu=M0_nR-O-UO{@0cNb2xd6%cKj zdiqq#1B-`eTqi%qtZ|>s-yRz2UO8 z@^CVN@h%=;vq%NIw*Oo})_?yq=fx4Ww|0z>LKFzm9u{C6Dx=@Xbh_}eH}B2k0q0vO z;`E@66Fbk~9Bi$(TYTcV$|yO!8`sP!)6sRhTS#9v5OVcRVYZ^$Jls>zqd~yluu7f^ z4QNap>_;52oKI2ir;HM+^%b4Vb%YgNP*X0}H418+J9)RbY4qrsrq9tS8=Qk(%B!Kl z?(vivaeezB|^|%kz$nig}(G{;b9v-o2T#iTIX6HPjp2+e;f)~&3l6A%dM(P zbkL23O9^zDa}r1sd|C; zo_m?nNjkOdta-KQpPJPv&d!3{eGGq*jAVbj(S83ZZ9*~EO&CT>qLXZF`WUfskPR&0 z0#Ay>;k_*Ikj;(nWw_%3J0La0Uqe#P{}LbVcHa(*O!h>}#^j5IslZ90%y-zMF_%od z$>hjZ)|GikHm%>YyE-`=RMFx*tMi=(5RJC50WgoQN#mneiz+* zsMs+`P(TFG^wbZZQW8Ub6SFjq;}B2jN@uGwqevv6f6Gj`M|%&O<%1|~FS4!$g*P3} zmHzU3uYzc9#|6#8>AeY}Q91hucd`g!#a@hS(rFfRa$*J}^uK08?FvZX)EfmXKejEv zzIvq`*Zuc~P(4+|Rd}gRQ3qh5WdRmwhSF08hlR;;6PaTyPp{uO3@EgCT=~6n$f5^R zU#^mk)}f`&x-Akx$@_KDQ{uV zX26z87D!Bq{mHi5nCS)ee;}5FXV%^OE-vCl%ZYNMCF?g z;C#}+(;8p=sFMV<+?grw;~Jx(fhPfzI#QL6Xh!Pg=7JIk(>s@@hI;01E%Wv&+6~F3 z=mW9TQ`M+eIQsNPOj8B3$@JE&tOfr6b|x@E;~Dt*7YYKN@&MVUatYpWXV*a2 z@YM9k@aWXU(BNPXWTub2m8r4J`-TfEJAa0>X(+K$vMjdjpTg#7r1_-Kh5tPH~`5lq8vOF)$ z_eP_ehRcrWpum3%7R=Z9kG;Mabj9%Zsm*%r`)kJ?#LQ+P`&Kmmb4Tk~7|rS1k*6b}Z|g{s&*x=J-7X}A6SJ*QL=?F9>yvqx zpwe*P>(yk`>snicW!iR!ubQ~1h+lkJT}@Wsy0q3w;dp+|h};=Qk9R^fbxFrxP-5`9 z3Pc!G`efa(SBTKow^wRu;7@>ey1I-zC|3|N7ZO9-V;_3uvw594$b_3U1dbN~{R=zr zaV=%=bV4k{LE(_{LDg)$GsieBlLOX8PCE$%n1f!EGE~=<^qBQ?JBZe5=U7r zcN!2pO`-``kKe1%idwR2rvX2o30-~w9P*$7fZZwh^ShG6)SLDnOl9Pz1`vR1cQVIy zEE>@D3u~?-r6ARd$XzB=Lya`Ga&|rpc@dm$i;N;I(VqupZfb>CyH1TN>1`U_ zW0HIUtWJsDzNvJSnbWrjm6xo{-^v%-e=mMZ%b2BSPNi9}+`SgnNbm>qNo622-7?i? zVUeGG=4!M#4sD(l05=2h79;R@MFz4a=DwXI<1Y9Fkfpp{H<2_OEC0gd0SlPQcr%fG zlf(HuM?8~il-;anDtBbFlG=TJ#yU{M@nof8UkAZWsBvx)*1E(y_l4oJq!}rQZi?|4 zDp`Tzp45a`h+o9uJwuy_MQ|w33%CL@KT*A*9Xm-^Ig61*<(x$<QqrbZ;_bF7D zi|&6uZQe8HH0p3{S08OI^Ha<7}>Rxtb(?Ai^Pql=~V!w=W`U9LaEx zNPQsYr^UbX$ue)Y7Al&bvL4lI0rb_)`>yg(b+00*!m?#4c4IBIuJNrebD;4;wG!reF`~pg9x{;^yzDawpFfrZ%oy0hpv!8H!y?^pnQ3jw4D(Vyh(_KAv zrk`cegAb^%idPJAkX>tH3+IAm=pJN{uSI6X-VtP%OuJVafc#5wu##^w^7LubDn7~$l02_3P#hIky^I8g>#b?UvzZ{l4 zPw#1|ygZFN&FW)HrC4C(*hbkZ>%bC*Fujw@lsE`qbjaX1S>$Bp95iY6h||RHM!wQo znm9seCVW^uwO5mVH+oUo4uwF*J})~2X=T2~tvkuYhX18Yr5@jbZ@+#VVaxTR-KHvly@kRsW;%TYn1?Iw))so}Ru-D~FZNS(8KP?gd zvy%NzMSS!Wg%hn2y89S_Q5L%k$Gw&8ug1D`bN43{I62*6HE2x;=k9^tvaCZ1tTP>* zvlSHKtGYv~GdcY;6;}R`laQgw_}T}p@LMlA>}j*wBzi#ybr#E=?;~Okm+4|R9!04= zqD=;cNCPrPFLipN^3?fSdyPSRrJ1n*V{&-@2a3o_+>Gc>EZwiWvf5md7U)azRv;Dx zQZFDYBe3|K8a+r(kl*&NfK>C|Fj8t~?ZZ+})v1!F7|9oQ0Z6+_(U|v3x{mj{Z_oQ3 zeE9s%Ng7$(`+)or928Mwg%3dmUeBuL!h7pPut4?QoEJ0p*N|?pg*oCeda1autmWN5 zo)w891R_PQ{Ia{-SobL60y6JH^tmyYs=J7DGRN_(&pr!A*QEPXi;dWC(hF6r2iRFn z^)pEwj8#6^XmR%+m46Vu1F2|;Ia69l8##cXRQ$r?1i#BPdZ^cYclq zHejR)0*_#0<8k8h%?Thj@1yiucx`#`%>@oj+&K-uySwGM-{7#=DB8>*PqGew)4F%YQKtgrI>6()0r$o& z3@S2+qoCp%CX?ZA=md_0Bj6dCF!tNYeU@MX;Swljm!lR?g6aq`%H?1wP?=Y#}SS8x7F(9IImR+ zdLTJ0d|<$bkgbW+{Z)gmA>_o^`u8*U=#I~#L)iwXWD>IU--cj-t~1qzg5vF*5Ee6W zV8*V5io7?};17}CTX>TKxZa@$J`Y;-@oc9^sk4>v^z0dt}%C{Wmrme z$M%(504>M789gB~KR!Qp0D85V!8P|Lm8XuvqRMnj;#ic~2>Hf2xFk2PW`Uf-x%(}5 z_pW(j7r?dxJ)2?kpk|QwypQ=h>OVGyHVABl4taFHulVGt=Su;`kCF&OWaCbE$rR}sLa2@sR#kVR|{}%Aj4*tAr>5VG#CAlZm z`GruEfy8hSY+eGBgJ9|ea0}FZf7XbSf@9GA1b_-Zdou9u0&m5r zZY{LLf7~+lS;)FS{>@a8^t-)k)#gmZc;DQye;LJN0H?W5t|;m&g6+xhULcz-DdT$$ zQ~>?<;!h+MEKCqFjKjO;ckb54=zM&gua3A)Qd+;fYsi_NW$CFMhf9(trD4nD)>&0{ z6CBNi+O|wJ@CDK5dUJCqT$8!3NPEeQJsD=3h%IZ`d{R#xpu)@jwt}g-BW{2U`0s;h z0pOtiUsVRCrWWZA`BO$AcI}N%0;!4dayS}DdG`X!(Q9pGE#r?OI!H)x>kB^Q`RCF6 zj#_2*RS5W;X=CYmj+gOR+)fWq9>N2TOBSjxe3ibeKd&0D0z&ED7J5Jpe#*(q$5#m? z>sF;{`!XekL;QG*EcZqjM1%9wPa z{7q>CZ5Ey*UcrUCqmig+*Z1##LX<|HU(R^;+x!xoUC)wJEP;*#Q0@mr{ZfDthx4WE z()sGkZVLl+plpPIy7_2@{(M&RZu>q`vRdePpENfHyHAh-U-|uL<4ZyNp;o2gF!{3M zZMO5BahokaTQMWcc$KRE%KZB;Y)&UzSR`G9t-o4>FxP1~Me+wXZwp&DKaWi11|p8l zY8My$jMn!M!OTAp#P~}-^RlUZnpp1!^Yv4cF6i+XDI^dO(Kknq9aTn?nDWdE$M6>d z)~aw=TfJlZKfIe5#+F8(YoYCCiKZig5nW6N&E8l`mtd{G>WAh3!SOWXEoMc_Z1LM8 zjIM1E21m;@@?czJRIW8t*(7>8@7pl2V&GGaIZqua*tG~GO8RRV2##IYulXNz(41tO z64k%h?JeEAA@Jb1w4c@I@CiP^^?sev)6`7+w(aljWE|8;MeFf-p>Rm-BD$taIwO${ zmttI}r+)e!wZL9WM0uNz zk`Krl`p3_*{tL2(P@1`Sw7X+suG()HQSrfd9mdxYaNEd30GQY*Xgzn|%YMw% zKbRXlJBdH#zdRUfQJp!;(7iezqgS2J;>Y%OodkwyoK_yI9qAf7f{4#!qYbGbCngN}s;-%7{vn&h{w zTY^lC77}?O?BDFEAWlRQL_Q)~6!CX4^+NE-8w+24H1&PE64ks-Zp6%%>gB$knvU(* z%CM?fa3vy-r%B{YwZid3oJ0tenkDp(U{5w$fCTueEu&xzDAA`r>usU63*rATu#`q` zxHXfS<=8f4*lq8WRKOm9wR! zBIBMyu9}tuRND2^KB@fwm-`{`|9TQi;PZeTVT0lg^vsU7cKrI)^lM;fbhPi+*mUo} z;J<#~zc=TfYH(F5e@@o1LrBDCl+MSbu_@zc)D2Rq0iGN%m_;ux1%ky|A!qYk>?3=I zcv))`_itM+PI`V@=~}dl`q+}qNoDdirO=FVWE4dXHgmyHuAVN8JssW_ENB!ozZEwE<8@Lx&&r{ zSx6(weJgKPG*82}G@4Ojp(n!Ix>@x<@=j~mg>JGp^xxB;^|3+zxyQiyHb@Kw>-sh& z2|K+TGws}o3Ht%-cnuhKBRFqI*j#>?TXYaZB7c&(Y7xCt`s<8I$RUR0`qkQsFti9c z*@E?Uu12;~e+h0J{$O^D-r!^L*JiGDXic&0M>yojsI9yWIf*<6n(Hinvc&p@q2=1Y zxrMO<`~zTuA-Y_He_(NeHd|7dD~wt2K!BHVqBt=qZWPwD0I> zm^9a=v^+Bkxa+<%Y9NPIPK?dwdt9cK40##CJm3B^y;EL*=0uP=ABZ=uJF{T6|8~0a zrx!}>HxD3(#ytkujs@gp6_~=m2X}?9A1>`kPEdEY)aoDZ^%3uNE4%GNYdVfEyd1EA?B;r@jiHK!wZF{mH(i0K#{drlK^D*BN2-GtGs|R zA?jBuTj)N|(DFC*dCz;XdU*Uo>LSS`I3jUQC-2kuy9&eBp-xE;Jvy*h8^2fwbhcRh zl$!H!d-N8~I>ZJZ&AbQt5W{;1J9K(6X1JBIKJx!rQ${L!*u@$8B!z zqWlG!|Kd9w^dM41xqA`l@*d|gz99p!av{J{T_CM2caqv^(25nF!0gp0d409awbZe= z6^;^pxZkCFy?^=`6z^-WNd%GBX%|4eMybRrF%+RV;Xy5}-0)_uW$V!Ok}iZiv)!Ro0XqY3mh~N!t|e6La(QYXVO%JrI@y?` za~;;0^!I%^hIlx7^5*2vt4Y6)2LUVJD$Y?2-ee`kh)+YV(ZcCVw8?EqCxh9xGX?@( z{4`sN)3M+fEu%J#>D(KYUc~e{W-Mdr3FM>6ahjVmmY@9ftAy<7&G%#FU*)_;J&|*$yy1$?;9?~KDeznz ze*Y6KSngoGfj(kv9qOKIu>K*rI;8E7hvy)iTNVMaC=cMmbT>%i#>7dv)bLY2bQl0S zlcQ}3ESoUa#=HMiMu;ubh7eMQyjdm+GakGvr%O_&`C-*SXS=)X!N_fcl~MAHo>=$E zzp1EBR|mh$!7zl_jpnp4id|RLg`azB>u<-2(9L~s-0NI&mcC;%v)EOK+KDT~|7o|* z2mhTE)ioJ%`&I$$uEO5xGpK<0tF9P?VupC|a8Q4}J!4jX!hYI96hUGi@9HzKy}-2~ z)S+EqN1tw!haoZ%!9$f$$PxZA8vv40E&07Ck>Tj`gm_o49{ALw|;Bh#o zoZ8&Qkq&-Ue}*W~GGUgqnVN=jpnr7OTv;w-IiTAJ8yX~WiKbe@jPzzJK|-l{IE|bg zUGNa%VKyA~|NH6sr80ZSW)H~vpEJ5v5=KV{k3-?t^1WxdHSAX0OLv})=eN@YPlBN zSjjtZV{l=WaaLB!`_jU%P&yeF8non6w5nf@Y%}u7IPYJ$X}_G*gv+)1|^@?d!>dp6-N> zZXghDBqf~-V+(t4mFoFpB(Fyh8;p_s$N>8B+5mb|~a(%zAqD zM)c}d-F`9YO+mbSmDv)Tg~aE-mIT2D3ZA0v@WvrcIGGOYn$-%6xM)D@v!P{YW5+5cO3#n9I!8bm!T&FF)jXlM}hV;Ln<<~(OyuI&XKoK1%J)ImpN&;u2g^3>0 z{o{PQI~5w|{*ltJBnHSiB2#42+1e>`B9+C16A8J77Jr`8KM^cgj9NJqce3F-7Ol0z zOSWqrgA1xERQPTK@q|k^9Z@ zqeU$q&&)%Lq_9cgS~8X}IEc#PL5`IoXfwmQGDAi&90KKBAg#RgH2|e^k!aPE+0`K%YNq3y?`vU&qP0Qb-)sU<%Uz z`eQHgN=v$w-++yRL_p9iX72+XV}_ZvoUH1~#2qWqNhDLaReR2_%*gd8i#;`SnHAsE z60Rv{_egW+W9Kuof_`b@BIKV;GllIhp}Ho3;T?+_DCR2QpvM6M@j{0uFM}#zM{IUK zaq_!hihqOm#geC%p-s=P4iM2>J`?%= zcsTBiea=HvPyOaljj(<%sr{N4-ktYlYLy2_0A)v1)wWn=*(GmS7+Rq5wYkXRD5_nYdmwx6#T3{gd1^bGTZP zz(F!eW+E<`i<_BIG}- zgOXp?V~!A68d3=l|C6fKA@Di7@n*itTls7mjY>eCYi7%%qQ-lMVT8ie(tK?dfFhUw zTT)x#*2~znjg8&2JjHNngb|;-?goXXKq{BcCl81EbnRpWb+vQd5-w)5k z6d&rpCJcjIO?NAd+3K~f?if>rQoKp`?gZr-8QpoyKOK%Yo@NSfub~ty>{XP!|8M zLi(Q!mFLPKX7M3OC=_`yX%ZLsb~O)_t00M^Qd65oVz)nYScs)-bdNJxqiW(#^v)EH z)_e61s&5XRtybP_$3_PXrl$LoX6UB81Rw_TYfwBAj2Ocpe%-#p!6+z3A~wOArNK#b z5$cfA^<(R+gC+DQXD|=(8ObHiDv=@j=4F`A1#J>qX^hp$B|d8~lJVW@K27l#49=G; zvVXIyWTYj5D$buV3W?}Nl}d=FQJ|is|8QxUX?X?bKlmT(WSZa~-!B{M(Cuwhenr(6 zdUt=}p!wgrXM1j(-Uv=D#MJaja?>_g21oM&jsuYEhF%|nF=ytVoE@hvC3-z)o%csV z>+>UL?TO`SQ}^+BQ0+j^K2w*bR}x2tF;mh+%*uXyGvAVG|pDIh|FB8@MMw zy>SJyJoVF0*RO4j-q>Cf3O#gO8dddh2c+I%(^@}~VEquC&+=b-B_J4t>}jvEx87># zBJ`=8>ul{W|L@;kSqo={eUfYY0CW(1Q~pKXGl7jm+%DULy!t{dSsI!PTo|`Xz$x+- z04%Hl=4$bgVb}%q7$w55qT5E@MjFm8P09?-*PM$dww_Hs=2Fe#mwi|(Hu8PNQ=n9= zj-c8ZfkX)q4SkcHV}u8~IX3)TQ2^hC2qGJeCnM_aDESn}KB#D@o95*y&E1>@HnE-yz459mww9JA28XDUe=k&FuKIvc&^R<&}DgVP?!*qKOh^^yrVy64UKKylK zrInH^E;q}^(hvVv|6uz6dJW3p6&I4l*NxXb&^<6PHZ<8YH8?sr);T&lJ~lXJxOl_> z0FhkBZEdd08~dLf7i9UJv~>jzV2JyrIkQ4-{{FQ?jK^p^6wuKuInc zQuVe}c)s*iCOiP!uuyy&9ylUXaMfP#vi+(ghkC{~k9%Q^VN)V&+vFo&mdG+1`BL5HoMB9r>P5QGZ zpGt*@xv4bJy3Z1m3EI9MT-8}2|7ty&`Y<6nma@A<>o9(^y?(mZT$r-bSdgTW!!z32 zvJzw1#BV(?MlvG(osnfPQE~m?5(#WI{PUH7sUHBK6|!$~*27}!N5aYS)|nk>R{%t} zUW4^GU0mXd+QSL!s^2m+uWG!J!zuT-Aye}MyH=(xhuHng(+ezaw-9S-v{oh*@3GDX zW)O!a0AHeCC`Dpf9CdF7RqgSm8cP8_5bK^HCHx=`F&f^LVMMQzSRFTB9H5=4!5Vlg zDHWk0ylYApDB%Dv7$e@wD<`HjRroO>v>^p1U6w?O1A%6$|EZypr&WaOOC13Zc=m74{6ESCG=c%as^&##dFM*=k>k_k=*5>*|&5^czL< zuuFd~Ae8hvK@4<BjjU7+nE&FjGq^)Q5?-l)ZAU0v(A?-J{13@A>1+*2smOVM4 zR!j%Da7z6wa{*ay&bB+5qTtZ3V(9yEGOR6%r}kBs{XvxPoRdANVGOI|qG0nEtfBs+ zR->S9(8O+3dJl&9i7D9y!%5J_^2laRH zOHM#h{dj`;;-K{sT%tQYL+3+zh%xP31MEkM_B_@&Aw*_8N&7{ZSh2nabkM8}hR?ZvBgohmv?z zi_o)K|90|lyKL1~v;*anw+FY2HK~|i4NX%2BHH4iyD%7HIrHx_dEW+p6A(%E*LSYq z>F^uxs-#9#a3KPur-gRFITVGdfQF8%v^k^5Ei%?);QXR3!)eCXG)&q+Hmuyrq+7aY z3&p!kTZ#SA zr$~_Ef0e)R-3AKL7(9{b95NcoQ!?sux2(|K@&z06;1t2`0^G{FC<3Q!qmwL*Vh|Ed zf49%Y+n=^dz#T7v#G-^hhJtE1afww_rEc|q4AUJ0+KTe#|M2&dj$g-^uua)4)fBxs zHu8QeIkBQJJbkk|Q;Beo{{j9gJTVm0NR(tawJI?l3sxavo?lecPCXEzYxVWCip=W) z6|^_PM0*a7@u=|OMGf-htGZOlC~}$6g*bR$e?({k(TQ+XH&uwIhNW}-Eec^P*Vv;0 zM=HC9F&TJ>hqO5D>?JlE>D2d1wcg-%ivVt>E&rxFV&cAEb!G3qSAC?E-Mvk;mwO`! zxL#+-0L2hC4h$eVC6X39&XBWWrc)!gCe7M7pmqH7Vf(Y-e!Y);p(}yR=l7Pa{Dxw{ zl{<8c;d3tS-j>zY8Z$PaE|ui5$ssP&J-g#tPsJX=K|=Kq=#Wkc*1T68Cnx^S zhrq8)G`QM4nD!;bSORH0L}JkN;IRBPO)$vUtTFMQ)U5aR*kI1C69S`;-+mY8;E|p( z610Z>toB>jV(TI!WFZ2{CdZrmJ8Cu;oI|iq+K=qF{Sofzk11acG@NEU=O8{ayi005 zydH2_|9N|3Oa46)e#}K~e_rovEuPtPq7FDYpwj1z%U#@zJO_N?aRawvaj@g2J1Mg8 zDmxzbOBSXf1qSXP?C(7x)@>7CL;tMi;u1CbkfjH4ORT8b@-$dn*9ljXiIFq=dZnPs zWb#$gz#&7vsRx#Y?-N9OGGkFx>~Q`-MPB5unId%~h8xZd-Axowrg9u^j@tE5=t zIc-59EtZrf;f)YNs@l`=eulh@!E}GkeTaFv_jOnr|py^{V&p@E) zpacqRT7%C7)Ijm2dXw#xO)%`+{I20cnH)!66*Pka_(0rL<*R*IIcoV{M%~y|5`4T} zOsL^}WlCXzD!8@|BE*ip*BU+di$+X8K$+gb=6lCt*iQ_=a+2*pre|Tr5n2CmFTpZ? z-6pSI(lT6Tm?(gSEr^=8dPub`ebLE+gXPr3=(v?RD>F+AGrX8CA0c7>OD?EDT=Lwi z=QuhY0znl8;mId9ow~7O+p)2}1 zdCsi2XXRm8{WtvW!FZkhx_WXm5)+>8uJz9!3toxz?feuOOQy-(2sYtSyHi;Y!?bws zjK=s4#z&bJ_c|XQ4vDkC8;Q}R+fnPBy^qzv5u|W0cGzQT8!B%t9yTu=s zva3k_`qOEvqGQ6R!TojYFN1pWxdGSs1L0Y_8e^R@uMWCPNG?-tw=2qycYHV%bzz7e0dJ zjQEXcVCp{_O|Fhqj{&dKMo~$73o&!VS>A}nR*Y;m&wK(}H1`B^skei7f+*K916*Jf za^M<;E1=}{p{CCgC-AN>6?Ndfx9E%;Vj!0F^V|rzGR$f^XpVe)nOcY zW0S8l2X?7?EtgI*ui7sycv2Ee{tr=K85Py{e|?7@x>I@(knWbDJ4BRjq&pP^1_VT< zQ97kTq`N~x8l+RYyYsnzpWj-4-thL`bk;#*CkcQQ{Y?i=x5;`t>w zH6ysVm$i9=!=qwvl7R$fsw1(O0t|j&L?41pxU9!4Rkq#O zMWGfiLvFM}Ug_EbbBHgtoulrfU$*Oowq`4|iJWz8@;6vsP}JdSyA_`L?Ol3p^?6J? zq8ze&_KSl~^ZK&x7mF4Y*jyJxSkMk$wN`2*BBvkdYF7Vr z@v++U*L4+L7LG8#bRKFSajd*LxzP8AUWtuy@?VsLBk|kor4-xAqviv%ONZ{#j4a_k z!NHc*dGk#Z*v5VRP_Ub}V)GxJ-R5opy}06(rlTE7ss<1hY$gQ2maCKw5^juTcw%@+ zBw9pxr{rN}Mk~z8A=6bdF@;yP+3|T5kF)$=;)r*juNQqDJc!6Ys8~Mp@*x07SAL$B zKSSd_`wSN4yu=K;(I{>s$G72IreLV?XS)|P$5xET4&m=ha^J=Kq^Zs`r7H7kt_c2w7bEWuKf)86}}%Qf-FPLTJkL0nV@KKm%v=rj~MSEQ=0H)^V7+ zc*xY9PO{#G(I0QNA7}h&R*Mo?zg1U#{GZ+7Ccfun2cV&Q>jDpUiiq{>iF|BWS^4~f zE*3o-e+_W;%W+gv@s=LIYATlstKvj|35PB?dF(m0tWOn&m%Sm})-$39fB+6gDFnul zJzI=*N2ehcCYw``WQd-!!u;UbmD9igX*m2qHt6@S54ProMxIuyrLV~Tnthr}o8hEg zoZkJG31X|}CvYUdfU>)Gn}Dx33@UaYhiL3PmVg0Q3)kcpXlzuT4|M9_Y*|JxB3%;n~aRKeFS9~ znqf}t4Fc!k0plgqi}SS`mR_@p>ALwFA3Z2$lWOxbMEb<~bx$}St*G;Ya=+k!Qxh#c z2tfJn6?oaFQMA9&uU)(pOUXh{;W_d0N{mNHJj2C91B4qb8X@qhOXPayZ{dkB4B38H z(F_-@$H2?$?62-(p6l};?b?GZ#fMQiC=(!b7^8;Io={knCDy$)sSRfuX=RY?&U0+E zc;G;_Y-U0zB!cO6B0s75RM$V$?p%~R0o<92irHTpn)nq>5Ybn~#YF#9%W zy79QY^m(g6@IVVie#w;~7UHJOj}yl<334TIorzr5zXDZ?76Ypyc=ASX{qh0>3btof zGwST){aOvboSvu0E6T~;2aqLwEliR}Z4-46&J!q=2A0`)IuUKa3rdXix@}2m2SGye zH}xDNRgNkIKQ+h$4-E}xe`~z=T`C6vW#e*^S^tsQvFFxMnu1<#H>mGSvpJrhJ{r&F zP2D?h;={VW`T6fE`%I#Fd?yD^drASiX31D&X5{)OPyR<)g#RC9p$;C%$hqvuB;BKv zcCH8K=!IZv_uF3ey@46yD8bdgT)fr?_z zOf1tU>J)LRgj%bHd(nj=B@Ys&0UXA2?AZq^38D*5I?uH@Y%bEbN-fWKQ1t+t-szcK ze*hctD?+lYtpY}xOA{Kv>hl-c3Rpb6xeU!NI1il*UJt;Vx)foXqwDY@);=GXl#Xod zg9T_vj%uo@i}KLZQ_hf8mR$}_mQw|C*f%wLI`?T+xgsxor*o=`Z&>(Enhx|Ug_0i3 z78dFsM1T>f|8hX+DyDY-83uv~Ub-Ft!BCn*bu{TclEh}DlZEQ%9>Da6M+!s}771wA z2=6oRwGtQ*y&k?~%KM-*uRO`R{`YU3=+YO0oARews74QCl;Llj2hG+H_&{d9pCvsN zR+$tYQeRW_x&lUHxwiwsB1YgFe?|;Q_wptVf5>JM&lKP5KK{37(E+7R%s$9=D}NWK z1a8x33{~7`&GLL!#XnX}=S}G6ly5&Dti?VZTKFSmy(t();(WL#Uu`;Vm9sBT0LAx# z5fkauLi}g?S$BaSoff5>;A~GY^m+eVQ~I9XxfvA)xJA1#bOd?&yyyT2ArWqmmg$j& z$gz~o*|rN*lx1E&JXRv3NQ@kfGNyiAUpf-0@bvqy#nv5h4Ua0HQg>*dcK1<*H3R?+ z_G;~<0OE1485I!@_?|rup?^&5VK46;Xw0k{!J+%fH{dDRAIIMZ`kPTu^JCY=LbRL%h^1Czmm z-@_Nlc*rAkwE=pGyHKbXDJuT7f0Y&JrhcCP$U`H5*8H_x9l_|xu!{BFA5 z8PA(j`B)_tpSZEnuD6-XZ74J|yWi*_h(6<(Or$bssjOA+X>D3sZo^Edlzd3DiF%Fc zK8Gn2U@A@px2oOVHwQf41#xP_L6f&7jdZIQ)BN?e&_Ubu-<(F)f&Jw3+>=G6F?YD= zXS7o!*ee_LgKDxn?2eI883iA0TR5PrF=NjrC5@<>mh5vfG4>fFhF3&)b-SW0W8txd z7CpXWI4;uZYrF9lw?L+Q&oT6rTxcnO#!`&=(w94fIz6r0sc6hym(^*0?ck~QY=2^4 zYn?!YQq@!a-O}#ZvOOcf`bfbO0KdMuZeHLqkwD!5ICP-5xlvTc;C((Yv_%5m>=A7h z0lqgAL%#qISF8q2R2~L~Z{Jy!)rUEJWq!+$`C9iMKU^8)_T07i|MqYk(PrQ`AjJ=S z{=Al#bow>fUc9}89fZ3qJVRcj7Xj_h{qXJjWT_d46wuzP>Bs)g+m_avXKgaIUf?iH z;n39=dS|Ti>PN=AlmsS=ka&A}cev(#+k!H?M3>wm4X1Xw)uPnb96V=N67-TZSMpo)7u=rE9IE5p z8px3Km84Jom2y~r3l^&TEX$sqrvvxY(@C;)>tC0Z$Lzc{A1LI~2WEvsxjo$6O}3o^B!nKTjn##1=s7L4Ui;Mn+(P|&^Z@A z{-X4Vtbl9`d)#peVqk?yCSgRC+G5*6=iAu#a&WPSO!|P)6ysQ6>Rllc5)PMcZ@I<_ir^Q%W+QJE$pbK@Vi-?PTU8J zr3=lp^6}hvXsodew`+=RmCg}V%F5d3cfDd?y6x>+hr};MkrL%a@rIK%ts1X)KP*qn zT}p6GZG3`l#3rkBNpFU{{kAw?ZsfKu2N*-oz$h)clLU~pdP_hLJ2vC{^8Uy34t+Pd zX{5LB9oaRY1DNn))iq&7CBp19%RtS$_e>wN-w2I6A6D`=RGbyS39+lal<@X{KD8ig z{lw9C;;kR7frUT0McVA3bB~J{yq~~$of7ov3R?0=4zNIe&{?27+!Cfu{t&B%5q
@Oj9D!*vy- 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 z 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%0AO{{u>h`V)PxyOP*}4W$V+4D!0`QC_ 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�kc^$7c9YF^nT0zXpcyvjf!gO2_c#GM#(oQw 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

< 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

RUAsNxwECA1hl`VeU{yDPqTKR9 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

=u{Ndn^!!(<03A?5*~q5 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�MpxCG`?)~u1M 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 ~{SeyhkOyEq3uV?z_4j@aLz}gKj0#mz;{- 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%0D$gFC~5$Goc?-cGP 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%0Dm@wYIlOLWeVAgQqCh*H@Gu)!+RR zHvLahc%C8Q4-UuyVQ)&+rXDd?FH?zf4|#6>gq1Hei6ZOHm=epFq(-1e zCUje@r^6`NNLlTfe)B;x>vzd!+~*Nng;4r%5wh>*yBeAtCh2d>exL^7KXpL>_)HIh z{8M8MVcSuJ%ivS4iUH7C>85$VUv{Pl z{31-&$3@Yyn|X<3cJrZ~-uvbtdW2X@mCdSrlES*q&r~ov%f;r9b;SbDcDF$4@B%eM z1L?!vApl_2{>nRM&FwBe>(fU1$Ld)iaG^ny0Y+0vXr|#22hcYD$Rs^xfw5{l*U~x% z4-BMP_*cUPch{~+^ys5z$}&c5zy`7Ms?yB{LFZg zqxjv;f!@cx=;jQ7pNRh?tqYJM4_3zwH&s;$Rhz&YxuyZm7E~$TQ{Y`N6%8t2oNwO- zCYq9!75kNp=td`AVB_TOoO@ob_T?km$7*KQ7t~UDVubva(=$^aaUHcAI>aM(Mp}s+ z+t!5&@(VLCUf(+r#I%R6dI@>%huL8Pz=^u5lg2mizxc|bzy>#f9YyoJR)Gu##VAkl zk7v~(!y!Tq>y?e8t))qJUx~e1JldyVP%W}z>#LkQwj6Jq?{ZS|c@Dc+p08M8zvg>d z$?M2knqZNfX#uXOskn8aHJkNoZBWzY2C}GO45!Fzc2vP1h<4{jmW`G~J6d+pY3~k1 zC4Oy%lCleRjtn32>y4zS2u z)>15_J&NESM;KAe?BUrLpoP$c)g~Vqoc*j%V$}k^M1s{hp-Fq| ze<-d#k)E8`!8Ao91E}wg&_LJcl$kUH4*kKK&ne&NS0^)$1#siq*`g6vDU# zQQzHPOSw#Tsttc8by!Y+d>H*pBUJMDD_XsbVOor;99!YR=9#mLYOmZnw6jmqlqUDP zW4P1Y2s&QiGH05`oMP-NJ!zThEvZjn*eh_-{1wfE`e`YnsU5>H%VwhpH_S1^NmQ%Z z=w&1Fpxbjz@h6YLQ_g3)SYIyk|4sNb_IC#?vTbCH`i~RiXfvn`46PzA!3IET#@zUb4`{)#P|hYYLK$!Pt>XreGfxD`$-V~S;Fs9{c26PqX>BM z(#306bZd^#CvCMu)%*FlVIqx@iwb=6bqkm8_La8NOam3SdWxrt7BDK;{^E=dEoO4#`%(b$VJ3QPWIBt|i- z!VeQWlJ%xS&Zu1^EKQvNFtQgd06>i{TI@mTEc62MkFpTRK!{Ax5(QUk7 zA~kT?GkeatjN6*R>%i^feq^tP*ZrRqBZy$G!6gL1!iN6Dv@gNi=Y{SNKtmu_S&@-k ztU&ihjDlw^SGQPPDuG}TO7?z6G%WbRwQ4tJFnl=JXRji_Ie_vYm^#rqzzfzLC{C4Q zI9D|D{ozA4!7F=yjm!{6@xchKib}3oTKFUTiqb0!c_zbnwLd1x2X+dX0XH10{D&aB zmTc`qzI7xrUtoC0KWyO|rRS-Rf=W~qYps?YOM8S}=pN<%EI#6g`@lX2)UF(}LD-A&mBZO+n_Jq78oF{mt&5Zb}YU~{ugNDqG5 zx_WYRs|W3h5jBS1jzrH@X@;iWThQnofA^uqj}STv(?f0CI-NBVcKwE;Fw{^wa_zky z04N(1n<-G>mqL+)m6+-M6a+DT7vpX3Sfe+l{2iab2O=x&f_P`;xC6W$tdKc`x@I%! zs4%LO=a+1*QSEzfA%8aYRr`WHMqkN2daO+44ONG{HhS1nigv{g1|uj{I?a zL;$pa>AEeaIZ=n}J-Z!F%19CJDHHk|Wm{KU%{7JWG33vkJ99=i$@vYiFx*EP983w& zH(K#rD<2^Ae*n}_U}G~+wE%46JVi_fU_J5zl9QEGm_sN2b%(B{q;AGIE7j}{l1p0K z2|Zk~;=jf=btLHg_oHx!kHm_cb43UV<1LVQSkB|Oa%%e6qbFrDHoap<>zlJSw(Rh& zqJKgyoPrE~9#2jC1L_{;_Nw@xU!I-M=8TFT5BI<;li4o&tFgRT>G!p#D4(en5y@yJ zMqb@}VIP#0nK#YW$1#)$^^fov+PTlb<9{67dB_WBA;iW4_}p+WbjXaOcYe>$VFmz} z9Ykpu09i_G5~Fa1>s9q%-+&KgJqqdB^-zV!M-v#aq;Ek#RITqVcOhPG|)=4k1PQa*rcXO}&WVZ~9jtww1@@m5?IY`#~I$ z#6|lziXoj_l`{EUbyDVGS{NsT<^aAnhb1|&U9#P?xCYqd9Ig|c#-RIb^%&T7Wel^| zKnR4~X~zoxVN_@E@cyidOUE~eqnR8OaAT&!z=}kD%K^ntMg0$mNh^yMWn~$#FLq7w z=uCih54-{^7NnUCps=0X(Ih}ihd!Axt0;b5NaX6?_j{ABqaR*a%S(vQ?+R@%Q*HIYk-&Vjf}EZ(rfUu^)eIv*A< z-q<4Xya4~)il|KRk2yuINJq+oMu0P^zAH5~HpPn<4o^Y;NT~r4##&%mm01GBz1f#d{zkLeJ#oxH?z50q8JPxjj1VOq*L3C|T9V8&{Ie{kfdt7ct`_BotY2-|%M(Px~ zw_Aj6YT~JDm(D_?WQKgz+2|TV+Fk8ueyLacO!b43g8^1*Z_cU=kH39*A{QYo%<~Ou zlme&yv^qdccQ+Co*$HcG}ViYKK*O|wv2zQVZd?a7xbS%-P;nvWMHEy3R$=~ z2>H8JfpV5G%(!T4l5INdu^}r0RrIt(#8%a#IPzJC;i-DOa5H~_k-^;;#AcoLu^Gc&{J@g2rw#D%9!Bm@a#a*m2;uemJV7 zdiJj8nZR-b29{l~WBD^F%&U(OMCK{cQ-`(M&LtxkJU(pf31zIx1S*g^|{!;ydvCy(z_!;1L zw>*5O#dd;95M|dq-e|y)_!bNCpyo&DrAzFS+12?t!7p?9>_Sk6pR&%&-d!Z;+C<{? zswl~rP0St5b$f)s^0b_20c5{}@WNEsKJG@60TWD{2+qa#I$$<(v2f+Lcb(vSJ>`4Z z9VqB89K%2Yl<1Wiqq&sy-K%nQs5;-itO&19cTZk_l9X+7^0yDlqP}9S$IdiE<|Uif z0okOe<8H6~KJW-Onzg4d+A>Vvl@TB)kwTcllBkSA*|s3fS%&W?t+iQVb9OE0B&Xi?B${0c!e zU8;a0CBl_Vf02Ex2E-d1=Q$6FejorNDJr5%;IHVjRT?1TXH_~Bh#~;pku^G@j|Mz* zBONyVU0WaTuno0!f38!BE;=6n>FZs45h`G53HuQ4|4@P?i>kQWtTYVGUn840M%>RO zY*oEquHug4B;T82+|X9SvGZ8}P@?x90u#?W_INpob9C*V(sxp5PkVMC%Q_-~A-7WR=1_wW7?Aue?FIaPqzgIs_%{>95=t28|oQTto+)8)SJ=|>)2 zsc8*X?GGc^$H@s50%~Wk>uQ|Q0QkDz0|4i=EKU|@TFk4w3z)5=KGq8OY1t)xo(*Vm zY~tPHC&RPFkKjgJX0z~ zQh9KEqSshtpWz|Z>IyqkLGg$;_B?F_EBf$#=t3*oIFPzQt8fNB7Jm7q0-Ag*Kr$Gd zQgW4~5W93OH&ls+h#W-%bQY)phT`NX)=YF6>8EEd-T3(|s08+-S=CyF~# zyle4d>iQ>fbuUJMJ2FLOUI4gknomY11Nse1A@iuGe-(|t5G@>u-P*v#Kc@$(^ZN&k z;a4POjhQ~3@+Wg3aRmyoT%-J?Dsthvknf8DhIL`2!Gef6`WEe+bHi@i@x17c-CgmU z`mWV6HF5ndyFqB~QiUq5Aix|T1{AWuwY;}I#U-CdERuv!^^fCGiQbnALJ-a?1NkhoNNW;-Yjk5BjojRYW|E*)2bFOiYkG1d*9WGH1}mcB zO*8(I=~7#^Pk@NdW88UTjR6Mj9LirNf{u4zy7?U{?T1k z71&=%RE+GLr9A+;4AVact#-MF+Ade~T&!X-s)q6x6J0p#D!#VeJS$OiwI2DX0XLq<84QhXZK$ShN%N?G`fh0u)xqj6wLfhu58s?eLhzCQ5Z^?Ny@?Czo?C`=mrqObdO*v# zDPsY|^q_)DNt`o(F13pc0N-Ius~@i97MgCp-fXUk;e+nBc%m?9!&6+s@Erh)={O|^ z;L3whQQ8Ox8=>Ew`X$fj#SB{Ff6%#}eV+{!Nq!76RNo!rr**{`=iAxPGa~?iQ_V)1 zv|!!)h1|5z55+Z%dfoK#BwM#=;1Fctf#;~&+HK{?TZekR&TD&S&+;QHTTUwbI#j)6o!>A^KCV-tj2P$R>7stE=@fW+~~D+11RcUBjJt?i5DA(X*O$*zo-^2dhUPNRBVJ*jY@D9 z@J<%>3@Pb52Bq4#t;{kK{2uF`o>`O))SSK@;J}j@Q{}OV`1AM^s9FNjE5kE6caaq9 zw^b5c3JC+I(X@O^QVZ*?K*g{EI>9%Qv!-wOyZ=5jUSd{Hv})&vNDpGR!6o z{aeVjDJrA!^b{65o zw20Ri=x-pf6%v(hPcz-g=({GR6tGcy98dk}&IYykzp6#h|5Gh8!0VX9-E=1I9T*%R z9v>c_7#W`E8=B}I>>ceH%3b2nF&78e{S~0{XfT>5t664(7wnb!e}QmGVA%23OC|!~ z9Deh)3mG3IuO=6z8PqSiz>lCils2}{Ql&<&dj>j}ILY(*;kl+q0*nb~WDNeQ>YYy| zF4kke-y$vrWVFt~3jlx*8#kmJ%5KNA$xLrlP7yxG;msf17xIP;95B$o2PNi zyFESKHX&^hv)d++l6;VU_mie5$hm&a@W2tQy>3pAiek?^F#u+5+|P70JaMU7ByR=m zi%S}+{jeCZS))C6yEzBrR(Wx5xFV*BUu&$L@i&}h&Q>`EIoVQUfi)Dx2pB~E4>J=C z1rcG2`mk}+6#DC|Dg8CK!#<>CL^F*Dia^oL?|{-KgEz6`fiB!gA)MOau9KNQ%F4iF zNa?OlP-dj&XvyAGL?$;0{mUJ=Fuvc?4lacN>gBmA&OB*wEyVJ#(}ndE-c(&*1IF@d zzrM9h%rU^!C3b~eUBL@g0ZPf9(j>08jg7J=jo*m~Ok$YQtMs?U44c}Ig-DIG|2<+A zxj137J|oUk+)9!G{J9ucVm#1i( z#8OBRUjx%uEE3u`;CP1=ySN1aH-|-x<@5i}{hc??B!nMv*T=v26-owZPt@3|Pn`QS zsXpm)GN7mesm&B534(f|5CC7eZHUL+a#2vV3mkCo`-@CH1QGtg&9}?>NPoCczAZ$* zs-$IR0htlAE75z_xY|v{X#ApLskw3EK|-2cGU+op#@>bvy=0^3KZ&-qk+gr&*?(KN zp8NoJr`qj1MCd>;N5hX_KG8nAprVmgM2iBtivOoIYxdsr$*=_7{<3^K@a1gihoIIM ztow5!J_rVEvmGljHmc0(na;pu+1ugY55HE`oOLH-D!$WltP~vm-0BX(u2qA>{(5(a zHZ`?skkG>4@$kGw45x8#*I%packQPxi!V&4+BwaTxYU3`re~;Gs?Ju&BOl6_Bmw{U zukI4>IGY`9icbhd{2XJA&xCAkPAj`SFPxG`o?lm*Ws4VtzRtM|d4`Fv*zRXS`*Y!6 zy-F_q^Y>d~o82lPQx0rxVucT_^+R9~W)@|mGv&%}N^f{Hl~DrdAkVnb&4bVYi8gky z{^Z|Y2a0%^SgyU*Ck`sT^WpVdT$1tVodyafdeJC$Mg&(I|W zxy1?X--oQ4SRj$b=+itq9l#3(?C;p}XvNsvF#y8%?GAk^C`93ZD=WB>N3h__af;FS z_+%m;ntTIGWq*3@@WVcbJ+AquCG(pkRpg0Xv@8lOrQ|hu;jj(e)8?ZS)&jy8h}aP{))fnFLEoJ-XQTq^qd#ALV@H1DgewUE9*t26zV=< z45*GwHuc;@dp|{nei?{9!BAggV>xkVX_BUKLencwBSpB}c*4m?PRtRolb8e|R2W$g zX$98AlVR^yr#`@on1}CfKuLtqu_cg>lorIJu}mG+9L;N*XAZQMpnG;#%A#wYreZ(+ zq4ueNH+8V_T0H6P({9GVFYgOMN5#ejew$BEtjWp5*3_xu9%t>RXOH@(;AW^A95{i$ z3Bvf`2(;!R?)i1jG1049{;dZEWqg`4*w;AHfxLg_4WaE8?$E0P;Hb!l%>a|KJR_U3 zPScik948e{m-g!MiAT>=`D)$~vX9%$0tq`xE`Qi*VE;$0usWQ4iS%ciY2g4EPyj0) z&h-Wx>;O1EDwCs=UJ?2L6Y}4m3UpQiFO2{E?05*FQR}cxj|kXWT5T!3J$oqA7GZm@ zd%7U7}|3pk!YA ztw8^8EM9mt-P7X22@@0I*)=V&HMN<-&J0kHHTnae^!VuuI2*`TaDrTslJHX2KifR5 zZ(nw$Q{Bz(#y2Z3QA7xCV;+1TDq0;#Fd9KMPzIc3zs8&+6GFiNN1zYo&Nc!S2$g{+ zmWYhr`BN(OV$!I-;-Nk8oSVY;!aaV-e7?nPez1#5jnR8i^)R~^i^L(1OfNmt9{(CW z`ErWFqap?h+f3nE7F7~<0K*V}B7Em}kyUT?bh8bn&N8mq|G zI0HqrYPh}AsJyj}k5#=J!huJ|IuvcT4Zv|~;QP0+u~uV`C+&QTwi!Hz1{Sfb0POGm zRPcPlV;XexlhLVrqG#aeGr!iOz(uy9*HM^z;>tf^6m#T;DR24h-sp{y6Xvx1s<+2U zDJ41XpQuc)z;{C(dMlXbsFIl_uIVDUhEa(FkiAx6ezyrA5S)e^+4u$ncxENVK z&tyM8NVHmhaM|PBb&Irp$;zpONeq=UtQc({+wK_)YImT$mvlGjz*AK9%+YgBJNy&4 zT5Vmr^^GjwKVTIuo3<<|I1Bbgm3OF+i;XvOvz zPGJm>a$RgpOk365Uk=d?SiN`MyON?Ivep7A-LfE4{Y9|gK@+N^`v6Ow8Ct*4b!{#qoIR9+W|2{A z0zc)y63P&Vn%fUJ4=GARf&-hJm{X6Lc(utK6)#Q(m*uQWIi837yCsB<`+l`g?rh}N zV;+x3m~#R}wl+LXIwY-=Y)EH|^ z4Y(N?;4LhJVDwJFFmM<>R`%+A#3(Z7x-6j%P}dT*=*pw4HN-|JM36Dim;KSxa&kCf zDag~@TeWqbb7V|EdZVeAo9v^8ea$C5Nb*DH#2}_RCC^bTT59-N_MtPn92+u_u}Br0 zVCdP+d0@SMkD`V8&*w8^Uk79uAI?1CSy`7%4PZyCNR8h%AkG^I6=>b)jIm2RNM{_n z-JDD6@EmO>#*-{teUtlMTRL4Pvb0+EUR@Gy%135X7#-weUF$$V{pu@X0w~?SQUPsd z>Kp1P@^4%hj8aNHbrte`nU3(tAaIU1w8hy`Q5lRMzlW(T4Dd7?$d~7g_4o#mW5&Bp zWCRS0brxjCk@$YeBL5e@daGOqSxW~PcL5&rn=2e?2NT6n*v4pg!xtLnFV=17l*vu> zD)c}30r*PlV^Hu^?d5VohB+?)(^tTftB@pw$>R`ra0zC2XlVW9%4{ia-KFo})Jw)* z&H6d`-A$XdC;lJqQU@IhL7VWd+Qi3OnS`f_K!KLM-^+m19SAJIhL!OA7kzS?@T11% zLbdrmfCd=91c+4B2$L8Wvc<;6D95Hn0}1Tkn6wVmZp+L-(6emGOZqo|M?e0&=us5QmcD`F``xlv*t)(5UsD%q2;_$fiH7ZcB zrIf6b{D~0-(?2p{n)RisgDUqylPR_T%@8Z`+dUsEKM{n;UbroGRt5`TItk{jI?u84^1 z$mLLf`_CBSBYmx|BhEqtLkQvZc+hcVa&K2aAT#(b#g}AgdqydbXMKcScE-Csm&%OV z1Hi%nFl36j`){WR;%#Z^m(R@1Uy7Jgr(>30^}dHrpl&Q94{|7jwEda=m7`@bYBvdP zo}wb3uC&`8xm&Kg$KX^&OY_=rIDzW9m)MMu3+qRSQ)q8`Y5DC`m}x>_$k(d!b+Oxz zKm<_|0sKpsH!ywu)KfEjqzH^bGraEexyRo3O#xw&3j}7@m9zQ5uN|pP^tm;kN4yrW zdY5qUc<jBzZx58es<%D34%b0-p$A4+ua5kU-~% z6WyP=SJ^I?OZBvYL0Vg-hWBzvfw3O}CEv*?GRtIErUn)&9yY_bth*eBC0=1GJ=9fK zrZp+-|72pU*O-O*zm#t&H2E@B#8U<6gyr78rejP-5k`0V9fQNt@0Dbyq*Zltq5%NE z!yY0d*XBak>+#X;tT<`PB|m7v5$OA(-dMSWvZ1L-{30Z;YnJJrUXazy00HLIU}I88i8^HZVW(}YyNPoU(CBEZB&g>j zF)gr#(JqjMI~y@Y^JSz^Zu;{COY~RGj2w5gEE5zQ35!UyT%D>!_%Me&Ij&?5s+$e1 zDx_@OWq3ET^3mmjP9*R}Rx^_Z+q++2+$!Tg_xrv^OkW&M9OqO8!RD@wF~I<$GFR}G z>FIUQDVFPGUuibn?J{Onzoa_8K`qDkc<*anmwHowGT8(CfNpXtk~E_R6Fh~o6veU-4|NVAI!DLGCubIa4);tC^e<0!bax+s2;%?xB+~&>NbN7H zg-`xc7i*kY-eJQyD{$mJ6y{gvq=w4DfccCGT!l%wUoQ<~ZI<_F#I`M?uCbCR*Bq?l{892*p}R5jqsPgww)dAd ztY0HfLk{;mw$MHuqGwDy{aq3WK}j0a+6Lafp*YCuDk+D_5CQL&$t4QO>xW-4JeyT$ zaw{^XX?D$WC@c~Iw#IB;|4?ml&OJc3Vw}6Nb?0cvwbYme=2$a+r_j51iKrWgY7yCY zyh&<@fXoH3QeeZaCHWlyXm}Al+qGlZ^O+tyaV4pzuZGD6C4}K&ZzSY#au5KYt`AuN zL=+>~@0mu=x6sf@+N{y<@Q~V|)jV>O(0kHXlF_d)TCWwx_#TCej%NizE7*rGcbuzFz50|D?v@VdVqSmjgkBcs(FlgMW)bFZ8a^$cV_ zcB~xa2M6@KcX*8I72Np8FP(7YQN-A(t(N+GV)K?M%*3})p@0nkDMkZZ}^4v^o`@zeW) zCnz9K5Cq0pcj3}ffxt-CV9|%$tmR6b{F1xzoZa>ZkHBk=R|kg{1IQN9AOe`0MDbJe zq)(tM7n~phk6VFEmjRoMffy1o4ZQOkT!q%QhzH8?%YJHC1z`1(9*x9FsH)swjh!(p zkP7HBZCN^$g^H}d24Rs4s9WUww5Y3`K9CE~!3U29<*Qv4aj_?fEY-I>(^`LTFpIdA zO!)r+s7H=a;21z$XD(6!Qhq`UJZ|622llHuEo z9Sp+w+Npe&%&ya5sLT)_8&~2 zxX59^x$r3mu&mKD9g;;rIqYY2g&t|2!%d4|*5@YMzl;xCbvSKI_QP!tBfJ{OT;$)5 zKtbD95oK3##?#naSJi3rtk>{6su|fDZx17S)8CIn`s7A6b~E_h`YI3rhlS7ZQz03b zV1OALCXN0gI#b$!B#Z{QK}Ia(s<$8m<}7-qP+kikh)R)saw#ie)IFTmnAJ)*^5jYS z#=lX@iipeQ(w98yRgnqLg51fh5OFX>G0yCd@vB>!S3uNCFhuL>1^;@TKw?@f6o6m5 z3ysJi1FZsJM4-J2d>JQG{ADQ6Sg?DC@t?oE{RRvn$@cA^T8LbCMc8&4JS}_<`Zq3T z$CMTyp}%Y0eDrl)J~T#nP#GUrX{?7*x}a(AY^PWmU92k`1*~_7f6I=8e+xGDf~Bg^ zEO(Dbbzl~S?L9T>M(`SqIjMGy3y^4m44&8MBVR9PedQ*rCCBnR-8gW~+hd{n6Y9U9 zSYu^k21ZI@%a5SRN$+?|FqnNrid;xH1^Vpu5S6^oSR8-vs~X3th-$o^aN5KOh{00Ov#&x$5-q^Or9qyVy zlrZfZKivgt%ZTETSzkk8ErBLD?K7bE@#P?J?hhk^Hg?F}t^T&>%uk^9XrEnU#RTBL z^V-goeyhPpcF6MW9DgWA9OUN<)}Aqcba0|j6R)=&@?Y0xIr< zt|In96T;ZkzLDPl+YvbY`bmw@9%hI6JI{5hz~I|Vby02};fUg={Ls!0g(~(Je+*PO zx=|82@4S3#mPx@foi1_wV#Ajbe&L6NfYuN#utejd0^ru3eLuaU1*a^31N~>BXOtMe zqANy;bR0o3Xn*I&tG-44u^IIAayUs>XPbT+59h6&wTSjBGUs91G?cbh!YKJ+z@FG~ zFgh2RHZ{*q>|VNPg_eQ<*+es_h2^IavzXfb{g{EK3n~)z-9>Pr43glZ{(l88Wekl! z+V*`$qv(7d3k2w!D!x6NIzxe@K0`8x%Da;CsuA+hkE*`n3gU9*yLl1c6Re4JlUBJ+ z;ON3y9D$&o~Zb;R_~-rQo3BlLT$1& z9_XXvqgcQ(;h*7Ek$?OpBB4QVVzb$VQTbP&=-ZQdw$#-ZuN1_54$p3}*ZzZkU?Yma z)g~XTlE9h0Ms{A6PI6B1TLR#&nH=0TkD9H6BK9R|B5I4_ zln~tr1F(4b4pRP$KRX$`iHW+5kNXj-q@B!>bd^Yg%mCellyZk!+Ji3M;NqAD_Z;1FH1CS-S@dt-?ig%Ju zQT`L!jIQGc?tqLO&p5WnJbyjCH=JW84r3lcbQ>IMFk#?A*Sgf_+lxZ}MCrv{GXzl!i=% z@K-j^pFrBPho&L_r2$5<+{-ut;;I7UgLjrZ0?}Ot0zG^ZK4G+W!bt){ydD?K9*#m3bFe5}NyR$7fKL5>oT$PAMowCF7H=Jc<;h){zuMrW)Wgn)1I3Y`~z z&pnTVSy$=RgWAZ`yHD~%g>2PRqAP@oD`~~#zqt=9MoI1j?wu|)Nq>Jkky+L@hT47m z-%b+o;r0z5zze@+;#VLVv6B0BMSgqp?_i{QN88-ih(n_ln1Dv`M-(w8%d>s7zdbrr z|EMCa|IFfB6Fx~v$!Fe3`n=RoptSuM?U=yutpLYJLFjk5pLXiioli$jj7w%L^zzQ1 z2?cM)B@WfC}+v~n9&)W{PbnY5vO7_e9zEU z^B@%AUv<^pKNGPrPx&6UkUnenlFKNp_~MNF7}xx$?zx^v{$sV9TKm;4NIO$i~G~1dm!e zned+cAfTTR^Sm_GQjX_9Evm-USf5KsGput)GB<_PN(4z~I?tj5@RAd>9!l_Onw*_p zSm?3*i1NzG?gNt$tO3~Q^M2ug3~1e6zo*83=OsKTxv$!TszcFrnj(ih_HBBiY>DP? zYe4>1pll)0P%JD(cBwm2%eh(5Y`C&v@48mQM(j58@#G|@`DpFT$Vcjbugq)s*t$HZ zrl#TTTUsX*mwaih#WEPXRpz>OgDY(YeM5N-ki3I5V!`B12?=D5`65KFT2i|?4)1Z! za*oAL4jjfbLNp|*rXdX`;$**kPqlGT0J}RNY>8Tfzy-AD(EeRVdnx-ybIF?<8Bo;f z@T=#QoHRWZwSxR{ZBuOMW~ZIj7%g(5{n+LvQ@>g<$t7~pOnKJE_cWn#eVi+jRHZ&^ zN%>icD-2pY?7qD2NIy6C=lIfY_jvTU%D~1pcj?xkMZ$pN%0w#ge;;CS>7)U%$JIa< zSrW0hgOVg5MNS+8$v;d~VJ1&WCbN$GfuZiSc>7{quy+6c#60NYCr;pi6`u{d+D&J; z)E^NTob$;=95?H?U0}yO$Nn_6;r(RY(22tN$z#TDnNJuZ0+Ju(Zj@VkKz?A|esdx= zaivpM8;(<7{O76%hP@S9gdH;u@-q8Ox4cZUcDeAW-soh%OEA~m;a>-i;2AD^lPe!1 zRw$+ipp$KS-vBC0H}b%P228tPNb4mrE<%5GOZTE`6tjh9&N-w!nbR zN_BBUPRW{`bQGi$xe~M9wKVqo%gJ%e>M-q@sn#^Xq(fSrBl+pYyMb^mZXH~QBa%{g z&aj6wjQ^=6X8#YU$N+%~O^RQq&)a+2S_UUa+Iz=Z#>WOm`iJ|+CuhMpe@GYrmozMd zt3l2Xs2ywKk^S=BaKReO>p9Dyt$p9Zmq)fKQx0EztGrlUKd~ zC+T96d*v;>o$0!oRy8<;#ya2c{(Dthm(FqapV)K_f}y{`zcW3}?yM(Qeh_Y|FBrIP zRo>CN@^30Bes2q-{j9%HZFSX28V%ZaFaCMk6SM^20DM_m4ln!YU?u&=-?lao1E*63 z9SE@$qEVJes5sP*Osv5lIe?P1dSA*vcscnBJC@j$5T}1clh{DfNk@D;j*Bk@xl+>= zx>F=C^6^|Jb*T5s%5iS@U*)FrTueXt1Q=&cJ_iIu3sskFbih(}t(ehG1OS%zJK8r{ zL5=n!ih#9`!W(=c7;dWlA;-C^8Uo>wrjv<&zk}nrFRaMZXa4tP6oPK;JvF^ zS5pNyPX-xg8?UWVH-z9U94My*J_qBRHwsZ%8H99PeQWfT-S*|-%6gqy~uKS_zkI$XBdI+ z)ZuxV*9_*J8Y0R|rZ^xH*q@#B9U7m0h=0T8DHSOy%mbz&Kc8A6ehw&pKYiN2yOj%d zA4_ub9r&e#1o$?Vq0{cIrC*oxpRzK~=6z9l$$2c|bKIPBw?v6t{G2h?(h-eQxUm;| z_M%jMYbjR?B(9hd0K%>U5SxQRST2LsisS3%Jf7jN2liizowp-W(#j4)Rm&)bKoU&w zr_j9FF9Tsr5$y6DH4X>0SXrJZQ~EtzGl;uc)eOI zKgpHL@%@>dk?$^%MiaE>@8}Cmq#gMOr-=Yy`#d8+f!z?HLdsQZ)@SS^+5lIf9b#lt zqbz{2$USLRbU3h)WjF^7iaB^CSRG4}PC70=6)3@geAH~l28b&<8Lcq)io9ri|3^#R z_1H9?>1#sir>`86L5|A6n!#TMq=zd@N-FLk-cpwKjz%G;a=h2gzP3(fr2Sqx&&r~V zd>21G2Y``=$5Mg3g|t7;Z{*8M1OZs11=~S%(!`4p49La0$jMlG)Az)7AJ6IJGV{~W z;}Al$?oFKxXS++ReXG~gdN*tNswg=%n-Tmvn(5&(S&Aq1+?wgTOD1^iJ#(=xiXA|`0 z+R(+Lkv!+brVQVq_JkHWEge;e9<(XVT=>Y}50@x01p=0Icq*H zZ*ua{E_Aj*@sfDCwqa3XJvq4uF157tD0a?9C_^(<@M(N(EX5;GiYi~a39&{e0v_U% z#hhB&!sQ;7JUgnO|Fd=8Np6~NsPruc2UaS_Me}EK9nyDYx|v+Us&vVQ@1Lxg6X%#4 z{Vat4({e$YcMe8{V|692r*m1X>5ccCE+6WgG&X#{SJwzczw8nZ3Wtmf^nEjj%1XLU z+bouPS{~C`nh4(gJhdXRk16FBpy4u+t#oS;k?!hc8P#w}R@aeI*CvAhlrF>rO4I!_ z@q%WSkpEJS+i&#u;H`+*Oo2kD!^zgC_Yt{iD5*$l^cK@5fn9KH`-#u=Z`JXEuW~=TF^h(1X!X306XKR(*aQ(aCMsP-L(Vk&hc(zh z&&{O79&R9vfER5kT9@90mgoDUbvp$A@yJ(r;<-3YK&3yD&nJ~N9d?VV^$h;B*_e*S z?lXo_ML5k=FLAhN^mazW3~CHI?wqz&j=+Cj;)EcLO9sev^-wbJ@hVC2V&;*1D2Ol+ zAwma#icp9yN_5$=BfzuFzGnFwSFe5dv!OvH)O{a4w75(h z+?HAY(xi8v)gA`#tX@+xijl@5Ya`eomwk0=D0$DqXVh3(ep?BSIst7Hjn}Eb`r65< zgMr1G43Bd+`tV#t2%4Yjm}A26vh=(h_V!YuBJQxZ`?2$j3(aD4F9kx z2f9Q?n&qOf4f4oT-35=RZ5-9yAciDg3DCPB(cSZeU;rB!YoR($T$;dZ7G+_Gq76rS zj`9LS@T2<@IH8LjglCd)xdN#hAb7-q&3uXW|O%P^RBOEMKgy zmE`rg+_!o~S=%v+cz?y6b zct%qk^Lik{LM4^P@+Dn5^V;pdYh(SKUlw8v=yo1onVScr#+=FJRrQ-9gsr`aN=gd* zKDl}{n%+RO8nc+y(NMyyJQC$^^zHDP)|e0|+lr%K>3oW}F#T9?)nRv74%} z{P@LVZr@~n?-T;$webly3qtK0;9g^TV6@aT?wa~4`CZ|Wzgl%N8% zAndr*o{G~HZ(@dQ!Ty3hRlm?RT1KWnB2+T**Fbm&*D3}XUL-?V@9YcqEpc|EQtq!4 z-qOXk|L*XA>8`s~IR98tZRxq}KO4BYoJSpDjkMav12r`Qrca1>x-2Npfl%_QZCt!B z91sMaBr8tsXPEbi)f0Z-D*bZzE}z|Gezjth7%8Kn>OBh=IPLpNOz{2>e8O*4t?ai5 zrdS9FC3H2!a>AjM6yHRe7)LK$*n<<+R!v#msmIh3nrQc|1F;lpqz{~#dV+dpJiAzV z@Cw=c@Gm=S*e=*>B@^T#Qyhxevs&^h2p`-{?~?tV2HVUpLdXhm#3zy#2UegWpy`5; zCJ2Rv*~bqNz}CJN6V!I=-I0Z}b|LIeo#F&<urkIr=8*fE8$R++R^Eh`xTkqb0>R*(8uU$-cysSRF`trJRAa zk6dqI!g%bxvdyIikNb)`LvI{Xq;^`I&BZ6DQ$~QH-esOdMogK{;rjM#BCbK(YVesz zfWGdwIdQgYsS9;&rTg|a7J8<>*}l>X@|tJHfnKnPvN+FuzYfrD%D{x}e47ac1q089 zY9yrQO0}3T+bwgKs$G$PAZbj9`vJHHl-p_~iG5)u5)A$|M1}HPSw#j*Pi}T4-wKD* zd4*mj6n#|?i8x59Q9pXvP981^%Xtw+D8bhe1t4jcJy5{ltxKJn2RP_a;)nfZ2Byj> zpE2}v4Dnw4i3XNmCB|TE_EE=$t&Jz=@$EPY3oO@aClap0q_9)Lpf zv)!xsp@YlVSkNACIB0f*rzM8$ws$9?{v?gtoJ$)o8;L2zsmQb&hH85`yB2z?jw>2nhx}p7{ zSy&<1iIsQTi;LWzn><>R5a$g<`SSk~yf>oW=u59wu*5-!@p_WCr*5~?X_VwI=du(p zEyGyeqflNr2I$>Dtu#>}DO*&vy7;aHn>b<3;oqXLtj$<2nyILb0@4IH!+@)$zk+Ybo#}^{WjPs&zNRPo>YD(Z<#UmkeftXSpXF3!|ibZWBzM^F4SROFPs>!itd_b(X%W1exE@ zcEQ_H(Mcy@q8JrK;og8;&&ZlBNWa{5$BqS&xOTwDkpJSNpw^$FMETbec(8TBXOcBDJBz z$Itk1GxRdz0V-#@fg)I0F_e!^qehGV@%<8=+fONuEABBxp)Z!FYe;UQd%N84SIIb+ z8=AQhB5XR>QpdXgzc%9G{~(7<@E(@>5QF}FWOjafZfa(}Z!tvr4vMpL{&9E()1sBi$ zYWu&u3l`iB2x8P|be)AC?5v$oZ2Vog;KZI#BB8VU`3aX5DJA+xX}hIC8vNDLH$6#| zd-F{FI6YZ#G%I`dSmqh~*^Bbb1^{EeE#LCymrkrl2++kL!|@Va(nkqk|^SJz-zn#J`CzL?HP|*+m&NT_6Ne4)e8s@mh z?ebT_r5slMNOYOp&kbMR$`H;S*ZR{+pxsU6+Tlm4Y(ia-q+VpG;VTAE8{nH z$Pzi~-_2ek`H#+f_3GqHO9&Typi_vj<)c4hUQp#EE!fP~n2nc6voJuQIQY-cjjq}X z$b)aohkYnM0$T%r&2BzCb>h;k=l~Zk?)p4hi1FC)egON=VGEpV=j8yNDhBmveZxw+ z{$K*wbNMoSC!2~zUwP$rltulQl@O49^RXKNR%|3Qn_Od!q|yZLkG}KAsl?J>56RUq z<2kfz<;2!~ovWXAnxU~U@h*6JXPzMndhdHlwXAeX7P-&p;khiOz!!>{Fdc zBUHMuzBo=niWOgs1j|)cHE+;4RVfQaQ7?N_s^5HfBBxF+`kNU&%^|rP7sbIS7C;*2 zduQ7ZA;jI^GAbm^k6ZExGOcKuURE?~gy;*Q7f`^YEuEbKw zn#3a(E_NQ386lkCZ2Q;b=mhr--fsx$0%90sS3U_|-sF??x>ma*Z~&H3=`UtKBLaZ~ zIM{+*B0;!TE#E3_oC{Ha+?A$7W!jJ+EpI;V^!L#<(~WaW{$aYGFLDF40e82CU21*@ z7oItTazUq2_{P#wLs~IEH)?${5(6%tYD9G^rIbOm32(iWP+ew*$5Bi$CN3fvHuDlx zitJTYfd@TBfrk)WoXTy62jgc|wEEY;9w`VIh4jh_5v3W{3k+$<$ufnjyKogvGeT^g zp_q#&PoSGfipZj60jKlaD?q00hpw5{NHg(h5YI5^4e4CCgVE;2w=sO=Zi zd%kX19X>noj?9yUuV5Y4`k~qAO=;Qq{F#6~b4MXu<}y!whSVbN^9=0>!(lF^`umw> zC^adb&hf^vlu5{_x7va9UJ)vo+1VR?8DS>=p`V$_%E0Aqr(1vX)wgC+RKo)>K$Mhn z?my4aPo?`9u1rs?L*n)_K*?RrvQRVM6c5nse#Byh5U!5#u2e!oVMNBV#xs6bU+Z<7 zEm3h@Ce2|J{Sh?lQheXCsvIXe3VvZ!If}Mon1E~W3IKFks1YqDnvjkhl6+KnO7f~s zUdEzh0F)o@j9L}%9*#ic3X=7bmZJ2M43{yadbh|XjF~%AkKXu)!SCvj=X?p`i!oMx zjNcozmURWhAltLO&GY*KOS5j*zPfu{_jlvX7PYOr2U0v6t4U52cR6Ap-1=`t99ECs zAn>=2Ot{%Qjho&c_s63t)Io`^nhuVh`$kR9G@&E~U&ucpnWD;0aX0-p{#xJPYX-l- z1K!Q{W5U&iT=mTqLmNnrf78*AF_GV1zP@ayM1ZwfYi@uc0|N9R=(JPhk)afBIiB)W zM-$lpZD4qEp*Fl#1;^<#`Z5r;gb)V_%iJz4s=W!Z=8$#dqI?p7 zu_uIU=RsaE4ahp%qZ5Hp252jjr34m!I}-Bvo`ablQI+eRgZ0I<5#U9t6Zb$c{d#Cw+fcqR?P}u6g^N zDuf6S_-hJu2}K~u1z0SrBS3R1%<9_n4JDURnh7)<<$wYYqZyfRNphwA>?`!u9f(WY zM4N`gWRoOFOe&m)Js&b&K#T%aEq_MxJ=|NLpkEhLkz2C*umEdV4C@z?)p!%>EjqAD_Hve*x?6_u*0z_d^K$YRS z7Co3~{)*C2)>Or3tqYl}IpsMzMuzy2B|=UC4GCU)T6_*!=!-cPF~XFOhOc}tyMMsV z+p0N9ooAN3@{fcVRx4|RL?&>=can66@B!cHfmK0VA*utLCZx}|LRuDY&1$Dc7|iJu z)PI=wBESSXeu=h(G2iN3vQ#@nk!N{IJ+mjm7b~o>DZIqjeZoOjHLXhD9w6l|ROkHF z;dLmLjl0pX;*7nprbVb`Wqv7WfY(szR*?11st4bPFy|KZ2@%7GjgG;A%-=YNPgb{6 zul#Qdjw>FX4TLv`@`(BX3W#$j6hNtmeT6=s6Cb~>+$+>)TI}$%nmjF;Bi)-`AZ_C~ z_p8s+X?ORU@HXbJ(a~heb~MY zbOy;1G7j_*n*jVioIQ9Jq-3uA7L8J(@aN-QFRyg|eUH zXpD_DI4Ve=;C$h&Jr9bQ8wNTS!G8nBdM(JKfa#|&A6d2UtCG`q_vCJ&`Y-~RY`Dh@ zm_!aIHJ4)llJFHS^f2JzNlBvMY`G5(32}*B$}Hs z0$m^QK&{8V1%;ZCnR5HnLJpyWOm3%2Om79yRmYzfKTyN~04wC)LBcKVo{b%UvB-Ts zOVO^r?DHY=9L;>g+*H)G=gZ8WK2pPAZR2HuJTq@|r3yv!9_O{=!S$9l9cwbmE<$tC z?`v5lN%wR6gs=v>Y5T&Pe12QrZxl(Q(a6rxzh|-hb$nNa7D?2 zZc|*#6-B-t-TEDsDD%V1m{ij6kPNiEuF5BDHq!k3gv)a!_lIdP6w(2SScWD2NGaLe zo@%%`U|o81J9>&KLd)n_TfAyDN)(I{(scOQ9tZ1}5l<=tM&A8y&nnCtWgC190?ePDZyyE097#&j}= z{S+*F`uEeQKKg5c2q2~fbT!C^<+vz%TYY_yr~_asiJa+JW;mSGwPhu0dMmW0!##8v zFHSw5D_3Ofr&pz8KOl?J_zR` zL0q3fcP${W39khlD*#T7~q5t}OX(@9KnmgBY9S{8+*F08IPAih7fALDX7JaR2 z3Xoh@5y;9Jv1u3fe$f@Dq3q4Z1YmMekpLGq=zvz^AG}&V>g^%r8N>cfD00{C!%$4- zNxO^@QJ__ho>-lN20tL4hQ~o3uC6u{l6xg5e+8zVpjxJ}emG{v6j1a%d|8x0519`5 zw%u3fdE%(-j&%>c4)c03O24}+LL-<6h#Vw>bOczM!VLb#l@Yx{<52cJwrJRX1mBW& zULysgs3iUp7-N1Xdr2C?z^u44)j! zYze8?QjLInKxvwfRVf|B_)kitnfw3(*#&|psSg!Ka6a}e%1k~0jJmZRi|`Z zF`h~+vYt?o&vSM?iPm=>W_5hLDB!PCHe?m~7n+HZH@kod0v!C5?~j9%yjSfnQRTF; za7DCs+o7^a5@%_N-{=c|@6w(#Jkk54R2`Bo?YPOvDuS7R?^1|83Mb10oQ_BG6Lth| zO^1JL+v0sZB>Q|WnzZoxrAaUTVmK!61SY`bAzG50r1Zj!9`%K)1{4SMND~mn)|0w5(7j8l)h}~ax>fki-@Nj|@Ya_I7R1Z-&<4lGJs-DM#yp9sdz6#Af`4 zf**8fAf8u>5?5QS9kr!k5-`yK)pz*BH7pNx18I>RuR*LGDt8dIidJBm-{g~iEW?W6 ztjJAZv65#eMT$eL<>Qp9GbFUFKqOy3nEqtelA5r{ zu?$P(4Bq|Htb+t^7tefJXXqH1Ibd$eLAX+@yS(TSn-cI1-EA>MUayRQurZ^l5G#p7 zXpfXCwbuNlaB4XU4N^&xiPRnsqVywGOq8jXD*W*_bZw0631{n@s!^?>befkzdw