Ir para conteúdo
  • 0

[Resolvido] [Dúvida][JAVA] COMO!


Solitario

Pergunta

Galera como posso recarregar uma customconfigyml e como posso fazer ela carregar por que parece que não esta funcionando com o seguinte code:

       public void salvar(FileConfiguration ymlConfig, File ymlFile) {
		 try {
		     ymlConfig.save(ymlFile);
		 } catch (IOException e) {
		     e.printStackTrace();
		 }
		 }
	 
		public File LocaisYML = new File(this.getDataFolder()+"/locs.yml");
		public FileConfiguration Locais = YamlConfiguration.loadConfiguration(LocaisYML);
	
	
	public void onEnable(){
		salvar(Locais, LocaisYML);
	}

nIV77UA.png

pXeBMOT.png

 

Esqueci citar: Se eu setar todos as localizações esta funcionando ok, se eu reiniciar o servidor ocorre o problema ...

Editado por MusicsBass
Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

 

qual é a linha 59?

tente usar isso

			double x = Locais.getDouble("Npc." + entity.getName() + ".X");
			double y = Locais.getDouble("Npc." + entity.getName() + ".Y");
			double z = Locais.getDouble("Npc." + entity.getName() + ".Z");
			double pitch = Locais.getDouble("Npc." + entity.getName() + ".pitch");
			double yaw = Locais.getDouble("Npc." + entity.getName() + ".yaw");
			World Mundo = Bukkit.getWorld(Locais.getString("Npc." + entity.getName() + ".World"));
			Location local = new Location(Mundo, x, y, z, (float)yaw, (float)pitch);
			event.getPlayer().teleport(local);

Yaw e Pitch não é double, é float

 

O código correto séria:

double x = Double.valueOf(Locais.getString("Npc." + entity.getName() + ".X"));
double y = Double.valueOf(Locais.getString("Npc." + entity.getName() + ".Y"));
double z = Double.valueOf(Locais.getString("Npc." + entity.getName() + ".Z"));
float pitch = Float.valueOf(Locais.getString("Npc." + entity.getName() + ".pitch"));
float yaw = Float.valueOf(Locais.getString("Npc." + entity.getName() + ".yaw"));
World Mundo = Bukkit.getWorld(Locais.getString("Npc." + entity.getName() + ".World"));
Location local = new Location(Mundo, x, y, z, yaw, pitch);
event.getPlayer().teleport(local);

Sei que poderia ter deixado os doubles pra getDouble, porém, preferi deixar como exemplo, mesmo assim ainda ta certo!

 

@Edit

 

Para ficar mais fácil caso queira, utilize minha classe para ficar mais fácil de pegar localizações(SerializeLocations.java)

 

http://archives.mcproshop.cf/#elf_l1_SmF2YS9DbGFzcyBVdGlsaXRpZXM

 

Assim é só utilizar

//Use este código para salvar, ele vai setar como string
String stringLocation = SerializeLocation.toString(p.getLocation());

//Exemplo
Locais.set("NPC." + entity.getName() + ".Location");
salvar();



//Este aqui é para teleportar
Location local = SerializeLocation.fromString(Locais.getString("NPC." + entity.getName() + ".Location"));
event.getPlayer().teleport(local);
Editado por  ??? 
Link para o comentário
Compartilhar em outros sites


public void onEnable() {

salvar(); // Esse metodo pode ser usado pra dar reload tbm

}

 

public void salvar() {

File f = new File(getDataFolder(), "seu-arquivo.yml");

if (!(f.exists()))

saveResource("seu-arquivo.yml", false); // O arquivo tem que estar criado no JAR, junto com o plugin.yml

FileConfiguration fc = YamlConfiguration.loadConfiguration(f); // Aqui que seria "recarregar a config"

// A partir daqui voce utiliza o "fc" normalmente

}

Link para o comentário
Compartilhar em outros sites

