BlockHealth class

Пакет: com.hypixel.hytale.server.core.modules.blockhealth

Файл: com/hypixel/hytale/server/core/modules/blockhealth/BlockHealth.java

implements: Cloneable

Поля (1)

МодификаторыТипИмя
final int BYTE_SIZE

Методы (12)

МодификаторыВозвратСигнатура
abstract throw new UnsupportedOperationExceptionthrow new UnsupportedOperationException("NO_DAMAGE_INSTANCE is immutable!")
public void deserializevoid deserialize(@Nonnull MemorySegment var1, int var2, byte var3)
public float getHealthfloat getHealth()
public Instant getLastDamageGameTimeInstant getLastDamageGameTime()
public boolean isDestroyedboolean isDestroyed()
public boolean isFullHealthboolean isFullHealth()
public void serializevoid serialize(@Nonnull MemorySegment var1, int var2)
public void setHealthpublic void setHealth(float var1)
public void setHealthvoid setHealth(float var1)
public void setLastDamageGameTimepublic void setLastDamageGameTime(Instant var1)
public void setLastDamageGameTimevoid setLastDamageGameTime(Instant var1)
abstract this this(1.0F, Instant.MIN)

Исходный код

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

class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.server.core.util.io.MemorySegmentUtil;
class="kw">import java.lang.foreign.MemorySegment;
class="kw">import java.time.Instant;
class="kw">import javax.annotation.Nonnull;

class="kw">public class BlockHealth class="kw">implements Cloneable {
   class="kw">public class="kw">static class="kw">final int BYTE_SIZE = 12;
   class="kw">public class="kw">static class="kw">final BlockHealth NO_DAMAGE_INSTANCE = new BlockHealth(1.0F, Instant.MIN) {
      @Override
      class="kw">public void setHealth(float var1) {
         throw new UnsupportedOperationException("NO_DAMAGE_INSTANCE is immutable!");
      }

      @Override
      class="kw">public void setLastDamageGameTime(Instant var1) {
         throw new UnsupportedOperationException("NO_DAMAGE_INSTANCE is immutable!");
      }
   };
   class="kw">private float health;
   class="kw">private Instant lastDamageGameTime;

   class="kw">public BlockHealth() {
      this(1.0F, Instant.MIN);
   }

   class="kw">public BlockHealth(float var1, Instant var2) {
      this.health = var1;
      this.lastDamageGameTime = var2;
   }

   class="kw">public float getHealth() {
      class="kw">return this.health;
   }

   class="kw">public void setHealth(float var1) {
      this.health = var1;
   }

   class="kw">public Instant getLastDamageGameTime() {
      class="kw">return this.lastDamageGameTime;
   }

   class="kw">public void setLastDamageGameTime(Instant var1) {
      this.lastDamageGameTime = var1;
   }

   class="kw">public boolean isDestroyed() {
      class="kw">return MathUtil.closeToZero(this.health) || this.health < 0.0F;
   }

   class="kw">public boolean isFullHealth() {
      class="kw">return this.health >= 1.0;
   }

   class="kw">public void deserialize(@Nonnull MemorySegment var1, int var2, byte var3) {
      this.health = var1.get(MemorySegmentUtil.FLOAT_BE, var2);
      this.lastDamageGameTime = Instant.ofEpochMilli(var1.get(MemorySegmentUtil.LONG_BE, var2 + 4));
   }

   class="kw">public void serialize(@Nonnull MemorySegment var1, int var2) {
      var1.set(MemorySegmentUtil.FLOAT_BE, var2, this.health);
      var1.set(MemorySegmentUtil.LONG_BE, var2 + 4, this.lastDamageGameTime.toEpochMilli());
   }

   @Nonnull
   class="kw">protected BlockHealth clone() {
      class="kw">return new BlockHealth(this.health, this.lastDamageGameTime);
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "BlockHealth{health=" + this.health + ", lastDamageGameTime=" + this.lastDamageGameTime + "}";
   }
}