It did better than before. Now, it can load the mojang logo. I need to find out why it won't even get to the main menu. I know it has something to do with the crafting because it can load the main menu without the crafting. I can't create a new world because it crashes. Anyway, why did you come here?
Crash Report:
---- Minecraft Crash Report ----
// Why is it breaking
Time: 4/27/15 7:48 PM
Description: Initializing game
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.lang.Character
at net.minecraft.item.crafting.CraftingManager.addRecipe(CraftingManager.java:209)
at cpw.mods.fml.common.registry.GameRegistry.addShapedRecipe(GameRegistry.java:244)
at com.mod.main.CraftingManager.addCraftingRec(CraftingManager.java:23)
at com.mod.main.CraftingManager.mainRegistry(CraftingManager.java:14)
at com.mod.main.MainRegistry.load(MainRegistry.java:33)
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:513)
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:208)
at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:187)
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:118)
at cpw.mods.fml.common.Loader.initializeMods(Loader.java:691)
at cpw.mods.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:288)
at net.minecraft.client.Minecraft.startGame(Minecraft.java:586)
at net.minecraft.client.Minecraft.run(Minecraft.java:931)
at net.minecraft.client.main.Main.main(Main.java:164)
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)
at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
at GradleStart.main(Unknown Source)
A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------
-- Head --
Stacktrace:
at net.minecraft.item.crafting.CraftingManager.addRecipe(CraftingManager.java:209)
at cpw.mods.fml.common.registry.GameRegistry.addShapedRecipe(GameRegistry.java:244)
at com.mod.main.CraftingManager.addCraftingRec(CraftingManager.java:23)
at com.mod.main.CraftingManager.mainRegistry(CraftingManager.java:14)
at com.mod.main.MainRegistry.load(MainRegistry.java:33)
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:513)
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:208)
at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:187)
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:118)
at cpw.mods.fml.common.Loader.initializeMods(Loader.java:691)
at cpw.mods.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:288)
at net.minecraft.client.Minecraft.startGame(Minecraft.java:586)
-- Initialization --
Details:
Stacktrace:
at net.minecraft.client.Minecraft.run(Minecraft.java:931)
at net.minecraft.client.main.Main.main(Main.java:164)
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)
at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
at GradleStart.main(Unknown Source)
-- System Details --
Details:
Minecraft Version: 1.7.10
Operating System: Windows 8.1 (amd64) version 6.3
Java Version: 1.8.0_31, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 692221416 bytes (660 MB) / 1037959168 bytes (989 MB) up to 1037959168 bytes (989 MB)
JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
FML: MCP v9.05 FML v7.10.85.1230 Minecraft Forge 10.13.2.1230 4 mods loaded, 4 mods active
mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized
FML{7.10.85.1230} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.2.1230.jar) Unloaded->Constructed->Pre-initialized->Initialized
Forge{10.13.2.1230} [Minecraft Forge] (forgeSrc-1.7.10-10.13.2.1230.jar) Unloaded->Constructed->Pre-initialized->Initialized
forge_test_mod{1.2.1} [Forge Test Mod] (bin) Unloaded->Constructed->Pre-initialized->Errored
Launched Version: 1.7.10
LWJGL: 2.9.1
OpenGL: GeForce GT 750M/PCIe/SSE2 GL version 4.3.0, NVIDIA Corporation
GL Caps: Using GL 1.3 multitexturing.
Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
Anisotropic filtering is supported and maximum anisotropy is 16.
Shaders are available because OpenGL 2.1 is supported.
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)
Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
Anisotropic Filtering: Off (1)
What do you mean formatting? Farmland is a block in Minecraft that is used for planting seeds. I need to know about the crafting.
I mean if i look at your code from your previous post I can't tell which line is numbered what because the numbers are visible to you in your IDE but dont get copied with your code when you copy and paste it here, this forum tends to remove the empty spaces in the code so you cant really just count lines down from the package declaration (even then assuming that was line 1).
at com.mod.main.CraftingManager.addCraftingRec(CraftingManager.java:28)
at com.mod.main.CraftingManager.mainRegistry(CraftingManager.java:14)
at com.mod.main.MainRegistry.load(MainRegistry.java:33)
That's all I know
I fixed it!
Now I need to fix my world, so it will spawn all of my ores.
None of my items exist and I even have crafting recipies for them. How do I make a crop only grow on farmland? Also, all my blocks are in "my" tool tab.
It works for me. Re-run 'gradlew setupDecompWorkspace eclipse' then double-clicked the empty package. If it still doesn't work please tell me. Can you find this? C:\Users\Your Windows Username\.gradle There should be a minecraft folder inside the caches.
I know this question isn't in the tutorial (I think?) but how do I register metadata blocks (1.7.10) with a RegisterHelper class, as all other tutorials I found to make Metadata blocks don't use that.
That's what I have.
yeah so instead of
@EventHandler
public static void PreLoad (FMLPreInitializationEvent PreEvent) {
McreativeTabs.initializeTabs();
Mblocks.mainRegistry();
Mitems.mainRegistry();
Mworld.mainRegistry();
CraftingManager.mainRegistry();
proxy.registerRenderInfo();
}
@EventHandler
public static void load (FMLInitializationEvent event) {
}
you want
@EventHandler
public static void PreLoad (FMLPreInitializationEvent PreEvent) {
McreativeTabs.initializeTabs();
Mblocks.mainRegistry();
Mitems.mainRegistry();
Mworld.mainRegistry();
proxy.registerRenderInfo();
}
@EventHandler
public static void load (FMLInitializationEvent event) {
CraftingManager.mainRegistry();
}
I still have problems, but at least I know where to put them. Also, what is the name of the lang file for the other English languages?
I notice at least one typo in recipes files ("X" as input but 'x' to declare what that item is).
en_AU Australia
en_CA Canada
en_GR Britian
en_PT Pirate (??)
here is reference
http://minecraft.gamepedia.com/Language?cookieSetup=true
Thanks!
It did better than before. Now, it can load the mojang logo. I need to find out why it won't even get to the main menu. I know it has something to do with the crafting because it can load the main menu without the crafting. I can't create a new world because it crashes. Anyway, why did you come here?
Crash Report:
---- Minecraft Crash Report ----
// Why is it breaking
Time: 4/27/15 7:48 PM
Description: Initializing game
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.lang.Character
at net.minecraft.item.crafting.CraftingManager.addRecipe(CraftingManager.java:209)
at cpw.mods.fml.common.registry.GameRegistry.addShapedRecipe(GameRegistry.java:244)
at com.mod.main.CraftingManager.addCraftingRec(CraftingManager.java:23)
at com.mod.main.CraftingManager.mainRegistry(CraftingManager.java:14)
at com.mod.main.MainRegistry.load(MainRegistry.java:33)
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:513)
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:208)
at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:187)
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:118)
at cpw.mods.fml.common.Loader.initializeMods(Loader.java:691)
at cpw.mods.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:288)
at net.minecraft.client.Minecraft.startGame(Minecraft.java:586)
at net.minecraft.client.Minecraft.run(Minecraft.java:931)
at net.minecraft.client.main.Main.main(Main.java:164)
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)
at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
at GradleStart.main(Unknown Source)
A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------
-- Head --
Stacktrace:
at net.minecraft.item.crafting.CraftingManager.addRecipe(CraftingManager.java:209)
at cpw.mods.fml.common.registry.GameRegistry.addShapedRecipe(GameRegistry.java:244)
at com.mod.main.CraftingManager.addCraftingRec(CraftingManager.java:23)
at com.mod.main.CraftingManager.mainRegistry(CraftingManager.java:14)
at com.mod.main.MainRegistry.load(MainRegistry.java:33)
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:513)
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:208)
at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:187)
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:118)
at cpw.mods.fml.common.Loader.initializeMods(Loader.java:691)
at cpw.mods.fml.client.FMLClientHandler.finishMinecraftLoading(FMLClientHandler.java:288)
at net.minecraft.client.Minecraft.startGame(Minecraft.java:586)
-- Initialization --
Details:
Stacktrace:
at net.minecraft.client.Minecraft.run(Minecraft.java:931)
at net.minecraft.client.main.Main.main(Main.java:164)
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)
at net.minecraftforge.gradle.GradleStartCommon.launch(Unknown Source)
at GradleStart.main(Unknown Source)
-- System Details --
Details:
Minecraft Version: 1.7.10
Operating System: Windows 8.1 (amd64) version 6.3
Java Version: 1.8.0_31, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 692221416 bytes (660 MB) / 1037959168 bytes (989 MB) up to 1037959168 bytes (989 MB)
JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
AABB Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
FML: MCP v9.05 FML v7.10.85.1230 Minecraft Forge 10.13.2.1230 4 mods loaded, 4 mods active
mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized
FML{7.10.85.1230} [Forge Mod Loader] (forgeSrc-1.7.10-10.13.2.1230.jar) Unloaded->Constructed->Pre-initialized->Initialized
Forge{10.13.2.1230} [Minecraft Forge] (forgeSrc-1.7.10-10.13.2.1230.jar) Unloaded->Constructed->Pre-initialized->Initialized
forge_test_mod{1.2.1} [Forge Test Mod] (bin) Unloaded->Constructed->Pre-initialized->Errored
Launched Version: 1.7.10
LWJGL: 2.9.1
OpenGL: GeForce GT 750M/PCIe/SSE2 GL version 4.3.0, NVIDIA Corporation
GL Caps: Using GL 1.3 multitexturing.
Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
Anisotropic filtering is supported and maximum anisotropy is 16.
Shaders are available because OpenGL 2.1 is supported.
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)
Vec3 Pool Size: 0 (0 bytes; 0 MB) allocated, 0 (0 bytes; 0 MB) used
Anisotropic Filtering: Off (1)
I don't know what line 23 is of your Crafting manager class is because of the formatting here.
This is the tutorial that more or less got me on my feet, here checking out the new updating to 1.8 section
What do you mean formatting? Farmland is a block in Minecraft that is used for planting seeds. I need to know about the crafting.
I mean if i look at your code from your previous post I can't tell which line is numbered what because the numbers are visible to you in your IDE but dont get copied with your code when you copy and paste it here, this forum tends to remove the empty spaces in the code so you cant really just count lines down from the package declaration (even then assuming that was line 1).
I put my code on pastbin.
http://pastebin.com/HHL7dbad
- Edit - sorry moment of dyslexia lol... try not having "X X" before declaring new Object
--GameRegistry.addShapedRecipe(new ItemStack(Blocks.web, 3), "X X", new Object[] {" X ", "X X", 'X', Items.string});
Okay, what do I need to fix?
Note: I did not start my mod with this tutorial, but I worked on some stuff here like potion affects and things like that.
Remove the bold part in mergis' post.
I cut it and put it where it belongs.
Still not working? Post your new code.
MainRegistry:
http://pastebin.com/t26XTXG6
CraftingManager:
http://pastebin.com/EVVi86E9
Crash report:
at com.mod.main.CraftingManager.addCraftingRec(CraftingManager.java:28)
at com.mod.main.CraftingManager.mainRegistry(CraftingManager.java:14)
at com.mod.main.MainRegistry.load(MainRegistry.java:33)
That's all I know
I fixed it!
Now I need to fix my world, so it will spawn all of my ores.
None of my items exist and I even have crafting recipies for them. How do I make a crop only grow on farmland? Also, all my blocks are in "my" tool tab.
MainRegistry:
http://pastebin.com/t26XTXG6
Mitems:
http://pastebin.com/j9ZHdqsQ
there is a method canBlockStay for blocks use that to return true if the block below it is farmland and false if its not
Edit- I think there is a method for before the block is placed too, canPlaceBlock i think
It works for me. Re-run 'gradlew setupDecompWorkspace eclipse' then double-clicked the empty package. If it still doesn't work please tell me. Can you find this? C:\Users\Your Windows Username\.gradle There should be a minecraft folder inside the caches.
I know this question isn't in the tutorial (I think?) but how do I register metadata blocks (1.7.10) with a RegisterHelper class, as all other tutorials I found to make Metadata blocks don't use that.