Skip to content

Commit

Permalink
Версия 0.3.2
Browse files Browse the repository at this point in the history
- Добавлена возможность призывать Некоглая
- Добавление заготовок для обновления системы исполнения команд для более четкой структурированности (для конечного пользователя заметно не будет)
  • Loading branch information
link1107 committed Feb 9, 2022
1 parent b5313d1 commit 77060ca
Show file tree
Hide file tree
Showing 13 changed files with 225 additions and 67 deletions.
23 changes: 21 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,31 @@
#### Как этим пользоваться?

1. Вам понадобится сервер версии 1.18.1 (другие версии не тестировались) на ядре Spigot / Paper.
2. Скачайте плагин, закиньте его в папку сервера "/plugins".
2. [Скачайте](https://github.com/link1107/DonationExecutor/releases) плагин (jar-файл), закиньте его в папку сервера "/plugins".
3. Запустите сервер, подождите полной загрузки, остановите сервер.
4. Откройте появившийся конфигурационный файл DonationExecutor.yml в папке "/plugins/DonationExecutor".
5. Заполните конфигурационный файл в соответствии с инструкциями в нем (особое внимание уделите токенам Donation Alerts, а также никнеймам стримеров). Сохраните изменения, закройте файл.
6. Запустите сервер. В случае корректно заполненного конфиг-файла, все должно работать.

7. Настройте список сумм донатов и вызываемых ими событий в конфигурационном файле DonationExecutor.yml в папке "/plugins/DonationExecutor"
8. Составьте список сумм и действий с кратким описанием и разместите его для зрителей в описании к стриму или на странице Donation Alerts.

#### Пример списка (можно разместить в описание под стримом или на странице донатов DonationAlerts):
🔴62 руб. - Насрать в свободные слоты инвентаря именным говном, но не более 10 стаков (на стаках с говном будет указано, что оно принадлежит вам, на основе вашего ника с DonationAlerts)
<br>🔴65 руб. - Выбить активный стак предметов из рук (если в момент доната в руке ничего нет, то ничего не произойдет)
<br>🔴66 руб. - Призвать Некоглая
<br>🔴67 руб. - Дать леща (небольшой толчок вперед с уменьшением хп на 1 сердечко)
<br>🔴82 руб. - Дать 4 куска хлеба
<br>🔴132 руб. - Дать 4 алмаза (будут подписаны с указанием вашего имени из доната DonationAlerts)
<br>🔴142 руб. - Наслать отряд НКВД из 3-х сотрудников
<br>🔴197 руб. - Заменяет 5 рандомных слотов в инвентаре на камни
<br>🔴202 руб. - Заспавнить крипера за спиной (но если прямо за спиной будут блоки, крипер может в них застрять)
<br>🔴252 руб. - Обратить всех прирученных мною животных против хозяина (кошки просто перестанут быть прирученными, волки еще и начнут нападать, на остальных животных не влияет)
<br>🔴501 руб. - Заспавнить гигантского Иосифа Сталина (преследует игроков и испепеляет все вокруг)
<br>🔴601 руб. - Оставляет полсердечка здоровья
<br>🔴2001 руб. - Очень большой взрыв (радиус 15) с задержкой в 3 секунды со мной в центре этого взрыва (центр взрыва находится там, где я нахожусь в момент взрыва), а также последующий пожар на затронутых блоках.
<br>🔴2011 руб. - Дать целый стак алмазов<br>
<i>НЕ ЗАБУДЬТЕ ИЗМЕНИТЬ ЦЕНЫ НА ВАШИ!</i>
<br><br>

#### Это плагин или мод?

Expand Down
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@

<groupId>IgorLink</groupId>
<artifactId>DonationExecutor</artifactId>
<version>1.0-SNAPSHOT</version>
<version>0.3.2-SNAPSHOT</version>
<packaging>jar</packaging>

<name>DonationExecutor</name>

<description>Executes donations</description>
<properties>
<java.version>1.8</java.version>
<java.version>17</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

Expand Down
3 changes: 3 additions & 0 deletions src/main/java/igorlink/donationexecutor/DonationExecutor.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package igorlink.donationexecutor;

import igorlink.command.DonationExecutorCommand;
import igorlink.donationexecutor.executionsstaff.executionsmanagement.executions.inventory.ShitToInventory;
import igorlink.donationexecutor.executionsstaff.giantmobs.GiantMobManager;
import igorlink.donationexecutor.playersmanagement.StreamerPlayersManager;
import igorlink.service.MainConfig;
Expand Down Expand Up @@ -30,6 +31,8 @@ public void onEnable() {
new DonationExecutorCommand();
}

ShitToInventory shitCommand = new ShitToInventory();
logToConsole(shitCommand.getName());
Bukkit.getPluginManager().registerEvents(new GeneralEventListener(),this);

}
Expand Down
86 changes: 55 additions & 31 deletions src/main/java/igorlink/donationexecutor/Executor.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
package igorlink.donationexecutor;
import igorlink.donationexecutor.executionsstaff.executionsmanagement.executions.AbstractExecution;
import igorlink.service.MainConfig;
import org.bukkit.*;
import org.bukkit.attribute.Attribute;
Expand All @@ -18,28 +19,33 @@ public class Executor {
public static String nameOfSecondStreamerPlayer;
public static List<String> executionsNamesList = new ArrayList<>(Arrays.asList("ShitToInventory", "Lesch", "DropActiveItem",
"PowerKick", "ClearLastDeathDrop", "SpawnCreeper", "GiveDiamonds", "GiveStackOfDiamonds", "GiveBread",
"CallNKVD", "CallStalin", "RandomChange", "TamedBecomesEnemies", "HalfHeart", "BigBoom"));
"CallNKVD", "CallStalin", "RandomChange", "TamedBecomesEnemies", "HalfHeart", "BigBoom", "Nekoglai"));


