Minecraft सर्वर के लिए मोड - यह कैसे काम करता है?


9

Minecraft सर्वर एकल जार के रूप में आता है। मॉड्स कैसे विकसित होते हैं? वे मूल जार के साथ कैसे बातचीत करते हैं? हुड के नीचे क्या है?

वहां कौन सी तकनीकें शामिल हैं? मैं ज्यादातर C ++ / Python लड़का हूं, लेकिन मैं mods development के बारे में कुछ सीखना चाहता हूं।

जवाबों:


11

एक JAR बस एक ज़िप फ़ाइल है, जिसमें विभिन्न वर्ग फाइलें और अन्य मेटाडेटा का उपयोग होता है - यह पूरी तरह से मानकीकृत प्रारूप है।

ज़िप फ़ाइलों को निकाला जा सकता है, और संशोधन के लिए आवश्यक के रूप में वर्ग फ़ाइलों को संपादित किया जा सकता है। संशोधित फ़ाइलों को फिर संग्रह में जोड़ा जाता है, जो सर्वर को मूल के बजाय संशोधित फ़ाइलों का उपयोग करता है।

तकनीकी रूप से, Minecraft मॉड वास्तव में मूल कोड के "हैक किए गए" संस्करण हैं: गेम को नए सामान के बारे में बताने के लिए वास्तविक बाइनरी क्लास फ़ाइलों को संशोधित करना होगा; अभी तक कोई आधिकारिक मॉड समर्थन नहीं है (हालांकि नॉच ने कहा है कि वे बीटा के दौरान इस पर काम करेंगे)।

बेशक, अगर आप मॉड्स के लिए सक्रिय रूप से डिज़ाइन करते हैं तो यह बहुत अच्छा तरीका नहीं है। इसके बजाय, आप कुछ प्रकार के प्लगइन आर्किटेक्चर को डिज़ाइन करेंगे जो कस्टम कोड को उपयुक्त स्थान पर चलाने की अनुमति देता है। वास्तव में आप इसके बारे में कैसे जाना चाहते हैं यह इस बात पर निर्भर करता है कि आप चाहते हैं कि आपके मॉड्स क्या करने में सक्षम हों - जैसे, अगर सुरक्षा एक चिंता का विषय है, तो आप शायद किसी तरह की स्क्रिप्टिंग का उपयोग करने के लिए मॉड इंटरफ़ेस डिज़ाइन करना चाहते हैं, इसलिए आप मॉड्स को करने से रोक सकते हैं उपयोगकर्ता के कंप्यूटर के लिए सभी प्रकार की चीजें।


यह पूरी तरह से सच नहीं है - McAdmin, उदाहरण के लिए, C #
ब्लूराजा

@BlueRaja: MCAdmin वास्तव में मेरी राय में एक मॉड नहीं है - यह एक कस्टम, स्टैंड-अलोन सर्वर है। हालांकि यह क्लाइंट को आदेशों के माध्यम से नई चीजें करने की अनुमति दे सकता है, मैं दोनों चीजों को अलग-अलग मानता हूं।
माइकल मैडसेन

है ना? नहीं, यह निश्चित रूप से एक मॉड था; यह मिनीक्राफ्ट सर्वर के चारों ओर एक आवरण था। इसे चलाने के लिए मिनीक्राफ्ट सर्वर की आवश्यकता थी, इसलिए यह स्टैंडअलोन नहीं था। मैंने संक्षेप में स्रोत को देखा, और यह नेटवर्क संदेशों को इंटरसेप्ट करने और उन्हें अपने तरीके से / बाहर बदलने के लिए दिखाई दिया।
ब्लूराजा - डैनी पफ्लुगुएफ्ट

3
@BlueRaja: हुह - शपथ ले सकता था यह एक स्टैंड-अलोन सर्वर था, लेकिन फिर, मैं स्वीकार करता हूं कि मैंने वास्तव में इसका इस्तेमाल कभी नहीं किया। यह एक विशेष मामले की तरह है, क्योंकि यह खिलाड़ी और सर्वर के बीच प्रॉक्सी सर्वर के रूप में काम करके प्रतीत होता है। मैं अभी भी इसे एक मॉड नहीं कहूंगा, लेकिन यह सिर्फ मुझे हो सकता है।
माइकल मैडसेन

6

एकल खिलाड़ी मोड मूल कोड के हैक किए गए संस्करण हैं। मल्टीप्लेयर मॉड्स अभी अलग हैं। वे लगभग सभी हेयर्स सर्वर के रैपर का उपयोग करते हैं, जो कि minecraft_server.jar (या जावा भूमि में जो भी शब्द है) से लिंक करता है, लेकिन अपने स्वयं के फ़ंक्शंस वर्गों को परिभाषित करता है, कुछ मुख्य कार्यों को ओवरलोड करता है, और अपना मुख्य भाग चलाता है ()

Hey0 एक आधुनिक API प्रदान करता है । देख


1

आपकी जानकारी के लिए, Mojang निकट भविष्य में (बीटा के दौरान, इसलिए इसकी आधिकारिक रिलीज़ से पहले जो कि 2011 के आसपास होगी) "मॉड एपीआई" रिलीज़ होगी।

वास्तव में, यह पूर्ण स्रोत कोड होगा, जैसा कि Notch के ब्लॉग पर उल्लिखित है

http://notch.tumblr.com/post/4955141617/the-plan-for-mods

लेकिन अभी के लिए, आपको जार को "अपघटित" करना है, आंशिक रूप से बाधित कोड को देखने और बाद में उपयोग / डिबगिंग के लिए इसे पुनः स्थापित करने के लिए।

ऐसा करने के लिए, मैं अत्यधिक अनुशंसा करता हूं Minecraft Coder के पैक http://mcp.ocean-labs.de/index.php/MCP_Releases

मंचों पर भी कुछ इस तरह के ट्यूटोरियल के एक जोड़े हैं: http://www.minecraftforum.net/topic/96862-creating-mods-modding-tutorials-21511/

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.