aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-06-16 23:06:03 +0800
committershedaniel <daniel@shedaniel.me>2022-06-16 23:24:09 +0800
commita2a8f81802a053eacb1a8074f436d7028d36227b (patch)
treefcfb5e20f1c1a582757737668a25df9d4db381da
parent0a217855a4fc3535337fbd98fe338ccb2db8ecc1 (diff)
downloadRoughlyEnoughItems-a2a8f81802a053eacb1a8074f436d7028d36227b.tar.gz
RoughlyEnoughItems-a2a8f81802a053eacb1a8074f436d7028d36227b.tar.bz2
RoughlyEnoughItems-a2a8f81802a053eacb1a8074f436d7028d36227b.zip
Add acceptsNull() in EntryDefinition
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryDefinition.java9
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/common/entry/TypedEntryStack.java5
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java5
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java5
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 0ddc12cd7..4241ccb1b 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
@@ -179,6 +179,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 3afa5ae64..b049ee893 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
@@ -169,6 +169,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());
}