A community notice board that replaces wall-of-signs setups with one organized place for posts. Players write announcements, trades, rules, and events directly from an in-game menu, with categories, expiration timers, comments, search, saved posts, archiving, and per-board local mode.

Version 1.0.4
Namespace jm_nb:
Bedrock 1.21.100+
Script API @minecraft/server 2.1.0, @minecraft/server-ui 2.0.0

Overview

I built Notice Board because every survival world I joined eventually ended up with a wall of signs at spawn, half of them outdated and the rest impossible to read. This addon replaces all of that with one organized place where players can write announcements, trades, rules, and event notes directly from an in-game menu.

It's designed for survival servers, realms, and shared worlds. Posts live in the world's dynamic properties so they survive restarts. Everything runs through the Script API with no experimental features required, and the addon is fully achievement-safe.

Key features:

Achievement Friendly

Notice Board uses only the stable Script API and dynamic properties. No experiments, no cheats, no achievements disabled.

↑ Back to top

Installation

Setup

New here? See the Installation & Updating guide for the basics on importing .mcaddon files and applying packs to a world.

Both the Behavior Pack and the Resource Pack must be enabled on the world. The wall and floor block models live in the RP, so the board will look broken if only the BP is applied. Both packs ship in the single .mcaddon import.

Notice Board requires Minecraft Bedrock 1.21.100 or newer. No experimental toggles are required, and posts persist in world dynamic properties so they survive restarts and pack updates.

↑ Back to top

Getting the Board

Crafting Recipe

The Notice Board item is crafted at any Crafting Table using the shaped pattern below:

S S S      S = Cobblestone
L P L      P = Plank (any type)
L L L      L = Log  (any type)

Total ingredients: 3 cobblestone, 1 plank, and 5 logs. The recipe outputs 1 Notice Board item, found in the creative inventory under the Items tab. The item stacks to 16.

Placing the Board

The Notice Board is a multi-block structure that auto-builds when you place it. Where you click decides which variant you get:

Variant Trigger Footprint Total blocks
Standing board Right-click the top of a block 3 wide × 3 tall × 1 thick 9
Wall board Right-click the side of a block facing N/S/E/W 3 wide × 2 tall × 1 thick 6

Standing boards auto-orient to face the player. Wall boards face out from whichever wall they were placed against. The full footprint must be clear. If any of the 6 or 9 destination blocks are obstructed, placement fails silently and the item is not consumed. Wall boards can only attach to vertical block faces (north, south, east, or west) — you can't hang one from a ceiling or place one on the floor.

Breaking the Board

Breaking any block of a notice board removes the entire structure and drops one Notice Board item. All posts, categories, pins, archive, templates, and the activity log for that board are preserved, since the data is keyed to dimension, position, and board type rather than to the blocks themselves. Placing a new board at the same coordinates will restore the same dataset.

Use the in-menu Reset Board option (under Board Controls) to wipe a board's data without breaking it.

Mode-aware data

If you place a Local-mode board, then break it and place a Global-mode board at the same spot, you'll see the Global feed, but the Local data is still stored in case you want it back later.

↑ Back to top

Opening the Menu

Right-click (or long-press on touch) any block of a notice board to open the Main Menu UI. The board UI uses Script API forms, so closing a form has no effect on the world and you can browse freely without committing changes.

The title bar of every menu shows the current scope: Notice Board (Global) or Notice Board (<your local label>) (default Local).

Multiplayer-safe

Several players can use the same board at once. Writes are protected by a world-level lock. If two players try to post at the exact same instant, one gets a "Busy" prompt and can retry. The lock auto-clears in under 3 seconds.

↑ Back to top

The main menu has two parts: categories at the top, and actions below. Non-admins only see categories where visibility is on. Admins see every category, with hidden ones marked (Not visible to non-admins).

After the category buttons, the actions appear in this order:

# Button Available to What it does
1SearchEveryoneKeyword search across all visible active posts
2SavedEveryoneOpen your personal saved-posts list
3Addon InfoEveryoneIn-game help, recipe, and admin reference
4Add NoticePlayers (if allowed) + adminsCreate a new player post
5Add Admin NoticeAdmins onlyCreate an admin-tagged post
6Board ControlsAdmins onlySettings, moderation, and management pages

