1 package com.irtimaled.bbor.common.messages;
3 import com.irtimaled.bbor.client.events.AddBoundingBoxReceived;
4 import com.irtimaled.bbor.common.models.AbstractBoundingBox;
5 import com.irtimaled.bbor.common.models.DimensionId;
7 import java.util.HashSet;
10 public class AddBoundingBox {
11 public static final String NAME = "bbor:add_bounding_box_v2";
13 public static PayloadBuilder getPayload(DimensionId dimensionId, AbstractBoundingBox key, Set<AbstractBoundingBox> boundingBoxes) {
14 if (!BoundingBoxSerializer.canSerialize(key)) return null;
16 PayloadBuilder builder = PayloadBuilder.clientBound(NAME)
17 .writeDimensionId(dimensionId);
18 BoundingBoxSerializer.serialize(key, builder);
19 if (boundingBoxes != null && boundingBoxes.size() > 1) {
20 for (AbstractBoundingBox boundingBox : boundingBoxes) {
21 BoundingBoxSerializer.serialize(boundingBox, builder);
27 public static AddBoundingBoxReceived getEvent(PayloadReader reader) {
28 DimensionId dimensionId = reader.readDimensionId();
29 AbstractBoundingBox key = BoundingBoxDeserializer.deserialize(reader);
30 if (key == null) return null;
32 Set<AbstractBoundingBox> boundingBoxes = new HashSet<>();
33 while (reader.isReadable()) {
34 AbstractBoundingBox boundingBox = BoundingBoxDeserializer.deserialize(reader);
35 boundingBoxes.add(boundingBox);
37 if (boundingBoxes.size() == 0)
38 boundingBoxes.add(key);
39 return new AddBoundingBoxReceived(dimensionId, key, boundingBoxes);