What Are They Up To
| What Are They Up To |
|---|
What Are They Up To (watut) is a client-side social-presence mod included in Fear Nightfall. It shows whether another player is typing in the chat, sign, book or command block editors, whether that player has been idle for five minutes, and which container or screen they have open. The open screen is drawn as a small floating image above the player's head for nearby players. The mod adds no blocks, items, mobs, biomes or structures, so world content and progression are unchanged.
In a pack built around horror and exploration, the mod is mainly useful in multiplayer. It lets players see at a glance that a companion is busy in a menu, is idle, or is moving items to or from a chest, which makes group play easier to read. The horror content itself is covered in Horror and Spooky Content.
Overview
The mod is a presentation layer with two halves. On the server it tracks each player's state (typing, idle, active GUI, mouse position and item transfers) and relays that state to other players. On the client it draws the states as particles, overlay text, tab list icons and changed player poses. Its effects are limited to how players look and what their state looks like to others. It has no progression, no crafting, and no effect on combat, hunger, experience, death, sleeping or physics.
The mod has no configuration screen. Its settings are read from config files, and the server and each client can set their own values. The full list of pack mods is on Mod List.
Content
The mod adds no content of its own. It registers no blocks, items, mobs or other entities (apart from the player entity that it decorates), and it adds no worldgen, recipes, enchantments, effects, advancements, loot tables, villager trades or tags. The additions are visual and one client command:
- An idle icon above a player's head, and an idle sprite in the tab list ping slot.
- An "is typing" line on the chat screen.
- Floating GUI particles, item-transfer particles and a mouse cursor particle.
- About 40 particle sprites added to the vanilla particles atlas, plus four blur shaders.
- The client command
/watut reloadJSON, which reloads the held-item arm adjustments file (see What Are They Up To).
Because the mod adds no mobs, structures or biomes, its place in the pack is best understood through the pages that do. See the Mobs, Structures and Biomes overviews, and Finding Structures and Biomes for locating the content those pages cover. The mod does interact with a few items from other mods, such as the Artifacts umbrella and the TACZ modern kinetic gun, through the held-item arm adjustments described below.
Mechanics
Typing
The client treats four screens as typing: the chat screen, the sign editor, the book editor and the command block editor (Sign, book, command block). While one of them is open, the player's head shows a typing particle. The particle is a six-frame animation that advances every two ticks. Chat without typing shows a separate two-frame idle-in-chat particle. The client sends its typing speed to the server by default, so the typing animation can reflect how fast the player types. When several players are typing at once, the chat screen shows the text "Several people are typing" in place of the name.
Idle state
Every client tick increments a counter. A key press (with no screen open, or with a text box focused) resets it, as does a mouse press (in a screen that accepts pointing, or with no screen open). When the counter passes ticksToMarkPlayerIdle, which defaults to 6000 ticks (five minutes), the server marks the player idle and sends the change to all clients. The idle state appears above the head and in the tab list. Announcing idle states in chat is off by default.
Floating GUI
When a player opens a screen that matches a sprite set (the vanilla inventory, chest, crafting table, furnace, anvil and others), the client captures the screen, cuts it to a circle with a 112-pixel radius, compresses it against the previous frame, and sends it through the server. Players within 10 blocks receive the frame and see it as a floating particle. The frame is sent every 10 ticks, which is twice a second. By default only the first frame of a screen is sent, and later frames are sent only when the screen changes. Screens the mod does not recognise fall back to the chest sprite. Setting the whole-screen option captures the full screen in a 512 by 512 area instead of the circle, and the mod's own configuration notes that this option is heavy on CPU and network.
Because the frame is a picture of the screen as the player sees it, nearby players can read what is shown in an open container or menu. A player who wants to keep that private can set dontSendDetailedGUIInfo on the client, which sends only the basic screen icon.
Mouse and item transfers
While a container or screen is open, the client sends the mouse position as a percentage of the screen every five ticks, with a flag that stays set for three ticks after a click. Other players see a cursor particle. On the server, each container click takes a snapshot of the player's inventory and the container's slots, compares the two, and sends item-move particles between the player and the last block the player used with an item. The player's own inventory slots are not part of the container snapshot. The click result itself is not changed.
Pose animations
For every rendered player in the typing, idle or GUI state, the mod overrides the model pose after the vanilla animation runs. Head and arm poses change to show the state. The local player is excluded only while viewing their own inventory. Each state has its own toggle, and all three default to on.
Held-item arm corrections
The file watut-item-arm-adjustments.json holds seven entries that match held items by id and either disable the arm animation or offset it on each axis, for the matching hand and the other hand. The shipped matches are artifacts:umbrella and tacz:modern_kinetic_gun (the other hand is offset), and a wildcard example. Entries for minecraft:compass, minecraft:recovery_compass, minecraft:torch, minecraft:soul_torch and minecraft:filled_map apply only when Not Enough Animations is installed. The example entries are placeholders and do nothing.
Changes to vanilla
The mod changes how the base game draws and records a few things, and the player will notice these:
- After every screen's tooltip render, the mod draws its floating GUI overlay. The mod also draws its own HUD pass after the in-game HUD.
- Screen background rendering is suppressed only during the mod's own capture pass, so the captured image has no dim or panorama background.
- The player-list ping icon is replaced by the idle sprite for players marked idle.
- Player model poses change for all rendered players in the typing, idle and GUI states.
- The vanilla particles atlas gains the mod's sprites, and the mod uses its own particle engine alongside the vanilla one. Vanilla particles are not changed.
- On the server, container clicks and item use are observed but never cancelled, and their results are not changed.
Recipes, loot tables, tags, villager trades, spawns, worldgen, experience, hunger, combat, redstone, death, sleeping and physics are not changed.
In Fear Nightfall
The pack runs the NeoForge build of the mod, version 1.21.0-1.2.7, with the server setup that lets it act as a status relay and config sync for clients. Its required library is Coroutil, version 1.3.8, which provides the config framework the mod uses. Visual features need the mod on the client as well as the server.
The pack's server and client configuration files for this mod match the mod's defaults. Examples are a 112-pixel GUI radius, a 10-block viewing distance, ticksToMarkPlayerIdle at 6000, and all typing, idle and GUI animations on. The pack's change log has no entry for this mod, so it is included as shipped.
The arm adjustments file is copied into the config folder on first launch and is not overwritten afterwards. Edits to the bundled defaults do not reach an existing server, so run /watut reloadJSON after changing the file.
Because the mod exposes whether players are in menus and what those menus show, it can reveal another player's activity in the middle of a horror encounter. The mod's client options let each player turn off GUI frames and item transfers if they do not want to share that information.
Other mods that change player model poses, the tab list ping icon, the particle atlas or the particle shader can conflict with this one. This is most likely with animation mods, gun mods and overlay mods that draw after tooltips.