Skip to content

Commit bc1c392

Browse files
committed
Energy stayed in condenser block after drop and can be moved
1 parent ee34c04 commit bc1c392

1 file changed

Lines changed: 22 additions & 0 deletions

File tree

src/main/java/fr/geomtech/universegate/EnergyCondenserBlock.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,13 @@
1010
import net.minecraft.world.level.block.entity.BlockEntityType;
1111
import net.minecraft.world.level.block.state.BlockState;
1212
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;
1320

1421
public class EnergyCondenserBlock extends BaseEntityBlock {
1522

@@ -41,5 +48,20 @@ public RenderShape getRenderShape(BlockState state) {
4148
if (level.isClientSide) return null;
4249
return createTickerHelper(type, ModBlockEntities.ENERGY_CONDENSER,
4350
(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;
4466
}
4567
}

0 commit comments

Comments
 (0)