Jump to content

Recommended Posts

Posted

Okay, so admittedly this is a really complex thing I'm trying to do, but I figure I'd learn some things along the way, so I decided to give it a shot.

My goal is to recreate something like a skill tree in Minecraft. Specifically, my inspiration comes from the Passive Skill Tree in Path of Exile. I definitely do NOT expect to replicate the kind of complexity they've got, as the skill tree has evolved over the course of many years.
I've (mostly) figured out my implementation for the skill tree, and now I need to have a GUI allowing the player to actually allocate their skill points. This, unfortunately, seems to be much harder than the tree implementation itself, while also being extremely important to using the tree (I suppose I could implement the whole thing using commands, but I'm going to have to create a GUI at some point so I might as well ask now).

Currently, I'm trying to future-proof by using a custom registry for my SkillNodes. While this will allow me to easily add nodes programmatically (and will allow other mods to expand upon the skill tree), it also means that I have no way of knowing what nodes will need to be drawn to the tree at compile time, so I have to dynamically generate the GUI. I likewise have no way of knowing what positions I will need to draw the nodes' textures at, which means I won't know until runtime how long I will need to make the paths between each node.


So, here are my questions:
1.  I expect I will need to take advantage of Minecraft's built-in texture stitching, that way I don't have to rebind the texture every time I draw a node. Near as I can tell, there is no built-in GUI TextureAtlas, so I would need to create my own. How would I go about doing that, and would it need to be registered somewhere in order to still fire TextureStitchEvents?
2a.  Since I also don't know each node's position until runtime, I will need to dynamically draw the paths between them, which means I won't know the lengths of each path and therefore can't just draw a texture 1:1 between each node.

2b. I would like to make the paths straight lines between each node, which means I could potentially be dealing with diagonals as well. Can  `Screen` handle either of these scenarios, or would I need to directly access OpenGL?

 

This situation is something I'm not very experienced with at all, so please bear with me. I'll probably be asking several more questions to make sure I understand what I need to do here.

And as I said, I know I'm probably biting off more than I can chew, but I find that I learn best by bodging a solution together at first and then rewriting it with the knowledge I gained.

 

 

Posted (edited)
43 minutes ago, Blazer Nitrox said:

While this will allow me to easily add nodes programmatically (and will allow other mods to expand upon the skill tree), it also means that I have no way of knowing what nodes will need to be drawn to the tree at compile time, so I have to dynamically generate the GUI. I likewise have no way of knowing what positions I will need to draw the nodes' textures at, which means I won't know until runtime how long I will need to make the paths between each node.

You could specify the position of the node as part of its data, which should be part of the instance you use as the registry entry, and draw each node according to its position data. This allows you (as well as other mods that use your mod) to have more control over where the newly added nodes should appear. This also circumvents the "dynamically position the node and draw line between" problem.

 

43 minutes ago, Blazer Nitrox said:

2a.  Since I also don't know each node's position until runtime, I will need to dynamically draw the paths between them, which means I won't know the lengths of each path and therefore can't just draw a texture 1:1 between each node.

2b. I would like to make the paths straight lines between each node, which means I could potentially be dealing with diagonals as well. Can  `Screen` handle either of these scenarios, or would I need to directly access OpenGL?

Directly using OpenGL should be the easier approach, as it has more flexibility (and Screen uses OpenGL anyways). Create a texture of a line and scale/rotate it to point it to other nodes. Some trigonometry will be needed.

Edited by DavidM

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Posted
29 minutes ago, DavidM said:

You could specify the position of the node as part of its data, which should be part of the instance you use as the registry entry, and draw each node according to its position data. This allows you (as well as other mods that use your mod) to have more control over where the newly added nodes should appear. This also circumvents the "dynamically position the node and draw line between" problem.

That's what I'm doing, sorry I didn't make that clear. As part of the node's data I've got the position and the resource location for the appropriate texture. My main concern was that since I won't know where the node will be located until it gets registered I can't just include the path as part of the background texture, so I would have to dynamically draw it.

 

32 minutes ago, DavidM said:

Directly using OpenGL should be the easier approach, as it has more flexibility (and Screen uses OpenGL anyways). Create a texture of a line and scale/rotate it to point it to other nodes. Some trigonometry will be needed.

I suspected this would be the case, but thanks for confirming it. I assume I can still use Screen for a convenient way to access the GUI, and then override the various rendering methods in order to actually draw what I need?

Side note: how did you code-ify `Screen`?

Posted

Okay, I did some poking around with AtlasTexture, and I think I figured out how to do what I need to. I'm going to record it here for future generations, and as a second post because it just doesn't make sense to me to combine this with the above, since they're mostly unrelated (and the separation will help identify this as me explaining what I think I need to do).

 

AtlasTexture texture = new AtlasTexture(new ResourceLocation(MODID, "atlas"));
Stream<ResourceLocation> stream = list.stream(); //We get a stream of all of the textures we want, probably using Collection#stream()
SheetData data = texture.func_229220_a_((IResourceManager) Minecraft.getInstance().getTextureManager(), stream, Minecraft.getInstance().getProfiler(), 0); //Last argument is mipmap level, we use 0
map.upload(data);

So, first I must actually create a new AtlasTexture, passing in a ResourceLocation which will act as a registry name.
Then, to actually generate the stitched texture, I must call AtlasTexture#func229220_a_. It seems I should pass in Minecraft.getInstance().getTextureManager() (which I can do because I'm specifically doing this on Dist.CLIENT) for the first argument, a Stream containing the ResourceLocation's of all of the textures I want to stitch (so this will be done after all of the nodes are registered, no surprise there), an IProfiler (whatever that is, it seems to be used to track the progress of the texture stitching), and an integer mipmapping level (I would assume I'd use either 0 or 1, since I won't need mipmapping for a GUI I don't think). I would capture the output of this and pass it to AtlasTexture#upload, which would actually create the texture information I would then use for drawing. At this point, the AtlasTexture is ready for use.

 

if (!RenderSystem.isOnRenderThread()) {
	RenderSystem.recordRenderCall(() -> {
		manager.func_229263_a(texture.func_229223_g_(), texture);
      	texture.func_229148_d_();
	});
} else {
	textureManager.func_229263_a(texture.func_229223_g_(), texture);
  	texture.func_229148_d();
}

When we first start drawing, we have to bind the texture. First, we must ensure we are actually on the rendering thread, and ask the rendering thread to do it if we aren't. Then we call TextureManager#func_229263_a, which takes two arguments, a ResourceLocation we want to use as a key for our AtlasTexture and the AtlasTexture itself.  We can cheat the first argument here by calling AtlasTexture#func_229223_g_, which is essentially getRegistryName. This will set up our texture so it's ready to be bound to OpenGL (the above is ripped directly from TextureManager#bindTexture). We then call Texture#func229148_d, which actually binds the texture.

 

((I would provide a code example, except that Screen doesn't seem to provide any way to draw textures using UV coordinates which is all TextureAtlasSprite provides, and directly drawing via OpenGL requires calling Tessellator to get a BufferBuilder, and none of the methods in BufferBuilder (or, for that matter, Screen) have been deobfuscated yet.))

 

Now, in order to draw a texture from the Atlas onto the GUI, we call AtlasTexture#getSprite and pass in the key for the particular texture we want. That returns a TextureAtlasSprite, which contains the coordinates of our texture on the Atlas in absolute pixels as well as the relative min/max UV coordinates of our texture. Asking OpenGL to draw the part of the texture from min UV to max UV will draw our chosen texture and only that texture.

Posted

Few things to add:

1. You might want to check out SpriteUploader.

2. Check out AbstractGui::blit. It is the built-in method of rendering sprites with UV coords.

3. You won't need to check on for the rendering thread if you are rendering in the Screen code (in the appropriate method).

 

On an irrelevant note, almost everything in BufferBuilder as well as AtlasTexture (and a few other mentioned classes) has been deobfuscated on recent MCP mappings. You should consider updating your mappings if you find them obfuscated on your setup.

  • Like 1
  • Thanks 1

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Posted
9 hours ago, DavidM said:

Few things to add:

1. You might want to check out SpriteUploader.

2. Check out AbstractGui::blit. It is the built-in method of rendering sprites with UV coords.

3. You won't need to check on for the rendering thread if you are rendering in the Screen code (in the appropriate method).

 

On an irrelevant note, almost everything in BufferBuilder as well as AtlasTexture (and a few other mentioned classes) has been deobfuscated on recent MCP mappings. You should consider updating your mappings if you find them obfuscated on your setup.

Oh, hey! In the process of updating my MCP mappings I noticed that for some reason Forge was claiming it was 1.15 (and downloading Minecraft 1.15), but it was using the 1.14 MCP mappings, so I had no idea that AbstractGui#blit had a version which took a TextureAtlasSprite.

 

So SpriteUploader seems to do exactly what I was originally expecting, with the added bonus of being able to be called whenever the resource engine reloads. That is very useful, although SpriteUploader#getSprite is set to protected, limiting its use pretty drasically IMHO. I assume the idea is that I would ask it to bind the texture atlas and then access the atlas directly from there.

 

As far as checking the rendering thread, I figured that the relevant methods would always be called on the rendering thread, but since bindTexture does it I figured it wouldn't hurt.

 

All of this has been extremely helpful, thanks a bunch!

Posted

Might also be worth looking at how vanilla handles the Advancements screen.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted
6 minutes ago, Draco18s said:

Might also be worth looking at how vanilla handles the Advancements screen.

I hadn't even thought of that, but since it would have to grab each advancement's icon as it draws, that could be very useful. Good call

Posted (edited)

Okay, having taken a bit to mess around with everything, I think I understand how I need to go about this. I did notice that SpriteUploader doesn't seem to have any markers for being called on reload, is there some way I should be registering it with the resource manager, or does it take care of that itself somewhere that I'm not seeing? There certainly doesn't appear to be any events I can attach to for registration or to manually call reload(), nor does TextureManager provide any such functionality.

Edited by Blazer Nitrox
Minor correction in wording
Posted (edited)

What stops you from knowing a node's position at runtime? Try to separate the concept of a node to anything related to your skill tree.

 

If you can calculate/determine what skills a player knows at any time from player capabilities, access it from the GUI. Determine a pre-determined layout of the tree, like where a node will go (the physical node, not the skills attached to it) and where to draw arrows pointing to it. For example, if you have 40 skills in the tree, you could set up a lookup array of size 40 to determine if a node representing a particular skill should be drawn or not. This is the background layer. And in the foreground, overlay your skill name, description, etc over their respective positions. Then within the various mouse action methods, access this array whether it should detect player hovers/clicks there or not.

 

This is something similar I've done, if a player doesn't want to have the third row for example, the node and the arrows pointing to it aren't drawn. Notice that some concessions needed to be made, like the length of the names (I've formatted the string so it's inside the node, but anything longer will make the text go over the boundary). But if I wanted to, I could even vary the size of each node and have a lookup table that tells me how large a certain node needs to be for a certain skill name.

 

Edit: All a node should be is a quad with a texture, nothing more. You shouldn't need to register anything as David said

 

image.png.0ed0a18e21ed9ac582756a83bf9dbe71.png

Edited by Turtledove
Posted
6 minutes ago, Turtledove said:

What stops you from knowing a node's position at runtime? Try to separate the concept of a node to anything related to your skill tree.

 

If you can calculate/determine what skills a player knows at any time from player capabilities, access it from the GUI. Determine a pre-determined layout of the tree, like where a node will go (the physical node, not the skills attached to it) and where to draw arrows pointing to it. For example, if you have 40 skills in the tree, you could set up a lookup array of size 40 to determine if a node representing a particular skill should be drawn or not. This is the background layer. And in the foreground, overlay your skill name, description, etc over their respective positions. Then within the various mouse action methods, access this array whether it should detect player hovers/clicks there or not.

 

This is something similar I've done, if a player doesn't want to have the third row for example, the node and the arrows pointing to it aren't drawn. Notice that some concessions needed to be made, like the length of the names (I've formatted the string so it's inside the node, but anything longer will make the text go over the boundary). But if I wanted to, I could even vary the size of each node and have a lookup table that tells me how large a certain node needs to be for a certain skill name.

 

image.png.0ed0a18e21ed9ac582756a83bf9dbe71.png

Under normal circumstances I would have done it that way, however I know that over time I'm going to be adding nodes to the tree (and potentially letting other mods add nodes to the tree as well), so I want to be able to programmatically add the nodes to the tree, meaning I won't know their textures or positions until they are registered. While it does mean I have to do more work in building the screen, theoretically it will also allow me to simply register a new node without having to modify the tree itself. It would also potentially allow me to create a tool later on which allows me to visually build the tree out and then simply export it as a JSON which the mod could then load, although it'll be a looong time before I pursue that route.

Posted
5 minutes ago, Blazer Nitrox said:

so I want to be able to programmatically add the nodes to the tree, meaning I won't know their textures or positions until they are registered

Again, look at the advancements screen. It positions every advancement dynamically based on the advancements found during resource loading and they never overlap or have lines cross.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted
43 minutes ago, Turtledove said:

Edit: All a node should be is a quad with a texture, nothing more. You shouldn't need to register anything as David said

OP wants to use the registry system for skill tree nodes so that he can manage the skill categories easier later on as well as allow other mods to add theirs. The nodes only manages how the tree is displayed; OP uses the registry system for the skill categories, not the actual icon (which can be stored in the registry entry for simplicity given that there is a one-to-one mapping for all of the categories).

 

 

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Posted (edited)

@Draco18s I took another look at the advancements screen and realized I was a complete moron lol. I had been avoiding doing a proper parent/child hierarchy because I want the player to be able to loop around the tree like so:

image.png.ac79200ae962b137e563f795d48e9f31.png

(excuse the terrible quality, I threw this together in like 2 minutes in Paint because I didn't feel like waiting for GIMP to load)

At the time, I had thought that a parent/child hierarchy wouldn't be capable of this because the last node in the sequence (top right) wouldn't have it's parent node active, and so it would think that it couldn't be activated. And I only just now realized that when the player tries to activate the node I could just... check if any child nodes are activated as well.
 

All of this is to say that I've been a miserable fool who wasted his time because his solution was only half-baked. Nice.

Edited by Blazer Nitrox
Posted (edited)
34 minutes ago, Blazer Nitrox said:

I had thought that a parent/child hierarchy wouldn't be capable of this because the last node in the sequence (top right) wouldn't have it's parent node active, and so it would think that it couldn't be activated. And I only just now realized that when the player tries to activate the node I could just... check if any child nodes are activated as well.

If your tree is not a tree (as in data structure; in your case it resembles a graph), then there is no need to separate the parent and child. Instead of keeping track of parent and children, create a set for all other connect nodes (given that direction does not matter in your skill graph).

Edited by DavidM

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Posted
2 minutes ago, DavidM said:

If your tree is not a tree (as in data structure; in your case it resembles a graph), then there is no need to separate the parent and child. Instead of keeping track of parent and children, create a set for all other connect nodes.

Right, and that's how I've been doing it. I think you actually might have touched on the underlying problem... data structures have always kind of confused me for some reason, and I think part of the problem is in some ways I'm still thinking of this as a tree when in reality what I need is a graph, just with a pseudo-root node.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Try this build: https://www.curseforge.com/minecraft/mc-mods/dynamictrees/files/5978131
    • Does it work without betternether?
    • Try different builds of Rubidium/Embeddium or Oculus
    • Add crash-reports with sites like https://mclo.gs/ Maybe an issue with modernfix
    • [02:17:17] [main/INFO]: Loading ImmediateWindowProvider fmlearlywindow [02:17:17] [main/INFO]: Trying GL version 4.6 [02:17:17] [main/INFO]: Requested GL version 4.6 got version 4.6 [02:17:17] [main/INFO]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=union:/C:/Users/Sami/curseforge/minecraft/Install/libraries/org/spongepowered/mixin/0.8.5/mixin-0.8.5.jar%23100!/ Service=ModLauncher Env=CLIENT [02:17:17] [pool-2-thread-1/INFO]: GL info: NVIDIA GeForce RTX 2070 SUPER/PCIe/SSE2 GL version 4.6.0 NVIDIA 566.36, NVIDIA Corporation [02:17:17] [main/INFO]: Found mod file [1.20.1-forge]-Epic-Knights-9.21.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file [1.20.1-forge]-Epic-Knights-Ice-and-Fire-1.1.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file [1.20.1-forge]-Epic-Knights-Ores-and-Alloys-1.1.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file [1.20.x-forge]-Epic-Knights-Addon-1.22.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file [1.20.x-forge]-Epic-Knights-Antique-Legacy-1.8.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file [1.20.x-forge]-Epic-Knights-Slavic-Armory-1.5.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file alexsmobs-1.22.9.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file almanac-1.20.x-forge-1.0.2.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file AmbientSounds_FORGE_v6.1.4_mc1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file amendments-1.20-1.2.14.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file appleskin-forge-mc1.20.1-2.5.1.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file architectury-9.2.14-forge.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file astikorcarts-1.20.1-1.1.8.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file bettercombat-forge-1.8.6+1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file biomemakeover-FORGE-1.20.1-1.11.4.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file BiomesOPlenty-1.20.1-18.0.0.592.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file blockui-1.20.1-1.0.156-RELEASE.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file Bookshelf-Forge-1.20.1-20.2.13.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file Bountiful-6.0.4+1.20.1-forge.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file carryon-forge-1.20.1-2.1.2.7.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file citadel-2.6.1-1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file cloth-config-11.1.136-forge.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file Clumps-forge-1.20.1-12.0.0.4.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file comforts-forge-6.4.0+1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file Controlling-forge-1.20.1-12.0.2.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file Corgilib-Forge-1.20.1-4.0.3.3.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file CreativeCore_FORGE_v2.12.30_mc1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file cristellib-1.1.6-forge.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file cupboard-1.20.1-2.7.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file curios-forge-5.11.1+1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file curiosbackslot-4.0.6-nc.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file decorative_blocks-forge-1.20.1-4.1.3.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file domum_ornamentum-1.20.1-1.0.186-RELEASE-universal.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file dragonseeker-1.2.0-1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file dungeons_enhanced-1.20.1-5.3.0.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file embeddium-0.3.31+mc1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file EnchantmentDescriptions-Forge-1.20.1-17.1.19.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file entityculling-forge-1.7.2-mc1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file Explorify v1.6.2 f10-48.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file Fallingleaves-1.20.1-2.1.0.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file FarmersDelight-1.20.1-1.2.6.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file ferritecore-6.0.1-forge.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file framework-forge-1.20.1-0.7.12.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file geckolib-forge-1.20.1-4.7.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file Geophilic v3.2 f15-61.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file GlitchCore-forge-1.20.1-0.0.1.1.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file goblintraders-forge-1.20.1-1.9.3.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file gravestone-forge-1.20.1-1.0.24.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file guardvillagers-1.20.1-1.6.10.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file handcrafted-forge-1.20.1-3.0.6.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file iceandfire-2.1.13-1.20.1-beta-5.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file immersive_weathering-1.20.1-2.0.3-forge.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file Jade-1.20.1-Forge-11.12.2.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file jei-1.20.1-forge-15.12.2.51.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file JustEnoughResources-1.20.1-1.4.0.247.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file Kambrik-6.1.1+1.20.1-forge.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file Kobolds-2.12.0.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file kotlinforforge-4.11.0-all.jar of type LIBRARY with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file kubejs-forge-2001.6.5-build.16.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file LeavesBeGone-v8.0.0-1.20.1-Forge.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file leawind_third_person-v2.2.0-mc1.20-1.20.1-forge.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file letmedespawn-1.20.x-forge-1.4.4.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file letsdo-API-forge-1.2.15-forge.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file letsdo-bakery-forge-1.1.15.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file letsdo-brewery-forge-1.1.9.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file letsdo-candlelight-forge-1.2.13.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file letsdo-meadow-forge-1.3.19.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file letsdo-vinery-forge-1.4.37.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file libraryferret-forge-1.20.1-4.0.0.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file map_atlases-1.20-6.0.12.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file mcw-bridges-3.0.0-mc1.20.1forge.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file mcw-doors-1.1.1forge-mc1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file mcw-fences-1.1.2-mc1.20.1forge.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file mcw-furniture-3.3.0-mc1.20.1forge.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file mcw-lights-1.1.0-mc1.20.1forge.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file mcw-paintings-1.0.5-1.20.1forge.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file mcw-paths-1.0.5-1.20.1forge.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file mcw-roofs-2.3.1-mc1.20.1forge.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file mcw-trapdoors-1.1.4-mc1.20.1forge.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file mcw-windows-2.3.0-mc1.20.1forge.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file medieval_boomsticks-1.01.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file modernfix-forge-5.20.0+mc1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file moonlight-1.20-2.13.51-forge.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file MouseTweaks-forge-mc1.20.1-2.25.1.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file mowziesmobs-1.6.5.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file NaturesCompass-1.20.1-1.11.2-forge.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file oculus-mc1.20.1-1.8.0.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file Oh-The-Trees-Youll-Grow-forge-1.20.1-1.3.4.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file Patchouli-1.20.1-84-FORGE.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file Placebo-1.20.1-8.6.2.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file player-animation-lib-forge-1.0.2-rc1+1.20.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file polymorph-forge-0.49.8+1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file PuzzlesLib-v8.1.25-1.20.1-Forge.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file realmrpg_seadwellers_2.9.9_forge_1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file realmrpg_skeletons-1.1.0-forge-1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file recruits-1.20.1-1.12.3.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file resourcefullib-forge-1.20.1-2.1.29.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file rhino-forge-2001.2.3-build.6.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file right-click-harvest-3.2.3+1.20.1-forge.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file rubidium-extra-0.5.4.4+mc1.20.1-build.131.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file Searchables-forge-1.20.1-1.0.3.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file SereneSeasons-forge-1.20.1-9.1.0.0.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file SimplyDesirePaths-1.0.0-forge-1.20.1.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file smallships-forge-1.20.1-2.0.0-b1.4.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file snowundertrees-1.20.1-1.4.6.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file spark-1.10.53-forge.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file structure_gel-1.20.1-2.16.2.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file structurize-1.20.1-1.0.742-RELEASE.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file supplementaries-1.20-3.1.11.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file TerraBlender-forge-1.20.1-3.0.1.7.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file Terralith_1.20.x_v2.5.4.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file Towns-and-Towers-1.12-Fabric+Forge.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file weaponmaster_ydm-forge-1.20.1-4.2.3.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/INFO]: Found mod file zmedievalmusic-1.20.1-2.1.jar of type MOD with provider {mods folder locator at C:\Users\Sami\curseforge\minecraft\Instances\bals 2\mods} [02:17:17] [main/WARN]: Mod file C:\Users\Sami\curseforge\minecraft\Install\libraries\net\minecraftforge\fmlcore\1.20.1-47.3.12\fmlcore-1.20.1-47.3.12.jar is missing mods.toml file [02:17:17] [main/WARN]: Mod file C:\Users\Sami\curseforge\minecraft\Install\libraries\net\minecraftforge\javafmllanguage\1.20.1-47.3.12\javafmllanguage-1.20.1-47.3.12.jar is missing mods.toml file [02:17:17] [main/WARN]: Mod file C:\Users\Sami\curseforge\minecraft\Install\libraries\net\minecraftforge\lowcodelanguage\1.20.1-47.3.12\lowcodelanguage-1.20.1-47.3.12.jar is missing mods.toml file [02:17:17] [main/WARN]: Mod file C:\Users\Sami\curseforge\minecraft\Install\libraries\net\minecraftforge\mclanguage\1.20.1-47.3.12\mclanguage-1.20.1-47.3.12.jar is missing mods.toml file [02:17:17] [main/INFO]: Found mod file fmlcore-1.20.1-47.3.12.jar of type LIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.MinecraftLocator@33cbfa57 [02:17:17] [main/INFO]: Found mod file javafmllanguage-1.20.1-47.3.12.jar of type LANGPROVIDER with provider net.minecraftforge.fml.loading.moddiscovery.MinecraftLocator@33cbfa57 [02:17:17] [main/INFO]: Found mod file lowcodelanguage-1.20.1-47.3.12.jar of type LANGPROVIDER with provider net.minecraftforge.fml.loading.moddiscovery.MinecraftLocator@33cbfa57 [02:17:17] [main/INFO]: Found mod file mclanguage-1.20.1-47.3.12.jar of type LANGPROVIDER with provider net.minecraftforge.fml.loading.moddiscovery.MinecraftLocator@33cbfa57 [02:17:17] [main/INFO]: Found mod file client-1.20.1-20230612.114412-srg.jar of type MOD with provider net.minecraftforge.fml.loading.moddiscovery.MinecraftLocator@33cbfa57 [02:17:17] [main/INFO]: Found mod file forge-1.20.1-47.3.12-universal.jar of type MOD with provider net.minecraftforge.fml.loading.moddiscovery.MinecraftLocator@33cbfa57 [02:17:18] [main/WARN]: Attempted to select two dependency jars from JarJar which have the same identification: Mod File:  and Mod File: . Using Mod File: [02:17:18] [main/INFO]: Found 16 dependencies adding them to mods collection [02:17:18] [main/INFO]: Found mod file mixinextras-forge-0.4.1.jar of type GAMELIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@475646d4 [02:17:18] [main/INFO]: Found mod file mixinsquared-forge-0.1.2-beta.5.jar of type GAMELIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@475646d4 [02:17:18] [main/INFO]: Found mod file jankson-1.2.3.jar of type GAMELIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@475646d4 [02:17:18] [main/INFO]: Found mod file yabn-1.0.3.jar of type GAMELIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@475646d4 [02:17:18] [main/INFO]: Found mod file kfflang-4.11.0.jar of type LANGPROVIDER with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@475646d4 [02:17:18] [main/INFO]: Found mod file spectrelib-forge-0.13.17+1.20.1.jar of type MOD with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@475646d4 [02:17:18] [main/INFO]: Found mod file taniwha-forge-1.20.0-5.4.4.jar of type MOD with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@475646d4 [02:17:18] [main/INFO]: Found mod file MixinSquared-0.1.2-beta.5.jar of type GAMELIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@475646d4 [02:17:18] [main/INFO]: Found mod file mclib-20.jar of type GAMELIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@475646d4 [02:17:18] [main/INFO]: Found mod file puzzlesaccessapi-forge-8.0.7.jar of type MOD with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@475646d4 [02:17:18] [main/INFO]: Found mod file kfflib-4.11.0.jar of type GAMELIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@475646d4 [02:17:18] [main/INFO]: Found mod file kffmod-4.11.0.jar of type MOD with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@475646d4 [02:17:18] [main/INFO]: Found mod file bytecodecs-1.0.2.jar of type GAMELIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@475646d4 [02:17:18] [main/INFO]: Found mod file NanoLiveConfig-1.2.1.jar of type GAMELIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@475646d4 [02:17:18] [main/INFO]: Found mod file MixinExtras-0.4.1.jar of type GAMELIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@475646d4 [02:17:18] [main/INFO]: Found mod file jcpp-1.4.14.jar of type GAMELIBRARY with provider net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator@475646d4 [02:17:20] [main/INFO]: Compatibility level set to JAVA_17 [02:17:20] [main/INFO]: Launching target 'forgeclient' with arguments [--version, forge-47.3.12, --gameDir, C:\Users\Sami\curseforge\minecraft\Instances\bals 2, --assetsDir, C:\Users\Sami\curseforge\minecraft\Install\assets, --uuid, be779ab0d8dd4d16a1f1aa5b21c9f2f3, --username, Kaiserwaffe, --assetIndex, 5, --accessToken, ????????, --clientId, ODk4Y2EyYTAtMTA2OC00MmYwLThiOGItMGU1MzRlMDdjZjQ2, --xuid, 2535449048843979, --userType, msa, --versionType, release, --width, 854, --height, 480, --quickPlayPath, C:\Users\Sami\curseforge\minecraft\Install\quickPlay\java\1737271034449.json] [02:17:20] [main/INFO]: Loaded configuration file for ModernFix 5.20.0+mc1.20.1: 86 options available, 0 override(s) found [02:17:20] [main/INFO]: Applying Nashorn fix [02:17:20] [main/INFO]: Applied Forge config corruption patch [02:17:20] [main/INFO]: Loaded configuration file for Embeddium: 167 options available, 3 override(s) found [02:17:20] [main/INFO]: Searching for graphics cards... [02:17:20] [main/INFO]: Found graphics card: GraphicsAdapterInfo[vendor=NVIDIA, name=NVIDIA GeForce RTX 2070 SUPER, version=DriverVersion=32.0.15.6636] [02:17:20] [main/WARN]: Embeddium has applied one or more workarounds to prevent crashes or other issues on your system: [NVIDIA_THREADED_OPTIMIZATIONS] [02:17:20] [main/WARN]: This is not necessarily an issue, but it may result in certain features or optimizations being disabled. You can sometimes fix these issues by upgrading your graphics driver. [02:17:20] [main/WARN]: Reference map 'handcrafted-forge-1.20.1-forge-refmap.json' for handcrafted.mixins.json could not be read. If this is a development environment you can ignore this message [02:17:20] [main/WARN]: Reference map 'smallships-forge-refmap.json' for smallships.mixins.json could not be read. If this is a development environment you can ignore this message [02:17:20] [main/WARN]: Reference map 'CuriosBackSlot.refmap.json' for curiosbackslot.mixins.json could not be read. If this is a development environment you can ignore this message [02:17:20] [main/WARN]: Reference map 'mixins.epic_knights_ice_and_fire.refmap.json' for mixins.epic_knights_ice_and_fire.json could not be read. If this is a development environment you can ignore this message [02:17:20] [main/INFO]: Loaded configuration file for Sodium Extra: 35 options available, 0 override(s) found [02:17:20] [main/INFO]: Loading 121 mods:     - alexsmobs 1.22.9     - almanac 1.0.2     - ambientsounds 6.1.4     - amendments 1.20-1.2.14     - antiquelegacy 1.8     - appleskin 2.5.1+mc1.20.1     - architectury 9.2.14     - astikorcarts 1.1.8     - bakery 1.1.15     - bettercombat 1.8.6+1.20.1     - biomemakeover 1.20.1-1.11.4         \-- taniwha 1.20.0-5.4.4     - biomesoplenty 18.0.0.592     - blockui 1.20.1-1.0.156-RELEASE     - bookshelf 20.2.13     - bountiful 6.0.4+1.20.1     - brewery 1.1.9     - candlelight 1.2.13     - carryon 2.1.2.7     - citadel 2.6.1     - cloth_config 11.1.136     - clumps 12.0.0.4     - comforts 6.4.0+1.20.1     - controlling 12.0.2     - corgilib 4.0.3.3     - creativecore 2.12.30     - cristellib 1.1.6     - cupboard 1.20.1-2.7     - curios 5.11.1+1.20.1     - curiosbackslot 4.0.6-nc     - decorative_blocks 4.1.3     - doapi 1.2.15         \-- terraform 7.0.1     - domum_ornamentum 1.20.1-1.0.186-RELEASE     - dragonseeker 1.2.0-1.20.1     - dungeons_enhanced 5.3.0     - embeddium 0.3.31+mc1.20.1         \-- rubidium 0.7.1     - embeddium_extra 0.5.4.4+mc1.20.1-build.131     - enchdesc 17.1.19     - entityculling 1.7.2     - epic_knights_ice_and_fire 1.0     - epic_knights_ores_and_alloys 1.1     - explorify 1.6.2     - fallingleaves 2.1.0     - farmersdelight 1.20.1-1.2.6     - ferritecore 6.0.1     - forge 47.3.12     - framework 0.7.12     - geckolib 4.7     - geophilic 3.2     - glitchcore 0.0.1.1     - goblintraders 1.9.3     - gravestone 1.20.1-1.0.24     - guardvillagers 1.20.1-1.6.10     - handcrafted 3.0.6     - iceandfire 2.1.13-1.20.1     - immersive_weathering 1.20.1-2.0.3     - jade 11.12.2+forge     - jei 15.12.2.51     - jeresources 1.4.0.247     - kambrik 6.1.1+1.20.1     - kobolds 2.12.0     - kotlinforforge 4.11.0     - kubejs 2001.6.5-build.16     - leavesbegone 8.0.0     - leawind_third_person 2.2.0     - letmedespawn 1.4.4     - libraryferret 4.0.0     - magistuarmory 9.21     - magistuarmoryaddon 1.22     - map_atlases 1.20-6.0.12         \-- mixinextras 0.4.1     - mcwbridges 3.0.0     - mcwdoors 1.1.1     - mcwfences 1.1.2     - mcwfurnitures 3.3.0     - mcwlights 1.1.0     - mcwpaintings 1.0.5     - mcwpaths 1.0.5     - mcwroofs 2.3.1     - mcwtrpdoors 1.1.4     - mcwwindows 2.3.0     - meadow 1.3.19         \-- mixinsquared 0.1.2-beta.5     - medieval_boomsticks 1.01     - medievalmusic 1.20.1-2.1     - minecraft 1.20.1     - modernfix 5.20.0+mc1.20.1     - moonlight 1.20-2.13.51     - mousetweaks 2.25.1     - mowziesmobs 1.6.4     - naturescompass 1.20.1-1.11.2-forge     - oculus 1.8.0     - ohthetreesyoullgrow 1.20.1-1.3.4     - patchouli 1.20.1-84-FORGE     - paths 1.0.0     - placebo 8.6.2     - playeranimator 1.0.2-rc1+1.20     - polymorph 0.49.8+1.20.1         \-- spectrelib 0.13.17+1.20.1     - puzzleslib 8.1.25         \-- puzzlesaccessapi 8.0.7     - realmrpg_skeletons 1.1.0     - recruits 1.12.3     - resourcefullib 2.1.29     - rhino 2001.2.3-build.6     - rightclickharvest 3.2.3+1.20.1-forge     - seadwellers 2.9.9     - searchables 1.0.3     - sereneseasons 9.1.0.0     - slavicarmory 1.5     - smallships 2.0.0-b1.4     - snowundertrees 1.4.6     - spark 1.10.53     - structure_gel 2.16.2     - structurize 1.20.1-1.0.742-RELEASE     - supplementaries 1.20-3.1.11     - t_and_t 0.0NONE     - terrablender 3.0.1.7     - terralith 2.5.4     - vinery 1.4.37     - weaponmaster_ydm 4.2.3 [02:17:20] [main/WARN]: Reference map 'cristellib-forge-refmap.json' for cristellib.mixins.json could not be read. If this is a development environment you can ignore this message [02:17:20] [main/INFO]: Patching IForgeItemStack#getEnchantmentLevel [02:17:20] [main/INFO]: Patching IForgeItemStack#getEnchantmentLevel [02:17:21] [main/WARN]: Error loading class: net/raphimc/immediatelyfast/feature/map_atlas_generation/MapAtlasTexture (java.lang.ClassNotFoundException: net.raphimc.immediatelyfast.feature.map_atlas_generation.MapAtlasTexture) [02:17:21] [main/WARN]: Error loading class: mekanism/client/render/entity/RenderFlame (java.lang.ClassNotFoundException: mekanism.client.render.entity.RenderFlame) [02:17:21] [main/WARN]: Error loading class: mekanism/client/render/armor/MekaSuitArmor (java.lang.ClassNotFoundException: mekanism.client.render.armor.MekaSuitArmor) [02:17:21] [main/WARN]: Error loading class: mezz/modnametooltip/TooltipEventHandler (java.lang.ClassNotFoundException: mezz.modnametooltip.TooltipEventHandler) [02:17:21] [main/WARN]: Error loading class: me/shedaniel/rei/impl/client/ClientHelperImpl (java.lang.ClassNotFoundException: me.shedaniel.rei.impl.client.ClientHelperImpl) [02:17:21] [main/WARN]: Error loading class: twilightforest/TFMagicMapData$TFMapDecoration (java.lang.ClassNotFoundException: twilightforest.TFMagicMapData$TFMapDecoration) [02:17:22] [main/WARN]: Force-disabling mixin 'features.render.world.sky.WorldRendererMixin' as rule 'mixin.features.render.world.sky' (added by mods [oculus]) disables it and children [02:17:22] [main/WARN]: Force-disabling mixin 'features.render.world.sky.ClientWorldMixin' as rule 'mixin.features.render.world.sky' (added by mods [oculus]) disables it and children [02:17:22] [main/WARN]: Force-disabling mixin 'features.render.world.sky.BackgroundRendererMixin' as rule 'mixin.features.render.world.sky' (added by mods [oculus]) disables it and children [02:17:22] [main/WARN]: Force-disabling mixin 'features.render.gui.font.GlyphRendererMixin' as rule 'mixin.features.render.gui.font' (added by mods [oculus]) disables it and children [02:17:22] [main/WARN]: Force-disabling mixin 'features.render.gui.font.FontSetMixin' as rule 'mixin.features.render.gui.font' (added by mods [oculus]) disables it and children [02:17:22] [main/WARN]: Force-disabling mixin 'features.render.entity.shadows.EntityRenderDispatcherMixin' as rule 'mixin.features.render.entity' (added by mods [oculus]) disables it and children [02:17:22] [main/WARN]: Force-disabling mixin 'features.render.entity.remove_streams.ModelPartMixin' as rule 'mixin.features.render.entity' (added by mods [oculus]) disables it and children [02:17:22] [main/WARN]: Force-disabling mixin 'features.render.entity.remove_streams.HierarchicalModelMixin' as rule 'mixin.features.render.entity' (added by mods [oculus]) disables it and children [02:17:22] [main/WARN]: Force-disabling mixin 'features.render.entity.fast_render.ModelPartMixin' as rule 'mixin.features.render.entity' (added by mods [oculus]) disables it and children [02:17:22] [main/WARN]: Force-disabling mixin 'features.render.entity.fast_render.CuboidMixin' as rule 'mixin.features.render.entity' (added by mods [oculus]) disables it and children [02:17:22] [main/WARN]: Force-disabling mixin 'features.render.entity.cull.EntityRendererMixin' as rule 'mixin.features.render.entity' (added by mods [oculus]) disables it and children [02:17:22] [main/INFO]: Initializing MixinExtras via com.llamalad7.mixinextras.service.MixinExtrasServiceImpl(version=0.4.1). [02:17:22] [main/INFO]: Patching IForgeItemStack#getEnchantmentLevel [02:17:22] [main/INFO]: Patching IForgeItemStack#getEnchantmentLevel [02:17:22] [main/WARN]: Static binding violation: PRIVATE @Overwrite method m_216202_ in modernfix-forge.mixins.json:perf.tag_id_caching.TagOrElementLocationMixin cannot reduce visibiliy of PUBLIC target method, visibility will be upgraded. [02:17:23] [pool-4-thread-1/INFO]: ModernFix reached bootstrap stage (9.268 s after launch) [02:17:23] [pool-4-thread-1/WARN]: @Final field delegatesByName:Ljava/util/Map; in modernfix-forge.mixins.json:perf.forge_registry_alloc.ForgeRegistryMixin should be final [02:17:23] [pool-4-thread-1/WARN]: @Final field delegatesByValue:Ljava/util/Map; in modernfix-forge.mixins.json:perf.forge_registry_alloc.ForgeRegistryMixin should be final [02:17:24] [pool-4-thread-1/INFO]: Vanilla bootstrap took 968 milliseconds [02:17:24] [pool-4-thread-1/INFO]: Patching IForgeItemStack#getEnchantmentLevel [02:17:24] [pool-4-thread-1/INFO]: Patching IForgeItemStack#getEnchantmentLevel
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.