Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: This feature may not be available in some browsers.
ДаРечь ведь о написании своего плагина?
Время на выполнение кода будет огромным на столько, что обновление топов можно будет сделать только раз в деньсканировать все контейнеры в регионе
Чет желание сделать топы пропало...Время на выполнение кода будет огромным на столько, что обновление топов можно будет сделать только раз в день
Это не так. Задача в этом плане не так страшна, как кажется. Однако, соглашусь, тут подсказать тяжело, ибо нужно прям целый плагин скидывать, а это вряд ли кто-то сделаетВремя на выполнение кода будет огромным на столько, что обновление топов можно будет сделать только раз в день
Хочу создать голограмму с топами по алмазами. То есть когда игрок положил алмаз в бочку ему начисляется +1 к баллу в голограмме. Как это можно релиазавать?
@EventHandler
public void onClose(InventoryCloseEvent e) {
HashMap<Location, UUID> chestOwner = new HashMap<>();
UUID uuid = e.getPlayer().getUniqueId();
Location location = e.getInventory().getLocation();
if(e.getInventory().getType() == InventoryType.CHEST && chestOwner.containsKey(location)) {
Player owner = Bukkit.getPlayer(chestOwner.get(location));
if(owner!=null&&owner.getUniqueId()==uuid) {
return;
}
HashMap<UUID, Integer> database = new HashMap<>();
if (!database.containsKey(uuid)) {
database.put(uuid, 0);
}
Arrays.stream(e.getInventory().getContents())
.map(s -> s.getType() == Material.DIAMOND)
.forEach(s -> database.put(uuid, database.get(uuid) + 1));
Arrays.stream(e.getInventory().getContents())
.map(s -> s.getType() == Material.DIAMOND)
.forEach(s -> database.put(owner.getUniqueId(), database.get(owner.getUniqueId()) - 1));
chestOwner.put(location,uuid);
}
}
я тут немного ошибся, ну концепцию думаю ты понял.хэшмапу замени на базу данных (h2,sql,mysql) либо yml файлJava:@EventHandler public void onClose(InventoryCloseEvent e) { HashMap<Location, UUID> chestOwner = new HashMap<>(); UUID uuid = e.getPlayer().getUniqueId(); Location location = e.getInventory().getLocation(); if(e.getInventory().getType() == InventoryType.CHEST && chestOwner.containsKey(location)) { Player owner = Bukkit.getPlayer(chestOwner.get(location)); if(owner!=null&&owner.getUniqueId()==uuid) { return; } HashMap<UUID, Integer> database = new HashMap<>(); if (!database.containsKey(uuid)) { database.put(uuid, 0); } Arrays.stream(e.getInventory().getContents()) .map(s -> s.getType() == Material.DIAMOND) .forEach(s -> database.put(uuid, database.get(uuid) + 1)); Arrays.stream(e.getInventory().getContents()) .map(s -> s.getType() == Material.DIAMOND) .forEach(s -> database.put(owner.getUniqueId(), database.get(owner.getUniqueId()) - 1)); chestOwner.put(location,uuid); } }
Там ещё уничтожение сундуков обработай и всё.
@EventHandler
public void onClose(InventoryCloseEvent e) {
HashMap<Location, UUID> chestOwner = new HashMap<>();
UUID uuid = e.getPlayer().getUniqueId();
Location location = e.getInventory().getLocation();
if(e.getInventory().getType() == InventoryType.CHEST) {
if(chestOwner.containsKey(location)) {
if (chestOwner.get(location) == uuid) {
return;
}
}
HashMap<UUID, Integer> database = new HashMap<>();
if (!database.containsKey(uuid)) {
database.put(uuid, 0);
}
Arrays.stream(e.getInventory().getContents())
.map(s -> s.getType() == Material.DIAMOND)
.forEach(s -> database.put(uuid, database.get(uuid) + 1));
Arrays.stream(e.getInventory().getContents())
.map(s -> s.getType() == Material.DIAMOND)
.forEach(s -> database.put(chestOwner.get(location), database.get(chestOwner.get(location)) - 1));
chestOwner.put(location,uuid);
}
}
я тут забыл количество обработать, ну дальше самя тут немного ошибся, ну концепцию думаю ты понял.
Java:@EventHandler public void onClose(InventoryCloseEvent e) { HashMap<Location, UUID> chestOwner = new HashMap<>(); UUID uuid = e.getPlayer().getUniqueId(); Location location = e.getInventory().getLocation(); if(e.getInventory().getType() == InventoryType.CHEST) { if(chestOwner.containsKey(location)) { if (chestOwner.get(location) == uuid) { return; } } HashMap<UUID, Integer> database = new HashMap<>(); if (!database.containsKey(uuid)) { database.put(uuid, 0); } Arrays.stream(e.getInventory().getContents()) .map(s -> s.getType() == Material.DIAMOND) .forEach(s -> database.put(uuid, database.get(uuid) + 1)); Arrays.stream(e.getInventory().getContents()) .map(s -> s.getType() == Material.DIAMOND) .forEach(s -> database.put(chestOwner.get(location), database.get(chestOwner.get(location)) - 1)); chestOwner.put(location,uuid); } }
вот поправил
и наверное лучше 2 эвента обрабатывать - Close и Open (Опен для удаления алмазов из статы 2 человека)я тут немного ошибся, ну концепцию думаю ты понял.
Java:@EventHandler public void onClose(InventoryCloseEvent e) { HashMap<Location, UUID> chestOwner = new HashMap<>(); UUID uuid = e.getPlayer().getUniqueId(); Location location = e.getInventory().getLocation(); if(e.getInventory().getType() == InventoryType.CHEST) { if(chestOwner.containsKey(location)) { if (chestOwner.get(location) == uuid) { return; } } HashMap<UUID, Integer> database = new HashMap<>(); if (!database.containsKey(uuid)) { database.put(uuid, 0); } Arrays.stream(e.getInventory().getContents()) .map(s -> s.getType() == Material.DIAMOND) .forEach(s -> database.put(uuid, database.get(uuid) + 1)); Arrays.stream(e.getInventory().getContents()) .map(s -> s.getType() == Material.DIAMOND) .forEach(s -> database.put(chestOwner.get(location), database.get(chestOwner.get(location)) - 1)); chestOwner.put(location,uuid); } }
вот поправил
Объединено
я тут забыл количество обработать, ну дальше сам
.map(s -> s.getType() == Material.DIAMOND)
Мы используем основные cookies для обеспечения работы этого сайта, а также дополнительные cookies для обеспечения максимального удобства пользователя.
Посмотрите дополнительную информацию и настройте свои предпочтения