Skip to content

Commit 56a5ead

Browse files
committed
Workaround: Create Ponder incompatibility with fluid pushing optimization
#622 Fabricators-of-Create/Create#1718
1 parent a41e165 commit 56a5ead

File tree

1 file changed

+11
-7
lines changed
  • fabric/src/main/java/net/caffeinemc/mods/lithium/fabric/mixin/entity/collisions/fluid

1 file changed

+11
-7
lines changed

fabric/src/main/java/net/caffeinemc/mods/lithium/fabric/mixin/entity/collisions/fluid/EntityMixin.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,26 @@
11
package net.caffeinemc.mods.lithium.fabric.mixin.entity.collisions.fluid;
22

3+
import com.llamalad7.mixinextras.sugar.Local;
34
import it.unimi.dsi.fastutil.objects.Object2DoubleMap;
45
import net.caffeinemc.mods.lithium.common.block.BlockCountingSection;
56
import net.caffeinemc.mods.lithium.common.block.BlockStateFlags;
67
import net.caffeinemc.mods.lithium.common.block.TrackedBlockStatePredicate;
78
import net.caffeinemc.mods.lithium.common.entity.FluidCachingEntity;
89
import net.caffeinemc.mods.lithium.common.util.Pos;
10+
import net.minecraft.client.multiplayer.ClientLevel;
11+
import net.minecraft.server.level.ServerLevel;
912
import net.minecraft.tags.FluidTags;
1013
import net.minecraft.tags.TagKey;
1114
import net.minecraft.world.entity.Entity;
1215
import net.minecraft.world.level.Level;
1316
import net.minecraft.world.level.chunk.ChunkAccess;
1417
import net.minecraft.world.level.chunk.LevelChunkSection;
1518
import net.minecraft.world.level.material.Fluid;
16-
import net.minecraft.world.phys.AABB;
1719
import org.spongepowered.asm.mixin.Mixin;
1820
import org.spongepowered.asm.mixin.Shadow;
1921
import org.spongepowered.asm.mixin.injection.At;
2022
import org.spongepowered.asm.mixin.injection.Inject;
2123
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
22-
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
2324

2425
@Mixin(Entity.class)
2526
public abstract class EntityMixin implements FluidCachingEntity {
@@ -34,13 +35,16 @@ public abstract class EntityMixin implements FluidCachingEntity {
3435
method = "updateFluidHeightAndDoFluidPushing",
3536
at = @At(
3637
value = "INVOKE",
37-
target = "Lnet/minecraft/world/entity/Entity;isPushedByFluid()Z",
38-
shift = At.Shift.BEFORE
38+
target = "Lnet/minecraft/world/entity/Entity;isPushedByFluid()Z"
3939
),
40-
cancellable = true,
41-
locals = LocalCapture.CAPTURE_FAILHARD
40+
cancellable = true
4241
)
43-
public void tryShortcutFluidPushing(TagKey<Fluid> tag, double speed, CallbackInfoReturnable<Boolean> cir, AABB box, int x1, int x2, int y1, int y2, int z1, int z2, double zero) {
42+
public void tryShortcutFluidPushing(TagKey<Fluid> tag, double speed, CallbackInfoReturnable<Boolean> cir, @Local(ordinal = 0) int x1, @Local(ordinal = 1) int x2, @Local(ordinal = 2) int y1, @Local(ordinal = 3) int y2, @Local(ordinal = 4) int z1, @Local(ordinal = 5) int z2) {
43+
if (!(this.level instanceof ClientLevel || this.level instanceof ServerLevel)) {
44+
//Create compatibility: Directly accessing the chunk sections is not compatible with Create Ponder level, which subclass neither client nor server levels
45+
return;
46+
}
47+
4448
TrackedBlockStatePredicate blockStateFlag;
4549
if (tag == FluidTags.WATER) {
4650
blockStateFlag = BlockStateFlags.WATER;

0 commit comments

Comments
 (0)