Skip to main content

Mod Management

The Feather Server API allows you to manage which mods players can use on your server. This includes blocking mods entirely, enabling or disabling specific mods for individual players, and retrieving information about which mods are blocked or enabled.

Overview

Mod management is handled through the FeatherPlayer interface, which provides methods for:

  • Blocking mods (preventing players from using them)
  • Unblocking mods (allowing players to use previously blocked mods)
  • Getting a list of blocked mods
  • Enabling specific mods for players
  • Disabling specific mods for players
  • Getting a list of enabled mods

These operations allow server owners to create a consistent gameplay experience by controlling which client-side mods can be used on their server.

Basic Usage

Accessing the API

To manage mods, you'll first need to get a reference to a FeatherPlayer object:

// Get a player by UUID
FeatherPlayer player = FeatherAPI.getPlayerService().getPlayer(playerUUID);

// Or get all Feather players
Collection<FeatherPlayer> allPlayers = FeatherAPI.getPlayerService().getPlayers();

Working with FeatherMod Objects

Most mod management operations use FeatherMod objects. A FeatherMod represents a built-in mod in Feather and is identified by its name:

// Create a FeatherMod object
FeatherMod perspectiveMod = new FeatherMod("perspective");

Blocking and Unblocking Mods

Blocking Mods

Blocking mods prevents players from enabling them, even manually. When a mod is blocked:

  • If it was enabled, it will be automatically disabled
  • The player cannot re-enable it until it is unblocked
// Block a single mod
Collection<FeatherMod> modsToBlock = Collections.singletonList(new FeatherMod("perspective"));
player.blockMods(modsToBlock);

// Block multiple mods
List<FeatherMod> multipleModsToBlock = Arrays.asList(
new FeatherMod("motion_blur"),
new FeatherMod("zoom"),
new FeatherMod("timer")
);
player.blockMods(multipleModsToBlock);
info

Blocking a mod is more restrictive than disabling it. Blocked mods cannot be enabled by the player at all, while disabled mods can still be enabled through the client's mod menu.

Unblocking Mods

Unblocking mods allows players to enable the mods again through their client mod menu:

// Unblock a single mod
Collection<FeatherMod> modsToUnblock = Collections.singletonList(new FeatherMod("perspective"));
player.unblockMods(modsToUnblock);

// Unblock multiple mods
List<FeatherMod> multipleModsToUnblock = Arrays.asList(
new FeatherMod("motion_blur"),
new FeatherMod("zoom"),
new FeatherMod("timer")
);
player.unblockMods(multipleModsToUnblock);

Getting Blocked Mods

You can retrieve a list of all mods that are currently blocked for a player:

CompletableFuture<Collection<FeatherMod>> blockedModsFuture = player.getBlockedMods();

blockedModsFuture.thenAccept(blockedMods -> {
for (FeatherMod mod : blockedMods) {
// Process each blocked mod
System.out.println("Blocked mod: " + mod.getName());
}
});

Enabling and Disabling Mods

Enabling Mods

Enabling a mod activates it for the player. Note that this only works if the mod is not blocked:

// Enable a single mod
Collection<FeatherMod> modsToEnable = Collections.singletonList(new FeatherMod("coordinates"));
player.enableMods(modsToEnable);

// Enable multiple mods
List<FeatherMod> multipleModsToEnable = Arrays.asList(
new FeatherMod("item_physics"),
new FeatherMod("saturation"),
new FeatherMod("fps")
);
player.enableMods(multipleModsToEnable);

Disabling Mods

Disabling a mod deactivates it for the player:

// Disable a single mod
Collection<FeatherMod> modsToDisable = Collections.singletonList(new FeatherMod("perspective"));
player.disableMods(modsToDisable);

// Disable multiple mods
List<FeatherMod> multipleModsToDisable = Arrays.asList(
new FeatherMod("motion_blur"),
new FeatherMod("zoom"),
new FeatherMod("timer")
);
player.disableMods(multipleModsToDisable);

Getting Enabled Mods

You can retrieve a list of all mods that are currently enabled for a player:

CompletableFuture<Collection<FeatherMod>> enabledModsFuture = player.getEnabledMods();

enabledModsFuture.thenAccept(enabledMods -> {
for (FeatherMod mod : enabledMods) {
// Process each enabled mod
System.out.println("Enabled mod: " + mod.getName());
}
});

Reference

Common Feather Mods

Here are some common Feather mods you might want to manage:

NameSlugDescription
Team TrackerteamtrackerAdd indicator to see teammate location
AnimationsanimationsModify player animations
Armor BararmorBarExtra armor bar features (Credits: RedLime)
Armor StatusarmorStatusDisplay your armor durability
Attack IndicatorattackIndicatorAdd extra actions to your attack indicator
Autohide HUDautohidehudAutomatically hide parts of the HUD
Auto PerspectiveautoperspectiveAutomatically switch perspectives on events
Auto TextautoTextKeybind macros for commands and text
BackupsbackupsBackups for your singleplayer world
Block IndicatorblockIndicatorShow info about the block you're looking at
Block OverlayblockOverlayAdd overlay and outline to blocks
Boss BarbossBarCustomize your bossbar
BrightnessbrightnessAdjust your Brightness Settings & Night Vision on demand
CameracameraAdds useful camera utilities
Color SaturationcolorSaturationAdjust your display color saturation settings
Combo DisplaycomboDisplayDisplay number of consecutive hits
CoordinatescoordinatesDisplay your location and world info
CPScpsShow your clicks per second
Custom CrosshaircrosshairCustomize your crosshair
Cull LogsculllogsAutomatically remove old log files
Custom Advancements ScreencustomadvancementsscreenShow more information about advancement requirements
Custom ChatcustomChatTweak your chat display
Custom F3customf3Customize your debug screen
Custom FogcustomfogCustom fog settings and clear water
Damage IndicatordamageIndicatorShow mob health information
Dark ModedarkmodeDark mode for Minecraft GUI
Death InfodeathInfoShow information on death
DirectiondirectionDisplay your cardinal direction
DiscorddiscordRPShare your current status on Discord
Drop PreventiondroppreventionLock items in your hotbar
ElytraselytrasExtra elytra features and chestplate swapping
FOV ChangerfovChangerCustomize field of view
FPSfpsDisplay your frames per second
GlintglintCustomize color of enchants and other settings
HeartsheartsReplaces multiple vanilla heart rows with a single row
HitboxhitboxAdds hitboxes around entities
Hit IndicatorhitindicatorAdd indicators where you receive damage
HorseshorsesAdd extra features and stats to horses
HypixelhypixelUseful mods for Hypixel
InventoryinventoryUseful mods for inventory management
Item CounteritemCounterCount items in your inventory
Item DespawnitemdespawnMake items flash when they're about to despawn
Item InfoitemInfo1Display enchants when picking up an item
Item PhysicitemPhysicCool item dropping physics
Jump ResetjumpresetNotifies the player about how close they were to achieving a successful jump reset
KeystrokeskeystrokesDisplay your key presses
Light Level OverlaylightleveloverlayDisplays overlay indicating light levels
Loot BeamslootBeamsAdd beam to dropped items
Mob OverlaymobOverlayAdd overlay and outline to mobs
Motion BlurmotionBlurBlur your vision, make sure it's not too high
MousestrokesmousestrokesDisplays mouse movement
NametagsnametagsModify nametag mechanics
Nick HidernickHiderHide your nick and skin
Pack DisplaypackdisplayDisplays your current texture pack
Pack OrganizerpackOrganizerImproved resource pack page w/ folder support and extra features
PerspectiveperspectiveFreelook
PingpingDisplay your ping to the server
Player ModelplayerModelRender your player model in HUD
PlaytimeplaytimeShow time game open or in-game
Potion EffectspotionEffectsDisplay potion effects
Reach DisplayreachDisplayShows the distance when hitting a player
ReconnectreconnectAutomatically reconnect to servers
SaturationsaturationAdds saturation visualization food tooltips
ScoreboardscoreboardCustomize scoreboard
ScreenshotscreenshotExtra screenshot features
Keybind SearchsearchkeybindAdds a keybind search popup overlay
Server AddressserverAddressShows the server address
Shulker TooltipsshulkertooltipsSee the contents of shulker boxes and other containers
SnaplooksnaplookSnap to a particular perspective
Sound FilterssoundfiltersAdds sound enhancing features / reverb
Speed MeterspeedMeterShow your current velocity
Stopwatchstopwatch1Start and stop a stopwatch with a keybind
SubtitlessubtitlesAdd color and other features to subtitles
System ResourcessystemresourcesShow system resources
TablisttablistTweak tablist settings
Tier TaggertiertaggerDisplays tier from Vanilla PvP Tierlist
TimetimeDisplay the current time
Time ChangertimeChangerChange the time locally
Title TweakertitletweakerMake adjustments to the Title Display
TNT TimertnttimerAdds a timer to your TNT explosions
Toast ControltoastcontrolModify notification toast mechanics
Toggle SprinttoggleSprintToggle your sprint and sneak key
TooltipstooltipsTooltip Enhancements
TotemtotemExtra totem features
TPStpsEstimate server TPS
UHC OverlayuhcoverlayResize popular UHC items to make them easier to find
UI ScalinguiScalingCan potentially affect other mods, USE WITH CAUTION!
ViewModelviewModelAdjust player viewmodel
VoicevoiceSpeak with other Feather players
WaypointswaypointsRender waypoints on a map
Weather ChangerweatherchangerChange the weather locally
ZoomzoomZoom in and out of objects