Try to reproduce the error without any mods to exclude Forge from the possible issues.
Also, update. 1.8.9 is old and will stop getting support on this forums soon.
Simply changing the name won't change the value. This is basic Java.
You should convert the chunk coordinates to block coordinates by using chunkX << 4. The same for chunkZ.
If you were to look at the code the vanilla compass uses to determine the user's bed location (AKA the spawnpoint of the user), you could see you can use World#getSpawnPoint to get the client player's spawnpoint.
You can use the PlayerInteractEvent.RightClickItem to detect when the player is right clicking an Item at empty space. If you want to detect the player using an Item on a Block, use the PlayerInteractEvent.RightClickBlock.
EntityList.ENTITY_EGGS is a Map<ResourceLocation, EntityEggInfo>. Get the EntityEggInfo for an Entity by using an Entity's registry ResourceLocation. Look at ItemMonsterPlacer#getSubItems on how to get a spawn egg ItemStack to add to your creative tab.
Well, you never declare generateIn anywhere...
You do however have a variable called blockspawn, of which you need to make a Predicate<IBlockState> and pass that instead of generateIn. You can use BlockMatcher.forBlock(Block) to create a Predicate<IBlocKState>.
it's either an issue with CustomNPCs, or a coremod messing with the EntityTracker. Try running the game without coremods (SpongeCoremod and CreativePatchingLoader).