У меня есть обработчик событий в классе, предназначенном для звуков типа
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).