From ddb48e2032d1986709cad973067693eec3118504 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sat, 26 Oct 2024 16:55:52 +0800 Subject: Update to 1.21.2 (Please read Primer) https://hackmd.io/@shedaniel/rei17_primer --- .../rei/api/client/config/ConfigObject.java | 1 - .../client/config/entry/EntryStackProvider.java | 21 +- .../client/favorites/CompoundFavoriteRenderer.java | 5 +- .../rei/api/client/gui/SimpleDisplayRenderer.java | 3 +- .../api/client/gui/config/RecipeBorderType.java | 34 +- .../rei/api/client/gui/widgets/Button.java | 9 - .../rei/api/client/gui/widgets/Panel.java | 21 +- .../rei/api/client/gui/widgets/Tooltip.java | 6 + .../rei/api/client/gui/widgets/Widget.java | 11 +- .../rei/api/client/gui/widgets/Widgets.java | 11 +- .../client/gui/widgets/utils/PanelTextures.java | 48 ++ .../display/DisplayGeneratorsRegistry.java | 71 +++ .../display/DisplayPredicatesRegistry.java | 63 +++ .../client/registry/display/DisplayRegistry.java | 398 +---------------- .../display/reason/DisplayAdditionReason.java | 12 +- .../client/registry/transfer/TransferHandler.java | 5 +- .../shedaniel/rei/api/common/display/Display.java | 46 +- .../rei/api/common/display/DisplaySerializer.java | 47 +- .../common/display/DisplaySerializerRegistry.java | 65 +-- .../common/display/SimpleDisplaySerializer.java | 77 ---- .../api/common/display/SimpleGridMenuDisplay.java | 26 +- .../rei/api/common/display/basic/BasicDisplay.java | 245 ----------- .../rei/api/common/entry/EntryIngredient.java | 54 +-- .../rei/api/common/entry/EntrySerializer.java | 35 +- .../shedaniel/rei/api/common/entry/EntryStack.java | 91 ++-- .../entry/comparison/EntryComparatorRegistry.java | 4 +- .../entry/comparison/FluidComparatorRegistry.java | 2 +- .../entry/comparison/ItemComparatorRegistry.java | 2 +- .../settings/EntrySettingsAdapterRegistry.java | 4 +- .../api/common/entry/type/EntryTypeRegistry.java | 6 +- .../rei/api/common/fluid/FluidSupportProvider.java | 4 +- .../rei/api/common/plugins/PluginManager.java | 11 +- .../rei/api/common/plugins/PluginView.java | 6 +- .../rei/api/common/plugins/REICommonPlugin.java | 111 +++++ .../rei/api/common/plugins/REIPlugin.java | 64 +-- .../rei/api/common/plugins/REIServerPlugin.java | 38 -- .../api/common/registry/RecipeManagerContext.java | 69 --- .../common/registry/display/DisplayConsumer.java | 424 ++++++++++++++++++ .../registry/display/DisplayRegistryCommon.java | 68 +++ .../registry/display/ServerDisplayRegistry.java | 36 ++ .../rei/api/common/transfer/ItemRecipeFinder.java | 102 +++++ .../rei/api/common/transfer/RecipeFinder.java | 483 ++++++++++++--------- .../api/common/transfer/RecipeFinderPopulator.java | 34 -- .../rei/api/common/transfer/info/MenuInfo.java | 221 ---------- .../api/common/transfer/info/MenuInfoContext.java | 40 -- .../api/common/transfer/info/MenuInfoProvider.java | 49 --- .../api/common/transfer/info/MenuInfoRegistry.java | 59 --- .../transfer/info/MenuSerializationContext.java | 68 --- .../transfer/info/clean/InputCleanHandler.java | 65 --- .../common/transfer/info/simple/DumpHandler.java | 60 --- .../info/simple/RecipeBookGridMenuInfo.java | 75 ---- .../transfer/info/simple/SimpleGridMenuInfo.java | 75 ---- .../info/simple/SimpleMenuInfoProvider.java | 74 ---- .../info/simple/SimplePlayerInventoryMenuInfo.java | 118 ----- .../transfer/info/stack/ContainerSlotAccessor.java | 67 --- .../common/transfer/info/stack/SlotAccessor.java | 6 - .../transfer/info/stack/SlotAccessorRegistry.java | 6 +- .../rei/api/common/util/CollectionUtils.java | 11 - .../rei/api/common/util/EntryIngredients.java | 182 +++++--- .../shedaniel/rei/api/common/util/EntryStacks.java | 17 + .../me/shedaniel/rei/impl/ClientInternals.java | 3 - .../main/java/me/shedaniel/rei/impl/Internals.java | 14 +- 62 files changed, 1563 insertions(+), 2520 deletions(-) create mode 100644 api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/utils/PanelTextures.java create mode 100644 api/src/main/java/me/shedaniel/rei/api/client/registry/display/DisplayGeneratorsRegistry.java create mode 100644 api/src/main/java/me/shedaniel/rei/api/client/registry/display/DisplayPredicatesRegistry.java delete mode 100644 api/src/main/java/me/shedaniel/rei/api/common/display/SimpleDisplaySerializer.java create mode 100644 api/src/main/java/me/shedaniel/rei/api/common/plugins/REICommonPlugin.java delete mode 100644 api/src/main/java/me/shedaniel/rei/api/common/plugins/REIServerPlugin.java delete mode 100644 api/src/main/java/me/shedaniel/rei/api/common/registry/RecipeManagerContext.java create mode 100644 api/src/main/java/me/shedaniel/rei/api/common/registry/display/DisplayConsumer.java create mode 100644 api/src/main/java/me/shedaniel/rei/api/common/registry/display/DisplayRegistryCommon.java create mode 100644 api/src/main/java/me/shedaniel/rei/api/common/registry/display/ServerDisplayRegistry.java create mode 100644 api/src/main/java/me/shedaniel/rei/api/common/transfer/ItemRecipeFinder.java delete mode 100644 api/src/main/java/me/shedaniel/rei/api/common/transfer/RecipeFinderPopulator.java delete mode 100644 api/src/main/java/me/shedaniel/rei/api/common/transfer/info/MenuInfo.java delete mode 100644 api/src/main/java/me/shedaniel/rei/api/common/transfer/info/MenuInfoContext.java delete mode 100644 api/src/main/java/me/shedaniel/rei/api/common/transfer/info/MenuInfoProvider.java delete mode 100644 api/src/main/java/me/shedaniel/rei/api/common/transfer/info/MenuInfoRegistry.java delete mode 100644 api/src/main/java/me/shedaniel/rei/api/common/transfer/info/MenuSerializationContext.java delete mode 100644 api/src/main/java/me/shedaniel/rei/api/common/transfer/info/clean/InputCleanHandler.java delete mode 100644 api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/DumpHandler.java delete mode 100644 api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/RecipeBookGridMenuInfo.java delete mode 100644 api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/SimpleGridMenuInfo.java delete mode 100644 api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/SimpleMenuInfoProvider.java delete mode 100644 api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/SimplePlayerInventoryMenuInfo.java delete mode 100644 api/src/main/java/me/shedaniel/rei/api/common/transfer/info/stack/ContainerSlotAccessor.java (limited to 'api') diff --git a/api/src/main/java/me/shedaniel/rei/api/client/config/ConfigObject.java b/api/src/main/java/me/shedaniel/rei/api/client/config/ConfigObject.java index a15816f24..11fbe4a37 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/config/ConfigObject.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/config/ConfigObject.java @@ -267,7 +267,6 @@ public interface ConfigObject { RecipeBorderType getRecipeBorderType(); - boolean isCompositeScrollBarPermanent(); boolean doesRegisterRecipesInAnotherThread(); diff --git a/api/src/main/java/me/shedaniel/rei/api/client/config/entry/EntryStackProvider.java b/api/src/main/java/me/shedaniel/rei/api/client/config/entry/EntryStackProvider.java index c103a2d94..ac15be536 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/config/entry/EntryStackProvider.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/config/entry/EntryStackProvider.java @@ -23,11 +23,13 @@ package me.shedaniel.rei.api.client.config.entry; -import me.shedaniel.rei.api.common.entry.EntrySerializer; +import me.shedaniel.rei.api.common.display.basic.BasicDisplay; import me.shedaniel.rei.api.common.entry.EntryStack; import me.shedaniel.rei.api.common.entry.type.EntryDefinition; import me.shedaniel.rei.api.common.util.EntryStacks; import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtOps; +import net.minecraft.nbt.Tag; import org.jetbrains.annotations.ApiStatus; import java.util.Objects; @@ -53,11 +55,10 @@ public interface EntryStackProvider { * * @return the saved tag * @throws UnsupportedOperationException if the {@link EntryDefinition} does not support saving to a tag - * @see EntrySerializer#supportSaving() - * @see EntryStack#saveStack() + * @see EntryStack#codec() * @since 8.3 */ - CompoundTag save(); + Tag save(); /** * Returns whether the {@link EntryStack} is valid. @@ -67,14 +68,14 @@ public interface EntryStackProvider { boolean isValid(); /** - * Creates a new {@link EntryStackProvider} from the given {@link CompoundTag}, + * Creates a new {@link EntryStackProvider} from the given {@link Tag}, * the stack is not resolved immediately, but rather deferred until {@link #provide()} is called. * * @param tag the tag to load from * @param the type of {@link EntryStack} * @return the {@link EntryStackProvider} */ - static EntryStackProvider defer(CompoundTag tag) { + static EntryStackProvider defer(Tag tag) { return new EntryStackProvider() { private EntryStack stack; @@ -82,7 +83,7 @@ public interface EntryStackProvider { public EntryStack provide() { if (stack == null) { try { - stack = (EntryStack) EntryStack.read(tag); + stack = EntryStack.codec().parse(BasicDisplay.registryAccess().createSerializationContext(NbtOps.INSTANCE), tag).getOrThrow().cast(); } catch (Exception e) { e.printStackTrace(); return (EntryStack) EntryStack.empty(); @@ -95,7 +96,7 @@ public interface EntryStackProvider { } @Override - public CompoundTag save() { + public Tag save() { return tag.copy(); } @@ -137,8 +138,8 @@ public interface EntryStackProvider { } @Override - public CompoundTag save() { - return finalStack.saveStack(); + public Tag save() { + return EntryStack.codec().encodeStart(BasicDisplay.registryAccess().createSerializationContext(NbtOps.INSTANCE), finalStack).getOrThrow(); } @Override diff --git a/api/src/main/java/me/shedaniel/rei/api/client/favorites/CompoundFavoriteRenderer.java b/api/src/main/java/me/shedaniel/rei/api/client/favorites/CompoundFavoriteRenderer.java index 701a2e611..ad1c7b3b2 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/favorites/CompoundFavoriteRenderer.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/favorites/CompoundFavoriteRenderer.java @@ -23,7 +23,6 @@ package me.shedaniel.rei.api.client.favorites; -import me.shedaniel.clothconfig2.api.ScissorsHandler; import me.shedaniel.clothconfig2.api.animator.NumberAnimator; import me.shedaniel.clothconfig2.api.animator.ValueAnimator; import me.shedaniel.math.Rectangle; @@ -96,7 +95,7 @@ public class CompoundFavoriteRenderer implements Renderer { Vector4f vector4f2 = new Vector4f(bounds.getMaxX(), bounds.getMaxY(), 0, 1.0F); graphics.pose().last().pose().transform(vector4f2); scissorArea.setBounds((int) vector4f.x(), (int) vector4f.y(), (int) vector4f2.x() - (int) vector4f.x(), (int) vector4f2.y() - (int) vector4f.y()); - ScissorsHandler.INSTANCE.scissor(scissorArea); + graphics.enableScissor(scissorArea.x, scissorArea.y, scissorArea.getMaxX(), scissorArea.getMaxY()); graphics.pose().pushPose(); graphics.pose().translate(0, this.offset.floatValue() * -bounds.getHeight(), 0); for (int i = 0; i < count; i++) { @@ -104,7 +103,7 @@ public class CompoundFavoriteRenderer implements Renderer { graphics.pose().translate(0, bounds.height, 0); } graphics.pose().popPose(); - ScissorsHandler.INSTANCE.removeLastScissor(); + graphics.disableScissor(); } private void updateAnimator(float delta) { diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/SimpleDisplayRenderer.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/SimpleDisplayRenderer.java index c3963ec93..f7863abcc 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/gui/SimpleDisplayRenderer.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/SimpleDisplayRenderer.java @@ -36,6 +36,7 @@ import me.shedaniel.rei.api.common.util.CollectionUtils; import me.shedaniel.rei.api.common.util.EntryStacks; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.components.events.GuiEventListener; +import net.minecraft.client.renderer.RenderType; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; import org.jetbrains.annotations.ApiStatus; @@ -135,7 +136,7 @@ public class SimpleDisplayRenderer extends DisplayRenderer implements WidgetHold graphics.pose().popPose(); xx = bounds.x + 4 + 18 * (getItemsPerLine() - 2); yy = bounds.y + getHeight() / 2 - 8; - graphics.blit(CHEST_GUI_TEXTURE, xx, yy, 0, 28, 18, 18); + graphics.blit(RenderType::guiTextured, CHEST_GUI_TEXTURE, xx, yy, 0, 28, 18, 18, 256, 256); xx += 18; yy += outputWidgets.size() * -9 + 9; graphics.pose().pushPose(); diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/config/RecipeBorderType.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/config/RecipeBorderType.java index 86db371be..279a9d62e 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/gui/config/RecipeBorderType.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/config/RecipeBorderType.java @@ -23,36 +23,36 @@ package me.shedaniel.rei.api.client.gui.config; +import me.shedaniel.rei.api.client.gui.widgets.utils.PanelTextures; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.resources.language.I18n; +import net.minecraft.resources.ResourceLocation; import java.util.Locale; @Environment(EnvType.CLIENT) -public enum RecipeBorderType { - DEFAULT(66), - LIGHTER(0), - NONE(0, false); +public enum RecipeBorderType implements PanelTextures { + DEFAULT(ResourceLocation.parse("roughlyenoughitems:widget/panel_default"), ResourceLocation.parse("roughlyenoughitems:widget/panel_default_dark")), + LIGHTER(ResourceLocation.parse("roughlyenoughitems:widget/panel_lighter"), ResourceLocation.parse("roughlyenoughitems:widget/panel_lighter_dark")), + NONE(ResourceLocation.parse("roughlyenoughitems:widget/panel_none"), ResourceLocation.parse("roughlyenoughitems:widget/panel_none_dark")); - private int offset; - private boolean render; + private final ResourceLocation texture; + private final ResourceLocation darkTexture; - RecipeBorderType(int offset) { - this(offset, true); + RecipeBorderType(ResourceLocation texture, ResourceLocation darkTexture) { + this.texture = texture; + this.darkTexture = darkTexture; } - RecipeBorderType(int offset, boolean render) { - this.offset = offset; - this.render = render; - } - - public int getYOffset() { - return offset; + @Override + public ResourceLocation texture() { + return texture; } - public boolean isRendering() { - return render; + @Override + public ResourceLocation darkTexture() { + return darkTexture; } @Override diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Button.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Button.java index 4705c3969..2c4ec2260 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Button.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Button.java @@ -44,15 +44,6 @@ public abstract class Button extends BaseWidget