Skip to content

Commit 41a2988

Browse files
authored
Support multiple machine modifiers on the MachineBuilder (#150)
1 parent 1f92fdf commit 41a2988

File tree

4 files changed

+34
-16
lines changed

4 files changed

+34
-16
lines changed

src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/builder/HatchMachineBuilder.java

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ public final class HatchMachineBuilder extends MachineBuilder<HatchMachineBuilde
2828
private boolean registerIO;
2929

3030
private MachineBlockHatchBlockEntityFactory blockEntityFactory;
31-
private MachineBlockHolderHatchModifier holderHatchModifier;
31+
32+
private final List<MachineBlockHolderHatchModifier> holderHatchModifiers = Lists.newArrayList();
3233

3334
private CableTier energyCableTier;
3435

@@ -40,8 +41,9 @@ public final class HatchMachineBuilder extends MachineBuilder<HatchMachineBuilde
4041

4142
public HatchMachineBuilder modify(MachineBlockHolderHatchModifier modifier)
4243
{
43-
this.holderHatchModifier = modifier;
44-
return super.modify(null);
44+
Assert.notNull(modifier);
45+
this.holderHatchModifiers.add(modifier);
46+
return this;
4547
}
4648

4749
public HatchMachineBuilder item(int rows, int columns, int startX, int startY)
@@ -229,8 +231,12 @@ protected void internalRegister()
229231
hook,
230232
machineEnglishName, machineId,
231233
blockFactory,
232-
holderModifier != null ? holderModifier : (holderHatchModifier != null ? (holder) -> holderHatchModifier.modify(holder, input) : null),
233-
propertiesModifier,
234+
(holder) ->
235+
{
236+
holderModifiers.forEach((modifier) -> modifier.modify(holder));
237+
holderHatchModifiers.forEach((modifier) -> modifier.modify(holder, input));
238+
},
239+
(properties) -> propertiesModifiers.forEach((modifier) -> modifier.modify(properties)),
234240
defaultMineableTags,
235241
(bep) -> blockEntityFactory.create(bep, input, hook.id(machineId)),
236242
registrators.toArray(MachineBlockRegistrators[]::new)
@@ -247,8 +253,12 @@ protected void internalRegister()
247253
hook,
248254
englishName, name,
249255
blockFactory,
250-
holderModifier != null ? holderModifier : (holderHatchModifier != null ? (holder) -> holderHatchModifier.modify(holder, false) : null),
251-
propertiesModifier,
256+
(holder) ->
257+
{
258+
holderModifiers.forEach((modifier) -> modifier.modify(holder));
259+
holderHatchModifiers.forEach((modifier) -> modifier.modify(holder, false));
260+
},
261+
(properties) -> propertiesModifiers.forEach((modifier) -> modifier.modify(properties)),
252262
defaultMineableTags,
253263
(bep) -> blockEntityFactory.create(bep, false, hook.id(name)),
254264
registrators.toArray(MachineBlockRegistrators[]::new)

src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/builder/MachineBuilder.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,11 @@ public static HatchMachineBuilder hatch(MIHook hook,
4343
protected final String name;
4444
protected final String englishName;
4545

46-
protected MachineBlockFactory blockFactory = MachineBlock::new;
47-
protected MachineBlockHolderModifier holderModifier;
48-
protected MachineBlockPropertiesModifier propertiesModifier;
46+
protected MachineBlockFactory blockFactory = MachineBlock::new;
4947

50-
protected final List<MachineBlockRegistrators> registrators = Lists.newArrayList();
48+
protected final List<MachineBlockHolderModifier> holderModifiers = Lists.newArrayList();
49+
protected final List<MachineBlockPropertiesModifier> propertiesModifiers = Lists.newArrayList();
50+
protected final List<MachineBlockRegistrators> registrators = Lists.newArrayList();
5151

5252
protected boolean defaultMineableTags = true;
5353
protected MachineBuiltinModelBuilder builtinModel;
@@ -72,13 +72,15 @@ public T creator(MachineBlockFactory blockFactory)
7272

7373
public T modify(MachineBlockHolderModifier modifier)
7474
{
75-
this.holderModifier = modifier;
75+
Assert.notNull(modifier);
76+
this.holderModifiers.add(modifier);
7677
return (T) this;
7778
}
7879

7980
public T properties(MachineBlockPropertiesModifier properties)
8081
{
81-
this.propertiesModifier = properties;
82+
Assert.notNull(properties);
83+
this.propertiesModifiers.add(properties);
8284
return (T) this;
8385
}
8486

src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/builder/SingleBlockCraftingMachineBuilder.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,9 @@ protected void internalRegister()
144144
HackedMachineRegistrationHelper.registerMachine(
145145
hook,
146146
englishPrefix + englishName, id,
147-
blockFactory, holderModifier, propertiesModifier,
147+
blockFactory,
148+
(holder) -> holderModifiers.forEach((modifier) -> modifier.modify(holder)),
149+
(properties) -> propertiesModifiers.forEach((modifier) -> modifier.modify(properties)),
148150
defaultMineableTags,
149151
(bet) -> new SteamCraftingMachineBlockEntity(
150152
bet, recipeType,
@@ -186,7 +188,9 @@ protected void internalRegister()
186188
HackedMachineRegistrationHelper.registerMachine(
187189
hook,
188190
electricEnglishName, id,
189-
blockFactory, holderModifier, propertiesModifier,
191+
blockFactory,
192+
(holder) -> holderModifiers.forEach((modifier) -> modifier.modify(holder)),
193+
(properties) -> propertiesModifiers.forEach((modifier) -> modifier.modify(properties)),
190194
defaultMineableTags,
191195
(bet) -> new ElectricCraftingMachineBlockEntity(
192196
bet, recipeType,

src/main/java/net/swedz/tesseract/neoforge/compat/mi/machine/builder/SpecialMachineBuilder.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,9 @@ protected void internalRegister()
7676
HackedMachineRegistrationHelper.registerMachine(
7777
hook,
7878
englishName, name,
79-
blockFactory, holderModifier, propertiesModifier,
79+
blockFactory,
80+
(holder) -> holderModifiers.forEach((modifier) -> modifier.modify(holder)),
81+
(properties) -> propertiesModifiers.forEach((modifier) -> modifier.modify(properties)),
8082
defaultMineableTags,
8183
blockEntityFactory,
8284
registrators.toArray(MachineBlockRegistrators[]::new)

0 commit comments

Comments
 (0)