TheBrokenRail
918d0bc9b9
All checks were successful
RelicCraft/pipeline/head This commit looks good
Allow Dilating Random Tick Speed
40 lines
1.2 KiB
Java
40 lines
1.2 KiB
Java
package com.thebrokenrail.reliccraft.mixin;
|
|
|
|
import com.thebrokenrail.reliccraft.item.TimeDilaterItem;
|
|
import net.minecraft.world.World;
|
|
import net.minecraft.world.level.LevelProperties;
|
|
import org.spongepowered.asm.mixin.Final;
|
|
import org.spongepowered.asm.mixin.Mixin;
|
|
import org.spongepowered.asm.mixin.Shadow;
|
|
import org.spongepowered.asm.mixin.injection.Constant;
|
|
import org.spongepowered.asm.mixin.injection.ModifyConstant;
|
|
|
|
@SuppressWarnings("unused")
|
|
@Mixin(World.class)
|
|
public abstract class MixinWorld implements TimeDilaterItem.DilatedWorld {
|
|
@Shadow
|
|
public abstract boolean isClient();
|
|
|
|
@Shadow
|
|
@Final
|
|
protected LevelProperties properties;
|
|
|
|
@Shadow
|
|
public abstract long getTime();
|
|
|
|
@ModifyConstant(constant = @Constant(longValue = 1L), method = "tickTime")
|
|
public long tickTime(long value) {
|
|
return value * TimeDilaterItem.getTimeDilationFactor(getTimeSpeed());
|
|
}
|
|
|
|
@Override
|
|
public void setTimeSpeed(TimeDilaterItem.TimeSpeed timeSpeed) {
|
|
((TimeDilaterItem.DilatedWorld) properties).setTimeSpeed(timeSpeed);
|
|
}
|
|
|
|
@Override
|
|
public TimeDilaterItem.TimeSpeed getTimeSpeed() {
|
|
return ((TimeDilaterItem.DilatedWorld) properties).getTimeSpeed();
|
|
}
|
|
}
|