- Баллы
- 96
Действительно что-то протупил, но так или иначе потом нужно будет расширятся.Тебе никто не мешает сделать главный класс плагина implements Listener
и делать Bukkit.getPluginManager().registerEvents(this, this);
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Действительно что-то протупил, но так или иначе потом нужно будет расширятся.Тебе никто не мешает сделать главный класс плагина implements Listener
и делать Bukkit.getPluginManager().registerEvents(this, this);
Все это элементарно гуглится. Никто не будет специально для тебя писать целый туториалВ будущем нужно будет запилить пару команд. Наверняка я потом и сам во всём разберусь, не не мог бы мне кто-то показать пару примеров, чтобы в памяти отложилось? С таб комплитером, алиасами, приоритетом над командами других плагинов, пермами, только из консоли и всё такое.
Это и так понятно. Всё гуглится)Все это элементарно гуглится
Ответ: в plugin.ymlтаб комплитером, алиасами
О: EventPriorityприоритетом
list.removeIf(player -> player.getWorld().getName().equals("world"))Допустим у меня есть лист игроков и мне нужно удалить из этого списка игроков, которые попадают под определённые условия, а точнее игроки, которые находятся в определённом мире.
Каким способом лучше это сделать? У меня ещё нет опыта с листами.
Спасибо.list.removeIf(player -> player.getWorld().getName().equals("world"))
list.stream().map(Bukkit::getWorld).collect(Collectors.toList());Как преобразовать лист строк (список миров из конфига) в лист миров?
Через for получается, но хотелось бы уметь в Stream API
Пытался примерно так, но в обоих случая получил стак оверфлоу эррор, по этому сюда и обратился.list.stream().map(Bukkit::getWorld).collect(Collectors.toList());
Вроде так
public static boolean checkDXLWorld(Player player) {
return (settingsManager.getProperty(HooksSettings.DUNGEONSXL) && player.getWorld().toString().contains("DXL_"));
}
[18:50:48 ERROR]: Could not pass event EntityDamageByEntityEvent to Guilds v3.5.3.9.3-RELEASE
java.lang.NullPointerException: null
at me.glaremasters.guilds.utils.PlayerCheckUtils.checkValidWorld(PlayerCheckUtils.java:28) ~[?:?]
at me.glaremasters.guilds.listeners.EntityListener.onDamage(EntityListener.java:178) ~[?:?]
at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor680.execute(Unknown Source) ~[?:?]
at org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:69) ~[patched_1.13.2.jar:git-Paper-653]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[patched_1.13.2.jar:git-Paper-653]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:66) ~[patched_1.13.2.jar:git-Paper-653]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:520) ~[patched_1.13.2.jar:git-Paper-653]
at org.bukkit.craftbukkit.v1_13_R2.event.CraftEventFactory.callEvent(CraftEventFactory.java:104) ~[patched_1.13.2.jar:git-Paper-653]
at org.bukkit.craftbukkit.v1_13_R2.event.CraftEventFactory.callEntityDamageEvent(CraftEventFactory.java:834) ~[patched_1.13.2.jar:git-Paper-653]
at org.bukkit.craftbukkit.v1_13_R2.event.CraftEventFactory.handleEntityDamageEvent(CraftEventFactory.java:733) ~[patched_1.13.2.jar:git-Paper-653]
at org.bukkit.craftbukkit.v1_13_R2.event.CraftEventFactory.handleLivingEntityDamageEvent(CraftEventFactory.java:866) ~[patched_1.13.2.jar:git-Paper-653]
at net.minecraft.server.v1_13_R2.EntityLiving.damageEntity0(EntityLiving.java:1520) ~[patched_1.13.2.jar:git-Paper-653]
at net.minecraft.server.v1_13_R2.EntityHuman.damageEntity0(EntityHuman.java:904) ~[patched_1.13.2.jar:git-Paper-653]
at net.minecraft.server.v1_13_R2.EntityLiving.damageEntity(EntityLiving.java:993) ~[patched_1.13.2.jar:git-Paper-653]
at net.minecraft.server.v1_13_R2.EntityHuman.damageEntity(EntityHuman.java:817) ~[patched_1.13.2.jar:git-Paper-653]
at net.minecraft.server.v1_13_R2.EntityPlayer.damageEntity(EntityPlayer.java:704) ~[patched_1.13.2.jar:git-Paper-653]
at net.minecraft.server.v1_13_R2.EntityArrow.b(EntityArrow.java:341) ~[patched_1.13.2.jar:git-Paper-653]
at net.minecraft.server.v1_13_R2.EntityArrow.a(EntityArrow.java:284) ~[patched_1.13.2.jar:git-Paper-653]
at net.minecraft.server.v1_13_R2.EntityArrow.tick(EntityArrow.java:209) ~[patched_1.13.2.jar:git-Paper-653]
at net.minecraft.server.v1_13_R2.EntityTippedArrow.tick(EntityTippedArrow.java:85) ~[patched_1.13.2.jar:git-Paper-653]
at net.minecraft.server.v1_13_R2.World.entityJoinedWorld(World.java:1561) ~[patched_1.13.2.jar:git-Paper-653]
at net.minecraft.server.v1_13_R2.World.g(World.java:1528) ~[patched_1.13.2.jar:git-Paper-653]
at net.minecraft.server.v1_13_R2.World.tickEntities(World.java:1339) ~[patched_1.13.2.jar:git-Paper-653]
at net.minecraft.server.v1_13_R2.WorldServer.tickEntities(WorldServer.java:599) ~[patched_1.13.2.jar:git-Paper-653]
at net.minecraft.server.v1_13_R2.MinecraftServer.b(MinecraftServer.java:1107) ~[patched_1.13.2.jar:git-Paper-653]
at net.minecraft.server.v1_13_R2.DedicatedServer.b(DedicatedServer.java:439) ~[patched_1.13.2.jar:git-Paper-653]
at net.minecraft.server.v1_13_R2.MinecraftServer.a(MinecraftServer.java:940) ~[patched_1.13.2.jar:git-Paper-653]
at net.minecraft.server.v1_13_R2.MinecraftServer.run(MinecraftServer.java:837) ~[patched_1.13.2.jar:git-Paper-653]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_201]
Так у тебя ошибка же в PlayerCheckUtils#checkValidWorldЕсли настройка включена в конфиге и игрок находится в мире, название которого включает в себя "DXL_", должно возвращать true, но по факту NPE. Хелп.Код:public static boolean checkDXLWorld(Player player) { return (settingsManager.getProperty(HooksSettings.DUNGEONSXL) && player.getWorld().toString().contains("DXL_")); }
Коммит с моим говнокодом: https://github.com/HauserGrim/Guilds/commit/b0ac0cc64bae1f96161e1c85d96351b53597270fКод:[18:50:48 ERROR]: Could not pass event EntityDamageByEntityEvent to Guilds v3.5.3.9.3-RELEASE java.lang.NullPointerException: null at me.glaremasters.guilds.utils.PlayerCheckUtils.checkValidWorld(PlayerCheckUtils.java:28) ~[?:?] at me.glaremasters.guilds.listeners.EntityListener.onDamage(EntityListener.java:178) ~[?:?] at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor680.execute(Unknown Source) ~[?:?] at org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:69) ~[patched_1.13.2.jar:git-Paper-653] at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[patched_1.13.2.jar:git-Paper-653] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:66) ~[patched_1.13.2.jar:git-Paper-653] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:520) ~[patched_1.13.2.jar:git-Paper-653] at org.bukkit.craftbukkit.v1_13_R2.event.CraftEventFactory.callEvent(CraftEventFactory.java:104) ~[patched_1.13.2.jar:git-Paper-653] at org.bukkit.craftbukkit.v1_13_R2.event.CraftEventFactory.callEntityDamageEvent(CraftEventFactory.java:834) ~[patched_1.13.2.jar:git-Paper-653] at org.bukkit.craftbukkit.v1_13_R2.event.CraftEventFactory.handleEntityDamageEvent(CraftEventFactory.java:733) ~[patched_1.13.2.jar:git-Paper-653] at org.bukkit.craftbukkit.v1_13_R2.event.CraftEventFactory.handleLivingEntityDamageEvent(CraftEventFactory.java:866) ~[patched_1.13.2.jar:git-Paper-653] at net.minecraft.server.v1_13_R2.EntityLiving.damageEntity0(EntityLiving.java:1520) ~[patched_1.13.2.jar:git-Paper-653] at net.minecraft.server.v1_13_R2.EntityHuman.damageEntity0(EntityHuman.java:904) ~[patched_1.13.2.jar:git-Paper-653] at net.minecraft.server.v1_13_R2.EntityLiving.damageEntity(EntityLiving.java:993) ~[patched_1.13.2.jar:git-Paper-653] at net.minecraft.server.v1_13_R2.EntityHuman.damageEntity(EntityHuman.java:817) ~[patched_1.13.2.jar:git-Paper-653] at net.minecraft.server.v1_13_R2.EntityPlayer.damageEntity(EntityPlayer.java:704) ~[patched_1.13.2.jar:git-Paper-653] at net.minecraft.server.v1_13_R2.EntityArrow.b(EntityArrow.java:341) ~[patched_1.13.2.jar:git-Paper-653] at net.minecraft.server.v1_13_R2.EntityArrow.a(EntityArrow.java:284) ~[patched_1.13.2.jar:git-Paper-653] at net.minecraft.server.v1_13_R2.EntityArrow.tick(EntityArrow.java:209) ~[patched_1.13.2.jar:git-Paper-653] at net.minecraft.server.v1_13_R2.EntityTippedArrow.tick(EntityTippedArrow.java:85) ~[patched_1.13.2.jar:git-Paper-653] at net.minecraft.server.v1_13_R2.World.entityJoinedWorld(World.java:1561) ~[patched_1.13.2.jar:git-Paper-653] at net.minecraft.server.v1_13_R2.World.g(World.java:1528) ~[patched_1.13.2.jar:git-Paper-653] at net.minecraft.server.v1_13_R2.World.tickEntities(World.java:1339) ~[patched_1.13.2.jar:git-Paper-653] at net.minecraft.server.v1_13_R2.WorldServer.tickEntities(WorldServer.java:599) ~[patched_1.13.2.jar:git-Paper-653] at net.minecraft.server.v1_13_R2.MinecraftServer.b(MinecraftServer.java:1107) ~[patched_1.13.2.jar:git-Paper-653] at net.minecraft.server.v1_13_R2.DedicatedServer.b(DedicatedServer.java:439) ~[patched_1.13.2.jar:git-Paper-653] at net.minecraft.server.v1_13_R2.MinecraftServer.a(MinecraftServer.java:940) ~[patched_1.13.2.jar:git-Paper-653] at net.minecraft.server.v1_13_R2.MinecraftServer.run(MinecraftServer.java:837) ~[patched_1.13.2.jar:git-Paper-653] at java.lang.Thread.run(Unknown Source) [?:1.8.0_201]
В обоих местах вызывается аналогичная ошибка, просто ошибку отправил когда проверял второй кусок.checkValidWorld
Ну значит у тебя либо player == null, либо settingsManager == nullВ обоих местах вызывается аналогичная ошибка, просто ошибку отправил когда проверял второй кусок.
https://github.com/HauserGrim/Guild...#diff-c52f27ad1c1fea84239de7eac4245140R17-R30
Думаю так и есть. Ладно, вечером попробую посмотреть что у меня там.Ну значит у тебя либо player == null, либо settingsManager == null
Если этот метод перенести в класс EntityListener (в котором должен вызываться метод), то всё ок. Единственное отличие, что он листенер.settingsManager == null
PlayerRespawnEvent - восстанавливаешь предметыКак лучше сохранять определённые предметы / слоты при смерти? (какие могут понадобится ивенты, методы, вся фигня)
Так, чтобы предмет не пропал, если игрок во время смерти перезайдёт или сервер перезапустится.
Или есть ли готовые плагины или код, в которые можно подсмотреть?
Знаю, что в новых версиях появился setKeepInventory, но, на сколько я понял, он работает на весь инвентарь.
Собираюсь использовать апи версии 1.13.2, позже переходить на 1.15.2 и опираться лучше на него (мало-ли)