1 package com.irtimaled.bbor.common.messages;
3 import com.irtimaled.bbor.common.models.BoundingBox;
4 import com.irtimaled.bbor.common.models.BoundingBoxMobSpawner;
5 import com.irtimaled.bbor.common.models.BoundingBoxStructure;
6 import com.irtimaled.bbor.common.models.BoundingBoxVillage;
7 import net.minecraft.network.PacketBuffer;
8 import net.minecraft.util.math.BlockPos;
12 class BoundingBoxSerializer {
13 static void serialize(BoundingBox boundingBox, PacketBuffer buf) {
14 if (boundingBox instanceof BoundingBoxVillage) {
15 serializeVillage((BoundingBoxVillage) boundingBox, buf);
17 if (boundingBox instanceof BoundingBoxStructure) {
18 serializeStructure((BoundingBoxStructure) boundingBox, buf);
20 if (boundingBox instanceof BoundingBoxMobSpawner) {
21 serializeMobSpawner((BoundingBoxMobSpawner) boundingBox, buf);
25 private static void serializeVillage(BoundingBoxVillage boundingBox, PacketBuffer buf) {
27 serializeBlockPos(boundingBox.getCenter(), buf);
28 buf.writeVarInt(boundingBox.getRadius());
29 buf.writeBoolean(boundingBox.getSpawnsIronGolems());
30 serializeColor(boundingBox.getColor(), buf);
31 for (BlockPos door : boundingBox.getDoors()) {
32 serializeBlockPos(door, buf);
36 private static void serializeStructure(BoundingBoxStructure boundingBox, PacketBuffer buf) {
38 buf.writeInt(boundingBox.getTypeName().hashCode());
39 serializeCuboid(boundingBox, buf);
42 private static void serializeMobSpawner(BoundingBoxMobSpawner boundingBox, PacketBuffer buf) {
44 serializeBlockPos(boundingBox.getCenter(), buf);
47 private static void serializeColor(Color color, PacketBuffer buf) {
48 buf.writeVarInt(color.getRGB());
51 private static void serializeCuboid(BoundingBox boundingBox, PacketBuffer buf) {
52 serializeBlockPos(boundingBox.getMinBlockPos(), buf);
53 serializeBlockPos(boundingBox.getMaxBlockPos(), buf);
56 private static void serializeBlockPos(BlockPos blockPos, PacketBuffer buf) {
57 buf.writeVarInt(blockPos.getX());
58 buf.writeVarInt(blockPos.getY());
59 buf.writeVarInt(blockPos.getZ());