This repository has been archived on 2023-11-26. You can view files and clone it, but cannot push or open issues or pull requests.
RelicCraft/src/main/java/com/thebrokenrail/reliccraft/mixin/MixinWorld.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();
}
}