Implemented new Tranquility value API

For quick compat, mods can now register a static state-based tranquility
value for their blocks. More
This commit is contained in:
Nicholas Ignoffo 2018-02-06 21:24:40 -08:00
parent d67ed054ff
commit f8c734bc96
14 changed files with 125 additions and 143 deletions

View file

@ -0,0 +1,11 @@
package WayofTime.bloodmagic.incense;
public enum EnumTranquilityType {
PLANT(),
CROP(),
TREE(),
EARTHEN(),
WATER(),
FIRE(),
LAVA();
}

View file

@ -0,0 +1,14 @@
package WayofTime.bloodmagic.incense;
import net.minecraft.block.state.IBlockState;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
public interface IIncensePath {
/**
* Goes from 0 to however far this path block can be from the altar while
* still functioning. 0 represents a block that can work when it is two
* blocks horizontally away from the altar.
*/
int getLevelOfPath(World world, BlockPos pos, IBlockState state);
}

View file

@ -0,0 +1,10 @@
package WayofTime.bloodmagic.incense;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
public interface ITranquilityHandler {
TranquilityStack getTranquilityOfBlock(World world, BlockPos pos, Block block, IBlockState state);
}

View file

@ -0,0 +1,28 @@
package WayofTime.bloodmagic.incense;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import java.util.ArrayList;
import java.util.List;
public class IncenseTranquilityRegistry {
public static List<ITranquilityHandler> handlerList = new ArrayList<ITranquilityHandler>();
public static void registerTranquilityHandler(ITranquilityHandler handler) {
handlerList.add(handler);
}
public static TranquilityStack getTranquilityOfBlock(World world, BlockPos pos, Block block, IBlockState state) {
for (ITranquilityHandler handler : handlerList) {
TranquilityStack tranq = handler.getTranquilityOfBlock(world, pos, block, state);
if (tranq != null) {
return tranq;
}
}
return null;
}
}

View file

@ -1,107 +0,0 @@
package WayofTime.bloodmagic.incense;
import WayofTime.bloodmagic.apibutnotreally.incense.EnumTranquilityType;
import WayofTime.bloodmagic.apibutnotreally.incense.ITranquilityHandler;
import WayofTime.bloodmagic.apibutnotreally.incense.TranquilityStack;
import WayofTime.bloodmagic.core.RegistrarBloodMagicBlocks;
import net.minecraft.block.*;
import net.minecraft.block.state.IBlockState;
import net.minecraft.init.Blocks;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
public class TranquilityHandlers {
public static class Plant implements ITranquilityHandler {
@Override
public TranquilityStack getTranquilityOfBlock(World world, BlockPos pos, Block block, IBlockState state) {
if (block instanceof BlockLeaves) {
return new TranquilityStack(EnumTranquilityType.PLANT, 1);
}
return null;
}
}
public static class Lava implements ITranquilityHandler {
@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;
}
}
public static class Fire implements ITranquilityHandler {
@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;
}
}
public static class Earth implements ITranquilityHandler {
@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;
}
}
public static class Crop implements ITranquilityHandler {
@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 || block == Blocks.BEETROOTS) {
return new TranquilityStack(EnumTranquilityType.CROP, 1);
}
return null;
}
}
public static class Tree implements ITranquilityHandler {
@Override
public TranquilityStack getTranquilityOfBlock(World world, BlockPos pos, Block block, IBlockState state) {
if (block instanceof BlockLog) {
return new TranquilityStack(EnumTranquilityType.TREE, 1);
}
return null;
}
}
public static class Water implements ITranquilityHandler {
@Override
public TranquilityStack getTranquilityOfBlock(World world, BlockPos pos, Block block, IBlockState state) {
if (block == Blocks.WATER || block == Blocks.FLOWING_WATER) {
return new TranquilityStack(EnumTranquilityType.WATER, 1);
}
if (block == RegistrarBloodMagicBlocks.LIFE_ESSENCE) {
return new TranquilityStack(EnumTranquilityType.WATER, 1.5);
}
return null;
}
}
}

View file

@ -0,0 +1,11 @@
package WayofTime.bloodmagic.incense;
public class TranquilityStack {
public final EnumTranquilityType type;
public double value;
public TranquilityStack(EnumTranquilityType type, double value) {
this.type = type;
this.value = value;
}
}