Fixed dimensional doors not mining like they should.
This commit is contained in:
parent
c01db32798
commit
e9087cfae2
7 changed files with 39 additions and 17 deletions
|
@ -25,6 +25,7 @@ import net.minecraft.world.level.block.state.properties.BlockSetType;
|
|||
import net.minecraft.world.level.block.state.properties.DoubleBlockHalf;
|
||||
import net.minecraft.world.level.gameevent.GameEvent;
|
||||
import net.minecraft.world.level.material.Fluids;
|
||||
import net.minecraft.world.level.storage.loot.LootParams;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraft.world.phys.shapes.Shapes;
|
||||
|
@ -42,6 +43,8 @@ import org.dimdev.dimdoors.block.entity.DetachedRiftBlockEntity;
|
|||
import org.dimdev.dimdoors.block.entity.EntranceRiftBlockEntity;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static net.minecraft.world.level.material.PushReaction.BLOCK;
|
||||
|
||||
public class DimensionalDoorBlock extends WaterLoggableDoorBlock implements RiftProvider<EntranceRiftBlockEntity>, CoordinateTransformerBlock, ExplosionConvertibleBlock, AfterMoveCollidableBlock {
|
||||
|
@ -157,6 +160,11 @@ public class DimensionalDoorBlock extends WaterLoggableDoorBlock implements Rift
|
|||
return new EntranceRiftBlockEntity(pos, state);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ItemStack> getDrops(BlockState state, LootParams.Builder params) {
|
||||
return super.getDrops(state, params);
|
||||
}
|
||||
|
||||
public void createDetachedRift(Level world, BlockPos pos) {
|
||||
createDetachedRift(world, pos, world.getBlockState(pos));
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@ import dev.architectury.registry.registries.Registrar;
|
|||
import dev.architectury.registry.registries.RegistrarManager;
|
||||
import dev.architectury.utils.Env;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.core.Holder;
|
||||
import net.minecraft.core.registries.BuiltInRegistries;
|
||||
import net.minecraft.core.registries.Registries;
|
||||
import net.minecraft.network.chat.Component;
|
||||
|
@ -101,7 +102,7 @@ public class DimensionalDoorBlockRegistrar {
|
|||
|
||||
if(mappedDoorBlocks.containsKey(gennedId)) return;
|
||||
|
||||
Block dimBlock = registrar.register(gennedId, () -> constructor.apply(BlockBehaviour.Properties.copy((BlockBehaviour) original), original)).get();
|
||||
Block dimBlock = registrar.register(gennedId, () -> constructor.apply(BlockBehaviour.Properties.copy((BlockBehaviour) original).requiresCorrectToolForDrops(), original)).get();
|
||||
// ModBlockEntityTypes.ENTRANCE_RIFT.get().addBlock(dimBlock); //TODO: Add
|
||||
mappedDoorBlocks.put(gennedId, location);
|
||||
itemRegistrar.notifyBlockMapped((Block) original, dimBlock);
|
||||
|
@ -186,7 +187,9 @@ public class DimensionalDoorBlockRegistrar {
|
|||
|
||||
@Override
|
||||
public List<ItemStack> getDrops(BlockState state, LootParams.Builder params) {
|
||||
return originalBlock.getDrops(state, params);
|
||||
var defaultState = originalBlock.defaultBlockState();
|
||||
|
||||
return originalBlock.getDrops(defaultState, params);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
package org.dimdev.dimdoors.mixin;
|
||||
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import org.dimdev.dimdoors.block.door.DimensionalDoorBlockRegistrar;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.ModifyArg;
|
||||
|
||||
@Mixin(ItemStack.class)
|
||||
public class ItemStackMixin {
|
||||
|
||||
@ModifyArg(method = "getDestroySpeed", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/Item;getDestroySpeed(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/level/block/state/BlockState;)F"), index = 1)
|
||||
public BlockState speed(BlockState state) {
|
||||
return state.getBlock() instanceof DimensionalDoorBlockRegistrar.AutoGenDimensionalDoorBlock autogenDoor ? autogenDoor.getOriginalBlock().defaultBlockState() : state;
|
||||
}
|
||||
|
||||
@ModifyArg(method = "isCorrectToolForDrops", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/Item;isCorrectToolForDrops(Lnet/minecraft/world/level/block/state/BlockState;)Z"), index = 0)
|
||||
public BlockState isCorrect(BlockState state) {
|
||||
return state.getBlock() instanceof DimensionalDoorBlockRegistrar.AutoGenDimensionalDoorBlock autogenDoor ? autogenDoor.getOriginalBlock().defaultBlockState() : state;
|
||||
}
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
[
|
||||
{
|
||||
"data": {
|
||||
"destination": {
|
||||
"type": "dimdoors:template",
|
||||
"template": "dimdoors:lab/lab_hallway"
|
||||
}
|
||||
},
|
||||
"condition": {
|
||||
"type": "dimdoors:always_true"
|
||||
}
|
||||
}
|
||||
]
|
|
@ -6,6 +6,7 @@
|
|||
"mixins": [
|
||||
"ArgumentTypesMixin",
|
||||
"BlockMixin",
|
||||
"ItemStackMixin",
|
||||
"DoorBlockMixin",
|
||||
"EntityMixin",
|
||||
"ExplosionMixin",
|
||||
|
|
|
@ -30,6 +30,7 @@ public class BlockTagProvider extends FabricTagProvider.BlockTagProvider {
|
|||
}
|
||||
|
||||
protected void configure(HolderGetter.Provider arg) {
|
||||
|
||||
add(ModBlockTags.DECAY_TO_AIR,
|
||||
Blocks.COBWEB,
|
||||
ModBlocks.DRIFTWOOD_LEAVES.get(),
|
||||
|
|
|
@ -25,8 +25,8 @@ public class LootTableProvider extends FabricBlockLootTableProvider {
|
|||
for (RegistrySupplier<Block> block : ModBlocks.FABRIC_BLOCKS.values()) {
|
||||
this.dropWhenSilkTouch(block.get());
|
||||
}
|
||||
this.dropWhenSilkTouch(ModBlocks.GOLD_DOOR.get());
|
||||
this.dropWhenSilkTouch(ModBlocks.QUARTZ_DOOR.get());
|
||||
this.dropSelf(ModBlocks.GOLD_DOOR.get());
|
||||
this.dropSelf(ModBlocks.QUARTZ_DOOR.get());
|
||||
// this.addDropWithSilkTouch(ModBlocks.OAK_DIMENSIONAL_DOOR);
|
||||
// this.addDropWithSilkTouch(ModBlocks.IRON_DIMENSIONAL_DOOR);
|
||||
// this.addDropWithSilkTouch(ModBlocks.GOLD_DIMENSIONAL_DOOR);
|
||||
|
|
Loading…
Reference in a new issue