From 8f0ad9ed0934c38e44771e1811e65cd98091a728 Mon Sep 17 00:00:00 2001 From: northernlimit Date: Fri, 6 Dec 2024 01:36:40 +0100 Subject: [PATCH] Gateway Special Model is back babyyy + sanity manager enhancements + emissive textures --- build.gradle | 4 + .../limit/cubliminal/CubliminalClient.java | 32 +++- .../block/custom/TheLobbyGatewayBlock.java | 2 +- .../entity/TheLobbyGatewayBlockEntity.java | 10 +- .../client/hud/SanityBarHudOverlay.java | 17 +- .../client/render/ManilaGatewayRenderer.java | 70 +++++++ .../client/render/SkyboxRenderer.java | 78 -------- .../cubliminal/event/ServerTickHandler.java | 15 +- .../event/command/SanityCommand.java | 4 +- .../init/CubliminalModelRenderers.java | 24 --- .../cubliminal/item/AlmondWaterBlockItem.java | 9 +- .../limit/cubliminal/util/NoClipEngine.java | 5 +- .../net/limit/cubliminal/util/SanityData.java | 83 --------- .../limit/cubliminal/util/SanityManager.java | 96 ++++++++++ .../cubliminal/models/block/exit_sign.json | 29 ++- .../models/block/smoke_detector.json | 55 ++++-- .../block/the_lobby_gateway_block_on.json | 3 - .../cubliminal/textures/block/exit_sign.png | Bin 336 -> 327 bytes .../cubliminal/textures/block/exit_sign_e.png | Bin 0 -> 174 bytes .../textures/block/smoke_detector.png | Bin 184 -> 203 bytes .../textures/block/smoke_detector_e.png | Bin 0 -> 96 bytes .../rendertype_cubliminal_manila_skybox.json | 171 ++---------------- .../core/rendertype_cubliminal_skybox.vsh | 4 +- src/main/resources/cubliminal.accesswidener | 2 + src/main/resources/fabric.mod.json | 3 +- 25 files changed, 307 insertions(+), 409 deletions(-) create mode 100644 src/main/java/net/limit/cubliminal/client/render/ManilaGatewayRenderer.java delete mode 100644 src/main/java/net/limit/cubliminal/client/render/SkyboxRenderer.java delete mode 100644 src/main/java/net/limit/cubliminal/init/CubliminalModelRenderers.java delete mode 100644 src/main/java/net/limit/cubliminal/util/SanityData.java create mode 100644 src/main/java/net/limit/cubliminal/util/SanityManager.java create mode 100644 src/main/resources/assets/cubliminal/textures/block/exit_sign_e.png create mode 100644 src/main/resources/assets/cubliminal/textures/block/smoke_detector_e.png create mode 100644 src/main/resources/cubliminal.accesswidener diff --git a/build.gradle b/build.gradle index 5600cd6..62cd25c 100644 --- a/build.gradle +++ b/build.gradle @@ -10,6 +10,10 @@ base { archivesName = project.archives_base_name } +loom { + accessWidenerPath = file("src/main/resources/cubliminal.accesswidener") +} + repositories { mavenCentral() maven { diff --git a/src/main/java/net/limit/cubliminal/CubliminalClient.java b/src/main/java/net/limit/cubliminal/CubliminalClient.java index ee0a451..653ada2 100644 --- a/src/main/java/net/limit/cubliminal/CubliminalClient.java +++ b/src/main/java/net/limit/cubliminal/CubliminalClient.java @@ -9,25 +9,50 @@ import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; import net.limit.cubliminal.client.hud.NoClippingHudOverlay; import net.limit.cubliminal.client.hud.SanityBarHudOverlay; +import net.limit.cubliminal.client.render.ManilaGatewayRenderer; import net.limit.cubliminal.entity.client.SeatRenderer; import net.limit.cubliminal.event.KeyInputHandler; import net.limit.cubliminal.init.*; import net.limit.cubliminal.util.IEntityDataSaver; +import net.minecraft.client.gl.ShaderProgramKey; +import net.minecraft.client.gl.ShaderProgramKeys; import net.minecraft.client.network.ClientPlayerEntity; -import net.minecraft.client.render.RenderLayer; +import net.minecraft.client.render.*; +import net.minecraft.client.render.block.entity.BlockEntityRendererFactories; @Environment(EnvType.CLIENT) public class CubliminalClient implements ClientModInitializer { + + public static final ShaderProgramKey RENDERTYPE_CUBLIMINAL_MANILA_SKYBOX = ShaderProgramKeys.register("rendertype_cubliminal_manila_skybox", VertexFormats.POSITION_COLOR_TEXTURE_OVERLAY_LIGHT_NORMAL); + + public static final RenderPhase.ShaderProgram MANILA_PROGRAM = new RenderPhase.ShaderProgram(RENDERTYPE_CUBLIMINAL_MANILA_SKYBOX); + + public static final RenderLayer MANILA = RenderLayer.of("manila", VertexFormats.POSITION, + VertexFormat.DrawMode.QUADS, 1536, false, false, + RenderLayer.MultiPhaseParameters.builder().program(MANILA_PROGRAM).texture( + RenderPhase.Textures.create() + .add(Cubliminal.id("textures/sky/manila_" + 0 + ".png"), false, false) + .add(Cubliminal.id("textures/sky/manila_" + 1 + ".png"), false, false) + .add(Cubliminal.id("textures/sky/manila_" + 2 + ".png"), false, false) + .add(Cubliminal.id("textures/sky/manila_" + 3 + ".png"), false, false) + .add(Cubliminal.id("textures/sky/manila_" + 4 + ".png"), false, false) + .add(Cubliminal.id("textures/sky/manila_" + 5 + ".png"), false, false) + .build()).build(false)); + @Override public void onInitializeClient() { BlockRenderLayerMap.INSTANCE.putBlock(CubliminalBlocks.THE_LOBBY_GATEWAY_BLOCK, RenderLayer.getCutout()); BlockRenderLayerMap.INSTANCE.putBlocks(RenderLayer.getTranslucent(), + CubliminalBlocks.THE_LOBBY_GATEWAY_BLOCK, CubliminalBlocks.EMERGENCY_EXIT_DOOR_0, CubliminalBlocks.MOLD, - CubliminalBlocks.JUMBLED_DOCUMENTS); + CubliminalBlocks.JUMBLED_DOCUMENTS, + CubliminalBlocks.EXIT_SIGN, + CubliminalBlocks.SMOKE_DETECTOR); + + BlockEntityRendererFactories.register(CubliminalBlockEntities.THE_LOBBY_GATEWAY_BLOCK_ENTITY, ManilaGatewayRenderer::new); KeyInputHandler.register(); - //CubliminalModelRenderers.init(); EntityRendererRegistry .register(CubliminalEntities.SEAT_ENTITY, SeatRenderer::new); @@ -46,4 +71,5 @@ public void onInitializeClient() { HudRenderCallback.EVENT.register(NoClippingHudOverlay.INSTANCE); HudRenderCallback.EVENT.register(new SanityBarHudOverlay()); } + } diff --git a/src/main/java/net/limit/cubliminal/block/custom/TheLobbyGatewayBlock.java b/src/main/java/net/limit/cubliminal/block/custom/TheLobbyGatewayBlock.java index 79e6b16..b9befd2 100644 --- a/src/main/java/net/limit/cubliminal/block/custom/TheLobbyGatewayBlock.java +++ b/src/main/java/net/limit/cubliminal/block/custom/TheLobbyGatewayBlock.java @@ -20,7 +20,7 @@ public class TheLobbyGatewayBlock extends BlockWithEntity implements BlockEntityProvider { public static final MapCodec CODEC = TheLobbyGatewayBlock.createCodec(TheLobbyGatewayBlock::new); - private static final BooleanProperty LIT = Properties.LIT; + public static final BooleanProperty LIT = Properties.LIT; public TheLobbyGatewayBlock(Settings settings) { super(settings); this.setDefaultState(this.stateManager.getDefaultState().with(LIT, true)); diff --git a/src/main/java/net/limit/cubliminal/block/entity/TheLobbyGatewayBlockEntity.java b/src/main/java/net/limit/cubliminal/block/entity/TheLobbyGatewayBlockEntity.java index 2af6dd9..762e4e7 100644 --- a/src/main/java/net/limit/cubliminal/block/entity/TheLobbyGatewayBlockEntity.java +++ b/src/main/java/net/limit/cubliminal/block/entity/TheLobbyGatewayBlockEntity.java @@ -5,8 +5,9 @@ import net.limit.cubliminal.init.CubliminalBlockEntities; import net.limit.cubliminal.init.CubliminalBlocks; import net.limit.cubliminal.init.CubliminalRegistrar; -import net.limit.cubliminal.util.SanityData; +import net.limit.cubliminal.util.SanityManager; import net.minecraft.advancement.criterion.Criteria; +import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.entity.BlockEntity; import net.minecraft.entity.Entity; @@ -20,6 +21,7 @@ import net.minecraft.state.property.Properties; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Box; +import net.minecraft.util.math.Direction; import net.minecraft.util.math.Vec3d; import net.minecraft.world.TeleportTarget; import net.minecraft.world.World; @@ -68,7 +70,7 @@ public static void tick(World world, BlockPos pos, BlockState state, TheLobbyGat .getDefaultState().with(Properties.LIT, false))) { for (Entity entity : world.getEntitiesByClass(Entity.class, new Box(pos).expand(16, 2, 11), Entity::isPlayer)) { - SanityData.resetTimer((ServerPlayerEntity) entity); + SanityManager.resetTimer((ServerPlayerEntity) entity); } } List list = world.getEntitiesByClass(Entity.class, new Box(pos), TheLobbyGatewayBlockEntity::canTeleport); @@ -129,4 +131,8 @@ public static boolean canTeleport(Entity entity) { public NbtCompound toInitialChunkDataNbt(RegistryWrapper.WrapperLookup registryLookup) { return this.createNbt(registryLookup); } + + public boolean shouldDrawSide(Direction direction) { + return Block.shouldDrawSide(this.getCachedState(), this.world.getBlockState(this.getPos().offset(direction)), direction); + } } diff --git a/src/main/java/net/limit/cubliminal/client/hud/SanityBarHudOverlay.java b/src/main/java/net/limit/cubliminal/client/hud/SanityBarHudOverlay.java index 3d3937a..f998781 100644 --- a/src/main/java/net/limit/cubliminal/client/hud/SanityBarHudOverlay.java +++ b/src/main/java/net/limit/cubliminal/client/hud/SanityBarHudOverlay.java @@ -37,29 +37,26 @@ public void onHudRender(DrawContext drawContext, RenderTickCounter tickCounter) Identifier texture; RenderSystem.enableBlend(); - if (i > 8) { + if (i > 80) { texture = SANITY_BAR_0; - } else if (i > 6) { + } else if (i > 60) { texture = SANITY_BAR_1; - } else if (i > 3) { + } else if (i > 30) { texture = SANITY_BAR_2; - } else if (i > 1) { + } else if (i > 10) { texture = SANITY_BAR_3; } else { texture = SANITY_BAR_4; } - //drawContext.drawTexture(texture, x, l, 2, 0, 12, 32, 32, 32); drawContext.drawTexture(RenderLayer::getGuiTextured, texture, x, l, 2, 0, 12, 32, 32, 32); if (i > 0) { - int k = (int) (i * 0.1 * 28); - //drawContext.drawTexture(texture, x + 2, l + 30 - k, 20, 30 - k, 8, k, 32, 32); + int k = (int) (i * 0.01 * 28); drawContext.drawTexture(RenderLayer::getGuiTextured, texture, x + 2, l + 30 - k, 20, 30 - k, 8, k, 32, 32); } - int j = 3; - if (i > 9) j = 4; - String string = i * 10 + "%"; + int j = i > 90 ? 4 : 3; + String string = i + "%"; drawContext.drawText(client.inGameHud.getTextRenderer(), string, x - j, l - 7, 20165255, true); RenderSystem.disableBlend(); } diff --git a/src/main/java/net/limit/cubliminal/client/render/ManilaGatewayRenderer.java b/src/main/java/net/limit/cubliminal/client/render/ManilaGatewayRenderer.java new file mode 100644 index 0000000..4973791 --- /dev/null +++ b/src/main/java/net/limit/cubliminal/client/render/ManilaGatewayRenderer.java @@ -0,0 +1,70 @@ +package net.limit.cubliminal.client.render; + +import com.mojang.blaze3d.systems.RenderSystem; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.limit.cubliminal.CubliminalClient; +import net.limit.cubliminal.block.custom.TheLobbyGatewayBlock; +import net.limit.cubliminal.block.entity.TheLobbyGatewayBlockEntity; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gl.ShaderProgram; +import net.minecraft.client.render.*; +import net.minecraft.client.render.block.entity.BlockEntityRenderer; +import net.minecraft.client.render.block.entity.BlockEntityRendererFactory; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.util.math.Direction; +import net.minecraft.util.math.RotationAxis; +import org.joml.Matrix4f; + +@Environment(EnvType.CLIENT) +public class ManilaGatewayRenderer implements BlockEntityRenderer { + + public ManilaGatewayRenderer(BlockEntityRendererFactory.Context ctx) { + } + + @Override + public void render(TheLobbyGatewayBlockEntity entity, float tickDelta, MatrixStack matrices, + VertexConsumerProvider vertexConsumers, int light, int overlay) { + if (entity.getCachedState().get(TheLobbyGatewayBlock.LIT)) { + matrices.push(); + + MinecraftClient client = MinecraftClient.getInstance(); + + VertexConsumer vertexConsumer = vertexConsumers.getBuffer(getLayer()); + ShaderProgram shader = RenderSystem.setShader(CubliminalClient.RENDERTYPE_CUBLIMINAL_MANILA_SKYBOX); + + + Matrix4f positionMatrix = matrices.peek().getPositionMatrix(); + this.renderSide(entity, positionMatrix, vertexConsumer, 0.0F, 1.0F, 0.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, Direction.SOUTH); + this.renderSide(entity, positionMatrix, vertexConsumer, 0.0F, 1.0F, 1.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, Direction.NORTH); + this.renderSide(entity, positionMatrix, vertexConsumer, 1.0F, 1.0F, 1.0F, 0.0F, 0.0F, 1.0F, 1.0F, 0.0F, Direction.EAST); + this.renderSide(entity, positionMatrix, vertexConsumer, 0.0F, 0.0F, 0.0F, 1.0F, 0.0F, 1.0F, 1.0F, 0.0F, Direction.WEST); + this.renderSide(entity, positionMatrix, vertexConsumer, 0.0F, 1.0F, 0.0F, 0.0F, 0.0F, 0.0F, 1.0F, 1.0F, Direction.DOWN); + this.renderSide(entity, positionMatrix, vertexConsumer, 0.0F, 1.0F, 1.0F, 1.0F, 1.0F, 1.0F, 0.0F, 0.0F, Direction.UP); + + Camera camera = client.gameRenderer.getCamera(); + Matrix4f rotation = new MatrixStack().peek().getPositionMatrix(); + rotation.rotate(RotationAxis.POSITIVE_X.rotationDegrees(camera.getPitch())); + rotation.rotate(RotationAxis.POSITIVE_Y.rotationDegrees(camera.getYaw() + 180.0F)); + + if (shader.getUniform("RotMat") != null) { + shader.getUniform("RotMat").set(rotation); + } + + matrices.pop(); + } + } + + private void renderSide(TheLobbyGatewayBlockEntity entity, Matrix4f model, VertexConsumer vertices, float x1, float x2, float y1, float y2, float z1, float z2, float z3, float z4, Direction side) { + if (entity.shouldDrawSide(side)) { + vertices.vertex(model, x1, y1, z1); + vertices.vertex(model, x2, y1, z2); + vertices.vertex(model, x2, y2, z3); + vertices.vertex(model, x1, y2, z4); + } + } + + public RenderLayer getLayer() { + return CubliminalClient.MANILA; + } +} diff --git a/src/main/java/net/limit/cubliminal/client/render/SkyboxRenderer.java b/src/main/java/net/limit/cubliminal/client/render/SkyboxRenderer.java deleted file mode 100644 index e145c11..0000000 --- a/src/main/java/net/limit/cubliminal/client/render/SkyboxRenderer.java +++ /dev/null @@ -1,78 +0,0 @@ -package net.limit.cubliminal.client.render; - -/* -import com.mojang.blaze3d.systems.RenderSystem; -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.limit.cubliminal.Cubliminal; -import net.limit.cubliminal.util.GameRendererAccessor; -import net.ludocrypt.specialmodels.api.SpecialModelRenderer; -import net.ludocrypt.specialmodels.impl.render.MutableQuad; -import net.minecraft.block.BlockState; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gl.ShaderProgram; -import net.minecraft.client.render.Camera; -import net.minecraft.client.render.chunk.ChunkRendererRegion; -import net.minecraft.client.render.model.BakedModel; -import net.minecraft.client.render.model.BakedQuad; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.RotationAxis; -import net.minecraft.util.math.Vec2f; -import org.joml.Matrix4f; - -@Environment(EnvType.CLIENT) -public class SkyboxRenderer extends SpecialModelRenderer { - - private final String id; - - public SkyboxRenderer(String id) { - this.id = id; - } - - @Override - @Environment(EnvType.CLIENT) - public void setup(MatrixStack matrices, Matrix4f viewMatrix, Matrix4f positionMatrix, float tickDelta, - ShaderProgram shader, BlockPos origin) { - - for (int i = 0; i < 6; i++) { - RenderSystem.setShaderTexture(i, Cubliminal.id("textures/sky/" + id + "_" + i + ".png")); - } - - MinecraftClient client = MinecraftClient.getInstance(); - Camera camera = client.gameRenderer.getCamera(); - Matrix4f matrix = new MatrixStack().peek().getPositionMatrix(); - matrix.rotate(RotationAxis.POSITIVE_X.rotationDegrees(camera.getPitch())); - matrix.rotate(RotationAxis.POSITIVE_Y.rotationDegrees(camera.getYaw() + 180.0F)); - - if (shader.getUniform("RotMat") != null) { - shader.getUniform("RotMat").set(matrix); - } - - MatrixStack matrixStack = new MatrixStack(); - ((GameRendererAccessor) client.gameRenderer).cubliminal$callTiltViewWhenHurt(matrixStack, tickDelta); - - if (client.options.getBobView().getValue()) { - ((GameRendererAccessor) client.gameRenderer).cubliminal$callBobView(matrixStack, tickDelta); - } - - if (shader.getUniform("bobMat") != null) { - shader.getUniform("bobMat").set(matrixStack.peek().getPositionMatrix()); - } - - } - - @Override - @Environment(EnvType.CLIENT) - public MutableQuad modifyQuad(ChunkRendererRegion chunkRenderRegion, BlockPos pos, BlockState state, BakedModel model, - BakedQuad quadIn, long modelSeed, MutableQuad quad) { - quad.getV1().setUv(new Vec2f(0.0F, 0.0F)); - quad.getV2().setUv(new Vec2f(0.0F, 1.0F)); - quad.getV3().setUv(new Vec2f(1.0F, 1.0F)); - quad.getV4().setUv(new Vec2f(1.0F, 0.0F)); - return quad; - } - -} - - */ diff --git a/src/main/java/net/limit/cubliminal/event/ServerTickHandler.java b/src/main/java/net/limit/cubliminal/event/ServerTickHandler.java index c32b3cf..4b68b21 100644 --- a/src/main/java/net/limit/cubliminal/event/ServerTickHandler.java +++ b/src/main/java/net/limit/cubliminal/event/ServerTickHandler.java @@ -5,7 +5,7 @@ import net.limit.cubliminal.advancements.AdvancementHelper; import net.limit.cubliminal.util.IEntityDataSaver; import net.limit.cubliminal.util.NoClipEngine; -import net.limit.cubliminal.util.SanityData; +import net.limit.cubliminal.util.SanityManager; import net.minecraft.nbt.NbtCompound; import net.minecraft.registry.RegistryKey; import net.minecraft.server.MinecraftServer; @@ -27,18 +27,17 @@ public void onStartTick(MinecraftServer server) { for (ServerPlayerEntity player : server.getPlayerManager().getPlayerList()) { boolean isVulnerable = !player.isCreative() && !player.isSpectator(); // sync both sanity and no-clip cooldown - SanityData.syncSanity(player); + SanityManager.syncSanity(player); NoClipEngine.syncNoClip(player); // run no-clip cooldown - if (NoClipEngine.isNoClipping(player) || (isVulnerable && AdvancementHelper.visitedManilaRoom(player))) { + if (NoClipEngine.isNoClipping(player) || (isVulnerable && inBackrooms(player.getWorld().getRegistryKey()) + && AdvancementHelper.visitedManilaRoom(player))) { NoClipEngine.run(player); } // run sanity stuff if (isVulnerable && inBackrooms(player.getWorld().getRegistryKey()) && !player.getWorld().getDifficulty().equals(Difficulty.PEACEFUL)) { - if (player.getWorld().getTime() % 200 == 0) { - SanityData.run(player); - } + SanityManager.run(player); } } @@ -49,7 +48,7 @@ public static void afterWorldChange(ServerPlayerEntity player, ServerWorld origi RegistryKey key = destination.getRegistryKey(); if (inBackrooms(key) && !AdvancementHelper.visitedManilaRoom(player)) { // reset sanity as it was uninitialized - SanityData.resetTimer(player); + SanityManager.resetTimer(player); } } @@ -57,6 +56,6 @@ public static void onAfterDeath(ServerPlayerEntity oldPlayer, ServerPlayerEntity NbtCompound oldNbt = IEntityDataSaver.cast(oldPlayer); NbtCompound newNbt = IEntityDataSaver.cast(newPlayer); newNbt.putInt("ticksToNc", oldNbt.getInt("ticksToNc")); - SanityData.resetTimer(newPlayer); + SanityManager.resetTimer(newPlayer); } } diff --git a/src/main/java/net/limit/cubliminal/event/command/SanityCommand.java b/src/main/java/net/limit/cubliminal/event/command/SanityCommand.java index 5ab3d57..d5e1b13 100644 --- a/src/main/java/net/limit/cubliminal/event/command/SanityCommand.java +++ b/src/main/java/net/limit/cubliminal/event/command/SanityCommand.java @@ -19,7 +19,7 @@ public static void register(CommandDispatcher dispatcher, C .then(CommandManager.argument("targets", EntityArgumentType.players()) .executes(context -> execute(context.getSource(), EntityArgumentType.getPlayers(context, "targets"))) .then(CommandManager.literal("set") - .then(CommandManager.argument("amount", IntegerArgumentType.integer(0, 10)) + .then(CommandManager.argument("amount", IntegerArgumentType.integer(0, 100)) .executes(context -> execute(context.getSource(), EntityArgumentType.getPlayers(context, "targets"), IntegerArgumentType.getInteger(context, "amount"))))))); } @@ -45,7 +45,7 @@ private static int execute(ServerCommandSource source, Collection targets, int amount) { - if (amount < 0 || amount > 10) { + if (amount < 0 || amount > 100) { source.sendError(Text.translatable("commands.sanity.failed.invalid_range")); return 0; } diff --git a/src/main/java/net/limit/cubliminal/init/CubliminalModelRenderers.java b/src/main/java/net/limit/cubliminal/init/CubliminalModelRenderers.java deleted file mode 100644 index 0b7da9e..0000000 --- a/src/main/java/net/limit/cubliminal/init/CubliminalModelRenderers.java +++ /dev/null @@ -1,24 +0,0 @@ -package net.limit.cubliminal.init; -/* -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.limit.cubliminal.Cubliminal; -import net.limit.cubliminal.client.render.SkyboxRenderer; -import net.ludocrypt.specialmodels.api.SpecialModelRenderer; -import net.minecraft.registry.Registry; - -@Environment(EnvType.CLIENT) -public class CubliminalModelRenderers { - - public static final SpecialModelRenderer MANILA_SKYBOX_RENDERER = - get("manila_skybox", new SkyboxRenderer("manila")); - - public static S get(String id, S modelRenderer) { - return Registry.register(SpecialModelRenderer.SPECIAL_MODEL_RENDERER, Cubliminal.id(id), modelRenderer); - } - - public static void init() { - } -} - - */ diff --git a/src/main/java/net/limit/cubliminal/item/AlmondWaterBlockItem.java b/src/main/java/net/limit/cubliminal/item/AlmondWaterBlockItem.java index 17aa41b..40768f4 100644 --- a/src/main/java/net/limit/cubliminal/item/AlmondWaterBlockItem.java +++ b/src/main/java/net/limit/cubliminal/item/AlmondWaterBlockItem.java @@ -2,21 +2,16 @@ import net.limit.cubliminal.block.custom.AlmondWaterBlock; import net.limit.cubliminal.init.CubliminalEffects; -import net.limit.cubliminal.util.SanityData; +import net.limit.cubliminal.util.SanityManager; import net.minecraft.advancement.criterion.Criteria; import net.minecraft.block.Block; import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.BlockItem; import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUsage; import net.minecraft.item.consume.UseAction; import net.minecraft.registry.Registries; import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.sound.SoundEvent; -import net.minecraft.sound.SoundEvents; import net.minecraft.stat.Stats; -import net.minecraft.util.Hand; import net.minecraft.world.World; import org.apache.commons.lang3.Validate; @@ -34,7 +29,7 @@ public ItemStack finishUsing(ItemStack stack, World world, LivingEntity user) { Criteria.CONSUME_ITEM.trigger(serverPlayerEntity, stack); serverPlayerEntity.incrementStat(Stats.USED.getOrCreateStat(this)); if (!world.isClient) { - SanityData.resetTimer(serverPlayerEntity); + SanityManager.resetTimer(serverPlayerEntity); user.removeStatusEffect(Registries.STATUS_EFFECT.getEntry(CubliminalEffects.PARANOIA)); } } diff --git a/src/main/java/net/limit/cubliminal/util/NoClipEngine.java b/src/main/java/net/limit/cubliminal/util/NoClipEngine.java index 333633e..038cca4 100644 --- a/src/main/java/net/limit/cubliminal/util/NoClipEngine.java +++ b/src/main/java/net/limit/cubliminal/util/NoClipEngine.java @@ -52,8 +52,7 @@ public static void run(ServerPlayerEntity playerEntity) { noClipDestination(playerEntity); } - //ticksToNc = playerEntity.getRandom().nextInt(6000) + 12000; - ticksToNc = 100; + ticksToNc = playerEntity.getRandom().nextInt(6000) + 12000; } nbt.putInt("ticksToNc", ticksToNc); @@ -110,7 +109,7 @@ public static void syncNoClip(ServerPlayerEntity playerEntity) { public static void afterNoCLip(Entity entity) { if (entity instanceof PlayerEntity player) { - player.addStatusEffect(new StatusEffectInstance(StatusEffects.BLINDNESS, 60, 0, true, false, true)); + player.addStatusEffect(new StatusEffectInstance(StatusEffects.BLINDNESS, 100, 0, true, false, true)); } } } diff --git a/src/main/java/net/limit/cubliminal/util/SanityData.java b/src/main/java/net/limit/cubliminal/util/SanityData.java deleted file mode 100644 index fe6e978..0000000 --- a/src/main/java/net/limit/cubliminal/util/SanityData.java +++ /dev/null @@ -1,83 +0,0 @@ -package net.limit.cubliminal.util; - -import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; -import net.limit.cubliminal.init.CubliminalBiomes; -import net.limit.cubliminal.init.CubliminalEffects; -import net.limit.cubliminal.init.CubliminalPackets; -import net.minecraft.entity.effect.StatusEffectInstance; -import net.minecraft.entity.effect.StatusEffects; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.registry.Registries; -import net.minecraft.registry.RegistryKey; -import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.stat.Stats; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.random.Random; -import net.minecraft.world.Difficulty; -import net.minecraft.world.biome.Biome; - -import java.util.Optional; - -public class SanityData { - public static void run(ServerPlayerEntity playerEntity) { - NbtCompound nbt = IEntityDataSaver.cast(playerEntity); - Random random = playerEntity.getRandom(); - int sanity = nbt.getInt("sanity"); - int bound = playerEntity.isSprinting() ? 18 : 16; - // days without sleeping - int days = MathHelper.clamp(playerEntity.getStatHandler().getStat(Stats.CUSTOM - .getOrCreateStat(Stats.TIME_SINCE_REST)), 1, Integer.MAX_VALUE); - if (playerEntity.getWorld().getLightLevel(playerEntity.getBlockPos()) < 3 || random.nextInt(days) < 72000) { - bound -= 3; - } - // biomes that drop sanity even faster - Optional> registryKey = playerEntity.getWorld().getBiome(playerEntity.getBlockPos()).getKey(); - if (registryKey.isPresent() && registryKey.get().equals(CubliminalBiomes.REDROOMS_BIOME)) { - bound -= 2; - } - - Difficulty difficulty = playerEntity.getWorld().getDifficulty(); - if (difficulty.equals(Difficulty.HARD)) { - bound -= 2; - } else if (difficulty.equals(Difficulty.EASY)) { - bound += 2; - } - // decrease sanity - if (random.nextInt(bound) == 0) --sanity; - sanity = Math.clamp(sanity, 0, 10); - - // status effects - if (sanity < 2) { - if (sanity == 0) { - playerEntity.addStatusEffect(new StatusEffectInstance( - Registries.STATUS_EFFECT.getEntry(CubliminalEffects.PARANOIA), - 400, 0, false, false, false)); - } - - switch (random.nextInt(5 + 2 * sanity)) { - case 1: - playerEntity.addStatusEffect(new StatusEffectInstance(StatusEffects.NAUSEA, 60, - 1, false, false, false)); - case 2: - playerEntity.addStatusEffect(new StatusEffectInstance(StatusEffects.MINING_FATIGUE, 200, - 0, false, false, false)); - case 3: - playerEntity.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, 200, - 0, false, false, false)); - default: - break; - } - } - - nbt.putInt("sanity", sanity); - } - - public static void resetTimer(ServerPlayerEntity playerEntity) { - IEntityDataSaver.cast(playerEntity).putInt("sanity", 10); - } - - public static void syncSanity(ServerPlayerEntity playerEntity) { - int sanity = IEntityDataSaver.cast(playerEntity).getInt("sanity"); - ServerPlayNetworking.send(playerEntity, new CubliminalPackets.SanitySyncPayload(sanity)); - } -} diff --git a/src/main/java/net/limit/cubliminal/util/SanityManager.java b/src/main/java/net/limit/cubliminal/util/SanityManager.java new file mode 100644 index 0000000..8074caf --- /dev/null +++ b/src/main/java/net/limit/cubliminal/util/SanityManager.java @@ -0,0 +1,96 @@ +package net.limit.cubliminal.util; + +import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; +import net.limit.cubliminal.Cubliminal; +import net.limit.cubliminal.init.CubliminalBiomes; +import net.limit.cubliminal.init.CubliminalEffects; +import net.limit.cubliminal.init.CubliminalPackets; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.nbt.NbtCompound; +import net.minecraft.registry.Registries; +import net.minecraft.registry.RegistryKey; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.stat.Stats; +import net.minecraft.util.math.random.Random; +import net.minecraft.world.Difficulty; +import net.minecraft.world.biome.Biome; + +import java.util.Optional; + +public class SanityManager { + + public static void run(ServerPlayerEntity player) { + NbtCompound nbt = IEntityDataSaver.cast(player); + Random random = player.getRandom(); + int bound = player.isSprinting() ? 18 : 16; + + // days without sleeping and light level + int daysSinceRest = player.getStatHandler().getStat(Stats.CUSTOM.getOrCreateStat(Stats.TIME_SINCE_REST)) / 24000; + if (player.getWorld().getLightLevel(player.getBlockPos()) < 4 || daysSinceRest > 2) { + bound -= 3; + } + // biomes that drop sanity even faster + Optional> registryKey = player.getWorld().getBiome(player.getBlockPos()).getKey(); + if (registryKey.isPresent() && registryKey.get().equals(CubliminalBiomes.REDROOMS_BIOME)) { + bound -= 5; + } + // difficulty + Difficulty difficulty = player.getWorld().getDifficulty(); + if (difficulty.equals(Difficulty.HARD)) { + bound -= 3; + } else if (difficulty.equals(Difficulty.EASY)) { + bound += 3; + } + bound *= 2; + + // decrease sanity if needed + if (random.nextInt(bound) == 0) { + decrease(player, nbt, random); + } + } + + public static void decrease(ServerPlayerEntity player, NbtCompound nbt, Random random) { + int sanity = nbt.getInt("sanity"); + int mentalFatigue = nbt.getInt("mentalFatigue") + 1; + + if (mentalFatigue > 10) { + mentalFatigue = 0; + sanity = Math.max(sanity - 1, 0); + nbt.putInt("sanity", sanity); + + if (sanity < 20) { + if (sanity < 5) { + player.addStatusEffect(new StatusEffectInstance( + Registries.STATUS_EFFECT.getEntry(CubliminalEffects.PARANOIA), + 400, 0, true, false, true)); + } + switch (random.nextInt(5 + sanity)) { + case 1: + player.addStatusEffect(new StatusEffectInstance(StatusEffects.NAUSEA, 60, + 1, false, false, false)); + case 2: + player.addStatusEffect(new StatusEffectInstance(StatusEffects.MINING_FATIGUE, 200, + 0, false, false, false)); + case 3: + player.addStatusEffect(new StatusEffectInstance(StatusEffects.SLOWNESS, 200, + 0, false, false, false)); + default: + break; + } + } + } + + nbt.putInt("mentalFatigue", mentalFatigue); + } + + public static void resetTimer(ServerPlayerEntity playerEntity) { + IEntityDataSaver.cast(playerEntity).putInt("sanity", 100); + IEntityDataSaver.cast(playerEntity).putInt("mentalFatigue", 0); + } + + public static void syncSanity(ServerPlayerEntity playerEntity) { + int sanity = IEntityDataSaver.cast(playerEntity).getInt("sanity"); + ServerPlayNetworking.send(playerEntity, new CubliminalPackets.SanitySyncPayload(sanity)); + } +} diff --git a/src/main/resources/assets/cubliminal/models/block/exit_sign.json b/src/main/resources/assets/cubliminal/models/block/exit_sign.json index 2c220de..abf72f4 100644 --- a/src/main/resources/assets/cubliminal/models/block/exit_sign.json +++ b/src/main/resources/assets/cubliminal/models/block/exit_sign.json @@ -2,20 +2,35 @@ "texture_size": [32, 32], "textures": { "0": "cubliminal:block/exit_sign", + "1": "cubliminal:block/exit_sign_e", "particle": "cubliminal:block/exit_sign" }, "elements": [ { "from": [0, 4, 0], "to": [16, 13, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 8, 0]}, + "rotation": {"angle": 0, "axis": "y", "origin": [0, 4, 0]}, "faces": { - "north": {"uv": [0, 0, 8, 4.5], "texture": "#0"}, - "east": {"uv": [8, 1, 8.5, 5.5], "texture": "#0"}, - "south": {"uv": [0, 4.5, 8, 9], "texture": "#0"}, - "west": {"uv": [8, 5.5, 8.5, 10], "texture": "#0"}, - "up": {"uv": [16, 0.5, 8, 0], "texture": "#0"}, - "down": {"uv": [16, 0.5, 8, 1], "texture": "#0"} + "north": {"uv": [0, 0, 8, 4.5], "texture": "#0", "tintindex": 0}, + "east": {"uv": [8, 1, 8.5, 5.5], "texture": "#0", "tintindex": 0}, + "south": {"uv": [0, 4.5, 8, 9], "texture": "#0", "tintindex": 0}, + "west": {"uv": [8, 5.5, 8.5, 10], "texture": "#0", "tintindex": 0}, + "up": {"uv": [16, 0.5, 8, 0], "texture": "#0", "tintindex": 0}, + "down": {"uv": [16, 0.5, 8, 1], "texture": "#0", "tintindex": 0} + } + }, + { + "from": [0, 4, 0], + "to": [16, 13, 1], + "light_emission": 15, + "rotation": {"angle": 0, "axis": "y", "origin": [0, 4, 0]}, + "faces": { + "north": {"uv": [0, 0, 8, 4.5], "texture": "#1", "tintindex": 0}, + "east": {"uv": [8, 1, 8.5, 5.5], "texture": "#1", "tintindex": 0}, + "south": {"uv": [0, 4.5, 8, 9], "texture": "#1", "tintindex": 0}, + "west": {"uv": [8, 5.5, 8.5, 10], "texture": "#1", "tintindex": 0}, + "up": {"uv": [16, 0.5, 8, 0], "texture": "#1", "tintindex": 0}, + "down": {"uv": [16, 0.5, 8, 1], "texture": "#1", "tintindex": 0} } } ], diff --git a/src/main/resources/assets/cubliminal/models/block/smoke_detector.json b/src/main/resources/assets/cubliminal/models/block/smoke_detector.json index 15aa43e..1ea4351 100644 --- a/src/main/resources/assets/cubliminal/models/block/smoke_detector.json +++ b/src/main/resources/assets/cubliminal/models/block/smoke_detector.json @@ -1,21 +1,36 @@ { - "parent": "block/cube_all", - "textures": { - "1": "cubliminal:block/smoke_detector", - "particle": "cubliminal:block/smoke_detector" - }, - "elements": [ - { - "from": [6, 14, 6], - "to": [10, 16, 10], - "faces": { - "north": {"uv": [4, 0, 8, 2], "texture": "#1"}, - "east": {"uv": [4, 2, 8, 4], "texture": "#1"}, - "south": {"uv": [4, 4, 8, 6], "texture": "#1"}, - "west": {"uv": [4, 6, 8, 8], "texture": "#1"}, - "up": {"uv": [4, 4, 0, 0], "texture": "#1"}, - "down": {"uv": [4, 4, 0, 8], "texture": "#1"} - } - } - ] -} + "parent": "block/cube_all", + "textures": { + "1": "cubliminal:block/smoke_detector_e", + "2": "cubliminal:block/smoke_detector", + "particle": "cubliminal:block/smoke_detector" + }, + "elements": [ + { + "from": [6, 14, 6], + "to": [10, 16, 10], + "faces": { + "north": {"uv": [4, 0, 8, 2], "texture": "#2", "tintindex": 0}, + "east": {"uv": [4, 2, 8, 4], "texture": "#2", "tintindex": 0}, + "south": {"uv": [4, 4, 8, 6], "texture": "#2", "tintindex": 0}, + "west": {"uv": [4, 6, 8, 8], "texture": "#2", "tintindex": 0}, + "up": {"uv": [4, 4, 0, 0], "texture": "#2", "tintindex": 0}, + "down": {"uv": [4, 4, 0, 8], "texture": "#2", "tintindex": 0} + } + }, + { + "from": [6, 14, 6], + "to": [10, 16, 10], + "light_emission": 15, + "rotation": {"angle": 0, "axis": "y", "origin": [8, 14, 6]}, + "faces": { + "north": {"uv": [4, 0, 8, 2], "texture": "#1", "tintindex": 0}, + "east": {"uv": [4, 2, 8, 4], "texture": "#1", "tintindex": 0}, + "south": {"uv": [4, 4, 8, 6], "texture": "#1", "tintindex": 0}, + "west": {"uv": [4, 6, 8, 8], "texture": "#1", "tintindex": 0}, + "up": {"uv": [4, 4, 0, 0], "texture": "#1", "tintindex": 0}, + "down": {"uv": [4, 4, 0, 8], "texture": "#1", "tintindex": 0} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/cubliminal/models/block/the_lobby_gateway_block_on.json b/src/main/resources/assets/cubliminal/models/block/the_lobby_gateway_block_on.json index 7197c85..b0dcbef 100644 --- a/src/main/resources/assets/cubliminal/models/block/the_lobby_gateway_block_on.json +++ b/src/main/resources/assets/cubliminal/models/block/the_lobby_gateway_block_on.json @@ -2,8 +2,5 @@ "parent": "minecraft:block/air", "textures": { "particle": "cubliminal:block/black" - }, - "specialmodels": { - "cubliminal:manila_skybox": "cubliminal:shader/manila" } } diff --git a/src/main/resources/assets/cubliminal/textures/block/exit_sign.png b/src/main/resources/assets/cubliminal/textures/block/exit_sign.png index 22b93dfdaead9aee6561ad89fb8bc50c104858a1..9da68597a293ad9d594df7e3ebb901344965b7b7 100644 GIT binary patch delta 301 zcmV+|0n+}^0>=W7BYyw^b5ch_0Itp)=>Px$0ZBwbR9J=WmN5>)APhx+B35&%ZpoCX zJt0g??bcI;1JKEpg#=Zxr4HpSNg#mzu?@@Pc`pEv&kO({Phj$yL7v`yt$xjT2LRh; zUoe0)zMfbjji`-s_0J<*kK2#~0I+HnwlIE`(*42+l>%Dh0e@iCcu)u5kO7*(7794> zgqT8UrBR*dt+r9tUJlEAB~RU=Gm0ZmszPKI12KgXQz-o2dd3urtbpn?loN18yB@bC zrcmk%$KO&h(=1@mdK1fblRChY$XJLelZZgdRHq6U00000NkvXXu0mjfyC8$& delta 310 zcmV-60m=Ty0?-1GBYy!GNkl<&Qs#np0q5H>hrV~vsQrSt#cVLqlc0ui0GQV6a_6cb z)sK(;fqfd9v@i44#o^UuL?a3!(v6CX=q!Lz9t;M9!Qj3514coqlkhcu?EnA(07*qo IM6N<$g0WeW%m4rY diff --git a/src/main/resources/assets/cubliminal/textures/block/exit_sign_e.png b/src/main/resources/assets/cubliminal/textures/block/exit_sign_e.png new file mode 100644 index 0000000000000000000000000000000000000000..8278596192a06ca7922f5dfc5cf69faa25887856 GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}8J;eVArY-_ zr|jlEpuod=K2p;xmaz#V=v%C8hr`R>-?_pAG5pYV`#O$+I W`Np;7%Z-3`GI+ZBxvXN4&%e)K dPkMPN;Q;dvFMfhmh2Q`H002ovPDHLkV1kK)OIiQ` delta 156 zcmV;N0Av5l0k{E>B!7QNL_t(IjqQ+24uUWgMNe&S@;Y@LhP_}|r|f`55ZA#}l1g+` z5=p4lF=zOGIq$k_+rB7p>w8z~hixI6ky1iZX>b3)W1azcF3W!hvH?(K5rX$0gV~_g z;v|Vn({LV!)gX9JG$WdQH^{oK>tLFG&p;CQaa@z%zI1R#h0000< KMNUMnLSTZUMMen# diff --git a/src/main/resources/assets/cubliminal/textures/block/smoke_detector_e.png b/src/main/resources/assets/cubliminal/textures/block/smoke_detector_e.png new file mode 100644 index 0000000000000000000000000000000000000000..a79b2388c00a3dae9fd63c811bd8f617680c3855 GIT binary patch literal 96 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|q&!_5Lo9le s6C_x#F#ng7_{YCR+U=l*f;FVdQ&MBb@0Q!d+#Q*>R literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/minecraft/shaders/core/rendertype_cubliminal_manila_skybox.json b/src/main/resources/assets/minecraft/shaders/core/rendertype_cubliminal_manila_skybox.json index d886b3e..37337f1 100644 --- a/src/main/resources/assets/minecraft/shaders/core/rendertype_cubliminal_manila_skybox.json +++ b/src/main/resources/assets/minecraft/shaders/core/rendertype_cubliminal_manila_skybox.json @@ -1,11 +1,6 @@ { - "blend": { - "func": "add", - "srcrgb": "srcalpha", - "dstrgb": "1-srcalpha" - }, - "vertex": "rendertype_cubliminal_skybox", - "fragment": "rendertype_cubliminal_skybox", + "vertex": "minecraft:core/rendertype_cubliminal_skybox", + "fragment": "minecraft:core/rendertype_cubliminal_skybox", "attributes": [ "Position", "Color", @@ -15,155 +10,21 @@ "Normal" ], "samplers": [ - { - "name": "Sampler0" - }, - { - "name": "Sampler1" - }, - { - "name": "Sampler2" - }, - { - "name": "Sampler3" - }, - { - "name": "Sampler4" - }, - { - "name": "Sampler5" - } + { "name": "Sampler0" }, + { "name": "Sampler1" }, + { "name": "Sampler2" }, + { "name": "Sampler3" }, + { "name": "Sampler4" }, + { "name": "Sampler5" } ], "uniforms": [ - { - "name": "ModelViewMat", - "type": "matrix4x4", - "count": 16, - "values": [ - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0 - ] - }, - { - "name": "ProjMat", - "type": "matrix4x4", - "count": 16, - "values": [ - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0 - ] - }, - { - "name": "RotMat", - "type": "matrix4x4", - "count": 16, - "values": [ - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 0.0, - 1.0 - ] - }, - { - "name": "IViewRotMat", - "type": "matrix3x3", - "count": 9, - "values": [ - 1.0, - 0.0, - 0.0, - 0.0, - 1.0, - 0.0, - 0.0, - 0.0, - 1.0 - ] - }, - { - "name": "ChunkOffset", - "type": "float", - "count": 3, - "values": [ - 0.0, - 0.0, - 0.0 - ] - }, - { - "name": "FogStart", - "type": "float", - "count": 1, - "values": [ - 0.0 - ] - }, - { - "name": "FogEnd", - "type": "float", - "count": 1, - "values": [ - 1.0 - ] - }, - { - "name": "FogColor", - "type": "float", - "count": 4, - "values": [ - 0.0, - 0.0, - 0.0, - 0.0 - ] - }, - { - "name": "FogShape", - "type": "int", - "count": 1, - "values": [ - 0 - ] - } + { "name": "ModelViewMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "RotMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] }, + { "name": "ModelOffset", "type": "float", "count": 3, "values": [ 0.0, 0.0, 0.0 ] }, + { "name": "FogStart", "type": "float", "count": 1, "values": [ 0.0 ] }, + { "name": "FogEnd", "type": "float", "count": 1, "values": [ 1.0 ] }, + { "name": "FogColor", "type": "float", "count": 4, "values": [ 0.0, 0.0, 0.0, 0.0 ] }, + { "name": "FogShape", "type": "int", "count": 1, "values": [ 0 ] } ] } diff --git a/src/main/resources/assets/minecraft/shaders/core/rendertype_cubliminal_skybox.vsh b/src/main/resources/assets/minecraft/shaders/core/rendertype_cubliminal_skybox.vsh index a1ff1d8..c20845a 100644 --- a/src/main/resources/assets/minecraft/shaders/core/rendertype_cubliminal_skybox.vsh +++ b/src/main/resources/assets/minecraft/shaders/core/rendertype_cubliminal_skybox.vsh @@ -15,7 +15,7 @@ uniform sampler2D Sampler2; uniform mat4 ModelViewMat; uniform mat4 ProjMat; -uniform vec3 ChunkOffset; +uniform vec3 ModelOffset; uniform int FogShape; out float vertexDistance; @@ -28,7 +28,7 @@ out vec4 texProj0; out vec4 glPos; void main() { - vec3 pos = Position + ChunkOffset; + vec3 pos = Position + ModelOffset; gl_Position = ProjMat * ModelViewMat * vec4(pos, 1.0); vertexDistance = fog_distance(pos, FogShape); vertexColor = Color * minecraft_sample_lightmap(Sampler2, UV2); diff --git a/src/main/resources/cubliminal.accesswidener b/src/main/resources/cubliminal.accesswidener new file mode 100644 index 0000000..ed4687d --- /dev/null +++ b/src/main/resources/cubliminal.accesswidener @@ -0,0 +1,2 @@ +accessWidener v2 named +accessible method net/minecraft/client/gl/ShaderProgramKeys register (Ljava/lang/String;Lnet/minecraft/client/render/VertexFormat;)Lnet/minecraft/client/gl/ShaderProgramKey; \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index afceafb..3a4f602 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -41,5 +41,6 @@ "fabric-api": "*", "limlib":"11.3", "cloth-config": "*" - } + }, + "accessWidener": "cubliminal.accesswidener" } \ No newline at end of file