package net.minecraft.util.datafix.fixes; import com.mojang.datafixers.DSL; import com.mojang.datafixers.DataFix; import com.mojang.datafixers.OpticFinder; import com.mojang.datafixers.TypeRewriteRule; import com.mojang.datafixers.Typed; import com.mojang.datafixers.schemas.Schema; import com.mojang.datafixers.types.Type; import com.mojang.datafixers.util.Either; import com.mojang.datafixers.util.Pair; import com.mojang.datafixers.util.Unit; import com.mojang.serialization.Dynamic; import java.util.Optional; public class EmptyItemInHotbarFix extends DataFix { public EmptyItemInHotbarFix(Schema p_327820_) { super(p_327820_, false); } @Override public TypeRewriteRule makeRule() { OpticFinder, Unit>, Pair, Dynamic>>>> opticfinder = DSL.typeFinder( (Type, Unit>, Pair, Dynamic>>>>)this.getInputSchema().getType(References.ITEM_STACK) ); return this.fixTypeEverywhereTyped( "EmptyItemInHotbarFix", this.getInputSchema().getType(References.HOTBAR), p_332820_ -> p_332820_.update(opticfinder, p_336352_ -> p_336352_.mapSecond(p_333926_ -> { Optional optional = p_333926_.getFirst().left().map(Pair::getSecond); Dynamic dynamic = p_333926_.getSecond().getSecond(); boolean flag = optional.isEmpty() || optional.get().equals("minecraft:air"); boolean flag1 = dynamic.get("Count").asInt(0) <= 0; return !flag && !flag1 ? p_333926_ : Pair.of(Either.right(Unit.INSTANCE), Pair.of(Either.right(Unit.INSTANCE), dynamic.emptyMap())); })) ); } }