|
10 | 10 | import net.minecraft.world.level.block.entity.BlockEntityType; |
11 | 11 | import net.minecraft.world.level.block.state.BlockState; |
12 | 12 | import org.jetbrains.annotations.Nullable; |
| 13 | +import java.util.List; |
| 14 | +import net.minecraft.world.item.ItemStack; |
| 15 | +import net.minecraft.world.level.storage.loot.LootParams; |
| 16 | +import net.minecraft.world.level.storage.loot.parameters.LootContextParams; |
| 17 | +import net.minecraft.core.component.DataComponents; |
| 18 | +import net.minecraft.world.item.component.CustomData; |
| 19 | +import net.minecraft.nbt.CompoundTag; |
13 | 20 |
|
14 | 21 | public class EnergyCondenserBlock extends BaseEntityBlock { |
15 | 22 |
|
@@ -41,5 +48,20 @@ public RenderShape getRenderShape(BlockState state) { |
41 | 48 | if (level.isClientSide) return null; |
42 | 49 | return createTickerHelper(type, ModBlockEntities.ENERGY_CONDENSER, |
43 | 50 | (lvl, pos, blockState, be) -> be.serverTick()); |
| 51 | + @Override |
| 52 | + public List<ItemStack> getDrops(BlockState state, LootParams.Builder builder) { |
| 53 | + List<ItemStack> drops = super.getDrops(state, builder); |
| 54 | + BlockEntity blockEntity = builder.getOptionalParameter(LootContextParams.BLOCK_ENTITY); |
| 55 | + if (blockEntity instanceof EnergyCondenserBlockEntity condenser) { |
| 56 | + CompoundTag tag = new CompoundTag(); |
| 57 | + condenser.saveAdditional(tag, builder.getLevel().registryAccess()); |
| 58 | + CustomData data = CustomData.of(tag); |
| 59 | + for (ItemStack stack : drops) { |
| 60 | + if (stack.getItem() == this.asItem()) { |
| 61 | + stack.set(DataComponents.BLOCK_ENTITY_DATA, data); |
| 62 | + } |
| 63 | + } |
| 64 | + } |
| 65 | + return drops; |
44 | 66 | } |
45 | 67 | } |
0 commit comments