Skip to content

dscalzi/ZipExtractor

Repository files navigation

# Header

ZipExtractor is an administrative utility plugin allowing the compression/extraction of archived files through minecraft command. This plugin is extremely useful for dealing with archives over FTP, which does not provide support for neither compression nor extraction. While many safeguards are in place, please note that there is no undo button. Overridden files cannot be recovered.

The source and destination file paths are saved inside of the config.yml. This means that only one can be set at a time. If you edit these values directly in the config.yml you must reload the plugin for the new values to take effect.


Feature List

  • Extraction of ZIP, RAR, JAR, PACK, TAR, GZ, and XZ archives.
    • Note: Pack operations are only supported on JDK 13 and below.
  • Compression of any file or directory into the ZIP or TAR formats.
  • Compression of any JAR file to the PACK format, and any non-directory file to the GZ or XZ formats.
  • Queueable operations if you have many extractions/compressions to perform.
  • Configurable Thread Pool Executor allowing you to set a maximum queue size and maximum number of threads to run at once. Incase of an emergency the Thread Pool can be shutdown at anytime.
  • Option to be warned if an extraction/compression would result in files being overriden.
    • If enabled, users will require an additional permission in order to proceed with the process.
    • For extractions, you can view every file which would be overriden prior to proceeding with the process.
  • Tab completion for file paths, similar to the command line (configurable).
  • Pipe multiple extractions/compressions with a single command. (Ex. Extract Test.jar.pack.xz to Test.jar).
  • Metrics by bStats

You can find more extensive details on the wiki.


Contributing

If you would like to contribute to this project, feel free to submit a pull request. The project does not use a specific code style, but please keep to the conventions used throughout the code.

You can build ZipExtractor using Gradle. Clone the repository and run the following command.

$ gradlew build

Since the main purpose of this plugin deals with archive manipulation, the plugin uses a provider system so that new formats can be easily supported. If you need support for a specific file extension you can create an issue and request it or submit a pull request which adds the provider. The TypeProvider class is documented in the code and implementations already exist if you need examples. A reference to each provider is saved in the TypeProvider class.


Links