Unfortunately it's kind of hard to gauge how much is 'enough'.
Ideally, you'd have an understanding of:
Classes
Methods
Primitive types (boolean, int, short, long, float, char, as well as String)
Inheritance (extending classes and also using interfaces)
Basic data structures (Arrays, Lists, etc)
Using Public/Private/Final/etc modifiers for methods and variables when appropriate
If, For, Else, While, Do, Switch statements - How they work and when to use them
Recursive methods (which can save you a lot of coding)
Basic logic (!= not equal, && and, || or, == equal, etc)
Some understanding of packets, hopefully
I've probably missed a bunch here, but that's what springs to mind. A lot of it you can learn on the way while poking through vanilla Minecraft classes. Once you wrap your head around certain Minecraft-specific things (Blocks have an associated TileEntity, that TileEntity can implement a Container, that Container can implement Slots, and the whole shebang can be looked at with a GUI activated by the block), things tend to make more sense.
I first dealt with Java while doing Minecraft modding, now I've come back after taking University classes on the subject. A lot of what we covered in the introductory courses I had already learned just from playing around with Forge for a week.
And remember, Google is your friend. There are plenty of good online tutorials for learning the basics of Java.