diff --git a/src/main/java/igorlink/command/DonateSubCommand.java b/src/main/java/igorlink/command/DonateSubCommand.java index 872f9b7..56629cb 100644 --- a/src/main/java/igorlink/command/DonateSubCommand.java +++ b/src/main/java/igorlink/command/DonateSubCommand.java @@ -6,18 +6,30 @@ public class DonateSubCommand { public static void onDonateCommand(CommandSender sender, String[] args) { - int i; - - //Getting donation's amount - String donationAmount; - StringBuilder donationUsername = new StringBuilder(); - StringBuilder donationMessage = new StringBuilder(); //Getting donation's amount - donationAmount = args[0]; + String donationAmount = args[0]; + StringBuilder donationUsernameBuilder = new StringBuilder(); + StringBuilder donationMessageBuilder = new StringBuilder(); + int i; //Получаем имя донатера for (i = 1; i <= args.length - 1; i++) { + if (args[i].equals("##")) { + break; + } else { + if (i == 1) { + donationUsernameBuilder.append(args[i]); + } else { + donationUsernameBuilder.append(" ").append(args[i]); + } + } + } + + //Все, что после символов ## - это сообщение + for (i++; i <= args.length - 1; i++) { + donationMessageBuilder.append(args[i]).append(' '); + } if (i == 1) { donationUsername.append(args[i]); } else { @@ -26,8 +38,16 @@ public static void onDonateCommand(CommandSender sender, String[] args) { } } + String donationUsername = donationUsernameBuilder.toString(); + String donationMessage = donationMessageBuilder.toString(); //Отправляем донат на исполнение - DonationExecutor.getInstance().streamerPlayersManager.addToDonationsQueue(new Donation(sender, donationUsername.toString(), donationAmount+".00")); + DonationExecutor.getInstance().streamerPlayersManager.addToDonationsQueue( + new Donation( + sender, + donationUsername, + donationAmount + ".00", + donationMessage)); + DonationExecutor.getInstance().streamerPlayersManager.addToDonationsQueue(new Donation(sender, donationUsername, donationAmount+".00")); } } diff --git a/src/main/java/igorlink/command/DonationExecutorCommand.java b/src/main/java/igorlink/command/DonationExecutorCommand.java index 345d648..ca19681 100644 --- a/src/main/java/igorlink/command/DonationExecutorCommand.java +++ b/src/main/java/igorlink/command/DonationExecutorCommand.java @@ -22,7 +22,6 @@ public Boolean execute(CommandSender sender, String label, String[] args) { } try { - //Если команда - это reload, где не должно быть доп аргументов, то вызываем функцию релоуда конфига switch (args[0]) { case "reload" -> { @@ -34,6 +33,10 @@ public Boolean execute(CommandSender sender, String label, String[] args) { ReloadSubCommand.onReloadCommand(sender); return true; } + break; + case "donate": + //Инициализируем список аргументов для новой сабфункции + //Если команда - donate, где нужен минимум 1 доп аргумент, создаем новый массив аргументов со смещением 1, и вызываем функцию обработки доната } case "donate" -> { //Инициализируем список аргментов для новой сабфункции @@ -52,7 +55,8 @@ public Boolean execute(CommandSender sender, String label, String[] args) { //Возвращаем true, к все прошло успешно return true; } - } + break; + case "filter" -> { if ((sender != Bukkit.getConsoleSender()) && (!sender.hasPermission("de.filter")) && (!sender.isOp())) { Utils.sendSysMsgToPlayer((Player) sender, "У вас недостаточно прав для выполнения данной\nкоманды!"); @@ -68,21 +72,22 @@ public Boolean execute(CommandSender sender, String label, String[] args) { //Возвращаем true, к все прошло успешно return true; } + break; + default: + logToConsole("Неизвестная команда: " + args[0]); + return false; } case "sum" -> { logToConsole("Суммарно: §b" + Utils.getSum() + "§f руб."); return true; } - } } catch (Exception e) { - //Если получили exception, сообщаем о нем и выдаем сообщение об ошибке в консоль e.printStackTrace(); logToConsole("Произошла неизвестная ошибка при выполнении команды!"); return false; - } //Если ничего не выполнилось - в команде была ошибка diff --git a/src/main/java/igorlink/command/FilterSubCommand.java b/src/main/java/igorlink/command/FilterSubCommand.java index e108272..b18a868 100644 --- a/src/main/java/igorlink/command/FilterSubCommand.java +++ b/src/main/java/igorlink/command/FilterSubCommand.java @@ -11,14 +11,14 @@ public static void onFilterCommand(CommandSender sender, String[] args) { if (args[0].equalsIgnoreCase("on")) { MainConfig.turnFilterOn(); Utils.logToConsole("Фильтр никнеймов донатеров §bВКЛЮЧЕН"); - if (sender instanceof Player) { - Utils.sendSysMsgToPlayer((Player) sender, "Фильтр никнеймов донатеров §bВКЛЮЧЕН"); + if (sender instanceof Player player) { + Utils.sendSysMsgToPlayer(player, "Фильтр никнеймов донатеров §bВКЛЮЧЕН"); } } else { MainConfig.turnFilterOff(); Utils.logToConsole("Фильтр никнеймов донатеров §bВЫКЛЮЧЕН"); - if (sender instanceof Player) { - Utils.sendSysMsgToPlayer((Player) sender,"Фильтр никнеймов донатеров §bВЫКЛЮЧЕН"); + if (sender instanceof Player player) { + Utils.sendSysMsgToPlayer(player,"Фильтр никнеймов донатеров §bВЫКЛЮЧЕН"); } } diff --git a/src/main/java/igorlink/command/ReloadSubCommand.java b/src/main/java/igorlink/command/ReloadSubCommand.java index 5f0e050..ef9a638 100644 --- a/src/main/java/igorlink/command/ReloadSubCommand.java +++ b/src/main/java/igorlink/command/ReloadSubCommand.java @@ -13,8 +13,8 @@ public static void onReloadCommand(CommandSender sender) throws InterruptedExcep MainConfig.loadMainConfig(true); DonationExecutor.getInstance().streamerPlayersManager.reload(); Utils.logToConsole("Настройки успешно обновлены!"); - if (sender instanceof Player) { - Utils.sendSysMsgToPlayer(Objects.requireNonNull(((Player) sender).getPlayer()), "Настройки успешно обновлены!"); + if (sender instanceof Player player) { + Utils.sendSysMsgToPlayer(player.getPlayer(), "Настройки успешно обновлены!"); } } } diff --git a/src/main/java/igorlink/donationexecutor/Executor.java b/src/main/java/igorlink/donationexecutor/Executor.java index 92457a9..fcaf545 100644 --- a/src/main/java/igorlink/donationexecutor/Executor.java +++ b/src/main/java/igorlink/donationexecutor/Executor.java @@ -64,24 +64,12 @@ public static void DoExecute(String streamerName, String donationUsername, Strin return; } + Location streamerPlayerLocation = streamerPlayer.getLocation(); + World world = streamerPlayer.getWorld(); + Vector direction = streamerPlayerLocation.getDirection(); + switch (executionName) { - case "ShitToInventory" -> shitToInventory(streamerPlayer, validDonationUsername,fullDonationAmount); - case "Lesch" -> lesch(streamerPlayer, validDonationUsername,fullDonationAmount); - case "DropActiveItem" -> dropActiveItem(streamerPlayer, validDonationUsername,fullDonationAmount); - case "PowerKick" -> powerKick(streamerPlayer, validDonationUsername,fullDonationAmount); - case "ClearLastDeathDrop" -> clearLastDeathDrop(streamerPlayer, validDonationUsername,fullDonationAmount); - case "SpawnCreeper" -> spawnCreeper(streamerPlayer, validDonationUsername,fullDonationAmount); - case "GiveDiamonds" -> giveDiamonds(streamerPlayer, validDonationUsername,fullDonationAmount); - case "GiveStackOfDiamonds" -> giveStackOfDiamonds(streamerPlayer, validDonationUsername,fullDonationAmount); - case "GiveBread" -> giveBread(streamerPlayer, validDonationUsername,fullDonationAmount); - case "CallNKVD" -> callNKVD(streamerPlayer, validDonationUsername,fullDonationAmount); - case "CallStalin" -> callStalin(streamerPlayer, validDonationUsername,fullDonationAmount); - case "RandomChange" -> randomChange(streamerPlayer, validDonationUsername,fullDonationAmount); - case "TamedBecomesEnemies" -> tamedBecomesEnemies(streamerPlayer, validDonationUsername,fullDonationAmount); - case "HalfHeart" -> halfHeart(streamerPlayer, validDonationUsername,fullDonationAmount); - case "BigBoom" -> bigBoom(streamerPlayer, validDonationUsername,fullDonationAmount); - case "Nekoglai" -> nekoglai(streamerPlayer, validDonationUsername,fullDonationAmount); case "SetDay" -> setDay(streamerPlayer, validDonationUsername,fullDonationAmount); case "SetNight" -> setNight(streamerPlayer, validDonationUsername,fullDonationAmount); case "GiveIronSet" -> giveIronSet(streamerPlayer, validDonationUsername,fullDonationAmount); @@ -265,13 +253,19 @@ public static void randomChange (Player player, String donationUsername, String } - StringBuilder replacedItems = new StringBuilder(); + StringBuilder replacedItemsBuilder = new StringBuilder(); int replacedCounter = 0; for (int i = 0; i <= 4; i++) { - if (!(player.getInventory().getItem(randoms[i]) == null)) { + if (player.getInventory().getItem(randoms[i]) != null) { replacedCounter++; if (replacedCounter > 1) { - replacedItems.append("§f, "); + replacedItemsBuilder.append("§f, "); + } + replacedItemsBuilder + .append("§b") + .append(player.getInventory().getItem(randoms[i]).getAmount()) + .append(" §f") + .append(player.getInventory().getItem(randoms[i]).getI18NDisplayName()); } replacedItems.append("§b").append(Objects.requireNonNull(player.getInventory().getItem(randoms[i])).getAmount()).append(" §f").append(Objects.requireNonNull(player.getInventory().getItem(randoms[i])).getI18NDisplayName()); } @@ -281,7 +275,7 @@ public static void randomChange (Player player, String donationUsername, String if (replacedCounter == 0) { sendSysMsgToPlayer(player,"§cТебе повезло: все камни попали в пустые слоты!"); } else { - sendSysMsgToPlayer(player,"§cБыли заменены следующие предметусы: §f" + replacedItems); + sendSysMsgToPlayer(player,"§cБыли заменены следующие предметусы: §f" + replacedItemsBuilder.toString()); } } @@ -293,11 +287,11 @@ public static void halfHeart (Player player, String donationUsername, String don public static void tamedBecomesEnemies (Player player, String donationUsername, String donationAmount) { announce(donationUsername, "настроил твоих питомцев против тебя", "настроил прирученных питомцев против", player, donationAmount, true); for (Entity e : player.getWorld().getEntitiesByClasses(Wolf.class, Cat.class)) { - if (((Tameable) e).isTamed() && Objects.equals(Objects.requireNonNull(((Tameable) e).getOwner()).getName(), player.getName())) { - if (e instanceof Cat) { - ((Tameable) e).setOwner(null); - ((Cat) e).setSitting(false); - ((Cat) e).setTarget(player); + if (((Tameable) e).isTamed() && ((Tameable) e).getOwner().getName().equals(player.getName())) { + if (e instanceof Cat cat) { + cat.setOwner(null); + cat.setSitting(false); + cat.setTarget(player); player.sendMessage("+"); } else { ((Wolf) e).setSitting(false); diff --git a/src/main/java/igorlink/donationexecutor/executionsstaff/executionsmanagement/executions/inventory/ShitToInventory.java b/src/main/java/igorlink/donationexecutor/executionsstaff/executionsmanagement/executions/inventory/ShitToInventory.java index d8f3593..12779c1 100644 --- a/src/main/java/igorlink/donationexecutor/executionsstaff/executionsmanagement/executions/inventory/ShitToInventory.java +++ b/src/main/java/igorlink/donationexecutor/executionsstaff/executionsmanagement/executions/inventory/ShitToInventory.java @@ -8,6 +8,7 @@ import org.bukkit.inventory.meta.ItemMeta; import java.util.Arrays; +import java.util.List; import static igorlink.service.Utils.announce; @@ -20,7 +21,7 @@ public Boolean execute(String donationUsername, Player player, String donationAm ItemStack itemStack = new ItemStack(itemType, 64); ItemMeta meta = itemStack.getItemMeta(); meta.setDisplayName("§cГОВНО ОТ §f" + donationUsername.toUpperCase()); - meta.setLore(Arrays.asList("§7Это говно ужасно вонюче и занимает много места")); + meta.setLore(List.of("§7Это говно ужасно вонюче и занимает много места")); itemStack.setItemMeta(meta); for (int i = 0; i < MainConfig.getDirtAmount(); i++) { player.getInventory().addItem(itemStack); diff --git a/src/main/java/igorlink/donationexecutor/executionsstaff/giantmobs/GiantMob.java b/src/main/java/igorlink/donationexecutor/executionsstaff/giantmobs/GiantMob.java index e468656..3511821 100644 --- a/src/main/java/igorlink/donationexecutor/executionsstaff/giantmobs/GiantMob.java +++ b/src/main/java/igorlink/donationexecutor/executionsstaff/giantmobs/GiantMob.java @@ -26,11 +26,11 @@ class GiantMob { private final LivingEntity giantMobLivingEntity; private UUID thisGiantMobUUID = null; - final private int NUMBER_OF_SNOWBALLS_AT_ONE_LAUNCH = 4; - final private Boolean SnowballsFollowingTarget = false; - final private int GIANT_MOBS_TRACKING_RANGE = 40; - final private static int TIME_BEFORE_THIS_GIANT_MOB_FORGET_HIS_TARGET = 4; - final private static int TICKS_BETWEEN_SNOWBALLS_SHOTS = 7; + private static final Boolean SnowballsFollowingTarget = false; + private static final int NUMBER_OF_SNOWBALLS_AT_ONE_LAUNCH = 4; + private static final int GIANT_MOBS_TRACKING_RANGE = 40; + private static final int TIME_BEFORE_THIS_GIANT_MOB_FORGET_HIS_TARGET = 4; + private static final int TICKS_BETWEEN_SNOWBALLS_SHOTS = 7; //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ @@ -44,7 +44,7 @@ class GiantMob { playerDirection.setY(0); playerDirection.normalize(); this.giantMobLivingEntity = (LivingEntity) playerLocation.getWorld().spawnEntity(playerLocation.clone().add(playerDirection.clone().multiply(5)).setDirection(playerDirection.multiply(-1)), EntityType.GIANT); - if (!(mobName == null)) { + if (mobName != null) { this.giantMobLivingEntity.setCustomName(mobName); } this.giantMobLivingEntity.setRemoveWhenFarAway(false); @@ -98,7 +98,7 @@ private LivingEntity findGiantMobTarget() { RayTraceResult rtRes7; RayTraceResult rtRes8; - if (e instanceof LivingEntity) { + if (e instanceof LivingEntity livingEntity) { //Позиции псевдоглаз вокруг головы с каждой стороны Location rtGiantMobPseudoEyesPos1 = giantMobLivingEntity.getLocation().clone().add(2, 11, 0); Location rtGiantMobPseudoEyesPos2 = giantMobLivingEntity.getLocation().clone().add(-2, 11, 0); @@ -106,21 +106,22 @@ private LivingEntity findGiantMobTarget() { Location rtGiantMobPseudoEyesPos4 = giantMobLivingEntity.getLocation().clone().add(0, 11, -2); //Пускаем лучи из каждой точки псевдоглаз до верха и низа каждой сущности - rtRes1 = giantMobLivingEntity.getWorld().rayTraceBlocks(rtGiantMobPseudoEyesPos1, genVec(rtGiantMobPseudoEyesPos1, ((LivingEntity) e).getEyeLocation()), rtGiantMobPseudoEyesPos1.distance(((LivingEntity) e).getEyeLocation()), FluidCollisionMode.NEVER, true); - rtRes2 = giantMobLivingEntity.getWorld().rayTraceBlocks(rtGiantMobPseudoEyesPos2, genVec(rtGiantMobPseudoEyesPos2, ((LivingEntity) e).getEyeLocation()), rtGiantMobPseudoEyesPos2.distance(((LivingEntity) e).getEyeLocation()), FluidCollisionMode.NEVER, true); - rtRes3 = giantMobLivingEntity.getWorld().rayTraceBlocks(rtGiantMobPseudoEyesPos3, genVec(rtGiantMobPseudoEyesPos3, ((LivingEntity) e).getEyeLocation()), rtGiantMobPseudoEyesPos3.distance(((LivingEntity) e).getEyeLocation()), FluidCollisionMode.NEVER, true); - rtRes4 = giantMobLivingEntity.getWorld().rayTraceBlocks(rtGiantMobPseudoEyesPos4, genVec(rtGiantMobPseudoEyesPos4, ((LivingEntity) e).getEyeLocation()), rtGiantMobPseudoEyesPos4.distance(((LivingEntity) e).getEyeLocation()), FluidCollisionMode.NEVER, true); - rtRes5 = giantMobLivingEntity.getWorld().rayTraceBlocks(rtGiantMobPseudoEyesPos1, genVec(rtGiantMobPseudoEyesPos1, e.getLocation()), rtGiantMobPseudoEyesPos1.distance(e.getLocation()), FluidCollisionMode.NEVER, true); - rtRes6 = giantMobLivingEntity.getWorld().rayTraceBlocks(rtGiantMobPseudoEyesPos2, genVec(rtGiantMobPseudoEyesPos2, e.getLocation()), rtGiantMobPseudoEyesPos2.distance(e.getLocation()), FluidCollisionMode.NEVER, true); - rtRes7 = giantMobLivingEntity.getWorld().rayTraceBlocks(rtGiantMobPseudoEyesPos3, genVec(rtGiantMobPseudoEyesPos3, e.getLocation()), rtGiantMobPseudoEyesPos3.distance(e.getLocation()), FluidCollisionMode.NEVER, true); - rtRes8 = giantMobLivingEntity.getWorld().rayTraceBlocks(rtGiantMobPseudoEyesPos4, genVec(rtGiantMobPseudoEyesPos4, e.getLocation()), rtGiantMobPseudoEyesPos4.distance(e.getLocation()), FluidCollisionMode.NEVER, true); + rtRes1 = giantMobLivingEntity.getWorld().rayTraceBlocks(rtGiantMobPseudoEyesPos1, genVec(rtGiantMobPseudoEyesPos1, (livingEntity).getEyeLocation()), rtGiantMobPseudoEyesPos1.distance((livingEntity).getEyeLocation()), FluidCollisionMode.NEVER, true); + rtRes2 = giantMobLivingEntity.getWorld().rayTraceBlocks(rtGiantMobPseudoEyesPos2, genVec(rtGiantMobPseudoEyesPos2, (livingEntity).getEyeLocation()), rtGiantMobPseudoEyesPos2.distance((livingEntity).getEyeLocation()), FluidCollisionMode.NEVER, true); + rtRes3 = giantMobLivingEntity.getWorld().rayTraceBlocks(rtGiantMobPseudoEyesPos3, genVec(rtGiantMobPseudoEyesPos3, (livingEntity).getEyeLocation()), rtGiantMobPseudoEyesPos3.distance((livingEntity).getEyeLocation()), FluidCollisionMode.NEVER, true); + rtRes4 = giantMobLivingEntity.getWorld().rayTraceBlocks(rtGiantMobPseudoEyesPos4, genVec(rtGiantMobPseudoEyesPos4, (livingEntity).getEyeLocation()), rtGiantMobPseudoEyesPos4.distance((livingEntity).getEyeLocation()), FluidCollisionMode.NEVER, true); + rtRes5 = giantMobLivingEntity.getWorld().rayTraceBlocks(rtGiantMobPseudoEyesPos1, genVec(rtGiantMobPseudoEyesPos1, (livingEntity).getLocation()), rtGiantMobPseudoEyesPos1.distance((livingEntity).getLocation()), FluidCollisionMode.NEVER, true); + rtRes6 = giantMobLivingEntity.getWorld().rayTraceBlocks(rtGiantMobPseudoEyesPos2, genVec(rtGiantMobPseudoEyesPos2, (livingEntity).getLocation()), rtGiantMobPseudoEyesPos2.distance((livingEntity).getLocation()), FluidCollisionMode.NEVER, true); + rtRes7 = giantMobLivingEntity.getWorld().rayTraceBlocks(rtGiantMobPseudoEyesPos3, genVec(rtGiantMobPseudoEyesPos3, (livingEntity).getLocation()), rtGiantMobPseudoEyesPos3.distance((livingEntity).getLocation()), FluidCollisionMode.NEVER, true); + rtRes8 = giantMobLivingEntity.getWorld().rayTraceBlocks(rtGiantMobPseudoEyesPos4, genVec(rtGiantMobPseudoEyesPos4, (livingEntity).getLocation()), rtGiantMobPseudoEyesPos4.distance((livingEntity).getLocation()), FluidCollisionMode.NEVER, true); + //Если Сталин может из любой позиции поврота голвоы увидеть верх или низ цели, то эта цель вносится в список кандидатов if ((rtRes1 == null) || (rtRes2 == null) || (rtRes3 == null) || (rtRes4 == null) || (rtRes5 == null) || (rtRes6 == null) || (rtRes7 == null) || (rtRes8 == null)) { - if ((e instanceof Player) && (!(((Player) e).getGameMode() == GameMode.SPECTATOR)) ) { - listOfNearbyPlayers.add((LivingEntity) e); + if ((e instanceof Player player) && (player.getGameMode() != GameMode.SPECTATOR)) { + listOfNearbyPlayers.add(livingEntity); } else if (!(e instanceof Player)) { - listOfNearbyLivingEntities.add((LivingEntity) e); + listOfNearbyLivingEntities.add(livingEntity); } } } diff --git a/src/main/java/igorlink/donationexecutor/playersmanagement/StreamerPlayer.java b/src/main/java/igorlink/donationexecutor/playersmanagement/StreamerPlayer.java index 520407b..af9a138 100644 --- a/src/main/java/igorlink/donationexecutor/playersmanagement/StreamerPlayer.java +++ b/src/main/java/igorlink/donationexecutor/playersmanagement/StreamerPlayer.java @@ -34,7 +34,7 @@ public StreamerPlayer(@NotNull String _streamerPlayerName, DonationAlertsToken d String amount; for (String execName : Executor.executionsNamesList) { amount = config.getString("donation-amounts." + donationAlertsToken.getToken() + "." + streamerPlayerName + "." + execName); - if (!(amount==null)) { + if (amount != null) { listOfAmounts.put(amount, execName); } else { Utils.logToConsole("Сумма доната, необходимая для " + execName + " для стримера " + streamerPlayerName + " не найдена. Проверьте правильность заполнения файла конфигурации DonationExecutor.yml в папке с именем плагина."); diff --git a/src/main/java/igorlink/donationexecutor/playersmanagement/donationalerts/DonationAlertsToken.java b/src/main/java/igorlink/donationexecutor/playersmanagement/donationalerts/DonationAlertsToken.java index 8f5e221..ec1c149 100644 --- a/src/main/java/igorlink/donationexecutor/playersmanagement/donationalerts/DonationAlertsToken.java +++ b/src/main/java/igorlink/donationexecutor/playersmanagement/donationalerts/DonationAlertsToken.java @@ -37,7 +37,8 @@ public String getToken() { public void executeDonationsInQueues() { for (StreamerPlayer sp : listOfStreamerPlayers) { - if ( (Bukkit.getPlayerExact(sp.getName()) != null) && (!(Objects.requireNonNull(Bukkit.getPlayerExact(sp.getName())).isDead())) ) { + if ( Bukkit.getPlayerExact(sp.getName()) != null ) { + if (!(Bukkit.getPlayerExact(sp.getName()).isDead())) { Donation donation = sp.takeDonationFromQueue(); if (donation==null) { continue; @@ -67,7 +68,7 @@ public void addToDonationsQueue(Donation donation) { String execution; for (StreamerPlayer sp : listOfStreamerPlayers) { execution = sp.checkExecution(Utils.cutOffKopeykis(donation.getAmount())); - if (!(execution == null)) { + if (execution != null) { donation.setexecutionName(execution); sp.putDonationToQueue(donation); Utils.logToConsole("Донат от §b" + donation.getName() + "§f в размере §b" + donation.getAmount() + " руб.§f был обработан и отправлен в очередь на выполнение.");