Jump to content

Recommended Posts

  • 3 weeks later...
  • 3 weeks later...
Posted (edited)

Ok, so I've done a few changes to my mod, and I no longer have errors for my classes. However, the problem now relates to the fact that when I run my Minecraft, it crashes and says this:

 

java.lang.IllegalStateException: The ObjectHolder annotation cannot apply to a field that does not map to a registry. Ensure the registry was created during the RegistryEvent.NewRegistry event. (found : net.minecraft.creativetab.CreativeTabs at java.lang.reflect.Field.SOUL_FORGERY)

 

Here's my ClientEventSubscriber if it helps:
 

@Mod.EventBusSubscriber(modid = Main.MODID, value = CLIENT)
public final class ClientEventSubscriber {
	
	private static final Logger LOGGER = LogManager.getLogger();
	private static final String DEFAULT_VARIANT = "normal";
	
	@SubscribeEvent
	public static void onRegisterModelsEvent(@Nonnull final ModelRegistryEvent event) {
		
		ForgeRegistries.BLOCKS.getValuesCollection().stream()
						.filter(block -> block.getRegistryName().getNamespace().equals(Main.MODID))
						.forEach(ClientEventSubscriber::registerItemBlockModel);
		
		registerItemBlockModel(ModBlocks.IGRIAN_ORE);
		registerItemBlockModel(ModBlocks.SHARD_FUSER);
		
		registerItemModel(ModItems.IGRIAN_INGOT);
		registerItemModel(ModItems.IGRIAN_SHARDS);
		registerItemModel(ModItems.TAINTED_SOUL);
		registerItemModel(ModItems.IGRIAN_SWORD);
		
		LOGGER.debug("Registered models");
	}
	
	private static void registerItemModel(@Nonnull final Item item) {
		Preconditions.checkNotNull(item, "Item cannot be null!");
		final ResourceLocation registryName = item.getRegistryName();
		Preconditions.checkNotNull(registryName, "Item Registry Name cannot be null!");
		ModelLoader.setCustomModelResourceLocation(item, 0, new ModelResourceLocation(item.getRegistryName(), DEFAULT_VARIANT));
	}

	private static void registerItemBlockModel(@Nonnull final Block block) {
		Preconditions.checkNotNull(block, "Block cannot be null!");
		final ResourceLocation registryName = block.getRegistryName();
		Preconditions.checkNotNull(registryName, "Block Registry Name cannot be null!");
		ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(block), 0, new ModelResourceLocation(block.getRegistryName(), DEFAULT_VARIANT));
	}
	
	@SubscribeEvent
	public static void onTextureStitchEvent(@Nonnull final TextureStitchEvent event) {
		// Register texture for Shard Fuser
		final ResourceLocation registryName = ModBlocks.SHARD_FUSER.getRegistryName();
		event.getMap().registerSprite(new ResourceLocation(registryName.getNamespace(), "block/" + registryName.getPath()));
	}
}

 

I'm not really sure what other things to give to help solve this problem.

Edited by Distinct Soul
Posted

I did and that's why I sent that because it had to do with registering stuff, which I thought the error was talking about, as it was talking about the registry and registry events. If I didn't I would of just said: "My game crashed. Please help." and not even send anything other than the crash report. At least now that I know that it's more specifically targeted at the @ObjectHolder annotation.

 

From that, all I can think of that might help is sending classes which contain the '@ObjectHolder' annotation.

@ObjectHolder(Main.MODID)
public class ModBlocks {
	
	// Blocks
	public static final BlockBase IGRIAN_ORE = null;
	public static final BlockBase SHARD_FUSER = null;
}
@ObjectHolder (Main.MODID)
public class ModItems {
	
	// Creative Tabs
	public static final CreativeTabs SOUL_FORGERY = new CreativeTabs("soul_forgery") {

		@Override
		public ItemStack createIcon() {
			return new ItemStack(IGRIAN_INGOT);
		}
	};
	
