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

Помогите Как запихнуть в блок блокдату?

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

Статус темы:
Закрыта.
  1. Автор темы
    XjCyan1de

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

    Баллы:
    76
    Имя в Minecraft:
    XjCyan1de
    Мне нужно запихнуть в структурный блок на определённых координаторах эти параметры:

    {metadata:"",mirror:"NONE",ignoreEntities:1b,powered:1b,seed:0L,author:"XjCyan1de",rotation:"NONE",posX:-15,mode:"LOAD",posY:0,sizeX:31,posZ:0,integrity:1.0f,showair:0b,x:71,name:"GreenPegasus",y:80,z:66,id:"minecraft:structure_block",sizeY:17,sizeZ:23,showboundingbox:1b}

    Как это сделать? :D
     
  2. Хостинг MineCraft
    <
  3. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Около никак (хотя возможно у меня устаревшие сурсы и уже сделали нормальной загрузку в эти блоки). В принципе у TileEntityStructure есть метод void a(NBTTagCompound nbttagcompound), с помощью которого можно загрузить в тайл нужную инфу.
     
  4. Автор темы
    XjCyan1de

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

    Баллы:
    76
    Имя в Minecraft:
    XjCyan1de
    TileEntityStructure у меня вообще нету
    [​IMG]
     
  5. Mr_RoboMan

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

    Баллы:
    123
    А ты NMS подключи, и все волшебным образом появится..
     
  6. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Перед этим стоило бы тебе глянуть в сурсы nms.
     
  7. Автор темы
    XjCyan1de

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

    Баллы:
    76
    Имя в Minecraft:
    XjCyan1de
    Что за зверь такой NMS? Гуглил ничего не нашёл, тыкните мне пальцем где это[DOUBLEPOST=1484885552,1484884631][/DOUBLEPOST]А всё понял, надо было в библиотеки кроме API еще и само ядро запихнуть[DOUBLEPOST=1484888202][/DOUBLEPOST]Частично проблема решена, но данные в блоке обновляются только после того если его обновить вручную, что делать? вот код:
    Код:
                    Block block = world.getBlockAt(71, 80, 66);
                    block.setType(Material.STRUCTURE_BLOCK);
                    TileEntityStructure structure = (TileEntityStructure) ((CraftWorld) block.getWorld()).getHandle().getTileEntity(new BlockPosition(
                            block.getLocation().getX(),
                            block.getLocation().getY(),
                            block.getLocation().getZ()));
                    NBTTagCompound sNBT = new NBTTagCompound();
                    sNBT.setString("mode", "LOAD");
                    sNBT.setString("name", "GreenPegasus");
                    sNBT.setInt("sizeX", 31);
                    sNBT.setInt("sizeY", 17);
                    sNBT.setInt("sizeZ", 23);
                    sNBT.setInt("posX", -15);
                    sNBT.setInt("posY", 0);
                    sNBT.setInt("posZ", 0);
                    sNBT.setByte("powered", (byte) 1);
                    structure.a(sNBT);
    
     
  8. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    А ты думал что это будет работать нормально? хаха.
     
  9. Автор темы
    XjCyan1de

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

    Баллы:
    76
    Имя в Minecraft:
    XjCyan1de
    Я спопросил как это сделать нормально, а костыли и я умею делать[DOUBLEPOST=1484978239,1484976181][/DOUBLEPOST]Всё разобрался, взял код из этого плагина: https://www.spigotmc.org/resources/worldedit-cui.25524/
    Нужно было заполнять все поля а не только что мне надо и тогда всё заработает. Вот код:
    Код:
    
    
                for (Player p : Bukkit.getOnlinePlayers()) {
                    tmapi.sendTitles(p, "§aЗелёная команда", "§aпобедила!");
                    p.setGameMode(GameMode.SPECTATOR);
                    Block block = world.getBlockAt(71, 80, 66);
                    block.setType(Material.STRUCTURE_BLOCK, false);
                    BlockPosition pos = new BlockPosition(block.getX(), block.getY(), block.getZ());
                    TileEntityStructure structure = (TileEntityStructure)((CraftPlayer)p).getHandle().world.getTileEntity(pos);
                    structure.a(createNBTstructure("GreenPegasus", 71, 80, 66, 31, 17, 23, -15, 0, 0));
                    world.getBlockAt(71, 81, 66).setType(Material.REDSTONE_BLOCK);
                    }
                   
                /* Метод createNBTstructure */
               
            public static NBTTagCompound createNBTstructure(String name, int x1, int y1, int z1, int x2, int y2, int z2, int posx, int posy, int posz) {
            NBTTagCompound nbttagcompound = new NBTTagCompound();
            nbttagcompound.setString("id", "Structure");
            nbttagcompound.setInt("x", x1);
            nbttagcompound.setInt("y", y1);
            nbttagcompound.setInt("z", z1);
            nbttagcompound.setString("name", name);
            nbttagcompound.setString("author", "XjCyan1de");
            nbttagcompound.setString("metadata", "");
            nbttagcompound.setInt("posX", posx);
            nbttagcompound.setInt("posY", posy);
            nbttagcompound.setInt("posZ", posz);
            nbttagcompound.setInt("sizeX", x2);
            nbttagcompound.setInt("sizeY", y2);
            nbttagcompound.setInt("sizeZ", z2);
            nbttagcompound.setString("rotation", "NONE");
            nbttagcompound.setString("mirror", "NONE");
            nbttagcompound.setString("mode", "LOAD");
            nbttagcompound.setByte("ignoreEntities", (byte) 1);
            nbttagcompound.setBoolean("powered", false);
            nbttagcompound.setBoolean("showair", false);
            nbttagcompound.setBoolean("showboundingbox", true);
            nbttagcompound.setFloat("integrity", 1.0f);
            nbttagcompound.setLong("seed", 0);
            return nbttagcompound;
        }
    
    Тема закрыта
     
Статус темы:
Закрыта.

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