Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -322,19 +322,32 @@ public InteractionResult use(BlockState state, Level world, BlockPos pos, Player
//////////////////////////////////////

public boolean canConnectRedstone(BlockGetter level, BlockPos pos, Direction side) {
return MetaMachine.getMachine(level, pos).canConnectRedstone(side);
var machine = MetaMachine.getMachine(level, pos);
if (machine == null) return false;
return machine.canConnectRedstone(side);
}

@Override
@SuppressWarnings("deprecation") // This is fine to override, just not to be called.
public int getSignal(BlockState state, BlockGetter level, BlockPos pos, Direction direction) {
return MetaMachine.getMachine(level, pos).getOutputSignal(direction);
var machine = MetaMachine.getMachine(level, pos);
if (machine == null) return 0;
return machine.getOutputSignal(direction);
}

@Override
public int getDirectSignal(BlockState state, BlockGetter level, BlockPos pos, Direction direction) {
var machine = MetaMachine.getMachine(level, pos);
if (machine == null) return 0;
return machine.getOutputDirectSignal(direction);
}

@Override
@SuppressWarnings("deprecation") // This is fine to override, just not to be called.
public int getAnalogOutputSignal(BlockState state, Level level, BlockPos pos) {
return MetaMachine.getMachine(level, pos).getAnalogOutputSignal();
var machine = MetaMachine.getMachine(level, pos);
if (machine == null) return 0;
return machine.getAnalogOutputSignal();
}

/////////
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@
import com.gregtechceu.gtceu.api.gui.fancy.FancyMachineUIWidget;
import com.gregtechceu.gtceu.api.gui.widget.ToggleButtonWidget;
import com.gregtechceu.gtceu.api.gui.widget.directional.IDirectionalConfigHandler;
import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputFluid;
import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputItem;
import com.gregtechceu.gtceu.api.machine.trait.AutoOutputTrait;
import com.gregtechceu.gtceu.data.lang.LangHandler;

import com.lowdragmc.lowdraglib.gui.texture.GuiTextureGroup;
Expand Down Expand Up @@ -40,12 +39,12 @@ public class AutoOutputFluidConfigHandler implements IDirectionalConfigHandler {
GuiTextures.VANILLA_BUTTON,
GuiTextures.IO_CONFIG_FLUID_MODES_BUTTON.getSubTexture(0, 2 / 3f, 1, 1 / 3f));

private final IAutoOutputFluid machine;
private final AutoOutputTrait trait;
private Direction side;
private ButtonWidget ioModeButton;

public AutoOutputFluidConfigHandler(IAutoOutputFluid machine) {
this.machine = machine;
public AutoOutputFluidConfigHandler(AutoOutputTrait trait) {
this.trait = trait;
}

@Override
Expand All @@ -61,8 +60,8 @@ public void updateScreen() {
setButtonTexture(TEXTURE_OFF);
setHoverTooltips(LangHandler.getMultiLang("gtceu.gui.fluid_auto_output.unselected")
.toArray(Component[]::new));
} else if (machine.getOutputFacingFluids() == side) {
if (machine.isAutoOutputFluids()) {
} else if (trait.getFluidOutputDirection() == side) {
if (trait.isAutoOutputFluids()) {
setButtonTexture(TEXTURE_AUTO);
setHoverTooltips("gtceu.gui.fluid_auto_output.enabled");
} else {
Expand All @@ -79,7 +78,7 @@ public void updateScreen() {

group.addWidget(new ToggleButtonWidget(
19, 0, 18, 18, GuiTextures.BUTTON_FLUID_OUTPUT,
machine::isAllowInputFromOutputSideFluids, machine::setAllowInputFromOutputSideFluids)
trait::allowsFluidInputFromOutputSide, trait::setAllowFluidInputFromOutputSide)
.setShouldUseBaseBackground().setTooltipText("gtceu.gui.fluid_auto_output.allow_input"));

return group;
Expand All @@ -89,11 +88,11 @@ private void onIOModePressed(ClickData cd) {
if (this.side == null)
return;

if (machine.getOutputFacingFluids() == this.side) {
machine.setAutoOutputFluids(!machine.isAutoOutputFluids());
if (trait.getFluidOutputDirection() == this.side) {
trait.setAllowAutoOutputFluids(!trait.isAutoOutputFluids());
} else {
machine.setAutoOutputFluids(false);
machine.setOutputFacingFluids(this.side);
trait.setAllowAutoOutputFluids(false);
trait.setFluidOutputDirection(this.side);
}
}

Expand All @@ -109,14 +108,14 @@ public ScreenSide getScreenSide() {

@Override
public void handleClick(ClickData cd, Direction direction) {
if (!canHandleClick(cd) || !machine.hasAutoOutputFluid())
if (!canHandleClick(cd) || !trait.supportsAutoOutputFluids())
return;

if (machine.getOutputFacingFluids() != side) {
machine.setOutputFacingFluids(side);
machine.setAutoOutputFluids(false);
if (trait.getFluidOutputDirection() != side) {
trait.setFluidOutputDirection(side);
trait.setAllowAutoOutputFluids(false);
} else {
machine.setAutoOutputFluids(!machine.isAutoOutputFluids());
trait.setAllowAutoOutputFluids(!trait.isAutoOutputFluids());
}
}

Expand All @@ -125,20 +124,17 @@ private boolean canHandleClick(ClickData cd) {
if (cd.button == 1)
return true;

if (!(machine instanceof IAutoOutputItem) && cd.button == 0)
return true;

return false;
}

@Override
@OnlyIn(Dist.CLIENT)
public void renderOverlay(SceneWidget sceneWidget, BlockPosFace blockPosFace) {
if (machine.getOutputFacingFluids() != blockPosFace.facing)
if (trait.getFluidOutputDirection() != blockPosFace.facing)
return;

sceneWidget.drawFacingBorder(new PoseStack(), blockPosFace,
machine.isAutoOutputFluids() ? 0xff00b4ff : 0x8f00b4ff, 2);
trait.isAutoOutputFluids() ? 0xff00b4ff : 0x8f00b4ff, 2);
}

@Override
Expand All @@ -147,7 +143,7 @@ public void addAdditionalUIElements(WidgetGroup parent) {

@Override
public boolean isVisible() {
return machine.isAutoOutputFluids() && machine.getOutputFacingFluids() != null;
return trait.isAutoOutputFluids() && trait.getFluidOutputDirection() != null;
}
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@
import com.gregtechceu.gtceu.api.gui.fancy.FancyMachineUIWidget;
import com.gregtechceu.gtceu.api.gui.widget.ToggleButtonWidget;
import com.gregtechceu.gtceu.api.gui.widget.directional.IDirectionalConfigHandler;
import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputFluid;
import com.gregtechceu.gtceu.api.machine.feature.IAutoOutputItem;
import com.gregtechceu.gtceu.api.machine.trait.AutoOutputTrait;
import com.gregtechceu.gtceu.data.lang.LangHandler;

import com.lowdragmc.lowdraglib.gui.texture.GuiTextureGroup;
Expand Down Expand Up @@ -39,12 +38,12 @@ public class AutoOutputItemConfigHandler implements IDirectionalConfigHandler {
GuiTextures.VANILLA_BUTTON,
GuiTextures.IO_CONFIG_ITEM_MODES_BUTTON.getSubTexture(0, 2 / 3f, 1, 1 / 3f));

private final IAutoOutputItem machine;
private final AutoOutputTrait trait;
private Direction side;
private ButtonWidget ioModeButton;

public AutoOutputItemConfigHandler(IAutoOutputItem machine) {
this.machine = machine;
public AutoOutputItemConfigHandler(AutoOutputTrait trait) {
this.trait = trait;
}

@Override
Expand All @@ -61,8 +60,8 @@ public void updateScreen() {
setButtonTexture(TEXTURE_OFF);
setHoverTooltips(LangHandler.getMultiLang("gtceu.gui.item_auto_output.unselected")
.toArray(Component[]::new));
} else if (machine.getOutputFacingItems() == side) {
if (machine.isAutoOutputItems()) {
} else if (trait.getItemOutputDirection() == side) {
if (trait.isAutoOutputItems()) {
setButtonTexture(TEXTURE_AUTO);
setHoverTooltips("gtceu.gui.item_auto_output.enabled");
} else {
Expand All @@ -79,7 +78,7 @@ public void updateScreen() {

group.addWidget(new ToggleButtonWidget(
19, 0, 18, 18, GuiTextures.BUTTON_ITEM_OUTPUT,
machine::isAllowInputFromOutputSideItems, machine::setAllowInputFromOutputSideItems)
trait::allowsItemInputFromOutputSide, trait::setAllowItemInputFromOutputSide)
.setShouldUseBaseBackground().setTooltipText("gtceu.gui.item_auto_output.allow_input"));

return group;
Expand All @@ -89,11 +88,11 @@ private void onIOModePressed(ClickData cd) {
if (this.side == null)
return;

if (machine.getOutputFacingItems() == this.side) {
machine.setAutoOutputItems(!machine.isAutoOutputItems());
if (trait.getItemOutputDirection() == this.side) {
trait.setAllowAutoOutputItems(!trait.isAutoOutputItems());
} else {
machine.setAutoOutputItems(false);
machine.setOutputFacingItems(this.side);
trait.setAllowAutoOutputItems(false);
trait.setItemOutputDirection(this.side);
}
}

Expand All @@ -109,14 +108,14 @@ public ScreenSide getScreenSide() {

@Override
public void handleClick(ClickData cd, Direction direction) {
if (!canHandleClick(cd) || !machine.hasAutoOutputItem())
if (!canHandleClick(cd) || !trait.supportsAutoOutputItems())
return;

if (machine.getOutputFacingItems() != side) {
machine.setOutputFacingItems(side);
machine.setAutoOutputItems(false);
if (trait.getItemOutputDirection() != side) {
trait.setItemOutputDirection(side);
trait.setAllowAutoOutputItems(false);
} else {
machine.setAutoOutputItems(!machine.isAutoOutputItems());
trait.setAllowAutoOutputItems(!trait.isAutoOutputItems());
}
}

Expand All @@ -125,20 +124,17 @@ private boolean canHandleClick(ClickData cd) {
if (cd.button == 0)
return true;

if (!(machine instanceof IAutoOutputFluid) && cd.button == 1)
return true;

return false;
}

@Override
@OnlyIn(Dist.CLIENT)
public void renderOverlay(SceneWidget sceneWidget, BlockPosFace blockPosFace) {
if (machine.getOutputFacingItems() != blockPosFace.facing)
if (trait.getItemOutputDirection() != blockPosFace.facing)
return;

sceneWidget.drawFacingBorder(new PoseStack(), blockPosFace,
machine.isAutoOutputItems() ? 0xffff6e0f : 0x8fff6e0f, 1);
trait.isAutoOutputItems() ? 0xffff6e0f : 0x8fff6e0f, 1);
}

@Override
Expand All @@ -147,7 +143,7 @@ public void addAdditionalUIElements(WidgetGroup parent) {

@Override
public boolean isVisible() {
return machine.isAutoOutputItems() && machine.getOutputFacingItems() != null;
return trait.isAutoOutputItems() && trait.getItemOutputDirection() != null;
}
};

Expand Down
Loading
Loading