Skip to content

Commit 7efa9a2

Browse files
committed
feat: Add BalmItemPropertyRegistrar
1 parent babda51 commit 7efa9a2

10 files changed

Lines changed: 121 additions & 0 deletions

File tree

common/src/main/java/net/blay09/mods/balm/api/client/BalmClientRuntime.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import net.blay09.mods.balm.client.color.item.BalmItemColorRegistrar;
1717
import net.blay09.mods.balm.client.gui.screens.inventory.BalmMenuScreenRegistrar;
1818
import net.blay09.mods.balm.client.model.geom.BalmModelLayerRegistrar;
19+
import net.blay09.mods.balm.client.model.item.BalmItemPropertyRegistrar;
1920
import net.blay09.mods.balm.client.particle.BalmParticleProviderRegistrar;
2021
import net.blay09.mods.balm.client.renderer.block.model.BalmBlockStateModelRegistrar;
2122
import net.blay09.mods.balm.client.renderer.blockentity.BalmBlockEntityRendererRegistrar;
@@ -59,6 +60,7 @@ default void initializeModule(BalmClientModule module) {
5960
resourceReloadListeners(modId, module::registerClientReloadListeners);
6061
blockColors(modId, module::registerBlockColors);
6162
itemColors(modId, module::registerItemColors);
63+
itemProperties(modId, module::registerItemProperties);
6264
blockRenderTypes(modId, module::registerBlockRenderTypes);
6365
blockEntityRenderers(modId, module::registerBlockEntityRenderers);
6466
entityRenderers(modId, module::registerEntityRenderers);
@@ -105,6 +107,8 @@ default void registerModule(BalmClientModule module) {
105107

106108
void itemColors(String namespace, Consumer<BalmItemColorRegistrar> initializer);
107109

110+
void itemProperties(String namespace, Consumer<BalmItemPropertyRegistrar> initializer);
111+
108112
void particleProviders(String namespace, Consumer<BalmParticleProviderRegistrar> initializer);
109113

110114
void blockRenderTypes(String namespace, Consumer<BalmBlockRenderTypeRegistrar> initializer);

common/src/main/java/net/blay09/mods/balm/api/client/module/BalmClientModule.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import net.blay09.mods.balm.client.color.item.BalmItemColorRegistrar;
1313
import net.blay09.mods.balm.client.gui.screens.inventory.BalmMenuScreenRegistrar;
1414
import net.blay09.mods.balm.client.model.geom.BalmModelLayerRegistrar;
15+
import net.blay09.mods.balm.client.model.item.BalmItemPropertyRegistrar;
1516
import net.blay09.mods.balm.client.particle.BalmParticleProviderRegistrar;
1617
import net.blay09.mods.balm.client.renderer.block.model.BalmBlockStateModelRegistrar;
1718
import net.blay09.mods.balm.client.renderer.blockentity.BalmBlockEntityRendererRegistrar;
@@ -62,6 +63,9 @@ default void registerBlockColors(BalmBlockColorRegistrar blockColors) {
6263
default void registerItemColors(BalmItemColorRegistrar blockColors) {
6364
}
6465

66+
default void registerItemProperties(BalmItemPropertyRegistrar itemProperties) {
67+
}
68+
6569
default void registerParticleProviders(BalmParticleProviderRegistrar particles) {
6670
}
6771

common/src/main/java/net/blay09/mods/balm/client/BalmClientRegistrars.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import net.blay09.mods.balm.client.color.block.BalmBlockColorRegistrar;
88
import net.blay09.mods.balm.client.gui.screens.inventory.BalmMenuScreenRegistrar;
99
import net.blay09.mods.balm.client.model.geom.BalmModelLayerRegistrar;
10+
import net.blay09.mods.balm.client.model.item.BalmItemPropertyRegistrar;
1011
import net.blay09.mods.balm.client.particle.BalmParticleProviderRegistrar;
1112
import net.blay09.mods.balm.client.renderer.block.model.BalmBlockStateModelRegistrar;
1213
import net.blay09.mods.balm.client.renderer.blockentity.BalmBlockEntityRendererRegistrar;
@@ -76,6 +77,15 @@ public void modelLayers(Consumer<BalmModelLayerRegistrar> initializer) {
7677
runtime.modelLayers(namespace, initializer);
7778
}
7879

80+
/**
81+
* Use this to register item model properties using the registrar provided in the consumer callback.
82+
*
83+
* @param initializer Callback that receives a scoped registrar for item properties.
84+
*/
85+
public void itemProperties(Consumer<BalmItemPropertyRegistrar> initializer) {
86+
runtime.itemProperties(namespace, initializer);
87+
}
88+
7989
/**
8090
* Use this to register block color handlers using the registrar provided in the consumer callback.
8191
*
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package net.blay09.mods.balm.client.model.item;
2+
3+
import net.minecraft.client.renderer.item.ClampedItemPropertyFunction;
4+
import net.minecraft.resources.ResourceLocation;
5+
import net.minecraft.world.level.ItemLike;
6+
7+
public interface BalmItemPropertyRegistrar {
8+
9+
void register(ItemLike item, ResourceLocation identifier, ClampedItemPropertyFunction propertyFunction);
10+
11+
void registerGeneric(ResourceLocation identifier, ClampedItemPropertyFunction propertyFunction);
12+
}

fabric/src/main/java/net/blay09/mods/balm/fabric/client/FabricBalmClientRuntime.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import net.blay09.mods.balm.client.color.item.BalmItemColorRegistrar;
1616
import net.blay09.mods.balm.client.gui.screens.inventory.BalmMenuScreenRegistrar;
1717
import net.blay09.mods.balm.client.model.geom.BalmModelLayerRegistrar;
18+
import net.blay09.mods.balm.client.model.item.BalmItemPropertyRegistrar;
1819
import net.blay09.mods.balm.client.particle.BalmParticleProviderRegistrar;
1920
import net.blay09.mods.balm.client.renderer.block.model.BalmBlockStateModelRegistrar;
2021
import net.blay09.mods.balm.client.renderer.blockentity.BalmBlockEntityRendererRegistrar;
@@ -31,6 +32,7 @@
3132
import net.blay09.mods.balm.fabric.client.internal.color.item.FabricBalmItemColorRegistrar;
3233
import net.blay09.mods.balm.fabric.client.internal.gui.screens.inventory.FabricBalmMenuScreenRegistrar;
3334
import net.blay09.mods.balm.fabric.client.internal.model.geom.FabricBalmModelLayerRegistrar;
35+
import net.blay09.mods.balm.fabric.client.internal.model.item.FabricBalmItemPropertyRegistrar;
3436
import net.blay09.mods.balm.fabric.client.internal.particle.FabricBalmParticleProviderRegistrar;
3537
import net.blay09.mods.balm.fabric.client.internal.renderer.block.model.FabricBalmBlockStateModelRegistrar;
3638
import net.blay09.mods.balm.fabric.client.internal.renderer.blockentity.FabricBalmBlockEntityRendererRegistrar;
@@ -195,6 +197,11 @@ public void itemColors(String namespace, Consumer<BalmItemColorRegistrar> initia
195197
initializer.accept(FabricBalmItemColorRegistrar.INSTANCE);
196198
}
197199

200+
@Override
201+
public void itemProperties(String namespace, Consumer<BalmItemPropertyRegistrar> initializer) {
202+
initializer.accept(FabricBalmItemPropertyRegistrar.INSTANCE);
203+
}
204+
198205
@Override
199206
public void particleProviders(String namespace, Consumer<BalmParticleProviderRegistrar> initializer) {
200207
initializer.accept(FabricBalmParticleProviderRegistrar.INSTANCE);
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package net.blay09.mods.balm.fabric.client.internal.model.item;
2+
3+
import net.blay09.mods.balm.client.model.item.BalmItemPropertyRegistrar;
4+
import net.fabricmc.fabric.api.object.builder.v1.client.model.FabricModelPredicateProviderRegistry;
5+
import net.minecraft.client.renderer.item.ClampedItemPropertyFunction;
6+
import net.minecraft.resources.ResourceLocation;
7+
import net.minecraft.world.level.ItemLike;
8+
9+
public class FabricBalmItemPropertyRegistrar implements BalmItemPropertyRegistrar {
10+
public static final FabricBalmItemPropertyRegistrar INSTANCE = new FabricBalmItemPropertyRegistrar();
11+
12+
@Override
13+
public void register(ItemLike item, ResourceLocation identifier, ClampedItemPropertyFunction propertyFunction) {
14+
FabricModelPredicateProviderRegistry.register(item.asItem(), identifier, propertyFunction);
15+
}
16+
17+
@Override
18+
public void registerGeneric(ResourceLocation identifier, ClampedItemPropertyFunction propertyFunction) {
19+
FabricModelPredicateProviderRegistry.register(identifier, propertyFunction);
20+
}
21+
}

forge/src/main/java/net/blay09/mods/balm/forge/client/ForgeBalmClientRuntime.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import net.blay09.mods.balm.client.color.item.BalmItemColorRegistrar;
1616
import net.blay09.mods.balm.client.gui.screens.inventory.BalmMenuScreenRegistrar;
1717
import net.blay09.mods.balm.client.model.geom.BalmModelLayerRegistrar;
18+
import net.blay09.mods.balm.client.model.item.BalmItemPropertyRegistrar;
1819
import net.blay09.mods.balm.client.particle.BalmParticleProviderRegistrar;
1920
import net.blay09.mods.balm.client.renderer.block.model.BalmBlockStateModelRegistrar;
2021
import net.blay09.mods.balm.client.renderer.blockentity.BalmBlockEntityRendererRegistrar;
@@ -33,6 +34,7 @@
3334
import net.blay09.mods.balm.forge.client.internal.commands.ForgeBalmClientCommands;
3435
import net.blay09.mods.balm.forge.client.keymappings.ForgeBalmKeyMappings;
3536
import net.blay09.mods.balm.forge.client.model.geom.ForgeBalmModelLayerRegistrar;
37+
import net.blay09.mods.balm.forge.client.model.item.ForgeBalmItemPropertyRegistrar;
3638
import net.blay09.mods.balm.forge.client.particle.ForgeBalmParticleProviderRegistrar;
3739
import net.blay09.mods.balm.forge.client.renderer.block.model.ForgeBalmBlockStateModelRegistrar;
3840
import net.blay09.mods.balm.forge.client.renderer.blockentity.ForgeBalmBlockEntityRendererRegistrar;
@@ -190,6 +192,14 @@ public void itemColors(String namespace, Consumer<BalmItemColorRegistrar> initia
190192
-> initializer.accept(new ForgeBalmItemColorRegistrar(event))));
191193
}
192194

195+
@Override
196+
public void itemProperties(String namespace, Consumer<BalmItemPropertyRegistrar> initializer) {
197+
ModBusEventRegisters.register(namespace, (bus)
198+
-> bus.addListener((FMLClientSetupEvent event)
199+
-> event.enqueueWork(()
200+
-> initializer.accept(ForgeBalmItemPropertyRegistrar.INSTANCE))));
201+
}
202+
193203
@Override
194204
public void particleProviders(String namespace, Consumer<BalmParticleProviderRegistrar> initializer) {
195205
ModBusEventRegisters.register(namespace, (bus)
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package net.blay09.mods.balm.forge.client.model.item;
2+
3+
import net.blay09.mods.balm.client.model.item.BalmItemPropertyRegistrar;
4+
import net.minecraft.client.renderer.item.ClampedItemPropertyFunction;
5+
import net.minecraft.client.renderer.item.ItemProperties;
6+
import net.minecraft.resources.ResourceLocation;
7+
import net.minecraft.world.level.ItemLike;
8+
9+
public class ForgeBalmItemPropertyRegistrar implements BalmItemPropertyRegistrar {
10+
public static final ForgeBalmItemPropertyRegistrar INSTANCE = new ForgeBalmItemPropertyRegistrar();
11+
12+
@Override
13+
public void register(ItemLike item, ResourceLocation identifier, ClampedItemPropertyFunction propertyFunction) {
14+
ItemProperties.register(item.asItem(), identifier, propertyFunction);
15+
}
16+
17+
@Override
18+
public void registerGeneric(ResourceLocation identifier, ClampedItemPropertyFunction propertyFunction) {
19+
ItemProperties.registerGeneric(identifier, propertyFunction);
20+
}
21+
}

neoforge/src/main/java/net/blay09/mods/balm/neoforge/client/NeoForgeBalmClientRuntime.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import net.blay09.mods.balm.client.color.item.BalmItemColorRegistrar;
1515
import net.blay09.mods.balm.client.gui.screens.inventory.BalmMenuScreenRegistrar;
1616
import net.blay09.mods.balm.client.model.geom.BalmModelLayerRegistrar;
17+
import net.blay09.mods.balm.client.model.item.BalmItemPropertyRegistrar;
1718
import net.blay09.mods.balm.client.particle.BalmParticleProviderRegistrar;
1819
import net.blay09.mods.balm.client.renderer.block.model.BalmBlockStateModelRegistrar;
1920
import net.blay09.mods.balm.client.renderer.blockentity.BalmBlockEntityRendererRegistrar;
@@ -33,6 +34,7 @@
3334
import net.blay09.mods.balm.neoforge.client.internal.commands.NeoForgeBalmClientCommands;
3435
import net.blay09.mods.balm.neoforge.client.keymappings.NeoForgeBalmKeyMappings;
3536
import net.blay09.mods.balm.neoforge.client.model.geom.internal.NeoForgeBalmModelLayerRegistrar;
37+
import net.blay09.mods.balm.neoforge.client.model.item.internal.NeoForgeBalmItemPropertyRegistrar;
3638
import net.blay09.mods.balm.neoforge.client.particle.internal.NeoForgeBalmParticleProviderRegistrar;
3739
import net.blay09.mods.balm.neoforge.client.renderer.block.model.internal.NeoForgeBalmBlockStateModelRegistrar;
3840
import net.blay09.mods.balm.neoforge.client.renderer.blockentity.internal.NeoForgeBalmBlockEntityRendererRegistrar;
@@ -196,6 +198,15 @@ public void itemColors(String namespace, Consumer<BalmItemColorRegistrar> initia
196198
});
197199
}
198200

201+
@Override
202+
public void itemProperties(String namespace, Consumer<BalmItemPropertyRegistrar> initializer) {
203+
BalmLoadContexts.get(namespace).ifPresent(context -> {
204+
if (context instanceof NeoForgeLoadContext(IEventBus modBus)) {
205+
modBus.addListener((FMLClientSetupEvent event) -> event.enqueueWork(() -> initializer.accept(NeoForgeBalmItemPropertyRegistrar.INSTANCE)));
206+
}
207+
});
208+
}
209+
199210
@Override
200211
public void particleProviders(String namespace, Consumer<BalmParticleProviderRegistrar> initializer) {
201212
BalmLoadContexts.get(namespace).ifPresent(context -> {
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package net.blay09.mods.balm.neoforge.client.model.item.internal;
2+
3+
import net.blay09.mods.balm.client.model.item.BalmItemPropertyRegistrar;
4+
import net.minecraft.client.renderer.item.ClampedItemPropertyFunction;
5+
import net.minecraft.client.renderer.item.ItemProperties;
6+
import net.minecraft.resources.ResourceLocation;
7+
import net.minecraft.world.level.ItemLike;
8+
9+
public class NeoForgeBalmItemPropertyRegistrar implements BalmItemPropertyRegistrar {
10+
public static final NeoForgeBalmItemPropertyRegistrar INSTANCE = new NeoForgeBalmItemPropertyRegistrar();
11+
12+
@Override
13+
public void register(ItemLike item, ResourceLocation identifier, ClampedItemPropertyFunction propertyFunction) {
14+
ItemProperties.register(item.asItem(), identifier, propertyFunction);
15+
}
16+
17+
@Override
18+
public void registerGeneric(ResourceLocation identifier, ClampedItemPropertyFunction propertyFunction) {
19+
ItemProperties.registerGeneric(identifier, propertyFunction);
20+
}
21+
}

0 commit comments

Comments
 (0)