If Allow player posts is OFF in settings, the Add Notice button only appears for admins. Category buttons show an unread badge [N Unread] when new posts have been added since you last viewed that category.

Categories

Tapping a category opens a paged list (15 posts per page). Pinned posts always appear first. Each post button shows the post title, or the first ~44 characters of the body if no title was set. Pinned entries display [Pinned] underneath, and pagination appears only when there is more than one page.

The category page also shows an Add Notice / Add Admin Notice button at the top, scoped to that category.

A modal text field accepts multi-keyword input. The search is an AND match across post title, body, author name, and category name, with results sorted by most recently posted or edited. Tap any result to read it, and use Search Again on the results page to run another query.

Saved

Your personal bookmarks list. You can save up to 200 posts per player; older entries are dropped FIFO when the cap is hit. Saved entries are looked up in both the active post list and the archive, so anything you've bookmarked stays accessible after it expires (until it's permanently deleted).

Addon Info

The in-game info screen has three sub-pages:

Add Notice

Opens the post composer for the current scope. Admins also see Add Admin Notice, which tags the resulting post as admin and skips the approval queue. See Creating a Post for the full form.

↑ Back to top

Creating a Post

Post Fields

Field Type Required Notes
CategoryDropdownYesHidden and admin-only categories are filtered out for non-admins
Title (Button Name)TextYesUsed as the button label in category lists
Line 1 – Line 55 text fieldsAt least one non-emptyJoined with newlines in the order entered, regardless of which box you typed in
ExpirationDropdownYesDefault: 7d
Include LocationToggleDefault ONStamps current dimension and coordinates onto the post

Each line field accepts the literal sequence \n to insert a manual line break inside that line. The full message body is normalized and capped at 1000 characters on save.

Expiration durations

The composer offers 8 expiration choices. Time is real-time, so posts expire even when no players are online.

OptionLength
12hr12 hours
24hr1 day
48hr2 days
72hr3 days
7d7 days (default)
14d14 days
30d30 days
InfiniteNever expires

If admins disable infinite posts via the Allow infinite posts setting, the Infinite option is rejected at submit time with an error message.

Templates

Admins create templates under Board Controls → Post Templates. When at least one template exists for the current scope, the post composer first shows a "Choose a template or start blank" picker. Picking a template pre-fills the title, category, and body. Players only see templates whose category they're allowed to post in.

Approval queue

When the admin setting Require approval queue is ON, every player post is sent to the Pending Queue instead of going live. Admins review it via Board Controls → Pending Queue and choose Approve or Deny. Admin posts always go live immediately and skip the queue.

↑ Back to top

Reading a Post

Tapping any post button opens its detail view. The body shows the title in bold, an info line of <category> · <age> · <author>, the full message text, the location (if attached), an Edited: Xh Xm ago stamp if the post was edited, and an Expires in: Xd Xh line if the post has an expiration set.

Action buttons vary by permission and post state:

Button Who sees it Notes
CommentsEveryone (if comments enabled)Disabled label Comments (Locked) if the post is locked
Save / UnsaveEveryoneToggles the post in your personal saved list
EditPlayer posts: author or any admin. Admin posts: admins only.Cannot edit locked posts unless you are an admin
DeletePlayer posts: author or any admin. Admin posts: admins only.Removes the post from the active list
Lock / UnlockAdmins onlyLocked posts can't be edited; comments are also locked
Pin / UnpinAdmins only4 pin slots per scope
Approve / DenyAdmins, on pending postsOnly shows when viewing a pending post
Back / Main MenuEveryoneReturns to where you came from

Comments

Saved Posts

Saved entries are stored per-player in the world database (not on the player's account). The list caps at 200 entries per player, with the oldest dropped first when the cap is hit. Saved posts are looked up in both the active and archive lists, and the list is personal: only you see your own saved items.

↑ Back to top

Categories

Default categories

The board ships with 5 built-in categories:

ID Name Icon Visible by default
newsNewsNewsYes
tradeTradeTradeYes
rulesRulesBook and QuillYes
miscMiscellaneousBundleYes
admin_noticesAdmin NoticesCommand BlockNo (hidden)

The Admin Notices category always sorts to the bottom of the list. To make it visible to players, an admin can toggle it on under Manage Categories → Toggle visibility.

Each category supports the following per-category flags:

New / unread badges

The board tracks per-player "last seen" timestamps for each scope+category pair. When new posts are added after you last viewed the category, the category button shows a green [N Unread] badge. The seen list caps at 250 entries per player and drops the oldest entries when full.

↑ Back to top

Admin Guide

Admin access

A player is treated as a board admin if any of these are true:

  1. They are an Operator (/op <name>) - recommended
  2. Their command permission level is GameDirectors or higher
  3. They have the admin tag - backup

To grant admin access via tag (useful when OP detection isn't available):

/tag <player> add admin

To revoke:

/tag <player> remove admin
Important

All OPs are admins automatically. The admin tag is only a fallback for situations where OP detection isn't returning the expected result (older Bedrock builds, etc).

Admin Notices

Pinning posts

Each scope (the global feed and each local board) has 4 pin slots. From a post, tap Pin and choose Slot 1–4. Pinned posts are listed first in their category. Pinning a post in slot N replaces whatever was in that slot. Tapping Unpin (slot N) clears the slot.

Tip

Pins are scope-wide, not per-category. A pinned post still only appears inside its own category. Pinning doesn't push it everywhere, it just sticks it to the top of its category.

Locking posts

Locking a post prevents anyone (including the author) from editing it. Comments on a locked post are also locked. Admins can still edit or delete a locked post. The post detail view shows the lock icon and the Comments (Locked) label.

Editing & deleting any post

Admins can edit or delete any player post and any admin post. Players can only edit or delete their own posts. Editing a post stamps it with editedAt and shows "Edited: Xh ago" in the body.

↑ Back to top

Board Controls

Menu path: Notice Board → Board Controls. The Board Controls hub is admin-only and shows these buttons in order:

  1. Settings (Global/Local)
  2. Pending Queue (only when Require approval queue is ON)
  3. Manage Categories
  4. Post Templates
  5. Activity Log
  6. Archive (only when Enable post archiving is ON)
  7. Reset Board (Defaults)
  8. Main Menu

Each button shows the current board mode label in parens, e.g. Manage Categories (Global).

Settings (Global/Local)

A single ModalForm with all toggles, in this exact order. Note the Scope column: most toggles affect every board in the world.

Setting Scope Default What it does
Allow player postsGlobalONWhen OFF, only admins can post
Allow infinite postsGlobalONWhen OFF, the Infinite expiration option is rejected
Require approval queueGlobalOFFWhen ON, player posts go to the Pending Queue first
Allow commentsGlobalONMaster toggle for the comment system
Enable post archivingGlobalONWhen OFF, expired posts are deleted instead of archived
Auto-delete archived notices after 14 daysGlobalONRemoves archived posts older than 14 days
Board modeLocalGlobalSwitches this board between Global and Local
Local labelLocalLocalCustom name shown on this board's title (max 20 chars)
Settings scope

Six of the eight settings apply globally to every board in the world. Only Board mode and Local label change just the board you're standing at. Plan your global toggles before your players start filling boards with posts.

Pending Queue

Manage Categories

This menu has 8 actions, in order:

ActionNotes
Add categoryName + icon picker + visibility toggle
Rename categoryPick a category, type a new name
Set category iconTwo-step flow: pick category, then pick from 21 icons
Set category descriptionOptional text shown at the top of the category page
Toggle visibilityHide a category from non-admins
Lock posting (admin-only)Restrict the category to admin posts only (perfect for Rules)
Toggle commentsDisable comments for posts in this category
Remove categoryPosts get reassigned to Misc (or the first remaining category). At least 1 category must remain.
Tip

Categories you add on a Local-mode board only exist on that board, and they don't appear on other boards. Categories created on a Global-mode board appear on every Global board.

Post Templates

Admin-only screen with 3 actions: Add template, Edit template, and Remove template. Each template has a name, default category, and body text. When templates exist, the post composer shows a "Choose a template or start blank" picker before the post form. Players only see templates whose category they're allowed to post in.

Common uses: pre-formatted Trade Listings, Event templates, Rule announcements.

Activity Log

Archive

Reset Board (Defaults)

Destructive: read first

Reset has no undo and no backup. Read which behavior applies to your board's current mode before confirming.

↑ Back to top

Global vs Local Mode

This is the most important conceptual feature in the addon, so it's worth a careful read.

Global mode (default):

Local mode:

Important behaviors:

Common setup

Keep one Global board at spawn for server-wide announcements, and place Local boards in each town for community-specific posts. Same item, same recipe, just toggle the mode after placing it.

↑ Back to top

Limits & Caps

Item Cap Behavior when exceeded
Active posts per scope80Oldest dropped
Pending posts per scope80Oldest dropped
Archived posts per scope250Oldest dropped
Activity log entries (stored)50Oldest dropped
Activity log entries (displayed)20 newest-
Saved posts per player200Oldest dropped
Per-category posts per page15Pagination
Pin slots per scope4Manual replace
Comment length30 charsTruncated
Comments per post20New comments rejected
Comment cooldown60 secondsPer player
Post body length1000 charsTruncated on save
Local label length20 charsTruncated
Per-player "seen" entries250Oldest dropped
Available category icons21(See reference)

DB storage notes:

↑ Back to top

Troubleshooting & FAQ

"The board looks broken / blocks are missing textures"

The most common cause of any problem with this addon is that only one of the two packs is enabled. Notice Board needs both the Behavior Pack and the Resource Pack applied to the world, and both should be at v1.0.4. Check the world's pack list before anything else.

"I can't see Add Notice"

An admin has turned off Allow player posts in Settings. Either ask an admin to enable it, or be added as an admin yourself.

"I can't see Board Controls"

You aren't an admin. Either get OP'd (/op <name>) or have an admin run /tag <name> add admin.

"My post didn't appear, it says 'Submitted'"

The board has Require approval queue turned on. An admin needs to open Board Controls → Pending Queue and approve your post.

"I can't pin, lock, or approve a post"

These actions are admin-only. See Admin access for how to get admin status.

"Categories on this board don't match another board"

You're looking at a Local-mode board. Each Local board has its own categories. Switch the board to Global mode under Board Controls → Settings → Board mode to share categories with the rest of the world.

"My post got auto-deleted"

Posts have an expiration timer. After expiration, posts are moved to the Archive (if archiving is on) and permanently deleted after 14 days (if auto-delete is on). Use the Infinite expiration option for posts you want to keep forever, and make sure infinite posts haven't been disabled in Settings.

"Someone else is updating the board"

Two players tried to write to the board at the same time. Wait a second and try again; the lock auto-clears in under 3 seconds.

"How do I run a debug report?"

Operators can run any of these to print a diagnostic report (version, event wiring, DB status, settings, nearby cores, and a pass/fail health check):

/function jm_nb/debug
/function jm_nb/debug_verbose

When asking for help on Discord, please include the output of /function jm_nb/debug_verbose.

More help

For questions not covered here, visit my Discord.

↑ Back to top

Reference Tables

Available category icons

There are 21 icons available in the icon picker. They're sorted alphabetically in the in-game picker. The internal IDs are:

bed, bell, book_and_quill, bread, brick_block, bundle, campfire, chest, clock, command_block, compass, diamond_chesplate, diamond_hoe, knowledge_book, locations, nether, news, pin, sign, sword, trade

The default icon for new categories (if none is picked) is the pin icon.

Note: diamond_chesplate is a known misspelling of "chestplate" in the source code. The ID reproduced here matches what you'll see in-game, and the spelling will be corrected in the next addon update.

Default category assignments

CategoryIcon
NewsNews
TradeTrade
RulesBook and Quill
MiscellaneousBundle
Admin NoticesCommand Block

Comment system

ConstantValue
Max comment length30 chars
Max comments per post20
Comment cooldown60 seconds

Activity events tracked

↑ Back to top

Compatibility

↑ Back to top