潜伏已久,第一次发帖。我试过搜索,但找不到任何东西可以解决我的问题。
基本上,我正在为游戏模组编写一个插件,以便为闭源模组添加更多功能。由于它已关闭,并且最初的开发者是日本人,我认为反射可能是我最好的选择。
我能够获得我需要的类中所有字段的数组,但我无法获得任何字段的值。我需要获取“currentThrottle”值,以便在实体移动时(并且仅在它移动时)做一些事情
这是我当前的代码。我不知道为什么它不起作用,因为如您所见,我使用 if 语句来确保该字段确实存在,然后它仍然告诉我找不到它。
最后说明;我在 Java 方面完全是自学的,我所知道的一切都来自阅读这样的论坛,然后潜入并使用它;这是我学习的最好方法。所以,如果这里有任何非常糟糕的做法,请告诉我:)
Class planeClass = Class.forName("mcheli.plane.MCP_EntityPlane");
Field[] fields = planeClass.getFields();
//Some other irrelevant code
for (Field field2 : fields) {
String name = field2.getName();
if (name.contains("currentThrottle")) {
System.out.println("name: " + name);
try {
field = baseClass.getClass().getField(name);
field.setAccessible(true);
Class<?> targetType = field.getType();
Object objValue = targetType.newInstance();
Object value = field.get(objValue);
System.out.println("Throttle: " + value);
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}