- Баллы
- 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..
Подскажите, где я ошибся?