diff options
| author | Linnea Gräf <nea@nea.moe> | 2025-11-15 23:13:50 +0100 |
|---|---|---|
| committer | Linnea Gräf <nea@nea.moe> | 2025-11-15 23:13:50 +0100 |
| commit | 4d8399ff4d769def62e6a8241327c4f2dac47e71 (patch) | |
| tree | 703f8651cb680d2583d82c2b1b4aee0911ccb490 /src/main/java/moe/nea/firmament/mixins | |
| parent | 215178c650d38a4a77fdef6dc8815c07bef29c25 (diff) | |
| download | Firmament-4d8399ff4d769def62e6a8241327c4f2dac47e71.tar.gz Firmament-4d8399ff4d769def62e6a8241327c4f2dac47e71.tar.bz2 Firmament-4d8399ff4d769def62e6a8241327c4f2dac47e71.zip | |
snapshot: main source set compile
Diffstat (limited to 'src/main/java/moe/nea/firmament/mixins')
4 files changed, 53 insertions, 33 deletions
diff --git a/src/main/java/moe/nea/firmament/mixins/WorldReadyEventPatch.java b/src/main/java/moe/nea/firmament/mixins/WorldReadyEventPatch.java index d4b8c9e..f05eb05 100644 --- a/src/main/java/moe/nea/firmament/mixins/WorldReadyEventPatch.java +++ b/src/main/java/moe/nea/firmament/mixins/WorldReadyEventPatch.java @@ -4,7 +4,6 @@ package moe.nea.firmament.mixins; import moe.nea.firmament.events.WorldReadyEvent; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.screen.DownloadingTerrainScreen; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; diff --git a/src/main/java/moe/nea/firmament/mixins/accessor/AccessorNbtComponent.java b/src/main/java/moe/nea/firmament/mixins/accessor/AccessorNbtComponent.java new file mode 100644 index 0000000..8ce981c --- /dev/null +++ b/src/main/java/moe/nea/firmament/mixins/accessor/AccessorNbtComponent.java @@ -0,0 +1,12 @@ +package moe.nea.firmament.mixins.accessor; + +import net.minecraft.component.type.NbtComponent; +import net.minecraft.nbt.NbtCompound; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(NbtComponent.class) +public interface AccessorNbtComponent { + @Accessor("nbt") + NbtCompound getUnsafeNbt_firmament(); +} diff --git a/src/main/java/moe/nea/firmament/mixins/customgui/PatchHandledScreen.java b/src/main/java/moe/nea/firmament/mixins/customgui/PatchHandledScreen.java index 9027865..3769ceb 100644 --- a/src/main/java/moe/nea/firmament/mixins/customgui/PatchHandledScreen.java +++ b/src/main/java/moe/nea/firmament/mixins/customgui/PatchHandledScreen.java @@ -10,9 +10,12 @@ import moe.nea.firmament.keybindings.InputModifiers; import moe.nea.firmament.util.customgui.CoordRememberingSlot; import moe.nea.firmament.util.customgui.CustomGui; import moe.nea.firmament.util.customgui.HasCustomGui; +import net.minecraft.client.gui.Click; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.HandledScreen; +import net.minecraft.client.input.CharInput; +import net.minecraft.client.input.KeyInput; import net.minecraft.screen.ScreenHandler; import net.minecraft.screen.slot.Slot; import net.minecraft.text.Text; @@ -75,17 +78,17 @@ public class PatchHandledScreen<T extends ScreenHandler> extends Screen implemen return override != null && override.mouseScrolled(mouseX, mouseY, horizontalAmount, verticalAmount); } - public boolean keyReleased_firmament(int keyCode, int scanCode, int modifiers) { + public boolean keyReleased_firmament(KeyInput input) { if (HandledScreenKeyReleasedEvent.Companion.publish(new HandledScreenKeyReleasedEvent( (HandledScreen<?>) (Object) this, - GenericInputAction.key(keyCode, scanCode), - InputModifiers.of(modifiers))).getCancelled()) + GenericInputAction.of(input), + InputModifiers.of(input))).getCancelled()) return true; - return override != null && override.keyReleased(keyCode, scanCode, modifiers); + return override != null && override.keyReleased(input); } - public boolean charTyped_firmament(char chr, int modifiers) { - return override != null && override.charTyped(chr, modifiers); + public boolean charTyped_firmament(CharInput input) { + return override != null && override.charTyped(input); } @Inject(method = "init", at = @At("TAIL")) @@ -118,7 +121,9 @@ public class PatchHandledScreen<T extends ScreenHandler> extends Screen implemen } @Inject(method = "isClickOutsideBounds", at = @At("HEAD"), cancellable = true) - public void onIsClickOutsideBounds(double mouseX, double mouseY, int left, int top, int button, CallbackInfoReturnable<Boolean> cir) { + public void onIsClickOutsideBounds( + double mouseX, double mouseY, int left, int top, + CallbackInfoReturnable<Boolean> cir) { if (override != null) { cir.setReturnValue(override.isClickOutsideBounds(mouseX, mouseY)); } @@ -176,28 +181,27 @@ public class PatchHandledScreen<T extends ScreenHandler> extends Screen implemen @WrapOperation( method = "mouseClicked", - at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/Screen;mouseClicked(DDI)Z")) - public boolean overrideMouseClicks(HandledScreen instance, double mouseX, double mouseY, int button, - Operation<Boolean> original) { + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/Screen;mouseClicked(Lnet/minecraft/client/gui/Click;Z)Z")) + public boolean overrideMouseClicks(HandledScreen instance, Click click, boolean doubled, Operation<Boolean> original) { if (override != null) { - if (override.mouseClick(mouseX, mouseY, button)) + if (override.mouseClick(click, doubled)) return true; } - return original.call(instance, mouseX, mouseY, button); + return original.call(instance, click, doubled); } @Inject(method = "mouseDragged", at = @At("HEAD"), cancellable = true) - public void overrideMouseDrags(double mouseX, double mouseY, int button, double deltaX, double deltaY, CallbackInfoReturnable<Boolean> cir) { + public void overrideMouseDrags(Click click, double offsetX, double offsetY, CallbackInfoReturnable<Boolean> cir) { if (override != null) { - if (override.mouseDragged(mouseX, mouseY, button, deltaX, deltaY)) + if (override.mouseDragged(click, offsetX, offsetY)) cir.setReturnValue(true); } } @Inject(method = "keyPressed", at = @At("HEAD"), cancellable = true) - private void overrideKeyPressed(int keyCode, int scanCode, int modifiers, CallbackInfoReturnable<Boolean> cir) { + private void overrideKeyPressed(KeyInput input, CallbackInfoReturnable<Boolean> cir) { if (override != null) { - if (override.keyPressed(keyCode, scanCode, modifiers)) { + if (override.keyPressed(input)) { cir.setReturnValue(true); } } @@ -207,9 +211,9 @@ public class PatchHandledScreen<T extends ScreenHandler> extends Screen implemen @Inject( method = "mouseReleased", at = @At("HEAD"), cancellable = true) - public void overrideMouseReleases(double mouseX, double mouseY, int button, CallbackInfoReturnable<Boolean> cir) { + public void overrideMouseReleases(Click click, CallbackInfoReturnable<Boolean> cir) { if (override != null) { - if (override.mouseReleased(mouseX, mouseY, button)) + if (override.mouseReleased(click)) cir.setReturnValue(true); } } diff --git a/src/main/java/moe/nea/firmament/mixins/feature/devcosmetics/CustomCapeFeatureRenderer.java b/src/main/java/moe/nea/firmament/mixins/feature/devcosmetics/CustomCapeFeatureRenderer.java index c9115d2..5d69e96 100644 --- a/src/main/java/moe/nea/firmament/mixins/feature/devcosmetics/CustomCapeFeatureRenderer.java +++ b/src/main/java/moe/nea/firmament/mixins/feature/devcosmetics/CustomCapeFeatureRenderer.java @@ -5,17 +5,20 @@ import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import com.llamalad7.mixinextras.sugar.Local; import kotlin.Unit; import moe.nea.firmament.features.misc.CustomCapes; +import net.minecraft.client.model.Model; import net.minecraft.client.render.RenderLayer; import net.minecraft.client.render.VertexConsumer; import net.minecraft.client.render.VertexConsumerProvider; +import net.minecraft.client.render.command.ModelCommandRenderer; +import net.minecraft.client.render.command.OrderedRenderCommandQueue; import net.minecraft.client.render.entity.feature.CapeFeatureRenderer; import net.minecraft.client.render.entity.feature.FeatureRenderer; import net.minecraft.client.render.entity.feature.FeatureRendererContext; import net.minecraft.client.render.entity.model.BipedEntityModel; import net.minecraft.client.render.entity.model.PlayerEntityModel; import net.minecraft.client.render.entity.state.PlayerEntityRenderState; -import net.minecraft.client.util.SkinTextures; import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.entity.player.SkinTextures; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -26,19 +29,21 @@ public abstract class CustomCapeFeatureRenderer extends FeatureRenderer<PlayerEn } @WrapOperation( - method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/state/PlayerEntityRenderState;FF)V", - at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/entity/model/BipedEntityModel;render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumer;II)V") + method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/command/OrderedRenderCommandQueue;ILnet/minecraft/client/render/entity/state/PlayerEntityRenderState;FF)V", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/command/OrderedRenderCommandQueue;submitModel(Lnet/minecraft/client/model/Model;Ljava/lang/Object;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/RenderLayer;IIILnet/minecraft/client/render/command/ModelCommandRenderer$CrumblingOverlayCommand;)V") ) - private void onRender(BipedEntityModel<PlayerEntityRenderState> instance, MatrixStack matrixStack, VertexConsumer vertexConsumer, int light, int overlay, Operation<Void> original, @Local(argsOnly = true) PlayerEntityRenderState playerEntityRenderState, @Local SkinTextures skinTextures, @Local VertexConsumerProvider vertexConsumerProvider) { - CustomCapes.render( - playerEntityRenderState, - vertexConsumer, - RenderLayer.getEntitySolid(skinTextures.capeTexture()), - vertexConsumerProvider, - matrixStack, - updatedConsumer -> { - original.call(instance, matrixStack, updatedConsumer, light, overlay); - return Unit.INSTANCE; - }); + private void onRender(OrderedRenderCommandQueue instance, Model model, Object o, MatrixStack matrixStack, RenderLayer renderLayer, int light, int overlay, int outlineColor, ModelCommandRenderer.CrumblingOverlayCommand crumblingOverlayCommand, Operation<Void> original, + @Local(argsOnly = true) PlayerEntityRenderState playerEntityRenderState, @Local SkinTextures skinTextures) { + // TODO: 1.21.10 custom capes by pre rendering the texture id. this is more viable on this version i am fairly sure, without clogging up all of the cached image render layers +// CustomCapes.render( +// playerEntityRenderState, +// vertexConsumer, +// RenderLayer.getEntitySolid(skinTextures.cape().id()), +// vertexConsumerProvider, +// matrixStack, +// updatedConsumer -> { +// original.call(instance, matrixStack, updatedConsumer, light, overlay, outlineColor); +// return Unit.INSTANCE; +// }); } } |
