खोज…


फोर्ज में एक ईवेंट श्रोता बनाना

फोर्क में एक ईवेंट श्रोता बनाना, बुके में एक बनाने के समान है।

श्रोता वर्ग बनाने के लिए बहुत कम की आवश्यकता होती है। लागू करने या अन्य आयातों के लिए कोई इंटरफ़ेस नहीं है।

public class ListenerClass { } //perfectly valid event listener class

इसे दर्ज करने के लिए फोर्ज इवेंट बस को उदाहरण देना होगा:

MinecraftForge.EVENT_BUS.register(new ListenerClass());

घटना के आधार पर अलग-अलग इवेंट बसों के एक जोड़े हैं। उदाहरण के लिए, अयस्क निर्माण की घटनाओं को ORE_GEN_BUS पर निकाल दिया ORE_GEN_BUS । आप इस पंजीकरण को कहीं से भी कॉल कर सकते हैं, लेकिन यह सलाह दी जाती है कि इसे या तो अपने मुख्य मॉड क्लास (@Mod एनोटेशन के साथ) से या एक प्रॉक्सी क्लास से कॉल किया जाए (कुछ ईवेंट केवल क्लाइंट साइड हैं और एक क्लाइंट साइड ईवेंट हैंडलर को ही बुलाया जाना चाहिए क्लाइंट प्रॉक्सी से, अन्यथा समर्पित सर्वर क्रैश हो जाएगा! "

अपने श्रोता वर्ग में किसी भी घटना को सुनने के लिए, आपको विधि पर @SubscribeEvent एनोटेशन के साथ एक विधि बनानी होगी। ईवेंट प्रकार विधि के एकमात्र तर्क में टाइप द्वारा निर्दिष्ट किया गया है। आपकी इच्छानुसार विधि का नाम दिया जा सकता है।

ध्यान दें कि कुछ घटना प्रकार उपप्रकार हैं (जो कि उनके संलग्न प्रकार, जैसे CropGrowEvent.Pre ) द्वारा संदर्भित होने चाहिए और यह कि कुछ घटनाओं में एक चरण हो सकता है क्योंकि इसे एक से अधिक स्थानों पर निकाल दिया जाता है (जैसे कि सभी TickEvent s जो दोनों पहले निकाल दिए जाते हैं और सभी वेनिला कोड के बाद)। एक मोडर के रूप में आपको इन दोनों चीजों के लिए हमेशा जांच करनी चाहिए और केवल जरूरत पड़ने पर अपना कोड चलाना चाहिए।

public class ListenerClass {
    @SubscribeEvent
    public void onPlayerLogin(PlayerLoggedInEvent event) {
        event.player.addChatMessage(new TextComponentString("Welcome to the server!"));
    }
}

जैसा कि फोर्ज मॉड सीधे Minecraft इंटर्नल के साथ बातचीत करते हैं, चीजों को प्रभावित करने में सक्षम होने के लिए मोडर को बहुत अधिक शक्ति दी जाती है, लेकिन इसी तरह, कोड को वेनिला फ्रेमवर्क का पालन करना चाहिए: संदेश भेजने के लिए कोई शॉर्टकट नहीं है, संदेश से निर्माण किया जाना है ITextCompords मैन्युअल रूप से, लेकिन इन ऑब्जेक्ट्स में हेरफेर करने की क्षमता (जैसे कि रंग प्रारूपण लागू करना) बहुत आसान है। उदाहरण के लिए:

TextComponentString txt = new TextComponentString(
    TextFormatting.LIGHT_PURPLE + "Welcome to the server!");
txt.appendSibling(new TextComponentString(
    TextFormatting.AQUA + "Server has been online for " + x + " days"));
event.player.addChatMessage(txt);

जो निम्नलिखित परिणाम देता है: संदेश चैट करें



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow