ParticleCollision class

Пакет: com.hypixel.hytale.server.core.asset.type.particle.config

Файл: com/hypixel/hytale/server/core/asset/type/particle/config/ParticleCollision.java

implements: NetworkSerializable<com.hypixel.hytale.protocol.ParticleCollision>

Поля (2)

МодификаторыТипИмя
final BuilderCodec<ParticleCollision> CODEC
com.hypixel.hytale.protocol.ParticleCollision var1

Методы (3)

МодификаторыВозвратСигнатура
public ParticleCollisionBlockType getParticleMapCollisionParticleCollisionBlockType getParticleMapCollision()
public ParticleRotationInfluence getParticleRotationInfluenceParticleRotationInfluence getParticleRotationInfluence()
public ParticleCollisionAction getTypeParticleCollisionAction getType()

Исходный код

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

class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.codecs.EnumCodec;
class="kw">import com.hypixel.hytale.codec.schema.metadata.ui.UIPropertyTitle;
class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import com.hypixel.hytale.protocol.ParticleCollisionAction;
class="kw">import com.hypixel.hytale.protocol.ParticleCollisionBlockType;
class="kw">import com.hypixel.hytale.protocol.ParticleRotationInfluence;
class="kw">import com.hypixel.hytale.server.core.io.NetworkSerializable;
class="kw">import javax.annotation.Nonnull;

class="kw">public class ParticleCollision class="kw">implements NetworkSerializable<com.hypixel.hytale.protocol.ParticleCollision> {
   class="kw">public class="kw">static class="kw">final BuilderCodec<ParticleCollision> CODEC = BuilderCodec.builder(ParticleCollision.class, ParticleCollision::new)
      .append(
         new KeyedCodec<>(
            "BlockType",
            new EnumCodec<>(ParticleCollisionBlockType.class)
               .documentKey(ParticleCollisionBlockType.None, "ParticleCollision is disabled")
               .documentKey(ParticleCollisionBlockType.Air, "Air type Blocks (e.g. foliage, plants) trigger this collision.")
               .documentKey(ParticleCollisionBlockType.Solid, "Solid type Blocks (e.g. rocks, dirt, wood) trigger this collision.")
               .documentKey(ParticleCollisionBlockType.All, "All Blocks (except None) trigger this collision.")
         ),
         (var0, var1) -> var0.blockType = var1,
         var0 -> var0.blockType
      )
      .addValidator(Validators.nonNull())
      .metadata(new UIPropertyTitle("Block Type Trigger"))
      .documentation("Defines what Block Type triggers the `ParticleCollision`.")
      .add()
      .<ParticleCollisionAction>append(
         new KeyedCodec<>(
            "Action",
            new EnumCodec<>(ParticleCollisionAction.class)
               .documentKey(
                  ParticleCollisionAction.Expire,
                  "The particle disappears upon trigger.\nDO NOT USE THIS TO TRY TO OPTIMIZE THE AMOUNT OF PARTICLES! THE CALCULATION OF COLLISION COSTS MORE!"
               )
               .documentKey(
                  ParticleCollisionAction.LastFrame,
                  "Sets the particle to the `CollisionAnimationFrame`. The particle also stays at the position of collision."
               )
               .documentKey(ParticleCollisionAction.Linger, "The particle stays for the rest of its lifetime at the position of collision.")
         ),
         (var0, var1) -> var0.action = var1,
         var0 -> var0.action
      )
      .addValidator(Validators.nonNull())
      .documentation("Defines what to do when the `ParticleCollision` is triggered.")
      .add()
      .<ParticleRotationInfluence>append(
         new KeyedCodec<>(
            "ParticleRotationInfluence",
            new EnumCodec<>(ParticleRotationInfluence.class)
               .documentKey(ParticleRotationInfluence.None, "The rotation only gets affected by the `Animation`/`InitialAnimationFrame`.")
               .documentKey(
                  ParticleRotationInfluence.Billboard,
                  "The particle always faces the camera.\nOnly the rotation around the z-Axis can additionally affect the rotation."
               )
               .documentKey(
                  ParticleRotationInfluence.BillboardY,
                  "The particle only rotates around its y-Axis(Up-Down) to always face the camera.\nOnly the rotation around the z-Axis can additionally affect the rotation."
               )
               .documentKey(
                  ParticleRotationInfluence.BillboardVelocity,
                  "Similar to `Billboard`, only that the y-Axis always aligns with the velocity vector of the particle."
               )
               .documentKey(ParticleRotationInfluence.Velocity, "The particle's y-Axis always aligns with the velocity vector of the particle.")
         ),
         (var0, var1) -> var0.particleRotationInfluence = var1,
         var0 -> var0.particleRotationInfluence
      )
      .documentation("Overwrites how the rotation of the particle is influenced by the viewing camera or its motion.")
      .add()
      .build();
   @Nonnull
   class="kw">private ParticleCollisionBlockType blockType = ParticleCollisionBlockType.None;
   @Nonnull
   class="kw">private ParticleCollisionAction action = ParticleCollisionAction.Expire;
   class="kw">private ParticleRotationInfluence particleRotationInfluence;

   class="kw">public ParticleCollision(ParticleCollisionBlockType var1, ParticleCollisionAction var2, ParticleRotationInfluence var3) {
      this.blockType = var1;
      this.action = var2;
      this.particleRotationInfluence = var3;
   }

   class="kw">protected ParticleCollision() {
   }

   class="kw">public ParticleCollisionBlockType getParticleMapCollision() {
      class="kw">return this.blockType;
   }

   class="kw">public ParticleCollisionAction getType() {
      class="kw">return this.action;
   }

   class="kw">public ParticleRotationInfluence getParticleRotationInfluence() {
      class="kw">return this.particleRotationInfluence;
   }

   @Nonnull
   class="kw">public com.hypixel.hytale.protocol.ParticleCollision toPacket() {
      com.hypixel.hytale.protocol.ParticleCollision var1 = new com.hypixel.hytale.protocol.ParticleCollision();
      var1.blockType = this.blockType;
      var1.action = this.action;
      var1.particleRotationInfluence = this.particleRotationInfluence != null ? this.particleRotationInfluence : ParticleRotationInfluence.None;
      class="kw">return var1;
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "ParticleCollision{blockType="
         + this.blockType
         + ", action="
         + this.action
         + ", particleRotationInfluence="
         + this.particleRotationInfluence
         + "}";
   }
}