Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
da60d47
moved the tests to common, made pump tests
TarLaboratories Sep 3, 2025
d56f3d2
Merge branch '1.20.1' into tar/more-cover-tests
TarLaboratories Sep 3, 2025
0408ccb
filter cover test
TarLaboratories Sep 4, 2025
d1ca8d9
made more filter cover tests
TarLaboratories Sep 4, 2025
54557d3
made tests pass (i hope)
TarLaboratories Sep 4, 2025
adf05c8
idk
TarLaboratories Sep 4, 2025
0059ddd
tests work yay
TarLaboratories Sep 4, 2025
5c06f87
shutter cover test
TarLaboratories Sep 5, 2025
572d9d3
oops
TarLaboratories Sep 5, 2025
10c0fbb
advanced detector cover tests
TarLaboratories Sep 5, 2025
8d61052
it works (i think)
TarLaboratories Sep 5, 2025
0fcb859
yay central monitor test
TarLaboratories Sep 5, 2025
46362de
idk, fixed stuff maybe
TarLaboratories Sep 5, 2025
02563ff
Merge branch '1.20.1' into tar/more-cover-tests
TarLaboratories Sep 6, 2025
cd4aa5a
more advanced item detector tests
TarLaboratories Sep 10, 2025
0cba6ad
oops forgot setLatched
TarLaboratories Sep 10, 2025
689fb7e
idk how this is supposed to work so i'll just leave it unlatched
TarLaboratories Sep 10, 2025
d4cdca9
idk why that was there
TarLaboratories Sep 10, 2025
c3f0d2d
comment explaining template
TarLaboratories Sep 10, 2025
bd0ea6d
smth
TarLaboratories Sep 10, 2025
96b2a2e
lol why did i put 40
TarLaboratories Sep 10, 2025
394a8d7
last push before battery ded
TarLaboratories Sep 10, 2025
2c1d580
idk
TarLaboratories Sep 10, 2025
9ab9308
Merge branch '1.20.1' into tar/more-cover-tests
TarLaboratories Sep 10, 2025
4bc618b
idk
TarLaboratories Sep 10, 2025
54f8763
removed unused constant
TarLaboratories Sep 11, 2025
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
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.gregtechceu.gtceu.common.item.modules;

import com.gregtechceu.gtceu.api.gui.GuiTextures;
import com.gregtechceu.gtceu.api.item.component.IAddInformation;
import com.gregtechceu.gtceu.api.item.component.IMonitorModuleItem;
import com.gregtechceu.gtceu.api.placeholder.MultiLineComponent;
import com.gregtechceu.gtceu.api.placeholder.PlaceholderContext;
Expand All @@ -18,20 +19,25 @@
import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup;
import com.lowdragmc.lowdraglib.gui.widget.codeeditor.CodeEditorWidget;

import net.minecraft.ChatFormatting;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.ListTag;
import net.minecraft.nbt.StringTag;
import net.minecraft.nbt.Tag;
import net.minecraft.network.chat.Component;
import net.minecraft.util.Mth;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.Level;

import org.jetbrains.annotations.Nullable;

import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.function.Supplier;

