Merge branch 'master' of https://github.com/Bkm016/TabooLib
This commit is contained in:
		
							
								
								
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -21,4 +21,5 @@
 | 
			
		||||
hs_err_pid*
 | 
			
		||||
.gradle/4.3.1/
 | 
			
		||||
.idea
 | 
			
		||||
target
 | 
			
		||||
target
 | 
			
		||||
TabooLib.iml
 | 
			
		||||
							
								
								
									
										11
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								pom.xml
									
									
									
									
									
								
							@@ -6,13 +6,10 @@
 | 
			
		||||
 | 
			
		||||
    <groupId>me.skymc</groupId>
 | 
			
		||||
    <artifactId>TabooLib</artifactId>
 | 
			
		||||
    <version>4.09</version>
 | 
			
		||||
    <version>4.10</version>
 | 
			
		||||
 | 
			
		||||
    <properties>
 | 
			
		||||
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 | 
			
		||||
        <maven.compile.source>1.5</maven.compile.source>
 | 
			
		||||
        <maven.compile.target>1.5</maven.compile.target>
 | 
			
		||||
        <maven.compile.deprecation>off</maven.compile.deprecation>
 | 
			
		||||
    </properties>
 | 
			
		||||
    <build>
 | 
			
		||||
        <defaultGoal>clean install package</defaultGoal>
 | 
			
		||||
@@ -33,8 +30,10 @@
 | 
			
		||||
                <artifactId>maven-compiler-plugin</artifactId>
 | 
			
		||||
                <version>3.7.0</version>
 | 
			
		||||
                <configuration>
 | 
			
		||||
                    <source>8</source>
 | 
			
		||||
                    <target>8</target>
 | 
			
		||||
                    <source>1.8</source>
 | 
			
		||||
                    <target>1.8</target>
 | 
			
		||||
                    <showDeprecation>false</showDeprecation>
 | 
			
		||||
                    <useIncrementalCompilation>true</useIncrementalCompilation>
 | 
			
		||||
                </configuration>
 | 
			
		||||
            </plugin>
 | 
			
		||||
            <plugin>
 | 
			
		||||
 
 | 
			
		||||
@@ -5,9 +5,35 @@ import com.ilummc.tlib.bean.Property;
 | 
			
		||||
import org.bukkit.Bukkit;
 | 
			
		||||
import org.bukkit.plugin.java.JavaPlugin;
 | 
			
		||||
 | 
			
		||||
import java.lang.management.GarbageCollectorMXBean;
 | 
			
		||||
import java.lang.management.ManagementFactory;
 | 
			
		||||
import java.lang.management.MemoryMXBean;
 | 
			
		||||
import java.util.concurrent.TimeUnit;
 | 
			
		||||
 | 
			
		||||
@TConfig(name = "cfg.yml", charset = "GBK")
 | 
			
		||||
public class ExampleMain extends JavaPlugin {
 | 
			
		||||
 | 
			