veja o erro que está dando.. "Caused by: double cannot be cast to float"

 

mande a linha 59 ou tudo desse evento, eu acho melhor salvar na config as localizaçoes como numeros inteiros( 788 ) e não esses numeros ( 788.248925252 )

mas vc q sabe, mande o código para poder ajudar

Link para o comentário
Compartilhar em outros sites

veja o erro que está dando.. "Caused by: double cannot be cast to float"

 

mande a linha 59 ou tudo desse evento, eu acho melhor salvar na config as localizaçoes como numeros inteiros( 788 ) e não esses numeros ( 788.248925252 )

mas vc q sabe, mande o código para poder ajudar

 

Erro é na linha 59 do seu Main

 

manda o codigo ou o "PlayerInteractEntityEvent" que a gente talvez consiga-mos ajudar!

 

Precisamos do código z.z sem ele vai ser foda ajudar

Primeiramente ... citei que o code funciona somente antes que o servidor reinicie ou seja ligado novamente ... então não creio que seja problema nesse code '-'

	@EventHandler
	public void onPlayerInteractEntityEvent(PlayerInteractEntityEvent event) {
	Entity entity = event.getRightClicked();
	boolean isCitizensNPC = entity.hasMetadata("NPC");
	if ((isCitizensNPC)){
		
		if(Locais.contains("Npc." + entity.getName())){
			event.getPlayer().sendMessage("§3Teleportando para §b" + entity.getName());
			
			double x = Locais.getDouble("Npc." + entity.getName() + ".X");
			 double y = Locais.getDouble("Npc." + entity.getName() + ".Y");
			  double z = Locais.getDouble("Npc." + entity.getName() + ".Z");
			   float pitch = (float) Locais.get("Npc." + entity.getName() + ".pitch");
			    float yaw = (float) Locais.get("Npc." + entity.getName() + ".yaw");
			     World Mundo = Bukkit.getWorld(Locais.getString("Npc." + entity.getName() + ".World"));
			    Location local = new Location(Mundo, x, y, z);
			    local.setPitch(pitch);
			    local.setYaw(yaw);
			event.getPlayer().teleport(local);
		}
		}
	}
public void onEnable() {
    salvar(); // Esse metodo pode ser usado pra dar reload tbm
}

public void salvar() {
    File f = new File(getDataFolder(), "seu-arquivo.yml");
    if (!(f.exists()))
        saveResource("seu-arquivo.yml", false); // O arquivo tem que estar criado no JAR, junto com o plugin.yml
    FileConfiguration fc = YamlConfiguration.loadConfiguration(f); // Aqui que seria "recarregar a config"
    // A partir daqui voce utiliza o "fc" normalmente
}

o problema é que não é publico entretanto só foi usado na função de salvar .-. ... e também não quer funcionar para salvar os dados após o set...

Editado por MusicsBass
Link para o comentário
Compartilhar em outros sites

Primeiramente ... citei que o code funciona somente antes que o servidor reinicie ou seja ligado novamente ... então não creio que seja problema nesse code '-'

	@EventHandler
	public void onPlayerInteractEntityEvent(PlayerInteractEntityEvent event) {
	Entity entity = event.getRightClicked();
	boolean isCitizensNPC = entity.hasMetadata("NPC");
	if ((isCitizensNPC)){
		
		if(Locais.contains("Npc." + entity.getName())){
			event.getPlayer().sendMessage("§3Teleportando para §b" + entity.getName());
			
			double x = Locais.getDouble("Npc." + entity.getName() + ".X");
			 double y = Locais.getDouble("Npc." + entity.getName() + ".Y");
			  double z = Locais.getDouble("Npc." + entity.getName() + ".Z");
			   float pitch = (float) Locais.get("Npc." + entity.getName() + ".pitch");
			    float yaw = (float) Locais.get("Npc." + entity.getName() + ".yaw");
			     World Mundo = Bukkit.getWorld(Locais.getString("Npc." + entity.getName() + ".World"));
			    Location local = new Location(Mundo, x, y, z);
			    local.setPitch(pitch);
			    local.setYaw(yaw);
			event.getPlayer().teleport(local);
		}
		}
	}

o problema é que não é publico entretanto só foi usado na função de salvar .-. ... e também não quer funcionar para salvar os dados após o set...

qual é a linha 59?

tente usar isso

			double x = Locais.getDouble("Npc." + entity.getName() + ".X");
			double y = Locais.getDouble("Npc." + entity.getName() + ".Y");
			double z = Locais.getDouble("Npc." + entity.getName() + ".Z");
			double pitch = Locais.getDouble("Npc." + entity.getName() + ".pitch");
			double yaw = Locais.getDouble("Npc." + entity.getName() + ".yaw");
			World Mundo = Bukkit.getWorld(Locais.getString("Npc." + entity.getName() + ".World"));
			Location local = new Location(Mundo, x, y, z, (float)yaw, (float)pitch);
			event.getPlayer().teleport(local);
Link para o comentário
Compartilhar em outros sites

 

qual é a linha 59?

tente usar isso

			double x = Locais.getDouble("Npc." + entity.getName() + ".X");
			double y = Locais.getDouble("Npc." + entity.getName() + ".Y");
			double z = Locais.getDouble("Npc." + entity.getName() + ".Z");
			double pitch = Locais.getDouble("Npc." + entity.getName() + ".pitch");
			double yaw = Locais.getDouble("Npc." + entity.getName() + ".yaw");
			World Mundo = Bukkit.getWorld(Locais.getString("Npc." + entity.getName() + ".World"));
			Location local = new Location(Mundo, x, y, z, (float)yaw, (float)pitch);
			event.getPlayer().teleport(local);

Ah ... eu tava mexendo no code e acho que terminei perdendo a linha 59 e.e mais acho que ta entre 

 

public void onPlayerInteractEntityEvent(PlayerInteractEntityEvent event) {

e

float pitch = (float) Locais.get("Npc." + entity.getName() + ".pitch");

 

 

 

Yaw e Pitch não é double, é float

 

O código correto séria:

double x = Double.valueOf(Locais.getString("Npc." + entity.getName() + ".X"));
double y = Double.valueOf(Locais.getString("Npc." + entity.getName() + ".Y"));
double z = Double.valueOf(Locais.getString("Npc." + entity.getName() + ".Z"));
float pitch = Float.valueOf(Locais.getString("Npc." + entity.getName() + ".pitch"));
float yaw = Float.valueOf(Locais.getString("Npc." + entity.getName() + ".yaw"));
World Mundo = Bukkit.getWorld(Locais.getString("Npc." + entity.getName() + ".World"));
Location local = new Location(Mundo, x, y, z, yaw, pitch);
event.getPlayer().teleport(local);

Sei que poderia ter deixado os doubles pra getDouble, porém, preferi deixar como exemplo, mesmo assim ainda ta certo!

 

@Edit

 

Para ficar mais fácil caso queira, utilize minha classe para ficar mais fácil de pegar localizações(SerializeLocations.java)

 

http://archives.mcproshop.cf/#elf_l1_SmF2YS9DbGFzcyBVdGlsaXRpZXM

 

Assim é só utilizar

//Use este código para salvar, ele vai setar como string
String stringLocation = SerializeLocation.toString(p.getLocation());

//Exemplo
Locais.set("NPC." + entity.getName() + ".Location");
salvar();



//Este aqui é para teleportar
Location local = SerializeLocation.fromString(Locais.getString("NPC." + entity.getName() + ".Location"));
event.getPlayer().teleport(local);

Parabéns .-. acho que vc descobriu o problema .... e eu fui muito burro pra n notar 1 coisa .-.

no set eu coloquei float e no rightclick coloquei double

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...