
SMP Utilities
This mod was designed and planned to improve the experience of creating SMPs servers in Minecraft. Its main function is to ban and control items, blocks, and mods, with the ability to unban those same items, blocks, or mods for specific players.
Tags
Creators
Details
0.1.7
Compatibility
Required content
Changes
📋 Change Log - SMP Utilities
Bug Fix: Whitelist Precedence in Lock/Disable/Ban Systems
Problem
Players with individual item permissions (/idlock allow <player> item <id>) were still being blocked because the system checked global locks BEFORE checking player whitelist.
Fix
Reordered checks in checkItemStatusForPlayer() and checkBlockStatusForPlayer() methods:
Before:
if (lockedItems.contains(itemId)) return "LOCKED"; // ❌ Blocked whitelist
if (hasAllModsAllowed(playerUUID)) return "ALLOWED_FOR_PLAYER";
After:
// ✅ Player permissions checked FIRST
if (hasAllModsAllowed(playerUUID)) return "ALLOWED_FOR_PLAYER";
if (isWhitelisted(playerUUID, itemId)) return "ALLOWED_FOR_PLAYER";
// Then check global status
return checkItemStatus(itemId);
Files Changed
IdLockData.javaIdDisableData.javaIdBanData.java
Enhancement: WaystoneSuppression Refactor
Goal
Match the robust event structure of IdDisable while keeping original behavior (triggered by potion effect, no whitelist, TOML config).
What Changed
| Feature | Before | After |
|---|---|---|
| Armor slot checking | Basic | Full + prevents equipping |
| Curios support | Basic | Full + prevents equipping |
| Item usage blocking | Partial | Complete (right-click, attack, interact) |
| Block interaction | Basic | Complete (place, break, right-click) |
| Inventory items | Stay in inventory | Stay in inventory (CANNOT use) |
| Pickup from ground | Allowed | Allowed (unchanged) |
New Events Added
onRightClickItem- Prevents using itemsonAttackEntity- Prevents attacking with suppressed itemsonEntityInteract- Prevents entity interactiononHarvestCheck/onBreakSpeed- Prevents mining with suppressed items
Config Fix (TOML format)
Fixed missing quotes:
# Before (broken)
WaystoneSuppression = ["waystones:*", "balm:*", endermanoverhaul:*]
# After (fixed)
WaystoneSuppression = ["waystones:*", "balm:*", "endermanoverhaul:*"]
BannedItems = ["...", "relics:chorus_inhibitor", "relics:enders_hand"]
Files Changed
WaystoneSuppressionHandler.java- Complete rewrite with IdDisable structureWaystoneSuppressionData.java- Fixed TOML quotes in default config
Testing Commands
IdLock/IdDisable/IdBan
/idlock disable item-block minecraft:dirt_path
/idlock allow Dev item-block minecraft:dirt_path
# Dev should use item normally ✅
WaystoneSuppression
/effect give @p smp_utilities:waystone_suppression 6000 0
# Suppressed item: shows message, stays in inventory, cannot use
# Suppressed armor: drops, cannot equip
Date: 2026-05-10
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:b7wSFPg8:yxtR9iyR"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:b7wSFPg8:yxtR9iyR"
}
