Skip to content

Commit

Permalink
1.1.4 fixes (after dev build 01) (#1006)
Browse files Browse the repository at this point in the history
* fix: filter covers no longer reset their filter mode on opening UI

* fix: don't expose creative tank slot as a capability

* feat: add infinite source/sink capability to creative tanks

* fix: use correct underlying fluid/item transfers in pumps & conveyors

* chore: changelog

* fix: don't expose creative chest slot as a capability & add cap proxy

* chore: oops.

* fix: crash when defining a custom coil type
  • Loading branch information
mikerooni authored Mar 24, 2024
1 parent 6f3124a commit e8cd646
Show file tree
Hide file tree
Showing 9 changed files with 122 additions and 7 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,10 @@ Version: 1.1.4
- fix large miner crashes
- fix fluid drilling rig EU/t usage and add extra tooltips
- fix distinct bus mode not working with ghost circuits
- fix item filter mode resetting every time the UI is opened
- fix pumps inserting the same fluid into more than one slot
- fix pump/conveyor covers and other machines being able to extract from a creative tank's internal slot
- fix startup crash when creating custom coils using KJS

### CHANGES:
- updated Russian and Chinese translations
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.gregtechceu.gtceu.api.transfer.fluid;

import com.lowdragmc.lowdraglib.side.fluid.FluidStack;
import com.lowdragmc.lowdraglib.side.fluid.IFluidTransfer;
import net.minecraft.MethodsReturnNonnullByDefault;
import org.jetbrains.annotations.NotNull;

import javax.annotation.ParametersAreNonnullByDefault;

@MethodsReturnNonnullByDefault
@ParametersAreNonnullByDefault
public class InfiniteFluidTransferProxy extends FluidTransferDelegate {
private final boolean infiniteSource;
private final boolean infiniteSink;

public InfiniteFluidTransferProxy(IFluidTransfer delegate, boolean infiniteSource, boolean infiniteSink) {
super(delegate);

this.infiniteSource = infiniteSource;
this.infiniteSink = infiniteSink;
}

@Override
public long fill(int tank, FluidStack resource, boolean simulate, boolean notifyChanges) {
if (infiniteSink)
return resource.getAmount();

return super.fill(tank, resource, simulate, notifyChanges);
}

@NotNull
@Override
public FluidStack drain(int tank, FluidStack resource, boolean simulate, boolean notifyChanges) {
if (infiniteSource)
return resource.copy();

return super.drain(tank, resource, simulate, notifyChanges);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package com.gregtechceu.gtceu.api.transfer.item;

import com.lowdragmc.lowdraglib.side.item.IItemTransfer;
import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.world.item.ItemStack;
import org.jetbrains.annotations.NotNull;

import javax.annotation.ParametersAreNonnullByDefault;

@MethodsReturnNonnullByDefault
@ParametersAreNonnullByDefault
public class InfiniteItemTransferProxy extends ItemTransferDelegate {
private final boolean infiniteSource;
private final boolean infiniteSink;

public InfiniteItemTransferProxy(IItemTransfer delegate, boolean infiniteSource, boolean infiniteSink) {
super(delegate);

this.infiniteSource = infiniteSource;
this.infiniteSink = infiniteSink;
}

@NotNull
@Override
public ItemStack insertItem(int slot, @NotNull ItemStack stack, boolean simulate, boolean notifyChanges) {
if (infiniteSink)
return ItemStack.EMPTY;

return super.insertItem(slot, stack, simulate, notifyChanges);
}

@NotNull
@Override
public ItemStack extractItem(int slot, int amount, boolean simulate, boolean notifyChanges) {
if (infiniteSource)
return delegate.getStackInSlot(slot).copyWithCount(amount);

return super.extractItem(slot, amount, simulate, notifyChanges);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ protected boolean isSubscriptionActive() {
}

protected @Nullable IItemTransfer getOwnItemTransfer() {
return ItemTransferHelper.getItemTransfer(coverHolder.getLevel(), coverHolder.getPos(), attachedSide);
return coverHolder.getItemTransferCap(attachedSide, false);
}

protected @Nullable IItemTransfer getAdjacentItemTransfer() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public Widget createUIWidget() {
final var group = new WidgetGroup(0, 0, 176, 85);
group.addWidget(new LabelWidget(7, 5, attachItem.getDescriptionId()));
group.addWidget(new EnumSelectorWidget<>(7, 61, 18, 18,
ItemFilterMode.VALUES, ItemFilterMode.FILTER_INSERT, this::setFilterMode));
ItemFilterMode.VALUES, filterMode, this::setFilterMode));
group.addWidget(getItemFilter().openConfigurator(30, 25));
return group;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ protected boolean isSubscriptionActive() {
}

protected @Nullable IFluidTransfer getOwnFluidTransfer() {
return FluidTransferHelper.getFluidTransfer(coverHolder.getLevel(), coverHolder.getPos(), attachedSide);
return coverHolder.getFluidTransferCap(attachedSide, false);
}

protected @Nullable IFluidTransfer getAdjacentFluidTransfer() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import com.gregtechceu.gtceu.api.gui.GuiTextures;
import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity;
import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler;
import com.gregtechceu.gtceu.api.transfer.fluid.InfiniteFluidTransferProxy;
import com.gregtechceu.gtceu.api.transfer.item.InfiniteItemTransferProxy;
import com.gregtechceu.gtceu.utils.GTTransferUtils;
import com.lowdragmc.lowdraglib.gui.texture.GuiTextureGroup;
import com.lowdragmc.lowdraglib.gui.texture.ResourceBorderTexture;
Expand All @@ -25,6 +27,7 @@
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.BlockHitResult;
import org.jetbrains.annotations.Nullable;

public class CreativeChestMachine extends QuantumChestMachine {
public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(CreativeChestMachine.class, QuantumChestMachine.MANAGED_FIELD_HOLDER);
Expand All @@ -34,13 +37,26 @@ public class CreativeChestMachine extends QuantumChestMachine {
@Persisted @DropSaved
private int ticksPerCycle = 1;

private final InfiniteItemTransferProxy capabilityTransferProxy;

public CreativeChestMachine(IMachineBlockEntity holder) {
super(holder, GTValues.MAX, -1);

capabilityTransferProxy = new InfiniteItemTransferProxy(cache, true, true);
}

@Nullable
@Override
public IItemTransfer getItemTransferCap(@Nullable Direction side, boolean useCoverCapability) {
if (side == null || (useCoverCapability && coverContainer.hasCover(side)))
return super.getItemTransferCap(side, useCoverCapability);

return capabilityTransferProxy;
}

@Override
protected NotifiableItemStackHandler createCacheItemHandler(Object... args) {
return new NotifiableItemStackHandler(this, 1, IO.BOTH) {
return new NotifiableItemStackHandler(this, 1, IO.BOTH, IO.NONE) {
@Override
public int getSlotLimit(int slot) {
return 1;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
import com.gregtechceu.gtceu.api.gui.GuiTextures;
import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity;
import com.gregtechceu.gtceu.api.machine.MetaMachine;
import com.gregtechceu.gtceu.api.machine.trait.ICapabilityTrait;
import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank;
import com.gregtechceu.gtceu.api.transfer.fluid.InfiniteFluidTransferProxy;
import com.lowdragmc.lowdraglib.gui.texture.GuiTextureGroup;
import com.lowdragmc.lowdraglib.gui.texture.ResourceBorderTexture;
import com.lowdragmc.lowdraglib.gui.texture.TextTexture;
Expand All @@ -16,6 +18,10 @@
import com.lowdragmc.lowdraglib.syncdata.annotation.DropSaved;
import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted;
import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder;
import net.minecraft.core.Direction;
import net.minecraftforge.fluids.capability.IFluidHandler;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

public class CreativeTankMachine extends QuantumTankMachine {
public static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(CreativeTankMachine.class, QuantumTankMachine.MANAGED_FIELD_HOLDER);
Expand All @@ -25,14 +31,25 @@ public class CreativeTankMachine extends QuantumTankMachine {
@Persisted @DropSaved
private int ticksPerCycle = 1;

private final InfiniteFluidTransferProxy capabilityTransferProxy;

public CreativeTankMachine(IMachineBlockEntity holder) {
super(holder, GTValues.MAX, -1);

capabilityTransferProxy = new InfiniteFluidTransferProxy(cache, true, true);
}

@Nullable
@Override
public IFluidTransfer getFluidTransferCap(@Nullable Direction side, boolean useCoverCapability) {
if (side == null || (useCoverCapability && coverContainer.hasCover(side)))
return super.getFluidTransferCap(side, useCoverCapability);

return capabilityTransferProxy;
}

protected NotifiableFluidTank createCacheFluidHandler(Object... args) {
return new NotifiableFluidTank(this, 1, 1000, IO.BOTH);
return new NotifiableFluidTank(this, 1, 1000, IO.BOTH, IO.NONE);
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import dev.latvian.mods.kubejs.generator.AssetJsonGenerator;
import lombok.Setter;
import lombok.experimental.Accessors;
import net.minecraft.client.renderer.texture.MissingTextureAtlasSprite;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.block.Block;

Expand All @@ -21,7 +20,7 @@ public class CoilBlockBuilder extends BlockBuilder {
public transient int temperature = 0, level = 0, energyDiscount = 1, tier = 0;
public transient Material material = GTMaterials.Air;
@Setter
public transient ResourceLocation texture = MissingTextureAtlasSprite.getLocation();
public transient ResourceLocation texture = new ResourceLocation("missingno");

public CoilBlockBuilder(ResourceLocation i) {
super(i);
Expand Down

0 comments on commit e8cd646

Please sign in to comment.