]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/common/messages/BoundingBoxSerializer.java
Restructure BoundingBox color and rendering logic
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / common / messages / BoundingBoxSerializer.java
1 package com.irtimaled.bbor.common.messages;
2
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;
9
10 import java.awt.*;
11
12 class BoundingBoxSerializer {
13     static void serialize(BoundingBox boundingBox, PacketBuffer buf) {
14         if (boundingBox instanceof BoundingBoxVillage) {
15             serializeVillage((BoundingBoxVillage) boundingBox, buf);
16         }
17         if (boundingBox instanceof BoundingBoxStructure) {
18             serializeStructure((BoundingBoxStructure) boundingBox, buf);
19         }
20         if (boundingBox instanceof BoundingBoxMobSpawner) {
21             serializeMobSpawner((BoundingBoxMobSpawner) boundingBox, buf);
22         }
23     }
24
25     private static void serializeVillage(BoundingBoxVillage boundingBox, PacketBuffer buf) {
26         buf.writeChar('V');
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);
33         }
34     }
35
36     private static void serializeStructure(BoundingBoxStructure boundingBox, PacketBuffer buf) {
37         buf.writeChar('S');
38         buf.writeInt(boundingBox.getTypeName().hashCode());
39         serializeCuboid(boundingBox, buf);
40     }
41
42     private static void serializeMobSpawner(BoundingBoxMobSpawner boundingBox, PacketBuffer buf) {
43         buf.writeChar('M');
44         serializeBlockPos(boundingBox.getCenter(), buf);
45     }
46
47     private static void serializeColor(Color color, PacketBuffer buf) {
48         buf.writeVarInt(color.getRGB());
49     }
50
51     private static void serializeCuboid(BoundingBox boundingBox, PacketBuffer buf) {
52         serializeBlockPos(boundingBox.getMinBlockPos(), buf);
53         serializeBlockPos(boundingBox.getMaxBlockPos(), buf);
54     }
55
56     private static void serializeBlockPos(BlockPos blockPos, PacketBuffer buf) {
57         buf.writeVarInt(blockPos.getX());
58         buf.writeVarInt(blockPos.getY());
59         buf.writeVarInt(blockPos.getZ());
60     }
61 }