feat: trialSpawnerCD

This commit is contained in:
zly2006 committed 2025-09-02 09:17:44 +08:00
1 parent 74e9ccd687
commit caa65d1ba7
10 files changed
+75 -15

No files matched your search

@@ -65,4 +65,7 @@ public class SLSCarpetSettings {
@Rule(categories = {SLSA, RuleCategory.FEATURE})
public static int netherPortalSize = 21;
@Rule(categories = {SLSA, RuleCategory.FEATURE})
public static int trialSpawnerCD = -1;
}
@@ -0,0 +1,27 @@
package com.github.zly2006.carpetslsaddition.mixin.block;
import com.github.zly2006.carpetslsaddition.SLSCarpetSettings;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import net.minecraft.block.spawner.TrialSpawnerConfig;
import net.minecraft.block.spawner.TrialSpawnerData;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
@Mixin(TrialSpawnerData.class)
public class MixinTrialSpawnerData {
@WrapOperation(
method = "resetAndClearMobs",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/block/spawner/TrialSpawnerConfig;getCooldownLength()J"
)
)
private long hackCooldown(TrialSpawnerConfig instance, Operation<Integer> original) {
if (SLSCarpetSettings.trialSpawnerCD < 0) {
return original.call(instance);
} else {
return SLSCarpetSettings.trialSpawnerCD;
}
}
}
@@ -0,0 +1,28 @@
package com.github.zly2006.carpetslsaddition.mixin.block;
import com.github.zly2006.carpetslsaddition.SLSCarpetSettings;
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import net.minecraft.block.enums.TrialSpawnerState;
import net.minecraft.block.spawner.TrialSpawnerLogic;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
@Mixin(TrialSpawnerState.class)
public class MixinTrialSpawnerState {
@WrapOperation(
method = "tick",
at = @At(
value = "INVOKE",
ordinal = 0,
target = "Lnet/minecraft/block/spawner/TrialSpawnerLogic;getCooldownLength()I"
)
)
private int tick(TrialSpawnerLogic instance, Operation<Integer> original) {
if (SLSCarpetSettings.trialSpawnerCD < 0) {
return original.call(instance);
} else {
return SLSCarpetSettings.trialSpawnerCD;
}
}
}