java.lang.Object
com.kamikazejam.kamicommon.nms.library.worldedit.WorldEditHook

public class WorldEditHook extends Object
Version detection and integration hook for WorldEdit plugin.

This hook provides automatic detection and initialization of version-specific WorldEdit API implementations, supporting both WorldEdit and FastAsyncWorldEdit (FAWE) installations. It abstracts away the differences between WorldEdit 6 and WorldEdit 7 APIs while providing a unified interface for schematic operations.

The hook uses lazy initialization to detect the installed WorldEdit version and create the appropriate API wrapper only when first accessed. This approach ensures compatibility with servers that may not have WorldEdit installed while providing full functionality when it is available.

Version detection strategy:

  1. Check for WorldEdit plugin and use version string for detection
  2. If WorldEdit not found, check for FastAsyncWorldEdit
  3. Use reflection to detect WorldEdit 7 classes within FAWE
  4. Fall back to WorldEdit 6 compatibility if detection fails

Example usage:


 // Check if WorldEdit is available
 WorldEditApi<Clipboard> api = WorldEditHook.get();
 if (api != null) {
     // Perform WorldEdit operations
     Clipboard clipboard = api.getClipboardByFile(schematicFile);
     api.pasteClipboard(world, location, clipboard, transform);
 }
 

  • Constructor Details

    • WorldEditHook

      public WorldEditHook()
  • Method Details

    • get

      @Nullable public static @Nullable WorldEditApi<com.sk89q.worldedit.extent.clipboard.Clipboard> get()
      Retrieves the WorldEdit API instance for the installed version.

      This method performs lazy initialization of the WorldEdit API, detecting the installed version and creating the appropriate implementation on first access. Subsequent calls return the cached instance for optimal performance.

      The method supports multiple WorldEdit distributions:

      • Standard WorldEdit 6.x installations
      • Standard WorldEdit 7.x installations
      • FastAsyncWorldEdit (FAWE) with embedded WorldEdit 6 or 7
      • Standalone FAWE installations without WorldEdit plugin

      Version detection is performed using plugin version strings and reflection to ensure compatibility across different server configurations and WorldEdit distributions.

      Returns:
      the WorldEditApi instance for the detected version, or null if WorldEdit is not available