public class TextModuleBehaviour implements IMonitorModuleItem {
public class TextModuleBehaviour implements IMonitorModuleItem, IAddInformation {

private void updateText(ItemStack stack, CentralMonitorMachine machine, MonitorGroup group) {
if (!stack.getOrCreateTag().contains("placeholderUUID")) {
Expand Down Expand Up @@ -142,4 +148,15 @@ public String getPlaceholderText(ItemStack stack) {
}
return formatStringLines.toString();
}

@Override
public void appendHoverText(ItemStack stack, @Nullable Level level, List<Component> tooltipComponents,
TooltipFlag isAdvanced) {
if (isAdvanced.isAdvanced()) {
tooltipComponents.add(Component.literal("Placeholder text:").withStyle(ChatFormatting.GOLD));
tooltipComponents.addAll(MultiLineComponent.literal(getPlaceholderText(stack)));
tooltipComponents.add(Component.literal("Processed text:").withStyle(ChatFormatting.GOLD));
tooltipComponents.addAll(getText(stack));
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
package com.gregtechceu.gtceu.common.cover;

import com.gregtechceu.gtceu.GTCEu;
import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity;
import com.gregtechceu.gtceu.api.machine.MetaMachine;
import com.gregtechceu.gtceu.common.cover.detector.AdvancedFluidDetectorCover;
import com.gregtechceu.gtceu.common.cover.detector.AdvancedItemDetectorCover;
import com.gregtechceu.gtceu.common.data.GTItems;
import com.gregtechceu.gtceu.gametest.util.TestUtils;

import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.gametest.framework.GameTest;
import net.minecraft.gametest.framework.GameTestHelper;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraftforge.gametest.GameTestHolder;
import net.minecraftforge.gametest.PrefixGameTestTemplate;

/**
* The "electrolyzer" template contains a creative tank with water,
* that is set to auto-output into an electrolyzer when supplied with a redstone signal
* The redstone lamp is connected to the covers that are placed in the tests in this class.
* The creative tank's rate of output is equal to the electrolyzer's rate of processing
*/
@PrefixGameTestTemplate(false)
@GameTestHolder(GTCEu.MOD_ID)
public class AdvancedDetectorCoverTest {

@GameTest(template = "electrolyzer", batch = "coverTests", required = false)
public static void BLOCKED_BY_LDLIB_WEIRDNESS_PROBABLY_testAdvancedActivityDetectorCover(GameTestHelper helper) {
helper.pullLever(new BlockPos(2, 2, 2));
MetaMachine machine = ((IMachineBlockEntity) helper.getBlockEntity(new BlockPos(1, 2, 1))).getMetaMachine();
TestUtils.placeCover(helper, machine, GTItems.COVER_ACTIVITY_DETECTOR_ADVANCED.asStack(), Direction.WEST);
helper.runAtTickTime(30, () -> helper.assertRedstoneSignal(
new BlockPos(1, 2, 1),
Direction.WEST,
signal -> signal > 0,
() -> "expected redstone signal"));
}

@GameTest(template = "electrolyzer", batch = "coverTests")
public static void testAdvancedActivityDetectorCover(GameTestHelper helper) {
helper.pullLever(new BlockPos(2, 2, 2));
MetaMachine machine = ((IMachineBlockEntity) helper.getBlockEntity(new BlockPos(1, 2, 1))).getMetaMachine();
TestUtils.placeCover(helper, machine, GTItems.COVER_ACTIVITY_DETECTOR_ADVANCED.asStack(), Direction.WEST);
helper.runAtTickTime(35, () -> helper.pullLever(2, 2, 2));
helper.runAtTickTime(40, () -> {
TestUtils.assertLampOff(helper, new BlockPos(0, 2, 1));
helper.succeed();
});
}

@GameTest(template = "electrolyzer", batch = "coverTests", attempts = 5)
public static void testAdvancedFluidDetectorCover(GameTestHelper helper) {
helper.pullLever(new BlockPos(2, 2, 2));
MetaMachine machine = ((IMachineBlockEntity) helper.getBlockEntity(new BlockPos(1, 2, 1))).getMetaMachine();
AdvancedFluidDetectorCover cover = (AdvancedFluidDetectorCover) TestUtils.placeCover(helper, machine,
GTItems.COVER_FLUID_DETECTOR_ADVANCED.asStack(), Direction.WEST);
cover.setMaxValue(100000);
cover.setMinValue(1);
cover.setLatched(true);
helper.runAtTickTime(40, () -> {
TestUtils.assertLampOff(helper, new BlockPos(0, 2, 1));
helper.succeed();
});
}

@GameTest(template = "electrolyzer", batch = "coverTests")
public static void testAdvancedItemDetectorCover(GameTestHelper helper) {
helper.pullLever(new BlockPos(2, 2, 2));
MetaMachine machine = ((IMachineBlockEntity) helper.getBlockEntity(new BlockPos(1, 2, 1))).getMetaMachine();
AdvancedItemDetectorCover cover = (AdvancedItemDetectorCover) TestUtils.placeCover(helper, machine,
GTItems.COVER_ITEM_DETECTOR_ADVANCED.asStack(), Direction.WEST);
cover.setLatched(true);
helper.runAtTickTime(40, () -> {
TestUtils.assertLampOn(helper, new BlockPos(0, 2, 1));
helper.succeed();
});
}

@GameTest(template = "electrolyzer", batch = "coverTests")
public static void testAdvancedItemDetectorCoverBelowThreshold(GameTestHelper helper) {
helper.pullLever(new BlockPos(2, 2, 2));
MetaMachine machine = ((IMachineBlockEntity) helper.getBlockEntity(new BlockPos(1, 2, 1))).getMetaMachine();
AdvancedItemDetectorCover cover = (AdvancedItemDetectorCover) TestUtils.placeCover(helper, machine,
GTItems.COVER_ITEM_DETECTOR_ADVANCED.asStack(), Direction.WEST);
cover.setMinValue(1);
cover.setMaxValue(4);
helper.runAtTickTime(40, () -> {
TestUtils.assertLampOff(helper, new BlockPos(0, 2, 1));
helper.succeed();
});
}

@GameTest(template = "electrolyzer", batch = "coverTests")
public static void testAdvancedItemDetectorCoverAboveThreshold(GameTestHelper helper) {
helper.pullLever(new BlockPos(2, 2, 2));
MetaMachine machine = ((IMachineBlockEntity) helper.getBlockEntity(new BlockPos(1, 2, 1))).getMetaMachine();
machine.getItemHandlerCap(null, false).setStackInSlot(0, new ItemStack(Items.DIRT, 5));
AdvancedItemDetectorCover cover = (AdvancedItemDetectorCover) TestUtils.placeCover(helper, machine,
GTItems.COVER_ITEM_DETECTOR_ADVANCED.asStack(), Direction.WEST);
cover.setMinValue(1);
cover.setMaxValue(4);
cover.setLatched(true);
helper.runAtTickTime(40, () -> {
TestUtils.assertLampOff(helper, new BlockPos(0, 2, 1));
helper.succeed();
});
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
package com.gregtechceu.gtceu.api.cover;
package com.gregtechceu.gtceu.common.cover;

import com.gregtechceu.gtceu.GTCEu;
import com.gregtechceu.gtceu.api.GTValues;
import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity;
import com.gregtechceu.gtceu.api.capability.recipe.IO;
import com.gregtechceu.gtceu.common.cover.ConveyorCover;
import com.gregtechceu.gtceu.common.cover.PumpCover;
import com.gregtechceu.gtceu.common.data.GTItems;
import com.gregtechceu.gtceu.common.data.GTMachines;
import com.gregtechceu.gtceu.common.machine.storage.BufferMachine;
Expand All @@ -22,7 +20,7 @@

@PrefixGameTestTemplate(false)
@GameTestHolder(GTCEu.MOD_ID)
public class ConveyorTest {
public class ConveyorCoverTest {

public static void setupCrates(GameTestHelper helper) {
helper.setBlock(new BlockPos(0, 1, 0), GTMachines.BUFFER[GTValues.LV].getBlock());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.gregtechceu.gtceu.api.cover;
package com.gregtechceu.gtceu.common.cover;

import com.gregtechceu.gtceu.GTCEu;
import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.gregtechceu.gtceu.api.cover;
package com.gregtechceu.gtceu.common.cover;

import com.gregtechceu.gtceu.GTCEu;
import com.gregtechceu.gtceu.api.capability.recipe.IO;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
package com.gregtechceu.gtceu.common.cover;

import com.gregtechceu.gtceu.GTCEu;
import com.gregtechceu.gtceu.api.GTValues;
import com.gregtechceu.gtceu.api.blockentity.MetaMachineBlockEntity;
import com.gregtechceu.gtceu.api.capability.recipe.IO;
import com.gregtechceu.gtceu.api.cover.filter.SimpleItemFilter;
import com.gregtechceu.gtceu.common.cover.data.FilterMode;
import com.gregtechceu.gtceu.common.data.GTItems;
import com.gregtechceu.gtceu.common.data.GTMachines;
import com.gregtechceu.gtceu.common.machine.storage.BufferMachine;
import com.gregtechceu.gtceu.gametest.util.TestUtils;

import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.gametest.framework.GameTest;
import net.minecraft.gametest.framework.GameTestHelper;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraftforge.gametest.GameTestHolder;
import net.minecraftforge.gametest.PrefixGameTestTemplate;

@PrefixGameTestTemplate(false)
@GameTestHolder(GTCEu.MOD_ID)
public class ItemFilterCoverTest {

private static ItemStack makeDiamondFilter() {
ItemStack stack = GTItems.ITEM_FILTER.asStack();
SimpleItemFilter filter = SimpleItemFilter.loadFilter(stack);
filter.getMatches()[0] = Items.DIAMOND.getDefaultInstance();
stack.setTag(filter.saveFilter());
return stack;
}

public static void setupCrates(GameTestHelper helper) {
helper.setBlock(new BlockPos(0, 1, 0), GTMachines.BUFFER[GTValues.LV].getBlock());
helper.setBlock(new BlockPos(0, 2, 0), GTMachines.BUFFER[GTValues.LV].getBlock());
}

// Test for seeing if conveyors pass filtered items correctly
@GameTest(template = "empty_5x5", batch = "coverTests")
public static void conveyorTransfersFilteredItemsTest(GameTestHelper helper) {
setupCrates(helper);
BufferMachine crate1 = (BufferMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 1, 0)))
.getMetaMachine();
BufferMachine crate2 = (BufferMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 2, 0)))
.getMetaMachine();
crate1.getInventory().setStackInSlot(0, new ItemStack(Items.FLINT, 8));
crate1.getInventory().setStackInSlot(1, new ItemStack(Items.DIAMOND, 16));
// LV Cover
ConveyorCover cover = (ConveyorCover) TestUtils.placeCover(helper, crate2, GTItems.CONVEYOR_MODULE_LV.asStack(),
Direction.DOWN);
// Set the cover to import from crate1 to crate2
cover.setIo(IO.IN);
// Filter to whitelist diamonds
ItemFilterCover filterCover = (ItemFilterCover) TestUtils.placeCover(helper, crate1,
makeDiamondFilter(), Direction.UP);
filterCover.setFilterMode(FilterMode.FILTER_EXTRACT);

helper.succeedWhen(() -> {
TestUtils.assertEqual(helper, crate2.getInventory().getStackInSlot(0), new ItemStack(Items.DIAMOND, 8));
TestUtils.assertEqual(helper, crate2.getInventory().getStackInSlot(1), ItemStack.EMPTY);
helper.succeed();
});
}

// Test for seeing if conveyors pass filtered items correctly
@GameTest(template = "empty_5x5", batch = "coverTests")
public static void conveyorDoesntTransferFilteredItemsTest(GameTestHelper helper) {
setupCrates(helper);
BufferMachine crate1 = (BufferMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 1, 0)))
.getMetaMachine();
BufferMachine crate2 = (BufferMachine) ((MetaMachineBlockEntity) helper.getBlockEntity(new BlockPos(0, 2, 0)))
.getMetaMachine();
crate1.getInventory().setStackInSlot(0, new ItemStack(Items.FLINT, 16));
crate1.getInventory().setStackInSlot(1, new ItemStack(Items.DIAMOND, 16));
// LV Cover
ConveyorCover cover = (ConveyorCover) TestUtils.placeCover(helper, crate2, GTItems.CONVEYOR_MODULE_LV.asStack(),
Direction.DOWN);
// Set the cover to import from crate1 to crate2
cover.setIo(IO.IN);
// Filter to whitelist diamonds
ItemFilterCover filterCover = (ItemFilterCover) TestUtils.placeCover(helper, crate1, makeDiamondFilter(),
Direction.UP);
filterCover.setFilterMode(FilterMode.FILTER_INSERT); // filter is for insert only, so should block transfer

helper.runAtTickTime(40, () -> {
TestUtils.assertEqual(helper, crate2.getInventory().getStackInSlot(0), ItemStack.EMPTY);
TestUtils.assertEqual(helper, crate2.getInventory().getStackInSlot(1), ItemStack.EMPTY);
helper.succeed();
});
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
package com.gregtechceu.gtceu.api.cover;
package com.gregtechceu.gtceu.common.cover;

import com.gregtechceu.gtceu.GTCEu;
import com.gregtechceu.gtceu.api.GTValues;
import com.gregtechceu.gtceu.common.cover.ComputerMonitorCover;
import com.gregtechceu.gtceu.common.data.GTItems;
import com.gregtechceu.gtceu.common.data.GTMachines;
import com.gregtechceu.gtceu.common.machine.electric.BatteryBufferMachine;
Expand Down
Loading
Loading