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

Помогите Как развернуть постройку из schematic

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

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

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

    Баллы:
    61
    Имя в Minecraft:
    JolyHohol
    Добрый вечер, или день, у меня день, добрый день. Столкнулся с проблемой, что мне надо развернуть постройку из schematic таким образом чтобы она строила перед лицевой стороной сундука, который я ставлю, и бл
    Код:
    
    import java.io.File;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.bukkit.Bukkit;
    import org.bukkit.Effect;
    import org.bukkit.Location;
    import org.bukkit.block.BlockFace;
    import org.bukkit.material.Chest;
    import com.sk89q.worldedit.CuboidClipboard;
    import com.sk89q.worldedit.Vector;
    import com.sk89q.worldedit.blocks.BaseBlock;
    import com.sk89q.worldedit.data.DataException;
    import com.sk89q.worldedit.schematic.SchematicFormat;
    
    @SuppressWarnings("deprecation")
    public class Build{
        public static List<Thread> th = new ArrayList<>();
        public static void build(Location loc, Chest ch, String fileName) {
            File file = new File("plugins/WorldEdit/schematics/" + fileName + ".schematic");
            SchematicFormat format = SchematicFormat.getFormat(file);
           
            try {
                CuboidClipboard cc = format.load(file);
                int rotate = (getD(ch.getFacing()) - getD(cc.getOffset())) *90;
                if(rotate < 0) {
                    rotate += 360;
                    cc.rotate2D(rotate);
                    Bukkit.broadcastMessage(rotate+"");
                }
               
                Location lo = loc.clone().add(
                        cc.getOffset().getBlockX(),
                        cc.getOffset().getBlockX(),
                        cc.getOffset().getBlockZ());
                Thread t = new Thread() {
                    public void run() {
                        for (int y = 0, ly = cc.getHeight(); y < ly; y++) {
                            for (int  x = 0, lx = cc.getWidth(); x < lx; x++) {
                                for (int z = 0, lz = cc.getLength(); z < lz; z++) {
                                    BaseBlock b = cc.getBlock(new Vector(x,y,z));
                                    Location l = lo.clone().add(x,y,z);
                                    l.getBlock().setTypeIdAndData(b.getType(), (byte)b.getData(), false);   
                                   
                                    if(b.getType() != 0) {
                                        lo.getWorld().playEffect(l, Effect.STEP_SOUND, 1);   
                                        try { Thread.sleep(100); }
                                        catch (InterruptedException e) { e.printStackTrace(); }
                                    }
                                }
                            }
                        }
                    }
                };
                t.start();
                th.add(t);
                } catch (DataException | IOException e) {
                    e.printStackTrace();
                }
            }
    
        public static int getD(BlockFace f) {
            if(f == BlockFace.EAST) return 1;
            if(f == BlockFace.SOUTH) return 2;
            if(f == BlockFace.WEST) return 3;
            if(f == BlockFace.NORTH) return 4;
            return 0;
        }
        private static int getD(Vector v) {
            if(v.getBlockX() == -2) return 1;
            if(v.getBlockX() == -2) return 2;
            if(v.getBlockX() == 2) return 3;
            if(v.getBlockX() == 2) return 4;
            return 0;
        }
    }
    агодаря которому дом строить. Вот мой говно-код:
     
  2. Хостинг MineCraft
    <

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