There are a lot of free resources online, but like NujumKey said
and great news there are online classes available for free too:
Class central is a good starting point from selecting classes https://www.class-central.com/
Same for Coursera https://www.coursera.org/
Many well to do universities offer OpenCourseWare Harvard http://cs50.tv/2013/fall/
MIT http://ocw.mit.edu/index.htm
Yale http://oyc.yale.edu/
Stanford http://see.stanford.edu/see/courses.aspx
Not only should you know about the language itself (variables, control statements, etc.), you should learn about its design paradigm (e.g. object-oriented, imperative, etc.). And don't forget to check out courses that cover data structures and algorithm analysis (these are the most important IMHO and as a computer scientist). Plus knowing mathematics like linear algebra, set theory, and computational theory will help but isn't strictly required (though more math = more power [muhaha]). Also anything about clean code, effective java, and a splash of documentation goes a long way.
There is a lot to know, so take it in strides. Personally, I started learning this about 6 years ago. Only recently did I want to do something for Minecraft.
Good luck, have fun!