25 lines
1.2 KiB
Java
25 lines
1.2 KiB
Java
package carpet.mixins;
|
|
|
|
import carpet.CarpetSettings;
|
|
import net.minecraft.util.RandomSource;
|
|
import net.minecraft.world.level.levelgen.feature.HugeFungusConfiguration;
|
|
import net.minecraft.world.level.levelgen.feature.HugeFungusFeature;
|
|
import org.spongepowered.asm.mixin.Mixin;
|
|
import org.spongepowered.asm.mixin.injection.At;
|
|
import org.spongepowered.asm.mixin.injection.ModifyArgs;
|
|
import org.spongepowered.asm.mixin.injection.invoke.arg.Args;
|
|
|
|
import static carpet.CarpetSettings.FungusGrowthMode.*;
|
|
|
|
@Mixin(HugeFungusFeature.class)
|
|
public class HugeFungusFeatureMixin {
|
|
@ModifyArgs(method = "place", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/levelgen/feature/HugeFungusFeature;placeStem(Lnet/minecraft/world/level/WorldGenLevel;Lnet/minecraft/util/RandomSource;Lnet/minecraft/world/level/levelgen/feature/HugeFungusConfiguration;Lnet/minecraft/core/BlockPos;IZ)V"))
|
|
private void mixin(Args args) {
|
|
boolean natural = !((HugeFungusConfiguration) args.get(2)).planted;
|
|
args.set(5, natural && ((boolean) args.get(5)) ||
|
|
!natural && (CarpetSettings.thickFungusGrowth == ALL ||
|
|
CarpetSettings.thickFungusGrowth == RANDOM && ((RandomSource) args.get(1)).nextFloat() < 0.06F)
|
|
);
|
|
}
|
|
}
|