Skip to content

Commit 6df838d

Browse files
committed
feat: implement getCreatorModId/Namespace
1 parent 750f6e4 commit 6df838d

7 files changed

Lines changed: 92 additions & 5 deletions

File tree

common/src/main/java/com/klikli_dev/modonomicon/platform/services/PlatformHelper.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@
66

77
package com.klikli_dev.modonomicon.platform.services;
88

9+
import com.klikli_dev.modonomicon.item.ModonomiconItem;
10+
import net.minecraft.world.item.Item;
11+
12+
import java.util.function.Function;
13+
914
public interface PlatformHelper {
1015

1116
/**
@@ -42,6 +47,16 @@ default String getEnvironmentName() {
4247

4348
PhysicalSide getPhysicalSide();
4449

50+
/**
51+
* Creates a ModonomiconItem for the given properties.
52+
* On NeoForge, this returns an item that implements IItemExtension#getCreatorModId.
53+
* On Fabric, this returns an item that implements FabricItem#getCreatorNamespace.
54+
*
55+
* @param properties the item properties
56+
* @return a new ModonomiconItem instance
57+
*/
58+
ModonomiconItem createModonomiconItem(Item.Properties properties);
59+
4560
enum PhysicalSide {
4661
CLIENT,
4762
DEDICATED_SERVER

common/src/main/java/com/klikli_dev/modonomicon/registry/ItemRegistry.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,19 @@
77
package com.klikli_dev.modonomicon.registry;
88

99
import com.klikli_dev.modonomicon.Modonomicon;
10-
import com.klikli_dev.modonomicon.item.ModonomiconItem;
10+
import com.klikli_dev.modonomicon.platform.Services;
1111
import net.minecraft.core.registries.Registries;
1212
import net.minecraft.resources.ResourceKey;
1313
import net.minecraft.resources.Identifier;
14-
import net.minecraft.world.item.BlockItem;
1514
import net.minecraft.world.item.Item;
16-
import net.minecraft.world.level.block.Block;
1715

1816
import java.util.function.Function;
19-
import java.util.function.Supplier;
2017

2118
public class ItemRegistry {
2219
public static final RegistrationProvider<Item> ITEMS = RegistrationProvider.get(Registries.ITEM, Modonomicon.MOD_ID);
2320

2421
public static final RegistryObject<Item> MODONOMICON =
25-
register("modonomicon", (properties) -> new ModonomiconItem(properties.stacksTo(1)));
22+
register("modonomicon", (properties) -> Services.PLATFORM.createModonomiconItem(properties.stacksTo(1)));
2623

2724
//Dummy items for default models
2825
public static final RegistryObject<Item> MODONOMICON_BLUE =
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2026 klikli-dev
3+
*
4+
* SPDX-License-Identifier: MIT
5+
*/
6+
7+
package com.klikli_dev.modonomicon.item;
8+
9+
import net.minecraft.world.item.Item;
10+
import net.minecraft.world.item.ItemStack;
11+
12+
public class FabricModonomiconItem extends ModonomiconItem {
13+
public FabricModonomiconItem(Item.Properties properties) {
14+
super(properties);
15+
}
16+
17+
@Override
18+
public String getCreatorNamespace(ItemStack stack) {
19+
var bookId = getBookId(stack);
20+
if (bookId != null) {
21+
return bookId.getNamespace();
22+
}
23+
return super.getCreatorNamespace(stack);
24+
}
25+
}

fabric/src/main/java/com/klikli_dev/modonomicon/platform/FabricPlatformHelper.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,12 @@
66

77
package com.klikli_dev.modonomicon.platform;
88

9+
import com.klikli_dev.modonomicon.item.FabricModonomiconItem;
10+
import com.klikli_dev.modonomicon.item.ModonomiconItem;
911
import com.klikli_dev.modonomicon.platform.services.PlatformHelper;
1012
import net.fabricmc.api.EnvType;
1113
import net.fabricmc.loader.api.FabricLoader;
14+
import net.minecraft.world.item.Item;
1215

1316
public class FabricPlatformHelper implements PlatformHelper {
1417

@@ -31,4 +34,9 @@ public boolean isDevelopmentEnvironment() {
3134
public PhysicalSide getPhysicalSide() {
3235
return FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT ? PhysicalSide.CLIENT : PhysicalSide.DEDICATED_SERVER;
3336
}
37+
38+
@Override
39+
public ModonomiconItem createModonomiconItem(Item.Properties properties) {
40+
return new FabricModonomiconItem(properties);
41+
}
3442
}

forge/src/main/java/com/klikli_dev/modonomicon/platform/ForgePlatformHelper.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66

77
package com.klikli_dev.modonomicon.platform;
88

9+
import com.klikli_dev.modonomicon.item.ModonomiconItem;
910
import com.klikli_dev.modonomicon.platform.services.PlatformHelper;
11+
import net.minecraft.world.item.Item;
1012
import net.minecraftforge.api.distmarker.Dist;
1113
import net.minecraftforge.fml.ModList;
1214
import net.minecraftforge.fml.loading.FMLEnvironment;
@@ -33,4 +35,9 @@ public boolean isDevelopmentEnvironment() {
3335
public PhysicalSide getPhysicalSide() {
3436
return FMLEnvironment.dist == Dist.CLIENT ? PhysicalSide.CLIENT : PhysicalSide.DEDICATED_SERVER;
3537
}
38+
39+
@Override
40+
public ModonomiconItem createModonomiconItem(Item.Properties properties) {
41+
return new ModonomiconItem(properties);
42+
}
3643
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2026 klikli-dev
3+
*
4+
* SPDX-License-Identifier: MIT
5+
*/
6+
7+
package com.klikli_dev.modonomicon.item;
8+
9+
import net.minecraft.core.HolderLookup;
10+
import net.minecraft.world.item.Item;
11+
import net.minecraft.world.item.ItemStack;
12+
import org.jetbrains.annotations.Nullable;
13+
14+
public class NeoModonomiconItem extends ModonomiconItem {
15+
public NeoModonomiconItem(Properties properties) {
16+
super(properties);
17+
}
18+
19+
@Nullable
20+
public String getCreatorModId(HolderLookup.Provider registries, ItemStack itemStack) {
21+
var bookId = getBookId(itemStack);
22+
if (bookId != null) {
23+
return bookId.getNamespace();
24+
}
25+
return null;
26+
}
27+
}

neo/src/main/java/com/klikli_dev/modonomicon/platform/NeoPlatformHelper.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@
66

77
package com.klikli_dev.modonomicon.platform;
88

9+
import com.klikli_dev.modonomicon.item.ModonomiconItem;
10+
import com.klikli_dev.modonomicon.item.NeoModonomiconItem;
911
import com.klikli_dev.modonomicon.platform.services.PlatformHelper;
12+
import net.minecraft.world.item.Item;
1013
import net.neoforged.api.distmarker.Dist;
1114
import net.neoforged.fml.ModList;
1215
import net.neoforged.fml.loading.FMLEnvironment;
@@ -33,4 +36,9 @@ public boolean isDevelopmentEnvironment() {
3336
public PhysicalSide getPhysicalSide() {
3437
return FMLEnvironment.getDist() == Dist.CLIENT ? PhysicalSide.CLIENT : PhysicalSide.DEDICATED_SERVER;
3538
}
39+
40+
@Override
41+
public ModonomiconItem createModonomiconItem(Item.Properties properties) {
42+
return new NeoModonomiconItem(properties);
43+
}
3644
}

0 commit comments

Comments
 (0)