Freecarts icon

Freecarts -----

Better Minecar(t)s




FreeCarts
Version 1.6 - Major bug fixes related to maximum speed and upgrades, Better Bedrock compatibility, Action Bar Overhaul & Nitro Status Display


This update introduces full Bedrock (Geyser/Floodgate) compatibility improvements, a completely rearchitected action bar system, and a live nitro status display.

Player Summary (Non-Developer Audience)

  1. You will now visibly notice the speed differences between "un-upgraded", "max-upgraded", and "max-upgraded + nitro-engaged carts".
  2. Fuelstation's block display models now compatible with Custom worlds from Multiverse-Core and similar plugins.
  3. Bedrock players now see the fuel indicator correctly instead of a blank character.
  4. The action bar now shows fuel, health, and nitro status as separate indicators, each toggleable independently from the cart GUI menu.
  5. The nitro indicator shows exactly how many seconds of boost remain while active, a green tick when ready to use, and a countdown while cooling down — no more guessing when you can fire it again.
  6. You can now use decimal values for fuelConsumptionRate in the config
Update Changelog (For Developers/Admins)
Fix - critical issues within the upgrade system and cart speed mechanics
  1. Fixed Engine & Nitro Upgrades Not Scaling Top Speed: Previously, cart movement was strictly hard-capped by the config's maxSpeed, meaning high-level Engine and Nitro upgrades were throttled and provided no noticeable top-speed benefits. The plugin now dynamically scales the internal maximum speed limits based on your cart's upgrade multiplier, allowing fully upgraded carts to reach their true potential.
  2. Fixed Vanilla Server Speed Throttling: Bypassed Spigot's internal minecart velocity limits (which default to 0.4 blocks/tick) for player-driven carts by calculating and applying a safe, dynamic maxSpeed ceiling to active vehicles. Unoccupied carts correctly retain the config's base maxSpeed limits to prevent runaway vehicles from breaking physics.
  3. Fixed Base Level (1) Upgrade Stat Bonuses: Fixed an oversight where newly placed, un-upgraded carts (Engine Level 1, Brake Level 1) were incorrectly receiving an immediate +15% speed and +25% brake bonus. Level 1 components now act as true baselines (1.0x multiplier), and upgrades properly scale starting at Level 2.
Fixed - critical issues within the FuelStation system and model mechanics.
  1. Fixed fuel station models not spawning in Multiverse custom worlds by injecting execute in <dim> run into summon commands
  2. Fixed getDimensionKey() helper to use World#getEnvironment() instead of folder name, supporting custom level-name in server.properties
  3. Fixed entity fallback lookup always searching the overworld by including world name in the location key (world,x,y,z)
  4. Fixed two Thread.sleep(50) calls blocking the main server thread on every station spawn
  5. Fixed fuel stations in Multiverse worlds silently lost on startup due to world load race condition, resolved via ServerLoadEvent retry system
More Bedrock (Geyser) Compatibility
  1. Fixed Fuel Level Icon in Action bar Displays Not Rendering on Bedrock: The ⛽ emoji is outside Bedrock's font atlas and rendered as a blank character. Bedrock players now receive ♨ as a fallback icon via a cached detection system.
  2. Added Bedrock Player Cache: Geyser/Floodgate detection is now performed once per player session on join and stored in a HashSet.
Better Backward Compatibility
Fixed Fuel Station Version Gate Blocking Mechanics on Pre-1.19.4 Servers: Fuel station hitbox, collision, refueling, and explosion mechanics no longer require 1.19.4+. The version gate now only blocks Block Display entity models. Pre-1.19.4 servers render fuel stations using the same sendBlockChange() fake block system already used for Bedrock players.

Action Bar System Rearchitecture
  1. Extracted Action Bar Logic into Dedicated ActionBarHandler Class: Fuel and health display logic has been moved out of FuelHandler into a new ActionBarHandler, which owns the render task, Bedrock cache, per-stat toggle state, and stat registration pipeline.
  2. Added Expandable CartStat Interface: Each action bar segment (fuel, health, nitro, etc.) is now an independently registered stat implementing CartStat. Adding new stats in the future requires no changes to existing classes.
  3. Fixed Health Display Being Hidden by Fuel Toggle: Previously, the single hide_fuel_actionbar PDC key suppressed both fuel and health display together. Each stat now has its own independent PDC toggle key (hide_stat_fuel, hide_stat_health, etc.).
  4. Moved Stat Registration Out of Main Class: FuelStat, HealthStat, and NitroStat are defined as named inner classes inside ActionBarHandler, keeping the code clean.
