+ fix inject
parent
60131c4f91
commit
29f68d36e0
|
@ -4,6 +4,7 @@ plugins {
|
|||
id 'idea'
|
||||
id 'com.github.johnrengelman.shadow' version '4.0.4'
|
||||
}
|
||||
|
||||
group = 'me.skymc'
|
||||
version = '5.06'
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@ import java.util.concurrent.Executors;
|
|||
@Dependency(maven = "org.slf4j:slf4j-api:1.7.25", url = "https://skymc.oss-cn-shanghai.aliyuncs.com/libs/org.slf4j-slf4j-api-1.7.25.jar")
|
||||
@Dependency(maven = "com.zaxxer:HikariCP:3.1.0", url = "https://skymc.oss-cn-shanghai.aliyuncs.com/libs/com.zaxxer-HikariCP-3.1.0.jar")
|
||||
@Dependency(maven = "org.scala-lang:scala-library:2.12.8", url = "https://skymc.oss-cn-shanghai.aliyuncs.com/libs/scala-library-2.12.8.jar")
|
||||
@Dependency(maven = "org:kotlinlang:kotlin-stdlib:1.3.50", url = "https://skymc.oss-cn-shanghai.aliyuncs.com/libs/kotlin-stdlib-1.3.50.jar")
|
||||
@Dependency(maven = "com.google.inject:guice:4.2.2", url = "https://skymc.oss-cn-shanghai.aliyuncs.com/libs/guice-4.2.2.jar")
|
||||
public class TabooLib {
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@ package io.izzel.taboolib.module.db.local;
|
|||
|
||||
import io.izzel.taboolib.TabooLibLoader;
|
||||
import io.izzel.taboolib.module.locale.logger.TLogger;
|
||||
import io.izzel.taboolib.util.Ref;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
|
@ -31,7 +32,7 @@ public class LocalLoader implements TabooLibLoader.Loader {
|
|||
continue;
|
||||
}
|
||||
}
|
||||
field.setAccessible(true);
|
||||
Ref.forcedAccess(field);
|
||||
try {
|
||||
field.set(instance, Local.get(plugin.getName()).get(annotation.value()));
|
||||
} catch (IllegalAccessException ignored) {
|
||||
|
|
|
@ -3,6 +3,7 @@ package io.izzel.taboolib.module.inject;
|
|||
import io.izzel.taboolib.TabooLibLoader;
|
||||
import io.izzel.taboolib.module.lite.SimpleVersionControl;
|
||||
import io.izzel.taboolib.module.locale.logger.TLogger;
|
||||
import io.izzel.taboolib.util.Ref;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
|
@ -32,8 +33,8 @@ public class TInjectAsm implements TabooLibLoader.Loader {
|
|||
continue;
|
||||
}
|
||||
}
|
||||
Ref.forcedAccess(declaredField);
|
||||
try {
|
||||
declaredField.setAccessible(true);
|
||||
declaredField.set(instance, SimpleVersionControl.createNMS(annotation.asm()).useCache().translate(plugin).newInstance());
|
||||
} catch (Throwable t) {
|
||||
TLogger.getGlobalLogger().warn("Cannot translate class \"" + declaredField.getType().getName() + "\": " + t.getMessage());
|
||||
|
|
|
@ -3,6 +3,7 @@ package io.izzel.taboolib.module.inject;
|
|||
import com.google.common.collect.Maps;
|
||||
import io.izzel.taboolib.TabooLibLoader;
|
||||
import io.izzel.taboolib.module.locale.logger.TLogger;
|
||||
import io.izzel.taboolib.util.Ref;
|
||||
import io.izzel.taboolib.util.Reflection;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
|
@ -69,7 +70,7 @@ public class TInjectCreator implements TabooLibLoader.Loader {
|
|||
continue;
|
||||
}
|
||||
}
|
||||
declaredField.setAccessible(true);
|
||||
Ref.forcedAccess(declaredField);
|
||||
try {
|
||||
InstanceData instanceData = new InstanceData(declaredField.getType().newInstance(), annotation);
|
||||
declaredField.set(instance, instanceData.getInstance());
|
||||
|
|
|
@ -8,6 +8,7 @@ import io.izzel.taboolib.module.config.TConfig;
|
|||
import io.izzel.taboolib.module.locale.logger.TLogger;
|
||||
import io.izzel.taboolib.module.packet.TPacketHandler;
|
||||
import io.izzel.taboolib.module.packet.TPacketListener;
|
||||
import io.izzel.taboolib.util.Ref;
|
||||
import io.izzel.taboolib.util.lite.cooldown.Cooldown;
|
||||
import io.izzel.taboolib.util.lite.cooldown.Cooldowns;
|
||||
import org.bukkit.Bukkit;
|
||||
|
@ -179,8 +180,8 @@ public class TInjectLoader implements TabooLibLoader.Loader {
|
|||
}
|
||||
|
||||
public void inject(Plugin plugin, Field field, Object instance, TInject annotation, TInjectTask injectTask, Class pluginClass) {
|
||||
Ref.forcedAccess(field);
|
||||
try {
|
||||
field.setAccessible(true);
|
||||
injectTask.run(plugin, field, annotation, pluginClass, instance);
|
||||
TabooLibAPI.debug(field.getName() + " injected. (" + field.getType().getName() + ")");
|
||||
} catch (Throwable e) {
|
||||
|
|
|
@ -11,6 +11,7 @@ import sun.reflect.Reflection;
|
|||
|
||||
import javax.annotation.concurrent.ThreadSafe;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.stream.Collectors;
|
||||
|
@ -111,6 +112,17 @@ public class Ref {
|
|||
}
|
||||
}
|
||||
|
||||
public static void forcedAccess(Field field) {
|
||||
try {
|
||||
field.setAccessible(true);
|
||||
Field modifiersField = Field.class.getDeclaredField("modifiers");
|
||||
modifiersField.setAccessible(true);
|
||||
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private static abstract class CallerClass {
|
||||
|
||||
private static CallerClass impl;
|
||||
|
|
|
@ -3,13 +3,13 @@ package io.izzel.taboolib.util.lite.cooldown;
|
|||
import java.util.HashMap;
|
||||
|
||||
public class Cooldown {
|
||||
|
||||
|
||||
private String plugin;
|
||||
private String name;
|
||||
private long seconds;
|
||||
|
||||
|
||||
private HashMap<String, Long> data = new HashMap<>();
|
||||
|
||||
|
||||
public Cooldown(String n, int s) {
|
||||
this.name = n;
|
||||
this.seconds = s;
|
||||
|
@ -21,23 +21,23 @@ public class Cooldown {
|
|||
this.seconds = s;
|
||||
this.plugin = "null";
|
||||
}
|
||||
|
||||
|
||||
public String getPackName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
|
||||
public long getPackSeconds() {
|
||||
return seconds;
|
||||
}
|
||||
|
||||
|
||||
public String getPlugin() {
|
||||
return plugin;
|
||||
}
|
||||
|
||||
|
||||
public void setPlugin(String p) {
|
||||
this.plugin = p;
|
||||
}
|
||||
|
||||
|
||||
public void unRegister(String player) {
|
||||
data.remove(player);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue