promotional bannermobile promotional banner

Dimensional Exposure

Peek into other dimensions through the camera of the Exposure mod, press the shutter to enter the peeping dimension!

English

Shutter Shadow is an addon for Exposure on Minecraft 1.21.1 / NeoForge. Look into other dimensions through a camera, photograph the current view, and use dimension film to seamlessly teleport players or bring creatures back.

Gameplay and features

Place a dimension filter in an Exposure camera's filter slot to view its target dimension with a handheld camera or a manually operated camera stand. Viewing alone leaves you in your original dimension. Install dimension film and take a photo to trigger the corresponding teleportation.

Attachment or feature Effect
Dimension filter All variants share the item ID shuttershadow:dimension_filter. A data component specifies the target dimension. Overworld, Nether and End filters are included; datapacks can add more.
Player dimension film With a dimension filter installed, handheld selfies teleport the photographer to the target dimension; stand photos teleport players in the original dimension who are within the search range, meet the camera's visibility requirements, and have enabled stand teleportation consent.
Creature dimension film Searches the target dimension for unobstructed non-player living entities in the camera's view and brings the first qualifying creature into the camera's dimension.
Attachment tooltip Hover over a camera to see its attachment slots, including film, flash, lens and filter.

Camera enchantments

EnchantmentLevels and effectSurvival acquisition
Exposure Failure — CameraI, curse. Does not generate or upload an image, or add a film frame. Preserves the shutter, Exposure photography events and statistics, and dimension film teleportation. Works with handheld, manual stand and redstone stand captures; usable film must still be installed.Nether fortress chests.
Narcissism — CameraI, curse. Opens a handheld camera in selfie mode by default; you can switch back manually. Stands have no selfie mode and are unaffected.Nether fortress chests.
Safe Dimension Teleport — CameraI–III. After a successful camera-triggered dimension change, gives teleported players Slow Falling and the mod's protection effect for 10 / 20 / 30 seconds, based on the camera's enchantment level. Works with handheld, manual stand and redstone stand captures.End ship chests only; regular End city chests do not receive the extra book.

Each eligible chest has a 30% chance to receive one extra book without replacing its original loot. The two fortress curses are equally likely; the three safety levels in End ship chests are equally likely. A grindstone cannot remove curses.

The safety effect protects against damage with no direct or indirect entity source, such as the void, fire, lava, suffocation, and ongoing poison or wither damage. It does not protect against entity attacks, projectiles or /kill.

The effect does not extinguish fire, move a player out of the void, or change the landing position. Ordinary photos, failed teleports, same-dimension movement, and /tps do not automatically trigger this enchantment.

Seamless teleport command

/tps <entities> <dimension> <x> <y> <z>
/tps @s minecraft:the_end 0 80 0
/tps @e[type=minecraft:pig,distance=..8] minecraft:overworld 0 80 0

Installation and compatibility

Requires Minecraft 1.21.1, Java 21, NeoForge, and Exposure. Install Shutter Shadow and Exposure on both the client and server. The mod declares Exposure 1.9.19 or newer; compatibility with future versions still needs verification.

ModCurrent development test versionCompatibility notes
Sodium0.8.13 for NeoForge 1.21.1Optional client mod. Its chunk rendering context is supported; it is not a required dependency.
Iris1.8.14 Beta 1 for NeoForge 1.21.1Optional client mod. Cameras use the player's current shader settings. Cross-dimensional results depend on the shader pack.
Create6.0.10 for Minecraft 1.21.1Compatible.
Sable2.0.6 for NeoForge 1.21.1Compatible.
Immersive PortalsMust not be installed alongside Shutter ShadowIncompatible.

When installed, the declared minimum versions for Sodium and Iris are 0.8.13 and 1.8.14 Beta 1, respectively. Vanilla rendering and optional renderer mods use their corresponding rendering paths. The listed versions do not imply that all future versions or shader packs have been tested.

Vanilla camera fog follows the camera's drawing distance. Shader packs may calculate fog independently, so terrain edges can remain visible when the game's view distance is larger than the camera range. This mod does not modify individual shader packs' fog algorithms.

Configuration

Open Shutter Shadow's native configuration screen from the in-game mod list. Settings are divided into server gameplay/loading, client rendering/personal preferences, and local logging.

FilePurpose
config/shuttershadow-server.tomlServer gameplay and camera chunk loading settings, synchronized to clients. An existing world's serverconfig/shuttershadow-server.toml takes precedence.
config/shuttershadow-client.tomlClient rendering, in-game warnings and personal teleport preferences. Only the stand teleportation consent preference needs to be sent to the server.
config/shuttershadow-core.tomlCommon configuration containing the local logging master switch. The client and server configure it separately; it is not synchronized by the server.

Server settings

Full keyDefaultRange and purpose
dimension_camera.max_view_distance8Chunk radius of 3–32. Limits target-dimension chunk subscriptions and drawing for handheld and manually operated stand cameras. The actual range also follows the client's requested range and the server view distance.
camera_stand.stand_player_radius81–64 blocks. Player dimension film search range around a stand in its original dimension; camera visibility and personal consent checks still apply.
mob_dimension_film.capture_radius161–32 blocks. Expands the target camera block's creature search box along X/Y/Z, then checks camera visibility and obstruction. It is not reduced with the camera view distance.
core.serverSideNormalChunkLoadingtrueSelects the activity level for extra chunk tickets. Enabled: entity and block ticking. Disabled: block ticking only, so creatures may stop updating. Tickets are still retained.
core.enableRemoteChunkLoadingtrueActively loads extra target-dimension chunks subscribed to by the camera. When disabled, only chunks loaded for other reasons are available, and terrain can be missing.
core.delayUnloadGenerations41–120 subscription update generations, about 13 game ticks per generation. Chunks no longer being viewed are released after the configured number is exceeded. Changing this is not recommended: low values can cause repeated loading, while high values retain more memory. Large subscriptions and disconnect cleanup can release chunks earlier.

The camera view limit controls target-dimension subscriptions and drawing, without changing the player's normal video view distance or vanilla simulation distance. Radius 8 covers at most a 17×17 chunk window; other limits can reduce the actual subscription and drawing range.

Creature search uses blocks and can cross the camera's center chunk boundary; it is not restricted to that chunk. Camera visibility checks still apply. Creature capture may wait for required search chunks; player teleportation has no additional chunk readiness wait.

Client settings

Full keyDefaultPurpose
camera_stand.accept_stand_dimension_film_teleporttrueAccept teleportation from player dimension film on a stand. Disabling it still allows viewing and photography; /tps is unaffected.
core.enableClientPerformanceAdjustmenttrueShortens vanilla target terrain drawing distance based on recent frame rate and available memory. Does not change normal-world video settings. Sodium's own terrain pipeline is not guaranteed to follow this setting.
core.doCheckGlErrorfalseExtra OpenGL error checks for diagnostics. Adds checking overhead; output follows the logging master switch.
core.saveMemoryInBufferPackfalseReduces the initial allocation of the mod's vanilla remote chunk mesh buffers, which can still grow. Existing buffers do not shrink, and Sodium's buffers are unaffected. Restart the client after changing it.
core.enableWarningtrueEnables or disables all runtime in-game warnings, including memory and Iris notices. Independent from logging.

Datapacks and dimension filters

Dimension filters use Exposure's filter definition format. Put each data file at:

data/shuttershadow/dimension_filter/<target dimension namespace>/<target dimension path>.json

For example, data/shuttershadow/dimension_filter/minecraft/overworld.json:

{
  "predicate": {
    "items": "shuttershadow:dimension_filter",
    "components": {
      "shuttershadow:dimension_filter_target": "minecraft:overworld"
    }
  },
  "attachment_texture": "exposure:textures/gui/filter/stained_glass.png",
  "attachment_tint": "78A7FF",
  "shader": "shuttershadow:shaders/post/neutral.json"
}

