-
Total de itens
129 -
Registro em
-
Última visita
Posts postados por 20T1cks
-
-
Cifra de césar, que é basicamente deslocar o alfabeto em um número X de vezes, essa cifra é insegura, mas um bom desafio de lógica.
Outro exemplo é o "jogo" Sued, que você pode dar uma pesquisada e criar uma cópia dele
-
Oi!, vamos no discord para negociar ?
20T1cks#3944
-
O que é o spigot ??
O spigot consiste em uma modificação de minecraft feita apenas do **lado do servidor**, ou seja, ele é responsável por adicionar conteúdos customizados aos servidores de minecraft e ainda por cima não exige que o usuário instale programas adicionais, pois como dito antes a modificação é feita apenas do lado do servidor.Forge, Spigot, Bukkit... tantos nomes...
O Spigot é uma evolução de um sistema antigo, porém com uma história muito consolidada, chamado "Bukkit", que basicamente tinha a mesma função de spigot.O Spigot também possui outros "filhos", como paperspigot, purpur e entre outros, porém eu recomendo a aprender principalmente o spigot, pois ele é mais consolidado entre a comunidade de plugins.
O Forge é uma modificação feita do lado tanto do cliente, quanto do servidor, ele é muito mais poderoso, pois é capaz de criar mods com diversos conteúdos como itens e dimensões. porém o usuário precisará baixar os mesmos mods para entrar no servidor, pois ele modifica também o client, porém não abordarei o forge neste tópico.
Porque aprender spigot
A comunidade de plugins e servidores de minecraft é uma comunidade bem ativa, com vários fóruns onde você pode tirar dúvidas (como por exemplo Este), e também existem vários donos de servidor dispostos a pagar por um plugin customizado.
Também é possível gerar renda passiva através de um site onde você possa vender seus plugins onde donos de servidor posssam comprar, ou talvez você possa criar um servidor e vender VIPs (cargo especial dentro de um servidor).Como começar
Existem vários tutoriais bons e em português no youtube sobre bukkit/spigot e até cursos na udemy, mas uma boa forma, é ter noção básica de java POO antes e depois ler a Documentação e a Javadoc. Mas eu darei um bom resumo pra vocês neste tópicoMain
Para criar a classe main no spigot você precisa importar o spigot usando gradle, Maven ou até a jar e criar uma classe que herda de `JavaPlugin` e Sobrescrever os métodos `OnEnable()` e `OnDisable()` ~~AutoExplicativo~~
public class TestPlugin extends JavaPlugin{ @Override public void onEnable() {} }
A parte do código por incrível que pareça é só isso, mas precisa de um documento chamado plugin.yml, você precisa cria-lo dentro da pasta do projeto, este é o arquivo que o servidor do spigot precisa para "enchergar" seu plugin
name: PluginTest version: 1.0 main: br.com.pemei.testplugin.TestPlugin #Nome completo da classe main author: [PeMei] description: Test
Comando
Pronto agora você criou seu primeiro plugin, mas infelizmente ele não ainda não faz nada, vamos adicionar um comando que cure o jogador, mas vamos ter um pouco de organização e escreve-lo em outra classe, crie uma classe nova e implemente a interface `CommandExecutor`, o classe ficará assim:
package br.com.pemei.testplugin.commands; //imports ocultados public class ComandoCurar implements CommandExecutor{ @Override public boolean onCommand(CommandSender sender, Command arg1, String arg2, String[] args) { // TODO Auto-generated method stub return false; } }
O método tem quatro parâmetros, mas vamos focar em 2, o sender é uma referência a entidade que executou o comando e o args são uma lista de parâmetros passados na hora de executar o comando, agora vamos brincar um pouco com eles.
Primeiro tenho que verificar se quem executou o comando foi um player ou um console, depois dar um cast e finalmente setar a vida do player para 20@Override public boolean onCommand(CommandSender sender, Command arg1, String arg2, String[] args) { //verificando se tem é admin if(!sender.isOp()) return false; //verificando se é um player if(!(sender instanceof Player)) return false; //cast Player player = (Player) sender; //setar vida player.setHealth(20); //mandar mensagem player.sendMessage(ChatColor.GREEN + "Você foi curado"); return true; }
Ainda não estou satisfeito, eu quero brincar um pouco mais com argumentos.
Agora quero que dê para um admin curar outro player.
Se ele der /curar PeMei vai curar outro player e se ele der /curar vai curar ele mesmo.```@Override public boolean onCommand(CommandSender sender, Command arg1, String arg2, String[] args) { //verificando se é um player if(!(sender instanceof Player)){ sender.sendMessage("Você não é um player"); return false; } //verificando se tem é admin if(!sender.isOp()){ sender.sendMessage(ChatColor.RED + "Você não é admin!"); return false; } if(args.length > 1) { sender.sendMessage(ChatColor.RED + "Argumentos inválidos"); return false; } //cast Player player = (Player) sender; //se não tiver parâmentro, vai curar ele mesmo if(args.length == 0) { //setar vida player.setHealth(20); //mandar mensagem player.sendMessage(ChatColor.GREEN + "Você foi curado"); return true; }else{ //procurar player Player targetPlayer = Bukkit.getPlayer(args[0]); //spigot é uma fork do bukkit, então tem esse método //verificando se player é nulo if(targetPlayer == null) { player.sendMessage(ChatColor.RED + "Este player não existe ou está offline"); return false; } //curar player e mandar mensagem para ambos targetPlayer.setHealth(20); targetPlayer.sendMessage(ChatColor.GREEN + "Você foi curado por " + ChatColor.GOLD + player.getDisplayName()); player.sendMessage(ChatColor.GREEN + "Você curou o player com sucesso"); } return true; }
Agora com o comando feito, é preciso registrar-lo no plugin.yml para o servidor spigot poder enchergar esse comando
commands: curar: aliases: [heal,cura] #aliases é uma lista de 'apelidos' pro comando description: Cura
O comando está registrado, mas por enquanto ele não faz nada pois ele não está linkado com a classe, para linkar você precisa fazer esse comando no ```OnEnable()```:@Override public void onEnable() { this.getCommand("curar").setExecutor(new ComandoCurar()); }
Pronto agora o comando está linkado com com a classeEventos
Os eventos são certas "ocorrências" que ocorrem no servidor, por exemplo, quando o player quebra um bloco ele dispara um evento de quebrar bloco para todos os plugins dentro do servidor usando por debaixo dos panos o padrão GoF Chain of Responsability (Handler)Neste exemplo nós vamos bloquear o PvP neste servidor usando apenas eventos
Para colocar seu ouvido num evento, primeiro vamos criar uma classe com a interface ```listener``` (cuidado com imports), esse é uma interface vazia e sem métodos, mas que é necessário colocar para que o spigot compreenda que é um classe de escuta
public class Escuta implements Listener{}
Agora vamos adicionar um método void com um objeto event de parâmentro para que ele seja executado toda vez que "ouvir" o evento, o parêmetro é importante para definir qual vai ser o evento
public void onEscutar(EntityDamageByEntityEvent e) {}
Agora vamos adicionar a lógica ao evento, primeiro vamos verificar se são dois player e se for, vamos anular o eventopublic void onEscutar(EntityDamageByEntityEvent e) { //verifica se são dois players if(e.getEntity() instanceof Player && e.getDamager() instanceof Player) { //anula o evento e.setCancelled(true); } }
Mas para a classe poder reconhecer o evento, precisa adiconar a anotação ```@EventHandler``` no método, mas antes de darmos uma olhada a fundo nessa anotação, temos que lembrar que esse evento vai passar por todos os plugins do servidor, incluindo o seu e qualquer outro plugin feito por terceirosA anotação tem duas propriedades, a priority, que basicamente é a prioridade e a importância do evento e ignoreCancelled que define se seu evento vai ser ignorado ou não se ele foi previamente cancelado por outro plugin
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
ATENÇÃO: Não alterar ou cancelar eventos na prioridade monitor**
Agora com o evento feito devemos registrar a classe de escuta
@Override public void onEnable() { this.getCommand("curar").setExecutor(new ComandoCurar()); Bukkit.getPluginManager().registerEvents(new Escuta(), this); }
Testando o plugin
Você deve primeiro criar um servidor spigot, primeiro você deve seguir as Instruções deste link para compilar o jar do servidor. Depois você deve pegar o jar e colocar em uma pasta separada e renome-lo para "Server.jar" para facilitar, depois disso você deve criar um arquivo de texto com o seguinte código e salvar como start.bat@echo off java -Xms2G -Xmx2G -XX:+UseG1GC -jar Server.jar nogui pause
Na primeira vez que executar ele vai instalar o servidor automagicamente naquela pasta, depois ele vai dar um "erro" falando que precisa de um tal de EULA, para proseguir é simples, vai no arquivo eula.txt que gerou e troca de false para true e execute denovo.
Agora como eu acredito que você muito provavelmente não tenha duas contas originais para testar seu plugin, você precisa habilitar para minecraft pirata.
isso é muito fácil
Você deve editar o arquivo server.properties e deve alterar ```online-mode=true``` para ```online-mode=false``` e pronto, ainda se você quiser você pode alterar o ```server-ip=``` e colocar seu ipv4 do hamachi ou radmin para compartilhar o servidor.
Para colocar Plugins no servidor é facil, primeiro você precisa exportar seu plugin em .jar e simplesmento coloca-lo na pasta ```plugins/``` que gerou e depois fechar e abrir o servidor dando stopConclusão
Escrever este tópico me deu muito trabalho, mas escrevi mesmo assim pois eu quero facilitar a jornada para muito iniciantes que estão aprendendo o spigot.
Pois quando eu era iniciante tudo que eu queria era um tópico como este para me guiar nessa imensa comunidade de plugins e servidores. Se este tópico ajudou você nesta jornada, peço que pelo menos contribua este post com likes e responda a enquete.E se você que é mais experiente e puder dar dicas de como melhorar este código (pois fiz as pressas para este tópico, não julgue) ou dar outas dicas, encorajo muito você a contribuir com comentários agregando valor a este tópico
-
Peguei um código de uma fornalha no github para aprender, não entendi nada.
Tipo
1. O que é tileEntity (no forge) ?
2. Qual diferença de Gui é container ?
3. Alguém conhece alguma vídeo-aula em português?
-
sou dev e quero fazer um servidor com mods e quero que a economia seja tipo um banco, o player tem dinheiro físico e o dinheiro guardado na conta.
alguém conhece um mod assim que dê pra usar no magma (paper spigot com mods) ? -
alguem sabe como pegar os mods do julionib de graça pra GTA V ?
-
Em 09/06/2020 em 18:08, Thelike disse:
Eu usava mod no single player, da ban não, só que se você quiser jogar multiplayer vai aparecer um erro e você terá que tirar os mods ? os meus eu tirei hoje pra jogar online
como tira ?
-
quero botar mods no single player, mas tenho medo de levar ban, o que devo fazer ?
OBS: não tenho espaço no HD pra copiar o GTA
OBS 2: não me julgue por estar usando mod no single player, não estou atrapalhando o jogo de ninguem
-
13 horas atrás, Hanks disse:
Qual foi o upgrade feito ?
Placa de vídeo e ssd
-
Acabei de dar upgrade no PC e já tá tendo problema, ele desliga sozinho depois de um tempo
Configurações
Amd fx 8350
Rx 560
3 cooler (além do processador)
Fonte 400w REAL
SSD 240GB
Não sei se é a fonte que não suporta ou culpa dos jogos piratas (vírus)
-
Processador: amd fx 8350 4.00 GHz
RAM: 8GB
Placa de vídeo: ATI radeon 3000 graphics (integrada)
esse pc roda minecraft dungeons ? e se não rodar tem reembolso ?
-
olá, queria saber se processador amd fx 8350 é bom e se vale a pena comprar uma placa de vídeo a ele
-
Eu sou um colecionador de memes, certo dia ouvir que dá pra esconder vírus em imagem, não manjo muito de segurança da informação, então não sei se é fake News ou não
-
5 horas atrás, VictorXaavierHD disse:
Oii Pedro, tudo bem? Então, estou tentando configurar o bloco de terra nas configurações e não está indo.. Poderia vir anydesk? Xaavier#9820
Olha PM
-
sou desenvolvedor júnior, e faço site e plugin
Contato: PedroPlugner#7742
-
5 horas atrás, SrBlecaute disse:
Senti a falta de fotos do funcionamento do plugin e o tópico está mal organizado. Tente melhorar nesses quesitos e seria legal postar o código no git já que é gratuito ?
qual parte do funcionamento do plugin em específico você sentiu falta ?
-
add discord PedroPlugner#7742
sou dev intermediário
-
1 hora atrás, JmDiego275 disse:
Pelos seus gostos eu recomendo o próprio rust e o raft, particularmente é mais legal com amigos.
placa de vídeo queimou, não roda mais
-
Oi, essa quarentena tá osso.
Queria alguns jogos mobile ou pra PC sem placa de vídeo pra aliviar a quarentena .
Gostos pessoais: battle Royale, sobrevivência, RPG, estratégia, jogo pra jogar em família, jogos indie
Jogos que eu jogo/jogava antes da placa de vídeo queimar:
Minecraft, ark, rust, Apex, GTA V, plague inc, D&D, C.A.T.S, hearthstone, GTA SA,
-
Char criado quando o server foi aberto, char todo p2win
2 reborn
300k famar8 up 3 full pedra 10 con (sem elmo r8)
3B money
Classe Barbaro / Corona - Iluminado
Céu astral XDiscord: Scrawndyr#5952
E-mail: [email protected]
PREÇO: a negociar
AVISO: quem esta vendendo e meu amigo, qualquer problema nao serei responsabilizado
-
Recentemente meu irmão comprou um mapa para Minecraft bedrock Editon, eu fiquei maravilhado com as mecânicas.
O mapa era de pizzaria, tinha vários veículos e até uma mecânica de temperatura da pizza
Eu queria fazer o meu próprio mapa, mas não sei qual api ou outras ferramentas eles usam, alguém poderia me dizer qual(is) são essas APIs/Ferramentas
-
1 hora atrás, Emanuel Boaventura disse:
Sem informações do projeto, Projeto nem iniciado... Acho dificil alguém investir assim... Mas boa sorte!
como vou inicar o projeto sem grana ?
-
Queria criar um server de factions ou rankup, mas não tenho dinheiro.
Então preciso de investidores pra criar meu server
Discord: PedroPlugner#7742
-
eu sei o conceito de factions
RJ SIMULATORmas não sei como funciona o combate
tipo, o sistema de invasão, quando posso ou não invadir e pra que serve o poder
Pc congelando nas versões mais novas do jogo
em Geral
Postado
Quando eu jogo nas versões mais novas, depois de um tempo, meu PC inteiro simplesmente congela e preciso sempre desligar na tomada.
Já tentei aumentar a RAM alocada e estou com o JDK 19 na máquina. (eu sei que o JDK é para devs).
Eu tenho a placa de vídeo da AMD e uso o software AMD: Adrenalin Edition, meu SSD está lotado, acho pode ser alguma coisa relacionada ao driver (é só um palpite, na real não faço a mínima idéia por que trava)