minecraft
Моддинг с кузницей
Поиск…
Синтаксис
- MODID = представляет Идентификатор MOD
- MODPath = обозначает полный путь к каталогу в папке мод
замечания
Этот раздел должен содержать большинство использованных шаблонов / примеров и хорошо протестированный код для модификации приложения Minecraft с помощью кузницы. Возможно, это может заменить официальную документацию в один прекрасный день.
Схема реализации для инициализационных прокси
В этом примере показано, как реализовать прокси-классы для приложения Minecraft Mod, которые используются для инициализации вашего мода.
Прежде всего вам понадобится реализовать базовый класс CommonProxy.java, который содержит 3 главным образом используемый метод:
public class CommonProxy {
public void preInit(FMLPreInitializationEvent e) {}
public void init(FMLInitializationEvent e) {}
public void postInit(FMLPostInitializationEvent e) {}
}
Обычно ваш мод имеет 2 разных пакета для кода клиента и сервера, поэтому вам понадобится в каждом пакете дочерний класс CommonProxy.java, например:
public class ClientProxy extends CommonProxy {
@Override
public void preInit(FMLPreInitializationEvent e) {
super.preInit(e);
}
@Override
public void init(FMLInitializationEvent e) {
super.init(e);
}
@Override
public void postInit(FMLPostInitializationEvent e) {
super.postInit(e);
}
}
и для сервера:
public class ServerProxy extends CommonProxy {
@Override
public void preInit(FMLPreInitializationEvent e) {
super.preInit(e);
}
@Override
public void init(FMLInitializationEvent e) {
super.init(e);
}
@Override
public void postInit(FMLPostInitializationEvent e) {
super.postInit(e);
}
}
После того, как вы создали эти классы, вы можете расширять их методами, которые должны выполняться только на стороне клиента или сервера, но также могут присоединяться к ним, если вы вызываете методы в классе «base».
Наконец, вы должны определить, какой прокси-сервер принимается во время выполнения. Вы должны расширить свой основной класс mod с @Mod
аннотации @Mod
, путем:
private static final String CLIENTPROXY = "com.yourpackage.client.ClientProxy";
private static final String SERVERPROXY = "com.yourpackage.client.ServerProxy";
@SidedProxy(clientSide = CLIENTPROXY, serverSide = SERVERPROXY)
public static CommonProxy PROXY;
Это позволит Forge определить, какой класс следует выполнять во время выполнения. В методах инициализации вашего Mod теперь вы можете использовать это статическое свойство PROXY.
@EventHandler
public void init(FMLInitializationEvent event) {
PROXY.init(event);
}
@Mod.EventHandler
public void preInit(FMLPreInitializationEvent event) {
PROXY.preInit(event);
}
@EventHandler
public void postInit(FMLPostInitializationEvent event) {
PROXY.postInit(event);
}
Добавление пользовательских звуков в ваш MOD
В этом примере показано, как вы добавляете новые звуки в ваш MOD и воспроизводите их. Прежде всего вам нужен звуковой файл, который имеет формат *.ogg
. Любой другой формат не допускается приложением Minecraft и будет отклонен.
Звуковой файл имеет название: sound1.ogg
Поместите звуковой файл по следующему пути:
/YourPath/src/main/resources/assets/MODID/sounds/sound1.ogg
Замените «MODID» на идентификатор, определенный для вашего MOD
Затем вам нужно создать sounds.json
в кодировке UTF-8 (Standard), которая определяет имя, ресурс и т. Д. Для вашего пользовательского звука. Этот файл будет выглядеть так:
{
"sound1": {
"category" : "player",
"sounds": [{
"name": "MODID:sound1",
"stream": false
}
]
},
"sound2": {
"category" : "ambient",
"sounds": [{
"name": "MODID:subfolder/sound2",
"stream": true
}
]
}
}
Как объяснение для этого sounds.json.
Определены 2 звуковых сигнала, так как я добавил пример, в котором вы можете исследовать, как добавлять многократные звуки. sound1
имеет player
категории второй категории ambient
что означает, что на громкость звука влияют настройки громкости, которые пользователь установил для звуков игрока / окружающего звучания. name
является самым важным свойством, поскольку оно указывает на ресурс звука. MODID
является идентификатором вашего MOD и является обязательным, так как приложение будет искать в ресурсах вашего мода для файла, иначе он будет искать в ресурсах Minecraft и ничего не найдет. Свойство stream
означает, что звук будет передаваться из файловой системы, которая требуется только для звуков более 4 секунд.
Ваш пользовательский файл sounds.json
должен пройти по следующему пути:
/YourPath/src/main/resources/assets/MODID/sounds.json
Теперь вы сможете загрузить звуки в реестр игры. Поэтому вам нужно создать класс, который инициализирует SoundEvent
s и обрабатывает регистрацию.
public class SoundRegistrator {
public static final SoundEvent SOUND_1;
public static final SoundEvent SOUND_2;
static {
SOUND_1 = addSoundsToRegistry("sound1");
SOUND_2 = addSoundsToRegistry("sound2");
}
private static SoundEvent addSoundsToRegistry(String soundId) {
ResourceLocation shotSoundLocation = new ResourceLocation("MODID", soundId);
SoundEvent soundEvent = new SoundEvent(shotSoundLocation);
soundEvent.setRegistryName(shotSoundLocation);
return soundEvent;
}
}
После этого вы должны создать SoundRegisterListener
:
public class SoundRegisterListener {
@SubscribeEvent(priority = EventPriority.NORMAL, receiveCanceled = true)
public void registerSoundEvents(RegistryEvent.Register<SoundEvent> event) {
event.getRegistry().registerAll(SoundRegistrator.SOUND_1,SoundRegistrator.SOUND_2);
}
}
и зарегистрируйте его в MinecraftForge.EVENT_BUS
например:
MinecraftForge.EVENT_BUS.register(new SoundRegisterListener());
Наконец, вы сможете воспроизводить свои звуки:
void playSound(SoundEvent sound) {
try {
if (Minecraft.getMinecraft().world.isRemote) {
EntityPlayerSP player = Minecraft.getMinecraft().player;
Minecraft.getMinecraft().world.playSound(player, player.getPosition(), sound, SoundCategory.PLAYERS, RandomGenerator.getNextRandomVolumeLoud(), 1.0F);
}
} catch (Exception ex) {
//Error happened
}
}
Отправка команды
В этом примере показаны различные способы выполнения «команд» для Minecraft из кода:
EntityPlayerSP player = Minecraft.getMinecraft().player;
player.sendChatMessage("/Command here");
отправить команду в SinglePlayer