1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Работа с BukkitRunnable

Тема в разделе "Разработка плагинов для новичков", создана пользователем Hittcliff, 6 янв 2018.

  1. Cookie1337

    Cookie1337 Активный участник Пользователь

    Баллы:
    66
    В данном случае Optional используется в качестве контейнера для результата обработки стрима.
     
  2. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    @Hittcliff, есть какие-то подвижки? )
     
  3. Автор темы
    Hittcliff

    Hittcliff Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    Relion128
    Я пару дней занят буду, вчера попробовал нифега не получилось. Посоветовали подключить библиотеку затем прокомплерировал... он из-за ошибок не захотел.. Просто те изменения которые ты сделал, не хотел кушать моё чистое ядро Spigot. Даже Jar файл (который был в архиве) тоже не загрузился ибо плагин его тупо не захотел грузить. Твой jar (который был в архиве) выдал на сервере ошибку:

    Код:
    [22:10:25] [Server thread/INFO]: [DCore] Enabling DCore v1.1
    [22:10:25] [Server thread/ERROR]: Cannot load configuration from stream
    org.bukkit.configuration.InvalidConfigurationException: while parsing a block mapping
     in 'string', line 3, column 5:
            'x: pos1': '-214'
            ^
    expected <block end>, but found Scalar
     in 'string', line 11, column 26:
            'sound-time:': '255' //Длительность
                                 ^
    
        at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:56) ~[spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:184) ~[spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(YamlConfiguration.java:239) [spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.bukkit.plugin.java.JavaPlugin.reloadConfig(JavaPlugin.java:195) [spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.bukkit.plugin.java.JavaPlugin.getConfig(JavaPlugin.java:163) [spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at ru.digital.come.DCore.Main.onEnable(Main.java:53) [DCore_v1.1.jar:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:292) [spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:340) [spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.bukkit.craftbukkit.v1_10_R1.CraftServer.loadPlugin(CraftServer.java:362) [spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.bukkit.craftbukkit.v1_10_R1.CraftServer.enablePlugins(CraftServer.java:322) [spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at net.minecraft.server.v1_10_R1.MinecraftServer.t(MinecraftServer.java:416) [spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at net.minecraft.server.v1_10_R1.MinecraftServer.l(MinecraftServer.java:381) [spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at net.minecraft.server.v1_10_R1.MinecraftServer.a(MinecraftServer.java:336) [spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at net.minecraft.server.v1_10_R1.DedicatedServer.init(DedicatedServer.java:270) [spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at net.minecraft.server.v1_10_R1.MinecraftServer.run(MinecraftServer.java:539) [spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at java.base/java.lang.Thread.run(Unknown Source) [?:?]
    Caused by: org.yaml.snakeyaml.parser.ParserException: while parsing a block mapping
     in 'string', line 3, column 5:
            'x: pos1': '-214'
            ^
    expected <block end>, but found Scalar
     in 'string', line 11, column 26:
            'sound-time:': '255' //Длительность
                                 ^
    
        at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.produce(ParserImpl.java:570) ~[spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158) ~[spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:143) ~[spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:224) ~[spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:155) ~[spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:229) ~[spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:155) ~[spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:229) ~[spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:155) ~[spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.yaml.snakeyaml.composer.Composer.composeDocument(Composer.java:122) ~[spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:105) ~[spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:120) ~[spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:450) ~[spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.yaml.snakeyaml.Yaml.load(Yaml.java:369) ~[spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:54) ~[spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        ... 16 more
    [22:10:25] [Server thread/ERROR]: Error occurred while enabling DCore v1.1 (Is it up to date?)
    java.lang.NullPointerException
        at ru.digital.come.DCore.Main.loadAreas(Main.java:82) ~[?:?]
        at ru.digital.come.DCore.Main.onEnable(Main.java:59) ~[?:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:292) ~[spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:340) [spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.bukkit.craftbukkit.v1_10_R1.CraftServer.loadPlugin(CraftServer.java:362) [spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.bukkit.craftbukkit.v1_10_R1.CraftServer.enablePlugins(CraftServer.java:322) [spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at net.minecraft.server.v1_10_R1.MinecraftServer.t(MinecraftServer.java:416) [spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at net.minecraft.server.v1_10_R1.MinecraftServer.l(MinecraftServer.java:381) [spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at net.minecraft.server.v1_10_R1.MinecraftServer.a(MinecraftServer.java:336) [spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at net.minecraft.server.v1_10_R1.DedicatedServer.init(DedicatedServer.java:270) [spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at net.minecraft.server.v1_10_R1.MinecraftServer.run(MinecraftServer.java:539) [spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at java.base/java.lang.Thread.run(Unknown Source) [?:?]
    [22:10:25] [Server thread/INFO]: Server permissions file permissions.yml is empty, ignoring it
     
  4. Автор темы
    Hittcliff

    Hittcliff Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    Relion128
    В твоём Jar небыло Plugins.yml я его загрузил теперь:


    Код:
    [20:15:37] [Server thread/ERROR]: Could not load 'plugins\DCore.jar' in folder 'plugins'
    org.bukkit.plugin.InvalidPluginException: java.lang.NoClassDefFoundError: ru/digital/come/MovingPlayersCatcher
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:135) ~[spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:329) ~[spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:251) [spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.bukkit.craftbukkit.v1_10_R1.CraftServer.loadPlugins(CraftServer.java:297) [spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at net.minecraft.server.v1_10_R1.DedicatedServer.init(DedicatedServer.java:202) [spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at net.minecraft.server.v1_10_R1.MinecraftServer.run(MinecraftServer.java:539) [spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at java.base/java.lang.Thread.run(Unknown Source) [?:?]
    Caused by: java.lang.NoClassDefFoundError: ru/digital/come/MovingPlayersCatcher
        at ru.digital.come.main.<init>(main.java:32) ~[?:?]
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:?]
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:?]
        at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:?]
        at java.base/java.lang.Class.newInstance(Unknown Source) ~[?:?]
        at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:76) ~[spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:131) ~[spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        ... 6 more
    Caused by: java.lang.ClassNotFoundException: ru.digital.come.MovingPlayersCatcher
        at java.base/java.net.URLClassLoader.findClass(Unknown Source) ~[?:?]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:101) ~[spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86) ~[spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at java.base/java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]
        at java.base/java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]
        at ru.digital.come.main.<init>(main.java:32) ~[?:?]
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:?]
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:?]
        at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:?]
        at java.base/java.lang.Class.newInstance(Unknown Source) ~[?:?]
        at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:76) ~[spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:131) ~[spigot-1.10-R0.1-SNAPSHOT-latest.jar:git-Spigot-c3e4052-1953f52]
        ... 6 more
    [20:15:37] [Server thread/INFO]: [WorldEdit] Loading WorldEdit v6.1.3;7a097ca
     
  5. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Вероятно, надо всего лишь потереть комментарий "// Длительность".
     
  6. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Окей, вот правильный config.yml, с которым плагин загрузится:
    Код:
    swarp:
      Boss:
        'x: pos1': -214
        'y: pos1': 40
        'z: pos1': 44
        'x: pos2': -194
        'y: pos2': 44
        'z: pos2': 63
        sound: piano.music
        category: master
        sound-time: 255
        sound-volume: 1.0
      Boss2:
        'x: pos1': -215
        'y: pos1': 41
        'z: pos1': 87
        'x: pos2': -195
        'y: pos2': 45
        'z: pos2': 106
        sound: attack.play
        category: master
        sound-time: 14
        sound-volume: 1
    Lang:
      default: 1
    settings:
      dev: 0

    P.S. Внёс изменения в исходнике.
    Распаковать, открыть в твоей IDE как "Проект Maven", собрать (mvn clean package).
    Готовый бинарник тоже лежит внутри.

    P.P.S. Там в начало onEnable() надо добавить ещё saveDefaultConfig(), а то при развёртывании плагина создаётся без этих двух зон. Но мне уже лень.
     

    Вложения:

    • Hittcliff_2.zip
      Размер файла:
      57,1 КБ
      Просмотров:
      4
    Последнее редактирование: 8 янв 2018
  7. InterWall

    InterWall Старожил Пользователь

    Баллы:
    173
    Псс, парень, комментарии YAML начинаются на с //, а с #.
     
  8. hyndorik

    hyndorik Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Ты шо дурной? Optional это npe защита и все, тебе сразу дают нпе обертку а ты сам себе стреляешь в ногу при orElse(null)
     
  9. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Optional<Area>, как тебе правильно ответил камрад, оказывается в наших руках как результат работы со Stream API.
    Нам не нужен этот Optional, поэтому мы просто забираем nullable-значение из него.
    Чтобы его забрать, мы не можем использовать .get(), т.к. он выбросит исключение.
    В нашем случае null не является ошибкой, появившемся в результате некорректной работы, поэтому никакого желания заворачивать вызов в try ... catch не возникло. Поэтому было написано .orElse(). Проверяем на null мы сами позже.
    А npe-защита это, в первую очередь, мозги в голове.
    Всего хорошего.
     
  10. Cookie1337

    Cookie1337 Активный участник Пользователь

    Баллы:
    66
    Предложи своё решение тогда:)
    [​IMG]
     
  11. hyndorik

    hyndorik Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Ну точно мозг атрофировался
     
  12. aceJKE

    aceJKE Старожил Пользователь

    Баллы:
    123
    Чего ты к опшеналам то прицепился? Все он правильно сказал, если необходимо отдать именно экземпляр арены, то следует использовать orElse.
     
  13. hyndorik

    hyndorik Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Когда не понимаешь зачем нужен Optional, если результат может быть null то следует и передавать optional
     
  14. hyndorik

    hyndorik Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Боже ору с тебя)
     
  15. aceJKE

    aceJKE Старожил Пользователь

    Баллы:
    123
    А внимателен ли ты при прочтении сообщений? Или может не знаешь, что файнд эни гет эксепшен кидает?
    Код:
        @Test(expected = NoSuchElementException.class)
        public void testFindAnyNoSuch() {
            Stream.of().findAny().get();
        }
    
        @Test
        public void testFindAnyOrElse() {
            String def = "default";
            assertEquals(def, Stream.of().findAny().orElse(def));
        }
     
  16. hyndorik

    hyndorik Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    При чем тут это? Где я писал что надо юзать гет?
     
  17. aceJKE

    aceJKE Старожил Пользователь

    Баллы:
    123
    Хоть исходный код то видел, который обсуждаем?
    У меня явно оговорено условие использования, дан конкретный кейс, а ты лечишь меня непониманием Optional.
     
  18. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Этот мини-срачик завершится феерической кульминацией, если наш уважаемый оппонент наконец-то скажет,
    что вместо area != null следует писать optional.isPresent().
     
  19. hyndorik

    hyndorik Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Так и следует
     
  20. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Благодарю.

    Хорошо, хоть не 42.
     

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