@@ -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