package com.bioxx.jmapgen.attributes; import java.util.ArrayList; import java.util.UUID; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.math.BlockPos; import net.minecraft.util.EnumFacing; import com.bioxx.jmapgen.Spline3D; public class PortalAttribute extends Attribute { public int destMapID = 0; public EnumFacing direction = EnumFacing.NORTH; ArrayList<BlockPos> path = new ArrayList<BlockPos>(); Spline3D spline = null; public PortalAttribute() { super(Attribute.Portal); } /** * @param dest This is the id of the islandmap that should connect to this map * @param dir 0 = North | 1 = South | 2 = East | 3 = West */ public PortalAttribute(int dest, EnumFacing dir) { this(); destMapID = dest; direction = dir; } public void setPath(ArrayList<BlockPos> p) { path = p; spline = new Spline3D(path); } public ArrayList<BlockPos> getPath() { return path; } /** * @return returns a spline path from the list of BlockPos in path, may return null if path is not set. */ public Spline3D getSpline() { return spline; } @Override public void writeToNBT(NBTTagCompound nbt) { nbt.setString("uuid", id.toString()); nbt.setInteger("destMapID", destMapID); nbt.setInteger("direction", direction.getHorizontalIndex()); BlockPos p; if(path.size() > 0) { int[] x = new int[path.size()]; int[] y = new int[path.size()]; int[] z = new int[path.size()]; for(int i = 0; i < path.size(); i++) { p = path.get(i); x[i] = p.getX(); y[i] = p.getY(); z[i] = p.getZ(); } nbt.setIntArray("x", x); nbt.setIntArray("y", y); nbt.setIntArray("z", z); } } @Override public void readFromNBT(NBTTagCompound nbt, com.bioxx.jmapgen.IslandMap m) { this.id = UUID.fromString(nbt.getString("uuid")); destMapID = nbt.getInteger("destMapID"); direction = EnumFacing.getHorizontal(nbt.getInteger("direction")); int[] x = nbt.getIntArray("x"); int[] y = nbt.getIntArray("y"); int[] z = nbt.getIntArray("z"); path = new ArrayList<BlockPos>(); for(int i = 0; i < x.length; i++) { path.add(new BlockPos(x[i], y[i], z[i])); } if(path.size() > 0) spline = new Spline3D(path); } }