- Сообщения
- 82
Java:
package mc.qtnt;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.block.Block;
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.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.ArrayList;
import java.util.List;
public class Main extends JavaPlugin implements Listener {
private int tntAmount = 0;
@Override
public void onEnable() {
Bukkit.getPluginManager().registerEvents(this, this);
}
String prefix = ChatColor.YELLOW + "QTNT: ";
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (cmd.getName().equalsIgnoreCase("qtnt")) {
if (!sender.hasPermission("qtnt.give")) {
sender.sendMessage(prefix + ChatColor.RED + "У вас нет прав для выполнения этой команды!");
return true;
}
if (args.length < 2) {
sender.sendMessage(prefix + ChatColor.RED + "Использование: /qtnt <имя_игрока> <количество>.");
return true;
}
String playerName = args[0];
int amount;
try {
amount = Integer.parseInt(args[1]);
} catch (NumberFormatException e) {
sender.sendMessage(prefix + ChatColor.RED + "Использование: /qtnt <имя_игрока> <количество>.");
return true;
}
Player player = Bukkit.getPlayer(playerName);
if (player == null) {
sender.sendMessage(prefix + ChatColor.RED + "Игрок " + playerName + " не найден!");
return true;
}
// Создание ItemStack тнт с тегом контейнера
ItemStack tnt = new ItemStack(Material.TNT, amount);
ItemMeta tntMeta = tnt.getItemMeta();
List<String> lore = new ArrayList<String>();
lore.add(ChatColor.YELLOW + "" + ChatColor.ITALIC + "TNT TIER");
tntMeta.setLore(lore);
tnt.setItemMeta(tntMeta);
player.getInventory().addItem(tnt);
sender.sendMessage(prefix + ChatColor.GREEN + "Игроку " + playerName + " было выдано " + amount + " TNT!");
return true;
}
return false;
}
@EventHandler
public void onBlockBreak(BlockBreakEvent event) {
Block block = event.getBlock();
if (block.getType() == Material.OBSIDIAN) {
ItemStack item = event.getPlayer().getInventory().getItemInMainHand();
if (item != null && item.getType() == Material.TNT) {
ItemMeta meta = item.getItemMeta();
if (meta != null && meta.getLore() != null && meta.getLore().contains(ChatColor.YELLOW + "" + ChatColor.ITALIC + "TNT TIER")) {
// Если тнт имеет тег контейнера, то ломаем блок обсидиана
block.breakNaturally(item);
} else {
event.setCancelled(true);
event.getPlayer().sendMessage(prefix + ChatColor.RED + "Вы не можете ломать обсидиан с обычным TNT!");
}
}
}
}
}
Как заставить обсидиан ломаться только при взрыве тнт выданного с помощью команды /qtnt?
Последнее редактирование: