I am attempting to rework the type system for inheritance.

I realized looking through the Minecraft code that lots of Minecraft type
parts -- especially Entities -- will have to be divided into groups in
many different ways. If we kept using enums for all our types, then we
would have to remake all the methods from each inherited type and come up
with some kind of parent-child relationships and all sorts of crazy stuff
for things like MobTypes, which are all derived from EntityTypes. So,
instead, I decided to embark on a journey to rework the typing system using
a kind of pseudo-enum system (with values() and all that implemented in
abstract classes and enum values implemented as public static final
variables). That way, we will be able to make our types inherit properties
from more general types so MobTypes can inherit properties from EntityTypes,
for example.

There are still bugs here and this build is not yet compilable. That's why
I put it in a separate branch. If it fails, we still have the rest of the
old code. If it works, I'll merge it into master when it's done.

Signed-off-by: REALDrummer <conman.davey@gmail.com>
[WIP] I've continued work on making Type classes extendable.


I was having trouble figuring out a good way to store and handle value sets
for each subclass since the values would have to be static, but for each
subclass, which is problematic since static things can't be inherited.
I resolved it by creating a static HashMap<Class, IDedType[]> in
IDedType.class. Now each subclass can have its own array of appropriate
values associated with its class. Java Reflection can be so useful.

As the "[WIP]" tag indicates, this is still a work in progress and it
should be noted that there are still compilation errors with this setup.
I'm working to fix it.

Signed-off-by: REALDrummer <conman.davey@gmail.com>
[WIP] I finished IDedType and IDedTypeWithData and started converting types.

I worked out all the issues with IDedType and IDedTypeWithData abstract
classes. I'm still in the process of cconverting all the Type classes to
the new format, but it shouldn't be that difficult, especially thanks to
Eclipse's regex search and replace that lets me use only two "Replace All"s
to convert all the enumerated types to public static final constructor
calls.

Signed-off-by: REALDrummer <conman.davey@gmail.com>
I finished the conversion of types to IDedType classes.

I finished converting all our type enums to classes that extend IDedType.
However, there are still some things left to do before these classes will
be fully functional like adding a String name parameter to the IDedType
constructor and all child constructors, then filling names for all the
types in all the type classes. (I'm not looking forward to that.)

Also, I realized that I can simply make type classes static and make them
inner classes again, so I re-integrated them as static classes into their
respective instance classes (e.g. BlockType is now inside Block).

I also moved IDedType and its abstract subclasses out of Corundum.utils.
interfaces because they are no longer interfaces; I moved them into their
own package called "Corundum.types".

Finally, I renamed IDTypedObject "TypedObject" because all types are IDed,
so the "ID" part of the name was redundant.

Signed-off-by: REALDrummer <conman.davey@gmail.com>
I removed a line.

Signed-off-by: REALDrummer <conman.davey@gmail.com>
I resolved merge conflicts in Entity and fixed some issues in Entity.

Entity had a lot of merge conflicts while merging the type_abstract_classes
branch, but I fixed them.

However, there were some other issues with Entity that I also resolved that
had to do with the nature of Entities. Classes in Corundum that represent
Minecraft objects should not contain their own information; they are only
wrappers for Minecraft objects (which will be obfuscated and are confusing
to use anyway). All getters and setters should only be calling the
analogous getters and setters in the Minecraft code (with some changes to
integrate with the Corundum A.P.I. better).

Signed-off-by: REALDrummer <conman.davey@gmail.com>