Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

[1.17.1] Forge Capability - How to save?


chickenwand3
 Share

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

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

    • I'm having the same issue here too right now for a while now actually where I have already deleted OptiFine and everything else with it as well as all my resource packs because the Minecraft log was saying that every single resource pack was incompatible(even ones that came with the Minecraft mod pack "Better Minecraft" 1.18.2) At first, I couldn't even open up Minecraft cuz it would crash every single time with an absolutely nothing in the logs telling me what the issue was. By then, I've updated all of the mods individually (including all the mods I've added myself) but still having issues. I then just tried out deleting OptiFine and I managed to finally run the game for first time within the past several months(due to many other bugs and issues, even other mod packs that I created myself with only like 12 mods in it but no clear way of solving the issue[and yes I've done numerous clean installs of java too, even using curseforge to use premade packs]). After finally being able to launch Minecraft, I then have to delete every single resource pack (like I said before) because the logs were telling me that they're all invalid (including ones that came with the modpack, or a folder that would automatically be installed called "graphics"). After deleting all my resource packs, now I'm having this pop up anytime I'm trying to start up world and I have no idea where to go from here   Sorry if when I'm writing is a bit too much, just giving as much info as I can, if it helps of course.      
    • Solved. Either Windows Defender or NordVPN blocked downloading of libraries.
    • The version you are using is no longer supported on this forum. Please update to a modern version of Minecraft to receive support. Currently supported versions are 1.18.1/1.18.2 (Latest) and 1.16.5 (LTS).
    • I've RegEx'd the log to format it back into shape   You're welcome, OP 😛  The relevant info should be in these lines: [01:51:30] [main/ERROR]: Mixin config better_loading_screen-common.mixins.json does not specify "minVersion" property [01:51:30] [main/ERROR]: Mixin config better_loading_screen.mixins.json does not specify "minVersion" property [01:51:30] [main/ERROR]: Mixin config dynamiclightsreforged.mixins.json does not specify "minVersion" property [01:51:30] [main/ERROR]: Mixin config rubidium.mixins.json does not specify "minVersion" property [01:51:32] [main/WARN]: Reference map 'yungsbridges.refmap.json' for yungsbridges.mixins.json could not be read. If this is a development environment you can ignore this message [01:51:32] [main/WARN]: Reference map 'yungsbridges.refmap.json' for yungsbridges_forge.mixins.json could not be read. If this is a development environment you can ignore this message [01:51:32] [main/WARN]: Reference map 'yungsextras.refmap.json' for yungsextras.mixins.json could not be read. If this is a development environment you can ignore this message [01:51:32] [main/WARN]: Reference map 'yungsextras.refmap.json' for yungsextras_forge.mixins.json could not be read. If this is a development environment you can ignore this message [01:51:33] [main/WARN]: Error loading class: srg/net/optifine/shaders/ShadersRender (java.lang.ClassNotFoundException: srg.net.optifine.shaders.ShadersRender) [01:51:33] [main/WARN]: @Mixin target srg.net.optifine.shaders.ShadersRender was not found dragonsurvival.mixins.json:MixinShaderRender [01:51:49] [Render thread/WARN]: Assets URL 'union:/C:/Users/thema/curseforge/minecraft/Install/libraries/net/minecraft/client/1.18.2-20220404.173914/client-1.18.2-20220404.173914-srg.jar%2392!/assets/.mcassetsroot' uses unexpected schema [01:51:49] [Render thread/WARN]: Assets URL 'union:/C:/Users/thema/curseforge/minecraft/Install/libraries/net/minecraft/client/1.18.2-20220404.173914/client-1.18.2-20220404.173914-srg.jar%2392!/data/.mcassetsroot' uses unexpected schema [01:51:49] [Render thread/ERROR]: Failed to verify authentication com.mojang.authlib.exceptions.AuthenticationException: com.mojang.authlib.exceptions.MinecraftClientException: Failed to read from https://api.minecraftservices.com/player/attributes due to api.minecraftservices.com at com.mojang.authlib.exceptions.MinecraftClientException.toAuthenticationException(MinecraftClientException.java:28) ~[authlib-3.3.39.jar%2335!/:?] at com.mojang.authlib.yggdrasil.YggdrasilUserApiService.fetchProperties(YggdrasilUserApiService.java:136) ~[authlib-3.3.39.jar%2335!/:?] at com.mojang.authlib.yggdrasil.YggdrasilUserApiService.<init>(YggdrasilUserApiService.java:44) ~[authlib-3.3.39.jar%2335!/:?] at com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.createUserApiService(YggdrasilAuthenticationService.java:153) ~[authlib-3.3.39.jar%2335!/:?] at net.minecraft.client.Minecraft.m_193585_(Minecraft.java:609) ~[client-1.18.2-20220404.173914-srg.jar%2392!/:?] at net.minecraft.client.Minecraft.<init>(Minecraft.java:401) ~[client-1.18.2-20220404.173914-srg.jar%2392!/:?] at net.minecraft.client.main.Main.main(Main.java:169) ~[client-1.18.2-20220404.173914-srg.jar%2392!/:?] 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.25.jar%2316!/:?] 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: com.mojang.authlib.exceptions.MinecraftClientException: Failed to read from https://api.minecraftservices.com/player/attributes due to api.minecraftservices.com at com.mojang.authlib.minecraft.client.MinecraftClient.readInputStream(MinecraftClient.java:86) ~[authlib-3.3.39.jar%2335!/:?] at com.mojang.authlib.minecraft.client.MinecraftClient.get(MinecraftClient.java:48) ~[authlib-3.3.39.jar%2335!/:?] at com.mojang.authlib.yggdrasil.YggdrasilUserApiService.fetchProperties(YggdrasilUserApiService.java:113) ~[authlib-3.3.39.jar%2335!/:?] ... 18 more Caused by: java.net.UnknownHostException: api.minecraftservices.com at sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:567) ~[?:?] at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327) ~[?:?] at java.net.Socket.connect(Socket.java:633) ~[?:?] at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:299) ~[?:?] at sun.net.NetworkClient.doConnect(NetworkClient.java:178) ~[?:?] at sun.net.www.http.HttpClient.openServer(HttpClient.java:498) ~[?:?] at sun.net.www.http.HttpClient.openServer(HttpClient.java:603) ~[?:?] at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:266) ~[?:?] at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:380) ~[?:?] at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:189) ~[?:?] at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1287) ~[?:?] at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1128) ~[?:?] at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:175) ~[?:?] at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1665) ~[?:?] at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1589) ~[?:?] at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:529) ~[?:?] at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:308) ~[?:?] at com.mojang.authlib.minecraft.client.MinecraftClient.readInputStream(MinecraftClient.java:65) ~[authlib-3.3.39.jar%2335!/:?] at com.mojang.authlib.minecraft.client.MinecraftClient.get(MinecraftClient.java:48) ~[authlib-3.3.39.jar%2335!/:?] at com.mojang.authlib.yggdrasil.YggdrasilUserApiService.fetchProperties(YggdrasilUserApiService.java:113) ~[authlib-3.3.39.jar%2335!/:?] ... 18 more [01:51:52] [modloading-worker-0/WARN]: Injection warning: LVT in net/minecraft/client/renderer/texture/TextureAtlas::m_118307_(Lnet/minecraft/server/packs/resources/ResourceManager;Ljava/util/stream/Stream;Lnet/minecraft/util/profiling/ProfilerFiller;I)Lnet/minecraft/client/renderer/texture/TextureAtlas$Preparations; has incompatible changes at opcode 67 in callback better_loading_screen-common.mixins.json:MixinTextureAtlas->@Inject::prepareToStitchOptifine(Lnet/minecraft/server/packs/resources/ResourceManager;Ljava/util/stream/Stream;Lnet/minecraft/util/profiling/ProfilerFiller;ILorg/spongepowered/asm/mixin/injection/callback/CallbackInfoReturnable;ILjava/util/Set;)V. Expected: [I, Ljava/util/Set;] Found: [Ljava/util/Set;, I] Available: [Ljava/util/Set;, I, Lnet/minecraft/client/renderer/texture/Stitcher;, I, I] [01:51:52] [modloading-worker-0/WARN]: Injection warning: LVT in net/minecraft/client/renderer/texture/TextureAtlas::m_118307_(Lnet/minecraft/server/packs/resources/ResourceManager;Ljava/util/stream/Stream;Lnet/minecraft/util/profiling/ProfilerFiller;I)Lnet/minecraft/client/renderer/texture/TextureAtlas$Preparations; has incompatible changes at opcode 201 in callback better_loading_screen-common.mixins.json:MixinTextureAtlas->@Inject::stitchOptifine(Lnet/minecraft/server/packs/resources/ResourceManager;Ljava/util/stream/Stream;Lnet/minecraft/util/profiling/ProfilerFiller;ILorg/spongepowered/asm/mixin/injection/callback/CallbackInfoReturnable;ILjava/util/Set;Ljava/util/Set;ILnet/minecraft/client/renderer/texture/Stitcher;)V. Expected: [I, Ljava/util/Set;, Ljava/util/Set;, I, Lnet/minecraft/client/renderer/texture/Stitcher;] Found: [Ljava/util/Set;, I, Lnet/minecraft/client/renderer/texture/Stitcher;, I, I] Available: [Ljava/util/Set;, I, Lnet/minecraft/client/renderer/texture/Stitcher;, I, I, I, I, I] [01:51:55] [modloading-worker-0/WARN]: Method overwrite conflict for extractPools in byg.mixins.json:common.world.level.storage.loot.MixinLootTableManager, previously written by corgitaco.enhancedcelestials.mixin.MixinLootTableManager. Skipping method. [01:52:07] [modloading-worker-0/WARN]: Configuration file C:\Users\thema\curseforge\minecraft\Instances\Dragon Tales Test\config\dragonsurvival-common.toml is not correct. Correcting [01:52:07] [modloading-worker-0/WARN]: Incorrect key common.predator.spawnBiomes.predatorBiomesInclude was corrected from [END] to its default, [END]. [01:52:07] [modloading-worker-0/WARN]: Incorrect key common.predator.spawnBiomes.predatorBiomesExclude was corrected from [OVERWORLD, NETHER] to its default, [OVERWORLD, NETHER]. [01:52:07] [Thread-0/WARN]: Configuration file C:\Users\thema\curseforge\minecraft\Instances\Dragon Tales Test\config\dragonsurvival-common.toml is not correct. Correcting [01:52:28] [Forge Version Check/WARN]: Failed to process update information java.net.http.HttpConnectTimeoutException: HTTP connect timed out at jdk.internal.net.http.HttpClientImpl.send(HttpClientImpl.java:567) ~[java.net.http:?] at jdk.internal.net.http.HttpClientFacade.send(HttpClientFacade.java:119) ~[java.net.http:?] at net.minecraftforge.fml.VersionChecker$1.openUrlString(VersionChecker.java:131) ~[fmlcore-1.18.2-40.1.25.jar%2393!/:?] at net.minecraftforge.fml.VersionChecker$1.process(VersionChecker.java:169) ~[fmlcore-1.18.2-40.1.25.jar%2393!/:?] at java.lang.Iterable.forEach(Iterable.java:75) [?:?] at net.minecraftforge.fml.VersionChecker$1.run(VersionChecker.java:114) [fmlcore-1.18.2-40.1.25.jar%2393!/:?] Caused by: java.net.http.HttpConnectTimeoutException: HTTP connect timed out at jdk.internal.net.http.ResponseTimerEvent.handle(ResponseTimerEvent.java:68) ~[java.net.http:?] at jdk.internal.net.http.HttpClientImpl.purgeTimeoutsAndReturnNextDeadline(HttpClientImpl.java:1270) ~[java.net.http:?] at jdk.internal.net.http.HttpClientImpl$SelectorManager.run(HttpClientImpl.java:899) ~[java.net.http:?] Caused by: java.net.ConnectException: HTTP connect timed out at jdk.internal.net.http.ResponseTimerEvent.handle(ResponseTimerEvent.java:69) ~[java.net.http:?] at jdk.internal.net.http.HttpClientImpl.purgeTimeoutsAndReturnNextDeadline(HttpClientImpl.java:1270) ~[java.net.http:?] at jdk.internal.net.http.HttpClientImpl$SelectorManager.run(HttpClientImpl.java:899) ~[java.net.http:?] [01:52:29] [Worker-Main-12/WARN]: Unable to load model: 'the_wild_update:blocks/block' referenced from: the_wild_update:mangrove_propagule#hanging=true,stage=0,waterlogged=true: java.io.FileNotFoundException: the_wild_update:models/blocks/block.json [01:52:32] [Worker-Main-12/WARN]: Exception loading blockstate definition: byg:blockstates/potted_hydrangea_bush.json: java.io.FileNotFoundException: byg:blockstates/potted_hydrangea_bush.json [01:52:32] [Worker-Main-12/WARN]: Exception loading blockstate definition: 'byg:blockstates/potted_hydrangea_bush.json' missing model for variant: 'byg:potted_hydrangea_bush#' [01:52:34] [Placebo Patreon Wing Loader/ERROR]: Exception loading patreon wing data! [01:52:34] [Placebo Patreon Trail Loader/ERROR]: Exception loading patreon trails data! [01:52:43] [Forge Version Check/WARN]: Failed to process update information java.net.http.HttpConnectTimeoutException: HTTP connect timed out at jdk.internal.net.http.HttpClientImpl.send(HttpClientImpl.java:567) ~[java.net.http:?] at jdk.internal.net.http.HttpClientFacade.send(HttpClientFacade.java:119) ~[java.net.http:?] at net.minecraftforge.fml.VersionChecker$1.openUrlString(VersionChecker.java:131) ~[fmlcore-1.18.2-40.1.25.jar%2393!/:?] at net.minecraftforge.fml.VersionChecker$1.process(VersionChecker.java:169) ~[fmlcore-1.18.2-40.1.25.jar%2393!/:?] at java.lang.Iterable.forEach(Iterable.java:75) [?:?] at net.minecraftforge.fml.VersionChecker$1.run(VersionChecker.java:114) [fmlcore-1.18.2-40.1.25.jar%2393!/:?] Caused by: java.net.http.HttpConnectTimeoutException: HTTP connect timed out at jdk.internal.net.http.ResponseTimerEvent.handle(ResponseTimerEvent.java:68) ~[java.net.http:?] at jdk.internal.net.http.HttpClientImpl.purgeTimeoutsAndReturnNextDeadline(HttpClientImpl.java:1270) ~[java.net.http:?] at jdk.internal.net.http.HttpClientImpl$SelectorManager.run(HttpClientImpl.java:899) ~[java.net.http:?] Caused by: java.net.ConnectException: HTTP connect timed out at jdk.internal.net.http.ResponseTimerEvent.handle(ResponseTimerEvent.java:69) ~[java.net.http:?] at jdk.internal.net.http.HttpClientImpl.purgeTimeoutsAndReturnNextDeadline(HttpClientImpl.java:1270) ~[java.net.http:?] at jdk.internal.net.http.HttpClientImpl$SelectorManager.run(HttpClientImpl.java:899) ~[java.net.http:?] [01:52:46] [Worker-Main-12/WARN]: Unable to resolve texture reference: #1 in dragonsurvival:item/broken_knight_helmet_2 [01:52:46] [Worker-Main-12/WARN]: Unable to resolve texture reference: #1 in dragonsurvival:item/broken_knight_helmet_3 [01:52:46] [Worker-Main-12/WARN]: Unable to resolve texture reference: #1 in dragonsurvival:item/broken_knight_helmet_1 [01:52:48] [Forge Version Check/WARN]: Failed to process update information java.io.IOException: Connection reset at jdk.internal.net.http.HttpClientImpl.send(HttpClientImpl.java:586) ~[java.net.http:?] at jdk.internal.net.http.HttpClientFacade.send(HttpClientFacade.java:119) ~[java.net.http:?] at net.minecraftforge.fml.VersionChecker$1.openUrlString(VersionChecker.java:131) ~[fmlcore-1.18.2-40.1.25.jar%2393!/:?] at net.minecraftforge.fml.VersionChecker$1.process(VersionChecker.java:169) ~[fmlcore-1.18.2-40.1.25.jar%2393!/:?] at java.lang.Iterable.forEach(Iterable.java:75) [?:?] at net.minecraftforge.fml.VersionChecker$1.run(VersionChecker.java:114) [fmlcore-1.18.2-40.1.25.jar%2393!/:?] Caused by: java.net.SocketException: Connection reset at sun.nio.ch.SocketChannelImpl.throwConnectionReset(SocketChannelImpl.java:394) ~[?:?] at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:426) ~[?:?] at jdk.internal.net.http.SocketTube.readAvailable(SocketTube.java:1170) ~[java.net.http:?] at jdk.internal.net.http.SocketTube$InternalReadPublisher$InternalReadSubscription.read(SocketTube.java:833) ~[java.net.http:?] at jdk.internal.net.http.SocketTube$SocketFlowTask.run(SocketTube.java:181) ~[java.net.http:?] at jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run(SequentialScheduler.java:230) ~[java.net.http:?] at jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:303) ~[java.net.http:?] at jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:256) ~[java.net.http:?] at jdk.internal.net.http.SocketTube$InternalReadPublisher$InternalReadSubscription.signalReadable(SocketTube.java:774) ~[java.net.http:?] at jdk.internal.net.http.SocketTube$InternalReadPublisher$ReadEvent.signalEvent(SocketTube.java:957) ~[java.net.http:?] at jdk.internal.net.http.SocketTube$SocketFlowEvent.handle(SocketTube.java:253) ~[java.net.http:?] at jdk.internal.net.http.HttpClientImpl$SelectorManager.handleEvent(HttpClientImpl.java:979) ~[java.net.http:?] at jdk.internal.net.http.HttpClientImpl$SelectorManager.lambda$run$3(HttpClientImpl.java:934) ~[java.net.http:?] at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?] at jdk.internal.net.http.HttpClientImpl$SelectorManager.run(HttpClientImpl.java:934) ~[java.net.http:?] [01:52:48] [Forge Version Check/WARN]: Failed to process update information java.net.ConnectException: null at jdk.internal.net.http.HttpClientImpl.send(HttpClientImpl.java:573) ~[java.net.http:?] at jdk.internal.net.http.HttpClientFacade.send(HttpClientFacade.java:119) ~[java.net.http:?] at net.minecraftforge.fml.VersionChecker$1.openUrlString(VersionChecker.java:131) ~[fmlcore-1.18.2-40.1.25.jar%2393!/:?] at net.minecraftforge.fml.VersionChecker$1.process(VersionChecker.java:169) ~[fmlcore-1.18.2-40.1.25.jar%2393!/:?] at java.lang.Iterable.forEach(Iterable.java:75) [?:?] at net.minecraftforge.fml.VersionChecker$1.run(VersionChecker.java:114) [fmlcore-1.18.2-40.1.25.jar%2393!/:?] Caused by: java.net.ConnectException at jdk.internal.net.http.common.Utils.toConnectException(Utils.java:1047) ~[java.net.http:?] at jdk.internal.net.http.PlainHttpConnection.connectAsync(PlainHttpConnection.java:198) ~[java.net.http:?] at jdk.internal.net.http.AsyncSSLConnection.connectAsync(AsyncSSLConnection.java:56) ~[java.net.http:?] at jdk.internal.net.http.Http2Connection.createAsync(Http2Connection.java:378) ~[java.net.http:?] at jdk.internal.net.http.Http2ClientImpl.getConnectionFor(Http2ClientImpl.java:128) ~[java.net.http:?] at jdk.internal.net.http.ExchangeImpl.get(ExchangeImpl.java:93) ~[java.net.http:?] at jdk.internal.net.http.Exchange.establishExchange(Exchange.java:343) ~[java.net.http:?] at jdk.internal.net.http.Exchange.responseAsyncImpl0(Exchange.java:475) ~[java.net.http:?] at jdk.internal.net.http.Exchange.responseAsyncImpl(Exchange.java:380) ~[java.net.http:?] at jdk.internal.net.http.Exchange.responseAsync(Exchange.java:372) ~[java.net.http:?] at jdk.internal.net.http.MultiExchange.responseAsyncImpl(MultiExchange.java:408) ~[java.net.http:?] at jdk.internal.net.http.MultiExchange.lambda$responseAsyncImpl$7(MultiExchange.java:449) ~[java.net.http:?] at java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934) ~[?:?] at java.util.concurrent.CompletableFuture.uniHandleStage(CompletableFuture.java:950) ~[?:?] at java.util.concurrent.CompletableFuture.handle(CompletableFuture.java:2340) ~[?:?] at jdk.internal.net.http.MultiExchange.responseAsyncImpl(MultiExchange.java:439) ~[java.net.http:?] at jdk.internal.net.http.MultiExchange.lambda$responseAsync0$2(MultiExchange.java:341) ~[java.net.http:?] at java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150) ~[?:?] at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?] at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773) ~[?:?] at jdk.internal.net.http.HttpClientImpl$DelegatingExecutor.execute(HttpClientImpl.java:157) ~[java.net.http:?] at java.util.concurrent.CompletableFuture.completeAsync(CompletableFuture.java:2673) ~[?:?] at jdk.internal.net.http.MultiExchange.responseAsync(MultiExchange.java:294) ~[java.net.http:?] at jdk.internal.net.http.HttpClientImpl.sendAsync(HttpClientImpl.java:654) ~[java.net.http:?] at jdk.internal.net.http.HttpClientImpl.send(HttpClientImpl.java:552) ~[java.net.http:?] ... 5 more Caused by: java.nio.channels.UnresolvedAddressException at sun.nio.ch.Net.checkAddress(Net.java:149) ~[?:?] at sun.nio.ch.Net.checkAddress(Net.java:157) ~[?:?] at sun.nio.ch.SocketChannelImpl.checkRemote(SocketChannelImpl.java:816) ~[?:?] at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:839) ~[?:?] at jdk.internal.net.http.PlainHttpConnection.lambda$connectAsync$0(PlainHttpConnection.java:183) ~[java.net.http:?] at java.security.AccessController.doPrivileged(AccessController.java:569) ~[?:?] at jdk.internal.net.http.PlainHttpConnection.connectAsync(PlainHttpConnection.java:185) ~[java.net.http:?] at jdk.internal.net.http.AsyncSSLConnection.connectAsync(AsyncSSLConnection.java:56) ~[java.net.http:?] at jdk.internal.net.http.Http2Connection.createAsync(Http2Connection.java:378) ~[java.net.http:?] at jdk.internal.net.http.Http2ClientImpl.getConnectionFor(Http2ClientImpl.java:128) ~[java.net.http:?] at jdk.internal.net.http.ExchangeImpl.get(ExchangeImpl.java:93) ~[java.net.http:?] at jdk.internal.net.http.Exchange.establishExchange(Exchange.java:343) ~[java.net.http:?] at jdk.internal.net.http.Exchange.responseAsyncImpl0(Exchange.java:475) ~[java.net.http:?] at jdk.internal.net.http.Exchange.responseAsyncImpl(Exchange.java:380) ~[java.net.http:?] at jdk.internal.net.http.Exchange.responseAsync(Exchange.java:372) ~[java.net.http:?] at jdk.internal.net.http.MultiExchange.responseAsyncImpl(MultiExchange.java:408) ~[java.net.http:?] at jdk.internal.net.http.MultiExchange.lambda$responseAsyncImpl$7(MultiExchange.java:449) ~[java.net.http:?] at java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934) ~[?:?] at java.util.concurrent.CompletableFuture.uniHandleStage(CompletableFuture.java:950) ~[?:?] at java.util.concurrent.CompletableFuture.handle(CompletableFuture.java:2340) ~[?:?] at jdk.internal.net.http.MultiExchange.responseAsyncImpl(MultiExchange.java:439) ~[java.net.http:?] at jdk.internal.net.http.MultiExchange.lambda$responseAsync0$2(MultiExchange.java:341) ~[java.net.http:?] at java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150) ~[?:?] at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?] at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773) ~[?:?] at jdk.internal.net.http.HttpClientImpl$DelegatingExecutor.execute(HttpClientImpl.java:157) ~[java.net.http:?] at java.util.concurrent.CompletableFuture.completeAsync(CompletableFuture.java:2673) ~[?:?] at jdk.internal.net.http.MultiExchange.responseAsync(MultiExchange.java:294) ~[java.net.http:?] at jdk.internal.net.http.HttpClientImpl.sendAsync(HttpClientImpl.java:654) ~[java.net.http:?] at jdk.internal.net.http.HttpClientImpl.send(HttpClientImpl.java:552) ~[java.net.http:?] ... 5 more [01:52:50] [Worker-Main-15/WARN]: Unused frames in sprite dragonsurvival:te/star/wind: [22, 23, 24, 25, 26, 27, 28, 29, 30, 31] [01:52:50] [Worker-Main-15/WARN]: Unused frames in sprite dragonsurvival:te/star/wind_vertical: [22, 23, 24, 25, 26, 27, 28, 29, 30, 31] [01:52:52] [Worker-Main-13/WARN]: Unused frames in sprite dragonsurvival:item/beacon_fire_0: [3] [01:52:52] [Worker-Main-9/WARN]: Unused frames in sprite dragonsurvival:item/beacon_magic_0: [3] [01:52:52] [Worker-Main-9/WARN]: Unused frames in sprite dragonsurvival:item/beacon_peace_0: [3] [01:52:54] [Early Visualization/INFO]: Set render to true [01:52:54] [Thread-1/INFO]: Processing work FREEZE_DATA [01:52:56] [Render thread/WARN]: COM exception querying Win32_Processor, which might not be on your system. Will not attempt to query it again. Error was -2147467259: Unspecified error(HRESULT: 80004005) [01:52:58] [Render thread/ERROR]: Unreported exception thrown! java.lang.RuntimeException: Failed to create fence object at net.minecraft.client.Minecraft.handler$zjh000$postRender(Minecraft.java:4865) ~[client-1.18.2-20220404.173914-srg.jar%2392!/:?] at net.minecraft.client.Minecraft.m_91383_(Minecraft.java:1101) ~[client-1.18.2-20220404.173914-srg.jar%2392!/:?] at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:663) ~[client-1.18.2-20220404.173914-srg.jar%2392!/:?] at net.minecraft.client.main.Main.main(Main.java:205) ~[client-1.18.2-20220404.173914-srg.jar%2392!/:?] 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.25.jar%2316!/:?] 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:?] [01:52:59] [Render thread/FATAL]: Preparing crash report with UUID 713cd4aa-03a6-4b1e-9dab-1665e1f89432 [01:52:59] [Render thread/FATAL]: Preparing crash report with UUID 71fe7b78-86ca-49db-a188-8743ce067f44 Sadly, I'm not well versed in Java, nor experienced with Minecraft troubleshooting, so someone's going to have to find you the cause & solution 😛  I'd advise u to look up those crash reports, as they'll probably provide you with more direct information on the issue at hand. Cheers 🍻
    • So I'm trying to upgrade my experimenting a bit, and I was wondering if it was possible to control the player's movements with a keypress. Say, I press K, and I press the attack button once. Or, I press K and I walk in a circle. In the future I would get the player to do such movements when standing on a certain block or something like that. But for now, I'm just wondering what resource I need reference in my code in order to yield a single player attack click once I've pressed a dedicated key. I've tried searching through my IDE's suggestions, with things like 'player' and 'attack', and I've also taken to google and found this line of code which seemed like it might be helpful 'KeyBinding.onTick(Minecraft.getMinecraft().gameSettings.keyBindAttack.getKeyCode());' but that seems to be for an earlier version of forge. I don't know what the newer replacement for KeyBinding is - perhaps KeyMapping? - and I can't find gameSettings in my IDE's suggestions either. How might I be able to find these things out in future?
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.