Skip to content

Commit f6f8916

Browse files
authored
Machine Chainers to respect voltage (#173)
1 parent 7805b90 commit f6f8916

File tree

7 files changed

+52
-19
lines changed

7 files changed

+52
-19
lines changed

src/generated/resources/data/modern_industrialization/recipe/machines/machine_chainer/assembler.json

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,6 @@
77
"amount": 1,
88
"item": "modern_industrialization:advanced_machine_hull"
99
},
10-
{
11-
"amount": 2,
12-
"item": "extended_industrialization:universal_transformer"
13-
},
1410
{
1511
"amount": 2,
1612
"item": "modern_industrialization:large_motor"

src/main/java/net/swedz/extended_industrialization/datagen/server/provider/recipes/MachineItemRecipesServerDatagenProvider.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -484,7 +484,6 @@ private static void machineChainer(RecipeOutput output)
484484
{
485485
new MachineRecipeBuilder(MIMachineRecipeTypes.ASSEMBLER, 8, 10 * 20)
486486
.addItemInput(MIBlock.ADVANCED_MACHINE_HULL, 1)
487-
.addItemInput("extended_industrialization:universal_transformer", 2)
488487
.addItemInput(MIItem.LARGE_MOTOR, 2)
489488
.addItemInput(MIItem.LARGE_PUMP, 2)
490489
.addItemInput(MITags.ITEM_PIPES, 64)

src/main/java/net/swedz/extended_industrialization/machines/blockentity/MachineChainerMachineBlockEntity.java

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,24 @@
11
package net.swedz.extended_industrialization.machines.blockentity;
22

33
import aztech.modern_industrialization.MICapabilities;
4+
import aztech.modern_industrialization.api.energy.CableTier;
5+
import aztech.modern_industrialization.api.energy.CableTierHolder;
46
import aztech.modern_industrialization.api.energy.EnergyApi;
57
import aztech.modern_industrialization.inventory.MIInventory;
68
import aztech.modern_industrialization.machines.BEP;
79
import aztech.modern_industrialization.machines.MachineBlockEntity;
10+
import aztech.modern_industrialization.machines.components.CasingComponent;
811
import aztech.modern_industrialization.machines.components.OrientationComponent;
912
import aztech.modern_industrialization.machines.components.RedstoneControlComponent;
1013
import aztech.modern_industrialization.machines.gui.MachineGuiParameters;
1114
import aztech.modern_industrialization.machines.guicomponents.AutoExtract;
1215
import aztech.modern_industrialization.machines.guicomponents.SlotPanel;
1316
import aztech.modern_industrialization.machines.models.MachineModelClientData;
1417
import aztech.modern_industrialization.util.Tickable;
18+
import net.minecraft.core.Direction;
19+
import net.minecraft.world.InteractionHand;
20+
import net.minecraft.world.ItemInteractionResult;
21+
import net.minecraft.world.entity.player.Player;
1522
import net.minecraft.world.level.Level;
1623
import net.minecraft.world.level.block.entity.BlockEntityType;
1724
import net.neoforged.neoforge.capabilities.Capabilities;
@@ -27,9 +34,10 @@
2734
import static net.swedz.tesseract.neoforge.compat.mi.guicomponent.modularmultiblock.ModularMultiblockGuiLine.*;
2835
import static net.swedz.tesseract.neoforge.tooltip.Parser.*;
2936

30-
public final class MachineChainerMachineBlockEntity extends MachineBlockEntity implements Tickable
37+
public final class MachineChainerMachineBlockEntity extends MachineBlockEntity implements Tickable, CableTierHolder
3138
{
3239
private final RedstoneControlComponent redstoneControl;
40+
private final CasingComponent casing;
3341

3442
private final ChainerComponent chainer;
3543

@@ -59,12 +67,15 @@ public MachineChainerMachineBlockEntity(BEP bep)
5967
() -> redstoneControl.doAllowNormalOperation(this)
6068
);
6169

70+
casing = new CasingComponent((from, to) -> chainer.invalidate());
71+
6272
transferItem = new ItemTransferCache(chainer::itemHandler);
6373
transferFluid = new FluidTransferCache(chainer::fluidHandler);
6474
transferEnergy = new MIEnergyTransferCache(chainer::extractableEnergyHandler);
6575

6676
this.registerGuiComponent(new SlotPanel.Server(this)
67-
.withRedstoneControl(redstoneControl));
77+
.withRedstoneControl(redstoneControl)
78+
.withCasing(casing));
6879

6980
this.registerGuiComponent(new AutoExtract.Server(orientation));
7081

@@ -82,7 +93,7 @@ public MachineChainerMachineBlockEntity(BEP bep)
8293
}
8394
}));
8495

85-
this.registerComponents(chainer, redstoneControl);
96+
this.registerComponents(chainer, redstoneControl, casing);
8697
}
8798

8899
public ChainerComponent getChainerComponent()
@@ -120,6 +131,12 @@ public void buildLinks()
120131
lastRebuildTick = tick;
121132
}
122133