shuttershadow:dimension_filter_target specifies the destination. This format allows viewing the Overworld from other dimensions without a source-dimension list or a manually configured scale. The target dimension must exist on the server. A filter does not create a cross-dimensional view when its target is the current dimension.

Put filter item models in a resource pack using the corresponding path:

assets/shuttershadow/models/item/dimension_filter/<target dimension namespace>/<target dimension path>.json

Custom textures, models and translations need their corresponding resource pack. The creative tab automatically lists target variants registered with the above item and component predicate. Datapack details and Java APIs for seamless teleportation, chunk loading, dimension filters and camera dimension-change events are documented in the API documentation.

Q&A

Q1: Why can't a redstone-triggered camera stand with a dimension filter photograph the target dimension?

A1: Because that would require solving various problems, especially shader-related ones. It is not planned for now; currently it can only photograph the original dimension.

Q2: Why does a redstone-triggered camera stand briefly flicker after installing Sable/Veil?

A2: This is an Exposure issue, not mine.

Q3: How is compatibility?

A3: So far, no errors have been found when installed in the ATM10 modpack.

Q4: Other players keep right-clicking the camera on a stand with a dimension filter and dimension film to photograph me and teleport me to other dimensions.

A4: Please disable stand camera teleportation in the client configuration. Set camera_stand.accept_stand_dimension_film_teleport to false.

Credits and licensing

The dimension runtime is ported and modified from Immersive Portals for NeoForge, version v6.0.7, commit aede93a4865fe4aab5dd2781fb38ab3e5cecd63b, by qouteall, Nick1st and upstream contributors.

Shutter Shadow changes package names, networking, synchronization and rendering, removes portal features, and retains the runtime needed for dimension cameras and seamless teleportation.

Original Shutter Shadow code is All Rights Reserved. Ported and derived upstream code remains under Apache-2.0 and is not restricted by the All Rights Reserved statement for original code.

See the included NOTICE-immersive-portals.txt for attribution and modification notes.


中文

Exposure 模组的扩展。通过相机观察其他维度、拍摄当前取景画面,并使用维度胶卷无缝传送玩家或带回生物。

玩法与功能

将维度滤镜放入 Exposure 相机的滤镜槽,即可通过手持相机或手动操作的支架相机观察目标维度。观察期间玩家仍在原维度;安装维度胶卷并拍摄,才会触发对应传送。

附件或功能 效果
维度滤镜 所有变体共用一个物品 ID:shuttershadow:dimension_filter,通过物品组件指定目标维度。默认提供主世界、下界和末地滤镜,可用数据包扩展。
玩家维度胶卷 装入维度滤镜和玩家维度胶卷手持自拍传送自己到目标维度;支架拍摄传送原维度中位于搜索范围、符合镜头条件且同意支架传送的入镜玩家。
生物维度胶卷 在目标维度搜索镜头内未被遮挡的非玩家生物,将首个符合条件的生物传送到相机所在维度。
附件提示框 鼠标悬停相机时显示附件槽,默认包括胶卷、闪光灯、镜头和滤镜。

相机附魔

附魔等级与效果生存获取方式
曝光失效-相机I,诅咒。拍摄不生成或上传图片、不增加胶卷帧数,保留快门、Exposure 拍摄事件、统计及维度胶卷传送。手持、手动支架和红石支架均有效;仍需装入可拍摄的胶卷。下界要塞宝箱。
自恋狂-相机I,诅咒。每次打开手持相机时默认进入自拍,可手动切回远景;支架没有自拍功能,不受影响。下界要塞宝箱。
安全传送维度-相机I~III,正面附魔。相机拍摄成功换维后,按相机等级为被传送玩家给予 10/20/30 秒的缓降及安全传送效果。手持、手动支架、红石支架均适用。末地船宝箱,普通末地城宝箱不追加。

