diff options
4 files changed, 24 insertions, 0 deletions
diff --git a/api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryDefinition.java b/api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryDefinition.java index 97ac1ae92..98d5f9c2f 100644 --- a/api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryDefinition.java +++ b/api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryDefinition.java @@ -170,6 +170,15 @@ public interface EntryDefinition<T> { return (EntryDefinition<O>) this; } + /** + * Returns whether this entry definition accepts {@code null} values. + * + * @return whether this entry definition accepts {@code null} values + */ + default boolean acceptsNull() { + return true; + } + default void fillCrashReport(CrashReport report, CrashReportCategory category, EntryStack<T> entry) { category.setDetail("Entry definition class name", () -> getClass().getCanonicalName()); } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/TypedEntryStack.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/TypedEntryStack.java index 7112af245..5d159d79b 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/TypedEntryStack.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/TypedEntryStack.java @@ -34,6 +34,11 @@ public class TypedEntryStack<T> extends AbstractEntryStack<T> { public TypedEntryStack(EntryDefinition<T> definition, T value) { this.definition = definition; this.value = value; + if (!definition.acceptsNull()) { + if (value == null) { + throw new IllegalArgumentException("Value cannot be null for " + definition.getType().getId()); + } + } } @Override diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java index 5bdfec4c1..ce7061d3e 100644 --- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java +++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java @@ -180,6 +180,11 @@ public class FluidEntryDefinition implements EntryDefinition<FluidStack>, EntryS } @Override + public boolean acceptsNull() { + return false; + } + + @Override public CompoundTag save(EntryStack<FluidStack> entry, FluidStack value) { return value.write(new CompoundTag()); } diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java index bb53ba44b..7728a55a2 100644 --- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java +++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java @@ -170,6 +170,11 @@ public class ItemEntryDefinition implements EntryDefinition<ItemStack>, EntrySer } @Override + public boolean acceptsNull() { + return false; + } + + @Override public CompoundTag save(EntryStack<ItemStack> entry, ItemStack value) { return value.save(new CompoundTag()); } |
