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