Advertisement
end433

Code of JavaScriptMinecraft

Dec 15th, 2024
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.32 KB | Source Code | 0 0
  1. package ua.end433.javascriptminecraft;
  2.  
  3. import org.bukkit.command.Command;
  4. import org.bukkit.command.CommandSender;
  5. import org.bukkit.configuration.file.FileConfiguration;
  6. import org.bukkit.configuration.file.YamlConfiguration;
  7. import org.bukkit.plugin.java.JavaPlugin;
  8.  
  9. import javax.script.ScriptEngine;
  10. import javax.script.ScriptEngineManager;
  11. import javax.script.ScriptException;
  12. import java.io.File;
  13. import java.io.FileReader;
  14. import java.io.IOException;
  15.  
  16. public class JavaScriptMinecraft extends JavaPlugin {
  17.  
  18.     private File scriptsDirectory;
  19.     private FileConfiguration messagesConfig;
  20.     private File messagesFile;
  21.  
  22.     @Override
  23.     public void onEnable() {
  24.         getLogger().info("JavaScriptMinecraft plugin enabled!");
  25.  
  26.         // Створюємо директорію для скриптів
  27.         scriptsDirectory = new File(getDataFolder(), "scripts");
  28.         if (!scriptsDirectory.exists()) {
  29.             if (scriptsDirectory.mkdirs()) {
  30.                 getLogger().info("Scripts directory created: " + scriptsDirectory.getAbsolutePath());
  31.             } else {
  32.                 getLogger().warning("Failed to create scripts directory.");
  33.             }
  34.         }
  35.  
  36.         // Завантажуємо конфігурацію локалізації
  37.         loadMessagesConfig();
  38.     }
  39.  
  40.     @Override
  41.     public void onDisable() {
  42.         getLogger().info("JavaScriptMinecraft plugin disabled!");
  43.     }
  44.  
  45.     @Override
  46.     public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  47.         if (command.getName().equalsIgnoreCase("jsmc")) {
  48.             if (args.length < 1) {
  49.                 sender.sendMessage(getMessage("usage"));
  50.                 return true;
  51.             }
  52.  
  53.             String subCommand = args[0].toLowerCase();
  54.             if (subCommand.equals("script")) {
  55.                 if (args.length < 2) {
  56.                     sender.sendMessage(getMessage("usage"));
  57.                     return true;
  58.                 }
  59.  
  60.                 if (!sender.hasPermission("jsmc.run")) {
  61.                     sender.sendMessage(getMessage("no_permission"));
  62.                     return true;
  63.                 }
  64.  
  65.                 String scriptName = args[1];
  66.                 File scriptFile = new File(scriptsDirectory, scriptName + ".js");
  67.  
  68.                 if (!scriptFile.exists()) {
  69.                     sender.sendMessage(getMessage("script_not_found").replace("{script}", scriptName));
  70.                     return true;
  71.                 }
  72.  
  73.                 try (FileReader reader = new FileReader(scriptFile)) {
  74.                     ScriptEngineManager manager = new ScriptEngineManager();
  75.                     ScriptEngine engine = manager.getEngineByName("nashorn");
  76.  
  77.                     // Додаємо sender в контекст скрипту
  78.                     engine.put("sender", sender);
  79.                     engine.put("server", getServer());
  80.  
  81.                     Object result = engine.eval(reader);
  82.                     //sender.sendMessage(getMessage("script_success").replace("{result}", String.valueOf(result)));
  83.                 } catch (IOException e) {
  84.                     sender.sendMessage(getMessage("script_error_io").replace("{error}", e.getMessage()));
  85.                 } catch (ScriptException e) {
  86.                     sender.sendMessage(getMessage("script_error_exec").replace("{error}", e.getMessage()));
  87.                 }
  88.             } else if (subCommand.equals("reload")) {
  89.                 if (!sender.hasPermission("jsmc.reload")) {
  90.                     sender.sendMessage(getMessage("no_permission"));
  91.                     return true;
  92.                 }
  93.  
  94.                 loadMessagesConfig();
  95.                 sender.sendMessage(getMessage("reload_success"));
  96.             } else {
  97.                 sender.sendMessage(getMessage("usage"));
  98.             }
  99.             return true;
  100.         }
  101.         return false;
  102.     }
  103.  
  104.     private void loadMessagesConfig() {
  105.         messagesFile = new File(getDataFolder(), "config.yml");
  106.         if (!messagesFile.exists()) {
  107.             saveResource("config.yml", false);
  108.         }
  109.         messagesConfig = YamlConfiguration.loadConfiguration(messagesFile);
  110.     }
  111.  
  112.     private String getMessage(String key) {
  113.         return messagesConfig.getString(key, "§cMessage not found: " + key);
  114.     }
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement