Mod Loading Screen
# Mod Loading Screen
An advanced loading screen with the loading progress of mods. It works on all Minecraft versions, as it doesn’t even require Minecraft. Its only requirement is Fabric Loader 0.12.0 or later or Quilt Loader (specific versions of Quilt support are unknown). Do note that if you run this mod on a game other than Minecraft, the loading screen may not close itself.
## Agent
Mod Loading Screen provides a Java agent, which allows opening the loading screen before even the mod loader itself loads. This feature is primarily targeted at modpack developers who want to make a seamless loading experience. The agent can be used by passing `-javaagent:mod-loading-screen-1.0.4.jar` as a JVM argument. If the agent is used, the loading screen should *not* be installed as a mod.
## API
To depend on the API, use the Modrinth Maven. The API should be JiJed, and doing so will not include Mod Loading Screen inside your mod (it will only include the API, which is only a few kilobytes). The API is designed to have both forwards and backwards binary compatibility with future Mod Loading Screen versions. An API is provided for checking which API calls will return stubs and which ones are real.
“`gradle
repositories {
exclusiveContent {
forRepository {
maven {
name = “Modrinth”
url = “https://api.modrinth.com/maven”
}
}
filter {
includeGroup(“maven.modrinth”)
}
}
}
dependencies {
// implementation, not modImplementation!
include(implementation(“maven.modrinth:mod-loading-screen:1.0.4:api”))
}
“`
The API has two top-level classes: `LoadingScreenApi` and `AvailableFeatures`. Full javadocs are available for both classes.
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!
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.
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!**
Healer
Patch up security vulnerbility CVE-2021-44228 (also known as Log4Shell) for minecraft forge 1.7.10 – 1.12.2, by removing JNDI lookup from Interpolator using reflection and replace the default LoggerContextFactory to catch any LoggerContext loaded after this mod. For more specific technical explainations on how I patched it, please refer to the source code instead.
Currently only works for minecraft 1.12 and before. Tested on 1.7.10 and 1.12.2.
## Compatibility
If any mod tries to programatically tweak logging configuration, they will fail miserably due to the exhaustive patching. To fix this, healer postpones the patching late enough, until said mods are done with their editing.
As of date, healer has built in support for these mods.
* ForgeEssentials
If you have other mods crashing with log lines like `ClassCastException: cannot cast XXXXXXXX to org.apache.logging.log4j.core.impl.Log4jContextFactory`, then you have step on one of these mods.
To fix this, complain at [my issue tracker](https://github.com/Glease/Healer/issues), or add `-Dnet.glease.healer.patch_stage=XXXX` to your JVM launch argument, where XXXX can be any of `PRELOAD, PREINIT, INIT, POSTINIT` (in time order, with earliest as the first). PREINIT is usually enough to mitigate the problem, POSTINIT should be enough to fix all problem.
## To ordinary players
1. If your launcher has patched this already, you will not need this mod to patch the vulnerability.
2. If you applied mojang’s fix, you will not need this mod to patch the vulnerability.
3. If you have FoamFix for 1.7, you will not need this mod to patch the vulnerability.
4. If you have used other fixing mods, ask their original authors if they can “catch any LoggerContext loaded after their mod”, if yes, you will not need this mod. Otherwise, replace that mod with this mod, or use a launcher that does patching for you, e.g. MultiMC.
## To modpack makers
1. I suggest you to include this mod in your client pack, if it is intended for minecraft 1.7~1.12.2. This will protect your users who is still not aware of this and happen to use a launcher that hasn’t patched this.
2. If you also distribute a server pack, and it is intended for minecraft 1.7~1.12.2, adding this mod is not necessary if you applied mojang’s fix. However, since many people don’t use the StartServer.bat (or something alike) that come with your server pack, chances are they will not use mojang’s fixed log4j2.xml. Technically you should not distribute an edited minecraft_server-1.7.10.jar, so adding this jar would be the most straightfoward way of ensuring the user getting a fix.
Fake Hardcore Hearts/Health
Adds Hardcore Hearts to regular worlds without actually enabling Hardcore Mode,
available to every Minecraft version.
All Hearts have been replaced with their Hardcore variants, including Regular hearts, Absorption hearts, Poisioned hearts, Withered hearts and even Frozen hearts.

You can absolutely use this to troll your friends.
You can totally use this to record your 100% legit Minecraft playthrough before going off-camera mining.
Happier Pumpkin
# **😊Happier Pumpkin🎃**
**Happier Pumpkin** makes pumpkins happier the **HAPPIEST** in the **PUMPKING KINGDOM**

Glass doors and trapdoors
# **Glass doors and Trapdoors**
—

—
## **Description**
**Replaces the default doors and trapdoors with glass textures.**
**The glass variants make it easier to see through doors and trapdoors.**
Geometric Font Legacy

> A sharp, clean remake of the default mojangles font in full HD
# GUI Scale Matters!
The default download is meant for scale 4, but if you use a different size make sure to click on the latest release and download the one you play with for the best experience! You can also use [this link](https://modrinth.com/resourcepack/geometric-font/version/1.1.1) to go there.
# The Font Has Been Remade!
[**Geometric Font 2**](https://modrinth.com/resourcepack/geometric-font-2) has been rebuilt from the ground up as an OpenType font with new features and better consistency. There’s also [**Geometric Font Edge**](https://modrinth.com/resourcepack/geometric-font-edge), a new sci-fi stylized variant! Both can be found using the buttons bellow:
[](https://modrinth.com/resourcepack/geometric-font-2) [](https://modrinth.com/resourcepack/geometric-font-edge)
## About
There are a lot of HD font remakes out there, but none that go for a sharper style that (in my opinion) suits vanilla better. That’s what this font aims to do!
Another problem with HD fonts, due to the way the game displays GUIs, high-resolution textures will look jagged and distorted if you don’t use them with the GUI scale they’re meant for. This pack solves that too! Just make sure to download the version for your preferred GUI scale.
## Resources
– Want to use this font in your own works? See the [license](https://github.com/Xetheon/mc-geometric-font/blob/main/LICENSE.md)
– Curious about updates on things I work on or just want to hang out? Join my [Discord!](https://discord.gg/3gtNAQgv2G)
– Interested in other packs I’ve made? Check out [this list!](https://gist.github.com/Xetheon/c3d677e0762658f8d79cf05e2c6e65ff)
Fresh Sun
![[Sun]](https://cdn.modrinth.com/data/cached_images/70807fe14c7d28c4bb53f6770af5e827359c8900.png) Gives the Sun a fresh look. Improving the Sky! ![[Sun]](https://cdn.modrinth.com/data/cached_images/70807fe14c7d28c4bb53f6770af5e827359c8900.png)
Changes the sun texture! It’s no longer a square! It’s a big ball of light with rays!
Available for every version!

