Event-PVP-PluginСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачать
ВЕРСИИ (9)
release
Event-PVP-Plugin 1.1.3
1.1.328 окт. 2026 г.12Minecraft: 26.2, 26.3paper, purpur, spigot
Что нового
## [1.1.3] - 2026-10-28
Web panel layout and reliability improvements. The existing dark/green design, public API endpoints and configuration formats are preserved.
### Inventory display
- Fix inconsistent slot sizes, collapsing empty armor slots and overflowing inventory grids. Load shared inventory styles statically and scope equipment-editor styles so visiting the editor no longer changes backup previews.
- Align the main inventory and hotbar to nine equal columns; keep horizontal scrolling inside the inventory on narrow screens.
- Position stack counts and enchantment indicators without changing slot dimensions. Normalize inventory data before rendering and counting, excluding AIR, invalid slots and duplicate entries.
- Show the equipment export action once. Clear previous backup data while loading and enable preview actions only for the current loaded backup.
- Keep item tooltips within the viewport and support focus, tapping and Escape dismissal.
### Loading, saving and sessions
- Cancel superseded player and backup requests and ignore stale responses.
- Bind restore and delete operations to their original player and backup; prevent duplicate submissions while requests are pending.
- Track configuration loading per category, show failures and offer retries without replacing edits in other categories. Do not save categories that failed to load.
- Save immutable snapshots and update baselines only for confirmed successes. Preserve edits made during a save and handle partial success per category.
- Present revision conflicts after all saves finish; reload only after confirmation to discard unsaved changes.
- Share request handling, bound read request duration, clean up reads and status polling on logout, and prevent old write responses from expiring a new login session. Writes are not retried automatically.
### Layout, accessibility and localization
- Improve wrapping of headers, buttons and notifications; keep mobile navigation before page content.
- Constrain dialog height, manage initial focus and focus return, trap keyboard focus and support Escape through existing close handlers.
- Preserve open editor inputs during language changes and add shared panel messages in all seven supported languages.
### Webviewer design and interaction
- Darken the default background, panels and cards, improve metadata contrast and use solid primary buttons with readable labels. Derive button label colors for custom accents without changing saved theme values.
- Replace the external Font Awesome dependency and decorative interface emojis with a shared local SVG registry, including dynamically rendered views and enchantments. Clean up interface decoration in all seven languages while preserving Minecraft textures and user content.
- Make all seven navigation destinations native keyboard-accessible buttons with an accessible current-page indicator. Add keyboard activation for editor tabs, item pickers, armor slots and inventory editing, and accessible names for icon actions, theme fields and switches.
- Synchronize theme pickers, hexadecimal fields, loading and reset defaults; fix the secondary-text configuration mapping and reject invalid color values. Existing saved themes are not automatically migrated.
- Improve narrow layouts, account for wrapped header height in the sidebar, keep switches stable in dialogs and prevent notifications from covering dialog actions. Preserve nine inventory columns and 42-pixel slots.
- Announce save status accessibly and respect reduced motion and reduced transparency preferences.
### Verification
- Add 18 Chromium regression tests with simulated API responses covering layout, editor visit order, 320/360/768/1024/1440 pixel viewports, 200% CSS zoom, local SVGs, keyboard inventory editing, theme roundtrips, primary-button contrast, reduced motion, request races, partial saves, revision conflicts, session lifecycle, dialogs and localization.
- Extend `tools/verify.ps1` with syntax checks for the shared runtime and item helpers and optional browser checks through `-BrowserTests`.
- Design-update verification passed: 18 browser tests and 3 web safety tests. The earlier backend verification passed 447 Java tests; Java tests and JAR packaging were not rerun for this frontend-only update.
- Browser tests use fixtures; live-server inventory restoration was not exercised. No new configuration migration is introduced by this release.
release
Event-PVP-Plugin 1.1.2
1.1.228 окт. 2026 г.6Minecraft: 26.2, 26.3paper, purpur, spigot
Что нового
## [1.1.2] - 2026-10-28
Security and reliability improvements for stakes, payouts, world operations and the web panel. Existing external web binding defaults are preserved. No dependency upgrades were made.
### Stakes and payouts
- Validate item quantities, kits, players and money limits before funding a match. GUI stakes are removed once and are not deducted again at match start.
- Check Vault withdrawal and deposit responses; compensate only confirmed withdrawals. Reject non-finite amounts and overflowing combined pots.
- Persist payout components and stable receipts before delivery. Preserve inventory overflow and offline claims, and deduplicate completed payouts across restarts.
- Keep uncertain external operations for administrator review instead of automatically repeating them. Add `/eventpvp payouts list|inspect|resolve` with logged decisions.
- Migrate legacy payout YAML with a backup, preserve malformed records for inspection, and use atomic file replacement for journals.
### World operations
- Reserve overlapping world paths and reject conflicting jobs.
- Restore archives into exclusive staging directories before publishing without overwriting an existing target. Clean up only directories owned by the job.
- Reject unsafe filesystem links, check player evacuation and world unload results, and limit archive entry counts and actual extracted bytes.
- Bound world I/O concurrency, retain running jobs until completion, and record interrupted jobs during shutdown.
### Web panel and configuration
- Escape configuration values in rendered HTML and replace dynamic inline handlers with registered callbacks.
- Consume login tokens atomically, coordinate session expiry, use Secure cookies for configured HTTPS URLs, and require POST for logout.
- Bound request queues and expensive operations; validate JSON types and enforce request deadlines.
- Coordinate configuration writes, apply Bukkit changes on the main thread, and detect stale saves through revisions with HTTP 409 conflicts.
- Report saved, applied, deferred and failed outcomes. Defer gameplay reloads while LiveTrade sessions are active; report partial failures on manual reloads.
### Operations and verification
- Isolate shutdown steps so an earlier failure cannot skip later journal and return-state saves.
- Save statistics through an ordered writer using immutable snapshots; expose payout, world-job and persistence diagnostics.
- Bound texture import dimensions and extracted data, stage new textures, and retain existing textures after a failed import.
- Add regression coverage for recovery, partial payments, GUI stake ownership, conflicting world jobs, configuration writes, authentication races, texture limits and shutdown isolation.
- Add `tools/verify.ps1` with an explicit JDK 25-or-newer check and JavaScript checks. Build with JDK 26 using `mvn clean package`; 447 Java tests and 3 separate web tests pass.
### Migration and release validation
See [Hardening 1.1.2](../HARDENING_1.1.2.md) for limits, recovery commands and rollback precautions. Back up plugin data before the first start: the old plugin cannot safely consume the new payout ledger after migration and further payouts.
Real-server integration with Purpur, Vault economy, InventoryBackup and Multiverse remains pending. Unit and MockBukkit tests do not replace restart-recovery, inventory-restore and filesystem-link checks on the deployment platform. Exactly-once external execution across a process crash is not guaranteed; uncertain outcomes require administrator review.
release
Event-PVP-Plugin 1.1.1
1.1.11 окт. 2026 г.81Minecraft: 26.2, 26.3paper, purpur, spigot
Что нового
## [1.1.1] - 2026-09-23
Maintenance release. It has updated **Minecraft 26.3** support, closes several gaps in the web panel's security, updates the build toolchain and corrects the compatibility documentation. You don't need to migrate any config. Existing `web-config.yml` files keep working, and the new options default to the old behaviour.
---
### 🌟 Release Highlights
- **Minecraft 26.3 support:** One JAR now runs on Purpur/Paper **26.2 and 26.3** reliably.
- **Hardened web panel:** Requests from foreign origins are rejected. There are now limits on request size and login attempts, and the IP allowlist is actually enforced.
- **Thread-safe web actions:** Reloads and other actions triggered from the panel now run their Bukkit work on the server main thread.
- **Modernized build:** Current Maven plugins and test libraries, and the old build workarounds are gone.
---
### 🚀 Detailed Changes
#### 1. Minecraft 26.3
- The plugin compiles without warnings against `purpur-api 26.3`. The API diff between 26.2 and 26.3 only adds things: nothing was removed from `Material`, `EntityType`, `Sound`, `ItemType`, `Enchantment` or `PotionEffectType`.
- Tested on Purpur 26.3 (build 2639): plugin start, `/eventpvp reload` and the web panel.
- `api-version` stays at `26.2`, so the same JAR loads on 26.2 and 26.3 servers.
- New Maven profile `mc263` builds against the 26.3 API: `mvn -Pmc263 package`.
- **Web panel icons:** 8 explorer-map icons renamed to their final 26.3 item names: `ABANDONED_CAMP_MAP`, `BURIED_ANCIENT_CITY_MAP`, `BURIED_MINESHAFT_MAP`, `BURIED_TRIAL_CHAMBERS_MAP`, `JUNGLE_PYRAMID_MAP`, `OCEAN_MONUMENT_MAP`, `SWAMP_HUT_MAP`, `WOODLAND_MANSION_MAP`.
- The fallback `items.texture-source` now points at the `26.3` asset branch instead of `1.21`.
#### 2. Web Panel Security
- **No more CORS origin mirroring:** Before, the server reflected every `Origin` back with `Access-Control-Allow-Credentials: true`. `SameSite=Strict` ignores ports, so a page on another port of the same host (a map viewer, for example) could have used the admin cookie. Now only same-origin requests and requests from the configured `public-url` are accepted. Anything else gets **403**.
- **Request size limit:** Request bodies are capped at 2 MB. Larger requests get **413**. Line breaks in request bodies are also kept intact now.
- **Login rate limit:** At most 10 login attempts per minute per IP. Further attempts get **429**.
- **`security.allowed-ips` is enforced:** The option was already documented but never checked. An empty list still means every IP is allowed.
- **`security.required-permission` is honoured:** The permission used to be hard-coded to `eventpvp.admin.web`.
- **New option `security.bind-session-to-ip`** (default `false`): a session is only valid from the IP it was created on.
- The HTTP server uses a small thread pool (4 threads) instead of a single thread, so one slow request no longer blocks the whole panel.
#### 3. Thread Safety
- `/api/reload`, switching the inventory provider, saving `config.yml` and looking up players by name all run their Bukkit work on the server main thread, with a 30 s timeout. Before, they ran on the HTTP thread and competed with the server tick.
#### 4. Build & Tooling
- `maven.compiler.release=25` replaces separate `source`/`target`.
- Updated: maven-compiler-plugin 3.15.0, maven-shade-plugin 3.6.2, maven-surefire-plugin 3.5.6, JUnit 5.14.4, Mockito 5.23.0, AssertJ 3.27.7, PlaceholderAPI 2.12.3. The PlaceholderAPI repository URL is updated as well.
- Removed:
- the Groovy manifest workaround
- the stray `paper-api 1.21-R0.1-SNAPSHOT` test dependency
- the dead Sonatype and Spigot repositories
- the `-Dnet.bytebuddy.experimental=true` flag
- `dependency-reduced-pom.xml` is no longer tracked by Git.
#### 5. Logging
- A broken entry in `event_stats.yml` is logged with its key instead of being skipped silently.
- `MultiverseHelper` writes a debug message when resolving a clone source fails, instead of swallowing the error.
#### 6. Documentation
- **Compatibility matrix corrected:** Paper/Purpur 1.21.x and 1.20.x can't load a plugin with `api-version: 26.2`. On top of that, the plugin needs Java 25 bytecode support and Adventure 5. Supported now: **26.2 and 26.3**.
- **Adventure note corrected:** Adventure 5.2.0 is shaded but **not relocated**. Relocating it would break Paper methods that take a `Component`. The 1.1.0 notes said otherwise.
- README, README_DE and the Modrinth description now list the correct server versions and Java 25.
- Added notes on running the panel behind a reverse proxy with HTTPS, and on `allowed-ips` and `bind-session-to-ip`.
---
### 🧪 Quality
| Check | Result |
|---|---|
| Unit, integration and MockBukkit tests | **370 / 370 passing** (10 new) |
| i18n audit (D1–D11, console, self-tests) | **clean** |
| Compilation against Purpur 26.2 and 26.3 | **0 warnings** |
---
### ⚙️ Technical Specifications
| Component | Version |
|---|---|
| **Plugin Version** | `1.1.1` |
| **Target API** | `purpur-api:26.2.build.2618-stable` (profile `mc263`: `26.3.build.2639-experimental`) |
| **api-version** | `26.2` |
| **Supported Server Engines** | Purpur / Paper / Pufferfish 26.2 and 26.3, Spigot 26.2+ |
| **Java** | 25+ |
| **Kyori Adventure** | `5.2.0` (shaded, not relocated) |
release
Event-PVP-Plugin 1.1.0
1.1.019 авг. 2026 г.74Minecraft: 26.2, 26.3bukkit, paper, purpur, spigot
Что нового
# Changelog 1.1.0 (Release)
## [1.1.0] - 2026-08-18
This is the official release of **Event-PVP-Plugin 1.1.0**, featuring full **dual-platform compatibility for Purpur 26.2 and Vanilla Spigot 26.2**, a complete overhaul of the GUI/trading system, modern **Kyori Adventure 5.2.0** text formatting with true RGB color support, total deprecation cleanup under **Java 21 LTS**, unified sub-command handling, and 100% clean localization across all 7 supported languages.
---
### 🌟 Release Highlights
- **Full Dual-Platform Compatibility (Purpur 26.2 & Spigot 26.2):** Native support for Purpur and Paper features (asynchronous teleportation, Adventure components, Paper Registry TagKeys) with seamless, zero-crash fallback to Spigot standard APIs.
- **Modern LiveTrade GUI System:** The legacy 16-class GUI system has been completely retired and archived into `old-files/`, replaced by a unified, real-time `LiveTrade` architecture and `LiveTradeBridge`.
- **Adventure Text & True RGB:** Complete migration of all chat messages, titles, hover tooltips, and clickable actions to Kyori Adventure 5.2.0 (shaded & relocated to prevent server classloader collisions).
- **Interactive Chat & SubCommand Unification:** Clickable chat action buttons for challenges, invites, and tokens now delegate directly to unified subcommands (`AcceptSubCommand`, `DenySubCommand`, `RespondSubCommand`).
- **100% Clean Localization Audit (i18n D1–D11):** All 11 detectors report 0 Critical and 0 Warnings. 284 legacy orphaned GUI keys safely pruned across all 7 language bundles (`de`, `en`, `es`, `fr`, `ja`, `pl`, `ru`) while preserving 100% key parity (815 master keys per language).
- **Total Deprecation & Warning Cleanup:** 100% clean compilation against Java 21 LTS, resolving all compiler deprecation and platform-specific warnings.
- **Automated Test Suite & JaCoCo Coverage:** 360 comprehensive unit, integration, and MockBukkit tests across 50 test classes (100% green) verifying dual-platform adapters, in-memory Bukkit listeners (friendly fire, spectator recovery, world protection, request cleanup, delayed payouts, stranded player rescue), trade bridges, item migrations, inventory guards, safe location resolvers, event models, team balancing, request handling, and REST/auth APIs, with integrated JaCoCo code coverage.
---
### 🚀 Detailed Changes & Features
#### 1. Dual-Platform Compatibility Engine
- **Runtime Platform Detection (`Platform.java`):** Automatically detects whether the host server is running Purpur, Paper, or Vanilla Spigot and activates platform-optimized code paths dynamically.
- **Shaded Adventure Library:** `net.kyori:adventure-api` (5.2.0), `adventure-text-serializer-legacy`, and `adventure-text-serializer-plain` are shaded and relocated to `de.zfzfg.eventplugin.libs.kyori`, guaranteeing Adventure support on vanilla Spigot without external dependencies or classloader collisions.
- **Universal Text Dispatch (`TextUtil.java`):** Sends native Adventure `Component` objects on Paper/Purpur while automatically serializing to formatted legacy strings on Spigot.
- **Cross-Platform GUI Factory (`GuiUtil.java`):** Creates custom inventories using modern Component titles on Purpur and formatted string titles on Spigot.
- **Cross-Platform Item Metadata (`ItemUtil.java`):** Manages ItemMeta display names and lores using clean Component pipelines on Purpur (eliminating default italic formatting artifacts) and compatible String lists on Spigot.
- **Asynchronous Teleportation Adapter (`TeleportUtil.java`):** Dispatches asynchronous chunk loading and teleportation via `Player#teleportAsync` on Paper/Purpur and reliable synchronous teleports on Spigot.
- **Isolated Paper Registry Helper (`PaperRegistryHelper.java`):** Isolates Paper 1.21+ `EnchantmentTagKeys` (`TREASURE`, `CURSE`) so that the classloader on Spigot servers never encounters missing class definitions when querying `MaterialCatalog`.
#### 2. GUI System Modernization & Legacy Archive
- **Retired Legacy GUI System:** Archived 16 old GUI classes and legacy response handlers into `old-files/` and renamed them to `.java.old` to prevent classpath pollution in IDEs and build tools.
- **New `LiveTradeBridge`:** Bridges command-based wager invitations directly into the modern `LiveTradeSession` and `LiveTradeGui`, pre-filling items and money wagers automatically.
- **Modernized `/pvprespond`:** Overhauled command handler to utilize `LiveTradeBridge`, giving players a fluid, visual counter-offer and trade interface.
- **Streamlined Plugin Lifecycle:** Cleaned `EventPlugin` and `MatchManager` to remove deprecated `GuiManager` and `GuiListener` references.
#### 3. Interactive Chat, Action Buttons & Title Formatting
- **Interactive Action Buttons:** Clickable chat buttons for wager requests (`[► ACCEPT ◄]`, `[✖ DENY]`, `[📋 OPEN GUI]`), event broadcast joins, spectator invites, and web authentication.
- **Unified Subcommands:** Consolidated all challenge responses into dedicated, testable subcommands (`AcceptSubCommand`, `DenySubCommand`, `RespondSubCommand`), eliminating duplicate logic across legacy `/pvpyes`, `/pvpno`, and `/pvpdeny` commands.
- **Centralized Title Dispatching (`TextUtil#sendTitle`):** Full RGB title and subtitle delivery with configurable fade-in, stay, and fade-out timings.
- **Web Token URL Integration:** In-game `/eventpvp webtoken` command features one-click clipboard copying and direct browser link integration.
#### 4. Localization & Quality Audit Suite
- **Full D1–D11 Detection Suite:** Comprehensive audit tool (`tools/i18n_audit.py`) validating key lookups, boolean YAML parsers, placeholder mismatches, hardcoded messages, and web-panel translations.
- **Orphaned Key Pruning (D9):** Removed 284 dead message keys resulting from the retirement of legacy GUIs across all 7 language files (`messages_de.yml`, `messages_en.yml`, `messages_es.yml`, `messages_fr.yml`, `messages_ja.yml`, `messages_pl.yml`, `messages_ru.yml`).
- **Complete Parity (D8):** 100% key parity across all 7 languages (815 keys per bundle).
- **Console & Logger Localization:** All terminal outputs standardized in English and routed through `CoreConfigManager.getConsoleMsg` with placeholder support.
- **Safety Backups:** Pre-cleanup configuration archives preserved under `reports/backup_pre_cleanup_1.1.0/`.
#### 5. Deprecation & Modern Bukkit API Migration
- **BungeeCord Chat Removal:** Removed `net.md-5:bungeecord-chat` dependency and all `player.spigot().sendMessage(...)` invocations.
- **`ChatColor` Replacement:** Replaced all `org.bukkit.ChatColor` usages with `Text` delegates.
- **Modern Attribute System:** Migrated `player.getMaxHealth()` to `player.getAttribute(Attribute.MAX_HEALTH).getValue()`.
- **Modern Respawn API:** Migrated `player.getBedSpawnLocation()` to `player.getRespawnLocation()`.
- **URL Constructor Modernization:** Migrated `new URL(...)` to `URI.create(...).toURL()`.
- **Potion Effect Registries:** Migrated deprecated `PotionEffectType` methods to `org.bukkit.Registry.POTION_EFFECT_TYPE`.
- **Enchantment Tag Keys:** Migrated `isTreasure()` and `isCursed()` to Paper `EnchantmentTagKeys`.
- **Native TPS Metric:** Removed reflection in `WebApiHandler` and replaced with native `Bukkit.getServer().getTPS()`.
- **PlayerMoveEvent Optimization:** Throttled move listeners in `WorldChangeListener` and `VoidProtectionListener` using `ignoreCancelled = true` and `hasChangedBlock()`.
- **Thread-Safe Cooldowns:** `CommandCooldownManager` synchronized with thread-safe access patterns.
- **Event Constructor Modernization (Purpur 26.2 / Paper 1.21):** Migrated `EntityDamageEvent`, `EntityDamageByEntityEvent`, and `PlayerQuitEvent` constructors to current, non-deprecated API signatures with modifier maps and `QuitReason`.
#### 6. Safety, World Management & Inventory Protection
- **Multiverse Integration:** Compatible with Multiverse-Core world cloning, arena resetting, and automatic world loading/unloading policies.
- **Synchronous Safety Stores:** Protected against server crashes and disconnections via `inventory-guard.yml`, `player-return-locations.yml`, and `pending-payouts.yml`.
- **Stranded Player Recovery:** Automatic detection and safe relocation of players remaining in unloaded or orphaned event/arena worlds upon server join.
#### 7. Architecture Documentation
- **Server Compatibility Matrix:** Comprehensive reference guide in `docs/SERVER_COMPATIBILITY.md`.
- **Conceptual Analysis & Roadmap:** System architecture evaluation and feature roadmap in `docs/PROJEKT_KONZEPT_ANALYSE.md`.
#### 8. Automated Test Suite, MockBukkit & Code Coverage Expansion
- **Comprehensive Test Suite (360 Tests across 50 Test Classes):** Expanded test coverage across all plugin modules (Core, Location, Inventory Guard, Multiverse-Inventories Bridge, Events, PvP Wager, LiveTrade, and Web API).
- **In-Memory Server Testing via MockBukkit 26.2:** Integrated `MockBukkit-v26.2` (4.116.1) and `paper-api` for realistic, in-memory server simulation of listeners and commands (`MockBukkitTestBase`, `VoidProtectionListenerMockTest`, `PvPListenerMockTest`, `PvPUnifiedCommandMockTest`, `TeamPvPListenerMockTest`, `SpectatorRecoveryListenerMockTest`, `WorldProtectionListenerMockTest`, `RequestCleanupListenerMockTest`, `PendingPayoutListenerMockTest`, `StrandedPlayerListenerMockTest`).
- **JaCoCo Code Coverage (`jacoco-maven-plugin:0.8.12`):** Automated coverage measurement and HTML report generation (`target/site/jacoco/index.html`).
- **Modern Mocking & Assertions:** Integrated `mockito-junit-jupiter:5.11.0` and `assertj-core:3.25.3` with Java 21 dynamic agent loading support.
- **Quality Improvements:** Enhanced `InputValidator` with `NaN` and `Infinity` bounds checks and hardened `SafeLocationResolver` with null-safe return store lookups.
---
### 📦 Technical Specifications
| Property | Value |
| :--- | :--- |
| **Plugin Version** | `1.1.0` |
| **Java Version** | `Java 21 LTS` (Source / Target) |
| **Target API** | `purpur-api:26.2.build.2618-stable` |
| **Supported Server Engines** | Purpur 26.2+, Paper 1.21.x / 1.20.5+, Pufferfish 1.21.x, Spigot 26.2 / 1.21.x |
| **Unsupported Engines** | Folia (requires regionised scheduler rebuild), 1.19.4 & older |
| **Kyori Adventure** | `5.2.0` (Shaded & Relocated to `de.zfzfg.eventplugin.libs.kyori`) |
| **Test Suite** | 360 Passed Unit, Integration & MockBukkit Tests (100% Green, 50 Classes) |
| **Code Coverage** | JaCoCo 0.8.12 (`target/site/jacoco/index.html`) |
| **Localization** | 7 Languages (`de`, `en`, `es`, `fr`, `ja`, `pl`, `ru`) – 815 Master Keys |
---
### 🔧 Upgrade & Migration Notes
1. **Drop-in Replacement:** `event-pvp-plugin-1.1.0.jar` is a direct replacement for previous 1.0.x and 1.1.0-beta builds.
2. **Java 21 Required:** Ensure your server runtime is Java 21 or higher.
3. **Configuration Compatibility:** All existing configuration files (`config.yml`, `messages_*.yml`, `worlds.yml`, `equipment.yml`, `web-config.yml`) remain fully compatible and will be migrated automatically if new keys are present.
4. **Dependencies:** `Multiverse-Core` and `Vault` are recommended for full feature support (arena resetting and economy wagers).
beta
Event-PVP-Plugin 1.1.0-beta
1.1.0-beta13 авг. 2026 г.38Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2paper, purpur
Что нового
# Changelog 1.1.0-beta
## [1.1.0-beta] - 2026-08-13
This beta release brings the plugin onto the modern Purpur 26.2 / Java 21 toolchain and includes a broad cleanup of compatibility issues, chat rendering, localization, and stability fixes. It is primarily intended for testing on Purpur-based servers before a wider release.
> Beta builds are hidden from normal update notifications by default. The update checker respects the Modrinth `version_type` and the `stable-only: true` setting, so standard users do not see beta or alpha alerts unless they intentionally opt in.
### Highlights
- Updated for Purpur 26.2 and Java 21
- Replaced legacy BungeeCord chat handling with Adventure-based components
- Improved localization and console output in all supported languages
- Better web-panel and config reliability
- Reduced compatibility issues with newer Bukkit/Purpur APIs
- Increased stability around world handling, in-game actions, and startup behavior
### Platform & compatibility
- Updated the plugin to target Purpur 26.2 (`purpur-api:26.2.build.2618-stable`) and Java 21.
- Updated `plugin.yml` with the correct `api-version: '26.2'`.
- Cleaned the package setup to avoid classloader conflicts with server-provided libraries.
- Added the required Java 21 compatibility flags for Surefire/Mockito during tests.
- Removed legacy compatibility paths and replaced old API usage with modern equivalents where possible.
### Adventure migration and chat improvements
- Removed the remaining `net.md-5:bungeecord-chat` usage from the source tree.
- Reworked message translation through a central `Text` bridge that handles legacy color codes, hex colors, and Adventure `Component` output safely.
- Updated interactive chat messages to use modern clickable and hover actions instead of older wrappers.
- Added clickable buttons for common actions such as:
- accept/decline wager requests
- join event broadcasts
- spectator invitations
- skip and counter-offer interactions
- web token copy actions and direct web-panel links
- Kept compatibility with older Bukkit-style APIs by preserving the existing string signatures while internally converting to Adventure where needed.
### Modern API fixes
- Updated title handling to use Adventure `showTitle(...)` instead of the legacy title API.
- Modernized enchantment resolution to prefer `Registry.ENCHANTMENT` with namespaced keys before falling back to legacy names.
- Migrated potion handling away from deprecated `PotionData` reflection to the direct `PotionMeta.setBasePotionType(...)` API.
- Switched TPS retrieval from reflection-based logic to native `Bukkit.getServer().getTPS()` calls.
- Improved movement-event handling by avoiding unnecessary processing when the block has not actually changed and by respecting cancelled events correctly.
### Stability and gameplay improvements
- Improved cooldown handling with safer synchronization in the command cooldown system.
- Reduced unnecessary event processing and world checks to lower overhead and avoid noisy side effects.
- Improved world-transition and safety checks for players moving between lobby, event, and arena areas.
- Better handling for player return/safe respawn scenarios after disconnects, crashes, or world changes.
- Fixed several situations where state could be left behind or where the wrong world/location was used during handler flow.
### Localization and console output
- Added and cleaned up localization keys for console/admin-facing output, including warnings and unsupported spawn-type messages.
- Console output now follows the plugin's i18n framework in all supported languages instead of relying on hardcoded strings.
- Added explicit `// i18n-ignore` markers where technical strings must remain unchanged for technical reasons.
- Added a local i18n audit toolchain to detect missing keys, placeholder mismatches, YAML issues, and hardcoded strings more reliably.
- Reports now use the local system timezone instead of UTC for clearer release and audit output.
### Web panel, config, and documentation
- Reorganized docs into a cleaner structure under `docs/`.
- Added and improved server compatibility guidance for Purpur, Paper, Folia, Spigot, Java 21, and version expectations.
- Added a more structured release and migration documentation set for easier upgrades.
- Improved the project setup and maintenance scripts, including Git hygiene and repository newline handling.
- Added release guidance for beta/alpha distribution without triggering normal stable update notifications.
### Quality and verification
- Expanded automated test coverage substantially compared to the previous baseline.
- Added validation for message parsing, color conversion, tooltip/chat actions, enchantment resolution, config loading, and world/path validation.
- Added a Python-based audit suite covering parity, missing keys, hardcoded messages, placeholder consistency, YAML syntax, and more.
- Verified the plugin loads cleanly on Purpur 26.2, with the expected startup behavior and no major runtime exceptions during the validation pass.
### Upgrade notes
- This is a beta release and should be tested on a staging server before using it on a production world.
- Make sure to back up your plugin config and world-related data before switching to Purpur 26.2 / Java 21.
- Update-check behavior is now more conservative for beta/alpha versions by default; stable users will not get noisy prerelease alerts unless they enable them.
- If you use custom language files, check for newly added console or message keys after updating.
release
Event-PVP-Plugin 1.0.9
1.0.911 авг. 2026 г.86Minecraft: 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2bukkit, paper, purpur, spigot
Что нового
# Event-PVP-Plugin 1.0.9 — Compact Changelog
A concise overview of all new features, improvements, fixes, and breaking changes in version **1.0.9**.
---
## Key Highlights & New Features
### 1. Integrated Inventory Management (`InventoryBackup`)
- **Built-in Inventory Safety**: Replaced legacy snapshot files with `InventoryBackup` ([Modrinth](https://modrinth.com/project/rpKY25cW)) as a mandatory dependency (`depend:` in `plugin.yml`).
- **Automatic Restore Net**: Inventories are backed up before arena/lobby teleports and restored on match/event end, respawn, or rejoin.
- **Crash Protection**: Active sessions are written to `inventory-guard.yml` and restored automatically on server restart.
- **Legacy Mode**: Set `settings.inventory-management.provider: "none"` if you prefer Multiverse-Inventories.
### 2. Player Location Safety & Anti-Strand System
- **Return Location Journal (`player-return-locations.yml`)**: Player return coordinates are saved synchronously before any teleport.
- **Automatic Self-Rescue**: Players stranded in an event or arena world after a server crash/disconnect are returned to their origin upon reconnecting.
- **Unified `SafeLocationResolver`**: Prevents players from spawning in the void or becoming trapped in unloaded worlds.
- **New Command `/eventpvp rescue`**: Admins can inspect (`list`), rescue stranded players (`<player>`), or clean stale sessions (`clean`).
- **Persistent Payout Queue (`pending-payouts.yml`)**: Queues wager winnings and event rewards for players who disconnect before payout.
### 3. Complete Web Interface Overhaul
- **Dedicated 3-Tab Inventory Manager** (Explorer / Sessions / Settings): Search backups, inspect inventories via authentic Minecraft Canvas with XP bar, restore after a confirmation prompt, and monitor live sessions. Restores are capped at 10 per minute and refused while the player has an open guard session.
- **Multiverse World Management**: Create, import, load, unload, delete (with safety checks), and backup/restore worlds directly in the web panel. Works with both Multiverse-Core 4 (command backend) and 5 (API backend).
- **Server Resource Pack Textures**: Optionally extracts and displays custom item textures from the server's resource pack (`items.resource-pack.enabled`, off by default, size-capped). Only direct replacements under `assets/minecraft/textures/item/` are used — CustomModelData is deliberately not evaluated.
- **Dynamic Material Catalog**: Loads valid materials and enchantment limits directly from the server (`GET /api/materials`).
- **Deep-Snapshot Precision Dirty Tracking**: Baseline comparison (`CONFIG_BASELINE` & `isDeepEqual`) eliminates false-positive "Unsaved Changes" badges when reverting edits or saving unmodified modals.
- **Web Server Settings**:
- Configurable **Public URL** with automatic `{port}` substitution for `/eventpvp webtoken`.
- **Port Change Safety Warning**: Confirmation dialog before saving port changes to prevent accidental disconnection.
- New **`web.bind-address`**: empty for all interfaces, `"127.0.0.1"` when a reverse proxy (Nginx, Caddy, Cloudflare Tunnel) sits in front.
- Removed `items.local-texture-path` and `items.block-texture-source` in favor of `items.resource-pack.*`.
### 4. 100% Localization & Zero Hardcoded Messages
- **7 Supported Languages**: English, German, Spanish, French, Japanese, Polish, Russian with 100% key parity (1097 keys per `messages_*.yml`, 764 keys per `web/lang/*.json`).
- **Console & Logger Localization**: All logger, startup, shutdown, and error messages are fully translated via `messages.console.*`.
- **Embedded Fallback System**: Incomplete translation files fall back to embedded English defaults instead of failing or printing raw keys.
- **Automated Audit Suite (`tools/i18n_audit.py`)**: 0 findings across all 11 detection rules (D1–D11).
### 5. Streamlined Configuration & Debug Mode
- **Persistent Debug Switch**: `/eventpvp debug (on | on full | off | status)` saved to `settings.debug` in `config.yml`.
- **Decoupled World Management**: Replaced ambiguous `world-loading` with two independent booleans: `settings.world-management.events` and `settings.world-management.arenas`.
- **Switchable Lobby Phase (`use-lobby`)**: Events can run with or without a separate lobby phase.
- **Automatic Config Migration**: Existing configs are automatically updated on first startup without losing custom values or comments.
---
## Breaking Changes & Upgrades
| Area | Change |
|---|---|
| **Required Dependencies** | [Multiverse-Core](https://modrinth.com/project/3wmN97b8) (v4/v5), [VaultUnlocked](https://modrinth.com/project/ayRaM8J7) (or classic [Vault](https://www.spigotmc.org/resources/vault.34315/)), and [InventoryBackup](https://modrinth.com/project/rpKY25cW) are now mandatory in `plugin.yml`. |
| **Removed Command** | `/inventoryrestore` is removed. Use `/inv <player>` or the Web Panel instead. |
| **Removed Permissions** | `eventpvp.inventory.restore` and `eventpvp.inventory.restore.any` are removed. |
| **World Loading Config** | `settings.world-loading` is migrated to `settings.world-management.events` and `.arenas`. |
| **Inventory Config** | `settings.inventory-snapshots.*` is migrated to `settings.inventory-management.*`. `retain-days`, `default-group`, `groups`, and `ids.*` are dropped — retention is now InventoryBackup's job. |
| **Legacy Snapshot Files** | `inventory_backups.yml` and `inventory_post_backups.yml` are no longer read. They stay on disk untouched. |
| **Equipment Merge** | `equipment:`, `equipment-sets:`, and `equipment-groups:` are merged into a single `equipment:`. On an ID collision the `equipment:` entry wins; the other is kept as `<id>-legacy` and logged. |
| **Web Config** | `items.local-texture-path` and `items.block-texture-source` are replaced by `items.resource-pack.*`. |
| **Command Restrictions** | `settings.command-restriction` values `join` and `pvp` become `both`. |
---
## Command & Permission Quick Reference
### New & Updated Commands
| Command | Permission | Status | Description |
|---|---|---|---|
| `/eventpvp rescue <list\|player\|clean>` | `eventpvp.admin` | new | Inspect, rescue, and clean stranded player sessions |
| `/eventpvp debug <on\|on full\|off\|status>` | `eventpvp.debug` | updated | Toggle and inspect debug logging — the level is now persisted in `settings.debug` |
| `/eventpvp webtoken` | `eventpvp.admin.web` (or `eventpvp.admin`) | unchanged | Generate a secure one-time login token for the Web Panel |
| `/eventpvp reload` | `eventpvp.admin` | unchanged | Reload all configurations and language bundles |
| `/eventpvp version` | `eventpvp.admin` | unchanged | Check plugin version and update status |
| `/inv <player>` | `inventoryrestore.admin` | external | Inspect and restore inventory backups — provided by the InventoryBackup plugin, not by Event-PVP-Plugin |
### New Permissions
- `pvpwager.spectate.all`: Spectate matches that already reached the spectator limit (default: `op`).
- `pvpwager.nowager`: Start a match without any wager (default: `op`).
`eventpvp.admin.web`, `eventpvp.debug`, and `eventpvp.debug.receive` already existed in 1.0.8 and are unchanged.
### Removed Permissions
- `eventpvp.inventory.restore` and `eventpvp.inventory.restore.any` — remove them from your permission plugin.
alpha
Event-PVP-Plugin 1.0.8
1.0.811 июн. 2026 г.99Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2bukkit, paper, purpur, spigot
Что нового
# Changelog for 1.0.8
## Summary
Version 1.0.8 focuses on four areas: full localization of the PvP wager GUI flow, optional leaderboard/hologram integrations (AJLeaderboards, DecentHolograms), PlaceholderAPI support so external plugins can read numeric player statistics, and optional PvPManager integration to prevent false combat logging penalties.
---
## Upgrading from 1.0.7
You **do not need to replace your entire config.yml**! The plugin will automatically add missing settings with default values.
### Important Notes
- **Config Files**: No manual config editing required! New options are automatically added to your existing config files with default values.
- **Web Interface**: After upgrading, all new features (including optional integrations) will appear in the web interface where you can easily enable/disable them.
- **Language Files**: These are NOT automatically overwritten! To get the new GUI localization keys, you need to update your language files.
### Step-by-Step Upgrade:
1. **Back up your existing files** (config.yml, worlds.yml, equipment.yml, messages_*.yml)
2. **Stop your server**
3. **Replace the plugin JAR file** with version 1.0.8
4. **Update Language Files** (IMPORTANT!):
- Option 1: Delete your old `messages_*.yml` files and restart the server to regenerate them with all new keys. Then manually reapply any customizations.
- Option 2: Manually merge the new `messages.gui.*` keys from the updated language files into your existing customized files.
5. **Start your server** - the plugin will handle the rest!
6. **Enable New Features** (optional):
- Open the web interface
- Navigate to the integrations section
- Enable/disable the new features (PvPManager, AJLeaderboards, DecentHolograms) as desired
- Save your changes
---
## Added
### PvPManager Integration (Combat Tagging)
- Added optional **PvPManager** support via a bridge interface
- Registered automatically on startup when PvPManager is installed and enabled in config
- Automatically removes combat tags when players:
- Leave an event (voluntarily or eliminated)
- Finish a PvP wager match (win/lose/draw)
- Server shuts down during an active match
- Fallback to no-op implementation if PvPManager isn't installed or integration is disabled
- **Enable in `config.yml`:**
```yaml
settings:
integrations:
pvpmanager:
enabled: true
```
### PlaceholderAPI Integration
- Added optional **PlaceholderAPI** support via the `EventPvpExpansion` class
- Registered automatically on startup when PlaceholderAPI is installed
- All placeholders return **plain numeric strings** (e.g., "15", "0") — no color codes or formatting — so **AJLeaderboards** can parse them correctly
- **Available placeholders:**
| Placeholder | Description |
|-------------|-------------|
| `%eventpvp_event_wins%` | Total event wins for the player |
| `%eventpvp_event_participations%` | Total event participations for the player |
| `%eventpvp_pvp_wins%` | Total PvP wager wins |
| `%eventpvp_pvp_losses%` | Total PvP wager losses |
| `%eventpvp_pvp_draws%` | Total PvP wager draws |
> **Note:** Kills and deaths are not tracked by this plugin. Event stats only include wins and participations; PvP stats only include wins, losses, and draws.
### Optional AJLeaderboards & DecentHolograms Support
- Added optional integration bridges for **AJLeaderboards** and **DecentHolograms**
- Both integrations are **fully optional** — the plugin works without them
- **Enable in `config.yml` under `settings.integrations`:**
```yaml
settings:
integrations:
ajleaderboards:
enabled: true
decentholograms:
enabled: true
refresh-interval-ticks: 20
```
### Extended GUI Localization (Wager System)
- Previously hardcoded GUI text in the PvP wager flow has been moved to language files under `messages.gui.*`
- This affects all wager-related screens:
- Wager Main GUI (challenge setup, overview, arena/equipment selection)
- Item Selection GUI (add/remove wager items, slot labels, error messages)
- Money Selection GUI (amount picker, balance display, adjust buttons)
- Confirmation GUI (final review before sending a challenge)
- Response GUI (accept/decline incoming challenges, counter-wager setup)
- Response Item/Money Selection GUIs (opponent-side wager editing)
- Negotiation GUI (final offer review, counter-offer, accept/decline)
- **Updated language files:** messages.yml (default), messages_en.yml, messages_de.yml, messages_es.yml, messages_fr.yml, messages_pl.yml, messages_ru.yml, messages_ja.yml
### Improved Multiverse-Inventories Documentation
- Added detailed setup guide for Multiverse-Inventories world groups
- Included both guided command (`/mvinv group`) and direct command options
- Added wildcard/regex support tips for dynamic world names
---
## Changed
- Wager GUI classes (`AbstractWagerGui` and subclasses) now resolve all visible text through `messages.gui.*` keys instead of hardcoded strings
- External display refresh is scheduled automatically when AJLeaderboards and/or DecentHolograms integrations are enabled
- plugin.yml now includes `PvPManager` in `softdepend`
- pom.xml now includes PvPManager dependency (scope: provided) via CodeMC repository
---
## Goals
- Eliminate hardcoded GUI text so the entire wager UI respects the configured server language
- Provide consistent, translatable labels, lore text, error messages, and button titles across all wager dialogs
- Allow server owners to display event and PvP statistics on leaderboards and holograms without custom code
- Prevent false combat logging penalties by integrating with PvPManager
- Provide clear, step-by-step Multiverse-Inventories setup instructions
---
## How to Verify Changes In-Game
### Language Changes
1. **Prepare language files**: Language files in the plugin data folder are **not** automatically overwritten on update. To get the new `messages.gui.*` keys, either delete old language files (after backing up) or manually merge the new sections.
2. **Switch language** in config.yml (or via web interface) and run `/eventpvp reload`
3. **Test all GUI screens** using two test accounts (Player A challenges Player B)
### Integration Checks
- **PlaceholderAPI**: Run `/papi list` and verify `eventpvp` expansion is present, test with `/papi parse me %eventpvp_pvp_wins%`
- **PvPManager**: Check server logs for integration activation message, test by getting in combat during an event/match then leaving/finishing
- **AJLeaderboards/DecentHolograms**: Enable the integrations via web interface, then create a board/hologram using the placeholders and verify stats update
---
## Upgrade Notes
- **Language files:** Not auto-replaced on update. Delete or manually merge messages_*.yml in the plugin data folder to receive new GUI keys
- **PlaceholderAPI:** Install PlaceholderAPI on the server; the expansion registers automatically
- **AJLeaderboards / DecentHolograms:** Install the plugins, enable in config.yml, and use the %eventpvp_*% placeholders in board/hologram lines
- **PvPManager:** Install PvPManager, enable integration in config.yml — no extra setup needed
alpha
Event-PVP-Plugin 1.0.7
1.0.724 мая 2026 г.59Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2bukkit, paper, purpur, spigot
Что нового
# Changelog
## [1.0.7] - 2026-05-24
### Changed
- **Code Refactoring**: Removed the wrapper class `de.zfzfg.pvpwager.utils.MultiverseHelper.java`
- The Multiverse functionality now uses the central `de.zfzfg.core.world.MultiverseHelper` class directly
- This change simplifies the codebase by removing an unnecessary abstraction layer
### Added
- **Version Check Command**: Added `/epvp version` and `/eventpvp version` commands
- Requires `eventpvp.admin` permission (same as reload/debug)
- Displays current plugin version
- Triggers update check and shows update status
- Shows download link if update is available
- Added to help menu and tab completion
- **Command Cooldown System**: Integrated `CommandCooldownManager` into the main plugin
- Applied to `/pvp challenge` command with 3-second default cooldown
- Includes memory leak prevention with automatic player cleanup on quit
- Customizable cooldown messages via message provider
- **Web Server Rate Limiting**: Added rate limiting to the embedded HTTP server
- Prevents API abuse with per-IP rate counters (100 requests per window)
- **Note**: Rate limit counters are not automatically cleared - may require future cleanup mechanism
- Improves security and stability of the web interface
- **Text Utility Performance**: Added color caching to `TextUtil`
- Caches colored text to improve performance
- Reduces redundant color code processing
- **Note**: Cache has no size limit - may require monitoring for memory usage with many unique messages
- **Improved Task Management**: Enhanced countdown task handling in `MatchManager`
- Changed from single task to task list for better management
- Allows multiple concurrent countdown operations
- **Memory Management**: Added player cleanup method to prevent memory leaks
- `CommandCooldownManager.removePlayer()` called on player quit
- Ensures proper cleanup of player-specific data
- **Update Reminder System**: Added automatic update checking via Modrinth API
- Checks for newer plugin versions on server startup with configurable delay
- Notifies admins with `eventpvp.admin.updatenotify` permission on join
- Console logging when updates are available
- Caching mechanism to prevent repeated API calls
- Configurable via `settings.update-check` in config.yml
- Supports all languages: German, English, Spanish, French, Japanese, Polish, Russian
- Includes proper User-Agent header for Modrinth API compliance
- SemVer-based version comparison
- Uses Modrinth project ID `pqJQdZ6R`
### Fixed
- **Missing Help Message Keys**: Fixed YAML key collision causing help messages to be missing
- Root cause: Multiple duplicate `help:` sections in YAML files caused key collision (YAML only keeps last instance)
- Renamed sections to `event-help:`, `pvp-help:`, and `command-help:` in all language files
- Updated `EventCommand.java` to use `event-help.` prefix for all help message lookups
- Fixed `/event help` command showing raw message keys instead of actual text
- Applied to all languages: German, English, Spanish, French, Japanese, Polish, and Russian
- **Incorrect Command Documentation**: Updated PvP help to show correct command syntax
- Changed `/pvp <spieler>` to `/pvpask <spieler>` in all language files
- Updated `help.challenge` entries to reference the correct command with Wager-GUI hint
- Applied to all languages with appropriate translations
- **Win/Loss Screen Placeholders**: Fixed YAML key collision causing win/loss messages to show as placeholders
- Root cause: Multiple duplicate `match:` sections in YAML files caused key collision
- Renamed sections to `match-display:`, `match-system:`, and `match-manager:` in all language files
- Updated `MatchManager.java` `getMsg()` method to route keys to correct YAML section based on key name
- Fixed `you-won-header`, `you-won`, `you-lost-header`, and `you-lost` keys not being found
- Applied to all language files
- **Draw Vote Expiration Bug**: Fixed "expired" message showing after draw is accepted
- Added `match.isDrawVoteActive()` check in `DrawSubCommand.java` timeout task
- Prevents showing expired message when draw vote has already been accepted and deactivated
- Resolves race condition where timeout task fires after draw acceptance
- **Update Checker Version Parsing**: Fixed version comparison failing with non-numeric suffixes
- Updated `UpdateChecker.java` to extract numeric part before parsing (e.g., "1.0.6-Multilingual" -> "1.0.6")
- Prevents `NumberFormatException` when comparing versions with suffixes like "-Multilingual"
- **Error Handling Improvements**: Added logging to all previously empty catch blocks
- `MatchManager`: Added warning logs for task cancellation failures, snapshot save errors, and statistics recording failures
- `EventSession`: Added warning logs for task cleanup failures, inventory snapshot errors, and health/food level setting errors
- `EquipmentManager`: Added warning logs for allowed worlds parsing errors
- `PvpStatsStorage`: Added warning logs for UUID parsing errors
- `SpawnManager`: Added warning logs for teleport fallback failures
- `RequestManager` & `CommandRequestManager`: Added warning logs for task cancellation errors
- `InventorySnapshotStorage`: Added comment for regex error handling (expected fallback behavior)
- **Enum Switch Completeness**: Added missing `COMMAND` case to spawn type switch in `EventSession`
- Resolves compiler warning about unhandled enum constant
- Delegates to `executeSpawnCommand()` method for command-based spawning
- **Material Caching**: Added material name cache to `EquipmentManager`
- Caches `Material.valueOf()` lookups to avoid repeated parsing
- Cache is cleared on equipment reload to ensure consistency
- **Enchantment Caching**: Added enchantment cache to `EquipmentManager`
- Caches `Registry.ENCHANTMENT.get()` lookups for enchantment names
- Cache is cleared on equipment reload to ensure consistency
- **HashMap Cloning Reduction**: Replaced defensive copies with unmodifiable views
- `MatchManager.getMatches()` now returns `Collections.unmodifiableMap()`
- `StatsManager.toMap()` now returns `Collections.unmodifiableMap()`
- Reduces memory allocation for admin/debug commands
### Deprecated
- **PvPAcceptCommand**: Marked as deprecated
- Users should use `/pvp accept` instead
- Old command kept for backward compatibility
### Technical Details
- The old wrapper class at `src/main/java/de/zfzfg/pvpwager/utils/MultiverseHelper.java` has been removed
- Code that previously used the wrapper now imports and uses `de.zfzfg.core.world.MultiverseHelper` directly
- This refactoring improves code maintainability and reduces complexity
- Various code cleanups and optimizations across multiple files
- Improved command registration with helper method in `EventPlugin`
### Compatibility
- No breaking changes for end users
- All existing functionality remains intact
- Plugin configuration and commands work exactly as before
- Deprecated commands continue to function but users should migrate to new syntax
### Upgrade Notes
- **Language Files**: Language files are NOT automatically replaced when updating the plugin. If you have customized language files (`messages_*.yml`), you need to delete them from the plugin data folder and restart the server to let the plugin regenerate them with the new update notification messages, then manually reapply your customizations.
## [1.0.6-Multilingual] - Previous Version
- Multilingual support for German, English, Spanish, French, Japanese, Polish, and Russian
- Event and PvP wager system integration
- Web interface for configuration
- Multiverse-Core integration for world management
alpha
Event-PVP-Plugin 1.0.6-Multilingual
1.0.6-Multilingual7 дек. 2025 г.158Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11bukkit, paper, purpur, spigot