A client-only Fabric mod for Minecraft 1.20.1 that allows players to drag and drop PNG skin files directly into the game and apply them immediately without restarting.
- 🎯 Drag & Drop Interface: Open GUI with K key, drag PNG files from your OS into the drop zone
- ⚡ Immediate Application: Skins are applied instantly to your player model
- 🎨 HD Support: Supports skins of any resolution (128x128, 256x256, 512x512, etc.)
- 🤖 Auto-Detection: Automatically detects slim (Alex) vs classic (Steve) models based on filename
- Files containing
_slimor_alex→ Alex model - All other files → Steve model
- Files containing
- 🌐 Client-Only: No server-side changes required
- 💾 Memory Efficient: Proper cleanup of old textures to prevent memory leaks
- Minecraft 1.20.1
- Fabric Loader 0.16.12+
- Fabric API 0.92.6+
- Java 17+
- Download the latest
.jarfile from releases - Place it in your
%minecraft%/modsfolder - Launch Minecraft with Fabric Loader
- Press K in-game to open the skin manager
- Clone this repository
- Run
./gradlew build(orgradlew.bat buildon Windows) - Find the built JAR in
build/libs/
- Open the GUI: Press K in-game
- Drag & Drop: Drag a PNG file from your file explorer into the drop zone
- Alternative: Click "Pick File" to browse for PNG files
- Apply: Click "Apply Skin" to apply the skin
- Clear: Use "Clear Skin" to remove the custom skin
- Close: Click "Close" or press ESC
- Java 17 or higher
- Gradle (included in the project)
# Build the mod
./gradlew build
# Build without running tests
./gradlew build -x test
# Clean build
./gradlew clean build
# Generate sources JAR
./gradlew sourcesJarThe built mod will be available in:
build/libs/felixskin-1.2.3.jar- Main mod JARbuild/libs/felixskin-1.2.3-sources.jar- Source code JAR
src/
├── client/java/xyz/felixcraft/felixskin/
│ ├── FelixSkinClient.java # Main mod entry point
│ ├── gui/
│ │ └── SkinManagerScreen.java # Main GUI screen
│ ├── skin/
│ │ └── SkinManager.java # Skin loading and management
│ ├── config/
│ │ └── FelixSkinConfig.java # Configuration management
│ └── mixins/
│ └── PlayerSkinMixin.java # Player rendering mixin
└── main/resources/
├── fabric.mod.json # Mod metadata
├── felixskin.mixins.json # Mixin configuration
└── assets/felixskin/
├── lang/en_us.json # Language file
└── icon.png # Mod icon
The mod uses Fabric Mixin to intercept:
AbstractClientPlayerEntity.getSkinTexture()- Returns custom texture identifierAbstractClientPlayerEntity.isSlim()- Returns custom slim model flag
- Custom skins are loaded as
NativeImageand converted toNativeImageBackedTexture - Textures are registered with unique identifiers:
felixskin:dynamic/{player-uuid} - Old textures are properly cleaned up to prevent memory leaks
- Uses GLFW drop callback to receive file drops from the OS
- Safely handles file path encoding and validation
- Only accepts PNG files with reasonable size limits
- Mod not loading: Ensure you have the correct Fabric Loader version
- K key not working: Check if the key binding conflicts with other mods
- Skin not applying: Verify the PNG file is valid and not corrupted
- Performance issues: Large HD skins (>2048x2048) may impact performance
Check the Minecraft logs for any error messages. The mod logs important events with the prefix [FelixSkin].
- GitHub: https://github.com/dotprepare/FelixSkins
- Discord: Join our community for support
- Issues: Report bugs on GitHub Issues
Contributions are welcome! Please feel free to submit issues, feature requests, or pull requests.
This project is licensed under the MIT License - see the LICENSE file for details.
Made with ❤️ by Frame121