/ / जावा बुक्किट / स्पिगोट - ब्लॉक निर्दिष्ट कमांड - जावा, प्लगइन्स, सर्वर, मिनीक्राफ्ट, बुक्किट

जावा बुटकिट / स्पिगॉट - ब्लॉक निर्दिष्ट कमांड - जावा, प्लगइन्स, सर्वर, Minecraft, bukkit

मैं एक प्लगइन बनाने की कोशिश कर रहा हूं, इसे कॉन्फ़िगर द्वारा तय की गई एक निर्दिष्ट कमांड को ब्लॉक करना होगा। मैंने इसे बनाया है लेकिन यह किसी भी कमांड को ब्लॉक नहीं करता है।

कोड:

@EventHandler(priority = EventPriority.HIGHEST)
public void onPreprocess(PlayerCommandPreprocessEvent event)
{
Player player = event.getPlayer();
String command = event.getMessage();
List<String> bCmds = this.plugin.cfg.getStringList("blocked-commands");

for (String bCmd : bCmds)
{
if(command.equalsIgnoreCase(bCmd))
{
event.setCancelled(true);
}
}
}

कॉन्फ़िग:

blocked-commands:
- /pl
- /op
- /sp
- /gravityblock

पुनश्च: मैं "का उपयोग करने की कोशिश की है:

String command = event.getMessage().subString(1);

मदद के लिए शुक्रिया... :)

उत्तर:

जवाब के लिए 0 № 1

पंजीकृत घटनाओं? कार्यान्वित किया गया श्रोता?

साथ ही आपका कोड कमांड में अतिरिक्त तर्कों के साथ काम नहीं करेगा। यदि इसमें रिक्त स्थान हैं, तो इसे "" से विभाजित करें और कमांड प्राप्त करने के लिए पहला तत्व प्राप्त करें

if (cmd.contains ("")) cmd = cmd.split ("") [0];


जवाब के लिए 0 № 2

जैसे बताया गया बुक्कट का विकीप्राथमिकताओं को निम्नलिखित क्रम में कहा जाता है:

  • EventPriority.LOWEST
  • EventPriority.LOW
  • EventPriority.NORMAL
  • EventPriority.HIGH
  • EventPriority.HIGHEST
  • EventPriority.MONITOR

हो सकता है कि आप सबसे नीची प्राथमिकता का उपयोग करने की कोशिश कर सकते हैं, इसलिए कमान को संभालने से पहले घटना रद्द हो जाती है।

मेरा यह भी मानना ​​है कि कमांड में तर्क हो सकते हैं, इसलिए यह उपलब्ध कराई गई स्ट्रिंग के बराबर नहीं हो सकता है, आपको भी प्रयास करना चाहिए

String command = event.getMessage();


if (command.toLowerCase().startsWith("/command") ) {
//cancel
}