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

Помогите Чтение из config.yml позиций и прочего

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

Firec

Активный участник
Пользователь
Баллы
61
Есть примерно такой файл конфига:
Код:
work:
  block1:
    x: 0
    y: 1
    z: 0
    id: 1
  block2:
    x: 54
    y: 35
    z: 81
    id: 95
...
Как можно с этим работать из кода? Т.е. добавлять читать и удалять данные, записанные таким форматом.
 
Вот ты серьёзно?
1. Я уже натыкался на эту ссылку во время попыток разобраться с этой проблемой самостоятельно.
2. Там нигде нет информации о том, как мне из этого файла достать данные типа HashMap<String, HashMap<String, String>>.
3. Сам ты никак не помог этим. Даже будь где-то там ответ на мой вопрос - ты никак не указал куда и как смотреть. Ни примера кода, ни короткого объяснения. Спасибо!
 
Вот ты серьёзно?
1. Я уже натыкался на эту ссылку во время попыток разобраться с этой проблемой самостоятельно.
2. Там нигде нет информации о том, как мне из этого файла достать данные типа HashMap<String, HashMap<String, String>>.
3. Сам ты никак не помог этим. Даже будь где-то там ответ на мой вопрос - ты никак не указал куда и как смотреть. Ни примера кода, ни короткого объяснения. Спасибо!
Орнул, спасибо.
Ямл в ведре умеет сам читать и записывать локацию. Просто передай ему ее.
 
Орнул, спасибо.
Ямл в ведре умеет сам читать и записывать локацию. Просто передай ему ее.
Класс, спасибо. Буду думать чей из ваших ответов полезней - ссылка в никуда или совет без ссылок и указаний хоть куда-то.
 
Класс, спасибо. Буду думать чей из ваших ответов полезней - ссылка в никуда или совет без ссылок и указаний хоть куда-то.
Потому что понятно же все. Ты даже не кодер и полез в разработку плагинов. Сначала изучи Java, а потом уже задавай тут вопросы. Никто тут не горит желанием обучать школьника, который еще и проявляет агрессию. Тебе нужно не делать сервера в майне а играть на таких.
 
Потому что понятно же все. Ты даже не кодер и полез в разработку плагинов. Сначала изучи Java, а потом уже задавай тут вопросы. Никто тут не горит желанием обучать школьника, который еще и проявляет агрессию. Тебе нужно не делать сервера в майне а играть на таких.
Код:
package FTSP.main;

import java.util.Map.Entry;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;

import org.bukkit.BanList;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.java.JavaPlugin;

import net.milkbowl.vault.economy.Economy;


public class FTSP extends JavaPlugin implements Listener{
    public HashMap<String, HashMap<String, String>> reports = new HashMap<String, HashMap<String, String>>();
    public HashMap<String, Integer> toBan = new HashMap<String, Integer>();
    
    public Integer[] stars = {1,2,4,8,0};
    
    public static Economy economy;
    
    public void onEnable() {
        economy = getServer().getServicesManager().getRegistration(Economy.class).getProvider();
        getConfig().options().copyDefaults();
        saveDefaultConfig();
        getServer().getPluginManager().registerEvents(this, this);
    }
    
    @EventHandler
    public void quit(PlayerQuitEvent e) {
        Player p = e.getPlayer();
        if(reports.containsKey(p.getName())) {
            reports.remove(p.getName());
        }
        if(checkReport(p.getName())) {
            Bukkit.broadcastMessage("Игрок "+ChatColor.RED+p.getName()+ChatColor.WHITE+" вышел и получил бан!");
        }
    }
    
    @EventHandler
    public void death(PlayerDeathEvent e) {
        Player p = e.getEntity().getPlayer();
        Player k = e.getEntity().getKiller();
        if(reports.containsKey(p.getName())) {
            reports.remove(p.getName());
        }
        if(checkReport(p.getName())) {
            if(k!=null) {
                Bukkit.broadcastMessage("Игрок "+ChatColor.RED+p.getName()+ChatColor.WHITE+" был убит игроком "+ChatColor.GOLD+k.getName()+" и получил бан!");
            } else {
                Bukkit.broadcastMessage("Игрок "+ChatColor.RED+p.getName()+ChatColor.WHITE+" умер и получил бан!");
            }
        }
    }
    
