ConnectedBlockFaceTags class

Пакет: com.hypixel.hytale.protocol

Файл: com/hypixel/hytale/protocol/ConnectedBlockFaceTags.java

Поля (125)

МодификаторыТипИмя
final int NULLABLE_BIT_FIELD_SIZE
int var1
ConnectedBlockFaceTags var1
int var1
var1
var1
var1
var1
var1
int var10
int var10
int var11
long var12
long var13
int var13
long var14
int var14
long var15
int var15
long var16
int var16
long var17
int var17
long var2
int var2
int var2
int var2
int var2
int var2
int var2
byte var2
byte var2
byte var2
byte var2
byte var2
byte var2
int var2
String[] var20
var20
int var21
String[] var23
var23
int var24
String[] var26
var26
long var27
int var28
long var3
long var3
long var3
long var3
long var3
long var3
int var3
byte var3
var3
var3
var3
var3
var3
var3
String[] var30
var30
int var31
long var32
int var33
String[] var35
var35
int var36
int var37
long var38
int var39
int var4
int var4
var4
var4
var4
var4
var4
var4
int var4
ConnectedBlockFaceTags var41
int var43
int var44
long var45
int var47
int var48
int var5
int var5
int var5
int var5
int var5
int var5
int var5
String[] var5
var5
int var5
int var50
int var51
int var53
int var6
int var6
int var6
int var6
int var6
int var6
int var6
String[] var7
String[] var7
String[] var7
String[] var7
String[] var7
String[] var7
long var7
int var7
long var8
int var8
long var9
long var9
long var9
long var9
long var9
long var9
int var9
int var9

Методы (112)

