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

Статус
Закрыто для дальнейших ответов.

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
 
Около никак (хотя возможно у меня устаревшие сурсы и уже сделали нормальной загрузку в эти блоки). В принципе у TileEntityStructure есть метод void a(NBTTagCompound nbttagcompound), с помощью которого можно загрузить в тайл нужную инфу.
 
TileEntityStructure у меня вообще нету
32a82e824c5d498d836732dce2f9f62f.png
 
А ты NMS подключи, и все волшебным образом появится..
Что за зверь такой NMS? Гуглил ничего не нашёл, тыкните мне пальцем где это
А всё понял, надо было в библиотеки кроме API еще и само ядро запихнуть
Частично проблема решена, но данные в блоке обновляются только после того если его обновить вручную, что делать? вот код:
Java:
                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);
 
А ты думал что это будет работать нормально? хаха.
 
А ты думал что это будет работать нормально? хаха.
Я спопросил как это сделать нормально, а костыли и я умею делать
Всё разобрался, взял код из этого плагина: https://www.spigotmc.org/resources/worldedit-cui.25524/
Нужно было заполнять все поля а не только что мне надо и тогда всё заработает. Вот код:
Java:
            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;
    }

Тема закрыта
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх