@Override public IAEFluidStack injectItems( final IAEFluidStack input, final Actionable type, final IActionSource src ) { final int filled = this.handler.fill( input.getFluidStack(), type == Actionable.MODULATE ); if( filled == 0 ) { return input.copy(); } if( type == Actionable.MODULATE ) { this.onTick(); } if( filled == input.getStackSize() ) { return null; } final IAEFluidStack o = input.copy(); o.setStackSize( input.getStackSize() - filled ); return o; }
@Override public String getMessage() { final IAEFluidStack fluid = this.tank.getFluidInSlot( this.slot ); if( fluid != null && fluid.getStackSize() > 0 ) { String desc = fluid.getFluid().getLocalizedName( fluid.getFluidStack() ); String amountToText = fluid.getStackSize() + "mB"; return desc + "\n" + amountToText; } return null; }
private void handleStackSizeChanged( int slot, IAEFluidStack oldAeFS, FluidStack newFS, List<IAEFluidStack> changes ) { // Still the same fluid, but amount might have changed final long diff = newFS.amount - oldAeFS.getStackSize(); if( diff != 0 ) { final IAEFluidStack stack = oldAeFS.copy(); stack.setStackSize( newFS.amount ); this.cachedAeStacks[slot] = stack; final IAEFluidStack a = stack.copy(); a.setStackSize( diff ); changes.add( a ); } }
@Override public void addRequestable( final IAEFluidStack option ) { if( option == null ) { return; } final IAEFluidStack st = this.getFluidRecord( option ); if( st != null ) { st.setCountRequestable( st.getCountRequestable() + option.getCountRequestable() ); return; } final IAEFluidStack opt = option.copy(); opt.setStackSize( 0 ); opt.setCraftable( false ); opt.setCountRequestable( option.getCountRequestable() ); this.putFluidRecord( opt ); }
@Override public FluidStack getContents() { return AEFluidInventory.this.fluids[this.slot] == null ? null : AEFluidInventory.this.fluids[this.slot].getFluidStack(); }
@Override protected void renderHoveredToolTip( int mouseX, int mouseY ) { final Slot slot = this.getSlot( mouseX, mouseY ); if( slot != null && slot instanceof IMEFluidSlot && slot.isEnabled() ) { final IMEFluidSlot fluidSlot = (IMEFluidSlot) slot; if( fluidSlot.getAEFluidStack() != null && fluidSlot.shouldRenderAsFluid() ) { final IAEFluidStack fluidStack = fluidSlot.getAEFluidStack(); final String formattedAmount = NumberFormat.getNumberInstance( Locale.US ).format( fluidStack.getStackSize() / 1000.0 ) + " B"; final String modName = "" + TextFormatting.BLUE + TextFormatting.ITALIC + Loader.instance() .getIndexedModList() .get( Platform.getModId( fluidStack ) ) .getName(); final List<String> list = new ArrayList<>(); list.add( fluidStack.getFluidStack().getLocalizedName() ); list.add( formattedAmount ); list.add( modName ); this.drawHoveringText( list, mouseX, mouseY ); return; } } super.renderHoveredToolTip( mouseX, mouseY ); }
@Override public IAEFluidStack extractItems( final IAEFluidStack request, final Actionable type, final IActionSource src ) { final FluidStack removed = this.handler.drain( request.getFluidStack(), type == Actionable.MODULATE ); if( removed == null || removed.amount == 0 ) { return null; } if( type == Actionable.MODULATE ) { this.onTick(); } final IAEFluidStack o = request.copy(); o.setStackSize( removed.amount ); return o; }
@Override public void drawButton( final Minecraft mc, final int mouseX, final int mouseY, final float partialTicks ) { if( this.visible ) { GlStateManager.disableBlend(); GlStateManager.disableLighting(); drawRect( this.x, this.y, this.x + this.width, this.y + this.height, AEColor.GRAY.blackVariant | 0xFF000000 ); final IAEFluidStack fluid = this.tank.getFluidInSlot( this.slot ); if( fluid != null && fluid.getStackSize() > 0 ) { mc.getTextureManager().bindTexture( TextureMap.LOCATION_BLOCKS_TEXTURE ); float red = ( fluid.getFluid().getColor() >> 16 & 255 ) / 255.0F; float green = ( fluid.getFluid().getColor() >> 8 & 255 ) / 255.0F; float blue = ( fluid.getFluid().getColor() & 255 ) / 255.0F; GlStateManager.color( red, green, blue ); TextureAtlasSprite sprite = mc.getTextureMapBlocks().getAtlasSprite( fluid.getFluid().getStill().toString() ); final int scaledHeight = (int) ( this.height * ( (float) fluid.getStackSize() / this.tank.getTankProperties()[this.slot].getCapacity() ) ); int iconHeightRemainder = scaledHeight % 16; if( iconHeightRemainder > 0 ) { this.drawTexturedModalRect( this.x, this.y + this.height - iconHeightRemainder, sprite, 16, iconHeightRemainder ); } for( int i = 0; i < scaledHeight / 16; i++ ) { this.drawTexturedModalRect( this.x, this.y + this.height - iconHeightRemainder - ( i + 1 ) * 16, sprite, 16, 16 ); } } } }
currentToolTip.add( WailaText.Showing.getLocal() + ": " + ais.getFluid().getLocalizedName( ais.getFluidStack() ) );
public FluidStack drain( final int slot, final int maxDrain, boolean doDrain ) { final IAEFluidStack fluid = this.fluids[slot]; if( fluid == null || maxDrain <= 0 ) { return null; } int drained = maxDrain; if( fluid.getStackSize() < drained ) { drained = (int) fluid.getStackSize(); } FluidStack stack = new FluidStack( fluid.getFluid(), drained ); if( doDrain ) { fluid.setStackSize( fluid.getStackSize() - drained ); if( fluid.getStackSize() <= 0 ) { this.fluids[slot] = null; } this.onContentChanged( slot ); } return stack; }
IAEFluidStack injectItems = mon.injectItems(fluidStack.copy(), Actionable.SIMULATE, new MachineSource(this)); if (mon.canAccept(fluidStack) && (injectItems == null || injectItems.getStackSize() == 0L)) { mon.injectItems(fluidStack, Actionable.MODULATE, new MachineSource( this)); if (extract != null) { mon.extractItems(AEUtils.createFluidStack(new FluidStack(this.fluid, (int) extract.getStackSize())), Actionable.MODULATE, new MachineSource(this)); Pair<Integer, ItemStack> empty1 = FluidHelper .fillStack(itemStack, extract.getFluidStack()); if (empty1.getKey() == 0) { mon.injectItems(AEUtils.createFluidStack(new FluidStack(this.fluid, (int) extract.getStackSize())), Actionable.MODULATE, new MachineSource(this)); return true;
if( viewMode == ViewItems.CRAFTABLE && !fs.isCraftable() ) if( viewMode == ViewItems.STORED && fs.getStackSize() == 0 ) fs = fs.copy(); fs.setStackSize( 0 );
private final boolean equalsSlot( int slot ) { final IAEFluidStack stackA = this.inv.getFluidInSlot( slot ); final IAEFluidStack stackB = this.cache.getFluidInSlot( slot ); if( !Objects.equals( stackA, stackB ) ) { return false; } return stackA == null || stackA.getStackSize() == stackB.getStackSize(); } }
public void setTargetStack( final IAEFluidStack stack ) { if( Platform.isClient() ) { if( stack == null && this.clientRequestedTargetFluid == null ) { return; } if( stack != null && this.clientRequestedTargetFluid != null && stack.getFluidStack() .isFluidEqual( this.clientRequestedTargetFluid.getFluidStack() ) ) { return; } NetworkHandler.instance().sendToServer( new PacketTargetFluidStack( (AEFluidStack) stack ) ); } this.clientRequestedTargetFluid = stack == null ? null : stack.copy(); }
@Override public void addCrafting( final IAEFluidStack option ) { if( option == null ) { return; } final IAEFluidStack st = this.getFluidRecord( option ); if( st != null ) { st.setCraftable( true ); return; } final IAEFluidStack opt = option.copy(); opt.setStackSize( 0 ); opt.setCraftable( true ); this.putFluidRecord( opt ); }
@Override public void addStorage( final IAEFluidStack option ) { if( option == null ) { return; } final IAEFluidStack st = this.getFluidRecord( option ); if( st != null ) { st.incStackSize( option.getStackSize() ); return; } final IAEFluidStack opt = option.copy(); this.putFluidRecord( opt ); }
@Override public boolean fuzzyComparison( final IAEFluidStack other, final FuzzyMode mode ) { return this.fluid == other.getFluid(); }
private void handleFluidChanged( int slot, IAEFluidStack oldAeFS, FluidStack newFS, List<IAEFluidStack> changes ) { // Completely different fluid this.cachedAeStacks[slot] = AEFluidStack.fromFluidStack( newFS ); // If we had a stack previously in this slot, notify the network about its disappearance if( oldAeFS != null ) { oldAeFS.setStackSize( -oldAeFS.getStackSize() ); changes.add( oldAeFS ); } // Notify the network about the new stack. Note that this is null if newFS was null if( this.cachedAeStacks[slot] != null ) { changes.add( this.cachedAeStacks[slot] ); } } }
public static IAEFluidStack createFluidStack(Fluid fluid, long amount) { return fluid == null ? null : createFluidStack(new FluidStack(fluid, 1)).setStackSize(amount); }