- Баллы
- 96
Решил написать плагин, который позволяет оставить заявку на Хелпера, но этот AsyncPlayerChatEvent меня уже доканал.
При отправке сообщения в чат засчитываются сразу все ответы.
(Слабонервным не смотреть)
При отправке сообщения в чат засчитываются сразу все ответы.
(Слабонервным не смотреть)
JavaScript:
package me.DarkenCake.StaffApply.MAIN;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
public class XMAINCLASS extends JavaPlugin implements Listener {
PluginManager pm = Bukkit.getServer().getPluginManager();
File player = new File(this.getDataFolder().toString().concat(File.separator).concat("player_database".concat(".yml")));
YamlConfiguration playerManager = YamlConfiguration.loadConfiguration(data);
File config = new File(this.getDataFolder().toString().concat(File.separator).concat("config".concat(".yml")));
YamlConfiguration configManager = YamlConfiguration.loadConfiguration(config);
File folder = new File(this.getDataFolder().toString().concat(File.separator));
String q1 = configManager.getString("Question.1");
String q2 = configManager.getString("Question.2");
String q3 = configManager.getString("Question.3");
String q4 = configManager.getString("Question.4");
String q5 = configManager.getString("Question.5");
String q6 = configManager.getString("Question.6");
String q7 = configManager.getString("Question.7");
String q8 = configManager.getString("Question.8");
PrintStream sys = System.out;
@Override
public void onEnable() {
sys.println("[StaffApply] Plugin enabled!");
pm.registerEvents(this, this);
if (!folder.exists()) {
folder.mkdirs();
}
if (!player.exists()) {
try {
player.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
if (!config.exists()) {
try {
config.createNewFile();
configManager.set("Question.1", "Как часто Вы играете на сервере?");
configManager.set("Question.2", "Каков Ващ возраст??");
configManager.set("Question.3", "Были ли Вы забанены на нашем сервере, если да, то почему?");
configManager.set("Question.4", "Печенье или шоколад?");
configManager.set("Question.5", "Вы когда ниубдь покупали донат на нашем сервере, если да, то какой?");
configManager.set("Question.6", "Играют ли Ваши друзья на нашем сервере, если да, то назовите их ники.");
configManager.set("Question.7", "Почему Вы хотите быть хелпером?");
configManager.set("Question.8", "Почему мы должны выбрать именно Вас?");
configManager.save(config);
} catch (IOException e) {
e.printStackTrace();
}
}
}@Override
public void onDisable() {
sys.println("[StaffApply] Plugin disabled!");
}
public boolean onCommand(CommandSender s, Command cmd, String str, String args[]) {
if (s instanceof ConsoleCommandSender) {
s.sendMessage("This command can not be executed from console!");
return false;
}
String prefix = ChatColor.DARK_GREEN + "[" + ChatColor.WHITE + "StaffApply" + ChatColor.DARK_GREEN + "]";
if (str.equalsIgnoreCase("apply")) {
if (args.length > 0) {
if (s.hasPermission("apply.mod")) {
if (args[0].equalsIgnoreCase("mod")) {
if (playerManager.getBoolean(s.getName().toString() + ".applied.mod") != true) {
s.sendMessage(prefix + ChatColor.WHITE + " Вы вошли в режим принятие заявок!");
s.sendMessage(prefix + ChatColor.WHITE + " В любом момент Вы можете отменить заявку, написав /apply cancel");
s.sendMessage(prefix + ChatColor.WHITE + " Если Вы готовы, давайте начнем. Первый вопрос:");
s.sendMessage(ChatColor.translateAlternateColorCodes('&', q1));
playerManager.set(s.getName().toString() + ".applying", true);
playerManager.set(s.getName().toString() + ".question.1", true);
try {
playerManager.save(player);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
s.sendMessage(prefix + ChatColor.RED + " Вы уже оставили заявку!!");
}
}
}
if (s.hasPermission("apply.cancel")) {
if (args[0].equalsIgnoreCase("cancel")) {
if (playerManager.getBoolean(s.getName().toString() + ".applying") == true) {
s.sendMessage(prefix + ChatColor.WHITE + " Вы вышли из режима принятия заявок!");
playerManager.set(s.getName().toString() + ".applying", false);
playerManager.set(s.getName().toString() + ".question.1", null);
playerManager.set(s.getName().toString() + ".question.2", null);
playerManager.set(s.getName().toString() + ".question.3", null);
playerManager.set(s.getName().toString() + ".question.4", null);
playerManager.set(s.getName().toString() + ".question.5", null);
playerManager.set(s.getName().toString() + ".question.6", null);
playerManager.set(s.getName().toString() + ".question.7", null);
playerManager.set(s.getName().toString() + ".question.8", null);
try {
playerManager.save(player);
} catch (IOException e) {
e.printStackTrace();
}
}else{
s.sendMessage(prefix + ChatColor.RED + " Вы не находитесь в режиме принятия заявок!");
}
}
}
}
}
return true;
}
@EventHandler(ignoreCancelled = true)
public void onAnswer(AsyncPlayerChatEvent event) {
String prefix = ChatColor.DARK_GREEN + "[" + ChatColor.WHITE + "StaffApply" + ChatColor.DARK_GREEN + "]";
Player p = event.getPlayer();
// 1
if (playerManager.getBoolean(p.getName().toString() + ".applying") == true)
if (playerManager.getBoolean(p.getName().toString() + ".question.1") == true) {
event.setCancelled(true);
playerManager.set(p.getName().toString() + ".answer.1", event.getMessage());
playerManager.set(p.getName().toString() + ".question.1", false);
playerManager.set(p.getName().toString() + ".question.2", false);
playerManager.set(p.getName().toString() + ".question.2", true);
try {
playerManager.save(player);
} catch (IOException e) {
e.printStackTrace();
}
p.sendMessage(prefix + ChatColor.GOLD + "Ответ засчитан. Следующий вопрос:");
p.sendMessage(ChatColor.translateAlternateColorCodes('&', q2));
}
// 2
if (playerManager.getBoolean(p.getName().toString() + ".applying") == true)
if (playerManager.getBoolean(p.getName().toString() + ".question.2") == true) {
event.setCancelled(true);
playerManager.set(p.getName().toString() + ".answer.2", event.getMessage());
playerManager.set(p.getName().toString() + ".question.1", false);
playerManager.set(p.getName().toString() + ".question.2", false);
playerManager.set(p.getName().toString() + ".question.2", false);
playerManager.set(p.getName().toString() + ".question.3", false);
playerManager.set(p.getName().toString() + ".question.3", true);
try {
playerManager.save(player);
} catch (IOException e) {
e.printStackTrace();
}
p.sendMessage(prefix + ChatColor.GOLD + "Вопрос засчитан! Следующий вопрос:");
p.sendMessage(ChatColor.translateAlternateColorCodes('&', q3));
}
}
}
Последнее редактирование:
.