Sueta

Vanilla Core

1.5.1

A comprehensive all-in-one SMP plugin for PvP balance, custom mechanics, and server management. (Alternative to SMP Core)

·Plugin
  1. 1.5.1latestVanilla Core 1.5.1Jul 5, 2026
    111 downloads
  2. 1.5.0Vanilla Core 1.5.0Jul 2, 2026

    [1.5.0] - 2026-07-02

    Added
    - Added Faster Happy Ghasts (features.faster-happy-ghasts) with configurable flying speed for newly spawned happy ghasts. - Added Potion Bans (features.potion-bans) with per-effect tier flags in blocked-effects (effect:tier1:tier2) and GUI controls for Tier 1/Tier 2 toggles. - Added Ritual (features.ritual) with /ritual start, /ritual status, and /ritual cancel, plus optional end effects: - Beacon beam (features.ritual.end-effect-beacon-beam) - Beacon beam duration (features.ritual.beacon-beam-duration-seconds) - Firework burst (features.ritual.end-effect-firework-burst) - Added standalone combat restriction features: - Bed Bombing Ban (features.bed-bombing-ban) - TNT Minecart Ban (features.tnt-minecart-ban) - Villager Killing Ban (features.villager-killing-ban) - Crystal PvP Ban (features.crystal-pvp-ban) - Anchor Restriction (features.anchor-restriction) - Pearl Restriction (features.pearl-restriction) - Added Item Cooldowns (features.item-cooldowns) for GUI-managed cooldowns (golden apple, enchanted golden apple, ender pearl, wind charge) with optional extra material entries via config. - Added Spectator On Death (features.spectator-on-death) to move players into spectator mode after death. - Added Ender Chest Item Limiter (features.ender-chest-item-limiter) with Item Limiter-style GUI management and support for custom item matching (customModelData, displayName, potionType) to block specific items from being stored in ender chests. - Added persistent social data layer with SQLite-backed player preferences and player blocking storage. - Added Folia-aware scheduler utility used for async/sync/repeating task safety. - Added social/communication engine under /smp including PM/reply, mentions with notifications, URL formatting, social spy, chat/PM/mention toggles, player block/unblock/list, and command-level toggles/cooldowns from config. - Added announcements engine with configurable interval and messages. - Added teleport stack: /tpa, /tpahere, /tpaccept, /tpdeny, /spawn, /setspawn, /back, /tp, and /tphere, with configurable safety checks. - Added persistent homes and warps systems with GUI navigation (/home, /homes, /sethome, /delhome, /warp, /warps, /setwarp, /delwarp). - Added kits system with /kit, /kits, cooldown persistence, and first-join starter kit support. - Added utility/admin command pack: /fly, /god, /speed, /repair, /giveitem, /workbench, /anvil, /ec, /invsee, and /clearinv.
    Changed
    - Bumped config version to 9 so new defaults and migrations are applied automatically. - Registered standalone social commands /msg, /reply, and /socialspy while keeping /smp msg, /smp reply, and /smp socialspy available. - Updated permission defaults so smp.msg and smp.reply now default to true (no OP required). - Rebranded the plugin display name and user-facing branding to "Vanilla Core" across plugin.yml, runtime messages, logs, and documentation. - Switched the admin command to /smp only and removed the /vanilla alias. - Removed legacy vanillacore.* permission mapping and standardized permission checks on smp.* nodes. - Upgraded /smp reload to support module-scoped hot reload targets: all, config, messages, menus, and features, with elapsed-time feedback and per-module failure reporting. - Added /smp version with smp.version permission for quick in-game/admin version checks. - Update checks now fetch the latest release version directly from Modrinth (vanillacorewastaken) while keeping CDN-backed remote feature-control and maintenance messaging. - Split combat restrictions into separate features instead of one combined settings screen. - Extended /ritual start to support runtime overrides: /ritual start [time] [color] with durations like 30s, 1m, 1h, 1d, and 1h30m, plus color tab completion. - Added a full Ritual settings GUI in /smp menu (right-click Ritual) for duration, radius, particle color, start sound toggle, and end-effect toggles. - Reworked Potion Bans config and GUI: removed ban-all/ban-tier2 keys and switched to per-effect tier entries (effect:tier1:tier2) with computed "Ban All Potions" behavior. - Main menu pagination now clamps page bounds and keeps feature slots dedicated to features so overflow moves to later pages automatically. - Removed the auto-generated messages.yml codebase-string-catalog section so messages.yml now contains only proper runtime message keys. - Centralized feature card/menu text into messages.yml under feature-menus.* and moved Infinite Restock/Netherite GUI title and control labels to message keys. - Updated docs to reflect runtime-only messages.yml keys and Ender Chest Item Limiter message keys.
    Fixed
    - MiniMessage Crash: Fixed an IllegalArgumentException crash by renaming camelCase tags ({configPath}, {maxLevel}, {customModelData}, etc.) to snake_case in code and config. - Menu Interaction Bug: Fixed a bug where left-click and right-click actions on features failed in the main menu due to double-prefixing of the configuration path (e.g., features.features.ritual). - Docs Styling: Stripped emojis from the documentation and injected scalable React-style SVG icons via CSS masking in the Docusaurus frontend for a sleek, professional UI. - Documentation: Rewrote README.md to use human-friendly descriptions and fully documented missing features like Server Restarts, Mob Manager, Minimap Control, and ported AirCore features (TPA, Kits, Homes, Utility Commands, Social Systems).
    171 downloads
  3. 1.4.1Vanilla Core 1.4.1Mar 18, 2026
    ## [1.4.1] - 2026-03-19 ### Fixed - : replaced console dispatch with direct delivery so Xaero control strings are sent as chat text without Brigadier JSON parsing errors during GUI clicks ### Security - All plugin GUIs now use (a typed ) as the inventory holder instead of ; click and close dispatch in and all individual feature listeners now identify plugin GUIs by holder type rather than title string, preventing spoofed inventory titles from triggering plugin GUI handlers - : added handler that cancels any drag action into plugin GUIs (covers -backed inventories and )
    250 downloads
  4. 1.4.0Vanilla Core 1.4.0Mar 6, 2026
    Fixed
    - VanillaCorePlugin: removed duplicate "vanillacore" entries in the data-folder migration array (was listed three times) - VanillaCorePlugin: re-added "SMPCore" legacy alias to data-folder migration array so configs from that legacy folder name are migrated correctly - ConfigManager: corrected default config key features.mace-limiter.mace-crafted → features.mace-limiter.maces-crafted so config migration properly seeds the mace craft counter - ConfigManager: added explicit migration step to remove the old boolean mace-crafted key and convert its value to the new integer maces-crafted key in existing configs - ConfigManager: fixed migration log message reporting total defaults instead of actually-added entry count; also removed dead empty features array - ConfigManager: bumped CURRENT_CONFIG_VERSION to 3 to reflect the new features.stop-item-despawn config section - DimensionLockFeature.toggle(): CDN-sourced messages are now escaped with MiniMessage.escapeTags() before being passed to MessageManager.parse() to prevent MiniMessage tag injection from remote payloads; also added null checks on CDN message getters - DimensionLockFeature: made sharedListener and registration flag static so NetherLockFeature and EndLockFeature share one DimensionLockListener instance instead of each registering their own, preventing every PlayerPortalEvent from firing twice - DimensionLockFeature.toggle(): added remote-disable and maintenance-mode checks (matching BaseFeature.toggleDefault()) before processing the toggle - FeatureManager.getClasses(): removed // Skip classes that can't be loaded comments from both catch blocks (production code no-comment rule); also added null check for directory.listFiles() return value - OnePlayerSleepListener: player name and display name are now escaped with MiniMessage.escapeTags() before substitution to prevent tag injection; sleep message is parsed once and reused for all recipients; skip message is also parsed once outside the loop - OnePlayerSleepListener: sleep and skip messages now parsed through MessageManager.parse() so MiniMessage tags (e.g. <yellow>{player}) render correctly instead of showing literally - MaceLimiterListener: shift-click mace crafting now validates cursor is empty and inventory has space before consuming ingredients; result is added via addItem() instead of setItemOnCursor() to properly handle shift-click semantics - MaceLimiterListener: shift-click mace crafting now sets matrix slots to null instead of setAmount(0) when an ingredient stack reaches zero, preventing ghost items in the crafting grid - ServerRestartFeature: setScheduledRestartsEnabled(false) now cancels the running checker task, preventing it from continuing after scheduled restarts are disabled - ServerRestartFeature: startScheduledRestartChecker() now stores its task ID; reload() and onDisable() cancel the old checker task before starting a new one, preventing accumulated duplicate restart-checker tasks across reloads - StopItemDespawnListener: double-death within 60-tick window no longer causes the second death location to be prematurely removed; previous cleanup task is cancelled before scheduling a new one - StopItemDespawnListener: stale UUID accumulation fixed — onItemDespawn now always removes item UUID from deathDrops even when feature is disabled, preventing unbounded set growth for items destroyed by lava/void/explosions - StopItemDespawnListener: proximity radius check changed from < 16 to <= 16 so items spawning exactly 4 blocks from the death location are included - StopItemDespawnListener: onItemMerge now checks isEnabled() to avoid silently transferring tags when feature is toggled off mid-session - MenuClickListener: ARROW back-button click in Mob Manager World Select GUI now also validates the slot (inventorySize - 3) to prevent any future ARROW item from accidentally triggering navigation - FeatureManager.getClasses(): added null check for directory.listFiles() return value to prevent NullPointerException when an I/O error occurs in dev/directory mode - InvisibleKillsFeature: standardised default death-message fallback tag from <obfuscated> to <obf> to match the default in InvisibleKillsListener - MinimapControlFeature.sendTellraw(): switched from player name to UUID when targeting the tellraw command to be future-proof against edge cases - NetheriteDisablerListener: event.getView().getPlayer() guarded with instanceof Player pattern-match to prevent a ClassCastException if a non-player human entity ever triggers the smithing event
    Added
    - Stop Item Despawn feature: items dropped when a player dies will never despawn naturally; they persist indefinitely until picked up; enabled via features.stop-item-despawn.enabled - Back button (ARROW) to Shield Mechanics settings GUI (slot 22) to navigate back to the main menu - Back button (ARROW) to Mob Manager World Select GUI (slot size-3) to navigate back to the main menu
    Changed
    - VanillaCorePlugin: scheduled CooldownManager.cleanup() as an async repeating task (every 5 minutes) to evict expired cooldown entries for offline players and prevent unbounded memory growth - CDNManager: removed the unused CachedData inner class - ChatInputListener: migrated from deprecated AsyncPlayerChatEvent (Bukkit) to AsyncChatEvent (Paper) and PlainTextComponentSerializer for message extraction - Breach Swap: swapping between a Breach-enchanted mace and a sword/axe is now allowed freely; the first attack within 500ms of that swap is blocked instead, removing the attribute-swap PvP advantage without restricting movement - Breach Swap GUI: the mace icon in the settings menu now displays with an enchantment glint
    52 downloads
  5. 1.3.3Vanilla Core 1.3.3Mar 1, 2026
    Changed
    - Migrated all player messaging from legacy §-code strings to Adventure API (Component/MiniMessage) across all command and listener classes - Migrated UpdateNotificationListener from BungeeCord chat API to Adventure API (ClickEvent, HoverEvent, Component builder) - Fixed InfiniteRestockFeature blacklist GUI: statusText/statusColor now use MiniMessage tags (<red>, <green>) instead of §-codes so they render correctly when passed to MessageManager.parse() - Item Limiter: findMatchingItemKey no longer scans all configured limits linearly. A Material → key index is built at load time so lookups are O(1) for the common case instead of O(n limits) - Item Limiter: inventory scan is now distributed across ticks (1 player per tick) instead of checking every online player in a single 20-tick burst - Item Limiter: getPlayerItemCount no longer re-runs findMatchingItemKey for each inventory slot — the target limit is resolved once and ItemLimit.matches() is used directly - Item Limiter: potion material detection replaced toString().contains("POTION") with a proper EnumSet<Material> covering POTION, SPLASH_POTION, and LINGERING_POTION - Completed Adventure API migration: replaced all remaining legacy § color codes in ServerRestartFeature, ShieldMechanicsFeature, MinimapControlFeature, ItemLimiterListener, MaceLimiterListener, InvisibleKillsFeature, and MainMenu with MiniMessage format; GUI title constants in MaceLimiterFeature, ShieldMechanicsFeature, MobManagerFeature, and ServerRestartFeature converted from §-coded strings to Component constants; corresponding listeners updated to use InventoryView.title() (Component API) for title matching - ServerRestartFeature: migrated from BungeeCord ActionBar API and Bukkit BossBar to Adventure API (player.sendActionBar, player.showTitle, net.kyori.adventure.bossbar.BossBar) - MainMenu: replaced deprecated getLore() + §-detection with lore() + PlainTextComponentSerializer for lore inspection - config.yml: migrated all message values from § codes to MiniMessage format - Added JUnit 5 (junit-jupiter:5.10.0) as a test dependency - ServerRestartListener: replaced non-thread-safe HashMap with ConcurrentHashMap for awaitingInput; async chat handler now uses atomic remove-and-null-check pattern to eliminate TOCTOU race - UpdateNotificationListener: CDN-provided title and message text is now escaped with MiniMessage.escapeTags() before parsing to prevent tag injection - MinimapControlFeature: world name, environment, and minimap mode values are escaped with MiniMessage.escapeTags() before being embedded in MiniMessage strings - MessageManager.get(String, Object...): now throws IllegalArgumentException immediately when an odd number of replacement arguments is supplied or a key is null, instead of silently ignoring the trailing argument - ShieldMechanicsFeature: extracted shared stun-lore assembly into buildStunLore(boolean, int) helper to eliminate duplication between buildMaceStunItem and buildAxeStunItem - ServerRestartFeature.getRestartMessage: consolidated {time} and {player} substitution into a single overloaded method; callers no longer chain .replace("{player}", ...) at the call site - MobManagerFeature.onRightClick: disabled warning now uses the centralized mob-manager.feature-disabled messages.yml key instead of a hardcoded literal - InfiniteRestockFeature, ItemLimiterFeature: fillBorder now uses meta.displayName(Component.empty()) instead of the deprecated meta.setDisplayName(" ") - messages.yml: removed UTF-8 BOM from file header
    Fixed
    - VanillaCommand reload: each feature's reload() is now wrapped in its own try/catch; a failure in one feature no longer aborts the reload loop for all subsequent features - MainMenu: removed unreachable duplicate slot-50 handler that could never be reached after the earlier slot-50 Wiki handler returned - MainMenu: removed duplicate import net.kyori.adventure.text.Component import
    Added
    - Fixed DimensionLockConfig default lockedMessage values to use MiniMessage (<red>The End/Nether is currently locked!) - Fixed InvisibleKillsConfig default deathMessage to use MiniMessage ({victim} was killed by <obfuscated>?????????) - Documentation: updated all §-coded examples in docs/docs/configuration.md to MiniMessage format
    39 downloads
  6. 1.3.2Vanilla Core 1.3.2Feb 26, 2026
    ### Added - Shield Mechanics feature: configurable shield stun when a player is hit while blocking - Mace hitting a blocking player puts their shield on cooldown - Axe hitting a blocking player puts their shield on cooldown - Stun duration adjustable per weapon type (in ticks) via GUI - All settings accessible via /vanilla menu → Shield Mechanics → Right Click ### Fixed - Enchantment Limiter config GUI: clicking an enchantment on page 2+ would apply the action to the enchantment at the same slot on page 1 instead. Caused by firing synchronously, which wiped the stored page number before the new page was written. The page is now recorded after the inventory opens. Rare in practice — only affects servers with enough custom enchantments (from datapacks or other plugins) to fill more than 45 slots
    32 downloads
  7. 1.3.1Vanilla Core 1.3.1Feb 26, 2026
    Fixed
    - Enchantment Limiter event handlers (enchanting table, anvil, pickup) no longer run when the feature is disabled in config - Players who disconnect while the Enchantment Limiter config GUI is open no longer leave stale session data server-side - Removed leftover PrepareAnvilEvent handler that was unused - Villager discounts from curing zombie villagers and from the Hero of the Village effect now apply correctly. The old code was rebuilding MerchantRecipe objects from scratch on every interaction, which dropped any price multiplier changes Minecraft had set. Recipes are now modified in-place instead
    Changed
    - Default enchantment limits raised closer to vanilla max levels: - Sharpness and Power: 4 → 5 - Protection, Fire Protection, Blast Protection, Projectile Protection, Feather Falling: 3 → 4 - Unbreaking: 2 → 3 - Main command class renamed from SmpCommand to VanillaCommand
    Added
    - GitHub Actions workflow that publishes to Modrinth automatically when a GitHub release is published. It builds from source, pulls the changelog for that version, and uploads via mc-publish - PR labeler config updated to actions/labeler@v5 syntax
    23 downloads
  8. 1.3.0Vanilla Core 1.3.0Feb 19, 2026
    Fix a bug
    32 downloads
  9. 1.2.1SMP Core (Free) 1.2.1Jan 13, 2026

    [1.2.1] - 2026-01-13

    Changed
    - Open Source Migration: Project is now fully open source under MIT License - Changed from custom restrictive license to MIT License - Source code now publicly available on GitHub - Community contributions now welcome via pull requests
    39 downloads
  10. 1.2.0SMP Core (Free) 1.2.0Jan 2, 2026
    Version 1.2.0 - January 2, 2026
    #### New Features Server Restart Manager - Schedule automatic server restarts at specific times - Choose from daily, weekly, or one-time restart schedules - Countdown warnings shown to players before restart - Multiple notification styles: chat messages, boss bar, action bar, or screen titles - Cancel restarts anytime through the GUI Redesigned Main Menu - Quick links to Discord, Wiki, and Modrinth - Donate button to support development - Cleaner layout with everything accessible from one place Update Notifications - Plugin now checks for updates and notifies admins - Clickable links to download new versions Minimap Control - Control Xaero's Minimap features server-wide - Fair mode for competitive play (disables cave map and radar) - Per-world settings available #### Improvements - One Player Sleep now broadcasts customizable messages - Item Limiter can now drop excess items instead of deleting them - Enchantment Limiter now has a full GUI with pagination - Mob Manager shows helpful descriptions for each setting - Better dimension lock behavior (simpler on/off toggle) #### Bug Fixes - Fixed a potential crash with dimension locks - Mace recipe management no longer resets all recipes --- Note for server owners: Make sure your spigot.yml has a valid restart-script configured for the restart feature to work properly!
    89 downloads
  11. 1.1.0SMP Core (Free) 1.1.0Dec 27, 2025

    [1.1.0] - 2024-12-27

    Added
    - MessageManager & messages.yml: Centralized message system for all plugin strings - All user-facing messages now configurable in messages.yml - Supports color codes with & prefix - Placeholder support with {placeholder} format - Messages are cached for performance - Hot-reload support with /smp reload - Enchantment Limiter: Completely rewritten from EnchantLimiter plugin approach - Efficient enchantment caching with cross-version name support - Handles both item enchantments and enchanted book stored enchants - Triggers: enchanting table, anvil, inventory click, item pickup - Enchantment name mapping for compatibility (sharpness ↔ damage_all, etc.) - Set limit to 0 to completely ban an enchantment - ProGuard Obfuscation: Build-time code obfuscation for distribution protection and jar file space - Item Limiter GUI System: Complete GUI-based item limit management - Main menu with view, add, banned items, and reload options - Add item limits by dragging items and setting quantities - Ban Mode toggle: One-click option to ban items (sets limit to 0) - Banned Items section: Separate view for items with limit = 0 - View and edit existing limits with visual item display - Delete limits with shift+click - Supports custom model data, display names, and potion types - Advanced Item Matching: Item limits now support: - Custom model data matching for modded/custom items - Display name matching for named items - Potion type matching for specific potion variants - Real-time Item Enforcement: Continuous background task checks player inventories - Pickup Prevention: Prevents picking up items that would exceed limits - Inventory Click Prevention: Blocks taking items from containers if it exceeds limits - Mob Manager Feature Enhancements: - Per-world configuration: Disable mobs in specific worlds only - World Selection GUI: New GUI to select which world to configure - Non-spawn-egg entities: Support for Iron Golem, Snow Golem, Wither, Ender Dragon - Global Settings GUI: Configure chunk cleanup and WorldGuard bypass - Chunk Cleanup: Optionally remove disabled mobs when chunks load (WARNING: Destructive!) - WorldGuard Integration: Optional bypass for mobs in WorldGuard protected regions - Mace Limiter GUI: New settings GUI accessible via right-click in main menu - Increase/decrease max maces with click and shift-click - Reset craft count button - Visual display of current limit status - Verbose Logging: Optional debug logging for all features (plugin.verbose in config) - Dynamic Recipe Management: Mace recipes automatically removed when limit reached - Infinite Restock GUI: Full GUI-based control for villager trading - Set max trades per villager (0 = unlimited) - Toggle price penalty removal (demand = 0) - Toggle applying to wandering traders - Uninstall mode to restore original trade limits - Command: /smp infiniterestock opens the manager (permission smpcore.infiniterestock)
    Changed
    - Enchantment Replacement → Enchantment Limiter: Renamed and completely rewritten - Now uses efficient caching system from EnchantLimiter plugin - Cross-version enchantment name mapping - Simplified event handling with direct item modification - Separate config from Custom Anvil Caps - Custom Anvil Caps Listener: Simplified implementation - Removed dependency on EnchantmentUtils for merging - Direct enchantment capping at anvil/enchanting table - Better protection enchantment filtering - Item Limiter Rewrite: Completely rewritten item limiting system - New ItemLimiterManager for centralized limit management - New ItemLimit class for advanced item matching - Removed check-method config (now uses continuous background checking) - Added proper listener unregistration when feature is disabled - Config Default: Verbose logging now defaults to false - Version bump to 1.1.0 - Improved feature toggle system with better state management - Enhanced reload functionality across all features - Infinite Restock Rewrite: Ported from InstantRestock with persistence - Back up original trade limits in PDC and restore on uninstall - Apply on interact, merchant open, and trade acquisition - Mob Manager GUI: Main GUI now shows per-world mob configuration - Back button returns to world select instead of main menu - Mob Spawning → Mob Manager: Renamed feature for clarity - Dependencies: Removed unused ProtocolLib soft-dependency, added WorldGuard soft-dependency
    Removed
    - Enchantment Replacement Feature: Replaced by Enchantment Limiter - Item Bans Feature: Removed separate item ban system (use Item Limiter with limit=0 instead) - Effect Bans Feature: Removed potion effect ban system (to be reimplemented later) - BanManager: Removed as item/effect bans are now handled by Item Limiter - ProtocolLib Dependency: Removed unused soft-dependency on ProtocolLib
    Fixed
    - Feature Unload: Listeners are now properly unregistered when features are disabled - Memory Management: Proper cleanup of sessions and caches on feature disable - Mace Limiter: Recipes are now properly restored when the feature is disabled - Mace Limiter: Recipes are now automatically disabled when the craft limit is reached - Mace Limiter: Adjusting max maces now properly updates recipe availability - Commands: Added permission checks to /smp command - menu now requires smpcore.menu permission - Commands: Tab completion now only shows subcommands the player has permission for - Villager Trades: Consistent application after trade clicks and profession upgrades
    105 downloads
  12. 1.0.0v1.0.0Dec 2, 2025

    🎉 Initial Release - v1.0.0

    ⚔️ Combat & PvP

    - Item Limiter - Limit items like golden apples, totems, pearls - Mace Limiter - Server-wide crafting limit with announcements - Netherite Disabler - Block netherite gear usage

    📖 Enchantments

    - Custom Anvil Caps - Prevent enchants from exceeding set levels - Enchantment Replacement - Auto-reduce overpowered enchants - Item Whitelist - Exempt specific items from scans - Full command suite: /smp enchant

    🚫 Bans

    - Item Bans (Maces, Anchors, Crystals, Pearls, Netherite) - Enchantment Bans

    🌍 Dimensions

    - Nether Lock & End Lock with toggle commands

    ⚙️ Custom Mechanics

    - Invisible Kills - Hide killer name when invisible - Item Explosion Immunity - Protect items from TNT/creepers - Infinite Restock - Villagers never run out of trades - One Player Sleep - Single player can skip night

    🖥️ GUI

    - Interactive settings menu via /smp - Left-click toggle, right-click configure - Paginated menu system
    121 downloads

Similar projects

Plugin →