- Баллы
- 123
.
Последнее редактирование:
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Давай разберемся, что из себя представляет args?Дабы не надоедать всем своими вопросами, я решил создать единственную тему.
Я разрабатываю свой первый легкий плагин MoreHealth (я решил что он будет именно синего цвета).
Его функционал не велик, предполагается что в нем будет всего две команды:
/moreh enable
/moreh disable
Первая команда при наличии определенного права(далее пермишана) включает игроку дополнительный(е) ряд(ы) сердечек (кол-во рядов зависит от пермишена у игрока).
Вторая команда - выключает дополнительный ряд сердечек (на самом деле просто устанавливает стандартное кол-во сердечек).
Знаю, что такие плагины есть, возможно даже много, но, вспомните свои первые плагины, могу быть уверен, что они были не лучше.
Немного обо мне, я начинающий программист(далее гавнокодер), изучаю Java меньше месяца на JavaRush, мне 12 лет.
Так как это мой первый плагин, и саму Джаву я изучил плохо, прошу меня не сильно тралить.JavaScript:package com.roboman.plugins; 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.player.PlayerQuitEvent; import org.bukkit.plugin.java.JavaPlugin; public class Solution extends JavaPlugin implements Listener { @Override public void onLoad() { Bukkit.broadcastMessage(ChatColor.BLUE + "[MoreHealth] " + ChatColor.DARK_AQUA + "Успешно загружен."); } @Override public void onEnable() { getServer().getPluginManager().registerEvents(this, this); Bukkit.broadcastMessage(ChatColor.BLUE + "[MoreHealth] " + ChatColor.DARK_GREEN + "Успешно включен."); } @Override public void onDisable() { Player[] players = getServer().getOnlinePlayers(); for (Player player:players) { player.setMaxHealth(20); } Bukkit.broadcastMessage(ChatColor.BLUE + "[MoreHealth] " + ChatColor.DARK_RED + "Был выключен."); } @EventHandler public void onQuit(PlayerQuitEvent pqe) { Player player = pqe.getPlayer(); player.setMaxHealth(20); } @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { Player player = null; if (sender instanceof Player) { player = (Player) sender; } if (cmd.getName().equalsIgnoreCase("moreh")) { if (у команды нет аргументов)//Вот в этом месте нужна помощь. { player.sendMessage(ChatColor.BLUE + "[MoreHealth] " + ChatColor.RED + "Использование плагина: " + ChatColor.GREEN + "/morehealth <args>"); } return true; } return false; } }Прощу помочь, как узнать (желательно в одном if()) что у команды нет аргументов?name: MoreHealth
main: com.roboman.plugins.Solution
version: 0.1
author: Mr_RoboMan
description: Плагин для дополнительных сердец.
commands:
moreh:
description: Основная команда плагина.
permission: morehealth.user
usage: /<command> [args]
Пробовал всякое args.equals(null) и т.д. = не работает.
Не знаю, но как я думаю: это массив в котором записаны аргументы(наверно String) команды.Давай разберемся, что из себя представляет args?
Правильно, это массив. Какой параметр есть у массива? Какого будет значение этого параметра при отсутствии аргументов?Не знаю, но как я думаю: это массив в котором записаны аргументы(наверно String) команды.
Наверно длинна массива, при отсутствии наверно будет null..Правильно, это массив. Какой параметр есть у массива? Какого будет значение этого параметра при отсутствии аргументов?
Ну раз до этого момента дошел, то подскажу. Длина масива будет равна 0. Т.е. проверяешь: если(длина масива == 0) то ...Наверно длинна массива, при отсутствии наверно будет null..
Блин, спасибо большое!)) А я постоянно проверял на nullНу раз до этого момента дошел, то подскажу. Длина масива будет равна 0. Т.е. проверяешь: если(длина масива == 0) то ...


if (player.getMaxHealth() > 20.0)
//Код
Всё так.Прошу помочь. Что я делаю не так?
JavaScript:if (player.getMaxHealth() > 20.0) //Код
Ошибка какая-то или что?Блин, спасибо большое!)) А я постоянно проверял на null
Я пошел дальше писать плагин и совершать глупейшие ошибки.
Хотя не, лучше отдохну в официальную CS:GO
Прошу помочь. Что я делаю не так?
JavaScript:if (player.getMaxHealth() > 20.0) //Код
UP
Меня удивляет ваша логика.Посмотреть вложение 29443
Жалуется вроде на то что игрок может быть не Player, но я вроде сделал проверку в самом начале..
Посмотреть вложение 29443
Жалуется вроде на то что игрок может быть не Player, но я вроде сделал проверку в самом начале..

Не подходит чет..Посмотреть вложение 29448
У самого такое давно было.
Ну а как мне получить то что надо... Т.Е. Просто int с максимальным кол-вом сердечек у игрока?..Меня удивляет ваша логика.
Всё дело в том что там 2 метода с таким названием, но возращают разные типы данных.
Вот что использует например @fromgate - https://github.com/fromgate/ReActio...te/reactions/util/BukkitCompatibilityFix.javaНу а как мне получить то что надо... Т.Е. Просто int с максимальным кол-вом сердечек у игрока?..
И тут я понял что смогу написать плагин без getMaxHealth()Вот что использует например @fromgate - https://github.com/fromgate/ReActio...te/reactions/util/BukkitCompatibilityFix.java
Вполне сносное решение, а главное универсальное.

Достаточно добавить команду moreh, аргументы уже проверяешь в методе-обработчике ( args[0] ).И тут я понял что смогу написать плагин без getMaxHealth()
Пожалуй сегодня выложу плагин. Если людям понравиться - буду дальше обновлять.
Хотя нет, еще вопрос как добавить в plugin.yml команду с аргументами? А именно:
/moreh enable
/moreh disable
Это знаю, у меня сейчас все так и работает. Мне чтоб при tab высвечивало аргументы команды в чате (как у нормальных плагинов).Достаточно добавить команду moreh, аргументы уже проверяешь в методе-обработчике ( args[0] ).


Кроме дефотлтных команд сервера не видел подобного. Пруфы?(как у нормальных плагинов)
А, да, извиняюсь провтыкал с чем-то перепутал наверноКроме дефолтных команд сервера не видел подобного. Пруфы?
.Да.А, да, извиняюсь провтыкал с чем-то перепутал наверно.
То-есть если у меня в плагине единственная команда - /moreh а все остальные аргументы то из регистрировать не надо?