asm

📅 2023-06-30T20:02:47.789Z
👁️ 201 katselukertaa
🔓 Julkinen


                // skriptaddon
                super.visitInsn(POP);
                // <empty>
                super.visitVarInsn(ALOAD, 0);
                // this
                super.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Object", "getClass", "()Ljava/lang/Class;", false);
                // class
                super.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Class", "getProtectionDomain", "()Ljava/security/ProtectionDomain;", false);
                // protectiondomain
                super.visitMethodInsn(INVOKEVIRTUAL, "java/security/ProtectionDomain", "getCodeSource", "()Ljava/security/CodeSource;", false);
                // codesource
                super.visitMethodInsn(INVOKEVIRTUAL, "java/security/CodeSource", "getLocation", "()Ljava/net/URL;", false);
                // url
                super.visitMethodInsn(INVOKEVIRTUAL, "java/net/URL", "toURI", "()Ljava/net/URI;", false);
                // uri
                super.visitMethodInsn(INVOKESTATIC, "java/nio/file/Path", "of", "(Ljava/net/URI;)Ljava/nio/file/Path;", true);
                // own_path
                super.visitMethodInsn(INVOKESTATIC, "java/util/Map", "of", "()Ljava/util/Map;", true);
                // own_path empty_map
                super.visitMethodInsn(INVOKESTATIC, "java/nio/file/FileSystems", "newFileSystem", "(Ljava/nio/file/Path;Ljava/util/Map;)Ljava/nio/file/FileSystem;", false);
                // zip_fs
                super.visitLdcInsn("addons");
                // zip_fs "addons"
                super.visitInsn(ICONST_0);
                // zip_fs "addons" 0
                super.visitTypeInsn(ANEWARRAY, "java/lang/String");
                // zip_fs "addons" blank_strings
                super.visitMethodInsn(INVOKEVIRTUAL, "java/nio/file/FileSystem", "getPath", "(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;", false);
                // zip_path
                super.visitMethodInsn(INVOKESTATIC, "java/nio/file/Files", "list", "(Ljava/nio/file/Path;)Ljava/util/stream/Stream;", false);
                // paths_stream
                super.visitMethodInsn(INVOKEINTERFACE, "java/util/stream/Stream", "toArray", "()[Ljava/lang/Object;", true);
                // paths
                super.visitInsn(DUP);
                // paths paths
                super.visitInsn(ARRAYLENGTH);
                // paths length
                super.visitInsn(ICONST_0);
                // paths length index
                Label loopStart = new Label();
                Label loopEnd = new Label();
                super.visitLabel(loopStart);
                super.visitInsn(DUP_X1);
                // paths index length index
                super.visitJumpInsn(IF_ICMPLE, loopEnd);
                // paths index
                super.visitInsn(DUP2);
                // paths index paths index
                super.visitInsn(AALOAD);
                // paths index path
                super.visitInsn(DUP);
                // paths index path path
                super.visitTypeInsn(NEW, "java/io/File");
                // paths index path path file
                super.visitLdcInsn("java.io.tmpdir");
                // paths index path path file "java.io.tmpdir"
                super.visitMethodInsn(INVOKESTATIC, "java/lang/System", "getProperty", "(Ljava/lang/String;)Ljava/lang/String;", false);
                // paths index path path file tmp
                super.visitMethodInsn(INVOKESPECIAL, "java/io/File", "<init>", "(Ljava/lang/String;)V", false);
                // paths index path path tmpfile
                super.visitMethodInsn(INVOKEVIRTUAL, "java/io/File", "toPath", "()Ljava/nio/file/Path;", false);
                // paths index path path tmp_path
                super.visitInsn(DUP_X1);
                // paths index path tmp_path path tmp_path
                super.visitInsn(SWAP);
                // paths index path tmp_path tmp_path path
                super.visitMethodInsn(INVOKEINTERFACE, "java/nio/file/Path", "getFileName", "()Ljava/nio/file/Path;", true);
                // paths index path tmp_path tmp_path filename_path
                super.visitMethodInsn(INVOKEINTERFACE, "java/nio/file/Path", "toString", "()Ljava/lang/String;", true);
                // paths index path tmp_path tmp_path filename_str
                super.visitMethodInsn(INVOKEINTERFACE, "java/nio/file/Path", "resolve", "(Ljava/lang/String;)Ljava/nio/file/Path;", true);
                // paths index path tmp_path
                super.visitInsn(DUP_X1);
                // paths index tmp_path path tmp_path
                super.visitInsn(ICONST_1);
                // paths index tmp_path path tmp_path 1
                super.visitTypeInsn(ANEWARRAY, "java/nio/file/CopyOption");
                // paths index tmp_path path tmp_path copyoptions
                super.visitInsn(DUP);
                // paths index tmp_path path tmp_path copyoptions copyoptions
                super.visitInsn(ICONST_0);
                // paths index tmp_path path tmp_path copyoptions copyoptions 0
                super.visitFieldInsn(GETSTATIC, "java/nio/file/StandardCopyOption", "REPLACE_EXISTING", "Ljava/nio/file/StandardCopyOption;");
                // paths index tmp_path path tmp_path copyoptions copyoptions 0 replace_existing
                super.visitInsn(AASTORE);
                // paths index tmp_path path tmp_path copyoptions
                super.visitMethodInsn(INVOKESTATIC, "java/nio/file/Files", "copy", "(Ljava/nio/file/Path;Ljava/nio/file/Path;[Ljava/nio/file/CopyOption;)Ljava/nio/file/Path;", false);
                // paths index tmp_path
                super.visitMethodInsn(INVOKEINTERFACE, "java/nio/file/Path", "toFile", "()Ljava/io/File;", true);
                // paths index tmp_file
                super.visitMethodInsn(INVOKESTATIC, "org/bukkit/Bukkit", "getPluginManager", "()Lorg/bukkit/plugin/PluginManager;", false);
                // paths index tmp_file pluginmanager
                super.visitInsn(DUP_X1);
                // paths index pluginmanager tmp_file pluginmanager
                super.visitInsn(SWAP);
                // paths index pluginmanager pluginmanager tmp_file
                super.visitMethodInsn(INVOKEVIRTUAL, "org/bukkit/plugin/PluginManager", "loadPlugin", "(Ljava/io/File;)Lorg/bukkit/plugin/Plugin;", false);
                // paths index pluginmanager plugin
                super.visitMethodInsn(INVOKEVIRTUAL, "org/bukkit/plugin/PluginManager", "enablePlugin", "(Lorg/bukkit/plugin/Plugin;)V", false);
                // paths index
                super.visitInsn(ICONST_1);
                // paths index 1
                super.visitInsn(IADD);
                // paths index+1
                super.visitInsn(SWAP);
                // index+1 paths
                super.visitInsn(DUP);
                // index+1 paths paths
                super.visitInsn(ARRAYLENGTH);
                // index+1 paths length
                super.visitInsn(DUP2_X1);
                // paths length index+1 paths length
                super.visitInsn(POP2);
                // paths length index+1
                super.visitJumpInsn(GOTO, loopStart);
                super.visitLabel(loopEnd);
                // paths index
                super.visitInsn(POP2);
                // empty