public static void DoExecute(CommandSender sender, String streamerName, String donationUsername, String fullDonationAmount, String donationMessage, String executionName) {

//Если имя донатера не указано - устанавливаем в качестве имени "Кто-то"
String _donationUsername;
if (donationUsername.equals("")) {
_donationUsername = "Кто-то";
} else {
_donationUsername = donationUsername;
}
public static void DoExecute(CommandSender sender, String streamerName, String donationUsername, String fullDonationAmount, String donationMessage, String executionName) {

Player streamerPlayer = getPlayerExact(streamerName);
Boolean canContinue = true;
//Определяем игрока (если он оффлайн - не выполняем донат и пишем об этом в консоль), а также определяем мир, местоположение и направление игрока
Player streamerPlayer = getPlayerExact(streamerName);
if (streamerPlayer == null) {
canContinue = false;
} else if (streamerPlayer.isDead()) {
canContinue = false;
}

//Если имя донатера не указано - устанавливаем в качестве имени "Кто-то"
String validDonationUsername;
if (donationUsername.equals("")) {
validDonationUsername = "Донатер";
} else if (!isBlackListed(donationUsername)){
validDonationUsername = donationUsername;
} else {
validDonationUsername = "Донатер";
streamerPlayer.sendActionBar("НИКНЕЙМ ДОНАТЕРА БЫЛ СКРЫТ");
}


if (!canContinue) {
logToConsole("Донат от §b" + donationUsername + " §f в размере §b" + fullDonationAmount + "§f выполнен из-за того, что целевой стример был недоступен.");
return;
Expand All @@ -49,53 +55,56 @@ public static void DoExecute(CommandSender sender, String streamerName, String d
World world = streamerPlayer.getWorld();
Vector direction = streamerPlayerLocation.getDirection();

//streamerPlayer.sendActionBar(donationMessage);


switch (executionName) {
case "ShitToInventory":
shitToInventory(streamerPlayer, donationUsername);
shitToInventory(streamerPlayer, validDonationUsername);
break;
case "Lesch":
lesch(streamerPlayer, donationUsername);
lesch(streamerPlayer, validDonationUsername);
break;
case "DropActiveItem":
dropActiveItem(streamerPlayer, donationUsername);
dropActiveItem(streamerPlayer, validDonationUsername);
break;
case "PowerKick":
powerKick(streamerPlayer, donationUsername);
powerKick(streamerPlayer, validDonationUsername);
break;
case "ClearLastDeathDrop":
clearLastDeathDrop(streamerPlayer, donationUsername);
clearLastDeathDrop(streamerPlayer, validDonationUsername);
break;
case "SpawnCreeper":
spawnCreeper(streamerPlayer, donationUsername);
spawnCreeper(streamerPlayer, validDonationUsername);
break;
case "GiveDiamonds":
giveDiamonds(streamerPlayer, donationUsername);
giveDiamonds(streamerPlayer, validDonationUsername);
break;
case "GiveStackOfDiamonds":
giveStackOfDiamonds(streamerPlayer, donationUsername);
giveStackOfDiamonds(streamerPlayer, validDonationUsername);
break;
case "GiveBread":
giveBread(streamerPlayer, donationUsername);
giveBread(streamerPlayer, validDonationUsername);
break;
case "CallNKVD":
callNKVD(streamerPlayer, donationUsername);
callNKVD(streamerPlayer, validDonationUsername);
break;
case "CallStalin":
callStalin(streamerPlayer, donationUsername);
callStalin(streamerPlayer, validDonationUsername);
break;
case "RandomChange":
randomChange(streamerPlayer, donationUsername);
randomChange(streamerPlayer, validDonationUsername);
break;
case "TamedBecomesEnemies":
tamedBecomesEnemies(streamerPlayer, donationUsername);
tamedBecomesEnemies(streamerPlayer, validDonationUsername);
break;
case "HalfHeart":
halfHeart(streamerPlayer, donationUsername);
halfHeart(streamerPlayer, validDonationUsername);
break;
case "BigBoom":
bigBoom(streamerPlayer, donationUsername);
bigBoom(streamerPlayer, validDonationUsername);
break;
case "Nekoglai":
nekoglai(streamerPlayer, validDonationUsername);
break;
}

Expand Down Expand Up @@ -123,7 +132,7 @@ public static void dropActiveItem (Player player, String donationUsername) {
announce(donationUsername, "безуспешно пытался выбить у тебя предмет из рук", "безуспешно пытался выбить предмет из рук", player, true);
} else {
announce(donationUsername, "выбил у тебя предмет из рук", "выбил предмет из рук", player, true);
((HumanEntity) player).dropItem(true);
player.dropItem(true);
player.updateInventory();
}
}
Expand All @@ -140,7 +149,22 @@ public static void lesch (Player player, String donationUsername) {
} else {
player.setHealth(0);
}
((org.bukkit.entity.Player) player).playSound(player.getLocation(), Sound.ENTITY_PLAYER_HURT, 1, 1);
player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_HURT, 1, 1);
}

public static void nekoglai (Player player, String donationUsername) {
Vector direction = player.getLocation().getDirection();
LivingEntity sheep;
announce(donationUsername, "призвал НЕКОГЛАЯ!", "призвал Некоглая", player, true);
direction.setY(0);
direction.normalize();
Location newloc = player.getLocation().clone();
Vector newdir = direction.clone().multiply(1.5);
newloc.add(newdir);
newloc.setDirection(player.getLocation().getDirection().clone().multiply(-1));
sheep = (LivingEntity) player.getWorld().spawnEntity(newloc, EntityType.SHEEP);
sheep.setCustomName("N3koglai");
((Sheep) sheep).setSheared(true);
}

public static void powerKick (Player player, String donationUsername) {
Expand All @@ -155,7 +179,7 @@ public static void powerKick (Player player, String donationUsername) {
} else {
player.setHealth(0);
}
((org.bukkit.entity.Player) player).playSound(player.getLocation(), Sound.ENTITY_PLAYER_HURT, 1, 1);
player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_HURT, 1, 1);
}

