package com.bioxx.jmapgen.attributes; import java.util.UUID; import java.util.Vector; import net.minecraft.nbt.NBTTagCompound; import com.bioxx.jmapgen.Point; import com.bioxx.jmapgen.graph.Center; public class RiverAttribute extends Attribute { public Vector<Center> upriver; Center downriver; double river; Point riverMid; boolean deadRiver; public RiverAttribute() { super(); } public RiverAttribute(UUID i) { super(i); } public void setDead(boolean b) { this.deadRiver = b; } public boolean getDead() { return deadRiver; } public void addRiver(double d) { river = Math.min(river + d, 4.0); } public void setRiver(double d) { river = Math.min(d, 4.0); } public void setRiverMidpoint(Point p) { riverMid = p; } public Point getRiverMidpoint() { return riverMid; } public double getRiver() { return river; } public Center getDownRiver() { return downriver; } public void setDownRiver(Center d) { downriver = d; } public void addUpRiverCenter(Center c) { if(upriver == null) upriver = new Vector<Center>(); if(!upriver.contains(c)) upriver.add(c); } @Override public void writeToNBT(NBTTagCompound nbt) { nbt.setString("uuid", id.toString()); nbt.setDouble("river", river); if(downriver != null) nbt.setInteger("downriver", downriver.index); if(upriver != null && upriver.size() > 0) { int[] nArray = new int[upriver.size()]; for(int i = 0; i < nArray.length; i++) { nArray[i] = upriver.get(i).index; } nbt.setIntArray("upriver", nArray); } nbt.setDouble("midX", riverMid.x); nbt.setDouble("midY", riverMid.y); nbt.setBoolean("isDead", deadRiver); } @Override public void readFromNBT(NBTTagCompound nbt, com.bioxx.jmapgen.IslandMap m) { this.id = UUID.fromString(nbt.getString("uuid")); river = nbt.getDouble("river"); if(nbt.hasKey("downriver")) downriver = m.centers.get(nbt.getInteger("downriver")); if(nbt.hasKey("upriver")) { int[] nArray = nbt.getIntArray("upriver"); upriver = new Vector<Center>(); for(int i = 0; i < nArray.length; i++) { this.upriver.add(m.centers.get(nArray[i])); } } this.riverMid = new Point(nbt.getInteger("midX"), nbt.getInteger("midY")); this.deadRiver = nbt.getBoolean("isDead"); } }