package net.minecraft; import java.util.Collection; import java.util.Iterator; import java.util.function.Function; import java.util.function.Supplier; import javax.annotation.Nullable; public class Optionull { @Nullable public static R map(@Nullable T pValue, Function pMapper) { return (R)(pValue == null ? null : pMapper.apply(pValue)); } public static R mapOrDefault(@Nullable T pValue, Function pMapper, R pDefaultValue) { return (R)(pValue == null ? pDefaultValue : pMapper.apply(pValue)); } public static R mapOrElse(@Nullable T pValue, Function pMapper, Supplier pSupplier) { return (R)(pValue == null ? pSupplier.get() : pMapper.apply(pValue)); } @Nullable public static T first(Collection pCollection) { Iterator iterator = pCollection.iterator(); return (T)(iterator.hasNext() ? iterator.next() : null); } public static T firstOrDefault(Collection pCollection, T pDefaultValue) { Iterator iterator = pCollection.iterator(); return (T)(iterator.hasNext() ? iterator.next() : pDefaultValue); } public static T firstOrElse(Collection pCollection, Supplier pSupplier) { Iterator iterator = pCollection.iterator(); return (T)(iterator.hasNext() ? iterator.next() : pSupplier.get()); } public static boolean isNullOrEmpty(@Nullable T[] pArray) { return pArray == null || pArray.length == 0; } public static boolean isNullOrEmpty(@Nullable boolean[] pArray) { return pArray == null || pArray.length == 0; } public static boolean isNullOrEmpty(@Nullable byte[] pArray) { return pArray == null || pArray.length == 0; } public static boolean isNullOrEmpty(@Nullable char[] pArray) { return pArray == null || pArray.length == 0; } public static boolean isNullOrEmpty(@Nullable short[] pArray) { return pArray == null || pArray.length == 0; } public static boolean isNullOrEmpty(@Nullable int[] pArray) { return pArray == null || pArray.length == 0; } public static boolean isNullOrEmpty(@Nullable long[] pArray) { return pArray == null || pArray.length == 0; } public static boolean isNullOrEmpty(@Nullable float[] pArray) { return pArray == null || pArray.length == 0; } public static boolean isNullOrEmpty(@Nullable double[] pArray) { return pArray == null || pArray.length == 0; } }