МодификаторыВозвратСигнатура
public ConnectedBlockFaceTags cloneConnectedBlockFaceTags clone()
public int computeSizeint computeSize()
for for(int var8 = 0; var8 < var5; var8++)
for for(int var8 = 0; var8 < var5; var8++)
for for(int var8 = 0; var8 < var5; var8++)
for for(int var8 = 0; var8 < var5; var8++)
for for(int var8 = 0; var8 < var5; var8++)
for for(int var8 = 0; var8 < var5; var8++)
for for(int var11 = 0; var11 < var9; var11++)
for for(int var42 = 0; var42 < var31; var42++)
for for(int var46 = 0; var46 < var37; var46++)
for for(int var49 = 0; var49 < var44; var49++)
for for(int var52 = 0; var52 < var48; var52++)
for for(int var54 = 0; var54 < var51; var54++)
for for(int var6 = 0; var6 < this.north.length; var6++)
for for(int var18 = 0; var18 < this.east.length; var18++)
for for(int var19 = 0; var19 < this.south.length; var19++)
for for(int var20 = 0; var20 < this.west.length; var20++)
for for(int var21 = 0; var21 < this.up.length; var21++)
for for(int var22 = 0; var22 < this.down.length; var22++)
for for(String var6 : this.north)
for for(String var27 : this.east)
for for(String var28 : this.south)
for for(String var29 : this.west)
for for(String var30 : this.up)
for for(String var31 : this.down)
abstract return getDownreturn getDown(var0, 0)
abstract return getEastreturn getEast(var0, 0)
abstract return getNorthreturn getNorth(var0, 0)
abstract return getSouthreturn getSouth(var0, 0)
abstract return getUpreturn getUp(var0, 0)
static int getValidatedOffsetint getValidatedOffset(MemorySegment var0, int var1, int var2, int var3, String var4)
abstract return getWestreturn getWest(var0, 0)
static boolean hasDownboolean hasDown(MemorySegment var0, int var1)
static boolean hasEastboolean hasEast(MemorySegment var0, int var1)
static boolean hasNorthboolean hasNorth(MemorySegment var0, int var1)
static boolean hasSouthboolean hasSouth(MemorySegment var0, int var1)
static boolean hasUpboolean hasUp(MemorySegment var0, int var1)
static boolean hasWestboolean hasWest(MemorySegment var0, int var1)
if if(var1 < 0)
if if(var3 == -1L)
if if(var5 > 4096000)
if if(var3 == -1L)
if if(var5 > 4096000)
if if(var3 == -1L)
if if(var5 > 4096000)
if if(var3 == -1L)
if if(var5 > 4096000)
if if(var3 == -1L)
if if(var5 > 4096000)
if if(var3 == -1L)
if if(var5 > 4096000)
if if(var4 != var2)
if if(var7 == -1L)
if if(var9 > 4096000)
if if(var8 == -1L)
if if(var31 > 4096000)
if if(var27 == -1L)
if if(var37 > 4096000)
if if(var32 == -1L)
if if(var44 > 4096000)
if if(var38 == -1L)
if if(var48 > 4096000)
if if(var45 == -1L)
if if(var51 > 4096000)
if if(var2 != null)
if if(this.north != null)
if if(this.east != null)
if if(this.south != null)
if if(this.west != null)
if if(this.up != null)
if if(this.down != null)
if if(this.north != null)
if if(this.north.length > 4096000)
if if(this.east != null)
if if(this.east.length > 4096000)
if if(this.south != null)
if if(this.south.length > 4096000)
if if(this.west != null)
if if(this.west.length > 4096000)
if if(this.up != null)
if if(this.up.length > 4096000)
if if(this.down != null)
if if(this.down.length > 4096000)
if if(this.north != null)
if if(this.east != null)
if if(this.south != null)
if if(this.west != null)
if if(this.up != null)
if if(this.down != null)
if if(this == var1)
static void requireBoundsvoid requireBounds(MemorySegment var0, int var1)
abstract requireBounds requireBounds(var0, var1)
static void requireSlotvoid requireSlot(MemorySegment var0, int var1, int var2, String var3)
abstract requireSlot requireSlot(var0, var1 + 1, var4, "North")
abstract requireSlot requireSlot(var0, var1 + 1, -1, "North")
abstract requireSlot requireSlot(var0, var1 + 5, var4, "East")
abstract requireSlot requireSlot(var0, var1 + 5, -1, "East")
abstract requireSlot requireSlot(var0, var1 + 9, var4, "South")
abstract requireSlot requireSlot(var0, var1 + 9, -1, "South")
abstract requireSlot requireSlot(var0, var1 + 13, var4, "West")
abstract requireSlot requireSlot(var0, var1 + 13, -1, "West")
abstract requireSlot requireSlot(var0, var1 + 17, var4, "Up")
abstract requireSlot requireSlot(var0, var1 + 17, -1, "Up")
abstract requireSlot requireSlot(var0, var1 + 21, var4, "Down")
abstract requireSlot requireSlot(var0, var1 + 21, -1, "Down")
public int serializeint serialize(@Nonnull MemorySegment var1, int var2)
static ConnectedBlockFaceTags toObjectConnectedBlockFaceTags toObject(MemorySegment var0)
static ConnectedBlockFaceTags toObjectConnectedBlockFaceTags toObject(MemorySegment var0, int var1)
static ConnectedBlockFaceTags toObjectConnectedBlockFaceTags toObject(MemorySegment var0, int var1, @Nullable ReadCursor var2)
abstract return toObjectreturn toObject(var0, 0, null)
abstract return toObjectreturn toObject(var0, var1, null)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.protocol;

class="kw">import com.hypixel.hytale.protocol.io.PacketIO;
class="kw">import com.hypixel.hytale.protocol.io.ProtocolException;
class="kw">import com.hypixel.hytale.protocol.io.ReadCursor;
class="kw">import com.hypixel.hytale.protocol.io.VarInt;
class="kw">import java.lang.foreign.MemorySegment;
class="kw">import java.util.Arrays;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class ConnectedBlockFaceTags {
   class="kw">public class="kw">static class="kw">final int NULLABLE_BIT_FIELD_SIZE = 1;
   class="kw">public class="kw">static class="kw">final int FIXED_BLOCK_SIZE = 1;
   class="kw">public class="kw">static class="kw">final int VARIABLE_FIELD_COUNT = 6;
   class="kw">public class="kw">static class="kw">final int VARIABLE_BLOCK_START = 25;
   class="kw">public class="kw">static class="kw">final int MAX_SIZE = 1677721600;
   @Nullable
   class="kw">public String[] north;
   @Nullable
   class="kw">public String[] east;
   @Nullable
   class="kw">public String[] south;
   @Nullable
   class="kw">public String[] west;
   @Nullable
   class="kw">public String[] up;
   @Nullable
   class="kw">public String[] down;

   class="kw">public ConnectedBlockFaceTags() {
   }

   class="kw">public ConnectedBlockFaceTags(
      @Nullable String[] var1, @Nullable String[] var2, @Nullable String[] var3, @Nullable String[] var4, @Nullable String[] var5, @Nullable String[] var6
   ) {
      this.north = var1;
      this.east = var2;
      this.south = var3;
      this.west = var4;
      this.up = var5;
      this.down = var6;
   }

   class="kw">public ConnectedBlockFaceTags(@Nonnull ConnectedBlockFaceTags var1) {
      this.north = var1.north;
      this.east = var1.east;
      this.south = var1.south;
      this.west = var1.west;
      this.up = var1.up;
      this.down = var1.down;
   }

   class="kw">public class="kw">static void requireBounds(MemorySegment var0, int var1) {
      if (var1 < 0) {
         throw ProtocolException.invalidOffset("ConnectedBlockFaceTags", var1, (int)var0.byteSize());
      }

      long var2 = var1 + 25L;
      if (var2 > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("ConnectedBlockFaceTags", (int)Math.min(var2, 2147483647L), (int)var0.byteSize());
      }
   }

   @Nullable
   class="kw">public class="kw">static String[] getNorth(MemorySegment var0) {
      class="kw">return getNorth(var0, 0);
   }

   @Nullable
   class="kw">public class="kw">static String[] getNorth(MemorySegment var0, int var1) {
      if (!hasNorth(var0, var1)) {
         class="kw">return null;
      }

      int var2 = var1 + getValidatedOffset(var0, var1, 1, 25, "North");
      long var3 = VarInt.getWithLength(var0, var2);
      if (var3 == -1L) {
         throw ProtocolException.invalidVarInt("North");
      }

      int var5 = (int)var3;
      if (var5 > 4096000) {
         throw ProtocolException.arrayTooLong("North", var5, 4096000);
      }

      int var6 = (int)(var3 >>> 32);
      if (var2 + var6 + var5 > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("North", Math.min(var2 + var6 + var5, Integer.MAX_VALUE), (int)var0.byteSize());
      }

      var2 += var6;
      String[] var7 = new String[var5];

      for (int var8 = 0; var8 < var5; var8++) {
         long var9 = VarInt.getWithLength(var0, var2);
         var7[var8] = PacketIO.readVarString("North", var0, var2, 0, 4096000, var9);
         var2 += (int)var9 + (int)(var9 >>> 32);
      }

      class="kw">return var7;
   }

   @Nullable
   class="kw">public class="kw">static String[] getEast(MemorySegment var0) {
      class="kw">return getEast(var0, 0);
   }

   @Nullable
   class="kw">public class="kw">static String[] getEast(MemorySegment var0, int var1) {
      if (!hasEast(var0, var1)) {
         class="kw">return null;
      }

      int var2 = var1 + getValidatedOffset(var0, var1, 5, 25, "East");
      long var3 = VarInt.getWithLength(var0, var2);
      if (var3 == -1L) {
         throw ProtocolException.invalidVarInt("East");
      }

      int var5 = (int)var3;
      if (var5 > 4096000) {
         throw ProtocolException.arrayTooLong("East", var5, 4096000);
      }

      int var6 = (int)(var3 >>> 32);
      if (var2 + var6 + var5 > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("East", Math.min(var2 + var6 + var5, Integer.MAX_VALUE), (int)var0.byteSize());
      }

      var2 += var6;
      String[] var7 = new String[var5];

      for (int var8 = 0; var8 < var5; var8++) {
         long var9 = VarInt.getWithLength(var0, var2);
         var7[var8] = PacketIO.readVarString("East", var0, var2, 0, 4096000, var9);
         var2 += (int)var9 + (int)(var9 >>> 32);
      }

      class="kw">return var7;
   }

   @Nullable
   class="kw">public class="kw">static String[] getSouth(MemorySegment var0) {
      class="kw">return getSouth(var0, 0);
   }

   @Nullable
   class="kw">public class="kw">static String[] getSouth(MemorySegment var0, int var1) {
      if (!hasSouth(var0, var1)) {
         class="kw">return null;
      }

      int var2 = var1 + getValidatedOffset(var0, var1, 9, 25, "South");
      long var3 = VarInt.getWithLength(var0, var2);
      if (var3 == -1L) {
         throw ProtocolException.invalidVarInt("South");
      }

