From a9817ebe7d69cee8aea1d2ecde225b8dbba3177a Mon Sep 17 00:00:00 2001 From: Jottyfan Date: Wed, 8 Jul 2026 10:03:12 +0200 Subject: [PATCH] added stub item, see slides items --- .../java/de/jottyfan/minecraft/Mfmd2627.java | 8 ++++ .../de/jottyfan/minecraft/item/ModItems.java | 21 ++++++++ .../minecraft/item/ModItemsRegistrator.java | 45 ++++++++++++++++++ .../de/jottyfan/minecraft/tab/ModTab.java | 43 +++++++++++++++++ .../resources/assets/mfmd2627/items/stub.json | 6 +++ .../resources/assets/mfmd2627/lang/de_de.json | 4 ++ .../resources/assets/mfmd2627/lang/en_us.json | 4 ++ .../assets/mfmd2627/models/item/stub.json | 6 +++ .../assets/mfmd2627/textures/item/stub.png | Bin 0 -> 5184 bytes 9 files changed, 137 insertions(+) create mode 100644 src/main/java/de/jottyfan/minecraft/item/ModItems.java create mode 100644 src/main/java/de/jottyfan/minecraft/item/ModItemsRegistrator.java create mode 100644 src/main/java/de/jottyfan/minecraft/tab/ModTab.java create mode 100644 src/main/resources/assets/mfmd2627/items/stub.json create mode 100644 src/main/resources/assets/mfmd2627/lang/de_de.json create mode 100644 src/main/resources/assets/mfmd2627/lang/en_us.json create mode 100644 src/main/resources/assets/mfmd2627/models/item/stub.json create mode 100644 src/main/resources/assets/mfmd2627/textures/item/stub.png 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 0000000000000000000000000000000000000000..cd67920cb1109561a9dbe378c1bfae5c90361d8b GIT binary patch literal 5184 zcmeHKdsGu=79So0f*_(*6dz--D&i!Q$vY-iB>|#D5u*62IGIdffILV7Nf6KqqKJre zTdfG9MXN2jJv13KhW?RK#|h{SpxIwCC(`&-Ooa&P-6!`YFUmkAYKB?P=Ly*h5G{rJg6mEv~2A!HpB4LwN zPr{^yQbUmCM#s*TZwCeqliHTo&2*B9&KfMC4}H>ljn?Z#ZBz3dgDpbxdg1yZ))B%v zAINRJ#Cz-X6)6eD1>>STM(-PG*MBm7#tO|D&gc6iHv>=-rwCRy7k>CvdC zCR4G}iR)@Nw{eD-q2|dI=cG-kbM7Lc*o+Z^+>o%_7fzp(UjD_^$vXOA`^HRlL`?IQ zg=WPOPMVfiP&K}k-sO8+kCfiYSH1N@RIpwPjb#JE{n)|IwN>Vbz617 zwnJ#l4pNa@T-|VYlO(Hb3iUp`oR|8qaz<5-{AdxUNO?Q7t-+OfI*>7~`<@HYczBNL z(YW9zb)qb9-qd5e$^tfD;?I2)d~)YQi~NZ5hRjf_wlMqT4rH({yXftU`#}V2l^}Q7PotXu$R4 z_uk6hxn6t_e#hy8py1KS5~VlEXt6%XDp;M-B?#A_+T^QzZ(ne@&exPr`NT<>4Me3#J1$%B!W$o7gmK(?aX~$iu3JDyO_f`497LQnNX*6qHT?yyYI~VoVUn7@nNgY~#MSpbD zqMEpt;oZkCJ$~Tb(-`}{ZB^TM$5(&$>B{kWoKCm&S>Ikv7o{|RpFe35)!W=Pe4by= zzU!@d`;uE`|D)s0s*?ESvK!ww_4eefyt~movwhF8ZaYj&tFgVMY8NTGHS71n^d;9n zAO8EwHe28nmsol?qwNdl$KQ<0y|(2`2y)7zLP8>CAtBFN5j0?NMxi+T%$)IcvC#*j zKJrQRO+FV{a{qnWwog5!hkO$@E}alT|M!Ne-m)!uWw%!7e$BXfOq z4L_(RJlD3s6H$uzo%OYA3u?{lFMW)Cbx#HrX?O2ZL^a-tsk;(rX_C}`+@xPxuQxcptvWu?Bki`XIsyXociYWCxz`> z>UG5n=w2dLf|}KRcCoVJYTf)Xm7jb#V$sNYh5TUpou=>SGg~D@*tDge&fQ_&2%HkIX9i#C=sK zbY@XbQp1r^`-4X1o&0rdM)XAgnjxnXSL-@5if2R1@6E_?89(0n$JZNH_gKxbW}R&h z)zjnR)ojSfPfGbG1o?zhU@|U~M+ga>hK{RrN|J8T=)vTKAkiBZJx(N&CRjEfr|FVY)_Fz2mmys35PA3B&|_s5z`#F zLhx)CGib0w#gr(fEt5yWAvyyIv*~O)ibyR~Dn^^_35yIWwJ=H&+7AKV#I$&mNiSqD z%w{v)%%bZIaSWzFAYh;v1H%xYff%h?6K+AY#y~qnABKc95(Y|dqI6o=j)^OEDJC(E z2G-$c@oDsO`2f7u*v|ssgJHq-3??0AXf%w$7Dkga6@c^y^rsd^1^9tsM3F{aih&@d zsif8vI2b}j4A|>a3`vf3R0M-eA~itO2)r_1a2Y0(M-EunDTt#qdWRJt`vpxCrG8G< z3$fW(9O(=W1eg!tzM%aqcZV|2lFNk>9g$)WPbLx5?EZx+9YLvtjztJ zh-Va|ZbTD?k0U^;f!p;a5&xir-gsy`t--7<~+?S!j%m~u`a#h8(F?*=3vHUi936f)f~qqQ4dNY{%EES@WdeYu}Ho?th