From adda134e2bcc8145ccf65538a3f56023b5729aab Mon Sep 17 00:00:00 2001 From: Sakro Antes Date: Sun, 17 May 2026 14:44:48 +0300 Subject: [PATCH] fix: fixed voxel entity collision for air currents --- .../content/kinetics/fan/AirCurrent.java | 6 +-- .../gametest/tests/TestMisc.java | 35 ++++++++++++++++++ .../misc/fan_air_current_passthrough.nbt | Bin 0 -> 667 bytes 3 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 src/main/resources/data/create/structure/gametest/misc/fan_air_current_passthrough.nbt diff --git a/src/main/java/com/simibubi/create/content/kinetics/fan/AirCurrent.java b/src/main/java/com/simibubi/create/content/kinetics/fan/AirCurrent.java index 9daab21982..2b3af4633e 100644 --- a/src/main/java/com/simibubi/create/content/kinetics/fan/AirCurrent.java +++ b/src/main/java/com/simibubi/create/content/kinetics/fan/AirCurrent.java @@ -257,10 +257,10 @@ public static float getFlowLimit(Level world, BlockPos start, float max, Directi } private static final double[][] DEPTH_TEST_COORDINATES = { - {0.25, 0.25}, - {0.25, 0.75}, + {0.2499, 0.2499}, + {0.2499, 0.75}, {0.5, 0.5}, - {0.75, 0.25}, + {0.75, 0.2499}, {0.75, 0.75} }; diff --git a/src/main/java/com/simibubi/create/infrastructure/gametest/tests/TestMisc.java b/src/main/java/com/simibubi/create/infrastructure/gametest/tests/TestMisc.java index 7c531165be..7d1c41b5a1 100644 --- a/src/main/java/com/simibubi/create/infrastructure/gametest/tests/TestMisc.java +++ b/src/main/java/com/simibubi/create/infrastructure/gametest/tests/TestMisc.java @@ -4,6 +4,8 @@ import com.simibubi.create.AllBlockEntityTypes; import com.simibubi.create.AllDataComponents; +import com.simibubi.create.content.kinetics.fan.AirCurrent; +import com.simibubi.create.content.kinetics.fan.EncasedFanBlockEntity; import com.simibubi.create.content.redstone.thresholdSwitch.ThresholdSwitchBlockEntity; import com.simibubi.create.content.schematics.SchematicExport; import com.simibubi.create.content.schematics.SchematicItem; @@ -14,6 +16,7 @@ import com.simibubi.create.infrastructure.gametest.GameTestGroup; import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; import net.minecraft.gametest.framework.GameTest; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundSource; @@ -115,4 +118,36 @@ public static void netheriteBacktank(CreateGameTestHelper helper) { helper.assertEntityPresent(EntityType.ZOMBIE, lava); }); } + + @GameTest(template = "fan_air_current_passthrough") + public static void fanAirCurrentPassthrough(CreateGameTestHelper helper) { + BlockPos fan = new BlockPos(1, 2, 1); + + helper.succeedWhen(() -> { + EncasedFanBlockEntity fanEntity = helper.getBlockEntity( + AllBlockEntityTypes.ENCASED_FAN.get(), fan); + + AirCurrent airCurrent = fanEntity.getAirCurrent(); + + if (airCurrent.maxDistance <= 2) { + helper.fail("Air current stopped at the 1st drill block (facing up Y+)"); + } + + if (airCurrent.maxDistance <= 4) { + helper.fail("Air current stopped at the 2nd drill block (facing east X+)"); + } + + if (airCurrent.maxDistance <= 6) { + helper.fail("Air current stopped at the 3rd drill block (facing west X-)"); + } + + if (airCurrent.maxDistance <= 8) { + helper.fail("Air current stopped at the 4th drill block (facing down Y-)"); + } + + if (airCurrent.maxDistance >= 10) { + helper.fail("Air current should be blocked by drill facing towards it (Z-), but it wasn't, maxDistance: " + airCurrent.maxDistance); + } + }); + } } diff --git a/src/main/resources/data/create/structure/gametest/misc/fan_air_current_passthrough.nbt b/src/main/resources/data/create/structure/gametest/misc/fan_air_current_passthrough.nbt new file mode 100644 index 0000000000000000000000000000000000000000..93738bf458132ab5c853e11e55b85eccbe4cd78a GIT binary patch literal 667 zcmb2|=3oGW|9hvM&%5j(a7_K*WQ#&=0gjJ6F%OO`oU22vRp6OF^{$Ir%*8NjvF@?4BFEl%pAiJ?I)6!rb^J8m+MrL6v zgIxAyj}N%;`CM;&X=$*LdGk?&wV{ji(=7ZuAKIw4eV!t5E;tD%hkwOIbK^P7j}*)k zI$Y_+^IX#qJLgQQfAs_L<7zDh0ZPlN#ixER|NU)sTuepuvS~S6AN=!PSl%mm@U2d7h^Y%oo6NEG z{h4*^tmGH-nBA7!54L5Sr`z5sc>C<%g?m79-ldH`%S9}uny;>o7IC~FzMO;qm5W!( zPoFvbZzsWK|bv!nei4@djYJQZ2ETl28f isy4&x&$dMW*=O*GW9qq-M00E2dd5HOXQi!q7#ILtbVB|B literal 0 HcmV?d00001