	// Materials
	public static final ToolMaterial MATERIAL_IGRIAN = EnumHelper.addToolMaterial("material_igrian", 4, 1600, 9.0F, 5.0F, 10);
	
	// Items
	public static final ItemBase TAINTED_SOUL = null;
	public static final ItemBase IGRIAN_SHARDS = null;
	public static final ItemBase IGRIAN_INGOT = null;
	
	// Tools
	public static final ItemSword IGRIAN_SWORD = new ToolSword(MATERIAL_IGRIAN);
	
}

 

Posted

The error is telling you that you are applying the @ObjectHolder annotation to a field that does not correspond to a registry, namely one of type CreativeTabs. If you annotate the class with @ObjectHolder like you have done, it will try to use all of the fields in there as object holders, regardless of their type, so it is trying to use SOUL_FORGERY as an object holder. You can get around this by either having only the things you want as object holders in that class and moving the others, or by annotating each field instead of the whole class (see this link).

  • 1 month later...
Posted
14 minutes ago, Distinct Soul said:

Now when I do that it says 'Item cannot be null'; but I thought that was part of the purpose of my EventSubscriber class. Or one of my other classes at least.

That is not what the EventSubscriber class does. If you have a problem with something being null (or any other error), you have to include the code and the log so that we can even begin to help you.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted

Alright, so this is the class I just updated:

public class ModItems {
	
	@SubscribeEvent
	public void registerItems(RegistryEvent.Register<Item> event) {
	    event.getRegistry().registerAll(TAINTED_SOUL, IGRIAN_SHARDS, IGRIAN_INGOT, IGRIAN_SWORD);
	}
	
	// Creative Tabs
	public static final CreativeTabs SOUL_FORGERY = new CreativeTabs("soul_forgery") {

		@Override
		public ItemStack createIcon() {
			return new ItemStack(IGRIAN_INGOT);
		}
	};
	
	// Materials
	public static final ToolMaterial MATERIAL_IGRIAN = EnumHelper.addToolMaterial("material_igrian", 4, 1600, 9.0F, 5.0F, 10);
	
	// Items
	public static final ItemBase TAINTED_SOUL = null;
	public static final ItemBase IGRIAN_SHARDS = null;
	public static final ItemBase IGRIAN_INGOT = null;
	
	// Tools
	public static final ItemSword IGRIAN_SWORD = new ToolSword(MATERIAL_IGRIAN);
	
}

(Added the 'registerItems' event at the top, and removed the '@ObjectHolder' annotation that I believe was causing the previous crash)

 

The class that I now believe relates to the current crash, which in the crash log references line 52 and 43 of:

@Mod.EventBusSubscriber(modid = Main.MODID, value = CLIENT)
public final class ClientEventSubscriber {
	
	private static final Logger LOGGER = LogManager.getLogger();
	private static final String DEFAULT_VARIANT = "normal";
	
	@SubscribeEvent
	public static void onRegisterModelsEvent(@Nonnull final ModelRegistryEvent event) {
		
		ForgeRegistries.BLOCKS.getValuesCollection().stream()
						.filter(block -> block.getRegistryName().getNamespace().equals(Main.MODID))
						.forEach(ClientEventSubscriber::registerItemBlockModel);
		
		registerItemBlockModel(ModBlocks.IGRIAN_ORE);
		registerItemBlockModel(ModBlocks.SHARD_FUSER);
		
		registerItemModel(ModItems.IGRIAN_INGOT);
		registerItemModel(ModItems.IGRIAN_SHARDS);
		registerItemModel(ModItems.TAINTED_SOUL);
		registerItemModel(ModItems.IGRIAN_SWORD);
		
		LOGGER.debug("Registered models");
	}
	
	private static void registerItemModel(@Nonnull final Item item) {
		Preconditions.checkNotNull(item, "Item cannot be null!");
		final ResourceLocation registryName = item.getRegistryName();
		Preconditions.checkNotNull(registryName, "Item Registry Name cannot be null!");
		ModelLoader.setCustomModelResourceLocation(item, 0, new ModelResourceLocation(item.getRegistryName(), DEFAULT_VARIANT));
	}

	private static void registerItemBlockModel(@Nonnull final Block block) {
		Preconditions.checkNotNull(block, "Block cannot be null!");
		final ResourceLocation registryName = block.getRegistryName();
		Preconditions.checkNotNull(registryName, "Block Registry Name cannot be null!");
		ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(block), 0, new ModelResourceLocation(block.getRegistryName(), DEFAULT_VARIANT));
	}
	
	@SubscribeEvent
	public static void onTextureStitchEvent(@Nonnull final TextureStitchEvent event) {
		// Register texture for Shard Fuser
		final ResourceLocation registryName = ModBlocks.SHARD_FUSER.getRegistryName();
		event.getMap().registerSprite(new ResourceLocation(registryName.getNamespace(), "block/" + registryName.getPath()));
	}
}

 

And this is the error log:

Spoiler

---- Minecraft Crash Report ----
// My bad.

Time: 7/24/19 4:29 PM
Description: Initializing game

java.lang.NullPointerException: Item cannot be null!
    at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:787)
    at com.distinctsoul.soulforgery.client.ClientEventSubscriber.registerItemModel(ClientEventSubscriber.java:52)
    at com.distinctsoul.soulforgery.client.ClientEventSubscriber.onRegisterModelsEvent(ClientEventSubscriber.java:43)
    at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_5_ClientEventSubscriber_onRegisterModelsEvent_ModelRegistryEvent.invoke(.dynamic)
    at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90)
    at net.minecraftforge.fml.common.eventhandler.EventBus$1.invoke(EventBus.java:143)
    at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:179)
    at net.minecraftforge.fml.client.FMLClientHandler.fireSidedRegistryEvents(FMLClientHandler.java:1096)
    at net.minecraftforge.fml.common.FMLCommonHandler.fireSidedRegistryEvents(FMLCommonHandler.java:758)
    at net.minecraftforge.fml.common.Loader.preinitializeMods(Loader.java:605)
    at net.minecraftforge.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:270)
    at net.minecraft.client.Minecraft.init(Minecraft.java:513)
    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(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 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.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97)
    at GradleStart.main(GradleStart.java:25)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Thread: Client thread
Stacktrace:
    at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:787)
    at com.distinctsoul.soulforgery.client.ClientEventSubscriber.registerItemModel(ClientEventSubscriber.java:52)
    at com.distinctsoul.soulforgery.client.ClientEventSubscriber.onRegisterModelsEvent(ClientEventSubscriber.java:43)
    at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_5_ClientEventSubscriber_onRegisterModelsEvent_ModelRegistryEvent.invoke(.dynamic)
    at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90)
    at net.minecraftforge.fml.common.eventhandler.EventBus$1.invoke(EventBus.java:143)
    at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:179)
    at net.minecraftforge.fml.client.FMLClientHandler.fireSidedRegistryEvents(FMLClientHandler.java:1096)
    at net.minecraftforge.fml.common.FMLCommonHandler.fireSidedRegistryEvents(FMLCommonHandler.java:758)
    at net.minecraftforge.fml.common.Loader.preinitializeMods(Loader.java:605)
    at net.minecraftforge.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:270)
    at net.minecraft.client.Minecraft.init(Minecraft.java:513)

-- 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(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 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.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97)
    at GradleStart.main(GradleStart.java:25)

-- System Details --
Details:
    Minecraft Version: 1.12.2
    Operating System: Windows 10 (amd64) version 10.0
    Java Version: 1.8.0_181, Oracle Corporation
    Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
    Memory: 776709504 bytes (740 MB) / 1037959168 bytes (989 MB) up to 1037959168 bytes (989 MB)
    JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
    IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
    FML: MCP 9.42 Powered by Forge 14.23.3.2655 5 mods loaded, 5 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.3.2655.jar | None      |
    | UCH   | forge       | 14.23.3.2655 | forgeSrc-1.12.2-14.23.3.2655.jar | None      |
    | UCH   | soulforgery | 0.0.1        | bin                              | None      |

    Loaded coremods (and transformers): 
    GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.6.0 NVIDIA 430.86' Renderer: 'GeForce GTX 1050 Ti/PCIe/SSE2'
    Launched Version: 1.12.2
    LWJGL: 2.9.4
    OpenGL: GeForce GTX 1050 Ti/PCIe/SSE2 GL version 4.6.0 NVIDIA 430.86, 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: 12x AMD Ryzen 5 1600X Six-Core Processor 

Any help would be appreciated.

Posted
39 minutes ago, Distinct Soul said:

public static final ItemBase TAINTED_SOUL = null;

public static final ItemBase IGRIAN_SHARDS = null;

public static final ItemBase IGRIAN_INGOT = null;

You set these to null here.

 

38 minutes ago, Distinct Soul said:

event.getRegistry().registerAll(TAINTED_SOUL, IGRIAN_SHARDS, IGRIAN_INGOT, IGRIAN_SWORD);

So...you're referencing the static fields here. Which are null.

 

39 minutes ago, Distinct Soul said:

registerItemBlockModel(ModBlocks.IGRIAN_ORE);

registerItemBlockModel(ModBlocks.SHARD_FUSER);

registerItemModel(ModItems.IGRIAN_INGOT);

registerItemModel(ModItems.IGRIAN_SHARDS);

registerItemModel(ModItems.TAINTED_SOUL);

registerItemModel(ModItems.IGRIAN_SWORD);

Those references are still null.

39 minutes ago, Distinct Soul said:

return new ItemStack(IGRIAN_INGOT);

Still null.

 

I don't see where you're actually creating these items. If you are going to use @ObjectHolder to fill them with values, you can't reference these during the RegistryEvent<Item> handler because object holders are not filled until after the registry event.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted
4 minutes ago, Distinct Soul said:

So what exactly should I do? I've been following Cadiboo's example as best as I can; but I've had to edit things so much I'm completely lost on what I'm supposed to do, and the right way to do it. I feel like examples would help more.

Where do you call new Item()? You have to, somewhere. Maybe it's new Ruby() or whatever, but you MUST be calling new on a class that extends Item SOMEWHERE. If you do not have this line, then you are failing to follow the examples terribly.

 

See this?

https://github.com/Cadiboo/Example-Mod/blob/1.12.2/src/main/java/io/github/cadiboo/examplemod/EventSubscriber.java#L95

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted

Oh my bad, I forgot that what I had in this class:

@EventBusSubscriber (modid = Main.MODID)
public class EventSubscriber {
	
	@SubscribeEvent
	public static void registerBlocks(Register<Block> event) {
		
		final Block[] blocks = {
						new BlockBase(Material.ROCK).setRegistryName("igrian_ore").setTranslationKey(Main.MODID + "." + "igrian_ore"),
						new BlockBase(Material.ROCK).setRegistryName("shard_fuser").setTranslationKey(Main.MODID + "." + "shard_fuser"),
		};
		
		event.getRegistry().registerAll(blocks);
	}
	
	@SubscribeEvent
	public static void registerItems(Register<Item> event) {
			
			final Item[] items = {
						new ItemBase().setRegistryName("tainted_soul").setTranslationKey(Main.MODID + "." + "tainted_soul"),
						new ItemBase().setRegistryName("igrian_shards").setTranslationKey(Main.MODID + "." + "igrian_shards"),
						new ItemBase().setRegistryName("igrian_ingot").setTranslationKey(Main.MODID + "." + "igrian_ingot"),
						new ItemBase().setRegistryName("igrian_sword").setTranslationKey(Main.MODID + "." + "igrian_sword"),	
			};
			
			final Item[] itemBlocks = {
			new ItemBlock(ModBlocks.IGRIAN_ORE).setRegistryName(ModBlocks.IGRIAN_ORE.getRegistryName()),
			new ItemBlock(ModBlocks.SHARD_FUSER).setRegistryName(ModBlocks.SHARD_FUSER.getRegistryName()),
		};
			
			event.getRegistry().registerAll(items);
			event.getRegistry().registerAll(itemBlocks);
		}
	
}

 

Posted
1 hour ago, Distinct Soul said:

(Added the 'registerItems' event at the top, and removed the '@ObjectHolder' annotation that I believe was causing the previous crash)

Since you removed it from the class you need to put it on every Item field.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Posted

If you have this:

1 hour ago, Distinct Soul said:

	@SubscribeEvent
	public static void registerItems(Register<Item> event) {
			
			final Item[] items = {

 

Then why do you also have this:

2 hours ago, Distinct Soul said:

	@SubscribeEvent
	public void registerItems(RegistryEvent.Register<Item> event) {
	    event.getRegistry().registerAll(TAINTED_SOUL, IGRIAN_SHARDS, IGRIAN_INGOT, IGRIAN_SWORD);
	}

 

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

  • 2 weeks later...
Posted

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted
15 minutes ago, Distinct Soul said:

Ngl; but I have no clue what that's asking for me to do. I get the example (I think); but that's about it.

// Instead of...
@ObjectHolder("modid")
public class ModItems {
  
  public static final Item SOME_ITEM = null;
  
}

// Do it on every field.
public class ModItems {
  
  @ObjectHolder("modid:registry_name")
  public static final Item SOME_ITEM = null;
  
}

It's not that hard.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Posted

Alright, so now that errors been fixed; however, now I have a new error:

Spoiler

---- Minecraft Crash Report ----
// Why did you do that?

Time: 8/5/19 5:48 PM
Description: Initializing game

java.lang.NullPointerException: Initializing game
    at com.distinctsoul.soulforgery.EventSubscriber.registerItems(EventSubscriber.java:41)
    at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_6_EventSubscriber_registerItems_Register.invoke(.dynamic)
    at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90)
    at net.minecraftforge.fml.common.eventhandler.EventBus$1.invoke(EventBus.java:143)
    at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:179)
    at net.minecraftforge.registries.GameData.fireRegistryEvents(GameData.java:741)
    at net.minecraftforge.fml.common.Loader.preinitializeMods(Loader.java:604)
    at net.minecraftforge.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:270)
    at net.minecraft.client.Minecraft.init(Minecraft.java:513)
    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(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 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.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97)
    at GradleStart.main(GradleStart.java:25)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Thread: Client thread
Stacktrace:
    at com.distinctsoul.soulforgery.EventSubscriber.registerItems(EventSubscriber.java:41)
    at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_6_EventSubscriber_registerItems_Register.invoke(.dynamic)
    at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90)
    at net.minecraftforge.fml.common.eventhandler.EventBus$1.invoke(EventBus.java:143)
    at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:179)
    at net.minecraftforge.registries.GameData.fireRegistryEvents(GameData.java:741)
    at net.minecraftforge.fml.common.Loader.preinitializeMods(Loader.java:604)
    at net.minecraftforge.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:270)
    at net.minecraft.client.Minecraft.init(Minecraft.java:513)

-- 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(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 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.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97)
    at GradleStart.main(GradleStart.java:25)

-- System Details --
Details:
    Minecraft Version: 1.12.2
    Operating System: Windows 10 (amd64) version 10.0
    Java Version: 1.8.0_181, Oracle Corporation
    Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
    Memory: 813085800 bytes (775 MB) / 1037959168 bytes (989 MB) up to 1037959168 bytes (989 MB)
    JVM Flags: 3 total; -Xincgc -Xmx1024M -Xms1024M
    IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
    FML: MCP 9.42 Powered by Forge 14.23.3.2655 5 mods loaded, 5 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.3.2655.jar | None      |
    | UCH   | forge       | 14.23.3.2655 | forgeSrc-1.12.2-14.23.3.2655.jar | None      |
    | UCH   | soulforgery | 0.0.1        | bin                              | None      |

    Loaded coremods (and transformers): 
    GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.6.0 NVIDIA 430.86' Renderer: 'GeForce GTX 1050 Ti/PCIe/SSE2'
    Launched Version: 1.12.2
    LWJGL: 2.9.4
    OpenGL: GeForce GTX 1050 Ti/PCIe/SSE2 GL version 4.6.0 NVIDIA 430.86, 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: 12x AMD Ryzen 5 1600X Six-Core Processor 

I get that it's located at line 41 of my EventSubscriber class; but I have no idea what the error means.

 

Here is that class again:

@EventBusSubscriber (modid = Main.MODID)
public class EventSubscriber {
	
	@SubscribeEvent
	public static void registerBlocks(Register<Block> event) {
		
		final Block[] blocks = {
						new BlockBase(Material.ROCK).setRegistryName("igrian_ore").setTranslationKey(Main.MODID + "." + "igrian_ore"),
						new BlockBase(Material.ROCK).setRegistryName("shard_fuser").setTranslationKey(Main.MODID + "." + "shard_fuser"),
		};
		
		event.getRegistry().registerAll(blocks);
	}
	
	@SubscribeEvent
	public static void registerItems(Register<Item> event) {
			
			final Item[] items = {
						new ItemBase().setRegistryName("tainted_soul").setTranslationKey(Main.MODID + "." + "tainted_soul"),
						new ItemBase().setRegistryName("igrian_shards").setTranslationKey(Main.MODID + "." + "igrian_shards"),
						new ItemBase().setRegistryName("igrian_ingot").setTranslationKey(Main.MODID + "." + "igrian_ingot"),
						new ItemBase().setRegistryName("igrian_sword").setTranslationKey(Main.MODID + "." + "igrian_sword"),	
			};
			
			final Item[] itemBlocks = {
			new ItemBlock(ModBlocks.IGRIAN_ORE).setRegistryName(ModBlocks.IGRIAN_ORE.getRegistryName()),
			new ItemBlock(ModBlocks.SHARD_FUSER).setRegistryName(ModBlocks.SHARD_FUSER.getRegistryName()),
		};
			
			event.getRegistry().registerAll(items);
			event.getRegistry().registerAll(itemBlocks);
		}
	
}

 

Posted

which line is line 41?

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted

I hope this is what you mean, because in all my mess of trying to fix things, I don't even remember anymore:

public class BlockBase extends Block implements IHasModel {
	
	public BlockBase() {
		
		super(Material.ROCK);
		setCreativeTab(ModItems.SOUL_FORGERY);
	}
	
	@Override
	public void registerModels() {
		
		IProxy.registerItemRenderer(Item.getItemFromBlock(this), 0, "inventory");
	}

	public TileEntity createNewTileEntity(World worldIn, int meta) {
		return null;
	}
}

 

If this does not include initializing them, then I would like to know how to do it. Because I've tried looking it up, and it just makes me more confused, as it just results in me getting different errors.

Posted
38 minutes ago, Distinct Soul said:

IHasModel

You don't need this. Remove all references to it and nuke the file. It does nothing helpful.

 

38 minutes ago, Distinct Soul said:

BlockBase

BlockBase already exists, its called Block.

 

39 minutes ago, Distinct Soul said:

	public TileEntity createNewTileEntity(World worldIn, int meta) {
		return null;
	}

So you overrode a method to...return the same thing as base?

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

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
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
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.

Announcements




  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Version 1.19 - Forge 41.0.63 I want to create a wolf entity that I can ride, so far it seems to be working, but the problem is that when I get on the wolf, I can’t control it. I then discovered that the issue is that the server doesn’t detect that I’m riding the wolf, so I’m struggling with synchronization. However, it seems to not be working properly. As I understand it, the server receives the packet but doesn’t register it correctly. I’m a bit new to Java, and I’ll try to provide all the relevant code and prints *The comments and prints are translated by chatgpt since they were originally in Spanish* Thank you very much in advance No player is mounted, or the passenger is not a player. No player is mounted, or the passenger is not a player. No player is mounted, or the passenger is not a player. No player is mounted, or the passenger is not a player. No player is mounted, or the passenger is not a player. MountableWolfEntity package com.vals.valscraft.entity; import com.vals.valscraft.network.MountSyncPacket; import com.vals.valscraft.network.NetworkHandler; import net.minecraft.client.Minecraft; import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.ai.attributes.AttributeSupplier; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.animal.Wolf; import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.Entity; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; import net.minecraftforge.event.TickEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.network.PacketDistributor; public class MountableWolfEntity extends Wolf { private boolean hasSaddle; private static final EntityDataAccessor<Byte> DATA_ID_FLAGS = SynchedEntityData.defineId(MountableWolfEntity.class, EntityDataSerializers.BYTE); public MountableWolfEntity(EntityType<? extends Wolf> type, Level level) { super(type, level); this.hasSaddle = false; } @Override protected void defineSynchedData() { super.defineSynchedData(); this.entityData.define(DATA_ID_FLAGS, (byte)0); } public static AttributeSupplier.Builder createAttributes() { return Wolf.createAttributes() .add(Attributes.MAX_HEALTH, 20.0) .add(Attributes.MOVEMENT_SPEED, 0.3); } @Override public InteractionResult mobInteract(Player player, InteractionHand hand) { ItemStack itemstack = player.getItemInHand(hand); if (itemstack.getItem() == Items.SADDLE && !this.hasSaddle()) { if (!player.isCreative()) { itemstack.shrink(1); } this.setSaddle(true); return InteractionResult.SUCCESS; } else if (!level.isClientSide && this.hasSaddle()) { player.startRiding(this); MountSyncPacket packet = new MountSyncPacket(true); // 'true' means the player is mounted NetworkHandler.CHANNEL.sendToServer(packet); // Ensure the server handles the packet return InteractionResult.SUCCESS; } return InteractionResult.PASS; } @Override public void travel(Vec3 travelVector) { if (this.isVehicle() && this.getControllingPassenger() instanceof Player) { System.out.println("The wolf has a passenger."); System.out.println("The passenger is a player."); Player player = (Player) this.getControllingPassenger(); // Ensure the player is the controller this.setYRot(player.getYRot()); this.yRotO = this.getYRot(); this.setXRot(player.getXRot() * 0.5F); this.setRot(this.getYRot(), this.getXRot()); this.yBodyRot = this.getYRot(); this.yHeadRot = this.yBodyRot; float forward = player.zza; float strafe = player.xxa; if (forward <= 0.0F) { forward *= 0.25F; } this.flyingSpeed = this.getSpeed() * 0.1F; this.setSpeed((float) this.getAttributeValue(Attributes.MOVEMENT_SPEED) * 1.5F); this.setDeltaMovement(new Vec3(strafe, travelVector.y, forward).scale(this.getSpeed())); this.calculateEntityAnimation(this, false); } else { // The wolf does not have a passenger or the passenger is not a player System.out.println("No player is mounted, or the passenger is not a player."); super.travel(travelVector); } } public boolean hasSaddle() { return this.hasSaddle; } public void setSaddle(boolean hasSaddle) { this.hasSaddle = hasSaddle; } @Override protected void dropEquipment() { super.dropEquipment(); if (this.hasSaddle()) { this.spawnAtLocation(Items.SADDLE); this.setSaddle(false); } } @SubscribeEvent public static void onServerTick(TickEvent.ServerTickEvent event) { if (event.phase == TickEvent.Phase.START) { MinecraftServer server = net.minecraftforge.server.ServerLifecycleHooks.getCurrentServer(); if (server != null) { for (ServerPlayer player : server.getPlayerList().getPlayers()) { if (player.isPassenger() && player.getVehicle() instanceof MountableWolfEntity) { MountableWolfEntity wolf = (MountableWolfEntity) player.getVehicle(); System.out.println("Tick: " + player.getName().getString() + " is correctly mounted on " + wolf); } } } } } private boolean lastMountedState = false; @Override public void tick() { super.tick(); if (!this.level.isClientSide) { // Only on the server boolean isMounted = this.isVehicle() && this.getControllingPassenger() instanceof Player; // Only print if the state changed if (isMounted != lastMountedState) { if (isMounted) { Player player = (Player) this.getControllingPassenger(); // Verify the passenger is a player System.out.println("Server: Player " + player.getName().getString() + " is now mounted."); } else { System.out.println("Server: The wolf no longer has a passenger."); } lastMountedState = isMounted; } } } @Override public void addPassenger(Entity passenger) { super.addPassenger(passenger); if (passenger instanceof Player) { Player player = (Player) passenger; if (!this.level.isClientSide && player instanceof ServerPlayer) { // Send the packet to the server to indicate the player is mounted NetworkHandler.CHANNEL.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) player), new MountSyncPacket(true)); } } } @Override public void removePassenger(Entity passenger) { super.removePassenger(passenger); if (passenger instanceof Player) { Player player = (Player) passenger; if (!this.level.isClientSide && player instanceof ServerPlayer) { // Send the packet to the server to indicate the player is no longer mounted NetworkHandler.CHANNEL.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) player), new MountSyncPacket(false)); } } } @Override public boolean isControlledByLocalInstance() { Entity entity = this.getControllingPassenger(); return entity instanceof Player; } @Override public void positionRider(Entity passenger) { if (this.hasPassenger(passenger)) { double xOffset = Math.cos(Math.toRadians(this.getYRot() + 90)) * 0.4; double zOffset = Math.sin(Math.toRadians(this.getYRot() + 90)) * 0.4; passenger.setPos(this.getX() + xOffset, this.getY() + this.getPassengersRidingOffset() + passenger.getMyRidingOffset(), this.getZ() + zOffset); } } } MountSyncPacket package com.vals.valscraft.network; import com.vals.valscraft.entity.MountableWolfEntity; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; public class MountSyncPacket { private final boolean isMounted; public MountSyncPacket(boolean isMounted) { this.isMounted = isMounted; } public void encode(FriendlyByteBuf buffer) { buffer.writeBoolean(isMounted); } public static MountSyncPacket decode(FriendlyByteBuf buffer) { return new MountSyncPacket(buffer.readBoolean()); } public void handle(NetworkEvent.Context context) { context.enqueueWork(() -> { ServerPlayer player = context.getSender(); // Get the player from the context if (player != null) { // Verifies if the player has dismounted if (!isMounted) { Entity vehicle = player.getVehicle(); if (vehicle instanceof MountableWolfEntity wolf) { // Logic to remove the player as a passenger wolf.removePassenger(player); System.out.println("Server: Player " + player.getName().getString() + " is no longer mounted."); } } } }); context.setPacketHandled(true); // Marks the packet as handled } } networkHandler package com.vals.valscraft.network; import com.vals.valscraft.valscraft; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.network.NetworkRegistry; import net.minecraftforge.network.simple.SimpleChannel; import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; public class NetworkHandler { private static final String PROTOCOL_VERSION = "1"; public static final SimpleChannel CHANNEL = NetworkRegistry.newSimpleChannel( new ResourceLocation(valscraft.MODID, "main"), () -> PROTOCOL_VERSION, PROTOCOL_VERSION::equals, PROTOCOL_VERSION::equals ); public static void init() { int packetId = 0; // Register the mount synchronization packet CHANNEL.registerMessage( packetId++, MountSyncPacket.class, MountSyncPacket::encode, MountSyncPacket::decode, (msg, context) -> msg.handle(context.get()) // Get the context with context.get() ); } }  
    • Do you use features of inventory profiles next (ipnext) or is there a change without it?
    • Remove rubidium - you are already using embeddium, which is a fork of rubidium
  • Topics

×
×
  • Create New...

Important Information

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