package net.minecraft.server;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonObject;
import com.google.gson.JsonSerializationContext;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class LootItemFunctionSetDamage extends LootItemFunctionConditional {
private static final Logger LOGGER = LogManager.getLogger();
private final LootValueBounds c;
private LootItemFunctionSetDamage(LootItemCondition[] alootitemcondition, LootValueBounds lootvaluebounds) {
super(alootitemcondition);
this.c = lootvaluebounds;
}
@Override
public ItemStack a(ItemStack itemstack, LootTableInfo loottableinfo) {
if (itemstack.e()) {
float f = 1.0F - this.c.b(loottableinfo.a());
itemstack.setDamage(MathHelper.d(f * (float) itemstack.h()));
} else {
LootItemFunctionSetDamage.LOGGER.warn("Couldn't set damage of loot item {}", itemstack);
}
return itemstack;
}
public static LootItemFunctionConditional.a<?> a(LootValueBounds lootvaluebounds) {
return a((alootitemcondition) -> {
return new LootItemFunctionSetDamage(alootitemcondition, lootvaluebounds);
});
}
public static class a extends LootItemFunctionConditional.c<LootItemFunctionSetDamage> {
protected a() {
super(new MinecraftKey("set_damage"), LootItemFunctionSetDamage.class);
}
public void a(JsonObject jsonobject, LootItemFunctionSetDamage lootitemfunctionsetdamage, JsonSerializationContext jsonserializationcontext) {
super.a(jsonobject, (LootItemFunctionConditional) lootitemfunctionsetdamage, jsonserializationcontext);
jsonobject.add("damage", jsonserializationcontext.serialize(lootitemfunctionsetdamage.c));
}
@Override
public LootItemFunctionSetDamage b(JsonObject jsonobject, JsonDeserializationContext jsondeserializationcontext, LootItemCondition[] alootitemcondition) {
return new LootItemFunctionSetDamage(alootitemcondition, (LootValueBounds) ChatDeserializer.a(jsonobject, "damage", jsondeserializationcontext, LootValueBounds.class));
}
}
}