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

JolyHoska

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
JolyNoska
Добрый вечер, или день, у меня день, добрый день. Столкнулся с проблемой, что мне надо развернуть постройку из schematic таким образом чтобы она строила перед лицевой стороной сундука, который я ставлю, и бл
Java:
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;
    }
}
агодаря которому дом строить. Вот мой говно-код:
 
Назад
Верх