aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2023-03-04 22:00:07 +0800
committershedaniel <daniel@shedaniel.me>2023-03-04 22:00:07 +0800
commitd405e2c9489890f9f28113af3cf07259484b9827 (patch)
tree74b022a06e9d8b9a8e7a8b73d626fc57f7cb4c2b
parent70924ee791821c254f8f4c5b4e79503b0bc10c94 (diff)
downloadRoughlyEnoughItems-d405e2c9489890f9f28113af3cf07259484b9827.tar.gz
RoughlyEnoughItems-d405e2c9489890f9f28113af3cf07259484b9827.tar.bz2
RoughlyEnoughItems-d405e2c9489890f9f28113af3cf07259484b9827.zip
Initial Port to 1.19.4-pre3
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/gui/AbstractRenderer.java6
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widget.java7
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/search/method/InputMethod.java4
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/display/basic/BasicDisplay.java13
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientPlugin.java8
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/DefaultCompostingCategory.java2
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/DefaultSmithingCategory.java18
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/favorites/GameModeFavoriteEntry.java4
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/favorites/TimeFavoriteEntry.java4
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/favorites/WeatherFavoriteEntry.java4
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultCampfireDisplay.java2
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultSmithingDisplay.java47
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultStoneCuttingDisplay.java2
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/cooking/DefaultCookingDisplay.java2
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCraftingDisplay.java4
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultShapedDisplay.java3
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultShapelessDisplay.java3
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/tag/TagNodes.java6
-rw-r--r--fabric/src/main/resources/error_notifier.json4
-rw-r--r--fabric/src/main/resources/roughlyenoughitems.accessWidener12
-rw-r--r--gradle.properties16
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/addon/ConfigAddonsScreen.java28
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringAddRuleScreen.java21
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringCategoriesScreen.java21
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRuleOptionsScreen.java18
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRulesScreen.java25
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringScreen.java9
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java7
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/credits/CreditsEntryListWidget.java40
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/credits/CreditsScreen.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/error/ErrorsEntryListWidget.java45
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/error/ErrorsScreen.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/performance/PerformanceScreen.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/performance/entry/SubCategoryListEntry.java9
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java10
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java6
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/ConfigReloadingScreen.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java17
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/UncertainDisplayViewingScreen.java7
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/WarningAndErrorScreen.java37
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/ConfigButtonWidget.java8
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CraftableFilterButtonWidget.java10
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DisplayTooltipComponent.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DynamicErrorFreeEntryListWidget.java6
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/VanillaWrappedWidget.java13
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/ButtonWidget.java18
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/FillRectangleDrawableConsumer.java10
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/LabelWidget.java10
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget.java22
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/TexturedDrawableConsumer.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/CollapsedEntriesTooltip.java6
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/PaginatedEntryListWidget.java14
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/history/DisplayHistoryWidget.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/panel/FavoritesTogglePanelButton.java5
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/RegionRenderingDebugger.java5
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/transfer/MissingStacksTooltip.java8
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java16
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/DefaultClientRuntimePlugin.java10
-rwxr-xr-xsettings.gradle2
60 files changed, 286 insertions, 368 deletions
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/AbstractRenderer.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/AbstractRenderer.java
index 5adb1437c..45d9d293e 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/gui/AbstractRenderer.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/AbstractRenderer.java
@@ -29,13 +29,15 @@ import net.minecraft.client.gui.GuiComponent;
@Environment(EnvType.CLIENT)
public abstract class AbstractRenderer extends GuiComponent implements Renderer {
+ private int z;
+
@Override
public int getZ() {
- return getBlitOffset();
+ return z;
}
@Override
public void setZ(int z) {
- setBlitOffset(z);
+ this.z = z;
}
}
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widget.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widget.java
index 0efb360b6..a631ddded 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widget.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widget.java
@@ -59,6 +59,7 @@ public abstract class Widget extends AbstractContainerEventHandler implements Re
*/
protected final Font font = minecraft.font;
private static final Stack<Point> mouseStack = new Stack<>();
+ private int z;
public static Point mouse() {
return mouseStack.empty() ? PointHelper.ofMouse() : mouseStack.peek();
@@ -87,12 +88,14 @@ public abstract class Widget extends AbstractContainerEventHandler implements Re
return pushMouse(new Point(mouseVec.x(), mouseVec.y()));
}
+ @Override
public int getZ() {
- return this.getBlitOffset();
+ return this.z;
}
+ @Override
public void setZ(int z) {
- this.setBlitOffset(z);
+ this.z = z;
}
public boolean containsMouse(double mouseX, double mouseY) {
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/search/method/InputMethod.java b/api/src/main/java/me/shedaniel/rei/api/client/search/method/InputMethod.java
index 24372ed05..ef7ab26f1 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/search/method/InputMethod.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/search/method/InputMethod.java
@@ -58,8 +58,8 @@ public interface InputMethod<T> {
* @return the list of all Minecraft supported locales
*/
static List<Locale> getAllLocales() {
- return CollectionUtils.map(Minecraft.getInstance().getLanguageManager().getLanguages(), info ->
- new Locale(info.getCode(), Component.literal(info.getName())));
+ return CollectionUtils.map(Minecraft.getInstance().getLanguageManager().getLanguages().entrySet(), entry ->
+ new Locale(entry.getKey(), entry.getValue().toComponent()));
}
/**
diff --git a/api/src/main/java/me/shedaniel/rei/api/common/display/basic/BasicDisplay.java b/api/src/main/java/me/shedaniel/rei/api/common/display/basic/BasicDisplay.java
index 9c259a1ba..09f913832 100644
--- a/api/src/main/java/me/shedaniel/rei/api/common/display/basic/BasicDisplay.java
+++ b/api/src/main/java/me/shedaniel/rei/api/common/display/basic/BasicDisplay.java
@@ -23,23 +23,31 @@
package me.shedaniel.rei.api.common.display.basic;
+import dev.architectury.utils.EnvExecutor;
+import dev.architectury.utils.GameInstance;
import me.shedaniel.rei.api.common.display.Display;
import me.shedaniel.rei.api.common.display.SimpleDisplaySerializer;
import me.shedaniel.rei.api.common.entry.EntryIngredient;
import me.shedaniel.rei.api.common.util.EntryIngredients;
+import net.minecraft.core.RegistryAccess;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.Tag;
import net.minecraft.resources.ResourceLocation;
+import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;
import java.util.List;
import java.util.Optional;
+import java.util.function.Supplier;
/**
* A basic implementation of a display, consisting of a list of inputs, a list of outputs
* and a possible display location.
*/
public abstract class BasicDisplay implements Display {
+ protected static final Supplier<RegistryAccess> REGISTRY_ACCESS =
+ EnvExecutor.getEnvSpecific(() -> () -> () -> GameInstance.getClient().player.level.registryAccess(),
+ () -> () -> () -> GameInstance.getServer().registryAccess());
protected List<EntryIngredient> inputs;
protected List<EntryIngredient> outputs;
protected Optional<ResourceLocation> location;
@@ -54,6 +62,11 @@ public abstract class BasicDisplay implements Display {
this.location = location;
}
+ @ApiStatus.Experimental
+ public static RegistryAccess registryAccess() {
+ return REGISTRY_ACCESS.get();
+ }
+
/**
* {@inheritDoc}
*/
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientPlugin.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientPlugin.java
index da031d740..d1361c235 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientPlugin.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientPlugin.java
@@ -40,6 +40,7 @@ import me.shedaniel.rei.api.client.registry.entry.EntryRegistry;
import me.shedaniel.rei.api.client.registry.screen.ExclusionZones;
import me.shedaniel.rei.api.client.registry.screen.ScreenRegistry;
import me.shedaniel.rei.api.client.registry.transfer.TransferHandlerRegistry;
+import me.shedaniel.rei.api.common.display.basic.BasicDisplay;
import me.shedaniel.rei.api.common.entry.EntryIngredient;
import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.util.EntryIngredients;
@@ -128,7 +129,8 @@ public class DefaultClientPlugin implements REIClientPlugin, BuiltinClientPlugin
return;
Minecraft.getInstance().executeBlocking(() -> {
CreativeModeTabs.tryRebuildTabContents(Minecraft.getInstance().player.connection.enabledFeatures(),
- Minecraft.getInstance().options.operatorItemsTab().get() && Minecraft.getInstance().player.canUseGameMasterBlocks());
+ Minecraft.getInstance().options.operatorItemsTab().get() && Minecraft.getInstance().player.canUseGameMasterBlocks(),
+ BasicDisplay.registryAccess());
});
Multimap<Item, EntryStack<ItemStack>> items = Multimaps.newListMultimap(new Reference2ObjectOpenHashMap<>()
, ArrayList::new);
@@ -263,7 +265,9 @@ public class DefaultClientPlugin implements REIClientPlugin, BuiltinClientPlugin
registry.registerRecipeFiller(BlastingRecipe.class, RecipeType.BLASTING, DefaultBlastingDisplay::new);
registry.registerRecipeFiller(CampfireCookingRecipe.class, RecipeType.CAMPFIRE_COOKING, DefaultCampfireDisplay::new);
registry.registerRecipeFiller(StonecutterRecipe.class, RecipeType.STONECUTTING, DefaultStoneCuttingDisplay::new);
- registry.registerRecipeFiller(UpgradeRecipe.class, RecipeType.SMITHING, DefaultSmithingDisplay::new);
+ registry.registerRecipeFiller(LegacyUpgradeRecipe.class, RecipeType.SMITHING, DefaultSmithingDisplay::new);
+ registry.registerRecipeFiller(SmithingTransformRecipe.class, RecipeType.SMITHING, DefaultSmithingDisplay::new);
+ registry.registerRecipeFiller(SmithingTrimRecipe.class, RecipeType.SMITHING, DefaultSmithingDisplay::new);
registry.registerFiller(AnvilRecipe.class, DefaultAnvilDisplay::new);
registry.registerFiller(BrewingRecipe.class, DefaultBrewingDisplay::new);
registry.registerFiller(TagKey.class, tagKey -> {
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/DefaultCompostingCategory.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/DefaultCompostingCategory.java
index 6f5c942c2..c0d2a08b6 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/DefaultCompostingCategory.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/DefaultCompostingCategory.java
@@ -98,7 +98,7 @@ public class DefaultCompostingCategory implements DisplayCategory<DefaultCompost
ItemStack firstStack = (ItemStack) entryIngredient.get(0).getValue();
float chance = ComposterBlock.COMPOSTABLES.getFloat(firstStack.getItem());
if (chance > 0.0f) {
- entryIngredient = entryIngredient.map(stack -> stack.copy().tooltip(Component.translatable("text.rei.composting.chance", Mth.clamp(Mth.fastFloor(chance * 100), 0, 100)).withStyle(ChatFormatting.YELLOW)));
+ entryIngredient = entryIngredient.map(stack -> stack.copy().tooltip(Component.translatable("text.rei.composting.chance", Mth.clamp(Mth.floor(chance * 100), 0, 100)).withStyle(ChatFormatting.YELLOW)));
}
}
widgets.add(Widgets.createSlot(new Point(bounds.getCenterX() - 72 + 9 + x * 18, bounds.y + 12 + y * 18)).entries(entryIngredient).markInput());
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/DefaultSmithingCategory.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/DefaultSmithingCategory.java
index 9e9f5e72b..982221600 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/DefaultSmithingCategory.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/DefaultSmithingCategory.java
@@ -60,11 +60,19 @@ public class DefaultSmithingCategory implements DisplayCategory<DefaultSmithingD
Point startPoint = new Point(bounds.getCenterX() - 31, bounds.getCenterY() - 13);
List<Widget> widgets = Lists.newArrayList();
widgets.add(Widgets.createRecipeBase(bounds));
- widgets.add(Widgets.createArrow(new Point(startPoint.x + 27, startPoint.y + 4)));
- widgets.add(Widgets.createResultSlotBackground(new Point(startPoint.x + 61, startPoint.y + 5)));
- widgets.add(Widgets.createSlot(new Point(startPoint.x + 4 - 22, startPoint.y + 5)).entries(display.getInputEntries().get(0)).markInput());
- widgets.add(Widgets.createSlot(new Point(startPoint.x + 4, startPoint.y + 5)).entries(display.getInputEntries().get(1)).markInput());
- widgets.add(Widgets.createSlot(new Point(startPoint.x + 61, startPoint.y + 5)).entries(display.getOutputEntries().get(0)).disableBackground().markOutput());
+ boolean legacy = display.getInputEntries().size() <= 2;
+ int offsetX = legacy ? 0 : 5;
+ widgets.add(Widgets.createArrow(new Point(startPoint.x + 27 + offsetX, startPoint.y + 4)));
+ widgets.add(Widgets.createResultSlotBackground(new Point(startPoint.x + 61 + offsetX, startPoint.y + 5)));
+ if (!legacy) {
+ widgets.add(Widgets.createSlot(new Point(startPoint.x + 4 - 18 * 2 + offsetX, startPoint.y + 5)).entries(display.getInputEntries().get(0)).markInput());
+ widgets.add(Widgets.createSlot(new Point(startPoint.x + 4 - 18 + offsetX, startPoint.y + 5)).entries(display.getInputEntries().get(1)).markInput());
+ widgets.add(Widgets.createSlot(new Point(startPoint.x + 4 + offsetX, startPoint.y + 5)).entries(display.getInputEntries().get(2)).markInput());
+ } else {
+ widgets.add(Widgets.createSlot(new Point(startPoint.x + 4 - 22 + offsetX, startPoint.y + 5)).entries(display.getInputEntries().get(0)).markInput());
+ widgets.add(Widgets.createSlot(new Point(startPoint.x + 4 + offsetX, startPoint.y + 5)).entries(display.getInputEntries().get(1)).markInput());
+ }
+ widgets.add(Widgets.createSlot(new Point(startPoint.x + 61 + offsetX, startPoint.y + 5)).entries(display.getOutputEntries().get(0)).disableBackground().markOutput());
return widgets;
}
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/favorites/GameModeFavoriteEntry.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/favorites/GameModeFavoriteEntry.java
index 2a07bbdca..85accd118 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/favorites/GameModeFavoriteEntry.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/favorites/GameModeFavoriteEntry.java
@@ -198,9 +198,9 @@ public class GameModeFavoriteEntry extends FavoriteEntry {
@Override
public DataResult<GameModeFavoriteEntry> fromArgs(Object... args) {
- if (args.length == 0) return DataResult.error("Cannot create GameModeFavoriteEntry from empty args!");
+ if (args.length == 0) return DataResult.error(() -> "Cannot create GameModeFavoriteEntry from empty args!");
if (!(args[0] instanceof GameType type))
- return DataResult.error("Creation of GameModeFavoriteEntry from args expected GameType as the first argument!");
+ return DataResult.error(() -> "Creation of GameModeFavoriteEntry from args expected GameType as the first argument!");
return DataResult.success(new GameModeFavoriteEntry(type), Lifecycle.stable());
}
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/favorites/TimeFavoriteEntry.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/favorites/TimeFavoriteEntry.java
index 33d95a52d..69f5c9aa9 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/favorites/TimeFavoriteEntry.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/favorites/TimeFavoriteEntry.java
@@ -232,9 +232,9 @@ public class TimeFavoriteEntry extends FavoriteEntry {
@Override
public DataResult<TimeFavoriteEntry> fromArgs(Object... args) {
- if (args.length == 0) return DataResult.error("Cannot create GameModeFavoriteEntry from empty args!");
+ if (args.length == 0) return DataResult.error(() -> "Cannot create GameModeFavoriteEntry from empty args!");
if (!(args[0] instanceof Time type))
- return DataResult.error("Creation of GameModeFavoriteEntry from args expected Time as the first argument!");
+ return DataResult.error(() -> "Creation of GameModeFavoriteEntry from args expected Time as the first argument!");
return DataResult.success(new TimeFavoriteEntry(type), Lifecycle.stable());
}
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/favorites/WeatherFavoriteEntry.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/favorites/WeatherFavoriteEntry.java
index 652a498ca..ce5fac685 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/favorites/WeatherFavoriteEntry.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/favorites/WeatherFavoriteEntry.java
@@ -206,9 +206,9 @@ public class WeatherFavoriteEntry extends FavoriteEntry {
@Override
public DataResult<WeatherFavoriteEntry> fromArgs(Object... args) {
- if (args.length == 0) return DataResult.error("Cannot create WeatherFavoriteEntry from empty args!");
+ if (args.length == 0) return DataResult.error(() -> "Cannot create WeatherFavoriteEntry from empty args!");
if (!(args[0] instanceof Weather weather))
- return DataResult.error("Creation of WeatherFavoriteEntry from args expected Weather as the first argument!");
+ return DataResult.error(() -> "Creation of WeatherFavoriteEntry from args expect