COWMODSКаталог модов
SiteZero

ВЕРСИИ (2)

release

SiteZero 1.2.1

1.2.1
21 июн. 2026 г.74Minecraft: 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.2, 26.3paper, purpur
Скачать
Что нового
## [1.2.1] - 2026-06-20 ### Added - **Weapon recoil**: every shot kicks the camera upward with a small random horizontal sway. CS-style - there is no auto-recovery, the player pulls back down manually. Per-weapon strength via `recoil` in weapons.yml (sensible defaults by type); global on/off and scaling under `recoil` in config.yml. Aiming down the sights reduces it. - **Iron-sight aiming (light ADS)**: right-clicking a non-scoped gun aims down the sights for a minimal zoom plus reduced recoil; right-click again lowers the weapon. Scoped weapons (AWP/Scout/AUG/SG553) keep their stronger scope. Tunable under `aiming` in config.yml. ### Fixed - **Stat persistence under concurrency**: `PlayerStats` counters are now `volatile`, so the async save thread always sees the latest main-thread increment instead of occasionally persisting a stale value. - **Shutdown order**: scheduled tasks are now cancelled before the database connection pool is closed, so no match or auto-save task can fire a database write during pool shutdown. ### Changed - **Flashbang facing**: looking away from the blast now prevents the flash entirely instead of only shortening it. The detonation must be inside the player's view cone (`grenades.flash-view-threshold`, the cosine of the view angle) to blind them. - `plugin.yml` now takes its version from the Gradle project version at build time instead of a hardcoded value, so a single version bump in `build.gradle.kts` keeps everything in sync.
release

SiteZero 1.2.0

1.2.0
15 июн. 2026 г.19Minecraft: 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
Скачать
Что нового
## [1.0.0] - 2024-03-29 ### Added - Initial release of SiteZero plugin - Core gameplay mechanics - Round-based matches with team switching - Bomb plant and defuse objectives - Spectator mode for eliminated players - Economy system - Dynamic money rewards - Loss bonus mechanics - Persistent player economy - Weapon system - Multiple weapon categories (Pistols, Rifles, SMGs, Snipers) - Customizable weapon statistics - Armor and utility items - Arena management - Multi-arena support - Flexible spawn point configuration - Bombsite and buy zone definition - Player statistics - SQLite database integration - K/D tracking - Win/loss statistics - Objective completion tracking - Shop system - GUI-based weapon shop - Buy phase restrictions - Team-specific buy zones (optional) - Commands and permissions - Comprehensive command system - Granular permission nodes - Tab completion support - Configuration - Customizable match settings - Weapon balancing options - Message customization ### Technical Features - Paper 1.21.x compatibility - Java 21 support - Async database operations - Projectile-based combat system - Adventure Component API integration ### Known Issues - None at initial release ## [1.0.1] - 2024-03-30 ### Added - Arena setup checklist command (`/sitezero checklist <arena>`) - Visual checklist with status indicators (✓/✗/○) - Shop GUI configuration options in config.yml - Tab completion for checklist command ### Fixed - Message color formatting now properly translates & color codes - Arena validation logic (removed enabled check from isReady()) - Arena can now be properly enabled after configuration ### Changed - Improved arena setup validation feedback ## [1.0.2] - 2024-03-30 ### Fixed - NullPointerException when saving arenas with unloaded worlds - Enable/disable arena commands now properly handle null world references - Arena configuration save methods now check for null worlds before accessing ### Technical - Added null checks for Location.getWorld() in save methods - Improved error handling for arena persistence ## [1.0.3] - 2024-03-30 ### Fixed - Added proper exception handling in command executor - Added null checks for ConfigurationSection.createSection() returns - Improved error logging to console for debugging - Fixed potential NPE when saving nested configuration sections ### Technical - Better defensive programming for configuration saves - Added try-catch wrapper for all command executions - Console now logs full stack trace for debugging ## [1.0.4] - 2024-03-30 ### Fixed - Fixed double message processing causing exceptions - Removed redundant MiniMessage deserialization for already-processed messages - Arena enable/disable commands now work properly without errors ### Technical - sendMessage() method now correctly handles pre-processed color codes - MessageManager already translates color codes, no need for MiniMessage ## [1.0.5] - 2024-03-30 ### Fixed - Fixed message processing errors in Match class (join, leave, and other announcements) - Fixed message processing in CombatListener (team damage message) - Removed incorrect MiniMessage deserialization for pre-processed messages - Added overloaded broadcastMessage method for String messages ### Technical - MessageManager messages are already color-processed, no MiniMessage needed - Consistent message handling across all classes ## [1.0.6] - 2024-03-31 ### Fixed - Fixed message processing in ShopService (removed MiniMessage for pre-processed messages) - Team-specific items now correctly shown (defuse kits only for defenders) - Implemented proper default equipment system (only free pistol and knife) ### Added - Default equipment system: Players spawn with free USP pistol and knife - Team-specific shop items filtering ### Changed - Shop now properly filters defuse kits for defenders only - Players start with basic equipment instead of empty inventory ## [1.1.0] - 2024-03-31 ### Added - Arena boundary system to prevent players from leaving the arena - `/sitezero setboundary <arena> <pos1|pos2>` command - PlayerMoveEvent handler to enforce boundaries - Improved shop purchase validation ### Fixed - Shop now properly ignores category headers - Better error messages for invalid shop purchases ### Changed - Shop system now validates items have lore before processing - Arena class now supports boundary zones ## [1.1.1] - 2024-03-31 ### Added - Visual bombsite indicators using holograms - `/sitezero showholograms <arena>` command to manually create holograms - Equipment drop system - purchased items can be dropped, default items cannot - HologramManager class for managing bombsite visual indicators ### Fixed - Item pickup bug that was blocking ALL items from being picked up - Bomb pickup now correctly restricted to attackers only during live matches ### Changed - Equipment is now marked as "purchased" or "default" using PersistentDataContainer - Holograms automatically appear when matches start and disappear when they end - Default equipment (knife and USP pistol) cannot be dropped ## [1.1.2] - 2024-03-31 ### Fixed - Bomb can now be properly dropped by attackers to teammates - Shop purchase validation - free items (price 0) no longer require money - Shop item name color formatting now properly displays color codes - Equipment dropping in matches - all items can now be dropped during matches for teamwork - Default equipment restricted from dropping only outside matches ### Changed - Removed debug logging from item pickup events - Improved shop purchase logic for free vs paid items ## [1.1.3] - 2024-03-31 ### Fixed - Bomb dropping now works correctly for attackers (event properly cancelled and handled) - Weapon shop material conflicts resolved (each weapon has unique material) - Shop money check now handles free items (price 0) correctly - Scoreboard updates immediately after purchases - Shop layout reorganized with better categorization and colored headers ### Changed - Complete weapons.yml overhaul with unique materials for each weapon - Added USP as free default pistol - Shop categories now have colored headers and better organization - Knife excluded from shop display (default equipment) - Max items per shop row limited to prevent overflow ### Added - More weapons: P250, AUG, MAC-10, P90 - Grenades in weapons.yml (flashbang, smoke) for future implementation ## [1.1.4] - 2026-04-26 ### Added - **Magazine & Reload System**: Weapons now have finite ammo based on their magazine size. Automatic reload triggers when the magazine is empty, with a progress bar shown in the action bar. Reload time is weapon-specific. - **Grenade System**: Flashbangs (blindness + slowness with line-of-sight check) and smoke grenades (15-second particle cloud) are now fully functional. - **Movement Speed per Weapon**: Holding different weapons now affects player movement speed (e.g., knife = 100%, AWP = 80%). Speed updates instantly on weapon switch. - **Auto-Open Shop**: New config option `shop.auto-open-on-round-start` to automatically open the weapon shop when a new round begins. - **MVP System**: MVP is now calculated and announced at the end of each round based on kills. - **Headshot Tracking**: Headshots are now tracked and stored in the database. - **Assist System**: Players who deal at least `combat.assist-damage-threshold` damage to a victim (without landing the kill) earn an assist reward (`economy.rewards.assist`) and an `assists` stat. - **HE Grenade**: New high-explosive grenade (MAGMA_CREAM) with area damage that falls off with distance, respects friendly fire and supports self-damage. Tunable via `grenades.he-radius` / `grenades.he-damage`. ### Fixed - **Critical: Dependencies bundled in JAR** - SQLite JDBC and HikariCP are now shaded into the plugin JAR via Shadow plugin. No more external dependency JARs needed. - **Critical: BombService shared state** - Bomb state is now per-match instead of global. Multiple arenas can run concurrent matches without interfering with each other. - **Critical: Wins/Losses counted per round** - Wins and losses are now only recorded once per match (in `endMatch()`), not once per round. - **Weapon headshot multiplier ignored** - Per-weapon headshot multipliers are now used instead of the global config value. - **Armor penetration ignored** - Weapon-specific armor penetration values now affect damage reduction (e.g., AWP with 0.95 penetration nearly bypasses armor). - **Range not enforced** - Weapons now have effective range with damage falloff in the last 30% of range and no damage beyond max range. - **Double endRound() calls** - Added guard flag to prevent race conditions when multiple events trigger round end simultaneously. - **WorldListener cancelled ALL explosions** - Explosions are now only cancelled inside active arena boundaries, not server-wide. - **Chat NullPointerException** - Added null checks for player session in team chat handler. - **Economy loss bonus hardcoded** - Consecutive loss bonus and max loss bonus now read from config values instead of being hardcoded. - **SQLite connection pool too large** - Reduced HikariCP pool size from 10 to 1 (SQLite only supports one writer). - **Bomb timer desync** - Removed redundant `shouldExplode()` timer. The match timer is now the single source of truth for bomb detonation. - **Reload progress task leak** - The reload progress-bar task now cancels itself instead of running forever after every reload. - **Grenade/bomb double-trigger** - Added a main-hand guard so right-click events no longer fire twice (double grenade throw / double plant/defuse). - **Legacy color codes via MiniMessage** - Pre-translated (legacy) messages are sent directly instead of through MiniMessage, which could render literal section signs. - **Lingering movement speed** - Weapon movement-speed modifiers are reset on join, leave, round start and match end so they no longer persist after a match. - **Phantom snowball damage** - Grenade snowballs are now ignored by the combat damage handler. - **Broken team-assignment message** - Fixed the message key (`match.team-assignment`) that previously displayed literal text. - **money_earned never tracked** - The `money_earned` stat is now incremented on every positive payout. ### Changed - **AsyncPlayerChatEvent replaced** - Migrated from deprecated `AsyncPlayerChatEvent` to Paper's `AsyncChatEvent`. - **Shop title** - Uses a shared constant between `ShopService` and `PlayerListener` to prevent title mismatch. - **Scoreboard** - Switched from raw section signs to Unicode escapes for consistency. - **Random** - Replaced `new Random()` with `ThreadLocalRandom.current()` for bomb carrier selection. - **Round tracking** - Kills and deaths are now tracked in the `Round` object for MVP calculation. - **Ammo initialized on purchase** - Buying a weapon in the shop now sets its ammo to full magazine size. - **Reload safety** - `/sitezero reload` no longer reloads arenas while matches are running (config, messages and weapons still reload). - **Leave handling** - Leaving mid-round drops a carried bomb and re-checks round-end so an emptied team resolves the round immediately. - **Grenade tuning externalized** - Flash/smoke/HE radii and durations moved from hardcoded constants into `config.yml`. - **MatchManager thread-safety** - Match lookup maps switched to `ConcurrentHashMap` (async chat reads them). - **`/sitezero stats` expanded** - Now also shows assists, headshots and money earned. ### Removed - `LocationUtil.java` - Unused utility class. - `SoundUtil.java` - Unused utility class. - Unused per-round kill/death counters in `PlayerSession`. ### Technical - Added `com.gradleup.shadow` plugin to build configuration with relocation rules for HikariCP and SQLite. - `BombService` now uses per-match `BombState` objects stored in a `ConcurrentHashMap` keyed by match UUID. - New `GrenadeService` class registered as event listener for grenade mechanics. - `PlayerSession` extended with ammo tracking (`Map<String, Integer>`) and reload state. - `PlayerListener` now handles `PlayerItemHeldEvent` for movement speed modifiers. - `Database.incrementHeadshots()` method added. - `ConfigManager.getConsecutiveLossBonus()` and `getMaxLossBonus()` methods added. - New `assists` database column with automatic `ALTER TABLE` migration for existing databases. - `EconomyService.handleAssist()`, `Database.incrementAssists()` and `Database.incrementMoneyEarned()` added. - `GrenadeService` extended with HE handling and grenade-kill bookkeeping. - `MatchManager.hasActivePlayers()` added; `SiteZero.reload()` returns whether arenas were reloaded. - `.gitattributes` added to normalize line endings (LF). - GitHub Actions workflow added for automatic Gradle builds on push/PR. ## [1.2.0] - 2026-06-15 ### Added - **Full CS-style weapon roster**: ~30 weapons across pistols, SMGs, rifles, snipers, shotguns (new SHOTGUN type) and machine guns (new MG type), each fully configurable in weapons.yml. - **Full-auto fire**: holding left-click keeps firing at the weapon's fire rate for automatic weapons (per-weapon `automatic`, default on for rifles/SMGs/MGs). - **Weapon zoom**: right-click (or F) cycles a scope; `zoom-level` is the number of zoom stages, so the AWP and Scout get a true two-step scope. - **CT/T weapon exclusivity**: a `team` field per weapon (attackers/defenders/both) restricts who can buy each gun, CS-style; attackers spawn with a free Glock, defenders with a USP. - **Persistent magazine HUD**: the action bar always shows the held weapon's magazine/reserve, updated on switch, shot and reload. - **Reload key**: press F (the swap-offhand key) to reload, with a progress bar; auto-reload on empty still applies. - **Armor durability**: body armor has a point pool (`combat.start-armor`) that drains as it absorbs damage (`combat.armor-loss-factor`) and breaks under fire; shown on the scoreboard and re-buyable to refresh when damaged. - **Per-world inventory support**: `match.manage-inventory: false` hands inventory ownership to a per-world plugin (e.g. Multiverse-Inventories) - SiteZero only teleports and manages match gear. - **Command-driven match start**: `match.auto-start` (default false) - matches wait in the lobby for `/sitezero start <arena>`. - **Round-end free phase**: after a round is decided, survivors get a few seconds to walk, collect loot and plant the bomb for the plant bonus (combat stays off). - **Spectator restricted to teammates**: dead players can only watch teammates - the camera is re-attached if they try to free-fly to enemies. - **Hitscan Combat**: Weapons fire instant ray-traced shots with black dust tracers and muzzle/impact smoke instead of arrow projectiles. Hit tolerance configurable via `combat.hitscan-ray-size`. - **Reserve Ammo**: Each weapon has a limited reserve pool (`reserve-ammo` in weapons.yml). Reloading consumes reserve; an empty reserve blocks the reload. Action bar shows magazine/reserve. - **Per-Weapon Sounds**: `shoot-sound`, `shoot-volume`, `shoot-pitch` per weapon. String sound keys, so resource pack custom sounds work. - **Custom Model Data**: Every weapon supports `custom-model-data` (unique defaults 1001-1073); bomb material/model/scale configurable via `items.*`. See RESOURCEPACK.md. - **Extended Buy Time**: The shop stays usable for `match.extended-buy-time` seconds (default 30) after the round goes live. Buy-phase freezetime: players cannot move while buying. - **Spawn Areas**: `/sitezero setspawn <arena> <team> [pos1|pos2]` and `/sitezero setlobby <arena> [pos1|pos2]` define regions; players spawn spread out inside them. - **Fixed Teams**: `/sitezero team attackers|defenders|auto` chooses a team in the lobby (honored up to balance). - **Weapon Drops**: Killed players drop their guns and utility; alive match players can pick them up. Drops are cleaned up each round. - **Equipment Persistence**: Round survivors keep their full equipment (magazines refilled, knife guaranteed); dead players, round 1 and halftime start fresh. - **Enemy Nametag Hiding**: Nametags are only visible to teammates (gold/blue team colors included). - **Planted C4 Display**: The planted bomb is a glowing ItemDisplay of the C4 item - resource pack model shows, lies exactly where planted, cannot fall or float. Scale via `items.bomb-display-scale`. - **Config Merger**: New default keys from plugin updates are merged into existing config.yml/messages.yml/weapons.yml without touching configured values. - **Modrinth Update Checker**: Async startup check (toggle: `update-checker`), admin notice on join. - **bStats Metrics**: Plugin id 31946, arena-count chart. - **Match End Flow**: Winner title with team name and score, 5s free-walk end phase, lobby return, automatic next-match countdown (`match.countdown-time`, default 30s). - **Flashbang Darkness**: Flashbangs apply blindness + darkness; detonations are logged with the affected player count. ### Fixed - **Inventory wipe**: pre-match inventory backups are stored binary-serialized in SQLite and restored non-destructively (a failed decode never clears the inventory). A YAML round-trip used to hand back maps instead of items and wipe everyone on a post-restart rejoin. - **Inventory shift with Multiverse-Inventories**: the join path no longer clears the inventory before the world swap, which previously made per-world plugins store the emptied inventory for the wrong world. - **Armored players nearly unkillable**: combat damage was reduced twice (SiteZero armor + the worn item's vanilla armor); damage is now applied directly so only the SiteZero armor model reduces it. Armor broke without the player dying before this. - **Bomb duplication**: dropping the bomb with the drop key no longer leaves a copy in the inventory. - **Flashbang crash (Paper 1.21.10)**: `Particle.FLASH` started requiring a Color and threw, aborting the flash before anyone was blinded; the effect is applied first and visuals are guarded. - **Suffocation on spawn**: zone spawns now pick a standable spot instead of the zone's minimum Y, so players don't spawn inside blocks. - **1.21.x compatibility**: Attribute lookups (max health, movement speed) are resolved at runtime, so the plugin runs across the whole 1.21.x line. Previously the unprefixed 1.21.3+ attribute names crashed on 1.21-1.21.2 with a `NoSuchFieldError`. - **Match freeze at match end**: MiniMessage threw on the legacy-colored team name in the win title, aborting endMatch before the lobby return was scheduled. - **Shop delivering wrong weapons**: Purchases now resolve by the weapon-id PDC tag instead of the item material. - **Grenades unusable**: Recognition no longer depends on exact config ids/materials (`grenade-type` field + material fallback). - **Bomb position**: The C4 lies where it was planted (ground-snapped), not at the bomb site center; no leftover bomb entities across rounds. - **Defuse**: Enemy hits interrupt an active defuse; shots can no longer be absorbed by the bomb entity or items. - **Flashbang no-op**: Line-of-sight gate checked a point inside geometry and the minimum duration was below the blindness fade-in. - **Loss bonus**: Pays 1400 on first loss, +500 per additional consecutive loss, total capped at 3400 (was 1900 to 4800). - **Natural regen**: Full hunger no longer heals players during matches. - **Lobby equipment**: No weapons are handed out in the waiting lobby anymore. - **Pickup during round end**: Eliminations end the round instantly - drops are now lootable in the ROUND_END phase. - **Raw & codes**: Weapon names in purchase messages are color-translated. ### Changed - **Controls**: left-click fires the weapon (was right-click); right-click is now the scope/zoom. Knife melee, grenades, plant and defuse stay on right-click. - **Defuse**: no longer requires sneaking when the main hand is empty or holds the defuse kit (sneak + any item still works). - **Flashbang**: a dense white particle wall in front of the camera plus a high, fading tinnitus (no resource pack needed); facing away only shortens the flash. - **Buy-phase freeze**: only blocks horizontal movement now - players who spawn on stairs/an edge can still fall and settle. - **Armor model**: a weapon's armor-penetration is the fraction of damage passing through armor (`combat.armor-reduction`, default 1.0). - Weapon damage rebalanced toward CS per-shot values (AWP stays a lethal body shot). - Default gunshot sound is `entity.zombie.attack_iron_door` with per-class pitch variation. - Shop categories sorted by price; knife/defuse-kit special cases match config ids instead of display names. - Default `match.countdown-time` raised to 30 seconds (lobby wait before the next match).