From 9b464bcc06d5ade38c19e47fdd66fcc05258fe03 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Thu, 11 Mar 2021 03:55:14 +0300 Subject: [PATCH] TripleTerrain (WIP) --- .../ru/betterend/blocks/EndTerrainBlock.java | 2 +- .../blocks/basis/TripleTerrainBlock.java | 96 ++++++++++++++++++ .../java/ru/betterend/patterns/Patterns.java | 1 + .../java/ru/betterend/registry/EndBlocks.java | 4 +- .../assets/betterend/blockstates/rubinea.json | 7 ++ .../models/block/rubinea_bottom.json | 6 ++ .../models/block/rubinea_middle.json | 6 ++ .../assets/betterend/models/item/rubinea.json | 6 ++ .../blockstate/triple_rotated_top.json | 22 ++++ .../textures/block/jungle_vine_bottom.png | Bin 324 -> 223 bytes .../betterend/textures/block/rubinea.png | Bin 0 -> 234 bytes .../textures/block/rubinea_bottom.png | Bin 0 -> 223 bytes 12 files changed, 148 insertions(+), 2 deletions(-) create mode 100644 src/main/java/ru/betterend/blocks/basis/TripleTerrainBlock.java create mode 100644 src/main/resources/assets/betterend/blockstates/rubinea.json create mode 100644 src/main/resources/assets/betterend/models/block/rubinea_bottom.json create mode 100644 src/main/resources/assets/betterend/models/block/rubinea_middle.json create mode 100644 src/main/resources/assets/betterend/models/item/rubinea.json create mode 100644 src/main/resources/assets/betterend/patterns/blockstate/triple_rotated_top.json create mode 100644 src/main/resources/assets/betterend/textures/block/rubinea.png create mode 100644 src/main/resources/assets/betterend/textures/block/rubinea_bottom.png diff --git a/src/main/java/ru/betterend/blocks/EndTerrainBlock.java b/src/main/java/ru/betterend/blocks/EndTerrainBlock.java index c1dd4e0b..51c6a48f 100644 --- a/src/main/java/ru/betterend/blocks/EndTerrainBlock.java +++ b/src/main/java/ru/betterend/blocks/EndTerrainBlock.java @@ -79,7 +79,7 @@ public class EndTerrainBlock extends BlockBase { } } - public static boolean canSurvive(BlockState state, WorldView worldView, BlockPos pos) { + protected 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) { diff --git a/src/main/java/ru/betterend/blocks/basis/TripleTerrainBlock.java b/src/main/java/ru/betterend/blocks/basis/TripleTerrainBlock.java new file mode 100644 index 00000000..21fd221f --- /dev/null +++ b/src/main/java/ru/betterend/blocks/basis/TripleTerrainBlock.java @@ -0,0 +1,96 @@ +package ru.betterend.blocks.basis; + +import java.util.Map; +import java.util.Random; + +import com.google.common.collect.Maps; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.MaterialColor; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.EnumProperty; +import net.minecraft.util.Identifier; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.WorldView; +import ru.betterend.blocks.BlockProperties; +import ru.betterend.blocks.BlockProperties.TripleShape; +import ru.betterend.patterns.Patterns; +import ru.betterend.blocks.EndTerrainBlock; + +public class TripleTerrainBlock extends EndTerrainBlock { + public static final EnumProperty SHAPE = BlockProperties.TRIPLE_SHAPE; + + public TripleTerrainBlock(MaterialColor color) { + super(color); + this.setDefaultState(this.getDefaultState().with(SHAPE, TripleShape.BOTTOM)); + } + + @Override + protected void appendProperties(StateManager.Builder stateManager) { + stateManager.add(SHAPE); + } + + @Override + public String getModelPattern(String block) { + System.out.println(block); + String name = Registry.BLOCK.getId(this).getPath(); + if (block.endsWith("_middle")) { + return Patterns.createJson(Patterns.BLOCK_BASE, name + "_top"); + } + Map map = Maps.newHashMap(); + map.put("%top%", "betterend:block/" + name + "_top"); + map.put("%side%", "betterend:block/" + name + "_side"); + map.put("%bottom%", "minecraft:block/end_stone"); + return Patterns.createJson(Patterns.BLOCK_TOP_SIDE_BOTTOM, map); + } + + @Override + public Identifier statePatternId() { + return Patterns.STATE_TRIPLE_ROTATED_TOP; + } + + @Override + public void randomTick(BlockState state, ServerWorld world, BlockPos pos, Random random) { + TripleShape shape = state.get(SHAPE); + if (shape == TripleShape.TOP) { + super.randomTick(state, world, pos, random); + return; + } + else if (random.nextInt(16) == 0) { + boolean bottom = canSurviveBottom(world, pos); + if (shape == TripleShape.BOTTOM) { + if (!bottom) { + world.setBlockState(pos, Blocks.END_STONE.getDefaultState()); + } + } + else { + boolean top = canSurvive(state, world, pos); + if (!top && !bottom) { + world.setBlockState(pos, Blocks.END_STONE.getDefaultState()); + } + else if (top && !bottom) { + world.setBlockState(pos, state.with(SHAPE, TripleShape.TOP)); + } + else if (!top && bottom) { + world.setBlockState(pos, state.with(SHAPE, TripleShape.BOTTOM)); + } + } + } + } + + protected boolean canSurviveBottom(WorldView world, BlockPos pos) { + BlockPos blockPos = pos.down(); + BlockState blockState = world.getBlockState(blockPos); + if (blockState.getFluidState().getLevel() == 8) { + return false; + } + else { + return !blockState.isSideSolidFullSquare(world, blockPos, Direction.UP); + } + } +} diff --git a/src/main/java/ru/betterend/patterns/Patterns.java b/src/main/java/ru/betterend/patterns/Patterns.java index ad73c1a7..67c72d3e 100644 --- a/src/main/java/ru/betterend/patterns/Patterns.java +++ b/src/main/java/ru/betterend/patterns/Patterns.java @@ -46,6 +46,7 @@ public class Patterns { public final static Identifier STATE_CHANDELIER = BetterEnd.makeID("patterns/blockstate/chandelier.json"); public final static Identifier STATE_FURNACE = BetterEnd.makeID("patterns/blockstate/furnace.json"); public final static Identifier STATE_ROTATED_TOP = BetterEnd.makeID("patterns/blockstate/rotated_top.json"); + public final static Identifier STATE_TRIPLE_ROTATED_TOP = BetterEnd.makeID("patterns/blockstate/triple_rotated_top.json"); public final static Identifier STATE_STALACTITE = BetterEnd.makeID("patterns/blockstate/stalactite.json"); //Models Block diff --git a/src/main/java/ru/betterend/registry/EndBlocks.java b/src/main/java/ru/betterend/registry/EndBlocks.java index b40797a3..ed788d7b 100644 --- a/src/main/java/ru/betterend/registry/EndBlocks.java +++ b/src/main/java/ru/betterend/registry/EndBlocks.java @@ -110,6 +110,7 @@ import ru.betterend.blocks.basis.FurBlock; import ru.betterend.blocks.basis.SimpleLeavesBlock; import ru.betterend.blocks.basis.StalactiteBlock; import ru.betterend.blocks.basis.StoneLanternBlock; +import ru.betterend.blocks.basis.TripleTerrainBlock; import ru.betterend.blocks.basis.VineBlock; import ru.betterend.blocks.basis.WallMushroomBlock; import ru.betterend.blocks.complex.ColoredMaterial; @@ -126,7 +127,7 @@ public class EndBlocks { public static final Block END_MYCELIUM = registerBlock("end_mycelium", new EndTerrainBlock(MaterialColor.LIGHT_BLUE)); public static final Block END_MOSS = registerBlock("end_moss", new EndTerrainBlock(MaterialColor.CYAN)); public static final Block CHORUS_NYLIUM = registerBlock("chorus_nylium", new EndTerrainBlock(MaterialColor.MAGENTA)); - public static final Block CAVE_MOSS = registerBlock("cave_moss", new EndTerrainBlock(MaterialColor.PURPLE)); + public static final Block CAVE_MOSS = registerBlock("cave_moss", new TripleTerrainBlock(MaterialColor.PURPLE)); public static final Block CRYSTAL_MOSS = registerBlock("crystal_moss", new EndTerrainBlock(MaterialColor.PINK)); public static final Block SHADOW_GRASS = registerBlock("shadow_grass", new ShadowGrassBlock()); public static final Block PINK_MOSS = registerBlock("pink_moss", new EndTerrainBlock(MaterialColor.PINK)); @@ -322,6 +323,7 @@ public class EndBlocks { public static final Block BULB_VINE_SEED = registerBlock("bulb_vine_seed", new BulbVineSeedBlock()); public static final Block BULB_VINE = registerBlock("bulb_vine", new BulbVineBlock()); public static final Block JUNGLE_VINE = registerBlock("jungle_vine", new VineBlock()); + public static final Block RUBINEA = registerBlock("rubinea", new VineBlock()); // Mob-Related public static final Block SILK_MOTH_NEST = registerBlock("silk_moth_nest", new SilkMothNestBlock()); diff --git a/src/main/resources/assets/betterend/blockstates/rubinea.json b/src/main/resources/assets/betterend/blockstates/rubinea.json new file mode 100644 index 00000000..4c03ccf6 --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/rubinea.json @@ -0,0 +1,7 @@ +{ + "variants": { + "shape=top": { "model": "betterend:block/rubinea_middle" }, + "shape=middle": { "model": "betterend:block/rubinea_middle" }, + "shape=bottom": { "model": "betterend:block/rubinea_bottom" } + } +} diff --git a/src/main/resources/assets/betterend/models/block/rubinea_bottom.json b/src/main/resources/assets/betterend/models/block/rubinea_bottom.json new file mode 100644 index 00000000..37fb8bb5 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/rubinea_bottom.json @@ -0,0 +1,6 @@ +{ + "parent": "betterend:block/cross_no_distortion", + "textures": { + "texture": "betterend:block/rubinea_bottom" + } +} diff --git a/src/main/resources/assets/betterend/models/block/rubinea_middle.json b/src/main/resources/assets/betterend/models/block/rubinea_middle.json new file mode 100644 index 00000000..b99830f1 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/rubinea_middle.json @@ -0,0 +1,6 @@ +{ + "parent": "betterend:block/cross_no_distortion", + "textures": { + "texture": "betterend:block/rubinea" + } +} diff --git a/src/main/resources/assets/betterend/models/item/rubinea.json b/src/main/resources/assets/betterend/models/item/rubinea.json new file mode 100644 index 00000000..d510c6ef --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/rubinea.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "betterend:block/rubinea_bottom" + } +} diff --git a/src/main/resources/assets/betterend/patterns/blockstate/triple_rotated_top.json b/src/main/resources/assets/betterend/patterns/blockstate/triple_rotated_top.json new file mode 100644 index 00000000..7fd583ce --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/blockstate/triple_rotated_top.json @@ -0,0 +1,22 @@ +{ + "variants": { + "shape=bottom": [ + { "model": "betterend:pattern/%block%" }, + { "model": "betterend:pattern/%block%", "y": 90 }, + { "model": "betterend:pattern/%block%", "y": 180 }, + { "model": "betterend:pattern/%block%", "y": 270 } + ], + "shape=middle": [ + { "model": "betterend:pattern/%block%_middle" }, + { "model": "betterend:pattern/%block%_middle", "y": 90 }, + { "model": "betterend:pattern/%block%_middle", "y": 180 }, + { "model": "betterend:pattern/%block%_middle", "y": 270 } + ], + "shape=top": [ + { "model": "betterend:pattern/%block%" }, + { "model": "betterend:pattern/%block%", "x": 180, "y": 90 }, + { "model": "betterend:pattern/%block%", "x": 180, "y": 180 }, + { "model": "betterend:pattern/%block%", "x": 180, "y": 270 } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/textures/block/jungle_vine_bottom.png b/src/main/resources/assets/betterend/textures/block/jungle_vine_bottom.png index 072702fd512bdd71124ddcc52b93a36fc3d01f28..aec4132b6e5048db241baa572b5d882b72bab551 100644 GIT binary patch delta 206 zcmX@Ybf0m8WIZzj1A~Sxe=v|@EDmyaVpw-h<|U9L5#STz3Z%t-5+tK?!P{$S;`TKLlJo6=DPwOZ0Sc43U^x>gOqRK!GD!MdknhLdLbX zoQo6AI9*s{VB=!#P!Zt1=#Xo`j2I@vB6p{(xOvQ99deiI7ca8i8X&y(#+{Q}92Xv4 zy;ZN)Zd1}OR;h>9A+nJ@XKUr|>^QtWX@3PnxfPRJ+8^}=K-(BRUHx3vIVCg!06+Ck AkN^Mx delta 308 zcmV-40n7g10mK538Gi-<001BJ|6u?C0Sie)K~#9!m6JUR!axv(_Zl`zuuuf8Y%DFk zf`u0_Vi6RPfEcw95&tS%3k!QsA$S#!F#1BC>`xMLVPJPM@0;0~jS>-MTcPVq$)8E( zbdb(%C(ZLl(&Au_qa00QApsBrk_9pj3?_ggK=}>(Q~lWNF~c2Aplsp?|>_Oyqu~4V1i5lA^q#~+ptm)C{6&))gP22W@bRxSO8!g z;Rljk0pEZr)Iz$m*cR#m@|JWNgIChQd*!QCV0000gUk#7YH2HJc7y6PmHwc*(_gwmV}E1m6vp z*s+}P-0UOs8t*GwMIS%)%YyOry${zXF|HFVdU`qiJD>R4=W_dhSs2th2E4!edGS~N Y%A-s>*KIf&4YZWO)78&qol`;+07Q3K3;+NC literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/rubinea_bottom.png b/src/main/resources/assets/betterend/textures/block/rubinea_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..5601c26870202c77b32ca43fdceab29e0b6c4a8b GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~i2$DvS0G(3 zV%a9@I8DN9sbbJtwaA@%iKi^{M6(vW1Ilrf1o;Is{D*+6r$UT?Vu_wEjv*3LOZ_~B z4k&OWtEl|{U&y%jmUD5!8K(x9Zi}ZA#k3D)rDhL^iVLY^~g#9f#K^?XO@cw_d2 LtDnm{r-UW|9C1z~ literal 0 HcmV?d00001