Sueta

Gangland Warfare – GTA-Style Crime

0.7.5

Turn your server into a living crime world with gangs, guns, bounties, and progression

·Plugin
  1. 0.7.5latestCops N Crooks – Part 3Apr 22, 2026

    🚨 Case Closed — v0.7.5-DEV Changelog

    *Traders open their doors, Bankers start taking deposits, and the cuffs
    finally come off — for a price. Welcome to Part 3 of Cops N Crooks,
    the release that closes out the module.*
    ---

    Overview

    Three systems land and Cops N Crooks ships as feature-complete. A stationary Trader NPC brings a full buy / barter / sell / tip economy to the street, built on a new shared shop-api framework. A **Banker NPC** takes deposits, issues withdrawals, and gates a tier ladder that controls your max balance, daily cap, interest, and weekly / monthly loans. And bail finally closes the arrest loop — handcuff → jail → pay-your-way-out (or serve your time and walk). Alongside those, the release ships a real YAML validation layer, a debug logging block, Vault permissions integration, loot-chest polish, and a wave of command ergonomics (tab-completion fixes, a /gangland alias, optional player targets on bank commands). One feature shipped and was rolled back inside the cycle — see the Ambiguous list. ---

    📄 Configuration Changes

    Upgrading from 0.7.4? You'll need to merge in new files and new settings.yml sections — or regenerate them by bumping Config_Version. New files shipped in this version: | File | Purpose | |-------------------------|------------------------------------------------------------------------| | npc/trader_traits.yml | Trader personality catalogue (mood rates, barter rules, max health). | | npc/bank_tiers.yml | Banker tier ladder — balance cap, daily cap, interest, loans per tier. | | shop/<shop-key>.yml | One file per shop. Managed through the in-game admin GUIs. | New sections added to `settings.yml`: Debug (module-level debug logging toggle), a rewritten User.Bank block (rolling-window caps, rename fee), and a new top-level Detainment block with nested Transit, Break_Free, Handcuff_Bribe, Bail, Jail_Bribe, Sentence, and Sounds sub-blocks. Removed sections: per-account bank knobs that are now tier-scoped (max balance, daily deposit limit, interest rate, death-loss discount, weekly / monthly loan amounts) — they live in bank_tiers.yml instead. Required YAML validation: every loader now rejects unknown keys and reports a line-accurate error. If you'd been silently carrying dead keys from earlier versions, expect a first-boot warning. ---

    ✨ Features

    Trader NPCs
    A damageable, stationary Citizens NPC that runs a full shop. Placed via an admin command, bound to a shop key and a trait from trader_traits.yml. Right-click opens a buy view; the trader also supports barter (item-for-item swap, no money involved), sell (you hand items to the trader for cash), and tip (spend money to improve the trader's mood toward you). - Six built-in traits — easygoing, hotheaded, stubborn, generous, shrewd, timid — each with its own mood rates, barter policy, sell-price ratio, and HP. Define your own by adding a new top-level id. - Per-player mood — mood is a positive-only scalar. Tipping and successful purchases both push mood up; there's no anger / negative track by design. At max mood the trader gives the configured Min_Friend_Discount on buys. - Barter is a pure item swap — no money ever changes hands on a barter. The trader values incoming items against the category rates set in the shop file and accepts / rejects based on the trait's Barter_Price_Ratio. Turn it off per-trait with Allows_Barter: false. - Sell — per-category valuation via Sell_Price_Ratio. Players can liquidate loot they don't want; server owners tune how generous each trait is per category. - Item freshness via decorate, not NBT — newly-delivered shop items are re-decorated on every purchase, so configured lore / display names refresh even if an old YAML shape changed in between. - Admin editing in-game — no YAML wrestling needed day-to-day. /glw trader edit shop <key> retargets the trader in your crosshair, edit trait <id> changes the personality, edit name opens an anvil to rename (spaces supported), remove deletes the trader you're looking at. - Trader is damageable by default — Invulnerable: false on the trait makes the NPC killable so you can actually rob a shop. Default traits ship invulnerable; stubborn is the example "killable" trait. - Persistent repository — traders are saved by the plugin, **not by Citizens' saves.yml** (SHOULD_SAVE = false at spawn). One source of truth. New file — `trader_traits.yml` shape:
    easygoing:
       Display_Name: "Easygoing"
       Mood_Per_Tip_Currency: 0.0008   # mood gain per currency unit spent on a tip
       Mood_Per_Purchase: 0.03         # mood gain on a successful buy
       Min_Friend_Discount: 0.92       # price multiplier at mood = +1 (0.92 = 8% off)
       Allows_Barter: true
       Sell_Price_Ratio: 0.55          # fraction of ask the trader pays when BUYING from the player
       Barter_Price_Ratio: 1.0         # barter credit per item (1.0 = parity; defaults to Sell_Price_Ratio)
       Max_Health: 20.0                # half-hearts
       # Invulnerable: false           # (optional) omit for default-invulnerable traits
    New commands:
    /glw trader create <shopKey> <traitId> [displayName]
    /glw trader edit shop <shopKey>
    /glw trader edit trait <traitId>
    /glw trader edit name
    /glw trader remove
    ---
    Shop API Framework
    The shop UI, persistence, and transaction logic were extracted into a new `gangland-ui/shop-api` module so any future shop surface — not just traders — can reuse them. - Per-shop YAML files under plugins/<plugin>/shop/<key>.yml, scanned on boot and hot-reloaded through the standard /glw reload pipeline. - Typed transaction returns — PurchaseResult, BarterResult, SellResult replace the old boolean-plus-enum mess. Each carries a clean reason enum plus the outcome payload (item stack delivered, money debited, etc.). - Shop-level messaging contract — ShopMessageContract and TraderMessageContract route every user-facing string back through the Messages enum, so every shop / trader line is translatable without feature-module imports. - Admin GUIs — shop definitions, buy entries, sell categories, and per-category barter / sell pricing are all editable in-game. Edits round-trip to YAML via ShopYamlWriter with zero restarts. - Shop entries deliver per-copy stacks — a buy entry's template.amount is one copy; the BUY AMOUNT picker counts copies, not items. Multi-item copies (e.g. a stack of 5 arrows) are supported. New admin command:
    /glw shop remove
    ---
    Inventory & UI Refresh
    A new multi-panel inventory framework underpins every revamped GUI this cycle. Panels swap in place without closing the underlying Bukkit inventory, so switching between trader categories, banker sections, and shop-admin pages no longer triggers the familiar close-and-reopen flicker. - Multi-panel framework — one Bukkit inventory, many logical panels. Each flow (trader, banker, shop admin) registers its panels once and transitions between them with no closeInventory call in between. - Flow panels for traders and bankers — the trader buy / barter / sell / tip surfaces and the banker deposit / withdraw / tier surfaces now run as flow panels on top of the framework. Rendering logic was rewritten to coalesce updates into a single repaint per click. - Admin legacy inventory migrated — the legacy admin GUIs were ported onto the multi-panel framework. Panel transitions inside admin flows are now flicker-free, matching the rest of the UI. - Shift-click + drag-and-drop in admin editors — barter and sell category editors accept shift-click moves and drag operations from t
    190 downloads
  2. 0.7.4-DEVGangland Warfare – GTA-Style Crime 0.7.4-DEVApr 14, 2026

    🌆 The Streets Got Louder — v0.7.4-DEV Changelog

    *Civilians walk the block, cars idle at the curb, and the first grenade in
    plugin history just bounced off a wall. Welcome to **Part 2 of Cops N
    Crooks*.
    --- [← Back to Documentation Index](../README.md) | [Previous: v0.7.3-DEV →](../v0.7.3-DEV/CHANGELOG.md) ---

    Overview

    Three big shifts land in this version. Civilians join the streets as their own NPC class (friendly, hostile, or traders). The weapon system quadruples from one category (guns) to five (guns, melee, incendiary, biological, throwable), each with its own schema and physics. And gadgets — cars and jetpacks — ship as a new module with persistent fuel, database-backed parking, and shared refueling. Under the hood, the plugin was also rewired onto a beans-based bootstrap, so every manager now auto-initializes in phased order without a hand-written Initializer. ---

    📄 Configuration Changes

    Upgrading from 0.7.3? You'll need to merge in new files and new settings.yml sections — or regenerate them by bumping Config_Version. New files shipped in this version: | File | Purpose | |---------------------|------------------------------------------------------------------------| | civilians.yml | Civilian NPC types and spawn groups (friendly, hostile, trader). | | cars.yml | Drivable vehicle catalogue (materials, speed, acceleration, fuel). | | money.yml | Cash pickup variations and per-source drop rules. | | weapon/*.yml | New melee, incendiary, biological and throwable weapon configurations. | New sections added to `settings.yml`: NPC_Navigation, Civilians, Money_Drop, Gadgets (with Jetpack and Car subsections), and Block_Regeneration. The Cops section was also expanded with new tuning keys (spawn phases, cuff cooldown, return-to-station, starting ammo). Required field added to every weapon file: Information.Category. See the weapons section below for the before/after shape. ---

    ✨ Features

    Civilian NPCs
    Civilians are a new NPC class that share the cop AI base — they wander, flee, trade, or return fire depending on their type. Types and spawn groups live in a new civilians.yml file, and spawning is proximity-driven from registered spawner points. - Each type picks a Bukkit entity, health, wearables, weapon pool, item pool, drops, and an optional trader inventory. - Hostile civilians fight back with weapons from their pool; non-hostile ones flee at their configured speed. - Attacking a non-hostile civilian now increments your wanted level — the same system cops use. - Trader civilians open a custom inventory on right-click using the shared InventoryHandler framework. - Groups bind spawn locations to a type, with a population cap and activation radius. Civilians spawn when a player walks into range and despawn when everyone leaves. - Navigation is shared with cops (see the NPC_Navigation block further down), so a path-finding fix lands on both at once. - New commands under /glw civilian … for manual spawn, despawn, and group control. New file — `civilians.yml` shape:
    Types:
       friendly_villager:
          Entity_Type: VILLAGER
          Health: 20
          Hostile: false
          Wearables:
             head: ""
             chest: ""
             legs: ""
             feet: ""
          Item_Pool:
             - material:BREAD
          Drops:
             Items:
                - material:EMERALD
             Experience: 5
          Inventory: trader_default      # omit for non-trader types
          AI:
             Wander_Range: 12
             Flee_Speed: 1.3
             Combat:
                Difficulty: NORMAL        # EASY | NORMAL | HARD | DEADLY
    
    Groups:
       downtown:
          Type: friendly_villager
          Max: 6
          Proximity: 64
          Spawns:
             - world,120.5,64,-40.5
    Add to `settings.yml`:
    Civilians:
       Behaviour:
          Enabled: true
          AI_Tick_Rate: 20
       Spawner_Proximity:
          Activation_Radius: 60.0
          Despawn_Radius: 80.0
          Max_Npcs_Per_Spawner: 5
          Check_Interval: 100
          Default_Type_Id: ""
    ---
    Smarter Cops
    Cops now run on the shared NPC base with civilians, so every navigation fix lands on them too. This cycle also brought dedicated cop polish. - Targeting falls back to the most recent attacker when no wanted target is in line of sight, so cops stop standing still while you plink them from cover. - Despawn now uses 3D distance — climbing a tower no longer makes cops evaporate. - Reload handling during NPC combat is smoother; downed players are also blocked from reloading. - Jail creation uses a 5-block radius check instead of exact-coordinate matching, so you no longer accidentally stack two jails in the same cell. - CopDeathEvent fires on every cop death and is available to other listeners. - Cops section in settings.yml gained phased spawn controls, cuff cooldown, return-to-station distance, and starting magazine count. ---
    Weapon System — Four New Categories
    0.7.3 shipped one weapon category. 0.7.4 adds **melee, incendiary, biological, and throwable** — each with its own parser, action class, and YAML schema. Every weapon file now declares a Category: field that picks the action class, and the schema under Shoot: / Attack: / Throw: varies by type. - Melee (knife, machete, crowbar) — sweep-range attacks with Attack: block: damage, range, cooldown, knockback, per-hit cooldowns, and melee-specific damage handling on non-living entities. - Incendiary (flamethrower) — cone-shaped fire spray with Cone_Angle, Fire_Duration, and per-tick fuel Consume_Rate. Ignites entities in the cone and applies block fire where configured. - Biological (syringe_gun) — hold-to-charge / release-to-fire single shots on a new pathogen_vial ammo type. Applies potion effects on impact. - Throwable (grenade, molotov, flashbang, smoke_grenade, tomahawk) — thrown items with physics, bounce, fuse timer, and blast radius. Identical throwables stack via shared UUIDs so sign-bought grenades merge with looted ones. - Push-on-hit is now supported by every weapon type, not just guns. - A unified raytracer runs the same hit-detection loop across all five categories. Ricochet, block-break, and tracers now work uniformly regardless of weapon type. - WeaponEntityDamageEvent fires for non-projectile hits on non-living entities (cars, armor stands, blocks) — handy for feature modules that want to react to melee or grenade damage without intercepting the projectile lifecycle. Required schema change — every weapon file now needs `Category:`:
    # BEFORE (0.7.3 — category was implicit: always gun)
    Information:
       Name: "&7Pistol"
       Material: IRON_HORSE_ARMOR
    
    # AFTER (0.7.4 — required field)
    Information:
       Name: "&7Pistol"
       Material: IRON_HORSE_ARMOR
       Category: gun        # gun | melee | incendiary | biological | throwable
    Melee example — `knife.yml`:
    Information:
       Name: "&7Combat Knife"
       Category: melee
       Material: IRON_SWORD
    Attack:
       Damage: 6.0
       Range: 2.5
       Cooldown: 8
       Knockback: 0.4
       Selective_Fire: single
    Incendiary example — `flamethrower.yml`:
    Information:
       Name: "&6Flamethrower"
       Category: incendiary
       Material: BLAZE_ROD
    Shoot:
       Selective_Fire: auto
       Rate: 2
       Range: 5.0
       Cone_Angle: 30.0
       Fire_Duration: 60
       Consume_Rate: 4
    Ammunition:
       Ammo_Type: fuel_canister
       Capacity: 200
    Throwable example — `grenade.yml`:
    Information:
       Name: "&cFrag Grenade"
       Category: throwable
       Material: LIME_DYE
    Throw:
       Type: EXPLOSIVE
       Fuse_Time: 60
       Explosion_Radius: 4.0
       Explosion_Damage: 10
       Bounces: true
       Max_Bounces: 5
       Sticky: false
       Entity_Type: SNOWBALL
    ---
    Bullet Physics & Projectiles
    Bullets d
    29 downloads
  3. 0.7.3-DEVGangland Warfare 0.7.3-DEVMar 24, 2026

    🚔 Badges, Bullets & Bars — v0.7.3-DEV Changelog

    *The streets just got a lot more dangerous. Cops have radios, weapons, handcuffs, and nowhere to be
    except right behind you. Welcome to Cops N Crooks.*
    ---

    ⚠️ New Requirements

    This update introduces new hard dependencies. The plugin will refuse to load if these are not installed. | Dependency | Type | Purpose | |----------------|---------------------|---------------------------------------------------------------------------------------| | Citizens | Required | Powers all police NPCs. Without it, no cops spawn and the plugin fails to initialize. | | NBTAPI | Required (existing) | Custom item data for weapons, ammo, and wearables. | | PlaceholderAPI | Optional | Custom placeholders in messages and scoreboards. | | Vault | Optional | Economy integration. | | ViaVersion | Optional | Multi-version client support. | ---

    📄 Configuration Changes

    - `cops.yml` is a new file introduced in this update. It controls all cop NPC tiers, AI behavior, spawning rules, and detainment options. It is auto-generated on first run. - `wearables.yml` is a new file for configuring custom armor pieces and their protective traits. - `repair.yml` is a new file defining what materials can be used to repair weapons and armor. - `settings.yml` has been extended with new sections for cop count scaling, AI tick rates, spawn radii, detainment capacity, and wanted level thresholds. Existing installs should regenerate this file or merge in the new keys manually. ---

    ✨ Features

    Cops N Crooks
    The entire police system has been built from the ground up. Cops are now fully functioning Citizens NPCs with AI-driven behavior. - Police NPCs spawn in the world when a player has a wanted level, chase targets, engage in combat, and make arrests. - Every cop engages immediately upon spawning — no idle standing. The moment they appear, they are on the move toward their target. - When one cop spots a wanted player, the entire group is alerted and joins the pursuit. - Cop count and tier scale with wanted level — a 1-star wanted player draws two rookie officers; a 5-star wanted player gets up to eight military-grade units. - Five cop tiers are built in: Officer, Sergeant, Lieutenant, SWAT, and Military — each with increasing health, speed, damage, and equipment. - Higher-tier cops (Lieutenant and above) carry and fire Gangland custom weapons with their own ammo pools and reload mechanics. - Bullet flyby and impact sounds play when cops shoot near or at a player. - Cops spawn from configured spawner locations in the world. If no spawner is close enough, the system falls back through progressively wider search rings before using a global fallback, ensuring cops always find a way to you. - Dying clears your wanted level. ---
    Arrest & Detainment
    - Cops can handcuff players during an arrest. Once cuffed, a player is slowed, partially blinded, and cannot use weapons. - Multiple cops will never fight over the same target — once a cop commits to cuffing a player, others back off. - If a cuffed player logs out before being jailed, they are automatically moved to jailed status when they return. ---
    Jail System
    - Arrested players are teleported to a configured jail location and held there until released. - Admins can create and remove jails in-game. Each jail has a configurable capacity cap. - Players can be manually jailed or released via commands. ---
    Wanted & Bounty System
    - The wanted level system is now directly tied to the cop spawning system — stars you earn result in active police pursuit. - The bounty system has been moved under the Cops N Crooks umbrella and tightened up with configurable scaling and kill multipliers. ---
    Wearables
    Custom armor pieces are now a fully supported item category, separate from vanilla armor. Wearables have: - A base damage reduction percentage — a flat amount of every hit absorbed before other calculations. - Trait slots — each piece can have one or more stacking protection traits: - REINFORCED — general damage reduction per level - BULLETPROOF — specifically reduces firearm damage - PADDED — broad physical protection - TOUGHENED — reduces critical hit bonus damage - FIRE_RESISTANT — burns hurt less - REACTIVE — small chance to completely nullify a hit per level - LIGHTWEIGHT — cosmetic trait, no combat effect Four built-in wearable pieces ship with the plugin: Police Vest, Police Helmet, Gang Jacket, and **Heavy Vest**. Additional pieces can be configured in wearables.yml. ---
    Weapon Repair
    Weapons and wearables no longer have to be discarded when their durability runs low. Four repair materials ship with the plugin, each with different uses, restoration amounts, and item compatibility: - Cleaning Kit — a light maintenance item, works on both weapons and wearables. - Mechanical Part — a single-use part that restores a significant chunk of a weapon's durability. - Weapon Repair Kit — fully restores a weapon in one use. - Field Kit — a cheap, low-restoration tool useful in the field. All materials are configurable in repair.yml — you can define what vanilla item represents each kit, how many uses it has, and how much durability it restores. ---
    Trade Signs
    Players and admins can now set up in-world signs that allow buying and selling of: - Ammunition — any configured ammo type. - Weapons — any weapon from the weapon configs. - Wearables — any wearables configured. - Support configurable prices and quantities per transaction. ---
    Additional features:
    - Added 1.21.11 compatibility. - Added documentation which can be found in the github page under documentation folder. - Weapon impact and flyby sound is added. - Added new messages. - Added flat damage to weapons. - Added repository layer to handle saving and loading deleting data in a uniform manner to avoid future bugs. - Added 2 reload events, WeaponReloadCompleteEvent and WeaponReloadStartEvent. - There are plenty of events added for each new feature, you can always check the source code. - Improved logging by showing the class that's sending the information, warning, or error. - Added schema validation when a new column is modified, added, or removed. - Added command suggestions when reaching to an optional argument, like writing the online players rather than <player> or the random set of numbers rather than <amount>

    🐛 Bug Fixes

    Weapon Reload Getting Fully Reset on Cancel
    When a player cancelled an in-progress reload — by switching items, opening inventory, or being disrupted — the entire reload progress was being wiped by the stop() call. This meant that even if a reload was 90% complete, interrupting it sent the player back to square one with no ammo loaded. The fix separates the "halt current phase" path from the "reset all progress" path so interruptions only pause where they are. ---
    Creative Mode Players Blocked by Magazine Limits
    The magazine check was running without first validating the player's game mode. Creative mode players were being told their magazine was full and blocked from loading ammo, even though creative players should bypass all resource constraints. The check now skips the capacity validation entirely for players in creative mode. ---
    Configuration Reload Silently Skipping Files
    When /glw reload (or the equivalent reload command) was used to refresh configuration files, some files were quietly being skipped because they had not been regis
    43 downloads

Similar projects

Plugin →