118 lines
3.2 KiB
Java
118 lines
3.2 KiB
Java
|
package eu.univento.lobby.commands;
|
|||
|
|
|||
|
import java.io.File;
|
|||
|
import java.io.IOException;
|
|||
|
import java.util.List;
|
|||
|
|
|||
|
import org.bukkit.Bukkit;
|
|||
|
import org.bukkit.Chunk;
|
|||
|
import org.bukkit.Location;
|
|||
|
import org.bukkit.Material;
|
|||
|
import org.bukkit.World;
|
|||
|
import org.bukkit.command.CommandSender;
|
|||
|
import org.bukkit.configuration.file.FileConfiguration;
|
|||
|
import org.bukkit.configuration.file.YamlConfiguration;
|
|||
|
import org.bukkit.entity.Player;
|
|||
|
|
|||
|
import eu.univento.core.api.AutoCommand;
|
|||
|
import eu.univento.core.api.CustomPlayer;
|
|||
|
import eu.univento.core.api.Messages;
|
|||
|
import eu.univento.core.api.NPC;
|
|||
|
import eu.univento.core.api.Perms.Ranks;
|
|||
|
import eu.univento.lobby.Lobby;
|
|||
|
|
|||
|
/**
|
|||
|
* spawns NPCs
|
|||
|
* @author joethei
|
|||
|
* @version 1.0
|
|||
|
*/
|
|||
|
public class SetNPC extends AutoCommand<Lobby>{
|
|||
|
|
|||
|
/**
|
|||
|
* configuration file
|
|||
|
*/
|
|||
|
static File file = new File("plugins/Lobby", "NPCs.yml");
|
|||
|
/**
|
|||
|
* configuration
|
|||
|
*/
|
|||
|
static FileConfiguration cfg = YamlConfiguration.loadConfiguration(file);
|
|||
|
|
|||
|
/**
|
|||
|
* @param plugin main class
|
|||
|
* @param command command to execute
|
|||
|
* @param description describes the command
|
|||
|
* @param aliases aliases of command
|
|||
|
*/
|
|||
|
public SetNPC(Lobby plugin, String command, String description, String[] aliases) {
|
|||
|
super(plugin, command, description, aliases);
|
|||
|
}
|
|||
|
|
|||
|
@Override
|
|||
|
public boolean execute(CommandSender sender, String label, String[] args) {
|
|||
|
if(sender instanceof Player) {
|
|||
|
CustomPlayer p = CustomPlayer.getPlayer(sender.getName());
|
|||
|
if(p.isAllowed(Ranks.Admin)) {
|
|||
|
if (args.length == 1) {
|
|||
|
cfg.set(args[0] + ".World", p.getWorld().getName());
|
|||
|
cfg.set(args[0] + ".X", Double.valueOf(p.getLocation().getX()));
|
|||
|
cfg.set(args[0] + ".Y", Double.valueOf(p.getLocation().getY()));
|
|||
|
cfg.set(args[0] + ".Z", Double.valueOf(p.getLocation().getY()));
|
|||
|
|
|||
|
try {
|
|||
|
cfg.save(file);
|
|||
|
} catch (IOException e) {
|
|||
|
e.printStackTrace();
|
|||
|
}
|
|||
|
|
|||
|
spawnNPC(args[0], p.getLocation());
|
|||
|
}
|
|||
|
p.sendMessage("<EFBFBD>cNutze /setnpc <Name>");
|
|||
|
}else {
|
|||
|
sender.sendMessage(Messages.NO_PERMS);
|
|||
|
}
|
|||
|
}else {
|
|||
|
sender.sendMessage(Messages.NOT_A_PLAYER);
|
|||
|
}
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
@Override
|
|||
|
public List<String> tabComplete(CommandSender sender, String label, String[] args) {
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @param name name of npc
|
|||
|
* @param loc location to spawn
|
|||
|
*/
|
|||
|
static void spawnNPC(String name, Location loc) {
|
|||
|
Bukkit.getScheduler().runTaskAsynchronously(Lobby.getInstance(), new Runnable() {
|
|||
|
|
|||
|
@Override
|
|||
|
public void run() {
|
|||
|
NPC npc = new NPC(name, loc, true);
|
|||
|
npc.setItemInHand(Material.IRON_SWORD);
|
|||
|
npc.spawn();
|
|||
|
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @param what name of the npc
|
|||
|
*/
|
|||
|
public static void startNPCs(String what) {
|
|||
|
String world = cfg.getString(what + ".World");
|
|||
|
double x = cfg.getDouble(what + ".X");
|
|||
|
double y = cfg.getDouble(what + ".Y");
|
|||
|
double z = cfg.getDouble(what + ".Z");
|
|||
|
|
|||
|
World w = Bukkit.getWorld(world);
|
|||
|
|
|||
|
Location loc = new Location(w, x, y, z);
|
|||
|
Chunk chunk = loc.getChunk();
|
|||
|
chunk.load();
|
|||
|
spawnNPC(what, loc);
|
|||
|
}
|
|||
|
|
|||
|
}
|