Skip to content

Commit

Permalink
more work on filters
Browse files Browse the repository at this point in the history
  • Loading branch information
ghzdude committed Jan 17, 2024
1 parent cba4733 commit 116d4a6
Show file tree
Hide file tree
Showing 7 changed files with 24 additions and 18 deletions.
5 changes: 3 additions & 2 deletions src/main/java/gregtech/common/covers/CoverFluidRegulator.java
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ public CoverFluidRegulator(@NotNull CoverDefinition definition, @NotNull Coverab
@NotNull EnumFacing attachedSide, int tier, int mbPerTick) {
super(definition, coverableView, attachedSide, tier, mbPerTick);
this.fluidFilter = new FluidFilterContainer(this);
this.fluidFilter.setMaxTransferSize(1000);
}

public int getTransferAmount() {
Expand Down Expand Up @@ -251,10 +252,10 @@ public TransferMode getTransferMode() {
}

private boolean shouldDisplayAmountSlider() {
if (!this.fluidFilter.hasFilter()) {
if (transferMode == TransferMode.TRANSFER_ANY) {
return false;
}
return this.transferMode != TransferMode.TRANSFER_ANY && this.fluidFilter.getFilter().showGlobalTransferLimitSlider();
return fluidFilter.showGlobalTransferLimitSlider();
}

public String getTransferAmountString() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ public int getMaxTransferSize() {
}

public void setMaxTransferSize(int maxTransferSize) {
this.maxTransferSize = maxTransferSize;
if (hasFilter()) currentItemFilter.setMaxTransferSize(maxTransferSize);
this.maxTransferSize = MathHelper.clamp(maxTransferSize, 1, Integer.MAX_VALUE);
if (hasFilter()) currentItemFilter.setMaxTransferSize(this.maxTransferSize);
}

public boolean hasFilter() {
Expand Down Expand Up @@ -67,7 +67,7 @@ public void setOnFilterInstanceChange(Runnable onFilterInstanceChange) {
}

public boolean showGlobalTransferLimitSlider() {
return getMaxTransferSize() > 1 && (isBlacklistFilter() || !hasFilter() || currentItemFilter.showGlobalTransferLimitSlider());
return getMaxTransferSize() > 0 && (isBlacklistFilter() || !hasFilter() || currentItemFilter.showGlobalTransferLimitSlider());
}

public int getTransferLimit(int slotIndex) {
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/gregtech/common/covers/filter/FluidFilter.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import net.minecraftforge.fluids.IFluidTank;

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.function.Consumer;

Expand Down Expand Up @@ -124,6 +125,7 @@ protected abstract static class BaseFluidFilterReader extends BaseFilterReader {

public BaseFluidFilterReader(ItemStack container, int slots) {
super(container, slots);
this.maxTransferRate = 1000;
}

@Override
Expand All @@ -139,13 +141,11 @@ public NBTTagList getItemsNbt() {
return nbt.getTagList(KEY_FLUIDS, Constants.NBT.TAG_COMPOUND);
}

@Nullable
public FluidStack getFluidStack(int i) {
return getFluidTank(i).getFluid();
}

public abstract IFluidTank getFluidTank(int i);

@Override
public void onTranferRateChange() {}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ public ModularPanel createUI(ModularPanel mainPanel, GuiSyncManager syncManager)
panel.closePanel();
}
}, true)
.size(18).marginRight(4)
.size(18).marginRight(2)
.background(GTGuiTextures.SLOT, GTGuiTextures.FILTER_SLOT_OVERLAY))
.child(new ButtonWidget<>()
.setEnabledIf(w -> hasFilter())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public ItemStack getContainerStack() {
for (int i = 0; i < syncHandlers.length; i++) {
var tank = this.filterReader.getFluidTank(i);
syncHandlers[i] = new FixedFluidSlotSH(tank).phantom(true);
syncHandlers[i].setValue(tank.getFluid(), false, false);
syncHandlers[i].updateCacheFromSource(true);
}

return new Row().coverChildrenHeight().widthRel(1f)
Expand Down Expand Up @@ -115,7 +115,7 @@ public void initUI(Consumer<gregtech.api.gui.Widget> widgetGroup) {}

@Override
public boolean showGlobalTransferLimitSlider() {
return !isBlacklistFilter() || getMaxTransferSize() > 0;
return isBlacklistFilter() && getMaxTransferSize() > 0;
}

public void readFromNBT(NBTTagCompound tagCompound) {
Expand Down Expand Up @@ -157,9 +157,10 @@ public void setFluidAmounts(int amount) {

@Override
public void onTranferRateChange() {
super.onTranferRateChange();
for (int i = 0; i < getSlots(); i++) {
getFluidTank(i).setCapacity(getMaxTransferRate());
var stack = getFluidStack(i);
if (stack == null) continue;
getFluidTank(i).setFluidAmount(Math.min(stack.amount, getMaxTransferRate()));
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,6 @@ public void setStackInSlot(int slot, ItemStack stack) {

@Override
public void onTranferRateChange() {
super.onTranferRateChange();
for (int i = 0; i < getSlots(); i++) {
ItemStack itemStack = getStackInSlot(i);
if (!itemStack.isEmpty()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.util.math.MathHelper;
import net.minecraftforge.common.util.Constants;

import com.cleanroommc.modularui.utils.ItemStackItemHandler;

public abstract class BaseFilterReader extends ItemStackItemHandler {

protected final ItemStack container;
protected int maxTransferRate;
protected int maxTransferRate = 1;
protected static final String KEY_ITEMS = "Items";
protected static final String BLACKLIST = "is_blacklist";
public BaseFilterReader(ItemStack container, int slots) {
Expand All @@ -25,8 +26,11 @@ public ItemStack getContainer () {
public abstract void onTranferRateChange();

public final void setBlacklistFilter(boolean blacklistFilter) {
getStackTag().setBoolean(BLACKLIST, blacklistFilter);
onTranferRateChange();
var old = getStackTag().getBoolean(BLACKLIST);
if (old != blacklistFilter) {
getStackTag().setBoolean(BLACKLIST, blacklistFilter);
onTranferRateChange();
}
}

public final boolean isBlacklistFilter() {
Expand All @@ -37,6 +41,7 @@ public final boolean isBlacklistFilter() {
}

public final void setMaxTransferRate(int transferRate) {
transferRate = MathHelper.clamp(transferRate, 1, Integer.MAX_VALUE);
if (this.maxTransferRate != transferRate) {
this.maxTransferRate = transferRate;
onTranferRateChange();
Expand All @@ -45,7 +50,7 @@ public final void setMaxTransferRate(int transferRate) {


public final int getMaxTransferRate() {
return this.isBlacklistFilter() ? 1 : this.maxTransferRate;
return this.maxTransferRate;
}

protected NBTTagCompound getStackTag() {
Expand Down

0 comments on commit 116d4a6

Please sign in to comment.