package joshie.harvest.core.registry; import joshie.harvest.api.core.ISizeableRegistry; import joshie.harvest.api.core.ISizedProvider; import joshie.harvest.api.core.Size; import joshie.harvest.core.util.annotations.HFApiImplementation; import joshie.harvest.core.util.holders.ItemStackHolder; import net.minecraft.item.ItemStack; import java.util.HashMap; @HFApiImplementation @SuppressWarnings("unused") public class SizeableRegistry implements ISizeableRegistry { public static final SizeableRegistry INSTANCE = new SizeableRegistry(); private final HashMap<ItemStackHolder, Size> providers = new HashMap<>(); private SizeableRegistry() {} @Override public void registerStackAsSize(ItemStack stack, Size size) { providers.put(ItemStackHolder.of(stack.getItem(), stack.getItemDamage()), size); } @Override public Size getSize(ItemStack stack) { if (stack.getItem() instanceof ISizedProvider) { return ((ISizedProvider)stack.getItem()).getSize(stack); } return providers.get(ItemStackHolder.of(stack)); } }