From 7d33645e0ec675555c2342345145c16afe66c786 Mon Sep 17 00:00:00 2001 From: iTakinn Date: Mon, 19 Feb 2024 00:29:35 -0300 Subject: [PATCH] raio pra onde o player olha tbm. e um comando de subir --- .../java/com/itakinn/LightningStrike.java | 10 ++- src/main/java/com/itakinn/RaiosOlhar.java | 78 ++++++++++++++++++ src/main/java/com/itakinn/Subir.java | 58 +++++++++++++ src/main/java/plugin.yml | 14 ++++ .../com/itakinn/LightningStrike$1.class | Bin 1340 -> 1340 bytes .../classes/com/itakinn/LightningStrike.class | Bin 4211 -> 4361 bytes target/classes/com/itakinn/RaiosOlhar$1.class | Bin 0 -> 1292 bytes target/classes/com/itakinn/RaiosOlhar.class | Bin 0 -> 3215 bytes target/classes/com/itakinn/Subir.class | Bin 0 -> 2699 bytes target/classes/plugin.yml | 14 ++++ 10 files changed, 170 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/itakinn/RaiosOlhar.java create mode 100644 src/main/java/com/itakinn/Subir.java create mode 100644 target/classes/com/itakinn/RaiosOlhar$1.class create mode 100644 target/classes/com/itakinn/RaiosOlhar.class create mode 100644 target/classes/com/itakinn/Subir.class diff --git a/src/main/java/com/itakinn/LightningStrike.java b/src/main/java/com/itakinn/LightningStrike.java index 584a203..5d008d6 100644 --- a/src/main/java/com/itakinn/LightningStrike.java +++ b/src/main/java/com/itakinn/LightningStrike.java @@ -21,6 +21,8 @@ public class LightningStrike extends JavaPlugin implements Listener { public void onEnable() { getLogger().info("Plugin LightningStrike habilitado!"); getCommand("raios").setExecutor(this); + getCommand("raiosolhar").setExecutor(new RaiosOlhar(this)); + getCommand("subir").setExecutor(new Subir(this)); getServer().getPluginManager().registerEvents(this, this); } @@ -38,13 +40,13 @@ public class LightningStrike extends JavaPlugin implements Listener { if (sender.hasPermission("lightningstrike.raios") || sender.isOp()) { if (args.length != 1) { sender.sendMessage("Uso correto: /raios "); - return false; + return true; } Player target = Bukkit.getPlayer(args[0]); if (target == null) { sender.sendMessage("Jogador não encontrado."); - return false; + return true; } toggleLightning(target); @@ -52,7 +54,7 @@ public class LightningStrike extends JavaPlugin implements Listener { }else{ sender.sendMessage("Você não tem permissão para usar este comando."); - return false; + return true; } } @@ -80,7 +82,7 @@ public class LightningStrike extends JavaPlugin implements Listener { }; task.runTaskTimer(this, 0, 1); // A cada segundo (20 ticks) tasks.put(playerId, task); - player.sendMessage("Os raios foram ativados. Mantenha-se em movimento!"); + player.sendMessage("Os raios foram ativados!"); } } diff --git a/src/main/java/com/itakinn/RaiosOlhar.java b/src/main/java/com/itakinn/RaiosOlhar.java new file mode 100644 index 0000000..6f15c73 --- /dev/null +++ b/src/main/java/com/itakinn/RaiosOlhar.java @@ -0,0 +1,78 @@ +package com.itakinn; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +import org.bukkit.Bukkit; +import org.bukkit.block.Block; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.event.Listener; +import org.bukkit.plugin.Plugin; +import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.scheduler.BukkitRunnable; + +public class RaiosOlhar implements Listener, CommandExecutor { + private final Map tasksOlhar = new HashMap<>(); + private final JavaPlugin plugin; + + public RaiosOlhar(JavaPlugin plugin) { + this.plugin = plugin; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if (sender.hasPermission("lightningstrike.raiosolhar") || sender.isOp()) { + + if (args.length < 1) { + toggleLightningOlhar(Bukkit.getPlayer(sender.getName())); + return true; + } else if (args.length == 1) { // se tiver argumento (player) chama ele + Player target = Bukkit.getPlayer(args[0]); + if (target == null) { + sender.sendMessage(args[0] + " não está online."); + return true; + } + toggleLightningOlhar(target); + return true; + } else { // se tiver mais de um argumento + sender.sendMessage("Uso correto: /raiosolhar "); + return true; + } + } else { + sender.sendMessage("Você não tem permissão para usar este comando."); + return true; + } + } + + private void toggleLightningOlhar(Player target) { + UUID uuid = target.getUniqueId(); + if (tasksOlhar.containsKey(uuid)) { + // Se o jogador já está sendo atingido por raios, cancela a tarefa + tasksOlhar.get(uuid).cancel(); + tasksOlhar.remove(uuid); + target.sendMessage("Os raios foram desativados."); + } else { + BukkitRunnable tasks = new BukkitRunnable() { + @Override + public void run() { + if (!target.isOnline() || target.isDead()) { + return; + } + Block bloco = target.getTargetBlock(null, 100); + if (!bloco.isEmpty()) + target.getWorld().strikeLightningEffect(bloco.getLocation()); + else { + return; + } + } + }; + tasks.runTaskTimer(plugin, 0, 1); + tasksOlhar.put(uuid, tasks); + target.sendMessage("Os raios foram ativados para o olhar."); + } + } +} diff --git a/src/main/java/com/itakinn/Subir.java b/src/main/java/com/itakinn/Subir.java new file mode 100644 index 0000000..694c7d5 --- /dev/null +++ b/src/main/java/com/itakinn/Subir.java @@ -0,0 +1,58 @@ +package com.itakinn; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.World; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.event.Listener; +import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.scheduler.BukkitRunnable; + +public class Subir implements Listener, CommandExecutor { + private final Map tasksOlhar = new HashMap<>(); + private final JavaPlugin plugin; + + public Subir(JavaPlugin plugin) { + this.plugin = plugin; + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if (sender.hasPermission("lightningstrike.subir") || sender.isOp()) { + if (args.length < 1) { // se argumento for menor de um (sem argumento) usa quem mandou o comando + subirPlayer(Bukkit.getPlayer(sender.getName())); + return true; + } else if (args.length == 1) { // se tiver argumento (player) chama ele + Player target = Bukkit.getPlayer(args[0]); + if (target == null) { + sender.sendMessage(args[0] + " não está online."); + return true; + } + subirPlayer(target); + return true; + } else { + sender.sendMessage("Uso correto: /subir "); + return true; + } + } else { + sender.sendMessage("Você não tem permissão para usar este comando."); + return true; + } + } + + private void subirPlayer(Player player) { + World max; + max = player.getWorld(); + Location loc = player.getLocation(); + loc.setY(max.getHighestBlockYAt(loc) + 1); + player.teleport(loc); + + } +} diff --git a/src/main/java/plugin.yml b/src/main/java/plugin.yml index 977668a..60c6482 100644 --- a/src/main/java/plugin.yml +++ b/src/main/java/plugin.yml @@ -7,8 +7,22 @@ commands: description: Ativa ou desativa raios sobre um jogador usage: /raios permission: lightningstrike.raios + raiosolhar: + description: Ativa ou desativa raios onde o jogador que estiver olhando + usage: /raiosolhar + permission: lightningstrike.raiosolhar + subir: + description: Teleporta o jogador para cima + usage: /subir + permission: lightningstrike.subir permissions: lightningstrike.raios: description: Permite que o jogador ative ou desative raios sobre outro jogador + default: op + lightningstrike.raiosolhar: + description: Permite que o jogador ative ou desative raios onde estiver olhando + default: op + lightiningstrike.subir: + description: Permite que o jogador se teleporte para cima default: op \ No newline at end of file diff --git a/target/classes/com/itakinn/LightningStrike$1.class b/target/classes/com/itakinn/LightningStrike$1.class index 629f1ec2cd34844db4b9099ec270dd07bed99f3d..40c1abfc0d1e95a52d662ae5b801a0df1d2b0b70 100644 GIT binary patch delta 39 ucmdnPwTEj%0t=)2)R diff --git a/target/classes/com/itakinn/LightningStrike.class b/target/classes/com/itakinn/LightningStrike.class index 91490fe20b93f52e7ea2dbaee6e4d1012a869d71..22a4098f321eb4343b3892d8c4339d305bce08f9 100644 GIT binary patch delta 1765 zcmZ9MYj6`)6vzK}v&p8(cBT!5wnS|TCDU$7V@t5m@{&?Oq>Z*nEl;=U(uSr9CTYP3 zMiCW6gnE7Q5CIj@s;y!mAP9n@_Ho3NNqlfC0^#u5eX3fMm?p2Ux0tS^FfEkPV;XZ+idUS0|n=J#93+C zgb(>nXQ_P`K34GwdiWXV@2QQDNdjQ5md04uRcUxMmp6@anpSGA8X6r#pj|tRYfQsb z(@-xA(}f|885zuG(6kKZTQE$XB#fqZENs+{K@JKr3PmVGF(#9>5pJ>qYBp+$mWyc0 z&}^D=X}ptMSg4<7A_WD~A&ko4MurU97@7_szcPd63?~s<=u5+(SvSLui$7;KMwkg= zxeTO)Ks=a$QdCf1gYonl%Ls%I@4-7 z>|4nuk}spX_FfaEO$szq_YvJWe0j6vuxzFUiaDI?{k$1p>4+OxS)vQQpG^1BH)5Dj^CW|lQVpE)EUQ5Iw+p^8a0`B?>lGCJ?H;F|MTw7$-hU( zod5geDPS(=O+1QneIZyroEY(hLMWzN%;0K0XjDy{#kD5aC<^-r*4M4s+SAjWscW+b z2JHch*)-@8qrpFy`6l!9MWe!4z(PI6+o`V8+r8E0&D>yey`o@aYA{u|HPgMRE}7bF zv6vQ5@6_&!kHr2P*-V|m9t1WJ$OJQzErCaQ68HEw6?hMmR%3_WF)^}QU>s|h`U=O_} zn-o!f##5#j`29YMKKk|d{&=K^Efxb#8gF;Hb#s7>E;J`i=wZ;}PAV1QwB5HZX{Xbv z^>&E6xX0vfz052!?&Ut+ZO&Ii`iMEvf4{{8JgC1jXQ+p@5%@(tt$z!Q59~o(Jj-*s zC|DV2<^_uv*{d6aF){XAyu<;W4o(}_%t4D+I3WB6?B4!CJHTuDL@?^#!=T9<`p4kp zf0`0tQ@eW6ISEx;LzGv}1ALx^zM(>A;dac66WmBWcRA0vK z+mNbF+flnWDh0ZG?Y>OEE(yogaorf+?f;a|Oit+^!Zkwdv^K3tg8i(;=XB|-tUrc2 zF=SexBA%rzG9gPe9;wO_6SGF1`W!PA@pz6o2E!8P;c{6ccx5djNHJq6VG5;Ufi;>- zyd`2O7P+1RdEYN54cX_obsC*I#~7O%qDhhCMn&>4g*7>rD^AnCG?Ar4tXmcPF8%CA za=UT?7%qS^{E}?E0GL1}6RDQHo=G$?*#%N0<)m01NTtAC%Q^vMi?0< zI11$L4%W-+K>bP1I@wzjkqtREdf11R$gx?mml>trQ{ICVBqHe?TZPimQm;{ef^D;X zrM`2He|z2^FZE^F;XRs&Je2oH%2Dw3(iNy;99IqrkeIZuT3FODm0G6D+CZIr*7Y=s z)x=Da%yL=H8^x7pB?x(hM+LR>_82=|&aFJo6K< zWY3?NLvlvuJJ0-ra?Xt+v-ZMBHk z<%$y@P57TU6@0;$Qqm{m>EQLqi4qs@D9SMEFQ$kL0#thOm1OpCj<02RF7QLLJHKz_ H@jCWDjbSS2 diff --git a/target/classes/com/itakinn/RaiosOlhar$1.class b/target/classes/com/itakinn/RaiosOlhar$1.class new file mode 100644 index 0000000000000000000000000000000000000000..3934a9bbd711cd4c54260fa2ce078ed542e366db GIT binary patch literal 1292 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 X permission: lightningstrike.raios + raiosolhar: + description: Ativa ou desativa raios onde o jogador que estiver olhando + usage: /raiosolhar + permission: lightningstrike.raiosolhar + subir: + description: Teleporta o jogador para cima + usage: /subir + permission: lightningstrike.subir permissions: lightningstrike.raios: description: Permite que o jogador ative ou desative raios sobre outro jogador + default: op + lightningstrike.raiosolhar: + description: Permite que o jogador ative ou desative raios onde estiver olhando + default: op + lightiningstrike.subir: + description: Permite que o jogador se teleporte para cima default: op \ No newline at end of file