Ir para conteúdo
  • 0

[Duvida] Config


Frogguer

Pergunta

11 respostass a esta questão

Posts Recomendados

  • 0

Não entendi a parte do villager, mas utilize a CitizensAPI para criar.

 

Para abrir um inventário quando clicar é so pegar o evento de interagir com outra entidade, checar se ele é um villager, pega o nome, se for igual ao definido na config, abre o inventário.

 

Se te ajudei, marca como melhor resposta e dá um like.

Link para o comentário
Compartilhar em outros sites

  • 0

Não entendi a parte do villager, mas utilize a CitizensAPI para criar.

 

Para abrir um inventário quando clicar é so pegar o evento de interagir com outra entidade, checar se ele é um villager, pega o nome, se for igual ao definido na config, abre o inventário.

 

Se te ajudei, marca como melhor resposta e dá um like.

tipo quero criar um villager e quero que o nome salve na config, pode me da um exemplo ? 

Link para o comentário
Compartilhar em outros sites

  • 0

tipo quero criar um villager e quero que o nome salve na config, pode me da um exemplo ? 

Não há necessidade de fazer isso. Utilize a API do Citizens para criar um villager, é muito mais simples. Criar villager imóvel e não tomar dano é um pouquinho avançado e você tem que fazer um reflections (creio eu).

 

 

E dentro do seu plugin você pode criar um comando para fazer o Citizens do dono do servidor executar um comando para criar um npc com o nome que ele definiu na config, ou você definiu. 

Depois é só fazer um evento de abrir inventário quando clicar nesse determinado villager com o nome.

Link para o comentário
Compartilhar em outros sites

  • 0

Não há necessidade de fazer isso. Utilize a API do Citizens para criar um villager, é muito mais simples. Criar villager imóvel e não tomar dano é um pouquinho avançado e você tem que fazer um reflections (creio eu).

 

 

E dentro do seu plugin você pode criar um comando para fazer o Citizens do dono do servidor executar um comando para criar um npc com o nome que ele definiu na config, ou você definiu. 

Depois é só fazer um evento de abrir inventário quando clicar nesse determinado villager com o nome.

Não precisa, é só tirar AI da Entity spawnada, setar a location na config e recarregar a location no onenable.. Simples

 

@topic

 

Villager villager = (Villager)world.spawnCEntity(location, EntityType.VILLAGER);
((CraftVillager)villager).getHandle().setProfession(5);

 

Essa é a base para spawnar o villager, agora pesquisa como remover AI de entity e só setar o nome

Link para o comentário
Compartilhar em outros sites

  • 0

Não precisa, é só tirar AI da Entity spawnada, setar a location na config e recarregar a location no onenable.. Simples

 

@topic

Villager villager = (Villager)world.spawnCEntity(location, EntityType.VILLAGER);
((CraftVillager)villager).getHandle().setProfession(5);

Essa é a base para spawnar o villager, agora pesquisa como remover AI de entity e só setar o nome

Pode me da um exemplo ?

Link para o comentário
Compartilhar em outros sites

  • 0

Não precisa, é só tirar AI da Entity spawnada, setar a location na config e recarregar a location no onenable.. Simples

 

@topic

Villager villager = (Villager)world.spawnCEntity(location, EntityType.VILLAGER);
((CraftVillager)villager).getHandle().setProfession(5);

Essa é a base para spawnar o villager, agora pesquisa como remover AI de entity e só setar o nome

Ajuda o garoto ai, deixo em tuas mãos

Link para o comentário
Compartilhar em outros sites

  • 0

 

Acho que não há necessidade de salvar a localidade do npc, você criando ele, ele não será excluído quando recarregar o servidor.

 

Criar o villager

Villager v = (Villager) p.getWorld().spawnEntity(p.getLocation(), EntityType.VILLAGER);
v.setCustomName("Irineu");
v.setCustomNameVisible(true);

agora, pra retirar a NoAI do mesmo, use o código abaixo

	public void removeAI(Entity en) {
		net.minecraft.server.v1_8_R3.Entity nmsEn = ((CraftEntity) en).getHandle();
		NBTTagCompound compound = new NBTTagCompound();
		nmsEn.c(compound);
		compound.setByte("NoAI", (byte) 1);
		nmsEn.f(compound);
	}

Pra retirar, é assim (continuando o código de criação)

Villager v = (Villager) p.getWorld().spawnEntity(p.getLocation(), EntityType.VILLAGER);
v.setCustomName("Irineu");
v.setCustomNameVisible(true);
removeAI(v);

Mas caso queira salvar...

