Unicopia/src/main/java/com/minelittlepony/unicopia/mixin/MixinItem.java
Sollace ad7a7d84c0
New food system:
- Foods fill for different amounts for different races
- Certain foods can no longer be eaten by certain races
- Added food categories for candy, rocks, desserts
- Moved everything to datapacks
2023-12-03 02:39:55 +00:00

40 lines
1.3 KiB
Java

package com.minelittlepony.unicopia.mixin;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.function.Supplier;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Mutable;
import org.spongepowered.asm.mixin.gen.Accessor;
import com.google.common.base.Suppliers;
import com.minelittlepony.unicopia.diet.DietView;
import com.minelittlepony.unicopia.entity.ItemImpl;
import com.minelittlepony.unicopia.entity.ItemImpl.GroundTickCallback;
import com.minelittlepony.unicopia.item.ItemDuck;
import net.minecraft.item.FoodComponent;
import net.minecraft.item.Item;
@Mixin(Item.class)
abstract class MixinItem implements ItemDuck, DietView.Holder {
private final List<ItemImpl.GroundTickCallback> tickCallbacks = new ArrayList<>();
private final Supplier<Optional<FoodComponent>> originalFoodComponent = Suppliers.memoize(() -> {
return Optional.ofNullable(((Item)(Object)this).getFoodComponent());
});
@Override
public List<GroundTickCallback> getCallbacks() {
return tickCallbacks;
}
@Override
@Mutable
@Accessor("foodComponent")
public abstract void setFoodComponent(FoodComponent food);
@Override
public Optional<FoodComponent> getOriginalFoodComponent() {
return originalFoodComponent.get();
}
}