LaunchPadInteraction class

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

Файл: com/hypixel/hytale/server/core/modules/interaction/interaction/config/server/LaunchPadInteraction.java

extends: SimpleBlockInteraction

Поля (12)

МодификаторыТипИмя
Store var10
Ref var11
WorldChunk var12
Ref var13
LaunchPad var14
Ref var15
Player var16
Velocity var17
Vector3d var18
SpatialResource var19
List var20
long var8

Методы (2)

МодификаторыВозвратСигнатура
if if(var12 != null)
if if(var14 != null)

Исходный код

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

class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.component.spatial.SpatialResource;
class="kw">import com.hypixel.hytale.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.math.vector.Vector3iUtil;
class="kw">import com.hypixel.hytale.protocol.ChangeVelocityType;
class="kw">import com.hypixel.hytale.protocol.InteractionType;
class="kw">import com.hypixel.hytale.protocol.WaitForDataFrom;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionContext;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.inventory.ItemStack;
class="kw">import com.hypixel.hytale.server.core.modules.entity.EntityModule;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.CooldownHandler;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.client.SimpleBlockInteraction;
class="kw">import com.hypixel.hytale.server.core.modules.physics.component.Velocity;
class="kw">import com.hypixel.hytale.server.core.universe.world.ParticleUtil;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.WorldChunk;
class="kw">import com.hypixel.hytale.server.core.universe.world.meta.state.LaunchPad;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3i;

class="kw">public class LaunchPadInteraction class="kw">extends SimpleBlockInteraction {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<LaunchPadInteraction> CODEC = BuilderCodec.builder(
         LaunchPadInteraction.class, LaunchPadInteraction::new, SimpleBlockInteraction.CODEC
      )
      .documentation("Applies the launchpad forces.")
      .build();

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

   @Nonnull
   @Override
   class="kw">public WaitForDataFrom getWaitForDataFrom() {
      class="kw">return WaitForDataFrom.Server;
   }

   @Override
   class="kw">protected void interactWithBlock(
      @Nonnull World var1,
      @Nonnull CommandBuffer<EntityStore> var2,
      @Nonnull InteractionType var3,
      @Nonnull InteractionContext var4,
      @Nullable ItemStack var5,
      @Nonnull Vector3i var6,
      @Nonnull CooldownHandler var7
   ) {
      long var8 = ChunkUtil.indexChunkFromBlock(var6.x, var6.z);
      Store var10 = var1.getChunkStore().getStore();
      Ref var11 = var10.getExternalData().getChunkReference(var8);
      if (var11 != null && var11.isValid()) {
         WorldChunk var12 = var10.getComponent(var11, WorldChunk.getComponentType());
         if (var12 != null) {
            Ref var13 = var12.getBlockComponentEntity(var6.x, var6.y, var6.z);
            if (var13 != null && var13.isValid()) {
               LaunchPad var14 = var13.getStore().getComponent(var13, LaunchPad.getComponentType());
               if (var14 != null) {
                  Ref var15 = var4.getEntity();
                  Player var16 = var2.getComponent(var15, Player.getComponentType());
                  if (!var14.isPlayersOnly() || var16 != null) {
                     Velocity var17 = var2.getComponent(var15, Velocity.getComponentType());
                     assert var17 != null;
                     var17.addInstruction(new Vector3d(var14.getVelocityX(), var14.getVelocityY(), var14.getVelocityZ()), null, ChangeVelocityType.Set);
                     Vector3d var18 = Vector3iUtil.toVector3d(var6).add(0.5, 0.5, 0.5);
                     SpatialResource var19 = var2.getResource(EntityModule.get().getPlayerSpatialResourceType());
                     List var20 = SpatialResource.getThreadLocalReferenceList();
                     var19.getSpatialStructure().collect(var18, 75.0, var20);
                     ParticleUtil.spawnParticleEffect("Splash", var18, var20, var2);
                  }
               }
            }
         }
      }
   }

   @Override
   class="kw">protected void simulateInteractWithBlock(
      @Nonnull InteractionType var1, @Nonnull InteractionContext var2, @Nullable ItemStack var3, @Nonnull World var4, @Nonnull Vector3i var5
   ) {
   }
}