Jump to content

[1.17.1] Forge Capability - How to save?


chickenwand3

Recommended Posts

Hey guys I have created a mod that assigns levels to mobs and scales them up using capabilities, everything works great but because of the recent changes to capabilities I am unable to find examples on how to save the level of my mobs so that it remains the same if I restart the server. I will upload all my files relating to the capability and hope you guys can lead me in the right direction :)
 

package com.chickenwand3.rpgmod.core.capabilities.entity;

import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.CapabilityInject;
import net.minecraftforge.common.capabilities.CapabilityManager;

@SuppressWarnings("removal")
public class CapabilityMobLevel {

    @CapabilityInject(MobLevel.class)
    public static Capability<MobLevel> MOB_LEVEL_CAPABILITY = null;

    public static void register() {
        CapabilityManager.INSTANCE.register(MobLevel.class);
    }
}
package com.chickenwand3.rpgmod.core.capabilities.entity;

public class DefaultMobLevel implements MobLevel {

    public int mobLevel;
    public float mobMaxHealth;
    public float mobCurrentHealth;
    public boolean crazy;
    
    public boolean isCrazy() {
    	return crazy;
    }
    
    public float getMaxHealth() {
    	return mobMaxHealth;
    }
    
    public float getCurrentHealth() {
    	return mobCurrentHealth;
    }
}
package com.chickenwand3.rpgmod.core.capabilities.entity;

public interface MobLevel {
}
package com.chickenwand3.rpgmod.core.capabilities.entity;

import com.chickenwand3.rpgmod.RPGMod;

import net.minecraft.resources.ResourceLocation;

import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.Mob;
import net.minecraft.world.entity.ai.attributes.Attributes;
import net.minecraft.world.entity.monster.Zombie;
import net.minecraft.world.item.enchantment.Enchantments;
import net.minecraftforge.event.AttachCapabilitiesEvent;
import net.minecraftforge.event.entity.EntityJoinWorldEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;

@Mod.EventBusSubscriber(modid = RPGMod.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE)
public class MobLevelEventHandler {
	@SubscribeEvent
	public static void onAttachCapabilitiesEvent(AttachCapabilitiesEvent<Entity> event) {
		if (event.getObject() instanceof Mob && !event.getObject().getCommandSenderWorld().isClientSide) {
			MobLevelProvider providerMobLevel = new MobLevelProvider();
			event.addCapability(new ResourceLocation(RPGMod.MODID, "moblevel"), providerMobLevel);
			event.addListener(providerMobLevel::invalidate);
		}
	}

	@SubscribeEvent
	public static void OnSpawn(final EntityJoinWorldEvent event) {
		if (event.getEntity()instanceof Mob target && !event.getWorld().isClientSide) {
			target.getCapability(CapabilityMobLevel.MOB_LEVEL_CAPABILITY).ifPresent(mobLevel -> {
				DefaultMobLevel actualMobLevel = (DefaultMobLevel) mobLevel;
				actualMobLevel.mobLevel = (randomizeMobLevel());

				if (superCrazy(actualMobLevel.mobLevel)) {
					actualMobLevel.crazy = true;
				}

				if (actualMobLevel.crazy) {

					if (!target.getMainHandItem().isEmpty()) {
						target.getMainHandItem().enchant(Enchantments.FIRE_ASPECT, 1);
					}
					if (event.getEntity()instanceof Zombie zombie) {
						zombie.getAttribute(Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(0.99D);
					}
					System.out.println("Super Crazy " + target.getName() + " has spawned!");
				}

				actualMobLevel.mobMaxHealth = (target.getMaxHealth() * actualMobLevel.mobLevel * 2);
				actualMobLevel.mobCurrentHealth = actualMobLevel.mobMaxHealth;
				target.getAttribute(Attributes.MOVEMENT_SPEED)
						.setBaseValue(target.getAttributeValue(Attributes.MOVEMENT_SPEED)
								* (1 + (actualMobLevel.mobLevel - 1.0) / 10.0));

				if (target.getAttribute(Attributes.ATTACK_DAMAGE) != null) {
					target.getAttribute(Attributes.ATTACK_DAMAGE)
							.setBaseValue(target.getAttributeValue(Attributes.ATTACK_DAMAGE)
									* (1 + (actualMobLevel.mobLevel - 1.0) / 2.0));
				}

			});
		}
	}

	private static int randomizeMobLevel() {
		boolean roll = true;
		int level = 1;
		while (roll) {
			if (Math.random() > .5) {
				level += 1;
				roll = true;
			} else {
				roll = false;
			}
		}
		return level;
	}

	private static boolean superCrazy(int level) {
		boolean result = false;
		if (level >= 5) {
			if (Math.random() < .25) {
				result = true;
			} else
				result = false;
		}
		return result;
	}

}
package com.chickenwand3.rpgmod.core.capabilities.entity;

import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.ICapabilitySerializable;
import net.minecraftforge.common.util.LazyOptional;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;

public class MobLevelProvider implements ICapabilitySerializable<CompoundTag> {
    private final DefaultMobLevel mobLevel = new DefaultMobLevel();
    private final LazyOptional<MobLevel> mobLevelOptional = LazyOptional.of(() -> mobLevel);

