Smaragdant enhancements

This commit is contained in:
paulevsGitch 2021-07-09 21:16:23 +03:00
parent ba7ea67f0c
commit 461333650a
61 changed files with 1096 additions and 21 deletions

View file

@ -4,9 +4,9 @@ import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags;
import net.minecraft.world.level.block.SoundType;
import net.minecraft.world.level.material.Material;
import ru.bclib.blocks.BaseRotatedPillarBlock;
import ru.betterend.blocks.basis.LitPillarBlock;
public class SmaragdantCrystalBlock extends BaseRotatedPillarBlock {
public class SmaragdantCrystalBlock extends LitPillarBlock {
public SmaragdantCrystalBlock() {
super(FabricBlockSettings.of(Material.GLASS)
.breakByTool(FabricToolTags.PICKAXES)
@ -14,6 +14,6 @@ public class SmaragdantCrystalBlock extends BaseRotatedPillarBlock {
.hardness(1F)
.resistance(1F)
.noOcclusion()
.sound(SoundType.GLASS));
.sound(SoundType.AMETHYST));
}
}

View file

@ -41,7 +41,7 @@ public class SmaragdantCrystalShardBlock extends BaseAttachedBlock implements IR
.materialColor(MaterialColor.COLOR_GREEN)
.breakByTool(FabricToolTags.PICKAXES)
.luminance(15)
.sound(SoundType.GLASS)
.sound(SoundType.AMETHYST_CLUSTER)
.requiresCorrectToolForDrops()
.noCollission());
}

View file

@ -0,0 +1,24 @@
package ru.betterend.blocks.basis;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.renderer.block.model.BlockModel;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.block.state.BlockState;
import org.jetbrains.annotations.Nullable;
import ru.bclib.blocks.BaseBlock;
public class LitBaseBlock extends BaseBlock {
private static final String PATTERN = "{\"parent\":\"betterend:block/cube_noshade\",\"textures\":{\"texture\":\"betterend:block/name\"}}";
public LitBaseBlock(Properties settings) {
super(settings);
}
@Nullable
@Override
@Environment(EnvType.CLIENT)
public BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) {
return BlockModel.fromString(PATTERN.replace("name", resourceLocation.getPath()));
}
}

View file

@ -0,0 +1,23 @@
package ru.betterend.blocks.basis;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.resources.ResourceLocation;
import ru.bclib.blocks.BaseRotatedPillarBlock;
import java.util.Optional;
public class LitPillarBlock extends BaseRotatedPillarBlock {
private static final String PATTERN = "{\"parent\":\"betterend:block/pillar_noshade\",\"textures\":{\"end\":\"betterend:block/name_top\",\"side\":\"betterend:block/name_side\"}}";
public LitPillarBlock(Properties settings) {
super(settings);
}
@Override
@Environment(EnvType.CLIENT)
protected Optional<String> createBlockPattern(ResourceLocation blockId) {
String name = blockId.getPath();
return Optional.of(PATTERN.replace("name", name));
}
}

View file

