However, the way they work isn't stellar. They have completely separate areas of memory, so it takes time for them to communicate. So, generally, a game will get all of its data together, shove it on the GPU, and instead of having to describe the shape of everything every frame, it just tells the GPU "you know shape ?
It's a little more complex than that, obviously. Minecraft does this too, for the most part. When the game starts, it takes all the block and item textures and stitches them together into a big "atlas", and then shoves that on the GPU. So here's the problem. This works great in vanilla, which has around 21 animated textures, but modpacks may have hundreds of these. Uploading all the animated textures every tick in this case is really, really expensive.
A lot of computers handle this fine, but some like mine really don't. I get 6 FPS with this option off, and a locked 60 with it on. I can't find any references to this option in the source code. I'm guessing this was necessary at one point, but the fix got rolled into Forge. All options in this section are exclusive to the Anarchy edition of FoamFix. Lawful does not have any of these options if you let it generate a config, and it won't use them if you copy over an Anarchy config file.
You may have heard the term "ASM" get thrown around when talking about Minecraft modding, usually about how it's bad or invasive. It's a library used by Forge to rewrite Minecraft's code on-the-fly, instead of making you modify the jar.
How this works is LaunchWrapper, a Mojang library mainly used to patch old Minecraft versions that wouldn't run on modern Java or with modern Mojang services otherwise, stands in front of the Java ClassLoader which handles reading all the code from disk , and passes it through a series of "class transformers".
Here's the issue. Minecraft has a lot of classes, a lot of which coming from other people's code it uses "libraries" , which are things you don't want to patch.
But it still spends time asking all the class transformers if it wants to modify them. Enabling this option adds a bunch of these libraries to the LaunchWrapper "transformer exclusions" list, which is much faster to check than just asking all the transformers.
As such, this is a modest speedup during startup with no ill effects in the majority of cases. As established earlier, Minecraft loads the models for all blocks up-front instead of on-the-fly. It does this for items too, which use all the same systems as blocks, unlike 1. The thing is though, there can be a lot of variants for items. Have you ever scrolled through JEI without filtering? There's a lot of stuff there! So what this does, is FoamFix uses a special "lazy" model for items that doesn't actually contain any data.
The first time it's rendered, FoamFix will go ahead and "bake" the model that needs to be used. This means it may actually result in a slowdown , but it will reduce memory usage, and in most cases the slowdown is negligible. This one was discovered by Aikar of PaperMC , so kudos to them.
Did you know blocks and items in Minecraft are totally distinct? When you break a block and pick up what it drops, that is an item representing the block, not the block itself. So, Minecraft maintains a mapping of what blocks turn into what items when in an inventory. The issue is, air counts as a block too! So there's some places in Minecraft where the air block needs to get turned into an item. And Minecraft keeps track of these mappings in a hashtable which we will be covering a bit later , which is fast as far as tables or maps go, but it's slow compared to a field lookup.
FoamFix goes through and finds all places where this is done, and replaces the map lookup with a field reference. The first time it's done, it still results in a map lookup, but FoamFix caches the result of the lookup and puts it into a field. Forge adds events in a lot of places to vanilla code to make it possible to modify with, well, a mod.
But events aren't free! They're actually pretty expensive, honestly. But Forge has an event for every time a block's collision boxes are retrieved. As you can imagine, this is really frequent, as every entity needs to know what the shape of the blocks around it is. So every entity, possibly multiple times a tick, calls this method. The functionality offered by having this hook is definitely great, but it does result in a slowdown. So if this is enabled, FoamFix tries to make that hook a bit more clever, avoiding many of the cases where the event would be unnecessary.
I've put the incompatibility risk here as medium-high because this slightly changes the semantics of the GetCollisionBoxes event. I don't believe any mods rely on the default Forge behavior, but it's definitely possible. Join our discord to get the mod for free. This mod is by Tiny Turtle and the Little Club.
It is recommended to Install Offline Skins. DerpySteven Level Journeyman Dragon Subscribe 31 I am making Tiny turtle old nation map some bits will be custom if you do use it pls make sure to credit me The mods will come with the map dragonfire you need to get yourself.
It times out when downloading and says,. Most of the time the stacktrace of the log that VanillaFix creates allows us to pinpoint the problem. We see the same stuff so many times. Maybe don't use the normal Minecraft Laucher. Maybe use MultiMC, that's what I use. Even then, Mojang should just update their stuff.
I manually changed the version and I don't get random Java crashes anymore. JVM Crashes, not normal mod or Minecraft crashes, since I was actually playing vanilla when it kept happening. The reason why the game is crashing isn't because of an underpowered PC, since this PC is built primarily for Minecraft.
Skip to content. Star New issue. Jump to bottom. Copy link. The reason OpenGL detection fails here is because this error happened on the server thread, not the client thread which is the thread holding the OpenGL handle. At least, if you're using FoamFix. The rest of your points are fair. Notice what I said: The 1.
It times out when downloading and says, can't download the modpack, contact the modpack author Most of the time the stacktrace of the log that VanillaFix creates allows us to pinpoint the problem.
Sign up for free to join this conversation on GitHub.
0コメント