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

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

Discussion in 'Разработка плагинов для новичков' started by JolyHoska, Jun 26, 2017.

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

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

    Trophy Points:
    61
    Имя в Minecraft:
    JolyHohol
    Добрый вечер, или день, у меня день, добрый день. Столкнулся с проблемой, что мне надо развернуть постройку из schematic таким образом чтобы она строила перед лицевой стороной сундука, который я ставлю, и бл
    Code:
    
    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
    <

Share This Page