diff --git a/src/main/java/ru/betterend/blocks/BlockProperties.java b/src/main/java/ru/betterend/blocks/BlockProperties.java index 27e13d36..4da42d5c 100644 --- a/src/main/java/ru/betterend/blocks/BlockProperties.java +++ b/src/main/java/ru/betterend/blocks/BlockProperties.java @@ -16,6 +16,7 @@ public class BlockProperties { public static final IntProperty ROTATION = IntProperty.of("rotation", 0, 3); public static final BooleanProperty NATURAL = BooleanProperty.of("natural"); public static final IntProperty FULLNESS = IntProperty.of("fullness", 0, 3); + public static final IntProperty COLOR = IntProperty.of("color", 0, 7); public static enum TripleShape implements StringIdentifiable { TOP("top"), diff --git a/src/main/java/ru/betterend/blocks/CapsacisCapBlock.java b/src/main/java/ru/betterend/blocks/CapsacisCapBlock.java new file mode 100644 index 00000000..18f2974a --- /dev/null +++ b/src/main/java/ru/betterend/blocks/CapsacisCapBlock.java @@ -0,0 +1,35 @@ +package ru.betterend.blocks; + +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.MaterialColor; +import net.minecraft.item.ItemPlacementContext; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.IntProperty; +import ru.betterend.blocks.basis.BaseBlock; +import ru.betterend.noise.OpenSimplexNoise; +import ru.betterend.util.MHelper; + +public class CapsacisCapBlock extends BaseBlock { + public static final IntProperty COLOR = IntProperty.of("color", 0, 7); + private static final OpenSimplexNoise NOISE = new OpenSimplexNoise(0); + + public CapsacisCapBlock(MaterialColor color) { + super(FabricBlockSettings.copyOf(Blocks.NETHER_WART_BLOCK).materialColor(color)); + } + + @Override + public BlockState getPlacementState(ItemPlacementContext ctx) { + double px = ctx.getBlockPos().getX() * 0.1; + double py = ctx.getBlockPos().getY() * 0.1; + double pz = ctx.getBlockPos().getZ() * 0.1; + return this.getDefaultState().with(COLOR, MHelper.floor(NOISE.eval(px, py, pz) * 3.5 + 4)); + } + + @Override + protected void appendProperties(StateManager.Builder stateManager) { + stateManager.add(COLOR); + } +} diff --git a/src/main/java/ru/betterend/blocks/HelixTreeLeavesBlock.java b/src/main/java/ru/betterend/blocks/HelixTreeLeavesBlock.java index fb299993..48e03300 100644 --- a/src/main/java/ru/betterend/blocks/HelixTreeLeavesBlock.java +++ b/src/main/java/ru/betterend/blocks/HelixTreeLeavesBlock.java @@ -30,7 +30,7 @@ import ru.betterend.registry.EndBlocks; import ru.betterend.util.MHelper; public class HelixTreeLeavesBlock extends BaseBlock implements IColorProvider { - public static final IntProperty COLOR = IntProperty.of("color", 0, 7); + public static final IntProperty COLOR = BlockProperties.COLOR; private static final OpenSimplexNoise NOISE = new OpenSimplexNoise(0); public HelixTreeLeavesBlock() { diff --git a/src/main/java/ru/betterend/blocks/JellyshroomCapBlock.java b/src/main/java/ru/betterend/blocks/JellyshroomCapBlock.java index 482966fb..0812cfb4 100644 --- a/src/main/java/ru/betterend/blocks/JellyshroomCapBlock.java +++ b/src/main/java/ru/betterend/blocks/JellyshroomCapBlock.java @@ -30,7 +30,7 @@ import ru.betterend.patterns.Patterns; import ru.betterend.util.MHelper; public class JellyshroomCapBlock extends SlimeBlock implements IRenderTypeable, BlockPatterned, IColorProvider { - public static final IntProperty COLOR = IntProperty.of("color", 0, 7); + public static final IntProperty COLOR = BlockProperties.COLOR; private static final OpenSimplexNoise NOISE = new OpenSimplexNoise(0); private final Vec3i colorStart; private final Vec3i colorEnd; diff --git a/src/main/java/ru/betterend/blocks/UmbrellaTreeMembraneBlock.java b/src/main/java/ru/betterend/blocks/UmbrellaTreeMembraneBlock.java index 75075069..3fb85637 100644 --- a/src/main/java/ru/betterend/blocks/UmbrellaTreeMembraneBlock.java +++ b/src/main/java/ru/betterend/blocks/UmbrellaTreeMembraneBlock.java @@ -32,7 +32,7 @@ import ru.betterend.registry.EndBlocks; import ru.betterend.util.MHelper; public class UmbrellaTreeMembraneBlock extends SlimeBlock implements IRenderTypeable, BlockPatterned { - public static final IntProperty COLOR = IntProperty.of("color", 0, 7); + public static final IntProperty COLOR = BlockProperties.COLOR; private static final OpenSimplexNoise NOISE = new OpenSimplexNoise(0); public UmbrellaTreeMembraneBlock() { diff --git a/src/main/java/ru/betterend/registry/EndBlocks.java b/src/main/java/ru/betterend/registry/EndBlocks.java index 44050d9e..f29fbafc 100644 --- a/src/main/java/ru/betterend/registry/EndBlocks.java +++ b/src/main/java/ru/betterend/registry/EndBlocks.java @@ -20,6 +20,7 @@ import ru.betterend.blocks.BulbVineBlock; import ru.betterend.blocks.BulbVineLanternBlock; import ru.betterend.blocks.BulbVineLanternColoredBlock; import ru.betterend.blocks.BulbVineSeedBlock; +import ru.betterend.blocks.CapsacisCapBlock; import ru.betterend.blocks.CharniaBlock; import ru.betterend.blocks.ChorusGrassBlock; import ru.betterend.blocks.DenseEmeraldIceBlock; @@ -192,6 +193,24 @@ public class EndBlocks { public static final Block JELLYSHROOM_CAP_PURPLE = registerBlock("jellyshroom_cap_purple", new JellyshroomCapBlock(217, 142, 255, 164, 0, 255)); public static final WoodenMaterial JELLYSHROOM = new WoodenMaterial("jellyshroom", MaterialColor.PURPLE, MaterialColor.LIGHT_BLUE); + // Tree from original concept (+ modifications) + public static final Block CAPSACIS_SAPLING = registerBlock("capsacis_sapling", new UmbrellaTreeSaplingBlock()); + public static final Block CAPSACIS_CAP_BLACK = registerBlock("capsacis_cap_black", new CapsacisCapBlock(MaterialColor.BLACK)); + public static final Block CAPSACIS_CAP_WHITE = registerBlock("capsacis_cap_white", new CapsacisCapBlock(MaterialColor.WHITE)); + public static final Block CAPSACIS_CAP_MAGENTA = registerBlock("capsacis_cap_magenta", new CapsacisCapBlock(MaterialColor.MAGENTA)); + public static final WoodenMaterial CAPSACIS = new WoodenMaterial("capsacis", MaterialColor.PURPLE, MaterialColor.LIGHT_BLUE); + + // Small ecosystem tree + public static final WoodenMaterial INANIS = new WoodenMaterial("inanis", MaterialColor.PURPLE, MaterialColor.LIGHT_BLUE); + + // Tree from Yuki's ide + public static final Block CEMINUS_SAPLING = registerBlock("ceminus_sapling", new UmbrellaTreeSaplingBlock()); + public static final Block CEMINUS_GRID = registerBlock("ceminus_grid", new UmbrellaTreeMembraneBlock()); + public static final WoodenMaterial CEMINUS = new WoodenMaterial("ceminus", MaterialColor.PURPLE, MaterialColor.LIGHT_BLUE); + + // For megacolonies + public static final Block VOID_COLONY_MEMBRANE = registerBlock("void_colony_membrane", new UmbrellaTreeMembraneBlock()); + // Small Plants // public static final Block UMBRELLA_MOSS = registerBlock("umbrella_moss", new UmbrellaMossBlock()); public static final Block UMBRELLA_MOSS_TALL = registerBlock("umbrella_moss_tall", new UmbrellaMossTallBlock()); diff --git a/src/main/resources/assets/betterend/textures/block/capsacis_cap_black.png b/src/main/resources/assets/betterend/textures/block/capsacis_cap_black.png new file mode 100644 index 00000000..5f0b2b6b Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/capsacis_cap_black.png differ diff --git a/src/main/resources/assets/betterend/textures/block/capsacis_cap_magenta.png b/src/main/resources/assets/betterend/textures/block/capsacis_cap_magenta.png new file mode 100644 index 00000000..3dffd7a9 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/capsacis_cap_magenta.png differ diff --git a/src/main/resources/assets/betterend/textures/block/capsacis_cap_white.png b/src/main/resources/assets/betterend/textures/block/capsacis_cap_white.png new file mode 100644 index 00000000..f4495497 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/capsacis_cap_white.png differ diff --git a/src/main/resources/assets/betterend/textures/block/capsacis_log_side.png b/src/main/resources/assets/betterend/textures/block/capsacis_log_side.png new file mode 100644 index 00000000..bc312fba Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/capsacis_log_side.png differ diff --git a/src/main/resources/assets/betterend/textures/block/capsacis_log_top.png b/src/main/resources/assets/betterend/textures/block/capsacis_log_top.png new file mode 100644 index 00000000..6ddad950 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/capsacis_log_top.png differ diff --git a/src/main/resources/assets/betterend/textures/block/capsacis_planks.png b/src/main/resources/assets/betterend/textures/block/capsacis_planks.png new file mode 100644 index 00000000..6d6aef00 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/capsacis_planks.png differ diff --git a/src/main/resources/assets/betterend/textures/block/capsacis_stripped_log_side.png b/src/main/resources/assets/betterend/textures/block/capsacis_stripped_log_side.png new file mode 100644 index 00000000..7432af62 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/capsacis_stripped_log_side.png differ diff --git a/src/main/resources/assets/betterend/textures/block/capsacis_stripped_log_top.png b/src/main/resources/assets/betterend/textures/block/capsacis_stripped_log_top.png new file mode 100644 index 00000000..468781cb Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/capsacis_stripped_log_top.png differ