Model particles, unbreakable rifts, no instamine doors

This commit is contained in:
SD 2021-02-17 11:50:48 +05:30
parent 49fc7dc231
commit 7e7fe9ba50
No known key found for this signature in database
GPG key ID: E36B57EE08544BC5
19 changed files with 93 additions and 63 deletions

View file

@ -23,9 +23,10 @@ import net.minecraft.world.World;
public class DimensionalPortalBlock extends Block implements RiftProvider<EntranceRiftBlockEntity> { public class DimensionalPortalBlock extends Block implements RiftProvider<EntranceRiftBlockEntity> {
public static DirectionProperty FACING = HorizontalFacingBlock.FACING; public static DirectionProperty FACING = HorizontalFacingBlock.FACING;
public DimensionalPortalBlock(Settings settings) { public DimensionalPortalBlock(Settings settings) {
super(settings); super(settings);
setDefaultState(this.stateManager.getDefaultState().with(FACING, Direction.NORTH)); this.setDefaultState(this.stateManager.getDefaultState().with(FACING, Direction.NORTH));
} }
@Override @Override
@ -52,18 +53,18 @@ public class DimensionalPortalBlock extends Block implements RiftProvider<Entran
this.getRift(world, pos, state).teleport(entity); this.getRift(world, pos, state).teleport(entity);
EntranceRiftBlockEntity rift = getRift(world, pos, state); EntranceRiftBlockEntity rift = this.getRift(world, pos, state);
world.setBlockState(pos, ModBlocks.DETACHED_RIFT.getDefaultState()); world.setBlockState(pos, ModBlocks.DETACHED_RIFT.getDefaultState());
((DetachedRiftBlockEntity) world.getBlockEntity(pos)).setData(rift.getData()); ((DetachedRiftBlockEntity) world.getBlockEntity(pos)).setData(rift.getData());
} }
public BlockState rotate(BlockState state, BlockRotation rotation) { public BlockState rotate(BlockState state, BlockRotation rotation) {
return (BlockState)state.with(FACING, rotation.rotate((Direction)state.get(FACING))); return state.with(FACING, rotation.rotate(state.get(FACING)));
} }
public BlockState mirror(BlockState state, BlockMirror mirror) { public BlockState mirror(BlockState state, BlockMirror mirror) {
return state.rotate(mirror.getRotation((Direction)state.get(FACING))); return state.rotate(mirror.getRotation(state.get(FACING)));
} }
protected void appendProperties(StateManager.Builder<Block, BlockState> builder) { protected void appendProperties(StateManager.Builder<Block, BlockState> builder) {

View file

@ -16,22 +16,23 @@ import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment; import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap; import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags;
public final class ModBlocks { public final class ModBlocks {
private static final Map<String, Block> BLOCKS = Maps.newLinkedHashMap(); private static final Map<String, Block> BLOCKS = Maps.newLinkedHashMap();
public static final Map<DyeColor, Block> FABRIC_BLOCKS = new HashMap<>(); public static final Map<DyeColor, Block> FABRIC_BLOCKS = new HashMap<>();
public static final Map<DyeColor, Block> ANCIENT_FABRIC_BLOCKS = new HashMap<>(); private static final Map<DyeColor, Block> ANCIENT_FABRIC_BLOCKS = new HashMap<>();
public static final Block GOLD_DOOR = register("dimdoors:gold_door", new DoorBlock(FabricBlockSettings.of(Material.METAL, MapColor.GOLD).nonOpaque())); public static final Block GOLD_DOOR = register("dimdoors:gold_door", new DoorBlock(FabricBlockSettings.of(Material.METAL, MapColor.GOLD).strength(5.0F).breakByHand(false).breakByTool(FabricToolTags.PICKAXES).nonOpaque()));
public static final Block QUARTZ_DOOR = register("dimdoors:quartz_door", new DoorBlock(FabricBlockSettings.of(Material.STONE, MapColor.OFF_WHITE).nonOpaque())); public static final Block QUARTZ_DOOR = register("dimdoors:quartz_door", new DoorBlock(FabricBlockSettings.of(Material.STONE, MapColor.OFF_WHITE).strength(5.0F).breakByHand(false).breakByTool(FabricToolTags.PICKAXES).nonOpaque()));
public static final Block OAK_DIMENSIONAL_DOOR = register("dimdoors:oak_dimensional_door", new DimensionalDoorBlock(FabricBlockSettings.of(Material.WOOD, MapColor.OAK_TAN).nonOpaque().lightLevel(state -> 10))); public static final Block OAK_DIMENSIONAL_DOOR = register("dimdoors:oak_dimensional_door", new DimensionalDoorBlock(FabricBlockSettings.of(Material.WOOD, MapColor.OAK_TAN).strength(3.0F).breakByTool(FabricToolTags.AXES).breakByHand(true).nonOpaque().luminance(state -> 10)));
public static final Block IRON_DIMENSIONAL_DOOR = register("dimdoors:iron_dimensional_door", new DimensionalDoorBlock(FabricBlockSettings.of(Material.METAL, MapColor.IRON_GRAY).nonOpaque().lightLevel(state -> 10))); public static final Block IRON_DIMENSIONAL_DOOR = register("dimdoors:iron_dimensional_door", new DimensionalDoorBlock(FabricBlockSettings.of(Material.METAL, MapColor.IRON_GRAY).strength(5.0F).breakByHand(false).breakByTool(FabricToolTags.PICKAXES).nonOpaque().luminance(state -> 10)));
public static final Block GOLD_DIMENSIONAL_DOOR = register("dimdoors:gold_dimensional_door", new DimensionalDoorBlock(FabricBlockSettings.of(Material.METAL, MapColor.GOLD).nonOpaque().lightLevel(state -> 10))); public static final Block GOLD_DIMENSIONAL_DOOR = register("dimdoors:gold_dimensional_door", new DimensionalDoorBlock(FabricBlockSettings.of(Material.METAL, MapColor.GOLD).strength(5.0F).breakByHand(false).breakByTool(FabricToolTags.PICKAXES).nonOpaque().luminance(state -> 10)));
public static final Block QUARTZ_DIMENSIONAL_DOOR = register("dimdoors:quartz_dimensional_door", new DimensionalDoorBlock(FabricBlockSettings.of(Material.STONE, MapColor.OFF_WHITE).nonOpaque().lightLevel(state -> 10))); public static final Block QUARTZ_DIMENSIONAL_DOOR = register("dimdoors:quartz_dimensional_door", new DimensionalDoorBlock(FabricBlockSettings.of(Material.STONE, MapColor.OFF_WHITE).strength(5.0F).breakByHand(false).breakByTool(FabricToolTags.PICKAXES).nonOpaque().luminance(state -> 10)));
public static final Block OAK_DIMENSIONAL_TRAPDOOR = register("dimdoors:wood_dimensional_trapdoor", new DimensionalTrapdoorBlock(FabricBlockSettings.of(Material.WOOD, MapColor.OAK_TAN).nonOpaque())); public static final Block OAK_DIMENSIONAL_TRAPDOOR = register("dimdoors:wood_dimensional_trapdoor", new DimensionalTrapdoorBlock(FabricBlockSettings.of(Material.WOOD, MapColor.OAK_TAN).strength(3.0F).breakByTool(FabricToolTags.AXES).breakByHand(true).nonOpaque()));
public static final Block DIMENSIONAL_PORTAL = register("dimdoors:dimensional_portal", new DimensionalPortalBlock(FabricBlockSettings.of(Material.AIR).collidable(false).nonOpaque().dropsNothing().lightLevel(10))); public static final Block DIMENSIONAL_PORTAL = register("dimdoors:dimensional_portal", new DimensionalPortalBlock(FabricBlockSettings.of(Material.AIR).collidable(false).strength(-1.0F, 3600000.0F).nonOpaque().dropsNothing().luminance(10)));
public static final Block DETACHED_RIFT = register("dimdoors:detached_rift", new DetachedRiftBlock(FabricBlockSettings.of(Material.AIR).noCollision().nonOpaque())); public static final Block DETACHED_RIFT = register("dimdoors:detached_rift", new DetachedRiftBlock(FabricBlockSettings.of(Material.AIR).strength(-1.0F, 3600000.0F).noCollision().nonOpaque()));
public static final Block WHITE_FABRIC = registerFabric("dimdoors:white_fabric", DyeColor.WHITE); public static final Block WHITE_FABRIC = registerFabric("dimdoors:white_fabric", DyeColor.WHITE);
public static final Block ORANGE_FABRIC = registerFabric("dimdoors:orange_fabric", DyeColor.ORANGE); public static final Block ORANGE_FABRIC = registerFabric("dimdoors:orange_fabric", DyeColor.ORANGE);
@ -98,7 +99,13 @@ public final class ModBlocks {
@Environment(EnvType.CLIENT) @Environment(EnvType.CLIENT)
public static void initClient() { public static void initClient() {
BlockRenderLayerMap.INSTANCE.putBlocks(RenderLayer.getCutout(), ModBlocks.OAK_DIMENSIONAL_DOOR, ModBlocks.GOLD_DIMENSIONAL_DOOR, ModBlocks.IRON_DIMENSIONAL_DOOR, ModBlocks.OAK_DIMENSIONAL_TRAPDOOR, ModBlocks.QUARTZ_DIMENSIONAL_DOOR, ModBlocks.QUARTZ_DOOR); BlockRenderLayerMap.INSTANCE.putBlocks(RenderLayer.getCutout(),
ModBlocks.OAK_DIMENSIONAL_DOOR,
ModBlocks.GOLD_DIMENSIONAL_DOOR,
ModBlocks.IRON_DIMENSIONAL_DOOR,
ModBlocks.OAK_DIMENSIONAL_TRAPDOOR,
ModBlocks.QUARTZ_DIMENSIONAL_DOOR,
ModBlocks.QUARTZ_DOOR);
} }
public static Block ancientFabricFromDye(DyeColor color) { public static Block ancientFabricFromDye(DyeColor color) {

View file

@ -1,7 +1,8 @@
{ {
"parent": "block/door_bottom", "parent": "block/door_bottom",
"textures": { "textures": {
"bottom": "dimdoors:block/gold_door_lower", "bottom": "dimdoors:block/gold_door_lower",
"top": "dimdoors:block/gold_door_upper" "top": "dimdoors:block/gold_door_upper",
} "particle": "dimdoors:block/gold_door_lower"
}
} }

View file

@ -1,7 +1,8 @@
{ {
"parent": "block/door_bottom_rh", "parent": "block/door_bottom_rh",
"textures": { "textures": {
"bottom": "dimdoors:block/gold_door_lower", "bottom": "dimdoors:block/gold_door_lower",
"top": "dimdoors:block/gold_door_upper" "top": "dimdoors:block/gold_door_upper",
} "particle": "dimdoors:block/gold_door_lower"
}
} }

View file

@ -1,7 +1,8 @@
{ {
"parent": "block/door_top", "parent": "block/door_top",
"textures": { "textures": {
"bottom": "dimdoors:block/gold_door_lower", "bottom": "dimdoors:block/gold_door_lower",
"top": "dimdoors:block/gold_door_upper" "top": "dimdoors:block/gold_door_upper",
} "particle": "dimdoors:block/gold_door_lower"
}
} }

View file

@ -1,7 +1,8 @@
{ {
"parent": "block/door_top_rh", "parent": "block/door_top_rh",
"textures": { "textures": {
"bottom": "dimdoors:block/gold_door_lower", "bottom": "dimdoors:block/gold_door_lower",
"top": "dimdoors:block/gold_door_upper" "top": "dimdoors:block/gold_door_upper",
} "particle": "dimdoors:block/gold_door_lower"
}
} }

View file

@ -1,7 +1,8 @@
{ {
"parent": "block/door_bottom", "parent": "block/door_bottom",
"textures": { "textures": {
"bottom": "dimdoors:block/iron_dimensional_door_lower", "bottom": "dimdoors:block/iron_dimensional_door_lower",
"top": "dimdoors:block/iron_dimensional_door_upper" "top": "dimdoors:block/iron_dimensional_door_upper",
} "particle": "dimdoors:block/iron_dimensional_door_lower"
}
} }

View file

@ -1,7 +1,8 @@
{ {
"parent": "block/door_bottom_rh", "parent": "block/door_bottom_rh",
"textures": { "textures": {
"bottom": "dimdoors:block/iron_dimensional_door_lower", "bottom": "dimdoors:block/iron_dimensional_door_lower",
"top": "dimdoors:block/iron_dimensional_door_upper" "top": "dimdoors:block/iron_dimensional_door_upper",
} "particle": "dimdoors:block/iron_dimensional_door_lower"
}
} }

View file

@ -1,7 +1,8 @@
{ {
"parent": "block/door_top", "parent": "block/door_top",
"textures": { "textures": {
"bottom": "dimdoors:block/iron_dimensional_door_lower", "bottom": "dimdoors:block/iron_dimensional_door_lower",
"top": "dimdoors:block/iron_dimensional_door_upper" "top": "dimdoors:block/iron_dimensional_door_upper",
} "particle": "dimdoors:block/iron_dimensional_door_lower"
}
} }

View file

@ -1,7 +1,8 @@
{ {
"parent": "block/door_top_rh", "parent": "block/door_top_rh",
"textures": { "textures": {
"bottom": "dimdoors:block/iron_dimensional_door_lower", "bottom": "dimdoors:block/iron_dimensional_door_lower",
"top": "dimdoors:block/iron_dimensional_door_upper" "top": "dimdoors:block/iron_dimensional_door_upper",
} "particle": "dimdoors:block/iron_dimensional_door_lower"
}
} }

View file

@ -2,6 +2,7 @@
"parent": "block/door_bottom", "parent": "block/door_bottom",
"textures": { "textures": {
"bottom": "dimdoors:block/oak_dimensional_door_lower", "bottom": "dimdoors:block/oak_dimensional_door_lower",
"top": "dimdoors:block/oak_dimensional_door_upper" "top": "dimdoors:block/oak_dimensional_door_upper",
"particle": "dimdoors:block/oak_dimensional_door_lower"
} }
} }

View file

@ -2,6 +2,7 @@
"parent": "block/door_bottom_rh", "parent": "block/door_bottom_rh",
"textures": { "textures": {
"bottom": "dimdoors:block/oak_dimensional_door_lower", "bottom": "dimdoors:block/oak_dimensional_door_lower",
"top": "dimdoors:block/oak_dimensional_door_upper" "top": "dimdoors:block/oak_dimensional_door_upper",
"particle": "dimdoors:block/oak_dimensional_door_lower"
} }
} }

View file

@ -2,6 +2,7 @@
"parent": "block/door_top", "parent": "block/door_top",
"textures": { "textures": {
"bottom": "dimdoors:block/oak_dimensional_door_lower", "bottom": "dimdoors:block/oak_dimensional_door_lower",
"top": "dimdoors:block/oak_dimensional_door_upper" "top": "dimdoors:block/oak_dimensional_door_upper",
"particle": "dimdoors:block/oak_dimensional_door_lower"
} }
} }

View file

@ -2,6 +2,7 @@
"parent": "block/door_top_rh", "parent": "block/door_top_rh",
"textures": { "textures": {
"bottom": "dimdoors:block/oak_dimensional_door_lower", "bottom": "dimdoors:block/oak_dimensional_door_lower",
"top": "dimdoors:block/oak_dimensional_door_upper" "top": "dimdoors:block/oak_dimensional_door_upper",
"particle": "dimdoors:block/oak_dimensional_door_lower"
} }
} }

