From 4286c104e3ac31ad5a278731dd93d247070be4d1 Mon Sep 17 00:00:00 2001 From: IMS Date: Tue, 23 Jul 2024 14:12:25 -0700 Subject: [PATCH] Port to 1.21 (#227) Co-authored-by: LambdAurora --- build.gradle | 8 +-- gradle.properties | 16 +++--- gradle/wrapper/gradle-wrapper.properties | 2 +- .../lambdynlights/LambDynLights.java | 6 +-- .../api/DynamicLightHandler.java | 2 +- .../api/DynamicLightHandlers.java | 2 +- .../api/item/ItemLightSource.java | 21 +++----- .../api/item/ItemLightSources.java | 4 +- .../gui/DynamicLightsOptionsOption.java | 16 +++--- .../lambdynlights/gui/InnerBackground.java | 8 +-- .../gui/LightSourceListWidget.java | 10 ++-- .../gui/RandomPrideFlagBackground.java | 50 ++++++++++--------- .../lambdynlights/gui/SettingsScreen.java | 2 +- .../lambdynlights/mixin/DebugHudMixin.java | 2 +- .../mixin/VideoOptionsScreenMixin.java | 23 +++++---- .../AbstractDecorationEntityMixin.java | 5 +- .../sodium/ArrayLightDataCacheMixin.java | 5 +- .../mixin/sodium/FlatLightPipelineMixin.java | 5 +- .../mixin/sodium/LightDataAccessMixin.java | 5 +- src/main/resources/fabric.mod.json | 4 +- .../resources/lambdynlights.accesswidener | 2 +- 21 files changed, 100 insertions(+), 98 deletions(-) diff --git a/build.gradle b/build.gradle index 83f47d58..5cb55929 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id "fabric-loom" version "1.4.+" + id "fabric-loom" version "1.7.+" id "dev.yumi.gradle.licenser" version "1.1.+" id "java-library" id "maven-publish" @@ -82,10 +82,6 @@ String fetchChangelog() { repositories { mavenLocal() mavenCentral() - maven { - name "Quilt" - url "https://maven.quiltmc.org/repository/release" - } maven { name "Terraformers" url "https://maven.terraformersmc.com/releases/" @@ -122,7 +118,7 @@ loom { dependencies { minecraft "com.mojang:minecraft:${project.minecraft_version}" - mappings "org.quiltmc:quilt-mappings:${minecraft_version}+build.${project.quilt_mappings}:intermediary-v2" + mappings "net.fabricmc:yarn:${project.minecraft_version}+build.${project.yarn_mappings}:v2" modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" // Fabric API. This is technically optional, but you probably want it anyway. diff --git a/gradle.properties b/gradle.properties index 7fa4f1d9..e3df32df 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,11 +3,11 @@ org.gradle.jvmargs=-Xmx2G # Fabric Properties # check these on https://fabricmc.net/use -minecraft_version=1.20.4 -quilt_mappings=2 -loader_version=0.15.3 +minecraft_version=1.21 +yarn_mappings=2 +loader_version=0.15.11 # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api -fabric_api_version=0.91.3+1.20.4 +fabric_api_version=0.100.4+1.21 # Mod Properties mod_version = 2.3.4 @@ -18,7 +18,7 @@ curseforge_id=393442 # Dependencies # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api -spruceui_version=5.0.3+1.20.2 -pridelib_version=1.2.0+1.19.4 -modmenu_version=9.0.0 -sodium_version=mc1.20.3-0.5.5 +spruceui_version=5.1.0+1.21 +pridelib_version=1.2.1+1.21 +modmenu_version=11.0.1 +sodium_version=mc1.21-0.5.9 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 1af9e093..a4413138 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/src/main/java/dev/lambdaurora/lambdynlights/LambDynLights.java b/src/main/java/dev/lambdaurora/lambdynlights/LambDynLights.java index f72350fd..2fd6216a 100644 --- a/src/main/java/dev/lambdaurora/lambdynlights/LambDynLights.java +++ b/src/main/java/dev/lambdaurora/lambdynlights/LambDynLights.java @@ -78,7 +78,7 @@ public void onInitializeClient() { ResourceManagerHelper.get(ResourceType.CLIENT_RESOURCES).registerReloadListener(new SimpleSynchronousResourceReloadListener() { @Override public Identifier getFabricId() { - return new Identifier(NAMESPACE, "dynamiclights_resources"); + return Identifier.of(NAMESPACE, "dynamiclights_resources"); } @Override @@ -450,7 +450,7 @@ private static boolean isEyeSubmergedInFluid(LivingEntity entity) { return false; } - var eyePos = BlockPos.create(entity.getX(), entity.getEyeY(), entity.getZ()); + var eyePos = BlockPos.ofFloored(entity.getX(), entity.getEyeY(), entity.getZ()); return !entity.getWorld().getFluidState(eyePos).isEmpty(); } @@ -458,7 +458,7 @@ public static int getLivingEntityLuminanceFromItems(LivingEntity entity) { boolean submergedInFluid = isEyeSubmergedInFluid(entity); int luminance = 0; - for (var equipped : entity.getItemsEquipped()) { + for (var equipped : entity.getEquippedItems()) { if (!equipped.isEmpty()) luminance = Math.max(luminance, LambDynLights.getLuminanceFromItemStack(equipped, submergedInFluid)); } diff --git a/src/main/java/dev/lambdaurora/lambdynlights/api/DynamicLightHandler.java b/src/main/java/dev/lambdaurora/lambdynlights/api/DynamicLightHandler.java index ebc47aa3..2562415a 100644 --- a/src/main/java/dev/lambdaurora/lambdynlights/api/DynamicLightHandler.java +++ b/src/main/java/dev/lambdaurora/lambdynlights/api/DynamicLightHandler.java @@ -76,7 +76,7 @@ public boolean isWaterSensitive(T lightSource) { static @NotNull DynamicLightHandler makeLivingEntityHandler(@NotNull DynamicLightHandler handler) { return entity -> { int luminance = 0; - for (var equipped : entity.getItemsEquipped()) { + for (var equipped : entity.getEquippedItems()) { luminance = Math.max(luminance, LambDynLights.getLuminanceFromItemStack(equipped, entity.isSubmergedInWater())); } return Math.max(luminance, handler.getLuminance(entity)); diff --git a/src/main/java/dev/lambdaurora/lambdynlights/api/DynamicLightHandlers.java b/src/main/java/dev/lambdaurora/lambdynlights/api/DynamicLightHandlers.java index 043478d5..676ff057 100644 --- a/src/main/java/dev/lambdaurora/lambdynlights/api/DynamicLightHandlers.java +++ b/src/main/java/dev/lambdaurora/lambdynlights/api/DynamicLightHandlers.java @@ -162,7 +162,7 @@ public static int getLuminanceFrom(T entity) { if (!canLightUp(entity)) return 0; if (handler.isWaterSensitive(entity) - && !entity.getWorld().getFluidState(BlockPos.create(entity.getX(), entity.getEyeY(), entity.getZ())).isEmpty()) + && !entity.getWorld().getFluidState(BlockPos.ofFloored(entity.getX(), entity.getEyeY(), entity.getZ())).isEmpty()) return 0; return handler.getLuminance(entity); } diff --git a/src/main/java/dev/lambdaurora/lambdynlights/api/item/ItemLightSource.java b/src/main/java/dev/lambdaurora/lambdynlights/api/item/ItemLightSource.java index 8cef8c6d..939002f9 100644 --- a/src/main/java/dev/lambdaurora/lambdynlights/api/item/ItemLightSource.java +++ b/src/main/java/dev/lambdaurora/lambdynlights/api/item/ItemLightSource.java @@ -13,6 +13,8 @@ import dev.lambdaurora.lambdynlights.LambDynLights; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; +import net.minecraft.component.DataComponentTypes; +import net.minecraft.component.type.BlockStateComponent; import net.minecraft.item.BlockItem; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -95,7 +97,7 @@ public String toString() { return Optional.empty(); } - var affectId = new Identifier(json.get("item").getAsString()); + var affectId = Identifier.tryParse(json.get("item").getAsString()); var item = Registries.ITEM.get(affectId); if (item == Items.AIR) @@ -162,19 +164,10 @@ public int getLuminance(ItemStack stack) { } static int getLuminance(ItemStack stack, BlockState state) { - var nbt = stack.getNbt(); - - if (nbt != null) { - var blockStateTag = nbt.getCompound("BlockStateTag"); - var stateManager = state.getBlock().getStateManager(); - - for (var key : blockStateTag.getKeys()) { - var property = stateManager.getProperty(key); - if (property != null) { - var value = blockStateTag.get(key).asString(); - state = with(state, property, value); - } - } + var nbt = stack.getComponents().getOrDefault(DataComponentTypes.BLOCK_STATE, BlockStateComponent.DEFAULT); + + if (!nbt.isEmpty()) { + state = nbt.applyToState(state); } return state.getLuminance(); diff --git a/src/main/java/dev/lambdaurora/lambdynlights/api/item/ItemLightSources.java b/src/main/java/dev/lambdaurora/lambdynlights/api/item/ItemLightSources.java index f3b91204..d1281c7e 100644 --- a/src/main/java/dev/lambdaurora/lambdynlights/api/item/ItemLightSources.java +++ b/src/main/java/dev/lambdaurora/lambdynlights/api/item/ItemLightSources.java @@ -54,8 +54,8 @@ public static void load(ResourceManager resourceManager) { } private static void load(Identifier resourceId, Resource resource) { - var id = new Identifier(resourceId.getNamespace(), resourceId.getPath().replace(".json", "")); - try (var reader = new InputStreamReader(resource.open())) { + var id = Identifier.of(resourceId.getNamespace(), resourceId.getPath().replace(".json", "")); + try (var reader = new InputStreamReader(resource.getInputStream())) { var json = JsonParser.parseReader(reader).getAsJsonObject(); ItemLightSource.fromJson(id, json).ifPresent(data -> { diff --git a/src/main/java/dev/lambdaurora/lambdynlights/gui/DynamicLightsOptionsOption.java b/src/main/java/dev/lambdaurora/lambdynlights/gui/DynamicLightsOptionsOption.java index 4d88ba99..a09f3f68 100644 --- a/src/main/java/dev/lambdaurora/lambdynlights/gui/DynamicLightsOptionsOption.java +++ b/src/main/java/dev/lambdaurora/lambdynlights/gui/DynamicLightsOptionsOption.java @@ -13,10 +13,10 @@ import com.mojang.serialization.Codec; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.gui.widget.ClickableWidget; -import net.minecraft.client.gui.widget.button.ButtonWidget; import net.minecraft.client.option.GameOptions; -import net.minecraft.client.option.Option; +import net.minecraft.client.option.SimpleOption; import net.minecraft.text.Text; import java.util.Optional; @@ -26,22 +26,22 @@ public final class DynamicLightsOptionsOption { private static final String KEY = "lambdynlights.menu.title"; - public static Option getOption(Screen parent) { - return new Option<>( - KEY, Option.emptyTooltip(), + public static SimpleOption getOption(Screen parent) { + return new SimpleOption<>( + KEY, SimpleOption.emptyTooltip(), (title, object) -> title, new DummyValueSet(parent), Unit.INSTANCE, unit -> {}); } - private record DummyValueSet(Screen parent) implements Option.ValueSet { + private record DummyValueSet(Screen parent) implements SimpleOption.Callbacks { @Override - public Function, ClickableWidget> getButtonCreator(Option.TooltipSupplier tooltipSupplier, GameOptions options, + public Function, ClickableWidget> getWidgetCreator(SimpleOption.TooltipFactory tooltipSupplier, GameOptions options, int x, int y, int width, Consumer changeCallback) { return option -> ButtonWidget.builder(Text.translatable(KEY), button -> MinecraftClient.getInstance() - .setScreen(new SettingsScreen(this.parent))).positionAndSize(x, y, width, 20).build(); + .setScreen(new SettingsScreen(this.parent))).dimensions(x, y, width, 20).build(); } @Override diff --git a/src/main/java/dev/lambdaurora/lambdynlights/gui/InnerBackground.java b/src/main/java/dev/lambdaurora/lambdynlights/gui/InnerBackground.java index 6ff049a9..8a73020c 100644 --- a/src/main/java/dev/lambdaurora/lambdynlights/gui/InnerBackground.java +++ b/src/main/java/dev/lambdaurora/lambdynlights/gui/InnerBackground.java @@ -13,18 +13,18 @@ import dev.lambdaurora.spruceui.background.DirtTexturedBackground; import dev.lambdaurora.spruceui.widget.SpruceWidget; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.DrawContext; public class InnerBackground implements Background { @Override - public void render(GuiGraphics graphics, SpruceWidget widget, int vOffset, int mouseX, int mouseY, float delta) { + public void render(DrawContext drawContext, SpruceWidget widget, int vOffset, int mouseX, int mouseY, float delta) { if (MinecraftClient.getInstance().world != null) { - graphics.fillGradient(widget.getX(), widget.getY(), + drawContext.fillGradient(widget.getX(), widget.getY(), widget.getX() + widget.getWidth(), widget.getY() + widget.getHeight(), 0xc0060606, 0xd0060606); } else { - DirtTexturedBackground.DARKENED.render(graphics, widget, vOffset, mouseX, mouseY, delta); + DirtTexturedBackground.DARKENED.render(drawContext, widget, vOffset, mouseX, mouseY, delta); } } } diff --git a/src/main/java/dev/lambdaurora/lambdynlights/gui/LightSourceListWidget.java b/src/main/java/dev/lambdaurora/lambdynlights/gui/LightSourceListWidget.java index 9193e37a..0f0df52f 100644 --- a/src/main/java/dev/lambdaurora/lambdynlights/gui/LightSourceListWidget.java +++ b/src/main/java/dev/lambdaurora/lambdynlights/gui/LightSourceListWidget.java @@ -22,7 +22,7 @@ import dev.lambdaurora.spruceui.widget.WithBackground; import dev.lambdaurora.spruceui.widget.container.SpruceEntryListWidget; import dev.lambdaurora.spruceui.widget.container.SpruceParentWidget; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder; import net.minecraft.client.gui.screen.narration.NarrationPart; import net.minecraft.text.Text; @@ -203,12 +203,12 @@ protected boolean onCharTyped(char chr, int keyCode) { /* Rendering */ - protected void renderWidget(GuiGraphics graphics, int mouseX, int mouseY, float delta) { - this.forEach(widget -> widget.render(graphics, mouseX, mouseY, delta)); + protected void renderWidget(DrawContext drawContext, int mouseX, int mouseY, float delta) { + this.forEach(widget -> widget.render(drawContext, mouseX, mouseY, delta)); } - protected void renderBackground(GuiGraphics graphics, int mouseX, int mouseY, float delta) { - this.background.render(graphics, this, 0, mouseX, mouseY, delta); + protected void renderBackground(DrawContext drawContext, int mouseX, int mouseY, float delta) { + this.background.render(drawContext, this, 0, mouseX, mouseY, delta); } /* Narration */ diff --git a/src/main/java/dev/lambdaurora/lambdynlights/gui/RandomPrideFlagBackground.java b/src/main/java/dev/lambdaurora/lambdynlights/gui/RandomPrideFlagBackground.java index 10ce6cd0..d539471b 100644 --- a/src/main/java/dev/lambdaurora/lambdynlights/gui/RandomPrideFlagBackground.java +++ b/src/main/java/dev/lambdaurora/lambdynlights/gui/RandomPrideFlagBackground.java @@ -10,7 +10,6 @@ package dev.lambdaurora.lambdynlights.gui; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.*; import dev.lambdaurora.spruceui.background.Background; import dev.lambdaurora.spruceui.background.SimpleColorBackground; import dev.lambdaurora.spruceui.util.ColorUtil; @@ -18,8 +17,8 @@ import io.github.queerbric.pride.PrideFlag; import io.github.queerbric.pride.PrideFlagShapes; import io.github.queerbric.pride.PrideFlags; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.render.GameRenderer; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.*; import net.minecraft.util.Identifier; import org.joml.Matrix4f; import org.joml.Vector4f; @@ -46,16 +45,15 @@ public RandomPrideFlagBackground(PrideFlag flag) { } @Override - public void render(GuiGraphics graphics, SpruceWidget widget, int vOffset, int mouseX, int mouseY, float delta) { + public void render(DrawContext drawContext, SpruceWidget widget, int vOffset, int mouseX, int mouseY, float delta) { int x = widget.getX(); int y = widget.getY(); - RenderSystem.setShader(GameRenderer::getPositionColorShader); - if (this.flag.getShape() == PrideFlagShapes.get(new Identifier("pride", "horizontal_stripes"))) { - var model = graphics.getMatrices().peek().getModel(); + RenderSystem.setShader(GameRenderer::getPositionColorProgram); + if (this.flag.getShape() == PrideFlagShapes.get(Identifier.of("pride", "horizontal_stripes"))) { + var model = drawContext.getMatrices().peek().getPositionMatrix(); var tessellator = Tessellator.getInstance(); - var vertices = tessellator.getBufferBuilder(); - vertices.begin(VertexFormat.DrawMode.TRIANGLES, VertexFormats.POSITION_COLOR); + var vertices = tessellator.begin(VertexFormat.DrawMode.TRIANGLES, VertexFormats.POSITION_COLOR); int width = widget.getWidth(); int height = widget.getHeight(); @@ -67,22 +65,22 @@ public void render(GuiGraphics graphics, SpruceWidget widget, int vOffset, int m float leftY = y; int[] color = ColorUtil.unpackARGBColor(this.flag.getColors().getInt(0)); - vertex(vertices, model, x + width, rightY + partHeight, 0).color(color[0], color[1], color[2], color[3]).next(); - vertex(vertices, model, x + width, rightY, 0).color(color[0], color[1], color[2], color[3]).next(); - vertex(vertices, model, x, leftY, 0).color(color[0], color[1], color[2], color[3]).next(); + vertex(vertices, model, x + width, rightY + partHeight, 0).color(color[0], color[1], color[2], color[3]); + vertex(vertices, model, x + width, rightY, 0).color(color[0], color[1], color[2], color[3]); + vertex(vertices, model, x, leftY, 0).color(color[0], color[1], color[2], color[3]); rightY += partHeight; for (int i = 1; i < this.flag.getColors().size() - 1; i++) { color = ColorUtil.unpackARGBColor(this.flag.getColors().getInt(i)); - vertex(vertices, model, x + width, rightY + partHeight, 0).color(color[0], color[1], color[2], color[3]).next(); - vertex(vertices, model, x + width, rightY, 0).color(color[0], color[1], color[2], color[3]).next(); - vertex(vertices, model, x, leftY, 0).color(color[0], color[1], color[2], color[3]).next(); + vertex(vertices, model, x + width, rightY + partHeight, 0).color(color[0], color[1], color[2], color[3]); + vertex(vertices, model, x + width, rightY, 0).color(color[0], color[1], color[2], color[3]); + vertex(vertices, model, x, leftY, 0).color(color[0], color[1], color[2], color[3]); - vertex(vertices, model, x + width, rightY + partHeight, 0).color(color[0], color[1], color[2], color[3]).next(); - vertex(vertices, model, x, leftY, 0).color(color[0], color[1], color[2], color[3]).next(); - vertex(vertices, model, x, leftY + partHeight, 0).color(color[0], color[1], color[2], color[3]).next(); + vertex(vertices, model, x + width, rightY + partHeight, 0).color(color[0], color[1], color[2], color[3]); + vertex(vertices, model, x, leftY, 0).color(color[0], color[1], color[2], color[3]); + vertex(vertices, model, x, leftY + partHeight, 0).color(color[0], color[1], color[2], color[3]); rightY += partHeight; leftY += partHeight; @@ -90,16 +88,20 @@ public void render(GuiGraphics graphics, SpruceWidget widget, int vOffset, int m // Last one color = ColorUtil.unpackARGBColor(this.flag.getColors().getInt(this.flag.getColors().size() - 1)); - vertex(vertices, model, x + width, rightY, 0).color(color[0], color[1], color[2], color[3]).next(); - vertex(vertices, model, x, leftY, 0).color(color[0], color[1], color[2], color[3]).next(); - vertex(vertices, model, x, y + height, 0).color(color[0], color[1], color[2], color[3]).next(); + vertex(vertices, model, x + width, rightY, 0).color(color[0], color[1], color[2], color[3]); + vertex(vertices, model, x, leftY, 0).color(color[0], color[1], color[2], color[3]); + vertex(vertices, model, x, y + height, 0).color(color[0], color[1], color[2], color[3]); - tessellator.draw(); + BuiltBuffer builtBuffer = vertices.endNullable(); + if (builtBuffer != null) { + BufferRenderer.drawWithGlobalProgram(builtBuffer); + } + tessellator.clear(); } else { - this.flag.render(graphics.getMatrices(), x, y, widget.getWidth(), widget.getHeight()); + this.flag.render(drawContext.getMatrices(), x, y, widget.getWidth(), widget.getHeight()); } - SECOND_LAYER.render(graphics, widget, vOffset, mouseX, mouseY, delta); + SECOND_LAYER.render(drawContext, widget, vOffset, mouseX, mouseY, delta); } /** diff --git a/src/main/java/dev/lambdaurora/lambdynlights/gui/SettingsScreen.java b/src/main/java/dev/lambdaurora/lambdynlights/gui/SettingsScreen.java index 3cf7c509..9356a5d0 100644 --- a/src/main/java/dev/lambdaurora/lambdynlights/gui/SettingsScreen.java +++ b/src/main/java/dev/lambdaurora/lambdynlights/gui/SettingsScreen.java @@ -115,7 +115,7 @@ protected void init() { null, this.tabContainerBuilder(this::buildEntitiesTab)); this.tabbedWidget.addTabEntry(Text.empty().append(dynamicLightSources).append(": ").append(this.blockEntitiesOption.getPrefix()), null, this.tabContainerBuilder(this::buildBlockEntitiesTab)); - this.addSelectableElement(this.tabbedWidget); + this.addSelectableChild(this.tabbedWidget); } private SpruceTabbedWidget.ContainerFactory tabContainerBuilder(SpruceTabbedWidget.ContainerFactory innerFactory) { diff --git a/src/main/java/dev/lambdaurora/lambdynlights/mixin/DebugHudMixin.java b/src/main/java/dev/lambdaurora/lambdynlights/mixin/DebugHudMixin.java index 2aaee878..997a2e11 100644 --- a/src/main/java/dev/lambdaurora/lambdynlights/mixin/DebugHudMixin.java +++ b/src/main/java/dev/lambdaurora/lambdynlights/mixin/DebugHudMixin.java @@ -10,7 +10,7 @@ package dev.lambdaurora.lambdynlights.mixin; import dev.lambdaurora.lambdynlights.LambDynLights; -import net.minecraft.client.gui.hud.debug.DebugHud; +import net.minecraft.client.gui.hud.DebugHud; import net.minecraft.util.Formatting; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; diff --git a/src/main/java/dev/lambdaurora/lambdynlights/mixin/VideoOptionsScreenMixin.java b/src/main/java/dev/lambdaurora/lambdynlights/mixin/VideoOptionsScreenMixin.java index b6e43f57..280f9378 100644 --- a/src/main/java/dev/lambdaurora/lambdynlights/mixin/VideoOptionsScreenMixin.java +++ b/src/main/java/dev/lambdaurora/lambdynlights/mixin/VideoOptionsScreenMixin.java @@ -11,12 +11,13 @@ import dev.lambdaurora.lambdynlights.gui.DynamicLightsOptionsOption; import dev.lambdaurora.spruceui.Tooltip; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.option.GameOptionsScreen; import net.minecraft.client.gui.screen.option.VideoOptionsScreen; import net.minecraft.client.option.GameOptions; -import net.minecraft.client.option.Option; +import net.minecraft.client.option.SimpleOption; import net.minecraft.text.Text; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; @@ -26,36 +27,36 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(VideoOptionsScreen.class) -public class VideoOptionsScreenMixin extends GameOptionsScreen { +public abstract class VideoOptionsScreenMixin extends GameOptionsScreen { @Unique - private Option lambdynlights$option; + private SimpleOption lambdynlights$option; public VideoOptionsScreenMixin(Screen parent, GameOptions gameOptions, Text title) { super(parent, gameOptions, title); } @Inject(method = "", at = @At("TAIL")) - private void onConstruct(Screen parent, GameOptions gameOptions, CallbackInfo ci) { + private void onConstruct(Screen parent, MinecraftClient client, GameOptions gameOptions, CallbackInfo ci) { this.lambdynlights$option = DynamicLightsOptionsOption.getOption(this); } @ModifyArg( - method = "init", + method = "addOptions", at = @At( value = "INVOKE", - target = "Lnet/minecraft/client/gui/widget/list/ButtonListWidget;addEntries([Lnet/minecraft/client/option/Option;)V" + target = "Lnet/minecraft/client/gui/widget/OptionListWidget;addAll([Lnet/minecraft/client/option/SimpleOption;)V" ), index = 0 ) - private Option[] addOptionButton(Option[] old) { - var options = new Option[old.length + 1]; + private SimpleOption[] addOptionButton(SimpleOption[] old) { + var options = new SimpleOption[old.length + 1]; System.arraycopy(old, 0, options, 0, old.length); options[options.length - 1] = this.lambdynlights$option; return options; } - @Inject(method = "render", at = @At("TAIL")) - private void onRender(GuiGraphics graphics, int mouseX, int mouseY, float delta, CallbackInfo ci) { + @Override + public void render(DrawContext graphics, int mouseX, int mouseY, float delta) { Tooltip.renderAll(graphics); } } diff --git a/src/main/java/dev/lambdaurora/lambdynlights/mixin/lightsource/AbstractDecorationEntityMixin.java b/src/main/java/dev/lambdaurora/lambdynlights/mixin/lightsource/AbstractDecorationEntityMixin.java index a8f64b21..b87eb15f 100644 --- a/src/main/java/dev/lambdaurora/lambdynlights/mixin/lightsource/AbstractDecorationEntityMixin.java +++ b/src/main/java/dev/lambdaurora/lambdynlights/mixin/lightsource/AbstractDecorationEntityMixin.java @@ -27,8 +27,9 @@ public AbstractDecorationEntityMixin(EntityType type, World world) { super(type, world); } - @Inject(method = "tick", at = @At("TAIL")) - private void onTick(CallbackInfo ci) { + @Override + public void tick() { + super.tick(); // We do not want to update the entity on the server. if (this.getWorld().isClient()) { if (this.isRemoved()) { diff --git a/src/main/java/dev/lambdaurora/lambdynlights/mixin/sodium/ArrayLightDataCacheMixin.java b/src/main/java/dev/lambdaurora/lambdynlights/mixin/sodium/ArrayLightDataCacheMixin.java index 774ece35..cb4d1dd8 100644 --- a/src/main/java/dev/lambdaurora/lambdynlights/mixin/sodium/ArrayLightDataCacheMixin.java +++ b/src/main/java/dev/lambdaurora/lambdynlights/mixin/sodium/ArrayLightDataCacheMixin.java @@ -19,7 +19,10 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Pseudo -@Mixin(targets = "me.jellysquid.mods.sodium.client.model.light.data.ArrayLightDataCache", remap = false) +@Mixin(targets = { + "me.jellysquid.mods.sodium.client.model.light.data.ArrayLightDataCache", + "net.caffeinemc.mods.sodium.client.model.light.data.ArrayLightDataCache" + }, remap = false) public abstract class ArrayLightDataCacheMixin { @Dynamic @Inject(method = "get(III)I", at = @At("HEAD"), require = 0) diff --git a/src/main/java/dev/lambdaurora/lambdynlights/mixin/sodium/FlatLightPipelineMixin.java b/src/main/java/dev/lambdaurora/lambdynlights/mixin/sodium/FlatLightPipelineMixin.java index bf5a467c..c71002a2 100644 --- a/src/main/java/dev/lambdaurora/lambdynlights/mixin/sodium/FlatLightPipelineMixin.java +++ b/src/main/java/dev/lambdaurora/lambdynlights/mixin/sodium/FlatLightPipelineMixin.java @@ -21,7 +21,10 @@ import org.spongepowered.asm.mixin.injection.callback.LocalCapture; @Pseudo -@Mixin(targets = "me.jellysquid.mods.sodium.client.model.light.flat.FlatLightPipeline", remap = false) +@Mixin(targets = { + "me.jellysquid.mods.sodium.client.model.light.flat.FlatLightPipeline", + "net.caffeinemc.mods.sodium.client.model.light.flat.FlatLightPipeline" +}, remap = false) public abstract class FlatLightPipelineMixin { @Dynamic @Inject( diff --git a/src/main/java/dev/lambdaurora/lambdynlights/mixin/sodium/LightDataAccessMixin.java b/src/main/java/dev/lambdaurora/lambdynlights/mixin/sodium/LightDataAccessMixin.java index 5936ba7d..c84248a9 100644 --- a/src/main/java/dev/lambdaurora/lambdynlights/mixin/sodium/LightDataAccessMixin.java +++ b/src/main/java/dev/lambdaurora/lambdynlights/mixin/sodium/LightDataAccessMixin.java @@ -18,7 +18,10 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Pseudo -@Mixin(targets = "me.jellysquid.mods.sodium.client.model.light.data.LightDataAccess", remap = false) +@Mixin(targets = { + "me.jellysquid.mods.sodium.client.model.light.data.LightDataAccess", + "net.caffeinemc.mods.sodium.client.model.light.data.LightDataAccess" +}, remap = false) public abstract class LightDataAccessMixin { @Dynamic @Inject(method = "getLightmap", at = @At("RETURN"), remap = false, require = 0, cancellable = true) diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index b022ad63..6ae13471 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -29,9 +29,9 @@ "lambdynlights.lightsource.mixins.json" ], "depends": { - "fabricloader": ">=0.14.20", + "fabricloader": ">=0.15.11", "fabric-api": ">=0.91.3+1.20.4", - "minecraft": "~1.20.4", + "minecraft": "~1.21", "spruceui": ">=5.0.3", "java": ">=17" }, diff --git a/src/main/resources/lambdynlights.accesswidener b/src/main/resources/lambdynlights.accesswidener index 9c460263..1db11208 100644 --- a/src/main/resources/lambdynlights.accesswidener +++ b/src/main/resources/lambdynlights.accesswidener @@ -1,3 +1,3 @@ accessWidener v2 named -accessible class net/minecraft/client/option/Option$ValueSet +accessible class net/minecraft/client/option/SimpleOption$Callbacks \ No newline at end of file