Search code examples
java-8minecraftminecraft-forge

Cant detect when a player joins a world


So im trying to make this mod give you 2 apples (for testing purposes) but I cant seem to get it to work :/ (no errors nothing the mod does not output anything) here's my code (1.8.9 Forge BTW):

    @SubscribeEvent
public static void init(FMLInitializationEvent event)
{
    MinecraftForge.EVENT_BUS.register(EventHandler.class);
}
@SubscribeEvent
public void onPlayerJoin(PlayerLoggedInEvent event)
{
    event.player.inventory.addItemStackToInventory(new ItemStack(Items.apple, 2));
    event.player.addChatMessage(new ChatComponentText("test"));
    return;
}

Solution

  • Minecraft uses two different event systems for some reason. init is supposed to be @EventHandler, not @SubscribeEvent. onPlayerJoin is correct though. (Add import net.minecraftforge.fml.common.Mod.EventHandler; if you don't already have it.)

    Also, if onPlayerJoin is in your MainGuts class, then you need to do either MinecraftForge.EVENT_BUS.register(MainGuts.class); or MinecraftForge.EVENT_BUS.register(this); (try both; I forget which is correct all the way back in 1.8.9), not MinecraftForge.EVENT_BUS.register(EventHandler.class);.