Skip to content

Commit bf1286d

Browse files
handle null capabilty issue and show that on the GUI
1 parent 8da6d7a commit bf1286d

File tree

2 files changed

+45
-1
lines changed

2 files changed

+45
-1
lines changed

src/main/java/gregtech/common/covers/CoverConveyor.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ public class CoverConveyor extends CoverBehavior implements CoverWithUI, ITickab
4848
protected int itemsLeftToTransferLastSecond;
4949
private CoverableItemHandlerWrapper itemHandlerWrapper;
5050
protected boolean isWorkingAllowed = true;
51+
protected DiagnoseIssue diagnoseIssue;
5152

5253
public CoverConveyor(ICoverable coverable, EnumFacing attachedSide, int tier, int itemsPerSecond) {
5354
super(coverable, attachedSide);
@@ -56,6 +57,7 @@ public CoverConveyor(ICoverable coverable, EnumFacing attachedSide, int tier, in
5657
this.transferRate = maxItemTransferRate;
5758
this.itemsLeftToTransferLastSecond = transferRate;
5859
this.conveyorMode = ConveyorMode.EXPORT;
60+
this.diagnoseIssue = DiagnoseIssue.IDLING;
5961
this.itemFilterContainer = new ItemFilterContainer(this);
6062
}
6163

@@ -86,6 +88,14 @@ protected void setManualImportExportMode(ManualImportExportMode manualImportExpo
8688
coverHolder.markDirty();
8789
}
8890

91+
public DiagnoseIssue getDiagnoseIssue() {
92+
return this.diagnoseIssue;
93+
}
94+
95+
public void setDiagnoseIssue(DiagnoseIssue diagnoseIssue) {
96+
this.diagnoseIssue = diagnoseIssue;
97+
}
98+
8999
@Override
90100
public void update() {
91101
long timer = coverHolder.getTimer();
@@ -99,6 +109,12 @@ public void update() {
99109
}
100110
}
101111
if (timer % 20 == 0) {
112+
if (itemsLeftToTransferLastSecond < transferRate) {
113+
setDiagnoseIssue(DiagnoseIssue.WORKING);
114+
}
115+
if (itemsLeftToTransferLastSecond == transferRate) {
116+
setDiagnoseIssue(DiagnoseIssue.IDLING);
117+
}
102118
this.itemsLeftToTransferLastSecond = transferRate;
103119
}
104120
}
@@ -392,6 +408,10 @@ public EnumActionResult onScrewdriverClick(EntityPlayer playerIn, EnumHand hand,
392408
@Override
393409
public <T> T getCapability(Capability<T> capability, T defaultValue) {
394410
if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) {
411+
if (defaultValue == null ) {
412+
setDiagnoseIssue(DiagnoseIssue.EXPECTED_CAPABILITY_UNAVAILABLE);
413+
return null;
414+
}
395415
IItemHandler delegate = (IItemHandler) defaultValue;
396416
if (itemHandlerWrapper == null || itemHandlerWrapper.delegate != delegate) {
397417
this.itemHandlerWrapper = new CoverableItemHandlerWrapper(delegate);
@@ -429,6 +449,8 @@ public ModularUI createUI(EntityPlayer player) {
429449
ManualImportExportMode.class, this::getManualImportExportMode, this::setManualImportExportMode)
430450
.setTooltipHoverString("cover.universal.manual_import_export.mode.description"));
431451

452+
primaryGroup.addWidget(new DiagnoseWidget(80,90,16,16,DiagnoseIssue.class,this::getDiagnoseIssue));
453+
432454
this.itemFilterContainer.initUI(70, primaryGroup::addWidget);
433455

434456
ModularUI.Builder builder = ModularUI.builder(GuiTextures.BACKGROUND, 176, 190 + 82)

src/main/java/gregtech/common/covers/CoverPump.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public class CoverPump extends CoverBehavior implements CoverWithUI, ITickable,
4747
protected boolean isWorkingAllowed = true;
4848
protected final FluidFilterContainer fluidFilter;
4949
protected BucketMode bucketMode;
50+
protected DiagnoseIssue diagnoseIssue;
5051

5152
public CoverPump(ICoverable coverHolder, EnumFacing attachedSide, int tier, int mbPerTick) {
5253
super(coverHolder, attachedSide);
@@ -56,6 +57,7 @@ public CoverPump(ICoverable coverHolder, EnumFacing attachedSide, int tier, int
5657
this.fluidLeftToTransferLastSecond = transferRate;
5758
this.pumpMode = PumpMode.EXPORT;
5859
this.bucketMode = BucketMode.MILLI_BUCKET;
60+
this.diagnoseIssue = DiagnoseIssue.IDLING;
5961
this.fluidFilter = new FluidFilterContainer(this);
6062
}
6163

@@ -98,13 +100,27 @@ protected void setManualImportExportMode(ManualImportExportMode manualImportExpo
98100
coverHolder.markDirty();
99101
}
100102

103+
public DiagnoseIssue getDiagnoseIssue() {
104+
return this.diagnoseIssue;
105+
}
106+
107+
public void setDiagnoseIssue(DiagnoseIssue diagnoseIssue) {
108+
this.diagnoseIssue = diagnoseIssue;
109+
}
110+
101111
@Override
102112
public void update() {
103113
long timer = coverHolder.getTimer();
104114
if (isWorkingAllowed && fluidLeftToTransferLastSecond > 0) {
105115
this.fluidLeftToTransferLastSecond -= doTransferFluids(fluidLeftToTransferLastSecond);
106116
}
107117
if (timer % 20 == 0) {
118+
if (fluidLeftToTransferLastSecond < transferRate) {
119+
setDiagnoseIssue(DiagnoseIssue.WORKING);
120+
}
121+
if (fluidLeftToTransferLastSecond == transferRate) {
122+
setDiagnoseIssue(DiagnoseIssue.IDLING);
123+
}
108124
this.fluidLeftToTransferLastSecond = transferRate;
109125
}
110126
}
@@ -157,7 +173,9 @@ public ModularUI createUI(EntityPlayer player) {
157173
primaryGroup.addWidget(new CycleButtonWidget(10, 160, 113, 20,
158174
ManualImportExportMode.class, this::getManualImportExportMode, this::setManualImportExportMode)
159175
.setTooltipHoverString("cover.universal.manual_import_export.mode.description"));
160-
176+
177+
primaryGroup.addWidget(new DiagnoseWidget(80,84,16,16,DiagnoseIssue.class,this::getDiagnoseIssue));
178+
161179
this.fluidFilter.initUI(88, primaryGroup::addWidget);
162180

163181
return ModularUI.builder(GuiTextures.BACKGROUND, 176, 184 + 82)
@@ -201,6 +219,10 @@ public void renderCover(CCRenderState renderState, Matrix4 translation, IVertexO
201219
@Override
202220
public <T> T getCapability(Capability<T> capability, T defaultValue) {
203221
if (capability == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY) {
222+
if (defaultValue == null ) {
223+
setDiagnoseIssue(DiagnoseIssue.EXPECTED_CAPABILITY_UNAVAILABLE);
224+
return null;
225+
}
204226
IFluidHandler delegate = (IFluidHandler) defaultValue;
205227
if (fluidHandlerWrapper == null || fluidHandlerWrapper.delegate != delegate) {
206228
this.fluidHandlerWrapper = new CoverableFluidHandlerWrapper(delegate);

0 commit comments

Comments
 (0)