134+
@Override
135+
public CableTier getCableTier()
136+
{
137+
return casing.getCableTier();
138+
}
139+
123140
@Override
124141
public MIInventory getInventory()
125142
{
@@ -129,7 +146,7 @@ public MIInventory getInventory()
129146
@Override
130147
protected MachineModelClientData getMachineModelData()
131148
{
132-
MachineModelClientData data = new MachineModelClientData();
149+
MachineModelClientData data = new MachineModelClientData(casing.getCasing());
133150
orientation.writeModelData(data);
134151
return data;
135152
}
@@ -185,7 +202,7 @@ public void tick()
185202
{
186203
transferFluid.autoExtract(level, worldPosition, orientation.outputDirection);
187204
}
188-
if(transferEnergy.autoExtract(level, worldPosition, orientation.outputDirection))
205+
if(transferEnergy.autoExtract(level, worldPosition, orientation.outputDirection, this.getCableTier()))
189206
{
190207
this.setChanged();
191208
}
@@ -198,6 +215,21 @@ public void tick()
198215
rebuildsThisTick = 0;
199216
}
200217

218+
@Override
219+
protected ItemInteractionResult useItemOn(Player player, InteractionHand hand, Direction face)
220+
{
221+
ItemInteractionResult result = super.useItemOn(player, hand, face);
222+
if(!result.consumesAction())
223+
{
224+
result = redstoneControl.onUse(this, player, hand);
225+
}
226+
if(!result.consumesAction())
227+
{
228+
result = casing.onUse(this, player, hand);
229+
}
230+
return result;
231+
}
232+
201233
public static void registerCapabilities(BlockEntityType<?> bet)
202234
{
203235
MICapabilities.onEvent((event) ->

src/main/java/net/swedz/extended_industrialization/machines/component/chainer/ChainerComponent.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ public ChainerComponent(MachineChainerMachineBlockEntity machine, int maxConnect
4040

4141
this.itemHandler = new ChainerItemHandler(links);
4242
this.fluidHandler = new ChainerFluidHandler(links);
43-
this.insertableEnergyHandler = new ChainerEnergyHandler(links, true);
44-
this.extractableEnergyHandler = new ChainerEnergyHandler(links, false);
43+
this.insertableEnergyHandler = new ChainerEnergyHandler(links, machine::getCableTier, true);
44+
this.extractableEnergyHandler = new ChainerEnergyHandler(links, machine::getCableTier, false);
4545

4646
this.listenerNeighborNotify = (event) ->
4747
{

src/main/java/net/swedz/extended_industrialization/machines/component/chainer/handler/ChainerEnergyHandler.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,17 @@
99

1010
import java.util.Collections;
1111
import java.util.List;
12+
import java.util.function.Supplier;
1213

1314
public final class ChainerEnergyHandler extends ChainerHandler<MIEnergyStorage, InventoryWrapper<MIEnergyStorage>> implements MIEnergyStorage
1415
{
15-
private final boolean insertable;
16+
private final Supplier<CableTier> cableTier;
17+
private final boolean insertable;
1618

17-
public ChainerEnergyHandler(ChainerLinks chainerLinks, boolean insertable)
19+
public ChainerEnergyHandler(ChainerLinks chainerLinks, Supplier<CableTier> cableTier, boolean insertable)
1820
{
1921
super(chainerLinks);
22+
this.cableTier = cableTier;
2023
this.insertable = insertable;
2124
}
2225

@@ -27,7 +30,10 @@ public void invalidate()
2730

2831
for(MIEnergyStorage handler : this.getMachineLinks().energyHandlers())
2932
{
30-
wrappers.add(new InventoryWrapper<>(handler));
33+
if(handler.canConnect(cableTier.get()))
34+
{
35+
wrappers.add(new InventoryWrapper<>(handler));
36+
}
3137
}
3238

3339
this.wrappers = Collections.unmodifiableList(wrappers);
@@ -97,8 +103,8 @@ public boolean canReceive()
97103
}
98104

99105
@Override
100-
public boolean canConnect(CableTier cableTier)
106+
public boolean canConnect(CableTier other)
101107
{
102-
return true;
108+
return cableTier.get() == other;
103109
}
104110
}

src/main/java/net/swedz/extended_industrialization/machines/component/chainer/link/linkable/MachineBlockLinkable.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ private MIEnergyStorage combine(MIEnergyStorage input, MIEnergyStorage output)
4545
@Override
4646
public boolean canConnect(CableTier cableTier)
4747
{
48-
return true;
48+
return input != null ? input.canConnect(cableTier) : output.canConnect(cableTier);
4949
}
5050

5151
@Override

src/main/resources/assets/extended_industrialization/models/block/machine_chainer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"casing": "modern_industrialization:mv",
2+
"casing": "modern_industrialization:lv",
33
"overlays": {
44
"front": "extended_industrialization:block/machines/machine_chainer/overlay_front",
55
"up": "extended_industrialization:block/machines/machine_chainer/overlay_arrow_up",

0 commit comments

Comments
 (0)