    private boolean checkReport(String player) {
        if(toBan.containsKey(player)) {
            Date banDate = new Date(System.currentTimeMillis()+stars[toBan.get(player)]*60*60*1000);
            if(stars[toBan.get(player)]==0) { banDate = null; }
            Bukkit.getBanList(BanList.Type.NAME).addBan(player, null, banDate, null);
            Bukkit.getPlayer(player).kickPlayer(null);
            toBan.remove(player);
            return true;
        }
        return false;
    }
    
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        Player from = (Player) sender;
        if(cmd.getName().equals("report")) {
            if(args.length<1) { return false; }
            
            if(args[0]=="send") {
                if(args.length<2) { return false; }
                
                String player = args[1];
                
                if(!from.hasPermission("FTSP.report.send")) { return true; }
                String desc = "";
                
                if(args.length>2) {
                    desc = String.join(" ", Arrays.copyOfRange(args, 2, args.length));
                }
                
                HashMap<String, String> tmp = new HashMap<String, String>();
                
                tmp.put("from", from.getName());
                tmp.put("desc", desc);
                
                reports.put(player, tmp);
                
                String report_notify = "";
                report_notify += ChatColor.RED + "[ЖАЛОБА] ";
                report_notify += ChatColor.GOLD + from.getName() + " -> " + player + "\n";
                report_notify += ChatColor.YELLOW + desc;
                
                Bukkit.broadcast(report_notify, "FTSP.report.look");
                return true;
            } else if(args[0]=="list") {
                if(!from.hasPermission("FTSP.report.list")) { return true; }
                String list = ChatColor.GREEN + "Список отправленных репортов:";
                for(Entry<String, HashMap<String, String>> player1 : reports.entrySet()) {
                    list += "\n\n";
                    list += ChatColor.GOLD + player1.getValue().get("from") + " -> " + player1.getKey();
                    list += ChatColor.WHITE + " " + player1.getValue().get("desc");
                }
                sender.sendMessage(list);
                return true;
            } else if(args[0]=="accept") {
                if(args.length<2) { return false; }

                String player = args[1];
                
                if(!from.hasPermission("FTSP.report.accept")) { from.sendMessage("AAA"); return true; }
                if(args.length!=3) { return false; }

                try {
                    Integer star = Integer.parseInt(args[2]);
                    reports.remove(player);
                    toBan.put(player, star);
                    Bukkit.broadcastMessage("Игрок "+ChatColor.RED+player+ChatColor.WHITE+" объявлен в розыск! Уровень опастности: "+star);
                } catch (Exception e) { return false; }
                return true;
            } else {
                return false;
            }
        }
        return false;
    }
}
Не помню школьников, которые умеют что-то большее чем System.out.prinLn и разделение плагина на миллиард файлов потому что так было в гайде. Да и в любом случае ты ошибся - я студент). Жду, когда напишешь про switch и что-нибудь ещё, что фактически будет синтаксическим сахаром.

С агрессией всё было бы ещё проще, если бы ты глянул на время моего сообщения. Я уже около 10 часов с перерывами на еду и туалет пытаюь разобраться с сохранение и использованием сраных координат. И ничего найти не мог. А спуся 10 часов мне скинули ссылку в которой нет вообще никакой полезной информации.

Ну и про то, что я не программист и мне стоит идити учить Java тоже упомину. Ты в глаза не видел мой код. Ты не видел моих навоков от слова совсем. А всё, на чём ты мог основываться - я не нашел нужную информацию в документации к немаленькому такому API. Гениально!

А теперь на последок вежливо попрошу - либо вообще ничего не пишите, либо распишите всё максимально понятно для человека, который впервые увидел слово Bukkit, Spigot или ещё что-то.
 
Код:
package FTSP.main;

import java.util.Map.Entry;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;

import org.bukkit.BanList;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.java.JavaPlugin;

import net.milkbowl.vault.economy.Economy;


public class FTSP extends JavaPlugin implements Listener{
    public HashMap<String, HashMap<String, String>> reports = new HashMap<String, HashMap<String, String>>();
    public HashMap<String, Integer> toBan = new HashMap<String, Integer>();
   
    public Integer[] stars = {1,2,4,8,0};
   
    public static Economy economy;
   
    public void onEnable() {
        economy = getServer().getServicesManager().getRegistration(Economy.class).getProvider();
        getConfig().options().copyDefaults();
        saveDefaultConfig();
        getServer().getPluginManager().registerEvents(this, this);
    }
   
    @EventHandler
    public void quit(PlayerQuitEvent e) {
        Player p = e.getPlayer();
        if(reports.containsKey(p.getName())) {
            reports.remove(p.getName());
        }
        if(checkReport(p.getName())) {
            Bukkit.broadcastMessage("Игрок "+ChatColor.RED+p.getName()+ChatColor.WHITE+" вышел и получил бан!");
        }
    }
   
    @EventHandler
    public void death(PlayerDeathEvent e) {
        Player p = e.getEntity().getPlayer();
        Player k = e.getEntity().getKiller();
        if(reports.containsKey(p.getName())) {
            reports.remove(p.getName());
        }
        if(checkReport(p.getName())) {
            if(k!=null) {
                Bukkit.broadcastMessage("Игрок "+ChatColor.RED+p.getName()+ChatColor.WHITE+" был убит игроком "+ChatColor.GOLD+k.getName()+" и получил бан!");
            } else {
                Bukkit.broadcastMessage("Игрок "+ChatColor.RED+p.getName()+ChatColor.WHITE+" умер и получил бан!");
            }
        }
    }
   
    private boolean checkReport(String player) {
        if(toBan.containsKey(player)) {
            Date banDate = new Date(System.currentTimeMillis()+stars[toBan.get(player)]*60*60*1000);
            if(stars[toBan.get(player)]==0) { banDate = null; }
            Bukkit.getBanList(BanList.Type.NAME).addBan(player, null, banDate, null);
            Bukkit.getPlayer(player).kickPlayer(null);
            toBan.remove(player);
            return true;
        }
        return false;
    }
   
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        Player from = (Player) sender;
        if(cmd.getName().equals("report")) {
            if(args.length<1) { return false; }
           
            if(args[0]=="send") {
                if(args.length<2) { return false; }
               
                String player = args[1];
               
                if(!from.hasPermission("FTSP.report.send")) { return true; }
                String desc = "";
               
                if(args.length>2) {
                    desc = String.join(" ", Arrays.copyOfRange(args, 2, args.length));
                }
               
                HashMap<String, String> tmp = new HashMap<String, String>();
               
                tmp.put("from", from.getName());
                tmp.put("desc", desc);
               
                reports.put(player, tmp);
               
                String report_notify = "";
                report_notify += ChatColor.RED + "[ЖАЛОБА] ";
                report_notify += ChatColor.GOLD + from.getName() + " -> " + player + "\n";
                report_notify += ChatColor.YELLOW + desc;
               
                Bukkit.broadcast(report_notify, "FTSP.report.look");
                return true;
            } else if(args[0]=="list") {
                if(!from.hasPermission("FTSP.report.list")) { return true; }
                String list = ChatColor.GREEN + "Список отправленных репортов:";
                for(Entry<String, HashMap<String, String>> player1 : reports.entrySet()) {
                    list += "\n\n";
                    list += ChatColor.GOLD + player1.getValue().get("from") + " -> " + player1.getKey();
                    list += ChatColor.WHITE + " " + player1.getValue().get("desc");
                }
                sender.sendMessage(list);
                return true;
            } else if(args[0]=="accept") {
                if(args.length<2) { return false; }

                String player = args[1];
               
                if(!from.hasPermission("FTSP.report.accept")) { from.sendMessage("AAA"); return true; }
                if(args.length!=3) { return false; }

                try {
                    Integer star = Integer.parseInt(args[2]);
                    reports.remove(player);
                    toBan.put(player, star);
                    Bukkit.broadcastMessage("Игрок "+ChatColor.RED+player+ChatColor.WHITE+" объявлен в розыск! Уровень опастности: "+star);
                } catch (Exception e) { return false; }
                return true;
            } else {
                return false;
            }
        }
        return false;
    }
}
Не помню школьников, которые умеют что-то большее чем System.out.prinLn и разделение плагина на миллиард файлов потому что так было в гайде. Да и в любом случае ты ошибся - я студент). Жду, когда напишешь про switch и что-нибудь ещё, что фактически будет синтаксическим сахаром.

