Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion src/main/java/gregtech/api/util/GTTransferUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,14 @@ public static boolean transferExactFluidStack(@NotNull IFluidHandler sourceHandl
}

public static void moveInventoryItems(IItemHandler sourceInventory, IItemHandler targetInventory) {
moveInventoryItems(sourceInventory, targetInventory, stack -> true);
}

public static void moveInventoryItems(IItemHandler sourceInventory, IItemHandler targetInventory,
Predicate<ItemStack> predicate) {
for (int srcIndex = 0; srcIndex < sourceInventory.getSlots(); srcIndex++) {
ItemStack sourceStack = sourceInventory.extractItem(srcIndex, Integer.MAX_VALUE, true);
if (sourceStack.isEmpty()) {
if (sourceStack.isEmpty() || !predicate.test(sourceStack)) {
continue;
}
ItemStack remainder = insertItem(targetInventory, sourceStack, true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public final class EntryTypes<T extends VirtualEntry> {

private static final Map<ResourceLocation, EntryTypes<?>> TYPES_MAP = new Object2ObjectOpenHashMap<>();
public static final EntryTypes<VirtualTank> ENDER_FLUID = addEntryType(gregtechId("ender_fluid"), VirtualTank::new);
// ENDER_ITEM("ender_item", null),
public static final EntryTypes<VirtualChest> ENDER_ITEM = addEntryType(gregtechId("ender_item"), VirtualChest::new);
// ENDER_ENERGY("ender_energy", null),
// ENDER_REDSTONE("ender_redstone", null);
private final ResourceLocation location;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package gregtech.api.util.virtualregistry;

import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.ItemStackHandler;

import org.jetbrains.annotations.NotNull;

public class VirtualChest extends VirtualEntry implements IItemHandler {

public static final int DEFAULT_SIZE = 9;

private final ItemStackHandler handler;

public VirtualChest() {
this(DEFAULT_SIZE);
}

public VirtualChest(int size) {
this.handler = new ItemStackHandler(size);
}

@Override
public EntryTypes<VirtualChest> getType() {
return EntryTypes.ENDER_ITEM;
}

@Override
public int getSlots() {
return handler.getSlots();
}

@Override
public @NotNull ItemStack getStackInSlot(int slot) {
return handler.getStackInSlot(slot);
}

@Override
public @NotNull ItemStack insertItem(int slot, @NotNull ItemStack stack, boolean simulate) {
return handler.insertItem(slot, stack, simulate);
}

@Override
public @NotNull ItemStack extractItem(int slot, int amount, boolean simulate) {
return handler.extractItem(slot, amount, simulate);
}

@Override
public int getSlotLimit(int slot) {
return handler.getSlotLimit(slot);
}

@Override
public NBTTagCompound serializeNBT() {
NBTTagCompound tag = super.serializeNBT();
tag.setTag("handler", this.handler.serializeNBT());
return tag;
}

@Override
public void deserializeNBT(NBTTagCompound nbt) {
this.handler.deserializeNBT(nbt.getCompoundTag("handler"));
super.deserializeNBT(nbt);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,8 @@ public class Textures {
"cover/overlay_item_voiding_advanced");
public static final SimpleOverlayRenderer ENDER_FLUID_LINK = new SimpleOverlayRenderer(
"cover/overlay_ender_fluid_link");
public static final SimpleOverlayRenderer ENDER_ITEM_LINK = new SimpleOverlayRenderer(
"cover/overlay_ender_item_link");
public static final SimpleOverlayRenderer STORAGE = new SimpleOverlayRenderer("cover/overlay_storage");
public static final SimpleOverlayRenderer PIPE_OUT_OVERLAY = new SimpleOverlayRenderer(
"overlay/machine/overlay_pipe_out");
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/gregtech/common/covers/CoverBehaviors.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import gregtech.client.renderer.texture.Textures;
import gregtech.common.covers.detector.*;
import gregtech.common.covers.ender.CoverEnderFluidLink;
import gregtech.common.covers.ender.CoverEnderItemLink;
import gregtech.common.items.MetaItems;
import gregtech.common.items.behaviors.CoverDigitalInterfaceWirelessPlaceBehaviour;

Expand Down Expand Up @@ -118,6 +119,7 @@ public static void init() {
CoverDetectorMaintenance::new);
registerBehavior(gregtechId("infinite_water"), MetaItems.COVER_INFINITE_WATER, CoverInfiniteWater::new);
registerBehavior(gregtechId("ender_fluid_link"), MetaItems.COVER_ENDER_FLUID_LINK, CoverEnderFluidLink::new);
registerBehavior(gregtechId("ender_item_link"), MetaItems.COVER_ENDER_ITEM_LINK, CoverEnderItemLink::new);
registerBehavior(gregtechId("cover.digital"), MetaItems.COVER_DIGITAL_INTERFACE, CoverDigitalInterface::new);

// Custom cover behaviour
Expand Down
7 changes: 3 additions & 4 deletions src/main/java/gregtech/common/covers/CoverConveyor.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@
import codechicken.lib.vec.Matrix4;
import com.cleanroommc.modularui.api.drawable.IDrawable;
import com.cleanroommc.modularui.drawable.DynamicDrawable;
import com.cleanroommc.modularui.factory.GuiData;
import com.cleanroommc.modularui.factory.SidedPosGuiData;
import com.cleanroommc.modularui.screen.ModularPanel;
import com.cleanroommc.modularui.utils.Color;
Expand Down Expand Up @@ -509,11 +508,11 @@ public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncMan
getItemFilterContainer().setMaxTransferSize(getMaxStackSize());

return panel.child(CoverWithUI.createTitleRow(getPickItem()))
.child(createUI(guiData, guiSyncManager))
.child(createUI(panel, guiSyncManager))
.bindPlayerInventory();
}

protected ParentWidget<Flow> createUI(GuiData data, PanelSyncManager guiSyncManager) {
protected ParentWidget<Flow> createUI(ModularPanel panel, PanelSyncManager guiSyncManager) {
var column = Flow.column().top(24).margin(7, 0)
.widthRel(1f).coverChildrenHeight();

Expand Down Expand Up @@ -563,7 +562,7 @@ protected ParentWidget<Flow> createUI(GuiData data, PanelSyncManager guiSyncMana
.onUpdateListener(w -> w.overlay(createAdjustOverlay(true)))));

if (createFilterRow())
column.child(getItemFilterContainer().initUI(data, guiSyncManager));
column.child(getItemFilterContainer().initUI(panel, guiSyncManager));

if (createManualIOModeRow())
column.child(new EnumRowBuilder<>(ManualImportExportMode.class)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import net.minecraftforge.fml.relauncher.SideOnly;

import com.cleanroommc.modularui.api.drawable.IKey;
import com.cleanroommc.modularui.factory.GuiData;
import com.cleanroommc.modularui.factory.SidedPosGuiData;
import com.cleanroommc.modularui.screen.ModularPanel;
import com.cleanroommc.modularui.utils.Color;
Expand Down Expand Up @@ -248,7 +247,7 @@ public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncMan
}

@Override
protected ParentWidget<?> createUI(GuiData data, PanelSyncManager syncManager) {
protected ParentWidget<?> createUI(ModularPanel panel, PanelSyncManager syncManager) {
var transferMode = new EnumSyncValue<>(TransferMode.class, this::getTransferMode, this::setTransferMode);
transferMode.updateCacheFromSource(true);
syncManager.syncValue("transfer_mode", transferMode);
Expand All @@ -260,7 +259,7 @@ protected ParentWidget<?> createUI(GuiData data, PanelSyncManager syncManager) {
var filterTransferSize = new StringSyncValue(this::getStringTransferRate, this::setStringTransferRate);
filterTransferSize.updateCacheFromSource(true);

return super.createUI(data, syncManager)
return super.createUI(panel, syncManager)
.child(new EnumRowBuilder<>(TransferMode.class)
.value(transferMode)
.lang("cover.generic.transfer_mode")
Expand Down
5 changes: 2 additions & 3 deletions src/main/java/gregtech/common/covers/CoverFluidVoiding.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
import codechicken.lib.vec.Cuboid6;
import codechicken.lib.vec.Matrix4;
import com.cleanroommc.modularui.api.drawable.IKey;
import com.cleanroommc.modularui.factory.GuiData;
import com.cleanroommc.modularui.factory.SidedPosGuiData;
import com.cleanroommc.modularui.screen.ModularPanel;
import com.cleanroommc.modularui.utils.Color;
Expand Down Expand Up @@ -77,10 +76,10 @@ public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncMan
}

@Override
protected ParentWidget<?> createUI(GuiData data, PanelSyncManager syncManager) {
protected ParentWidget<?> createUI(ModularPanel panel, PanelSyncManager syncManager) {
var isWorking = new BooleanSyncValue(this::isWorkingEnabled, this::setWorkingEnabled);

return super.createUI(data, syncManager)
return super.createUI(panel, syncManager)
.child(Flow.row().height(18).widthRel(1f)
.marginBottom(2)
.child(new ToggleButton()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import codechicken.lib.vec.Cuboid6;
import codechicken.lib.vec.Matrix4;
import com.cleanroommc.modularui.api.drawable.IKey;
import com.cleanroommc.modularui.factory.GuiData;
import com.cleanroommc.modularui.factory.SidedPosGuiData;
import com.cleanroommc.modularui.screen.ModularPanel;
import com.cleanroommc.modularui.utils.Color;
Expand Down Expand Up @@ -106,7 +105,7 @@ public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncMan
}

@Override
protected ParentWidget<?> createUI(GuiData data, PanelSyncManager syncManager) {
protected ParentWidget<?> createUI(ModularPanel panel, PanelSyncManager syncManager) {
var voidingMode = new EnumSyncValue<>(VoidingMode.class, this::getVoidingMode, this::setVoidingMode);
syncManager.syncValue("voiding_mode", voidingMode);

Expand All @@ -119,7 +118,7 @@ protected ParentWidget<?> createUI(GuiData data, PanelSyncManager syncManager) {
transferTextField.setEnabled(this.fluidFilterContainer.showGlobalTransferLimitSlider() &&
this.voidingMode == VoidingMode.VOID_OVERFLOW);

return super.createUI(data, syncManager)
return super.createUI(panel, syncManager)
.child(new EnumRowBuilder<>(VoidingMode.class)
.value(voidingMode)
.lang("cover.voiding.voiding_mode")
Expand Down
5 changes: 2 additions & 3 deletions src/main/java/gregtech/common/covers/CoverItemVoiding.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import codechicken.lib.vec.Cuboid6;
import codechicken.lib.vec.Matrix4;
import com.cleanroommc.modularui.api.drawable.IKey;
import com.cleanroommc.modularui.factory.GuiData;
import com.cleanroommc.modularui.factory.SidedPosGuiData;
import com.cleanroommc.modularui.screen.ModularPanel;
import com.cleanroommc.modularui.utils.Color;
Expand Down Expand Up @@ -78,10 +77,10 @@ public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncMan
}

@Override
protected ParentWidget<Flow> createUI(GuiData data, PanelSyncManager guiSyncManager) {
protected ParentWidget<Flow> createUI(ModularPanel panel, PanelSyncManager guiSyncManager) {
var isWorking = new BooleanSyncValue(this::isWorkingEnabled, this::setWorkingEnabled);

return super.createUI(data, guiSyncManager)
return super.createUI(panel, guiSyncManager)
.child(Flow.row().height(18).widthRel(1f)
.marginBottom(2)
.child(new ToggleButton()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
import codechicken.lib.render.pipeline.IVertexOperation;
import codechicken.lib.vec.Cuboid6;
import codechicken.lib.vec.Matrix4;
import com.cleanroommc.modularui.factory.GuiData;
import com.cleanroommc.modularui.factory.SidedPosGuiData;
import com.cleanroommc.modularui.screen.ModularPanel;
import com.cleanroommc.modularui.utils.Color;
Expand Down Expand Up @@ -94,7 +93,7 @@ public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncMan
}

@Override
protected ParentWidget<Flow> createUI(GuiData data, PanelSyncManager guiSyncManager) {
protected ParentWidget<Flow> createUI(ModularPanel panel, PanelSyncManager guiSyncManager) {
var voidingMode = new EnumSyncValue<>(VoidingMode.class, this::getVoidingMode, this::setVoidingMode);
guiSyncManager.syncValue("voiding_mode", voidingMode);

Expand All @@ -106,7 +105,7 @@ protected ParentWidget<Flow> createUI(GuiData data, PanelSyncManager guiSyncMana
transferTextField.setEnabled(this.itemFilterContainer.showGlobalTransferLimitSlider() &&
this.voidingMode == VoidingMode.VOID_OVERFLOW);

return super.createUI(data, guiSyncManager)
return super.createUI(panel, guiSyncManager)
.child(new EnumRowBuilder<>(VoidingMode.class)
.value(voidingMode)
.lang("cover.voiding.voiding_mode")
Expand Down
9 changes: 4 additions & 5 deletions src/main/java/gregtech/common/covers/CoverPump.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@
import codechicken.lib.vec.Matrix4;
import com.cleanroommc.modularui.api.drawable.IDrawable;
import com.cleanroommc.modularui.drawable.DynamicDrawable;
import com.cleanroommc.modularui.factory.GuiData;
import com.cleanroommc.modularui.factory.SidedPosGuiData;
import com.cleanroommc.modularui.screen.ModularPanel;
import com.cleanroommc.modularui.utils.Color;
Expand Down Expand Up @@ -195,11 +194,11 @@ public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncMan
getFluidFilterContainer().setMaxTransferSize(getMaxTransferRate());

return panel.child(CoverWithUI.createTitleRow(getPickItem()))
.child(createUI(guiData, guiSyncManager))
.child(createUI(panel, guiSyncManager))
.bindPlayerInventory();
}

protected ParentWidget<?> createUI(GuiData data, PanelSyncManager syncManager) {
protected ParentWidget<?> createUI(ModularPanel panel, PanelSyncManager syncManager) {
var manualIOmode = new EnumSyncValue<>(ManualImportExportMode.class,
this::getManualImportExportMode, this::setManualImportExportMode);

Expand Down Expand Up @@ -244,7 +243,7 @@ protected ParentWidget<?> createUI(GuiData data, PanelSyncManager syncManager) {
.onUpdateListener(w -> w.overlay(createAdjustOverlay(true)))));

if (createFilterRow())
column.child(getFluidFilterContainer().initUI(data, syncManager));
column.child(getFluidFilterContainer().initUI(panel, syncManager));

if (createManualIOModeRow())
column.child(new EnumRowBuilder<>(ManualImportExportMode.class)
Expand All @@ -263,7 +262,7 @@ protected ParentWidget<?> createUI(GuiData data, PanelSyncManager syncManager) {
if (createPumpModeRow())
column.child(new EnumRowBuilder<>(PumpMode.class)
.value(pumpMode)
.lang("cover.pump.mode")
.lang("cover.generic.io")
.overlay(GTGuiTextures.CONVEYOR_MODE_OVERLAY) // todo pump mode overlays
.build());

Expand Down
5 changes: 2 additions & 3 deletions src/main/java/gregtech/common/covers/CoverRoboticArm.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
import codechicken.lib.render.pipeline.IVertexOperation;
import codechicken.lib.vec.Cuboid6;
import codechicken.lib.vec.Matrix4;
import com.cleanroommc.modularui.factory.GuiData;
import com.cleanroommc.modularui.factory.SidedPosGuiData;
import com.cleanroommc.modularui.screen.ModularPanel;
import com.cleanroommc.modularui.utils.Color;
Expand Down Expand Up @@ -197,7 +196,7 @@ public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncMan
}

@Override
protected ParentWidget<Flow> createUI(GuiData data, PanelSyncManager guiSyncManager) {
protected ParentWidget<Flow> createUI(ModularPanel panel, PanelSyncManager guiSyncManager) {
EnumSyncValue<TransferMode> transferMode = new EnumSyncValue<>(TransferMode.class, this::getTransferMode,
this::setTransferMode);
guiSyncManager.syncValue("transfer_mode", transferMode);
Expand All @@ -207,7 +206,7 @@ protected ParentWidget<Flow> createUI(GuiData data, PanelSyncManager guiSyncMana
s -> this.itemFilterContainer.setTransferSize(Integer.parseInt(s)));
filterTransferSize.updateCacheFromSource(true);

return super.createUI(data, guiSyncManager)
return super.createUI(panel, guiSyncManager)
.child(new EnumRowBuilder<>(TransferMode.class)
.value(transferMode)
.lang("cover.generic.transfer_mode")
Expand Down
Loading