Latest commit on hChat: 4 h ago

hChat — the chat plugin a Paper 1.20+ server actually wants.

A modern, complete chat system for Paper 1.20+ servers. Built by @hauchdev. MIT, on GitHub, one plugin instead of six.

~/paper-server
paper 1.21.x · java 21
$ ls plugins/
hChat.jar  LuckPerms.jar  PlaceholderAPI.jar
$ java -jar paper-1.21.4.jar nogui
[hChat] Hooked PlaceholderAPI 2.11.3 — registering identifiers
[hChat] Permissions: read from LuckPerms (112 nodes detected)
[hChat] Languages loaded: en, es, fr (3 files)
[hChat] /hchat reload · /hchat lang · /msg · /reply · /spy ready
[hChat] softdepend: Vault=disabled, DiscordSRV=present (no relay yet)
> 
Java 17minimum JVM
Paper 1.20+Adventure API target
PlaceholderAPIrequired, 2.11+
LuckPermsrequired, 5.4+
Vaultoptional softdepend
DiscordSRVdetected at startup
From GitHub

What we have on github.com/hauchdev.

Pulled live from the GitHub API every hour. New repos show up here automatically; you don't have to come back to edit this page.

Live on hChat

The last few commits to hChat.

Pulled live — every hour — from /repos/hauchdev/hChat/commits. If GitHub is unavailable, we show the last cached value (or nothing, on the very first visit).

  1. c9d8ebdhauchdev4 h ago

    feat(listeners): add chat format and chat welcomes

  2. b66f3c4hauchdev18 h ago

    fix: some error in pom.xml

  3. 4848882hauchdev19 h ago

    fix: HChat.java

  4. 5b655a0hauchdev19 h ago

    fix: HChat.java

  5. 5f48672hauchdev19 h ago

    chore: implement new functions

  6. e5fca25hauchdev1 d ago

    chore: edit README.md

How it's written

Opinions we hold out loud.

Skip these if you don't care. They're why hChat behaves the way it does.

Hot reload is a contract.

/hchat reload picks up config.yml and every lang_*.yml without bouncing the server. We treat that as part of the public API, not a convenience.

Per-player language > server-wide only.

A single key in storage/player-lang.yml is enough for a player to choose their own locale; the server-wide lang is just the fallback.

Permission gates are written once.

No runtime permission check scattered across handlers. Every command & feature describes itself in plugin.yml, and the runtime reads from there.

Drop the JAR and run.

No config wizard, no installer flow. wget, reload, done.