Compatibility
Minecraft: Java Edition
Platforms
Tags
Creators
Details
NullPlugin

Statistic
NullPlugin adds a mythical entity Null – a nameless NPC that stalks players, creates a creepy atmosphere and behaves unpredictably. Perfect for horror and survival servers.
Features
- 🎯 Automatic spawn – random spawn near a player (configurable chance).
- 👀 Stalking – faces the player, teleports behind them, disappears and reappears elsewhere.
- 🧱 World interaction – places eerie signs (
LEAVE,I SEE YOU, ...), breaks blocks, extinguishes torches. - 🔊 Atmospheric effects – ambient sounds, footsteps, heartbeat, portal, smoke and soul particles.
- 💾 State saving – after server restart, Null returns to the same location.
- 🎨 Custom NPC skins (Mineskin) – place a PNG in
plugins/NullPlugin/skins/and the plugin automatically generates a signed skin via the Mineskin API on server startup. Result is cached on disk, so subsequent starts don't require internet access. - ⚙️ Flexible configuration – every parameter (distances, chances, sounds, particles) is configurable via
config.yml. - 🔌 NPC plugin support (since v1.0.2) – Citizens, FancyNPCs, NPC Plugin.
Admin commands
/null spawn [player]– summon Null near yourself or the specified player./null remove– remove the current Null./null reload– reload the configuration./null info– show NPC status./null target <player>– change target./null debug– debug information./null stats– statistics (spawns, signs, destructions, teleports).
Installation
- Download
NullPlugin.jar. - Place it in your server's
plugins/folder. - Install one of the supported NPC plugins (Citizens, FancyNPCs or NPC Plugin).
- Restart the server.
- Configure
config.ymlinplugins/NullPlugin/. - (Optional) Set up a custom NPC skin via Mineskin — see the "Custom skins" section below.
Custom skins (Mineskin)
NullPlugin can generate a signed Minecraft skin for the Null NPC from a PNG file you provide. This is done through the Mineskin API.
🔧 Setup (5 minutes)
-
Get a Mineskin API key (optional but recommended):
- Without a key the plugin still works, but Mineskin applies strict rate limits and slower requests.
- Free key: https://mineskin.org/apikey
- Copy the key — it looks like
msk_XXXXXXXXXXXXXX.
-
Paste the key into
plugins/NullPlugin/config.yml:mineskin: api-key: "msk_XXXXXXXXXXXXXX" -
Put your skin into
plugins/NullPlugin/skins/nulleclipse.png.- File must be PNG, size 64×64, format like a standard Minecraft skin.
- File name without extension must match
null.appearance.skin-name(default:Nulleclipse).
-
Restart the server. You'll see in the console:
[SkinLoader] Нужно сгенерировать 1 текстур через Mineskin API [SkinLoader] Текстура сгенерирована и сохранена для 'nulleclipse'.On the next start:
[SkinLoader] Загружено 1 текстур из skin-cache.yml -
Done — Null will spawn with your skin from the very first spawn.
🔄 Changing the skin later
- Replace the PNG in
plugins/NullPlugin/skins/. - Delete
plugins/NullPlugin/skin-cache.yml. - Restart the server — plugin will regenerate the texture.
📦 Where things are stored
| Path | Purpose |
|---|---|
plugins/NullPlugin/skins/*.png |
Skin source files (PNG, 64×64) |
plugins/NullPlugin/skin-cache.yml |
Generated value + signature from Mineskin |
plugins/NullPlugin/config.yml → mineskin.api-key |
Mineskin API key |
Dependencies
- Required: Citizens (before v1.0.1) / Citizens, FancyNPCs or NPC Plugin (since v1.0.2)
- Optional: WorldGuard (for block build permission checks)
Support
- Telegram: @romixsupport_bot
- Discord: https://discord.gg/PNp3S3sanv
- Wiki (RU): https://romixerx.ru/null-wiki
- GitHub Issues: https://github.com/rompix/NullPlugin/issues
NullPlugin
NullPlugin добавляет на сервер мистическую сущность Null – безымянного NPC, который преследует игроков, создаёт жуткую атмосферу и ведёт себя непредсказуемо. Идеально для хоррор‑ и выживани‑серверов.
Особенности
- 🎯 Автоматическое появление – случайный спавн рядом с игроком (настраиваемый шанс).
- 👀 Преследование – смотрит на игрока, телепортируется за спину, исчезает и появляется в другом месте.
- 🧱 Взаимодействие с миром – ставит жуткие таблички (
LEAVE,I SEE YOU, ...), разрушает блоки, гасит факелы. - 🔊 Атмосферные эффекты – эмбиент, шаги, сердцебиение, частицы порталов, дыма и душ.
- 💾 Сохранение состояния – после перезагрузки сервера Null возвращается на то же место.
- 🎨 Кастомные скины через Mineskin – положи PNG в
plugins/NullPlugin/skins/, и плагин автоматически сгенерирует подписанный скин через Mineskin API при старте сервера. Результат кэшируется на диск — последующие запуски не требуют интернета. - ⚙️ Гибкие настройки – каждый параметр (дистанции, шансы, звуки, частицы) конфигурируется через
config.yml. - 🔌 Поддержка NPC-плагинов (с версии 1.0.2) – Citizens, FancyNPCs, NPC Plugin.
Команды администратора
/null spawn [игрок]– призвать Null рядом с собой или указанным игроком./null remove– удалить текущего Null./null reload– перезагрузить конфигурацию./null info– показать статус NPC./null target <игрок>– сменить цель./null debug– отладочная информация./null stats– статистика (появления, таблички, разрушения, телепорты).
Установка
- Скачайте
NullPlugin.jar. - Поместите в папку
plugins/сервера. - Установите один из поддерживаемых NPC-плагинов (Citizens, FancyNPCs или NPC Plugin).
- Перезапустите сервер.
- Настройте
config.ymlвplugins/NullPlugin/. - (Опционально) Настройте кастомный скин для NPC через Mineskin — см. раздел «Кастомные скины» ниже.
Кастомные скины (Mineskin)
NullPlugin умеет генерировать подписанный скин для NPC Null из PNG-файла, который вы положите. Делается это через API сервиса Mineskin.
🔧 Настройка (5 минут)
-
Получите API-ключ Mineskin (необязательно, но рекомендуется):
- Без ключа плагин тоже работает, но Mineskin накладывает жёсткие лимиты и запросы идут медленнее.
- Бесплатный ключ: https://mineskin.org/apikey
- Ключ выглядит примерно так:
msk_XXXXXXXXXXXXXX.
-
Вставьте ключ в
plugins/NullPlugin/config.yml:mineskin: api-key: "msk_XXXXXXXXXXXXXX" -
Положите скин в
plugins/NullPlugin/skins/nulleclipse.png.- Файл должен быть в формате PNG, размер 64×64, как стандартный скин Minecraft.
- Имя файла без расширения должно совпадать с
null.appearance.skin-name(по умолчаниюNulleclipse).
-
Перезапустите сервер. В консоли увидите:
[SkinLoader] Нужно сгенерировать 1 текстур через Mineskin API [SkinLoader] Текстура сгенерирована и сохранена для 'nulleclipse'.При следующем запуске:
[SkinLoader] Загружено 1 текстур из skin-cache.yml -
Готово — Null будет в вашем скине с самого первого спавна.
🔄 Как поменять скин позже
- Замените PNG в
plugins/NullPlugin/skins/. - Удалите
plugins/NullPlugin/skin-cache.yml. - Перезапустите сервер — плагин сгенерирует текстуру заново.
📦 Где что хранится
| Путь | Назначение |
|---|---|
plugins/NullPlugin/skins/*.png |
Исходные файлы скинов (PNG, 64×64) |
plugins/NullPlugin/skin-cache.yml |
Сгенерированные value + signature от Mineskin |
plugins/NullPlugin/config.yml → mineskin.api-key |
API-ключ Mineskin |
Зависимости
- Обязательно: Citizens (до v1.0.1) / Citizens, FancyNPCs или NPC Plugin (начиная с v1.0.2)
- Опционально: WorldGuard (для проверки прав разрушения блоков)
📄 config.yml
# ============================================================
# NullPlugin Configuration File
# Версия / Version: 1.1.0
# ============================================================
# Language for messages: ru (Russian) or en (English)
# Язык сообщений: ru (русский) или en (английский)
language: ru
# ------------------------------------------------------------
# UPDATE CHECKER / ПРОВЕРКА ОБНОВЛЕНИЙ
# ------------------------------------------------------------
update-checker:
# Enable checking for updates on Modrinth
# Включить проверку обновлений на Modrinth
enabled: true
# ============================================================
# MINESKIN API — генерация скинов для NPC
# MINESKIN API — generating skins for NPCs
# ============================================================
#
# 🇷🇺 Что это и зачем:
# Скины игроков в Minecraft должны быть подписаны Mojang.
# Mineskin — сервис, который принимает PNG-файл (64×64)
# и возвращает подписанные value + signature. Эти данные
# мы прикрепляем к NPC, и он получает нужный скин.
#
# Плагин делает это автоматически при старте сервера:
# 1. Читает PNG из plugins/NullPlugin/skins/nulleclipse.png
# 2. Отправляет в Mineskin
# 3. Сохраняет результат в plugins/NullPlugin/skin-cache.yml
# 4. Следующие запуски читают уже готовую текстуру —
# без запросов в интернет.
#
# API-ключ:
# Без ключа плагин тоже работает, но Mineskin накладывает
# жёсткие лимиты (и запросы идут медленнее). Рекомендуется
# получить бесплатный ключ: https://mineskin.org/apikey
# Вставь его в поле 'api-key' ниже.
#
# 🇬🇧 What and why:
# Minecraft player skins must be Mojang-signed. Mineskin accepts
# a PNG file (64×64) and returns signed value + signature.
# These are attached to the NPC, giving it the desired skin.
#
# The plugin does this automatically on server startup:
# 1. Reads plugins/NullPlugin/skins/nulleclipse.png
# 2. Uploads to Mineskin
# 3. Saves result to plugins/NullPlugin/skin-cache.yml
# 4. Subsequent starts read the cached texture —
# no internet requests.
#
# API key:
# Works without a key too, but Mineskin enforces strict
# rate limits (and slower requests). Get a free key at
# https://mineskin.org/apikey and paste it below.
# ============================================================
mineskin:
# API-ключ Mineskin (оставь пустым "" для работы без авторизации).
# Mineskin API key (leave empty "" to run without authorization).
api-key: ""
# ============================================================
# NULL SETTINGS
# ============================================================
null:
# Enable/disable the Null myth completely
enabled: true
# Chance (0.0 - 1.0) for Null to spawn randomly:
# - on player join (with join-spawn-delay)
# - every 6 seconds in a periodic task
spawn-chance: 0.01
# Delay after player join before possible Null spawn (ticks, 20 ticks = 1 sec)
join-spawn-delay: 200
# Minimum and maximum distance (blocks) from player where Null can spawn
spawn-min-distance: 5
spawn-distance: 25
# Maximum number of Null instances allowed at once (usually 1)
max-instances: 1
# How long Null lives after spawn (seconds). Set to 0 for infinite lifetime
lifetime-seconds: 60
# NPC ID assigned automatically – DO NOT MANUALLY EDIT
npc-id: -1
# Should WorldGuard be used to check block break/place permissions?
use-worldguard: true
# ------------------------------------------------------------
# Null behavior settings
# ------------------------------------------------------------
behavior:
follow-player: true
teleport-randomly: true
destroy-blocks: true
place-signs: true
look-at-player: true
teleport-cooldown: 10
action-cooldown: 15
follow-range-teleport: 50
invisible-distance: 5
invisible-duration: 60
max-location-attempts: 10
teleport-chance: 0.3
teleport-behind-chance: 0.05
glance-chance: 0.02
extinguish-torch-chance: 0.1
invisible-chance: 0.3
sign-chance: 0.2
destroy-chance: 0.15
ambient-sound-chance: 0.1
sign-remove-delay: 1200
torch-restore-delay: 80
glance-duration: 6
destroy-radius: 3
destroy-iterations: 3
torch-radius: 6
near-effect-distance: 5.0
near-min: 15
near-max: 30
teleport-min: 20
teleport-max: 40
sign-min: 5
sign-max: 15
# ------------------------------------------------------------
# Null appearance
# ------------------------------------------------------------
appearance:
# Skin name in skins/ folder (without .png)
# Имя скина в папке skins/ (без .png)
skin-name: "Nulleclipse"
invisible-sometimes: true
spawn-particles: true
teleport-particles: true
despawn-particles: true
show-nameplate: true
# ------------------------------------------------------------
# Signs that Null can place
# ------------------------------------------------------------
signs:
messages:
- "null"
- "LEAVE"
- "I SEE YOU"
- "RUN"
# ------------------------------------------------------------
# Null sound effects
# ------------------------------------------------------------
sounds:
enabled: true
ambient-sounds: true
teleport-sound: "ENTITY_ENDERMAN_TELEPORT"
despawn-sound: "ENTITY_ILLUSIONER_MIRROR_MOVE"
spawn-sound: "ENTITY_ENDERMAN_AMBIENT"
destroy-sound: "ENTITY_GENERIC_EXPLODE"
place-sign-sound: "BLOCK_WOOD_PLACE"
sign-break-sound: "BLOCK_WOOD_BREAK"
extinguish-sound: "BLOCK_FIRE_EXTINGUISH"
glance-teleport-sound: "ENTITY_ENDERMAN_TELEPORT"
glance-illusioner-sound: "ENTITY_ILLUSIONER_AMBIENT"
heartbeat-sound: "ENTITY_WARDEN_HEARTBEAT"
ambient-scary:
- "AMBIENT_CAVE"
- "ENTITY_ENDERMAN_STARE"
- "ENTITY_GHAST_AMBIENT"
- "BLOCK_PORTAL_AMBIENT"
- "ENTITY_WITHER_AMBIENT"
- "ENTITY_ILLUSIONER_AMBIENT"
- "ENTITY_VEX_AMBIENT"
- "ENTITY_PLAYER_BREATH"
- "BLOCK_SCULK_SHRIEKER_SHRIEK"
ambient-step:
- "BLOCK_STONE_STEP"
- "BLOCK_SAND_STEP"
- "BLOCK_GRAVEL_STEP"
- "ENTITY_PLAYER_ATTACK_SWEEP"
# ------------------------------------------------------------
# Null particle effects
# ------------------------------------------------------------
particles:
spawn: "PORTAL"
teleport: "PORTAL"
despawn: "LARGE_SMOKE"
glance-portal: "PORTAL"
glance-soul-flame: "SOUL_FIRE_FLAME"
count: 20
speed: 0.1
spawn-offset-x: 0.5
spawn-offset-y: 1.0
spawn-offset-z: 0.5
# ------------------------------------------------------------
# Fear & mystical effects
# ------------------------------------------------------------
effects:
darkness-duration: 100
blindness-duration: 60
nausea-duration: 120
whisper:
enabled: true
sound: "ENTITY_ILLUSIONER_AMBIENT"
chance: 0.08
flicker:
enabled: true
sound: "ENTITY_ELDER_GUARDIAN_CURSE"
chance: 0.05
blind-duration: 40
creepy-particles:
enabled: true
particle: "WARPED_SPORE"
chance: 0.12
count: 15
fake-hurt:
enabled: true
sound: "ENTITY_PLAYER_HURT"
chance: 0.04
distortion:
enabled: true
chance: 0.03
duration: 100
amplifier: 4


