diff --git a/src/main/java/ru/betterend/blocks/BlueVineSeedBlock.java b/src/main/java/ru/betterend/blocks/BlueVineSeedBlock.java index 38812d8c..a4710621 100644 --- a/src/main/java/ru/betterend/blocks/BlueVineSeedBlock.java +++ b/src/main/java/ru/betterend/blocks/BlueVineSeedBlock.java @@ -2,6 +2,7 @@ package ru.betterend.blocks; import java.util.Random; +import net.minecraft.block.AbstractBlock; import net.minecraft.block.BlockState; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; @@ -46,4 +47,9 @@ public class BlueVineSeedBlock extends EndPlantWithAgeBlock { protected boolean isTerrain(BlockState state) { return state.isOf(EndBlocks.END_MOSS) || state.isOf(EndBlocks.END_MYCELIUM); } + + @Override + public AbstractBlock.OffsetType getOffsetType() { + return AbstractBlock.OffsetType.NONE; + } } diff --git a/src/main/java/ru/betterend/blocks/GlowingPillarSeedBlock.java b/src/main/java/ru/betterend/blocks/GlowingPillarSeedBlock.java index 4109481b..3c29919f 100644 --- a/src/main/java/ru/betterend/blocks/GlowingPillarSeedBlock.java +++ b/src/main/java/ru/betterend/blocks/GlowingPillarSeedBlock.java @@ -4,6 +4,7 @@ import java.util.Random; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; +import net.minecraft.block.AbstractBlock; import net.minecraft.block.BlockState; import net.minecraft.block.Material; import net.minecraft.sound.BlockSoundGroup; @@ -66,4 +67,9 @@ public class GlowingPillarSeedBlock extends EndPlantWithAgeBlock { protected boolean isTerrain(BlockState state) { return state.isOf(EndBlocks.AMBER_MOSS); } + + @Override + public AbstractBlock.OffsetType getOffsetType() { + return AbstractBlock.OffsetType.NONE; + } } diff --git a/src/main/java/ru/betterend/blocks/LanceleafSeedBlock.java b/src/main/java/ru/betterend/blocks/LanceleafSeedBlock.java index f4ddf4a6..182519aa 100644 --- a/src/main/java/ru/betterend/blocks/LanceleafSeedBlock.java +++ b/src/main/java/ru/betterend/blocks/LanceleafSeedBlock.java @@ -2,6 +2,7 @@ package ru.betterend.blocks; import java.util.Random; +import net.minecraft.block.AbstractBlock; import net.minecraft.block.BlockState; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos.Mutable; @@ -37,4 +38,9 @@ public class LanceleafSeedBlock extends EndPlantWithAgeBlock { protected boolean isTerrain(BlockState state) { return state.isOf(EndBlocks.AMBER_MOSS); } + + @Override + public AbstractBlock.OffsetType getOffsetType() { + return AbstractBlock.OffsetType.NONE; + } } diff --git a/src/main/java/ru/betterend/blocks/LumecornBlock.java b/src/main/java/ru/betterend/blocks/LumecornBlock.java index a201101c..309fb3bf 100644 --- a/src/main/java/ru/betterend/blocks/LumecornBlock.java +++ b/src/main/java/ru/betterend/blocks/LumecornBlock.java @@ -1,5 +1,8 @@ package ru.betterend.blocks; +import java.util.Collections; +import java.util.List; + import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.minecraft.block.Block; @@ -7,6 +10,8 @@ import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.block.Material; import net.minecraft.block.ShapeContext; +import net.minecraft.item.ItemStack; +import net.minecraft.loot.context.LootContext; import net.minecraft.state.StateManager; import net.minecraft.state.property.EnumProperty; import net.minecraft.util.math.BlockPos; @@ -19,16 +24,21 @@ import ru.betterend.blocks.BlockProperties.LumecornShape; import ru.betterend.blocks.basis.BaseBlockNotFull; import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IRenderTypeable; +import ru.betterend.registry.EndBlocks; +import ru.betterend.registry.EndItems; import ru.betterend.registry.EndTags; +import ru.betterend.util.MHelper; public class LumecornBlock extends BaseBlockNotFull implements IRenderTypeable { public static final EnumProperty SHAPE = EnumProperty.of("shape", LumecornShape.class); - private static final VoxelShape SHAPE_BIG = Block.createCuboidShape(5, 0, 5, 11, 16, 11); - private static final VoxelShape SHAPE_MEDIUM = Block.createCuboidShape(6, 0, 6, 10, 16, 10); - private static final VoxelShape SHAPE_SMALL = Block.createCuboidShape(7, 0, 7, 9, 16, 9); + private static final VoxelShape SHAPE_BOTTOM = Block.createCuboidShape(6, 0, 6, 10, 16, 10); + private static final VoxelShape SHAPE_TOP = Block.createCuboidShape(6, 0, 6, 10, 8, 10); public LumecornBlock() { - super(FabricBlockSettings.of(Material.WOOD).breakByTool(FabricToolTags.AXES).hardness(0.5F).luminance((state) -> { + super(FabricBlockSettings.of(Material.WOOD) + .breakByTool(FabricToolTags.AXES) + .hardness(0.5F) + .luminance((state) -> { return state.get(SHAPE).getLight(); })); } @@ -45,16 +55,7 @@ public class LumecornBlock extends BaseBlockNotFull implements IRenderTypeable { @Override public VoxelShape getOutlineShape(BlockState state, BlockView view, BlockPos pos, ShapeContext ePos) { - LumecornShape shape = state.get(SHAPE); - if (shape == LumecornShape.LIGHT_MIDDLE) { - return SHAPE_SMALL; - } - else if (shape == LumecornShape.LIGHT_TOP_MIDDLE) { - return SHAPE_MEDIUM; - } - else { - return SHAPE_BIG; - } + return state.get(SHAPE) == LumecornShape.LIGHT_TOP ? SHAPE_TOP : SHAPE_BOTTOM; } @Override @@ -63,9 +64,12 @@ public class LumecornBlock extends BaseBlockNotFull implements IRenderTypeable { if (shape == LumecornShape.BOTTOM_BIG || shape == LumecornShape.BOTTOM_SMALL) { return world.getBlockState(pos.down()).isIn(EndTags.END_GROUND); } - else { + else if (shape == LumecornShape.LIGHT_TOP) { return world.getBlockState(pos.down()).isOf(this); } + else { + return world.getBlockState(pos.down()).isOf(this) && world.getBlockState(pos.up()).isOf(this); + } } @Override @@ -77,4 +81,23 @@ public class LumecornBlock extends BaseBlockNotFull implements IRenderTypeable { return state; } } + + @Override + public List getDroppedStacks(BlockState state, LootContext.Builder builder) { + LumecornShape shape = state.get(SHAPE); + if (shape == LumecornShape.BOTTOM_BIG || shape == LumecornShape.BOTTOM_SMALL || shape == LumecornShape.MIDDLE) { + if (MHelper.RANDOM.nextBoolean()) { + return Collections.singletonList(new ItemStack(EndBlocks.LUMECORN_SEED)); + } + else { + return Collections.emptyList(); + } + } + if (MHelper.RANDOM.nextBoolean()) { + return Collections.singletonList(new ItemStack(EndItems.LUMECORN_ROD)); + } + else { + return Collections.emptyList(); + } + } } diff --git a/src/main/java/ru/betterend/blocks/LumecornSeedBlock.java b/src/main/java/ru/betterend/blocks/LumecornSeedBlock.java new file mode 100644 index 00000000..de06b251 --- /dev/null +++ b/src/main/java/ru/betterend/blocks/LumecornSeedBlock.java @@ -0,0 +1,28 @@ +package ru.betterend.blocks; + +import java.util.Random; + +import net.minecraft.block.AbstractBlock; +import net.minecraft.block.BlockState; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.StructureWorldAccess; +import ru.betterend.blocks.basis.EndPlantWithAgeBlock; +import ru.betterend.registry.EndBlocks; +import ru.betterend.registry.EndFeatures; + +public class LumecornSeedBlock extends EndPlantWithAgeBlock { + @Override + public void growAdult(StructureWorldAccess world, Random random, BlockPos pos) { + EndFeatures.LUMECORN.getFeature().generate(world, null, random, pos, null); + } + + @Override + protected boolean isTerrain(BlockState state) { + return state.isOf(EndBlocks.END_MOSS); + } + + @Override + public AbstractBlock.OffsetType getOffsetType() { + return AbstractBlock.OffsetType.NONE; + } +} diff --git a/src/main/java/ru/betterend/registry/EndBlocks.java b/src/main/java/ru/betterend/registry/EndBlocks.java index 0560bb93..6d337615 100644 --- a/src/main/java/ru/betterend/registry/EndBlocks.java +++ b/src/main/java/ru/betterend/registry/EndBlocks.java @@ -57,6 +57,7 @@ import ru.betterend.blocks.LacugroveSaplingBlock; import ru.betterend.blocks.LanceleafBlock; import ru.betterend.blocks.LanceleafSeedBlock; import ru.betterend.blocks.LumecornBlock; +import ru.betterend.blocks.LumecornSeedBlock; import ru.betterend.blocks.MengerSpongeBlock; import ru.betterend.blocks.MengerSpongeWetBlock; import ru.betterend.blocks.MossyGlowshroomCapBlock; @@ -228,7 +229,8 @@ public class EndBlocks { public static final Block SMALL_JELLYSHROOM = registerBlock("small_jellyshroom", new SmallJellyshroomBlock()); - public static final Block LUMECORN = registerBlock("lumecorn", new LumecornBlock()); + public static final Block LUMECORN_SEED = registerBlock("lumecorn_seed", new LumecornSeedBlock()); + public static final Block LUMECORN = registerBlockNI("lumecorn", new LumecornBlock()); // Crops public static final Block BLOSSOM_BERRY = registerBlock("blossom_berry_seed", new EndCropBlock(EndItems.BLOSSOM_BERRY, PINK_MOSS)); diff --git a/src/main/java/ru/betterend/registry/EndItems.java b/src/main/java/ru/betterend/registry/EndItems.java index 71c4230c..b9bc0d75 100644 --- a/src/main/java/ru/betterend/registry/EndItems.java +++ b/src/main/java/ru/betterend/registry/EndItems.java @@ -73,6 +73,7 @@ public class EndItems { public final static Item LEATHER_STRIPE = registerItem("leather_stripe"); public final static Item LEATHER_WRAPPED_STICK = registerItem("leather_wrapped_stick"); public final static Item SILK_FIBER = registerItem("silk_fiber"); + public final static Item LUMECORN_ROD = registerItem("lumecorn_rod"); // Armor // public static final Item TERMINITE_HELMET = registerItem("terminite_helmet", new ArmorItem(EndArmorMaterial.TERMINITE, EquipmentSlot.HEAD, makeItemSettings())); diff --git a/src/main/resources/assets/betterend/blockstates/lumecorn_seed.json b/src/main/resources/assets/betterend/blockstates/lumecorn_seed.json new file mode 100644 index 00000000..7277a13a --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/lumecorn_seed.json @@ -0,0 +1,8 @@ +{ + "variants": { + "age=0": { "model": "betterend:block/lumecorn_seed_0" }, + "age=1": { "model": "betterend:block/lumecorn_seed_1" }, + "age=2": { "model": "betterend:block/lumecorn_seed_2" }, + "age=3": { "model": "betterend:block/lumecorn_seed_3" } + } +} diff --git a/src/main/resources/assets/betterend/lang/en_us.json b/src/main/resources/assets/betterend/lang/en_us.json index d44bc57d..71f863e0 100644 --- a/src/main/resources/assets/betterend/lang/en_us.json +++ b/src/main/resources/assets/betterend/lang/en_us.json @@ -589,5 +589,8 @@ "block.betterend.thallasium_door": "Thallasium Door", "block.betterend.thallasium_plate": "Thallasium Pressure Plate", "block.betterend.thallasium_tile": "Thallasium Tile", - "block.betterend.thallasium_trapdoor": "Thallasium Trapdoor" + "block.betterend.thallasium_trapdoor": "Thallasium Trapdoor", + + "block.betterend.lumecorn_seed": "Lumecorn Seed", + "item.betterend.lumecorn_rod": "Lumecorn Rod" } diff --git a/src/main/resources/assets/betterend/lang/ru_ru.json b/src/main/resources/assets/betterend/lang/ru_ru.json index ed391bab..1d247de1 100644 --- a/src/main/resources/assets/betterend/lang/ru_ru.json +++ b/src/main/resources/assets/betterend/lang/ru_ru.json @@ -591,5 +591,8 @@ "block.betterend.thallasium_door": "Талласиевая дверь", "block.betterend.thallasium_plate": "Талласиевая нажимная плита", "block.betterend.thallasium_tile": "Талласиевая плитка", - "block.betterend.thallasium_trapdoor": "Талласиевый люк" + "block.betterend.thallasium_trapdoor": "Талласиевый люк", + + "block.betterend.lumecorn_seed": "Семя люмекорна", + "item.betterend.lumecorn_rod": "Стержень люмекорна" } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/lights/item/blue_vine_lantern.json b/src/main/resources/assets/betterend/lights/item/blue_vine_lantern.json new file mode 100644 index 00000000..5e61fc7d --- /dev/null +++ b/src/main/resources/assets/betterend/lights/item/blue_vine_lantern.json @@ -0,0 +1,7 @@ +{ + "intensity": 0.5, + "red": 0.0, + "green": 0.0, + "blue": 1.0, + "worksInFluid": true +} diff --git a/src/main/resources/assets/betterend/lights/item/glowing_pillar_luminophor.json b/src/main/resources/assets/betterend/lights/item/glowing_pillar_luminophor.json new file mode 100644 index 00000000..adffdd3a --- /dev/null +++ b/src/main/resources/assets/betterend/lights/item/glowing_pillar_luminophor.json @@ -0,0 +1,7 @@ +{ + "intensity": 0.5, + "red": 1.0, + "green": 0.5, + "blue": 0.0, + "worksInFluid": true +} diff --git a/src/main/resources/assets/betterend/lights/item/lumecorn_rod.json b/src/main/resources/assets/betterend/lights/item/lumecorn_rod.json new file mode 100644 index 00000000..44c23281 --- /dev/null +++ b/src/main/resources/assets/betterend/lights/item/lumecorn_rod.json @@ -0,0 +1,7 @@ +{ + "intensity": 0.5, + "red": 0.5, + "green": 1.0, + "blue": 0.0, + "worksInFluid": true +} diff --git a/src/main/resources/assets/betterend/materialmaps/block/lumecorn_seed.json b/src/main/resources/assets/betterend/materialmaps/block/lumecorn_seed.json new file mode 100644 index 00000000..c19e0715 --- /dev/null +++ b/src/main/resources/assets/betterend/materialmaps/block/lumecorn_seed.json @@ -0,0 +1,3 @@ +{ + "defaultMaterial": "betterend:waving_floor_glow_50" +} diff --git a/src/main/resources/assets/betterend/materialmaps/item/lumecorn_rod.json b/src/main/resources/assets/betterend/materialmaps/item/lumecorn_rod.json new file mode 100644 index 00000000..36db9946 --- /dev/null +++ b/src/main/resources/assets/betterend/materialmaps/item/lumecorn_rod.json @@ -0,0 +1,3 @@ +{ + "defaultMaterial": "betterend:glow_50" +} diff --git a/src/main/resources/assets/betterend/materialmaps/item/lumecorn_seed.json b/src/main/resources/assets/betterend/materialmaps/item/lumecorn_seed.json new file mode 100644 index 00000000..69a88e3b --- /dev/null +++ b/src/main/resources/assets/betterend/materialmaps/item/lumecorn_seed.json @@ -0,0 +1 @@ +{} diff --git a/src/main/resources/assets/betterend/models/block/lumecorn_seed_0.json b/src/main/resources/assets/betterend/models/block/lumecorn_seed_0.json new file mode 100644 index 00000000..b368c4dd --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/lumecorn_seed_0.json @@ -0,0 +1,6 @@ +{ + "parent": "betterend:block/cross_no_distortion", + "textures": { + "texture": "betterend:block/lumecorn_0" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/lumecorn_seed_1.json b/src/main/resources/assets/betterend/models/block/lumecorn_seed_1.json new file mode 100644 index 00000000..a86effd6 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/lumecorn_seed_1.json @@ -0,0 +1,6 @@ +{ + "parent": "betterend:block/cross_no_distortion", + "textures": { + "texture": "betterend:block/lumecorn_1" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/lumecorn_seed_2.json b/src/main/resources/assets/betterend/models/block/lumecorn_seed_2.json new file mode 100644 index 00000000..b73ac4a8 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/lumecorn_seed_2.json @@ -0,0 +1,6 @@ +{ + "parent": "betterend:block/cross_no_distortion", + "textures": { + "texture": "betterend:block/lumecorn_2" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/lumecorn_seed_3.json b/src/main/resources/assets/betterend/models/block/lumecorn_seed_3.json new file mode 100644 index 00000000..3223318b --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/lumecorn_seed_3.json @@ -0,0 +1,6 @@ +{ + "parent": "betterend:block/cross_no_distortion", + "textures": { + "texture": "betterend:block/lumecorn_3" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/lumecorn_seed.json b/src/main/resources/assets/betterend/models/item/lumecorn_seed.json new file mode 100644 index 00000000..b00d70f6 --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/lumecorn_seed.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "betterend:item/lumecorn_seed" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/textures/item/lumicorn.png b/src/main/resources/assets/betterend/textures/item/lumecorn_rod.png similarity index 100% rename from src/main/resources/assets/betterend/textures/item/lumicorn.png rename to src/main/resources/assets/betterend/textures/item/lumecorn_rod.png diff --git a/src/main/resources/assets/betterend/textures/item/lumecorn_seed.png b/src/main/resources/assets/betterend/textures/item/lumecorn_seed.png new file mode 100644 index 00000000..e2d72406 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/item/lumecorn_seed.png differ