String locSerializedDePobre = p.getWorld().getName() + ":" + p.getLocation().getX() + ":" + p.getLocation().getY() + ":" + p.getLocation().getZ()
getConfig().set("villager-location", locSerializedDePobre);
saveConfig();

agora pra pegar a localidade "serializada" (de pobre)

String[] split = getConfig().getString("villager-location").split(":");
String world = split[0];
double x = Double.valueOf(split[1]);
double y = Double.valueOf(split[2]);
double z = Double.valueOf(split[3]);

Location loc = new Location(Bukkit.getWorld(world), x, y, z);

E fiz assim mais quando o server fecha e abre de volta o villager não pega mais, mais vou tentar essa ae da config 

Link para o comentário
Compartilhar em outros sites

  • 0
Villager Villager = (Villager)p.getWorld().spawn(p.getLocation(), Villager.class);

Villager.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 99*99*99, 127));

Villager.setAdult();

Villager.setCustomName("Nome");

Villager.setCustomNameVisible(true);

Villager.setProfession(Profession.BLACKSMITH);

 

Não sei se ajudei.

Link para o comentário
Compartilhar em outros sites

  • 0

 

Acho que não há necessidade de salvar a localidade do npc, você criando ele, ele não será excluído quando recarregar o servidor.

 

Criar o villager

Villager v = (Villager) p.getWorld().spawnEntity(p.getLocation(), EntityType.VILLAGER);
v.setCustomName("Irineu");
v.setCustomNameVisible(true);

agora, pra retirar a NoAI do mesmo, use o código abaixo

	public void removeAI(Entity en) {
		net.minecraft.server.v1_8_R3.Entity nmsEn = ((CraftEntity) en).getHandle();
		NBTTagCompound compound = new NBTTagCompound();
		nmsEn.c(compound);
		compound.setByte("NoAI", (byte) 1);
		nmsEn.f(compound);
	}

Pra retirar, é assim (continuando o código de criação)

Villager v = (Villager) p.getWorld().spawnEntity(p.getLocation(), EntityType.VILLAGER);
v.setCustomName("Irineu");
v.setCustomNameVisible(true);
removeAI(v);

Mas caso queira salvar...

String locSerializedDePobre = p.getWorld().getName() + ":" + p.getLocation().getX() + ":" + p.getLocation().getY() + ":" + p.getLocation().getZ()
getConfig().set("villager-location", locSerializedDePobre);
saveConfig();

agora pra pegar a localidade "serializada" (de pobre)

String[] split = getConfig().getString("villager-location").split(":");
String world = split[0];
double x = Double.valueOf(split[1]);
double y = Double.valueOf(split[2]);
double z = Double.valueOf(split[3]);

Location loc = new Location(Bukkit.getWorld(world), x, y, z);

Não funcionou '- '

Link para o comentário
Compartilhar em outros sites

  • 0

 

package ml.lbplugins.lbcombatlog;
 
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.entity.Villager;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
 
public class Main extends JavaPlugin implements Listener {
 
@Override
public void onEnable() {
if (getConfig().contains("Lojas.Mundo")) {
World mundo = (Bukkit.getServer().getWorld(getConfig().getString("Lojas.Mundo")));
Double x = getConfig().getDouble("Lojas.X");
Double y = getConfig().getDouble("Lojas.Y");
Double z = getConfig().getDouble("Lojas.Z");
float YI = (float) getConfig().getDouble("Lojas.Yi");
Float PI = (float) getConfig().getDouble("Lojas.Pi");
Location npc = new Location(mundo, x, y, z, YI, PI);
Villager v = (Villager) mundo.spawnEntity(npc, EntityType.VILLAGER);
v.setCustomName("Irineu");
v.setCustomNameVisible(true);
}
}
 
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
Player p = (Player) sender;
 
if (command.getName().equalsIgnoreCase("?")) {
Villager v = (Villager) p.getWorld().spawnEntity(p.getLocation(), EntityType.VILLAGER);
v.setCustomName("Irineu");
v.setCustomNameVisible(true);
Double x = p.getLocation().getX();
Double y = p.getLocation().getY();
Double z = p.getLocation().getZ();
float yi = p.getLocation().getYaw();
float pi = p.getLocation().getPitch();
getConfig().set("Lojas.Mundo", p.getWorld().getName());
getConfig().set("Lojas.X", x);
getConfig().set("Lojas.Y", y);
getConfig().set("Lojas.Z", z);
getConfig().set("Lojas.Yi", yi);
getConfig().set("Lojas..Pi", pi);
saveConfig();
}
return false;
}
}
Link para o comentário
Compartilhar em outros sites

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