Alinha mpChat e screenCast a ConnectionManager/GuiManager, adiciona docs em docs/ e README de plugins; remove artefatos de build do índice. Co-authored-by: Cursor <cursoragent@cursor.com>
2.1 KiB
2.1 KiB
Tutorial — criar um plugin
Este guia complementa 09_sistema_de_plugins.md. Use pitiupi.chat como modelo.
1. Novo projeto
- Copie a pasta
pitiupi.chatparapitiupi.meuPlugin(nome à escolha). - Ajuste
project.properties/build.xmlcom o nome do JAR de saída. - Mantenha
javac.classpathapontando para../pitiupi/dist/pitiupi.jar.
2. Classe principal
public class MeuPlugin extends Plugin {
@Override
public void createPlugin(ConnectionManager cm, GuiManager gui) {
// registrar menus, abrir janelas
}
@Override
public List<Class<? extends Message>> getMessages() {
return List.of(MinhaMessage.class);
}
@Override
public void receiveMessage(Message message) {
if (message instanceof MinhaMessage m) { /* ... */ }
}
// getName, getAuthor, getVersion, getIdentifier
}
3. Mensagem
public class MinhaMessage extends Message implements Serializable {
// campos + serialVersionUID recomendado
}
Envio típico via ConnectionManager (multicast ou unicast UDP, ou TCP conforme o caso).
4. Service Provider Interface
Arquivo src/META-INF/services/pitiupi.models.Plugin:
pacote.MeuPlugin
5. Build e instalação
cd pitiupi.meuPlugin && ant jar
ln -sf ../../pitiupi.meuPlugin/dist/*.jar ../pitiupi/plugins/
Reinicie o Pitiupi após trocar JARs.
6. Teste
Duas instâncias, mesma rede, portas distintas se no mesmo host. Ver 00_quickstart.md.
TCP dedicado (avançado)
Se o plugin precisa de canal TCP com handshake por getIdentifier(), estude pitiupi.mpChat e os métodos opcionais em Plugin (receivePrivateConnection, receiveBytes). Ver 11_plugins_referencia.md.
Erros frequentes
| Problema | Causa provável |
|---|---|
| Plugin não aparece | SPI ausente ou JAR fora de plugins/ |
ClassNotFoundException na recepção |
Classe da mensagem não no JAR do remetente/destino |
| Peers não se veem | Multicast bloqueado — appendix_portas_e_multicast.md |