summaryrefslogtreecommitdiff
path: root/src/main/java/darkknight/jewelrycraft/util/BlockUtils.java
diff options
context:
space:
mode:
authorOnyxDarkKnight <sor1n.iliutza16@gmail.com>2014-04-15 23:05:32 +0300
committerOnyxDarkKnight <sor1n.iliutza16@gmail.com>2014-04-15 23:05:32 +0300
commit256653501365eb4f95d3dddbcdfdc23a2a9594d5 (patch)
tree682c8ff1f943936d173299acfa42e77462eb297c /src/main/java/darkknight/jewelrycraft/util/BlockUtils.java
parent4b8b13b34d7a8fd0ee7c7b13f11be9c2bf3b5d18 (diff)
Moved source files
Diffstat (limited to 'src/main/java/darkknight/jewelrycraft/util/BlockUtils.java')
-rw-r--r--src/main/java/darkknight/jewelrycraft/util/BlockUtils.java122
1 files changed, 122 insertions, 0 deletions
diff --git a/src/main/java/darkknight/jewelrycraft/util/BlockUtils.java b/src/main/java/darkknight/jewelrycraft/util/BlockUtils.java
new file mode 100644
index 0000000..a5f7684
--- /dev/null
+++ b/src/main/java/darkknight/jewelrycraft/util/BlockUtils.java
@@ -0,0 +1,122 @@
+package darkknight.jewelrycraft.util;
+
+
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.item.EntityItem;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.MathHelper;
+import net.minecraft.util.MovingObjectPosition;
+import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
+
+public class BlockUtils
+{
+
+ public static final ForgeDirection DEFAULT_BLOCK_DIRECTION = ForgeDirection.WEST;
+
+ public static ForgeDirection get2dOrientation(EntityLivingBase entity)
+ {
+ int l = MathHelper.floor_double(entity.rotationYaw * 4.0F / 360.0F + 0.5D) & 0x3;
+ switch (l) {
+ case 0:
+ return ForgeDirection.SOUTH;
+ case 1:
+ return ForgeDirection.WEST;
+ case 2:
+ return ForgeDirection.NORTH;
+ case 3:
+ return ForgeDirection.EAST;
+ }
+ return ForgeDirection.SOUTH;
+
+ }
+
+ public static float getRotationFromDirection(ForgeDirection direction) {
+ switch (direction) {
+ case NORTH:
+ return 0F;
+ case SOUTH:
+ return 180F;
+ case WEST:
+ return 90F;
+ case EAST:
+ return -90F;
+ case DOWN:
+ return -90f;
+ case UP:
+ return 90f;
+ default:
+ return 0f;
+ }
+ }
+
+ public static ForgeDirection get3dOrientation(EntityLivingBase entity) {
+ if (entity.rotationPitch > 45.5F) {
+ return ForgeDirection.DOWN;
+ } else if (entity.rotationPitch < -45.5F) { return ForgeDirection.UP; }
+ return get2dOrientation(entity);
+ }
+
+ public static EntityItem dropItemStackInWorld(World worldObj, double x, double y, double z, ItemStack stack) {
+ float f = 0.7F;
+ float d0 = worldObj.rand.nextFloat() * f + (1.0F - f) * 0.5F;
+ float d1 = worldObj.rand.nextFloat() * f + (1.0F - f) * 0.5F;
+ float d2 = worldObj.rand.nextFloat() * f + (1.0F - f) * 0.5F;
+ EntityItem entityitem = new EntityItem(worldObj, x + d0, y + d1, z + d2, stack);
+ entityitem.delayBeforeCanPickup = 10;
+ if (stack.hasTagCompound()) {
+ entityitem.getEntityItem().setTagCompound((NBTTagCompound)stack.getTagCompound().copy());
+ }
+ worldObj.spawnEntityInWorld(entityitem);
+ return entityitem;
+ }
+
+ public static EntityItem ejectItemInDirection(World world, double x, double y, double z, ForgeDirection direction, ItemStack stack) {
+ EntityItem item = BlockUtils.dropItemStackInWorld(world, x, y, z, stack);
+ item.motionX = direction.offsetX / 5F;
+ item.motionY = direction.offsetY / 5F;
+ item.motionZ = direction.offsetZ / 5F;
+ return item;
+ }
+
+ public static void dropInventory(IInventory inventory, World world, double x, double y, double z) {
+ if (inventory == null) { return; }
+ for (int i = 0; i < inventory.getSizeInventory(); ++i) {
+ ItemStack itemStack = inventory.getStackInSlot(i);
+ if (itemStack != null) {
+ dropItemStackInWorld(world, x, y, z, itemStack);
+ }
+ }
+ }
+
+ public static void dropInventory(IInventory inventory, World world, int x, int y, int z) {
+ dropInventory(inventory, world, x + 0.5, y + 0.5, z + 0.5);
+ }
+
+ public static TileEntity getTileInDirection(TileEntity tile, ForgeDirection direction) {
+ int targetX = tile.xCoord + direction.offsetX;
+ int targetY = tile.yCoord + direction.offsetY;
+ int targetZ = tile.zCoord + direction.offsetZ;
+ return tile.getWorldObj().getTileEntity(targetX, targetY, targetZ);
+ }
+
+ public static int getFirstNonAirBlockFromTop(World world, int x, int z) {
+ int y;
+ for (y = world.getActualHeight(); world.isAirBlock(x, y - 1, z) && y > 0; y--) {}
+ return y;
+ }
+
+ public static boolean isBlockHit(MovingObjectPosition mop, TileEntity tile) {
+ if (tile == null) return false;
+ return isBlockHit(mop, tile.xCoord, tile.yCoord, tile.zCoord);
+ }
+
+ public static boolean isBlockHit(MovingObjectPosition mop, int x, int y, int z) {
+ if (mop == null) return false;
+ return mop.blockX == x && mop.blockY == y && mop.blockZ == z;
+ }
+
+} \ No newline at end of file