View file

@ -2,6 +2,7 @@
"parent": "block/door_bottom", "parent": "block/door_bottom",
"textures": { "textures": {
"bottom": "dimdoors:block/quartz_door_lower", "bottom": "dimdoors:block/quartz_door_lower",
"top": "dimdoors:block/quartz_door_upper" "top": "dimdoors:block/quartz_door_upper",
"particle": "dimdoors:block/quartz_door_lower"
} }
} }

View file

@ -2,6 +2,7 @@
"parent": "block/door_bottom_rh", "parent": "block/door_bottom_rh",
"textures": { "textures": {
"bottom": "dimdoors:block/quartz_door_lower", "bottom": "dimdoors:block/quartz_door_lower",
"top": "dimdoors:block/quartz_door_upper" "top": "dimdoors:block/quartz_door_upper",
"particle": "dimdoors:block/quartz_door_lower"
} }
} }

View file

@ -2,6 +2,7 @@
"parent": "block/door_top", "parent": "block/door_top",
"textures": { "textures": {
"bottom": "dimdoors:block/quartz_door_lower", "bottom": "dimdoors:block/quartz_door_lower",
"top": "dimdoors:block/quartz_door_upper" "top": "dimdoors:block/quartz_door_upper",
"particle": "dimdoors:block/quartz_door_lower"
} }
} }

View file

@ -2,6 +2,7 @@
"parent": "block/door_top_rh", "parent": "block/door_top_rh",
"textures": { "textures": {
"bottom": "dimdoors:block/quartz_door_lower", "bottom": "dimdoors:block/quartz_door_lower",
"top": "dimdoors:block/quartz_door_upper" "top": "dimdoors:block/quartz_door_upper",
"particle": "dimdoors:block/quartz_door_lower"
} }
} }

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"dimdoors:rift_blade"
]
}