A awesome way to publish server annocouncment.
A Minecraft Fabric mod for server announcements and notices with optional client-side GUI enhancement.
mods folderconfig/noticeexpress/config.jsonmods folderAll commands start with /notice:
/notice publish <title> <content>
Example:
/notice publish "Server Maintenance" "The server will be down for maintenance on Saturday from 2-4 PM."
/notice delete <id>
Example:
/notice delete 1
/notice pin <id>
Example:
/notice pin 2
/notice unpin <id>
Example:
/notice unpin 2
/notice list
Shows a compact list of all notices with their IDs and titles.
/notice show
Displays all notices with full content in chat.
When viewing notices in chat, they appear in the following format:
[Publisher] [YYYY/MM/DD HH:mm] [PINNED]
Title (in gold, bold)
Content (in white, supports multiple lines)
Example:
[Admin] [2026/02/02 12:30] [PINNED]
Server Maintenance
The server will be down for maintenance on Saturday from 2-4 PM.
Please save your progress before then.
Configuration file location: config/noticeexpress/config.json
{
"serverTitle": "Server Announcements",
"databasePath": "config/noticeexpress/notices.db"
}
NoticeExpress uses SQLite for persistent storage. The database is automatically created and managed.
CREATE TABLE notices (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
publisher TEXT NOT NULL,
publisher_uuid TEXT NOT NULL,
content TEXT NOT NULL,
timestamp INTEGER NOT NULL,
is_pinned INTEGER NOT NULL DEFAULT 0,
created_at INTEGER NOT NULL
)
The mod uses Minecraft's built-in OP system:
/notice list and /notice showThe optional client-side mod will provide an enhanced GUI with:
git clone https://github.com/0x002500/NoticeExpress.git
cd NoticeExpress
./gradlew build
build/libs/src/
├── main/
│ ├── java/top/orderly/noticeexpress/
│ │ ├── NoticeExpress.java # Main mod class
│ │ ├── command/
│ │ │ └── NoticeCommand.java # Command registration and handlers
│ │ ├── config/
│ │ │ └── ModConfig.java # Configuration management
│ │ ├── database/
│ │ │ ├── DatabaseManager.java # SQLite connection manager
│ │ │ └── NoticeRepository.java # CRUD operations
│ │ ├── model/
│ │ │ └── Notice.java # Notice entity
│ │ └── util/
│ │ ├── ChatNotificationFormatter.java # Chat formatting
│ │ ├── PermissionChecker.java # Permission utilities
│ │ └── TimeFormatter.java # Time formatting
│ └── resources/
│ ├── fabric.mod.json # Mod metadata
│ └── assets/noticeexpress/
│ └── icon.png # Mod icon
└── client/
└── java/top/orderly/noticeexpress/
├── NoticeExpressClient.java # Client initialization
└── ui/ # GUI components (coming soon)
import top.orderly.noticeexpress.NoticeExpress;
import top.orderly.noticeexpress.model.Notice;
Notice notice = new Notice();
notice.setTitle("My Notice");
notice.setPublisher("System");
notice.setPublisherUuid(UUID.randomUUID());
notice.setContent("This is a programmatically created notice.");
NoticeExpress.getNoticeRepository().createNotice(notice);
import top.orderly.noticeexpress.NoticeExpress;
import top.orderly.noticeexpress.model.Notice;
import java.util.List;
// Get all notices
List<Notice> allNotices = NoticeExpress.getNoticeRepository().getAllNotices();
// Get a specific notice by ID
Notice notice = NoticeExpress.getNoticeRepository().getNoticeById(1);
// Get notices since a timestamp
long timestamp = System.currentTimeMillis() - 86400000; // Last 24 hours
List<Notice> recentNotices = NoticeExpress.getNoticeRepository().getNoticesSince(timestamp);
Contributions are welcome! Please feel free to submit a Pull Request.
git checkout -b feature/AmazingFeature)git commit -m 'feat: add some amazing feature')git push origin feature/AmazingFeature)This project follows Conventional Commits:
feat: - New featuresfix: - Bug fixesdocs: - Documentation changesstyle: - Code style changes (formatting, etc.)refactor: - Code refactoringtest: - Adding or updating testschore: - Maintenance tasksThis project is licensed under the Apache-2.0 License - see the LICENSE file for details.
Conversation