public class HubCommand implements CommandExecutor {
private final HubPlugin plugin;
private Location hub;
public HubCommand(HubPlugin plugin) {
this.plugin = plugin;
this.hub = plugin.getConfig().getLocation("hub");
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if(!(sender instanceof Entity)) {
sender.sendMessage("§cVous devez être une entité pour faire cela.");
return true;
}
Entity executor = (Entity) sender;
if(label.equals("sethub")) {
this.hub = executor.getLocation();
FileConfiguration config = plugin.getConfig();
config.set("hub", this.hub);
try {
config.save(new File(plugin.getDataFolder(), "plugin.yml"));
}
catch(IOException e) {
plugin.getLogger().log(Level.SEVERE, "Could not save config", e);
executor.sendMessage("§4Impossible de sauvegarder le nouveau hub sur le disque dur.");
return true;
}
executor.sendMessage("§aL'hub a bien été redéfini.");
}
else if(label.equals("hub")) {
if(this.hub == null) {
executor.sendMessage("§cAucun hub n'est disponible.");
}
else {
if(executor.teleport(this.hub, TeleportCause.COMMAND)) {
executor.sendMessage("§7Vous avez été téléporté au hub.");
}
else {
// un autre plugin peut empêcher la téléportation, par ex. WorldGuard
executor.sendMessage("§cTéléportation impossible.");
}
}
}
else {
// impossible d'avoir une autre commande que `/sethub` ou `/hub`
throw new RuntimeException("entered unreachable code");
}
return true;
}
}