diff --git a/src/main/java/de/jottyfan/minecraft/Mfmd2627.java b/src/main/java/de/jottyfan/minecraft/Mfmd2627.java index 2c34098..87b1dff 100644 --- a/src/main/java/de/jottyfan/minecraft/Mfmd2627.java +++ b/src/main/java/de/jottyfan/minecraft/Mfmd2627.java @@ -1,9 +1,14 @@ package de.jottyfan.minecraft; +import java.util.List; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import de.jottyfan.minecraft.item.ModItems; +import de.jottyfan.minecraft.tab.ModTab; import net.fabricmc.api.ModInitializer; +import net.minecraft.world.item.Item; /** * @@ -17,5 +22,8 @@ public class Mfmd2627 implements ModInitializer { @Override public void onInitialize() { + LOGGER.debug("initializing {}", MOD_ID); + List items = ModItems.registerItems(); + ModTab.registerItemGroup(items); } } diff --git a/src/main/java/de/jottyfan/minecraft/item/ModItems.java b/src/main/java/de/jottyfan/minecraft/item/ModItems.java new file mode 100644 index 0000000..4b5476b --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/item/ModItems.java @@ -0,0 +1,21 @@ +package de.jottyfan.minecraft.item; + +import java.util.ArrayList; +import java.util.List; + +import net.minecraft.world.item.Item; + +/** + * + * @author jotty + * + */ +public class ModItems extends ModItemsRegistrator { + public static final Item STUB = registerItem("stub"); + + public static final List registerItems() { + List registeredItems = new ArrayList<>(); + registeredItems.add(STUB); + return registeredItems; + } +} diff --git a/src/main/java/de/jottyfan/minecraft/item/ModItemsRegistrator.java b/src/main/java/de/jottyfan/minecraft/item/ModItemsRegistrator.java new file mode 100644 index 0000000..d24507b --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/item/ModItemsRegistrator.java @@ -0,0 +1,45 @@ +package de.jottyfan.minecraft.item; + +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.Item; +import net.minecraft.world.item.Item.Properties; + +/** + * + * @author jotty + * + */ +public abstract class ModItemsRegistrator { + + /** + * register a new item with the name + * + * @param name the name of the item + * @return the registered item + */ + public static final Item registerItem(String name) { + return registerItem(name, new Item.Properties(), Item::new); + } + + /** + * 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 + * @return the registered item + */ + public static final Item registerItem(String name, Properties properties, Function function) { + Identifier identifier = Identifier.fromNamespaceAndPath(Mfmd2627.MOD_ID, name); + Item item = function.apply(properties.setId(ResourceKey.create(Registries.ITEM, identifier)).modelId(identifier) + .useItemDescriptionPrefix()); + return Registry.register(BuiltInRegistries.ITEM, identifier, item); + } +} diff --git a/src/main/java/de/jottyfan/minecraft/tab/ModTab.java b/src/main/java/de/jottyfan/minecraft/tab/ModTab.java new file mode 100644 index 0000000..a0f3864 --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/tab/ModTab.java @@ -0,0 +1,43 @@ +package de.jottyfan.minecraft.tab; + +import java.util.List; + +import de.jottyfan.minecraft.Mfmd2627; +import de.jottyfan.minecraft.item.ModItems; +import net.fabricmc.fabric.api.creativetab.v1.FabricCreativeModeTab; +import net.minecraft.core.Registry; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.Identifier; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; + +/** + * + * @author jotty + * + */ +public class ModTab { + + /** + * register the items in an own tab for the creative menu + * + * @param items the items + */ + public static final void registerItemGroup(List items) { + ResourceKey tabKey = ResourceKey.create(Registries.CREATIVE_MODE_TAB, + Identifier.fromNamespaceAndPath(Mfmd2627.MOD_ID, "itemgroup")); + + CreativeModeTab quicklyTab = FabricCreativeModeTab.builder().icon(() -> new ItemStack(ModItems.STUB)) + .title(Component.translatable("tab.mfmd2627")).displayItems((params, output) -> { + for (Item item : items) { + output.accept(item); + } + }).build(); + + Registry.register(BuiltInRegistries.CREATIVE_MODE_TAB, tabKey, quicklyTab); + } +} diff --git a/src/main/resources/assets/mfmd2627/items/stub.json b/src/main/resources/assets/mfmd2627/items/stub.json new file mode 100644 index 0000000..9dc3222 --- /dev/null +++ b/src/main/resources/assets/mfmd2627/items/stub.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "mfmd2627:item/stub" + } +} \ 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 new file mode 100644 index 0000000..be3a0f3 --- /dev/null +++ b/src/main/resources/assets/mfmd2627/lang/de_de.json @@ -0,0 +1,4 @@ +{ + "item.mfmd2627.stub": "Stummel", + "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 new file mode 100644 index 0000000..d5bfd2d --- /dev/null +++ b/src/main/resources/assets/mfmd2627/lang/en_us.json @@ -0,0 +1,4 @@ +{ + "item.mfmd2627.stub": "Stub", + "tab.mfmd2627": "Mfmd2627" +} \ No newline at end of file diff --git a/src/main/resources/assets/mfmd2627/models/item/stub.json b/src/main/resources/assets/mfmd2627/models/item/stub.json new file mode 100644 index 0000000..3a20531 --- /dev/null +++ b/src/main/resources/assets/mfmd2627/models/item/stub.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "mfmd2627:item/stub" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mfmd2627/textures/item/stub.png b/src/main/resources/assets/mfmd2627/textures/item/stub.png new file mode 100644 index 0000000..cd67920 Binary files /dev/null and b/src/main/resources/assets/mfmd2627/textures/item/stub.png differ