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