From 203e00347ab74296da8bfe0455fee498b95e7ae9 Mon Sep 17 00:00:00 2001 From: Jottyfan Date: Sat, 16 Nov 2024 00:06:21 +0100 Subject: [PATCH] added blocks --- .../de/jottyfan/quickiemod/Quickiemod.java | 11 ++++- .../block/AbstractIdentifiedBlock.java | 20 ++++++++ .../quickiemod/block/BlockPowder.java | 47 +++++++++++++++++++ .../jottyfan/quickiemod/block/ModBlocks.java | 45 ++++++++++++++++++ .../quickiemod/block/StandardBlock.java | 16 +++++++ .../quickiemod/identifier/ModIdentifiers.java | 2 + .../de/jottyfan/quickiemod/item/ModItems.java | 25 ++++------ .../de/jottyfan/quickiemod/tab/ModTabs.java | 38 +++++++++++++++ ...blockquickiepowder_from_quickiepowder.json | 15 ++++++ ...ped_blockspeedpowder_from_speedpowder.json | 15 ++++++ 10 files changed, 217 insertions(+), 17 deletions(-) create mode 100644 src/main/java/de/jottyfan/quickiemod/block/AbstractIdentifiedBlock.java create mode 100644 src/main/java/de/jottyfan/quickiemod/block/BlockPowder.java create mode 100644 src/main/java/de/jottyfan/quickiemod/block/ModBlocks.java create mode 100644 src/main/java/de/jottyfan/quickiemod/block/StandardBlock.java create mode 100644 src/main/java/de/jottyfan/quickiemod/tab/ModTabs.java create mode 100644 src/main/resources/data/quickiemod/recipe/shaped_blockquickiepowder_from_quickiepowder.json create mode 100644 src/main/resources/data/quickiemod/recipe/shaped_blockspeedpowder_from_speedpowder.json diff --git a/src/main/java/de/jottyfan/quickiemod/Quickiemod.java b/src/main/java/de/jottyfan/quickiemod/Quickiemod.java index c94812a..aa80474 100644 --- a/src/main/java/de/jottyfan/quickiemod/Quickiemod.java +++ b/src/main/java/de/jottyfan/quickiemod/Quickiemod.java @@ -1,11 +1,16 @@ package de.jottyfan.quickiemod; -import net.fabricmc.api.ModInitializer; +import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import de.jottyfan.quickiemod.block.ModBlocks; import de.jottyfan.quickiemod.item.ModItems; +import de.jottyfan.quickiemod.tab.ModTabs; +import net.fabricmc.api.ModInitializer; +import net.minecraft.block.Block; +import net.minecraft.item.Item; /** * @@ -18,6 +23,8 @@ public class Quickiemod implements ModInitializer { @Override public void onInitialize() { - ModItems.registerModItems(); + List items = ModItems.registerModItems(); + List blocks = ModBlocks.registerModBlocks(); + ModTabs.registerTab(items, blocks); } } \ No newline at end of file diff --git a/src/main/java/de/jottyfan/quickiemod/block/AbstractIdentifiedBlock.java b/src/main/java/de/jottyfan/quickiemod/block/AbstractIdentifiedBlock.java new file mode 100644 index 0000000..ad95ac9 --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/block/AbstractIdentifiedBlock.java @@ -0,0 +1,20 @@ +package de.jottyfan.quickiemod.block; + +import net.minecraft.block.AbstractBlock; +import net.minecraft.block.Block; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.util.Identifier; + +/** + * + * @author jotty + * + */ +public abstract class AbstractIdentifiedBlock extends Block { + + public AbstractIdentifiedBlock(Identifier identifier) { + super(AbstractBlock.Settings.create().registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier))); + } + +} diff --git a/src/main/java/de/jottyfan/quickiemod/block/BlockPowder.java b/src/main/java/de/jottyfan/quickiemod/block/BlockPowder.java new file mode 100644 index 0000000..f981d8f --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/block/BlockPowder.java @@ -0,0 +1,47 @@ +package de.jottyfan.quickiemod.block; + +import java.util.Arrays; +import java.util.List; + +import com.mojang.serialization.MapCodec; + +import net.minecraft.block.AbstractBlock; +import net.minecraft.block.BlockState; +import net.minecraft.block.FallingBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.loot.context.LootWorldContext.Builder; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.util.Identifier; +import net.minecraft.world.explosion.Explosion; + +/** + * + * @author jotty + * + */ +public class BlockPowder extends FallingBlock { + + private final ItemStack[] drops; + + public BlockPowder(Identifier identifier, ItemStack[] drops) { + super(AbstractBlock.Settings.create().luminance(state -> 12).registryKey(RegistryKey.of(RegistryKeys.BLOCK, identifier))); + this.drops = drops; + } + + @Override + public List getDroppedStacks(BlockState state, Builder builder) { + return Arrays.asList(drops); + } + + @Override + public boolean shouldDropItemsOnExplosion(Explosion explosion) { + return true; + } + + @Override + protected MapCodec getCodec() { + // TODO Auto-generated method stub + return null; + } +} diff --git a/src/main/java/de/jottyfan/quickiemod/block/ModBlocks.java b/src/main/java/de/jottyfan/quickiemod/block/ModBlocks.java new file mode 100644 index 0000000..d1acc59 --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/block/ModBlocks.java @@ -0,0 +1,45 @@ +package de.jottyfan.quickiemod.block; + +import java.util.ArrayList; +import java.util.List; + +import de.jottyfan.quickiemod.Quickiemod; +import de.jottyfan.quickiemod.identifier.ModIdentifiers; +import de.jottyfan.quickiemod.item.ModItems; +import net.minecraft.block.Block; +import net.minecraft.item.BlockItem; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.util.Identifier; + +/** + * + * @author jotty + * + */ +public class ModBlocks { + + public static final Block BLOCK_QUICKIEPOWDER = registerBlock(ModIdentifiers.BLOCK_QUICKIEPOWDER, new BlockPowder( + ModIdentifiers.BLOCK_QUICKIEPOWDER, new ItemStack[] { new ItemStack(ModItems.ITEM_QUICKIEPOWDER, 9) })); + public static final Block BLOCK_SPEEDPOWDER = registerBlock(ModIdentifiers.BLOCK_SPEEDPOWDER, new BlockPowder( + ModIdentifiers.BLOCK_SPEEDPOWDER, new ItemStack[] { new ItemStack(ModItems.ITEM_SPEEDPOWDER, 9) })); + + private static final Block registerBlock(Identifier identifier, Block block) { + Registry.register(Registries.ITEM, identifier, new BlockItem(block, new Item.Settings() + .registryKey(RegistryKey.of(RegistryKeys.ITEM, identifier)).useBlockPrefixedTranslationKey())); + return Registry.register(Registries.BLOCK, identifier, block); + } + + public static final List registerModBlocks() { + Quickiemod.LOGGER.info(String.format("registering blocks for %s", Quickiemod.MOD_ID)); + + List blocks = new ArrayList<>(); + blocks.add(BLOCK_QUICKIEPOWDER); + blocks.add(BLOCK_SPEEDPOWDER); + return blocks; + } +} diff --git a/src/main/java/de/jottyfan/quickiemod/block/StandardBlock.java b/src/main/java/de/jottyfan/quickiemod/block/StandardBlock.java new file mode 100644 index 0000000..a3fe187 --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/block/StandardBlock.java @@ -0,0 +1,16 @@ +package de.jottyfan.quickiemod.block; + +import net.minecraft.util.Identifier; + +/** + * + * @author jotty + * + */ +public class StandardBlock extends AbstractIdentifiedBlock { + + public StandardBlock(Identifier identifier) { + super(identifier); + } + +} diff --git a/src/main/java/de/jottyfan/quickiemod/identifier/ModIdentifiers.java b/src/main/java/de/jottyfan/quickiemod/identifier/ModIdentifiers.java index 8db418c..f3101b7 100644 --- a/src/main/java/de/jottyfan/quickiemod/identifier/ModIdentifiers.java +++ b/src/main/java/de/jottyfan/quickiemod/identifier/ModIdentifiers.java @@ -12,4 +12,6 @@ public class ModIdentifiers { public static final Identifier ITEM_STUB = Identifier.of(Quickiemod.MOD_ID, "stub"); public static final Identifier ITEM_SPEEDPOWDER = Identifier.of(Quickiemod.MOD_ID, "speedpowder"); public static final Identifier ITEM_QUICKIEPOWDER = Identifier.of(Quickiemod.MOD_ID, "quickiepowder"); + public static final Identifier BLOCK_QUICKIEPOWDER = Identifier.of(Quickiemod.MOD_ID, "blockquickiepowder"); + public static final Identifier BLOCK_SPEEDPOWDER = Identifier.of(Quickiemod.MOD_ID, "blockspeedpowder"); } diff --git a/src/main/java/de/jottyfan/quickiemod/item/ModItems.java b/src/main/java/de/jottyfan/quickiemod/item/ModItems.java index ee59111..2040c37 100644 --- a/src/main/java/de/jottyfan/quickiemod/item/ModItems.java +++ b/src/main/java/de/jottyfan/quickiemod/item/ModItems.java @@ -1,15 +1,13 @@ package de.jottyfan.quickiemod.item; +import java.util.ArrayList; +import java.util.List; + import de.jottyfan.quickiemod.Quickiemod; import de.jottyfan.quickiemod.identifier.ModIdentifiers; -import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup; import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; -import net.minecraft.registry.RegistryKey; -import net.minecraft.registry.RegistryKeys; -import net.minecraft.text.Text; import net.minecraft.util.Identifier; /** @@ -26,16 +24,13 @@ public class ModItems { return Registry.register(Registries.ITEM, identifier, item); } - public static final void registerModItems() { - Quickiemod.LOGGER.info(String.format("registering items for %s", Quickiemod.MOD_ID)); + public static final List registerModItems() { + Quickiemod.LOGGER.debug(String.format("registering item %s", Quickiemod.MOD_ID)); - Registry.register(Registries.ITEM_GROUP, - RegistryKey.of(RegistryKeys.ITEM_GROUP, Identifier.of(Quickiemod.MOD_ID, "itemgroup")), - FabricItemGroup.builder().icon(() -> new ItemStack(ITEM_SPEEDPOWDER)) - .displayName(Text.literal(Quickiemod.MOD_ID)).entries((enabledFeatures, stacks) -> { - stacks.add(new ItemStack(ITEM_STUB)); - stacks.add(new ItemStack(ITEM_SPEEDPOWDER)); - stacks.add(new ItemStack(ITEM_QUICKIEPOWDER)); - }).build()); + List items = new ArrayList<>(); + items.add(ITEM_STUB); + items.add(ITEM_SPEEDPOWDER); + items.add(ITEM_QUICKIEPOWDER); + return items; } } diff --git a/src/main/java/de/jottyfan/quickiemod/tab/ModTabs.java b/src/main/java/de/jottyfan/quickiemod/tab/ModTabs.java new file mode 100644 index 0000000..0e684cf --- /dev/null +++ b/src/main/java/de/jottyfan/quickiemod/tab/ModTabs.java @@ -0,0 +1,38 @@ +package de.jottyfan.quickiemod.tab; + +import java.util.List; + +import de.jottyfan.quickiemod.Quickiemod; +import de.jottyfan.quickiemod.item.ModItems; +import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup; +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.text.Text; +import net.minecraft.util.Identifier; + +/** + * + * @author jotty + * + */ +public class ModTabs { + + public static final void registerTab(List items, List blocks) { + Registry.register(Registries.ITEM_GROUP, + RegistryKey.of(RegistryKeys.ITEM_GROUP, Identifier.of(Quickiemod.MOD_ID, "itemgroup")), + FabricItemGroup.builder().icon(() -> new ItemStack(ModItems.ITEM_SPEEDPOWDER)) + .displayName(Text.literal(Quickiemod.MOD_ID)).entries((enabledFeatures, stacks) -> { + for (Item item : items) { + stacks.add(new ItemStack(item)); + } + for (Block block : blocks) { + stacks.add(new ItemStack(block)); + } + }).build()); + } +} diff --git a/src/main/resources/data/quickiemod/recipe/shaped_blockquickiepowder_from_quickiepowder.json b/src/main/resources/data/quickiemod/recipe/shaped_blockquickiepowder_from_quickiepowder.json new file mode 100644 index 0000000..789b11e --- /dev/null +++ b/src/main/resources/data/quickiemod/recipe/shaped_blockquickiepowder_from_quickiepowder.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "sss", + "sss", + "sss" + ], + "key": { + "s": "quickiemod:quickiepowder" + }, + "result": { + "id": "quickiemod:blockquickiepowder", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/quickiemod/recipe/shaped_blockspeedpowder_from_speedpowder.json b/src/main/resources/data/quickiemod/recipe/shaped_blockspeedpowder_from_speedpowder.json new file mode 100644 index 0000000..2e45eb2 --- /dev/null +++ b/src/main/resources/data/quickiemod/recipe/shaped_blockspeedpowder_from_speedpowder.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "sss", + "sss", + "sss" + ], + "key": { + "s": "quickiemod:speedpowder" + }, + "result": { + "id": "quickiemod:blockspeedpowder", + "count": 1 + } +} \ No newline at end of file