Jump to content

Recommended Posts

Posted

Okay, I'm usually not the guy who asks for help, but I'm pretty sure I exhausted the Internet about this.

 

For a start, I'm trying to detect any kind of Block Breaking in the game and, whenever a block is broken, output something to the console. However, with my current code, I get nothing. I'm sure it is a very small error, but it has been annoying me for a few days now.

 

Main class:

package at.galaxy2alex.insertmodname;

        import net.minecraftforge.common.MinecraftForge;
        import net.minecraftforge.fml.common.Mod;
        import net.minecraftforge.fml.common.Mod.EventHandler;
        import net.minecraftforge.fml.common.event.FMLInitializationEvent;
        import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
        import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

@Mod(modid = insertmodname.MODID, version = insertmodname.VERSION)
public class insertmodname
{
    public static final String MODID = "insertmodname";
    public static final String VERSION = "TechDemo";


    public void preInit(FMLPreInitializationEvent event) {

    }

    @EventHandler
    public void init(FMLInitializationEvent event)
    {
        MinecraftForge.EVENT_BUS.register(new BreakHandler());

    }

    public void postInit (FMLPostInitializationEvent event)
    {

    }
}

 

BreakHandler class:

package at.galaxy2alex.insertmodname;

import net.minecraftforge.event.world.BlockEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;

/**
* Created by Galaxy_2Alex on 18-Jul-16.
*/
public class BreakHandler {

    @SubscribeEvent
    public static void onBreakEvent(BlockEvent.BreakEvent event) {

        System.out.println(event.getPlayer());

        /*
        while (true) {
            String test = String.valueOf(breakEvent.getPlayer());
            System.out.println(test);
        }
        */
    }


}

Any help is very much appreciated, also simply telling me that I should never touch modding again.

Posted

You don't have an @Instance annotation over a field for your mod class. Your main mod file is likely not receiving the initialization events.

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

This is what I have now, based on a few things I found:

 

package at.galaxy2alex.insertmodname;

        import net.minecraftforge.common.MinecraftForge;
        import net.minecraftforge.fml.common.Mod;
        import net.minecraftforge.fml.common.Mod.EventHandler;
        import net.minecraftforge.fml.common.Mod.Instance;
        import net.minecraftforge.fml.common.event.FMLInitializationEvent;
        import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
        import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;

@Mod(modid = insertmodname.MODID, name = insertmodname.MODNAME, version = insertmodname.VERSION)

public class insertmodname
{
    public static final String MODID = "insertmodname";
    public static final String MODNAME = "insertmodnameMod";
    public static final String VERSION = "TechDemo";

    @Instance(insertmodname.MODID)
    public static insertmodname instance;

    @EventHandler
    public void preInit(FMLPreInitializationEvent event) {

    }

    @EventHandler
    public void init(FMLInitializationEvent event)
    {
        MinecraftForge.EVENT_BUS.register(new BreakHandler());

    }

    @EventHandler
    public void postInit (FMLPostInitializationEvent event)
    {

    }
}

 

No changes in the other file, still it doesn't seem to be functioning correctly. Putting the @Instance line in the other file gives me a few error messages. I might simply not be spotting the obvious here... One thing I was already confused about while doing initial research is that there is no consistency on in which phase to put the Event Registry, so this may also be a potential issue.

Guest
This topic is now closed to further replies.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Make a test with another Launcher like the Curseforge Launcher, MultiMC or AT Launcher
    • can anyone help me i am opening forge and add modpacks and then it says unable to update native luancher and i redownlaod java and the luancher it self?
    • The problem occurs also in 1.20.1 Forge, but with an "Error executing task on client" instead. I have "Sinytra Connector" installed. On 1.21.5 Fabric, there is no problem. When this happens, the chat message before the death screen appears gets sent, with an extra dash added.
    • Well, as usual, it was user error. Naming mismatch in sounds.json.  Please delete this post if you find it necessary. 
    • Hello Forge community.  I'm running into an issue with a mod I'm working on.  To preface, I can call /playsound modId:name music @a and I can hear the sound I registered being played in game. Great!  However, I cannot get it to trigger via my mod code.    Registration: public static final RegistryObject<SoundEvent> A_WORLD_OF_MADNESS = SOUND_EVENTS.register("a_world_of_madness", () -> new SoundEvent(new ResourceLocation("tetheredsouls", "a_world_of_madness")));   Playback: Minecraft mc = Minecraft.getInstance(); if (!(mc.player instanceof LocalPlayer) || mc.level == null) return; LocalPlayer player = (LocalPlayer) mc.player; BlockPos pos = player.blockPosition(); SoundEvent track = ModSounds.A_WORLD_OF_MADNESS.get(); System.out.println(track); System.out.println(pos); System.out.println(player); // play exactly like the tutorial: client-only, at the player's position try { mc.level.playLocalSound( player.getX(), player.getY(), player.getZ(), track, SoundSource.MUSIC, // Or MASTER if needed 1f, 1f, false ); System.out.println("[DEBUG] playSound success: " + track.getLocation()); } catch (Exception e) { System.err.println("[ERROR] Failed to play sound: " + track.getLocation()); e.printStackTrace(); } Sounds.json:   { "theme_of_laura": { "category": "music", "sounds": [ { "name": "tetheredsouls:a_world_of_madness", "stream": true } ] } } Things I have tried: - multiple .ogg files. Short .ogg files (5 seconds, <100KB).  - default minecraft sounds imported from import net.minecraft.sounds.SoundEvents; These work given my code. No idea why these are different.  - playSound() method, as well as several others in past iterations that did not work   I would be forever grateful if somebody could point me in the right direction. I've looked at several mod github repositories and found extremely similar code to what I'm doing. I've also found several threads in this forum that did not solve my issue. I just cannot figure out what I'm doing differently, and why I'm able to queue sounds manually with playsound but the code won't play it (despite confirming the code is being run with the debug statements.)
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

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