      int var5 = (int)var3;
      if (var5 > 4096000) {
         throw ProtocolException.arrayTooLong("South", var5, 4096000);
      }

      int var6 = (int)(var3 >>> 32);
      if (var2 + var6 + var5 > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("South", Math.min(var2 + var6 + var5, Integer.MAX_VALUE), (int)var0.byteSize());
      }

      var2 += var6;
      String[] var7 = new String[var5];

      for (int var8 = 0; var8 < var5; var8++) {
         long var9 = VarInt.getWithLength(var0, var2);
         var7[var8] = PacketIO.readVarString("South", var0, var2, 0, 4096000, var9);
         var2 += (int)var9 + (int)(var9 >>> 32);
      }

      class="kw">return var7;
   }

   @Nullable
   class="kw">public class="kw">static String[] getWest(MemorySegment var0) {
      class="kw">return getWest(var0, 0);
   }

   @Nullable
   class="kw">public class="kw">static String[] getWest(MemorySegment var0, int var1) {
      if (!hasWest(var0, var1)) {
         class="kw">return null;
      }

      int var2 = var1 + getValidatedOffset(var0, var1, 13, 25, "West");
      long var3 = VarInt.getWithLength(var0, var2);
      if (var3 == -1L) {
         throw ProtocolException.invalidVarInt("West");
      }

      int var5 = (int)var3;
      if (var5 > 4096000) {
         throw ProtocolException.arrayTooLong("West", var5, 4096000);
      }

      int var6 = (int)(var3 >>> 32);
      if (var2 + var6 + var5 > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("West", Math.min(var2 + var6 + var5, Integer.MAX_VALUE), (int)var0.byteSize());
      }

      var2 += var6;
      String[] var7 = new String[var5];

      for (int var8 = 0; var8 < var5; var8++) {
         long var9 = VarInt.getWithLength(var0, var2);
         var7[var8] = PacketIO.readVarString("West", var0, var2, 0, 4096000, var9);
         var2 += (int)var9 + (int)(var9 >>> 32);
      }

      class="kw">return var7;
   }

   @Nullable
   class="kw">public class="kw">static String[] getUp(MemorySegment var0) {
      class="kw">return getUp(var0, 0);
   }

   @Nullable
   class="kw">public class="kw">static String[] getUp(MemorySegment var0, int var1) {
      if (!hasUp(var0, var1)) {
         class="kw">return null;
      }

      int var2 = var1 + getValidatedOffset(var0, var1, 17, 25, "Up");
      long var3 = VarInt.getWithLength(var0, var2);
      if (var3 == -1L) {
         throw ProtocolException.invalidVarInt("Up");
      }

      int var5 = (int)var3;
      if (var5 > 4096000) {
         throw ProtocolException.arrayTooLong("Up", var5, 4096000);
      }

      int var6 = (int)(var3 >>> 32);
      if (var2 + var6 + var5 > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("Up", Math.min(var2 + var6 + var5, Integer.MAX_VALUE), (int)var0.byteSize());
      }

      var2 += var6;
      String[] var7 = new String[var5];

      for (int var8 = 0; var8 < var5; var8++) {
         long var9 = VarInt.getWithLength(var0, var2);
         var7[var8] = PacketIO.readVarString("Up", var0, var2, 0, 4096000, var9);
         var2 += (int)var9 + (int)(var9 >>> 32);
      }

      class="kw">return var7;
   }

   @Nullable
   class="kw">public class="kw">static String[] getDown(MemorySegment var0) {
      class="kw">return getDown(var0, 0);
   }

   @Nullable
   class="kw">public class="kw">static String[] getDown(MemorySegment var0, int var1) {
      if (!hasDown(var0, var1)) {
         class="kw">return null;
      }

      int var2 = var1 + getValidatedOffset(var0, var1, 21, 25, "Down");
      long var3 = VarInt.getWithLength(var0, var2);
      if (var3 == -1L) {
         throw ProtocolException.invalidVarInt("Down");
      }

      int var5 = (int)var3;
      if (var5 > 4096000) {
         throw ProtocolException.arrayTooLong("Down", var5, 4096000);
      }

