Помогите Частично не работает код на проверку владельца

ImperatorBuzz

Участник
Пользователь
Баллы
36
Имя в Minecraft
ImperatorBuzov
Здравствуйте, пишу Creative, сделал такую проверку:

private boolean isOwner(PlayerInteractEvent e, Player p) {
Plot i = CreativeManager.getCreativeManager().getPlot(p.getPlayer());
if (CreativeManager.plotConfig.contains(p.getUniqueId().toString())) {
if (i.getPlayer().getName().equalsIgnoreCase(CreativeManager.plotConfig.getString(p.getUniqueId().toString() + ".Name"))) {
return true;
} else {
e.setCancelled(false);
return false;
}
}
e.setCancelled(true);
return false;
}

Когда я создаю первый плот, то всё нормально: я могу ломать плот, а другие игроки не могут, но когда уже другие создают плоты, то я и они могу ломать их, полагаю, что проблема в проверке конфига, но как её решить?
 
Последнее редактирование:
p.getPlayer() что?
У тебя игрок уже есть
У тебя зачем-то отменяются действия хотя можно просто e.setCancelled(!isOwner);
Д р проблем не вижу
Напиши др функции (getPlot, getPlayer в i)
И как ты ставишь слот?
 
p.getPlayer() что?
У тебя игрок уже есть
У тебя зачем-то отменяются действия хотя можно просто e.setCancelled(!isOwner);
Д р проблем не вижу
Напиши др функции (getPlot, getPlayer в i)
1. Исправил
2. Я знаю, лол
3. Нет, мне удобнее по другому
4.

public Player getPlayer() {
return Bukkit.getPlayerExact(ownerName);
}

public Plot getPlot(Player p) {
if (hasIsland(p)) {
return plots.get(p.getUniqueId());
}
return null;
}

public boolean hasIsland(Player p) {
return plots.containsKey(p.getUniqueId());
}

private static Map<UUID, Plot> plots = new HashMap<>();
 
В
public Plot getPlot(Player p) {
if (hasIsland(p)) {
return plots.get(p.getUniqueId());
}
return null;
}


private static Map<UUID, Plot> plots = new HashMap<>();
getPlot ты пытаешься получить из конфига ЦЕЛЫЙ ЭКЗЕМПЛЯР КЛАССА?
+ как ты ставишь плот?
 
Сет выглядеть должен как-то так
data.set("Plots.Plot"+plotId+ ".Owner", p.getUniqeUUID);
 
Сет выглядеть должен как-то так
data.set("Plots.Plot"+plotId+ ".Owner", p.getUniqeUUID);
Ну и как бы зачем мне это? Если у меня проблема в том, что мне надо получать много плотов и потом из этих плотов получать UUID конкретного игрока, разве не понятно?
 
Ну и как бы зачем мне это? Если у меня проблема в том, что мне надо получать много плотов и потом из этих плотов получать UUID конкретного игрока, разве не понятно?
тогда data.set("playersPlots."+p.getUniqeUUID()+".Plots", List<Integer>)
 
Код:
List<Integer> l =data.getIntegerList("playersPlots."+p.getUniqueId().toString()+".Plots");  
              
                l.add(Integer.parseInt(args[1]));
              
                data.set("playersPlots."+p.getUniqueId().toString()+".Plots" ,  l);
                return true;

как вариант
 
Код:
if (data.getIntegerList("playersPlots."+p.getUniqueId().toString()+".Plots").contains(i.getPlotId())) {
return true;
}
тогда проверять вот так
 
Код:
if (data.getIntegerList("playersPlots."+p.getUniqueId().toString()+".Plots").contains(i.getPlotId())) {
return true;
}
тогда проверять вот так
Немного не понимаю, т.е тебе нужна структура кфг?

37932b4c-2fd9-3842-8356-42ddcb126e7b:
name: Lmperatoreq
x: -49000.0
z: -50000.0
ad3cf3f8-6156-38fd-95c7-7dab727e5963:
name: arhack
x: -48000.0
z: -50000.0
 
Что у тебя значит в getPlayer ownerName мб он возвращает не того кого надо
 
Что у тебя значит в getPlayer ownerName мб он возвращает не того кого надо
Ты умеешь читать тему? Он возвращает того, кого надо, проблема в том, что я получаю как я понял только первую строку, а мне нужно проверять все строки и из этих строк проверять uuid
 
Ты умеешь читать тему? Он возвращает того, кого надо, проблема в том, что я получаю как я понял только первую строку, а мне нужно проверять все строки и из этих строк проверять uuid
Ошибка может быть только в i.getPlayer().getName() т к из конфига ты достаёшь по КОНКРЕТНОМУ uuid игрока (p) и там ВСЕГО 1 имя.
 
Ошибка может быть только в i.getPlayer().getName() т к из конфига ты достаёшь по КОНКРЕТНОМУ uuid игрока (p) и там ВСЕГО 1 имя.
нет, ты меня не правильно понял, приведу пример ниже
допустим я хочу сдлеать чтобы игроку отправлялись сообщения указанные в конфиге:

config:
messages:
- "кал"
- "деградация"
- "круто"

и весь список этих сообщений должен отправляться игроку, так и с моим конфигом, мне нужно, чтобы у меня был код, а то так получается что с getString у меня только "кал" выведится
 
Назад
Верх