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 अलग-अलग पैकेज होते हैं, इसलिए आपको प्रत्येक पैकेज में कॉमनप्रॉक्सी के एक बच्चे की कक्षा की आवश्यकता होगी जैसे:
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);
}
}
आपके द्वारा यह कक्षाएं बनाए जाने के बाद आप उन्हें उन विधियों द्वारा विस्तारित कर सकते हैं, जिन्हें केवल क्लाइंट या सर्वर साइड पर चलाना है, लेकिन यदि आप 'आधार' वर्ग में विधियों को कॉल करते हैं, तो उन्हें दोनों से जोड़ सकते हैं।
अंत में आपको यह परिभाषित करना होगा कि कौन सा प्रॉक्सी रनटाइम पर लिया गया है। आपको अपने मुख्य मॉड क्लास को @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;
यह फोर्ज को यह पता लगाने में सक्षम करेगा कि रनटाइम के दौरान किस कक्षा को लिया जाना चाहिए। अपने मॉड के आरंभिक तरीकों में आप अब इस स्थिर संपत्ति का उपयोग कर सकते हैं।
@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 में कस्टम ध्वनियों को जोड़ना
यह उदाहरण आपको दिखाता है कि आप अपने एमओडी में नई ध्वनियों को कैसे जोड़ते हैं और उन्हें खेलते हैं। सबसे पहले आपको एक ध्वनि फ़ाइल की आवश्यकता है जिसमें प्रारूप *.ogg
। किसी भी अन्य प्रारूप को Minecraft एप्लिकेशन द्वारा अनुमति नहीं है और इसे अस्वीकार कर दिया जाएगा।
साउंडफाइल का नाम है: sound1.ogg
निम्न पथ के तहत ध्वनि फ़ाइल रखो:
/YourPath/src/main/resources/assets/MODID/sounds/sound1.ogg
अपने MOD के लिए परिभाषित पहचानकर्ता द्वारा 'MODID' को बदलें
इसके बाद आपको UTF-8 (Standard) एन्कोडिंग में एक sounds.json
। sounds.json
जो आपके कस्टम साउंड के लिए नाम, संसाधन, ... और अन्य चीजों को परिभाषित करती है। यह फ़ाइल इस तरह दिखाई देगी:
{
"sound1": {
"category" : "player",
"sounds": [{
"name": "MODID:sound1",
"stream": false
}
]
},
"sound2": {
"category" : "ambient",
"sounds": [{
"name": "MODID:subfolder/sound2",
"stream": true
}
]
}
}
इस ध्वनि के लिए स्पष्टीकरण के रूप में। जेसन।
परिभाषित 2 ध्वनियों को परिभाषित किया गया है, जैसा कि मैंने एक उदाहरण जोड़ा है कि आप यह जांच कर सकते हैं कि गुणा ध्वनियों को कैसे जोड़ा जाए। sound1
पास श्रेणी player
है दूसरा श्रेणी ambient
जिसका अर्थ है कि ध्वनि की मात्रा उस मात्रा से प्रभावित होती है जिसे उपयोगकर्ता ने खिलाड़ी / परिवेश ध्वनियों के लिए निर्धारित किया है। name
सबसे महत्वपूर्ण संपत्ति है क्योंकि यह ध्वनि के संसाधन की ओर इशारा करता है। MODID
आपके MOD का पहचानकर्ता है और यह अनिवार्य है क्योंकि फ़ाइल के लिए अनुप्रयोग आपके मॉड के संसाधनों में खोज करेगा, अन्यथा यह Minecraft संसाधनों में खोज करेगा और कुछ भी नहीं खोजेगा। stream
प्रॉपर्टी का अर्थ है कि ध्वनि को फ़ाइल सिस्टम से स्ट्रीम किया जाएगा, जो केवल 4 सेकंड से अधिक समय तक ध्वनियों के लिए आवश्यक है।
आपकी कस्टम sounds.json
फ़ाइल को निम्न पथ पर जाना होगा:
/YourPath/src/main/resources/assets/MODID/sounds.json
अब आप खेल की रजिस्ट्री में ध्वनियों को लोड करने में सक्षम होंगे। तो आपको एक वर्ग बनाना होगा जो SoundEvent
एस को इनिशियलाइज़ कर SoundEvent
और पंजीकरण को संभाल रहा है।
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
बनाना 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 में कमांड भेजने के लिए