    public void invalidate() {
        mobLevelOptional.invalidate();
    }

    @Nonnull
    @Override
    public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) {
        return mobLevelOptional.cast();
    }

    @Override
    public CompoundTag serializeNBT() {
        if (CapabilityMobLevel.MOB_LEVEL_CAPABILITY == null) {
            return new CompoundTag();
        } else {
            CompoundTag compoundNBT = new CompoundTag();
            compoundNBT.putInt("mobLevel", mobLevel.mobLevel);
            compoundNBT.putFloat("mobCurrentHealth", mobLevel.mobCurrentHealth);
            compoundNBT.putFloat("mobMaxHealth", mobLevel.mobMaxHealth);
            compoundNBT.putBoolean("crazy", mobLevel.crazy);
            return compoundNBT;
        }
    }
    

    @Override
    public void deserializeNBT(CompoundTag nbt) {
        if (CapabilityMobLevel.MOB_LEVEL_CAPABILITY != null) {
            mobLevel.mobLevel = (nbt.getInt("mobLevel"));
            
            float mobCurrentHealth = nbt.getFloat("mobCurrentHealth");
            mobLevel.mobCurrentHealth = (mobCurrentHealth);
            
            float mobMaxHealth = nbt.getFloat("mobMaxHealth");
            mobLevel.mobMaxHealth = (mobMaxHealth);
            
            boolean crazy = nbt.getBoolean("crazy");
            mobLevel.crazy = (crazy);
        }
    }
}

 

Link to comment
Share on other sites

4 hours ago, chickenwand3 said:

I will upload all my files relating to the capability and hope you guys can lead me in the right direction

Is that a question?

If yes, your capability should be saved since your CapabilityProvider implements ICapabilitySerializable

Link to comment
Share on other sites

Yeah its a question sorry for phrasing it weird, currently everytime I restart the server the mobs .mobLevel is being reset because it isn't saving. Im trying to decipher why this is happening and how to make it so that the .mobLevel for all the mobs in the server persists after a server restart :)

Link to comment
Share on other sites

https://pastebin.com/LvSbvYhL
 

@Override
    public CompoundTag serializeNBT() {
    	System.out.println("It serialized");
        if (CapabilityMobLevel.MOB_LEVEL_CAPABILITY == null) {
        	System.out.println("It made a new compound");
            return new CompoundTag();
        } else {
        	System.out.println("It serialized the values");
            CompoundTag compoundNBT = new CompoundTag();
            compoundNBT.putInt("mobLevel", mobLevel.mobLevel);
            compoundNBT.putFloat("mobCurrentHealth", mobLevel.mobCurrentHealth);
            compoundNBT.putFloat("mobMaxHealth", mobLevel.mobMaxHealth);
            compoundNBT.putBoolean("crazy", mobLevel.crazy);
            return compoundNBT;
        }
    }
    

    @Override
    public void deserializeNBT(CompoundTag nbt) {
    	System.out.println("It deserialized");
        if (CapabilityMobLevel.MOB_LEVEL_CAPABILITY != null) {
        	System.out.println("It deserialized the values");
            mobLevel.mobLevel = (nbt.getInt("mobLevel"));
            
            float mobCurrentHealth = nbt.getFloat("mobCurrentHealth");
            mobLevel.mobCurrentHealth = (mobCurrentHealth);
            
            float mobMaxHealth = nbt.getFloat("mobMaxHealth");
            mobLevel.mobMaxHealth = (mobMaxHealth);
            
            boolean crazy = nbt.getBoolean("crazy");
            mobLevel.crazy = (crazy);
        }
    }

