@@ -0,0 +1,2581 @@
+package com.latenighters.runicarcana.util;%0A%0Aimport net.minecraft.entity.Entity;%0Aimport net.minecraft.entity.LivingEntity;%0Aimport net.minecraft.particles.BasicParticleType;%0Aimport net.minecraft.util.math.BlockPos;%0Aimport net.minecraft.util.text.ITextComponent;%0Aimport net.minecraft.util.text.TextFormatting;%0Aimport net.minecraft.util.text.TranslationTextComponent;%0Aimport net.minecraft.world.World;%0A%0Aimport java.util.Random;%0A%0Apublic class Util %7B%0A%0A    public static ITextComponent loreStyle(ITextComponent textComponent)%7B%0A        return textComponent.applyTextStyle(TextFormatting.DARK_PURPLE).applyTextStyle(TextFormatting.ITALIC);%0A    %7D%0A%0A    public static ITextComponent loreStyle(String key, Object...args)%7B%0A        return loreStyle(new TranslationTextComponent(key, args));%0A    %7D%0A%0A    public static ITextComponent tooltipStyle(ITextComponent textComponent)%7B%0A        return textComponent.applyTextStyle(TextFormatting.GRAY);%0A    %7D%0A%0A    public static ITextComponent tooltipStyle(String key, Object... args)%7B%0A        return tooltipStyle(new TranslationTextComponent(key, args));%0A    %7D%0A%0A    public static void setPositionAndRotationAndUpdate(Entity entity, Double x, Double y, Double z, Float yaw, Float pitch) %7B%0A        entity.setPositionAndUpdate(x, y, z);%0A        entity.setPositionAndRotation(x, y, z, yaw, pitch);%0A    %7D%0A%0A    public static void setPositionAndRotationAndUpdate(Entity entity, Double x, Double y, Double z)%7B%0A        setPositionAndRotationAndUpdate(entity, x, y, z, entity.rotationYaw, entity.rotationPitch);%0A    %7D%0A%0A    public static boolean checkHeadspace(World world, BlockPos pos)%7B%0A        return world.isAirBlock(pos) && world.isAirBlock(pos.up());%0A    %7D%0A%0A    public static void spawnParticleGroup(World world, BasicParticleType type, LivingEntity entity) %7B%0A        final Random rand = new Random();%0A        if (world.isRemote) %7B%0A            for (int i = 0; i %3C 30; ++i) %7B%0A                double d0 = rand.nextGaussian() * 0.02D;%0A                double d1 = rand.nextGaussian() * 0.02D;%0A                double d2 = rand.nextGaussian() * 0.02D;%0A                world.addParticle(%0A                        type,%0A                        entity.getPosX() + (double) (rand.nextFloat() * entity.getWidth() * 2.0F) - (double) entity.getWidth() - d0 * 10.0D,%0A                        entity.getPosY() + (double) (rand.nextFloat() * entity.getHeight()) - d1 * 10.0D,%0A                        entity.getPosZ() + (double) (rand.nextFloat() * entity.getWidth() * 2.0F) - (double) entity.getWidth() - d2 * 10.0D, d0, d1, d2%0A                );%0A            %7D%0A%0A        %7D%0A    %7D%0A%0A%7D%0A

Add Util class.