diff options
| author | shedaniel <daniel@shedaniel.me> | 2024-10-26 16:55:52 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2024-10-26 16:55:57 +0800 |
| commit | ddb48e2032d1986709cad973067693eec3118504 (patch) | |
| tree | e7905130008c67767d2ad2a4d72f49ba4df7e6e3 /api/src | |
| parent | eaf9236e3da2adafcea204778ecc0072e70d0aa5 (diff) | |
| download | RoughlyEnoughItems-ddb48e2032d1986709cad973067693eec3118504.tar.gz RoughlyEnoughItems-ddb48e2032d1986709cad973067693eec3118504.tar.bz2 RoughlyEnoughItems-ddb48e2032d1986709cad973067693eec3118504.zip | |
Update to 1.21.2 (Please read Primer)
https://hackmd.io/@shedaniel/rei17_primer
Diffstat (limited to 'api/src')
59 files changed, 1468 insertions, 2425 deletions
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<T> { * * @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<T> { 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 <T> the type of {@link EntryStack} * @return the {@link EntryStackProvider} */ - static <T> EntryStackProvider<T> defer(CompoundTag tag) { + static <T> EntryStackProvider<T> defer(Tag tag) { return new EntryStackProvider<T>() { private EntryStack<T> stack; @@ -82,7 +83,7 @@ public interface EntryStackProvider<T> { public EntryStack<T> provide() { if (stack == null) { try { - stack = (EntryStack<T>) EntryStack.read(tag); + stack = EntryStack.codec().parse(BasicDisplay.registryAccess().createSerializationContext(NbtOps.INSTANCE), tag).getOrThrow().cast(); } catch (Exception e) { e.printStackTrace(); return (EntryStack<T>) EntryStack.empty(); @@ -95,7 +96,7 @@ public interface EntryStackProvider<T> { } @Override - public CompoundTag save() { + public Tag save() { return tag.copy(); } @@ -137,8 +138,8 @@ public interface EntryStackProvider<T> { } @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<Button> { public abstract int getTextColor(Point mouse); - public abstract void setTextureId(@Nullable BiFunction<Button, Point, Integer> textureIdFunction); - - public final Button textureId(@Nullable BiFunction<Button, Point, Integer> textureIdFunction) { - setTextureId(textureIdFunction); - return this; - } - - public abstract int getTextureId(Point mouse); - public abstract void onClick(); public abstract boolean isEnabled(); diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Panel.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Panel.java index e7fa9926c..17eb766e7 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Panel.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Panel.java @@ -24,26 +24,25 @@ package me.shedaniel.rei.api.client.gui.widgets; import me.shedaniel.rei.api.client.REIRuntime; +import me.shedaniel.rei.api.client.gui.widgets.utils.PanelTextures; +import net.minecraft.resources.ResourceLocation; import java.util.function.Predicate; public abstract class Panel extends WidgetWithBounds { - public abstract int getXTextureOffset(); + public abstract void setTexture(ResourceLocation texture, ResourceLocation darkTexture); - public abstract void setXTextureOffset(int xTextureOffset); + public final void setTexture(PanelTextures textures) { + setTexture(textures.texture(), textures.darkTexture()); + } - public final Panel xTextureOffset(int xTextureOffset) { - setXTextureOffset(xTextureOffset); + public final Panel texture(ResourceLocation texture, ResourceLocation darkTexture) { + setTexture(texture, darkTexture); return this; } - public abstract int getYTextureOffset(); - - public abstract void setYTextureOffset(int yTextureOffset); - - public final Panel yTextureOffset(int yTextureOffset) { - setYTextureOffset(yTextureOffset); - return this; + public final Panel texture(PanelTextures textures) { + return texture(textures.texture(), textures.darkTexture()); } public abstract int getColor(); diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Tooltip.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Tooltip.java index 168db401e..a877311af 100644 --- a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Tooltip.java +++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Tooltip.java @@ -33,6 +33,7 @@ import me.shedaniel.rei.impl.ClientInternals; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.inventory.tooltip.TooltipComponent; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; @@ -125,6 +126,11 @@ public interface Tooltip { Tooltip withContextStack(EntryStack<?> stack); + @Nullable + ResourceLocation getTooltipStyle(); + + Tooltip withTooltipStyle(@Nullable ResourceLocation styleLocation); + default void queue() { EnvExecutor.runInEnv(Env.CLIENT, () -> () -> REIRuntime.getInstance().queueTooltip(this)); } 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 82b07c256..06a770620 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 @@ -24,7 +24,6 @@ package me.shedaniel.rei.api.client.gui.widgets; import com.mojang.blaze3d.vertex.PoseStack; -import me.shedaniel.clothconfig2.api.ScissorsHandler; import me.shedaniel.math.Point; import me.shedaniel.math.Rectangle; import me.shedaniel.math.impl.PointHelper; @@ -120,12 +119,8 @@ public abstract class Widget extends AbstractContainerEventHandler implements Re @ApiStatus.Experimental public static CloseableScissors scissor(GuiGraphics graphics, Rectangle bounds) { - return scissor(graphics.pose().last().pose(), bounds); - } - - @ApiStatus.Experimental - public static |
