mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-27 11:27:35 +01:00
Warn on strange @EventHandler return types
This commit is contained in:
parent
233a293cd1
commit
91a7982c46
@ -51,6 +51,12 @@ public interface EventExecutor {
|
|||||||
Preconditions.checkArgument(m.getParameterCount() != 0, "Incorrect number of arguments %s", m.getParameterCount());
|
Preconditions.checkArgument(m.getParameterCount() != 0, "Incorrect number of arguments %s", m.getParameterCount());
|
||||||
Preconditions.checkArgument(m.getParameterTypes()[0] == eventClass, "First parameter %s doesn't match event class %s", m.getParameterTypes()[0], eventClass);
|
Preconditions.checkArgument(m.getParameterTypes()[0] == eventClass, "First parameter %s doesn't match event class %s", m.getParameterTypes()[0], eventClass);
|
||||||
ClassDefiner definer = ClassDefiner.getInstance();
|
ClassDefiner definer = ClassDefiner.getInstance();
|
||||||
|
if (m.getReturnType() != Void.TYPE) {
|
||||||
|
final org.bukkit.plugin.java.JavaPlugin plugin = org.bukkit.plugin.java.JavaPlugin.getProvidingPlugin(m.getDeclaringClass());
|
||||||
|
org.bukkit.Bukkit.getLogger().warning("@EventHandler method " + m.getDeclaringClass().getName() + (Modifier.isStatic(m.getModifiers()) ? '.' : '#') + m.getName()
|
||||||
|
+ " returns non-void type " + m.getReturnType().getName() + ". This is unsupported behavior and will no longer work in a future version of Paper."
|
||||||
|
+ " This should be reported to the developers of " + plugin.getPluginMeta().getDisplayName() + " (" + String.join(",", plugin.getPluginMeta().getAuthors()) + ')');
|
||||||
|
}
|
||||||
if (Modifier.isStatic(m.getModifiers())) {
|
if (Modifier.isStatic(m.getModifiers())) {
|
||||||
return new StaticMethodHandleEventExecutor(eventClass, m);
|
return new StaticMethodHandleEventExecutor(eventClass, m);
|
||||||
} else if (definer.isBypassAccessChecks() || Modifier.isPublic(m.getDeclaringClass().getModifiers()) && Modifier.isPublic(m.getModifiers())) {
|
} else if (definer.isBypassAccessChecks() || Modifier.isPublic(m.getDeclaringClass().getModifiers()) && Modifier.isPublic(m.getModifiers())) {
|
||||||
|
Loading…
Reference in New Issue
Block a user