From f4d0b185210b6812897b72010da84e42bcb76be0 Mon Sep 17 00:00:00 2001 From: WayofTime Date: Tue, 26 Jan 2016 14:33:02 -0500 Subject: [PATCH] Added more infrastructure to the incense system. --- .../api/incense/EnumTranquilityType.java | 6 +++- .../incense/CropTranquilityHandler.java | 24 +++++++++++++ .../incense/EarthTranquilityHandler.java | 35 +++++++++++++++++++ .../incense/FireTranquilityHandler.java | 30 ++++++++++++++++ .../incense/IncenseAltarHandler.java | 25 +++++++++++-- .../incense/LavaTranquilityHandler.java | 24 +++++++++++++ .../incense/PlantTranquilityHandler.java | 10 +----- .../incense/TreeTranquilityHandler.java | 24 +++++++++++++ .../incense/WaterTranquilityHandler.java | 2 +- .../registry/ModTranquilityHandlers.java | 12 +++++++ .../bloodmagic/tile/TileIncenseAltar.java | 2 +- 11 files changed, 180 insertions(+), 14 deletions(-) create mode 100644 src/main/java/WayofTime/bloodmagic/incense/CropTranquilityHandler.java create mode 100644 src/main/java/WayofTime/bloodmagic/incense/EarthTranquilityHandler.java create mode 100644 src/main/java/WayofTime/bloodmagic/incense/FireTranquilityHandler.java create mode 100644 src/main/java/WayofTime/bloodmagic/incense/LavaTranquilityHandler.java create mode 100644 src/main/java/WayofTime/bloodmagic/incense/TreeTranquilityHandler.java diff --git a/src/main/java/WayofTime/bloodmagic/api/incense/EnumTranquilityType.java b/src/main/java/WayofTime/bloodmagic/api/incense/EnumTranquilityType.java index 9efdc4ae..70331efc 100644 --- a/src/main/java/WayofTime/bloodmagic/api/incense/EnumTranquilityType.java +++ b/src/main/java/WayofTime/bloodmagic/api/incense/EnumTranquilityType.java @@ -3,6 +3,10 @@ package WayofTime.bloodmagic.api.incense; public enum EnumTranquilityType { PLANT(), + CROP(), + TREE(), + EARTHEN(), WATER(), - FIRE(); + FIRE(), + LAVA(); } diff --git a/src/main/java/WayofTime/bloodmagic/incense/CropTranquilityHandler.java b/src/main/java/WayofTime/bloodmagic/incense/CropTranquilityHandler.java new file mode 100644 index 00000000..b37a93d7 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/incense/CropTranquilityHandler.java @@ -0,0 +1,24 @@ +package WayofTime.bloodmagic.incense; + +import net.minecraft.block.Block; +import net.minecraft.block.state.IBlockState; +import net.minecraft.init.Blocks; +import net.minecraft.util.BlockPos; +import net.minecraft.world.World; +import WayofTime.bloodmagic.api.incense.EnumTranquilityType; +import WayofTime.bloodmagic.api.incense.TranquilityHandler; +import WayofTime.bloodmagic.api.incense.TranquilityStack; + +public class CropTranquilityHandler extends TranquilityHandler +{ + @Override + public TranquilityStack getTranquilityOfBlock(World world, BlockPos pos, Block block, IBlockState state) + { + if (block == Blocks.potatoes || block == Blocks.carrots || block == Blocks.wheat || block == Blocks.nether_wart) + { + return new TranquilityStack(EnumTranquilityType.CROP, 1); + } + + return null; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/incense/EarthTranquilityHandler.java b/src/main/java/WayofTime/bloodmagic/incense/EarthTranquilityHandler.java new file mode 100644 index 00000000..98a99ffc --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/incense/EarthTranquilityHandler.java @@ -0,0 +1,35 @@ +package WayofTime.bloodmagic.incense; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockGrass; +import net.minecraft.block.state.IBlockState; +import net.minecraft.init.Blocks; +import net.minecraft.util.BlockPos; +import net.minecraft.world.World; +import WayofTime.bloodmagic.api.incense.EnumTranquilityType; +import WayofTime.bloodmagic.api.incense.TranquilityHandler; +import WayofTime.bloodmagic.api.incense.TranquilityStack; + +public class EarthTranquilityHandler extends TranquilityHandler +{ + @Override + public TranquilityStack getTranquilityOfBlock(World world, BlockPos pos, Block block, IBlockState state) + { + if (block == Blocks.dirt) + { + return new TranquilityStack(EnumTranquilityType.EARTHEN, 0.25); + } + + if (block instanceof BlockGrass) + { + return new TranquilityStack(EnumTranquilityType.EARTHEN, 0.5); + } + + if (block == Blocks.farmland) + { + return new TranquilityStack(EnumTranquilityType.EARTHEN, 1); + } + + return null; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/incense/FireTranquilityHandler.java b/src/main/java/WayofTime/bloodmagic/incense/FireTranquilityHandler.java new file mode 100644 index 00000000..fe7bbd26 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/incense/FireTranquilityHandler.java @@ -0,0 +1,30 @@ +package WayofTime.bloodmagic.incense; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockFire; +import net.minecraft.block.state.IBlockState; +import net.minecraft.init.Blocks; +import net.minecraft.util.BlockPos; +import net.minecraft.world.World; +import WayofTime.bloodmagic.api.incense.EnumTranquilityType; +import WayofTime.bloodmagic.api.incense.TranquilityHandler; +import WayofTime.bloodmagic.api.incense.TranquilityStack; + +public class FireTranquilityHandler extends TranquilityHandler +{ + @Override + public TranquilityStack getTranquilityOfBlock(World world, BlockPos pos, Block block, IBlockState state) + { + if (block instanceof BlockFire) + { + return new TranquilityStack(EnumTranquilityType.FIRE, 1); + } + + if (block == Blocks.netherrack) + { + return new TranquilityStack(EnumTranquilityType.FIRE, 0.5); + } + + return null; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/incense/IncenseAltarHandler.java b/src/main/java/WayofTime/bloodmagic/incense/IncenseAltarHandler.java index e9b38053..8662e612 100644 --- a/src/main/java/WayofTime/bloodmagic/incense/IncenseAltarHandler.java +++ b/src/main/java/WayofTime/bloodmagic/incense/IncenseAltarHandler.java @@ -15,7 +15,8 @@ public class IncenseAltarHandler { public static Map> incenseComponentMap = new TreeMap>(); //Incense bonus maximum applied for the tier of blocks. - public static double[] incenseBonuses = new double[] { 0.2 }; + public static double[] incenseBonuses = new double[] { 0.2, 0.6, 1.2, 2, 3, 4.5 }; + public static double[] tranquilityRequired = new double[] { 0, 6, 14.14, 28, 44.09, 83.14 }; public static void registerIncenseComponent(int altarLevel, IncenseAltarComponent component) { @@ -35,7 +36,7 @@ public class IncenseAltarHandler registerIncenseComponent(altarLevel, new IncenseAltarComponent(offsetPos, block, state)); } - public static double getIncenseBonusFromComponents(World world, BlockPos pos) + public static double getMaxIncenseBonusFromComponents(World world, BlockPos pos) { double accumulatedBonus = 0; for (int i = 0; i < incenseBonuses.length; i++) @@ -71,4 +72,24 @@ public class IncenseAltarHandler return accumulatedBonus; } + + public static double getIncenseBonusFromComponents(World world, BlockPos pos, double tranquility) + { + double maxBonus = getMaxIncenseBonusFromComponents(world, pos); + double possibleBonus = 0; + + for (int i = 0; i < incenseBonuses.length; i++) + { + if (tranquility >= tranquilityRequired[i]) + { + possibleBonus = incenseBonuses[i]; + } else if (i >= 1) + { + possibleBonus += (incenseBonuses[i] - possibleBonus) * (tranquility - tranquilityRequired[i - 1]) / (tranquilityRequired[i] - tranquilityRequired[i - 1]); + break; + } + } + + return Math.min(maxBonus, possibleBonus); + } } diff --git a/src/main/java/WayofTime/bloodmagic/incense/LavaTranquilityHandler.java b/src/main/java/WayofTime/bloodmagic/incense/LavaTranquilityHandler.java new file mode 100644 index 00000000..b3066c07 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/incense/LavaTranquilityHandler.java @@ -0,0 +1,24 @@ +package WayofTime.bloodmagic.incense; + +import net.minecraft.block.Block; +import net.minecraft.block.state.IBlockState; +import net.minecraft.init.Blocks; +import net.minecraft.util.BlockPos; +import net.minecraft.world.World; +import WayofTime.bloodmagic.api.incense.EnumTranquilityType; +import WayofTime.bloodmagic.api.incense.TranquilityHandler; +import WayofTime.bloodmagic.api.incense.TranquilityStack; + +public class LavaTranquilityHandler extends TranquilityHandler +{ + @Override + public TranquilityStack getTranquilityOfBlock(World world, BlockPos pos, Block block, IBlockState state) + { + if (block == Blocks.lava || block == Blocks.flowing_lava) + { + return new TranquilityStack(EnumTranquilityType.LAVA, 1.2); + } + + return null; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/incense/PlantTranquilityHandler.java b/src/main/java/WayofTime/bloodmagic/incense/PlantTranquilityHandler.java index 8e4f52b7..b8f976fe 100644 --- a/src/main/java/WayofTime/bloodmagic/incense/PlantTranquilityHandler.java +++ b/src/main/java/WayofTime/bloodmagic/incense/PlantTranquilityHandler.java @@ -2,12 +2,9 @@ package WayofTime.bloodmagic.incense; import net.minecraft.block.Block; import net.minecraft.block.BlockLeaves; -import net.minecraft.block.BlockLog; -import net.minecraft.block.IGrowable; import net.minecraft.block.state.IBlockState; import net.minecraft.util.BlockPos; import net.minecraft.world.World; -import net.minecraftforge.common.IPlantable; import WayofTime.bloodmagic.api.incense.EnumTranquilityType; import WayofTime.bloodmagic.api.incense.TranquilityHandler; import WayofTime.bloodmagic.api.incense.TranquilityStack; @@ -17,16 +14,11 @@ public class PlantTranquilityHandler extends TranquilityHandler @Override public TranquilityStack getTranquilityOfBlock(World world, BlockPos pos, Block block, IBlockState state) { - if (block instanceof IGrowable || block instanceof IPlantable) + if (block instanceof BlockLeaves) { return new TranquilityStack(EnumTranquilityType.PLANT, 1); } - if (block instanceof BlockLog || block instanceof BlockLeaves) - { - return new TranquilityStack(EnumTranquilityType.PLANT, 0.5); - } - return null; } } diff --git a/src/main/java/WayofTime/bloodmagic/incense/TreeTranquilityHandler.java b/src/main/java/WayofTime/bloodmagic/incense/TreeTranquilityHandler.java new file mode 100644 index 00000000..dd95b555 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/incense/TreeTranquilityHandler.java @@ -0,0 +1,24 @@ +package WayofTime.bloodmagic.incense; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockLog; +import net.minecraft.block.state.IBlockState; +import net.minecraft.util.BlockPos; +import net.minecraft.world.World; +import WayofTime.bloodmagic.api.incense.EnumTranquilityType; +import WayofTime.bloodmagic.api.incense.TranquilityHandler; +import WayofTime.bloodmagic.api.incense.TranquilityStack; + +public class TreeTranquilityHandler extends TranquilityHandler +{ + @Override + public TranquilityStack getTranquilityOfBlock(World world, BlockPos pos, Block block, IBlockState state) + { + if (block instanceof BlockLog) + { + return new TranquilityStack(EnumTranquilityType.TREE, 1); + } + + return null; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/incense/WaterTranquilityHandler.java b/src/main/java/WayofTime/bloodmagic/incense/WaterTranquilityHandler.java index 59348296..26058708 100644 --- a/src/main/java/WayofTime/bloodmagic/incense/WaterTranquilityHandler.java +++ b/src/main/java/WayofTime/bloodmagic/incense/WaterTranquilityHandler.java @@ -22,7 +22,7 @@ public class WaterTranquilityHandler extends TranquilityHandler if (block == ModBlocks.lifeEssence) { - return new TranquilityStack(EnumTranquilityType.WATER, 2); + return new TranquilityStack(EnumTranquilityType.WATER, 1.5); } return null; diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModTranquilityHandlers.java b/src/main/java/WayofTime/bloodmagic/registry/ModTranquilityHandlers.java index 78a96d5c..66c95964 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModTranquilityHandlers.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModTranquilityHandlers.java @@ -1,12 +1,24 @@ package WayofTime.bloodmagic.registry; import WayofTime.bloodmagic.api.incense.IncenseTranquilityRegistry; +import WayofTime.bloodmagic.incense.CropTranquilityHandler; +import WayofTime.bloodmagic.incense.EarthTranquilityHandler; +import WayofTime.bloodmagic.incense.FireTranquilityHandler; +import WayofTime.bloodmagic.incense.LavaTranquilityHandler; import WayofTime.bloodmagic.incense.PlantTranquilityHandler; +import WayofTime.bloodmagic.incense.TreeTranquilityHandler; +import WayofTime.bloodmagic.incense.WaterTranquilityHandler; public class ModTranquilityHandlers { public static void init() { IncenseTranquilityRegistry.registerTranquilityHandler(new PlantTranquilityHandler()); + IncenseTranquilityRegistry.registerTranquilityHandler(new CropTranquilityHandler()); + IncenseTranquilityRegistry.registerTranquilityHandler(new WaterTranquilityHandler()); + IncenseTranquilityRegistry.registerTranquilityHandler(new EarthTranquilityHandler()); + IncenseTranquilityRegistry.registerTranquilityHandler(new FireTranquilityHandler()); + IncenseTranquilityRegistry.registerTranquilityHandler(new LavaTranquilityHandler()); + IncenseTranquilityRegistry.registerTranquilityHandler(new TreeTranquilityHandler()); } } diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileIncenseAltar.java b/src/main/java/WayofTime/bloodmagic/tile/TileIncenseAltar.java index 36390c76..17c81b7b 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/TileIncenseAltar.java +++ b/src/main/java/WayofTime/bloodmagic/tile/TileIncenseAltar.java @@ -136,7 +136,7 @@ public class TileIncenseAltar extends TileInventory implements ITickable double appliedTranquility = 0; for (Entry entry : tranquilityMap.entrySet()) { - appliedTranquility += Math.pow(entry.getValue(), 0.9); + appliedTranquility += Math.sqrt(entry.getValue()); } } }