Skip to content

Commit 2d55955

Browse files
committed
client extension for item
1 parent d8ecea6 commit 2d55955

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

src/main/java/com/tterrag/registrate/builders/BlockBuilder.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -399,8 +399,7 @@ protected void registerClientExtension() {
399399
OneTimeEventReceiver.addModListener(getOwner(), RegisterClientExtensionsEvent.class, e -> {
400400
if (this.clientExtensionFunc != null) {
401401
NonNullSupplier<Supplier<IClientBlockExtensions>> clientExtension = this.clientExtensionFunc.apply(getEntry());
402-
if (clientExtension != null)
403-
e.registerBlock(clientExtension.get().get(), getEntry());
402+
e.registerBlock(clientExtension.get().get(), getEntry());
404403
}
405404
});
406405
}

src/main/java/com/tterrag/registrate/builders/ItemBuilder.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.Map;
44
import java.util.function.Consumer;
5+
import java.util.function.Function;
56
import java.util.function.Supplier;
67

78
import javax.annotation.Nullable;
@@ -289,7 +290,7 @@ public ItemBuilder<T, P> compostable(float chance) {
289290
}
290291

291292
@Nullable
292-
private NonNullSupplier<Supplier<IClientItemExtensions>> clientExtension;
293+
private Function<T, NonNullSupplier<Supplier<IClientItemExtensions>>> clientExtensionFunc;
293294

294295
/**
295296
* Register a client extension for this item. The {@link IClientItemExtensions} instance can be shared across many items.
@@ -299,17 +300,25 @@ public ItemBuilder<T, P> compostable(float chance) {
299300
* @return this {@link ItemBuilder}
300301
*/
301302
public ItemBuilder<T, P> clientExtension(NonNullSupplier<Supplier<IClientItemExtensions>> clientExtension) {
302-
if (this.clientExtension == null) {
303+
if (this.clientExtensionFunc == null) {
303304
RegistrateDistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> this::registerClientExtension);
304305
}
305-
this.clientExtension = clientExtension;
306+
this.clientExtensionFunc = item -> clientExtension;
307+
return this;
308+
}
309+
310+
public ItemBuilder<T, P> clientExtension(Function<T, NonNullSupplier<Supplier<IClientItemExtensions>>> clientExtension) {
311+
if (this.clientExtensionFunc == null) {
312+
RegistrateDistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> this::registerClientExtension);
313+
}
314+
this.clientExtensionFunc = clientExtension;
306315
return this;
307316
}
308317

309318
protected void registerClientExtension() {
310319
OneTimeEventReceiver.addModListener(getOwner(), RegisterClientExtensionsEvent.class, e -> {
311-
NonNullSupplier<Supplier<IClientItemExtensions>> clientExtension = this.clientExtension;
312-
if (clientExtension != null) {
320+
if (this.clientExtensionFunc != null) {
321+
NonNullSupplier<Supplier<IClientItemExtensions>> clientExtension = this.clientExtensionFunc.apply(getEntry());
313322
e.registerItem(clientExtension.get().get(), getEntry());
314323
}
315324
});

0 commit comments

Comments
 (0)