v1.0-SNAPSHOT

NxHomes

Why NxHomes?

NxHomes reimagines the traditional home system by replacing tedious commands with a Professional GUI. Instead of forcing players to type commands to set, delete, or rename homes, everything is handled through an intuitive visual interface.

Players can easily see which slots are empty, which are locked behind permissions, and manage their existing homes with simple clicks (e.g., Shift+Right-Click to delete, Right-Click to rename via a quick chat prompt). The plugin also features a highly polished teleport warmup system complete with action bars, titles, and movement cancellation.

Installation

NxHomes is built for modern Minecraft servers (1.21+) and is plug-and-play ready.

  1. Download the plugin: Place the NxHomes.jar file into your server's /plugins directory.
  2. Restart the server: Let the server generate the default configuration files.
  3. Set permissions: Grant your players the base nxhomes.use permission, and define their maximum home slots using nxhomes.home.<number> (e.g., nxhomes.home.4 for VIPs).
  4. Customize: Open the config to adjust the teleport warmup delays, GUI layouts, or world blacklists to fit your server.

Commands

Because NxHomes is GUI-driven, command bloat is kept to an absolute minimum.

COMMANDDESCRIPTION
/homeOpens the interactive homes GUI.
/sethomeAn alias that also opens the homes GUI so players can click an empty slot.
/nxhomesThe main admin command for managing the plugin.
Note: Setting, deleting, renaming, and setting a "Main" home are all done entirely by clicking inside the GUI!

Permissions

PERMISSIONEFFECT
nxhomes.useAllows the player to use the plugin and open the GUI (Default: true).
nxhomes.home.<number>Defines the amount of home slots a player has unlocked. Note: nxhomes.home.2 is granted by default.
nxhomes.adminGrants access to the /nxhomes admin command (Default: OP).

GUI Configuration

The visual layout of the pages, locked slots, and action buttons are fully customizable.

gui:
  title: "&8⟦ &b&lNxHomes &8⟧ &7Page &b%current_page%&7/&b%max_pages%"
  size: 36
  homes_per_page: 4

  # slots for each entry (arrays must have at least homes_per_page entries)
  bed_slots: [10, 12, 14, 16]
  dye_slots: [19, 21, 23, 25]

  prev_page_slot: 27
  next_page_slot: 35

  # decorative filler
  fill_name: "&7 "
  fill_slots: [0,1,2,3,4,5,6,7,8]

  prev_page_name: "&b⬅ &fPrevious Page"
  next_page_name: "&fNext Page &b➡"

  locked:
    name: "&8⟦ &7Locked Slot &8⟧"
    lore:
      - "&7This home slot is currently unavailable."
      - ""
      - "&bℹ &7Upgrade your rank to unlock"
      - "&7additional home slots."

  empty:
    name: "&8⟦ &bEmpty Home &8⟧"
    lore:
      - "&7No home has been assigned"
      - "&7to this slot yet."
      - ""
      - "&b▶ &fLeft-click &7to set your"
      - "&7current location as a home."

  actions:
    name: "&8⟦ &b&lHome Actions &8⟧"
    lore:
      - "&7Manage this home using the"
      - "&7available actions below."
      - ""
      - "&b▶ &fLeft-click &7Move home"
      - "&b▶ &fRight-click &7Rename home"
      - "&b▶ &fShift + Right-click &7Delete"
      - "&b▶ &fShift + Left-click &7Set as Main"

confirm:
  title: "&8⟦ &c&lConfirm Action &8⟧"
  confirm_name: "&a✔ &fConfirm %type%"
  cancel_name: "&c✖ &fCancel"

Teleport Warmup & Animations

Configure the delay, visuals, and movement cancellation thresholds when a player initiates a teleport.

teleport:
  delay_seconds: 3            # Warmup time in seconds
  tick_interval_ticks: 5      # How often the task runs (in server ticks). 20 ticks = 1 second; lower = smoother animation.
  cancel_on_move: true        # Cancel teleport if player changes X/Y/Z or world
  cancel_distance: 0.1        # Movement threshold in blocks; squared distance checked

  title:
    enabled: true
    # Optional custom frames: if empty, frames will be auto-generated (Teleporting, Teleporting., Teleporting.., Teleporting...)
    frames: []
    title_color: "&b&l"       # Prefix styling used for the title text when formatting frames
    subtitle: "&7Destination: &f%home_display%"

  actionbar:
    enabled: true
    message: "&bTeleporting in &f%seconds% &bsecond(s)..."

  particles:
    enabled: true
    type: DEFAULT
    count: 25
    offset_x: 0.5
    offset_y: 1.0
    offset_z: 0.5

  sounds:
    enabled: true
    start: ENTITY_EXPERIENCE_ORB_PICKUP
    tick: UI_BUTTON_CLICK
    complete: ENTITY_ENDERMAN_TELEPORT
    cancel: ENTITY_VILLAGER_NO
    volume: 0.8
    pitch: 1.0

Messages & World Blacklists

Restrict homes from being set in specific dimensions (like minigame worlds or the end), and customize all chat output.

world-blacklist:
  enabled: false
  worlds:
    - world_nether
    - world_the_end

messages:
  world_blacklisted: "&cYou cannot use homes in this world."
  # Teleport via HomesGUI
  teleport: "&8⟦&bNxHomes&8⟧ &fTeleported to &b%home_display% &7(Slot &b%slot%&7)."

  # Teleport fallback
  teleport_performed: "&8⟦&bNxHomes&8⟧ &aTeleport successful."

  # Home set
  home_set: "&8⟦&bNxHomes&8⟧ &fHome successfully set in &bSlot %slot%&f."

  # Home moved
  home_moved: "&8⟦&bNxHomes&8⟧ &fHome in &bSlot %slot% &fhas been relocated."

  # Home deleted
  home_deleted: "&8⟦&bNxHomes&8⟧ &cHome in &bSlot %slot% &chas been deleted."

  # Main home set (with Home object)
  set_main: "&8⟦&bNxHomes&8⟧ &f&b%home_display% &fis now your &6Main Home &7(Slot %slot%)."

  # Main home set (slot only)
  set_main_slot_only: "&8⟦&bNxHomes&8⟧ &fSlot &b%slot% &fis now set as your &6Main Home."

  # Rename prompt
  rename_prompt: "&8⟦&bNxHomes&8⟧ &fType a new name in chat to rename &bSlot %slot%&f. &7Use &c/cancel &7to abort. &8(30 seconds)"

  # No permission
  no_permission: "&8⟦&bNxHomes&8⟧ &cYou do not have permission to perform this action."

  # Warmup Messages
  started: "&8⟦&bNxHomes&8⟧ &fTeleport will begin shortly. Do not move."
  cancelled: "&8⟦&bNxHomes&8⟧ &cTeleport cancelled (movement detected)."
  completed: "&8⟦&bNxHomes&8⟧ &aTeleported to &b%home_display%&a."