Ir para conteúdo
  • 0

duvida sobre java


SnowRunescape

Pergunta

Bom, vou usar a api da bukkit como exemplo..

 

vamos supor que eu tenho 2 plugins, eles não são dependentes um do outro, porem ambos tem que acessar uma certa informação. é possivel um se comunicar com o outro, sem dependencia? ou então eu cadastrar uma informação na api bukkit principal, mesmo que seja um boolean true ou false, onde esses 2 plugins poderiam ter acesso

 

existe como fazer isso? poderia dar um exemplo, ou me dizer o nome disso pra eu pesquisar

Link para o comentário
Compartilhar em outros sites

23 respostass a esta questão

Posts Recomendados

  • 1

Dentro da classe System do java existe uma "HashTable"  com varias "propriedades' do sistema... você pode simplesmente adicionar uma nova propriedade nessa HashTable usando o código abaixo: 

 

System.setProperty("playername","Snow");  // Seta a propriedade
System.getProperty("playername") // Retorna Snow

 

Eu testei usando 2 plugins diferentes e funcionou, eu setei a propriedade playername no plugin essentials, logo após isso eu fui no plugin de login e usei o getProperty e retornou Snow novamente, ou seja, os dois plugins se comunicaram sem nenhuma API apenas por "propriedades" do java ou melhor dizendo através de uma HashMap do java... vale lembrar que ao reiniciar o servidor a propriedade sera perdida então tem que setar novamente.

Link para o comentário
Compartilhar em outros sites

  • 0

Não sei se você vai necessariamente usar isso em plugins, se sim é muito mais fácil você usar o famoso softdepends: https://bukkit.gamepedia.com/Plugin_YAML

O plugin carrega sem a dependência, porém para tem a dependencia para ter uma funcionalidade mais completa.

 Outra opção é você usar banco de dados para pegar a informação, me parece a opção mais viável no seu caso.

Caso não seja plugin, sempre ha a opção de Sockets:
 https://docs.oracle.com/javase/tutorial/networking/sockets/index.html
https://www.devmedia.com.br/java-socket-entendendo-a-classe-socket-e-a-serversocket-em-detalhes/31894 

Link para o comentário
Compartilhar em outros sites

  • 0

Socket não vai ser a forma mais viavel para eu estar utilizando, pois podera haver mais de 1 instancia do aplicativo sendo rodada, tipo..

vamos supor, eu faço isso no minecraft, quando a pessoa abrir o mineraft, criara um socket na porta tal, e caso eu abrir outro minecraft, ele vai tentar abrir o socket, porem a porta ja esta ocupada, e vai dar problema, e eu teria que usar portas fixas pra todos os "plugins" ter acesso a informação

Link para o comentário
Compartilhar em outros sites

  • 0

Não tem como você ligar o carro, sem girar o motor certo? É a mesma coisa, você não conseguirá acessar informações de um plugin, sem a utilização dele, seja por API, mesmo DB etc..

Link para o comentário
Compartilhar em outros sites

  • 0
  Em 11/09/2018 em 21:47, Burpo disse:

Não tem como você ligar o carro, sem girar o motor certo? É a mesma coisa, você não conseguirá acessar informações de um plugin, sem a utilização dele, seja por API, mesmo DB etc..

Expand  

Ele deu o exemplo de que seja com o plugin, mas creio que seja algum software.

Como ele disse que a opção de Socket é inviável, creio que a melhor alternativa seja um banco de dados.

Link para o comentário
Compartilhar em outros sites

  • 0

Cria um terceiro plugin ai os outros plugins acessam a informação nesse terceiro kkkk

Provavelmente deve ter algum recurso do java pra vc setar alguma informação em algum lugar inutil e pegar depois ou talvez eu esteja falando ******** provavelmente '-'

Link para o comentário
Compartilhar em outros sites

  • 0
  Em 11/09/2018 em 23:38, Is London Far disse:

Reflection

Expand  

???????????????????????????????????????????

  Em 11/09/2018 em 18:41, SnowRunescape disse:

Socket não vai ser a forma mais viavel para eu estar utilizando, pois podera haver mais de 1 instancia do aplicativo sendo rodada, tipo..

vamos supor, eu faço isso no minecraft, quando a pessoa abrir o mineraft, criara um socket na porta tal, e caso eu abrir outro minecraft, ele vai tentar abrir o socket, porem a porta ja esta ocupada, e vai dar problema, e eu teria que usar portas fixas pra todos os "plugins" ter acesso a informação

Expand  

