-
Posts
167 -
Joined
-
Last visited
Everything posted by Turtledove
-
Look up how the enderman does it
-
I'm creating a gui (container-less) and for the sake of visual simplicity, I'd like background screen components like the healthbar and hotbar to go away while this screen is open, like how pressing alt+f1 declutters the screen. Anyone know how I can do this?
-
I'm creating a new type of villager with performance in mind, the goal is to have at least 50 villager entities loaded nearby without causing significant frame drops. I've noticed that if I have 50 villagers loaded in a village vs 50 creepers, performance is hardest hit with the former. I think this might have to do with the fact each villager is constantly looking for new paths, searching hash tables, etc, but is pathfinding really that expensive an operation, or is there something else? I have a decent CPU+RAM (Ryzen 5 2600x with 16GB of DDR4 2933 memory) and loading 50 villagers causes the game to drop up to 20 frames. Of course it'd get worse on lower end hardware or the more villagers I spawn.
-
Take a look at how the vanilla fireball or snowballs are rendered
-
Look at the vanilla one, it's just an entity like anything else in the game.
-
The latter was it. I thought "If I have the library linked in my dev environment, surely when I generate the jar it'd be linked to!" But nope, just being dumb. As for the registration code, it currently works without issue, but is there a reason why I shouldn't combine static initializers with the registry event? Reflection was the obvious choice as well to reduce the amount of code I had to type for all my dozens and dozens of entities. Thanks for your input as always 👍
-
The error in question: Time: 7/10/21 1:09 PM Description: Mod loading error has occurred java.lang.Exception: Mod Loading has failed at net.minecraftforge.fml.CrashReportExtender.dumpModLoadingCrashReport(CrashReportExtender.java:85) ~[?:?] {re:classloading} at net.minecraftforge.fml.client.ClientModLoader.completeModLoading(ClientModLoader.java:188) ~[?:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.lambda$null$1(Minecraft.java:494) ~[?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.util.Util.func_215077_a(SourceFile:404) ~[?:?] {re:classloading} at net.minecraft.client.Minecraft.lambda$new$2(Minecraft.java:490) ~[?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.gui.ResourceLoadProgressGui.func_230430_a_(ResourceLoadProgressGui.java:113) ~[?:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.renderer.GameRenderer.func_195458_a(GameRenderer.java:480) ~[?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.func_195542_b(Minecraft.java:953) ~[?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:584) ~[?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.main.Main.main(Main.java:184) ~[minecraft-1.16.3-client.jar:?] {re:classloading,pl:runtimedistcleaner:A} at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_241] {} at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_241] {} at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_241] {} at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_241] {} at net.minecraftforge.fml.loading.FMLClientLaunchProvider.lambda$launchService$0(FMLClientLaunchProvider.java:51) ~[forge-1.16.3-34.1.0-launcher.jar:34.1] {} at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-7.0.1.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-7.0.1.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-7.0.1.jar:?] {} at cpw.mods.modlauncher.Launcher.run(Launcher.java:81) [modlauncher-7.0.1.jar:?] {} at cpw.mods.modlauncher.Launcher.main(Launcher.java:65) [modlauncher-7.0.1.jar:?] {} at io.github.zekerzhayard.forgewrapper.installer.Main.main(Main.java:50) [ForgeWrapper-1.4.2.jar:?] {} at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_241] {} at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_241] {} at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_241] {} at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_241] {} at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:196) [NewLaunch.jar:?] {} at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:231) [NewLaunch.jar:?] {} at org.multimc.EntryPoint.listen(EntryPoint.java:143) [NewLaunch.jar:?] {} at org.multimc.EntryPoint.main(EntryPoint.java:34) [NewLaunch.jar:?] {} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Render thread Stacktrace: at java.lang.ClassLoader.findClass(Unknown Source) ~[?:1.8.0_241] {} -- MOD withernauts -- Details: Caused by 0: java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: com/github/alexthe666/citadel/animation/IAnimatedEntity at com.withernauts.withernauts.entity.EntityRegistry.<clinit>(EntityRegistry.java:23) ~[?:1.0] {re:classloading} at java.lang.Class.forName0(Native Method) ~[?:1.8.0_241] {} at java.lang.Class.forName(Unknown Source) ~[?:1.8.0_241] {} at net.minecraftforge.fml.AutomaticEventSubscriber.lambda$inject$6(AutomaticEventSubscriber.java:75) ~[?:?] {re:classloading} at java.util.ArrayList.forEach(Unknown Source) ~[?:1.8.0_241] {} at net.minecraftforge.fml.AutomaticEventSubscriber.inject(AutomaticEventSubscriber.java:62) ~[?:?] {re:classloading} at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:91) ~[?:34.1] {re:classloading} at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$5(ModContainer.java:111) ~[?:?] {re:classloading} at java.util.concurrent.CompletableFuture$AsyncRun.run(Unknown Source) ~[?:1.8.0_241] {} at java.util.concurrent.CompletableFuture$AsyncRun.exec(Unknown Source) ~[?:1.8.0_241] {} at java.util.concurrent.ForkJoinTask.doExec(Unknown Source) ~[?:1.8.0_241] {} at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(Unknown Source) ~[?:1.8.0_241] {} at java.util.concurrent.ForkJoinPool.runWorker(Unknown Source) ~[?:1.8.0_241] {} at java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source) ~[?:1.8.0_241] {} Caused by 1: java.lang.NoClassDefFoundError: com/github/alexthe666/citadel/animation/IAnimatedEntity at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.8.0_241] {} at java.lang.ClassLoader.defineClass(Unknown Source) ~[?:1.8.0_241] {} at java.lang.ClassLoader.defineClass(Unknown Source) ~[?:1.8.0_241] {} at cpw.mods.modlauncher.TransformingClassLoader.loadClass(TransformingClassLoader.java:136) ~[modlauncher-7.0.1.jar:?] {re:classloading} at cpw.mods.modlauncher.TransformingClassLoader.loadClass(TransformingClassLoader.java:97) ~[modlauncher-7.0.1.jar:?] {re:classloading} at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_241] {} at net.minecraftforge.eventbus.EventSubclassTransformer.buildEvents(EventSubclassTransformer.java:62) ~[eventbus-3.0.3-service.jar:?] {} at net.minecraftforge.eventbus.EventSubclassTransformer.transform(EventSubclassTransformer.java:44) ~[eventbus-3.0.3-service.jar:?] {} at net.minecraftforge.eventbus.EventBusEngine.processClass(EventBusEngine.java:21) ~[eventbus-3.0.3-service.jar:?] {} at net.minecraftforge.eventbus.service.ModLauncherService.processClassWithFlags(ModLauncherService.java:20) ~[eventbus-3.0.3-service.jar:3.0.3+63+master.b6b4769] {} at cpw.mods.modlauncher.LaunchPluginHandler.offerClassNodeToPlugins(LaunchPluginHandler.java:85) ~[modlauncher-7.0.1.jar:?] {} at cpw.mods.modlauncher.ClassTransformer.transform(ClassTransformer.java:119) ~[modlauncher-7.0.1.jar:?] {} at cpw.mods.modlauncher.TransformingClassLoader$DelegatedClassLoader.findClass(TransformingClassLoader.java:256) ~[modlauncher-7.0.1.jar:?] {} at cpw.mods.modlauncher.TransformingClassLoader.loadClass(TransformingClassLoader.java:135) ~[modlauncher-7.0.1.jar:?] {re:classloading} at cpw.mods.modlauncher.TransformingClassLoader.loadClass(TransformingClassLoader.java:97) ~[modlauncher-7.0.1.jar:?] {re:classloading} at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_241] {} at net.minecraftforge.eventbus.EventSubclassTransformer.buildEvents(EventSubclassTransformer.java:62) ~[eventbus-3.0.3-service.jar:?] {} at net.minecraftforge.eventbus.EventSubclassTransformer.transform(EventSubclassTransformer.java:44) ~[eventbus-3.0.3-service.jar:?] {} at net.minecraftforge.eventbus.EventBusEngine.processClass(EventBusEngine.java:21) ~[eventbus-3.0.3-service.jar:?] {} at net.minecraftforge.eventbus.service.ModLauncherService.processClassWithFlags(ModLauncherService.java:20) ~[eventbus-3.0.3-service.jar:3.0.3+63+master.b6b4769] {} at cpw.mods.modlauncher.LaunchPluginHandler.offerClassNodeToPlugins(LaunchPluginHandler.java:85) ~[modlauncher-7.0.1.jar:?] {} at cpw.mods.modlauncher.ClassTransformer.transform(ClassTransformer.java:119) ~[modlauncher-7.0.1.jar:?] {} at cpw.mods.modlauncher.TransformingClassLoader$DelegatedClassLoader.findClass(TransformingClassLoader.java:256) ~[modlauncher-7.0.1.jar:?] {} at cpw.mods.modlauncher.TransformingClassLoader.loadClass(TransformingClassLoader.java:135) ~[modlauncher-7.0.1.jar:?] {re:classloading} at cpw.mods.modlauncher.TransformingClassLoader.loadClass(TransformingClassLoader.java:97) ~[modlauncher-7.0.1.jar:?] {re:classloading} at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_241] {} at com.withernauts.withernauts.entity.EntityRegistry.<clinit>(EntityRegistry.java:23) ~[?:1.0] {re:classloading} at java.lang.Class.forName0(Native Method) ~[?:1.8.0_241] {} at java.lang.Class.forName(Unknown Source) ~[?:1.8.0_241] {} at net.minecraftforge.fml.AutomaticEventSubscriber.lambda$inject$6(AutomaticEventSubscriber.java:75) ~[?:?] {re:classloading} at java.util.ArrayList.forEach(Unknown Source) ~[?:1.8.0_241] {} at net.minecraftforge.fml.AutomaticEventSubscriber.inject(AutomaticEventSubscriber.java:62) ~[?:?] {re:classloading} at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:91) ~[?:34.1] {re:classloading} at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$5(ModContainer.java:111) ~[?:?] {re:classloading} at java.util.concurrent.CompletableFuture$AsyncRun.run(Unknown Source) ~[?:1.8.0_241] {} at java.util.concurrent.CompletableFuture$AsyncRun.exec(Unknown Source) ~[?:1.8.0_241] {} at java.util.concurrent.ForkJoinTask.doExec(Unknown Source) ~[?:1.8.0_241] {} at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(Unknown Source) ~[?:1.8.0_241] {} at java.util.concurrent.ForkJoinPool.runWorker(Unknown Source) ~[?:1.8.0_241] {} at java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source) ~[?:1.8.0_241] {} Mod File: modid-1.0.jar Failure message: Withernauts (withernauts) has failed to load correctly java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: com/github/alexthe666/citadel/animation/IAnimatedEntity Mod Version: 1.0 Mod Issue URL: NOT PROVIDED Exception message: java.lang.ClassNotFoundException: com.github.alexthe666.citadel.animation.IAnimatedEntity Stacktrace: at java.lang.ClassLoader.findClass(Unknown Source) ~[?:1.8.0_241] {} at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_241] {} at cpw.mods.modlauncher.TransformingClassLoader.loadClass(TransformingClassLoader.java:105) ~[modlauncher-7.0.1.jar:?] {re:classloading} at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_241] {} at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.8.0_241] {} at java.lang.ClassLoader.defineClass(Unknown Source) ~[?:1.8.0_241] {} at java.lang.ClassLoader.defineClass(Unknown Source) ~[?:1.8.0_241] {} at cpw.mods.modlauncher.TransformingClassLoader.loadClass(TransformingClassLoader.java:136) ~[modlauncher-7.0.1.jar:?] {re:classloading} at cpw.mods.modlauncher.TransformingClassLoader.loadClass(TransformingClassLoader.java:97) ~[modlauncher-7.0.1.jar:?] {re:classloading} at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_241] {} at net.minecraftforge.eventbus.EventSubclassTransformer.buildEvents(EventSubclassTransformer.java:62) ~[eventbus-3.0.3-service.jar:?] {} at net.minecraftforge.eventbus.EventSubclassTransformer.transform(EventSubclassTransformer.java:44) ~[eventbus-3.0.3-service.jar:?] {} at net.minecraftforge.eventbus.EventBusEngine.processClass(EventBusEngine.java:21) ~[eventbus-3.0.3-service.jar:?] {} at net.minecraftforge.eventbus.service.ModLauncherService.processClassWithFlags(ModLauncherService.java:20) ~[eventbus-3.0.3-service.jar:3.0.3+63+master.b6b4769] {} at cpw.mods.modlauncher.LaunchPluginHandler.offerClassNodeToPlugins(LaunchPluginHandler.java:85) ~[modlauncher-7.0.1.jar:?] {} at cpw.mods.modlauncher.ClassTransformer.transform(ClassTransformer.java:119) ~[modlauncher-7.0.1.jar:?] {} at cpw.mods.modlauncher.TransformingClassLoader$DelegatedClassLoader.findClass(TransformingClassLoader.java:256) ~[modlauncher-7.0.1.jar:?] {} at cpw.mods.modlauncher.TransformingClassLoader.loadClass(TransformingClassLoader.java:135) ~[modlauncher-7.0.1.jar:?] {re:classloading} at cpw.mods.modlauncher.TransformingClassLoader.loadClass(TransformingClassLoader.java:97) ~[modlauncher-7.0.1.jar:?] {re:classloading} at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_241] {} at net.minecraftforge.eventbus.EventSubclassTransformer.buildEvents(EventSubclassTransformer.java:62) ~[eventbus-3.0.3-service.jar:?] {} at net.minecraftforge.eventbus.EventSubclassTransformer.transform(EventSubclassTransformer.java:44) ~[eventbus-3.0.3-service.jar:?] {} at net.minecraftforge.eventbus.EventBusEngine.processClass(EventBusEngine.java:21) ~[eventbus-3.0.3-service.jar:?] {} at net.minecraftforge.eventbus.service.ModLauncherService.processClassWithFlags(ModLauncherService.java:20) ~[eventbus-3.0.3-service.jar:3.0.3+63+master.b6b4769] {} at cpw.mods.modlauncher.LaunchPluginHandler.offerClassNodeToPlugins(LaunchPluginHandler.java:85) ~[modlauncher-7.0.1.jar:?] {} at cpw.mods.modlauncher.ClassTransformer.transform(ClassTransformer.java:119) ~[modlauncher-7.0.1.jar:?] {} at cpw.mods.modlauncher.TransformingClassLoader$DelegatedClassLoader.findClass(TransformingClassLoader.java:256) ~[modlauncher-7.0.1.jar:?] {} at cpw.mods.modlauncher.TransformingClassLoader.loadClass(TransformingClassLoader.java:135) ~[modlauncher-7.0.1.jar:?] {re:classloading} at cpw.mods.modlauncher.TransformingClassLoader.loadClass(TransformingClassLoader.java:97) ~[modlauncher-7.0.1.jar:?] {re:classloading} at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_241] {} at com.withernauts.withernauts.entity.EntityRegistry.<clinit>(EntityRegistry.java:23) ~[?:1.0] {re:classloading} at java.lang.Class.forName0(Native Method) ~[?:1.8.0_241] {} at java.lang.Class.forName(Unknown Source) ~[?:1.8.0_241] {} at net.minecraftforge.fml.AutomaticEventSubscriber.lambda$inject$6(AutomaticEventSubscriber.java:75) ~[?:?] {re:classloading} at java.util.ArrayList.forEach(Unknown Source) ~[?:1.8.0_241] {} at net.minecraftforge.fml.AutomaticEventSubscriber.inject(AutomaticEventSubscriber.java:62) ~[?:?] {re:classloading} at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:91) ~[?:34.1] {re:classloading} at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$5(ModContainer.java:111) ~[?:?] {re:classloading} at java.util.concurrent.CompletableFuture$AsyncRun.run(Unknown Source) ~[?:1.8.0_241] {} at java.util.concurrent.CompletableFuture$AsyncRun.exec(Unknown Source) ~[?:1.8.0_241] {} at java.util.concurrent.ForkJoinTask.doExec(Unknown Source) ~[?:1.8.0_241] {} at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(Unknown Source) ~[?:1.8.0_241] {} at java.util.concurrent.ForkJoinPool.runWorker(Unknown Source) ~[?:1.8.0_241] {} at java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source) ~[?:1.8.0_241] {} And the relevant class: https://github.com/CyclingDank/withernauts/blob/main/src/main/java/com/withernauts/withernauts/entity/EntityRegistry.java
-
I've completed and generated a build of a mod I thought was ready to export. It runs without issue on runClient, but when I run MC with the mod's jar file, it spits out a NoClassDefError for my entity classes during entity and renderer registration. I've checked the jar file with 7zip and the class files are all there, so I'm suspecting I've unintentionally reached across logical sides here and there, meaning I've got a long refactor in front of me...sigh... During general development, is there a fool-proof way of checking this? I don't see any warnings in the compiler's console when I do, so tracking down these things after the fact is a horrible nightmare...
-
Calling valueOf() on Enums and obfuscation
Turtledove replied to Turtledove's topic in Modder Support
Ah that's perfect, I really didn't want to shit out a giant switch statement for this. -
In a json file I store some status (representing an enum) as a string, and at compile-time I'm reading this in and converting back to an Enum value. For that conversion process, I use valueOf() as my go-to, as a giant switch statement returning all the possible values isn't scalable and messy. Just a quick example for what I'm doing, in reality there are dozens of possible Enum states, which is why scalability is important here: json: { "mood": "ANGRY" ... } Enum: public enum EntityMoods { NEUTRAL, ANGRY, SAD, HAPPY } Conversion: EntityMoods moodStatus = EntityMoods.valueOf("ANGRY"); assertTrue(moodStatus == EntityMoods.ANGRY); But would this still work in Minecraft's obfuscated environment?
-
Custom regeneration effect / regen on tick? (1.16.5)
Turtledove replied to djofox's topic in Modder Support
...just have the effect apply per every ___ ticks. I.e. do effect if player's tick count % 40 is 0 -
Ah sorry, you're right. I can refer you to the way Lycanites renders all of their .obj model entities, and best of all it's up to date for 1.16, but it is pretty complicated than just your standard java model. Depending on what you're doing it might not be worth it... https://gitlab.com/Lycanite/LycanitesMobs/-/tree/master/src/main/java/com/lycanitesmobs/client
-
I haven't touched obj models in MC since 1.12.2 so I wouldn't know if anything changed, but with a TESR I recall I could just override the render method and make OpenGL transforms (which I'm sure has been replaced with matrixstacks) in it...
-
Hook into LivingHurtEvent, check the position of the attacker relative to the player and do whatever you want.
-
Are there any other options besides having all my textures be outside that space? I tried setting the default model's visibility to false: @OnlyIn(Dist.CLIENT) @Nullable public <A extends BipedModel<?>> A getArmorModel(LivingEntity LivingEntity, ItemStack itemStack, EquipmentSlotType armorSlot, A _default) { _default.bipedHeadwear.showModel = false; _default.bipedHead.showModel = false; _default.bipedBody.showModel = false; _default.bipedLeftArm.showModel = false; _default.bipedLeftLeg.showModel = false; _default.bipedRightArm.showModel = false; _default.bipedRightLeg.showModel = false; _default.setVisible(false); return (A) this.armorModel; } and it still looks like this:
-
I've got a model that I've parented to the correct parts of BipedModel properly; i.e. headwear-> head, chest->body, etc: My item registry: /**ARMOR*/ //avalon mail public static final RegistryObject<WithernautsArmor> AVALON_MAIL_HELMET = ITEMS.register("avalon_mail_helmet", () -> new WithernautsArmor(ArmorMaterial.DIAMOND, EquipmentSlotType.HEAD, "avalon_mail", new AvalonMailArmorModel(0.4f))); public static final RegistryObject<WithernautsArmor> AVALON_MAIL_PLATE = ITEMS.register("avalon_mail_plate", () -> new WithernautsArmor(ArmorMaterial.DIAMOND, EquipmentSlotType.CHEST, "avalon_mail", new AvalonMailArmorModel(0.4f))); public static final RegistryObject<WithernautsArmor> AVALON_MAIL_LEGS = ITEMS.register("avalon_mail_legs", () -> new WithernautsArmor(ArmorMaterial.DIAMOND, EquipmentSlotType.LEGS, "avalon_mail", new AvalonMailArmorModel(0.4f))); public static final RegistryObject<WithernautsArmor> AVALON_MAIL_FEET = ITEMS.register("avalon_mail_feet", () -> new WithernautsArmor(ArmorMaterial.DIAMOND, EquipmentSlotType.FEET, "avalon_mail", new AvalonMailArmorModel(0.4f))); My armor's model: public AvalonMailArmorModel(float modelSize) { super(modelSize, 0, 64, 64); this.textureWidth = 64; this.textureHeight = 64; this.am_leg_pivot_r = new ModelRenderer(this, 0, 0); this.am_leg_pivot_r.setRotationPoint(0.0F, 0.0F, 0.0F); this.am_leg_pivot_r.addBox(-0.5F, -0.5F, -0.5F, 1, 1, 1, 0.0F); this.am_torso_4 = new ModelRenderer(this, 0, 27); this.am_torso_4.setRotationPoint(0.0F, 13.0F, 0.0F); this.am_torso_4.addBox(-2.0F, -3.0F, -2.5F, 4, 4, 5, 0.0F); this.am_shoulder_l_1 = new ModelRenderer(this, 0, 54); this.am_shoulder_l_1.mirror = true; this.am_shoulder_l_1.setRotationPoint(0.0F, 0.0F, 0.0F); this.am_shoulder_l_1.addBox(-1.0F, -2.5F, -3.0F, 5, 4, 6, 0.0F); this.am_helm_2 = new ModelRenderer(this, 0, 18); this.am_helm_2.setRotationPoint(0.0F, -5.0F, -4.0F); this.am_helm_2.addBox(-2.5F, -6.0F, -1.5F, 5, 6, 3, 0.0F); this.am_shoulder_r_2 = new ModelRenderer(this, 48, 55); this.am_shoulder_r_2.setRotationPoint(-0.5F, 4.0F, 0.0F); this.am_shoulder_r_2.addBox(-3.0F, -4.0F, -2.5F, 2, 4, 5, 0.0F); this.am_boot_l = new ModelRenderer(this, 36, 8); this.am_boot_l.mirror = true; this.am_boot_l.setRotationPoint(0.0F, 0.0F, 0.0F); this.am_boot_l.addBox(-2.5F, 7.0F, -2.5F, 5, 5, 5, 0.0F); this.am_torso_2 = new ModelRenderer(this, 36, 0); this.am_torso_2.mirror = true; this.am_torso_2.setRotationPoint(2.25F, 9.0F, -2.0F); this.am_torso_2.addBox(-2.0F, -8.0F, 0.0F, 4, 5, 1, 0.0F); this.setRotateAngle(am_torso_2, 0.3141592653589793F, -0.5235987755982988F, -0.10471975511965977F); this.am_shoulder_r_4 = new ModelRenderer(this, 22, 56); this.am_shoulder_r_4.setRotationPoint(0.0F, 0.0F, 0.0F); this.am_shoulder_r_4.addBox(-5.0F, 0.5F, -3.5F, 6, 1, 7, 0.0F); this.am_leg_l_2 = new ModelRenderer(this, 28, 28); this.am_leg_l_2.mirror = true; this.am_leg_l_2.setRotationPoint(0.0F, -2.0F, 0.0F); this.am_leg_l_2.addBox(0.0F, 0.0F, -3.5F, 4, 1, 7, 0.0F); this.am_shoulder_r_5 = new ModelRenderer(this, 0, 51); this.am_shoulder_r_5.setRotationPoint(-4.4F, 1.5F, 0.0F); this.am_shoulder_r_5.addBox(-0.5F, -3.0F, -1.0F, 1, 3, 2, 0.0F); this.am_torso = new ModelRenderer(this, 0, 36); this.am_torso.setRotationPoint(0.0F, 0.0F, 0.0F); this.am_torso.addBox(-4.5F, 0.0F, -2.5F, 9, 10, 5, 0.0F); this.am_shoulder_r_1 = new ModelRenderer(this, 0, 54); this.am_shoulder_r_1.setRotationPoint(0.0F, 0.0F, 0.0F); this.am_shoulder_r_1.addBox(-4.0F, -2.5F, -3.0F, 5, 4, 6, 0.0F); this.am_shoulder_l_4 = new ModelRenderer(this, 16, 18); this.am_shoulder_l_4.mirror = true; this.am_shoulder_l_4.setRotationPoint(0.0F, -2.5F, 0.0F); this.am_shoulder_l_4.addBox(0.0F, -2.0F, -3.0F, 1, 2, 6, 0.0F); this.am_shoulder_l_6 = new ModelRenderer(this, 0, 51); this.am_shoulder_l_6.mirror = true; this.am_shoulder_l_6.setRotationPoint(4.4F, 0.5F, 0.0F); this.am_shoulder_l_6.addBox(-0.5F, -2.0F, -1.0F, 1, 2, 2, 0.0F); this.am_leg_r_1 = new ModelRenderer(this, 28, 36); this.am_leg_r_1.setRotationPoint(0.0F, 0.0F, 0.0F); this.am_leg_r_1.addBox(-3.0F, -2.0F, -3.0F, 3, 6, 6, 0.0F); this.setRotateAngle(am_leg_r_1, 0.0F, 0.0F, 0.17453292519943295F); this.am_leg_pivot_l = new ModelRenderer(this, 0, 0); this.am_leg_pivot_l.setRotationPoint(0.0F, 0.0F, 0.0F); this.am_leg_pivot_l.addBox(-0.5F, -0.5F, -0.5F, 1, 1, 1, 0.0F); this.am_shoulder_l_5 = new ModelRenderer(this, 22, 56); this.am_shoulder_l_5.mirror = true; this.am_shoulder_l_5.setRotationPoint(0.0F, 0.0F, 0.0F); this.am_shoulder_l_5.addBox(-1.0F, 0.5F, -3.5F, 6, 1, 7, 0.0F); this.am_torso_3 = new ModelRenderer(this, 46, 0); this.am_torso_3.setRotationPoint(0.0F, 9.0F, -2.5F); this.am_torso_3.addBox(-1.0F, -8.0F, -0.5F, 2, 5, 1, 0.0F); this.setRotateAngle(am_torso_3, 0.296705972839036F, 0.0F, 0.0F); this.am_leg_l_1 = new ModelRenderer(this, 28, 36); this.am_leg_l_1.mirror = true; this.am_leg_l_1.setRotationPoint(0.0F, 0.0F, 0.0F); this.am_leg_l_1.addBox(0.0F, -2.0F, -3.0F, 3, 6, 6, 0.0F); this.setRotateAngle(am_leg_l_1, 0.0F, 0.0F, -0.17453292519943295F); this.am_shoulder_l_3 = new ModelRenderer(this, 48, 55); this.am_shoulder_l_3.mirror = true; this.am_shoulder_l_3.setRotationPoint(1.5F, 4.0F, 0.0F); this.am_shoulder_l_3.addBox(0.0F, -4.0F, -2.5F, 2, 4, 5, 0.0F); this.am_torso_5 = new ModelRenderer(this, 28, 48); this.am_torso_5.setRotationPoint(0.0F, 9.0F, -1.0F); this.am_torso_5.addBox(-2.0F, -4.0F, -2.0F, 4, 4, 4, 0.0F); this.am_leg_r_2 = new ModelRenderer(this, 28, 28); this.am_leg_r_2.setRotationPoint(0.0F, -2.0F, 0.0F); this.am_leg_r_2.addBox(-4.0F, 0.0F, -3.5F, 4, 1, 7, 0.0F); this.am_torso_1 = new ModelRenderer(this, 36, 0); this.am_torso_1.setRotationPoint(-2.25F, 9.0F, -2.0F); this.am_torso_1.addBox(-2.0F, -8.0F, 0.0F, 4, 5, 1, 0.0F); this.setRotateAngle(am_torso_1, 0.3141592653589793F, 0.5235987755982988F, 0.10471975511965977F); this.am_helm_1 = new ModelRenderer(this, 0, 0); this.am_helm_1.setRotationPoint(0.0F, 0.0F, 0.0F); this.am_helm_1.addBox(-4.5F, -9.0F, -4.5F, 9, 9, 9, 0.0F); this.am_boot_r = new ModelRenderer(this, 36, 8); this.am_boot_r.setRotationPoint(0.0F, 0.0F, 0.0F); this.am_boot_r.addBox(-2.5F, 7.0F, -2.5F, 5, 5, 5, 0.0F); this.am_shoulder_r_3 = new ModelRenderer(this, 16, 18); this.am_shoulder_r_3.setRotationPoint(0.0F, -2.5F, 0.0F); this.am_shoulder_r_3.addBox(-1.0F, -2.0F, -3.0F, 1, 2, 6, 0.0F); this.bipedHead.addChild(this.am_helm_1); this.bipedRightLeg.addChild(this.am_leg_pivot_r); this.bipedLeftLeg.addChild(this.am_leg_pivot_l); this.bipedRightLeg.addChild(this.am_boot_r); this.bipedLeftLeg.addChild(this.am_boot_l); this.bipedRightArm.addChild(this.am_shoulder_r_1); this.bipedLeftArm.addChild(this.am_shoulder_l_1); this.bipedBody.addChild(this.am_torso); this.am_torso.addChild(this.am_torso_4); this.am_helm_1.addChild(this.am_helm_2); this.am_shoulder_r_1.addChild(this.am_shoulder_r_2); this.am_torso.addChild(this.am_torso_2); this.am_shoulder_r_1.addChild(this.am_shoulder_r_4); this.am_leg_l_1.addChild(this.am_leg_l_2); this.am_shoulder_r_1.addChild(this.am_shoulder_r_5); this.am_shoulder_l_1.addChild(this.am_shoulder_l_4); this.am_shoulder_l_1.addChild(this.am_shoulder_l_6); this.am_shoulder_l_1.addChild(this.am_shoulder_l_5); this.am_torso.addChild(this.am_torso_3); this.am_shoulder_l_1.addChild(this.am_shoulder_l_3); this.am_torso.addChild(this.am_torso_5); this.am_leg_r_1.addChild(this.am_leg_r_2); this.am_torso.addChild(this.am_torso_1); this.am_shoulder_r_1.addChild(this.am_shoulder_r_3); this.am_leg_pivot_r.addChild(this.am_leg_r_1); this.am_leg_pivot_l.addChild(this.am_leg_l_1); } However, this is the result when I put on the armor in-game (ignore the missing textures for now, it's intentional) Wearing ONLY helm. Okay, this is correct. ONLY chestplate. Correct as well. ONLY legging. For some reason, am_torso is rendered as well and when I put on the feet, it looks like it's rendering the entire legging because BipedModel doesn't have a group just for feet. What's the cleanest way to do this?
-
So in my IntelliJ environment's src/mods directory, just for testing (I know this isn't the right way to go about adding other mods as soft dependencies) I added JEI's latest jar file to it, but the game crashes because that mod doesn't load correctly. I know this is caused by two mods having different mapping versions, i.e. if I have a snapshot version of some 1.16.3 mapper whereas the other mod has a mapper for 1.16.5. But my question is, will this issue remain even after I add my mod's .JAR to a non-dev environment? ---- Minecraft Crash Report ---- // Sorry :( Time: 4/18/21 9:44 AM Description: Mod loading error has occurred java.lang.Exception: Mod Loading has failed at net.minecraftforge.fml.CrashReportExtender.dumpModLoadingCrashReport(CrashReportExtender.java:85) ~[forge-1.16.5-36.0.46_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading} at net.minecraftforge.fml.client.ClientModLoader.completeModLoading(ClientModLoader.java:188) ~[forge-1.16.5-36.0.46_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.lambda$null$1(Minecraft.java:513) ~[forge-1.16.5-36.0.46_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.util.Util.acceptOrElse(Util.java:323) ~[forge-1.16.5-36.0.46_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading} at net.minecraft.client.Minecraft.lambda$new$2(Minecraft.java:509) ~[forge-1.16.5-36.0.46_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.gui.ResourceLoadProgressGui.render(ResourceLoadProgressGui.java:113) ~[forge-1.16.5-36.0.46_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at net.minecraft.client.renderer.GameRenderer.updateCameraAndRender(GameRenderer.java:493) ~[forge-1.16.5-36.0.46_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1002) ~[forge-1.16.5-36.0.46_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.run(Minecraft.java:612) ~[forge-1.16.5-36.0.46_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A} at net.minecraft.client.main.Main.main(Main.java:184) ~[forge-1.16.5-36.0.46_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A} at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_241] {} at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_241] {} at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_241] {} at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_241] {} at net.minecraftforge.userdev.FMLUserdevClientLaunchProvider.lambda$launchService$0(FMLUserdevClientLaunchProvider.java:52) ~[forge-1.16.5-36.0.46_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.0.9.jar:?] {} at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.0.9.jar:?] {} at net.minecraftforge.userdev.LaunchTesting.main(LaunchTesting.java:105) [forge-1.16.5-36.0.46_mapped_snapshot_20201028-1.16.3-recomp.jar:?] {} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Render thread Stacktrace: at mezz.jei.config.ModIdFormattingConfig.parseFriendlyModNameFormat(ModIdFormattingConfig.java:111) ~[jei:7.6.4.88] {re:classloading} -- MOD jei -- Details: Mod File: jei-1.16.5-7.6.4.88.jar Failure message: Just Enough Items (jei) has failed to load correctly java.lang.NoSuchMethodError: net.minecraft.util.text.TextFormatting.func_96300_b(Ljava/lang/String;)Lnet/minecraft/util/text/TextFormatting; Mod Version: 7.6.4.88 Mod Issue URL: https://github.com/mezz/JustEnoughItems/issues?q=is%3Aissue Exception message: java.lang.NoSuchMethodError: net.minecraft.util.text.TextFormatting.func_96300_b(Ljava/lang/String;)Lnet/minecraft/util/text/TextFormatting; Stacktrace: at mezz.jei.config.ModIdFormattingConfig.parseFriendlyModNameFormat(ModIdFormattingConfig.java:111) ~[jei:7.6.4.88] {re:classloading} at mezz.jei.config.ModIdFormattingConfig.<init>(ModIdFormattingConfig.java:35) ~[jei:7.6.4.88] {re:classloading} at mezz.jei.config.JEIClientConfig.<clinit>(JEIClientConfig.java:24) ~[jei:7.6.4.88] {re:classloading} at mezz.jei.JustEnoughItems.clientStart(JustEnoughItems.java:32) ~[jei:7.6.4.88] {re:classloading} at mezz.jei.JustEnoughItems.lambda$null$0(JustEnoughItems.java:27) ~[jei:7.6.4.88] {re:classloading} at net.minecraftforge.fml.DistExecutor.unsafeRunWhenOn(DistExecutor.java:125) ~[forge:?] {re:classloading} at net.minecraftforge.fml.DistExecutor.runWhenOn(DistExecutor.java:109) ~[forge:?] {re:classloading} at mezz.jei.JustEnoughItems.<init>(JustEnoughItems.java:27) ~[jei:7.6.4.88] {re:classloading} at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_241] {} at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_241] {} at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_241] {} at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_241] {} at java.lang.Class.newInstance(Class.java:442) ~[?:1.8.0_241] {} at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:81) ~[forge:36.0] {re:classloading} at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$4(ModContainer.java:120) ~[forge:?] {re:classloading} at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1640) ~[?:1.8.0_241] {} at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1632) ~[?:1.8.0_241] {} at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) ~[?:1.8.0_241] {} at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) ~[?:1.8.0_241] {} at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) ~[?:1.8.0_241] {} at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) ~[?:1.8.0_241] {} -- System Details -- Details: Minecraft Version: 1.16.5 Minecraft Version ID: 1.16.5 Operating System: Windows 10 (amd64) version 10.0 Java Version: 1.8.0_241, Oracle Corporation Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 133789360 bytes (127 MB) / 1671954432 bytes (1594 MB) up to 3806855168 bytes (3630 MB) CPUs: 12 JVM Flags: 1 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump ModLauncher: 8.0.9+86+master.3cf110c ModLauncher launch target: fmluserdevclient ModLauncher naming: mcp ModLauncher services: /mixin-0.8.2.jar mixin PLUGINSERVICE /eventbus-4.0.0.jar eventbus PLUGINSERVICE /forge-1.16.5-36.0.46_mapped_snapshot_20201028-1.16.3-launcher.jar object_holder_definalize PLUGINSERVICE /forge-1.16.5-36.0.46_mapped_snapshot_20201028-1.16.3-launcher.jar runtime_enum_extender PLUGINSERVICE /accesstransformers-3.0.1.jar accesstransformer PLUGINSERVICE /forge-1.16.5-36.0.46_mapped_snapshot_20201028-1.16.3-launcher.jar capability_inject_definalize PLUGINSERVICE /forge-1.16.5-36.0.46_mapped_snapshot_20201028-1.16.3-launcher.jar runtimedistcleaner PLUGINSERVICE /mixin-0.8.2.jar mixin TRANSFORMATIONSERVICE /forge-1.16.5-36.0.46_mapped_snapshot_20201028-1.16.3-launcher.jar fml TRANSFORMATIONSERVICE FML: 36.0 Forge: net.minecraftforge:36.0.46 FML Language Providers: javafml@36.0 minecraft@1 Mod List: client-extra.jar |Minecraft |minecraft |1.16.5 |CREATE_REG|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 forge-1.16.5-36.0.46_mapped_snapshot_20201028-1.16|Forge |forge |36.0.46 |CREATE_REG|NOSIGNATURE main |Withernauts |withernauts |NONE |CREATE_REG|NOSIGNATURE citadel-1.6.2-deobf.jar |Citadel |citadel |1.6.2 |CREATE_REG|NOSIGNATURE jei-1.16.5-7.6.4.88.jar |Just Enough Items |jei |7.6.4.88 |ERROR |NOSIGNATURE Crash Report UUID: 1104a884-1b05-49bb-a69a-24e21bda1651
-
[1.16.5] How To Make A Strippable Log Block.
Turtledove replied to immortalcatz's topic in Modder Support
? Registering the block and overriding a function inside the class are two completely different things