Manolo8 Postado Julho 3, 2018 Denunciar Compartilhar Postado Julho 3, 2018 (editado) Bem pessoal, criei uma API para comandos, onde basicamente, para criar um comando, você usa: Exemplo em vídeo: https://www.youtube.com/watch?v=AE4w0UtGSYE&feature=youtu.be @CmdMapping("mobarea create <name>") @CmdDescription("Cria uma area de mobs") @CmdPermission("simplecraft.admin") @CmdParams({@Param(MobAreaProvider.class), @Param(SimpleArea.class)}) public void createMobArea(User user, String name, MobAreaProvider provider, SimpleArea area) throws SQLException { if (provider.exists(name)) { user.sendMessage(MessageType.ERROR, "Já existe uma MobArea com esse nome!"); return; } provider.create(area, name); user.sendMessage(MessageType.SUCCESS, "A MobArea foi criada com sucesso!"); } @CmdMapping("mobarea remove <area>") @CmdDescription("Remove uma area de mobs") @CmdPermission("simplecraft.admin") public void removeMobArea(Sender sender, MobArea area) { area.remove(); sender.sendMessage(MessageType.SUCCESS, "A area de mobs foi removida!"); } @CmdMapping("mobarea respawn <area>") @CmdDescription("Respawna os mobs de uma area") @CmdPermission("simplecraft.admin") public void mobAreaRespawn(Sender sender, MobArea area) { area.respawnMobs(true); sender.sendMessage(MessageType.SUCCESS, "Os mobs serão respawnados!"); } @CmdMapping("mobarea tp <area>") @CmdDescription("Teleporta para um local disponível na area") @CmdPermission("simplecraft.admin") public void mobAreaTp(User user, MobArea area) { if (user.teleport(area)) { user.sendMessage(MessageType.SUCCESS, "Teleportando..."); } else { user.sendMessage(MessageType.ERROR, "Não foi encontrado um local disponível para teleporte..."); } } @CmdMapping("mobarea change <area> mob add <mob> <quantity>") @CmdDescription("Adiciona uma mob a area") @CmdPermission("simplecraft.admin") public void mobAreaAdd(Sender sender, MobArea area, Mob mob, int value) { if (area.hasMob(mob)) { sender.sendMessage(MessageType.ERROR, "A area já tem esse mob!"); return; } if (value > 2000) { sender.sendMessage(MessageType.ERROR, "A quantidade não pode ser maior que 2000"); return; } area.create(mob, value); area.respawnMobs(false); sender.sendMessage(MessageType.SUCCESS, "O mob foi adicionado!"); } @CmdMapping("mobarea change <area> mob remove <mob>") @CmdDescription("Remove um mob da area") @CmdPermission("simplecraft.admin") public void mobAreaRemove(Sender sender, MobArea area, MobInfo mob) { area.removeMob(mob); area.respawnMobs(true); sender.sendMessage(MessageType.SUCCESS, "O mob foi removido!"); } @CmdMapping("mobarea change <area> mob update <mob> <quantity>") @CmdDescription("Atualiza a quantidade de mobs na area") @CmdPermission("simplecraft.admin") public void mobAreaUpdate(Sender sender, MobArea area, MobInfo info, int value) { if (value > 2000) { sender.sendMessage(MessageType.ERROR, "A quantidade não pode ser maior que 2000"); return; } info.setQuantity(value); area.respawnMobs(false); sender.sendMessage(MessageType.SUCCESS, "A quantidade de mobs foi alterada!"); } E para criar um provedor, usa-se: @SupplierOptions("area") class MobAreaConverter implements Supplier.Convert<MobArea> { @Override public void tabComplete(TabArguments arguments) throws SQLException { arguments.offerSafe(repository.findNames(arguments.getComplete())); } @Override public Result<MobArea> convert(ParameterBuilder builder, Sender sender, String value) throws SQLException { MobArea area = repository.findByName(value); if (area == null) return new Result.Error("A area com o nome " + value + " não foi encontrada!"); return new Result(area); } } @SupplierOptions("mob") class MobConverter implements Supplier.Convert<Mob> { @Override public void tabComplete(TabArguments arguments) { MobArea mobArea = arguments.parameters().getByType(MobArea.class); for (Mob mob : repository.getMobInfoRepository().getMobs()) { if (mobArea != null && mobArea.hasMob(mob)) continue; arguments.offer(mob.getName()); } } @Override public Result<Mob> convert(ParameterBuilder builder, Sender sender, String value) { Mob mob = repository.getMobInfoRepository().findByName(value); if (mob == null) return new Result.Error("O mob " + value + " não foi encontrado!"); return new Result<>(mob); } } @SupplierOptions("mob") class MobInfoConverter implements Supplier.Convert<MobInfo> { @Override public void tabComplete(TabArguments arguments) { MobArea mobArea = arguments.parameters().getByType(MobArea.class); if (mobArea != null) { for (MobInfo info : mobArea.getMobInfos()) { arguments.offer(info.getMob().getName()); } } } @Override public Result<MobInfo> convert(ParameterBuilder builder, Sender sender, String value) { MobArea mobArea = builder.getByType(MobArea.class); Mob mob = repository.getMobInfoRepository().findByName(value); if (mob == null) return new Result.Error("O mob " + value + " não foi encontrado!"); MobInfo info = mobArea.getMob(mob); if (info == null) return new Result.Error("A area não tem o Mob " + value + "!"); return new Result(info); } } Bem, deu um trabalho, e minha ideia é, talvez liberar aqui pro fórum... Queria saber quem gostaria de usar... (Daria trabalho fazer um tutorial para usar isso, e no fim das contas ser desperdicio '-') (Os comandos são basicamente daquele jeito ali, (o tab complete funciona perfeitamente :)) Deem um feedback se quererem que eu poste... Editado Julho 3, 2018 por Manolo8 2 Link para o comentário Compartilhar em outros sites More sharing options...
Manolo8 Postado Julho 3, 2018 Autor Denunciar Compartilhar Postado Julho 3, 2018 Exemplo: https://www.youtube.com/watch?v=AE4w0UtGSYE&feature=youtu.be Link para o comentário Compartilhar em outros sites More sharing options...
LymeeFairy Postado Setembro 20, 2024 Denunciar Compartilhar Postado Setembro 20, 2024 ANÁLISE DE INATIVIDADE Este tópico foi automaticamente arquivado devido à inatividade. Para manter a organização e fluidez das discussões na comunidade, tópicos que permanecem sem novas interações por um período prolongado são fechados automaticamente. Se houver interesse em retomar o conteúdo, sinta-se à vontade para criar um novo tópico ou entre em contato com a equipe da comunidade para reabrir este tópico. Equipe de Moderação Gamer's Board Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados