Почему в моем моде не вызывается registerSounds? - PullRequest
0 голосов
/ 03 марта 2019

У меня есть обработчик событий в классе, предназначенном для звуков типа

public class Sounds
{
    public static SoundEvent magicWand;

    public void registerSounds(Register<SoundEvent> event)
    {
       IForgeRegistry<SoundEvent> registry = event.getRegistry();

       magicWand = new SoundEvent(new ResourceLocation(MagicWandMod.MODID, 
                     "magic_wand"));

       registry.registerAll(magicWand);
    }    
}

, но он никогда не вызывается.Почему бы и нет?

Класс Sounds регистрируется на шине событий из общего прокси-сервера, точно так же, как (мой рабочий) обработчик возможностей.

public class CommonProxy
{    
    public void init()
    {
        CapabilityManager.INSTANCE.register(MagicWand.IMagicWandPlayer.class, new MagicWand.MagicWandPlayerStorage(),
                new MagicWand.MagicWandPlayerStorage.Factory());

        MinecraftForge.EVENT_BUS.register(new CapabilityHandler());
        MinecraftForge.EVENT_BUS.register(new Sounds());
    }    
}

Общий прокси-сервер регистрируется из моего класса модов как

@Mod.EventBusSubscriber(modid = MagicWandMod.MODID)
@Mod(modid = MagicWandMod.MODID, version = MagicWandMod.VERSION)
public class MagicWandMod
{
    public static final String MODID = "magicwandmod";
    public static final String VERSION = "1.0";

    public static Item magicwand = new MagicWand();

    @SidedProxy(clientSide = "proxies.CommonProxy", serverSide = "proxies.CommonProxy")
    public static CommonProxy proxy;

    @EventHandler
    public void init(FMLInitializationEvent event)
    {
        proxy.init();
    }
}

(я подозреваю, что мне приходится вручную вызывать эту функцию init в CommonProxy).

1 Ответ

0 голосов
/ 03 марта 2019

Вы забыли аннотацию @SubscribeEvent.

public class Sounds
{
    public static SoundEvent magicWand;

    @SubscribeEvent
    public void registerSounds(Register<SoundEvent> event)
    {
       IForgeRegistry<SoundEvent> registry = event.getRegistry();

       magicWand = new SoundEvent(new ResourceLocation(MagicWandMod.MODID, 
                     "magic_wand"));

       registry.registerAll(magicWand);
    }
}
...