Skip to content
This repository was archived by the owner on Aug 21, 2026. It is now read-only.
Realm-MCPublic archive

About

World Management API on jdk 21 for all versions major 1.21

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

5 Commits

Folders and files

Repository files navigation

RealmMC MapManager

Java Spigot Status

O mapmanager é um plugin Spigot avançado e de alta performance, desenhado para ser o núcleo da gestão de mundos na RealmMC. Ele funciona como um módulo do Controller, sendo responsável por carregar, descarregar, resetar e gerir mapas (instâncias) de forma dinâmica.

Este plugin substitui a necessidade de plugins como o Multiverse Core, integrando-se diretamente com o controller para aplicar regras, gerir perfis de mapas via MongoDB e disparar eventos para outros plugins de minigame.


✨ Principais Funcionalidades

  • Gestão de Perfis (MongoDB): Os mapas não são pastas, são "Perfis" guardados no MongoDB. Um perfil define o .schem, as regras de jogo, o gameMode e o nome do mundo.
  • Carregamento por Schematic (FAWE): Utiliza FastAsyncWorldEdit (FAWE) para colar schematics em mundos void (VoidChunkGenerator), garantindo um ambiente limpo.
  • Regras por Mundo: Aplica regras de jogo (PvP, quebrar blocos, fome, dano) de forma contextual, com base no perfil do mundo em que o jogador se encontra.
  • Gestão de Instâncias: Permite carregar e descarregar mapas sob demanda (ex: /map spawn arena1), ideal para minigames ou arenas.
  • Criação In-Game: Permite a criação de novos perfis de mapa (/map createprofile) e o salvamento de seleções do FAWE (/map save) diretamente do jogo.
  • Servidor Web de Download: Inicia um servidor web (na porta 8100) para servir ficheiros .schem, permitindo o download fácil (/map download).
  • Integração BlueMap: Inicia e para automaticamente as renderizações do BlueMap quando os mundos são criados ou apagados.
  • API de Eventos: Dispara MapProfileLoadEvent e MapProfileUnloadEvent para que outros plugins possam reagir quando um mapa está pronto ou é descarregado.

📦 Dependências

Para o mapmanager funcionar corretamente, o servidor Spigot deve ter os seguintes plugins instalados:

  1. Controller (Obrigatório)
  2. FastAsyncWorldEdit (Obrigatório)
  3. BlueMap (Opcional, mas recomendado para renderização)

🚀 Instalação e Configuração

1. Flags de Start (Pterodactyl)

O mapmanager é configurado através de Propriedades de Sistema Java no startup do servidor.

  • -Dmap.type (Obrigatório): Define o tipo de servidor, usado para carregar o mapa principal.

    • Ex: -Dmap.type=login (para o lobby de login)
    • Ex: -Dmap.type=build (para o servidor de build)
    • Ex: -Dmap.type=bw-solo-{map} (para um servidor de minigame)
  • -Dmap.webserver (Opcional): Se definido como true, inicia um servidor web na porta 8100 para o comando /map download.

    • IMPORTANTE: Apenas um servidor (ex: build-1) deve ter esta flag.
    • Ex: -Dmap.webserver=true

Exemplo de Comando de Arranque (Servidor build-1):

java -Dfile.encoding=UTF-8 ... -Dcontroller.serverId=build-1 -Dmap.type=build -Dmap.webserver=true -DMONGO_URI=... -jar server.jar

2. Configuração do Perfil (MongoDB)

Todos os mapas são definidos como documentos na coleção mapmanager da base de dados controller.

Exemplo:

db.mapmanager.insertOne({
  _id: "build-default",
  mapType: "build",
  worldName: "build-world",
  schematicFile: "build-default.schem",
  blueMapId: "build",
  spawnPoint: "0.5, 65, 0.5, 0, 0",
  pasteLocation: "0, 64, 0",
  activeInType: true,
  deleteOnUnload: false,
  forceGameMode: "CREATIVE",
  disablePvp: true,
  disableBlockBreak: false,
  disableBlockPlace: false,
  disableHunger: true,
  disableItemDrop: false,
  disableWeather: true,
  disableDaylightCycle: true,
  disableInteractions: false,
  disableEntityDamage: true,
  noMonsterSpawning: true,
  grantedPermissions: []
});

3. Arquivos de Schematic

Os arquivos .schem ficam localizados em:

plugins/mapmanager/

Comandos como /map save e /map upload gerem automaticamente estes arquivos.


🛠️ Comandos Principais

Permissão necessária: mapmanager.manager

Comandos de Ação

  • /map list [tipo]
  • /map info [id_perfil]
  • /map spawn [id | jogador | id:jogador] [id]
  • /map setspawn
  • /map reset [id_perfil]
  • /map reload
  • /map visualizar

Comandos de Perfis (MongoDB)

  • /map createprofile <id> <tipo> <nome_mundo>
  • /map save <id_perfil>
  • /map upload <id_perfil> <url>
  • /map download <id_perfil>
  • /map toggle <tipo> <id_perfil>
  • /map gamemode <id_perfil> <gamemode>
  • /map rule <id_perfil> <regra> <true|false>
  • /map delete <id_perfil>

Comandos de Mundos (Ativos)

  • /map worldcreate <nome>
  • /map worldinfo [nome_mundo]
  • /map worldtp <nome> [usuário]
  • /map worlddelete <nome>

🔌 API de Eventos

O MapManager fornece eventos Bukkit para integração com minigames e automações.

MapProfileLoadEvent

Disparado após o schematic ser colado com sucesso.

@EventHandler
public void onMapReady(MapProfileLoadEvent event) {
    MapProfile profile = event.getProfile();
    World world = event.getWorld();

    if (profile.getMapType().equals("bedwars")) {
        MinigameManager.setupArena(world, profile);
    }
}

MapProfileUnloadEvent

Disparado antes do mundo ser descarregado.

@EventHandler
public void onMapUnload(MapProfileUnloadEvent event) {
    MapProfile profile = event.getProfile();

    if (profile.getMapType().equals("bedwars")) {
        MinigameManager.endGame(profile.getWorldName());
    }
}

🧱 Estrutura do Projeto

RealmMC-MapManager/
├── src/main/java/br/com/realmmc/mapmanager/
│   ├── MapManager.java
│   ├── MapService.java
│   ├── MapRepository.java
│   ├── commands/
│   └── listener/
├── plugin.yml

🧩 Licença

Este projeto é de uso exclusivo da RealmMC. Todos os direitos reservados.

Desenvolvido por Lucas Corrêa.

About

World Management API on jdk 21 for all versions major 1.21

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages