diff --git a/.gitignore b/.gitignore index 00b7834..1e53b75 100644 --- a/.gitignore +++ b/.gitignore @@ -41,7 +41,10 @@ run/crash-reports run/xaero run/screenshots run/Xaero* +<<<<<<< HEAD run/serves* +======= +>>>>>>> refs/remotes/origin/main 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/run/servers.dat b/run/servers.dat new file mode 100644 index 0000000..c9a90aa Binary files /dev/null and b/run/servers.dat differ diff --git a/run/servers.dat_old b/run/servers.dat_old new file mode 100644 index 0000000..c9a90aa Binary files /dev/null and b/run/servers.dat_old differ 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/Food.java b/src/main/java/de/jottyfan/minecraft/item/Food.java new file mode 100644 index 0000000..1841735 --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/item/Food.java @@ -0,0 +1,17 @@ +package de.jottyfan.minecraft.item; + +import net.minecraft.world.food.FoodProperties; + +public enum Food { + GINGERBREAD(new FoodProperties.Builder().nutrition(1).saturationModifier(0.1f).build()); + + private final FoodProperties properties; + + private Food(FoodProperties properties) { + this.properties = properties; + } + + public FoodProperties get() { + return properties; + } +} \ No newline at end of file diff --git a/src/main/java/de/jottyfan/minecraft/item/ModItems.java b/src/main/java/de/jottyfan/minecraft/item/ModItems.java index 5710549..3d93688 100644 --- a/src/main/java/de/jottyfan/minecraft/item/ModItems.java +++ b/src/main/java/de/jottyfan/minecraft/item/ModItems.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import net.minecraft.world.item.Item; +import net.minecraft.world.item.Item.Properties; /** * @@ -11,15 +12,25 @@ 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 FUTURISTIC_CROSSBOW = registerItem("futuristic_crossbow"); + public static final Item CHILI = registerItem("chili"); + public static final Item STUB = registerItem("stub", StubItem::new); + public static final Item TIN_INGOT = registerItem("tin_ingot"); + public static final Item TIN_DUST = registerItem("tin_dust"); + public static final Item GINGERBREAD = registerItem("gingerbread", new Properties().food(Food.GINGERBREAD.get())); public static final List registerItems() { List registeredItems = new ArrayList<>(); registeredItems.add(STUB); registeredItems.add(RUBY); registeredItems.add(FUTURISTIC_CROSSBOW); + registeredItems.add(CHILI); + registeredItems.add(RAW_TIN); + registeredItems.add(TIN_INGOT); + registeredItems.add(TIN_DUST); + registeredItems.add(GINGERBREAD); return registeredItems; } } diff --git a/src/main/java/de/jottyfan/minecraft/item/ModItemsRegistrator.java b/src/main/java/de/jottyfan/minecraft/item/ModItemsRegistrator.java index d24507b..c0a61ad 100644 --- a/src/main/java/de/jottyfan/minecraft/item/ModItemsRegistrator.java +++ b/src/main/java/de/jottyfan/minecraft/item/ModItemsRegistrator.java @@ -28,12 +28,34 @@ public abstract class ModItemsRegistrator { return registerItem(name, new Item.Properties(), Item::new); } + /** + * register a new item with the name and its item class + * + * @param name the name + * @param properties the properties; create it with new Item.Properties(); + * @return the registered item + */ + public static final Item registerItem(String name, Properties properties) { + return registerItem(name, properties, Item::new); + } + + /** + * register a new item with the name and its properties + * + * @param name the name + * @param function the function; create it with Item::new + * @return the registered item + */ + public static final Item registerItem(String name, Function function) { + return registerItem(name, new Item.Properties(), function); + } + /** * register a new item with the name, the properties and the Item class reference * * @param name the name of the item - * @param the properties; create it with new Item.Properties(); - * @param the function; create it with Item::new + * @param properties the properties; create it with new Item.Properties(); + * @param function the function; create it with Item::new * @return the registered item */ public static final Item registerItem(String name, Properties properties, Function function) { diff --git a/src/main/java/de/jottyfan/minecraft/item/StubItem.java b/src/main/java/de/jottyfan/minecraft/item/StubItem.java new file mode 100644 index 0000000..1b55ddd --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/item/StubItem.java @@ -0,0 +1,49 @@ +package de.jottyfan.minecraft.item; + +import java.util.Map; + +import org.joml.Random; + +import net.minecraft.core.BlockPos; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; + +/** + * the stub item definition; specifies, what the stub can do + */ +public class StubItem extends Item { + private static final Map SLASH_MAP = Map.of(Blocks.HAY_BLOCK, Items.WHEAT, Blocks.DRIED_KELP_BLOCK, + Items.DRIED_KELP); + + public StubItem(Properties properties) { + super(properties); + } + + @Override + public InteractionResult useOn(UseOnContext context) { + Level level = context.getLevel(); + BlockPos pos = context.getClickedPos(); + Block block = level.getBlockState(pos).getBlock(); + if (SLASH_MAP.containsKey(block) && !level.isClientSide()) { + level.setBlockAndUpdate(pos, Blocks.AIR.defaultBlockState()); + level.playSound(null, pos, SoundEvents.HOE_TILL.value(), SoundSource.BLOCKS); + for (int i = 0; i < 9; i++) { + ItemStack stack = new ItemStack(SLASH_MAP.get(block)); + float scatter = new Random().nextFloat(); + ItemEntity entity = new ItemEntity(level, pos.getX(), pos.getY(), pos.getZ(), + stack, scatter, scatter, 0.2); + level.addFreshEntity(entity); + } + } + return InteractionResult.SUCCESS; + } +} 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/chili.json b/src/main/resources/assets/mfmd2627/items/chili.json new file mode 100644 index 0000000..fc23647 --- /dev/null +++ b/src/main/resources/assets/mfmd2627/items/chili.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "mfmd2627:item/chili" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mfmd2627/items/gingerbread.json b/src/main/resources/assets/mfmd2627/items/gingerbread.json new file mode 100644 index 0000000..0772e79 --- /dev/null +++ b/src/main/resources/assets/mfmd2627/items/gingerbread.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "mfmd2627:item/gingerbread" + } +} \ 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_dust.json b/src/main/resources/assets/mfmd2627/items/tin_dust.json new file mode 100644 index 0000000..be9c6e8 --- /dev/null +++ b/src/main/resources/assets/mfmd2627/items/tin_dust.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "mfmd2627:item/tin_dust" + } +} \ 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 d616c9b..4e8dcf8 100644 --- a/src/main/resources/assets/mfmd2627/lang/de_de.json +++ b/src/main/resources/assets/mfmd2627/lang/de_de.json @@ -1,6 +1,11 @@ { + "item.mfmd2627.gingerbread": "Lebkuchen", "item.mfmd2627.stub": "Stummel", + "item.mfmd2627.raw_tin": "Zinn", "item.mfmd2627.ruby": "Rubin", "item.mfmd2627.futuristic_crossbow": "futuristische Armbrust", + "item.mfmd2627.tin_dust": "Zinnpulver", + "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 8b0f168..e698c8a 100644 --- a/src/main/resources/assets/mfmd2627/lang/en_us.json +++ b/src/main/resources/assets/mfmd2627/lang/en_us.json @@ -1,6 +1,11 @@ { + "item.mfmd2627.gingerbread": "Gingerbread", "item.mfmd2627.stub": "Stub", + "item.mfmd2627.raw_tin": "Tin", "item.mfmd2627.ruby": "Ruby", "item.mfmd2627.futuristic_crossbow": "Futuristic Crossbow", + "item.mfmd2627.tin_dust": "Tin Dust", + "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/chili.json b/src/main/resources/assets/mfmd2627/models/item/chili.json new file mode 100644 index 0000000..8f060e7 --- /dev/null +++ b/src/main/resources/assets/mfmd2627/models/item/chili.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "mfmd2627:item/chili" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mfmd2627/models/item/gingerbread.json b/src/main/resources/assets/mfmd2627/models/item/gingerbread.json new file mode 100644 index 0000000..8a124c8 --- /dev/null +++ b/src/main/resources/assets/mfmd2627/models/item/gingerbread.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "mfmd2627:item/gingerbread" + } +} \ 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_dust.json b/src/main/resources/assets/mfmd2627/models/item/tin_dust.json new file mode 100644 index 0000000..d5b84c2 --- /dev/null +++ b/src/main/resources/assets/mfmd2627/models/item/tin_dust.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "mfmd2627:item/tin_dust" + } +} \ 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/chili.png b/src/main/resources/assets/mfmd2627/textures/item/chili.png new file mode 100644 index 0000000..ed13e28 Binary files /dev/null and b/src/main/resources/assets/mfmd2627/textures/item/chili.png differ diff --git a/src/main/resources/assets/mfmd2627/textures/item/gingerbread.png b/src/main/resources/assets/mfmd2627/textures/item/gingerbread.png new file mode 100644 index 0000000..6b6ba3e Binary files /dev/null and b/src/main/resources/assets/mfmd2627/textures/item/gingerbread.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_dust.png b/src/main/resources/assets/mfmd2627/textures/item/tin_dust.png new file mode 100644 index 0000000..96bb56a Binary files /dev/null and b/src/main/resources/assets/mfmd2627/textures/item/tin_dust.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..9235441 Binary files /dev/null and b/src/main/resources/assets/mfmd2627/textures/item/tin_ingot.png differ diff --git a/src/main/resources/data/minecraft/tags/item/pig_food.json b/src/main/resources/data/minecraft/tags/item/pig_food.json new file mode 100644 index 0000000..da7a7e1 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/item/pig_food.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "mfmd2627:gingerbread" + ] +}