public static void clearLastDeathDrop (Player player, String donationUsername) {
Expand Down Expand Up @@ -197,7 +221,7 @@ public static void giveStackOfDiamonds (Player player, String donationUsername)
meta.setDisplayName("§bАлмаз");
meta.setLore(Arrays.asList("§7Эти алмазы подарил §f" + donationUsername));
itemStack.setItemMeta(meta);
Item diamonds = player.getWorld().dropItemNaturally(player.getLocation(), itemStack);
player.getWorld().dropItemNaturally(player.getLocation(), itemStack);
}

public static void giveBread (Player player, String donationUsername) {
Expand All @@ -217,7 +241,7 @@ public static void callNKVD (Player player, String donationUsername) {
announce(donationUsername, "хочет отправить тебя в ГУЛАГ!", "хочет отправить в ГУЛАГ", player, true);
direction.setY(0);
direction.normalize();
for (int i = 1; i <= 3; i++) {
for (int i = 1; i <= 1; i++) {
Location newloc = player.getLocation().clone();
Vector newdir = direction.clone();
newdir = newdir.rotateAroundY(1.5708 * i).multiply(2);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public void onComburst(EntityCombustEvent e){
@EventHandler
public void onJoin(PlayerJoinEvent e) {
if (MainConfig.isForceResourcePack()) {
e.getPlayer().setResourcePack("https://download.mc-packs.net/pack/4923efe27212858f64c3ba65ff4bd35a42dadfb0.zip", Utils.decodeUsingBigInteger("4923efe27212858f64c3ba65ff4bd35a42dadfb0"));
e.getPlayer().setResourcePack("https://download.mc-packs.net/pack/5cd9b26a954b46683eeea1b7df1cc0fbe136f79f.zip", Utils.decodeUsingBigInteger("5cd9b26a954b46683eeea1b7df1cc0fbe136f79f"));
}

if (MainConfig.isOptifineNotificationOn()) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package igorlink.donationexecutor.executionsstaff.executionsmanagement;

import igorlink.donationexecutor.executionsstaff.executionsmanagement.executions.AbstractExecution;
import igorlink.donationexecutor.executionsstaff.executionsmanagement.executions.inventory.ShitToInventory;

import java.util.ArrayList;
import java.util.List;

public class Executor {
private static List<AbstractExecution> listOfExecutions = new ArrayList<AbstractExecution>();

public Executor() {
new ShitToInventory();
}

public static void AddToList(AbstractExecution execution) {
listOfExecutions.add(execution);
}




}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package igorlink.donationexecutor.executionsstaff.executionsmanagement.executions;

import igorlink.donationexecutor.executionsstaff.executionsmanagement.Executor;
import org.bukkit.entity.Player;

public abstract class AbstractExecution {
private String execName;

public AbstractExecution() {
String className = this.getClass().getName();
String packageName = this.getClass().getPackageName() + ".";
className = className.replace(packageName, "");
execName = className;
Executor.AddToList(this);
}

public abstract Boolean execute(String donationUsername, Player player);

public String getName() {
return execName;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package igorlink.donationexecutor.executionsstaff.executionsmanagement.executions.inventory;

import igorlink.donationexecutor.executionsstaff.executionsmanagement.executions.AbstractExecution;
import org.bukkit.Material;
import org.bukkit.entity.HumanEntity;
import org.bukkit.entity.Player;

import static igorlink.service.Utils.announce;

public class DropActiveItem extends AbstractExecution {

@Override
public Boolean execute(String donationUsername, Player player) {
if (player.getEquipment().getItemInMainHand().getType() == Material.AIR) {
announce(donationUsername, "безуспешно пытался выбить у тебя предмет из рук", "безуспешно пытался выбить предмет из рук", player, true);
} else {
announce(donationUsername, "выбил у тебя предмет из рук", "выбил предмет из рук", player, true);
((HumanEntity) player).dropItem(true);
player.updateInventory();
}
return true;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package igorlink.donationexecutor.executionsstaff.executionsmanagement.executions.inventory;

import igorlink.donationexecutor.executionsstaff.executionsmanagement.executions.AbstractExecution;
import igorlink.service.MainConfig;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

import java.util.Arrays;

import static igorlink.service.Utils.announce;

public class ShitToInventory extends AbstractExecution {

@Override
public Boolean execute(String donationUsername, Player player) {
announce(donationUsername, "насрал тебе в инвентарь", "насрал в инвентарь", player, true);
Material itemType = Material.DIRT;
ItemStack itemStack = new ItemStack(itemType, 64);
ItemMeta meta = itemStack.getItemMeta();
meta.setDisplayName("§cГОВНО ОТ §f" + donationUsername.toUpperCase());
meta.setLore(Arrays.asList("§7Это говно ужасно вонюче и занимает много места"));
itemStack.setItemMeta(meta);
for (int i = 0; i < MainConfig.dirtAmount; i++) {
player.getInventory().addItem(itemStack);
}
return true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ public void call(Object... arg0) {
public void call(Object... arg0) {

JSONObject json = new JSONObject((String) arg0[0]);
//logToConsole((String) arg0[0]);
new BukkitRunnable() {
@Override
public void run() {
Expand Down
Loading

0 comments on commit 77060ca

Please sign in to comment.