MacOS Input Fixes
Fixes [MC-122296](https://bugs.mojang.com/browse/MC-122296)
Fixes [MC-121772](https://bugs.mojang.com/browse/MC-121772)
Fixes [MC-59810](https://bugs.mojang.com/browse/MC-59810)
Fixes [MC-22882](https://bugs.mojang.com/browse/MC-22882)
Fixes control + tab and control + escape not being detected
Specific fixes:
– Correctly detects left click while control is pressed
– Make trackpad scrolling not scroll a ridiculous number of items at once
– It also fixes momentum scrolling (which changes the number of scroll events based on how quickly you did it, even by like x5-10, meaning you couldn’t easily scroll to the correct item)
– On the trackpad it also only considers scrolling while fingers are on the trackpad (and the same for any fancy mice that support the relevant api e.g. probably apple’s fancy mice/trackpad thing)
– It also fixes scrolling being broken when shift is down on some older mice.
– When dropping an item, Minecraft checks for command + the key, since the default key is Q, this doesn’t make sense, so this mod allows both control + key and command + key to work
– Fixes control + tab and control + escape not being detected
Menu Options (under Mouse Settings Screen):
– Option for trackpad scrolling sensitivity (macOS only)
– Option to enable momentum scrolling on hotbar (macOS only)
– Option to disable workaround for smooth scrolling in interfaces (macOS only)
– Option to reverse scrolling of the whole game
– Option to reverse scrolling of the hotbar
– Option to disable the fix for the ctrl + left click becomes right click bug (macOS only)
On platforms other than macOS, the mod does nothing (except the aformentioned menu options), so it can be safely included in any modpack.
Requires Fabric Loader 0.18.5+
Requires Minecraft 1.14+
NOTE!
If you get an error like the following, you need to update Fabric Launcher to the version specified above. Some launchers may require you to update fabric launcher, remove macos input fixes mod fully, and then re-add macos input fixes mod. See https://github.com/hamarb123/MCMacOSInputFixes/issues/60 for the original issue. Note that the “More details” section is very misleading, and parts around it about my mod should be ignored (try disabling it, after the steps before for re-installing, if you are still getting errors to confirm that it is actually an issue with this mod).

Github repository: [https://github.com/hamarb123/MCMacOSInputFixes](https://github.com/hamarb123/MCMacOSInputFixes).
And yes, I know I need a better icon 😉
### DISCLAIMER
As [required](https://www.minecraft.net/en-us/usage-guidelines) to mention prominently according to Mojang – THIS IS NOT AN OFFICIAL MINECRAFT PRODUCT. NOT APPROVED BY OR ASSOCIATED WITH MOJANG OR MICROSOFT.
View the license for the disclaimer of the actual mod.
LoginPhaseProxy
**LoginPhaseProxy** is a somewhat “*simple*” Velocity Plugin that allows you to proxy the LoginPluginMessagePacket from backend server to the player and LoginPluginResponsePacket from the player to the backend server. This is useful for modded backend servers that rely on Login Plugin Message communication to work, such as [AutoModpack](https://github.com/Skidamek/AutoModpack).
> Disclaimer: This plugin is in early development and may contain bugs and performance issues. Use it at your own risk.
## 🔁 When to use
| Author(s) | Mod |
|—————————————–|——————————————————————————–|
| [Skidam](https://github.com/Skidamek) | [AutoModpack](https://github.com/Skidamek/AutoModpack) (Fabric/Forge/Neoforge) |
> You’re welcome to suggest new use cases via [Issue](https://github.com/caiostoduto/LoginPhaseProxy/issues/new/choose) or [Pull Request](https://github.com/caiostoduto/LoginPhaseProxy/pulls)!
## ❓ What does it solve (detailed)

Normal Setup ⦁ Made in Figma
On a normal Velocity setup, when a player connects to the proxy, they go through the (P ↔ V) Login Phase, exchanging packets with the Velocity until the proxy sends a Server Login Success Packet, completing the (P ↔ V) Login Phase and triggering the backend connection process. The backend server then goes through its own (V ↔ B) Login Phase, where it may send Login Plugin Message Packets to the Velocity, and they can’t be forwarded to the player, because the (P ↔ V) Login Phase is already complete, so Velocity reponds them with an empty data Login Plugin Response Packet, as it doesn’t know how to handle them. This is a problem for modded backend servers that rely on Login Plugin Message communication to work, such as [AutoModpack](https://github.com/Skidamek/AutoModpack), as they won’t be able to send the necessary data to the player during the Login Phase, and the player won’t be able to join the backend server. This plugin tries to solve this issue by proxying the Login Plugin Message communication between the player and the backend server, allowing modded backend servers to work with Velocity without any issues.
## ✨ How it works (detailed)
~~Basically black magic 🪄🔮~~. It uses [Java Reflection](https://www.oracle.com/technical-resources/articles/java/javareflection.html) to access the internal Velocity classes [ProxyServer](https://github.com/PaperMC/Velocity/blob/ad8de4361c9d6e93b818d3381e85b14e0c90ad05/proxy/src/main/java/com/velocitypowered/proxy/VelocityServer.java) -> [ConnectionManager](https://github.com/PaperMC/Velocity/blob/dev/3.0.0/proxy/src/main/java/com/velocitypowered/proxy/network/ConnectionManager.java)[[1]](https://github.com/caiostoduto/LoginPhaseProxy/blob/main/src/main/java/com/caiostoduto/loginPhaseProxy/initializer/VelocityChannelInitializer.java) to override the serverChannelInitializer[[2]](https://github.com/caiostoduto/LoginPhaseProxy/blob/main/src/main/java/com/caiostoduto/loginPhaseProxy/initializer/FrontendChannelInitializer.java) and backendChannelInitializer[[3]](https://github.com/caiostoduto/LoginPhaseProxy/blob/main/src/main/java/com/caiostoduto/loginPhaseProxy/initializer/BackendChannelInitializer.java), so it can intercept the Velocity communication with the player (P <-> V)[[4]](https://github.com/caiostoduto/LoginPhaseProxy/blob/main/src/main/java/com/caiostoduto/loginPhaseProxy/intercept/FrontendInterceptor.java) and backend server (V <-> S)[[5]](https://github.com/caiostoduto/LoginPhaseProxy/blob/main/src/main/java/com/caiostoduto/loginPhaseProxy/intercept/BackendInterceptor.java), respectively.

Plugin Implementation ⦁ Made in Figma
With that, our plugin watches the Login Phase player connection until it sees a SetCompressionPacket(5) (optionally) and ServerLoginSuccessPacket(6), adding them to a buffer instead of sending them to the player and synthetically sends a loginAcknowledgedPacket(7) to the Velocity pipeline, tricking it into thinking the Login Phase is complete and starting the backend connection process. To make sure the Velocity doesn’t mess the packet interception and sending process, our plugin removes stealthly (so that it doesn’t trigger it’s handlerRemoved lifecycle[[6]](https://github.com/caiostoduto/LoginPhaseProxy/blob/main/src/main/java/com/caiostoduto/loginPhaseProxy/utils/StealthPipeline.java)) the handlers from the Velocity serverChannel pipeline[[4]](https://github.com/caiostoduto/LoginPhaseProxy/blob/main/src/main/java/com/caiostoduto/loginPhaseProxy/intercept/FrontendInterceptor.java) that were added after the Login Phase to Config Phase transition ([MinecraftCompressorAndLengthEncoder](https://github.com/PaperMC/Velocity/blob/ad8de4361c9d6e93b818d3381e85b14e0c90ad05/proxy/src/main/java/com/velocitypowered/proxy/protocol/netty/MinecraftCompressorAndLengthEncoder.java#L33) and [MinecraftCompressDecoder](https://github.com/PaperMC/Velocity/blob/ad8de4361c9d6e93b818d3381e85b14e0c90ad05/proxy/src/main/java/com/velocitypowered/proxy/protocol/netty/MinecraftCompressDecoder.java#L34), others are removed naturally afterwards). Also, our plugin adds the [MinecraftVarintLengthEncoder](https://github.com/PaperMC/Velocity/blob/ad8de4361c9d6e93b818d3381e85b14e0c90ad05/proxy/src/main/java/com/velocitypowered/proxy/protocol/netty/MinecraftVarintLengthEncoder.java#L33)[[4]](https://github.com/caiostoduto/LoginPhaseProxy/blob/main/src/main/java/com/caiostoduto/loginPhaseProxy/intercept/FrontendInterceptor.java) back (was removed at the transition) and sets the [MinecraftDecoder](https://github.com/PaperMC/Velocity/blob/ad8de4361c9d6e93b818d3381e85b14e0c90ad05/proxy/src/main/java/com/velocitypowered/proxy/protocol/netty/MinecraftDecoder.java#L34) state to StateRegistry.LOGIN[[4]](https://github.com/caiostoduto/LoginPhaseProxy/blob/main/src/main/java/com/caiostoduto/loginPhaseProxy/intercept/FrontendInterceptor.java) so the packets are properly encoded and decoded.
If the backend server sends a LoginPluginMessagePacket(10) during its Login Phase, our plugin will intercept it and send it to the player(11), and if the player sends a LoginPluginResponsePacket(12), our plugin will intercept it and send it to the backend server(13). This way, we can effectively proxy the LoginPluginMessagePacket and LoginPluginResponsePacket between the player and the backend server, allowing modded backend servers to work with Velocity without any issues. Then, when the backend server ends the Login Phase sending the ServerLoginSuccessPacket(15), our plugin will flush the buffered packets to the player, completing the Login Phase and allowing the player to join the backend server as normal. Afterwards, if the user sends a LoginAcknowledgedPacket (clientProtocolVersion >= ProtocolVersion.MINECRAFT_1_20_2)(16) after the Login Phase is complete, our plugin will simply ignore it, as it is not expected to be sent by the player at that point. Finally, the plugin will restore the [MinecraftDecoder](https://github.com/PaperMC/Velocity/blob/ad8de4361c9d6e93b818d3381e85b14e0c90ad05/proxy/src/main/java/com/velocitypowered/proxy/protocol/netty/MinecraftDecoder.java#L34) state to its previous state (Config Phase).
So, yeah, *basically black magic* 🪄🔮. Yayyyy!
## 🙏 Acknowledgements
– [Skidam](https://github.com/Skidamek), who inspired me to create this plugin!
– [lucas-gcp](https://github.com/lucas-gcp), who supported me and helped with testing!
Log Cleaner
A lightweight mod that cleans old, unused log files.
The best thing is that this mod keeps files not based on creation date, but the most recent access (of any kind) to the file, so logs that are still being accessed for whatever reason are not removed unwillingly.
It works both client-side only and server-side only, and works in every Minecraft version.
By default, it will clean logs that haven’t been used in more than 14 days, so there’s plenty of time in case you ever need them for debugging, but you can configure it to any amount of days you want.
## Configuration
You can find the mod’s configuration file in `config/logcleaner.json`. There’s two options you can change in there:
– `daysOld`: The number of days a log has to have been unused in order for it to be deleted. Defaults to `14`
– `silent`: If set to `true`, Log Cleaner will not send a message with the amount of deleted log files to the log. Defaults to `false`
Killer Head
[](https://modrinth.com/project/I7bAUQBi)
[](https://discord.gg/FVq3j5heAc)
[](https://fabricmc.net/)
[](https://quiltmc.org/)
[](https://neoforged.net/)
[](minecraftforge.net)
___
## What’s Killer Head ?
**Killer Head** is a project to drop the killer’s head when his victim dies.
## How it works ?
### Edit player loot table `entities/player.json`
Adds a player head to the death of a player and correlates the characteristics of the killer.
## Complementary
You can also use [Drop Head](https://modrinth.com/project/drop-head).
Here’s [Stackable Heads](https://modrinth.com/project/stackable-heads) which is interesting to use.
## Compatibility
**Killer Head** should work anywhere.
## Support me!
Join my Hardcore Minecraft server: `38.143.19.130:51965`
Keep Inventory Always
## Keep Inventory Always
The mod turns on a game rule that allows you to save your inventory when you die in each world
## How to use
To use the mod, you only need to install it. Now when creating a world, the game rule keepInventory will always be enabled
## Dependencies
– Fabric loader requires [Fabric API](https://modrinth.com/mod/fabric-api)
Just Hotbar
# Just Hotbar
This texture pack changes the hearts and hotbar, making them simpler

No Java Edition Branding – Remove from Start-Title Screen
Removes the Java Edition Text under The “Minecraft” Logo from the Title Screen!


Also works for with other resourcepacks!


Invisible Item Frames

**A simple resource pack that makes item frames invisible**.
—
## Need a Minecraft Server? (Sponsor)
[](https://billing.sparkedhost.com/aff.php?aff=3138)
Get **25% off your first month** with Sparked Host.
—
## Quick info
– **Versions:** 1.4+ (full invisibility from 1.8+)
– **Works with almost all mods (Sodium/Iris and OptiFine too)**
– **No mods or commands required**
– **Additional files for invisible glow item frames and invisible map frames**
– **Versions below 1.8 will only have the center of the frame invisible (view images below for more info)**
—
## Showcase
**1.8+**

1.4-1.7.10

—
FAQ
**Can I use this with other packs?**
> Yes, but place this pack in a **higher priority (above other packs)**.
**How do I remove item frames?**
> Enable debug hitboxes using **F3 + B** and break the frame.
**Can I use this pack in my modpack or server?**
> Yes you are free to use it, as long as you don’t claim this pack as your own.
**Why is my map/glow item frame not invisible?**
> You have to install those separately. They are available under **additional files** or the buttons near the top of this page.
**Does this make the game slower?**
> This pack actually slightly **improves the client-side framerate** in scenes with lots of item frames.
—
## Additional Files
– [Download Invisible Glow Item Frames](https://cdn.modrinth.com/data/gfr4403r/versions/SVxFWAm4/Invisible-Glow-Item-Frames-V4.zip)
– [Download Invisible Map Item Frames](https://cdn.modrinth.com/data/gfr4403r/versions/SVxFWAm4/Invisible-Map-Item-Frames-V1.zip)
—
## Need a Minecraft Server? (Sponsor)
[](https://billing.sparkedhost.com/aff.php?aff=3138)
Use code **MattyWalker** for 25% off your first month.
Instant Respawn Always
## Instant Respawn Always
Skip the death screen in each world, like in short videos, so you don’t have to waste time on settings.

## Dependencies
– Fabric loader requires [Fabric API](https://modrinth.com/mod/fabric-api)
Icon Bubbles
**This resource pack changes your hearts and hunger bar icons to be circles.**
### Features:
– Round hearts
– Round hunger bar
– Changes all types of hearts (poison, freezing, hardcore…)
– Compatible with the [AppleSkin mod](https://modrinth.com/mod/appleskin)
**♡ Make sure to follow!**