Action Bar Settings Menu
  1. Replaced Single Toggle Button with Dedicated Submenu: The action bar toggle in the cart GUI is now a submenu.
  2. Each Stat Has Its Own Toggle Button: Buttons display as green concrete (enabled) or red concrete (disabled).
New Nitro Status Display
  1. Added Live Nitro Action Bar Stat: The nitro segment displays remaining active time in seconds while burning, a green tick when ready to engage, and a red remaining cooldown seconds while cooling down.
  2. Added nitroActiveEnd Tracking: CartUpgradeHandler now tracks the nitro active end timestamp alongside the existing cooldown end timestamp, enabling accurate remaining-time calculations.
Fuel consumption enchancements
  1. Changed fuelConsumptionRate from int to double to support decimal values like 0.2, 0.5
  2. Added a fractional accumulator map inside the fuel consumption runnable so decimal rates drain correctly without precision loss.

Steps to Update the Plugin:
1. Download the new plugin ".jar" file.
2. Replace the existing file in your "/plugins/" folder with the newly downloaded file.
3. [**MUST**] Delete the "config.yml" file and the contents of the "/lang/" folder.
4. Start the server to allow the plugin generate a new "config.yml" and fresh language files.
5. Configure the "config.yml" as desired and restart the server.
----------, Mar 22, 2026

FreeCarts v1.5 - Bedrock / GeyserMC Support

Update Changelog:

- This update focuses on cross-platform compatibility between Java and Bedrock (Geyser/Floodgate) clients.
- The Fuel Can item has been changed from a Player Head with a custom texture to a Honey Bottle. Existing fuel cans will continue to work, but new ones will be issued as Honey Bottles going forward.
- Added two configurable visual blocks for fuel stations in config.yml, since Bedrock does not support Block Display entities. (Note: Fuel stations use Bukkit's sendBlockChange() to send per-player fake block packets, which Geyser automatically translates into Bedrock's UpdateBlockPacket. These fake blocks are fully configurable in config.yml. Java players are completely unaffected and will continue to see the fuel station's Block Display model as usual.)
- Added an example resource pack for GeyserMC.
- Fuel Cans can now be consumed by players. When consumed, the following effects are applied: Poison II for 10 seconds, Nausea for 15 seconds, and Weakness II for 20 seconds.
- Dismount key has been assigned to the SPACE BAR for Bedrock players.
- Nitro Engage key has been assigned to Left Click (Attack) for Bedrock players.
- Key binds remain unchanged for Java players.
- From version 1.5 onwards, the plugin no longer bundles example resource packs with the JAR file. They are instead provided as separate download links on the plugin page.

Steps to Update the Plugin:
1. Download the plugin ".jar" file.
2. Replace the existing file in your "/plugins/" folder with the downloaded file.
3. Delete the "config.yml" file and the contents of the "/lang/" folder.
4. Start the server to let the plugin generate a new "config.yml" and language files.
5. Configure "config.yml" as desired and restart the server.


Setting Up GeyserMC:

- FreeCarts automatically detects Floodgate and GeyserMC on your server.
- Works out of the box with Geyser installed as a Spigot plugin.
- For Velocity/BungeeCord networks, Floodgate must be installed on each backend Spigot server in addition to Geyser on the proxy.
- To use the example GeyserMC resource pack provided, extract the downloaded archive — it contains two files :
* Place "geyser_mappings.json" inside "\plugins\Geyser-Spigot\custom_mappings\"
* Place "Freecarts_GeyserPack.mcpack" inside "\plugins\Geyser-Spigot\packs\"
* Restart the server after placing both files.
----------, Mar 9, 2026

FreeCarts v1.4 - Multi-Language Garage Fix
Bug Fixes
  • Fixed garage menu handling for multi-language support: Resolved an issue where the garage inventory click handler wasn't properly detecting garage menus when using non-English languages. The plugin now correctly identifies garage menus regardless of the selected language (English, German, Tamil, etc.).
Affected Languages
This fix improves functionality for all supported languages:
  • English (en_us)
  • German (de_de)
  • Tamil (ta_in)
Technical Details
  • Improved garage menu detection logic to use menu type tracking instead of title matching
  • Enhanced reliability when interacting with garage inventories across different languages
  • No configuration changes required - the fix is automatic
Installation
Simply replace your existing FreeCarts jar file with this version and restart your server. All existing data and configurations will be preserved.
----------, Dec 23, 2025

  • Support added for 1.21.11
  • Minor bug fixes related to cart damage and health system
----------, Dec 22, 2025

FreeCarts v1.2 - Cart Customizations Update
Major Features:

Paint & Variant System (Requires Resource pack)
Players can now purchase and customize cart color variants with an in-game economy system!
- Purchase paint colors using in-game currency through `/freecart variant`
- Real-time color switching with the interactive paint picker tool
- Economy integration via Vault - set custom prices for each color
- Admin bypass - admins get all colors unlocked automatically
- SQL & YAML support - works with both local and network-wide storage


Custom Cart Models with Resource Pack
Bring your carts to life with fully customizable 3D models!
- Example resource pack included - ready to use out of the box
- Create your own models - full support for custom Blockbench creations
- Multiple model variants - support for different cart styles and colors
- Seamless model switching - change models on-the-fly
- Persistent model data - models save to cart items when picked up


Cart Lore Customization
Add personality to your carts with custom item descriptions!
- Multi-line lore support - create detailed cart descriptions
- Garage Level 3 feature - unlocked through garage upgrades
- Full color code support - use `&` codes for styling


Improvements & Changes:


Command Updates

- ✨ New: `/freecart variant` - Purchase paint colors
- ✨ New: `/freecart customize paint` - Open paint picker interface
- Updated: `/freecart give cart` now supports `--model <model_id>` argument
- Reorganized: Cart naming moved to `/freecart customize name`
- Full command: `/freecart customize <color|lore|name|paint>`


Garage System Enhancements
- Visual improvements to slot differentiation:
- Red glass = Locked slots (can be unlocked with resources)
- Black glass = Restricted slots (require permissions/ranks!)
- Garage Upgrades button - quick access to upgrade menu
- Garage Finder button - browse other players' garages
- Better UI feedback for slot states and requirements


Resource Pack Integration
- Example resource pack zipped with plugin JAR
- 2 default cart models with multiple color variants:
- Simple style (6 colors)
- Hatchback style (6 colors)
- Full documentation for creating custom models
- Easy configuration through `models.yml`


New Files & Configuration

Paint System Configuration

plugins/FreeCarts/models/carts/
├── paint_colors.yml # Define colors, costs, and materials
├── player-owned-paints.yml # YAML storage (if database disabled)
└── models.yml # Cart model definitions



Config Changes:
Code (YAML):
 garage:
    enabled
: false                 # Enable/disable garage system

    upgrades
:
      enabled
: true               # Enable garage upgrade system
      # Upgrade requirements are configured in 'garage/garage-upgrades.yml'

    finder
:
      enabled
: true               # Enable garage finder menu
      show-offline
: true         # Show offline players in finder


Database Tables (if SQL enabled)

- `fc_owned_paints` - Stores player paint ownership across network
----------, Nov 22, 2025

FreeCarts v1.1 - Multi-Server Update
New Features
  • German Language Support: Vollständige deutsche Übersetzung hinzugefügt
  • New Garage feature: you can now either pick the cart as item or send it to garage! Check the config
  • Cross-Server Garage Sync: Real-time synchronization of garage contents across network servers
  • SQL Storage Support: Optional MySQL/MariaDB backend for garage data (with automatic YAML ↔ SQL migration)
  • HikariCP Connection Pooling: Optimized database performance and reliability
  • Per-Server Inventory System: With SQL and Garage enabled, carts can now have Separate storage inventories for each server in BungeeCord/Velocity networks

Bug Fixes
- Improved cart spawn location safety checks
- Missing Language Translations for GUIs and lores

Technical Improvements
  • Added Storage button in Cart's Main GUI menu
  • Added Permission based Garage Max slots.
  • Enhanced database security with validated table prefixes
  • Added connection pooling for better SQL performance
  • Better error handling for cross-server operations

⚠️ Important Notes
Config files updated - Delete old config.yml and let plugin regenerate
Language files updated - Delete old language files in /lang/ folder
Fully backward compatible with existing cart data
----------, Nov 8, 2025

Resource Information
Author:
----------
Total Downloads: 112
First Release: Nov 1, 2025
Last Update: Mar 22, 2026
Category: ---------------
All-Time Rating:
3 ratings
Find more info at discord.gg...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings