Jump to content

A suggestion about automating object registration


ZDoctor
 Share

Recommended Posts

Registering items/blocks/etc is a real hassle, and usually big mods add their own support for registering a bunch of items. Which can be broken with an update. Perhaps it would be better if forge automated that process instead. I worked on such a system that may help.

 

For some time I worked on a mode called LazyModder and now LazyLibrary. The goal of the mod was to make modding easier for modders by handling a lot of the repetitive stuff when it comes registration of items/blocks/entities/etc.

 

I was successful and even made a few mods that use the lib, but I think it would be better if it was built in. I will explain a few of the classes and implementation could be as simple as adding all the classes so modders can have the option of using them, or just adding the methods, interfaces, etc directly to the item class. I am a proponent of the former option.

 

My library adds several classes on which others are built upon and has 2 classes dedicated for handling registration of the objects and their models. With an additional class dedicated to handling sorting the objects for registration and is the parent of the last two classes so that register objects are more readily available (similar to a proxy).

 

The EasyRegistry(GitHub) class is has a register method that takes in an IAutoRegister. These classes should automatically register themselves here and modders can do it manually if they like. The RegistryHandler(GitHub) class subscribes to the registration events and registers the appropriate objects to their registry. The ModelRegistryHandler(GitHub) class subscribes to the relevant Model Registration events and handles registering block/item/entity models along with some helper methods for binding TESR and living entity models.

 

The EasyItem(GitHub) class extends Item and handles its own registration. It adds support for subtypes (which are also automatically registered along with their models) and supports custom names based on meta(subtypes). It can even take in an item as an argument and automatically register that item as well. The EasyBlock(GitHub) class is similar to the item class. It extends the block class, has the same constructors and will automatically create an ItemBlock and register that. It also supports changing the ItemBlock as well. The EasyTileEntityBlock(GitHub) class extends EasyBlock(GitHub) and implements ITileEntity and adds default implementations that can be overridden.

 

Finally, the EasyLivingEntity(GitHub) class adds a few default values for entities (tracking range, send velocity update and update frequency; I'm pretty sure I used the values of an IronGolem) and adds egg support by just telling it what color the egg is or calling setHasEgg and passing true (default colors are black). It has a method getRendererClass that will try to guess the renderer class name based on the given entity name and the package of the entity class following the format <Package>.<modId>.client.renderer.entity.Render + <entityName>. The player would have to make their own renderer class within the expected package and would need to link it to their model class.

 

Some code example:

MoTD(GitHub) adds 13 entities with eggs and with models in 13 lines. By passing their Entity classes(GitHub) and created their EntitiyRenderer(GitHub) which the EasyLivingEntity(GitHub) class was able to find by itself.

MOTDBlocks(GitHub) created several blocks that extended EasyBlock(GitHub) by just passing a name and material. And MOTDItems(GitHub) created several items by just passing a name and creative tab to BaseItem(GitHub) that extends EasyItem(GitHub).

 

My hope with the automation of registration is for modders to be able to focus on adding content rather than registering it and perhaps make updating mods easier. My library has a bunch of other classes as well, but these are the base classes I feel would be the easiest to implement. These changes only add code and is aimed to work with the system with no changes to that system needed. Adding these classes wouldn't break anything.

 

Link to comment
Share on other sites

Short answer: No

Long Answer: All of this fluf just causes modders to do things incorrectly. All your default values are wrong, and nobody will change them thus causing duplicated defaults all over the place. Auto-magical registration is just ASKING for things to be statically initialized which your examples are showing are the case. Which is something we've been crusading against for years because it one of the things that prevents mods from being hot swapable. Not to mention your little hack to swap the current mod for registration is bad. As it screws up override tracking as well as bypasses the warning about invalid registry names. At the end of the day, you are not saving any time/code. As you still have to initalize your mods SOMEWHERE {you're doing it in preinit, you SHOULD be doing it in the Register event} and your method promotes way to many bad habits and technical issues that we've been trying to get modders to fix for years.

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Patreon: http://www.patreon.com/lexmanos
Paypal: http://paypal.me/LexManos

BitCoin: 1Q8rWvUNMM2T1ZfDaFeeYQyVXtYoeT6tTn

Link to comment
Share on other sites

 

4 hours ago, LexManos said:

 As you still have to initalize your mods SOMEWHERE {you're doing it in preinit, you SHOULD be doing it in the Register event} and your method promotes way to many bad habits and technical issues that we've been trying to get modders to fix for years.

2

I don't quite understand what you mean by this. My mod/lib does not simply register in the preinit. It follows the same specifications that forge wants modders to follow. Modders can initialize items in the preInit, but in the background, my mod tracks these entries and waits for the appropriate registration event before registering them. What bad habits are you talking about? What technical issues?

 

4 hours ago, LexManos said:

All your default values are wrong, and nobody will change them thus causing duplicated defaults all over the place.

 

The only defaults I have is for living entities, and perhaps not many will change them unless they know what they are doing or what they are for. But I wouldn't call them wrong as they are based on vanilla values. Perhaps not all of them are at optimal values, but I personally don't know what are or how to determine them. And are you certain that these duplicate default will cause any problems? If so, why?

 

4 hours ago, LexManos said:

All of this fluf just causes modders to do things incorrectly.

1

I am not sure how it would cause modders to do things incorrectly. From my own personal experience, it is quite nice to just pass a few values and have everything handle for me. It makes debugging easier as I know what I can count on not being broken. What exactly would the be doing incorrectly? I would love to know, perhaps I can fix it.

 

4 hours ago, LexManos said:

Auto-magical registration is just ASKING for things to be statically initialized which your examples are showing are the case. Which is something we've been crusading against for years because it one of the things that prevents mods from being hot swapable.

4

I don't quite understand what you mean by this. Perhaps it's just my ignorance. I assume by "Auto-magical registration" you meant automatic registration. What do you mean having things statically initialized prevents mods from being hot-swappable? I'm no expert about hot swapping, so what does this have to do with anything? The way that Forge is now, you have to restart if you want to register a new item/block/etc and that is more of an issue with Minecraft's code if I am not mistaken. In my eclipse workspace, I've been able to run debug and change code (which as I understand it is hot-swapping the code) and it works as expected.

 

If forge wants to prevent modders from doing certain things, then I would assume a better alternative should be offered. My system isn't perfect, but I know for sure that it is a whole lot easier, consistent and maintainable than the current structure.

 

4 hours ago, LexManos said:

Not to mention your little hack to swap the current mod for registration is bad. As it screws up override tracking as well as bypasses the warning about invalid registry names. 

 

On what grounds do you claim this? My system is like a secretary to forge, so if you had to items or whatever that had the same modid and unlocalized name, it would not interfere with any errors forge would have with this. How does it screw up the tracking? It essentially tells forge, "hey here's an object that needs to be registered, and it's for this mod." No duplicate entry would be allowed.

 

Perhaps it is just that my code that the code that I have is a bit hard to parse. Perhaps I'll work on a smaller version so that only the registration is there as to not distract from the code. Is there something that I missed? I truly do want feedback. I am sure an automated registration system would be good for forge. Mods would be easier to maintain and sometimes can carry over to a new version of minecraft. At the very least something should be done about so that the greatest challenge to learning to mod Minecraft isn't just getting an item or block to show up in game.

 

Link to comment
Share on other sites

The way I automized my registrations:

  • Make a HashSet of Blocks/Items in your CommonProxy.
  • In your Block/Item constructor, add the current instance of the class to the HashSet. (ie. CommonProxy.BLOCKS.add(this);)
  • During RegistryEvent.Register, go through your HashSet and register each object (if we're talking about IForgeRegistryEntrys, otherwise register it during the preInit or init phase). Use a Stream, a for-loop, whatever you want.

The same applies to models and other client-side stuff.

Link to comment
Share on other sites

21 minutes ago, TheTrollguy_ said:

The way I automized my registrations:

  • Make a HashSet of Blocks/Items in your CommonProxy.
  •  In your Block/Item constructor, add the current instance of the class to the HashSet. (ie. CommonProxy.BLOCKS.add(this);)
  • During RegistryEvent.Register, go through your HashSet and register each object (if we're talking about IForgeRegistryEntrys, otherwise register it during the preInit or init phase). Use a Stream, a for-loop, whatever you want.

The same applies to models and other client-side stuff.

This approach screams "static initializers" and static initializers are bad. Just instantinate your blocks/items/whatever directly in the registry event. Not in a static initializer, not in FML events. You are also doing extra unnecessary work, think about it. Thirst you instantinate your stuff somewhere, then you add them to the set in the constructor, then you loop through the set in the event. That's at the very least 3 lines of code per block. Now think of the recommended approach. You instantinate your stuff directly in the registry event as an argument passed to register. That's one line of code per thing. With the recommended approach you are doing only 33% of the work.

Also CommonProxy makes no sense. Proxies are for separating sided only code. Common code goes whereever but your proxy.

  • Thanks 1
Link to comment
Share on other sites

1 minute ago, V0idWa1k3r said:

This approach screams "static initializers" and static initializers are bad. Just instantinate your blocks/items/whatever directly in the registry event. Not in a static initializer, not in FML events. You are also doing extra unnecessary work, think about it. Thirst you instantinate your stuff somewhere, then you add them to the set in the constructor, then you loop through the set in the event. That's at the very least 3 lines of code per block. Now think of the recommended approach. You instantinate your stuff directly in the registry event as an argument passed to register. That's one line of code per thing. With the recommended approach you are doing only 33% of the work.

Also CommonProxy makes no sense. Proxies are for separating sided only code. Common code goes whereever but your proxy.

 

Well, I never actually thought about that approach. Now that I really think about it, it does make a lot of sense. Thanks for the heads up! :)

Link to comment
Share on other sites

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
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.

 Share



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Issue with debugify mod. Check you have the latest version then contact the mod author.
    • Issue with valhelsia core. Others have said it is known to conflict with optifine.
    • org.spongepowered.asm.mixin.transformer.throwables.MixinTransformerError: An unexpected critical error was encountered   client crash report: https://privatebin.net/?0820f28670fb50d5#Dn7zTtAzQt2DUWtHBj8KjLYUukVJg1bbaDd2DWeb4Zfo
    • All mods worked perfectly before i installed optifine, but now it shows me this error after launching the game i Have this mods: Alexs mobs, Artifacts, Biomes o' Plenty, Citadel, Comforts, Grappling Hook Mod, mowzies mobs, Plus the end, Quark, Repurposed Structures, Serene Seasons, Terra Blender, twilight forest, Valhesia Structures, Yungs API, Yungs Better Dungeons, Yungs Better Mineshafts, Yungs Better Strongholds, Auto Reg Lib, Feature NBT Deadlock Be Gone, Valhesia Core, ExpandAbility, Cloth Config, Curios, GeckoLib, Optifine Here is the crash log: ---- Minecraft Crash Report ---- // You're mean. Time: 04/12/22 11:58 Description: Initializing game org.spongepowered.asm.mixin.transformer.throwables.MixinTransformerError: An unexpected critical error was encountered     at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:392) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}     at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:250) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}     at org.spongepowered.asm.service.modlauncher.MixinTransformationHandler.processClass(MixinTransformationHandler.java:131) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}     at org.spongepowered.asm.launch.MixinLaunchPluginLegacy.processClass(MixinLaunchPluginLegacy.java:131) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}     at cpw.mods.modlauncher.serviceapi.ILaunchPluginService.processClassWithFlags(ILaunchPluginService.java:156) ~[modlauncher-9.1.3.jar:9.1.3+9.1.3+main.9b69c82a] {}     at cpw.mods.modlauncher.LaunchPluginHandler.offerClassNodeToPlugins(LaunchPluginHandler.java:88) ~[modlauncher-9.1.3.jar:?] {}     at cpw.mods.modlauncher.ClassTransformer.transform(ClassTransformer.java:120) ~[modlauncher-9.1.3.jar:?] {}     at cpw.mods.modlauncher.TransformingClassLoader.maybeTransformClassBytes(TransformingClassLoader.java:50) ~[modlauncher-9.1.3.jar:?] {}     at cpw.mods.cl.ModuleClassLoader.readerToClass(ModuleClassLoader.java:110) ~[securejarhandler-1.0.3.jar:?] {}     at cpw.mods.cl.ModuleClassLoader.lambda$findClass$16(ModuleClassLoader.java:216) ~[securejarhandler-1.0.3.jar:?] {}     at cpw.mods.cl.ModuleClassLoader.loadFromModule(ModuleClassLoader.java:226) ~[securejarhandler-1.0.3.jar:?] {}     at cpw.mods.cl.ModuleClassLoader.findClass(ModuleClassLoader.java:216) ~[securejarhandler-1.0.3.jar:?] {}     at cpw.mods.cl.ModuleClassLoader.loadClass(ModuleClassLoader.java:132) ~[securejarhandler-1.0.3.jar:?] {}     at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?] {}     at net.minecraft.client.renderer.block.BlockRenderDispatcher.<init>(BlockRenderDispatcher.java:50) ~[client-1.18.2-20220404.173914-srg.jar%2380!/:?] {re:classloading,pl:accesstransformer:B,xf:OptiFine:default}     at net.minecraft.client.Minecraft.<init>(Minecraft.java:501) ~[client-1.18.2-20220404.173914-srg.jar%2380!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.main.Main.main(Main.java:169) ~[client-1.18.2-20220404.173914-srg.jar%2380!/:?] {re:classloading,pl:runtimedistcleaner:A}     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] {}     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] {}     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] {}     at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] {}     at net.minecraftforge.fml.loading.targets.CommonClientLaunchHandler.lambda$launchService$0(CommonClientLaunchHandler.java:31) ~[fmlloader-1.18.2-40.1.86.jar%2317!/:?] {}     at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-9.1.3.jar%235!/:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) [modlauncher-9.1.3.jar%235!/:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) [modlauncher-9.1.3.jar%235!/:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:106) [modlauncher-9.1.3.jar%235!/:?] {}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:77) [modlauncher-9.1.3.jar%235!/:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) [modlauncher-9.1.3.jar%235!/:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) [modlauncher-9.1.3.jar%235!/:?] {}     at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:149) [bootstraplauncher-1.0.0.jar:?] {} Caused by: org.spongepowered.asm.mixin.throwables.MixinApplyError: Mixin [valhelsia_core.mixins.json:client.ModelBlockRendererMixin] from phase [DEFAULT] in config [valhelsia_core.mixins.json] FAILED during APPLY     at org.spongepowered.asm.mixin.transformer.MixinProcessor.handleMixinError(MixinProcessor.java:636) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}     at org.spongepowered.asm.mixin.transformer.MixinProcessor.handleMixinApplyError(MixinProcessor.java:588) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}     at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:379) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}     ... 29 more Caused by: org.spongepowered.asm.mixin.injection.throwables.InvalidInjectionException: Critical injection failure: @ModifyVariable annotation on valhelsia_renderModelFaceFlat could not find any targets matching 'Lnet/minecraft/client/renderer/block/ModelBlockRenderer;m_111001_(Lnet/minecraft/world/level/BlockAndTintGetter;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/core/BlockPos;IIZLcom/mojang/blaze3d/vertex/PoseStack;Lcom/mojang/blaze3d/vertex/VertexConsumer;Ljava/util/List;Ljava/util/BitSet;)V' in net.minecraft.client.renderer.block.ModelBlockRenderer. Using refmap valhelsia_core.refmap.json [PREINJECT Applicator Phase -> valhelsia_core.mixins.json:client.ModelBlockRendererMixin -> Prepare Injections ->  -> localvar$zho000$valhelsia_renderModelFaceFlat(ILnet/minecraft/world/level/BlockAndTintGetter;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/core/BlockPos;)I -> Parse]     at org.spongepowered.asm.mixin.injection.struct.InjectionInfo.validateTargets(InjectionInfo.java:656) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}     at org.spongepowered.asm.mixin.injection.struct.InjectionInfo.findTargets(InjectionInfo.java:587) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}     at org.spongepowered.asm.mixin.injection.struct.InjectionInfo.readAnnotation(InjectionInfo.java:330) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}     at org.spongepowered.asm.mixin.injection.struct.InjectionInfo.<init>(InjectionInfo.java:316) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}     at org.spongepowered.asm.mixin.injection.struct.InjectionInfo.<init>(InjectionInfo.java:308) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}     at org.spongepowered.asm.mixin.injection.struct.ModifyVariableInjectionInfo.<init>(ModifyVariableInjectionInfo.java:45) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}     at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] {}     at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[?:?] {}     at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?] {}     at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[?:?] {}     at java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[?:?] {}     at org.spongepowered.asm.mixin.injection.struct.InjectionInfo$InjectorEntry.create(InjectionInfo.java:149) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}     at org.spongepowered.asm.mixin.injection.struct.InjectionInfo.parse(InjectionInfo.java:708) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}     at org.spongepowered.asm.mixin.transformer.MixinTargetContext.prepareInjections(MixinTargetContext.java:1311) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}     at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.prepareInjections(MixinApplicatorStandard.java:1042) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}     at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.applyMixin(MixinApplicatorStandard.java:393) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}     at org.spongepowered.asm.mixin.transformer.MixinApplicatorStandard.apply(MixinApplicatorStandard.java:325) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}     at org.spongepowered.asm.mixin.transformer.TargetClassContext.apply(TargetClassContext.java:383) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}     at org.spongepowered.asm.mixin.transformer.TargetClassContext.applyMixins(TargetClassContext.java:365) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}     at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:363) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}     ... 29 more A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Render thread Stacktrace:     at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:392) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}     at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:250) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}     at org.spongepowered.asm.service.modlauncher.MixinTransformationHandler.processClass(MixinTransformationHandler.java:131) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}     at org.spongepowered.asm.launch.MixinLaunchPluginLegacy.processClass(MixinLaunchPluginLegacy.java:131) ~[mixin-0.8.5.jar:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4] {}     at cpw.mods.modlauncher.serviceapi.ILaunchPluginService.processClassWithFlags(ILaunchPluginService.java:156) ~[modlauncher-9.1.3.jar:9.1.3+9.1.3+main.9b69c82a] {}     at cpw.mods.modlauncher.LaunchPluginHandler.offerClassNodeToPlugins(LaunchPluginHandler.java:88) ~[modlauncher-9.1.3.jar:?] {}     at cpw.mods.modlauncher.ClassTransformer.transform(ClassTransformer.java:120) ~[modlauncher-9.1.3.jar:?] {}     at cpw.mods.modlauncher.TransformingClassLoader.maybeTransformClassBytes(TransformingClassLoader.java:50) ~[modlauncher-9.1.3.jar:?] {}     at cpw.mods.cl.ModuleClassLoader.readerToClass(ModuleClassLoader.java:110) ~[securejarhandler-1.0.3.jar:?] {}     at cpw.mods.cl.ModuleClassLoader.lambda$findClass$16(ModuleClassLoader.java:216) ~[securejarhandler-1.0.3.jar:?] {}     at cpw.mods.cl.ModuleClassLoader.loadFromModule(ModuleClassLoader.java:226) ~[securejarhandler-1.0.3.jar:?] {}     at cpw.mods.cl.ModuleClassLoader.findClass(ModuleClassLoader.java:216) ~[securejarhandler-1.0.3.jar:?] {}     at cpw.mods.cl.ModuleClassLoader.loadClass(ModuleClassLoader.java:132) ~[securejarhandler-1.0.3.jar:?] {}     at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?] {}     at net.minecraft.client.renderer.block.BlockRenderDispatcher.<init>(BlockRenderDispatcher.java:50) ~[client-1.18.2-20220404.173914-srg.jar%2380!/:?] {re:classloading,pl:accesstransformer:B,xf:OptiFine:default}     at net.minecraft.client.Minecraft.<init>(Minecraft.java:501) ~[client-1.18.2-20220404.173914-srg.jar%2380!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} -- Initialization -- Details:     Modules:          ADVAPI32.dll:API base de Windows 32 avanzado:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         COMCTL32.dll:Biblioteca de controles de la experiencia del usuario:6.10 (WinBuild.160101.0800):Microsoft Corporation         CRYPT32.dll:Crypto API32:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         CRYPTBASE.dll:Base cryptographic API DLL:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         CRYPTSP.dll:Cryptographic Service Provider API:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         CoreMessaging.dll:Microsoft CoreMessaging Dll:10.0.22000.71 (WinBuild.160101.0800):Microsoft Corporation         CoreUIComponents.dll:Microsoft Core UI Components Dll:10.0.22000.132:Microsoft Corporation         DBGHELP.DLL:Windows Image Helper:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         DEVOBJ.dll:Device Information Set DLL:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         DNSAPI.dll:DLL de API de cliente DNS:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         GDI32.dll:GDI Client DLL:10.0.22000.832 (WinBuild.160101.0800):Microsoft Corporation         GLU32.dll:DLL de la biblioteca de programas de OpenGL:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         HID.DLL:Biblioteca de usuario de HID:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         IMM32.DLL:Multi-User Windows IMM32 API Client DLL:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         IPHLPAPI.DLL:API auxiliar para IP:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         KERNEL32.DLL:Archivo DLL de cliente API BASE de Windows NT:10.0.22000.708 (WinBuild.160101.0800):Microsoft Corporation         KERNELBASE.dll:Archivo DLL de cliente API BASE de Windows NT:10.0.22000.708 (WinBuild.160101.0800):Microsoft Corporation         MMDevApi.dll:API de MMDevice:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         MSASN1.dll:ASN.1 Runtime APIs:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         MSCTF.dll:Archivo DLL del servidor MSCTF:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         MpOav.dll:IOfficeAntiVirus Module:4.18.2210.6 (WinBuild.160101.0800):Microsoft Corporation         NSI.dll:NSI User-mode interface DLL:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         NTASN1.dll:Microsoft ASN.1 API:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         Ole32.dll:Microsoft OLE para Windows:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         OleAut32.dll:OLEAUT32.DLL:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         OpenAL.dll         PSAPI.DLL:Process Status Helper:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         Pdh.dll:Ayudante de los datos de rendimiento DLL de Windows:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         RPCRT4.dll:Tiempo de ejecución de llamada a procedimiento remoto:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         SETUPAPI.DLL:API de instalación de Windows:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         SHCORE.dll:SHCORE:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         SHELL32.dll:Archivo DLL común del shell de Windows:10.0.22000.708 (WinBuild.160101.0800):Microsoft Corporation         UMPDC.dll:User Mode Power Dependency Coordinator:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         USER32.dll:Archivo DLL de cliente API USER de Windows multiusuario:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         USERENV.dll:Userenv:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         VCRUNTIME140.dll:Microsoft® C Runtime Library:14.29.30133.0 built by: vcwrkspc:Microsoft Corporation         VERSION.dll:Version Checking and File Installation Libraries:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         WINHTTP.dll:Servicios HTTP de Windows:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         WINMM.dll:MCI API DLL:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         WINTRUST.dll:Microsoft Trust Verification APIs:10.0.22000.918 (WinBuild.160101.0800):Microsoft Corporation         WS2_32.dll:DLL de 32 bits de Windows Socket 2.0:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         WSOCK32.dll:Windows Socket 32-Bit DLL:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         amsi.dll:Anti-Malware Scan Interface:10.0.22000.593 (WinBuild.160101.0800):Microsoft Corporation         atig6pxx.dll:atiglpxx.dll:8.14.01.6564:Advanced Micro Devices, Inc.          atio6axx.dll:AMD OpenGL Driver:22.10.1462311:Advanced Micro Devices, Inc         bcrypt.dll:Biblioteca de primitivas criptográficas de Windows:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         bcryptPrimitives.dll:Windows Cryptographic Primitives Library:10.0.22000.778 (WinBuild.160101.0800):Microsoft Corporation         cfgmgr32.dll:Configuration Manager DLL:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         clbcatq.dll:COM+ Configuration Catalog:2001.12.10941.16384 (WinBuild.160101.0800):Microsoft Corporation         combase.dll:Microsoft COM para Windows:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         dbgcore.DLL:Windows Core Debugging Helpers:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         dhcpcsvc.DLL:Servicio cliente DHCP:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         dhcpcsvc6.DLL:Cliente DHCPv6:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         dinput8.dll:Microsoft DirectInput:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         dwmapi.dll:API del Administrador de ventanas de escritorio de Microsoft:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         dxcore.dll:DXCore:10.0.22000.653 (WinBuild.160101.0800):Microsoft Corporation         fwpuclnt.dll:API de modo usuario de FWP/IPsec:10.0.22000.258 (WinBuild.160101.0800):Microsoft Corporation         gdi32full.dll:GDI Client DLL:10.0.22000.832 (WinBuild.160101.0800):Microsoft Corporation         glfw.dll         icm32.dll:Microsoft Color Management Module (CMM):10.0.22000.708 (WinBuild.160101.0800):Microsoft Corporation         inputhost.dll:InputHost:10.0.22000.168 (WinBuild.160101.0800):Microsoft Corporation         java.dll:OpenJDK Platform binary:17.0.1.0:Microsoft         javaw.exe:OpenJDK Platform binary:17.0.1.0:Microsoft         jemalloc.dll         jimage.dll:OpenJDK Platform binary:17.0.1.0:Microsoft         jli.dll:OpenJDK Platform binary:17.0.1.0:Microsoft         jna8664607252289878970.dll:JNA native library:6.1.2:Java(TM) Native Access (JNA)         jvm.dll:OpenJDK 64-Bit server VM:17.0.1.0:Microsoft         kernel.appcore.dll:AppModel API Host:10.0.22000.71 (WinBuild.160101.0800):Microsoft Corporation         lwjgl.dll         lwjgl_opengl.dll         lwjgl_stb.dll         management.dll:OpenJDK Platform binary:17.0.1.0:Microsoft         management_ext.dll:OpenJDK Platform binary:17.0.1.0:Microsoft         mscms.dll:Archivo DLL de Sistema de coincidencias de color de Microsoft:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         msvcp140.dll:Microsoft® C Runtime Library:14.29.30133.0 built by: vcwrkspc:Microsoft Corporation         msvcp_win.dll:Microsoft® C Runtime Library:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         msvcrt.dll:Windows NT CRT DLL:7.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         mswsock.dll:Proveedor de servicios de Microsoft Windows Sockets 2.0:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         napinsp.dll:Proveedor de correcciones de compatibilidad (shim) de nomenclaturas de correo electrónico:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         ncrypt.dll:Enrutador de Windows NCrypt:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         net.dll:OpenJDK Platform binary:17.0.1.0:Microsoft         nio.dll:OpenJDK Platform binary:17.0.1.0:Microsoft         nlansp_c.dll:NLA Namespace Service Provider DLL:10.0.22000.653 (WinBuild.160101.0800):Microsoft Corporation         ntdll.dll:DLL del nivel de Windows NT:10.0.22000.708 (WinBuild.160101.0800):Microsoft Corporation         opengl32.dll:OpenGL Client DLL:10.0.22000.708 (WinBuild.160101.0800):Microsoft Corporation         perfos.dll:DLL de objetos de rendimiento del sistema Windows:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         pfclient.dll:SysMain Client:10.0.22000.653 (WinBuild.160101.0800):Microsoft Corporation         pnrpnsp.dll:Proveedor de espacio de nombres PNRP:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         powrprof.dll:Archivo DLL auxiliar del perfil de energía:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         profapi.dll:User Profile Basic API:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         rasadhlp.dll:Remote Access AutoDial Helper:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         rsaenh.dll:Microsoft Enhanced Cryptographic Provider:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         sechost.dll:Host for SCM/SDDL/LSA Lookup APIs:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         shlwapi.dll:Biblioteca de utilidades de Shell:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         sunmscapi.dll:OpenJDK Platform binary:17.0.1.0:Microsoft         svml.dll:OpenJDK Platform binary:17.0.1.0:Microsoft         textinputframework.dll:"TextInputFramework.DYNLINK":10.0.22000.282 (WinBuild.160101.0800):Microsoft Corporation         ucrtbase.dll:Microsoft® C Runtime Library:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         uxtheme.dll:Biblioteca UxTheme de Microsoft:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         vcruntime140_1.dll:Microsoft® C Runtime Library:14.29.30133.0 built by: vcwrkspc:Microsoft Corporation         verify.dll:OpenJDK Platform binary:17.0.1.0:Microsoft         win32u.dll:Win32u:10.0.22000.918 (WinBuild.160101.0800):Microsoft Corporation         windows.storage.dll:API de almacenamiento de Microsoft WinRT:10.0.22000.184 (WinBuild.160101.0800):Microsoft Corporation         winrnr.dll:LDAP RnR Provider DLL:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         wintypes.dll:DLL de tipos basados en Windows:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         wshbth.dll:Windows Sockets Helper DLL:10.0.22000.653 (WinBuild.160101.0800):Microsoft Corporation         xinput1_4.dll:API Microsoft Common Controller:10.0.22000.1 (WinBuild.160101.0800):Microsoft Corporation         zip.dll:OpenJDK Platform binary:17.0.1.0:Microsoft Stacktrace:     at net.minecraft.client.main.Main.main(Main.java:169) ~[client-1.18.2-20220404.173914-srg.jar%2380!/:?] {re:classloading,pl:runtimedistcleaner:A}     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] {}     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] {}     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] {}     at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] {}     at net.minecraftforge.fml.loading.targets.CommonClientLaunchHandler.lambda$launchService$0(CommonClientLaunchHandler.java:31) ~[fmlloader-1.18.2-40.1.86.jar%2317!/:?] {}     at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-9.1.3.jar%235!/:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) [modlauncher-9.1.3.jar%235!/:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) [modlauncher-9.1.3.jar%235!/:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:106) [modlauncher-9.1.3.jar%235!/:?] {}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:77) [modlauncher-9.1.3.jar%235!/:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) [modlauncher-9.1.3.jar%235!/:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) [modlauncher-9.1.3.jar%235!/:?] {}     at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:149) [bootstraplauncher-1.0.0.jar:?] {} -- System Details -- Details:     Minecraft Version: 1.18.2     Minecraft Version ID: 1.18.2     Operating System: Windows 10 (amd64) version 10.0     Java Version: 17.0.1, Microsoft     Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Microsoft     Memory: 2818574208 bytes (2688 MiB) / 4865392640 bytes (4640 MiB) up to 8589934592 bytes (8192 MiB)     CPUs: 16     Processor Vendor: GenuineIntel     Processor Name: Intel(R) Xeon(R) CPU           E5520  @ 2.27GHz     Identifier: Intel64 Family 6 Model 26 Stepping 5     Microarchitecture: Nehalem (Server)     Frequency (GHz): 2.26     Number of physical packages: 2     Number of physical CPUs: 8     Number of logical CPUs: 16     Graphics card #0 name: Radeon RX 5500 XT     Graphics card #0 vendor: Advanced Micro Devices, Inc. (0x1002)     Graphics card #0 VRAM (MB): 4095.00     Graphics card #0 deviceId: 0x7340     Graphics card #0 versionInfo: DriverVersion=31.0.12019.16007     Memory slot #0 capacity (MB): 2048.00     Memory slot #0 clockSpeed (GHz): 1.07     Memory slot #0 type: DDR3     Memory slot #1 capacity (MB): 2048.00     Memory slot #1 clockSpeed (GHz): 1.07     Memory slot #1 type: DDR3     Memory slot #2 capacity (MB): 2048.00     Memory slot #2 clockSpeed (GHz): 1.07     Memory slot #2 type: DDR3     Memory slot #3 capacity (MB): 2048.00     Memory slot #3 clockSpeed (GHz): 1.07     Memory slot #3 type: DDR3     Memory slot #4 capacity (MB): 2048.00     Memory slot #4 clockSpeed (GHz): 1.07     Memory slot #4 type: DDR3     Memory slot #5 capacity (MB): 2048.00     Memory slot #5 clockSpeed (GHz): 1.07     Memory slot #5 type: DDR3     Memory slot #6 capacity (MB): 2048.00     Memory slot #6 clockSpeed (GHz): 1.07     Memory slot #6 type: DDR3     Memory slot #7 capacity (MB): 2048.00     Memory slot #7 clockSpeed (GHz): 1.07     Memory slot #7 type: DDR3     Memory slot #8 capacity (MB): 2048.00     Memory slot #8 clockSpeed (GHz): 1.07     Memory slot #8 type: DDR3     Memory slot #9 capacity (MB): 2048.00     Memory slot #9 clockSpeed (GHz): 1.07     Memory slot #9 type: DDR3     Memory slot #10 capacity (MB): 2048.00     Memory slot #10 clockSpeed (GHz): 1.07     Memory slot #10 type: DDR3     Memory slot #11 capacity (MB): 2048.00     Memory slot #11 clockSpeed (GHz): 1.07     Memory slot #11 type: DDR3     Virtual memory max (MB): 24845.58     Virtual memory used (MB): 14663.27     Swap memory total (MB): 272.00     Swap memory used (MB): 244.02     JVM Flags: 9 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -Xmx8G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M     Launched Version: 1.18.2-forge-40.1.86     Backend library: LWJGL version 3.2.2 SNAPSHOT     Backend API: Radeon RX 5500 XT GL version 3.2.0 Core Profile Context 22.10.1.221003, ATI Technologies Inc.     Window size: <not initialized>     GL Caps: Using framebuffer using OpenGL 3.2     GL debug messages:      Using VBOs: Yes     Is Modded: Definitely; Client brand changed to 'forge'     Type: Client (map_client.txt)     CPU: 16x Intel(R) Xeon(R) CPU E5520 @ 2.27GHz     OptiFine Version: OptiFine_1.18.2_HD_U_H7     OptiFine Build: 20220410-185216     Render Distance Chunks: 18     Mipmaps: 4     Anisotropic Filtering: 1     Antialiasing: 0     Multitexture: false     Shaders: null     OpenGlVersion: 3.2.0 Core Profile Context 22.10.1.221003     OpenGlRenderer: Radeon RX 5500 XT     OpenGlVendor: ATI Technologies Inc.     CpuCount: 16     ModLauncher: 9.1.3+9.1.3+main.9b69c82a     ModLauncher launch target: forgeclient     ModLauncher naming: srg     ModLauncher services:           mixin PLUGINSERVICE           eventbus PLUGINSERVICE           slf4jfixer PLUGINSERVICE           object_holder_definalize PLUGINSERVICE           runtime_enum_extender PLUGINSERVICE           capability_token_subclass PLUGINSERVICE           accesstransformer PLUGINSERVICE           runtimedistcleaner PLUGINSERVICE           mixin TRANSFORMATIONSERVICE           OptiFine TRANSFORMATIONSERVICE           fml TRANSFORMATIONSERVICE      FML Language Providers:          minecraft@1.0         lowcodefml@null         javafml@null     Mod List:          client-1.18.2-20220404.173914-srg.jar             |Minecraft                     |minecraft                     |1.18.2              |COMMON_SET|Manifest: a1:d4:5e:04:4f:d3:d6:e0:7b:37:97:cf:77:b0:de:ad:4a:47:ce:8c:96:49:5f:0a:cf:8c:ae:b2:6d:4b:8a:3f         grappling_hook_mod-1.18.2-v13.jar                 |Grappling Hook Mod            |grapplemod                    |1.18.2-v13          |COMMON_SET|Manifest: NOSIGNATURE         YungsBetterDungeons-1.18.2-Forge-2.1.0.jar        |YUNG's Better Dungeons        |betterdungeons                |1.18.2-Forge-2.1.0  |COMMON_SET|Manifest: NOSIGNATURE         repurposed_structures_forge-5.1.14+1.18.2.jar     |Repurposed Structures         |repurposed_structures         |5.1.14+1.18.2       |COMMON_SET|Manifest: NOSIGNATURE         mowziesmobs-1.5.32.jar                            |Mowzie's Mobs                 |mowziesmobs                   |1.5.31              |COMMON_SET|Manifest: NOSIGNATURE         TerraBlender-forge-1.18.2-1.2.0.126.jar           |TerraBlender                  |terrablender                  |1.2.0.126           |COMMON_SET|Manifest: NOSIGNATURE         BiomesOPlenty-1.18.2-16.0.0.109-universal.jar     |Biomes O' Plenty              |biomesoplenty                 |1.18.2-16.0.0.109   |COMMON_SET|Manifest: NOSIGNATURE         curios-forge-1.18.2-5.0.7.1.jar                   |Curios API                    |curios                        |1.18.2-5.0.7.1      |COMMON_SET|Manifest: NOSIGNATURE         XaerosWorldMap_1.28.4_Forge_1.18.2.jar            |Xaero's World Map             |xaeroworldmap                 |1.28.4              |COMMON_SET|Manifest: NOSIGNATURE         comforts-forge-1.18.2-5.0.0.5.jar                 |Comforts                      |comforts                      |1.18.2-5.0.0.5      |COMMON_SET|Manifest: NOSIGNATURE         citadel-1.11.3-1.18.2.jar                         |Citadel                       |citadel                       |1.11.3              |COMMON_SET|Manifest: NOSIGNATURE         alexsmobs-1.18.6.jar                              |Alex's Mobs                   |alexsmobs                     |1.18.6              |COMMON_SET|Manifest: NOSIGNATURE         AutoRegLib-1.7-53.jar                             |AutoRegLib                    |autoreglib                    |1.7-53              |COMMON_SET|Manifest: NOSIGNATURE         artifacts-1.18.2-4.2.0.jar                        |Artifacts                     |artifacts                     |1.18.2-4.2.0        |COMMON_SET|Manifest: NOSIGNATURE         Serene+Seasons-1.18.2-7.0.0.13.jar                |Serene Seasons                |sereneseasons                 |1.18.2-7.0.0.13     |COMMON_SET|Manifest: NOSIGNATURE         YungsApi-1.18.2-Forge-2.2.6.jar                   |YUNG's API                    |yungsapi                      |1.18.2-Forge-2.2.6  |COMMON_SET|Manifest: NOSIGNATURE         feature_nbt_deadlock_be_gone_forge-2.0.0+1.18.2.ja|Feature NBT Deadlock Be Gone  |feature_nbt_deadlock_be_gone  |2.0.0+1.18.2        |COMMON_SET|Manifest: NOSIGNATURE         YungsBetterStrongholds-1.18.2-Forge-2.1.1.jar     |YUNG's Better Strongholds     |betterstrongholds             |1.18.2-Forge-2.1.1  |COMMON_SET|Manifest: NOSIGNATURE         Plus+The+End+V.1.1.9.jar                          |Plus The End                  |plus_the_end                  |1.0.0               |COMMON_SET|Manifest: NOSIGNATURE         cloth-config-6.4.90-forge.jar                     |Cloth Config v4 API           |cloth_config                  |6.4.90              |COMMON_SET|Manifest: NOSIGNATURE         forge-1.18.2-40.1.86-universal.jar                |Forge                         |forge                         |40.1.86             |COMMON_SET|Manifest: 84:ce:76:e8:45:35:e4:0e:63:86:df:47:59:80:0f:67:6c:c1:5f:6e:5f:4d:b3:54:47:1a:9f:7f:ed:5e:f2:90         Quark-3.2-358.jar                                 |Quark                         |quark                         |3.2-358             |COMMON_SET|Manifest: NOSIGNATURE         expandability-6.0.0.jar                           |ExpandAbility                 |expandability                 |6.0.0               |COMMON_SET|Manifest: NOSIGNATURE         YungsBetterMineshafts-1.18.2-Forge-2.2.jar        |YUNG's Better Mineshafts      |bettermineshafts              |1.18.2-Forge-2.2    |COMMON_SET|Manifest: NOSIGNATURE         valhelsia_core-forge-1.18.2-0.4.0.jar             |Valhelsia Core                |valhelsia_core                |1.18.2-0.4.0        |COMMON_SET|Manifest: NOSIGNATURE         valhelsia_structures-forge-1.18.2-0.1.0.jar       |Valhelsia Structures          |valhelsia_structures          |1.18.2-0.1.0        |COMMON_SET|Manifest: NOSIGNATURE         twilightforest-1.18.2-4.1.1423-universal.jar      |The Twilight Forest           |twilightforest                |4.1.1423            |COMMON_SET|Manifest: NOSIGNATURE         geckolib-forge-1.18-3.0.56.jar                    |GeckoLib                      |geckolib3                     |3.0.56              |COMMON_SET|Manifest: NOSIGNATURE     Crash Report UUID: bd25521d-2e16-4c13-8766-e5370d56bae1     FML: 40.1     Forge: net.minecraftforge:40.1.86
    • Conflict between iris and rubidium. Check you have the latest version then contact the mod author.
  • Topics

×
×
  • Create New...

Important Information

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