Place Anywhere Core
A Minecraft mod that allows blocks to be summoned, stored, and rotated at non‑integer grid positions. This mod is still in early development and has many bugs.
截图
介绍
Place Anywhere Core
The foundational mod that allows Minecraft blocks to exist at arbitrary decimal positions and arbitrary 3D rotations, completely bypassing the vanilla integer grid. Rewrites chunk storage, collision, rendering, raycasting, neighbor updates, redstone, and NBT serialization from the ground up.
How It Works
Every free block is stored in a parallel data layer overlaid on vanilla chunks — a compact palette + Structure-of-Arrays format per 16³ section. Blocks carry a DecimalBlockPos (double-precision coordinates) and a quaternion rotation, enabling placement and rotation at any angle and any sub-block position.
The mod injects into 22 Minecraft internals via mixins to make free blocks fully interactive: they render with correct lighting and block entity models, collide with players and entities using OBB collision detection, respond to raycasting for mining and interaction, propagate and receive neighbor updates, conduct redstone signals, open container GUIs, and save/load persistently alongside vanilla chunk data.
Features
Arbitrary Decimal Placement
- Place blocks at any
(x, y, z)coordinate — no longer limited to integer positions. - Block positions are stored as double-precision values and survive save/load.
Quaternion-Based Rotation
- Every free block can be rotated to any orientation using quaternion math — not limited to vanilla’s 4 or 24 rotation states.
- Rotation is applied to collision shapes, rendering, and hitboxes.
Full Collision System
- OBB (Oriented Bounding Box) collision for rotated blocks using SAT (Separating Axis Theorem).
- Binary search movement clipping — per-axis bisection with 10 iterations for ~0.001 block precision.
- Slope auto-step — entities can walk up sloped rotated surfaces (up to 0.6 blocks).
- Residual penetration resolution — entities pushed out of small overlaps to prevent clipping.
- Full GJK + EPA implementation available for complex convex shape collision.
- Correct velocity multiplier, jump velocity multiplier, and travel friction for walking on free blocks.
- Auto-jump support for free block obstacles.
Rendering
- Full baked model rendering with quaternion rotation, correct RenderLayer per block type, and lightmap sampling.
- Block entity rendering with a deserialization cache to avoid per-frame NBT overhead (chests, barrels, shulker boxes, beacons, etc.).
- Rendered in the
AFTER_TRANSLUCENTpass for correct transparency blending (Iris/Sodium compatible). - Block outline (selection box) rendered as a cyan OBB wireframe when looking at a free block.
- 64-block render distance from camera.
Redstone
- Free blocks emit and receive redstone signals — both weak and strong power.
- Redstone wire connections are recomputed for free block positions, including SIDE, UP, and direction-dependent connections (repeaters, observers).
- Full wire power propagation with decay, respecting vanilla wire-to-wire rules.
- Four injected redstone methods ensure compatibility with all redstone components.
Neighbor Updates
- Vanilla neighbor changes propagate to nearby free blocks and vice versa.
- Capture-restore pattern: free blocks are temporarily placed on the integer grid for state updates, then captured and restored — supporting doors, pistons, and other state-reactive blocks.
Interaction & GUI
- Left-click to mine free blocks (with particles and drops).
- Right-click to interact — open chests, use crafting tables, toggle doors/buttons/levers.
- Container GUI support — BlockEntities are temporarily placed on the grid for GUI opening, NBT is saved back on close.
- Falling block support — anvils get temporary support blocks to prevent falling during GUI use.
Commands
| Command | Description |
|—|—|
| /placefree <x> <y> <z> <block[state]> [qx qy qz qw] | Place a free block with optional rotation |
| /removefree <x> <y> <z> | Remove the nearest free block |
| /listfree | List all free blocks within 32 blocks |
| /padebug info | Show position and collision state |
| /padebug obb | List nearby rotated block OBB details |
| /padebug ground | Check if feet are above a free block |
| /padebug test <x> <y> <z> <sx> <sy> <sz> | Test AABB-OBB intersection |
| /padebug movetest <dx> <dy> <dz> | Simulate clipped movement |
Persistence & Networking
- NBT save format embedded in chunk data (
placeanywhere_freecompound), backward compatible with saves missing quaternion data. - S2C chunk sync — full chunk free block data sent to all tracking players on change and on join.
- C2S interaction packets — server-authoritative placement and interaction.
Architecture
- Storage: Per-chunk, per-section
FreeBlockLayerwith palette deduplication and SoA parallel arrays. Swap-remove deletion. Sparse allocation (only sections with free blocks consume memory). - 12 common mixins + 2 client mixins — minimal footprint, targeted injection.
- HUD mod compatible —
World.getBlockState()interception allows Jade and similar mods to read free block states.
Requires
- Fabric API
- Java 21+
Active Version
Only the 1.21.1 Fabric build is actively maintained. Legacy versions (1.18.2 through 1.20.6) for both Fabric and Forge are available as historical releases but will not receive further updates.
License
LGPL-3
常见问题
Place Anywhere Core 支持哪些 Minecraft 版本?
Place Anywhere Core 支持 Minecraft Java 版 1.18.2–1.21.1,共 6 个版本,可用的加载器:Fabric / Forge / NeoForge。下载时注意选择和你游戏版本一致的文件。
Place Anywhere Core 怎么安装?
先用 PCL2 或 HMCL 启动器安装对应版本的 Fabric / Forge / NeoForge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:客户端和服务端都要装。
gutianhuan 的其他作品
查看全部 →
Place Anywhere
A Minecraft mod that allows players to place blocks off the integer grid and rotate them in survival mode. This mod is in early development and has many bugs.
Better Slab
A Minecraft mod that adds vertical slabs, allows mixing different slab types in one block, enables mining upper/lower halves independently, and supports placing full blocks perfectly on top.
评论
登录后评论和评分