Skip to content

Commit

Permalink
Fix FluidBlockMixin, CustomFluid And FluidGroup
Browse files Browse the repository at this point in the history
  • Loading branch information
FirstMegaGame4 committed Aug 30, 2023
1 parent c417d09 commit 1a8da29
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import net.minecraft.item.Item;
import net.minecraft.item.Items;
import net.minecraft.state.StateManager;
import net.minecraft.state.property.Properties;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction;
import net.minecraft.world.BlockView;
Expand Down Expand Up @@ -38,7 +37,7 @@ protected boolean canBeReplacedWith(FluidState state, BlockView world, BlockPos

@Override
protected BlockState toBlockState(FluidState state) {
return this.getGroup().getBlock().getDefaultState().with(Properties.LEVEL_15, FlowableFluid.getBlockStateLevel(state));
return this.getGroup().getBlock().getDefaultState().with(FluidBlock.LEVEL, FlowableFluid.getBlockStateLevel(state));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import net.minecraft.item.Item;
import net.minecraft.item.Items;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;
import org.jetbrains.annotations.Nullable;

public class FluidGroup {
Expand All @@ -31,7 +30,7 @@ public FluidGroup(CustomFluid still, CustomFluid flowing, AbstractBlock.Settings
this.still,
blockSettings,
this.still.getDefaultState().with(FlowableFluid.FALLING, Boolean.FALSE),
value -> this.flowing.getDefaultState().with(FlowableFluid.LEVEL, value == 8 ? 8 : 8 - value).with(FlowableFluid.FALLING, Boolean.TRUE)
value -> this.flowing.getDefaultState().with(FlowableFluid.LEVEL, value == 8 ? 8 : 8 - value).with(FlowableFluid.FALLING, value == 8 ? Boolean.TRUE : Boolean.FALSE)
);
this.bucket = new CustomBucketItem(this.still, itemSettings);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import com.llamalad7.mixinextras.sugar.Local;
import com.mmodding.mmodding_lib.ducks.FlowableFluidDuckInterface;
import com.mmodding.mmodding_lib.library.fluids.FluidExtensions;
import com.mmodding.mmodding_lib.library.fluids.collisions.FluidCollisionHandler;
Expand All @@ -21,20 +22,16 @@
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;

@Mixin(FluidBlock.class)
public class FluidBlockMixin {

@Unique
private final ThreadLocal<Integer> stateIndex = ThreadLocal.withInitial(() -> 0);

@Shadow
@Final
protected FlowableFluid fluid;

@WrapOperation(method = "<init>", at = @At(value = "INVOKE", target = "Lnet/minecraft/fluid/FlowableFluid;getStill(Z)Lnet/minecraft/fluid/FluidState;", ordinal = 0))
private FluidState first(FlowableFluid fluid, boolean falling, Operation<FluidState> original) {
private FluidState initFirst(FlowableFluid fluid, boolean falling, Operation<FluidState> original) {
if (this.getDuckedFlowableFluid(fluid).mmodding_lib$hasStillState()) {
return this.getDuckedFlowableFluid(fluid).mmodding_lib$getStillState();
}
Expand All @@ -43,23 +40,18 @@ private FluidState first(FlowableFluid fluid, boolean falling, Operation<FluidSt
}
}

@Inject(method = "<init>", at = @At(value = "INVOKE", target = "Ljava/util/List;add(Ljava/lang/Object;)Z", ordinal = 1), locals = LocalCapture.CAPTURE_FAILEXCEPTION)
private void hook(FlowableFluid fluid, AbstractBlock.Settings settings, CallbackInfo ci, int i) {
this.stateIndex.set(i);
}

@WrapOperation(method = "<init>", at = @At(value = "INVOKE", target = "Lnet/minecraft/fluid/FlowableFluid;getFlowing(IZ)Lnet/minecraft/fluid/FluidState;", ordinal = 0))
private FluidState second(FlowableFluid fluid, int level, boolean falling, Operation<FluidState> original) {
private FluidState initSecond(FlowableFluid fluid, int level, boolean falling, Operation<FluidState> original, @Local int i) {
if (this.getDuckedFlowableFluid(fluid).mmodding_lib$hasFlowingStates()) {
return this.getDuckedFlowableFluid(fluid).mmodding_lib$getFlowingStates().apply(this.stateIndex.get());
return this.getDuckedFlowableFluid(fluid).mmodding_lib$getFlowingStates().apply(i);
}
else {
return original.call(fluid, level, falling);
}
}

@WrapOperation(method = "<init>", at = @At(value = "INVOKE", target = "Lnet/minecraft/fluid/FlowableFluid;getFlowing(IZ)Lnet/minecraft/fluid/FluidState;", ordinal = 1))
private FluidState third(FlowableFluid fluid, int level, boolean falling, Operation<FluidState> original) {
private FluidState initThird(FlowableFluid fluid, int level, boolean falling, Operation<FluidState> original) {
if (this.getDuckedFlowableFluid(fluid).mmodding_lib$hasStillState()) {
return this.getDuckedFlowableFluid(fluid).mmodding_lib$getFlowingStates().apply(8);
}
Expand Down

0 comments on commit 1a8da29

Please sign in to comment.