static private DamageCause[] getTypes() {
		if (typecache != null) return typecache;
		
		List<DamageCause> causes = new ArrayList<DamageCause>();
		Field[] materialFields = DamageCause.class.getFields();
		
		for (Field f : materialFields) {
			try {
				Object got = f.get(null);
				if (got instanceof DamageCause) {
					if (got == DamageCause.CUSTOM || got == DamageCause.MELTING || got == DamageCause.FIRE_TICK || got == DamageCause.VOID || got == DamageCause.SUICIDE) continue;
					
					causes.add((DamageCause) f.get(null));
				}
			} catch (Exception ex) {}
		}
		
		typecache = causes.toArray(new DamageCause[0]);
		return typecache;
	}