Ir para conteúdo

Usando mapas no Bukkit/Spigot


Mateusão

Posts Recomendados

Mapas no minecraft são ótimos, e na minha opinião a ferramenta menos utilizada em plugins mesmo sendo extremamente fácil a modificação dele usando bukkit, e neste tutorial irei mostrar como utilizar o bukkit nesta modificação,para começar mapas no minecraft tem 128x128 pixeis, cada pixel sendo 1 chunk, fazendo assim 2048x2048 blocos cada mapa, sabendo disso já poderemos começar o tutorial.

Iniciando os mapas
Para inicializar mapas no minecraft eu recomendo usar o evento de inicialização

@EventHandler
public void onMap(MapInitializeEvent event) {
      //Fazer código  
}

Esse evento vai ser chamado toda vez que um jogador abrir um mapa

O próximo passo e colocar a escala do mapa

event.getMap().setScale(MapView.Scale.FARTHEST);

isso é quanto de zoom o mapa tem, de mais perto até o mais longe exatamente nessa ordem

  • CLOSEST
  • CLOSE
  • NORMAL
  • FAR
  • FARTHEST

Mudando a renderização do mapa
Para você poder renderizar imagens ou apenas mudar os pixeis de um mapa, você primeiro tem que remover o renderizador normal do minecraft

event.getMap().removeRenderer(event.getMap().getRenderers().get(0));

Depois de remover o renderizador padrão, agora você vai ter que criar sua própria classe

public class CustomMapRenderer extends MapRenderer {
    @Override
    public void render(MapView mapView, MapCanvas mapCanvas, Player player) {

    }
}

Depois de criar sua classe, adicione ele ao mapa:

event.getMap().addRenderer(new CustomMapRenderer());

Com o renderizador customizado de mapa é possível fazer tais modificações:

Mudar a cor dos pixeis

mapCanvas.setPixel(70, 67, (byte) 16);

Nesse método eu estou mudando o pixel do X-70 e Y-67 para a cor vermelha (o byte 16)

Escrever texto

mapCanvas.drawText(10,10,MinecraftFont.Font,player.getName());

Nesse método eu estou escrevendo um texto no X-10 e Y-10, com a fonte padrão do minecraft, eu estou escrevendo o nome do jogador.

Desenhar uma imagem

mapCanvas.drawImage(0,0,image);

Eu estarei desenhando uma imagem nas coordenadas X-0 e Y-0 para ela ficar centralizada, porém imagens com tamanhos maiores que o limite do mapa(128 pixeiss de altura e largura) irão ser cortadas, logo é recomendado você redimensionar a imagem primeiro.

Exemplo:

Eu irei colocar a foto desse cachorro no mapa
Código do Listener:

public class MapListener implements Listener {
    private Plugin plugin;
    public MapListener(Plugin plugin) {
        this.plugin = plugin;
        Bukkit.getPluginManager().registerEvents(this, plugin);
    }
    @EventHandler
    public void onMap(MapInitializeEvent event) {
        event.getMap().removeRenderer(event.getMap().getRenderers().get(0));
        event.getMap().addRenderer(new CustomMapRenderer(plugin));
        event.getMap().setScale(MapView.Scale.FARTHEST);
    }
}

Código do renderizador:

public class CustomMapRenderer extends MapRenderer {
    private Plugin plugin;
    public CustomMapRenderer(Plugin plugin) {
        this.plugin = plugin;
    }
    @Override
    public void render(MapView mapView, MapCanvas mapCanvas, Player player) {
        //Primeiro irei pegar o arquivo da imagem
        File imageFile = new File(plugin.getDataFolder(), "cachorro.jpg");
        try {
            BufferedImage oldImage = ImageIO.read(imageFile);
            BufferedImage bufferedImage = new BufferedImage(128,128, BufferedImage.TYPE_INT_RGB);
            Graphics2D graphics = bufferedImage.createGraphics();
            //Isso apenas serve para redimensionar tal imagem
            graphics.drawImage(oldImage, 0,0,Math.min(128,oldImage.getWidth()),Math.min(128,oldImage.getHeight()),null);
            graphics.dispose();
            //E pronto agora irei desenhar ela no mapa
            mapCanvas.drawImage(0,0,bufferedImage);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Resultado:
enHUgGJ.jpg


Espero que este tutorial seja útil para você, qualquer dúvida ou sugestão de como melhorar ele, pode mandar

Link para o comentário
Compartilhar em outros sites

Mesmo tendo parado de trabalhar com minecraft a mais de ano já, achei muito interessante esse tutorial, simples e bem explicado... parabéns.

Se puder fazer outro tutorial criando um menu apartir do mapa onde o cara através do zoom e do clique vai selecionado as opções e vendo as coisas eu acho que ajudaria muita gente.

Parabéns mesmo.

Link para o comentário
Compartilhar em outros sites

47 minutos atrás, RUSHyoutuber disse:

Mesmo tendo parado de trabalhar com minecraft a mais de ano já, achei muito interessante esse tutorial, simples e bem explicado... parabéns.

Se puder fazer outro tutorial criando um menu apartir do mapa onde o cara através do zoom e do clique vai selecionado as opções e vendo as coisas eu acho que ajudaria muita gente.

Parabéns mesmo.

Eu acho que por conta das limitações do próprio minecraft vanilla, não seja possível fazer isso, mas irei pesquisar mais sobre o assunto

Link para o comentário
Compartilhar em outros sites

Participe da Conversa

Você pode postar agora e se cadastrar mais tarde. Se você tiver uma conta, a class='ipsType_brandedLink' href='https://gamersboard.com.br/login/' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title='Sign In Now'>acesse agora para postar com sua conta.
Observação: sua postagem exigirá aprovação do moderador antes de ficar visível.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.

Processando...
×
×
  • Criar Novo...