diff --git a/.gitignore b/.gitignore
index 636169f..c5710ee 100644
--- a/.gitignore
+++ b/.gitignore
@@ -41,6 +41,7 @@ run/crash-reports
run/xaero
run/screenshots
run/Xaero*
+run/command_history.txt
# java
diff --git a/.project b/.project
index 910a523..ccfcc94 100644
--- a/.project
+++ b/.project
@@ -2,22 +2,21 @@
mfmd2627
-
-
-
-
- org.eclipse.jdt.core.javabuilder
-
-
-
-
- org.eclipse.buildship.core.gradleprojectbuilder
-
-
-
-
+
org.eclipse.jdt.core.javanature
org.eclipse.buildship.core.gradleprojectnature
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+ org.eclipse.buildship.core.gradleprojectbuilder
+
+
+
+
+
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
index 4e9a3ed..faba1bd 100644
--- a/.settings/org.eclipse.jdt.core.prefs
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -1,5 +1,5 @@
#
-#Fri Jul 03 23:44:46 CEST 2026
+#Wed Sep 02 18:41:28 CEST 2026
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=25
diff --git a/src/main/java/de/jottyfan/minecraft/Mfmd2627.java b/src/main/java/de/jottyfan/minecraft/Mfmd2627.java
index 87b1dff..467e4bb 100644
--- a/src/main/java/de/jottyfan/minecraft/Mfmd2627.java
+++ b/src/main/java/de/jottyfan/minecraft/Mfmd2627.java
@@ -5,10 +5,12 @@ import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import de.jottyfan.minecraft.block.ModBlocks;
import de.jottyfan.minecraft.item.ModItems;
import de.jottyfan.minecraft.tab.ModTab;
import net.fabricmc.api.ModInitializer;
import net.minecraft.world.item.Item;
+import net.minecraft.world.level.block.Block;
/**
*
@@ -24,6 +26,7 @@ public class Mfmd2627 implements ModInitializer {
public void onInitialize() {
LOGGER.debug("initializing {}", MOD_ID);
List- items = ModItems.registerItems();
- ModTab.registerItemGroup(items);
+ List blocks = ModBlocks.registerBlocks();
+ ModTab.registerItemGroup(items, blocks);
}
}
diff --git a/src/main/java/de/jottyfan/minecraft/block/ModBlocks.java b/src/main/java/de/jottyfan/minecraft/block/ModBlocks.java
new file mode 100644
index 0000000..e9adf96
--- /dev/null
+++ b/src/main/java/de/jottyfan/minecraft/block/ModBlocks.java
@@ -0,0 +1,17 @@
+package de.jottyfan.minecraft.block;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import net.minecraft.world.level.block.Block;
+
+public class ModBlocks extends ModBlocksRegistrator {
+
+ public static final Block TIN_ORE = registerBlock("tin_ore");
+
+ public static final List registerBlocks() {
+ List registeredBlocks = new ArrayList<>();
+ registeredBlocks.add(TIN_ORE);
+ return registeredBlocks;
+ }
+}
diff --git a/src/main/java/de/jottyfan/minecraft/block/ModBlocksRegistrator.java b/src/main/java/de/jottyfan/minecraft/block/ModBlocksRegistrator.java
new file mode 100644
index 0000000..beb768b
--- /dev/null
+++ b/src/main/java/de/jottyfan/minecraft/block/ModBlocksRegistrator.java
@@ -0,0 +1,37 @@
+package de.jottyfan.minecraft.block;
+
+import java.util.function.Function;
+
+import de.jottyfan.minecraft.Mfmd2627;
+import net.minecraft.core.Registry;
+import net.minecraft.core.registries.BuiltInRegistries;
+import net.minecraft.core.registries.Registries;
+import net.minecraft.resources.Identifier;
+import net.minecraft.resources.ResourceKey;
+import net.minecraft.world.item.BlockItem;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.state.BlockBehaviour;
+import net.minecraft.world.level.block.state.BlockBehaviour.Properties;
+
+public class ModBlocksRegistrator {
+
+ public static final Block registerBlock(String name) {
+ return registerBlock(name, BlockBehaviour.Properties.of(), Block::new);
+ }
+
+ public static final Block registerBlock(String name, Properties properties,
+ Function function) {
+ Identifier identifier = Identifier.fromNamespaceAndPath(Mfmd2627.MOD_ID, name);
+ Block block = function.apply(properties.setId(ResourceKey.create(Registries.BLOCK, identifier)));
+ Registry.register(BuiltInRegistries.BLOCK, identifier, block);
+ registerBlockItem(identifier, block, new Item.Properties());
+ return block;
+ }
+
+ private static final void registerBlockItem(Identifier identifier, Block block, Item.Properties properties) {
+ BlockItem blockItem = new BlockItem(block, new Item.Properties()
+ .setId(ResourceKey.create(Registries.ITEM, identifier)).modelId(identifier).useItemDescriptionPrefix());
+ Registry.register(BuiltInRegistries.ITEM, identifier, blockItem);
+ }
+}
diff --git a/src/main/java/de/jottyfan/minecraft/item/ModItems.java b/src/main/java/de/jottyfan/minecraft/item/ModItems.java
index 82a2bb5..88ba767 100644
--- a/src/main/java/de/jottyfan/minecraft/item/ModItems.java
+++ b/src/main/java/de/jottyfan/minecraft/item/ModItems.java
@@ -11,15 +11,19 @@ import net.minecraft.world.item.Item;
*
*/
public class ModItems extends ModItemsRegistrator {
- public static final Item STUB = registerItem("stub");
+ public static final Item RAW_TIN = registerItem("raw_tin");
public static final Item RUBY = registerItem("ruby");
public static final Item CHILI = registerItem("chili");
+ public static final Item STUB = registerItem("stub");
+ public static final Item TIN_INGOT = registerItem("tin_ingot");
public static final List
- registerItems() {
List
- registeredItems = new ArrayList<>();
registeredItems.add(STUB);
registeredItems.add(RUBY);
registeredItems.add(CHILI);
+ registeredItems.add(RAW_TIN);
+ registeredItems.add(TIN_INGOT);
return registeredItems;
}
}
diff --git a/src/main/java/de/jottyfan/minecraft/tab/ModTab.java b/src/main/java/de/jottyfan/minecraft/tab/ModTab.java
index a0f3864..e1b4e8d 100644
--- a/src/main/java/de/jottyfan/minecraft/tab/ModTab.java
+++ b/src/main/java/de/jottyfan/minecraft/tab/ModTab.java
@@ -14,6 +14,7 @@ import net.minecraft.resources.ResourceKey;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.level.block.Block;
/**
*
@@ -27,7 +28,7 @@ public class ModTab {
*
* @param items the items
*/
- public static final void registerItemGroup(List
- items) {
+ public static final void registerItemGroup(List
- items, List blocks) {
ResourceKey tabKey = ResourceKey.create(Registries.CREATIVE_MODE_TAB,
Identifier.fromNamespaceAndPath(Mfmd2627.MOD_ID, "itemgroup"));
@@ -36,6 +37,9 @@ public class ModTab {
for (Item item : items) {
output.accept(item);
}
+ for (Block block : blocks) {
+ output.accept(block.asItem());
+ }
}).build();
Registry.register(BuiltInRegistries.CREATIVE_MODE_TAB, tabKey, quicklyTab);
diff --git a/src/main/resources/assets/mfmd2627/blockstates/tin_ore.json b/src/main/resources/assets/mfmd2627/blockstates/tin_ore.json
new file mode 100644
index 0000000..2186c76
--- /dev/null
+++ b/src/main/resources/assets/mfmd2627/blockstates/tin_ore.json
@@ -0,0 +1,7 @@
+{
+ "variants": {
+ "": {
+ "model": "mfmd2627:block/tin_ore"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/mfmd2627/items/raw_tin.json b/src/main/resources/assets/mfmd2627/items/raw_tin.json
new file mode 100644
index 0000000..b851887
--- /dev/null
+++ b/src/main/resources/assets/mfmd2627/items/raw_tin.json
@@ -0,0 +1,6 @@
+{
+ "model": {
+ "type": "minecraft:model",
+ "model": "mfmd2627:item/raw_tin"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/mfmd2627/items/tin_ingot.json b/src/main/resources/assets/mfmd2627/items/tin_ingot.json
new file mode 100644
index 0000000..ef1d43b
--- /dev/null
+++ b/src/main/resources/assets/mfmd2627/items/tin_ingot.json
@@ -0,0 +1,6 @@
+{
+ "model": {
+ "type": "minecraft:model",
+ "model": "mfmd2627:item/tin_ingot"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/mfmd2627/items/tin_ore.json b/src/main/resources/assets/mfmd2627/items/tin_ore.json
new file mode 100644
index 0000000..e5d6d40
--- /dev/null
+++ b/src/main/resources/assets/mfmd2627/items/tin_ore.json
@@ -0,0 +1,6 @@
+{
+ "model": {
+ "type": "minecraft:model",
+ "model": "mfmd2627:block/tin_ore"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/mfmd2627/lang/de_de.json b/src/main/resources/assets/mfmd2627/lang/de_de.json
index 90330e6..084a58d 100644
--- a/src/main/resources/assets/mfmd2627/lang/de_de.json
+++ b/src/main/resources/assets/mfmd2627/lang/de_de.json
@@ -1,5 +1,8 @@
{
"item.mfmd2627.stub": "Stummel",
+ "item.mfmd2627.raw_tin": "Zinn",
"item.mfmd2627.ruby": "Rubin",
+ "item.mfmd2627.tin_ingot": "Zinnbarren",
+ "item.mfmd2627.tin_ore": "Zinnerz",
"tab.mfmd2627": "Mfmd2627"
}
\ No newline at end of file
diff --git a/src/main/resources/assets/mfmd2627/lang/en_us.json b/src/main/resources/assets/mfmd2627/lang/en_us.json
index 3fbf68f..476aaa7 100644
--- a/src/main/resources/assets/mfmd2627/lang/en_us.json
+++ b/src/main/resources/assets/mfmd2627/lang/en_us.json
@@ -1,5 +1,8 @@
{
"item.mfmd2627.stub": "Stub",
+ "item.mfmd2627.raw_tin": "Tin",
"item.mfmd2627.ruby": "Ruby",
+ "item.mfmd2627.tin_ingot": "Tin Ingot",
+ "item.mfmd2627.tin_ore": "Tin Ore",
"tab.mfmd2627": "Mfmd2627"
}
\ No newline at end of file
diff --git a/src/main/resources/assets/mfmd2627/models/block/tin_ore.json b/src/main/resources/assets/mfmd2627/models/block/tin_ore.json
new file mode 100644
index 0000000..583f8e8
--- /dev/null
+++ b/src/main/resources/assets/mfmd2627/models/block/tin_ore.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "all": "mfmd2627:block/tin_ore"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/mfmd2627/models/item/raw_tin.json b/src/main/resources/assets/mfmd2627/models/item/raw_tin.json
new file mode 100644
index 0000000..22222e6
--- /dev/null
+++ b/src/main/resources/assets/mfmd2627/models/item/raw_tin.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "mfmd2627:item/raw_tin"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/mfmd2627/models/item/tin_ingot.json b/src/main/resources/assets/mfmd2627/models/item/tin_ingot.json
new file mode 100644
index 0000000..4695e0f
--- /dev/null
+++ b/src/main/resources/assets/mfmd2627/models/item/tin_ingot.json
@@ -0,0 +1,6 @@
+{
+ "parent": "minecraft:item/generated",
+ "textures": {
+ "layer0": "mfmd2627:item/tin_ingot"
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/mfmd2627/models/item/tin_ore.json b/src/main/resources/assets/mfmd2627/models/item/tin_ore.json
new file mode 100644
index 0000000..d82552c
--- /dev/null
+++ b/src/main/resources/assets/mfmd2627/models/item/tin_ore.json
@@ -0,0 +1,3 @@
+{
+ "parent": "minecraft:block/tin_ore"
+}
\ No newline at end of file
diff --git a/src/main/resources/assets/mfmd2627/textures/block/tin_ore.png b/src/main/resources/assets/mfmd2627/textures/block/tin_ore.png
new file mode 100644
index 0000000..04d5ec2
Binary files /dev/null and b/src/main/resources/assets/mfmd2627/textures/block/tin_ore.png differ
diff --git a/src/main/resources/assets/mfmd2627/textures/item/cat_food.png b/src/main/resources/assets/mfmd2627/textures/item/cat_food.png
new file mode 100644
index 0000000..3f78254
Binary files /dev/null and b/src/main/resources/assets/mfmd2627/textures/item/cat_food.png differ
diff --git a/src/main/resources/assets/mfmd2627/textures/item/raw_tin.png b/src/main/resources/assets/mfmd2627/textures/item/raw_tin.png
new file mode 100644
index 0000000..d25d912
Binary files /dev/null and b/src/main/resources/assets/mfmd2627/textures/item/raw_tin.png differ
diff --git a/src/main/resources/assets/mfmd2627/textures/item/tin_ingot.png b/src/main/resources/assets/mfmd2627/textures/item/tin_ingot.png
new file mode 100644
index 0000000..00ea394
Binary files /dev/null and b/src/main/resources/assets/mfmd2627/textures/item/tin_ingot.png differ