package de.ellpeck.prettypipes.network; import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.ListNBT; import net.minecraft.nbt.NBTUtil; import net.minecraft.util.math.BlockPos; import net.minecraftforge.common.util.Constants; import net.minecraftforge.common.util.INBTSerializable; import org.jgrapht.graph.DefaultWeightedEdge; import java.util.ArrayList; import java.util.List; public class NetworkEdge extends DefaultWeightedEdge implements INBTSerializable { public BlockPos startPipe; public BlockPos endPipe; public final List pipes = new ArrayList<>(); public NetworkEdge() { } public NetworkEdge(CompoundNBT nbt) { this.deserializeNBT(nbt); } @Override public CompoundNBT serializeNBT() { CompoundNBT nbt = new CompoundNBT(); nbt.put("start", NBTUtil.writeBlockPos(this.startPipe)); nbt.put("end", NBTUtil.writeBlockPos(this.endPipe)); ListNBT list = new ListNBT(); for (BlockPos pos : this.pipes) list.add(NBTUtil.writeBlockPos(pos)); nbt.put("pipes", list); return nbt; } @Override public void deserializeNBT(CompoundNBT nbt) { this.startPipe = NBTUtil.readBlockPos(nbt.getCompound("start")); this.endPipe = NBTUtil.readBlockPos(nbt.getCompound("end")); this.pipes.clear(); ListNBT list = nbt.getList("pipes", Constants.NBT.TAG_COMPOUND); for (int i = 0; i < list.size(); i++) this.pipes.add(NBTUtil.readBlockPos(list.getCompound(i))); } }