It seems like CapabilityMobLevel.MOB_LEVEL_CAPABILITY is always null and that is why it is acting like its a new entity and generating new values
 

Link to comment
Share on other sites

It worked thanks a lot ❤️ I'm gonna paste all of my code for anyone in the future looking to do capabilities

package com.chickenwand3.rpgmod.core.capabilities.entity;

import javax.annotation.Nullable;

import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.CapabilityManager;
import net.minecraftforge.common.capabilities.CapabilityToken;
import net.minecraftforge.common.capabilities.ICapabilityProvider;

public class CapabilityMobLevel{
	
    public static Capability<MobLevel> MOB_LEVEL_CAPABILITY = CapabilityManager.get(new CapabilityToken<>() {});
    
    public static void register() {
        CapabilityManager.INSTANCE.register(MobLevel.class);
    }
    

}
package com.chickenwand3.rpgmod.core.capabilities.entity;

public class DefaultMobLevel implements MobLevel {

    public int mobLevel;
    public float mobMaxHealth;
    public float mobCurrentHealth;
    public boolean crazy;
    
    public boolean isCrazy() {
    	return crazy;
    }
    
    public float getMaxHealth() {
    	return mobMaxHealth;
    }
    
    public float getCurrentHealth() {
    	return mobCurrentHealth;
    }
}
package com.chickenwand3.rpgmod.core.capabilities.entity;

public interface MobLevel {
}
package com.chickenwand3.rpgmod.core.capabilities.entity;

import com.chickenwand3.rpgmod.RPGMod;

import net.minecraft.resources.ResourceLocation;

import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.Mob;
import net.minecraft.world.entity.ai.attributes.Attributes;
import net.minecraft.world.entity.animal.Animal;
import net.minecraft.world.entity.monster.Zombie;
import net.minecraft.world.item.enchantment.Enchantments;
import net.minecraftforge.common.capabilities.RegisterCapabilitiesEvent;
import net.minecraftforge.event.AttachCapabilitiesEvent;
import net.minecraftforge.event.entity.EntityJoinWorldEvent;
import net.minecraftforge.event.entity.living.LivingDeathEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;

@Mod.EventBusSubscriber(modid = RPGMod.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE)
public class MobLevelEventHandler {
	@SubscribeEvent
	public static void onAttachCapabilitiesEvent(AttachCapabilitiesEvent<Entity> event) {
		if (event.getObject() instanceof Mob && !event.getObject().getCommandSenderWorld().isClientSide) {
			MobLevelProvider providerMobLevel = new MobLevelProvider();
			event.addCapability(new ResourceLocation(RPGMod.MODID, "moblevel"), providerMobLevel);
			event.addListener(providerMobLevel::invalidate);
		}
	}
	
	@SubscribeEvent
	public void registerCaps(RegisterCapabilitiesEvent event) {
	    event.register(MobLevel.class);
	}
	
	
	

