SteamWar/SpigotCore
Archiviert
13
0
Dieser Commit ist enthalten in:
yoyosource 2021-05-25 12:49:38 +02:00
Ursprung e09fc62bb2
Commit 6859d9bc10

Datei anzeigen

@ -28,6 +28,7 @@ import org.bukkit.scheduler.BukkitRunnable;
import java.lang.annotation.*; import java.lang.annotation.*;
import java.lang.reflect.*; import java.lang.reflect.*;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.BiConsumer; import java.util.function.BiConsumer;
import java.util.function.BiFunction; import java.util.function.BiFunction;
import java.util.function.IntPredicate; import java.util.function.IntPredicate;
@ -151,16 +152,19 @@ public abstract class SWCommand {
if (!field.getType().getTypeName().equals("de.steamwar.message.Message")) { if (!field.getType().getTypeName().equals("de.steamwar.message.Message")) {
return; return;
} }
Object o = Modifier.isStatic(field.getModifiers()) ? field.get(null) : field.get(this); AtomicReference<Object> o = new AtomicReference<>(null);
Method method = o.getClass().getMethod("parse"); Method method = o.getClass().getMethod("parse");
message = (s, commandSender) -> { message = (s, commandSender) -> {
try { try {
return (String) method.invoke(o, s, commandSender); if (o.get() == null) {
o.set(Modifier.isStatic(field.getModifiers()) ? field.get(null) : field.get(this));
}
return (String) method.invoke(o.get(), s, commandSender);
} catch (IllegalAccessException | InvocationTargetException e) { } catch (IllegalAccessException | InvocationTargetException e) {
return s; return s;
} }
}; };
} catch (NoSuchFieldException | IllegalAccessException | NoSuchMethodException e) { } catch (NoSuchFieldException | NoSuchMethodException e) {
// Ignored // Ignored
} }
} }