PrettyPipes/src/main/java/de/ellpeck/prettypipes/network/NetworkEdge.java

55 lines
1.8 KiB
Java
Raw Normal View History

2020-04-14 14:10:58 +02:00
package de.ellpeck.prettypipes.network;
2020-04-14 15:02:21 +02:00
import de.ellpeck.prettypipes.Utility;
import de.ellpeck.prettypipes.blocks.pipe.PipeTileEntity;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.nbt.ListNBT;
import net.minecraft.nbt.NBTUtil;
2020-04-14 14:10:58 +02:00
import net.minecraft.tileentity.TileEntity;
2020-04-14 15:02:21 +02:00
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.common.util.Constants;
import net.minecraftforge.common.util.INBTSerializable;
2020-04-14 14:10:58 +02:00
import org.jgrapht.graph.DefaultWeightedEdge;
import java.util.ArrayList;
2020-04-14 15:02:21 +02:00
import java.util.HashMap;
2020-04-14 14:10:58 +02:00
import java.util.List;
2020-04-14 15:02:21 +02:00
import java.util.Map;
2020-04-14 14:10:58 +02:00
2020-04-14 15:02:21 +02:00
public class NetworkEdge extends DefaultWeightedEdge implements INBTSerializable<CompoundNBT> {
2020-04-14 14:10:58 +02:00
2020-04-14 15:02:21 +02:00
public BlockPos startPipe;
public BlockPos endPipe;
public final List<BlockPos> pipes = new ArrayList<>();
2020-04-14 18:51:43 +02:00
public NetworkEdge() {
2020-04-14 15:02:21 +02:00
}
2020-04-14 18:51:43 +02:00
public NetworkEdge(CompoundNBT nbt) {
2020-04-14 17:14:24 +02:00
this.deserializeNBT(nbt);
}
2020-04-14 15:02:21 +02:00
@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)));
}
2020-04-14 14:10:58 +02:00
}