From 64b4a2a2dfc5bf0e47dff1e539bc2f5c4b1b472e Mon Sep 17 00:00:00 2001 From: David-123 <1826013250@qq.com> Date: Sat, 8 Mar 2025 08:13:56 +0800 Subject: [PATCH] block --- .../java/com/learning/block/CustomBlocks.java | 36 ++++++++++ .../java/com/learning/block/DamageBlock.java | 21 ++++++ .../java/com/learning/component/Foods.java | 3 +- .../java/com/learning/item/BakedToast.java | 21 ++++++ .../java/com/learning/item/CustomItem.java | 62 ++++++++++++------ src/main/java/com/learning/item/Toast.java | 6 +- .../learning/itemgroup/CustomItemGroup.java | 34 +++++----- .../learning/blockstates/damage_block.json | 7 ++ .../assets/learning/items/baked_toast.json | 6 ++ .../assets/learning/items/damage_block.json | 6 ++ .../resources/assets/learning/lang/en_us.json | 3 +- .../learning/models/block/damage_block.json | 8 +++ .../learning/models/item/baked_toast.json | 6 ++ .../textures/block/damage_block_bottom.png | Bin 0 -> 91 bytes .../textures/block/damage_block_side.png | Bin 0 -> 260 bytes .../textures/block/damage_block_top.png | Bin 0 -> 211 bytes .../learning/textures/item/baked_toast.png | Bin 0 -> 149 bytes 17 files changed, 179 insertions(+), 40 deletions(-) create mode 100644 src/main/java/com/learning/block/CustomBlocks.java create mode 100644 src/main/java/com/learning/block/DamageBlock.java create mode 100644 src/main/java/com/learning/item/BakedToast.java create mode 100644 src/main/resources/assets/learning/blockstates/damage_block.json create mode 100644 src/main/resources/assets/learning/items/baked_toast.json create mode 100644 src/main/resources/assets/learning/items/damage_block.json create mode 100644 src/main/resources/assets/learning/models/block/damage_block.json create mode 100644 src/main/resources/assets/learning/models/item/baked_toast.json create mode 100644 src/main/resources/assets/learning/textures/block/damage_block_bottom.png create mode 100644 src/main/resources/assets/learning/textures/block/damage_block_side.png create mode 100644 src/main/resources/assets/learning/textures/block/damage_block_top.png create mode 100644 src/main/resources/assets/learning/textures/item/baked_toast.png diff --git a/src/main/java/com/learning/block/CustomBlocks.java b/src/main/java/com/learning/block/CustomBlocks.java new file mode 100644 index 0000000..0115c44 --- /dev/null +++ b/src/main/java/com/learning/block/CustomBlocks.java @@ -0,0 +1,36 @@ +package com.learning.block; + +import com.learning.Learning; + +import java.util.function.Function; + +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.block.AbstractBlock; +import net.minecraft.block.Block; +import net.minecraft.util.Identifier; + +public class CustomBlocks { + public static void registerBlocks() { + Learning.LOGGER.info("Registering blocks..."); + } + + public static final Block test_block = register("test_block"); + public static final Block damageBlock = register("damage_block", DamageBlock::new, AbstractBlock.Settings.create()); + + public static final Block register(String blockId) { + return register(blockId, Block::new, AbstractBlock.Settings.create()); + } + + public static Block register(String blockId, Function<AbstractBlock.Settings, Block> factory, AbstractBlock.Settings settings) { + RegistryKey<Block> key = keyOf(blockId); + return Registry.register(Registries.BLOCK, key, factory.apply(settings.registryKey(key))); + + } + + private static final RegistryKey<Block> keyOf(String blockId) { + return RegistryKey.of(RegistryKeys.BLOCK, Identifier.of(Learning.MOD_ID, blockId)); + } +} diff --git a/src/main/java/com/learning/block/DamageBlock.java b/src/main/java/com/learning/block/DamageBlock.java new file mode 100644 index 0000000..bd380f9 --- /dev/null +++ b/src/main/java/com/learning/block/DamageBlock.java @@ -0,0 +1,21 @@ +package com.learning.block; + + +import net.minecraft.block.AbstractBlock; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraft.entity.Entity; + +public class DamageBlock extends Block { + public DamageBlock(AbstractBlock.Settings settings) { + super(settings); + } + public void onSteppedOn(World world, BlockPos pos, BlockState state, Entity entity) { + if (!world.isClient()) { + entity.damage((ServerWorld)world, world.getDamageSources().generic(), 6f); + } + } +} diff --git a/src/main/java/com/learning/component/Foods.java b/src/main/java/com/learning/component/Foods.java index 82ef344..00a1e23 100644 --- a/src/main/java/com/learning/component/Foods.java +++ b/src/main/java/com/learning/component/Foods.java @@ -3,5 +3,6 @@ package com.learning.component; import net.minecraft.component.type.FoodComponent; public class Foods { - public static FoodComponent toastFood = new FoodComponent.Builder().nutrition(4).build(); + public static FoodComponent toastFood = new FoodComponent.Builder().nutrition(2).build(); + public static FoodComponent bakedToastFood = new FoodComponent.Builder().nutrition(6).build(); } diff --git a/src/main/java/com/learning/item/BakedToast.java b/src/main/java/com/learning/item/BakedToast.java new file mode 100644 index 0000000..738da11 --- /dev/null +++ b/src/main/java/com/learning/item/BakedToast.java @@ -0,0 +1,21 @@ +package com.learning.item; + +import java.util.List; + +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.tooltip.TooltipType; +import net.minecraft.text.Text; +import net.minecraft.util.Formatting; + +public class BakedToast extends Item { + public BakedToast(Item.Settings settings) { + super(settings); + } + + @Override + public void appendTooltip(ItemStack stack, TooltipContext context, List<Text> tooltip, TooltipType type) { + super.appendTooltip(stack, context, tooltip, type); + tooltip.add(Text.translatable("toolTip.learning.baked_toast").formatted(Formatting.GOLD)); + } +} diff --git a/src/main/java/com/learning/item/CustomItem.java b/src/main/java/com/learning/item/CustomItem.java index 88bbde1..c4abfbd 100644 --- a/src/main/java/com/learning/item/CustomItem.java +++ b/src/main/java/com/learning/item/CustomItem.java @@ -4,37 +4,61 @@ package com.learning.item; import java.util.function.Function; import com.learning.Learning; -import com.learning.component.Foods; -import com.learning.item.Toast; +import com.learning.block.CustomBlocks; +import com.learning.component.Foods; +import net.minecraft.item.BlockItem; import net.minecraft.item.Item; 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; +import net.minecraft.block.Block; import net.minecraft.component.type.ConsumableComponents; public class CustomItem { - public static void registerItems() { - Learning.LOGGER.info("Registering Items..."); - } + public static void registerItems() { + Learning.LOGGER.info("Registering Items..."); + } - public static Item toast = register("toast", Toast::new, new Item.Settings().food(Foods.toastFood, ConsumableComponents.food().consumeSeconds(0.5f).build())); + public static Item toast = register("toast", Toast::new, new Item.Settings().food(Foods.toastFood)); + public static Item bakedToast = register("baked_toast", BakedToast::new, new Item.Settings().food(Foods.bakedToastFood, ConsumableComponents.food().consumeSeconds(0.8f).build())); + public static Item damageBlock = register(CustomBlocks.damageBlock); - private static Item register(String itemId) { - return register(itemId, new Item.Settings()); - } + private static Item register(Block block) { + RegistryKey<Item> key = keyOf(Registries.BLOCK.getKey(block).get()); + return Registry.register(Registries.ITEM, key, new BlockItem(block, new Item.Settings().useItemPrefixedTranslationKey().registryKey(key))); + + } - private static Item register(String itemId, Item.Settings settings) { - return register(itemId, Item::new, settings); - } + private static Item register(String itemId) { + return register(itemId, new Item.Settings()); + } + + private static Item register(String itemId, Item.Settings settings) { + return register(itemId, Item::new, settings); + } - private static Item register(String itemId, Function<Item.Settings, Item> factory, Item.Settings settings) { - RegistryKey<Item> key = keyOf(itemId); - return Registry.register(Registries.ITEM, key, factory.apply(settings.registryKey(key))); - } - private static RegistryKey<Item> keyOf(String itemId) { - return RegistryKey.of(RegistryKeys.ITEM, Identifier.of(Learning.MOD_ID, itemId)); - } + private static Item register(String itemId, Function<Item.Settings, Item> factory, Item.Settings settings) { + RegistryKey<Item> key = keyOf(itemId); + return register(key, factory, settings); + } + + private static Item register(RegistryKey<Item> key, Function<Item.Settings, Item> factory, Item.Settings settings) { + return register(key, factory.apply(settings.registryKey(key))); + } + + private static Item register(RegistryKey<Item> key, Item item) { + return Registry.register(Registries.ITEM, key, item); + + } + + private static RegistryKey<Item> keyOf(String itemId) { + return RegistryKey.of(RegistryKeys.ITEM, Identifier.of(Learning.MOD_ID, itemId)); + } + + private static RegistryKey<Item> keyOf(RegistryKey<Block> blockKey) { + return RegistryKey.of(RegistryKeys.ITEM, blockKey.getValue()); + } } diff --git a/src/main/java/com/learning/item/Toast.java b/src/main/java/com/learning/item/Toast.java index 6255754..f2a1832 100644 --- a/src/main/java/com/learning/item/Toast.java +++ b/src/main/java/com/learning/item/Toast.java @@ -12,17 +12,17 @@ import java.util.List; public class Toast extends Item { public Toast(Item.Settings settings) { - super(settings); + super(settings); } @Override public void appendTooltip(ItemStack stack, TooltipContext context, List<Text> tooltip, TooltipType type) { super.appendTooltip(stack, context, tooltip, type); tooltip.add(Text.translatable("toolTip.learning.toast0").formatted(Formatting.GRAY)); - if (Screen.hasControlDown()) { + if (Screen.hasShiftDown()) { tooltip.add(Text.translatable("toolTip.learning.toast1")); } else { - tooltip.add(Text.translatable("toolTip.learning.hold_control")); + tooltip.add(Text.translatable("toolTip.learning.hold_shift")); } } } diff --git a/src/main/java/com/learning/itemgroup/CustomItemGroup.java b/src/main/java/com/learning/itemgroup/CustomItemGroup.java index 0b2d353..a4a78cc 100644 --- a/src/main/java/com/learning/itemgroup/CustomItemGroup.java +++ b/src/main/java/com/learning/itemgroup/CustomItemGroup.java @@ -14,26 +14,28 @@ import net.minecraft.text.Text; import net.minecraft.util.Identifier; public class CustomItemGroup { - public static void registerItemGroup() { + public static void registerItemGroup() { Learning.LOGGER.info("Registering ItemGroup..."); Learning.LOGGER.info("Registering item into ItemGroups..."); ItemGroupEvents.modifyEntriesEvent(ItemGroups.FOOD_AND_DRINK).register( - register -> register.add(CustomItem.toast) - ); - } + register -> register.add(CustomItem.toast) + ); + } - public static ItemGroup customItemGroup = register("custom_itemgroup", ItemGroup.create(null, -1) - .icon(() -> new ItemStack(CustomItem.toast)) - .displayName(Text.translatable("itemGroup.learning.custom_itemgroup")) - .entries((displayContext, entries) -> { - entries.add(CustomItem.toast); - }) - .build()); + public static ItemGroup customItemGroup = register("custom_itemgroup", ItemGroup.create(null, -1) + .icon(() -> new ItemStack(CustomItem.toast)) + .displayName(Text.translatable("itemGroup.learning.custom_itemgroup")) + .entries((displayContext, entries) -> { + entries.add(CustomItem.toast); + entries.add(CustomItem.bakedToast); + entries.add(CustomItem.damageBlock); + }) + .build()); private static ItemGroup register(String groupId, ItemGroup itemGroup) { - return Registry.register( - Registries.ITEM_GROUP, - Identifier.of(Learning.MOD_ID, groupId), - itemGroup); - } + return Registry.register( + Registries.ITEM_GROUP, + Identifier.of(Learning.MOD_ID, groupId), + itemGroup); + } } diff --git a/src/main/resources/assets/learning/blockstates/damage_block.json b/src/main/resources/assets/learning/blockstates/damage_block.json new file mode 100644 index 0000000..8de72cd --- /dev/null +++ b/src/main/resources/assets/learning/blockstates/damage_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "learning:block/damage_block" + } + } +} diff --git a/src/main/resources/assets/learning/items/baked_toast.json b/src/main/resources/assets/learning/items/baked_toast.json new file mode 100644 index 0000000..576c906 --- /dev/null +++ b/src/main/resources/assets/learning/items/baked_toast.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "learning:item/baked_toast" + } +} diff --git a/src/main/resources/assets/learning/items/damage_block.json b/src/main/resources/assets/learning/items/damage_block.json new file mode 100644 index 0000000..026a2aa --- /dev/null +++ b/src/main/resources/assets/learning/items/damage_block.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "learning:block/damage_block" + } +} diff --git a/src/main/resources/assets/learning/lang/en_us.json b/src/main/resources/assets/learning/lang/en_us.json index 3ee41e1..88a3e3f 100644 --- a/src/main/resources/assets/learning/lang/en_us.json +++ b/src/main/resources/assets/learning/lang/en_us.json @@ -5,5 +5,6 @@ "toolTip.learning.toast0": "A simple fastfood.", "toolTip.learning.toast1": "Will be tastier after baking in the furnace!", - "toolTip.learning.hold_control": "Hold §6Control §rto show more information." + "toolTip.learning.hold_control": "Hold §6Control §rto show more information.", + "toolTip.learning.hold_shift": "Hold §6Shift §rto show more information." } diff --git a/src/main/resources/assets/learning/models/block/damage_block.json b/src/main/resources/assets/learning/models/block/damage_block.json new file mode 100644 index 0000000..bd93bda --- /dev/null +++ b/src/main/resources/assets/learning/models/block/damage_block.json @@ -0,0 +1,8 @@ +{ + "parent": "block/cube_bottom_top", + "textures": { + "bottom": "learning:block/damage_block_bottom", + "top": "learning:block/damage_block_top", + "side": "learning:block/damage_block_side" + } +} diff --git a/src/main/resources/assets/learning/models/item/baked_toast.json b/src/main/resources/assets/learning/models/item/baked_toast.json new file mode 100644 index 0000000..fbeac1c --- /dev/null +++ b/src/main/resources/assets/learning/models/item/baked_toast.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "learning:item/baked_toast" + } +} diff --git a/src/main/resources/assets/learning/textures/block/damage_block_bottom.png b/src/main/resources/assets/learning/textures/block/damage_block_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..f13395505e208e2d0d9cae67cc75890a13dd2a6b GIT binary patch literal 91 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`N}eu`Ar^wkfB0E=L>Sb#zBFy^ olR9v~K#FZ~BEu;j=J|XK*{4`!6s|}L0#!43y85}Sb4q9e08<AQUjP6A literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/learning/textures/block/damage_block_side.png b/src/main/resources/assets/learning/textures/block/damage_block_side.png new file mode 100644 index 0000000000000000000000000000000000000000..fa5e01c441256f578e97941cdbc930858003227b GIT binary patch literal 260 zcmV+f0sH=mP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0002XNkl<ZI1!DL z(G9{d3`7&u5nw9%O=pB}n5ygmzDO@}oP=U2J=?jvx^0?27HJUgZEd>e`?IMj77`F) z6wLZb6A=6DN;<{JsRnUF4mMR;(am#<0S(ZLk4%ymNvK*2p~ulACnGd*dAyRAnbf`s zOP+JCJ(BJ#Ko((7YcW&q`>Kg<0yczk62C|O(*P6B03wfv1|sWF$z*7xHygi%dJ5Ba z=KwC)9VA3ElriFR6I}?uK`&zDWD)FcHF(Z{f2Pg=Cyc10A^k5uN}f+Qtia6x0000< KMNUMnLSTY8er2ry literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/learning/textures/block/damage_block_top.png b/src/main/resources/assets/learning/textures/block/damage_block_top.png new file mode 100644 index 0000000000000000000000000000000000000000..48fd2247285d380c0fdcfa146894feefff304eee GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`vpiiKLo5W(1{n%9DDW_!SO1|s z_iOLFe_sC^QclD^k@BDW#)%`-le=>MaicZSS&t)@ai^LtW$Q9%D1Bd%WyG?h%iPU; z<<zk2FCVJ&uy47X^u|;vHfYi#^Oze<&kn?06x%S{_x-PHN_vtz7cz&NJj!Lf6{g<L zZ7`E_yQ@Lv++9igxWa9f|Go5IVjFdw%dhegkHFr|bt*iUGyPtQg`f89PX7pWC4;A{ KpUXO@geCy@C{f}7 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/learning/textures/item/baked_toast.png b/src/main/resources/assets/learning/textures/item/baked_toast.png new file mode 100644 index 0000000000000000000000000000000000000000..af72a907907bb0fc8e4983865ff55db57e9afafb GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`F`h1tAr^wk2@;<g1aGp7pBDM2 z{JC)B*WGdlzHVHgy{qgu<1PWNc<)fg*7Gfgl$)Cq8FulWNK2aRY{+mk|Af@Un=i5g xcpSn!bgHi~u(9>DuyEPrTy)J@a4BAvLG~^8>?wx~l7RLwc)I$ztaD0e0swD6GM4}V literal 0 HcmV?d00001