Skip to content

Commit 34535bd

Browse files
authored
Added allow input from output side for drums and the config (#3789)
1 parent b0c318f commit 34535bd

File tree

4 files changed

+56
-7
lines changed

4 files changed

+56
-7
lines changed

src/generated/resources/assets/gtceu/lang/en_ud.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1730,6 +1730,7 @@
17301730
"config.gtceu.option.addLoot": "ʇooꞀppɐ",
17311731
"config.gtceu.option.ae2": "ᄅǝɐ",
17321732
"config.gtceu.option.allUniqueStoneTypes": "sǝdʎ⟘ǝuoʇSǝnbıu∩ןןɐ",
1733+
"config.gtceu.option.allowDrumsInputFluidsFromOutputSide": "ǝpıSʇndʇnOɯoɹℲspınןℲʇnduIsɯnɹᗡʍoןןɐ",
17331734
"config.gtceu.option.animationTime": "ǝɯı⟘uoıʇɐɯıuɐ",
17341735
"config.gtceu.option.arcRecyclingYield": "pןǝıʎbuıןɔʎɔǝᴚɔɹɐ",
17351736
"config.gtceu.option.armorHud": "pnHɹoɯɹɐ",

src/generated/resources/assets/gtceu/lang/en_us.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1730,6 +1730,7 @@
17301730
"config.gtceu.option.addLoot": "addLoot",
17311731
"config.gtceu.option.ae2": "ae2",
17321732
"config.gtceu.option.allUniqueStoneTypes": "allUniqueStoneTypes",
1733+
"config.gtceu.option.allowDrumsInputFluidsFromOutputSide": "allowDrumsInputFluidsFromOutputSide",
17331734
"config.gtceu.option.animationTime": "animationTime",
17341735
"config.gtceu.option.arcRecyclingYield": "arcRecyclingYield",
17351736
"config.gtceu.option.armorHud": "armorHud",

src/main/java/com/gregtechceu/gtceu/common/machine/storage/DrumMachine.java

Lines changed: 50 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import com.gregtechceu.gtceu.api.machine.feature.IDropSaveMachine;
1313
import com.gregtechceu.gtceu.api.machine.feature.IInteractedMachine;
1414
import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank;
15+
import com.gregtechceu.gtceu.config.ConfigHolder;
1516
import com.gregtechceu.gtceu.utils.GTTransferUtils;
1617

1718
import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture;
@@ -31,6 +32,7 @@
3132
import net.minecraft.world.InteractionHand;
3233
import net.minecraft.world.InteractionResult;
3334
import net.minecraft.world.entity.player.Player;
35+
import net.minecraft.world.item.ItemStack;
3436
import net.minecraft.world.level.Level;
3537
import net.minecraft.world.level.block.Block;
3638
import net.minecraft.world.level.block.state.BlockState;
@@ -58,6 +60,8 @@ public class DrumMachine extends MetaMachine implements IAutoOutputFluid, IDropS
5860
@DescSynced
5961
@RequireRerender
6062
protected boolean autoOutputFluids;
63+
@Persisted
64+
protected boolean allowInputFromOutputSideFluids;
6165
@Getter
6266
private final int maxStoredFluids;
6367
@Persisted
@@ -150,14 +154,20 @@ public void setAutoOutputFluids(boolean allow) {
150154
updateAutoOutputSubscription();
151155
}
152156

157+
private static boolean canInputFluidsFromOutputSide() {
158+
return ConfigHolder.INSTANCE.machines.allowDrumsInputFluidsFromOutputSide;
159+
}
160+
153161
@Override
154162
public boolean isAllowInputFromOutputSideFluids() {
155-
return false;
163+
return canInputFluidsFromOutputSide() && this.allowInputFromOutputSideFluids;
156164
}
157165

158-
// always is facing down, and can never accept fluids from output side
166+
// always is facing down, and can never accept fluids from output side by default
159167
@Override
160-
public void setAllowInputFromOutputSideFluids(boolean allow) {}
168+
public void setAllowInputFromOutputSideFluids(boolean allow) {
169+
this.allowInputFromOutputSideFluids = allow;
170+
}
161171

162172
@Override
163173
public void setOutputFacingFluids(@Nullable Direction outputFacing) {
@@ -214,28 +224,61 @@ public boolean saveBreak() {
214224
@Override
215225
protected InteractionResult onScrewdriverClick(Player playerIn, InteractionHand hand, Direction gridSide,
216226
BlockHitResult hitResult) {
227+
if (!isRemote()) {
228+
if (canInputFluidsFromOutputSide()) {
229+
setAllowInputFromOutputSideFluids(!isAllowInputFromOutputSideFluids());
230+
playerIn.sendSystemMessage(
231+
Component
232+
.translatable("gtceu.machine.basic.input_from_output_side." +
233+
(isAllowInputFromOutputSideFluids() ? "allow" : "disallow"))
234+
.append(Component.translatable("gtceu.creative.tank.fluid")));
235+
}
236+
return InteractionResult.SUCCESS;
237+
}
238+
return super.onScrewdriverClick(playerIn, hand, gridSide, hitResult);
239+
}
240+
241+
@Override
242+
protected InteractionResult onSoftMalletClick(Player playerIn, InteractionHand hand, Direction gridSide,
243+
BlockHitResult hitResult) {
217244
if (!isRemote()) {
218245
if (!playerIn.isShiftKeyDown()) {
219246
setAutoOutputFluids(!isAutoOutputFluids());
220-
playerIn.sendSystemMessage(Component
221-
.translatable("gtceu.machine.drum." + (autoOutputFluids ? "enable" : "disable") + "_output"));
247+
playerIn.sendSystemMessage(
248+
Component.translatable(
249+
"gtceu.machine.drum." + (autoOutputFluids ? "enable" : "disable") + "_output"));
222250
return InteractionResult.SUCCESS;
223251
}
224252
}
225-
return super.onScrewdriverClick(playerIn, hand, gridSide, hitResult);
253+
return super.onSoftMalletClick(playerIn, hand, gridSide, hitResult);
226254
}
227255

228256
//////////////////////////////////////
229257
// ******* Rendering ********//
230258
//////////////////////////////////////
259+
260+
@Override
261+
public boolean shouldRenderGrid(Player player, BlockPos pos, BlockState state, ItemStack held,
262+
Set<GTToolType> toolTypes) {
263+
return super.shouldRenderGrid(player, pos, state, held, toolTypes) ||
264+
toolTypes.contains(GTToolType.SOFT_MALLET) ||
265+
(canInputFluidsFromOutputSide() && toolTypes.contains(GTToolType.SCREWDRIVER));
266+
}
267+
231268
@Override
232269
public @Nullable ResourceTexture sideTips(Player player, BlockPos pos, BlockState state, Set<GTToolType> toolTypes,
233270
Direction side) {
234-
if (toolTypes.contains(GTToolType.SCREWDRIVER)) {
271+
if (toolTypes.contains(GTToolType.SOFT_MALLET)) {
235272
if (side == getOutputFacingFluids()) {
236273
return isAutoOutputFluids() ? GuiTextures.TOOL_DISABLE_AUTO_OUTPUT : GuiTextures.TOOL_AUTO_OUTPUT;
237274
}
238275
}
276+
if (canInputFluidsFromOutputSide() && toolTypes.contains(GTToolType.SCREWDRIVER)) {
277+
if (side == getOutputFacingFluids()) {
278+
return GuiTextures.TOOL_ALLOW_INPUT;
279+
}
280+
}
281+
239282
return super.sideTips(player, pos, state, toolTypes, side);
240283
}
241284
}

src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -576,6 +576,10 @@ public static class MachineConfigs {
576576
})
577577
public int steamMultiParallelAmount = 8;
578578

579+
@Configurable
580+
@Configurable.Comment("Whether the Drums can input fluids from the output side (bottom).")
581+
public boolean allowDrumsInputFluidsFromOutputSide = false;
582+
579583
@Configurable
580584
@Configurable.Comment("Small Steam Boiler Options")
581585
public SmallBoilers smallBoilers = new SmallBoilers();

0 commit comments

Comments
 (0)