Sueta

LightPlus

1.2.0

A Simple Plugin that Adds Functions to Light Blocks in Survival

·Plugin
  1. 1.2.0latestLightPlus 1.2.0Aug 31, 2026

    [1.2.0] - 2026-08-31

    Added
    - Sound effects for light-block level switching, and all four LightPlus sounds (place, break, level change, level off) are now fully configurable under a new sounds section in config.yml — each with its own sound key, volume and pitch, plus a master sounds.enabled toggle and per-sound muting via an empty sound. The level-change sound still slides its pitch up with brightness, now anchored to the configured pitch at level 15. - Land protection support. Placing, removing and adjusting light blocks now respects land/region protection plugins. Block break/place already flowed through standard Bukkit events; the interaction-driven paths (right-click level rotation, shift-right-click adjacent placement, left-click removal) now dispatch a simulated block break/place event and abort if a protection plugin cancels it. Works with WorldGuard, GriefPrevention, GriefDefender, Residence, Towny, Lands, PlotSquared, BentoBox (and its skyblock forks), and any other plugin that cancels BlockBreakEvent / BlockPlaceEvent. Toggle it under the new land_protection.enabled option (default true). Added the corresponding plugins to softdepend. - /lightplus give <player> [level] [amount] (permission lightplus.give, default op) to hand a player leveled light items — level 0-15 (default 15), amount 1-64 (default 1) — with tab completion for the sub-command, player names and common values. - Per-player and per-world light-level caps. The highest lightplus.maxlevel.<0-15> permission node a player holds is the brightest level they may set (right-click adjust, shift-place, and placing a stored-level item all clamp to it); players with no node fall back to limits.default_max_level. limits.world_max_levels.<world> caps a level per world, and the effective limit is the lower of the two. lightplus.maxlevel.bypass (default op) removes all caps. /lightplus give is not clamped. - actions section in config.yml to individually disable the extra interactions: adjust_level (right-click level cycle), place_adjacent (shift-right-click place), left_click_break (left-click removal), and pick_block. A disabled action falls back to vanilla behaviour. - Pick-block support: middle-clicking a placed light block in Creative gives a light item at that block's exact level (vanilla would give the default level). actions.pick_block, on by default. - Sneak + scroll to step a placed light block's level up/down one at a time (looking at it, holding a light item). Unlike right-click it clamps at 0 and the player's max instead of wrapping. actions.scroll_level, on by default. - Configurable messages.prefix — a MiniMessage snippet (a LightPlus » gradient tag by default) prepended automatically to every chat message. Use the %prefix% token to place it manually or add it to an action-bar line. - Per-language messages. With messages.follow_client_locale (on by default), each player gets the string from messages.locales.<their client language> when one exists (keyed by full locale like zh_tw or just the language zh), otherwise the English default. Console always gets the default. Ships example Traditional Chinese (zh_tw) entries. - /lightplus help (also shown with no arguments) — a formatted, gradient-headed command panel with click-to-type and hover text, listing only the sub-commands the sender can use. - /lightplus version — a panel showing plugin version, author, server/Minecraft version, Folia support, detected land-protection plugins, and metrics backends. - MessageService.sendLines for multi-line MiniMessage output that keeps click/hover interactivity (sends Components instead of legacy strings). - Named light items. The item config section gives crafted / dropped / given light items a MiniMessage display name (%level% token) and lore; item.custom_name: false restores the plain vanilla item. Different-level items already didn't stack; the name just makes the level readable. - Modrinth update check. On startup LightPlus asks the Modrinth API (off-thread, never blocking startup) for the latest release and compares it three ways: up to date, an update is available (logged + lightplus.update join notice), or the running build is ahead of the latest release (/lightplus version shows "dev build"). Configured under update_check (enabled, notify_on_join); the project id is hard-coded. Message key messages.update_available (%current% / %latest% / %url%). - Optional light-block decay (decay config section, off by default). When on, a player-placed light block is removed decay.after_seconds later; a repeating sweep clears expired blocks on their region thread. Pending lights are persisted to decay-data.yml (decay.persist, default on) — saved on shutdown and every ~60s, reloaded shortly after start — so they still decay across a restart. lightplus.decay.exempt (default op) places permanent lights; breaking a light by hand cancels its pending decay. - PlaceholderAPI expansion (identifier lightplus, registered only when PlaceholderAPI is installed): %lightplus_version%, %lightplus_lights_placed%, %lightplus_lights_mined%, %lightplus_update_available%, %lightplus_latest_version%, %lightplus_pending_decay%, and the player placeholders %lightplus_max_level%, %lightplus_holding_light%, %lightplus_held_level%. - WorldGuard lightplus-use region flag (StateFlag, default allow). Setting it to deny in a region blocks every LightPlus light-block action there — adjust, place, shift-place and both break paths — regardless of build permission, and independently of the land_protection.enabled toggle. Registered in onLoad; requires the flag registry, so it needs a server restart to take effect (not /reload). The WorldGuard API is a provided dependency (EngineHub repo) and is not shaded.
    Changed
    - Added a README.md (build / test / run-server docs) and a JUnit 5 test suite — mvn test, also run by mvn package — covering the update-check version comparison and light-level clamping. - Metrics initialisation (bStats + FastStats) is wrapped so a metrics failure logs a warning instead of aborting plugin enable. - Rewrote config.yml comments to explain the reasoning behind every option (how the land-protection check works, what volume above 1.0 does, pitch ranges, recipe shape rules, level-cap resolution, message tokens). - Sound settings, land protection, action toggles and level limits are read live, so /lightplus reload applies them without a restart. - Expanded plugin.yml command and permission descriptions. - The /lightplus command no longer carries a blanket lightplus.reload requirement; each sub-command checks its own permission, so lightplus.give can be granted independently.
    Fixed
    - MiniMessage messages containing a <gradient:#hex:#hex> (such as the new prefix) rendered as literal <gradient::> text — the legacy &#RRGGBB converter was rewriting the hex colours inside the tag. It now only rewrites hex when prefixed with &. - registerCraftLightRecipe could throw and abort plugin enable when an upgraded config.yml predated the crafting_recipe section (the shape resolved from jar defaults while items did not, producing an unmapped-symbol recipe). Recipe building is now validated up front — row count/length, single-character keys, valid materials, and every shape symbol having an items entry — and wrapped so any failure logs a warning and skips the recipe instead of disabling the plugin.
    28 downloads
  2. 1.1.3LightPlus 1.1.3Jul 7, 2026

    [1.1.3] - 2026-07-07

    Added
    - Folia support: light particle preview and recipe discovery now run through the global region and per-player entity schedulers instead of the Bukkit scheduler. - faststats metrics integration, shaded and relocated alongside bStats. - Configurable shaped crafting recipe for a light block, defined in config.yml via a generic crafting_recipe.items (key → material) map and crafting_recipe.recipe shape list, with enabled and result_level options. Reapplied on /lightplus reload. Defaults to glass border / glowstone center, matching the previous hardcoded recipe. - /lp alias for /lightplus. - The configurable crafting recipe is now auto-discovered for players on join and on /lightplus reload, alongside the stonecutter recipes. - lights_placed and lights_mined custom faststats metrics, tracking every light block placed (crafting table and right-click adjustment) and mined (block break and left-click removal).
    Removed
    - Dedicated Spigot build/compatibility path; the plugin now targets Paper (and Folia) only.
    Fixed
    - Removed the explicit net.kyori Adventure/MiniMessage dependencies (previously pinned to 4.17.0 and shaded unrelocated), letting paper-api supply its own matching Adventure version transitively — the pinned version was overriding Paper's and causing classpath conflicts (cannot access ...PlayerHeadObjectContents and similar errors).
    52 downloads
  3. 1.1.2LightPlus 1.1.2Mar 31, 2026

    [1.1.2] - 2026-03-31

    Changed
    - Bundled Adventure and MiniMessage into the shaded plugin jar so formatted messages also work on Spigot. - Updated message rendering to support both legacy & formatting and MiniMessage tags in the same config strings. - Unified Paper and Spigot message delivery so MiniMessage content is converted to Minecraft color formatting for non-Adventure paths. - Improved cross-server action bar handling with additional runtime fallbacks for Spigot compatibility. - Added and expanded spigotServer/run.sh to auto-build the latest shaded jar, copy it into the local test server, and validate the required Java runtime. - Replaced Location#toCenterLocation() usage with explicit centered coordinates for broader server API compatibility. - Removed the duplicate manual placement sound from the normal light block placement path.
    38 downloads
  4. 1.1.1LightPlus 1.1.1Feb 16, 2026

    [1.1.1] - 2026-02-16

    Added
    - bStats dependency (org.bstats:bstats-bukkit:3.1.0) to the build.
    Changed
    - Added the Shadow plugin (com.gradleup.shadow). - Configured shadowJar to include only bStats from runtime dependencies. - Relocated org.bstats classes into the plugin group package to avoid cross-plugin conflicts. - Build now produces a shaded plugin artifact via ./gradlew shadowJar.
    32 downloads
  5. 1.1.0LightPlus 1.1.0Feb 16, 2026

    [1.1.0] - 2026-02-16

    Added
    - MiniMessage support for plugin messages. - PlaceholderAPI support for player-facing messages when PlaceholderAPI is installed. - New configurable command messages: - messages.command_usage - messages.command_no_permission - messages.command_reloaded
    Changed
    - Action bar level message now uses MiniMessage formatting. - Message handling was centralized via a dedicated MessageService. - Added softdepend: [PlaceholderAPI] to plugin.yml. - Updated build configuration with PlaceholderAPI repository/dependency.
    19 downloads
  6. 1.0.0LightPlus 1.0.0Feb 16, 2026
    First Version
    15 downloads

Similar projects

Plugin →