diff options
| author | viciscat <51047087+viciscat@users.noreply.github.com> | 2025-06-07 21:24:38 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-07 15:24:38 -0400 |
| commit | c491ebe8ee0ddeace28052e8e657ce2998451811 (patch) | |
| tree | bbc789feab31259f04e66b6d5575c4af4768519f /src/main/java/de | |
| parent | bf0aa92552375465d9269c615d6ead54e74fbf0e (diff) | |
| download | Skyblocker-c491ebe8ee0ddeace28052e8e657ce2998451811.tar.gz Skyblocker-c491ebe8ee0ddeace28052e8e657ce2998451811.tar.bz2 Skyblocker-c491ebe8ee0ddeace28052e8e657ce2998451811.zip | |
kitty yay (#1293)
* kitty yay
* remove eye booger
Diffstat (limited to 'src/main/java/de')
3 files changed, 91 insertions, 0 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/MiscCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/MiscCategory.java index c9820cdc..94dc8673 100644 --- a/src/main/java/de/hysky/skyblocker/config/categories/MiscCategory.java +++ b/src/main/java/de/hysky/skyblocker/config/categories/MiscCategory.java @@ -7,6 +7,7 @@ import dev.isxander.yacl3.api.ConfigCategory; import dev.isxander.yacl3.api.Option; import dev.isxander.yacl3.api.OptionDescription; import dev.isxander.yacl3.api.OptionGroup; +import dev.isxander.yacl3.api.controller.BooleanControllerBuilder; import dev.isxander.yacl3.api.controller.StringControllerBuilder; import net.minecraft.text.Text; @@ -17,6 +18,15 @@ public class MiscCategory { .name(Text.translatable("skyblocker.config.misc")) //Uncategorized Options + .option(Option.<Boolean>createBuilder() + .name(Text.literal("cat")) + .binding( + defaults.misc.cat, + () -> config.misc.cat, + newValue -> config.misc.cat = newValue) + .controller(opt -> BooleanControllerBuilder.create(opt).formatValue(b -> b ? Text.literal("yay kitty") : Text.literal(":("))) + .build() + ) //Discord RPC .group(OptionGroup.createBuilder() diff --git a/src/main/java/de/hysky/skyblocker/config/configs/MiscConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/MiscConfig.java index 919a26d8..0e426443 100644 --- a/src/main/java/de/hysky/skyblocker/config/configs/MiscConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/configs/MiscConfig.java @@ -8,6 +8,9 @@ public class MiscConfig { @SerialEntry public RichPresence richPresence = new RichPresence(); + @SerialEntry + public boolean cat = true; + public static class RichPresence { @SerialEntry public boolean enableRichPresence = false; diff --git a/src/main/java/de/hysky/skyblocker/skyblock/CatPicture.java b/src/main/java/de/hysky/skyblocker/skyblock/CatPicture.java new file mode 100644 index 00000000..42033e05 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/skyblock/CatPicture.java @@ -0,0 +1,78 @@ +package de.hysky.skyblocker.skyblock; + +import de.hysky.skyblocker.SkyblockerMod; +import de.hysky.skyblocker.annotations.Init; +import de.hysky.skyblocker.config.SkyblockerConfigManager; +import de.hysky.skyblocker.utils.Location; +import de.hysky.skyblocker.utils.Utils; +import de.hysky.skyblocker.utils.render.FrustumUtils; +import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; +import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents; +import net.minecraft.block.BlockState; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.render.OverlayTexture; +import net.minecraft.client.render.RenderLayer; +import net.minecraft.client.render.VertexConsumer; +import net.minecraft.client.render.VertexConsumerProvider; +import net.minecraft.client.render.block.BlockModelRenderer; +import net.minecraft.client.render.model.BlockStateManagers; +import net.minecraft.client.render.model.BlockStateModel; +import net.minecraft.client.texture.SpriteAtlasTexture; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.util.Identifier; +import net.minecraft.util.math.Box; +import net.minecraft.util.math.RotationAxis; +import net.minecraft.util.math.Vec3d; +import org.joml.Matrix4f; + +public class CatPicture { + + private static final Vec3d RENDER_POSITION = new Vec3d(6, 72, -92); + private static final Box CULLING_BOX = new Box(RENDER_POSITION.x, RENDER_POSITION.y, RENDER_POSITION.z, RENDER_POSITION.x + 1, RENDER_POSITION.y + 1, RENDER_POSITION.z + 1/16d); + private static final Identifier TEXTURE = Identifier.of(SkyblockerMod.NAMESPACE, "textures/cat.png"); + + @Init + public static void init() { + WorldRenderEvents.AFTER_ENTITIES.register(CatPicture::render); + } + + private static void render(WorldRenderContext context) { + if (!SkyblockerConfigManager.get().misc.cat || + Utils.getLocation() != Location.HUB || + !FrustumUtils.isVisible(CULLING_BOX) + ) return; + BlockState blockState = BlockStateManagers.getStateForItemFrame(false, true); + BlockStateModel blockStateModel = MinecraftClient.getInstance().getBlockRenderManager().getModel(blockState); + VertexConsumerProvider vertexConsumerProvider = context.consumers(); + MatrixStack matrixStack = context.matrixStack(); + if (matrixStack == null || vertexConsumerProvider == null) return; + + matrixStack.push(); + Vec3d pos = context.camera().getPos(); + matrixStack.translate(-pos.x + RENDER_POSITION.x + 1, -pos.y + RENDER_POSITION.y, -pos.z + RENDER_POSITION.z + 1); + matrixStack.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(180)); + // Render item frame + MatrixStack.Entry peek = matrixStack.peek(); + BlockModelRenderer.render( + peek, + vertexConsumerProvider.getBuffer(RenderLayer.getEntitySolidZOffsetForward(SpriteAtlasTexture.BLOCK_ATLAS_TEXTURE)), + blockStateModel, + 1.0F, + 1.0F, + 1.0F, + 15, + OverlayTexture.DEFAULT_UV + ); + // Render kitty + matrixStack.translate(1, 1, 0); + matrixStack.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(180.0F)); + Matrix4f matrix4f = peek.getPositionMatrix(); + VertexConsumer cat = vertexConsumerProvider.getBuffer(RenderLayer.getText(TEXTURE)); + float z = 1F - 1 / 16f - 1 / 2048f; + cat.vertex(matrix4f, 0.0F, 1, z).color(-1).texture(0.0F, 1.0F).light(15); + cat.vertex(matrix4f, 1, 1, z).color(-1).texture(1.0F, 1.0F).light(15); + cat.vertex(matrix4f, 1, 0.0F, z).color(-1).texture(1.0F, 0.0F).light(15); + cat.vertex(matrix4f, 0.0F, 0.0F, z).color(-1).texture(0.0F, 0.0F).light(15); + matrixStack.pop(); + } +} |