      int var6 = (int)(var3 >>> 32);
      if (var2 + var6 + var5 > var0.byteSize()) {
         throw ProtocolException.bufferTooSmall("Down", Math.min(var2 + var6 + var5, Integer.MAX_VALUE), (int)var0.byteSize());
      }

      var2 += var6;
      String[] var7 = new String[var5];

      for (int var8 = 0; var8 < var5; var8++) {
         long var9 = VarInt.getWithLength(var0, var2);
         var7[var8] = PacketIO.readVarString("Down", var0, var2, 0, 4096000, var9);
         var2 += (int)var9 + (int)(var9 >>> 32);
      }

      class="kw">return var7;
   }

   class="kw">public class="kw">static boolean hasNorth(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 0);
      class="kw">return (var2 & 1) != 0;
   }

   class="kw">public class="kw">static boolean hasEast(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 0);
      class="kw">return (var2 & 2) != 0;
   }

   class="kw">public class="kw">static boolean hasSouth(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 0);
      class="kw">return (var2 & 4) != 0;
   }

   class="kw">public class="kw">static boolean hasWest(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 0);
      class="kw">return (var2 & 8) != 0;
   }

   class="kw">public class="kw">static boolean hasUp(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 0);
      class="kw">return (var2 & 16) != 0;
   }

   class="kw">public class="kw">static boolean hasDown(MemorySegment var0, int var1) {
      byte var2 = var0.get(PacketIO.PROTO_BYTE, var1 + 0);
      class="kw">return (var2 & 32) != 0;
   }

   class="kw">private class="kw">static int getValidatedOffset(MemorySegment var0, int var1, int var2, int var3, String var4) {
      int var5 = var0.get(PacketIO.PROTO_INT, var1 + var2);
      if (var5 >= 0 && var5 <= var0.byteSize() - var1 - var3) {
         class="kw">return var3 + var5;
      } else {
         throw ProtocolException.invalidOffset(var4, var5, (int)var0.byteSize());
      }
   }

   class="kw">private class="kw">static void requireSlot(MemorySegment var0, int var1, int var2, String var3) {
      int var4 = var0.get(PacketIO.PROTO_INT, var1);
      if (var4 != var2) {
         throw ProtocolException.nonCanonicalLayout(var3, var4, var2);
      }
   }

   class="kw">public class="kw">static ConnectedBlockFaceTags toObject(MemorySegment var0) {
      class="kw">return toObject(var0, 0, null);
   }

   class="kw">public class="kw">static ConnectedBlockFaceTags toObject(MemorySegment var0, int var1) {
      class="kw">return toObject(var0, var1, null);
   }

   class="kw">public class="kw">static ConnectedBlockFaceTags toObject(MemorySegment var0, int var1, @Nullable ReadCursor var2) {
      requireBounds(var0, var1);
      int var3 = var1 + 25;
      int var4 = 0;
      String[] var5 = null;
      if (hasNorth(var0, var1)) {
         requireSlot(var0, var1 + 1, var4, "North");
         int var6 = var3 + var4;
         long var7 = VarInt.getWithLength(var0, var6);
         if (var7 == -1L) {
            throw ProtocolException.invalidVarInt("North");
         }

         int var9 = (int)var7;
         if (var9 > 4096000) {
            throw ProtocolException.arrayTooLong("North", var9, 4096000);
         }

         int var10 = (int)(var7 >>> 32);
         if (var6 + var10 + var9 > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("North", Math.min(var6 + var10 + var9, Integer.MAX_VALUE), (int)var0.byteSize());
         }

         var6 += var10;
         var5 = new String[var9];

         for (int var11 = 0; var11 < var9; var11++) {
            long var12 = VarInt.getWithLength(var0, var6);
            var5[var11] = PacketIO.readVarString("North", var0, var6, 0, 4096000, var12);
            var6 += (int)var12 + (int)(var12 >>> 32);
         }

         var4 = var6 - var3;
      } else {
         requireSlot(var0, var1 + 1, -1, "North");
      }

      String[] var20 = null;
      if (hasEast(var0, var1)) {
         requireSlot(var0, var1 + 5, var4, "East");
         int var21 = var3 + var4;
         long var8 = VarInt.getWithLength(var0, var21);
         if (var8 == -1L) {
            throw ProtocolException.invalidVarInt("East");
         }

         int var31 = (int)var8;
         if (var31 > 4096000) {
            throw ProtocolException.arrayTooLong("East", var31, 4096000);
         }

         int var36 = (int)(var8 >>> 32);
         if (var21 + var36 + var31 > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("East", Math.min(var21 + var36 + var31, Integer.MAX_VALUE), (int)var0.byteSize());
         }

         var21 += var36;
         var20 = new String[var31];

         for (int var42 = 0; var42 < var31; var42++) {
            long var13 = VarInt.getWithLength(var0, var21);
            var20[var42] = PacketIO.readVarString("East", var0, var21, 0, 4096000, var13);
            var21 += (int)var13 + (int)(var13 >>> 32);
         }

         var4 = var21 - var3;
      } else {
         requireSlot(var0, var1 + 5, -1, "East");
      }

      String[] var23 = null;
      if (hasSouth(var0, var1)) {
         requireSlot(var0, var1 + 9, var4, "South");
         int var24 = var3 + var4;
         long var27 = VarInt.getWithLength(var0, var24);
         if (var27 == -1L) {
            throw ProtocolException.invalidVarInt("South");
         }

         int var37 = (int)var27;
         if (var37 > 4096000) {
            throw ProtocolException.arrayTooLong("South", var37, 4096000);
         }

         int var43 = (int)(var27 >>> 32);
         if (var24 + var43 + var37 > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("South", Math.min(var24 + var43 + var37, Integer.MAX_VALUE), (int)var0.byteSize());
         }

         var24 += var43;
         var23 = new String[var37];

         for (int var46 = 0; var46 < var37; var46++) {
            long var14 = VarInt.getWithLength(var0, var24);
            var23[var46] = PacketIO.readVarString("South", var0, var24, 0, 4096000, var14);
            var24 += (int)var14 + (int)(var14 >>> 32);
         }

         var4 = var24 - var3;
      } else {
         requireSlot(var0, var1 + 9, -1, "South");
      }

      String[] var26 = null;
      if (hasWest(var0, var1)) {
         requireSlot(var0, var1 + 13, var4, "West");
         int var28 = var3 + var4;
         long var32 = VarInt.getWithLength(var0, var28);
         if (var32 == -1L) {
            throw ProtocolException.invalidVarInt("West");
         }

         int var44 = (int)var32;
         if (var44 > 4096000) {
            throw ProtocolException.arrayTooLong("West", var44, 4096000);
         }

         int var47 = (int)(var32 >>> 32);
         if (var28 + var47 + var44 > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("West", Math.min(var28 + var47 + var44, Integer.MAX_VALUE), (int)var0.byteSize());
         }

         var28 += var47;
         var26 = new String[var44];

         for (int var49 = 0; var49 < var44; var49++) {
            long var15 = VarInt.getWithLength(var0, var28);
            var26[var49] = PacketIO.readVarString("West", var0, var28, 0, 4096000, var15);
            var28 += (int)var15 + (int)(var15 >>> 32);
         }

         var4 = var28 - var3;
      } else {
         requireSlot(var0, var1 + 13, -1, "West");
      }

      String[] var30 = null;
      if (hasUp(var0, var1)) {
         requireSlot(var0, var1 + 17, var4, "Up");
         int var33 = var3 + var4;
         long var38 = VarInt.getWithLength(var0, var33);
         if (var38 == -1L) {
            throw ProtocolException.invalidVarInt("Up");
         }

         int var48 = (int)var38;
         if (var48 > 4096000) {
            throw ProtocolException.arrayTooLong("Up", var48, 4096000);
         }

         int var50 = (int)(var38 >>> 32);
         if (var33 + var50 + var48 > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("Up", Math.min(var33 + var50 + var48, Integer.MAX_VALUE), (int)var0.byteSize());
         }

         var33 += var50;
         var30 = new String[var48];

         for (int var52 = 0; var52 < var48; var52++) {
            long var16 = VarInt.getWithLength(var0, var33);
            var30[var52] = PacketIO.readVarString("Up", var0, var33, 0, 4096000, var16);
            var33 += (int)var16 + (int)(var16 >>> 32);
         }

         var4 = var33 - var3;
      } else {
         requireSlot(var0, var1 + 17, -1, "Up");
      }

      String[] var35 = null;
      if (hasDown(var0, var1)) {
         requireSlot(var0, var1 + 21, var4, "Down");
         int var39 = var3 + var4;
         long var45 = VarInt.getWithLength(var0, var39);
         if (var45 == -1L) {
            throw ProtocolException.invalidVarInt("Down");
         }

         int var51 = (int)var45;
         if (var51 > 4096000) {
            throw ProtocolException.arrayTooLong("Down", var51, 4096000);
         }

         int var53 = (int)(var45 >>> 32);
         if (var39 + var53 + var51 > var0.byteSize()) {
            throw ProtocolException.bufferTooSmall("Down", Math.min(var39 + var53 + var51, Integer.MAX_VALUE), (int)var0.byteSize());
         }

         var39 += var53;
         var35 = new String[var51];

         for (int var54 = 0; var54 < var51; var54++) {
            long var17 = VarInt.getWithLength(var0, var39);
            var35[var54] = PacketIO.readVarString("Down", var0, var39, 0, 4096000, var17);
            var39 += (int)var17 + (int)(var17 >>> 32);
         }

         var4 = var39 - var3;
      } else {
         requireSlot(var0, var1 + 21, -1, "Down");
      }

      ConnectedBlockFaceTags var41 = new ConnectedBlockFaceTags(var5, var20, var23, var26, var30, var35);
      if (var2 != null) {
         var2.position = var3 + var4;
      }

      class="kw">return var41;
   }

   class="kw">public int serialize(@Nonnull MemorySegment var1, int var2) {
      byte var3 = 0;
      if (this.north != null) {
         var3 = (byte)(var3 | 1);
      }

      if (this.east != null) {
         var3 = (byte)(var3 | 2);
      }

      if (this.south != null) {
         var3 = (byte)(var3 | 4);
      }

      if (this.west != null) {
         var3 = (byte)(var3 | 8);
      }

      if (this.up != null) {
         var3 = (byte)(var3 | 16);
      }

      if (this.down != null) {
         var3 = (byte)(var3 | 32);
      }

      var1.set(PacketIO.PROTO_BYTE, var2 + 0, var3);
      int var4 = var2 + 25;
      if (this.north != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 1, var4 - var2 - 25);
         if (this.north.length > 4096000) {
            throw ProtocolException.arrayTooLong("North", this.north.length, 4096000);
         }

         var4 += VarInt.set(var1, var4, this.north.length);
         int var5 = 0;

         for (int var6 = 0; var6 < this.north.length; var6++) {
            var5 += PacketIO.writeVarString(var1, var4 + var5, this.north[var6], 4096000);
         }

         var4 += var5;
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 1, -1);
      }

      if (this.east != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 5, var4 - var2 - 25);
         if (this.east.length > 4096000) {
            throw ProtocolException.arrayTooLong("East", this.east.length, 4096000);
         }

         var4 += VarInt.set(var1, var4, this.east.length);
         int var13 = 0;

         for (int var18 = 0; var18 < this.east.length; var18++) {
            var13 += PacketIO.writeVarString(var1, var4 + var13, this.east[var18], 4096000);
         }

         var4 += var13;
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 5, -1);
      }

      if (this.south != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 9, var4 - var2 - 25);
         if (this.south.length > 4096000) {
            throw ProtocolException.arrayTooLong("South", this.south.length, 4096000);
         }

         var4 += VarInt.set(var1, var4, this.south.length);
         int var14 = 0;

         for (int var19 = 0; var19 < this.south.length; var19++) {
            var14 += PacketIO.writeVarString(var1, var4 + var14, this.south[var19], 4096000);
         }

         var4 += var14;
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 9, -1);
      }

      if (this.west != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 13, var4 - var2 - 25);
         if (this.west.length > 4096000) {
            throw ProtocolException.arrayTooLong("West", this.west.length, 4096000);
         }

         var4 += VarInt.set(var1, var4, this.west.length);
         int var15 = 0;

         for (int var20 = 0; var20 < this.west.length; var20++) {
            var15 += PacketIO.writeVarString(var1, var4 + var15, this.west[var20], 4096000);
         }

         var4 += var15;
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 13, -1);
      }

      if (this.up != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 17, var4 - var2 - 25);
         if (this.up.length > 4096000) {
            throw ProtocolException.arrayTooLong("Up", this.up.length, 4096000);
         }

         var4 += VarInt.set(var1, var4, this.up.length);
         int var16 = 0;

         for (int var21 = 0; var21 < this.up.length; var21++) {
            var16 += PacketIO.writeVarString(var1, var4 + var16, this.up[var21], 4096000);
         }

         var4 += var16;
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 17, -1);
      }

      if (this.down != null) {
         var1.set(PacketIO.PROTO_INT, var2 + 21, var4 - var2 - 25);
         if (this.down.length > 4096000) {
            throw ProtocolException.arrayTooLong("Down", this.down.length, 4096000);
         }

         var4 += VarInt.set(var1, var4, this.down.length);
         int var17 = 0;

         for (int var22 = 0; var22 < this.down.length; var22++) {
            var17 += PacketIO.writeVarString(var1, var4 + var17, this.down[var22], 4096000);
         }

         var4 += var17;
      } else {
         var1.set(PacketIO.PROTO_INT, var2 + 21, -1);
      }

      class="kw">return var4 - var2;
   }

   class="kw">public int computeSize() {
      int var1 = 25;
      if (this.north != null) {
         int var2 = 0;

         for (String var6 : this.north) {
            var2 += PacketIO.stringSize(var6);
         }

         var1 += VarInt.size(this.north.length) + var2;
      }

      if (this.east != null) {
         int var7 = 0;

         for (String var27 : this.east) {
            var7 += PacketIO.stringSize(var27);
         }

         var1 += VarInt.size(this.east.length) + var7;
      }

      if (this.south != null) {
         int var8 = 0;

         for (String var28 : this.south) {
            var8 += PacketIO.stringSize(var28);
         }

         var1 += VarInt.size(this.south.length) + var8;
      }

      if (this.west != null) {
         int var9 = 0;

         for (String var29 : this.west) {
            var9 += PacketIO.stringSize(var29);
         }

         var1 += VarInt.size(this.west.length) + var9;
      }

      if (this.up != null) {
         int var10 = 0;

         for (String var30 : this.up) {
            var10 += PacketIO.stringSize(var30);
         }

         var1 += VarInt.size(this.up.length) + var10;
      }

      if (this.down != null) {
         int var11 = 0;

         for (String var31 : this.down) {
            var11 += PacketIO.stringSize(var31);
         }

         var1 += VarInt.size(this.down.length) + var11;
      }

      class="kw">return var1;
   }

   class="kw">public ConnectedBlockFaceTags clone() {
      ConnectedBlockFaceTags var1 = new ConnectedBlockFaceTags();
      var1.north = this.north != null ? Arrays.copyOf(this.north, this.north.length) : null;
      var1.east = this.east != null ? Arrays.copyOf(this.east, this.east.length) : null;
      var1.south = this.south != null ? Arrays.copyOf(this.south, this.south.length) : null;
      var1.west = this.west != null ? Arrays.copyOf(this.west, this.west.length) : null;
      var1.up = this.up != null ? Arrays.copyOf(this.up, this.up.length) : null;
      var1.down = this.down != null ? Arrays.copyOf(this.down, this.down.length) : null;
      class="kw">return var1;
   }

   @Override
   class="kw">public boolean equals(Object var1) {
      if (this == var1) {
         class="kw">return true;
      } else {
         class="kw">return !(var1 class="kw">instanceof ConnectedBlockFaceTags var2)
            ? false
            : Arrays.equals(this.north, var2.north)
               && Arrays.equals(this.east, var2.east)
               && Arrays.equals(this.south, var2.south)
               && Arrays.equals(this.west, var2.west)
               && Arrays.equals(this.up, var2.up)
               && Arrays.equals(this.down, var2.down);
      }
   }

   @Override
   class="kw">public int hashCode() {
      int var1 = 1;
      var1 = 31 * var1 + Arrays.hashCode(this.north);
      var1 = 31 * var1 + Arrays.hashCode(this.east);
      var1 = 31 * var1 + Arrays.hashCode(this.south);
      var1 = 31 * var1 + Arrays.hashCode(this.west);
      var1 = 31 * var1 + Arrays.hashCode(this.up);
      class="kw">return 31 * var1 + Arrays.hashCode(this.down);
   }
}