	@SubscribeEvent
	public static void OnSpawn(final EntityJoinWorldEvent event) {
		if (event.getEntity()instanceof Mob target && !event.getWorld().isClientSide) {
			target.getCapability(CapabilityMobLevel.MOB_LEVEL_CAPABILITY).ifPresent(mobLevel -> {
				DefaultMobLevel actualMobLevel = (DefaultMobLevel) mobLevel;
				
				if (actualMobLevel.mobLevel < 1) {
					actualMobLevel.mobLevel = (randomizeMobLevel());
				}

				if (superCrazy(actualMobLevel.mobLevel)) {
					actualMobLevel.crazy = true;
				}

				if (actualMobLevel.crazy) {

					if (!target.getMainHandItem().isEmpty()) {
						target.getMainHandItem().enchant(Enchantments.FIRE_ASPECT, 1);
					}
					if (event.getEntity()instanceof Zombie zombie) {
						zombie.getAttribute(Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(0.99D);
					}
					System.out.println("Super Crazy " + target.getName() + " has spawned!");
				}

				actualMobLevel.mobMaxHealth = (target.getMaxHealth() * actualMobLevel.mobLevel * 2);
				actualMobLevel.mobCurrentHealth = actualMobLevel.mobMaxHealth;
				target.getAttribute(Attributes.MOVEMENT_SPEED)
						.setBaseValue(target.getAttributeValue(Attributes.MOVEMENT_SPEED)
								* (1 + (actualMobLevel.mobLevel - 1.0) / 10.0));

				if (target.getAttribute(Attributes.ATTACK_DAMAGE) != null) {
					target.getAttribute(Attributes.ATTACK_DAMAGE)
							.setBaseValue(target.getAttributeValue(Attributes.ATTACK_DAMAGE)
									* (1 + (actualMobLevel.mobLevel - 1.0) / 2.0));
				}

			});
		}
	}

	private static int randomizeMobLevel() {
		boolean roll = true;
		int level = 1;
		while (roll) {
			if (Math.random() > .5) {
				level += 1;
				roll = true;
			} else {
				roll = false;
			}
		}
		return level;
	}

	private static boolean superCrazy(int level) {
		boolean result = false;
		if (level >= 5) {
			if (Math.random() < .25) {
				result = true;
			} else
				result = false;
		}
		return result;
	}

}
package com.chickenwand3.rpgmod.core.capabilities.entity;

import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.ICapabilitySerializable;
import net.minecraftforge.common.util.LazyOptional;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;

public class MobLevelProvider implements ICapabilitySerializable<CompoundTag> {
    private final DefaultMobLevel mobLevel = new DefaultMobLevel();
    private final LazyOptional<MobLevel> mobLevelOptional = LazyOptional.of(() -> mobLevel);

    public void invalidate() {
        mobLevelOptional.invalidate();
    }

    @Nonnull
    @Override
    public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) {
        return mobLevelOptional.cast();
    }

    @Override
    public CompoundTag serializeNBT() {
    	System.out.println("It serialized");
        if (CapabilityMobLevel.MOB_LEVEL_CAPABILITY == null) {
        	System.out.println("It made a new compound");
            return new CompoundTag();
        } else {
        	System.out.println("It serialized the values");
            CompoundTag compoundNBT = new CompoundTag();
            compoundNBT.putInt("mobLevel", mobLevel.mobLevel);
            compoundNBT.putFloat("mobCurrentHealth", mobLevel.mobCurrentHealth);
            compoundNBT.putFloat("mobMaxHealth", mobLevel.mobMaxHealth);
            compoundNBT.putBoolean("crazy", mobLevel.crazy);
            return compoundNBT;
        }
    }
    

    @Override
    public void deserializeNBT(CompoundTag nbt) {
    	System.out.println("It deserialized");
        if (CapabilityMobLevel.MOB_LEVEL_CAPABILITY != null) {
        	System.out.println("It deserialized the values");
            mobLevel.mobLevel = (nbt.getInt("mobLevel"));
            
            float mobCurrentHealth = nbt.getFloat("mobCurrentHealth");
            mobLevel.mobCurrentHealth = (mobCurrentHealth);
            
            float mobMaxHealth = nbt.getFloat("mobMaxHealth");
            mobLevel.mobMaxHealth = (mobMaxHealth);
            
            boolean crazy = nbt.getBoolean("crazy");
            mobLevel.crazy = (crazy);
        }
    }
}

 

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now


  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Okay so I redid everything and now it is working. I have no idea what I did different but it worked. Thank you for your time.
    • If you read your logs, it would be using Java 17. I assumed that you modified the JVM installation in the profile. However, it working indicates that you haven't, meaning you were just using the version of Java shipped with the client. I will reiterate that Minecraft 1.19 was compiled with Java 17, which means it will only be forward compatible with newer versions and crash on older versions with a class version error.
    • it worked before, but now I have an entirely different problem with an entirely different modpack   ---- Minecraft Crash Report ---- // Don't do that. Time: 2023-06-01 09:33:49 Description: Rendering overlay java.lang.IllegalStateException: Failed to create model for minecraft:hanging_sign     at net.minecraft.client.renderer.blockentity.BlockEntityRenderers.m_257086_(BlockEntityRenderers.java:26) ~[client-1.19.4-20230314.122934-srg.jar%23440!/:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at java.util.concurrent.ConcurrentHashMap.forEach(ConcurrentHashMap.java:1603) ~[?:?] {}     at net.minecraft.client.renderer.blockentity.BlockEntityRenderers.m_173598_(BlockEntityRenderers.java:22) ~[client-1.19.4-20230314.122934-srg.jar%23440!/:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher.m_6213_(BlockEntityRenderDispatcher.java:125) ~[client-1.19.4-20230314.122934-srg.jar%23440!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:supplementaries.mixins.json:BlockEntityRendererDispatcherMixin,pl:mixin:A}     at net.minecraft.server.packs.resources.ResourceManagerReloadListener.m_10759_(ResourceManagerReloadListener.java:15) ~[client-1.19.4-20230314.122934-srg.jar%23440!/:?] {re:classloading,re:mixin}     at java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:787) ~[?:?] {}     at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {}     at net.minecraft.server.packs.resources.SimpleReloadInstance.m_143940_(SimpleReloadInstance.java:69) ~[client-1.19.4-20230314.122934-srg.jar%23440!/:?] {re:classloading}     at net.minecraft.util.thread.BlockableEventLoop.m_6367_(BlockableEventLoop.java:156) ~[client-1.19.4-20230314.122934-srg.jar%23440!/:?] {re:mixin,pl:accesstransformer:B,re:computing_frames,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B}     at net.minecraft.util.thread.ReentrantBlockableEventLoop.m_6367_(ReentrantBlockableEventLoop.java:23) ~[client-1.19.4-20230314.122934-srg.jar%23440!/:?] {re:mixin,re:computing_frames,re:classloading}     at net.minecraft.util.thread.BlockableEventLoop.m_7245_(BlockableEventLoop.java:130) ~[client-1.19.4-20230314.122934-srg.jar%23440!/:?] {re:mixin,pl:accesstransformer:B,re:computing_frames,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B}     at net.minecraft.util.thread.BlockableEventLoop.m_18699_(BlockableEventLoop.java:115) ~[client-1.19.4-20230314.122934-srg.jar%23440!/:?] {re:mixin,pl:accesstransformer:B,re:computing_frames,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B}     at net.minecraft.client.Minecraft.m_91383_(Minecraft.java:1108) ~[client-1.19.4-20230314.122934-srg.jar%23440!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:combatroll.mixins.json:MinecraftClientMixin,pl:mixin:APP:notenoughcrashes.mixins.json:client.MixinMinecraftClient,pl:mixin:APP:neat.mixins.json:MinecraftMixin,pl:mixin:APP:bookshelf.common.mixins.json:accessors.client.AccessorMinecraft,pl:mixin:APP:balm.mixins.json:MinecraftMixin,pl:mixin:APP:carryon.mixins.json:MinecraftMixin,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:mining_helmet.mixins.json:MinecraftMixin,pl:mixin:APP:travelerstitles.mixins.json:MinecraftClientTickMixin,pl:mixin:APP:mixin.dynamic_asset_generator.json:MinecraftMixin,pl:mixin:APP:bettercombat.mixins.json:client.MinecraftClientAccessor,pl:mixin:APP:bettercombat.mixins.json:client.MinecraftClientInject,pl:mixin:APP:iceberg.mixins.json:MinecraftMixin,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:719) ~[client-1.19.4-20230314.122934-srg.jar%23440!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:combatroll.mixins.json:MinecraftClientMixin,pl:mixin:APP:notenoughcrashes.mixins.json:client.MixinMinecraftClient,pl:mixin:APP:neat.mixins.json:MinecraftMixin,pl:mixin:APP:bookshelf.common.mixins.json:accessors.client.AccessorMinecraft,pl:mixin:APP:balm.mixins.json:MinecraftMixin,pl:mixin:APP:carryon.mixins.json:MinecraftMixin,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:mining_helmet.mixins.json:MinecraftMixin,pl:mixin:APP:travelerstitles.mixins.json:MinecraftClientTickMixin,pl:mixin:APP:mixin.dynamic_asset_generator.json:MinecraftMixin,pl:mixin:APP:bettercombat.mixins.json:client.MinecraftClientAccessor,pl:mixin:APP:bettercombat.mixins.json:client.MinecraftClientInject,pl:mixin:APP:iceberg.mixins.json:MinecraftMixin,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.main.Main.main(Main.java:205) ~[1.19.4-forge-45.0.66.jar:?] {re:classloading,re:mixin,pl:runtimedistcleaner:A,pl:mixin:A,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:27) ~[fmlloader-1.19.4-45.0.66.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:30) ~[modlauncher-10.0.8.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) ~[modlauncher-10.0.8.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) ~[modlauncher-10.0.8.jar:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:106) ~[modlauncher-10.0.8.jar:?] {}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:77) ~[modlauncher-10.0.8.jar:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) ~[modlauncher-10.0.8.jar:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) ~[modlauncher-10.0.8.jar:?] {}     at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141) ~[bootstraplauncher-1.1.2.jar:?] {} Caused by: java.lang.IllegalArgumentException: No model for layer supplementaries:hanging_sign_extension#hanging_sign_extension     at net.minecraft.client.model.geom.EntityModelSet.m_171103_(EntityModelSet.java:17) ~[client-1.19.4-20230314.122934-srg.jar%23440!/:?] {re:mixin,re:classloading,pl:mixin:APP:witherstormmod.mixins.json:IMixinEntityModelSet,pl:mixin:A}     at net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider$Context.m_173582_(BlockEntityRendererProvider.java:52) ~[client-1.19.4-20230314.122934-srg.jar%23440!/:?] {re:mixin,re:classloading}     at net.minecraft.client.renderer.blockentity.HangingSignRenderer.handler$zkj000$initEnhancedSign(HangingSignRenderer.java:569) ~[client-1.19.4-20230314.122934-srg.jar%23440!/:?] {re:mixin,re:classloading,pl:mixin:APP:supplementaries-common.mixins.json:HangingSignRendererMixin,pl:mixin:A}     at net.minecraft.client.renderer.blockentity.HangingSignRenderer.<init>(HangingSignRenderer.java:49) ~[client-1.19.4-20230314.122934-srg.jar%23440!/:?] {re:mixin,re:classloading,pl:mixin:APP:supplementaries-common.mixins.json:HangingSignRendererMixin,pl:mixin:A}     at net.minecraft.client.renderer.blockentity.BlockEntityRenderers.m_257086_(BlockEntityRenderers.java:24) ~[client-1.19.4-20230314.122934-srg.jar%23440!/:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}     ... 27 more A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Render thread Stacktrace:     at net.minecraft.client.renderer.blockentity.BlockEntityRenderers.m_257086_(BlockEntityRenderers.java:26) ~[client-1.19.4-20230314.122934-srg.jar%23440!/:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at java.util.concurrent.ConcurrentHashMap.forEach(ConcurrentHashMap.java:1603) ~[?:?] {}     at net.minecraft.client.renderer.blockentity.BlockEntityRenderers.m_173598_(BlockEntityRenderers.java:22) ~[client-1.19.4-20230314.122934-srg.jar%23440!/:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher.m_6213_(BlockEntityRenderDispatcher.java:125) ~[client-1.19.4-20230314.122934-srg.jar%23440!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:supplementaries.mixins.json:BlockEntityRendererDispatcherMixin,pl:mixin:A}     at net.minecraft.server.packs.resources.ResourceManagerReloadListener.m_10759_(ResourceManagerReloadListener.java:15) ~[client-1.19.4-20230314.122934-srg.jar%23440!/:?] {re:classloading,re:mixin}     at java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:787) ~[?:?] {}     at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] {}     at net.minecraft.server.packs.resources.SimpleReloadInstance.m_143940_(SimpleReloadInstance.java:69) ~[client-1.19.4-20230314.122934-srg.jar%23440!/:?] {re:classloading}     at net.minecraft.util.thread.BlockableEventLoop.m_6367_(BlockableEventLoop.java:156) ~[client-1.19.4-20230314.122934-srg.jar%23440!/:?] {re:mixin,pl:accesstransformer:B,re:computing_frames,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B}     at net.minecraft.util.thread.ReentrantBlockableEventLoop.m_6367_(ReentrantBlockableEventLoop.java:23) ~[client-1.19.4-20230314.122934-srg.jar%23440!/:?] {re:mixin,re:computing_frames,re:classloading}     at net.minecraft.util.thread.BlockableEventLoop.m_7245_(BlockableEventLoop.java:130) ~[client-1.19.4-20230314.122934-srg.jar%23440!/:?] {re:mixin,pl:accesstransformer:B,re:computing_frames,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B} -- Overlay render details -- Details:     Overlay name: net.minecraft.client.gui.screens.LoadingOverlay Stacktrace:     at net.minecraft.client.renderer.GameRenderer.m_109093_(GameRenderer.java:943) ~[client-1.19.4-20230314.122934-srg.jar%23440!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:supplementaries-common.mixins.json:GameRendererMixin,pl:mixin:APP:witherstormmod.mixins.json:IMixinGameRenderer,pl:mixin:APP:witherstormmod.mixins.json:MixinGameRenderer,pl:mixin:APP:tombstone.mixins.json:GameRendererMixin,pl:mixin:APP:jade.mixins.json:GameRendererMixin,pl:mixin:APP:ad_astra-common.mixins.json:client.GameRendererMixin,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91383_(Minecraft.java:1148) ~[client-1.19.4-20230314.122934-srg.jar%23440!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:combatroll.mixins.json:MinecraftClientMixin,pl:mixin:APP:notenoughcrashes.mixins.json:client.MixinMinecraftClient,pl:mixin:APP:neat.mixins.json:MinecraftMixin,pl:mixin:APP:bookshelf.common.mixins.json:accessors.client.AccessorMinecraft,pl:mixin:APP:balm.mixins.json:MinecraftMixin,pl:mixin:APP:carryon.mixins.json:MinecraftMixin,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:mining_helmet.mixins.json:MinecraftMixin,pl:mixin:APP:travelerstitles.mixins.json:MinecraftClientTickMixin,pl:mixin:APP:mixin.dynamic_asset_generator.json:MinecraftMixin,pl:mixin:APP:bettercombat.mixins.json:client.MinecraftClientAccessor,pl:mixin:APP:bettercombat.mixins.json:client.MinecraftClientInject,pl:mixin:APP:iceberg.mixins.json:MinecraftMixin,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:719) ~[client-1.19.4-20230314.122934-srg.jar%23440!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:combatroll.mixins.json:MinecraftClientMixin,pl:mixin:APP:notenoughcrashes.mixins.json:client.MixinMinecraftClient,pl:mixin:APP:neat.mixins.json:MinecraftMixin,pl:mixin:APP:bookshelf.common.mixins.json:accessors.client.AccessorMinecraft,pl:mixin:APP:balm.mixins.json:MinecraftMixin,pl:mixin:APP:carryon.mixins.json:MinecraftMixin,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:mining_helmet.mixins.json:MinecraftMixin,pl:mixin:APP:travelerstitles.mixins.json:MinecraftClientTickMixin,pl:mixin:APP:mixin.dynamic_asset_generator.json:MinecraftMixin,pl:mixin:APP:bettercombat.mixins.json:client.MinecraftClientAccessor,pl:mixin:APP:bettercombat.mixins.json:client.MinecraftClientInject,pl:mixin:APP:iceberg.mixins.json:MinecraftMixin,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.main.Main.main(Main.java:205) ~[1.19.4-forge-45.0.66.jar:?] {re:classloading,re:mixin,pl:runtimedistcleaner:A,pl:mixin:A,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:27) ~[fmlloader-1.19.4-45.0.66.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:30) ~[modlauncher-10.0.8.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) ~[modlauncher-10.0.8.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) ~[modlauncher-10.0.8.jar:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:106) ~[modlauncher-10.0.8.jar:?] {}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:77) ~[modlauncher-10.0.8.jar:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) ~[modlauncher-10.0.8.jar:?] {}     at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) ~[modlauncher-10.0.8.jar:?] {}     at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141) ~[bootstraplauncher-1.1.2.jar:?] {} -- Last reload -- Details:     Reload number: 1     Reload reason: initial     Finished: No     Packs: vanilla -- System Details -- Details:     Minecraft Version: 1.19.4     Minecraft Version ID: 1.19.4     Operating System: Windows 10 (amd64) version 10.0     Java Version: 17.0.3, Microsoft     Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Microsoft     Memory: 609919896 bytes (581 MiB) / 1140850688 bytes (1088 MiB) up to 13958643712 bytes (13312 MiB)     CPUs: 16     Processor Vendor: AuthenticAMD     Processor Name: AMD Ryzen 9 5900HX with Radeon Graphics             Identifier: AuthenticAMD Family 25 Model 80 Stepping 0     Microarchitecture: Zen 3     Frequency (GHz): 3.29     Number of physical packages: 1     Number of physical CPUs: 8     Number of logical CPUs: 16     Graphics card #0 name: NVIDIA GeForce RTX 3060 Laptop GPU     Graphics card #0 vendor: NVIDIA (0x10de)     Graphics card #0 VRAM (MB): 4095.00     Graphics card #0 deviceId: 0x2520     Graphics card #0 versionInfo: DriverVersion=30.0.15.1278     Graphics card #1 name: AMD Radeon(TM) Graphics     Graphics card #1 vendor: Advanced Micro Devices, Inc. (0x1002)     Graphics card #1 VRAM (MB): 512.00     Graphics card #1 deviceId: 0x1638     Graphics card #1 versionInfo: DriverVersion=30.0.13002.19003     Memory slot #0 capacity (MB): 8192.00     Memory slot #0 clockSpeed (GHz): 3.20     Memory slot #0 type: DDR4     Memory slot #1 capacity (MB): 8192.00     Memory slot #1 clockSpeed (GHz): 3.20     Memory slot #1 type: DDR4     Virtual memory max (MB): 23984.34     Virtual memory used (MB): 14934.35     Swap memory total (MB): 8192.00     Swap memory used (MB): 74.50     JVM Flags: 9 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -Xmx13G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M     Launched Version: 1.19.4-forge-45.0.66     Backend library: LWJGL version 3.3.1 build 7     Backend API: AMD Radeon(TM) Graphics GL version 3.2.14761 Core Profile Forward-Compatible Context 21.30.02.19 30.0.13002.19003, ATI Technologies Inc.     Window size: 854x480     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)     Graphics mode: fancy     Resource Packs:      Current Language: en_us     CPU: 16x AMD Ryzen 9 5900HX with Radeon Graphics      Client Crashes Since Restart: 1     Integrated Server Crashes Since Restart: 0     ModLauncher: 10.0.8+10.0.8+main.0ef7e830     ModLauncher launch target: forgeclient     ModLauncher naming: srg     ModLauncher services:          mixin-0.8.5.jar mixin PLUGINSERVICE          eventbus-6.0.3.jar eventbus PLUGINSERVICE          fmlloader-1.19.4-45.0.66.jar slf4jfixer PLUGINSERVICE          fmlloader-1.19.4-45.0.66.jar object_holder_definalize PLUGINSERVICE          fmlloader-1.19.4-45.0.66.jar runtime_enum_extender PLUGINSERVICE          fmlloader-1.19.4-45.0.66.jar capability_token_subclass PLUGINSERVICE          accesstransformers-8.0.4.jar accesstransformer PLUGINSERVICE          fmlloader-1.19.4-45.0.66.jar runtimedistcleaner PLUGINSERVICE          modlauncher-10.0.8.jar mixin TRANSFORMATIONSERVICE          modlauncher-10.0.8.jar fml TRANSFORMATIONSERVICE      FML Language Providers:          minecraft@1.0         javafml@null         kotlinforforge@4.2.0         lowcodefml@null     Mod List:          client-1.19.4-20230314.122934-srg.jar             |Minecraft                     |minecraft                     |1.19.4              |NONE      |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         forge-1.19.4-45.0.66-universal.jar                |Forge                         |forge                         |45.0.66             |NONE      |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     Suspected Mods: Minecraft (minecraft)
    • https://intellimindz.com/node-js-training-in-chennai/ IntelliMindz’s Node.js training in Chennai takes you all the way from the basics to writing and deploying an application using the Express framework. Here you will learn the use of Modules, Stream, Events, how to communicate with the databases, how to test and debug the Node.js application.
    • nvm i fixed it it was the pre loading screen mod i had.  
  • Topics

×
×
  • Create New...

Important Information

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