Рандомные загрузочные экраны

Версия Minecraft
1.7.10
timaxa007 написал(а):
http://forum.mcmodding.ru/%d0%a2%d0%b5%d0%bc%d0%b0-1-7-10-Splash-Screen?highlight=locationMojangPng

Спасибо! В эклипсе все работает. Компилирую, кладу в mods и крах:
Description: There was a severe problem during mod loading that has caused the game to fail

cpw.mods.fml.common.LoaderException: java.lang.NoSuchFieldException: locationMojangPng
at cpw.mods.fml.common.LoadController.transition(LoadController.java:163)
at cpw.mods.fml.common.Loader.preinitializeMods(Loader.java:559)
at cpw.mods.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:243)
at net.minecraft.client.Minecraft.func_71384_a(Minecraft.java:480)
at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:878)
at net.minecraft.client.main.Main.main(SourceFile:148)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
Caused by: java.lang.NoSuchFieldException: locationMojangPng
at java.lang.Class.getDeclaredField(Unknown Source)
at com.example.examplemod.ExampleMod.preInit(ExampleMod.java:26)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:532)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
at com.google.common.eventbus.EventBus.post(EventBus.java:275)
at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:212)
at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:190)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)
at com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304)
at com.google.common.eventbus.EventBus.post(EventBus.java:275)
at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:119)
at cpw.mods.fml.common.Loader.preinitializeMods(Loader.java:556)
... 10 more
 
7,099
324
1,509
А где их брать?
 

timaxa007

Модератор
5,831
409
672
Примерно:
C:\Users\*USER_NAME*\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1558-1.7.10\unpacked\conf\fields.csv
"1.7.10-10.13.4.1558-1.7.10" - может быть и по другому называться.
В поиск веди название переменной. У меня "field_110444_H,locationMojangPng,0,".


Можно даже использовать ReflectionHelper:
Код:
 @EventHandler
 public void preInit(FMLPreInitializationEvent event)
 throws NoSuchFieldException, IllegalArgumentException, IllegalAccessException, SecurityException {
 Field field = ReflectionHelper.findField(Minecraft.class, "locationMojangPng", "field_110444_H");

		if (field != null) {
			field.setAccessible(true);

			int modifiers = field.getModifiers();
			Field modifierField = field.getClass().getDeclaredField("modifiers");
			modifiers = modifiers & ~Modifier.FINAL;
			modifierField.setAccessible(true);
			modifierField.setInt(field, modifiers);

			field.set(null, myPng);
			field.setAccessible(false);
		}
 }
Я не уверен, что он будет работать как надо после компиляции.
 
Отлично, все работает, но по такому принципу:
  1. открывается игра
  2. запускается моя картинка
  3. проходит немного времени и появляется опять mojang с полосой загрузки forge.
Опять же в Eclipse такого не наблюдается. Каким образом можно убрать загрузку форжевскую вообще?
 
svk2140 написал(а):
Так как в итоге сделал? locationMojangPng менял?

Именно.
timaxa007 написал(а):
Примерно:
C:\Users\*USER_NAME*\.gradle\caches\minecraft\net\minecraftforge\forge\1.7.10-10.13.4.1558-1.7.10\unpacked\conf\fields.csv
"1.7.10-10.13.4.1558-1.7.10" - может быть и по другому называться.
В поиск веди название переменной. У меня "field_110444_H,locationMojangPng,0,".


Можно даже использовать ReflectionHelper:
Код:
 @EventHandler
 public void preInit(FMLPreInitializationEvent event)
 throws NoSuchFieldException, IllegalArgumentException, IllegalAccessException, SecurityException {
 Field field = ReflectionHelper.findField(Minecraft.class, "locationMojangPng", "field_110444_H");

 if (field != null) {
 field.setAccessible(true);

 int modifiers = field.getModifiers();
 Field modifierField = field.getClass().getDeclaredField("modifiers");
 modifiers = modifiers & ~Modifier.FINAL;
 modifierField.setAccessible(true);
 modifierField.setInt(field, modifiers);

 field.set(null, myPng);
 field.setAccessible(false);
 }
 }
Я не уверен, что он будет работать как надо после компиляции.

 
Сверху