From 48c21395a62a6c4b46688963e0573cbdeb3eaed0 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Mon, 8 Mar 2021 15:39:42 +0300 Subject: [PATCH] Smaragdant crystal shards --- .../ru/betterend/blocks/EndPortalBlock.java | 6 +- .../blocks/SmaragdantCrystalShardBlock.java | 107 ++++++++++++++++++ .../java/ru/betterend/registry/EndBlocks.java | 6 +- .../ru/betterend/registry/EndPortals.java | 6 +- .../ru/betterend/rituals/InfusionRitual.java | 4 +- .../trees/GiganticAmaranitaFeature.java | 2 +- .../blockstates/smaragdant_crystal.json | 5 + .../blockstates/smaragdant_crystal_shard.json | 10 ++ .../block/smaragdant_crystal_shard.json | 3 + .../models/block/amaranita_stem.json | 2 +- .../models/block/smaragdant_crystal.json | 12 ++ .../block/smaragdant_crystal_shard.json | 6 + .../models/item/smaragdant_crystal.json | 3 + .../models/item/smaragdant_crystal_shard.json | 6 + .../block/smaragdant_crystal_shard.png | Bin 0 -> 431 bytes .../block/smaragdant_crystal_side.png | Bin 0 -> 249 bytes .../textures/block/smaragdant_crystal_top.png | Bin 0 -> 259 bytes 17 files changed, 166 insertions(+), 12 deletions(-) create mode 100644 src/main/java/ru/betterend/blocks/SmaragdantCrystalShardBlock.java create mode 100644 src/main/resources/assets/betterend/blockstates/smaragdant_crystal.json create mode 100644 src/main/resources/assets/betterend/blockstates/smaragdant_crystal_shard.json create mode 100644 src/main/resources/assets/betterend/materialmaps/block/smaragdant_crystal_shard.json create mode 100644 src/main/resources/assets/betterend/models/block/smaragdant_crystal.json create mode 100644 src/main/resources/assets/betterend/models/block/smaragdant_crystal_shard.json create mode 100644 src/main/resources/assets/betterend/models/item/smaragdant_crystal.json create mode 100644 src/main/resources/assets/betterend/models/item/smaragdant_crystal_shard.json create mode 100644 src/main/resources/assets/betterend/textures/block/smaragdant_crystal_shard.png create mode 100644 src/main/resources/assets/betterend/textures/block/smaragdant_crystal_side.png create mode 100644 src/main/resources/assets/betterend/textures/block/smaragdant_crystal_top.png diff --git a/src/main/java/ru/betterend/blocks/EndPortalBlock.java b/src/main/java/ru/betterend/blocks/EndPortalBlock.java index f9bcb5a9..f13b0b0d 100644 --- a/src/main/java/ru/betterend/blocks/EndPortalBlock.java +++ b/src/main/java/ru/betterend/blocks/EndPortalBlock.java @@ -1,5 +1,8 @@ package ru.betterend.blocks; +import java.util.Objects; +import java.util.Random; + import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; @@ -36,9 +39,6 @@ import ru.betterend.interfaces.TeleportingEntity; import ru.betterend.registry.EndParticles; import ru.betterend.registry.EndPortals; -import java.util.Objects; -import java.util.Random; - public class EndPortalBlock extends NetherPortalBlock implements IRenderTypeable, IColorProvider { public static final IntProperty PORTAL = BlockProperties.PORTAL; diff --git a/src/main/java/ru/betterend/blocks/SmaragdantCrystalShardBlock.java b/src/main/java/ru/betterend/blocks/SmaragdantCrystalShardBlock.java new file mode 100644 index 00000000..69b88741 --- /dev/null +++ b/src/main/java/ru/betterend/blocks/SmaragdantCrystalShardBlock.java @@ -0,0 +1,107 @@ +package ru.betterend.blocks; + +import java.util.EnumMap; + +import com.google.common.collect.Maps; + +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.FluidFillable; +import net.minecraft.block.Material; +import net.minecraft.block.MaterialColor; +import net.minecraft.block.ShapeContext; +import net.minecraft.block.Waterloggable; +import net.minecraft.fluid.Fluid; +import net.minecraft.fluid.FluidState; +import net.minecraft.fluid.Fluids; +import net.minecraft.item.ItemPlacementContext; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.BooleanProperty; +import net.minecraft.state.property.Properties; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.util.shape.VoxelShapes; +import net.minecraft.world.BlockView; +import net.minecraft.world.WorldAccess; +import net.minecraft.world.WorldView; +import ru.betterend.blocks.basis.AttachedBlock; +import ru.betterend.client.render.ERenderLayer; +import ru.betterend.interfaces.IRenderTypeable; + +public class SmaragdantCrystalShardBlock extends AttachedBlock implements IRenderTypeable, Waterloggable, FluidFillable { + private static final EnumMap BOUNDING_SHAPES = Maps.newEnumMap(Direction.class); + public static final BooleanProperty WATERLOGGED = Properties.WATERLOGGED; + + public SmaragdantCrystalShardBlock() { + super(FabricBlockSettings.of(Material.STONE) + .materialColor(MaterialColor.GREEN) + .breakByTool(FabricToolTags.PICKAXES) + .sounds(BlockSoundGroup.GLASS) + .luminance(15) + .requiresTool() + .noCollision()); + } + + @Override + protected void appendProperties(StateManager.Builder stateManager) { + super.appendProperties(stateManager); + stateManager.add(WATERLOGGED); + } + + @Override + public ERenderLayer getRenderLayer() { + return ERenderLayer.CUTOUT; + } + + @Override + public boolean canFillWithFluid(BlockView world, BlockPos pos, BlockState state, Fluid fluid) { + return !state.get(WATERLOGGED); + } + + @Override + public boolean tryFillWithFluid(WorldAccess world, BlockPos pos, BlockState state, FluidState fluidState) { + return !state.get(WATERLOGGED); + } + + @Override + public BlockState getPlacementState(ItemPlacementContext ctx) { + BlockState state = super.getPlacementState(ctx); + if (state != null) { + WorldView worldView = ctx.getWorld(); + BlockPos blockPos = ctx.getBlockPos(); + boolean water = worldView.getFluidState(blockPos).getFluid() == Fluids.WATER; + return state.with(WATERLOGGED, water); + } + return null; + } + + @Override + public FluidState getFluidState(BlockState state) { + return state.get(WATERLOGGED) ? Fluids.WATER.getStill(false) : Fluids.EMPTY.getDefaultState(); + } + + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView view, BlockPos pos, ShapeContext ePos) { + return BOUNDING_SHAPES.get(state.get(FACING)); + } + + @Override + public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { + Direction direction = (Direction) state.get(FACING); + BlockPos blockPos = pos.offset(direction.getOpposite()); + return world.getBlockState(blockPos).isSideSolidFullSquare(world, blockPos, direction); + } + + static { + BOUNDING_SHAPES.put(Direction.UP, VoxelShapes.cuboid(0.125, 0.0, 0.125, 0.875F, 0.875F, 0.875F)); + BOUNDING_SHAPES.put(Direction.DOWN, VoxelShapes.cuboid(0.125, 0.125, 0.125, 0.875F, 1.0, 0.875F)); + BOUNDING_SHAPES.put(Direction.NORTH, VoxelShapes.cuboid(0.125, 0.125, 0.125, 0.875F, 0.875F, 1.0)); + BOUNDING_SHAPES.put(Direction.SOUTH, VoxelShapes.cuboid(0.125, 0.125, 0.0, 0.875F, 0.875F, 0.875F)); + BOUNDING_SHAPES.put(Direction.WEST, VoxelShapes.cuboid(0.125, 0.125, 0.125, 1.0, 0.875F, 0.875F)); + BOUNDING_SHAPES.put(Direction.EAST, VoxelShapes.cuboid(0.0, 0.125, 0.125, 0.875F, 0.875F, 0.875F)); + } +} diff --git a/src/main/java/ru/betterend/registry/EndBlocks.java b/src/main/java/ru/betterend/registry/EndBlocks.java index 8fa9b478..7b60dd55 100644 --- a/src/main/java/ru/betterend/registry/EndBlocks.java +++ b/src/main/java/ru/betterend/registry/EndBlocks.java @@ -46,6 +46,7 @@ import ru.betterend.blocks.EnderBlock; import ru.betterend.blocks.EndstoneDustBlock; import ru.betterend.blocks.EternalPedestal; import ru.betterend.blocks.EternalRunedFlavolite; +import ru.betterend.blocks.GlowingHymenophoreBlock; import ru.betterend.blocks.GlowingMossBlock; import ru.betterend.blocks.GlowingPillarLuminophorBlock; import ru.betterend.blocks.GlowingPillarRootsBlock; @@ -70,7 +71,6 @@ import ru.betterend.blocks.MengerSpongeWetBlock; import ru.betterend.blocks.MissingTileBlock; import ru.betterend.blocks.MossyBoneBlock; import ru.betterend.blocks.MossyGlowshroomCapBlock; -import ru.betterend.blocks.GlowingHymenophoreBlock; import ru.betterend.blocks.MossyGlowshroomSaplingBlock; import ru.betterend.blocks.MossyObsidian; import ru.betterend.blocks.MurkweedBlock; @@ -85,6 +85,7 @@ import ru.betterend.blocks.SilkMothNestBlock; import ru.betterend.blocks.SmallAmaranitaBlock; import ru.betterend.blocks.SmallJellyshroomBlock; import ru.betterend.blocks.SmaragdantCrystalBlock; +import ru.betterend.blocks.SmaragdantCrystalShardBlock; import ru.betterend.blocks.SulphurCrystalBlock; import ru.betterend.blocks.TenaneaFlowersBlock; import ru.betterend.blocks.TenaneaSaplingBlock; @@ -333,7 +334,8 @@ public class EndBlocks { 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 = registerBlock("smaragdant_crystal", new SmaragdantCrystalBlock()); + public static final Block SMARAGDANT_CRYSTAL = registerBlock("smaragdant_crystal", new SmaragdantCrystalBlock()); + public static final Block SMARAGDANT_CRYSTAL_SHARD = registerBlock("smaragdant_crystal_shard", new SmaragdantCrystalShardBlock()); public static final Block RESPAWN_OBELISK = registerBlock("respawn_obelisk", new RespawnObeliskBlock()); diff --git a/src/main/java/ru/betterend/registry/EndPortals.java b/src/main/java/ru/betterend/registry/EndPortals.java index e6841e88..83ee1472 100644 --- a/src/main/java/ru/betterend/registry/EndPortals.java +++ b/src/main/java/ru/betterend/registry/EndPortals.java @@ -1,8 +1,10 @@ package ru.betterend.registry; +import java.io.File; + import com.google.gson.JsonArray; import com.google.gson.JsonObject; -import com.ibm.icu.impl.UResource; + import net.minecraft.server.MinecraftServer; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.Identifier; @@ -11,8 +13,6 @@ import ru.betterend.config.ConfigWriter; import ru.betterend.util.JsonFactory; import ru.betterend.util.MHelper; -import java.io.File; - public class EndPortals { private static PortalInfo[] portals; diff --git a/src/main/java/ru/betterend/rituals/InfusionRitual.java b/src/main/java/ru/betterend/rituals/InfusionRitual.java index 628b5a92..0ac50e97 100644 --- a/src/main/java/ru/betterend/rituals/InfusionRitual.java +++ b/src/main/java/ru/betterend/rituals/InfusionRitual.java @@ -1,5 +1,7 @@ package ru.betterend.rituals; +import java.awt.Point; + import net.minecraft.block.entity.BlockEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.Inventory; @@ -14,8 +16,6 @@ import ru.betterend.blocks.entities.PedestalBlockEntity; import ru.betterend.particle.InfusionParticleType; import ru.betterend.recipe.builders.InfusionRecipe; -import java.awt.*; - public class InfusionRitual implements Inventory { private static final Point[] PEDESTALS_MAP = new Point[] { new Point(0, 3), new Point(2, 2), new Point(3, 0), new Point(2, -2), diff --git a/src/main/java/ru/betterend/world/features/trees/GiganticAmaranitaFeature.java b/src/main/java/ru/betterend/world/features/trees/GiganticAmaranitaFeature.java index f91d2d0d..01ffa490 100644 --- a/src/main/java/ru/betterend/world/features/trees/GiganticAmaranitaFeature.java +++ b/src/main/java/ru/betterend/world/features/trees/GiganticAmaranitaFeature.java @@ -8,11 +8,11 @@ import net.minecraft.block.BlockState; import net.minecraft.block.Material; import net.minecraft.client.util.math.Vector3f; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockPos.Mutable; import net.minecraft.util.math.Direction; import net.minecraft.util.math.Direction.Axis; import net.minecraft.util.math.Direction.AxisDirection; import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.BlockPos.Mutable; import net.minecraft.world.StructureWorldAccess; import net.minecraft.world.gen.chunk.ChunkGenerator; import net.minecraft.world.gen.feature.DefaultFeatureConfig; diff --git a/src/main/resources/assets/betterend/blockstates/smaragdant_crystal.json b/src/main/resources/assets/betterend/blockstates/smaragdant_crystal.json new file mode 100644 index 00000000..90802113 --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/smaragdant_crystal.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "betterend:block/smaragdant_crystal" } + } +} diff --git a/src/main/resources/assets/betterend/blockstates/smaragdant_crystal_shard.json b/src/main/resources/assets/betterend/blockstates/smaragdant_crystal_shard.json new file mode 100644 index 00000000..a029b55e --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/smaragdant_crystal_shard.json @@ -0,0 +1,10 @@ +{ + "variants": { + "facing=up": { "model": "betterend:block/smaragdant_crystal_shard" }, + "facing=down": { "model": "betterend:block/smaragdant_crystal_shard", "x": 180 }, + "facing=north": { "model": "betterend:block/smaragdant_crystal_shard", "x": 90 }, + "facing=south": { "model": "betterend:block/smaragdant_crystal_shard", "x": 90, "y": 180 }, + "facing=east": { "model": "betterend:block/smaragdant_crystal_shard", "x": 90, "y": 90 }, + "facing=west": { "model": "betterend:block/smaragdant_crystal_shard", "x": 90, "y": 270 } + } +} diff --git a/src/main/resources/assets/betterend/materialmaps/block/smaragdant_crystal_shard.json b/src/main/resources/assets/betterend/materialmaps/block/smaragdant_crystal_shard.json new file mode 100644 index 00000000..a72e6e79 --- /dev/null +++ b/src/main/resources/assets/betterend/materialmaps/block/smaragdant_crystal_shard.json @@ -0,0 +1,3 @@ +{ + "defaultMaterial": "betterend:glow_all" +} diff --git a/src/main/resources/assets/betterend/models/block/amaranita_stem.json b/src/main/resources/assets/betterend/models/block/amaranita_stem.json index f4b0c637..ddef4114 100644 --- a/src/main/resources/assets/betterend/models/block/amaranita_stem.json +++ b/src/main/resources/assets/betterend/models/block/amaranita_stem.json @@ -4,7 +4,7 @@ "down": "betterend:block/amaranita_hyphae_top", "east": "betterend:block/amaranita_hyphae_side", "north": "betterend:block/amaranita_hyphae_side", - "particle": "betterend:block/mossy_bone_side_ver", + "particle": "betterend:block/amaranita_hyphae_side", "south": "betterend:block/amaranita_hyphae_side", "up": "betterend:block/amaranita_hyphae_top", "west": "betterend:block/amaranita_hyphae_side" diff --git a/src/main/resources/assets/betterend/models/block/smaragdant_crystal.json b/src/main/resources/assets/betterend/models/block/smaragdant_crystal.json new file mode 100644 index 00000000..8e5c23a0 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/smaragdant_crystal.json @@ -0,0 +1,12 @@ +{ + "parent": "block/cube", + "textures": { + "down": "betterend:block/smaragdant_crystal_top", + "east": "betterend:block/smaragdant_crystal_side", + "north": "betterend:block/smaragdant_crystal_side", + "particle": "betterend:block/smaragdant_crystal_side", + "south": "betterend:block/smaragdant_crystal_side", + "up": "betterend:block/smaragdant_crystal_top", + "west": "betterend:block/smaragdant_crystal_side" + } +} diff --git a/src/main/resources/assets/betterend/models/block/smaragdant_crystal_shard.json b/src/main/resources/assets/betterend/models/block/smaragdant_crystal_shard.json new file mode 100644 index 00000000..ed5c42d9 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/smaragdant_crystal_shard.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "betterend:block/smaragdant_crystal_shard" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/smaragdant_crystal.json b/src/main/resources/assets/betterend/models/item/smaragdant_crystal.json new file mode 100644 index 00000000..b8e5fa55 --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/smaragdant_crystal.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/smaragdant_crystal" +} diff --git a/src/main/resources/assets/betterend/models/item/smaragdant_crystal_shard.json b/src/main/resources/assets/betterend/models/item/smaragdant_crystal_shard.json new file mode 100644 index 00000000..e8dbb27e --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/smaragdant_crystal_shard.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "betterend:block/smaragdant_crystal_shard" + } +} diff --git a/src/main/resources/assets/betterend/textures/block/smaragdant_crystal_shard.png b/src/main/resources/assets/betterend/textures/block/smaragdant_crystal_shard.png new file mode 100644 index 0000000000000000000000000000000000000000..8e0b0c4e30a742bfb85a71e2a61723e338f3c9ec GIT binary patch literal 431 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc4KAK8jv*HQ$$$R;w`W#u;Pjfz%dxA$P>+Az zga3;>djiyC9+)z$xf#iHsPboT$A} z9=NxfhbNOufX9f3*C4k3N9)73+Dr8UY#S39-qgt2EqEKC|135sA)<`+kQ!6K zLhFJRO-uJ_$aehy$gqPkA-sW!Q@r6O-zEl4tH4+WCWY{ZMIm#zAH{!p;mj$|#>TMt XY-OtISLrFhKxXiC^>bP0l+XkKtqz_P literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/smaragdant_crystal_side.png b/src/main/resources/assets/betterend/textures/block/smaragdant_crystal_side.png new file mode 100644 index 0000000000000000000000000000000000000000..6ee675aa88693e7f049f557b47dc1c0a69e962fc GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~i2$DvS0K&c zlg1F6%TQFs&{@r}pq1gwGKTlFbtPlA1En}hg8YIR{zJgkQz1q`v1(5j#}J9BzUKq^ z8Vq=tE^KwE{x9uqo$T}N@nyz&Dw~vogglRUs-~%SdoP6tj&o7=ON&nBVv|j$j;69hd