|
23 | 23 | import net.minecraft.util.math.Direction;
|
24 | 24 | import net.minecraft.world.BlockView;
|
25 | 25 | import net.minecraft.world.World;
|
| 26 | +import net.minecraft.world.loot.context.LootContext; |
| 27 | +import net.minecraft.world.loot.context.LootContextParameters; |
26 | 28 |
|
27 | 29 | import javax.annotation.Nonnull;
|
| 30 | +import java.util.List; |
28 | 31 |
|
29 | 32 | public abstract class BlockComputerBase<T extends TileComputerBase> extends BlockGeneric implements IBundledRedstoneBlock
|
30 | 33 | {
|
31 |
| - public static final Identifier COMPUTER_DROP = new Identifier( ComputerCraft.MOD_ID, "computer" ); |
| 34 | + private static final Identifier COMPUTER_DROP = new Identifier( ComputerCraft.MOD_ID, "computer" ); |
32 | 35 |
|
33 | 36 | private final ComputerFamily family;
|
34 | 37 |
|
@@ -123,47 +126,18 @@ public ItemStack getPickStack( BlockView world, BlockPos pos, BlockState state )
|
123 | 126 | return super.getPickStack( world, pos, state );
|
124 | 127 | }
|
125 | 128 |
|
126 |
| - /* |
127 |
| - TODO: Find a way of doing creative block drops |
128 | 129 | @Override
|
129 | 130 | @Deprecated
|
130 |
| - public final void dropBlockAsItemWithChance( @Nonnull BlockState state, World world, @Nonnull BlockPos pos, float change, int fortune ) |
| 131 | + public List<ItemStack> getDroppedStacks( BlockState state, LootContext.Builder builder ) |
131 | 132 | {
|
| 133 | + // TODO: Find a way of doing creative block drops |
| 134 | + builder.putDrop( COMPUTER_DROP, ( context, consumer ) -> { |
| 135 | + BlockEntity tile = context.get( LootContextParameters.BLOCK_ENTITY ); |
| 136 | + if( tile instanceof TileComputerBase ) consumer.accept( getItem( (TileComputerBase) tile ) ); |
| 137 | + } ); |
| 138 | + return super.getDroppedStacks( state, builder ); |
132 | 139 | }
|
133 | 140 |
|
134 |
| - @Override |
135 |
| - public final void getDrops( BlockState state, DefaultedList<ItemStack> drops, World world, BlockPos pos, int fortune ) |
136 |
| - { |
137 |
| - BlockEntity tile = world.getBlockEntity( pos ); |
138 |
| - if( tile instanceof TileComputerBase ) |
139 |
| - { |
140 |
| - ItemStack stack = getItem( (TileComputerBase) tile ); |
141 |
| - if( !stack.isEmpty() ) drops.add( stack ); |
142 |
| - } |
143 |
| - } |
144 |
| -
|
145 |
| - @Override |
146 |
| - public boolean removedByPlayer( BlockState state, World world, BlockPos pos, PlayerEntity player, boolean willHarvest, FluidState fluid ) |
147 |
| - { |
148 |
| - if( !world.isClient ) |
149 |
| - { |
150 |
| - // We drop the item here instead of doing it in the harvest method, as we |
151 |
| - // need to drop it for creative players too. |
152 |
| - BlockEntity tile = world.getBlockEntity( pos ); |
153 |
| - if( tile instanceof TileComputerBase ) |
154 |
| - { |
155 |
| - TileComputerBase computer = (TileComputerBase) tile; |
156 |
| - if( !player.abilities.creativeMode || computer.getLabel() != null ) |
157 |
| - { |
158 |
| - dropStack( world, pos, getItem( computer ) ); |
159 |
| - } |
160 |
| - } |
161 |
| - } |
162 |
| -
|
163 |
| - return super.removedByPlayer( state, world, pos, player, willHarvest, fluid ); |
164 |
| - } |
165 |
| - */ |
166 |
| - |
167 | 141 | @Override
|
168 | 142 | public void onPlaced( World world, BlockPos pos, BlockState state, LivingEntity placer, ItemStack stack )
|
169 | 143 | {
|
|
0 commit comments