diff options
Diffstat (limited to 'src/main/java/darkknight/jewelrycraft/util/BlockUtils.java')
| -rw-r--r-- | src/main/java/darkknight/jewelrycraft/util/BlockUtils.java | 306 |
1 files changed, 152 insertions, 154 deletions
diff --git a/src/main/java/darkknight/jewelrycraft/util/BlockUtils.java b/src/main/java/darkknight/jewelrycraft/util/BlockUtils.java index 18cb9eb..a33fd5e 100644 --- a/src/main/java/darkknight/jewelrycraft/util/BlockUtils.java +++ b/src/main/java/darkknight/jewelrycraft/util/BlockUtils.java @@ -1,155 +1,153 @@ -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; - - /** - * This method is used to get the direction an entity is facing (NORTH, SOUTH, EAST or WEST) based on the entity's rotationYaw. - * - * @param entity the living entity - * @return a direction - */ - 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; - } - - /** - * This gets a float value depending on a direction - * - * @param direction the forge direction - * @return value depending on direction - */ - 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; - } - } - - /** - * This method is used to get the direction an entity is looking at (UP or DOWN) based on the entitiy's rotationPitch - * - * @param entity the living entity - * @return a forge direction - */ - 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); - } - - /** - * This spawns the item specified and returns the EntityItem it created - * - * @param worldObj the world - * @param x position of the item to drop on the X axis - * @param y position of the item to drop on the Y axis - * @param z position of the item to drop on the Z axis - * @param stack the item to spawn - * @return the EntityItem of the stack - */ - 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; - } - - /** - * It spawns the item with momentum in a certain direction - * - * @param world the world to spawn the item - * @param x the X coordinate to spawn it in - * @param y the Y coordinate to spawn it in - * @param z the Z coordinate to spawn it in - * @param direction the direction towards which it should eject - * @param stack the item to spawn - * @return the spawned 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; - } - - /** - * Drops the content of an inventory with doubles as coordinates - * - * @param inventory the inventory the items are contained in - * @param world the world in which to spawn - * @param x the X coordinate to spawn it in - * @param y the Y coordinate to spawn it in - * @param z the Z coordinate to spawn it in - */ - 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); - } - } - - /** - * Drops the content of an inventory with integer as coordinates - * - * @param inventory the inventory the items are contained in - * @param world the world in which to spawn - * @param x the X coordinate to spawn it in - * @param y the Y coordinate to spawn it in - * @param z the Z coordinate to spawn it in - */ - 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); - } +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.util.MathHelper;
+import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
+
+public class BlockUtils
+{
+ public static final ForgeDirection DEFAULT_BLOCK_DIRECTION = ForgeDirection.WEST;
+
+ /**
+ * This method is used to get the direction an entity is facing (NORTH, SOUTH, EAST or WEST) based on the entity's rotationYaw.
+ *
+ * @param entity the living entity
+ * @return a direction
+ */
+ 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;
+ }
+
+ /**
+ * This gets a float value depending on a direction
+ *
+ * @param direction the forge direction
+ * @return value depending on direction
+ */
+ 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;
+ }
+ }
+
+ /**
+ * This method is used to get the direction an entity is looking at (UP or DOWN) based on the entitiy's rotationPitch
+ *
+ * @param entity the living entity
+ * @return a forge direction
+ */
+ 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);
+ }
+
+ /**
+ * This spawns the item specified and returns the EntityItem it created
+ *
+ * @param worldObj the world
+ * @param x position of the item to drop on the X axis
+ * @param y position of the item to drop on the Y axis
+ * @param z position of the item to drop on the Z axis
+ * @param stack the item to spawn
+ * @return the EntityItem of the stack
+ */
+ 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;
+ }
+
+ /**
+ * It spawns the item with momentum in a certain direction
+ *
+ * @param world the world to spawn the item
+ * @param x the X coordinate to spawn it in
+ * @param y the Y coordinate to spawn it in
+ * @param z the Z coordinate to spawn it in
+ * @param direction the direction towards which it should eject
+ * @param stack the item to spawn
+ * @return the spawned 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;
+ }
+
+ /**
+ * Drops the content of an inventory with doubles as coordinates
+ *
+ * @param inventory the inventory the items are contained in
+ * @param world the world in which to spawn
+ * @param x the X coordinate to spawn it in
+ * @param y the Y coordinate to spawn it in
+ * @param z the Z coordinate to spawn it in
+ */
+ 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);
+ }
+ }
+
+ /**
+ * Drops the content of an inventory with integer as coordinates
+ *
+ * @param inventory the inventory the items are contained in
+ * @param world the world in which to spawn
+ * @param x the X coordinate to spawn it in
+ * @param y the Y coordinate to spawn it in
+ * @param z the Z coordinate to spawn it in
+ */
+ 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);
+ }
}
\ No newline at end of file |