符合条件的宝箱有 30% 概率额外生成一本书,原宝箱内容保留;下界要塞的两种诅咒等概率,末地船的安全传送 I~III 等概率。诅咒不能用砂轮清除。

安全传送效果免疫没有直接或间接实体来源的伤害,例如虚空、火、岩浆、窒息、中毒和凋零持续伤害;实体攻击、投射物及 /kill 不受保护。它不会熄火、搬离虚空或改变落点。普通拍照、传送失败、同维移动,以及 /tps 不会自动触发此附魔。

无缝传送指令

/tps <目标实体> <目标维度> <x> <y> <z>
/tps @s minecraft:the_end 0 80 0
/tps @e[type=minecraft:pig,distance=..8] minecraft:overworld 0 80 0

安装与兼容

客户端与服务端均须安装 Shutter Shadow、Exposure 1.9.19 或更新版本,后续版本兼容性仍需核实。

模组当前开发检查版本兼容说明
Sodium0.8.13,NeoForge 1.21.1可选客户端模组,已适配其区块渲染上下文;不是必需依赖。
Iris1.8.14 Beta 1,NeoForge 1.21.1可选客户端模组,相机沿用玩家当前光影设置。跨维度显示效果受光影包影响。
Create6.0.10,Minecraft 1.21.1兼容。
Sable2.0.6,NeoForge 1.21.1兼容。
Immersive Portals不允许同时安装不兼容。

安装 Sodium 或 Iris 时,当前声明的最低版本分别为 0.8.13 和 1.8.14 Beta 1。原版渲染与可选模组采用各自的渲染路径;开发检查版本不代表对任意后续版本或所有光影包都已验证。

原版相机雾按相机绘制距离调整。光影包可能自行计算雾气,因此在游戏视距较大、相机范围较小时,地形边缘仍可能明显;本模组不修改具体光影包的雾算法。

配置

游戏内可从模组列表进入 Shutter Shadow 的原生配置界面。配置分为服务端玩法与加载、客户端渲染与个人偏好、本地日志三类。

文件用途
config/shuttershadow-server.toml服务端玩法和相机区块加载设置,由服务器同步给客户端;世界已有 serverconfig/shuttershadow-server.toml 时采用世界配置。
config/shuttershadow-client.toml客户端渲染、游戏内警告和个人传送偏好。只有支架传送同意偏好需要上报服务器。
config/shuttershadow-core.toml通用配置,仅保留本地日志总开关;客户端与服务端分别设置,不由服务器同步。

服务端配置:

完整键默认值范围与作用
dimension_camera.max_view_distance83~32 区块半径,限制手持和手动支架的目标维度区块订阅及绘制。实际距离还受客户端请求和服务器视距限制。
camera_stand.stand_player_radius81~64 方块,支架玩家维度胶卷搜索原维度玩家的范围,仍需符合镜头条件及个人同意偏好。
mob_dimension_film.capture_radius161~32 方块,沿 X/Y/Z 扩展目标相机方块的生物搜索盒,随后检查镜头和遮挡;不随相机视距缩小。
core.serverSideNormalChunkLoadingtrue选择额外区块票据的活跃等级:开启时更新实体与方块,关闭时仅要求方块更新,生物可能停止更新;不会取消票据。
core.enableRemoteChunkLoadingtrue是否主动加载相机额外订阅的远维度区块。关闭后只能使用被其他原因加载的区块,画面可能缺少地形。
core.delayUnloadGenerations41~120 个订阅更新代数,每代约 13 游戏刻;超过设定代数后释放不再观察的区块。不建议修改:过小容易反复加载,过大增加内存占用;大量区块及断线等清理仍可提前执行。

相机视距配置控制的是目标维度加载订阅和绘制上限,不修改玩家普通世界的视频视距或原版模拟距离。半径 8 对应最多 17×17 区块的订阅窗口,实际订阅和当帧画出的范围还受其他限制。生物搜索以方块为单位,可跨越相机中心区块边界,不会被截成中心区块;仍须满足镜头条件。生物获取可能等待必需的扫描区块,玩家传送没有额外区块等待。

客户端配置:

完整键默认值作用
camera_stand.accept_stand_dimension_film_teleporttrue是否接受支架玩家维度胶卷传送。关闭后仍可观察和拍照,不影响 /tps。
core.enableClientPerformanceAdjustmenttrue根据近期帧率和可用内存缩短原版目标地形绘制距离,不修改普通世界视频设置;Sodium 自身地形流程不保证受此项控制。
core.doCheckGlErrorfalse额外检查 OpenGL 错误,用于诊断;增加检查开销,输出服从日志总开关。
core.saveMemoryInBufferPackfalse减小本模组远维度原版区块网格缓冲的初始分配,容量不足仍增长;已有缓冲不缩小,Sodium 自有缓冲不受控制,修改后建议重启客户端。
core.enableWarningtrue统一开启或关闭全部内核游戏内提醒,包括内存和 Iris 提醒;与日志开关独立。

数据包与滤镜

维度滤镜使用 Exposure 的滤镜定义格式,数据文件放在:

data/shuttershadow/dimension_filter/<目标维度命名空间>/<目标维度路径>.json

例如 data/shuttershadow/dimension_filter/minecraft/overworld.json:

{
  "predicate": {
    "items": "shuttershadow:dimension_filter",
    "components": {
      "shuttershadow:dimension_filter_target": "minecraft:overworld"
    }
  },
  "attachment_texture": "exposure:textures/gui/filter/stained_glass.png",
  "attachment_tint": "78A7FF",
  "shader": "shuttershadow:shaders/post/neutral.json"
}

shuttershadow:dimension_filter_target 指定目标维度。只写以上结构即可从其他维度观察主世界,无需来源路由或距离比例字段;目标维度必须在服务器实际存在,同维度不建立跨维度观察。

滤镜物品模型采用相同的维度路径,放在资源包中:

assets/shuttershadow/models/item/dimension_filter/<目标维度命名空间>/<目标维度路径>.json

自定义纹理、模型和译名需要相应资源包。新增符合上述物品和目标组件谓词的滤镜定义后,创造物品栏会自动列出其目标变体。数据包配置及 Java API(无缝传送、区块加载、滤镜工具、相机换维事件)详见 API 文档。

Q&A

Q1:为什么红石触发的带有维度滤镜的支架照相机拍不到目标维度的画面?

A1:因为这需要解决各种问题,尤其是光影,暂不考虑加入,目前只能拍到原维度。

Q2:为什么装了 Sable/Veil 模组后红石触发支架照相机出现短暂闪烁?

A2:这是 Exposure 的问题,不是我的。

Q3:兼容性如何?

A3:目前安装在 ATM10 整合包并未发现报错。

Q4:其它玩家总是右键支架上的带有维度滤镜和维度胶卷的照相机拍摄我,将我传送到其它维度。

A4:请在客户端配置中关闭支架照相机传送,将 camera_stand.accept_stand_dimension_film_teleport 设为 false。

上游与许可

跨维度内核移植并修改自 Immersive Portals for NeoForge,版本 v6.0.7,提交 aede93a4865fe4aab5dd2781fb38ab3e5cecd63b,原作者为 qouteall、Nick1st 及上游贡献者。本项目调整了包名、网络、同步与渲染实现,删除传送门功能,保留相机跨维度观察和无缝传送所需内核。

本模组原创部分采用 All Rights Reserved;上游移植及衍生部分继续遵循 Apache-2.0,不受原创部分的 All Rights Reserved 声明限制。上游来源和修改说明见模组内 NOTICE-immersive-portals.txt。

Dimensional Exposure Team

Rising Builder tier frameprofile avatar
  • 3
    Followers
  • 8
    Projects
  • 542.6K
    Downloads

More from xiaofanwei123View all