Cara, você pode ter uma aplicação servidor e os clients conectarem no seu servidor, é a maneira mais "correta" na minha opinião. Se tu ta fazendo um client, faça uma aplicação servidor que aceite alguma conexão (ainda acho que socket adiantaria), e os clients conectem no seu servidor, dai é só vc a lógica do seu sistema. Outra opção seria usar o Redis (https://redis.io/). Não tem muito jeito diferente além desses (acredito eu).

 

 Particularmente eu acho que você deveria criar um server ou webserver e seus clientes conectarem a ele para pegar informação e fazer a comunicação. Várias maneiras de fazer isso, exemplos serão sockets (no caso o cliente não cria um serversocket, só conecta no servidor) ou também uma REST API... Depende muito do que você esta fazendo kkk 

Link para o comentário
Compartilhar em outros sites

  • 0
  Em 13/09/2018 em 12:28, SnowRunescape disse:

foi so uma analogia, eu irei utilizar no minecraft client, e nao no minecraft server

Expand  

Os clientes precisam se comunicar entre si ou com um servidor?

Você pode ser mais especifico sobre o que deseja fazer? Talvez possamos te ajudar melhor.

Link para o comentário
Compartilhar em outros sites

  • 0
  Em 13/09/2018 em 16:50, leonardosc disse:

Os clientes precisam se comunicar entre si ou com um servidor?

Você pode ser mais especifico sobre o que deseja fazer? Talvez possamos te ajudar melhor.

Expand  

estou criando um mod, e todos os mods tera uma função de mandar uma mensagem no chat da pessoa a cada 10 minutos, porem se a pessoa tiver usando 10 mods meu, vai aparecer 10 mensagens a cada 10 minutos para a pessoa, e eu preciso que apenas 1 mod envie a mensagem, os outros  fique em standby

 

deram a sujestão de socket, sim seria bom, porem se a pessoa abrir 2 instancia de minecraft, o socket ja vai estar rodando, e o minecraft vai entender que ja tem algum mod enviando mensagem a cada 10 minutos, logo o segundo minecraft não tera nenhuma mensagem

Link para o comentário
Compartilhar em outros sites

  • 0
  Em 13/09/2018 em 16:53, SnowRunescape disse:

estou criando um mod, e todos os mods tera uma função de mandar uma mensagem no chat da pessoa a cada 10 minutos, porem se a pessoa tiver usando 10 mods meu, vai aparecer 10 mensagens a cada 10 minutos para a pessoa, e eu preciso que apenas 1 mod envie a mensagem, os outros  fique em standby

 

deram a sujestão de socket, sim seria bom, porem se a pessoa abrir 2 instancia de minecraft, o socket ja vai estar rodando, e o minecraft vai entender que ja tem algum mod enviando mensagem a cada 10 minutos, logo o segundo minecraft não tera nenhuma mensagem

Expand  

Seriam mods diferentes né...? Quem usaria 10 mods iguais '-'

Essa mensagem seria enviada apenas no chat do jogo (da pessoa)?

Link para o comentário
Compartilhar em outros sites

  • 0
  Em 13/09/2018 em 17:01, leonardosc disse:

Seriam mods diferentes né...? Quem usaria 10 mods iguais '-'

Essa mensagem seria enviada apenas no chat do jogo (da pessoa)?

Expand  

sim.. 10 mods diferentes, porem os 10 enviara a msm mensagem... e sim somente no chat da pessoa

Link para o comentário
Compartilhar em outros sites

  • 0
  Em 13/09/2018 em 17:02, SnowRunescape disse:

sim.. 10 mods diferentes, porem os 10 enviara a msm mensagem... e sim somente no chat da pessoa

Expand  

Não tenho muita experiência com mods, mas talvez você possa usar um mod intermediário, que seja usado como dependência dos seus outros mods. Assim você pode salvar dados (como a ultima vez que a mensagem foi enviada) no mod intermediário e acessá-los a partir dos outros mods.

 

http://www.minecraftforge.net/forum/topic/60566-solved-access-to-other-mods-requirements-1121/

Link para o comentário
Compartilhar em outros sites

  • 0
  Em 13/09/2018 em 17:09, leonardosc disse:

Não tenho muita experiência com mods, mas talvez você possa usar um mod intermediário, que seja usado como dependência dos seus outros mods. Assim você pode salvar dados (como a ultima vez que a mensagem foi enviada) no mod intermediário e acessá-los a partir dos outros mods.

 

http://www.minecraftforge.net/forum/topic/60566-solved-access-to-other-mods-requirements-1121/

Expand  

Eu to muito sonolento, posso estar falando coisa com coisa.

 Mas não daria na mesma? Fazendo uma analogia, seria tipo o meu plugin tentar acessar o vault de outro servidor. Como os outros clients acessaria esse mod "intermediario?", seria um acesso local por assim dizer?

Tentando deixar mais uma contribuição, um mod que contém coisa semelhante ao que você deseja: https://github.com/GameModsBR/VoiceChat
O problema dele, é que ainda precisa de um server com suporte ao mod, pelo que entendi, estou mt cansado pra reler, talvez ajude talvez não kkk

 Bem complicadin sua idéia e ainda só vem socket na minha cabeça KKK

Link para o comentário
Compartilhar em outros sites

  • 0
  Em 13/09/2018 em 22:39, Lüigi! disse:

Eu to muito sonolento, posso estar falando coisa com coisa.

 Mas não daria na mesma? Fazendo uma analogia, seria tipo o meu plugin tentar acessar o vault de outro servidor. Como os outros clients acessaria esse mod "intermediario?", seria um acesso local por assim dizer?

Tentando deixar mais uma contribuição, um mod que contém coisa semelhante ao que você deseja: https://github.com/GameModsBR/VoiceChat
O problema dele, é que ainda precisa de um server com suporte ao mod, pelo que entendi, estou mt cansado pra reler, talvez ajude talvez não kkk

 Bem complicadin sua idéia e ainda só vem socket na minha cabeça KKK

Expand  

na real, eu so preciso de um boolean em algum local, onde todos os mods acessam consiga acessar ele

Link para o comentário
Compartilhar em outros sites

  • 0
  Em 13/09/2018 em 22:39, Lüigi! disse:

Eu to muito sonolento, posso estar falando coisa com coisa.

 Mas não daria na mesma? Fazendo uma analogia, seria tipo o meu plugin tentar acessar o vault de outro servidor. Como os outros clients acessaria esse mod "intermediario?", seria um acesso local por assim dizer?

Tentando deixar mais uma contribuição, um mod que contém coisa semelhante ao que você deseja: https://github.com/GameModsBR/VoiceChat
O problema dele, é que ainda precisa de um server com suporte ao mod, pelo que entendi, estou mt cansado pra reler, talvez ajude talvez não kkk

 Bem complicadin sua idéia e ainda só vem socket na minha cabeça KKK

Expand  

Daria na mesma coisa do quê?

Pelo que foi informado acima, ele só precisa se comunicar entre os MODS dele (rodando no CLIENTE), não com um servidor e nem entre clientes.

Dá pra pensar nesse MOD intermediário como aqueles "COREs/Libs" que alguns usam. A diferença é que esses COREs têm funcionalidades/módulos/'utils' que serão utilizadas pelos plugins do desenvolvedor, e o MOD intermediário seria, a princípio, para guardar dados que seriam compartilhados entre os MODS.

  Em 14/09/2018 em 12:39, SnowRunescape disse:

na real, eu so preciso de um boolean em algum local, onde todos os mods acessam consiga acessar ele

Expand  

Então dá pra fazer algo mais simples ainda: você pode usar o sistema de arquivos. Basta criar um arquivo que será acessado pelos seus MODS.

Link para o comentário
Compartilhar em outros sites

  • 0
  Em 24/09/2018 em 16:08, RUSHyoutuber disse:

Da pra criar um sistema de arquivos VERY SIMPLES e facil ou também da pra salvar as informações na própria Runtime do java se não me engano... se precisar ainda avisa... se não marca como resolvido

Expand  

Eu resolvi de um jeito aqui, não da maneira que eu queria, mas está funcionando, mas se quiser comentar ai como seria eu agradeço

Link para o comentário
Compartilhar em outros sites

  • 0
  Em 26/09/2018 em 14:27, SnowRunescape disse:

Eu resolvi de um jeito aqui, não da maneira que eu queria, mas está funcionando, mas se quiser comentar ai como seria eu agradeço

Expand  

Oque você precisa? Sistema de arquivos ou tentar salvar direto na runtime?

Link para o comentário
Compartilhar em outros sites

  • 0
  Em 27/09/2018 em 03:19, RUSHyoutuber disse:

Oque você precisa? Sistema de arquivos ou tentar salvar direto na runtime?

Expand  

direto na runtime, pois pode haver mais de 1 instancia do programa aberto, e salvar em arquivo vai dar conflito 1 com o outro

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...