Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Нужна подсказка по плагину

Статус
Закрыто для дальнейших ответов.

lolifrag

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
meow
Java:
package adchat;

import java.io.File;
import java.io.IOException;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.plugin.java.JavaPlugin;

public class Plugin extends JavaPlugin {

    File configFile;
    FileConfiguration config;

    public static ChatColor new_tag_color;
    public static String new_tag;
    public static ChatColor new_msg_color;

    public static ChatColor ad_tag_color;
    public static String ad_tag;
    public static ChatColor ad_msg_color;

    public static ChatColor help_tag_color;
    public static String help_tag;
    public static ChatColor help_msg_color;

    @Override
    public void onDisable() {
        save();
    }

    @Override
    public void onEnable() {
        configFile = new File(getDataFolder(), "config.yml");

        try {
            firstrun();
        } catch (Exception e) {
            e.printStackTrace();
        }

        config = new YamlConfiguration();
        load();
        set();

        Commands command = new Commands();
        getCommand("ad").setExecutor(command);
        getCommand("new").setExecutor(command);
        getCommand("helpme").setExecutor(command);

        Bukkit.getLogger().info("Плагин AdChat включен!");
    }

    public void firstrun() {
        if (!configFile.exists()) {
            getConfig().addDefault("NEWS.TAG_COLOR", "YELLOW");
            getConfig().addDefault("NEWS.TAG", "Новости");
            getConfig().addDefault("NEWS.MESSAGE_COLOR", "GREEN");
            getConfig().addDefault("ADVERTISE.TAG_COLOR", "RED");
            getConfig().addDefault("ADVERTISE.TAG", "Реклама от");
            getConfig().addDefault("ADVERTISE.MESSAGE_COLOR", "WHITE");
            getConfig().addDefault("HELPME.TAG_COLOR", "GREEN");
            getConfig().addDefault("HELPME.TAG", "Крик о помощи от");
            getConfig().addDefault("HELPME.MESSAGE_COLOR", "WHITE");
            getConfig().options().copyDefaults(true);
            saveConfig();
        }
    }

    private void set() {
        Plugin.new_tag_color = replace(config.getString("NEWS_TAG_COLOR",
                "YELLOW"));
        Plugin.new_tag = config.getString("NEWS_TAG", "Новости");
        Plugin.new_msg_color = replace(config.getString("NEWS_MESSAGE_COLOR",
                "GREEN"));

        Plugin.ad_tag_color = replace(config.getString("ADVERTISE_TAG_COLOR",
                "RED"));
        Plugin.ad_tag = config.getString("ADVERTISE_TAG", "Реклама от");
        Plugin.ad_msg_color = replace(config.getString(
                "ADVERTISE_MESSAGE_COLOR", "WHITE"));

        Plugin.help_tag_color = replace(config.getString("HELPME_TAG_COLOR",
                "GREEN"));
        Plugin.help_tag = config.getString("HELPME_TAG", "Крик о помощи от");
        Plugin.help_msg_color = replace(config.getString(
                "HELPME_MESSAGE_COLOR", "WHITE"));
    }

