Jump to content

HarryTechReviews

Members
  • Posts

    55
  • Joined

  • Last visited

Posts posted by HarryTechReviews

  1. I am using the item handler capability to create a custom furnace but although I have it implemented correctly (I think), the container reference to it returns null. Here's the code:

     

    Tile Entity

    package harry.mods.tutorialmod.blocks.tileentity;
    
    import harry.mods.tutorialmod.blocks.BlockElectricSinteringFurnace;
    import harry.mods.tutorialmod.blocks.recipes.SinteringFurnaceRecipes;
    import harry.mods.tutorialmod.energy.CustomEnergyStorage;
    import harry.mods.tutorialmod.handlers.NBTHandler;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.item.ItemStack;
    import net.minecraft.nbt.NBTTagCompound;
    import net.minecraft.tileentity.TileEntity;
    import net.minecraft.util.EnumFacing;
    import net.minecraft.util.ITickable;
    import net.minecraft.util.text.ITextComponent;
    import net.minecraft.util.text.TextComponentString;
    import net.minecraft.util.text.TextComponentTranslation;
    import net.minecraftforge.common.capabilities.Capability;
    import net.minecraftforge.common.capabilities.CapabilityInject;
    import net.minecraftforge.energy.CapabilityEnergy;
    import net.minecraftforge.energy.IEnergyStorage;
    import net.minecraftforge.items.CapabilityItemHandler;
    import net.minecraftforge.items.IItemHandler;
    import net.minecraftforge.items.ItemStackHandler;
    
    public class TileEntityElectricSinteringFurnace extends TileEntity implements ITickable
    {	
    	public CustomEnergyStorage storage;
    	public ItemStackHandler handler;
    	public int smeltingTime = 0, itemSmeltTime = 100;
    	private ItemStack smelting;
    	private String customName;
    	
    	public TileEntityElectricSinteringFurnace() 
    	{
    		this.storage = new CustomEnergyStorage(75000);
    		this.handler = new ItemStackHandler(3);
    	}
    	
    	@Override
    	public ITextComponent getDisplayName() 
    	{
    		return hasCustomName() ? new TextComponentString(customName) : new TextComponentTranslation("container.electric_sintering_furnace");
    	}
    	
    	public boolean hasCustomName()
    	{
    		return !this.customName.isEmpty() && this.customName != null;
    	}
    	
    	
    	private EnumFacing getFacing()
    	{
    		return world.getBlockState(pos).getValue(BlockElectricSinteringFurnace.FACING);
    	}
    	
    	@Override
    	public boolean hasCapability(Capability<?> capability, EnumFacing facing) 
    	{
    		if(capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) return true;
    		if(capability == CapabilityEnergy.ENERGY) return true;
    		return super.hasCapability(capability, facing);
    	}
    	
    	@Override
    	public <T> T getCapability(Capability<T> capability, EnumFacing facing) 
    	{
    		if(capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) return (T)this.handler;
    		if(capability == CapabilityEnergy.ENERGY) return (T)this.storage;
    		return super.getCapability(capability, facing);
    	}
    	
    	@Override
    	public void readFromNBT(NBTTagCompound compound)
    	{
    		compound.getInteger("smeltingTime");
    		this.handler.deserializeNBT(compound.getCompoundTag("handler"));
    		this.storage.readFromNBT(compound);
    		smelting = NBTHandler.stackFromNBT((NBTTagCompound) compound.getTag("smelting"));
    		super.readFromNBT(compound);
    	}
    	
    	@Override
    	public NBTTagCompound writeToNBT(NBTTagCompound compound) 
    	{
    		compound.setTag("handler", this.handler.serializeNBT());
    		compound.setTag("smelting", NBTHandler.stackToNBT(smelting));
    		compound.setInteger("smeltingTime", smeltingTime);
    		this.storage.writeToNBT(compound);
    		super.writeToNBT(compound);
    		return compound;
    	}
    	
    	@Override
    	public void update()
    	{
    		ItemStack input1 = handler.getStackInSlot(0);
    		ItemStack input2 = handler.getStackInSlot(1);
    		
    		if(world.isBlockPowered(pos)) storage.receiveEnergy(100, false);
    		
    		if(storage.getEnergyStored() >= 20)
    		{
    			if(smeltingTime > 0)
    			{
    				storage.extractEnergy(20, false);
    				smeltingTime++;
    				
    				if(smeltingTime == itemSmeltTime)
    				{
    					handler.insertItem(2, smelting, false);
    					smelting = null;
    					smeltingTime = 0;
    					return;
    				}
    			}
    			else
    			{
    				if(!input1.isEmpty() && !input2.isEmpty())
    				{
    					SinteringFurnaceRecipes recipes = SinteringFurnaceRecipes.getInstance();
    					ItemStack output = recipes.getSinteringResult(input1, input2);
    					
    					if(!output.isEmpty())
    					{
    						smelting = output;
    						smeltingTime ++;
    						input1.shrink(1);
    						input2.shrink(1);
    						handler.setStackInSlot(0, input1);
    						handler.setStackInSlot(1, input2);
    						storage.extractEnergy(20, false);
    					}
    				}
    			}
    		}	
    	}
    	
    	public boolean isUsableByPlayer(EntityPlayer player) 
    	{
    		return this.world.getTileEntity(this.pos) != this ? false : player.getDistanceSq((double)this.pos.getX() + 0.5D, (double)this.pos.getY() + 0.5D, (double)this.pos.getZ() + 0.5D) <= 64.0D;
    	}
    }

     

    Container

    public class ContainerElectricSinteringFurnace extends Container
    {
    	private final TileEntityElectricSinteringFurnace tileentity;
    	
    	public ContainerElectricSinteringFurnace(InventoryPlayer player, TileEntityElectricSinteringFurnace tileentity) 
    	{
    		this.tileentity = tileentity;
    		IItemHandler handler = tileentity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null);
    		
    		this.addSlotToContainer(new SlotItemHandler(handler, 0, 26, 11));
    		this.addSlotToContainer(new SlotItemHandler(handler, 1, 26, 59));
    		this.addSlotToContainer(new SlotElectricSinteringFurnaceOutput(handler, 3, 81, 36));
    		
    		for(int y = 0; y < 3; y++)
    		{
    			for(int x = 0; x < 9; x++)
    			{
    				this.addSlotToContainer(new Slot(player, x + y*9 + 9, 8 + x*18, 84 + y*18));
    			}
    		}
    		
    		for(int x = 0; x < 9; x++)
    		{
    			this.addSlotToContainer(new Slot(player, x, 8 + x * 18, 142));
    		}
    	}

     

    Error log

    Caused by: java.lang.NullPointerException
    	at harry.mods.tutorialmod.blocks.container.ContainerElectricSinteringFurnace.<init>(ContainerElectricSinteringFurnace.java:26) ~[ContainerElectricSinteringFurnace.class:?]
    	at harry.mods.tutorialmod.handlers.GuiHandler.getServerGuiElement(GuiHandler.java:25) ~[GuiHandler.class:?]
    	at net.minecraftforge.fml.common.network.NetworkRegistry.getRemoteGuiContainer(NetworkRegistry.java:253) ~[NetworkRegistry.class:?]
    	at net.minecraftforge.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:88) ~[FMLNetworkHandler.class:?]
    	at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2809) ~[EntityPlayer.class:?]
    	at harry.mods.tutorialmod.blocks.BlockElectricSinteringFurnace.onBlockActivated(BlockElectricSinteringFurnace.java:58) ~[BlockElectricSinteringFurnace.class:?]
    	at net.minecraft.server.management.PlayerInteractionManager.processRightClickBlock(PlayerInteractionManager.java:472) ~[PlayerInteractionManager.class:?]
    	at net.minecraft.network.NetHandlerPlayServer.processTryUseItemOnBlock(NetHandlerPlayServer.java:767) ~[NetHandlerPlayServer.class:?]
    	at net.minecraft.network.play.client.CPacketPlayerTryUseItemOnBlock.processPacket(CPacketPlayerTryUseItemOnBlock.java:68) ~[CPacketPlayerTryUseItemOnBlock.class:?]
    	at net.minecraft.network.play.client.CPacketPlayerTryUseItemOnBlock.processPacket(CPacketPlayerTryUseItemOnBlock.java:13) ~[CPacketPlayerTryUseItemOnBlock.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_172]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_172]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 5 more

     

    If you have any idea why this may return null, I would love to know. Thanks!

  2. 9 minutes ago, Draco18s said:

    Can't you also override getBlockLayer with?

    
    	public BlockRenderLayer getBlockLayer() {
    		return BlockRenderLayer.INVISIBLE;
    	}

     

    INVISIBLE doesn't exist. I got it working so I have the texture but still throws no blockstate error which is weird.

     

    2 hours ago, diesieben07 said:

    I misspoke, I wanted to say you register a model for the block.

    If you do not want a model, you need a custom state mapper that does not request one.

    I'm not calling the model anymore. Thanks for the help but as I said, blockstate error still present

  3. As it says in the title, when I try and render using TESR and bind texture, Minecraft seems to ignore the bind texture and throw an error that I don't have a blockstate. The default minecraft chest doesn't have one so why would mine throw an error?

     

    TESR Class

    package harry.mods.tutorialmod.blocks.animation;
    
    import org.lwjgl.opengl.GL11;
    
    import harry.mods.tutorialmod.Reference;
    import harry.mods.tutorialmod.blocks.tileentity.TileEntityCopperChest;
    import harry.mods.tutorialmod.init.BlockInit;
    import net.minecraft.block.state.IBlockState;
    import net.minecraft.client.Minecraft;
    import net.minecraft.client.renderer.BlockRendererDispatcher;
    import net.minecraft.client.renderer.BufferBuilder;
    import net.minecraft.client.renderer.GlStateManager;
    import net.minecraft.client.renderer.Tessellator;
    import net.minecraft.client.renderer.block.model.IBakedModel;
    import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
    import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
    import net.minecraft.util.ResourceLocation;
    import net.minecraft.world.World;
    import net.minecraftforge.fml.relauncher.Side;
    import net.minecraftforge.fml.relauncher.SideOnly;
    
    @SideOnly(Side.CLIENT)
    public class RenderCopperChest extends TileEntitySpecialRenderer<TileEntityCopperChest>
    {
        private static final ResourceLocation TEXTURE = new ResourceLocation(Reference.MODID + ":textures/blocks/copper_chest.png");
        private final ModelCopperChest MODEL = new ModelCopperChest();
        
        @Override
        public void render(TileEntityCopperChest te, double x, double y, double z, float partialTicks, int destroyStage, float alpha)
        {
        	GlStateManager.enableDepth();
            GlStateManager.depthFunc(515);
            GlStateManager.depthMask(true);
        	
        	ModelCopperChest model = MODEL;
        	
        	if (destroyStage >= 0)
            {
                this.bindTexture(DESTROY_STAGES[destroyStage]);
                GlStateManager.matrixMode(5890);
                GlStateManager.pushMatrix();
                GlStateManager.scale(4.0F, 4.0F, 1.0F);
                GlStateManager.translate(0.0625F, 0.0625F, 0.0625F);
                GlStateManager.matrixMode(5888);
            }
        	else this.bindTexture(TEXTURE);
        	
        	GlStateManager.pushMatrix();
            GlStateManager.enableRescaleNormal();
            GlStateManager.translate((float)x, (float)y + 1.0F, (float)z + 1.0F);
            GlStateManager.scale(1.0F, -1.0F, -1.0F);
            GlStateManager.translate(0.5F, 0.5F, 0.5F);
            GlStateManager.translate(-0.5F, -0.5F, -0.5F);
           
            float f = te.prevLidAngle + (te.lidAngle - te.prevLidAngle) * partialTicks;
            f = 1.0F - f;
            f = 1.0F - f * f * f;
            model.chestLid.rotateAngleX = -(f * ((float)Math.PI / 2F));
            model.renderAll();
            GlStateManager.disableRescaleNormal();
            GlStateManager.popMatrix();
            GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
    
            if (destroyStage >= 0)
            {
                GlStateManager.matrixMode(5890);
                GlStateManager.popMatrix();
                GlStateManager.matrixMode(5888);
            }	
        }
    }

     

    Block Class

    package harry.mods.tutorialmod.blocks;
    
    import harry.mods.tutorialmod.Main;
    import harry.mods.tutorialmod.Reference;
    import harry.mods.tutorialmod.blocks.animation.RenderCopperChest;
    import harry.mods.tutorialmod.blocks.tileentity.TileEntityCopperChest;
    import harry.mods.tutorialmod.init.BlockInit;
    import harry.mods.tutorialmod.init.ItemInit;
    import harry.mods.tutorialmod.interfaces.IHasModel;
    import net.minecraft.block.BlockContainer;
    import net.minecraft.block.SoundType;
    import net.minecraft.block.material.Material;
    import net.minecraft.block.state.IBlockState;
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.entity.EntityLivingBase;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.inventory.InventoryHelper;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemBlock;
    import net.minecraft.item.ItemStack;
    import net.minecraft.tileentity.TileEntity;
    import net.minecraft.util.EnumBlockRenderType;
    import net.minecraft.util.EnumFacing;
    import net.minecraft.util.EnumHand;
    import net.minecraft.util.math.BlockPos;
    import net.minecraft.world.World;
    import net.minecraftforge.fml.client.registry.ClientRegistry;
    
    public class BlockCopperChest extends BlockContainer implements IHasModel
    {	
    	public BlockCopperChest(String name, Material material, CreativeTabs tab, float hardness, float resistance, String harvestTool, int harvestLevel, SoundType sound) 
    	{
    		super(material);
    		setUnlocalizedName(name);
    		setRegistryName(name);
    		setCreativeTab(tab);
    		setHardness(hardness);
    		setResistance(resistance);
    		setHarvestLevel(harvestTool, harvestLevel);
    		setSoundType(sound);
    		
    		BlockInit.BLOCKS.add(this);
    		ItemInit.ITEMS.add(new ItemBlock(this).setRegistryName(name));
    	}
    
    	@Override
    	public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) 
    	{
    		if(!worldIn.isRemote) 
    		{
    			playerIn.openGui(Main.instance, Reference.GUI_COPPER_CHEST, worldIn, pos.getX(), pos.getY(), pos.getZ());
    		}
    		
    		return true;
    	}
    	
    	@Override
    	public TileEntity createNewTileEntity(World worldIn, int meta)
    	{
    		return new TileEntityCopperChest();
    	}
    	
    	@Override
    	public void breakBlock(World worldIn, BlockPos pos, IBlockState state) 
    	{
    		TileEntityCopperChest tileentity = (TileEntityCopperChest)worldIn.getTileEntity(pos);
    		InventoryHelper.dropInventoryItems(worldIn, pos, tileentity);
    		super.breakBlock(worldIn, pos, state);
    	}
    	
    	@Override
    	public EnumBlockRenderType getRenderType(IBlockState state) 
    	{
    		return EnumBlockRenderType.ENTITYBLOCK_ANIMATED;
    	}
    
    	@Override
    	public void registerModels() 
    	{
    		Main.proxy.registerModel(Item.getItemFromBlock(this), 0);
    		ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCopperChest.class, new RenderCopperChest());
    	}
    	
    	@Override
    	public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) 
    	{
    		 if (stack.hasDisplayName())
    		 {
    			 TileEntity tileentity = worldIn.getTileEntity(pos);
    
    			 if (tileentity instanceof TileEntityCopperChest)
    	         {
    				 ((TileEntityCopperChest)tileentity).setCustomName(stack.getDisplayName());
    	         }
    		 }
    	}
    
        private boolean isBelowSolidBlock(World worldIn, BlockPos pos)
        {
            return worldIn.getBlockState(pos.up()).doesSideBlockChestOpening(worldIn, pos.up(), EnumFacing.DOWN);
        }
    
        @Override
        public boolean isFullBlock(IBlockState state) 
        {
        	return false;
        }
        
        @Override
        public boolean isFullCube(IBlockState state) 
        {
        	return false;
        }
        
        @Override
        public boolean isOpaqueCube(IBlockState state) 
        {
        	return false;
        }
    }

     

    Tile Entity Class

    package harry.mods.tutorialmod.blocks.tileentity;
    
    import harry.mods.tutorialmod.blocks.container.ContainerCopperChest;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.entity.player.InventoryPlayer;
    import net.minecraft.init.Items;
    import net.minecraft.init.SoundEvents;
    import net.minecraft.inventory.Container;
    import net.minecraft.inventory.ContainerChest;
    import net.minecraft.inventory.IInventory;
    import net.minecraft.inventory.InventoryLargeChest;
    import net.minecraft.inventory.ItemStackHelper;
    import net.minecraft.item.ItemStack;
    import net.minecraft.nbt.NBTTagCompound;
    import net.minecraft.tileentity.TileEntity;
    import net.minecraft.tileentity.TileEntityLockableLoot;
    import net.minecraft.util.ITickable;
    import net.minecraft.util.NonNullList;
    import net.minecraft.util.SoundCategory;
    import net.minecraft.util.math.AxisAlignedBB;
    
    public class TileEntityCopperChest extends TileEntityLockableLoot implements ITickable
    {
    	private NonNullList<ItemStack> chestContents = NonNullList.<ItemStack>withSize(72, ItemStack.EMPTY);
    	public int numPlayersUsing, ticksSinceSync;
    	public float lidAngle, prevLidAngle;
    
    	@Override
    	public int getSizeInventory() 
    	{
    		return 72;
    	}
    	
    	@Override
    	public boolean isEmpty() 
    	{
    		for(ItemStack stack : this.chestContents)
    		{
    			if(!stack.isEmpty()) return false;
    		}
    		
    		return true;
    	}
    
    
    	@Override
    	public String getName() 
    	{
    		return this.hasCustomName() ? this.customName : "container.copper_chest";
    	}
    	
    	@Override
    	public void readFromNBT(NBTTagCompound compound) 
    	{
    		super.readFromNBT(compound);
    		this.chestContents = NonNullList.<ItemStack>withSize(this.getSizeInventory(), ItemStack.EMPTY);
    		
    		if(!this.checkLootAndRead(compound)) ItemStackHelper.loadAllItems(compound, chestContents);
    		if(compound.hasKey("CustomName", 8)) this.customName = compound.getString("CustomName");
    	}
    	
    	@Override
    	public NBTTagCompound writeToNBT(NBTTagCompound compound) 
    	{
    		super.writeToNBT(compound);
    		
    		if(!this.checkLootAndWrite(compound)) ItemStackHelper.saveAllItems(compound, chestContents);
    		if(compound.hasKey("CustomName", 8)) compound.setString("CustomName", this.customName);
    		
    		return compound;
    	}
    	
    	@Override
    	public int getInventoryStackLimit() 
    	{
    		return 64;
    	}
    
    	@Override
    	public Container createContainer(InventoryPlayer playerInventory, EntityPlayer playerIn) 
    	{
    		return new ContainerCopperChest(playerInventory, this, playerIn);
    	}
    
    	@Override
    	public String getGuiID() 
    	{
    		return "tutorial:copper_chest";
    	}
    
    	@Override
    	protected NonNullList<ItemStack> getItems()
    	{
    		return this.chestContents;
    	}
    
    	@Override
    	public void update() 
    	{
    		if (!this.world.isRemote && this.numPlayersUsing != 0 && (this.ticksSinceSync + pos.getX() + pos.getY() + pos.getZ()) % 200 == 0)
            {
                this.numPlayersUsing = 0;
                float f = 5.0F;
    
                for (EntityPlayer entityplayer : this.world.getEntitiesWithinAABB(EntityPlayer.class, new AxisAlignedBB((double)((float)pos.getX() - 5.0F), (double)((float)pos.getY() - 5.0F), (double)((float)pos.getZ() - 5.0F), (double)((float)(pos.getX() + 1) + 5.0F), (double)((float)(pos.getY() + 1) + 5.0F), (double)((float)(pos.getZ() + 1) + 5.0F))))
                {
                    if (entityplayer.openContainer instanceof ContainerCopperChest)
                    {
                        if (((ContainerCopperChest)entityplayer.openContainer).getChestInventory() == this)
                        {
                            ++this.numPlayersUsing;
                        }
                    }
                }
            }
    		
            this.prevLidAngle = this.lidAngle;
            float f1 = 0.1F;
    
            if (this.numPlayersUsing > 0 && this.lidAngle == 0.0F)
            {
                double d1 = (double)pos.getX() + 0.5D;
                double d2 = (double)pos.getZ() + 0.5D;
                this.world.playSound((EntityPlayer)null, d1, (double)pos.getY() + 0.5D, d2, SoundEvents.BLOCK_CHEST_OPEN, SoundCategory.BLOCKS, 0.5F, this.world.rand.nextFloat() * 0.1F + 0.9F);
            }
    
            if (this.numPlayersUsing == 0 && this.lidAngle > 0.0F || this.numPlayersUsing > 0 && this.lidAngle < 1.0F)
            {
                float f2 = this.lidAngle;
    
                if (this.numPlayersUsing > 0)
                {
                    this.lidAngle += 0.1F;
                }
                else
                {
                    this.lidAngle -= 0.1F;
                }
    
                if (this.lidAngle > 1.0F)
                {
                    this.lidAngle = 1.0F;
                }
    
                float f3 = 0.5F;
    
                if (this.lidAngle < 0.5F && f2 >= 0.5F)
                {
                    double d3 = (double)pos.getX() + 0.5D;
                    double d0 = (double)pos.getZ() + 0.5D;
                    this.world.playSound((EntityPlayer)null, d3, (double)pos.getY() + 0.5D, d0, SoundEvents.BLOCK_CHEST_CLOSE, SoundCategory.BLOCKS, 0.5F, this.world.rand.nextFloat() * 0.1F + 0.9F);
                }
    
                if (this.lidAngle < 0.0F)
                {
                    this.lidAngle = 0.0F;
                }
            }		
    	}
    	
    	@Override
    	public void openInventory(EntityPlayer player) 
    	{
    		++this.numPlayersUsing;	
    		this.world.addBlockEvent(pos, this.getBlockType(), 1, this.numPlayersUsing);
    		this.world.notifyNeighborsOfStateChange(pos, this.getBlockType(), false);
    	}
    	
    	@Override
    	public void closeInventory(EntityPlayer player) 
    	{
    		--this.numPlayersUsing;
    		this.world.addBlockEvent(pos, this.getBlockType(), 1, this.numPlayersUsing);
    		this.world.notifyNeighborsOfStateChange(pos, this.getBlockType(), false);
    	}
    	
    	
    }

     

  4. I want to have all my ores within one class. I can do them with dimensions on their own, i can do them with variants on their own but I can't figure out the maths for getmetafromstate and getstatefrommeta etc. to make them both work together. Any help would be appreciated.

     

    public class EnumHandler
    {
    	//Variants
    	public static enum EnumType implements IStringSerializable
    	{
    		COPPER(1, "copper"),
    		ALUMINIUM(2, "aluminium");
    		
    		private static final EnumType[] META_LOOKUP = new EnumType[values().length];
    		private final int meta;
    		private final String name, unlocializedName;
    		
    		private EnumType(int meta, String name) 
    		{
    			this(meta, name, name);
    		}
    		
    		private EnumType(int meta, String name, String unlocializedName) 
    		{
    			this.meta = meta;
    			this.name = name;
    			this.unlocializedName = unlocializedName;
    		}
    		
    		@Override
    		public String getName() 
    		{
    			return this.name;
    		}
    		
    		public int getMeta() 
    		{
    			return this.meta;
    		}
    		
    		public String getUnlocializedName() 
    		{
    			return this.unlocializedName;
    		}
    		
    		@Override
    		public String toString() 
    		{
    			return this.name;
    		}
    		
    		public static EnumType byMetadata(int meta)
    		{
    			return META_LOOKUP[meta];
    		}
    		
    		static
    		{
    			for(EnumType enumtype : values())
    			{
    				META_LOOKUP[enumtype.getMeta()] = enumtype;
    			}
    		}
    	}
    	
    	//Dimensions
    	public static enum EnumDimension implements IStringSerializable
    	{
    		NETHER(1, "nether"),
    		OVERWORLD(2, "overworld"),
    		END(3, "end");
    		
    		private static final EnumDimension[] META_LOOKUP = new EnumDimension[values().length];
    		private final int meta;
    		private final String name, unlocializedName;
    		
    		private EnumDimension(int meta, String name) 
    		{
    			this(meta, name, name);
    		}
    		
    		private EnumDimension(int meta, String name, String unlocializedName) 
    		{
    			this.meta = meta;
    			this.name = name;
    			this.unlocializedName = unlocializedName;
    		}
    		
    		@Override
    		public String getName() 
    		{
    			return this.name;
    		}
    		
    		public int getMeta() 
    		{
    			return this.meta;
    		}
    		
    		public String getUnlocializedName() 
    		{
    			return this.unlocializedName;
    		}
    		
    		@Override
    		public String toString() 
    		{
    			return this.name;
    		}
    		
    		public static EnumDimension byMetadata(int meta)
    		{
    			return META_LOOKUP[meta];
    		}
    		
    		static
    		{
    			for(EnumDimension dimension : values())
    			{
    				META_LOOKUP[dimension.getMeta()] = dimension;
    			}
    		}
    		
    	}
    }
    public class BlockOres extends Block implements IHasModel,IMetaName
    {
    	public static final PropertyEnum<EnumHandler.EnumDimension> DIMENSION = PropertyEnum.<EnumHandler.EnumDimension>create("dimension", EnumHandler.EnumDimension.class);
    	public static final PropertyEnum<EnumHandler.EnumType> VARIANT = PropertyEnum.<EnumHandler.EnumType>create("variant", EnumHandler.EnumType.class);
    	
    	private String name;
    	
    	public BlockOres(String name) 
    	{
    		super(Material.ROCK);
    		
    		setUnlocalizedName(name);
    		setRegistryName(name);
    		this.name = name;
    		setSoundType(SoundType.STONE);
    		setCreativeTab(Main.TAB_MOD);
    		setDefaultState(this.blockState.getBaseState().withProperty(DIMENSION, EnumHandler.EnumDimension.OVERWORLD).withProperty(VARIANT, EnumHandler.EnumType.COPPER));
    
    		BlockInit.BLOCKS.add(this);
    		ItemInit.ITEMS.add(new ItemBlockVariants(this).setRegistryName(this.getRegistryName()));
    	}
    	
    	@Override
    	public int damageDropped(IBlockState state) 
    	{
    		return ((EnumHandler.EnumDimension)state.getValue(DIMENSION)).getMeta() * ((EnumHandler.EnumType)state.getValue(VARIANT)).getMeta();
    	}
    	
    	@Override
    	public void getSubBlocks(CreativeTabs itemIn, NonNullList<ItemStack> items) 
    	{
    		for(EnumHandler.EnumDimension dimension : EnumHandler.EnumDimension.values())
    		{
    			for(EnumHandler.EnumType variant : EnumHandler.EnumType.values())
    			{
    				items.add(new ItemStack(this, 1, dimension.getMeta() * variant.getMeta()));
    			}
    		}
    	}
    	
    	@Override
    	public IBlockState getStateFromMeta(int meta) 
    	{
    		return this.getDefaultState().withProperty(VARIANT, EnumHandler.EnumType.byMetadata(meta)).withProperty(DIMENSION, EnumHandler.EnumDimension.byMetadata(meta));
    	}
    	
    	@Override
    	public int getMetaFromState(IBlockState state) 
    	{
    		return ((EnumHandler.EnumDimension)state.getValue(DIMENSION)).getMeta() * ((EnumHandler.EnumType)state.getValue(VARIANT)).getMeta();
    	}
    	
    	@Override
    	public ItemStack getPickBlock(IBlockState state, RayTraceResult target, World world, BlockPos pos, EntityPlayer player) 
    	{
    		return new ItemStack(Item.getItemFromBlock(this), 1, getMetaFromState(world.getBlockState(pos)));
    	}
    	
    	@Override
    	protected BlockStateContainer createBlockState() 
    	{
    		return new BlockStateContainer(this, new IProperty[] {DIMENSION, VARIANT});
    	}
    	
    	@Override
    	public String getSpecialName(ItemStack stack) 
    	{
    		return EnumHandler.EnumType.values()[stack.getItemDamage()].getName() + "_" + EnumHandler.EnumDimension.values()[stack.getItemDamage()].getName();
    	}
    	
    	@Override
    	public void registerModels() 
    	{
    		for(int i = 0; i < EnumHandler.EnumDimension.values().length; i++)
    		{
    			for(int j = 0; j < EnumHandler.EnumType.values().length; j++)
    			{
    				Main.proxy.registerVariantsRenderer(Item.getItemFromBlock(this), i, this.name + "_" + EnumHandler.EnumType.values()[j].getName() + "_" + EnumHandler.EnumDimension.values()[i].getName(), "inventory");
    			}
    		}
    	}

     

  5. I used \/\/\/\/\/ to create an Item spawning my structure from a structure NBT file. When I right click the Item with the if(!worldIn.isRemote) checker, nothing happens but without it the game crashes. Any ideas?

    Here is my code

    @Override
    	public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn) 
    	{
    		if(!worldIn.isRemote)
    		{
    			this.loadStructure(playerIn.getPosition().add(1, 0, 1), worldIn, "House");
    		}
    		
    		return new ActionResult<ItemStack>(EnumActionResult.SUCCESS, playerIn.getHeldItem(handIn));
    	}
    	
    	public void loadStructure(BlockPos pos, World world, String name)
    	{
    		if(!world.isRemote)
    		{
    			WorldServer server = (WorldServer)world;
    			MinecraftServer mcserver = world.getMinecraftServer();
    			
    			TemplateManager templateManager = server.getStructureTemplateManager();
    			ResourceLocation templateLocation = new ResourceLocation(Reference.MODID, name);
    			Template template = templateManager.getTemplate(mcserver, templateLocation);
    			
    			if(template != null)
    			{
    				IBlockState state = world.getBlockState(pos);		
    				world.notifyBlockUpdate(pos, state, state, 3);
    				PlacementSettings settings = (new PlacementSettings()).setMirror(Mirror.NONE).setRotation(Rotation.NONE).setIgnoreEntities(false).setChunk(null).setReplacedBlock(null).setIgnoreStructureBlock(false);
    				template.addBlocksToWorld(world, pos, settings);
    			}
    		}
    	}

     

  6. When I teleport to my custom dimension, the player always spawns suffocating in a block. My dimension is based off of the nether but in the nether code, it never checks to stop the player suffocating. Any idea how to make the player always spawn with air?

     

    public class WorldProviderMining extends WorldProvider
    {
    	@Override
    	protected void init() 
    	{
    		this.biomeProvider = new BiomeProviderSingle(BiomeInit.COPPER);
    	}
    	 
    	public IChunkGenerator createChunkGenerator()
    	{
    		return new MiningChunkGenerator(this.world, true, this.world.getSeed());
    	}
    	
    	@SideOnly(Side.CLIENT)
    	public Vec3d getFogColor(float p_76562_1_, float p_76562_2_)
    	{
    		return new Vec3d(0D,0D,0D);
    	}
    	
    	@Override
    	public boolean isSurfaceWorld()
    	{
    		return false;
    	}
    	
    	@Override
    	public boolean canRespawnHere() 
    	{
    		return false;
    	}
    	
    	@Override
    	public boolean canCoordinateBeSpawn(int x, int z) 
    	{
    		return false;
    	}
    	
    	@Override
    	public boolean doesXZShowFog(int x, int z)
    	{
    		return false;
    	}
    	
    	@Override
    	public DimensionType getDimensionType() 
    	{
    		return DimensionType.getById(Reference.mining_dim_id);
    	}
    	
    	public boolean hasSkyLight() 
    	{
    		return true;
    	}
    	
    	 @Override
    	    public WorldBorder createWorldBorder() 
    	    {
    	    	return new WorldBorder()
    	        {
    	            public double getCenterX()
    	            {
    	                return super.getCenterX() / 8.0D;
    	            }
    	            public double getCenterZ()
    	            {
    	                return super.getCenterZ() / 8.0D;
    	            }
    	        };
    	    }
    }

     

  7. It's become longer while i've been troubleshooting :(

    
    Caused by: java.lang.ArrayIndexOutOfBoundsException: 16
    	at net.minecraft.world.chunk.BlockStatePaletteLinear.read(BlockStatePaletteLinear.java:64) ~[BlockStatePaletteLinear.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.read(BlockStateContainer.java:114) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.Chunk.read(Chunk.java:1252) ~[Chunk.class:?]
    	at net.minecraft.client.network.NetHandlerPlayClient.handleChunkData(NetHandlerPlayClient.java:819) ~[NetHandlerPlayClient.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:110) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:20) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 15 more
    [18:37:21] [main/FATAL]: Error executing task
    java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: The value 118 is not in the specified inclusive range of 1 to 32
    	at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
    	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1161) [Minecraft.class:?]
    	at net.minecraft.client.Minecraft.run(Minecraft.java:436) [Minecraft.class:?]
    	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    	at GradleStart.main(GradleStart.java:26) [start/:?]
    Caused by: java.lang.IllegalArgumentException: The value 118 is not in the specified inclusive range of 1 to 32
    	at org.apache.commons.lang3.Validate.inclusiveBetween(Validate.java:1032) ~[commons-lang3-3.5.jar:3.5]
    	at net.minecraft.util.BitArray.<init>(BitArray.java:22) ~[BitArray.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.setBits(BlockStateContainer.java:59) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.read(BlockStateContainer.java:111) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.Chunk.read(Chunk.java:1252) ~[Chunk.class:?]
    	at net.minecraft.client.network.NetHandlerPlayClient.handleChunkData(NetHandlerPlayClient.java:819) ~[NetHandlerPlayClient.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:110) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:20) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 15 more
    [18:37:21] [main/FATAL]: Error executing task
    java.util.concurrent.ExecutionException: java.lang.ArrayIndexOutOfBoundsException: 16
    	at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
    	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1161) [Minecraft.class:?]
    	at net.minecraft.client.Minecraft.run(Minecraft.java:436) [Minecraft.class:?]
    	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    	at GradleStart.main(GradleStart.java:26) [start/:?]
    Caused by: java.lang.ArrayIndexOutOfBoundsException: 16
    	at net.minecraft.world.chunk.BlockStatePaletteLinear.read(BlockStatePaletteLinear.java:64) ~[BlockStatePaletteLinear.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.read(BlockStateContainer.java:114) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.Chunk.read(Chunk.java:1252) ~[Chunk.class:?]
    	at net.minecraft.client.network.NetHandlerPlayClient.handleChunkData(NetHandlerPlayClient.java:819) ~[NetHandlerPlayClient.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:110) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:20) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 15 more
    [18:37:22] [main/FATAL]: Error executing task
    java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: The value 153 is not in the specified inclusive range of 0 to 15
    	at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
    	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1161) [Minecraft.class:?]
    	at net.minecraft.client.Minecraft.run(Minecraft.java:436) [Minecraft.class:?]
    	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    	at GradleStart.main(GradleStart.java:26) [start/:?]
    Caused by: java.lang.IllegalArgumentException: The value 153 is not in the specified inclusive range of 0 to 15
    	at org.apache.commons.lang3.Validate.inclusiveBetween(Validate.java:1032) ~[commons-lang3-3.5.jar:3.5]
    	at net.minecraft.util.BitArray.setAt(BitArray.java:35) ~[BitArray.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.set(BlockStateContainer.java:90) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.set(BlockStateContainer.java:84) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.storage.ExtendedBlockStorage.set(ExtendedBlockStorage.java:76) ~[ExtendedBlockStorage.class:?]
    	at net.minecraft.world.chunk.Chunk.setBlockState(Chunk.java:607) ~[Chunk.class:?]
    	at net.minecraft.world.World.setBlockState(World.java:398) ~[World.class:?]
    	at net.minecraft.client.multiplayer.WorldClient.invalidateRegionAndSetBlock(WorldClient.java:322) ~[WorldClient.class:?]
    	at net.minecraft.client.network.NetHandlerPlayClient.handleMultiBlockChange(NetHandlerPlayClient.java:801) ~[NetHandlerPlayClient.class:?]
    	at net.minecraft.network.play.server.SPacketMultiBlockChange.processPacket(SPacketMultiBlockChange.java:70) ~[SPacketMultiBlockChange.class:?]
    	at net.minecraft.network.play.server.SPacketMultiBlockChange.processPacket(SPacketMultiBlockChange.java:15) ~[SPacketMultiBlockChange.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 15 more
    [18:37:22] [main/FATAL]: Error executing task
    java.util.concurrent.ExecutionException: io.netty.handler.codec.DecoderException: LongArray with size 4228 is bigger than allowed 3158
    	at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
    	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1161) [Minecraft.class:?]
    	at net.minecraft.client.Minecraft.run(Minecraft.java:436) [Minecraft.class:?]
    	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    	at GradleStart.main(GradleStart.java:26) [start/:?]
    Caused by: io.netty.handler.codec.DecoderException: LongArray with size 4228 is bigger than allowed 3158
    	at net.minecraft.network.PacketBuffer.readLongArray(PacketBuffer.java:162) ~[PacketBuffer.class:?]
    	at net.minecraft.network.PacketBuffer.readLongArray(PacketBuffer.java:150) ~[PacketBuffer.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.read(BlockStateContainer.java:115) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.Chunk.read(Chunk.java:1252) ~[Chunk.class:?]
    	at net.minecraft.client.network.NetHandlerPlayClient.handleChunkData(NetHandlerPlayClient.java:819) ~[NetHandlerPlayClient.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:110) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:20) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 15 more
    [18:37:22] [Server thread/FATAL]: Error executing task
    java.util.concurrent.ExecutionException: net.minecraft.util.ReportedException: Exception generating new chunk
    	at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
    	at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:795) [MinecraftServer.class:?]
    	at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:740) [MinecraftServer.class:?]
    	at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:192) [IntegratedServer.class:?]
    	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:589) [MinecraftServer.class:?]
    	at java.lang.Thread.run(Unknown Source) [?:1.8.0_131]
    Caused by: net.minecraft.util.ReportedException: Exception generating new chunk
    	at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:164) ~[ChunkProviderServer.class:?]
    	at net.minecraft.world.World.getChunkFromChunkCoords(World.java:360) ~[World.class:?]
    	at net.minecraft.world.World.getChunkFromBlockCoords(World.java:352) ~[World.class:?]
    	at net.minecraft.world.World.getBlockState(World.java:990) ~[World.class:?]
    	at net.minecraft.world.World.checkBlockCollision(World.java:2258) ~[World.class:?]
    	at net.minecraft.network.NetHandlerPlayServer.processPlayer(NetHandlerPlayServer.java:592) ~[NetHandlerPlayServer.class:?]
    	at net.minecraft.network.play.client.CPacketPlayer.processPacket(CPacketPlayer.java:36) ~[CPacketPlayer.class:?]
    	at net.minecraft.network.play.client.CPacketPlayer$Position.processPacket(CPacketPlayer.java:85) ~[CPacketPlayer$Position.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 5 more
    Caused by: java.lang.ArrayIndexOutOfBoundsException: 513
    	at harry.harrysmod.world.dimension.NormalTerrainGen.generateHeightmap(NormalTerrainGen.java:160) ~[NormalTerrainGen.class:?]
    	at harry.harrysmod.world.dimension.NormalTerrainGen.generate(NormalTerrainGen.java:169) ~[NormalTerrainGen.class:?]
    	at harry.harrysmod.world.dimension.CopperChunkGenerator.generateChunk(CopperChunkGenerator.java:43) ~[CopperChunkGenerator.class:?]
    	at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:155) ~[ChunkProviderServer.class:?]
    	at net.minecraft.world.World.getChunkFromChunkCoords(World.java:360) ~[World.class:?]
    	at net.minecraft.world.World.getChunkFromBlockCoords(World.java:352) ~[World.class:?]
    	at net.minecraft.world.World.getBlockState(World.java:990) ~[World.class:?]
    	at net.minecraft.world.World.checkBlockCollision(World.java:2258) ~[World.class:?]
    	at net.minecraft.network.NetHandlerPlayServer.processPlayer(NetHandlerPlayServer.java:592) ~[NetHandlerPlayServer.class:?]
    	at net.minecraft.network.play.client.CPacketPlayer.processPacket(CPacketPlayer.java:36) ~[CPacketPlayer.class:?]
    	at net.minecraft.network.play.client.CPacketPlayer$Position.processPacket(CPacketPlayer.java:85) ~[CPacketPlayer$Position.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 5 more
    [18:37:22] [main/FATAL]: Error executing task
    java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: The value 113 is not in the specified inclusive range of 1 to 32
    	at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
    	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1161) [Minecraft.class:?]
    	at net.minecraft.client.Minecraft.run(Minecraft.java:436) [Minecraft.class:?]
    	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    	at GradleStart.main(GradleStart.java:26) [start/:?]
    Caused by: java.lang.IllegalArgumentException: The value 113 is not in the specified inclusive range of 1 to 32
    	at org.apache.commons.lang3.Validate.inclusiveBetween(Validate.java:1032) ~[commons-lang3-3.5.jar:3.5]
    	at net.minecraft.util.BitArray.<init>(BitArray.java:22) ~[BitArray.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.setBits(BlockStateContainer.java:59) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.read(BlockStateContainer.java:111) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.Chunk.read(Chunk.java:1252) ~[Chunk.class:?]
    	at net.minecraft.client.network.NetHandlerPlayClient.handleChunkData(NetHandlerPlayClient.java:819) ~[NetHandlerPlayClient.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:110) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:20) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 15 more
    [18:37:22] [main/FATAL]: Error executing task
    java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: The value 153 is not in the specified inclusive range of 0 to 15
    	at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
    	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1161) [Minecraft.class:?]
    	at net.minecraft.client.Minecraft.run(Minecraft.java:436) [Minecraft.class:?]
    	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    	at GradleStart.main(GradleStart.java:26) [start/:?]
    Caused by: java.lang.IllegalArgumentException: The value 153 is not in the specified inclusive range of 0 to 15
    	at org.apache.commons.lang3.Validate.inclusiveBetween(Validate.java:1032) ~[commons-lang3-3.5.jar:3.5]
    	at net.minecraft.util.BitArray.setAt(BitArray.java:35) ~[BitArray.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.set(BlockStateContainer.java:90) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.set(BlockStateContainer.java:84) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.storage.ExtendedBlockStorage.set(ExtendedBlockStorage.java:76) ~[ExtendedBlockStorage.class:?]
    	at net.minecraft.world.chunk.Chunk.setBlockState(Chunk.java:607) ~[Chunk.class:?]
    	at net.minecraft.world.World.setBlockState(World.java:398) ~[World.class:?]
    	at net.minecraft.client.multiplayer.WorldClient.invalidateRegionAndSetBlock(WorldClient.java:322) ~[WorldClient.class:?]
    	at net.minecraft.client.network.NetHandlerPlayClient.handleMultiBlockChange(NetHandlerPlayClient.java:801) ~[NetHandlerPlayClient.class:?]
    	at net.minecraft.network.play.server.SPacketMultiBlockChange.processPacket(SPacketMultiBlockChange.java:70) ~[SPacketMultiBlockChange.class:?]
    	at net.minecraft.network.play.server.SPacketMultiBlockChange.processPacket(SPacketMultiBlockChange.java:15) ~[SPacketMultiBlockChange.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 15 more
    [18:37:22] [main/FATAL]: Error executing task
    java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: The value 65 is not in the specified inclusive range of 1 to 32
    	at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
    	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1161) [Minecraft.class:?]
    	at net.minecraft.client.Minecraft.run(Minecraft.java:436) [Minecraft.class:?]
    	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    	at GradleStart.main(GradleStart.java:26) [start/:?]
    Caused by: java.lang.IllegalArgumentException: The value 65 is not in the specified inclusive range of 1 to 32
    	at org.apache.commons.lang3.Validate.inclusiveBetween(Validate.java:1032) ~[commons-lang3-3.5.jar:3.5]
    	at net.minecraft.util.BitArray.<init>(BitArray.java:22) ~[BitArray.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.setBits(BlockStateContainer.java:59) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.read(BlockStateContainer.java:111) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.Chunk.read(Chunk.java:1252) ~[Chunk.class:?]
    	at net.minecraft.client.network.NetHandlerPlayClient.handleChunkData(NetHandlerPlayClient.java:819) ~[NetHandlerPlayClient.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:110) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:20) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 15 more
    [18:37:22] [main/FATAL]: Error executing task
    java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: The value 51 is not in the specified inclusive range of 1 to 32
    	at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
    	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1161) [Minecraft.class:?]
    	at net.minecraft.client.Minecraft.run(Minecraft.java:436) [Minecraft.class:?]
    	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    	at GradleStart.main(GradleStart.java:26) [start/:?]
    Caused by: java.lang.IllegalArgumentException: The value 51 is not in the specified inclusive range of 1 to 32
    	at org.apache.commons.lang3.Validate.inclusiveBetween(Validate.java:1032) ~[commons-lang3-3.5.jar:3.5]
    	at net.minecraft.util.BitArray.<init>(BitArray.java:22) ~[BitArray.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.setBits(BlockStateContainer.java:59) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.read(BlockStateContainer.java:111) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.Chunk.read(Chunk.java:1252) ~[Chunk.class:?]
    	at net.minecraft.client.network.NetHandlerPlayClient.handleChunkData(NetHandlerPlayClient.java:819) ~[NetHandlerPlayClient.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:110) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:20) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 15 more
    [18:37:23] [Server thread/FATAL]: Error executing task
    java.util.concurrent.ExecutionException: net.minecraft.util.ReportedException: Exception generating new chunk
    	at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
    	at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:795) [MinecraftServer.class:?]
    	at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:740) [MinecraftServer.class:?]
    	at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:192) [IntegratedServer.class:?]
    	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:589) [MinecraftServer.class:?]
    	at java.lang.Thread.run(Unknown Source) [?:1.8.0_131]
    Caused by: net.minecraft.util.ReportedException: Exception generating new chunk
    	at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:164) ~[ChunkProviderServer.class:?]
    	at net.minecraft.world.World.getChunkFromChunkCoords(World.java:360) ~[World.class:?]
    	at net.minecraft.world.World.getChunkFromBlockCoords(World.java:352) ~[World.class:?]
    	at net.minecraft.world.World.getBlockState(World.java:990) ~[World.class:?]
    	at net.minecraft.world.World.checkBlockCollision(World.java:2258) ~[World.class:?]
    	at net.minecraft.network.NetHandlerPlayServer.processPlayer(NetHandlerPlayServer.java:592) ~[NetHandlerPlayServer.class:?]
    	at net.minecraft.network.play.client.CPacketPlayer.processPacket(CPacketPlayer.java:36) ~[CPacketPlayer.class:?]
    	at net.minecraft.network.play.client.CPacketPlayer$Position.processPacket(CPacketPlayer.java:85) ~[CPacketPlayer$Position.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 5 more
    Caused by: java.lang.ArrayIndexOutOfBoundsException: 513
    	at harry.harrysmod.world.dimension.NormalTerrainGen.generateHeightmap(NormalTerrainGen.java:160) ~[NormalTerrainGen.class:?]
    	at harry.harrysmod.world.dimension.NormalTerrainGen.generate(NormalTerrainGen.java:169) ~[NormalTerrainGen.class:?]
    	at harry.harrysmod.world.dimension.CopperChunkGenerator.generateChunk(CopperChunkGenerator.java:43) ~[CopperChunkGenerator.class:?]
    	at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:155) ~[ChunkProviderServer.class:?]
    	at net.minecraft.world.World.getChunkFromChunkCoords(World.java:360) ~[World.class:?]
    	at net.minecraft.world.World.getChunkFromBlockCoords(World.java:352) ~[World.class:?]
    	at net.minecraft.world.World.getBlockState(World.java:990) ~[World.class:?]
    	at net.minecraft.world.World.checkBlockCollision(World.java:2258) ~[World.class:?]
    	at net.minecraft.network.NetHandlerPlayServer.processPlayer(NetHandlerPlayServer.java:592) ~[NetHandlerPlayServer.class:?]
    	at net.minecraft.network.play.client.CPacketPlayer.processPacket(CPacketPlayer.java:36) ~[CPacketPlayer.class:?]
    	at net.minecraft.network.play.client.CPacketPlayer$Position.processPacket(CPacketPlayer.java:85) ~[CPacketPlayer$Position.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 5 more
    [18:37:23] [main/FATAL]: Error executing task
    java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: The value 137 is not in the specified inclusive range of 0 to 15
    	at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
    	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1161) [Minecraft.class:?]
    	at net.minecraft.client.Minecraft.run(Minecraft.java:436) [Minecraft.class:?]
    	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    	at GradleStart.main(GradleStart.java:26) [start/:?]
    Caused by: java.lang.IllegalArgumentException: The value 137 is not in the specified inclusive range of 0 to 15
    	at org.apache.commons.lang3.Validate.inclusiveBetween(Validate.java:1032) ~[commons-lang3-3.5.jar:3.5]
    	at net.minecraft.util.BitArray.setAt(BitArray.java:35) ~[BitArray.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.set(BlockStateContainer.java:90) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.set(BlockStateContainer.java:84) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.storage.ExtendedBlockStorage.set(ExtendedBlockStorage.java:76) ~[ExtendedBlockStorage.class:?]
    	at net.minecraft.world.chunk.Chunk.setBlockState(Chunk.java:607) ~[Chunk.class:?]
    	at net.minecraft.world.World.setBlockState(World.java:398) ~[World.class:?]
    	at net.minecraft.client.multiplayer.WorldClient.invalidateRegionAndSetBlock(WorldClient.java:322) ~[WorldClient.class:?]
    	at net.minecraft.client.network.NetHandlerPlayClient.handleMultiBlockChange(NetHandlerPlayClient.java:801) ~[NetHandlerPlayClient.class:?]
    	at net.minecraft.network.play.server.SPacketMultiBlockChange.processPacket(SPacketMultiBlockChange.java:70) ~[SPacketMultiBlockChange.class:?]
    	at net.minecraft.network.play.server.SPacketMultiBlockChange.processPacket(SPacketMultiBlockChange.java:15) ~[SPacketMultiBlockChange.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 15 more
    [18:37:23] [main/FATAL]: Error executing task
    java.util.concurrent.ExecutionException: java.lang.ArrayIndexOutOfBoundsException
    	at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
    	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1161) [Minecraft.class:?]
    	at net.minecraft.client.Minecraft.run(Minecraft.java:436) [Minecraft.class:?]
    	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    	at GradleStart.main(GradleStart.java:26) [start/:?]
    Caused by: java.lang.ArrayIndexOutOfBoundsException
    [18:37:23] [main/FATAL]: Error executing task
    java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: The value 33 is not in the specified inclusive range of 1 to 32
    	at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
    	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1161) [Minecraft.class:?]
    	at net.minecraft.client.Minecraft.run(Minecraft.java:436) [Minecraft.class:?]
    	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    	at GradleStart.main(GradleStart.java:26) [start/:?]
    Caused by: java.lang.IllegalArgumentException: The value 33 is not in the specified inclusive range of 1 to 32
    	at org.apache.commons.lang3.Validate.inclusiveBetween(Validate.java:1032) ~[commons-lang3-3.5.jar:3.5]
    	at net.minecraft.util.BitArray.<init>(BitArray.java:22) ~[BitArray.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.setBits(BlockStateContainer.java:59) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.read(BlockStateContainer.java:111) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.Chunk.read(Chunk.java:1252) ~[Chunk.class:?]
    	at net.minecraft.client.network.NetHandlerPlayClient.handleChunkData(NetHandlerPlayClient.java:819) ~[NetHandlerPlayClient.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:110) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:20) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 15 more
    [18:37:23] [main/FATAL]: Error executing task
    java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: The value 119 is not in the specified inclusive range of 1 to 32
    	at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
    	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1161) [Minecraft.class:?]
    	at net.minecraft.client.Minecraft.run(Minecraft.java:436) [Minecraft.class:?]
    	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    	at GradleStart.main(GradleStart.java:26) [start/:?]
    Caused by: java.lang.IllegalArgumentException: The value 119 is not in the specified inclusive range of 1 to 32
    	at org.apache.commons.lang3.Validate.inclusiveBetween(Validate.java:1032) ~[commons-lang3-3.5.jar:3.5]
    	at net.minecraft.util.BitArray.<init>(BitArray.java:22) ~[BitArray.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.setBits(BlockStateContainer.java:59) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.read(BlockStateContainer.java:111) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.Chunk.read(Chunk.java:1252) ~[Chunk.class:?]
    	at net.minecraft.client.network.NetHandlerPlayClient.handleChunkData(NetHandlerPlayClient.java:819) ~[NetHandlerPlayClient.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:110) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:20) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 15 more
    [18:37:23] [main/FATAL]: Error executing task
    java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: The value 137 is not in the specified inclusive range of 0 to 15
    	at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
    	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1161) [Minecraft.class:?]
    	at net.minecraft.client.Minecraft.run(Minecraft.java:436) [Minecraft.class:?]
    	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    	at GradleStart.main(GradleStart.java:26) [start/:?]
    Caused by: java.lang.IllegalArgumentException: The value 137 is not in the specified inclusive range of 0 to 15
    	at org.apache.commons.lang3.Validate.inclusiveBetween(Validate.java:1032) ~[commons-lang3-3.5.jar:3.5]
    	at net.minecraft.util.BitArray.setAt(BitArray.java:35) ~[BitArray.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.set(BlockStateContainer.java:90) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.set(BlockStateContainer.java:84) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.storage.ExtendedBlockStorage.set(ExtendedBlockStorage.java:76) ~[ExtendedBlockStorage.class:?]
    	at net.minecraft.world.chunk.Chunk.setBlockState(Chunk.java:607) ~[Chunk.class:?]
    	at net.minecraft.world.World.setBlockState(World.java:398) ~[World.class:?]
    	at net.minecraft.client.multiplayer.WorldClient.invalidateRegionAndSetBlock(WorldClient.java:322) ~[WorldClient.class:?]
    	at net.minecraft.client.network.NetHandlerPlayClient.handleMultiBlockChange(NetHandlerPlayClient.java:801) ~[NetHandlerPlayClient.class:?]
    	at net.minecraft.network.play.server.SPacketMultiBlockChange.processPacket(SPacketMultiBlockChange.java:70) ~[SPacketMultiBlockChange.class:?]
    	at net.minecraft.network.play.server.SPacketMultiBlockChange.processPacket(SPacketMultiBlockChange.java:15) ~[SPacketMultiBlockChange.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 15 more
    [18:37:23] [main/FATAL]: Error executing task
    java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: The value 33 is not in the specified inclusive range of 1 to 32
    	at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
    	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1161) [Minecraft.class:?]
    	at net.minecraft.client.Minecraft.run(Minecraft.java:436) [Minecraft.class:?]
    	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    	at GradleStart.main(GradleStart.java:26) [start/:?]
    Caused by: java.lang.IllegalArgumentException: The value 33 is not in the specified inclusive range of 1 to 32
    	at org.apache.commons.lang3.Validate.inclusiveBetween(Validate.java:1032) ~[commons-lang3-3.5.jar:3.5]
    	at net.minecraft.util.BitArray.<init>(BitArray.java:22) ~[BitArray.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.setBits(BlockStateContainer.java:59) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.read(BlockStateContainer.java:111) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.Chunk.read(Chunk.java:1252) ~[Chunk.class:?]
    	at net.minecraft.client.network.NetHandlerPlayClient.handleChunkData(NetHandlerPlayClient.java:819) ~[NetHandlerPlayClient.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:110) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:20) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 15 more
    [18:37:23] [main/FATAL]: Error executing task
    java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: The value 34 is not in the specified inclusive range of 1 to 32
    	at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
    	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1161) [Minecraft.class:?]
    	at net.minecraft.client.Minecraft.run(Minecraft.java:436) [Minecraft.class:?]
    	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    	at GradleStart.main(GradleStart.java:26) [start/:?]
    Caused by: java.lang.IllegalArgumentException: The value 34 is not in the specified inclusive range of 1 to 32
    	at org.apache.commons.lang3.Validate.inclusiveBetween(Validate.java:1032) ~[commons-lang3-3.5.jar:3.5]
    	at net.minecraft.util.BitArray.<init>(BitArray.java:22) ~[BitArray.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.setBits(BlockStateContainer.java:59) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.read(BlockStateContainer.java:111) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.Chunk.read(Chunk.java:1252) ~[Chunk.class:?]
    	at net.minecraft.client.network.NetHandlerPlayClient.handleChunkData(NetHandlerPlayClient.java:819) ~[NetHandlerPlayClient.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:110) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:20) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 15 more
    [18:37:24] [main/FATAL]: Error executing task
    java.util.concurrent.ExecutionException: java.lang.IndexOutOfBoundsException: readerIndex(48500) + length(2048) exceeds writerIndex(50077): UnpooledHeapByteBuf(ridx: 48500, widx: 50077, cap: 50077/50077)
    	at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
    	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1161) [Minecraft.class:?]
    	at net.minecraft.client.Minecraft.run(Minecraft.java:436) [Minecraft.class:?]
    	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    	at GradleStart.main(GradleStart.java:26) [start/:?]
    Caused by: java.lang.IndexOutOfBoundsException: readerIndex(48500) + length(2048) exceeds writerIndex(50077): UnpooledHeapByteBuf(ridx: 48500, widx: 50077, cap: 50077/50077)
    	at io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1396) ~[AbstractByteBuf.class:4.1.9.Final]
    	at io.netty.buffer.AbstractByteBuf.checkReadableBytes(AbstractByteBuf.java:1383) ~[AbstractByteBuf.class:4.1.9.Final]
    	at io.netty.buffer.AbstractByteBuf.readBytes(AbstractByteBuf.java:850) ~[AbstractByteBuf.class:4.1.9.Final]
    	at io.netty.buffer.AbstractByteBuf.readBytes(AbstractByteBuf.java:858) ~[AbstractByteBuf.class:4.1.9.Final]
    	at net.minecraft.network.PacketBuffer.readBytes(PacketBuffer.java:1028) ~[PacketBuffer.class:?]
    	at net.minecraft.world.chunk.Chunk.read(Chunk.java:1253) ~[Chunk.class:?]
    	at net.minecraft.client.network.NetHandlerPlayClient.handleChunkData(NetHandlerPlayClient.java:819) ~[NetHandlerPlayClient.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:110) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:20) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 15 more
    [18:37:24] [main/FATAL]: Error executing task
    java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: The value 85 is not in the specified inclusive range of 1 to 32
    	at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
    	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1161) [Minecraft.class:?]
    	at net.minecraft.client.Minecraft.run(Minecraft.java:436) [Minecraft.class:?]
    	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    	at GradleStart.main(GradleStart.java:26) [start/:?]
    Caused by: java.lang.IllegalArgumentException: The value 85 is not in the specified inclusive range of 1 to 32
    	at org.apache.commons.lang3.Validate.inclusiveBetween(Validate.java:1032) ~[commons-lang3-3.5.jar:3.5]
    	at net.minecraft.util.BitArray.<init>(BitArray.java:22) ~[BitArray.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.setBits(BlockStateContainer.java:59) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.read(BlockStateContainer.java:111) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.Chunk.read(Chunk.java:1252) ~[Chunk.class:?]
    	at net.minecraft.client.network.NetHandlerPlayClient.handleChunkData(NetHandlerPlayClient.java:819) ~[NetHandlerPlayClient.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:110) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:20) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 15 more
    [18:37:24] [Server thread/FATAL]: Error executing task
    java.util.concurrent.ExecutionException: net.minecraft.util.ReportedException: Exception generating new chunk
    	at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
    	at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:795) [MinecraftServer.class:?]
    	at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:740) [MinecraftServer.class:?]
    	at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:192) [IntegratedServer.class:?]
    	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:589) [MinecraftServer.class:?]
    	at java.lang.Thread.run(Unknown Source) [?:1.8.0_131]
    Caused by: net.minecraft.util.ReportedException: Exception generating new chunk
    	at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:164) ~[ChunkProviderServer.class:?]
    	at net.minecraft.world.World.getChunkFromChunkCoords(World.java:360) ~[World.class:?]
    	at net.minecraft.world.World.getChunkFromBlockCoords(World.java:352) ~[World.class:?]
    	at net.minecraft.world.World.getBlockState(World.java:990) ~[World.class:?]
    	at net.minecraft.world.World.checkBlockCollision(World.java:2258) ~[World.class:?]
    	at net.minecraft.network.NetHandlerPlayServer.processPlayer(NetHandlerPlayServer.java:592) ~[NetHandlerPlayServer.class:?]
    	at net.minecraft.network.play.client.CPacketPlayer.processPacket(CPacketPlayer.java:36) ~[CPacketPlayer.class:?]
    	at net.minecraft.network.play.client.CPacketPlayer$Position.processPacket(CPacketPlayer.java:85) ~[CPacketPlayer$Position.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 5 more
    Caused by: java.lang.ArrayIndexOutOfBoundsException: 513
    	at harry.harrysmod.world.dimension.NormalTerrainGen.generateHeightmap(NormalTerrainGen.java:160) ~[NormalTerrainGen.class:?]
    	at harry.harrysmod.world.dimension.NormalTerrainGen.generate(NormalTerrainGen.java:169) ~[NormalTerrainGen.class:?]
    	at harry.harrysmod.world.dimension.CopperChunkGenerator.generateChunk(CopperChunkGenerator.java:43) ~[CopperChunkGenerator.class:?]
    	at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:155) ~[ChunkProviderServer.class:?]
    	at net.minecraft.world.World.getChunkFromChunkCoords(World.java:360) ~[World.class:?]
    	at net.minecraft.world.World.getChunkFromBlockCoords(World.java:352) ~[World.class:?]
    	at net.minecraft.world.World.getBlockState(World.java:990) ~[World.class:?]
    	at net.minecraft.world.World.checkBlockCollision(World.java:2258) ~[World.class:?]
    	at net.minecraft.network.NetHandlerPlayServer.processPlayer(NetHandlerPlayServer.java:592) ~[NetHandlerPlayServer.class:?]
    	at net.minecraft.network.play.client.CPacketPlayer.processPacket(CPacketPlayer.java:36) ~[CPacketPlayer.class:?]
    	at net.minecraft.network.play.client.CPacketPlayer$Position.processPacket(CPacketPlayer.java:85) ~[CPacketPlayer$Position.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 5 more
    [18:37:24] [main/FATAL]: Error executing task
    java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: The value 129 is not in the specified inclusive range of 0 to 15
    	at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
    	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1161) [Minecraft.class:?]
    	at net.minecraft.client.Minecraft.run(Minecraft.java:436) [Minecraft.class:?]
    	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    	at GradleStart.main(GradleStart.java:26) [start/:?]
    Caused by: java.lang.IllegalArgumentException: The value 129 is not in the specified inclusive range of 0 to 15
    	at org.apache.commons.lang3.Validate.inclusiveBetween(Validate.java:1032) ~[commons-lang3-3.5.jar:3.5]
    	at net.minecraft.util.BitArray.setAt(BitArray.java:35) ~[BitArray.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.set(BlockStateContainer.java:90) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.set(BlockStateContainer.java:84) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.storage.ExtendedBlockStorage.set(ExtendedBlockStorage.java:76) ~[ExtendedBlockStorage.class:?]
    	at net.minecraft.world.chunk.Chunk.setBlockState(Chunk.java:607) ~[Chunk.class:?]
    	at net.minecraft.world.World.setBlockState(World.java:398) ~[World.class:?]
    	at net.minecraft.client.multiplayer.WorldClient.invalidateRegionAndSetBlock(WorldClient.java:322) ~[WorldClient.class:?]
    	at net.minecraft.client.network.NetHandlerPlayClient.handleMultiBlockChange(NetHandlerPlayClient.java:801) ~[NetHandlerPlayClient.class:?]
    	at net.minecraft.network.play.server.SPacketMultiBlockChange.processPacket(SPacketMultiBlockChange.java:70) ~[SPacketMultiBlockChange.class:?]
    	at net.minecraft.network.play.server.SPacketMultiBlockChange.processPacket(SPacketMultiBlockChange.java:15) ~[SPacketMultiBlockChange.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 15 more
    [18:37:24] [main/FATAL]: Error executing task
    java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: The value 85 is not in the specified inclusive range of 1 to 32
    	at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
    	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1161) [Minecraft.class:?]
    	at net.minecraft.client.Minecraft.run(Minecraft.java:436) [Minecraft.class:?]
    	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    	at GradleStart.main(GradleStart.java:26) [start/:?]
    Caused by: java.lang.IllegalArgumentException: The value 85 is not in the specified inclusive range of 1 to 32
    	at org.apache.commons.lang3.Validate.inclusiveBetween(Validate.java:1032) ~[commons-lang3-3.5.jar:3.5]
    	at net.minecraft.util.BitArray.<init>(BitArray.java:22) ~[BitArray.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.setBits(BlockStateContainer.java:59) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.read(BlockStateContainer.java:111) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.Chunk.read(Chunk.java:1252) ~[Chunk.class:?]
    	at net.minecraft.client.network.NetHandlerPlayClient.handleChunkData(NetHandlerPlayClient.java:819) ~[NetHandlerPlayClient.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:110) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:20) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 15 more
    [18:37:24] [main/FATAL]: Error executing task
    java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: The value 85 is not in the specified inclusive range of 1 to 32
    	at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
    	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1161) [Minecraft.class:?]
    	at net.minecraft.client.Minecraft.run(Minecraft.java:436) [Minecraft.class:?]
    	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    	at GradleStart.main(GradleStart.java:26) [start/:?]
    Caused by: java.lang.IllegalArgumentException: The value 85 is not in the specified inclusive range of 1 to 32
    	at org.apache.commons.lang3.Validate.inclusiveBetween(Validate.java:1032) ~[commons-lang3-3.5.jar:3.5]
    	at net.minecraft.util.BitArray.<init>(BitArray.java:22) ~[BitArray.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.setBits(BlockStateContainer.java:59) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.read(BlockStateContainer.java:111) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.Chunk.read(Chunk.java:1252) ~[Chunk.class:?]
    	at net.minecraft.client.network.NetHandlerPlayClient.handleChunkData(NetHandlerPlayClient.java:819) ~[NetHandlerPlayClient.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:110) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:20) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 15 more
    [18:37:24] [main/FATAL]: Error executing task
    java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: The value 130 is not in the specified inclusive range of 0 to 15
    	at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
    	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1161) [Minecraft.class:?]
    	at net.minecraft.client.Minecraft.run(Minecraft.java:436) [Minecraft.class:?]
    	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    	at GradleStart.main(GradleStart.java:26) [start/:?]
    Caused by: java.lang.IllegalArgumentException: The value 130 is not in the specified inclusive range of 0 to 15
    	at org.apache.commons.lang3.Validate.inclusiveBetween(Validate.java:1032) ~[commons-lang3-3.5.jar:3.5]
    	at net.minecraft.util.BitArray.setAt(BitArray.java:35) ~[BitArray.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.set(BlockStateContainer.java:90) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.set(BlockStateContainer.java:84) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.storage.ExtendedBlockStorage.set(ExtendedBlockStorage.java:76) ~[ExtendedBlockStorage.class:?]
    	at net.minecraft.world.chunk.Chunk.setBlockState(Chunk.java:607) ~[Chunk.class:?]
    	at net.minecraft.world.World.setBlockState(World.java:398) ~[World.class:?]
    	at net.minecraft.client.multiplayer.WorldClient.invalidateRegionAndSetBlock(WorldClient.java:322) ~[WorldClient.class:?]
    	at net.minecraft.client.network.NetHandlerPlayClient.handleMultiBlockChange(NetHandlerPlayClient.java:801) ~[NetHandlerPlayClient.class:?]
    	at net.minecraft.network.play.server.SPacketMultiBlockChange.processPacket(SPacketMultiBlockChange.java:70) ~[SPacketMultiBlockChange.class:?]
    	at net.minecraft.network.play.server.SPacketMultiBlockChange.processPacket(SPacketMultiBlockChange.java:15) ~[SPacketMultiBlockChange.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 15 more
    [18:37:24] [main/FATAL]: Error executing task
    java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: The value 146 is not in the specified inclusive range of 0 to 15
    	at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
    	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1161) [Minecraft.class:?]
    	at net.minecraft.client.Minecraft.run(Minecraft.java:436) [Minecraft.class:?]
    	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    	at GradleStart.main(GradleStart.java:26) [start/:?]
    Caused by: java.lang.IllegalArgumentException: The value 146 is not in the specified inclusive range of 0 to 15
    	at org.apache.commons.lang3.Validate.inclusiveBetween(Validate.java:1032) ~[commons-lang3-3.5.jar:3.5]
    	at net.minecraft.util.BitArray.setAt(BitArray.java:35) ~[BitArray.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.set(BlockStateContainer.java:90) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.set(BlockStateContainer.java:84) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.storage.ExtendedBlockStorage.set(ExtendedBlockStorage.java:76) ~[ExtendedBlockStorage.class:?]
    	at net.minecraft.world.chunk.Chunk.setBlockState(Chunk.java:607) ~[Chunk.class:?]
    	at net.minecraft.world.World.setBlockState(World.java:398) ~[World.class:?]
    	at net.minecraft.client.multiplayer.WorldClient.invalidateRegionAndSetBlock(WorldClient.java:322) ~[WorldClient.class:?]
    	at net.minecraft.client.network.NetHandlerPlayClient.handleMultiBlockChange(NetHandlerPlayClient.java:801) ~[NetHandlerPlayClient.class:?]
    	at net.minecraft.network.play.server.SPacketMultiBlockChange.processPacket(SPacketMultiBlockChange.java:70) ~[SPacketMultiBlockChange.class:?]
    	at net.minecraft.network.play.server.SPacketMultiBlockChange.processPacket(SPacketMultiBlockChange.java:15) ~[SPacketMultiBlockChange.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 15 more
    [18:37:24] [main/FATAL]: Error executing task
    java.util.concurrent.ExecutionException: java.lang.ArrayIndexOutOfBoundsException
    	at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
    	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1161) [Minecraft.class:?]
    	at net.minecraft.client.Minecraft.run(Minecraft.java:436) [Minecraft.class:?]
    	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    	at GradleStart.main(GradleStart.java:26) [start/:?]
    Caused by: java.lang.ArrayIndexOutOfBoundsException
    [18:37:24] [main/FATAL]: Error executing task
    java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: The value 99 is not in the specified inclusive range of 1 to 32
    	at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
    	at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1161) [Minecraft.class:?]
    	at net.minecraft.client.Minecraft.run(Minecraft.java:436) [Minecraft.class:?]
    	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
    	at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    	at GradleStart.main(GradleStart.java:26) [start/:?]
    Caused by: java.lang.IllegalArgumentException: The value 99 is not in the specified inclusive range of 1 to 32
    	at org.apache.commons.lang3.Validate.inclusiveBetween(Validate.java:1032) ~[commons-lang3-3.5.jar:3.5]
    	at net.minecraft.util.BitArray.<init>(BitArray.java:22) ~[BitArray.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.setBits(BlockStateContainer.java:59) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.BlockStateContainer.read(BlockStateContainer.java:111) ~[BlockStateContainer.class:?]
    	at net.minecraft.world.chunk.Chunk.read(Chunk.java:1252) ~[Chunk.class:?]
    	at net.minecraft.client.network.NetHandlerPlayClient.handleChunkData(NetHandlerPlayClient.java:819) ~[NetHandlerPlayClient.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:110) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.play.server.SPacketChunkData.processPacket(SPacketChunkData.java:20) ~[SPacketChunkData.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 15 more
    [18:37:25] [Server thread/FATAL]: Error executing task
    java.util.concurrent.ExecutionException: net.minecraft.util.ReportedException: Exception generating new chunk
    	at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
    	at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:795) [MinecraftServer.class:?]
    	at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:740) [MinecraftServer.class:?]
    	at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:192) [IntegratedServer.class:?]
    	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:589) [MinecraftServer.class:?]
    	at java.lang.Thread.run(Unknown Source) [?:1.8.0_131]
    Caused by: net.minecraft.util.ReportedException: Exception generating new chunk
    	at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:164) ~[ChunkProviderServer.class:?]
    	at net.minecraft.world.World.getChunkFromChunkCoords(World.java:360) ~[World.class:?]
    	at net.minecraft.world.World.getChunkFromBlockCoords(World.java:352) ~[World.class:?]
    	at net.minecraft.world.World.getBlockState(World.java:990) ~[World.class:?]
    	at net.minecraft.world.World.checkBlockCollision(World.java:2258) ~[World.class:?]
    	at net.minecraft.network.NetHandlerPlayServer.processPlayer(NetHandlerPlayServer.java:592) ~[NetHandlerPlayServer.class:?]
    	at net.minecraft.network.play.client.CPacketPlayer.processPacket(CPacketPlayer.java:36) ~[CPacketPlayer.class:?]
    	at net.minecraft.network.play.client.CPacketPlayer$Position.processPacket(CPacketPlayer.java:85) ~[CPacketPlayer$Position.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
    	... 5 more
    Caused by: java.lang.ArrayIndexOutOfBoundsException: 513
    	at harry.harrysmod.world.dimension.NormalTerrainGen.generateHeightmap(NormalTerrainGen.java:160) ~[NormalTerrainGen.class:?]
    	at harry.harrysmod.world.dimension.NormalTerrainGen.generate(NormalTerrainGen.java:169) ~[NormalTerrainGen.class:?]
    	at harry.harrysmod.world.dimension.CopperChunkGenerator.generateChunk(CopperChunkGenerator.java:43) ~[CopperChunkGenerator.class:?]
    	at net.minecraft.world.gen.ChunkProviderServer.provideChunk(ChunkProviderServer.java:155) ~[ChunkProviderServer.class:?]
    	at net.minecraft.world.World.getChunkFromChunkCoords(World.java:360) ~[World.class:?]
    	at net.minecraft.world.World.getChunkFromBlockCoords(World.java:352) ~[World.class:?]
    	at net.minecraft.world.World.getBlockState(World.java:990) ~[World.class:?]
    	at net.minecraft.world.World.checkBlockCollision(World.java:2258) ~[World.class:?]
    	at net.minecraft.network.NetHandlerPlayServer.processPlayer(NetHandlerPlayServer.java:592) ~[NetHandlerPlayServer.class:?]
    	at net.minecraft.network.play.client.CPacketPlayer.processPacket(CPacketPlayer.java:36) ~[CPacketPlayer.class:?]
    	at net.minecraft.network.play.client.CPacketPlayer$Position.processPacket(CPacketPlayer.java:85) ~[CPacketPlayer$Position.class:?]
    	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
    	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_131]
    	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_131]
    	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]

     

  8. Block Init: 

    tutorial_slab_half = new CustomBlockHalfSlab("tutorial_slab_half", 2.5F, 4.5F);
    tutorial_slab_double = new CustomBlockDoubleSlab("tutorial_slab_double", 2.5F, 4.5F);
    
    registerBlock(tutorial_slab_half, new ItemSlab(tutorial_slab_half, tutorial_slab_half, tutorial_slab_double));
    ForgeRegistries.BLOCKS.register(tutorial_slab_double);
    
    public static void registerBlock(Block block, ItemBlock itemblock)
    	{
    		ForgeRegistries.BLOCKS.register(block);
    		block.setCreativeTab(TutorialMod.tutorialtab);
    		itemblock.setRegistryName(block.getRegistryName());
    		ForgeRegistries.ITEMS.register(itemblock);
    		
    		ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(block), 0, new ModelResourceLocation(block.getRegistryName(), "inventory"));
    	}

     

  9. As the title says, the game won't let me place by custom slab on the bottom if top is already placed. Here is my custom slab class. I do have the CustomBlockHalfSlab and DoubleSlab classes as well. Thanks in advance

    public abstract class CustomBlockSlab extends BlockSlab
    {
    	public CustomBlockSlab(String name, float hardness, float resistance)
    	{
    		super(Material.IRON);
    		setUnlocalizedName(name);
    		setRegistryName(name);
    		setHardness(hardness);
    		setResistance(resistance);
    		
    		this.fullBlock = this.isDouble();
    		IBlockState state = this.blockState.getBaseState();
    		
    		if(!this.isDouble())
    		{
    			state = state.withProperty(HALF, EnumBlockHalf.BOTTOM);
    		}
    		
    		setDefaultState(state);
    		this.useNeighborBrightness = true;
    	}
    	
    	@Override
    	public String getUnlocalizedName(int meta) 
    	{
    		return this.getUnlocalizedName();
    	}
    
    	@Override
    	public IProperty<?> getVariantProperty() 
    	{
    		return HALF;
    	}
    	
    	@Override
    	public Comparable<?> getTypeForItem(ItemStack stack)
    	{
    		return EnumBlockHalf.BOTTOM;
    	}
    	
    	@Override
    	public int damageDropped(IBlockState state) 
    	{
    		return 0;
    	}
    	
    	@Override
    	public IBlockState getStateFromMeta(int meta) 
    	{
    		if(!this.isDouble())
    		{
    			return this.getDefaultState().withProperty(HALF, EnumBlockHalf.values()[meta % EnumBlockHalf.values().length]);
    		}
    		return this.getDefaultState();
    	}
    	
    	@Override
    	public int getMetaFromState(IBlockState state) 
    	{
    		if(this.isDouble())
    		{
    			return 0;
    		}
    		
    		return ((EnumBlockHalf)state.getValue(HALF)).ordinal() + 1;
    	}
    	
    	@Override
    	public Item getItemDropped(IBlockState state, Random rand, int fortune) 
    	{
    		return Item.getItemFromBlock(BlockInit.tutorial_slab_half);
    	}
    	
    	@Override
    	protected BlockStateContainer createBlockState() 
    	{
    		return new BlockStateContainer(this, new IProperty[] {HALF});
    	}
    	
    	@Override
    	public IBlockState getStateForPlacement(World world, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer, EnumHand hand) 
    	{
    		return super.getStateForPlacement(world, pos, facing, hitX, hitY, hitZ, meta, placer, hand);
    	}

     

  10. I have been working on custom trees and know how to add a block anywhere I want but it seems like there is probably a much better way of doing it. Thought more experienced people might be able to compact it a bit. Thanks in advance

     

    int branchHeight = 4;
                	for(int branchLength = 0; branchLength < 3; branchLength++)
                	{
                		BlockPos north = pos.north(branchLength);
                		BlockPos east = pos.east(branchLength);
                		BlockPos south = pos.south(branchLength);
                		BlockPos west = pos.west(branchLength);
                		
                		IBlockState nState = world.getBlockState(north);
                		IBlockState eState = world.getBlockState(east);
                		IBlockState sState = world.getBlockState(south);
                		IBlockState wState = world.getBlockState(west);
                		
                		if (nState.getBlock().isAir(nState, world, north) || nState.getBlock().isLeaves(nState, world, north))
                        {
                            this.setBlockAndNotifyAdequately(world, pos.north(branchLength).up(branchHeight), LOG);
                        }
                		if (eState.getBlock().isAir(eState, world, east) || eState.getBlock().isLeaves(eState, world, east))
                        {
                            this.setBlockAndNotifyAdequately(world, pos.east(branchLength).up(branchHeight), LOG);
                        }
                		if (sState.getBlock().isAir(sState, world, south) || sState.getBlock().isLeaves(sState, world, south))
                        {
                            this.setBlockAndNotifyAdequately(world, pos.south(branchLength).up(branchHeight), LOG);
                        }
                		if (wState.getBlock().isAir(wState, world, west) || wState.getBlock().isLeaves(wState, world, west))
                        {
                            this.setBlockAndNotifyAdequately(world, pos.west(branchLength).up(branchHeight), LOG);
                        }
                		
                	}

     

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.