А как мне получить C?laz2727 написал(а):C.method();
1. Да, именно так.anti344 написал(а):1 Если ты имел ввиду, что древо такое A <- B <- C <- Object, то так и скажи.
2 Есоли я прав, то мооооооооожет быть(не уверен, вряд-ли), super.super.method()?
public void onUpdate(){
super.onUpdate();
if (!worldObj.isRemote && worldObj.difficultySetting == 0){
this.setDead();
}
}
public Method getMethod(Class<?> c, String name) throws NoSuchFieldException {
try {
return c.getDeclaredMethod(name, new Class[] {});
}
catch (NoSuchMethodException exc) {
if (c == Object.class) {
throw exc;
}
return getMethod(c.getSuperclass());
}
}
<...>
void somewhere() {
try {
getMethod(EntityLiving.class, "onUpdate").invoke(myEntity, new Object[] {});
}
catch (IllegalArgumentException e) {}
catch (IllegalAccessException e) {}
catch (InvocationTargetException e) {
}
}
B туеву кучу кода копировать?Dragon2488 написал(а):Используй EntityCreature и IMob
try{
EntityLiving.class.getDeclaredMethod("onUpdate", new Class[]{}).invoke(this, new Object[]{});
}catch(NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e){
e.printStackTrace();
}
Пичально(Oldestkon написал(а):Чтобы не проседал фпс - очевидно, сохраняй этот метод. Нельзя же его каждый тик доставать. При инициализации загрузил - потом делаешь invoke напрямую.
А насчет работоспособности было предсказуемо, ну что, я попытался всё же.
Джаве, видимо, совсем не нравится игнорить перезаписанные чайлдами методы.