All versions
3.0.0
Beta
KeepInventoryShop v3.0.09 months ago 21
Compatibility
Minecraft: Java Edition
1.21.x
Platforms
Bukkit
Paper
Spigot
Required content
Any compatible version
Changes
KeepInventoryShop Changelog
v3.0.0
Timer System - Complete Rework
- Removed: Old broken
lives-on-join/include-lives-on-join/join-timersystem - Added: New accurate play-time-based timer system
- Timer counts actual seconds of online play (ticks every 20 ticks = 1 second)
- Timer pauses when player disconnects
- Timer resumes from saved progress when player rejoins
- Progress saved to
playerdata.ymlundertimerAccumulated - Server shutdown properly saves all timer progress
- New Config Options:
use-timer: Enable/disable the timer systemtimer-lives: How many lives to award when timer firestimer-duration: Seconds of play time required
ProtocolLib Integration
- Added: Optional ProtocolLib detection at startup
- Added: Enhanced particle effects when ProtocolLib is present
- Added: Graceful fallback to standard Bukkit
Particle.DUSTwhen ProtocolLib is absent - Fixed: Zero compile-time dependency on ProtocolLib (uses pure reflection)
- Added: ProtocolLib to
softdependin plugin.yml
Totem Animation
- Added:
CustomSwirlingTaskclass for animated floating totem effect - Features: Invisible ArmorStand with Totem of Undying helmet
- Features: Follows player's look direction with gentle sine-wave wiggle
- Features: Floats upward and disappears after 5 seconds
- Features: Purple/white particle burst on activation
- Features: Plays
ITEM_TOTEM_USEsound - Fixed: Totem now faces directly at the player (corrected yaw calculation)
- Fixed: Head pose set to level instead of incorrect upward tilt
Economy Security
- Fixed: Negative balance exploit in
/ki buycommand - Fixed: Negative balance exploit in
/ki upgradecommand - Added: Explicit
getBalance()check beforewithdrawPlayer()calls - Added: Clear error messages showing exact shortage amount
Extended Potion Effects (KeepTotem)
- Regeneration IV: 200 → 400 ticks (10s → 20s)
- Absorption IV: 150 → 300 ticks (7.5s → 15s)
- Resistance I: 150 → 300 ticks (7.5s → 15s)
- Fire Resistance I: 200 → 400 ticks (10s → 20s)
Version Compatibility
- Target: Minecraft 1.21 - 1.21.11
api-version: '1.21'in plugin.yml provides forward compatibility
GUI System - Complete Implementation
- Added:
KIMainGui- Main menu with Buy, Upgrade, View Lives, Help, Admin Panel options - Added:
KIBuyGui- Cart-based purchase system for buying lives - Added:
KIUpgradeGui- Cart-based upgrade system for converting lives to KeepTotem - Added:
KIAdminGui- Player list for administrators - Added:
KIAdminPlayerGui- Per-player management (add/remove/reset lives) - Added:
KIGuiListener- Handles all GUI interactions
Cart/Confirm Purchase System
- Added: Pending cart amount tracked per player
- Added: +1/+5/+10 buttons to add to cart
- Added: -1/-5/-10 buttons to remove from cart (not from owned lives)
- Added: Center display showing cart contents and total cost
- Added: Confirm button with affordability check
- Added: Clear shortage messages when cannot afford
- Added: Cart state cleared on inventory close
GUI Features
- Sound feedback for navigation, success, and failure actions
- Balance display in status items
- Permission-based admin panel access
- Real-time GUI refresh after transactions
Main GUI Enhancement
- Added: Balance display to status item
- Added: Economy formatted balance below lives count
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:FaUbpMea:BJZeLqcc"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:FaUbpMea:BJZeLqcc"
}

