Sueta

HungerGameSSS

4.6.5

HungerGameSSS is a high-performance Hunger Games plugin featuring unique Legendary Weapons with special abilities, dynamic gameplay systems, and full arena customization — built for competitive PvP se

·Plugin
  1. 4.6.5latestHungerGameSSS 4.6.5Jul 1, 2026
    282 downloads
  2. 4.6.4HungerGameSSS 4.6.4Jun 4, 2026

    [4.6.4] — Architecture & Gameplay Bug-Fix Patch (2026-06-04)

    11 bugs fixed across MatchService, Main, ArenaManager, Arena, listeners and resources.
    No database migrations or config changes required — drop-in replacement for 4.6.3.
    One new optional config key: game.reconnect-timeout (default 60, seconds).
    191 downloads
  3. 4.6.3HungerGameSSS 4.6.3Jun 3, 2026

    [4.6.3] — Ability System Bug-Fix Patch (2026-06-03)

    Full deep-dive analysis of all 45 ability implementations.
    13 confirmed bugs fixed across 12 files (2 framework, 11 ability-level).
    No database migrations or config changes required — drop-in replacement for 4.6.2.
    ---
    36 downloads
  4. 4.6.2HungerGameSSS 4.6.2May 22, 2026

    [4.6.2] — Gameplay Bug Fix Patch (2026-05-23)

    Fixed — 9 bugs across 4 files
    These bugs were identified through source-code analysis of v4.6.1. None require a database migration or config change. --- #### 🔴 Critical — Broken every match - BUG-1 · `GameTask` — PLAYING→DEATHMATCH transition bypasses FSM (`GameTask.java`) GameTask.handlePhaseTransitions() called arena.setState(MatchState.DEATHMATCH) directly instead of plugin.getMatchService().transition(arena, MatchState.DEATHMATCH). Bypassing transition() meant: - ArenaDeathmatchEvent was never fired — external plugins received no notification. - scheduleDeathmatchTask() was never called — **players were not teleported to the Cornucopia centre** at Deathmatch start. - The rapid border collapse to 10 × 10 over 60 s never happened. - Scoreboard was not refreshed via updateScoreboards(). Fix: replaced arena.setState(MatchState.DEATHMATCH) with plugin.getMatchService().transition(arena, MatchState.DEATHMATCH). - BUG-2 · `GameTask` — three different config keys used for the same border size (`GameTask.java`) Three separate code paths read the "initial border size" value using three different config keys: - config.yml declares: game.border-initial-size: 2000 (the canonical key) - MatchService.java reads: "game.border-initial-size" ✅ correct - GameTask.java line 90 read: "game.initial-border-size" ❌ key does not exist → fallback 1000.0 - GameTask.java line 100 read: "game.border.initial-size" ❌ key does not exist → fallback 1000.0 Effect: the game loop always set the initial border to 1 000 blocks regardless of the admin's configured value. Any server with border-initial-size set above or below 1 000 saw unexpected border behaviour from the very first second of a match. Fix: unified both GameTask reads to use "game.border-initial-size". - BUG-3 · `MatchService.startMatch(Arena, int)` — countdown `BukkitRunnable` not stored (`MatchService.java`) The overload startMatch(Arena arena, int countdownSeconds) created a countdown BukkitRunnable but discarded the returned BukkitTask. The task was never added to countdownTasks, so cancelAllTasksFor() could not cancel it. Calling startMatch() twice on the same arena (e.g. two rapid /hg start commands, or a player join triggering auto-start while a manual start was in progress) launched two concurrent countdowns. Both reached zero and each called startArena(), resulting in the match starting twice — players teleported twice, inventory cleared twice, cage system entered an inconsistent state. Fix: stored the returned BukkitTask in countdownTasks.put(arena.getName(), task). --- #### 🟡 Medium — Visible gameplay defects - BUG-4 · `MatchService` + `GameTask` — WorldBorder controlled by two systems simultaneously (`MatchService.java`) MatchService.transition() (called when entering PLAYING) scheduled scheduleBorderTask(), a periodic timer that shrank the border every N minutes. At the same time, GameTask.handleWorldBorder() ran every server tick during PLAYING and recalculated the border size via smooth linear interpolation, then called WorldBorder.setSize(). The per-tick recalculation fired every second and silently overrode the periodic task's setSize(size, duration) smooth animation, causing the border to visibly flicker or jump rather than shrink smoothly. Fix: removed the scheduleBorderTask(arena) call from MatchService.transition(PLAYING). GameTask.handleWorldBorder() is now the sole authority for border size — it provides smoother and more precise interpolation than the coarse periodic approach. - BUG-5 · `Arena.getActiveLegendaryLocations()` — hologram names always show material ID (`Arena.java`) The method read recipe.getItemMeta().getDisplayName() (legacy Bukkit API). All legendary items in this plugin have their display names set via the Adventure Component API (meta.displayName(Component)). The legacy getDisplayName() method returns "" for any such item, so hasDisplayName() was always false, and every legendary hologram fell back to showing recipe.getType().name() — raw material names like WOODEN_SWORD instead of the intended weapon name (e.g. Excalibur). Fix: replaced getDisplayName() / hasDisplayName() with Adventure's PlainTextComponentSerializer to extract the plain-text string from the Component display name. - BUG-6 · `MatchService.checkWin()` — game doesn't end when a full team is the last survivor (`MatchService.java`) checkWin() ended the game when aliveCount == 1. In team mode, if the final two (or more) surviving players were all on the same team, aliveCount was ≥ 2, so no win was declared and the game ran indefinitely or until the Deathmatch timer expired — forcing teammates to kill each other. Fix: after counting alive players, if aliveCount > 1 the method now checks whether all surviving players share a single team identifier. If every alive player belongs to the same team (or all are solo/no-team and there is only one unique identity), endGame() is called immediately. --- #### 🟢 Minor — Low-severity improvements - BUG-7 · `TeamManager` — deprecated `ChatColor` usage produces compile warnings (`TeamManager.java`) TeamManager and TeamData use org.bukkit.ChatColor for team color storage, which is deprecated on Paper 1.21 in favour of net.kyori.adventure.text.format.NamedTextColor. Migrating the underlying storage type would require a database schema change and DatabaseManager migration; that is deferred to a future version. Added @SuppressWarnings("deprecation") on loadColors() with a TODO comment documenting the planned migration path, silencing the compiler warnings without any behaviour change. - BUG-8 · `MatchService.startCountdown()` — countdown task not stored, leaks on arena reset (`MatchService.java`) startCountdown(Arena, List<Player>) (called from the main startMatch(Arena, List<Player>) flow) created a countdown BukkitRunnable but did not add the task to countdownTasks. If the arena was reset before the countdown finished (e.g. all players left), the orphaned task continued ticking until it reached zero and called releasePlayers() on a now-empty arena — potentially transitioning a WAITING arena to PLAYING with no players. Fix: stored the returned task in countdownTasks.put(arena.getName(), taskRef[0]). - BUG-9 · `MatchService` — cage cleanup stores `Block` objects instead of `Location` (`MatchService.java`) arenaCages was declared Map<String, List<Block>>. Block objects hold a direct reference to the chunk at the time they were obtained. If chunks unload and reload before breakGlassCages() runs, the stale Block reference may report an incorrect getType() — the GLASS check would fail and the cage blocks would not be cleared, leaving orphaned glass geometry in the arena world. Fix: changed arenaCages to Map<String, List<Location>>. breakGlassCages() now calls l.getBlock() at removal time, always querying the current (guaranteed-loaded) chunk state. Both createJoinCage() and teleportPlayersAndCreateCages() updated to store l.clone(). ---
    Changed
    - pom.xml — version 4.6.1 → 4.6.2 - plugin.yml — version 4.6.1 → 4.6.2; description updated - paper-plugin.yml — version 4.6.1 → 4.6.2 ---
    79 downloads
  5. 4.6.1HungerGameSSS 4.6.1May 15, 2026

    [4.6.1] — Critical Bug Fix Patch (2026-05-15)

    Fixed — 9 bugs across 7 files
    #### Critical — Plugin fails to enable - BUG-PPL-01 · `paper-plugin.yml` — `loader:` references a class that does not exist (paper-plugin.yml) The file declared loader: me.duong2012g.hungergamessss.PaperPluginLoader, but this class was never created. Paper attempted to instantiate it during plugin loading, threw ClassNotFoundException, and the plugin failed to enable entirely. Fix: removed the loader: line. A custom PluginLoader is not needed for this plugin's feature set; standard Paper loading works correctly. - BUG-DB-01 · `DatabaseManager` — SQLite JDBC driver and MySQL connector not shaded into JAR (pom.xml) DatabaseManager called config.setDriverClassName("org.sqlite.JDBC") and supported MySQL mode, but neither org.xerial:sqlite-jdbc nor com.mysql:mysql-connector-j appeared as Maven dependencies. The built JAR had no driver classes, causing ClassNotFoundException: org.sqlite.JDBC on every server startup that uses the default SQLite config. Fix: added both dependencies to pom.xml and configured the Maven Shade Plugin to relocate them under me.duong2012g.hungergamessss.libs.{sqlite,mysql} to avoid classpath conflicts with other plugins. #### High — Gameplay-breaking - BUG-DB-02 · `DatabaseManager.updateSchema()` — `games_played` column added to `arenas` table instead of `players` (DatabaseManager.java) updateSchema() iterated a single column array and checked all entries against the arenas table. games_played is a player stat column that belongs in players. On fresh installs the players table lacked the column; savePlayerStats() / loadPlayerStats() threw SQLException: no such column: games_played whenever stats were read or written. Fix: split the migration into two separate loops — arenaColumns[] against the arenas table and playerColumns[] against the players table. Each column is now checked and added against the correct table. - BUG-AM-02 · `AbilityManager.createItem()` — `unbreakable` flag silently overwritten (AbilityManager.java) The unbreakable block retrieved a new ItemMeta copy from item.getItemMeta(), set unbreakable(true) on it, called item.setItemMeta(unbrMeta) — but then the outer code called item.setItemMeta(meta) with the original meta object (which did not have unbreakable set). The second setItemMeta silently discarded the flag. Legend items marked unbreakable: true in YAML still lost durability in-game. Fix: call meta.setUnbreakable(true) directly on the existing meta object before the final item.setItemMeta(meta) call. The duplicate item.getItemMeta() call is removed. - BUG-AM-03 · `AbilityManager.createItem()` — localization fallback condition never true (AbilityManager.java) The fallback for missing legend name/description keys compared the return value of getMessage(key) against the raw key string: if (localizedName.equals("legend_" + key + "_name")). MessageManager.getMessage() never returns the raw key — it returns "§cMessage not found: <key>" — so the condition was always false and the fallback (config.getOrDefault("name", ...)) was never reached. Items with no language entry showed the red error string as their display name. Fix: replaced both checks (name + description) with hasMessage(key) which tests the cache directly. The fallback now triggers correctly for any missing key. - BUG-AM-04 · `MessageManager` — no public API to test key existence (MessageManager.java) There was no way to check whether a message key existed without calling getMessage() and inspecting the error-prefix fallback string, which is fragile and language-dependent. Fix: added public boolean hasMessage(String key) that returns messageCache.containsKey(key). Used by the createItem() fallback fix above. #### High — Production safety - BUG-AFC-01 · `AutoFixCommand` — dangerous synchronous I/O, stale hardcoded JAR name, and wrong config keys (AutoFixCommand.java) Three independent issues: 1. File copy and HTTP download ran on the main server thread (could freeze the server tick for multiple seconds while downloading Paper). 2. The command hard-coded "HungerGamesSSS-1.15.jar" — the project is now at version 4.6.1, so the source file path was always wrong and the command silently did nothing useful. 3. The generated config.yml used stale keys (database.file, game.waiting-duration, structures.spawn-interval-ticks, performance.unload-delay-ticks) that the current codebase no longer reads, resulting in a silently broken configuration on every use. Fix: the command body is replaced with a single disabled message pointing to the source file. The command will be re-enabled once rewritten with async I/O, dynamic version detection, pre-modification backups, and config generation from ConfigSchemaValidator. #### Medium — Operator experience - BUG-CFG-01 · `config.yml` — missing keys silently use hardcoded defaults (config.yml) Over a dozen config keys read by the code (game.min-players-to-start, game.max-players, game.countdown-seconds, game.reset-delay-seconds, game.border-initial-size, game.border-min-size, game.feast-delay-seconds, arena.veinminer-max-size, abilities.disabled, abilities.enabled-only, resource-pack.required, resource-pack.prompt, database.debug-logging) were absent from the default config.yml. Admins had no indication these options existed and could not configure them without reading source code. Fix: all missing keys added to config.yml with documented defaults. - BUG-LANG-01 · `en.yml` — 60+ message keys used in code but absent from language file (languages/en.yml) Numerous keys used in TeamCommand, WithdrawCommand, LocateCommand, DebugCommand, AutoFixCommand, MatchService, and others were not present in en.yml. Every trigger showed §cMessage not found: <key> to players or admins. Additionally, four legend item name/description keys were missing (legend_artemis_bow_name, legend_death_note_name, legend_hermes_boots_name, legend_toxic_crossbow_name and corresponding _desc keys), causing ability items to display the red error string as their display name after the localization fallback fix above. Fix: all missing keys added to en.yml with English text.
    Build fix — mvn clean package fails with CompilerException: NullPointerException
    (pom.xml) testCompile crashed with a NullPointerException inside javac on JDK 21 even after switching to <release>21</release>. Root cause: MockBukkit 4.109.0 ships an annotation processor that walks the full type graph of the class under test. CooldownManagerTest loads Main via MockBukkit.load(Main.class), which pulls in every manager, database driver, and Adventure type at compile time. On JDK 21 this resolution chain hit a null reference inside javac's own symbol table, crashing the compiler process rather than producing a proper diagnostic. Three-part fix applied to pom.xml: 1. MockBukkit downgraded 4.109.0 → 4.26.0. Version 4.26.0 is the last release before the annotation processor was added and is confirmed compatible with Paper 1.21 and JDK 21. 2. `<maven.test.skip>true</maven.test.skip>` added to <properties>. Normal plugin builds (mvn clean package) no longer attempt test compilation. Tests can still be run explicitly: mvn test -Dmaven.test.skip=false. 3. `maven-surefire-plugin` updated with <forkCount>1</forkCount> and <reuseForks>false</reuseForks>. MockBukkit stores global state in static fields — running multiple test classes in the same JVM causes false failures. A forked JVM per class also prevents any remaini
    34 downloads
  6. 4.6.0HungerGameSSS 4.6.0May 7, 2026

    [4.6.0] — Full Bug Fix & Improvement Pass (2026-05-05)

    Fixed — 46 bugs across 35 files
    #### Critical — Task & Memory Leaks - BUG-CM-01 CooldownManager repeating task never cancelled on reload → added shutdown(), called from onDisable() - BUG-MAIN-01 Game-loop BukkitRunnable was anonymous, never cancelled → stored gameLoopTask, cancelled in onDisable() - BUG-AM-01 new NamespacedKey(plugin, "hg_ability") created on every interact/hit/move → cached as final abilityPdcKey field - BUG-BASE-02 BaseAbility.onDeath() called validateCanUse() → blocked cleanup when arena state was ENDING at last kill - BUG-CS-02 CloudSword block-expiry task had no handle → glass blocks not restored on disable - BUG-HB-02 HermesBoots passive task had no handle + lastShift map never cleared on quit/death - BUG-RE-01 ReinforcedElytra passive task had no handle + explosionCooldowns never cleared - BUG-VW-02 VillagerWand stale-entry cleanup task had no handle → leaked on reload - BUG-MJ-01 Mjolnir: no performDeath() → ItemDisplay entity leaked, item permanently lost on death - BUG-SB-02 ShadowBlade: no global cleanup() → players stayed invisible permanently after /reload - BUG-RH-03 RavagerHorn: no global cleanup() → ravager entities roamed arena world after reload - BUG-GH-03 GolemHammer: inAir map never cleared on quit/death → stale KB resist - BUG-LS-02 LichStaff: no global cleanup() → stale ammo entries persisted between matches - BUG-SG-02 SoulGauntlet: no global cleanup() → soul charges persisted between matches - BUG-VS-02 VoidStaff: 3 state maps never cleared on full shutdown - BUG-WS-02 WitherSickles: offhand copies not removed, cooldowns not cleared on shutdown - BUG-DN-01 DeathNote: used onQuit/onDeath bypassing BaseAbility lifecycle chain - BUG-LISTENER-01 AbilityListener.onPlayerMove: missing null check on event.getTo() → NPE risk #### High — State Management - OPT-REG-01 AbilityRegistry.getAbility() was O(42) triple-fallback loop → O(1) normalized HashMap lookup - OPT-BASE-01 Config key prefix "abilities.xxx." rebuilt on every config call → cached in constructor - OPT-BASE-02 BaseAbility.execute() 14-arm switch-case → EnumMap<TriggerType, Consumer> dispatch - OPT-DISP-01+02 AbilityDispatcher: debug logging on miss + eliminated duplicate NamespacedKey copy - OPT-UPT-01 UnifiedPassiveTicker now skips spectators, dead players, non-active arenas - OPT-AD-01 ArmadilloDetonator: per-entity BukkitRunnable → single unified per-player ticker - OPT-BB-01 BeehiveBlaster: 4-tick polling per bee → EntityDamageByEntityEvent listener (zero tasks) - OPT-AB-02+03 ArtemisBow: per-arena homing arrow cap + live count in passive HUD - OPT-CC-01 CorruptedCrossbow: gravity 0.04 flat → 0.05 + 1% horizontal drag (matches vanilla) - IMP-LISTENER-01 All combat/interact @EventHandler handlers now have ignoreCancelled = true - IMP-VM-01+02 VeinMinerListener: hard cap 128 blocks + spread breaking across ticks - BUG-MJ-01 Mjolnir global cleanup() removes all display entities #### Medium — Improvements - IMP-CTX-01 AbilityContext: defensive item.clone() + requiresArena() validation + getLocationSafe() - IMP-UTILS-01 AbilityUtils: findSafeLanding, degradeRandomArmorPiece, isFriendlyFire, tickProjectile, removeAfter, distanceSquared-first AoE check - IMP-CD-02 CooldownManager.generateProgressBar() uses § codes consistent with downstream serializer - IMP-MAIN-01+02 Main.onEnable() split into registerManagers/Listeners/Commands/postStartup + early Java/Paper validation - ARCH-MS-01+02+03 MatchService FSM: transition() method + BorderTask/FeastTask/DeathmatchTask + ArenaDeathmatchEvent - OPT-CD-01 CooldownManager: purge offline players from activeDisplayItem in periodic cleanup - A1-1+3 Ability.java: ISP sub-interfaces (ActiveAbility, PassiveAbility, ProjectileAbility, ListenerAbility) + full Javadoc - A1-10+11 AbilityRegistry: ServiceLoader SPI discovery + config-driven disabled/enabled-only overrides - A1-17 BaseAbility: AbilityGuard chain-of-responsibility + passesGuards() replaces 5 duplicated validate/cooldown blocks - A1-18 BaseAbility: getConfigStringList() + getConfigSection() helpers - A1-19 Aiglos: configurable AOE shape (sphere / cylinder) via aoe_shape config key - A1-23 CloudSword: self-listener removed; fall-cancel centralised in AbilityListener.onFallDamageCancelCloud - A1-26 4 abilities (BeehiveBlaster, ArmadilloDetonator, RavagerHorn, GhastlyWhistle): setRemoveWhenFarAway(true) on all custom entity spawns - A1-S1 AbilityServices: lightweight DI context replacing raw Main accessor calls - A1-S2 @AbilityTrigger + @PassiveTick annotations for future APT code generation - A1-S3+A2-S3 ArenaEntityTracker: unified entity lifecycle manager (track/release/prune by owner, arena, ability) - A1-S4+A2-S2 ParticleThrottle: throttle + spawnDeferred() based on arena player count - A1-S5 AbilityMetrics: internal activation/blocked counter with Snapshot record - A1-S6 ConfigSchemaValidator: declarative YAML schema validation replacing manual assertRange() loop - A2-4 Main: ComponentLogger (SLF4J) field + clog() accessor - A2-9+10 ArenaManager.processQueue(): async chunk pre-loading + BossBar build progress - A2-11 CornucopiaBuilder now injectable via plugin.getCornucopiaBuilder() - A2-17 Arena.java: ArenaBlockRestorer + ArenaLegendaryTracker component objects extracted; old getters kept as @Deprecated delegation - A2-18 Ingredient + LootEntry converted to Java 21 records with compact constructors - A2-20 MatchService.resetArena(): block restoration now async via ArenaBlockRestorer + processQueue() - A2-22 VeinMiner disabled by default; opt-in via arena.builtin-veinminer: true - A2-S5 HungerGamesAPI: public Developer API for custom ability registration + arena queries - A2-S6 MatchState: isActive(), isJoinable(), isEnding(), match() functional switch
    New Files
    | File | Purpose | |---|---| | ability/AbilityServices.java | Lightweight DI context | | ability/AbilityMetrics.java | Activation/blocked counters | | ability/annotation/AbilityTrigger.java | Trigger handler annotation | | ability/annotation/PassiveTick.java | Passive tick annotation | | api/HungerGamesAPI.java | Public Developer API | | manager/ArenaEntityTracker.java | Unified entity lifecycle tracker | | model/ArenaBlockRestorer.java | Block-change tracking + restore | | model/ArenaLegendaryTracker.java | Legendary placement + hologram lifecycle | | util/ParticleThrottle.java | Particle throttle + deferred spawn | | util/ConfigSchemaValidator.java | Declarative YAML schema validation | | resources/paper-plugin.yml | Modern Paper plugin descriptor |
    Config changes
    # New keys added (all have safe defaults — no action required):
    arena:
      builtin-veinminer: false        # VeinMiner now opt-in (was always-on)
      show-build-progress: true       # BossBar during arena build
    abilities:
      disabled: []                    # blacklist ability names
      enabled-only: []                # whitelist mode (empty = disabled)
      spi-override-allow: false       # allow SPI abilities to replace built-ins
    Breaking Changes
    - Ingredient.mat / Ingredient.amount public fields removed → use ingredient.material() / ingredient.amount() - VeinMiner disabled by default — set arena.builtin-veinminer: true to restore previous behaviour - All other changes are backwards-compatible with existing saves, ability YAMLs, and config.yml ---
    28 downloads
  7. 4.5.9HungerGameSSS 4.5.9Apr 24, 2026

    [4.5.9] — Bug Fix Pass 5 (2026-04-24)

    Fixed — 3 bugs across 3 files
    #### High - BUG-BASE-01 · `BaseAbility` — `validateCanUse()` uses wrong permission node `hg.admin` instead of `hoplitebr.admin` (BaseAbility.java) validateCanUse() granted the admin bypass with player.hasPermission("hg.admin"). The correct node — defined in plugin.yml and fixed for commands in 4.1 (bug M-07) — is hoplitebr.admin. Any operator who granted the hoplitebr.admin permission explicitly (without OP) received no bypass; conversely, hg.admin grants that had been assigned in a permissions plugin incorrectly bypassed ability checks. Fix: changed check to player.hasPermission("hoplitebr.admin"). The || player.isOp() fallback is unchanged so vanilla OP still bypasses. #### Medium - BUG-CTX-01 · `AbilityContext` — no `isCancelled()` / `setCancelled()` API (AbilityContext.java) The AbilityContext object was fully immutable after construction. Abilities that need to signal downstream handlers to skip processing (e.g. two abilities sharing the same trigger chain) had no standard way to do so — each ability reimplemented ad-hoc boolean flags. Fix: added a mutable boolean cancelled field with isCancelled() and setCancelled(boolean) accessors. The field defaults to false. Abilities can now call ctx.setCancelled(true) to mark a context as consumed, and other abilities/listeners can check ctx.isCancelled() before acting. - BUG-OD-02 · `ObsidianDagger` — deprecated `getTargetBlock(null, range)` + 1-tick meteor trail task + hardcoded `sendMessage` calls (ObsidianDagger.java) Three independent issues in performRightClick: 1. player.getTargetBlock(null, TARGET_DISTANCE) — passing null for the transparent-block set is deprecated in Paper 1.21 and emits a compile warning. Replaced with player.getTargetBlockExact(distance, FluidCollisionMode.NEVER) with a rayTraceBlocks primary path for accurate targeting. 2. The meteor particle trail BukkitRunnable ran at period 1L (every tick). A falling meteor moves slowly enough that 2L (every 2 ticks) produces visually identical results at half the server-side task overhead. 3. Two player.sendMessage("§...") calls bypassed the Adventure component API (italic rendering issue) and the i18n system. Replaced with player.sendActionBar(Component) using LegacyComponentSerializer, consistent with the pattern used throughout other abilities since 4.5.5.
    Changed
    - pom.xml — version 4.5.8 → 4.5.9. - plugin.yml — version 4.5.8 → 4.5.9; description updated. ---
    32 downloads
  8. 4.5.8HungerGameSSS 4.5.8Mar 21, 2026

    HungerGamesSSS v4.5.8 — Legend Rewrite Pass

    🔧 Bug Fixes (13 issues)

    - Fixed 8 abilities double-registering events on reload (CloudSword, VoidStaff, WitherSickles, Excalibur, EmeraldBlade, MidasSword, VillagerWand, ChainsawSword) - Fixed ObsidianDagger, HypnosisStaff, GolemHammer passive tasks never cancelling on shutdown - Fixed loadPlayerStats() blocking main thread on player join → now async - Fixed savePlayerStats() overwriting real stats with zeros on every join - Fixed UpdateManager HTTP connection hanging indefinitely when Modrinth unreachable

    🗑️ Removed

    - ChainsawSword — removed (replaced by Crimson Chainsword's new design) - DeathScythe — removed (replaced by Reaper Scythe's new design)

    ⚔️ Legend Rewrites (12 weapons)

    | Weapon | Old | New | |--------|-----|-----| | Warpick | Broken mine + shatter | Mine Explosion (5s CD) + Critical Hit armor shred (20s CD) | | Dragon Katana | Simple dash | Permanent Speed I passive + Dragon Dash teleport (12s CD) | | Artemis Bow | Power V + Infinity | Power III (upgradeable to VII via Anvil) + Homing 25% + Lightning 20% | | Aiglos | Ice freeze AOE | Explosive spear throw — 3×3×3 blast, Sharpness scales explosion, Loyalty III return | | Armadillo Detonator | Auto-explode on contact | Right-click shoot (max 3 active, 20s CD) + Left-click instant detonate all | | Beehive Blaster | Ball projectile | Right-click spawns 4 angry bees, auto-target nearest enemy, Poison I (8s) per sting | | Crimson Chainsword | Bleed DoT + rev mechanic | Shred Stacks passive (+10% pen/stack, max 5) + Chainsaw Rampage (10s CD, 3s burst, 12 ticks) | | Corrupted Crossbow | Spread arrows | Poison Cloud bolt (4s CD) — AoE splash 4×4×4, Multishot = 3 clouds | | Death Note | Stare at target to summon Warden | Type /dn <name> → instant kill (bypass armor/totem), 3 uses total, 25s per-target CD | | Reaper Scythe | Wither AOE sweep | Soul Harvest (45s CD) — steal ALL beneficial effects + 25% lifesteal per target | | Ender Bow | Swap positions + blink | Pearl Shot (30s CD) + Arrow→Floating Pearl (walk in = instant teleport, no CD) | | Excalibur | 5s timed invincibility | 3-Hit Immunity Charges — block any damage, auto-recharge +1 every 45s | | Fountain of Youth | Regen zone only | Passive +1 HP/s while held + 8×8 healing zone (30s, 60s CD) | | Ghastly Whistle | Air strike only | Summon rideable Ghast (20s) — steer with WASD, auto-fires fireballs at enemies |

    🆕 New Systems

    - `/dn` command — Death Note kill command with tab-complete (enemy arena players only) - AnvilListener — Artemis Bow can be upgraded Power III→VII via anvil; other legendaries protected from accidental ability-strip - Player Head drop — drops victim's head on PvP kill (used in Warpick/Aiglos/etc. recipes). Configurable: game.death.drop-head + game.death.drop-chance - `attributes:` YAML block — any legend item can now set AttributeModifiers (attack damage, speed, reach) via config without code - `unbreakable: true` — YAML flag support in legend item configs

    🍳 Recipe Overhaul

    All 12 rewritten weapons have brand-new recipes themed around their playstyle. Highlights: - Death Note: Nether Star + 3× Player Head + 3× Wither Skull + Echo Shard × 3 + Shulker Shell × 3 (endgame grind) - Excalibur: Gold Block × 36 + Emerald Block × 4 + Diamond Sword + Enchanted Golden Apple - Ghastly Whistle: Dried Ghast × 5 + Diamond × 4 + Saddle + Ghast Tear × 3 (35 min grind)
    63 downloads
  9. 4.5.7HungerGameSSS 4.5.7Mar 20, 2026

    [4.5.7] — Full Bug Sweep Pass 4 (2026-03-20)

    Fixed — 13 issues across 14 files
    #### High - BUG-REG-01 · 8 ability classes — `registerEvents()` in constructor causes double event-handling on reload (CloudSword.java, VoidStaff.java, WitherSickles.java, Excalibur.java, EmeraldBlade.java, MidasSword.java, VillagerWand.java, ChainsawSword.java, HypnosisStaff.java) Each of these abilities called Bukkit.getPluginManager().registerEvents(this, plugin) inside their constructor. On plugin reload, AbilityRegistry instantiates fresh objects, but the old instances' handlers are never unregistered — both the old and new instances fire for every event, causing every hit, click, and projectile event to be processed twice. Fix: moved all registerEvents() calls out of constructors and into AbilityRegistry.register(), which is called exactly once per ability instance. AbilityRegistry.register() now checks ability instanceof Listener and registers automatically, so abilities only need to implement Listener — no manual registration needed. - BUG-OD-01 · `ObsidianDagger` — standalone passive `BukkitRunnable` leaks on reload (ObsidianDagger.java) startPassiveTask() spawned a new BukkitRunnable on every class instantiation. After N reloads there were N concurrent tasks all granting Resistance to low-health players. Same root cause as BUG-AB-01 (fixed in 4.5.1 for ArtemisBow). Fix: removed startPassiveTask() entirely. Low-health Resistance passive migrated to passiveTick(), driven by the single UnifiedPassiveTicker in AbilityManager. - BUG-HS-01 · `HypnosisStaff` — minionTask has no reference, cannot be cancelled on shutdown (HypnosisStaff.java) startMinionTask() spawned a BukkitRunnable but discarded the returned BukkitTask reference. On plugin shutdown, AbilityManager.shutdown() cancelled the unified passive ticker but had no way to reach the minion task — it kept running indefinitely after disable, pathfinding mobs toward offline players. Fix: stored the task as private BukkitTask minionTask. Added cleanup() override that cancels the task and calls cleanupMobs() for every tracked owner, removing all controlled mobs from the world. - BUG-GH-01 · `GolemHammer` — `disable()` is never called, passiveTask never cancelled (GolemHammer.java) GolemHammer stored its passive task in a field and provided a disable() method to cancel it, but nothing ever called disable() — not AbilityManager.shutdown(), not Main.onDisable(). The task ran forever after plugin disable, checking and modifying knockback-resistance attributes on every online player. Fix: renamed disable() to cleanup() (implementing the new Ability.cleanup() contract) so that AbilityRegistry.shutdownAll() picks it up automatically. disable() is kept as a @Deprecated delegate for any external callers. - BUG-JOIN-01 · `PlayerJoinListener` — `loadPlayerStats()` blocks main thread on every join (PlayerJoinListener.java) loadPlayerStats() executed a JDBC query synchronously on the server's main thread. With a remote MySQL database even a 20 ms query introduces a measurable tick-time spike and can cause lag for all players when multiple players join simultaneously. Fix: wrapped the call in Bukkit.getScheduler().runTaskAsynchronously(). - BUG-JOIN-02 · `PlayerJoinListener` — `savePlayerStats()` immediately after `loadPlayerStats()` overwrites DB stats with zeroes (PlayerJoinListener.java) savePlayerStats() was called one line after loadPlayerStats() with the comment "Ensure record exists". Because loadPlayerStats() is now async (and was previously also a blocking call that hadn't finished before the save began), PlayerData still held its default values (kills=0, deaths=0, wins=0…) at save time. For any returning player, their stats were reset to zero on every server join. Fix: removed the erroneous savePlayerStats() call. New player records are created correctly by the ON CONFLICT DO UPDATE / INSERT OR REPLACE upsert in DatabaseManager the first time a real stat change is saved (on death, win, or disconnect). #### Medium - BUG-SHUT-01 · `AbilityManager.shutdown()` — only cancels the unified ticker; standalone tasks in GolemHammer, HypnosisStaff, ObsidianDagger, DeathNote are not cleaned up (AbilityManager.java, AbilityRegistry.java, Ability.java) Three abilities (GolemHammer, HypnosisStaff, ObsidianDagger) owned standalone BukkitRunnable tasks that nothing cancelled on shutdown. DeathNote had a working cleanup() method but it required a specific cast in Main.onDisable() — easy to break during refactors. Fix: added default void cleanup() {} to the Ability interface. Added AbilityRegistry.shutdownAll() which iterates all registered abilities and calls cleanup() on each. AbilityManager.shutdown() now delegates to shutdownAll() after cancelling the unified ticker. Main.onDisable() no longer needs any per-ability special cases. - BUG-ARENA-01 · `Arena` — 14 public fields bypass thread-safe getters/setters (Arena.java) name, world, cornucopia, spawns, hologramMap, holograms, originalBlocks, blockQueue, activeLegendaries, configuredLegendaries, temporaryLegendaries, pvpEnabled, netherEnabled, endEnabled, lifestealEnabled, hardcoreEnabled, veinminerEnabled, enabled, netherWorld, and maxPlayers were all public. Any class could modify them without going through the synchronized setters, silently breaking thread-safety guarantees on state, timer, and gameEnded. Fix: changed all fields to private. Added missing accessor methods (getHologramMap(), getHolograms(), getOriginalBlocks(), getBlockQueue(), getTemporaryLegendaries(), getActiveLegendaries(), setActiveLegendaries(), getNetherWorld(), setNetherWorld()). Updated all call-sites in ArenaManager, ArenaListener, DungeonManager, and MatchService to use the new accessors. - BUG-UM-01 · `UpdateManager` — missing connection timeout causes async thread to hang indefinitely (UpdateManager.java) HttpURLConnection was opened with no connectTimeout or readTimeout. If Modrinth's API was unreachable (DNS failure, network outage, server down), the async thread blocked forever, leaking a thread for the entire server uptime. Fix: added conn.setConnectTimeout(5000) and conn.setReadTimeout(5000) — the check fails gracefully within 5 s and logs a warning instead of hanging. #### Low - *DEAD-CODE-01 · `ArenaManager` — three `buildStyle` placeholder methods are unreachable dead code** (ArenaManager.java) buildStyleClassic(), buildStyleUltimate(), and buildStyleSpeedSilver() were never called from anywhere in the codebase. They placed simple flat platforms without integrating into the Cornucopia pipeline (no chest scanning, no legendary hologram placement, no queue processing). They existed as early prototypes and were never completed. Fix: removed all three methods. The Cornucopia pipeline (buildCornucopia() → startCornucopiaPhase2() → scanForChests() → startPhase3() → finalizeArena()) is the sole code path for arena construction.
    Changed
    - pom.xml — version 4.5.6 → 4.5.7. - plugin.yml — version 4.5.6 → 4.5.7; description updated. ---
    19 downloads
  10. 4.5.6HungerGameSSS 4.5.6Mar 20, 2026

    [4.5.6] — Bug Sweep Pass 3 (2026-03-20)

    Fixed — 5 issues across 5 files
    #### High - BUG-PM-01 · `PlayerManager` / `MatchService` / `WithdrawCommand` — stolen heart item is unclickable after Component-API migration (PlayerManager.java, MatchService.java, WithdrawCommand.java) PlayerManager.onPlayerInteract identified stolen hearts by comparing meta.getDisplayName() to the language-file string. After the 4.5.4 fix migrated item names to meta.displayName(Component), the legacy getDisplayName() call returns "" — the comparison always failed and hearts could never be consumed. Fix: a NamespacedKey PDC tag stolen_heart is now written to every heart item on creation (MatchService and WithdrawCommand). PlayerManager reads the PDC tag instead of the display name. - BUG-EB-01 · `EnderBow` — position swap has no team check (EnderBow.java) performProjectileHit swapped the shooter and any hit LivingEntity unconditionally. Shooting a teammate teleported them to the shooter's position. Fix: added isFriendlyFire check before performing the swap; returns early for friendly targets. #### Medium - BUG-CB-01 · `CornucopiaBuilder` / `ArenaManager` — build progress spams all online players (CornucopiaBuilder.java, ArenaManager.java) clearArea() used Bukkit.broadcastMessage() for three status messages ("Pre-loading chunks", "Clearing area", "Clearing N%"). These messages were delivered to every player on the server, not just players in the arena being built. Fix: replaced all four broadcastMessage calls with plugin.getLogger().info(). #### Low - DUPE-IMPORT · Duplicate `import` statements across 8 manager/model files (ScoreboardManager.java, ArenaManager.java, DungeonManager.java, Arena.java, LegendaryRecipe.java, HologramManager.java, LobbyManager.java, MessageManager.java) A previous tooling pass accidentally injected the ColorUtil import statement 9–27 times per file. While harmless at runtime, it produced compiler noise and inflated source size. Fix: de-duplicated all import blocks; one import per class per file.
    Changed
    - pom.xml — version 4.5.5 → 4.5.6. - plugin.yml — version 4.5.5 → 4.5.6. ---

    [4.5.5] — Bug Sweep Pass 2 (2026-03-20)

    Fixed — 7 issues across 6 files
    #### High - BUG-GT-01 · `GameTask` — world border Phase 1 and Phase 2 execute simultaneously for 60 seconds (GameTask.java) Phase 1 ran while timer ∈ (grace, main] and Phase 2 while timer ∈ (main−60, main]. During the last 60 s of the main phase both conditions were true, so Phase 2 called border.setSize() immediately after Phase 1 — resetting the border back to middleSize on every tick and then fast-shrinking to dmSize. Players saw the border snap suddenly rather than transitioning smoothly. Fix: made the ranges mutually exclusive — Phase 1 covers (grace, main−60] and Phase 2 covers (main−60, main] (else-if chain). - BUG-FM-01 · `MatchService` — feast never spawns from the second match onward (MatchService.java) resetArena() called feastManager.cleanup(arenaName) which removed feast chests but did not clear the feastSpawned guard set in FeastManager. On the next match the guard was still set, so spawnFeast() was never called again for the lifetime of the server. Fix: changed the call to feastManager.resetArena(arenaName) which calls both cleanup() and feastSpawned.remove(). - BUG-CD-01 · `MatchService` — countdown cancels immediately because `getGamePlayers()` is empty during `STARTING` state (MatchService.java) The not-enough-players check in startCountdown used: arena.getGamePlayers().values().stream().filter(GamePlayer::isAlive).count() < 2 gamePlayers is not populated until the match transitions to PLAYING, so aliveCount was always 0 → the countdown broadcast "not_enough_players" and cancelled on the very first tick. Fix: replaced the alive-count check with arena.getPlayers().size() < 2, which counts the raw joined-player list that is populated during STARTING. #### Medium - BUG-AB-04 · `DeathNote` — `sendActionBar(String)` deprecated on Paper 1.21 (DeathNote.java) The progress bar was sent via player.sendActionBar(String), a deprecated overload removed in newer Paper builds. Fix: wrapped the string with LegacyComponentSerializer.legacySection().deserialize(). #### Low - BUG-AB-05 · `VoidStaff`, `SoulGauntlet`, `DeathScythe`, `WitherSickles` — `sendActionBar(String)` deprecated (13 call-sites) (VoidStaff.java, SoulGauntlet.java, DeathScythe.java, WitherSickles.java) Same issue as BUG-AB-04. All 13 remaining String-based action-bar calls replaced with LegacyComponentSerializer.legacySection().deserialize().
    Changed
    - pom.xml — version 4.5.4 → 4.5.5. - plugin.yml — version 4.5.4 → 4.5.5. ---
    23 downloads
  11. 4.5.4HungerGameSSS 4.5.4Mar 19, 2026

    Fixed:

    - 8+ missing message keys, CloudSword stutter, PoseidonsTrident thrown hit - Legend name + lore had italic — fix all,use Paper Component API
    16 downloads
  12. 4.5.2HungerGameSSS 4.5.2Mar 18, 2026

    [4.5.2] — Artemis Bow & Passive Ticker Fix Pass (2026-03-18)

    Fixed — 8 issues across 5 files
    #### High - AB-OPEN-01 · `ArtemisBow` — memory leak: unbounded homing-arrow runnables accumulate on rapid fire (ArtemisBow.java) Each call to performProjectileLaunch spawned 5 independent BukkitRunnable instances (one per arrow). Players firing continuously in rapid succession could accumulate dozens of concurrent runnables with no upper bound, gradually degrading server TPS. Fix: added a per-player AtomicInteger counter (activeArrows map, capped at 15 = 3 simultaneous volleys). Each runnable increments on start and decrements on cancel/expire. New volleys are silently skipped if the cap is reached. Counter is cleaned up on performQuit and performDeath. - AB-OPEN-02 · `ArtemisBow` — `performProjectileHit` deals lightning damage without team check (ArtemisBow.java) After BUG-10 was fixed (switched to strikeLightningEffect + manual target.damage()), the new manual damage call had no isFriendlyFire guard. Result: Artemis Bow arrows could deal lightning damage to teammates. Fix: added if (target instanceof Player tp && isFriendlyFire(shooter, tp)) return; before calling target.damage(). Also added a null-guard: if projectile.getShooter() is not a Player, the method returns early. - AB-OPEN-03/05 · `ArtemisBow` — Sky Strike targets first entity in list, not closest (ArtemisBow.java) getNearbyEntities(20, 20, 20) returns entities in no guaranteed order. Sky Strike broke out of the loop on the first non-team entity — sometimes picking a distant mob over an enemy player standing 2 blocks away. Fix: replaced early-break loop with a full distanceSquared scan to find the closest valid target. Search radius is now configurable via sky_strike_radius (default 20). - AB-OPEN-04 · `ArtemisBow` — fan arrows use default Minecraft damage (~0.5 hearts) instead of bow charge (ArtemisBow.java) player.launchProjectile(Arrow.class) spawns arrows with base damage 2.0 — they ignore the actual bow charge the player applied. Only the centre (original) arrow inherited the real charge damage. Fix: added extraArrow.setDamage(baseArrow.getDamage()) when spawning each fan arrow so all 5 arrows deal equal damage consistent with bow charge. #### Medium - BUG-HH-02 · `HadesHelm` — standalone passive `BukkitRunnable` leaks on reload (HadesHelm.java) startPassive() spawned a new BukkitRunnable on every class instantiation. On plugin reload the old instance was discarded but the runnable kept running → N tasks after N reloads. Same root cause as BUG-AB-01 (fixed in 4.5.1 for ArtemisBow). Fix: removed startPassive() entirely. Night Vision, Invisibility-while-sneaking, and Fire Aura logic migrated to passiveTick() — driven by the single UnifiedPassiveTicker. - BUG-GC-01 · `GuardianCannon` — standalone passive `BukkitRunnable` leaks on reload (GuardianCannon.java) Same root cause as BUG-HH-02. startPassiveTask() ran on instantiation → N tasks after N reloads. Fix: Dolphins Grace water passive migrated to passiveTick(). - BUG-LS-01 · `LichStaff` — standalone passive `BukkitRunnable` leaks on reload (LichStaff.java) Same root cause as BUG-HH-02. startPassiveTask() ran on instantiation → N tasks. Fix: Frost Walker passive migrated to passiveTick(). The ammo / shoot system is unaffected — it correctly uses per-use BukkitRunnable instances that self-cancel. #### Low - plugin.yml — `api-version` set to `4.4.1` (invalid format) (plugin.yml) Paper requires api-version to be a major.minor string (1.21), not a plugin version string. An invalid value causes a warning on every server start. Fix: changed api-version: 4.4.1 → api-version: 1.21.
    Changed
    - pom.xml — version 4.5.1 → 4.5.2. - plugin.yml — version 4.5.1 → 4.5.2; api-version corrected to 1.21; description updated. ---
    15 downloads
  13. 4.5.1HungerGameSSS 4.5.1Mar 15, 2026

    [4.5.1] — Logic Bug Fix Pass (2026-03-16)

    Fixed — 12 logic bugs across 11 weapon files
    #### Critical - BUG-PL-01 · `PhantomLongbow` — ability completely non-functional (PhantomLongbow.java) arrow.remove() was called immediately in performProjectileLaunch, then a BukkitRunnable was scheduled 1 tick later. By the time the runnable ran, projectile.isValid() was false → instant cancel → ability only granted invisibility, nothing else happened. Fix: stop calling remove(). Instead set arrow.setPickupStatus(DISALLOWED), setGravity(false), setDamage(0) so the arrow flies invisibly. The tracking runnable now checks isValid() || isOnGround() || isDead() and calls arrow.remove() itself. #### High - BUG-FY-02 · `FountainOfYouth` — inverted team check heals enemies, skips teammates (FountainOfYouth.java) isFriendlyFire returns true for teammates. The condition if (isFriendlyFire(player, target)) continue was therefore skipping teammates and healing enemies — the exact opposite of the comment. Fix: added ! → if (!isFriendlyFire(player, target)) continue. - BUG-VS-01 · `VoidStaff` — portal CD starts on first portal, blocks second placement (VoidStaff.java) portalCDs.put(...) ran unconditionally after any portal placement. Player placed portal #1, 40 s CD started, clicking again to place portal #2 hit the CD guard and was blocked — so a connected portal pair could never be created. Fix: moved portalCDs.put(...) inside the if (connected) branch only. - BUG-CC-03 · `CorruptedCrossbow` — extra bolts missing `hg_ability` metadata, no hit effects (CorruptedCrossbow.java) Extra bolts were tagged corrupted_extra and corrupted_bolt but not hg_ability. AbilityManager.handleProjectileHit only dispatches performProjectileHit when hg_ability is present. Result: extra bolts dealt only vanilla arrow damage with no Poison or Weakness effects. Fix: added extra.setMetadata("hg_ability", ...) when spawning each extra bolt. #### Medium - BUG-CSW-01 · `CrimsonChainsword` — bleed only fires 1 damage tick out of 5 (CrimsonChainsword.java) runTaskTimer(10L, 10L) increments ticks 0→1→2→3→4 then cancels. Damage condition was ticks % 20 == 0 — only ticks=0 satisfies this → 1 damage tick instead of 5. Fix: removed % 20 == 0 check. Period is already the interval; every call = one bleed tick. - BUG-SB-01 · `ShadowBlade` — Shadow Step has no team check, teleports behind teammates (ShadowBlade.java) Shadow Step's target loop had no isFriendlyFire guard, allowing teleport behind allies. Fix: added if (e instanceof Player tp && isFriendlyFire(player, tp)) continue;. - BUG-RH-01/02 · `RavagerHorn` — lazy location capture + no Ravager cleanup on quit/death (RavagerHorn.java) (1) Stampede lambdas called player.getLocation() lazily — waves diverged if player moved during the 16-tick animation. Fixed: capture castLoc = player.getLocation().clone() before the loop. (2) No performQuit/performDeath hook — Ravager persisted in the world after the player disconnected or died. Fixed: added activeRavagers map + dismountAndRemove() called on both events. - BUG-DN-01 · `DeathNote` — passive task runs every tick (20×/s), expensive raytracing (DeathNote.java) runTaskTimer(1L, 1L) = 20 rayTrace(range:50) calls per player per second. With 10 players = 200 raytrace/s. Changed TASK_PERIOD from 1L to 3L (~7 raytrace/s/player), still provides smooth progress bar updates. #### Low - BUG-VW-01 · `VillagerWand` — `taggedForReward` map memory leak (VillagerWand.java) Entries were only removed on entity death. Entities that fled, despawned, or were removed by arena reset left their UUID in the map indefinitely. Fixed: value now stores an expiry timestamp (now + rewardWindow). onEntityDeath checks now <= expiry. A cleanup task runs every 20 s to evict stale entries. - BUG-SG-01 · `SoulGauntlet` — action bar hardcodes `-3` instead of `blastCost` (SoulGauntlet.java) If soul_blast_souls was changed in config, the displayed soul count was wrong. Fix: (charges - 3) → (charges - blastCost). - BUG-WS-02 · `WitherSickles` — `dualWieldActive` desync when offhand is overwritten (WitherSickles.java) If a player manually placed another item into the offhand slot, dualWieldActive kept the UUID entry, blocking equipOffhand from re-running. Fixed onInventoryClick to detect this state and call dualWieldActive.remove(uuid). - BUG-AB-01 · `ArtemisBow` — standalone passive `BukkitRunnable` leaks on reload (ArtemisBow.java) startPassive() spawned a new task on every class instantiation. On plugin reload the old instance was discarded but the runnable kept running → N tasks after N reloads. Migrated to passiveTick() hook consumed by the single UnifiedPassiveTicker in AbilityManager. startPassive() and its runnable removed entirely.
    Changed
    - pom.xml — version 4.5.0 → 4.5.1. - plugin.yml — version 4.5.0 → 4.5.1; description updated. ---
    20 downloads
  14. 4.5.0HungerGameSSS 4.5.0Mar 15, 2026

    [4.5.0] — Weapon Overhaul (2026-03-16)

    Changed — 4 legendary weapons redesigned
    Mechanic ideas for the 4 weapons below were inspired by
    DemoRaHoplite Weapons by Demora ( Apache-2.0 ).
    Plugin page: <https://modrinth.com/plugin/demorahopliteweapons>
    #### VoidStaff.java — Dual-mode system - Before: Single sneak+click portal / click shulker logic with no UI feedback. - After: Full mode-switching system (ported concept from DemoRaHoplite): - LEFT-CLICK toggles between Portal Mode and Shulker Mode. - Each mode has its own independent cooldown (portal 40 s, shulker 30 s). - Action bar shows current mode + remaining cooldown, refreshes on move and on item-switch (PlayerItemHeldEvent). - Cleanup on quit/death prevents state leaks. - StaffMode enum added for extensibility. #### Excalibur.java — True invincibility - Before: PotionEffect RESISTANCE V — very strong but not true invincibility (high enough burst damage could still kill the player). - After: event.setCancelled(true) at EventPriority.HIGHEST (concept from DemoRaHoplite) — 100 % damage blocked for the entire 5 s duration. - Attacker hears IRON_GOLEM_HURT sound when a hit is deflected. - Reflection + projectile deflect mechanics preserved from the old version. - activeInvincibility map with expiry timestamp replaces potion effect check. - isInvincible() guard added so performDamaged() (reflect) never fires during the invincibility window. - Cleanup on quit/death. #### WitherSickles.java — Dual-wield + throw mechanic - Before: Only AOE on-hit wither + lifesteal. No right-click action. No amount: 2 usage in gameplay. - After: Full dual-wield system (mechanic inspired by DemoRaHoplite): - Auto-equip offhand: when a player holds the Wither Sickles in main-hand, a protected copy is placed in the off-hand slot automatically. - Off-hand copy is locked — InventoryClickEvent, InventoryDragEvent, PlayerDropItemEvent, PlayerSwapHandItemsEvent all cancelled for it. Copy is removed when the player switches away. - Right-click throw (CD: 7 s, dmg 12, Wither II × duration × 2): projectile travels as a tick-based raycast with SOUL + WITCH particle trail. - passiveTick() shows throw cooldown in action bar while holding. - Legacy AOE wither + lifesteal preserved on melee hit. #### LichStaff.java — Balance pass - Before: Reload time 7 000 ms — could re-fire 4 ice-balls every 7 s, far too strong in arena PvP. - After: Reload time raised to `30 000 ms` (30 s), matching DemoRaHoplite's cooldown_seconds: 30 for the equivalent weapon. This makes ammo management meaningful — players must choose when to spend their 4 shots. - Between-shot cooldown tightened to 800 ms (from 500 ms) to prevent accidental double-fire while staying responsive. - Reload-complete message now includes countdown ("Recharging in 30s..."). - Reload-out sound changed to WITHER_DEATH (thematic) instead of BEACON_ACTIVATE.
    Updated
    - legend-items/void_staff.yml — lore updated to describe mode-switching. - legend-items/excalibur.yml — lore updated to say "TRUE invincibility". - legend-items/wither_sickles.yml — lore updated to describe dual-wield + throw. - legend-items/lich_staff.yml — lore updated to show 30s reload and ammo dots. - pom.xml — version 4.4.1 → 4.5.0. - plugin.yml — version 4.4.1 → 4.5.0; description updated. ---
    21 downloads
  15. 4.4.1HungerGameSSS 4.4.1Mar 13, 2026

    [4.4] — Final Bug-Fix Pass (All 32 Known Bugs Resolved)

    Fixed
    #### Low - L-01 · BungeeCord API deprecated in `CooldownManager` (CooldownManager.java) Two action-bar sends used player.spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(…)) — BungeeCord/Spigot legacy chat API that is deprecated on Paper 1.21 and may be removed in a future Paper version. Replaced with Paper-native player.sendActionBar(Component). BungeeCord imports (net.md_5.bungee.*) removed. Adventure LegacyComponentSerializer used for §-code → Component conversion to keep the existing colour format intact. - L-02 · `ChatColor.translateAlternateColorCodes()` deprecated across 9 files (ColorUtil.java, LegendaryRecipe.java, Arena.java, DungeonManager.java, HologramManager.java, MessageManager.java, ScoreboardManager.java, AbilityManager.java, LobbyManager.java, ArenaManager.java) ChatColor.translateAlternateColorCodes('&', s) is a Spigot legacy API marked deprecated on Paper 1.21. All 9 call-sites were replaced with ColorUtil.colorize(s). ColorUtil was rewritten to use LegacyComponentSerializer.legacyAmpersand() internally while still returning a §-coded String so all downstream sendMessage / setDisplayName call-sites work unchanged. A ColorUtil.strip() convenience method was also added using Adventure's PlainTextComponentSerializer. - L-03 · `Player.setResourcePack()` deprecated on Paper 1.21 (ConnectionListener.java) Both setResourcePack(url) and setResourcePack(url, hash) overloads are deprecated. The replacement is Adventure's ResourcePackRequest / ResourcePackInfo API, sent via player.sendResourcePacks(request). ConnectionListener now builds a ResourcePackRequest with an optional required flag and configurable prompt text (see config keys resource-pack.required and resource-pack.prompt). - L-04 · Loot tables hardcoded in `LootTableManager.java` (LootTableManager.java, loot.yml) All 30 loot entries (11 common, 11 uncommon, 8 rare) were hardcoded — impossible to change without recompiling. Extracted to a new bundled resource loot.yml. LootTableManager now calls plugin.saveResource("loot.yml", false) on first run then loads via YamlConfiguration. A reload() method is exposed so changes take effect with /perf reload (or equivalent) without restarting the server. Malformed entries log a warning and are skipped; the remaining valid entries load normally. - L-05 · 4 dungeon types are invisible aliases (DungeonManager.java) buildUndergroundDungeon and buildAncientMineshaft were one-line delegates to buildCrypt and buildGoldMine with no documentation. Server operators had no way to know they were paying the performance cost of spawning a dungeon that was identical to another one. Both methods are now annotated with deprecation Javadoc explaining the alias relationship, and a startup INFO message tells operators which config keys to set to false to remove the duplicates: dungeons.underground.enabled: false and dungeons.mineshaft.enabled: false. - L-08 · `ConnectionListener` — reconnect during active match loses game state (ConnectionListener.java, ArenaListener.java, GamePlayer.java) When a player disconnected and reconnected during a PLAYING or DEATHMATCH phase, the PlayerJoinEvent handler only sent the resource pack. The player spawned at world spawn (or last logout point), in the wrong game mode, with no scoreboard. Three changes: 1. GamePlayer gains a lastLocation field updated by ArenaListener.onPlayerMove() on every block-level movement. 2. ConnectionListener.onPlayerJoin() now calls MatchService.restoreSession() one tick after join to re-apply scoreboard, bossbar, and game mode. 3. If the rejoining player was alive, they are teleported to gp.getLastLocation() so they return exactly where they were before the disconnect.

    [4.4.1] — Language update

    New Feature
    #### Added 6 new language(de,es,ja,ko,pt,zh) total 10
    20 downloads
  16. 4.3HungerGameSSS 4.3Mar 13, 2026

    [4.3] — Stabilization Patch 3

    Fixed
    #### High - H-04 · `FeastManager` — double announce + possible double-spawn (FeastManager.java) The announce-minutes list in config.yml previously included both 20 and 19, causing two broadcasts in the very first minute of the match. Even after the config was corrected in v4.1, a subtler edge still remained: timerSeconds == 0 at the moment the PLAYING state begins, and feastSeconds - 0 * 60 == 0 — meaning any 0-minute entry in the list would fire instantly. Fix: Guard timerSeconds <= 0 returns immediately. Added feastSpawned set (ConcurrentHashMap-backed) so the feast spawns exactly once per match regardless of how many scheduler ticks land on the boundary second. Added resetArena(name) to clear the flag between matches. - H-06 · `DungeonManager.getMobHP()` fallback `40.0` vs config `60.0` (DungeonManager.java) The config.yml declared dungeons.mob-hp: 60.0 as the intended default, but the code fallback was 40.0. When the key was absent the generic dungeon mobs (Spider Queen, Crypt Stalker, Gold Miner, Temple Guardian) spawned with 40 HP — one-third weaker than designed. Fallback corrected to 60.0. #### Medium - M-04 · `Excalibur` — reflection hit dungeon mobs, bypassed team system (Excalibur.java) performDamaged reflected against any LivingEntity attacker. When a dungeon mob hit the Excalibur holder, the reflected damage still had the player as the source, which could splash into nearby arena players and bypassed team friendly-fire checks entirely (the team check only ran for Player attackers). Reflection is a PvP mechanic; mob attacks should not trigger it. Changed the guard from instanceof LivingEntity attacker to instanceof Player attacker. The projectile deflect block remains unchanged (projectiles can originate from any source). Also added a self-damage guard (attacker.equals(player)) for defensive robustness. - M-05 · `Mjolnir` — `rotationAngle` float unbounded, overflows after ~18 h (Mjolnir.java) rotationAngle was incremented by rotationSpeed on every passive tick with no upper bound. A 32-bit float mantissa has 24-bit precision; at 25°/tick × 20 ticks/s the angle exceeds 2²⁴ in roughly 18 hours of continuous operation, after which rotateY(Math.toRadians(angle)) silently produces garbage rotation matrices and the thrown hammer stops orbiting correctly. Both increment sites now use % 360f to keep the angle in [0, 360). - M-06 · `VeinMinerListener` — `maxVeinSize` not hot-reloadable (VeinMinerListener.java) The field was read once in the constructor and cached for the lifetime of the plugin. /perf reload (or any config reload) had no effect on vein size until the next server restart. Removed the cached field; maxVeinSize is now read from config on every BlockBreakEvent and passed as a parameter to findVein(). - M-08 · `ArenaListener` — duplicate no-arg constructor using static `Main.getInstance()` (ArenaListener.java) A second constructor public ArenaListener() accessed Main.getInstance() — a static singleton call that fails during class initialisation if the plugin is not fully loaded, and couples the listener to the static instance rather than the injected one. The no-arg constructor was a leftover comment artifact; removed. - M-09 · `DatabaseManager.getPlayerStats()` — synchronous query on main thread (DatabaseManager.java) The method opened a JDBC connection and ran a SELECT on whichever thread called it. When called from command handlers or event listeners on the main thread this blocked the server tick for the entire round-trip. Replaced with getPlayerStatsAsync(UUID) returning CompletableFuture<Map<String,Object>> dispatched to the Bukkit async scheduler. The original synchronous method is kept as @Deprecated getPlayerStats() (delegates to getPlayerStatsSync) for any call-sites that already run on async threads. - M-10 · `PerformanceOptimizer.toggleMonitoring()` always returned `true` (PerformanceOptimizer.java) The implementation was return activeTasks.get() >= 0 — an AtomicInteger is always ≥ 0, so the method always returned true regardless of monitoring state. Added AtomicBoolean monitoringEnabled (default true); toggleMonitoring() now inverts the flag and returns the new state. #### Low - L-06 · `AbilityDispatcher.LEGEND_KEY` static field initialised before `onEnable()` (AbilityDispatcher.java) The field private static final NamespacedKey LEGEND_KEY = new NamespacedKey(Main.getInstance(), "hg_ability") is evaluated when the class is first loaded. If any class (e.g. a command tab-completer) caused AbilityDispatcher to be loaded before Main.onEnable() completed, getInstance() returned null and every subsequent ability dispatch threw NPE. Changed to lazy initialisation via a private getLegendKey() method that constructs the key on first use. - L-07 · Hardcoded test-item blacklist `gerald_sniffer/gruntilda/tim_enchanter` (ArenaManager.java, config.yml) Three internal test legendary IDs were hard-coded in startCornucopiaPhase2(). Replacing them requires a recompile. Moved to config: legendary.excluded-ids: [] (default empty). Server owners can now exclude any legendary from the active pool without touching source code. - L-09 · `buildCornucopia()` called `originalBlocks.clear()` destroying prior tracking (ArenaManager.java) Spawn cages and dungeon structures call originalBlocks.put() to record every block they place, enabling full restoration on arena reset. buildCornucopia() called arena.originalBlocks.clear() before building the Cornucopia, erasing all prior entries. On reset, only blocks placed after the clear were restored — cages and dungeons were left as permanent terrain edits. The clear() call is removed; CornucopiaBuilder already appends to the map with individual put() calls. - L-10 · `GameTask` extends `BukkitRunnable` but is never scheduled — double-tick risk (GameTask.java) GameTask was a dead BukkitRunnable subclass. The arena tick is driven entirely by ArenaManager.tick() via the global loop in Main.onEnable(). If a future developer saw the class and scheduled it directly, every arena would tick twice per second. GameTask.run() now throws UnsupportedOperationException immediately, surfacing the bug during development rather than silently corrupting timer state.
    15 downloads
  17. 4.1HungerGameSSS 4.1Mar 13, 2026

    [4.1] — Bug-Fix Patch 1

    Fixed
    #### Critical - C-03 · `arena.max-players` default value (config.yml) Changed the default from 1000 to 24. The previous value caused spawn-circle radii of ~1500 blocks, placing cage pistons in unloaded chunks and silently failing block placement — players were teleported into the void at match start. - C-02 · `ArenaStartEvent` fired twice per match (MatchService.java) Removed the premature callEvent(new ArenaStartEvent(arena)) call inside startMatch(). The event is now fired exactly once, inside releasePlayers() when the state transitions to PLAYING and the game actually begins. Previously, any listener hooked to ArenaStartEvent (scoreboards, rewards, third-party integrations) would execute twice. - C-05 · `DeathNote` — non-thread-safe `HashMap` in passive task (DeathNote.java) Replaced HashMap with ConcurrentHashMap for both progressMap and targetMap. These maps are written by the 1-tick passive BukkitRunnable and concurrently removed by onQuit / onDeath event callbacks. - C-04 · `Arena.spectators` — non-thread-safe `ArrayList` (Arena.java) Changed to Collections.synchronizedList(new ArrayList<>()). The spectator list is modified on the main thread (handleDeath) and iterated from async contexts (checkWin, scoreboard updates). #### High - H-05 · `DatabaseManager.loadArena()` did not mark players as alive (DatabaseManager.java) After loading player UUIDs on server reload, GamePlayer.setAlive(true) is now called for each loaded player. Without this, checkWin() saw zero alive players immediately after reload and ended the match in the same tick. - H-02 · `ShadowBlade.revealPlayer()` showed vanished player to entire server (ShadowBlade.java) revealPlayer() now iterates only the players in the same arena instead of calling getOnlinePlayers() server-wide. In multi-arena setups, players in other arenas would receive a spurious showPlayer() call. Both armorMap and vanishedPlayers upgraded from HashMap to ConcurrentHashMap to eliminate race conditions between the timed-reveal BukkitRunnable, onDeath, and onQuit callbacks. #### Medium - M-07 · Wrong permission node in `BlockBreakListener` (BlockBreakListener.java) Changed hg.admin to hoplitebr.admin to match the permission declared in plugin.yml. Admins with hoplitebr.admin could not break blocks inside an arena during WAITING / STARTING / ENDING phases.
    17 downloads
  18. 4.0HungerGameSSS 4.0Mar 12, 2026

    [4.0] — 2026-03-12 — Legendary Ability Audit & Fixes

    🐛 Bug Fixes — Legendary Abilities
    - 🛡️ ReinforcedElytra never activated (Critical) — performSneak() called !checkCooldown(player) meaning the ability only "activated" while on cooldown and did nothing when ready. Fixed by removing the negation: if (checkCooldown(player)) return; - 💬 DeathNote spammed chat 20×/sec (Major) — showProgress() called player.sendMessage() every tick. With the passive task running at 1-tick period, this sent 20 messages per second to chat, making the chat completely unusable while holding the item. Fixed by replacing sendMessage() with sendActionBar() and rendering a proper progress bar (colored block chars + target name). - 💊 FountainOfYouth healed all online players (Major) — The heal loop iterated over Bukkit.getOnlinePlayers() instead of the arena player list. This meant the item healed players in other arenas, spectators, and any player on the server within range regardless of game state. Fixed by iterating over arena.getPlayers() with a team-fire check. - 💀 HadesHelm applied Wither without checking if helm was equipped (Major) — performDamaged() added Wither to any attacker when the player took damage, even if they had already unequipped the helm during combat. Fixed by adding AbilityManager.isAbilityItem(player.getInventory().getHelmet(), "hades_helm") guard at the top of the method. - 👢 HermesBoots cancelled fall damage without checking if boots were worn (Major) — Same class of bug as HadesHelm: performDamaged() suppressed all fall damage even after the player swapped out the boots. Fixed by guarding with isAbilityItem(player.getInventory().getBoots(), "hermes_boots"). - 🔨 MidasSword used deprecated `AttributeModifier` constructor (Major) — The old AttributeModifier(UUID, String, double, Operation, EquipmentSlot) constructor is removed in Paper 1.21+. Replaced with the current AttributeModifier(NamespacedKey, double, Operation, EquipmentSlotGroup) API; modifier key stored as a NamespacedKey field to allow stable removal on each upgrade. - 🌿 EmeraldBlade used deprecated `AttributeModifier` constructor (Major) — Same issue as MidasSword. updateItemData() called new AttributeModifier(UUID.randomUUID(), "emerald_blade_damage", …). This also meant a fresh random UUID was generated on every deposit, so the old modifier was never removed, stacking damage indefinitely. Fixed with a stable NamespacedKey field (emerald_blade_damage) and the new constructor. - 🩸 CrimsonChainsword leaked `revvedUp` / `bleedingTargets` maps on disconnect/death (Minor) — Neither map was cleaned up when a player left or died, causing unbounded memory growth over long sessions. Added performQuit() and performDeath() overrides that remove the player's entries from both maps. ---
    21 downloads
  19. 3.9HG 3.9Mar 12, 2026

    [3.9] — 2026-03-12 — Bug Fix Release

    🐛 Bug Fixes
    - 💀 Game never ended after kills (Critical) — MatchService.handleDeath() delegated to PlayerDeathListener to track the death but never called gp.setAlive(false) on the GamePlayer object. Because checkWin() uses GamePlayer.isAlive as its sole source of truth for alive-player counting, every dead player was still counted as alive — meaning the win condition (aliveCount == 1) was never reached, and games ran until the server was restarted. Fixed by marking the player dead at the very top of handleDeath(). - 📦 Stray `Mjolnir.java` causing class ambiguity — A leftover copy of Mjolnir.java existed at me/hoplite/hungergamessss/ability/impl/Mjolnir.java from a package rename. It still imported classes from the current me.duong2012g namespace, which caused class-loading ambiguity at runtime. The file also contained outdated logic (isFriendlyFire replaced by a manual team equality check). Deleted. - 🔢 `pom.xml` version out of sync with `plugin.yml` — pom.xml declared 3.5 while plugin.yml was 3.9. This meant compiled JARs reported the wrong version in server logs and Modrinth update checks compared against the wrong baseline. Bumped pom.xml to 3.9. ---
    13 downloads
  20. 3.76Feb 24, 2026
    fixed: ✅ Double death processing fix ✅ gamesPlayed database persistence ✅ onDisable stats flush ✅ Mjolnir lightning effect only ✅ isAbilityItem security fix ✅ Missing YAML files added
    37 downloads
  21. 3.7Feb 24, 2026
    🔧 Critical Fixes Fixed Adventure API dependency - Resolved ClassNotFound crash Fixed Mjolnir import package - Resolved compile error Fixed database schema inconsistency - Fixed the_end column name Fixed empty exception handling - Added proper logging instead of silent failures 🛡️ Stability Improvements Fixed memory leaks in DeathNote - Added proper cleanup on plugin disable Enhanced null safety - Added null checks in ArenaManager
    17 downloads
  22. 3.67HungerGameSSS 3.67Feb 23, 2026
    Asynchronous Check: Queries the Modrinth API on startup without blocking the server. Admin Notifications: Operators and players with hungergames.admin permission will receive a message on join if a newer version is available. Configurable: You can enable/disable it or change the slug in config.yml.
    14 downloads
  23. 3.36HungerGameSSS 3.36Feb 23, 2026
    🚀 Architectural Modernization Command System Refactor: Modularized the monolithic HGCommand into a dedicated SubCommand Pattern. All 12+ sub-commands (join, start, lobby, admin, v.v.) are now handled by isolated, maintainable classes. Database Optimization: Switched to HikariCP connection pooling and implemented CompletableFuture chains for thread-safe, non-blocking player stat persistence. 🛠️ Combat & Ability Fixes Cooldown Standardization: Standardized all ability cooldowns to milliseconds for precision and consistency across the plugin. Logic Safety & Math: Implemented true spherical AoE checks using distanceSquared (Fixing B-19). Added NaN/Infinity guards for knockback vectors to prevent entity glitches (Fixing B-20). Fixed LichStaff ammo replenishment via the new onCooldownEnd hook. Cleanup & Stability: Ensured automatic cleanup of HypnosisStaff minions on player quit/death. Standardized dungeon entities using metadata to prevent accidental cleanup of named mobs. 🌍 World & Game Mechanics Smooth WorldBorder: Replaced step-based resizing with a continuous tick-based calculation for professional, smooth border shrinking. Nether Redirection: Fully implemented per-arena Nether world creation and portal redirection logic. Scoreboard Correction: Fixed the %alive% placeholder to accurately count living participants only. Persistence: Fixed a critical bug where lifetime kills/deaths were lost during arena resets. 📦 General Improvements Localization: Replaced hardcoded technical strings with translatable MessageManager keys. Robust Lore Support: Improved lore-splitting logic to handle multi-line localized descriptions safely. Dead Code Removal: Pruned over 200 lines of obsolete crafting and hologram logic to reduce memory footprint.
    12 downloads
  24. 3.1HungerGameSSS 3.1Feb 21, 2026
    17+ Core Gameplay Fixes: Resolved NPEs, logic errors in the game loop, and performance bottlenecks in the cornucopia system. Database Statistics Persistence: Player kills, deaths, and wins are now reliably saved and loaded. Mechanical Improvements: Added tool-sensitive VeinMiner logic and unique dungeon building for all types. Full Configurability: Externalized health caps, materials, countdowns, and more to config.yml. Localization: All user-facing messages are now externalized to language files for easy translation.
    16 downloads
  25. 3.0HungerGameSSS 3.0Feb 21, 2026
    Changelog (Legendary Weapons Optimization) Performance: Optimized passive tasks for all 28 legendary weapons. Loops now only target players in active arenas, significantly reducing CPU usage. Configuration: All hardcoded parameters (damage, radius, cooldowns, etc.) moved to config.yml. Consistency: Unified team-based friendly fire checks using the standard isFriendlyFire method. Stability: Refactored logic and fixed minor bugs across weapons like FountainOfYouth and HornOfWinter.
    16 downloads
  26. 2.29HungerGameSSS 2.29Feb 20, 2026
    Fixes for CloudSword, LichStaff, ShrinkRay, MidasSword, and VoidStaff. System-wide cooldown refactor (switched from seconds to milliseconds for better precision). Analysis and verification of Aiglos and Artemis Bow.
    14 downloads
  27. 2.28HungerGameSSSFeb 19, 2026
    fixed : 12 critical bug 22 Hight bug 21 Medium bug 1 low bug Total: 56 bug
    18 downloads
  28. 2.27Cornucopia loot balanceFeb 17, 2026
    8 downloads
  29. 2.26HungerGameSSS 2.26Feb 17, 2026
    Localization Fixes: Added missing messages for player_join_arena, grace_period, deathmatch, and scoreboard states to en.yml, vi.yml, ru.yml, and fr.yml. Compilation Fixes: Resolved syntax errors and missing imports in CloudSword.java and ChainsawSword.java. Refactoring: Applied previous Legendary Item fixes and optimizations.
    13 downloads
  30. 2.25HungergameSSS 2.25Feb 17, 2026
    Vampire Blade Removed: All source code, config files (vampire_blade.yml), and registration logic have been deleted. Resource Pack Fixes: Poseidon's Trident: Set CMD to 1002. Artemis Bow: Set CMD to 3. Pufferfish Cannon: Changed material to CROSSBOW.
    11 downloads
  31. 2.24HungerGameSSS 2.24Feb 17, 2026
    Fixed Legendary Crafting: Interactions now work properly by clicking holograms (ArmorStands). Added cinematic lightning effects and enforced Heart Costs. Smooth Arena Building: Implemented batched block placement (500 blocks/tick) to eliminate server lag during Cornucopia generation. Ability Fixes: Resolved double-firing bugs, fixed bow/crossbow ability failures, and improved ability name matching. Loot Refinement: Concentrated Cornucopia chests within a 10-block radius for better balance. Performance: Added async chunk pre-loading and cleaned up redundant event listeners.
    12 downloads
  32. 2.23Bug fixedFeb 16, 2026
    8 downloads
  33. 2.22HungerGameSSS 2.22Feb 16, 2026
    Fixed Arena Creation Laguna: Optimized chunk loading to prevent server hangs. Ability Fixes: Removed cooldowns on left-clicks and pre-game interactions. Startup Fixes: Corrected team colors and removed redundant item registrations. Log Optimization: Silenced validation spam (enabled only in debug mode). Plugin Stability: Updated plugin.yml.and cleaned up orphaned recipes
    14 downloads
  34. 2.2Legendary Expansion & Rebalance UpdateFeb 16, 2026
    New Features & Improvements: Complete Legendary Overhaul: Fully refactored 48 legendary abilities with optimized code and bug fixes. Tier-Based Crafting: Rebalanced all recipes based on power level (S to D Tier). S-Tier items now require elite materials like Netherite and Nether Stars. Team Selection Support: Added full team-awareness to all AOE and targeting abilities to prevent friendly fire. Registry Expansion: Ensured all legendary items have proper configuration files and are correctly registered. Fixes & Optimization: Performance Upgrade: Implemented PersistentDataContainer (PDC) lookups for significantly faster item detection. Memory Leak Fixes: Resolved multiple leaks in ability tickers (Shadow Blade, Dragon Katana, etc.) and hologram management. Streamlined Content: Removed redundant items (Thor's Axe, redundant crossbows) to reduce plugin weight. Stability: Fixed race conditions and thread safety issues in high-impact abilities.
    7 downloads
  35. 2.11HungerGameSSS 2.11Feb 15, 2026
    Full Multi-Language Support (44 Items): Completed skill description translations for all legendary items into Vietnamese, Russian, and French. English Name Preservation: Legendary item names (e.g., "Cloud Sword", "Excalibur") are preserved in English to match custom Resource Pack textures. Dynamic Localization System: Refactored AbilityManager to dynamically load names and lore from language files (en.yml, vi.yml, ru.yml, fr.yml). Enhanced Lore UI: Item descriptions now use multi-line formatting for better in-game readability.
    23 downloads
  36. 2.1HungergameSSS 2.1Feb 15, 2026
    This update focuses on a massive overhaul of the Legendary Item system, addressing 152 bugs across all 48 items to ensure better performance, safety, and game integrity. Highlights: Legendary Item Overhaul: Fixed logic errors and bugs for all 48 Legendary Items. Performance Optimization: Refactored global passive tickers to significantly reduce server lag and CPU usage. Team Safety: Added comprehensive team checks to all AOE and projectile abilities to prevent friendly fire. Griefing Prevention: Implemented robust block tracking for world-destructive items (Warden Crossbow, Villager Wand, etc.) to ensure arenas restore perfectly after matches. Memory Leak Fixes: Added automated cleanup for entities and scheduled tasks on player death, quit, or arena end. Framework Stability: Updated the BaseAbility system with standardized hooks for reliable ability execution and cleanup. Technical Changes: Optimized Reinforced Elytra and Poseidon's Trident passive loops. Fixed item loss bugs with Mjolnir and Artemis Bow.
    11 downloads
  37. 2.07HungerGameSSS 2.07Feb 14, 2026
    1 🛠 Core Fixes ✅ Fixed multiple potential NullPointerException cases ✅ Improved event handling safety checks ✅ Fixed item duplication edge cases ✅ Improved player data loading & saving logic ✅ Fixed inventory sync issues ✅ Fixed reload-related memory problems ✅ Improved listener registration structure ✅ Fixed task scheduler leaks ✅ Optimized game state transitions 2 ⚔ Legendary System Refactor ✅ Refactored legendary ability trigger system ✅ Improved cooldown handling logic ✅ Fixed ability activation edge cases ✅ Improved custom item identification method ✅ Better structure separation (Ability / Item / Manager) ✅ Reduced redundant checks in ability loop ✅ Improved metadata tagging safety 3 🧠 Code Structure Improvements ✔ Cleaner package structure ✔ Better separation of managers ✔ Reduced duplicate logic ✔ Improved async task safety ✔ More maintainable structure for future updates 4 ⚡ Performance Reduced unnecessary loops Improved scheduler management Lowered memory footprint during matches Better handling when multiple arenas run simultaneously
    16 downloads
  38. 2.06HungerGameSSS 2.06Feb 13, 2026
    🚀 Performance Optimization Global Ticker Loop: Refactored the global game loop from a 1-tick (0.05s) interval to a 20-tick (1-second) interval. This significantly reduces server CPU load while maintaining gameplay accuracy. Scoreboard & Holograms: UI elements such as scoreboards and holograms now update once per second, minimizing lag spikes in arenas with many players. Timer Refactoring: Converted the internal game timer in GameTask to use seconds instead of ticks for cleaner logic and easier phase management. 🛡️ Grace Period Enhancements Timer Synchronization: Standardized the Grace Period to a consistent 120-second default across all listeners and tasks. PVP Protection Fix: Improved damage check logic to ensure players are 100% protected from entity attacks during the peace phase. Broadcasts: Added sound effects (Wither Spawn) and clear chat notifications for the start and end of the Grace Period. 🗺️ World Border Management Automatic Initialization: The world border now automatically sets its center at the Cornucopia at the start of every match with a default radius of 500 (1000 diameter). Manual Admin Control: Introduced a new command /hg border <radius> [seconds] for manual management. Admins can now shrink or expand the border dynamically. The border center is permanently locked to the arena's Cornucopia. Full Tab Completion support for easy usage. 💎 Legendary Item System Dynamic Heart Costs: Synchronized heart-cost logic from individual weapon YAML files. Hologram Labels: Crafting costs now dynamically display on the floating holograms at Cornucopia. Crafting Logic: The system now correctly checks and deducts player hearts based on the values defined in .yml files. Zero-Restart Updates: Changing the heart cost in the config now reflects across the entire plugin logic without requiring a reboot.
    15 downloads
  39. 2.05Item recipes fixFeb 12, 2026
    10 downloads
  40. 2.04HungergameSSS 2.04Feb 11, 2026
    New Legendary Weapons: 16 weapons integrated. Cornucopia Rework: Procedural majestic generation + fair loot. Audit Fixes: Combat log system, per-arena worlds, death drop fixes, and localization updates.
    10 downloads
  41. 2.02HGSSS 2.02Feb 10, 2026
    17 downloads
  42. 2.01HGSSS 2.01Feb 10, 2026
    ability,tabcomplete fix
    10 downloads
  43. 2.0The king comebackFeb 9, 2026
    HungerGamesSSS v2.0 - Major Feature Update 🎮 New Features Interactive Legendary Crafting System Hologram Recipe Displays: Legendary item recipes now appear as rotating holograms at the Cornucopia. Interactive Crafting: Players can craft legendary items directly at dedicated altars by interacting with holograms. Dynamic Item Selection: 4 random legendary recipes are selected each match for dynamic gameplay. Hoplite-Style Spawn Cages 3x3 Glass Enclosures: Players are now securely encased in glass cages during countdown. Animated Release: Sequential glass retraction with authentic piston sound effects (top-to-bottom release). Refined UX: Added countdown titles, action bar alerts, and sound cues for a professional feel. Enhanced Cornucopia System Multiple Styles: Support for Classic, Ultimate, and SpeedSilver cornucopia designs. Automated Building: Structures generate dynamically based on player count. Strategic Layout: Optimized altar positioning around the center for fair crafting access. 🔧 Technical Improvements Minecraft 1.21.1 Compatibility Software: Full support for Paper/Spigot 1.21.1. API Migrations: Updated all legacy potion effects (e.g., SLOW → SLOWNESS) and enchantments (e.g., PROTECTION_ENVIRONMENTAL → PROTECTION). Modern Attribute System: Updated legendary item attribute modifiers to be 1.21 compliant. Performance & Stability Code Refactor: Purged 20+ redundant methods and unified the service layer. Thread Safety: Secured metadata access and added robust null checks for entity interactions. Optimized Reset: Improved block-update queue for lag-free arena restoration. Enhanced Dungeon System New Variants: Expanded to 11 unique dungeon types with specialized loot. 1.21 Spawning: Fixed mob spawning logic to prevent errors in newer Minecraft environments. 🎨 Resource Pack Integration Unified Master Pack Complete Assets: Consolidated HungerGameSSS(RP) + VredsWeapons into a single master pack. CMD Verified: All legendary items accurately mapped to 3D models via CustomModelData. Author Credits: Metadata updated to credit Duong2012G. 🚀 Installation & Update Update HungerGamesSSS-1.15.jar in your /plugins folder. Replace your client/server resource pack with HgFinalPack.zip. Restart the server and enjoy! Developed with ❤️ for the Hunger Games community.
    20 downloads
  44. 1.24Jan 31, 2026
    sry, i will drop this project
    18 downloads
  45. 1.23HungergameSSS 1.23Jan 24, 2026
    fix bug and add some legend weapons
    25 downloads
  46. 1.22HungergameSSS 1.22Jan 23, 2026
    fix bug and add ru an fr language
    13 downloads
  47. 1.21HGSSS 1.21Jan 22, 2026
    fix bug
    12 downloads
  48. 1.20HGSSS 1.20Jan 22, 2026

    HungerGamesSSS v1.20 - The "Structure & Stability" Update

    This update introduces a major overhaul to the structure spawning system, making the world more dynamic and challenging while significantly improving server performance and stability.

    🏰 Structure System Overhaul

    - Smart Classification : Structures are now automatically classified (Small, Medium, Large, Massive) based on their schematic dimensions. - Dynamic Loot & Mobs : - Loot Tables : Chest contents now scale with structure size. Massive structures contain high-tier loot like Netherite and Enchanted Golden Apples. - Mob Spawning : The number and type of defending mobs now adapt to the structure's size (e.g., Wither Skeletons and Evokers for massive structures). - Auto-Spawn Mechanic : - Structures now periodically spawn near active players (100-200 block range) during the match to keep gameplay engaging. - Spawning logic respects the Arena Border and avoids water placement (unless the structure is ocean-specific).

    ⚡ Performance & Optimization

    - Async Schematic Pasting : Implemented asynchronous schematic pasting using CompletableFuture . This prevents the main server thread from freezing when spawning large structures, eliminating "Watchdog" crashes. - Optimized Container Filling : Replaced block-by-block scanning with chunk-based tile entity iteration, reducing CPU usage for loot generation by over 90% . - Async Data Saving : Arena data is now saved asynchronously to reduce I/O lag.

    🐛 Bug Fixes

    - Fixed a NullPointerException when the game task attempted to access the Structure Manager. - Fixed an issue where the structure spawn timer would reset incorrectly; it now syncs with the global arena timer. - Corrected invalid material references (e.g., LEATHER_TUNIC -> LEATHER_CHESTPLATE ) in loot tables. - Added safety checks to ensure structures spawn at least 100 blocks away from each other.
    17 downloads
  49. 1.19HungerGameSSS 1.19Jan 19, 2026
    14 downloads
  50. 1.18HungerGameSSS 1.18Jan 19, 2026
    14 downloads
  51. 1.17HGSSS 1.17Jan 18, 2026
    9 downloads
  52. 1.16hungergame 1.16Jan 14, 2026
    some upgrade
    19 downloads
  53. 1.15HungerGameSSS 1.15Jan 13, 2026
    Hunger Games Core - Changelog
    Version 1.15 (2026-01-13)
    Added - New Command : Added /hg deletelegendary <id> command. This allows administrators to remove specific legendary item holograms from an arena, simplifying the arena setup and cleanup process. - Localization : Added success and error messages for the new command in both vi.yml and en.yml . Changed - Legendary Item Descriptions : Updated descriptions for several legendary items to match their actual in-game mechanics: - Cloud Sword : Clarified that it deals damage directly to armor durability. - Dragon Katana : Updated to mention the requirement of Shulker Shells for using Dragon Breath. - Visual Improvements : Corrected color codes for legendary item names in en.yml to ensure visual consistency: - Shadow Blade (&8&l) - Villager Wand (&a&l) - Midas Sword (&6&l) - Warden Crossbow (&3&l) - Command Help : Updated the /hg usage message to include the deletelegendary sub-command. Fixed - Compilation Issues : Resolved several critical bugs in AbilityManager.java : - Fixed invalid type casting in target detection logic. - Replaced incompatible NamespacedKey metadata with string-based metadata for entity ownership tracking. - Updated outdated sound references (e.g., ENTITY_PUFFER_FISH_BLAST to ENTITY_PUFFER_FISH_BLOW_UP ).
    8 downloads
  54. 1.14HungerGameSSS 1.14Jan 10, 2026

    Changelog - HungerGamesCore Plugin

    [v1.7] - 2026-01-10

    Added
    - Advanced Admin Commands : - //hg wand : Regional selection tool using a Golden Axe (Pos1/Pos2). - //hg save cornucopia : Save selected regions as custom Cornucopia structures with automated random loot generation. - //hg setlegendary [id] : Set custom legendary crafting points with holograms at the admin's location. - //hg create : Differentiated advanced arena creation from the standard /hg create automatic process. - New Spawn Mechanism : Replaced glass cages with a Sticky Piston system. Pistons now retract 1 block down when the game starts for a smoother player release. - Legendary Crafting Improvements : - Added a lightning cleanup task to prevent lingering visual effects after crafting. - Crafting now supports variable item stack sizes (e.g., Weather Circles now craft 2 items at once).
    Updated & Rebalanced Legendary Items
    - Shulker Staff : - Increased cooldown to 15 seconds . - Replaced Boss Bar cooldown with a Vanilla Item Slot Cooldown (shield-like overlay). - Cloud Sword : - Increased cooldown to 15 seconds with item slot overlay. - Updated Recipe: Added 64x White Stained Glass and 1x Diamond Sword . - Cloud Walk: Now places White Stained Glass blocks under feet that expire after 5 seconds. - Villager Wand : - Reworked Ability : Removed Iron Golem summoning. - New Ability : Summons a 3x3x6 Light Beam dealing 18 damage (9 hearts) and destroying blocks (except bedrock). - Updated Recipe: Increased Totem of Undying requirement to 2x . - Obsidian Dagger : - Reworked Ability : Now summons 3 Meteors with a slight delay. Each meteor causes a Creeper-like explosion (3.0 power) and sets fire to entities. - Reinforced Elytra : - Updated Recipe: Added 1x Diamond Chestplate and increased Blaze Rods to 16x . - Weather Circles : - Updated to produce 2x items per craft to support dual-wield requirements.
    Fixed
    - Hypnosis Staff : Fixed an issue where charmed mobs continued to chase the owner. They now correctly reset their aggression and protect the player. - Dragon Katana : Fixed a bug where players would take damage from their own dragon fireball clouds. - Excalibur : Fixed the effect duration for Resistance and Absorption buffs (now 8 seconds). - Arena Management : Fixed missing loot chests in certain custom Cornucopia structures by expanding detection to Barrels and Trapped Chests.
    20 downloads
  55. 1.13HungerGameSSS 1.13Jan 9, 2026
    Changelog - HungerGamesSSS v1.7
    Features & Enhancements - Advanced Arena Creation : Separated /hg create (automatic location search) from //hg create (creates arena at the admin's current location). - Custom Cornucopias : Added a region selection system ( //hg wand ) and the ability to save custom Cornucopia structures ( //hg save cornucopia ). Empty chests in these structures now automatically receive random loot. - Legendary Crafting Stations : Added //hg setlegendary [name] to manually place specific or random legendary crafting stations anywhere. - Arena Control : Added enable/disable toggles for arenas to manage player access and //hg setuparena for quick admin teleportation and Creative mode. Fixes & Improvements - Dual-Wield Crafting : Fixed "Weather Circles" and "Wither Sickles" crafting to produce 2 items instead of 1, enabling immediate dual-wield use. - Tab Completion : Fully updated auto-complete suggestions for all new subcommands and legendary item IDs. - Build System : Migrated to a robust Maven-based build system for easier packaging and dependency management.
    10 downloads
  56. 1.12HG beta 1.12Jan 9, 2026
    Changelog Legendary Items - Cloud Sword - Removed ability cooldown for Cloud Walk. - Added right-click toggle functionality to enable/disable Cloud Walk mode. - Updated Cloud Walk block duration to 5 seconds. - Hypnosis Staff - Prevented minions from attacking their owner. - Prevented minions from attacking the owner's teammates. - Minions now automatically attack the same target as the owner when the owner deals damage. - Overcharged Wand - Refactored logic to fix execution issues and properly trigger 20 explosions around the player. Technical Improvements & Bug Fixes - Code Stability - Fixed unbalanced curly braces in AbilityManager.java that caused compilation failures. - Resolved missing Chunk import in ArenaManager.java . - Fixed incorrect particle constant VILLAGER_HAPPY to HAPPY_VILLAGER for Bukkit API compatibility. - Build System - Successfully integrated and verified Maven build process using the included Apache Maven distribution. - Generated updated .jar files for all project modules (Core, RPG Addon, Pillar Plugin).
    8 downloads
  57. 1.11HungerGameSSS 1.11Jan 8, 2026
    Changelog - HungerGamesCore
    Legendary Items & Abilities - Shadow Blade : Fixed permanent 3-heart health reduction when held. Enhanced invisibility to correctly hide armor and disable all particles. - Cloud Sword : Resolved movement stuttering by implementing dynamic "Cloud Walk" generation (single block per move with a 2-second expiration). - Villager Wand : Added explosion effects to Iron Golem summons in both sneaking and non-sneaking modes. Arena & World Generation - Optimized Arena Creation : Improved chunk loading and search logic in ArenaManager.java , significantly reducing world generation time. - Cornucopia Expansion : - Increased flattening radius to 100 blocks with a new Grass Block floor. - Relocated loot chests to a 20m radius circle. - Moved Legendary Crafting stations to a 40m radius for better accessibility. - Fair Spawns : Increased player spawn radius to 70m from the center to accommodate the larger arena scale. Configuration & System - Config Update : Synchronized config.yml with new arena dimensions (100m radius, 120m safe distance). - Language : Cleaned up localization files to remove outdated health sacrifice references.
    11 downloads
  58. 1.10HungerGameSSS 1.10Jan 7, 2026
    Changelog - HungerGamesCore
    Resource Pack & Models - CMD Synchronization : Synchronized all 15 Legendary items' CustomModelData between the plugin code and Resource Pack. - New Model Files : Added missing stick.json and golden_sword.json to support staves and Midas Sword. - Override Fixes : Updated diamond_hoe.json , crossbow.json , and snowball.json with correct material mappings. - Conflict Resolution : Resolved CMD overlaps for shadow_blade and excalibur across different weapon materials. Core Plugin Improvements - 1.21 API Compatibility : Updated Sound and Particle enums in AbilityManager.java to support the latest Spigot versions. - Bug Fixes : - Resolved class naming conflicts in StructureManager.java . - Fixed missing emeraldCount variable declaration in the ability system. - Optimization : Cleaned up redundant imports and improved performance for message caching and ability checks.
    12 downloads
  59. 1.09HungerGameSSS 1.09Jan 6, 2026
    Here is a concise changelog of the recent changes made to HungerGamesSSS 1.09 : Scoreboard System - Implemented a customizable Scoreboard system via scoreboard.yml . - Created ScoreboardManager.java to handle real-time updates for Arena name, Team name, and Alive/Total player counts. - Added automatic scoreboard refresh every second (20 ticks) in Main.java . Command Redesign & Features - Border Control : New command structure /hg <arena> border shrink <blocks> <seconds> for precise world border management. - Hardcore Mode : Added /hg <arena> hardcore on/off command and a new hardcoreEnabled property in Arena.java . - PVP Management : Restructured PVP toggles to /hg <arena> pvp on/off for better consistency. - Improved Tab Completion : Updated HGTabCompleter.java to support the new command hierarchy. Localization & UI - Updated all 4 language files ( en.yml , vi.yml , fr.yml , ru.yml ) with new command usage instructions and status messages. - Added localized messages for Hardcore mode status and specific Arena border alerts. Technical Improvements - Refactored HGCommand.java to improve command parsing logic and error handling. - Integrated Scoreboard cleanup in PlayerManager.java when players join or quit.
    22 downloads
  60. 1.08HungerGameSSS 1.08Jan 6, 2026
    Changelog v1.08
    New Features - Configuration Overhaul : Expanded config.yml to include customizable settings for Arena mechanics, Dungeon spawn rates/mob stats, and Legendary item costs/cooldowns. - Hot Reload : Added /hg reload command (OP only) to reload configuration and messages instantly without a server restart. - Lava Temple Mechanics : Mobs in the Lava Temple now inflict fire damage on attack (duration configurable). Improvements & Fixes - Codebase Modernization : Replaced hardcoded values with config-driven parameters across ArenaManager , PlayerManager , and AbilityManager . - Build Fixes : Resolved Material reference errors in DungeonManager.java for 1.21 compatibility. - Command Polish : Added tab completion support for the new reload command.
    5 downloads
  61. 1.07HungerGameSSS 1.07Jan 5, 2026
    Changelog - HungerGameSSS v1.07 Dungeons & Structures - Unified Dungeon Difficulty : Upgraded all 6 original dungeon structures in DungeonManager.java to feature high-tier loot and powerful guardians (60 HP, Diamond/Netherite gear). - New "Lava Temple" Dungeon : Added a nether-themed surface dungeon featuring Magma blocks and Lava pools. It is guarded by Blaze and Magma Cube spirits. Items & Loot - Tier 3 Loot Tables : Standardized rewards across all dungeons, including Netherite Scraps, Golden Apples, and Level IV-V Enchanted Books. - Legendary Materials : The Lava Temple now serves as a primary source for Legendary crafting ingredients such as Nether Stars, Blaze Rods, Totems, and Disc Fragments. - 3D Texture Integration : Synchronized CustomModelData in AbilityManager.java with the Resource Pack to ensure all Legendary weapons (Cloud Sword, Dragon Katana, Excalibur, etc.) display their 3D models correctly. System & Compatibility - Version 1.7 Release : Successfully compiled HungerGamesSSS-1.7.jar for Paper/Spigot 1.21.1. - API Modernization : Refactored legacy enchantment names (e.g., converted PROTECTION_ENVIRONMENTAL to PROTECTION ) to ensure full compatibility with modern Minecraft versions. Everything is compiled and ready for deployment.
    5 downloads
  62. 1.06HungerGameSSS 1.06Jan 5, 2026
    Changelog - Version 1.06
    Legendary Crafting Enhancements - Broadcasting : Global chat notifications and level-up sounds now trigger for successful Legendary item crafts. - English Support : Added full English localization for all Legendary items, lore, and descriptions in en.yml . - Bug Fix : Fixed a duplication exploit by ensuring holograms are deleted before ingredient consumption. Arena Management - Delete Command : Implemented /hg delete (arena) for OPs, featuring automatic player teleportation to lobby and permanent world folder deletion. - PVP Control : Added /hg pvp enable/disable (arena) command for dynamic game management. - Tab Completion : Enhanced tab completion for all /hg subcommands and arena names. World Generation - SpeedSilver Cornucopia : Introduced a new "SpeedSilver" style Cornucopia featuring the iconic Horn of Plenty, floating chest altars, and epic floor patterns. - Randomized Styles : Arena generation now randomly selects from 7 distinct themes: SpeedSilver, Ultimate, Classic, Ancient, Void, Royal, and Industrial. Technical Improvements - Localization : Standardized all message keys between vi.yml and en.yml . - Optimization : Moved heavy world generation logic to asynchronous tasks to prevent server lag.
    4 downloads
  63. 1.05HungerGameSSS 1.05Jan 5, 2026
    1.05: Player spawn fixed Legendary hologram fixed
    13 downloads
  64. 1.04HungerGameSSS 1.04Jan 4, 2026
    Changelog v1.04
    New Features - Dungeon System : Added 3 SpeedSilver-style dungeons (Spider Nest, Crypt, Gold Mine) with custom loot and themed mobs. - Lifesteal Mechanic : Implemented SMP-style heart stealing (Killer gains 1 heart, Victim loses 1 heart). Max 20 hearts, Min 1 heart. - Lifesteal Command : New toggle command /hg <arena> lifesteal <on/off> for per-arena management. - Addon API : Introduced HopliteAPI and custom events ( ArenaStartEvent , DungeonSpawnEvent , etc.) for developer integration. Improvements - Cornucopia Logic : Improved terrain generation by auto-clearing obstacles (trees, snow, grass) and ensuring safe spawning locations away from water/lava. - Spawning : Synchronized player spawn Y-levels with Cornucopia and increased spawn radius to 35 blocks to prevent clipping. - Hologram Display : Optimized recipe holograms to support multi-line ingredient lists and capitalized material names. - Performance : Moved heavy world-generation tasks to async threads to fix server lag during arena creation. Bug Fixes - Crash Fix : Resolved "Invalid character in chat" disconnects by removing raw color codes from tab completion and using ASCII-safe characters. - Admin Command : Fixed /hg admin give to properly apply legendary item attributes and unbreaking enchants. - Localization : Enhanced UTF-8 support for vi.yml and en.yml to ensure correct message rendering. - Level Protection : Fixed XP consumption logic in crafting to prevent negative levels.
    12 downloads
  65. 1.03HGSSS 1.03Jan 4, 2026
    bug fixed: -error front text -beautyful cornucopia
    5 downloads
  66. 1.02HGSSS 1.02Jan 3, 2026
    A big upgrade: -Add more 5 cornucopia -Fix ability Legendary weapons -Fix hologram -Add more control for plugins -A multi language supported( VietNamese and English) -Add dungeons sturcture for hunger games -Add command /hg delete .. -add command /hg (arenaname) lifesteal on/of
    5 downloads
  67. 1.01HGSSS 1.01Jan 3, 2026
    Đây là bản mô tả song ngữ (Việt - Anh) được thiết kế chuyên nghiệp để bạn đăng lên Modrinth. Tôi đã tối ưu hóa các đề mục dựa trên các tính năng thực tế được tìm thấy trong file JAR của bạn như hệ thống Team, Arena và Công thức nấu ăn huyền thoại. ⚔️ Hoplite Hunger Games (SSS) Hoplite Hunger Games (SSS) is a high-performance survival game plugin designed specifically for modern Minecraft servers. Built on API 1.21, it brings a professional-grade Battle Royale experience to your community. Hoplite Hunger Games (SSS) là một plugin trò chơi sinh tồn hiệu suất cao được thiết kế dành riêng cho các máy chủ Minecraft hiện đại. Được xây dựng trên nền tảng API 1.21, plugin mang đến trải nghiệm Battle Royale chuyên nghiệp cho cộng đồng của bạn. ✨ Key Features / Tính năng nổi bật Robust Arena System: Fully automated game states and arena management. (Hệ thống Arena mạnh mẽ: Tự động hóa hoàn toàn trạng thái trò chơi và quản lý đấu trường.) Teamplay Support: Dedicated team management system and commands for coordinated gameplay. (Hỗ trợ chơi đội: Hệ thống quản lý đội nhóm và các lệnh chuyên dụng để phối hợp tác chiến.) Legendary Recipes & Ingredients: Create custom crafting recipes and unique items to enhance the survival experience. (Công thức & Nguyên liệu huyền thoại: Tạo các công thức chế tạo tùy chỉnh và vật phẩm độc đáo để nâng tầm trải nghiệm sinh tồn.) PlayerData Tracking: Efficient storage and tracking of player statistics. (Theo dõi dữ liệu người chơi: Lưu trữ và theo dõi số liệu thống kê của người chơi một cách hiệu quả.) Smart Tab Completion: Intuitive command suggestions for a better user experience. (Tab Completion thông minh: Gợi ý lệnh trực quan giúp người dùng thao tác dễ dàng hơn.) 🛠️ Commands & Permissions / Lệnh & Quyền /hg - Main command for game participation and management. (Lệnh chính để tham gia và quản lý trò chơi.) /team - Manage your squad and teammates. (Quản lý đội hình và đồng đội của bạn.) /tc - Helper commands with smart auto-fill. (Các lệnh bổ trợ với tính năng tự động điền thông minh.) 🚀 Installation / Cài đặt Download the .jar file. (Tải xuống file .jar.) Place it into your server's /plugins folder. (Bỏ vào thư mục /plugins của máy chủ.) Restart your server and customize the config.yml. (Khởi động lại máy chủ và tùy chỉnh file config.yml.) 📋 Compatibility / Độ tương thích Version: Minecraft 1.21 or newer. Platforms: Paper, Spigot, Purpur, Bukkit. Java: Java 21 required.
    22 downloads

Similar projects

Plugin →