I don't really see any errors in your logs. If you did everything correctly you should be able to open the Minecraft project by opening Eclipse and switching the workplace to the forge/mcp/eclipse folder. From there you can just run the project to compile and launch Minecraft.
When you are holding it in your hand it is an item which you can render differently using class implementing IItemRenderer. I'm guessing you have that part down.
When you release the mouse button it spawns an entity which again needs its own custom render class (just extending Render).
In there it is just a matter of rendering the model and applying any needed rotations and whatnot.
You could take a look at the RenderArrow class. You basically just need to do the same thing only instead of all the tessellator stuff you just call your model's render function.
Finally don't forget to register both the item and the entity render classes ^^.
Remove all the code in onLivingUpdate and just add the EntityAIAvoidEntity behaviour to the constructor like the other tasks.
Create your own custom versions of the Avoid and Attack behaviours that are basically copies except for an additional check in their shouldExecute/continueExecuting functions to see if their .getAttackTarget() is a player holding the ectoplasm, then return true or false depending on if that behaviour should fire or stop executing while the player is holding that item.
It's probably better to not add and remove tasks on the fly. Instead I'd just add both and on their shouldExecute/continueExecuting functions check if the attack target is valid, a player, and if it's holding the ectoplasm. If so return true or false depending on if that behavior should start or end.
Brb copying exceptionally useful code.
Anyways, use metadata. i.e. have the 'dye' object contain all the different colors you want with each their own metadata, spawn the submarine and parse the metadata. Use the same coloring for the submarine.
Have you called GameRegistry.registerWorldGenerator in your mod file? How is it not working? Is the generate function getting called?
The code in the forge tutorial should create a wooden block very high up in the sky (y=100) per chunk. This is of course kind of basic and probably not very useful. The way Minecraft generates most of its stuff is with some logic, which is written in the different WorldGenerator subclasses.
For instance a common one is the WorldGeneratorMinable, which takes the block id and the vein size as its arguments. If you then call the generate function on that object in your IWorldGenerator generate function it will attempt to generate a vein at the xyz coordinates you pass it. If you want to generate more veins per chunk you just put a for loop in the generate function.
Unless you are after some very specific generation logic you probably don't have to write your own WorldGenerator and can just reuse some of the vanilla ones.
You aren't creating a Minecraft instance, you are just getting the singleton instance. It's also a bit silly that you have a variable to hold the minecraft instance but then you never assign or use it .