You are viewing a potentially older version of this package. View all versions.
khalil-PlushieSwap-1.0.0 icon

PlushieSwap

Replaces the BingBong plush with a cartoon Miffy or Zichao Xiong. Switch between the vanilla bear and both replacements in game with F7. Models, shading and icons are embedded in the DLL.

By khalil
Date uploaded 2 weeks ago
Version 1.0.0
Download link khalil-PlushieSwap-1.0.0.zip
Downloads 53
Dependency string khalil-PlushieSwap-1.0.0

This mod requires the following mods to function

BepInEx-BepInExPack_PEAK-5.4.75301 icon
BepInEx-BepInExPack_PEAK

BepInEx pack for PEAK. Preconfigured and ready to use.

Preferred version: 5.4.75301

README

Plushie Swap

Replaces the BingBong plush in PEAK with a cartoon Miffy (米菲兔) or Zichao Xiong (自嘲熊), and lets you switch between those and the original bear at any time.

Features

  • Three forms, cycled in game with F7: Vanilla -> Miffy -> ZichaoXiong (the default is Zichao Xiong).
  • The plush keeps its screen-space constant-width ink outline, drawn from the model itself, so the line stays crisp at any distance.
  • Name and inventory icon follow the chosen plush.
  • The model inherits the game's own squeeze animation when you hold primary fire.
  • Models, baked shading and icons are embedded in the DLL: one file, no loose assets.

Configuration

BepInEx\config\com.zhuanban.peak.plushieswap.cfg

Option Default Meaning
Plushie ZichaoXiong Which form to use: Vanilla, Miffy or ZichaoXiong
Cycle Plush Hotkey F7 In-game hotkey that cycles the forms
World Scale 1.0 Size multiplier while held or lying in the world
Backpack Scale 1.0 Extra size multiplier while inside a backpack
Hold Height Offset 0.0 Extra up/down nudge while held
Rename Item true Rename the item to match the chosen plush
Replace Icon true Replace the inventory icon
Outline Width (pixels) 5.0 Ink line width in screen pixels; 0 hides it
Shader Override (empty) Only needed if the model renders with wrong colours
Verbose Logging false Write detailed diagnostics to the BepInEx log

Changes made in the in-game mod settings apply immediately. Editing the config file by hand is not hot-reloaded: restart the game to pick it up.

Installing

  1. Install BepInExPack PEAK if you have not already.
  2. Drop this package in with your mod manager, or unzip it so that plugins/PlushieSwap/PlushieSwap.dll lands inside the game's BepInEx folder.

Credits

Miffy and Zichao Xiong are the property of their respective rights holders. This mod is a non-commercial fan project and ships no third-party art beyond the two models' own geometry, which is included with the permission of its author.

CHANGELOG

Changelog

1.1.1

Fixed

  • The ink outline no longer looks too thick on a distant plush. The line was held at a fixed number of screen pixels at every distance, so a plush across the room — far smaller on screen — wore exactly the same 5-pixel line as one in your hands, and read as a heavy black border instead of an outline. The line is now part of the model: it is extruded once in the plush's own space, so it scales with the plush (and with World Scale) and gets proportionally thinner with distance, the way a drawn line should.

Changed

  • A pile of plushies no longer costs frames. The outline shell was rebuilt on the CPU every frame for every instance — about 15k vertices each, plus a fresh vertex-buffer upload each frame — so a dozen plushies in view meant tens of thousands of vertex transforms per frame. That work is gone completely: the shell is extruded once when the model is built, and re-extruded only when the outline width changes. Nothing in the outline runs per frame now, and the line at normal holding distance is the same as before.
  • Outline Width (pixels) is now Outline Width. It is a multiple of the width the models are baked with (0.75% of the plush's height) rather than a pixel count, because the line scales with the plush. An existing value is carried over, and the default of 5 is the baked width, so the look at normal holding distance does not change.
  • A width of 0 now switches the outline object off instead of collapsing the shell onto the body, which removes the depth fight between two coincident surfaces.

1.1.0

Fixed

  • The in-game plush hotkey can now actually be set in game. It was bound as a BepInEx KeyboardShortcut, which the game's settings panel has no control for, so the row was silently skipped and the key could only be changed by editing the config file. It is a plain key now (single keys; modifier combinations are no longer accepted).
  • Switching back to the vanilla plush restores the vanilla inventory icon. The slot refreshes only the name and the cook amount when it still holds the same prefab, and the icon was only ever overwritten with a replacement, so returning to vanilla left the previous plush's icon on screen until the item was dropped and picked up again. The icon is now reconciled to whatever the selected variant should show, vanilla included.
  • The inventory icon follows an in-game plush switch immediately. The widget cached the icon and skipped refreshing it while the slot still held the same prefab, so after pressing F7 every visible slot kept the previous plush until the item was dropped and picked up again.
  • The plush name follows a language change immediately. The Chinese/English choice was cached and only invalidated when cycling the plush, so switching the game language to Chinese left the names in English until F7 or a restart.
  • Cooking tint no longer fights other mods' highlights. The cook colour was written by replacing the renderer's whole property block, which erased the cleanup highlight another mod writes to the same renderer; only the two cook keys are touched now.
  • The outline no longer disappears at long range. Its mesh bounds were padded by a fixed amount, which was too small past roughly 9 m (and past ~1.2 m at small model scales); the padding is now recomputed every frame from the offset actually applied.
  • A corrupt or truncated model file now falls back to the embedded copy instead of being parsed into garbage. Sizes in the file are validated before allocating, so a bad file can no longer request an enormous allocation.
  • A missing game method is now reported by name at startup, instead of only a generic "hooks failed" line. The patch-target check names the exact method.
  • A variant that failed to load is retried on a hard refresh rather than staying broken for the rest of the session.

Changed

  • The release zip is now reproducible (identical bytes for identical input), and the packaging step refuses to build from a dist/ that does not match the current commit.
  • The build records -dirty in its build info when the working tree has uncommitted changes, so a deployed DLL can be traced to what actually produced it.
  • The asset checks now also detect a change to the generator or its parameters, not just to the model files.

1.0.0

  • Initial release.
  • Replaces BingBong with Miffy or Zichao Xiong, switchable in game with F7.
  • Screen-space constant-width ink outline.
  • Inventory name and icon follow the selected plush.
  • Inherits the game's squeeze animation while held.