public void convert(StoredMyPet pet) {
Version fromVersion = Version.v1_7_R4;
TagCompound info = pet.getInfo();
if (info.containsKey("Version")) {
if (info.containsKeyAs("Version", TagString.class)) {
fromVersion = Version.valueOf(info.getAs("Version", TagString.class).getStringData());
} else if (info.containsKeyAs("Version", TagInt.class)) {
fromVersion = Version.values()[info.getAs("Version", TagInt.class).getIntData() + 1];
} else {
fromVersion = Version.values()[info.getAs("Version", TagShort.class).getShortData()];
}
}
for (Version v : Version.values()) {
if (v.ordinal() <= fromVersion.ordinal()) {
continue;
}
if (v.ordinal() > toVersion.ordinal()) {
break;
}
try {
Method m = this.getClass().getDeclaredMethod(v.name(), StoredMyPet.class);
m.invoke(this, pet);
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ignored) {
}
}
}
}