С агрессией всё было бы ещё проще, если бы ты глянул на время моего сообщения. Я уже около 10 часов с перерывами на еду и туалет пытаюь разобраться с сохранение и использованием сраных координат. И ничего найти не мог. А спуся 10 часов мне скинули ссылку в которой нет вообще никакой полезной информации.

Ну и про то, что я не программист и мне стоит идити учить Java тоже упомину. Ты в глаза не видел мой код. Ты не видел моих навоков от слова совсем. А всё, на чём ты мог основываться - я не нашел нужную информацию в документации к немаленькому такому API. Гениально!

А теперь на последок вежливо попрошу - либо вообще ничего не пишите, либо распишите всё максимально понятно для человека, который впервые увидел слово Bukkit, Spigot или ещё что-то.
Посмотри как я делаю конфиг в своих кланах. Так же это будет работать и с локацией. (но там у меня hocon).

А код у тебя говно...upload_2020-4-24_21-17-54.png Что это вообще? пакеты нормально назови.... toLowerCase
 
Код:
package FTSP.main;

import java.util.Map.Entry;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;

import org.bukkit.BanList;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.java.JavaPlugin;

import net.milkbowl.vault.economy.Economy;


public class FTSP extends JavaPlugin implements Listener{
    public HashMap<String, HashMap<String, String>> reports = new HashMap<String, HashMap<String, String>>();
    public HashMap<String, Integer> toBan = new HashMap<String, Integer>();
   
    public Integer[] stars = {1,2,4,8,0};
   
    public static Economy economy;
   
    public void onEnable() {
        economy = getServer().getServicesManager().getRegistration(Economy.class).getProvider();
        getConfig().options().copyDefaults();
        saveDefaultConfig();
        getServer().getPluginManager().registerEvents(this, this);
    }
   
    @EventHandler
    public void quit(PlayerQuitEvent e) {
        Player p = e.getPlayer();
        if(reports.containsKey(p.getName())) {
            reports.remove(p.getName());
        }
        if(checkReport(p.getName())) {
            Bukkit.broadcastMessage("Игрок "+ChatColor.RED+p.getName()+ChatColor.WHITE+" вышел и получил бан!");
        }
    }
   
    @EventHandler
    public void death(PlayerDeathEvent e) {
        Player p = e.getEntity().getPlayer();
        Player k = e.getEntity().getKiller();
        if(reports.containsKey(p.getName())) {
            reports.remove(p.getName());
        }
        if(checkReport(p.getName())) {
            if(k!=null) {
                Bukkit.broadcastMessage("Игрок "+ChatColor.RED+p.getName()+ChatColor.WHITE+" был убит игроком "+ChatColor.GOLD+k.getName()+" и получил бан!");
            } else {
                Bukkit.broadcastMessage("Игрок "+ChatColor.RED+p.getName()+ChatColor.WHITE+" умер и получил бан!");
            }
        }
    }
   
    private boolean checkReport(String player) {
        if(toBan.containsKey(player)) {
            Date banDate = new Date(System.currentTimeMillis()+stars[toBan.get(player)]*60*60*1000);
            if(stars[toBan.get(player)]==0) { banDate = null; }
            Bukkit.getBanList(BanList.Type.NAME).addBan(player, null, banDate, null);
            Bukkit.getPlayer(player).kickPlayer(null);
            toBan.remove(player);
            return true;
        }
        return false;
    }
   
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        Player from = (Player) sender;
        if(cmd.getName().equals("report")) {
            if(args.length<1) { return false; }
           
            if(args[0]=="send") {
                if(args.length<2) { return false; }
               
                String player = args[1];
               
                if(!from.hasPermission("FTSP.report.send")) { return true; }
                String desc = "";
               
                if(args.length>2) {
                    desc = String.join(" ", Arrays.copyOfRange(args, 2, args.length));
                }
               
                HashMap<String, String> tmp = new HashMap<String, String>();
               
                tmp.put("from", from.getName());
                tmp.put("desc", desc);
               
                reports.put(player, tmp);
               
                String report_notify = "";
                report_notify += ChatColor.RED + "[ЖАЛОБА] ";
                report_notify += ChatColor.GOLD + from.getName() + " -> " + player + "\n";
                report_notify += ChatColor.YELLOW + desc;
               
                Bukkit.broadcast(report_notify, "FTSP.report.look");
                return true;
            } else if(args[0]=="list") {
                if(!from.hasPermission("FTSP.report.list")) { return true; }
                String list = ChatColor.GREEN + "Список отправленных репортов:";
                for(Entry<String, HashMap<String, String>> player1 : reports.entrySet()) {
                    list += "\n\n";
                    list += ChatColor.GOLD + player1.getValue().get("from") + " -> " + player1.getKey();
                    list += ChatColor.WHITE + " " + player1.getValue().get("desc");
                }
                sender.sendMessage(list);
                return true;
            } else if(args[0]=="accept") {
                if(args.length<2) { return false; }

                String player = args[1];
               
                if(!from.hasPermission("FTSP.report.accept")) { from.sendMessage("AAA"); return true; }
                if(args.length!=3) { return false; }

                try {
                    Integer star = Integer.parseInt(args[2]);
                    reports.remove(player);
                    toBan.put(player, star);
                    Bukkit.broadcastMessage("Игрок "+ChatColor.RED+player+ChatColor.WHITE+" объявлен в розыск! Уровень опастности: "+star);
                } catch (Exception e) { return false; }
                return true;
            } else {
                return false;
            }
        }
        return false;
    }
}
Не помню школьников, которые умеют что-то большее чем System.out.prinLn и разделение плагина на миллиард файлов потому что так было в гайде. Да и в любом случае ты ошибся - я студент). Жду, когда напишешь про switch и что-нибудь ещё, что фактически будет синтаксическим сахаром.

С агрессией всё было бы ещё проще, если бы ты глянул на время моего сообщения. Я уже около 10 часов с перерывами на еду и туалет пытаюь разобраться с сохранение и использованием сраных координат. И ничего найти не мог. А спуся 10 часов мне скинули ссылку в которой нет вообще никакой полезной информации.

Ну и про то, что я не программист и мне стоит идити учить Java тоже упомину. Ты в глаза не видел мой код. Ты не видел моих навоков от слова совсем. А всё, на чём ты мог основываться - я не нашел нужную информацию в документации к немаленькому такому API. Гениально!

А теперь на последок вежливо попрошу - либо вообще ничего не пишите, либо распишите всё максимально понятно для человека, который впервые увидел слово Bukkit, Spigot или ещё что-то.

Классный ГоВнОкОд. Респект!!
 
Потому что понятно же все. Ты даже не кодер и полез в разработку плагинов. Сначала изучи Java, а потом уже задавай тут вопросы. Никто тут не горит желанием обучать школьника, который еще и проявляет агрессию. Тебе нужно не делать сервера в майне а играть на таких.
Код:
package FTSP.main;

import java.util.Map.Entry;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;

import org.bukkit.BanList;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.java.JavaPlugin;

