Ir para conteúdo

abidux

Desenvolvedores(as)
  • Total de itens

    761
  • Registro em

  • Última visita

Tudo que abidux postou

  1. verifica a formatação, se a versão for maior que 1.13, use UTF-8, caso contrário, use ANSI
  2. se não conseguir, me chama que te ajudo.
  3. perdão, eu errei no if, seria: if (itemMap.size() < 100) { final int size = itemMap.size(); for (int i = size; i < 100; i++) { System.out.println(i); itemMap.put(i, null); } }
  4. se você tem um item com 2% e outro com 30%, tens 32% de chance de cair algo, 68% de não cair nada. você pode fazer assim: public class Main { private static final Object[][] items = new Object[][] {new Object[] {"Item 1", 30}, new Object[] {"Item 2", 2}}; private static final HashMap<Integer, Object[]> itemMap = new HashMap<>(); private static final Random random = new Random(); public static void main(String[] args) { for (Object[] item : items) { final int chance = (int) item[1]; final int size = itemMap.size(); for (int i = size; i < chance + size; i++) { itemMap.put(i, item); } } if (itemMap.size() < 100) { for (int i = itemMap.size(); i < 100 - itemMap.size(); i++) { itemMap.put(i, null); } } final int random = Main.random.nextInt(100); final Object[] item = itemMap.get(random); if (item != null) { System.out.println("Nome: " + item[0]); System.out.println("Chance: " + item[1] + "%"); System.out.println("Número: " + random); } else System.out.println("Você não ganhou nada. (" + random + ")"); } } não tem todas as verificações que poderia ter, mas funciona. se precisar de ajuda para entender me chama no discord.
  5. Esse tópico vai ser dividido em 2 áreas, "básica" e "matemática", para quem quiser entender melhor BÁSICA primeiramente, temos que escrever umas variáveis. public static final int NORTE = 180, SUL = 0, LESTE = 270, OESTE = 90, NORDESTE = 225, NOROESTE = 135, SUDESTE = -45, SUDOESTE = 45; esses são alguns ângulos importantes para isso. primeiro, precisamos determinar a distâncias pelas direções. private static int[] getDirections(Location l) { final int[] location = new int[] {l.getBlockX(), l.getBlockZ()}; final int[] target = new int[] {track[0], track[1]}; int east = 0, west = 0, south = 0, north = 0; if (location[0] > target[0]) { west += location[0] - target[0]; } else if (location[0] != target[0]) { east += target[0] - location[0]; } if (location[1] > target[1]) { north += location[1] - target[1]; } else if (location[1] != target[1]) { south += target[1] - location[1]; } return new int[] {north, south, east, west}; } isso vai retornar os blocos que temos que andar para cada direção, mas ainda não é preciso o suficiente, agora vamos pegar o ângulo certo. private static double distance(int[] a, int[] b) { int m1 = a[0] - b[0]; int m2 = a[1] - b[1]; return Math.sqrt(m1*m1 + m2*m2); } public static void lookAtTarget(Entity entity) { if (track != null) { final int[] d = getDirections(entity.getLocation()); double angle = 0; if (d[0] > 0) { angle = NORTE; if (d[2] > 0) { angle = NORDESTE; int[] u = {d[2], d[0]}; int[] v = {0, d[0]}; angle = (180 - angle(u, v)) * -1; } else if (d[3] > 0) { angle = NOROESTE; int[] u = {d[3], d[0]}; int[] v = {0, d[0]}; angle = 180 - angle(u, v); } } else if (d[1] > 0) { angle = SUL; if (d[2] > 0) { angle = SUDESTE; int[] u = {d[2], d[1]}; int[] v = {0, d[1]}; angle = angle(u, v) * -1; } else if (d[3] > 0) { angle = SUDOESTE; int[] u = {d[3], d[1]}; int[] v = {0, d[1]}; angle = angle(u, v); } } else if (d[2] > 0) { angle = LESTE; } else if (d[3] > 0) { angle = OESTE; } Location location = entity.getLocation(); location.setYaw((float) angle); entity.teleport(location); } } private static double angle(int[] u, int[] v) { int[] base = {0, 0}; double cosO = (u[0] * v[0] + u[1] * v[1]) / (distance(u, base) * distance(v, base)); return Math.toDegrees(Math.acos(cosO)); } esses métodos entram na matemática, então não vou explicar muito, mas para usar é só executar lookAtTarget(entity); track é uma variável int[] com as coordenadas X e Z do bloco que você quer mirar. Como criar a track: int[] track = {x, z}; track = new int[] {x, z}; MATEMÁTICA a distância é basicamente um plano cartesiano, então a fórmula é: √(a1 - b1)^2 + (a2 - b2)^2 a distância é usada com base em 2 pontos, que são calculados a partir da matemática com vetores... o primeiro ponto é baseado em uma array com as seguintes condições int[] u = {east||west, north||south}; int[] v = {0, north||south}; o ângulo é calculado por a1*b1 + a2*b2 sobre o módulo de a vezes o módulo de b desculpa se o tópico não ficou bom ou didático, comente se tiver alguma dica para melhorar.
  6. https://github.com/mabidux/JarUtils coloca essa classe no teu plugin, cria uma pasta "lib" e coloca a jar lá.
  7. me chama no discord que te ajudo a separar em yml se quiser
  8. https://www.baeldung.com/java-email acho que isso pode ajudar
  9. legal, quando abrir me manda uma msg no discord que eu com certeza vou jogar
  10. ignora esse mano aí, gosta de criticar por qualquer coisa... parece muito legal seu plugin :)
  11. a propósito, ele só manda o comando quando mata, não tem porcentagem nem nada, se quiser um mais completo, pede pro lucas aí
  12. tá aí, meu filho, seja feliz KillCommand.jar não testei, mas deve estar funcionando
  13. você pode usar a parte de chat do vault para remover a dependência do pex :)
  14. fiz um igual para 1.16.5 há um tempo, parabéns pelo pl
  15. muito bonito, com certeza compraria se meu servidor fosse de FullPvP, RankUP ou Factions. Boa sorte, amigo.
  16. @Deus atualiza muito, desnecessário para um plugin tão simples
×
×
  • Criar Novo...