diff --git a/psd/ender_dust.psd b/psd/ender_dust.psd new file mode 100644 index 00000000..10854f8b Binary files /dev/null and b/psd/ender_dust.psd differ diff --git a/psd/ender_ore.psd b/psd/ender_ore.psd new file mode 100644 index 00000000..49e8c9d1 Binary files /dev/null and b/psd/ender_ore.psd differ diff --git a/src/main/java/ru/betterend/blocks/BlockOre.java b/src/main/java/ru/betterend/blocks/BlockOre.java new file mode 100644 index 00000000..23a739dc --- /dev/null +++ b/src/main/java/ru/betterend/blocks/BlockOre.java @@ -0,0 +1,54 @@ +package ru.betterend.blocks; + +import java.util.List; + +import com.google.common.collect.Lists; + +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; + +import net.minecraft.block.BlockState; +import net.minecraft.block.Material; +import net.minecraft.block.MaterialColor; +import net.minecraft.block.OreBlock; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.enchantment.Enchantments; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.loot.context.LootContext; +import net.minecraft.loot.context.LootContextParameters; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.util.math.MathHelper; + +import ru.betterend.util.MHelper; + +public class BlockOre extends OreBlock { + private final Item dropItem; + private final int minCount; + private final int maxCount; + + public BlockOre(Item drop, int minCount, int maxCount) { + super(FabricBlockSettings.of(Material.STONE, MaterialColor.SAND) + .hardness(3F) + .resistance(9F) + .requiresTool() + .sounds(BlockSoundGroup.STONE)); + this.dropItem = drop; + this.minCount = minCount; + this.maxCount = maxCount; + } + + @Override + public List getDroppedStacks(BlockState state, LootContext.Builder builder) { + ItemStack tool = builder.get(LootContextParameters.TOOL); + if (tool.isEffectiveOn(state)) + { + int fortune = EnchantmentHelper.getLevel(Enchantments.FORTUNE, tool); + int min = MathHelper.clamp(minCount + fortune, 0, maxCount); + if (min == maxCount) + return Lists.newArrayList(new ItemStack(dropItem, maxCount)); + int count = MHelper.randRange(min, maxCount, MHelper.RANDOM); + return Lists.newArrayList(new ItemStack(dropItem, count)); + } + return Lists.newArrayList(); + } +} diff --git a/src/main/java/ru/betterend/registry/BlockRegistry.java b/src/main/java/ru/betterend/registry/BlockRegistry.java index 4f8ed194..6a55b844 100644 --- a/src/main/java/ru/betterend/registry/BlockRegistry.java +++ b/src/main/java/ru/betterend/registry/BlockRegistry.java @@ -7,24 +7,24 @@ import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; import ru.betterend.BetterEnd; import ru.betterend.blocks.BlockEndstoneDust; +import ru.betterend.blocks.BlockOre; import ru.betterend.blocks.BlockWetMycelium; import ru.betterend.tab.CreativeTab; public class BlockRegistry { public static final Block ENDSTONE_DUST = registerBlock("endstone_dust", new BlockEndstoneDust()); public static final Block WET_MYCELIUM = registerBlock("wet_mycelium", new BlockWetMycelium()); + public static final Block ENDER_ORE = registerBlock("ender_ore", new BlockOre(ItemRegistry.ENDER_DUST, 1, 3)); public static void register() {} - private static Block registerBlock(String name, Block block) - { + private static Block registerBlock(String name, Block block) { Registry.register(Registry.BLOCK, new Identifier(BetterEnd.MOD_ID, name), block); ItemRegistry.registerItem(name, new BlockItem(block, new Item.Settings().group(CreativeTab.END_TAB))); return block; } - public static Block registerBlockNI(String name, Block block) - { + public static Block registerBlockNI(String name, Block block) { return Registry.register(Registry.BLOCK, new Identifier(BetterEnd.MOD_ID, name), block); } } diff --git a/src/main/java/ru/betterend/registry/ItemRegistry.java b/src/main/java/ru/betterend/registry/ItemRegistry.java index 092256e4..cf871300 100644 --- a/src/main/java/ru/betterend/registry/ItemRegistry.java +++ b/src/main/java/ru/betterend/registry/ItemRegistry.java @@ -6,6 +6,7 @@ import com.google.common.collect.Lists; import net.minecraft.item.BlockItem; import net.minecraft.item.Item; +import net.minecraft.item.ItemGroup; import net.minecraft.item.Items; import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; @@ -14,9 +15,11 @@ import ru.betterend.BetterEnd; public class ItemRegistry { private static final List MOD_BLOCKS = Lists.newArrayList(); private static final List MOD_ITEMS = Lists.newArrayList(); + + public final static Item ENDER_DUST = registerItem("ender_dust", new Item((new Item.Settings()).group(ItemGroup.MATERIALS))); protected static Item registerItem(String name, Item item) { - if (item instanceof BlockItem && item != Items.AIR) { + if (item != Items.AIR) { Registry.register(Registry.ITEM, new Identifier(BetterEnd.MOD_ID, name), item); if (item instanceof BlockItem) MOD_BLOCKS.add(item); diff --git a/src/main/resources/assets/betterend/blockstates/ender_ore.json b/src/main/resources/assets/betterend/blockstates/ender_ore.json new file mode 100644 index 00000000..fb7d0d1c --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/ender_ore.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "betterend:block/ender_ore" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/lang/en_us.json b/src/main/resources/assets/betterend/lang/en_us.json index 1a6d691e..596d9ee4 100644 --- a/src/main/resources/assets/betterend/lang/en_us.json +++ b/src/main/resources/assets/betterend/lang/en_us.json @@ -1,5 +1,9 @@ { "itemGroup.betterend.items": "Better End", + "block.betterend.wet_mycelium": "Wet Mycelium", - "block.betterend.endstone_dust": "End Stone Dust" + "block.betterend.endstone_dust": "End Stone Dust", + "block.betterend.ender_ore": "Ender Ore", + + "item.betterend.ender_dust": "Ender Dust" } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/lang/ru_ru.json b/src/main/resources/assets/betterend/lang/ru_ru.json index 3583b7f6..14b3e993 100644 --- a/src/main/resources/assets/betterend/lang/ru_ru.json +++ b/src/main/resources/assets/betterend/lang/ru_ru.json @@ -1,5 +1,9 @@ { "itemGroup.betterend.items": "Улучшенный Край", + "block.betterend.wet_mycelium": "Влажный мицелий", - "block.betterend.endstone_dust": "Эндерняковая пыль" + "block.betterend.endstone_dust": "Эндерняковая пыль", + "block.betterend.ender_ore": "Руда Эндера", + + "item.betterend.ender_dust": "Пыль Эндера" } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/ender_ore.json b/src/main/resources/assets/betterend/models/block/ender_ore.json new file mode 100644 index 00000000..0cf51384 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/ender_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "betterend:block/ender_ore" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/ender_dust.json b/src/main/resources/assets/betterend/models/item/ender_dust.json new file mode 100644 index 00000000..221fcead --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/ender_dust.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "betterend:item/ender_dust" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/ender_ore.json b/src/main/resources/assets/betterend/models/item/ender_ore.json new file mode 100644 index 00000000..05801726 --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/ender_ore.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/ender_ore" +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/textures/block/ender_ore.png b/src/main/resources/assets/betterend/textures/block/ender_ore.png new file mode 100644 index 00000000..13663c7e Binary files /dev/null and b/src/main/resources/assets/betterend/textures/block/ender_ore.png differ diff --git a/src/main/resources/assets/betterend/textures/item/ender_dust.png b/src/main/resources/assets/betterend/textures/item/ender_dust.png new file mode 100644 index 00000000..e33ede43 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/item/ender_dust.png differ