    public void load() {
        try {
            config.load(configFile);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void save() {
        try {
            config.save(configFile);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private ChatColor replace(String input) {
        switch (input.toLowerCase()) {
        case "red":
            return ChatColor.RED;
        case "yellow":
            return ChatColor.YELLOW;
        case "green":
            return ChatColor.GREEN;
        case "blue":
            return ChatColor.BLUE;
        case "gold":
            return ChatColor.GOLD;
        case "white":
            return ChatColor.WHITE;
        case "aqua":
            return ChatColor.AQUA;
        case "black":
            return ChatColor.BLACK;
        case "dark_aqua":
            return ChatColor.DARK_AQUA;
        case "dark_blue":
            return ChatColor.DARK_BLUE;
        case "dark_gray":
            return ChatColor.DARK_GRAY;
        case "dark_green":
            return ChatColor.DARK_GREEN;
        case "dark_purple":
            return ChatColor.DARK_PURPLE;
        case "dark_red":
            return ChatColor.DARK_RED;
        case "gray":
            return ChatColor.GRAY;
        case "light_purple":
            return ChatColor.LIGHT_PURPLE;
        }
        return ChatColor.WHITE;
    }
}
Java:
package adchat;

import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public class Commands implements CommandExecutor {

    public boolean onCommand(CommandSender p, Command c, String s, String[] a) {
        if (a.length > 0) {
            switch (s) {
            case "new":
                if (p.hasPermission("adchat.new")) {
                    call(Plugin.new_tag_color + "[" + Plugin.new_tag + "]"
                            + Plugin.new_msg_color, a);
                }
                break;
            case "ad":
                call(Plugin.new_tag_color + "[" + Plugin.ad_tag + " "
                        + p.getName() + "]" + Plugin.ad_msg_color, a);
                break;
            case "helpme":
                call(Plugin.help_tag_color + "[" + Plugin.help_tag + " "
                        + p.getName() + "]" + Plugin.help_msg_color, a);
                break;
            }
        }
        return true;
    }

    private void call(String s, String[] a) {
        for (String i : a) {
            s = s + " " + i;
        }
        for (Player p : Bukkit.getOnlinePlayers()) {
            p.sendMessage(s);
        }
    }
}
Java:
name: AdChat
version: 1.0
main: adchat.Plugin
commands:
  ad:
  new:
  helpme:
permissions:
  adchat.new:
    description: Allows you to use news
    default: true

На моём сервере (TLauncher + CraftBukkit 1_8_R1) всё работает, а он тестировал на своём (craftbukkit-1.6.4-R2.0) и ему консолька говорит такое:

Код:
2015-04-10 21:54:31 [INFO] sinister issued server command: /new 2
2015-04-10 21:54:31 [SEVERE] null
org.bukkit.command.CommandException: Unhandled exception executing command 'new' in plugin AdChat v1.0
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46)
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:192)
at org.bukkit.craftbukkit.v1_6_R3.CraftServer.dispatchCommand(CraftServer.java:528)
at net.minecraft.server.v1_6_R3.PlayerConnection.handleCommand(PlayerConnection.java:968)
at net.minecraft.server.v1_6_R3.PlayerConnection.chat(PlayerConnection.java:886)
at net.minecraft.server.v1_6_R3.PlayerConnection.a(PlayerConnection.java:837)
at net.minecraft.server.v1_6_R3.Packet3Chat.handle(SourceFile:49)
at net.minecraft.server.v1_6_R3.NetworkManager.b(NetworkManager.java:296)
at net.minecraft.server.v1_6_R3.PlayerConnection.e(PlayerConnection.java:116)
at net.minecraft.server.v1_6_R3.ServerConnection.b(SourceFile:37)
at net.minecraft.server.v1_6_R3.DedicatedServerConnection.b(SourceFile:30)
at net.minecraft.server.v1_6_R3.MinecraftServer.t(MinecraftServer.java:592)
at net.minecraft.server.v1_6_R3.DedicatedServer.t(DedicatedServer.java:227)
at net.minecraft.server.v1_6_R3.MinecraftServer.s(MinecraftServer.java:488)
at net.minecraft.server.v1_6_R3.MinecraftServer.run(MinecraftServer.java:421)
at net.minecraft.server.v1_6_R3.ThreadServerApplication.run(SourceFile:583)
Caused by: java.lang.NoSuchMethodError: org.bukkit.Bukkit.getOnlinePlayers()Ljava/util/Collection;
at adchat.Commands.call(Commands.java:37)
at adchat.Commands.onCommand(Commands.java:16)
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
... 15 more

Суть плагина очень простая - выводит всем игрокам сообщение с определёнными настройками.

Сколько не думал - никак не пойму, почему не работает. Я вроде не использовал ничего в ядре такого, что есть в 1.8, чего нет в 1.6..
Подскажите, где я ошибся?
 
Статус
Закрыто для дальнейших ответов.

Поделиться этой страницей

Назад
Верх