Jump to content

HariboTer

Members
  • Posts

    4
  • Joined

  • Last visited

Posts posted by HariboTer

  1. I want do prevent some inter-mod recipes to show up when their respective mod is missing, so I created this json-file (assets/moaroresreforged/recipes/_factories.json):

    {
      "conditions": {
        "spartanshields_installed": "moaroresreforged.compatibility.TestConditionFactory"
      }
    }

     

    And this class:

     

    package main.java.moaroresreforged.compatibility;
    
    import java.util.function.BooleanSupplier;
    
    import com.google.gson.JsonObject;
    
    import net.minecraftforge.common.crafting.IConditionFactory;
    import net.minecraftforge.common.crafting.JsonContext;
    import net.minecraftforge.fml.common.Loader;
    
    public class TestConditionFactory implements IConditionFactory {
    	
    	@Override
    	public BooleanSupplier parse(JsonContext context, JsonObject json) {
    		return () -> Loader.isModLoaded("spartanshields");
    	}
    }

     

    ... and it crashes terribly upon loading. I've tried adding "main.java" or variations of it to the class path without avail.

     

    The corresponding crash log:

     

    Spoiler
    
    ---- Minecraft Crash Report ----
    // I feel sad now :(
    
    Time: 3/12/19 7:32 PM
    Description: Initializing game
    
    com.google.gson.JsonSyntaxException: Could not find IConditionFactory: moaroresreforged.compatibility.TestConditionFactory
    	at net.minecraftforge.common.crafting.CraftingHelper.getClassInstance(CraftingHelper.java:597)
    	at net.minecraftforge.common.crafting.CraftingHelper.loadFactories(CraftingHelper.java:581)
    	at net.minecraftforge.common.crafting.CraftingHelper.loadFactories(CraftingHelper.java:650)
    	at java.util.ArrayList.forEach(ArrayList.java:1249)
    	at net.minecraftforge.common.crafting.CraftingHelper.loadRecipes(CraftingHelper.java:619)
    	at net.minecraftforge.fml.common.Loader.initializeMods(Loader.java:742)
    	at net.minecraftforge.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:336)
    	at net.minecraft.client.Minecraft.init(Minecraft.java:581)
    	at net.minecraft.client.Minecraft.run(Minecraft.java:421)
    	at net.minecraft.client.main.Main.main(Main.java:118)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    	at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97)
    	at GradleStart.main(GradleStart.java:25)
    Caused by: java.lang.ClassNotFoundException: moaroresreforged.compatibility.TestConditionFactory
    	at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    	at java.lang.Class.forName0(Native Method)
    	at java.lang.Class.forName(Class.java:264)
    	at net.minecraftforge.common.crafting.CraftingHelper.getClassInstance(CraftingHelper.java:590)
    	... 21 more
    Caused by: java.lang.NullPointerException
    
    
    A detailed walkthrough of the error, its code path and all known details is as follows:
    ---------------------------------------------------------------------------------------
    
    -- Head --
    Thread: Client thread
    Stacktrace:
    	at net.minecraftforge.common.crafting.CraftingHelper.getClassInstance(CraftingHelper.java:597)
    	at net.minecraftforge.common.crafting.CraftingHelper.loadFactories(CraftingHelper.java:581)
    	at net.minecraftforge.common.crafting.CraftingHelper.loadFactories(CraftingHelper.java:650)
    	at java.util.ArrayList.forEach(ArrayList.java:1249)
    	at net.minecraftforge.common.crafting.CraftingHelper.loadRecipes(CraftingHelper.java:619)
    	at net.minecraftforge.fml.common.Loader.initializeMods(Loader.java:742)
    	at net.minecraftforge.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:336)
    	at net.minecraft.client.Minecraft.init(Minecraft.java:581)
    
    -- Initialization --
    Details:
    Stacktrace:
    	at net.minecraft.client.Minecraft.run(Minecraft.java:421)
    	at net.minecraft.client.main.Main.main(Main.java:118)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    	at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97)
    	at GradleStart.main(GradleStart.java:25)
    
    -- System Details --
    Details:
    	Minecraft Version: 1.12.2
    	Operating System: Windows 7 (amd64) version 6.1
    	Java Version: 1.8.0_91, Oracle Corporation
    	Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
    	Memory: 776442920 bytes (740 MB) / 1497890816 bytes (1428 MB) up to 7609516032 bytes (7257 MB)
    	JVM Flags: 0 total; 
    	IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
    	FML: MCP 9.42 Powered by Forge 14.23.5.2768 9 mods loaded, 9 mods active
    	States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored
    
    	| State | ID               | Version           | Source                           | Signature |
    	|:----- |:---------------- |:----------------- |:-------------------------------- |:--------- |
    	| UCH   | minecraft        | 1.12.2            | minecraft.jar                    | None      |
    	| UCH   | mcp              | 9.42              | minecraft.jar                    | None      |
    	| UCH   | FML              | 8.0.99.99         | forgeSrc-1.12.2-14.23.5.2768.jar | None      |
    	| UCH   | forge            | 14.23.5.2768      | forgeSrc-1.12.2-14.23.5.2768.jar | None      |
    	| UCH   | moaroresreforged | 1.0               | moaroresreforged-1.1.2.jar       | None      |
    	| UCH   | mantle           | 1.12-1.3.3.39     | Mantle-1.12-1.3.3.39.jar         | None      |
    	| UCH   | spartanshields   | 1.4.1             | SpartanShields-1.12.2-1.4.1.jar  | None      |
    	| UCH   | switchbow        | 1.5.6             | switchbow-1.5.6.jar              | None      |
    	| UCH   | tconstruct       | 1.12.2-2.12.0.115 | TConstruct-1.12.2-2.12.0.115.jar | None      |
    
    	Loaded coremods (and transformers): 
    	GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.6.0 NVIDIA 398.36' Renderer: 'GeForce GTX 1080/PCIe/SSE2'
    	Pulsar/tconstruct loaded Pulses: 
    		- TinkerCommons (Enabled/Forced)
    		- TinkerWorld (Enabled/Not Forced)
    		- TinkerTools (Enabled/Not Forced)
    		- TinkerHarvestTools (Enabled/Forced)
    		- TinkerMeleeWeapons (Enabled/Forced)
    		- TinkerRangedWeapons (Enabled/Forced)
    		- TinkerModifiers (Enabled/Forced)
    		- TinkerSmeltery (Enabled/Not Forced)
    		- TinkerGadgets (Enabled/Not Forced)
    		- TinkerOredict (Enabled/Forced)
    		- TinkerIntegration (Enabled/Forced)
    		- TinkerFluids (Enabled/Forced)
    		- TinkerMaterials (Enabled/Forced)
    		- TinkerModelRegister (Enabled/Forced)
    
    	Launched Version: 1.12.2
    	LWJGL: 2.9.4
    	OpenGL: GeForce GTX 1080/PCIe/SSE2 GL version 4.6.0 NVIDIA 398.36, NVIDIA Corporation
    	GL Caps: Using GL 1.3 multitexturing.
    Using GL 1.3 texture combiners.
    Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
    Shaders are available because OpenGL 2.1 is supported.
    VBOs are available because OpenGL 1.5 is supported.
    
    	Using VBOs: Yes
    	Is Modded: Definitely; Client brand changed to 'fml,forge'
    	Type: Client (map_client.txt)
    	Resource Packs: 
    	Current Language: English (US)
    	Profiler Position: N/A (disabled)
    	CPU: 8x Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz

     

     

    There is probably some embarassingly trivial mistake hiding somewhere around there, but I'm totally not seeing it and clueless at the moment about what else to do. A hint as to what I'm doing wrong here would be very welcome ?

  2. For private uses I've rewritten the MoarOres mod. Because it was not conforming to the conventional naming scheme (e.g. it was "SteelSword" instead of "steel_sword") I renamed everything properly and process the appropriate MissingMappings events to not break old worlds, which after some troubleshooting worked fine.

     

    Then due to the amount of changes made, I found it adequate to change the mod id from "moarores" to "moaroresreforged". It's no trouble for new worlds, but for some odd reason it seems the MissingMappings stopped working. Or rather: The MissingMappings handling *still works*, but Forge now rejects it.

     

    The code is (the methods are called from the main class which is listening for those events)

     

    Spoiler
    
    	public static void remapBlocks(MissingMappings<Block> event) {
    		for (MissingMappings.Mapping<Block> miss : event.getMappings()) {
    			Block block = blockMap.get(miss.key.toString());
    			if (block != null) {
    				miss.remap(block);
    			}
    			else {
    				System.out.println("Couldn't remap "+miss.key);
    			}
    		}
    	}
    	
    	public static void remapItems(MissingMappings<Item> event) {
    		for (MissingMappings.Mapping<Item> miss : event.getMappings()) {
    			Item item = itemMap.get(miss.key.toString());
    			if (item != null) {
    				miss.remap(item);
    			}
    			else {
    				System.out.println("Couldn't remap "+miss.key);
    			}
    		}
    	}

     

     

    And the output that gets produced (I reduced the listings to one block and one item each in favor of readability):

    Spoiler

    [22:48:02] [Server thread/INFO] [FML]: Registry Block: Found a missing id from t
    he world moarores:mythrilore
    [22:48:02] [Server thread/INFO] [FML]: Registry Item: Found a missing id from th
    e world moarores:mythrilingot
    [22:48:02] [Server thread/INFO] [STDOUT]: [main.java.moaroresreforged.MoarOresRe
    forgedMod:remapBlock:59]: Remapping blocks called!
    [22:48:02] [Server thread/ERROR] [FML]: Unidentified mapping from registry minec
    raft:blocks
    [22:48:02] [Server thread/ERROR] [FML]:     moarores:mythrilore: 258
    [22:48:02] [Server thread/INFO] [STDOUT]: [main.java.moaroresreforged.MoarOresRe
    forgedMod:remapItem:65]: Remapping items called!
    [22:48:02] [Server thread/ERROR] [FML]: Unidentified mapping from registry minec
    raft:items
    [22:48:02] [Server thread/ERROR] [FML]:     moarores:mythrilingot: 4104

     

    It's worth noting that the printing "Couldn't remap ..." is *not* made, so the remapping worked, but forge doesn't like it.

    How can I tell forge to accept the change?

×
×
  • Create New...

Important Information

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