Skip to content

Instantly share code, notes, and snippets.

@ElvishJerricco
Created July 7, 2015 00:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ElvishJerricco/8cdb03ce816f15a39547 to your computer and use it in GitHub Desktop.
Save ElvishJerricco/8cdb03ce816f15a39547 to your computer and use it in GitHub Desktop.
Part Factories with Enums
public class PartFactoryOfEnum<E extends Enum<E> & IEnumPartFactory> implements MultiPartRegistry.IPartFactory2 {
private final Class<E> enumClass;
private final String[] types;
private final Map<String, E> typesToParts = new HashMap<String, E>();
public PartFactoryOfEnum(Class<E> enumClass) {
this.enumClass = enumClass;
E[] enumConstants = enumClass.getEnumConstants();
this.types = new String[enumConstants.length];
for (E part : enumConstants) {
String name = part.getPartType();
this.types[part.ordinal()] = name;
this.typesToParts.put(name, part);
}
}
@Override
public TMultiPart createPart(String type, NBTTagCompound nbt) {
return typesToParts.get(type).createPart(nbt);
}
@Override
public TMultiPart createPart(String type, MCDataInput packet) {
return typesToParts.get(type).createPart(packet);
}
public String[] getPartTypes() {
return types;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment