EasyWebMap
Live web map for Hytale servers. View your world in a browser with real-time player tracking, direction arrows, and click-to-locate. Embed on your website with iframe or build custom tools with the REST API. Uses Hytale's native map rendering.
Описание
EasyWebMap
Создан для европейского сервера выживания Hytale play.hyfyve.net
Живая веб-карта для вашего сервера Hytale. Просмотр вашего мира в браузере, отслеживание игроков в режиме реального времени и легкая интеграция с вашим сайтом сообщества.
Быстрый старт
- Скачать последнюю
EasyWebMap.jarиз выпуски - Поместите его на свой сервер
модпапка - Перезагрузите свой сервер
- Открыть
http://localhost:8080В вашем браузере
Что вы можете сделать
Живая карта мира
- Посмотреть весь ваш мир в веб-браузере
- Terrain обновляется автоматически, когда игроки создают или уничтожают блоки
- Zoom in/out и свободно передвигаться
- Использование рендеринга родной карты Hytale (так же, как и внутриигровая карта)
Отслеживание игроков в реальном времени
- Все онлайн-игроки на карте с маркерами стрел
- Стрелы вращаются, чтобы показать, в каком направлении сталкиваются игроки.
- Нажмите на любого игрока на боковой панели, чтобы перейти к его местоположению
- Обновление позиций игрока каждую секунду через WebSocket
Интеграция сайта
Вставьте карту непосредственно на веб-сайте вашего сообщества с помощью iframe:
<iframe src="http://your-server-ip:8080" width="100%" height="600"></iframe>
Или ссылайтесь на него с веб-сайта вашего сервера, Discord или форумов.
REST API
Создание пользовательских инструментов с использованием встроенного API:
| Конечная точка | Возвращение |
|---|---|
GET /api / Миры |
Список доступных миров |
GET/api/players/{world} |
Все игроки в мире (имя, позиция, направление) |
GET/api/tiles/{world}/{z}/{x}/{y}.png |
Изображение плитки карты |
WS/ws |
Обновления позиций игроков в реальном времени |
Пример: Позиции игроков
const response = wait fetch ('http://your-server:8080/api/players/world');
Const Players = Wait Response.json();
// [{название: "Стив", x: 100, y: 64, z: -200, yaw: 1.57 }, ...]
Пример: WebSocket для живых обновлений
const ws = новый WebSocket ('ws://your-server:8080/ws');
ws.onmessage = (e) => {
const data = JSON.parse (e.data);
console.log (data.worlds); // Все позиции игроков по миру
}
Многомировая поддержка
- Переключение между мирами с помощью выпадающего
- Конфигурируйте, какие миры видны
- Каждый мир имеет свой собственный кэш
командование
| Командование | Что он делает |
|---|---|
/easywebap статус |
Показать количество соединений, информацию кэша, статус SSL и статус сервера |
/easywebmap скачать |
Перезагрузить файл Config |
/easywebmap clearcache |
Очистить все кэши (память + диск) |
/easywebmap pregenerate <radius> |
Предварительно генерируемые плитки вокруг вашей позиции |
/easywebmap обновляется |
Немедленное обновление SSL сертификата |
Все команды требуют easybmap.admin Разрешение.
HTTPS с Let's Encrypt (бесплатный SSL)
EasyWebMap может автоматически получать и обновлять SSL-сертификаты от Let's Encrypt. Не требуется ручное управление сертификатами!
Быстрая настройка
Направьте свой домен на ваш сервер - Убедись.
map.yourserver.com(или любой домен, который вы выберете) указывает на IP-адрес вашего сервера.Открытый порт 80 Let's Encrypt должен проверить, что вы владеете доменом, подключившись к порту 80. Убедитесь, что ваш брандмауэр позволяет это.
Добавьте в конфигурацию. Джексон:
{
"Включить Https": правда,
httpsPort: 8443,
"домен": "map.yourserver.com",
"acmeEmail": "admin@yourserver.com"
?
- Перезагрузите свой сервер - Плагин будет автоматически:
- Скачать Let's Encrypt
- Запрос сертификата для вашего домена
- Начать обслуживание HTTPS на порту 8443
Вот так! Ваша карта теперь доступна на https://map.yourserver.com: 8443
Как это работает
Когда вы включаете HTTPS, плагин:
- Создает учетную запись с помощью Let's Encrypt (хранится в
ssl/account.key) - Запрос сертификата для вашего домена
- Let's Encrypt вызов HTTP-01 на порту 80
- Хранит сертификат в
ssl/domain.crtи ключ кssl/domain.key - Запуск сервера HTTPS
- Ежедневно проверяет, нуждается ли сертификат в обновлении (обновляется за 30 дней до истечения срока действия)
- Автоматически перезагружать сертификат без перезапуска
Опции конфигурации HTTPS
| настройка | по умолчанию | Что он делает |
|---|---|---|
обеспечивать Https |
ложный | Включить/отключить HTTPS |
https Порт |
8443 | Порт для HTTPS (используйте 443, если у вас есть разрешение) |
домен |
"" | Ваше доменное имя (обязательно для HTTPS) |
акме Электронная почта |
"" | Электронная почта для уведомлений Let's Encrypt (необязательно, но рекомендуется) |
Производитель: Acme |
истинный | Настроить ложный для тестирования (использует промежуточный сервер, избегает ограничений скорости) |
SSL команды
| Командование | Что он делает |
|---|---|
/easywebap статус |
Показывает статус HTTPS, домен и дату истечения срока действия сертификата |
/easywebmap обновляется |
Немедленное продление сертификата |
Требования
- Доменное имя - Вам нужен домен, указывающий на ваш сервер (IP-адреса не будут работать с Let's Encrypt)
- Порт 80 доступен Let's Encrypt проверяет право собственности на домен через HTTP на порту 80
- Порт 8443 (или 443) - для обслуживания HTTPS трафика
Первый тест
Прежде чем идти в прямом эфире, проверьте с помощью Let's Encrypt сервер, чтобы избежать ограничений скорости:
{
"Включить Https": правда,
"домен": "map.yourserver.com",
«UseProductionAcme»: ложный
?
Постановочный сервер выдает тестовые сертификаты, которым браузеры не будут доверять, но это доказывает, что все работает. После проверки устанавливается Производитель: Acme назад к истинный и перезапустить.
Порт 443 (стандартный HTTPS)
По умолчанию HTTPS работает на порту 8443. Если вы хотите использовать стандартный порт HTTPS (443):
{
"httpsPort": 443
?
Привязка к порту 443 может потребовать запуска сервера в качестве корня/администратора или использования обратного прокси.
За обратным прокси
Если вы используете nginx или Apache в качестве обратного прокси-сервера, вы можете разрешить прокси-серверу обрабатывать SSL и сохранять EasyWebMap только на HTTP. Пример конфигурации nginx:
Сервер {
слушать 443 ssl;
server_name map.yourserver.com
ssl_certificate /etc/letsencrypt/live/map.yourserver.com/fullchain.pem;
ssl_certificate_key/etc/letsencrypt/live/map.yourserver.com/privkey.pem;
местоположение / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
прокси_set_header Обновление $http_upgrade
proxy_set_header Подключение «обновление»;
прокси_set_header хостинг $host;
?
?
конфигурация
Файл Config: mods/cryptobench_EasyWebMap/config.json
{
"httpPort": 8080,
"обновление IntervalMs": 1000,
"TileCacheSize": 20000,
«Возможные миры»: [],
"размер плитки": 256,
"МаксЗум": 4,
"RenderExploredChunksOnly": правда,
"chunkIndexCacheMs": 30000,
"useDiskCache": правда,
"TileRefreshRadius": 5,
"TileRefreshIntervalMs": 60000,
"Включить Https": ложный,
httpsPort: 8443,
"домен": "",
"acmeEmail": ",
Оригинальное название: UseProductionAcme: True
?
| настройка | по умолчанию | Что он делает |
|---|---|---|
http Порт |
8080 | Порт веб-сервера |
Обновление IntervalMs |
1000000000 | Частота обновления проигрывателя (ms) |
tileCacheSize |
20000000 | Плитка Max для кэширования в памяти (~ 200 МБ при 10 КБ / плитка) |
включенный Миры |
[] | Всемирный белый список (пустые = все) |
Скачать ExploredChunksOnly |
истинный | Только рендерные фрагменты, которые исследовали игроки (предотвращают задержку / злоупотребление) |
Обсуждение IndexCacheMs |
30000000 | Как долго кэшировать исследуемый индекс кусков (ms) |
Использование DiskCache |
истинный | Сохранить плитки на диск для сохранения на перезапуске |
Плитка RefreshRadius |
5 | Игрок должен быть в пределах N кусков, чтобы плитка освежалась |
Обновление IntervalMs |
60000000 | Минимальное время между обновлениями плитки (ms) |
обеспечивать Https |
ложный | Включить автоматический HTTPS с функцией Let’s Encrypt |
https Порт |
8443 | Порт для HTTPS соединений |
домен |
"" | Ваше доменное имя для SSL сертификата |
акме Электронная почта |
"" | Электронная почта для Let's Encrypt |
Производитель: Acme |
истинный | Используйте производство Let's Encrypt (ложная = постановка для тестирования) |
Chunk Index Cache (недоступная ссылка)Обсуждение IndexCacheMs)
Когда Скачать ExploredChunksOnly включен, плагин должен проверить, какие фрагменты были исследованы. Для этого требуется считывать индекс с диска. Чтобы избежать чтения диска по каждому запросу плитки, индекс кэшируется.
Компромисс:
- более низкое значение (например, 5000 мс): Новое исследование показывает на карте быстрее, но больше диска считывает
- Более высокая ценность (например, 60000 мс): Меньше считывает диск, но недавно исследованные области занимают больше времени, чтобы появиться.
Что это означает на практике:
| Время кэша | Диск читает | Карта свежести |
|---|---|---|
| 5000 (5) | ~12/мин в мире | Новые куски, видимые в течение 5 секунд |
| 30000 (30) | ~2/мин в мире | Новые куски, видимые в течение 30 секунд |
| 60000 (1 мин) | ~ 1/мин в мире | Новые куски, видимые в течение 1 минуты |
Примерный сценарий: Игрок исследует новую область. с Обсуждение:IndexCacheMs: 30000Новые фрагменты не появятся на веб-карте до истечения срока действия кэша (до 30 секунд). До тех пор плитка будет казаться пустой.
Примечание: Это только влияет новый Исследовал куски. Уже исследованные куски всегда видны. The /easywebmap clearcache Команда очищает этот кэш немедленно, если это необходимо.
Дисковый кэш и Smart Refresh
Плагин использует интеллектуальную систему кэширования, чтобы минимизировать нагрузку на сервер:
Дисковый кэшTiles сохраняются как PNG файлы
mods/cryptobench_EasyWebMap/tilecache/. Они сохраняются при перезагрузке сервера, поэтому первый посетитель после перезагрузки не запускает генерацию массовой плитки.Smart RefreshПлитка восстанавливается только тогда, когда:
- Плитка старше, чем
Обновление IntervalMs(по умолчанию: 60 секунд), и - Игрок находится внутри
Плитка RefreshRadiusПо умолчанию: 5 кусков
- Плитка старше, чем
Почему это важно:
- Если поблизости нет игроков, местность не может измениться, поэтому кэшированная плитка всегда действительна.
- Это означает, что 99% запросов на плитку обслуживаются мгновенно из кэша с нулевой загрузкой сервера.
- Регенерируют только активные игровые зоны и максимум раз в минуту.
Поток:
Запрос на плитку → Кэш памяти? Служить мгновенно
↓ нет
Дисковый кэш? Достаточно свежий? Обслуживание с диска
↓ Нет ↓ Старый
Создавать новых игроков поблизости? Нет: сервировать несвежий (поезд без изменений)
↓ да
Регенерировать плитку
Предпоколение
Использовать /easywebmap pregenerate <radius> Чтобы согреть кэш:
- Генерирует плитки в квадрате вокруг вашего положения
- Пропускает уже кэшированные плитки и неисследованные куски
- Запускается в фоновом режиме с задержкой 50 мс между плитками, чтобы избежать задержки
- Пример:
/easywebmap прегенерирует 50генерирует до 10 201 плитки - Нет максимального предела - используйте то, что вам нужно (большие значения потребуют времени)
Случаи общего использования
Публичная серверная карта - Пусть игроки видят, где все исследуют.
Виджет сайта Вставить на домашнюю страницу вашего сервера, чтобы показать живую активность
наложение потока Отображение карты в потоке Twitch/YouTube
Боты Discord - Используйте API для публикации локаций игроков или скриншотов
Инструмент администратора Мониторинг активности игрока на вашем сервере
FAQ
В: Как получить доступ к карте с другого компьютера? Используйте IP-адрес вашего сервера вместо местный житель: http://192.168.1.100:8080
Q: Как я встраиваю его на свой сайт? Используйте iframe: <iframe src="http://your-server:8080" width="800" height="600"></iframe>
Q: может Я скрываю определенные миры? Добавить конкретные имена в включенный Миры в конфигурации. Пустой массив показывает все.
В: Как мне поставить его за обратный прокси? Точка nginx/Apache в порт 8080. Путь WebSocket /ws.
В: Почему некоторые области на карте выглядят пустыми? По умолчанию отображаются только исследованные фрагменты ()делать Исследованные фрагменты: правда). Это предотвращает задержку сервера и злоупотребление пользователями, прокручивающимися в неисследованные области. Установить его ложный Если вы хотите отобразить все фрагменты (не рекомендуется для общедоступных серверов).
В: Могут ли пользователи злоупотреблять картой, чтобы отстать от моего сервера? Не с настройками по умолчанию. The Скачать ExploredChunksOnly Опция (включается по умолчанию) предотвращает визуализацию неисследованных кусков, поэтому прокрутка вокруг не вызовет генерацию кусков.
Q: Как включить HTTPS? Добавить «EnableHttps»: правда и «домен»: «your-domain.com» к вашей конфигурации. Плагин автоматически получает бесплатный сертификат SSL от Let's Encrypt. Смотрите раздел HTTPS выше для получения подробной информации.
В: Почему мой SSL-сертификат не работает? Общие вопросы:
- Домен не указывает на IP вашего сервера
- Порт 80 блокируется брандмауэром (для проверки требуется шифрование)
- Другой сервис использует порт 80 Проверьте журналы сервера на наличие определенных сообщений об ошибках.
В: Нужно ли обновлять сертификат вручную? Нет! Плагин автоматически проверяет каждый день и обновляет сертификаты за 30 дней до истечения срока действия. Вам никогда не нужно прикасаться к нему.
Вопрос: Могу ли я использовать свой собственный SSL-сертификат вместо Let's Encrypt? В настоящее время только автоматические Поддерживаются сертификаты Encrypt. Если вам нужно использовать свой собственный сертификат, поместите EasyWebMap за обратный прокси (nginx / Apache), который обрабатывает SSL.
Q: Что делать, если Let’s Encrypt не работает или ограничен? Плагин будет нормально работать с HTTP. Он повторяет запросы сертификатов и регистрирует любые ошибки. Как только Let's Encrypt снова станет доступен, сертификаты будут получены автоматически.
Строительство из источника
Чистый пакет mvn
cp target/EasyWebMap-1.0.0.jar/path/to/Server/mods/
Требуется Java 25+ и Maven 3.8+.
Лицензия
MIT - делайте с ним все, что хотите!
Показать оригинальное описание (English)
EasyWebMap
Built for the European Hytale survival server at play.hyfyve.net
A live web map for your Hytale server. View your world in a browser, track players in real-time, and easily integrate with your community website.
Quick Start
- Download the latest
EasyWebMap.jarfrom Releases - Put it in your server's
modsfolder - Restart your server
- Open
http://localhost:8080in your browser
What You Can Do
Live World Map
- See your entire world rendered in a web browser
- Terrain updates automatically as players build or destroy blocks
- Zoom in/out and pan around freely
- Uses Hytale's native map rendering (same as the in-game map)
Real-Time Player Tracking
- See all online players on the map with arrow markers
- Arrows rotate to show which direction players are facing
- Click any player in the sidebar to jump to their location
- Player positions update every second via WebSocket
Website Integration
Embed the map directly on your community website using an iframe:
<iframe src="http://your-server-ip:8080" width="100%" height="600"></iframe>
Or link to it from your server's website, Discord, or forums.
REST API
Build custom tools using the built-in API:
| Endpoint | Returns |
|---|---|
GET /api/worlds |
List of available worlds |
GET /api/players/{world} |
All players in a world (name, position, direction) |
GET /api/tiles/{world}/{z}/{x}/{y}.png |
Map tile image |
WS /ws |
Real-time player position updates |
Example: Fetch player positions
const response = await fetch('http://your-server:8080/api/players/world');
const players = await response.json();
// [{ name: "Steve", x: 100, y: 64, z: -200, yaw: 1.57 }, ...]
Example: WebSocket for live updates
const ws = new WebSocket('ws://your-server:8080/ws');
ws.onmessage = (e) => {
const data = JSON.parse(e.data);
console.log(data.worlds); // All player positions by world
};
Multi-World Support
- Switch between worlds using the dropdown
- Configure which worlds are visible
- Each world has its own tile cache
Commands
| Command | What it does |
|---|---|
/easywebmap status |
Show connection count, cache info, SSL status, and server status |
/easywebmap reload |
Reload the config file |
/easywebmap clearcache |
Clear all caches (memory + disk) |
/easywebmap pregenerate <radius> |
Pre-generate tiles around your position |
/easywebmap renewssl |
Force immediate SSL certificate renewal |
All commands require the easywebmap.admin permission.
HTTPS with Let's Encrypt (Free SSL)
EasyWebMap can automatically obtain and renew SSL certificates from Let's Encrypt. No manual certificate management required!
Quick Setup
Point your domain to your server - Make sure
map.yourserver.com(or whatever domain you choose) points to your server's IP address.Open port 80 - Let's Encrypt needs to verify you own the domain by connecting to port 80. Make sure your firewall allows this.
Add to your config.json:
{
"enableHttps": true,
"httpsPort": 8443,
"domain": "map.yourserver.com",
"acmeEmail": "admin@yourserver.com"
}
- Restart your server - The plugin will automatically:
- Register with Let's Encrypt
- Request a certificate for your domain
- Start serving HTTPS on port 8443
That's it! Your map is now available at https://map.yourserver.com:8443
How It Works
When you enable HTTPS, the plugin:
- Creates an account with Let's Encrypt (stored in
ssl/account.key) - Requests a certificate for your domain
- Responds to Let's Encrypt's HTTP-01 challenge on port 80
- Stores the certificate in
ssl/domain.crtand key inssl/domain.key - Starts the HTTPS server
- Checks daily if the certificate needs renewal (renews 30 days before expiry)
- Automatically reloads the certificate without restarting
HTTPS Configuration Options
| Setting | Default | What it does |
|---|---|---|
enableHttps |
false | Enable/disable HTTPS |
httpsPort |
8443 | Port for HTTPS (use 443 if you have permission) |
domain |
"" | Your domain name (required for HTTPS) |
acmeEmail |
"" | Email for Let's Encrypt notifications (optional but recommended) |
useProductionAcme |
true | Set to false for testing (uses staging server, avoids rate limits) |
SSL Commands
| Command | What it does |
|---|---|
/easywebmap status |
Shows HTTPS status, domain, and certificate expiry date |
/easywebmap renewssl |
Force immediate certificate renewal |
Requirements
- Domain name - You need a domain pointing to your server (IP addresses won't work with Let's Encrypt)
- Port 80 accessible - Let's Encrypt validates domain ownership via HTTP on port 80
- Port 8443 (or 443) accessible - For serving HTTPS traffic
Testing First
Before going live, test with Let's Encrypt staging server to avoid rate limits:
{
"enableHttps": true,
"domain": "map.yourserver.com",
"useProductionAcme": false
}
The staging server issues test certificates that browsers won't trust, but it proves everything works. Once verified, set useProductionAcme back to true and restart.
Using Port 443 (Standard HTTPS)
By default, HTTPS runs on port 8443. If you want to use the standard HTTPS port (443):
{
"httpsPort": 443
}
Note: Binding to port 443 may require running the server as root/administrator, or using a reverse proxy.
Behind a Reverse Proxy
If you're using nginx or Apache as a reverse proxy, you can let the proxy handle SSL and keep EasyWebMap on HTTP only. Example nginx config:
server {
listen 443 ssl;
server_name map.yourserver.com;
ssl_certificate /etc/letsencrypt/live/map.yourserver.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/map.yourserver.com/privkey.pem;
location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}
Configuration
Config file: mods/cryptobench_EasyWebMap/config.json
{
"httpPort": 8080,
"updateIntervalMs": 1000,
"tileCacheSize": 20000,
"enabledWorlds": [],
"tileSize": 256,
"maxZoom": 4,
"renderExploredChunksOnly": true,
"chunkIndexCacheMs": 30000,
"useDiskCache": true,
"tileRefreshRadius": 5,
"tileRefreshIntervalMs": 60000,
"enableHttps": false,
"httpsPort": 8443,
"domain": "",
"acmeEmail": "",
"useProductionAcme": true
}
| Setting | Default | What it does |
|---|---|---|
httpPort |
8080 | Web server port |
updateIntervalMs |
1000 | Player update frequency (ms) |
tileCacheSize |
20000 | Max tiles to cache in memory (~200MB at 10KB/tile) |
enabledWorlds |
[] | World whitelist (empty = all) |
renderExploredChunksOnly |
true | Only render chunks that players have explored (prevents lag/abuse) |
chunkIndexCacheMs |
30000 | How long to cache the explored chunks index (ms) |
useDiskCache |
true | Save tiles to disk for persistence across restarts |
tileRefreshRadius |
5 | Player must be within N chunks for tile to refresh |
tileRefreshIntervalMs |
60000 | Minimum time between tile refreshes (ms) |
enableHttps |
false | Enable automatic HTTPS with Let's Encrypt |
httpsPort |
8443 | Port for HTTPS connections |
domain |
"" | Your domain name for SSL certificate |
acmeEmail |
"" | Email for Let's Encrypt notifications |
useProductionAcme |
true | Use production Let's Encrypt (false = staging for testing) |
Chunk Index Cache (chunkIndexCacheMs)
When renderExploredChunksOnly is enabled, the plugin needs to check which chunks have been explored. This requires reading an index from disk. To avoid reading disk on every tile request, the index is cached.
Trade-off:
- Lower value (e.g., 5000ms): New exploration shows on map faster, but more disk reads
- Higher value (e.g., 60000ms): Fewer disk reads, but newly explored areas take longer to appear
What this means in practice:
| Cache Time | Disk Reads | Map Freshness |
|---|---|---|
| 5000 (5s) | ~12/min per world | New chunks visible within 5 seconds |
| 30000 (30s) | ~2/min per world | New chunks visible within 30 seconds |
| 60000 (1min) | ~1/min per world | New chunks visible within 1 minute |
Example scenario: A player explores a new area. With chunkIndexCacheMs: 30000, the new chunks won't appear on the web map until the cache expires (up to 30 seconds). The tile will show as empty until then.
Note: This only affects newly explored chunks. Already-explored chunks are always visible. The /easywebmap clearcache command clears this cache immediately if needed
Disk Cache & Smart Refresh
The plugin uses a smart caching system to minimize server load:
Disk Cache: Tiles are saved as PNG files to
mods/cryptobench_EasyWebMap/tilecache/. These persist across server restarts, so the first visitor after a restart doesn't trigger mass tile generation.Smart Refresh: Tiles only regenerate when:
- The tile is older than
tileRefreshIntervalMs(default: 60 seconds), AND - A player is within
tileRefreshRadiuschunks (default: 5 chunks)
- The tile is older than
Why this matters:
- If no players are nearby, terrain can't have changed, so the cached tile is always valid
- This means 99% of tile requests serve instantly from cache with zero server load
- Only actively played areas regenerate, and only once per minute at most
Flow:
Request for tile → Memory cache? → Serve instantly
↓ no
Disk cache? → Fresh enough? → Serve from disk
↓ no ↓ old
Generate new Players nearby? → No: Serve stale (terrain unchanged)
↓ yes
Regenerate tile
Pre-generation
Use /easywebmap pregenerate <radius> to warm the cache:
- Generates tiles in a square around your position
- Skips already-cached tiles and unexplored chunks
- Runs in background with 50ms delay between tiles to avoid lag
- Example:
/easywebmap pregenerate 50generates up to 10,201 tiles - No max limit - use what you need (large values will take time)
Common Use Cases
Public server map - Let players see where everyone is exploring
Website widget - Embed on your server's homepage to show live activity
Stream overlay - Display the map on your Twitch/YouTube stream
Discord bot - Use the API to post player locations or screenshots
Admin tool - Monitor player activity across your server
FAQ
Q: How do I access the map from another computer?
Use your server's IP instead of localhost: http://192.168.1.100:8080
Q: How do I embed it on my website?
Use an iframe: <iframe src="http://your-server:8080" width="800" height="600"></iframe>
Q: Can I hide certain worlds?
Yes, add specific world names to enabledWorlds in config. Empty array shows all.
Q: How do I put it behind a reverse proxy?
Point nginx/Apache to port 8080. WebSocket path is /ws.
Q: Why do some areas show as empty on the map?
By default, only explored chunks are rendered (renderExploredChunksOnly: true). This prevents server lag and abuse from users scrolling to unexplored areas. Set it to false in config if you want to render all chunks (not recommended for public servers).
Q: Can users abuse the map to lag my server?
Not with default settings. The renderExploredChunksOnly option (enabled by default) prevents rendering unexplored chunks, so scrolling around won't trigger chunk generation.
Q: How do I enable HTTPS?
Add "enableHttps": true and "domain": "your-domain.com" to your config. The plugin automatically gets a free SSL certificate from Let's Encrypt. See the HTTPS section above for details.
Q: Why isn't my SSL certificate working? Common issues:
- Domain doesn't point to your server's IP
- Port 80 is blocked by firewall (Let's Encrypt needs this for verification)
- Another service is using port 80 Check the server logs for specific error messages.
Q: Do I need to renew the certificate manually? No! The plugin automatically checks daily and renews certificates 30 days before they expire. You never need to touch it.
Q: Can I use my own SSL certificate instead of Let's Encrypt? Currently, only automatic Let's Encrypt certificates are supported. If you need to use your own certificate, put EasyWebMap behind a reverse proxy (nginx/Apache) that handles SSL.
Q: What if Let's Encrypt is down or rate-limited? The plugin will keep serving HTTP normally. It retries certificate requests and logs any errors. Once Let's Encrypt is available again, certificates will be obtained automatically.
Building from Source
mvn clean package
cp target/EasyWebMap-1.0.0.jar /path/to/Server/mods/
Requires Java 25+ and Maven 3.8+.
License
MIT - Do whatever you want with it!
Последние версии
EasyWebMap-v1.0.18.jar
EasyWebMap-v1.0.14.jar
EasyWebMap-v1.0.10.jar
EasyWebMap-v1.0.9.jar
EasyWebMap-v1.0.6.jar
Информация
Авторы:
Категории:
Версии игры:
Создан: 14.01.2026