package net.baraban4ik.leveling.mixin;
import net.baraban4ik.leveling.mixin.interfaces.StatsContainer;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.nbt.NbtCompound;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import java.util.ArrayList;
import java.util.List;
@Mixin(PlayerEntity.class)
public abstract class MixinEntityPlayer implements StatsContainer{
private float LEVEL = 0;
private float LEVEL_PROCENT = 0;
@Override
public float getStats(String var) {
return switch (var) {
case "LEVEl" -> LEVEL;
case "LEVEL_PROCENT" -> LEVEL_PROCENT;
default -> LEVEL;
};
}
@Override
public void setStats(String var, float value) {
switch (var) {
case "LEVEl" -> LEVEL = value;
case "LEVEL_PROCENT" -> LEVEL_PROCENT = value;
}
}
@Inject(method = "writeCustomDataToNbt", at = @At("HEAD"))
public void injectWriteCustomDataToNbt(NbtCompound nbt, CallbackInfo ci) {
nbt.putFloat("leveling.stats.level", LEVEL);
nbt.putFloat("leveling.stats.level_procent", LEVEL_PROCENT);
}
@Inject(method = "readCustomDataFromNbt", at = @At("HEAD"))
public void injectReadCustomDataFromNbt(NbtCompound nbt, CallbackInfo ci) {
LEVEL = nbt.getInt("leveling.stats.level");
LEVEL_PROCENT = nbt.getInt("leveling.stats.level_procent");
}
}