import net.milkbowl.vault.economy.Economy;


public class FTSP extends JavaPlugin implements Listener{
    public HashMap<String, HashMap<String, String>> reports = new HashMap<String, HashMap<String, String>>();
    public HashMap<String, Integer> toBan = new HashMap<String, Integer>();
   
    public Integer[] stars = {1,2,4,8,0};
   
    public static Economy economy;
   
    public void onEnable() {
        economy = getServer().getServicesManager().getRegistration(Economy.class).getProvider();
        getConfig().options().copyDefaults();
        saveDefaultConfig();
        getServer().getPluginManager().registerEvents(this, this);
    }
   
    @EventHandler
    public void quit(PlayerQuitEvent e) {
        Player p = e.getPlayer();
        if(reports.containsKey(p.getName())) {
            reports.remove(p.getName());
        }
        if(checkReport(p.getName())) {
            Bukkit.broadcastMessage("Игрок "+ChatColor.RED+p.getName()+ChatColor.WHITE+" вышел и получил бан!");
        }
    }
   
    @EventHandler
    public void death(PlayerDeathEvent e) {
        Player p = e.getEntity().getPlayer();
        Player k = e.getEntity().getKiller();
        if(reports.containsKey(p.getName())) {
            reports.remove(p.getName());
        }
        if(checkReport(p.getName())) {
            if(k!=null) {
                Bukkit.broadcastMessage("Игрок "+ChatColor.RED+p.getName()+ChatColor.WHITE+" был убит игроком "+ChatColor.GOLD+k.getName()+" и получил бан!");
            } else {
                Bukkit.broadcastMessage("Игрок "+ChatColor.RED+p.getName()+ChatColor.WHITE+" умер и получил бан!");
            }
        }
    }
   
    private boolean checkReport(String player) {
        if(toBan.containsKey(player)) {
            Date banDate = new Date(System.currentTimeMillis()+stars[toBan.get(player)]*60*60*1000);
            if(stars[toBan.get(player)]==0) { banDate = null; }
            Bukkit.getBanList(BanList.Type.NAME).addBan(player, null, banDate, null);
            Bukkit.getPlayer(player).kickPlayer(null);
            toBan.remove(player);
            return true;
        }
        return false;
    }
   
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        Player from = (Player) sender;
        if(cmd.getName().equals("report")) {
            if(args.length<1) { return false; }
           
            if(args[0]=="send") {
                if(args.length<2) { return false; }
               
                String player = args[1];
               
                if(!from.hasPermission("FTSP.report.send")) { return true; }
                String desc = "";
               
                if(args.length>2) {
                    desc = String.join(" ", Arrays.copyOfRange(args, 2, args.length));
                }
               
                HashMap<String, String> tmp = new HashMap<String, String>();
               
                tmp.put("from", from.getName());
                tmp.put("desc", desc);
               
                reports.put(player, tmp);
               
                String report_notify = "";
                report_notify += ChatColor.RED + "[ЖАЛОБА] ";
                report_notify += ChatColor.GOLD + from.getName() + " -> " + player + "\n";
                report_notify += ChatColor.YELLOW + desc;
               
                Bukkit.broadcast(report_notify, "FTSP.report.look");
                return true;
            } else if(args[0]=="list") {
                if(!from.hasPermission("FTSP.report.list")) { return true; }
                String list = ChatColor.GREEN + "Список отправленных репортов:";
                for(Entry<String, HashMap<String, String>> player1 : reports.entrySet()) {
                    list += "\n\n";
                    list += ChatColor.GOLD + player1.getValue().get("from") + " -> " + player1.getKey();
                    list += ChatColor.WHITE + " " + player1.getValue().get("desc");
                }
                sender.sendMessage(list);
                return true;
            } else if(args[0]=="accept") {
                if(args.length<2) { return false; }

                String player = args[1];
               
                if(!from.hasPermission("FTSP.report.accept")) { from.sendMessage("AAA"); return true; }
                if(args.length!=3) { return false; }

                try {
                    Integer star = Integer.parseInt(args[2]);
                    reports.remove(player);
                    toBan.put(player, star);
                    Bukkit.broadcastMessage("Игрок "+ChatColor.RED+player+ChatColor.WHITE+" объявлен в розыск! Уровень опастности: "+star);
                } catch (Exception e) { return false; }
                return true;
            } else {
                return false;
            }
        }
        return false;
    }
}
Не помню школьников, которые умеют что-то большее чем System.out.prinLn и разделение плагина на миллиард файлов потому что так было в гайде. Да и в любом случае ты ошибся - я студент). Жду, когда напишешь про switch и что-нибудь ещё, что фактически будет синтаксическим сахаром.

