Skip to content

Commit 690464e

Browse files
committed
feat: Backport BalmBlockRegistration#withItem() and BalmDiscriminatedBlockRegistration#withItems() overloads with name function
1 parent 3030ece commit 690464e

3 files changed

Lines changed: 19 additions & 2 deletions

File tree

common/src/main/java/net/blay09/mods/balm/world/level/block/BalmBlockRegistration.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ default BalmBlockRegistration withItem(BiFunction<Block, Item.Properties, BlockI
4141

4242
BalmBlockRegistration withItem(BiFunction<Block, Item.Properties, BlockItem> constructor, Supplier<Item.Properties> properties);
4343

44+
BalmBlockRegistration withItem(String name, BiFunction<Block, Item.Properties, BlockItem> constructor, Function<Item.Properties, Item.Properties> propertiesBuilder);
45+
4446
default BlockLike asBlockLike() {
4547
return asDeferredBlock();
4648
}

common/src/main/java/net/blay09/mods/balm/world/level/block/BalmDiscriminatedBlockRegistration.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,5 +58,10 @@ default BalmDiscriminatedBlockRegistration<T> withItems(BiFunction<Block, Item.P
5858
return this;
5959
}
6060

61+
default BalmDiscriminatedBlockRegistration<T> withItems(Function<T, String> nameFunction, BiFunction<Block, Item.Properties, BlockItem> constructor, BiFunction<T, Item.Properties, Item.Properties> propertiesBuilder) {
62+
forEach((discrimination, it) -> it.withItem(nameFunction.apply(discrimination), constructor, (properties) -> propertiesBuilder.apply(discrimination, properties)));
63+
return this;
64+
}
65+
6166
DiscriminatedBlocks<T> asDiscriminatedBlocks();
6267
}

common/src/main/java/net/blay09/mods/balm/world/level/block/internal/BalmBlockRegistrarImpl.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public BalmBlockRegistration register(String name, Function<BlockBehaviour.Prope
3434
final var identifier = ResourceLocation.fromNamespaceAndPath(namespace, name);
3535
final var resourceKey = ResourceKey.create(Registries.BLOCK, identifier);
3636
final var holder = registrar.register(resourceKey, (id) -> constructor.apply(properties.get()));
37-
return new BalmBlockRegistrationImpl(registrar, holder);
37+
return new BalmBlockRegistrationImpl(namespace, registrar, holder);
3838
}
3939

4040
@Override
@@ -77,11 +77,13 @@ public DiscriminatedBlocks<T> asDiscriminatedBlocks() {
7777
}
7878

7979
private static final class BalmBlockRegistrationImpl implements BalmBlockRegistration {
80+
private final String namespace;
8081
private final BalmRegistrar registrar;
8182
private final Holder<Block> holder;
8283
private DeferredBlock deferredBlock;
8384

84-
private BalmBlockRegistrationImpl(BalmRegistrar registrar, Holder<Block> holder) {
85+
private BalmBlockRegistrationImpl(String namespace, BalmRegistrar registrar, Holder<Block> holder) {
86+
this.namespace = namespace;
8587
this.registrar = registrar;
8688
this.holder = holder;
8789
}
@@ -94,6 +96,14 @@ public BalmBlockRegistration withItem(BiFunction<Block, Item.Properties, BlockIt
9496
return this;
9597
}
9698

99+
@Override
100+
public BalmBlockRegistration withItem(String name, BiFunction<Block, Item.Properties, BlockItem> constructor, Function<Item.Properties, Item.Properties> propertiesBuilder) {
101+
final var itemIdentifier = ResourceLocation.fromNamespaceAndPath(namespace, name);
102+
final var itemResourceKey = ResourceKey.create(Registries.ITEM, itemIdentifier);
103+
registrar.register(itemResourceKey, (id) -> constructor.apply(holder.value(), propertiesBuilder.apply(new Item.Properties())));
104+
return this;
105+
}
106+
97107
@Override
98108
public Holder<Block> asHolder() {
99109
return holder;

0 commit comments

Comments
 (0)