Lkji3
Ньюби
- Баллы
- 1
- Имя в Minecraft
- Lkji3
Код:
plugin.yml
name: asd
version: '${version}'
main: org.lkji3.asd.Asd
api-version: '1.20'
commands:
many:
description: balans
usage: /many [player] [add/remove] [amount]
permission: poputka1.many
permissions:
poputka1.many:
description: /many
default: op
events:
- org.bukkit.event.block.BlockBreakEvent
- org.bukkit.event.entity
prices:
DIAMOND: 10
ZOMBIE: 5
Код:
asd.java
package org.lkji3.asd;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
public class Asd extends JavaPlugin implements Listener {
private Map<UUID, Integer> playerBalances = new HashMap<>();
@Override
public void onEnable() {
getServer().getPluginManager().registerEvents(this, this);
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (command.getName().equalsIgnoreCase("many")) {
if (args.length == 0) {
if (sender instanceof Player) {
Player player = (Player) sender;
int balance = getPlayerBalance(player.getUniqueId());
player.sendMessage("Ваш баланс: " + balance + " монет");
} else {
sender.sendMessage("Эта команда может быть выполнена только игроком.");
}
return true;
} else if (args.length == 3 && args[1].equalsIgnoreCase("add") && sender.isOp()) {
Player target = getServer().getPlayer(args[0]);
if (target == null) {
sender.sendMessage("игрок не найден.");
return true;
}
int amount;
try {
amount = Integer.parseInt(args[2]);
} catch (NumberFormatException e) {
sender.sendMessage("Недопустимое значение.");
return true;
}
if (amount < 0) {
sender.sendMessage("Количество монет не может быть отрицательным.");
return true;
}
int balance = getPlayerBalance(target.getUniqueId());
setPlayerBalance(target.getUniqueId(), balance + amount);
sender.sendMessage("Баланс игрока " + target.getName() + " успешно обновлен.");
return true;
} else if (args.length == 3 && args[1].equalsIgnoreCase("remove") && sender.isOp()) {
Player target = getServer().getPlayer(args[0]);
if (target == null) {
sender.sendMessage("игрок не найден.");
return true;
}
int amount;
try {
amount = Integer.parseInt(args[2]);
} catch (NumberFormatException e) {
sender.sendMessage("Недопустимое значение.");
return true;
}
if (amount < 0) {
sender.sendMessage("Количество монет не может быть отрицательным.");
return true;
}
int balance = getPlayerBalance(target.getUniqueId());
if (balance < amount) {
sender.sendMessage("У игрока недостаточно монет.");
return true;
}
setPlayerBalance(target.getUniqueId(), balance - amount);
sender.sendMessage("Баланс игрока " + target.getName() + " успешно обновлен.");
return true;
}
}
return false;
}
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
if (!playerBalances.containsKey(player.getUniqueId())) {
playerBalances.put(player.getUniqueId(), 0);
}
}
@EventHandler
public void onEntityDeath(EntityDeathEvent event) {
if (event.getEntity().getKiller() instanceof Player) {
Player player = event.getEntity().getKiller();
int amount = 0;
switch (event.getEntityType()) {
case ZOMBIE:
amount = 5;
break;
// добавить в будущем других мобов
}
if (amount > 0) {
int balance = getPlayerBalance(player.getUniqueId());
setPlayerBalance(player.getUniqueId(), balance + amount);
player.sendMessage("Вы получили " + amount + " монет за убийство враждебного существа.");
}
}
}
@EventHandler
public void onBlockBreak(BlockBreakEvent event) {
Player player = event.getPlayer();
int amount = 0;
switch (event.getBlock().getType()) {
case DIAMOND_ORE:
amount = 10;
break;
// другие дуры
}
if (amount > 0) {
int balance = getPlayerBalance(player.getUniqueId());
setPlayerBalance(player.getUniqueId(), balance + amount);
player.sendMessage("Вы получили " + amount + " монет за сломанный блок.");
}
}
private int getPlayerBalance(UUID playerUUID) {
return playerBalances.getOrDefault(playerUUID, 0);
}
private void setPlayerBalance(UUID playerUUID, int balance) {
playerBalances.put(playerUUID, balance);
}
}
ERROR]: Could not load 'plugins/asd.jar' in folder 'plugins'
org.bukkit.plugin.InvalidDescriptionException: Invalid plugin.yml
at org.bukkit.plugin.java.JavaPluginLoader.getPluginDescription(JavaPluginLoader.java:170) ~[forge-1.20.1-47.1.79-universal.jar%23257!/:?]
at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:147) ~[forge-1.20.1-47.1.79-universal.jar%23257!/:?]
at org.bukkit.craftbukkit.v1_20_R1.CraftServer.loadPlugins(CraftServer.java:435) ~[forge-1.20.1-47.1.79-universal.jar%23257!/:997de31d-ddc9a2dad-d2eba2c8-47.2.1]
at net.minecraft.server.dedicated.DedicatedServer.m_7038_(DedicatedServer.java:211) ~[server-1.20.1-20230612.114412-srg.jar%23252!/:?]
at net.minecraft.server.MinecraftServer.m_130011_(MinecraftServer.java:850) ~[server-1.20.1-20230612.114412-srg.jar%23252!/:?]
at net.minecraft.server.MinecraftServer.m_206580_(MinecraftServer.java:281) ~[server-1.20.1-20230612.114412-srg.jar%23252!/:?]
at java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: java.io.FileNotFoundException: Jar does not contain plugin.yml
... 7 more
