feat: trialSpawnerCD
This commit is contained in:
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;
|
||||
}
|
||||
+27
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
+28
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user