+ fix inject
This commit is contained in:
		@@ -4,6 +4,7 @@ plugins {
 | 
				
			|||||||
    id 'idea'
 | 
					    id 'idea'
 | 
				
			||||||
    id 'com.github.johnrengelman.shadow' version '4.0.4'
 | 
					    id 'com.github.johnrengelman.shadow' version '4.0.4'
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
group = 'me.skymc'
 | 
					group = 'me.skymc'
 | 
				
			||||||
version = '5.06'
 | 
					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 = "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 = "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.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")
 | 
					@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 {
 | 
					public class TabooLib {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,6 +2,7 @@ package io.izzel.taboolib.module.db.local;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import io.izzel.taboolib.TabooLibLoader;
 | 
					import io.izzel.taboolib.TabooLibLoader;
 | 
				
			||||||
import io.izzel.taboolib.module.locale.logger.TLogger;
 | 
					import io.izzel.taboolib.module.locale.logger.TLogger;
 | 
				
			||||||
 | 
					import io.izzel.taboolib.util.Ref;
 | 
				
			||||||
import org.bukkit.plugin.Plugin;
 | 
					import org.bukkit.plugin.Plugin;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.lang.reflect.Field;
 | 
					import java.lang.reflect.Field;
 | 
				
			||||||
@@ -31,7 +32,7 @@ public class LocalLoader implements TabooLibLoader.Loader {
 | 
				
			|||||||
                    continue;
 | 
					                    continue;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            field.setAccessible(true);
 | 
					            Ref.forcedAccess(field);
 | 
				
			||||||
            try {
 | 
					            try {
 | 
				
			||||||
                field.set(instance, Local.get(plugin.getName()).get(annotation.value()));
 | 
					                field.set(instance, Local.get(plugin.getName()).get(annotation.value()));
 | 
				
			||||||
            } catch (IllegalAccessException ignored) {
 | 
					            } catch (IllegalAccessException ignored) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,6 +3,7 @@ package io.izzel.taboolib.module.inject;
 | 
				
			|||||||
import io.izzel.taboolib.TabooLibLoader;
 | 
					import io.izzel.taboolib.TabooLibLoader;
 | 
				
			||||||
import io.izzel.taboolib.module.lite.SimpleVersionControl;
 | 
					import io.izzel.taboolib.module.lite.SimpleVersionControl;
 | 
				
			||||||
import io.izzel.taboolib.module.locale.logger.TLogger;
 | 
					import io.izzel.taboolib.module.locale.logger.TLogger;
 | 
				
			||||||
 | 
					import io.izzel.taboolib.util.Ref;
 | 
				
			||||||
import org.bukkit.plugin.Plugin;
 | 
					import org.bukkit.plugin.Plugin;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.lang.reflect.Field;
 | 
					import java.lang.reflect.Field;
 | 
				
			||||||
@@ -32,8 +33,8 @@ public class TInjectAsm implements TabooLibLoader.Loader {
 | 
				
			|||||||
                    continue;
 | 
					                    continue;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            Ref.forcedAccess(declaredField);
 | 
				
			||||||
            try {
 | 
					            try {
 | 
				
			||||||
                declaredField.setAccessible(true);
 | 
					 | 
				
			||||||
                declaredField.set(instance, SimpleVersionControl.createNMS(annotation.asm()).useCache().translate(plugin).newInstance());
 | 
					                declaredField.set(instance, SimpleVersionControl.createNMS(annotation.asm()).useCache().translate(plugin).newInstance());
 | 
				
			||||||
            } catch (Throwable t) {
 | 
					            } catch (Throwable t) {
 | 
				
			||||||
                TLogger.getGlobalLogger().warn("Cannot translate class \"" + declaredField.getType().getName() + "\": " + t.getMessage());
 | 
					                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 com.google.common.collect.Maps;
 | 
				
			||||||
import io.izzel.taboolib.TabooLibLoader;
 | 
					import io.izzel.taboolib.TabooLibLoader;
 | 
				
			||||||
import io.izzel.taboolib.module.locale.logger.TLogger;
 | 
					import io.izzel.taboolib.module.locale.logger.TLogger;
 | 
				
			||||||
 | 
					import io.izzel.taboolib.util.Ref;
 | 
				
			||||||
import io.izzel.taboolib.util.Reflection;
 | 
					import io.izzel.taboolib.util.Reflection;
 | 
				
			||||||
import org.bukkit.plugin.Plugin;
 | 
					import org.bukkit.plugin.Plugin;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -69,7 +70,7 @@ public class TInjectCreator implements TabooLibLoader.Loader {
 | 
				
			|||||||
                    continue;
 | 
					                    continue;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            declaredField.setAccessible(true);
 | 
					            Ref.forcedAccess(declaredField);
 | 
				
			||||||
            try {
 | 
					            try {
 | 
				
			||||||
                InstanceData instanceData = new InstanceData(declaredField.getType().newInstance(), annotation);
 | 
					                InstanceData instanceData = new InstanceData(declaredField.getType().newInstance(), annotation);
 | 
				
			||||||
                declaredField.set(instance, instanceData.getInstance());
 | 
					                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.locale.logger.TLogger;
 | 
				
			||||||
import io.izzel.taboolib.module.packet.TPacketHandler;
 | 
					import io.izzel.taboolib.module.packet.TPacketHandler;
 | 
				
			||||||
import io.izzel.taboolib.module.packet.TPacketListener;
 | 
					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.Cooldown;
 | 
				
			||||||
import io.izzel.taboolib.util.lite.cooldown.Cooldowns;
 | 
					import io.izzel.taboolib.util.lite.cooldown.Cooldowns;
 | 
				
			||||||
import org.bukkit.Bukkit;
 | 
					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) {
 | 
					    public void inject(Plugin plugin, Field field, Object instance, TInject annotation, TInjectTask injectTask, Class pluginClass) {
 | 
				
			||||||
 | 
					        Ref.forcedAccess(field);
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            field.setAccessible(true);
 | 
					 | 
				
			||||||
            injectTask.run(plugin, field, annotation, pluginClass, instance);
 | 
					            injectTask.run(plugin, field, annotation, pluginClass, instance);
 | 
				
			||||||
            TabooLibAPI.debug(field.getName() + " injected. (" + field.getType().getName() + ")");
 | 
					            TabooLibAPI.debug(field.getName() + " injected. (" + field.getType().getName() + ")");
 | 
				
			||||||
        } catch (Throwable e) {
 | 
					        } catch (Throwable e) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,6 +11,7 @@ import sun.reflect.Reflection;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import javax.annotation.concurrent.ThreadSafe;
 | 
					import javax.annotation.concurrent.ThreadSafe;
 | 
				
			||||||
import java.lang.reflect.Field;
 | 
					import java.lang.reflect.Field;
 | 
				
			||||||
 | 
					import java.lang.reflect.Modifier;
 | 
				
			||||||
import java.util.*;
 | 
					import java.util.*;
 | 
				
			||||||
import java.util.concurrent.ConcurrentHashMap;
 | 
					import java.util.concurrent.ConcurrentHashMap;
 | 
				
			||||||
import java.util.stream.Collectors;
 | 
					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 abstract class CallerClass {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private static CallerClass impl;
 | 
					        private static CallerClass impl;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user