С агрессией всё было бы ещё проще, если бы ты глянул на время моего сообщения. Я уже около 10 часов с перерывами на еду и туалет пытаюь разобраться с сохранение и использованием сраных координат. И ничего найти не мог. А спуся 10 часов мне скинули ссылку в которой нет вообще никакой полезной информации.

Ну и про то, что я не программист и мне стоит идити учить Java тоже упомину. Ты в глаза не видел мой код. Ты не видел моих навоков от слова совсем. А всё, на чём ты мог основываться - я не нашел нужную информацию в документации к немаленькому такому API. Гениально!

А теперь на последок вежливо попрошу - либо вообще ничего не пишите, либо распишите всё максимально понятно для человека, который впервые увидел слово Bukkit, Spigot или ещё что-то.
Не гоните тут на школьников, я в свои 14(2016 год) начал программировать ^.-
 
Не гоните тут на школьников, я в свои 14(2016 год) начал программировать ^.-
Лол мне 15 :). И писать код и то умею.

Начал писать гавнокод у 10 )))

Код:
package FTSP.main;

import java.util.Map.Entry;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;

import org.bukkit.BanList;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.java.JavaPlugin;

import net.milkbowl.vault.economy.Economy;


public class FTSP extends JavaPlugin implements Listener{
    public HashMap<String, HashMap<String, String>> reports = new HashMap<String, HashMap<String, String>>();
    public HashMap<String, Integer> toBan = new HashMap<String, Integer>();
 
    public Integer[] stars = {1,2,4,8,0};
 
    public static Economy economy;
 
    public void onEnable() {
        economy = getServer().getServicesManager().getRegistration(Economy.class).getProvider();
        getConfig().options().copyDefaults();
        saveDefaultConfig();
        getServer().getPluginManager().registerEvents(this, this);
    }
 
    @EventHandler
    public void quit(PlayerQuitEvent e) {
        Player p = e.getPlayer();
        if(reports.containsKey(p.getName())) {
            reports.remove(p.getName());
        }
        if(checkReport(p.getName())) {
            Bukkit.broadcastMessage("Игрок "+ChatColor.RED+p.getName()+ChatColor.WHITE+" вышел и получил бан!");
        }
    }
 
    @EventHandler
    public void death(PlayerDeathEvent e) {
        Player p = e.getEntity().getPlayer();
        Player k = e.getEntity().getKiller();
        if(reports.containsKey(p.getName())) {
            reports.remove(p.getName());
        }
        if(checkReport(p.getName())) {
            if(k!=null) {
                Bukkit.broadcastMessage("Игрок "+ChatColor.RED+p.getName()+ChatColor.WHITE+" был убит игроком "+ChatColor.GOLD+k.getName()+" и получил бан!");
            } else {
                Bukkit.broadcastMessage("Игрок "+ChatColor.RED+p.getName()+ChatColor.WHITE+" умер и получил бан!");
            }
        }
    }
 
