
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.9
Compatibility
Changes
SMP: Utilities - Changelog
Complete development history of SMP: Utilities, from the initial refactoring of the legacy workspace to the current 0.1.9 version for Minecraft 1.20.1 & 1.21.1 (Forge, NeoForge, and Fabric).
[0.1.9] - 1.21.1 Parity & Optional Dependencies
Optional Dependencies (4 Loaders)
- Standalone Operation: Curios (Forge/NeoForge), Trinkets and Accessories (Fabric), JEI, and Balm/Waystones are now strictly optional - the mod starts and operates normally both with these mods installed and without any of them.
- Open Version Ranges:
mods.tomlandneoforge.mods.tomlupdated withversionRange="[0,]"forcuriosandjei;fabric.mod.json(1.20.1 and 1.21.1) configured with"suggests"using"*"forjei,trinkets,accessories,waystones, andbalm. - Class & Mixin Protection: Isolation of optional handlers (
CuriosRestrictionHandler) and client-only packets (ShowTypewriterPacket,SyncRestrictionsPacket,SyncCanonHeartsPacket), along withSmpMixinConfigPluginusingrequire = 0inTrinketSlotMixinto prevent crashes when Trinkets is absent. - Safety Backup: Complete snapshot preserved in
_reservados/backup_pre_dependencias_2026-11-10/.
Commands & Final Documentation
- Unquoted
#Support in/smpu lectern: Hex argument migrated toScoreHolderArgumentwithHEX_SUGGESTIONS, allowing/smpu lectern #FF5500or/smpu lectern #F50to be used directly without quotation marks. - Command-Specific Colors: Hexadecimal support removed from
/smpu rename,/smpu lore, and/smpu objectivein all 4 workspaces (keeping Minecraft's 16 named colors +&codes), making hexadecimal colors exclusive to/smpu lectern. - Official Wiki (
WIKI.md): Complete documentation rewritten in Markdown, covering all mechanics, items, blocks, commands, 14 restriction categories, TOML examples, Canon Hearts, potions, and FAQ. - Organized Exports: Clean build and export of the 4 final
0.1.9.jarfiles toDesktop/SMP Utilities 0.1.9/.
Fabric 1.20.1 & 1.21.1 Parity
- 1:1 Fabric 1.21.1 Parity: Fully ported using
DataComponents(CUSTOM_NAME,LORE,DYED_COLOR,POTION_CONTENTS),CustomPacketPayload+StreamCodec,FabricBrewingRecipeRegistryBuilder.BUILD,hud/heart/*sprites, and singular data directories (recipe,loot_table,tags/block,tags/item). - Canon Hearts via Cardinal Components: Persistence migrated to Cardinal Components API (
5.2.2in 1.20.1 /6.1.0in 1.21.1) withRespawnCopyStrategy.ALWAYS_COPY, replacing old entity mixins. - HUD Textures & Animation: Canon Hearts unified under
textures/gui/sprites/hud/heart/*.png(including the_blinkingstate), with AppleSkin bar offset correction (GuiMixinon Fabric andARMOR_LEVELanchor on NeoForge 1.21.1).
Curios, Trinkets & Accessories
- Native Dual Integration on Fabric: Created
TrinketsCompatandAccessoriesCompat(CanEquipCallback+AccessoryChangeCallback), maintaining unified aliases inrestrictions.tomlandPermissionManager(blocked_trinkets_items,blocked_curios_items,blocked_accessories_items). - Prevention of Item Loss on
Shift+Clickand Hover Spam: Removed error messages triggered merely by hovering over predictive slots (mayPlace/canInsert) and fixedAbstractContainerMenuMixinto prevent relics from being discarded duringQUICK_MOVE.
Restriction System (restrictions.toml)
- New Categories (
blocked_offhand_itemsandblocked_crafting_items):- Complete offhand blocking (inventory slots,
Fkey, and GUI clicks/swaps) throughRestrictedOffhandSlotand mixins/events. - Server-side and client-side crafting recipe blocking (
RecipeManagerMixin/RecipeFilterHelper/RestrictedResultSlot), hiding only the recipes in JEI without removing the item from search results when it is not listed inhidden_jei_items.
- Complete offhand blocking (inventory slots,
- Creative vs. JEI Independence:
hidden_creative_itemsandhidden_jei_itemsnow operate independently (including the#c:hidden_from_recipe_viewerstag for JEI/EMI/REI). - Individual Whitelists and Blacklists in the Same File: Consolidation of
player_whitelistandplayer_blacklistacross all 14 categories withinrestrictions.toml(with the removal ofpermissions.tomland the oldspecial_features), using empty[]lists by default. - Full
.tomlFile Preservation: Decoupling ofForgeConfigSpec/ModConfigSpecfromrestrictions.toml,ConfigFormatterconverted into a no-op, and a resilient parser withloadFallbacktolerant of manually added spaces and blank lines. - Action Bar Preemption & Placeholders:
ShowTypewriterPacketsynchronizing remote messages; immediate preemption (new messages always interrupt previous ones from character 0); proximity-baseddrop_itemsdisplay without pickup spam; universal case-insensitive resolution of%item%,%block%, and%player%(with anotifStackcopy before slot removal); left-click attack handling removed fromblocked_use_items(zero damage handling centralized inzero_damage_items).
Weapons, Items, Audio & Visuals
- Updated Identity: Official displayed name set to
SMP: Utilities. - Weapon Balancing & Tooltips:
Absurd Damage Sword: damage fixed at1,000,000with a dark green vanilla tooltip displaying the∞symbol (without+).Ban SwordandChapolin Colorado's Sledgehammer:0actual damage while retaining knockback, particles, and sound only when hitting entities; Sledgehammer attack speed adjusted to1.6(-2.4).Mind Wrench:0damage, zero knockback, and instant block breaking without drops (including unbreakable blocks, while respecting blocks protected by restrictions)./smpu loreupdated to use a single line with explicitwithItalic(false)in thenormalstyle (also fixing forced italics in/smpu rename).
- 3D Audio Normalization: The 4
.oggfiles (little_poop,ban_sword,absurd_damage_sword,chapolin_sledgehammer) normalized to-21.2 dBFSRMS in mono. - Tooltips & Line Wrapping: Automatic wrapping of long lines (
wrapTooltipLines) added to Fabric.
[0.1.8] - Multi-Loader & NeoForge 1.21.1
Version Policy & Multi-Loader Structure
- Official version
0.1.8established for synchronization across workspaces, and folder names standardized without hyphens (-). - NeoForge 1.21.1 Port: Complete migration of Forge 1.20.1 code to
ModDevGradle, Java 21,DataComponents,CustomPacketPayload/StreamCodec,NeoForge.EVENT_BUS, updated test mods, and compatibility with Curios and JEI 1.21.1. - Fabric Workspaces Created (1.20.1 and 1.21.1): Initial Loom structure,
.batexecution scripts, NightConfig bundled via Jar-in-Jar,FabricConfigManagerwith templates aligned with Forge, and initial plugins for JEI and Waystones/Balm. - Critical Multi-Loader Fixes:
- Fixed
ClassCastExceptionin the Creative inventory andNullPointerExceptionduring client logout (TypewriterActionBar). - Fixed mixin/Jar-in-Jar loading (
syncModsToRun) and implemented the rule of never exporting the mod's own.jarfile tomods/.
- Fixed
[Pre-0.1.8] - MCreator -> Forge Refactoring
MCreator Decoupling & Clean Architecture
- Complete removal of MCreator files (
.mcreator,elements/,mcreator.gradle) and package migration tocom.gamersa3b.smputilitieswith native Gradle and instance.batscripts. - Migration of world-specific
.datfiles to 4 global.tomlconfigs inconfig/smp_utilities/(restrictions.toml,canon_hearts.toml,waystones.toml,utilities.toml) with/smpu reloadand support for vanilla/reload.
Core Mechanics Implemented
- Restrictions & Anti-Duplication: Transition from legacy commands (
/restrict,/idrestrict,/idcontrol,/idlock) to declarative configuration, along withRestrictedArmorSlotandCurioEquipEventto eliminate duplication race conditions in slots. - Unified Commands (
/smpu&/smp_utilities): Centralization ofrename,lore,lectern,objective(with custom typewriter animation and pause for alerts),canon(get,set,add,setmax,reset,reviveonline/offline), andreload, all strictly in English. - Creative Lectern: Indestructible and dynamically RGB-dyeable administrative block (
LecternColorHelper,creative_lectern_dyerecipe, direct use of dyes in the world, washing with water/cauldrons, 17 entries in vanilla order,CreativeLecternJeiPlugin, page-switching fix in the menu, andDonebutton width correction). - Items, Weapons & Little Poop: Infinite durability for admin tools,
LittlePoopProjectileEntitydecoupled fromSnowballItemwith mono 3D audio,Mind Wrenchwith villager menu bypass andNoAItoggle, and clean single-paragraph[SHIFT]tooltips on the 4 items with descriptions. - Blocks, Potions & Canon Hearts: Fixed UVs and
cullfaceon theSecurity Block; standardized potions and arrows in the Creative tab with exact durations (5:00,2:30,1:15,0:10); Canon Hearts HUD with left-to-right consumption andCanonLossMobEffect. - Cleanup & Removals: Permanent removal of the old
Generator(/generator) andLock(/lock) systems,Golden Beetroot(golden_beetroot),security_slab/security_stairs, and extracanon_lossvariants.
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:dt6bjVBb"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:b7wSFPg8:dt6bjVBb"
}
