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;
6 import net.minecraft.world.dimension.DimensionType;
8 import java.util.HashSet;
11 public class AddBoundingBox {
12 public static final String NAME = "bbor:add_bounding_box_v2";
13 public static final String LEGACY = "bbor:add_bounding_box";
15 public static PayloadBuilder getPayload(DimensionId dimensionId, AbstractBoundingBox key, Set<AbstractBoundingBox> boundingBoxes) {
16 if (!BoundingBoxSerializer.canSerialize(key)) return null;
18 PayloadBuilder builder = PayloadBuilder.clientBound(NAME)
19 .writeDimensionId(dimensionId);
20 BoundingBoxSerializer.serialize(key, builder);
21 if (boundingBoxes != null && boundingBoxes.size() > 1) {
22 for (AbstractBoundingBox boundingBox : boundingBoxes) {
23 BoundingBoxSerializer.serialize(boundingBox, builder);
29 public static AddBoundingBoxReceived getEvent(PayloadReader reader, String name) {
30 DimensionId dimensionId = getDimensionId(reader, name);
31 AbstractBoundingBox key = BoundingBoxDeserializer.deserialize(reader);
32 if (key == null) return null;
34 Set<AbstractBoundingBox> boundingBoxes = new HashSet<>();
35 while (reader.isReadable()) {
36 AbstractBoundingBox boundingBox = BoundingBoxDeserializer.deserialize(reader);
37 boundingBoxes.add(boundingBox);
39 if (boundingBoxes.size() == 0)
40 boundingBoxes.add(key);
41 return new AddBoundingBoxReceived(dimensionId, key, boundingBoxes);
44 private static DimensionId getDimensionId(PayloadReader reader, String name) {
45 if (name.equals(NAME)) return reader.readDimensionId();
47 int dimensionRawId = reader.readVarInt();
48 DimensionType dimensionType = DimensionType.getById(dimensionRawId);
49 return DimensionId.from(dimensionType);