From d32eae2c0635475dc14d4360bebe465fe2ec331e Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Mon, 1 Mar 2021 04:27:21 +0300 Subject: [PATCH] Mossy bone, multiple terrain plants --- .../ru/betterend/blocks/MossyBoneBlock.java | 56 ++++++++++++++++++ .../betterend/blocks/TerrainPlantBlock.java | 11 +++- .../java/ru/betterend/registry/EndBlocks.java | 6 +- .../betterend/blockstates/mossy_bone.json | 7 +++ .../models/block/mossy_bone_hor.json | 12 ++++ .../models/block/mossy_bone_ver.json | 12 ++++ .../models/item/amaranita_hyphae.json | 3 - .../betterend/models/item/mossy_bone.json | 3 + .../textures/block/mossy_bone_cut.png | Bin 0 -> 268 bytes .../textures/block/mossy_bone_side_hor.png | Bin 0 -> 251 bytes .../textures/block/mossy_bone_side_ver.png | Bin 0 -> 251 bytes 11 files changed, 102 insertions(+), 8 deletions(-) create mode 100644 src/main/java/ru/betterend/blocks/MossyBoneBlock.java create mode 100644 src/main/resources/assets/betterend/blockstates/mossy_bone.json create mode 100644 src/main/resources/assets/betterend/models/block/mossy_bone_hor.json create mode 100644 src/main/resources/assets/betterend/models/block/mossy_bone_ver.json delete mode 100644 src/main/resources/assets/betterend/models/item/amaranita_hyphae.json create mode 100644 src/main/resources/assets/betterend/models/item/mossy_bone.json create mode 100644 src/main/resources/assets/betterend/textures/block/mossy_bone_cut.png create mode 100644 src/main/resources/assets/betterend/textures/block/mossy_bone_side_hor.png create mode 100644 src/main/resources/assets/betterend/textures/block/mossy_bone_side_ver.png diff --git a/src/main/java/ru/betterend/blocks/MossyBoneBlock.java b/src/main/java/ru/betterend/blocks/MossyBoneBlock.java new file mode 100644 index 00000000..971f4fd8 --- /dev/null +++ b/src/main/java/ru/betterend/blocks/MossyBoneBlock.java @@ -0,0 +1,56 @@ +package ru.betterend.blocks; + +import java.util.Collections; +import java.util.List; +import java.util.Random; + +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.SnowBlock; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.enchantment.Enchantments; +import net.minecraft.item.ItemStack; +import net.minecraft.loot.context.LootContext; +import net.minecraft.loot.context.LootContextParameters; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.world.WorldView; +import net.minecraft.world.chunk.light.ChunkLightProvider; +import ru.betterend.blocks.basis.EndPillarBlock; + +public class MossyBoneBlock extends EndPillarBlock { + public MossyBoneBlock() { + super(FabricBlockSettings.copyOf(Blocks.BONE_BLOCK).hardness(0.5F).ticksRandomly()); + } + + @Override + public List getDroppedStacks(BlockState state, LootContext.Builder builder) { + ItemStack tool = builder.get(LootContextParameters.TOOL); + if (tool != null && EnchantmentHelper.getLevel(Enchantments.SILK_TOUCH, tool) > 0) { + return Collections.singletonList(new ItemStack(this)); + } + return Collections.singletonList(new ItemStack(Blocks.BONE_BLOCK)); + } + + @Override + public void randomTick(BlockState state, ServerWorld world, BlockPos pos, Random random) { + if (random.nextInt(16) == 0 && !canSurvive(state, world, pos)) { + world.setBlockState(pos, Blocks.BONE_BLOCK.getDefaultState().with(AXIS, state.get(AXIS))); + } + } + + public static boolean canSurvive(BlockState state, WorldView worldView, BlockPos pos) { + BlockPos blockPos = pos.up(); + BlockState blockState = worldView.getBlockState(blockPos); + if (blockState.isOf(Blocks.SNOW) && (Integer)blockState.get(SnowBlock.LAYERS) == 1) { + return true; + } else if (blockState.getFluidState().getLevel() == 8) { + return false; + } else { + int i = ChunkLightProvider.getRealisticOpacity(worldView, state, pos, blockState, blockPos, Direction.UP, blockState.getOpacity(worldView, blockPos)); + return i < 5; + } + } +} diff --git a/src/main/java/ru/betterend/blocks/TerrainPlantBlock.java b/src/main/java/ru/betterend/blocks/TerrainPlantBlock.java index 53e3b007..f558395d 100644 --- a/src/main/java/ru/betterend/blocks/TerrainPlantBlock.java +++ b/src/main/java/ru/betterend/blocks/TerrainPlantBlock.java @@ -5,15 +5,20 @@ import net.minecraft.block.BlockState; import ru.betterend.blocks.basis.EndPlantBlock; public class TerrainPlantBlock extends EndPlantBlock { - private final Block ground; + private final Block[] ground; - public TerrainPlantBlock(Block ground) { + public TerrainPlantBlock(Block... ground) { super(true); this.ground = ground; } @Override protected boolean isTerrain(BlockState state) { - return state.isOf(ground); + for (Block block: ground) { + if (state.isOf(block)) { + return true; + } + } + return false; } } diff --git a/src/main/java/ru/betterend/registry/EndBlocks.java b/src/main/java/ru/betterend/registry/EndBlocks.java index b3fd0614..22764be5 100644 --- a/src/main/java/ru/betterend/registry/EndBlocks.java +++ b/src/main/java/ru/betterend/registry/EndBlocks.java @@ -68,6 +68,7 @@ import ru.betterend.blocks.LumecornSeedBlock; import ru.betterend.blocks.MengerSpongeBlock; import ru.betterend.blocks.MengerSpongeWetBlock; import ru.betterend.blocks.MissingTileBlock; +import ru.betterend.blocks.MossyBoneBlock; import ru.betterend.blocks.MossyGlowshroomCapBlock; import ru.betterend.blocks.MossyGlowshroomHymenophoreBlock; import ru.betterend.blocks.MossyGlowshroomSaplingBlock; @@ -144,6 +145,7 @@ public class EndBlocks { public static final Block RUTISCUS_PATH = registerBlock("rutiscus_path", new EndPathBlock(RUTISCUS)); public static final Block MOSSY_OBSIDIAN = registerBlock("mossy_obsidian", new MossyObsidian()); + public static final Block MOSSY_BONE = registerBlock("mossy_bone", new MossyBoneBlock()); // Rocks // public static final StoneMaterial FLAVOLITE = new StoneMaterial("flavolite", MaterialColor.SAND); @@ -231,8 +233,8 @@ public class EndBlocks { public static final Block SALTEAGO = registerBlock("salteago", new TerrainPlantBlock(END_MOSS)); public static final Block VAIOLUSH_FERN = registerBlock("vaiolush_fern", new TerrainPlantBlock(END_MOSS)); public static final Block FRACTURN = registerBlock("fracturn", new TerrainPlantBlock(END_MOSS)); - public static final Block CLAWFERN = registerBlock("clawfern", new TerrainPlantBlock(SANGNUM)); - public static final Block GLOBULAGUS = registerBlock("globulagus", new TerrainPlantBlock(SANGNUM)); + public static final Block CLAWFERN = registerBlock("clawfern", new TerrainPlantBlock(SANGNUM, MOSSY_OBSIDIAN, MOSSY_BONE)); + public static final Block GLOBULAGUS = registerBlock("globulagus", new TerrainPlantBlock(SANGNUM, MOSSY_OBSIDIAN, MOSSY_BONE)); public static final Block ORANGO = registerBlock("orango", new TerrainPlantBlock(RUTISCUS)); public static final Block AERIDIUM = registerBlock("aeridium", new TerrainPlantBlock(RUTISCUS)); public static final Block LUTEBUS = registerBlock("lutebus", new TerrainPlantBlock(RUTISCUS)); diff --git a/src/main/resources/assets/betterend/blockstates/mossy_bone.json b/src/main/resources/assets/betterend/blockstates/mossy_bone.json new file mode 100644 index 00000000..f825d388 --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/mossy_bone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=x": { "model": "betterend:block/mossy_bone_hor", "y": 90 }, + "axis=y": { "model": "betterend:block/mossy_bone_ver" }, + "axis=z": { "model": "betterend:block/mossy_bone_hor" } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/mossy_bone_hor.json b/src/main/resources/assets/betterend/models/block/mossy_bone_hor.json new file mode 100644 index 00000000..acc98207 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/mossy_bone_hor.json @@ -0,0 +1,12 @@ +{ + "parent": "block/cube", + "textures": { + "down": "block/bone_block_side", + "east": "betterend:block/mossy_bone_side_ver", + "north": "betterend:block/mossy_bone_cut", + "particle": "betterend:block/mossy_bone_side_ver", + "south": "betterend:block/mossy_bone_cut", + "up": "betterend:block/sangnum_top", + "west": "betterend:block/mossy_bone_side_ver" + } +} diff --git a/src/main/resources/assets/betterend/models/block/mossy_bone_ver.json b/src/main/resources/assets/betterend/models/block/mossy_bone_ver.json new file mode 100644 index 00000000..8534387e --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/mossy_bone_ver.json @@ -0,0 +1,12 @@ +{ + "parent": "block/cube", + "textures": { + "down": "block/bone_block_top", + "east": "betterend:block/mossy_bone_side_ver", + "north": "betterend:block/mossy_bone_side_ver", + "particle": "betterend:block/mossy_bone_side_ver", + "south": "betterend:block/mossy_bone_side_ver", + "up": "betterend:block/sangnum_top", + "west": "betterend:block/mossy_bone_side_ver" + } +} diff --git a/src/main/resources/assets/betterend/models/item/amaranita_hyphae.json b/src/main/resources/assets/betterend/models/item/amaranita_hyphae.json deleted file mode 100644 index 0277110e..00000000 --- a/src/main/resources/assets/betterend/models/item/amaranita_hyphae.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "betterend:block/amaranita_hyphae" -} diff --git a/src/main/resources/assets/betterend/models/item/mossy_bone.json b/src/main/resources/assets/betterend/models/item/mossy_bone.json new file mode 100644 index 00000000..22aebdb8 --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/mossy_bone.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/mossy_bone_ver" +} diff --git a/src/main/resources/assets/betterend/textures/block/mossy_bone_cut.png b/src/main/resources/assets/betterend/textures/block/mossy_bone_cut.png new file mode 100644 index 0000000000000000000000000000000000000000..774c8208ef40ab6720144f7137f9245f71a7abc6 GIT binary patch literal 268 zcmV+n0rUQeP)Px#Do{*RMY9_lydEFLAtcTvDcC43;Vd)iFF5owJ;T4D$;GG6%B|elz~kV`=;hK8 zQ(VXZ0059lL_t&-l_iY}7Q`S30|~Hv?ftL2vGplBV^D!k808Db$kfCRCWSe4;b7#TFQ zdl*4+m+cu$SJ&lz86`GhhmplyzW^Ft{sNxF0VA}tM)rcUGu!-a{mFwb_TDu S-mE470000na**L$~) zKD>MC*`rG@pIzB3Exkuh{-~nLIaSRY8hQ_Pj9=+nd@;7QdS7S*RNw09;us<^HMTcU zh}n?C>7uUJ*MHx2Z~A>->~riyx6p>{aILr3dZcdW+TSj-R(-SO+=bn~wLERM)jujK z7QR}QH+xcy1AE8Wyvns5W(6vHAM_u4;Ci!ZvEuYNM@na**L$~) zKD>MC*`rG@pIzB3Exkuh{-~nLIaSRY8hQ_Pj9=+nd@;7QdS7S*RNw09;us<^HMZAV zh*^QhX>tUU@4Nc@N%pg?W=&L2XxOX0wXE8$M|Ev_=GMzyvae>%Gx=&JQSj~4#!Bb2 zd6yQc_BU{|G)+nFUC^lgu)$ucnLR~Pf_FoKN>pdbZY6>53$!nbUEXaovGmoxXRdNH ypU+6ScKczpq|9sm9~sql3UmIyJZ1l2pZL_(tRjoE52OGc#Ng@b=d#Wzp$PyLXkx