@ -42,11 +42,9 @@ import ru.bclib.client.models.ModelsHelper;
import ru.betterend.blocks.EndBlockProperties;
import ru.betterend.blocks.EndBlockProperties.PedestalState;
import ru.betterend.blocks.InfusionPedestal;
import ru.betterend.blocks.entities.EndStoneSmelterBlockEntity;
import ru.betterend.blocks.entities.InfusionPedestalEntity;
import ru.betterend.blocks.entities.PedestalBlockEntity;
import ru.betterend.client.models.Patterns;
import ru.betterend.registry.EndBlockEntities;
import ru.betterend.registry.EndBlocks;
import ru.betterend.rituals.InfusionRitual;
@ -55,6 +53,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.ToIntFunction;
@SuppressWarnings({"deprecation"})
public class PedestalBlock extends BaseBlockNotFull implements EntityBlock {
@ -95,11 +94,19 @@ public class PedestalBlock extends BaseBlockNotFull implements EntityBlock {
protected float height = 1.0F;
public PedestalBlock(Block parent) {
super(FabricBlockSettings.copyOf(parent).luminance(state -> state.getValue(HAS_LIGHT) ? 12 : 0));
super(FabricBlockSettings.copyOf(parent).luminance(getLuminance(parent.defaultBlockState())));
this.registerDefaultState(stateDefinition.any().setValue(STATE, PedestalState.DEFAULT).setValue(HAS_ITEM, false).setValue(HAS_LIGHT, false));
this.parent = parent;
}
private static ToIntFunction<BlockState> getLuminance(BlockState parent) {
final int light = parent.getLightEmission();
if (light > 0) {
return state -> light;
}
return state -> state.getValue(HAS_LIGHT) ? 12 : 0;
}
public float getHeight(BlockState state) {
if (state.getBlock() instanceof PedestalBlock && state.getValue(STATE) == PedestalState.PEDESTAL_TOP) {
return this.height - 0.2F;

View file

@ -4,8 +4,6 @@ import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.tags.BlockTags;
import net.minecraft.tags.ItemTags;
import net.minecraft.world.level.block.Block;
import ru.bclib.blocks.BaseBlock;
import ru.bclib.blocks.BaseRotatedPillarBlock;
import ru.bclib.blocks.BaseSlabBlock;
import ru.bclib.blocks.BaseStairsBlock;
import ru.bclib.blocks.BaseWallBlock;
@ -13,6 +11,8 @@ import ru.bclib.recipes.GridRecipe;
import ru.bclib.util.TagHelper;
import ru.betterend.BetterEnd;
import ru.betterend.blocks.EndPedestal;
import ru.betterend.blocks.basis.LitBaseBlock;
import ru.betterend.blocks.basis.LitPillarBlock;
import ru.betterend.config.Configs;
import ru.betterend.recipe.CraftingRecipes;
import ru.betterend.registry.EndBlocks;
@ -32,14 +32,14 @@ public class CrystalSubblocksMaterial {
public CrystalSubblocksMaterial(String name, Block source) {
FabricBlockSettings material = FabricBlockSettings.copyOf(source);
polished = EndBlocks.registerBlock(name + "_polished", new BaseBlock(material));
tiles = EndBlocks.registerBlock(name + "_tiles", new BaseBlock(material));
pillar = EndBlocks.registerBlock(name + "_pillar", new BaseRotatedPillarBlock(material));
polished = EndBlocks.registerBlock(name + "_polished", new LitBaseBlock(material));
tiles = EndBlocks.registerBlock(name + "_tiles", new LitBaseBlock(material));
pillar = EndBlocks.registerBlock(name + "_pillar", new LitPillarBlock(material));
stairs = EndBlocks.registerBlock(name + "_stairs", new BaseStairsBlock(source));
slab = EndBlocks.registerBlock(name + "_slab", new BaseSlabBlock(source));
wall = EndBlocks.registerBlock(name + "_wall", new BaseWallBlock(source));
pedestal = EndBlocks.registerBlock(name + "_pedestal", new EndPedestal(source));
bricks = EndBlocks.registerBlock(name + "_bricks", new BaseBlock(material));
bricks = EndBlocks.registerBlock(name + "_bricks", new LitBaseBlock(material));
brick_stairs = EndBlocks.registerBlock(name + "_bricks_stairs", new BaseStairsBlock(bricks));
brick_slab = EndBlocks.registerBlock(name + "_bricks_slab", new BaseSlabBlock(bricks));
brick_wall = EndBlocks.registerBlock(name + "_bricks_wall", new BaseWallBlock(bricks));

View file

@ -394,9 +394,9 @@ public class EndBlocks extends BlocksRegistry {
public static final Block ENDER_BLOCK = registerBlock("ender_block", new EnderBlock());
public static final Block AURORA_CRYSTAL = registerBlock("aurora_crystal", new AuroraCrystalBlock());
public static final Block AMBER_BLOCK = registerBlock("amber_block", new AmberBlock());
public static final Block SMARAGDANT_CRYSTAL_SHARD = registerBlock("smaragdant_crystal_shard", new SmaragdantCrystalShardBlock());
public static final Block SMARAGDANT_CRYSTAL = registerBlock("smaragdant_crystal", new SmaragdantCrystalBlock());
public static final CrystalSubblocksMaterial SMARAGDANT_SUBBLOCKS = new CrystalSubblocksMaterial("smaragdant_crystal", SMARAGDANT_CRYSTAL);
public static final Block SMARAGDANT_CRYSTAL_SHARD = registerBlock("smaragdant_crystal_shard", new SmaragdantCrystalShardBlock());
public static final Block RESPAWN_OBELISK = registerBlock("respawn_obelisk", new RespawnObeliskBlock());