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);
}
}
}
}