		||||
    public static void main(String[] args) {
 | 
			
		||||
        MemoryMXBean bean = ManagementFactory.getMemoryMXBean();
 | 
			
		||||
        System.out.println(bean.getHeapMemoryUsage().toString());
 | 
			
		||||
        System.out.println(bean.getNonHeapMemoryUsage().toString());
 | 
			
		||||
        for (int i = 0; i < 10; i++) {
 | 
			
		||||
            for (GarbageCollectorMXBean mxBean : ManagementFactory.getGarbageCollectorMXBeans()) {
 | 
			
		||||
                System.out.println(mxBean.getName());
 | 
			
		||||
                System.out.println(mxBean.getCollectionCount());
 | 
			
		||||
                System.out.println(mxBean.getCollectionTime());
 | 
			
		||||
                for (String s : mxBean.getMemoryPoolNames()) {
 | 
			
		||||
                    System.out.println(s);
 | 
			
		||||
                }
 | 
			
		||||
                System.out.println(mxBean.getObjectName().toString());
 | 
			
		||||
            }
 | 
			
		||||
            System.gc();
 | 
			
		||||
        }
 | 
			
		||||
        for (String s : ManagementFactory.getRuntimeMXBean().getInputArguments()) {
 | 
			
		||||
            System.out.println(s);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Property<Boolean> update = Property.of(false);
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
@@ -31,4 +57,58 @@ public class ExampleMain extends JavaPlugin {
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static class CD {
 | 
			
		||||
 | 
			
		||||
        final long start, period;
 | 
			
		||||
        final TimeUnit unit;
 | 
			
		||||
        final Runnable onStart, onFinish, onTimer;
 | 
			
		||||
 | 
			
		||||
        CD(long start, long period, TimeUnit unit, Runnable onStart, Runnable onFinish, Runnable onTimer) {
 | 
			
		||||
            this.start = start;
 | 
			
		||||
            this.period = period;
 | 
			
		||||
            this.unit = unit;
 | 
			
		||||
            this.onStart = onStart;
 | 
			
		||||
            this.onFinish = onFinish;
 | 
			
		||||
            this.onTimer = onTimer;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static void main(String[] args) {
 | 
			
		||||
            CD.builder().setOnStart(() -> {
 | 
			
		||||
            }).setOnFinish(() -> {
 | 
			
		||||
            }).setOnTimer(1000, TimeUnit.MILLISECONDS, () -> {
 | 
			
		||||
            }).build();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static CdBuilder builder() {
 | 
			
		||||
            return new CdBuilder();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private static class CdBuilder {
 | 
			
		||||
            private long start, period;
 | 
			
		||||
            private TimeUnit unit;
 | 
			
		||||
            private Runnable onStart, onFinish, onTimer;
 | 
			
		||||
 | 
			
		||||
            public CdBuilder setOnStart(Runnable runnable) {
 | 
			
		||||
                this.onStart = runnable;
 | 
			
		||||
                return this;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            public CdBuilder setOnFinish(Runnable runnable) {
 | 
			
		||||
                this.onFinish = runnable;
 | 
			
		||||
                return this;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            public CdBuilder setOnTimer(long period, TimeUnit timeUnit, Runnable runnable) {
 | 
			
		||||
                this.period = period;
 | 
			
		||||
                this.unit = timeUnit;
 | 
			
		||||
                this.onTimer = runnable;
 | 
			
		||||
                return this;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            public CD build() {
 | 
			
		||||
                return new CD(start, period, unit, onStart, onFinish, onTimer);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -20,19 +20,26 @@ import java.util.regex.Pattern;
 | 
			
		||||
@SuppressWarnings("unused")
 | 
			
		||||
public class TPluginManager implements PluginManager {
 | 
			
		||||
 | 
			
		||||
    private static TPluginManager singleton;
 | 
			
		||||
    private final PluginManager instance;
 | 
			
		||||
    private final Main main = (Main) Main.getInst();
 | 
			
		||||
    private static File updateDirectory = null;
 | 
			
		||||
    private Server server;
 | 
			
		||||
    private Map<Pattern, PluginLoader> fileAssociations = new HashMap<>();
 | 
			
		||||
    private List<Plugin> plugins = new ArrayList<>();
 | 
			
		||||
	private Map<String, Plugin> lookupNames = new HashMap<>();
 | 
			
		||||
    private Map<String, Plugin> lookupNames = new HashMap<>();
 | 
			
		||||
    private SimpleCommandMap commandMap;
 | 
			
		||||
    private Map<String, Permission> permissions = new HashMap<>();
 | 
			
		||||
    private Map<Boolean, Set<Permission>> defaultPerms = new LinkedHashMap<>();
 | 
			
		||||
    private Map<String, Map<Permissible, Boolean>> permSubs = new HashMap<>();
 | 
			
		||||
    private Map<Boolean, Map<Permissible, Boolean>> defSubs = new HashMap<>();
 | 
			
		||||
    private boolean useTimings = false;
 | 
			
		||||
    private List<Plugin> delayedDisable = new ArrayList<>();
 | 
			
		||||
 | 
			
		||||
    public static void delayDisable(Plugin plugin) {
 | 
			
		||||
        if (!singleton.delayedDisable.contains(plugin))
 | 
			
		||||
            singleton.delayedDisable.add(plugin);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public TPluginManager() {
 | 
			
		||||
        instance = Bukkit.getPluginManager();
 | 
			
		||||
@@ -48,22 +55,23 @@ public class TPluginManager implements PluginManager {
 | 
			
		||||
        cloneField("permSubs");
 | 
			
		||||
        cloneField("defSubs");
 | 
			
		||||
        cloneField("useTimings");
 | 
			
		||||
        singleton = this;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    private void cloneField(String bukkitName) {
 | 
			
		||||
    	try {
 | 
			
		||||
    		Field bukkitField = instance.getClass().getDeclaredField(bukkitName);
 | 
			
		||||
    		Field thisFiled = this.getClass().getDeclaredField(bukkitName);
 | 
			
		||||
    		if (bukkitField == null || thisFiled == null) {
 | 
			
		||||
        try {
 | 
			
		||||
            Field bukkitField = instance.getClass().getDeclaredField(bukkitName);
 | 
			
		||||
            Field thisFiled = this.getClass().getDeclaredField(bukkitName);
 | 
			
		||||
            if (bukkitField == null || thisFiled == null) {
 | 
			
		||||
                TLocale.Logger.warn("MISC.FIELD-COPY-FAILED", bukkitName);
 | 
			
		||||
    			return;
 | 
			
		||||
    		}
 | 
			
		||||
    		bukkitField.setAccessible(true);
 | 
			
		||||
    		thisFiled.setAccessible(true);
 | 
			
		||||
    		thisFiled.set(this, bukkitField.get(instance));
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            bukkitField.setAccessible(true);
 | 
			
		||||
            thisFiled.setAccessible(true);
 | 
			
		||||
            thisFiled.set(this, bukkitField.get(instance));
 | 
			
		||||
        } catch (Exception e) {
 | 
			
		||||
            TLocale.Logger.error("MISC.FIELD-COPY-ERROR", bukkitName, e.toString());
 | 
			
		||||
		}
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
@@ -104,10 +112,12 @@ public class TPluginManager implements PluginManager {
 | 
			
		||||
    @Override
 | 
			
		||||
    public void disablePlugins() {
 | 
			
		||||
        for (Plugin plugin : getPlugins()) {
 | 
			
		||||
            if (plugin != main) {
 | 
			
		||||
            if (plugin != main && !delayedDisable.contains(plugin)) {
 | 
			
		||||
                disablePlugin(plugin);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        Collections.reverse(delayedDisable);
 | 
			
		||||
        delayedDisable.forEach(singleton::disablePlugin);
 | 
			
		||||
        disablePlugin(main);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user