package com.thebrokenrail.reliccraft.mixin; import com.mojang.datafixers.DataFixer; import com.thebrokenrail.reliccraft.item.TimeDilaterItem; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.level.LevelProperties; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @SuppressWarnings("unused") @Mixin(LevelProperties.class) public class MixinLevelProperties implements TimeDilaterItem.DilatedWorld { @Unique private TimeDilaterItem.TimeSpeed timeSpeed = TimeDilaterItem.TimeSpeed.NORMAL; @Inject(at = @At("RETURN"), method = "(Lnet/minecraft/nbt/CompoundTag;Lcom/mojang/datafixers/DataFixer;ILnet/minecraft/nbt/CompoundTag;)V") public void init(CompoundTag compoundTag, DataFixer dataFixer, int i, CompoundTag compoundTag2, CallbackInfo info) { try { timeSpeed = TimeDilaterItem.TimeSpeed.valueOf(compoundTag.getString("RelicCraftTimeSpeed")); } catch (IllegalArgumentException ignored) { } } @Inject(at = @At("RETURN"), method = "updateProperties") public void updateProperties(CompoundTag levelTag, CompoundTag playerTag, CallbackInfo ci) { levelTag.putString("RelicCraftTimeSpeed", timeSpeed.name()); } @Override public TimeDilaterItem.TimeSpeed getTimeSpeed() { return timeSpeed; } @Override public void setTimeSpeed(TimeDilaterItem.TimeSpeed timeSpeed) { this.timeSpeed = timeSpeed; } }