51 lines
1.4 KiB
Java
51 lines
1.4 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) {
|
|
switch (getTimeSpeed()) {
|
|
case FAST: {
|
|
return value * 4L;
|
|
}
|
|
case VERY_FAST: {
|
|
return value * 8L;
|
|
}
|
|
default:
|
|
case NORMAL: {
|
|
return value;
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void setTimeSpeed(TimeDilaterItem.TimeSpeed timeSpeed) {
|
|
((TimeDilaterItem.DilatedWorld) properties).setTimeSpeed(timeSpeed);
|
|
}
|
|
|
|
@Override
|
|
public TimeDilaterItem.TimeSpeed getTimeSpeed() {
|
|
return ((TimeDilaterItem.DilatedWorld) properties).getTimeSpeed();
|
|
}
|
|
}
|