Войти или зарегистрироваться

Идея [FUN] T-Phone - Телефоны для игроков

Окей, сделаю, но не сегодня
@ClumsyDima
немножко говнокода:
И да, сделано еще не все
edit:
classes:
CSS:
package me.xDark.TPhone;

import java.io.File;

import org.bukkit.Bukkit;
import org.bukkit.Sound;
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.Listener;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;

import me.xDark.TPhone.GUI.MainGUI;
import me.xDark.TPhone.Listener.GUIClickListener;
import me.xDark.TPhone.Listener.JoinListener;
import net.md_5.bungee.api.ChatColor;

public class TPhone extends JavaPlugin implements Listener {
    // Папка с плагином
    public File folder = new File("plugins".concat(File.separator).concat("TPhone").concat(File.separator));
    File playerFolder = new File("plugins".concat(File.separator).concat("TPhone").concat(File.separator).concat("playerdata").concat(File.separator));
    // Папка с игроками (хз зачем можно было все проще сделать)
    static PluginManager pm = Bukkit.getServer().getPluginManager();
    @Override
    public void onEnable() {
        // Проверить что папка с плагином не существует.
        if (!folder.exists()) {
            // Создать папку
            folder.mkdirs();
        }
        if (!playerFolder.exists()) {
            playerFolder.mkdirs();
        }
        // Регистрация ивентов
        pm.registerEvents(new GUIClickListener(), this);
        pm.registerEvents(new JoinListener(), this);
        // config
        saveDefaultConfig();
        this.getLogger().info("enabled");
    }
    @Override
    public void onDisable() {
        this.getLogger().info("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 true;
        }
        Player p = Bukkit.getPlayer(s.getName().toString());
        if (str.equalsIgnoreCase("phone")) {
            if (s.hasPermission("tphone.use")) {
                s.sendMessage(ChatColor.GOLD + "Настройки телефона открыты!");
                p.openInventory(MainGUI.gui);
               
            }else{
                s.sendMessage(ChatColor.RED + "Нет прав");
            }
        }
        // SMS
        if (str.equalsIgnoreCase("sms")) {
            if (s.hasPermission("tphone.use")) {
                if (args.length > 1) {
                    if (Bukkit.getPlayer(args[0].toString()) != null) {
                        if (args[1].isEmpty() == false) {
                            Player target = Bukkit.getPlayer(args[0].toString());
                            File data = new File("plugins".concat(File.separator).concat("TPhone").concat(File.separator).concat("playerdata").concat(File.separator.concat(target.getName().toString().concat(".yml"))));
                            YamlConfiguration dataManager = YamlConfiguration.loadConfiguration(data);
                            if (dataManager.getBoolean(target.getName().toString() + ".notify") == true) {
                                target.playSound(target.getLocation(), Sound.NOTE_PLING, 50, 1);
                            }
                            target.sendMessage(ChatColor.GOLD + "Вам сообщение от игрока " + p.getName());
                            // StringBuilder
                            StringBuilder sms = new StringBuilder();
                            if (args.length >= 2) {
                                sms.append(args[1]);
                                  for (int i = 2; i < args.length; i++) {
                                      sms.append(" ");
                                      sms.append(args[i]);
                                  }
                            }
                            {
                                target.sendMessage(ChatColor.GOLD + sms.toString());
                            }
                        }
                   
                    }else{
                        s.sendMessage(ChatColor.RED + "Игрок не найден!");
                    }
                }else{
                    if (args.length < 2) {
                        s.sendMessage(ChatColor.RED + "Используйте /sms [Игрок] [Ваше сообщение]");
                    }
                }
            }else{
                s.sendMessage(ChatColor.RED + "Нет прав");
            }
        }
        return true;
    }
}
CSS:
package me.xDark.TPhone.GUI;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.*********ventory.Inventory;
import org.*********ventory.ItemStack;
import org.*********ventory.meta.ItemMeta;

import net.md_5.bungee.api.ChatColor;

public class MainGUI {
    public static Inventory gui = Bukkit.createInventory(null, 27, ChatColor.GOLD + "Меню телефона");
    static {
        ItemStack options = new ItemStack(Material.IRON_BLOCK, 1);
        ItemStack sms = new ItemStack(Material.PAPER, 1);
        ItemStack music = new ItemStack(Material.NOTE_BLOCK, 1);
        ItemMeta optionsM = options.getItemMeta();
        ItemMeta smsM = sms.getItemMeta();
        ItemMeta musicM = music.getItemMeta();
        optionsM.setDisplayName(ChatColor.GOLD + "Меню настроек");
        smsM.setDisplayName(ChatColor.GOLD + "Отправить сообщение");
        musicM.setDisplayName(ChatColor.GOLD + "Слушать музыку");
        options.setItemMeta(optionsM);
        sms.setItemMeta(smsM);
        music.setItemMeta(musicM);
        gui.setItem(12, sms);
        gui.setItem(13, options);
        gui.setItem(14, music);
    }

}
CSS:
package me.xDark.TPhone.GUI;

import java.io.File;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.configuration.file.YamlConfiguration;
import org.*********ventory.Inventory;
import org.*********ventory.ItemStack;
import org.*********ventory.meta.ItemMeta;

import net.md_5.bungee.api.ChatColor;

public class OptionsGUI {
    static File f = new File("plugins".concat(File.separator).concat("TPhone").concat(File.separator).concat("config").concat(".yml"));
    static YamlConfiguration fm = YamlConfiguration.loadConfiguration(f);
    public static Inventory option = Bukkit.createInventory(null, 27, ChatColor.GOLD + "Настройки телефона");
    static {
        ItemStack deviceInfo = new ItemStack(Material.IRON_INGOT, 1);
        ItemMeta deviceM = deviceInfo.getItemMeta();
        deviceM.setDisplayName(ChatColor.translateAlternateColorCodes('&', "&6Информация о телефоне:"));
        deviceM.setLore(fm.getStringList("device-lore"));
        deviceInfo.setItemMeta(deviceM);
        option.setItem(13, deviceInfo);
        ItemStack back = new ItemStack(Material.STICK, 1);
        ItemMeta backm = back.getItemMeta();
        backm.setDisplayName(ChatColor.translateAlternateColorCodes('&', "&6Вернуться назад"));
        back.setItemMeta(backm);
        option.setItem(0, back);
        ItemStack sound = new ItemStack(Material.NOTE_BLOCK, 1);
        ItemMeta soundm = sound.getItemMeta();
        soundm.setDisplayName(ChatColor.translateAlternateColorCodes('&', "&aВключить/выключить уведомления о SMS"));
        sound.setItemMeta(soundm);
        option.setItem(12, sound);
    }

}
CSS:
package me.xDark.TPhone.Listener;

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

import org.bukkit.Material;
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.inventory.InventoryClickEvent;
import org.*********ventory.Inventory;
import org.*********ventory.ItemStack;

import me.xDark.TPhone.GUI.MainGUI;
import me.xDark.TPhone.GUI.OptionsGUI;
import net.md_5.bungee.api.ChatColor;

public class GUIClickListener implements Listener {
    static MainGUI gui;
    static OptionsGUI option;
    @SuppressWarnings("static-access")
    @EventHandler
    // Главное GUI
    public void mainGUIClickEvent(InventoryClickEvent event) {
        Inventory inv = event.getInventory();
        Player p = (Player) event.getWhoClicked();
        ItemStack clickedItem = event.getCurrentItem();
        if (inv.getName().equals(gui.gui.getName()))     {
            if (clickedItem.getType() == Material.IRON_BLOCK) {
                event.setCancelled(true);
                p.sendMessage(ChatColor.GREEN + "Меню настроек открыто!");
                p.closeInventory();
                p.openInventory(OptionsGUI.option);
            }
            if (clickedItem.getType() == Material.PAPER) {
                    event.setCancelled(true);
                    p.closeInventory();
                    p.sendMessage(ChatColor.GOLD + "Используйте /sms [Игрок] [Ваше сообщение]");
            }
            if (clickedItem.getType() == Material.NOTE_BLOCK) {
                event.setCancelled(true);
            }
        }
    }
    // GUI с настройками
    @SuppressWarnings("static-access")
    @EventHandler
    public void optionGUIClickEvent(InventoryClickEvent event) {
        Inventory inv = event.getInventory();
        ItemStack clickedItem = event.getCurrentItem();
        Player p = (Player) event.getWhoClicked();
        File data = new File("plugins".concat(File.separator).concat("TPhone").concat(File.separator).concat("playerdata").concat(File.separator.concat(p.getName().toString().concat(".yml"))));
        YamlConfiguration dataManager = YamlConfiguration.loadConfiguration(data);
        if (inv.getName().equals(option.option.getName())) {
            if (clickedItem.getType() == Material.IRON_INGOT) {
                event.setCancelled(true);
            }
            if (clickedItem.getType() == Material.STICK) {
                event.setCancelled(true);
                p.closeInventory();
                p.openInventory(gui.gui);
            }
            if (clickedItem.getType() == Material.NOTE_BLOCK) {
                if (dataManager.getBoolean(p.getName().toString() + ".notify") == false) {
                    event.setCancelled(true);
                    p.closeInventory();
                    dataManager.set(p.getName().toString() + ".notify", true);
                    p.sendMessage(ChatColor.GREEN + "Уведомления о сообщениях включены!");
                    try {
                        dataManager.save(data);
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                }else{
                    event.setCancelled(true);
                    p.closeInventory();
                    dataManager.set(p.getName().toString() + ".notify", false);
                    p.sendMessage(ChatColor.GREEN + "Уведомления о сообщениях выключены!");
                    try {
                        dataManager.save(data);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                
                }
            }
        }
    }
}
CSS:
package me.xDark.TPhone.Listener;

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

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.PlayerJoinEvent;

public class JoinListener implements Listener {
    @EventHandler
    public void onJoin(PlayerJoinEvent event) {
        Player p = event.getPlayer();
        File data = new File("plugins".concat(File.separator).concat("TPhone").concat(File.separator).concat("playerdata").concat(File.separator.concat(p.getName().toString().concat(".yml"))));
        YamlConfiguration dataManager = YamlConfiguration.loadConfiguration(data);
        if (!data.exists()) {
            try {
                data.createNewFile();
                dataManager.set(p.getName().toString() + ".notify", true);
                dataManager.save(data);
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        }
    }
}

UPDATE:
Полная кастумизация текста на свой выбор:
https://yadi.sk/d/F2S2ubjWtjXph
(Конфиг пока что не используется)
(Нужно удалить папку и перезагрузить плагин).
Фу
 
UPDATE:
Добавлена возможность выключить телефон и "сбросить настройки(ага, конечно)".
https://yadi.sk/d/F2S2ubjWtjXph
p.s: Нужно удалить папку с плагином полностью!
Все обновления теперь будут тут:
http://rubukkit.org/threads/fun-tphone-v-2-1-telefon-logichno-1-8-x.125901/
Давно не следил в рубаките, и вот увидел.. Спасибо бро, побольше бы таких как ты)) Не хочешь помочь мне с проектом? У меня каждую неделю новые идеи для плагинов.. Уже придумал один плагин. Напиши если чё в вк: vk.com/darthboy ))
 
Давно не следил в рубаките, и вот увидел.. Спасибо бро, побольше бы таких как ты)) Не хочешь помочь мне с проектом? У меня каждую неделю новые идеи для плагинов.. Уже придумал один плагин. Напиши если чё в вк: vk.com/darthboy ))
Любой каприз за Ваши деньги, потому что любая работа должна оплачиваться.
 
Нооо.. Он бесплатно сделал. Уже моя третья идея, а выполнили две бесплатно)
Это не значит, что он поможет тебе с проектом. Возможно у него много свободного времени для написания плагинов для паблика.
 
Последнее редактирование:
Метод отображения смс
Если писать в личку, то сообщения в чате пролетели и все. А так зашел на сервер и тебе друг написал например смс, что зайдет в такой-то час, удобно.
 
Метод отображения смс
Если писать в личку, то сообщения в чате пролетели и все. А так зашел на сервер и тебе друг написал например смс, что зайдет в такой-то час, удобно.
Идея с бошками лучше - там по крайней мере можно количеством и зачаром показывать что есть непрочитанные сообщения.
 
Назад
Верх