/** * This class was created by <Vazkii>. It's distributed as * part of the Botania Mod. Get the Source Code in github: * https://github.com/Vazkii/Botania * * Botania is Open Source and distributed under the * Botania License: http://botaniamod.net/license.php * * File Created @ [Mar 31, 2015, 2:59:19 PM (GMT)] */ package vazkii.botania.api.subtile; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.ChunkCoordinates; /** * This object describes the Radius of a SubTileEntity. It can either be * a circle or rectangle, it's to note that the */ public class RadiusDescriptor { final ChunkCoordinates subtileCoords; public RadiusDescriptor(ChunkCoordinates subtileCoords) { this.subtileCoords = subtileCoords; } public ChunkCoordinates getSubtileCoords() { return subtileCoords; } public boolean isCircle() { return false; } public double getCircleRadius() { return 0; } public AxisAlignedBB getAABB() { return null; } public static class Circle extends RadiusDescriptor { final double radius; public Circle(ChunkCoordinates subtileCoords, double radius) { super(subtileCoords); this.radius = radius; } @Override public boolean isCircle() { return true; } @Override public double getCircleRadius() { return radius; } } public static class Rectangle extends RadiusDescriptor { final AxisAlignedBB aabb; public Rectangle(ChunkCoordinates subtileCoords, AxisAlignedBB aabb) { super(subtileCoords); this.aabb = aabb; } @Override public AxisAlignedBB getAABB() { return aabb; } } public static class Square extends Rectangle { public Square(ChunkCoordinates subtileCoords, int expand) { super(subtileCoords, AxisAlignedBB.getBoundingBox(subtileCoords.posX - expand, subtileCoords.posY, subtileCoords.posZ - expand, subtileCoords.posX + 1 + expand, subtileCoords.posY, subtileCoords.posZ + 1 + expand)); } } }