BreakFallingBlockImpact class

Пакет: com.hypixel.hytale.builtin.fallingblocks

Файл: com/hypixel/hytale/builtin/fallingblocks/BreakFallingBlockImpact.java

extends: FallingBlockImpact

Поля (15)

МодификаторыТипИмя
final String ID
BlockBoundingBoxes var10
BlockBoundingBoxes.RotatedVariantBoxes var11
BlockSoundSet var12
int var13
Vector3d var14
SoftBlockDropType var15
List var16
Holder[] var17
BlockGathering var18
BlockBreakingDropType var19
List var20
Holder[] var21
Vector3i var8
int var9

Методы (9)

МодификаторыВозвратСигнатура
static void breakFallingBlockvoid breakFallingBlock(@Nonnull World var0, @Nonnull BlockType var1, @Nonnull Vector3d var2, @Nonnull RotationTuple var3, @Nonnull Store<EntityStore> var4, @Nonnull Ref<EntityStore> var5, @Nonnull CommandBuffer<EntityStore> var6)
static void breakFallingBlockvoid breakFallingBlock(@Nonnull World var0, @Nonnull BlockType var1, @Nonnull Vector3d var2, @Nonnull RotationTuple var3, @Nonnull Store<EntityStore> var4, @Nonnull Ref<EntityStore> var5, @Nonnull CommandBuffer<EntityStore> var6, boolean var7)
abstract breakFallingBlock breakFallingBlock(var2, var3, var4, var5, var6, var7, var8, this.dropItems)
abstract breakFallingBlock breakFallingBlock(var0, var1, var2, var3, var4, var5, var6, true)
if if(var10 != null)
if if(var11 != null)
if if(var12 != null)
if if(var13 != 0)
if if(var7 && var18 != null)

Исходный код

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

class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.Holder;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.math.vector.Rotation3f;
class="kw">import com.hypixel.hytale.protocol.BlockParticleEvent;
class="kw">import com.hypixel.hytale.protocol.BlockSoundEvent;
class="kw">import com.hypixel.hytale.protocol.SoundCategory;
class="kw">import com.hypixel.hytale.server.core.asset.type.blockhitbox.BlockBoundingBoxes;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocksound.config.BlockSoundSet;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockBreakingDropType;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockGathering;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.RotationTuple;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.SoftBlockDropType;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.fallingblocks.FallingBlockImpact;
class="kw">import com.hypixel.hytale.server.core.inventory.ItemStack;
class="kw">import com.hypixel.hytale.server.core.modules.entity.item.ItemComponent;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.BlockHarvestUtils;
class="kw">import com.hypixel.hytale.server.core.universe.world.SoundUtil;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
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 com.hypixel.hytale.server.core.util.FillerBlockUtil;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3i;

class="kw">public class BreakFallingBlockImpact class="kw">extends FallingBlockImpact {
   class="kw">public class="kw">static class="kw">final String ID = "Break";
   class="kw">public class="kw">static class="kw">final BuilderCodec<BreakFallingBlockImpact> CODEC = BuilderCodec.builder(BreakFallingBlockImpact.class, BreakFallingBlockImpact::new)
      .appendInherited(
         new KeyedCodec<>("DropItems", Codec.BOOLEAN, true),
         (var0, var1) -> var0.dropItems = var1,
         var0 -> var0.dropItems,
         (var0, var1) -> var0.dropItems = var1.dropItems
      )
      .add()
      .build();
   class="kw">private boolean dropItems = true;

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

   @Override
   class="kw">public void apply(
      @Nonnull Ref<ChunkStore> var1,
      @Nonnull World var2,
      @Nonnull BlockType var3,
      @Nonnull Vector3d var4,
      @Nonnull RotationTuple var5,
      @Nonnull Store<EntityStore> var6,
      @Nonnull Ref<EntityStore> var7,
      @Nonnull CommandBuffer<EntityStore> var8
   ) {
      breakFallingBlock(var2, var3, var4, var5, var6, var7, var8, this.dropItems);
   }

   class="kw">public class="kw">static void breakFallingBlock(
      @Nonnull World var0,
      @Nonnull BlockType var1,
      @Nonnull Vector3d var2,
      @Nonnull RotationTuple var3,
      @Nonnull Store<EntityStore> var4,
      @Nonnull Ref<EntityStore> var5,
      @Nonnull CommandBuffer<EntityStore> var6
   ) {
      breakFallingBlock(var0, var1, var2, var3, var4, var5, var6, true);
   }

   class="kw">public class="kw">static void breakFallingBlock(
      @Nonnull World var0,
      @Nonnull BlockType var1,
      @Nonnull Vector3d var2,
      @Nonnull RotationTuple var3,
      @Nonnull Store<EntityStore> var4,
      @Nonnull Ref<EntityStore> var5,
      @Nonnull CommandBuffer<EntityStore> var6,
      boolean var7
   ) {
      Vector3i var8 = new Vector3i(MathUtil.floor(var2.x), MathUtil.floor(var2.y), MathUtil.floor(var2.z));
      int var9 = BlockType.getAssetMap().getIndex(var1.getId());
      BlockBoundingBoxes var10 = BlockBoundingBoxes.getAssetMap().getAsset(var1.getHitboxTypeIndex());
      if (var10 != null) {
         BlockBoundingBoxes.RotatedVariantBoxes var11 = var10.get(var3.index());
         if (var11 != null) {
            FillerBlockUtil.forEachFillerBlock(
               var11,
               (var3x, var4x, var5x) -> var0.getNotificationHandler()
                  .sendBlockParticle(var2.x + var3x, var2.y + var4x, var2.z + var5x, var9, BlockParticleEvent.Break)
            );
            BlockSoundSet var12 = BlockSoundSet.getAssetMap().getAsset(var1.getBlockSoundSetIndex());
            if (var12 != null) {
               int var13 = var12.getSoundEventIndices().getOrDefault(BlockSoundEvent.Break, 0);
               if (var13 != 0) {
                  SoundUtil.playSoundEvent3d(var13, SoundCategory.SFX, var2, var4);
               }
            }

            BlockGathering var18 = var1.getGathering();
            if (var7 && var18 != null) {
               Vector3d var14 = var2.add(0.5, 0.0, 0.5);
               if (var18.isSoft()) {
                  SoftBlockDropType var15 = var1.getGathering().getSoft();
                  List var16 = BlockHarvestUtils.getDrops(var1, 1, var15.getItemId(), var15.getDropListId());
                  Holder[] var17 = ItemComponent.generateItemDrops(var4, var16, var14, Rotation3f.IDENTITY);
                  var0.execute(() -> var4.addEntities(var17, AddReason.SPAWN));
               } else {
                  BlockBreakingDropType var19 = var1.getGathering().getBreaking();
                  List var20 = BlockHarvestUtils.getDrops(var1, 1, var19.getItemId(), var19.getDropListId());
                  Holder[] var21 = ItemComponent.generateItemDrops(var4, var20, var14, Rotation3f.IDENTITY);
                  var0.execute(() -> var4.addEntities(var21, AddReason.SPAWN));
               }
            }

            BlockHarvestUtils.queueOnBreakImpactInteraction(var5, var1, var8, var3.index(), var6);
         }
      }
   }
}