// Path: src/main/java/xilef11/mc/runesofwizardry_classics/Refs.java
// public final class Refs {
// 	private Refs(){}
// 	public static final String MODID = "runesofwizardry_classics";
// 	public static final String VERSION = "@VERSION@";
// 	public static final String NAME="Runes of Wizardry - Classic Dusts Pack";
// 	public static final String GUI_FACTORY="xilef11.mc.runesofwizardry_classics.client.gui.GuiFactory";
// 	public static final String CLIENT_PROXY = "xilef11.mc.runesofwizardry_classics.proxy.ClientProxy",
// 							   SERVER_PROXY="xilef11.mc.runesofwizardry_classics.proxy.ServerProxy";
// 	public static final String PATTERN_PATH=MODID+":patterns/";
// 	public static final String TEXTURE_PATH=MODID+":";
// 	public static final int TICKS_PER_DAY=24000;
// 	public static final int TPS=20;
// 	public static final class Lang{
// 		private Lang(){}
// 		public static final String RUNE=MODID+".rune";
// 		public static final String CONFIG=MODID+".configuration";
// 		public static final String DEC=RUNE+".decorative";
// 		
// 		public static final class Jei{
// 			private Jei(){}
// 			public static final String JEI=MODID+".jei";
// 			public static final String SPIRIT_SWORD=JEI+".spirit_sword";
// 			public static final String SPIRIT_PICKAXE=JEI+".spirit_pickaxe";
// 		}
// 	}
// }


import java.util.List;
import java.util.Set;
import com.zpig333.runesofwizardry.api.IRune;
import com.zpig333.runesofwizardry.api.RuneEntity;
import com.zpig333.runesofwizardry.tileentity.TileEntityDustActive;
import com.zpig333.runesofwizardry.tileentity.TileEntityDustActive.BeamType;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.World;
import xilef11.mc.runesofwizardry_classics.Refs;
							state = Blocks.COBBLESTONE.getDefaultState();
						}
						if(state.getBlock()==Blocks.BEDROCK || world.getBlockState(current.up()).getBlock()==Blocks.BEDROCK){
							break;//stop moving the column if we get to bedrock
						}
						NBTTagCompound temp = new NBTTagCompound();//to save TE data
						TileEntity te = world.getTileEntity(current);//get the TE, if any
						world.setBlockState(current.up(), state);//"move" the block up"
						if(te != null){
							te.writeToNBT(temp);//save TE data
							te = world.getTileEntity(current.up());
							if(te!=null){//shouldn't be, but safer this way
								te.readFromNBT(temp);//restore TE data
							}
						}
						world.setBlockToAir(current);
					}
					currentDepth--;
					highestBlock++;
				}else{//move the column down
					if(currentDepth==DEPTH){//if the column is fully down
						this.onPatternBroken();//break the rune
						return;
					}
					//drop
					for(int y = 0;y<=highestBlock+currentDepth;y++){
						if(y==0){//bottom
							if(!world.isAirBlock(lowest.down())){
								//or we could just return and stay blocked until the blockage gets cleared
								//this.onPatternBroken();
// Path: src/main/java/xilef11/mc/runesofwizardry_classics/Refs.java
// public final class Refs {
// 	private Refs(){}
// 	public static final String MODID = "runesofwizardry_classics";
// 	public static final String VERSION = "@VERSION@";
// 	public static final String NAME="Runes of Wizardry - Classic Dusts Pack";
// 	public static final String GUI_FACTORY="xilef11.mc.runesofwizardry_classics.client.gui.GuiFactory";
// 	public static final String CLIENT_PROXY = "xilef11.mc.runesofwizardry_classics.proxy.ClientProxy",
// 							   SERVER_PROXY="xilef11.mc.runesofwizardry_classics.proxy.ServerProxy";
// 	public static final String PATTERN_PATH=MODID+":patterns/";
// 	public static final String TEXTURE_PATH=MODID+":";
// 	public static final int TICKS_PER_DAY=24000;
// 	public static final int TPS=20;
// 	public static final class Lang{
// 		private Lang(){}
// 		public static final String RUNE=MODID+".rune";
// 		public static final String CONFIG=MODID+".configuration";
// 		public static final String DEC=RUNE+".decorative";
// 		
// 		public static final class Jei{
// 			private Jei(){}
// 			public static final String JEI=MODID+".jei";
// 			public static final String SPIRIT_SWORD=JEI+".spirit_sword";
// 			public static final String SPIRIT_PICKAXE=JEI+".spirit_pickaxe";
// 		}
// 	}
// }


// Path: src/main/java/xilef11/mc/runesofwizardry_classics/runes/entity/RuneEntityHeights.java
import java.util.List;
import java.util.Set;
import com.zpig333.runesofwizardry.api.IRune;
import com.zpig333.runesofwizardry.api.RuneEntity;
import com.zpig333.runesofwizardry.tileentity.TileEntityDustActive;
import com.zpig333.runesofwizardry.tileentity.TileEntityDustActive.BeamType;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.World;
import xilef11.mc.runesofwizardry_classics.Refs;

							state = Blocks.COBBLESTONE.getDefaultState();
						}
						if(state.getBlock()==Blocks.BEDROCK || world.getBlockState(current.up()).getBlock()==Blocks.BEDROCK){
							break;//stop moving the column if we get to bedrock
						}
						NBTTagCompound temp = new NBTTagCompound();//to save TE data
						TileEntity te = world.getTileEntity(current);//get the TE, if any
						world.setBlockState(current.up(), state);//"move" the block up"
						if(te != null){
							te.writeToNBT(temp);//save TE data
							te = world.getTileEntity(current.up());
							if(te!=null){//shouldn't be, but safer this way
								te.readFromNBT(temp);//restore TE data
							}
						}
						world.setBlockToAir(current);
					}
					currentDepth--;
					highestBlock++;
				}else{//move the column down
					if(currentDepth==DEPTH){//if the column is fully down
						this.onPatternBroken();//break the rune
						return;
					}
					//drop
					for(int y = 0;y<=highestBlock+currentDepth;y++){
						if(y==0){//bottom
							if(!world.isAirBlock(lowest.down())){
								//or we could just return and stay blocked until the blockage gets cleared
								//this.onPatternBroken();
								return;