Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Dismiss Notice

Помогите Как взять список int из конфига

Discussion in 'Разработка плагинов для новичков' started by Rbiter, Feb 18, 2016.

  1. Автор темы
    Rbiter

    Rbiter Участник Пользователь

    Trophy Points:
    31
    Имя в Minecraft:
    Rbiter
    Как в BlockPlaceEvent запретить ставить определенный блок?

    Code:
    @EventHandler
        public void PlaceDiss(BlockPlaceEvent e) {
            int i;
            for (i = 0; i < nexgame.BlockDissItem.size(); ++i) {
                int block;
                block = (int) nexgame.DissCmdList.get(i);
                if (e.getBlock().getTypeId() == block){
                    e.setCancelled(true);
                    e.getPlayer().sendMessage("dfsdf");
                }
            }
    
        }
    то же, куча ошибок[DOUBLEPOST=1455827129,1455824709][/DOUBLEPOST]И на последок. То что в конфиге список создается:
    Code:
    BlockLocker:
      Enable: true
      Message: '&cВзаимодействие с данным предметом запрещено!'
      ID:
      - - 7
        - 8
        - 9
        - 10
    - - это норма? После перезагрузки значение возвращяется[DOUBLEPOST=1455827417][/DOUBLEPOST]
    Code:
        @EventHandler
        public void PlaceDiss(BlockPlaceEvent e) {
            Player p = e.getPlayer();
            if(e.getBlock().getTypeId() == 7){
                e.setCancelled(true);
            }
    
        }
    Если беру отдельный ID блока то все работает О_о
    Как взять список int?
     
    Last edited: Feb 19, 2016
  2. Хостинг MineCraft
    <
  3. Ission

    Ission Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    lokivava
    В данном переборе нужно писать не ++i, а i++. Разница в том, что он сначала проверяет условие, а потом прибавляет в вашем случае, что может грозить выходом за границы.
    for (i = 0; i < nexgame.BlockDissItem.size(); ++i) <--- здесь вы берёте размер BlockDissItem
    block = (int) nexgame.DissCmdList.get(i); <--- а здесь обрабатываете DissCmdList
    Если я всё правильно понимаю, то вы бежите не по тому списку.
    Что вы делаете в первом сообщении я понимаю со скрипом в голове, второй вариант немного правильнее.
    В файл настроек вы скорее всего помещаете список списков (List<List<Object>>), а должны просто List<Object>.
     
  4. serega6531

    serega6531 Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    shkurovs
    Code:
    if(getConfig().getIntegerList("disabled-blocks").contains(e.getBlock().getTypeId())){
                e.setCancelled(true);
                //...
    }
     
  5. Автор темы
    Rbiter

    Rbiter Участник Пользователь

    Trophy Points:
    31
    Имя в Minecraft:
    Rbiter
    Лол, я и не такой бред писал, в попытках заставить это заработать)
    Кстати есть такой грешок =(
    Зава исправлю[DOUBLEPOST=1455833234,1455833196][/DOUBLEPOST]
    твоюж... Это гениально О.О[DOUBLEPOST=1455833453][/DOUBLEPOST]
    Это так серьезно?
     
  6. Code

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

    Trophy Points:
    123
    Имя в Minecraft:
    _Gizmo
    ват? абсолютно одно***ственно. ++i и i++ различаются только возвращаемыми значениями, а в этой конструкции они выкидываются. вот в ++i < K и i++ < K с какой стороны плюсы уже играет роль.[DOUBLEPOST=1455839163,1455838942][/DOUBLEPOST]
    нет, он просто что-то напутал.
     
  7. Автор темы
    Rbiter

    Rbiter Участник Пользователь

    Trophy Points:
    31
    Имя в Minecraft:
    Rbiter
    Code:
    [11:43:15 ERROR]: Could not pass event BlockPlaceEvent to NexGameLib v0.3
    org.bukkit.event.EventException
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot.jar:git-Spigot-db6de12-18fbb24]
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot.jar:git-Spigot-db6de12-18fbb24]
            at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callBlockPlaceEvent(CraftEventFactory.java:127) [spigot.jar:git-Spigot-db6de12-18fbb24]
            at net.minecraft.server.v1_8_R3.ItemStack.placeItem(ItemStack.java:158) [spigot.jar:git-Spigot-db6de12-18fbb24]
            at net.minecraft.server.v1_8_R3.PlayerInteractManager.interact(PlayerInteractManager.java:503) [spigot.jar:git-Spigot-db6de12-18fbb24]
            at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:759) [spigot.jar:git-Spigot-db6de12-18fbb24]
            at net.minecraft.server.v1_8_R3.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:52) [spigot.jar:git-Spigot-db6de12-18fbb24]
            at net.minecraft.server.v1_8_R3.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:1) [spigot.jar:git-Spigot-db6de12-18fbb24]
            at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [spigot.jar:git-Spigot-db6de12-18fbb24]
            at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_71]
            at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_71]
            at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [spigot.jar:git-Spigot-db6de12-18fbb24]
            at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [spigot.jar:git-Spigot-db6de12-18fbb24]
            at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot.jar:git-Spigot-db6de12-18fbb24]
            at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot.jar:git-Spigot-db6de12-18fbb24]
            at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot.jar:git-Spigot-db6de12-18fbb24]
            at java.lang.Thread.run(Unknown Source) [?:1.8.0_71]
    Caused by: java.lang.NullPointerException
            at ru.BlockDissable.PlaceDiss(BlockDissable.java:24) ~[?:?]
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_71]
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_71]
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_71]
            at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_71]
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
            ... 18 more
    >
    [DOUBLEPOST=1455872640,1455871449][/DOUBLEPOST]
    Code:
      List:
      - - 7
        - 8
        - 9
        - 10
    Исправить не получается...


    public static int[] BlockDissID = new int[] {7,8,9,10};
    public static List BlockDissItem = new ArrayList();

    nexgame.BlockDissItem = Arrays.asList(nexgame.BlockDissID);

    nexgame.config.set("BlockLocker.List", nexgame.BlockDissItem);
     

Share This Page