    private boolean checkReport(String player) {
        if(toBan.containsKey(player)) {
            Date banDate = new Date(System.currentTimeMillis()+stars[toBan.get(player)]*60*60*1000);
            if(stars[toBan.get(player)]==0) { banDate = null; }
            Bukkit.getBanList(BanList.Type.NAME).addBan(player, null, banDate, null);
            Bukkit.getPlayer(player).kickPlayer(null);
            toBan.remove(player);
            return true;
        }
        return false;
    }
 
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        Player from = (Player) sender;
        if(cmd.getName().equals("report")) {
            if(args.length<1) { return false; }
        
            if(args[0]=="send") {
                if(args.length<2) { return false; }
            
                String player = args[1];
            
                if(!from.hasPermission("FTSP.report.send")) { return true; }
                String desc = "";
            
                if(args.length>2) {
                    desc = String.join(" ", Arrays.copyOfRange(args, 2, args.length));
                }
            
                HashMap<String, String> tmp = new HashMap<String, String>();
            
                tmp.put("from", from.getName());
                tmp.put("desc", desc);
            
                reports.put(player, tmp);
            
                String report_notify = "";
                report_notify += ChatColor.RED + "[ЖАЛОБА] ";
                report_notify += ChatColor.GOLD + from.getName() + " -> " + player + "\n";
                report_notify += ChatColor.YELLOW + desc;
            
                Bukkit.broadcast(report_notify, "FTSP.report.look");
                return true;
            } else if(args[0]=="list") {
                if(!from.hasPermission("FTSP.report.list")) { return true; }
                String list = ChatColor.GREEN + "Список отправленных репортов:";
                for(Entry<String, HashMap<String, String>> player1 : reports.entrySet()) {
                    list += "\n\n";
                    list += ChatColor.GOLD + player1.getValue().get("from") + " -> " + player1.getKey();
                    list += ChatColor.WHITE + " " + player1.getValue().get("desc");
                }
                sender.sendMessage(list);
                return true;
            } else if(args[0]=="accept") {
                if(args.length<2) { return false; }

                String player = args[1];
            
                if(!from.hasPermission("FTSP.report.accept")) { from.sendMessage("AAA"); return true; }
                if(args.length!=3) { return false; }

                try {
                    Integer star = Integer.parseInt(args[2]);
                    reports.remove(player);
                    toBan.put(player, star);
                    Bukkit.broadcastMessage("Игрок "+ChatColor.RED+player+ChatColor.WHITE+" объявлен в розыск! Уровень опастности: "+star);
                } catch (Exception e) { return false; }
                return true;
            } else {
                return false;
            }
        }
        return false;
    }
}
Не помню школьников, которые умеют что-то большее чем System.out.prinLn и разделение плагина на миллиард файлов потому что так было в гайде. Да и в любом случае ты ошибся - я студент). Жду, когда напишешь про switch и что-нибудь ещё, что фактически будет синтаксическим сахаром.

С агрессией всё было бы ещё проще, если бы ты глянул на время моего сообщения. Я уже около 10 часов с перерывами на еду и туалет пытаюь разобраться с сохранение и использованием сраных координат. И ничего найти не мог. А спуся 10 часов мне скинули ссылку в которой нет вообще никакой полезной информации.

Ну и про то, что я не программист и мне стоит идити учить Java тоже упомину. Ты в глаза не видел мой код. Ты не видел моих навоков от слова совсем. А всё, на чём ты мог основываться - я не нашел нужную информацию в документации к немаленькому такому API. Гениально!

А теперь на последок вежливо попрошу - либо вообще ничего не пишите, либо распишите всё максимально понятно для человека, который впервые увидел слово Bukkit, Spigot или ещё что-то.

Держи почитай книжку...

https://www.investigatii.md/uploads/resurse/Clean_Code.pdf
 

Вложения:

  • 000726365-hq-168-80.jpg
    000726365-hq-168-80.jpg
    Размер файла
    8,6 КБ
    Просмотров
    6
Код:
        ConfigurationSection work = this.getConfig().getConfigurationSection("work");
        work.getKeys(false).forEach(key -> {
            ConfigurationSection block = work.getConfigurationSection(key);
            int x = block.getInt("x");
            int y = block.getInt("z");
            int z = block.getInt("z");
            int id = block.getInt("id");
        });
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх