Marketplace/Gameplay/Starsmp

Starsmp

minecraftFreev1.0.0

Description

package me.enioxr.headstar;

import org.bukkit.*;
import org.bukkit.entity.Player;
import org.bukkit.event.*;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.inventory.PrepareItemCraftEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.*;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.inventory.meta.SkullMeta;
import org.bukkit.persistence.PersistentDataType;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitRunnable;

import java.util.*;

public class HeadStarPlugin extends JavaPlugin implements Listener {

private ItemStack star;
private final Map<UUID, Long> cooldown = new HashMap<>();

@Override
public void onEnable() {
Bukkit.getPluginManager().registerEvents(this, this);
star = createStar();
}

// ⭐ Create star
private ItemStack createStar() {
ItemStack item = new ItemStack(Material.NETHER_STAR);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("§6Creative Star");
meta.setLore(Arrays.asList("§7Gives creative mode for 5 seconds"));
item.setItemMeta(meta);
return item;
}

// 💀 Give custom head on kill
@EventHandler
public void onKill(PlayerDeathEvent e) {
Player killer = e.getEntity().getKiller();
Player victim = e.getEntity();

if (killer != null) {

if (killer.getGameMode() == GameMode.CREATIVE) return;

ItemStack head = new ItemStack(Material.PLAYER_HEAD);
SkullMeta meta = (SkullMeta) head.getItemMeta();

meta.setOwningPlayer(victim);
meta.setDisplayName("§6Soul Head");
meta.setLore(Arrays.asList("§7Obtained by killing a player"));

meta.getPersistentDataContainer().set(
new NamespacedKey(this, "soul_head"),
PersistentDataType.INTEGER,
1
);

head.setItemMeta(meta);
killer.getInventory().addItem(head);
}
}

// 🧪 Craft (only custom heads)
@EventHandler
public void onCraft(PrepareItemCraftEvent e) {
CraftingInventory inv = e.getInventory();
ItemStack[] matrix = inv.getMatrix();

int heads = 0;

for (ItemStack item : matrix) {
if (item != null && item.getType() == Material.PLAYER_HEAD) {

SkullMeta meta = (SkullMeta) item.getItemMeta();

if (meta != null && meta.getPersistentDataContainer().has(
new NamespacedKey(this, "soul_head"),
PersistentDataType.INTEGER
)) {
heads++;
}
}
}

if (heads == 4) {
inv.setResult(star);
} else {
inv.setResult(null);
}
}

// 🚀 Use star
@EventHandler
public void onUse(PlayerInteractEvent e) {
Player p = e.getPlayer();

if (e.getItem() == null) return;
if (!e.getItem().hasItemMeta()) return;

ItemStack item = e.getItem();

if (item.isSimilar(star)) {

// ⏳ Cooldown check (30 sec)
if (cooldown.containsKey(p.getUniqueId())) {
long timeLeft = (cooldown.get(p.getUniqueId()) - System.currentTimeMillis()) / 1000;

if (timeLeft > 0) {
p.sendMessage("§cYou must wait " + timeLeft + " seconds!");
return;
}
}

// Set cooldown
cooldown.put(p.getUniqueId(), System.currentTimeMillis() + (30 * 1000));

// 🎲 Random sounds
Sound[] sounds = {
Sound.ENTITY_ENDER_DRAGON_GROWL,
Sound.ENTITY_WITHER_SPAWN,
Sound.ENTITY_PLAYER_LEVELUP,
Sound.BLOCK_BEACON_ACTIVATE,
Sound.ENTITY_LIGHTNING_BOLT_THUNDER
};

Sound randomSound = sounds[new Random().nextInt(sounds.length)];

p.playSound(p.getLocation(), randomSound, 1.0f, 1.0f);

// ⚡ Lightning
p.getWorld().strikeLightningEffect(p.getLocation());

// ⭐ Creative mode
p.setGameMode(GameMode.CREATIVE);
p.sendMessage("§aCreative mode for 5 seconds!");

item.setAmount(item.getAmount() - 1);

new BukkitRunnable() {
@Override
public void run() {
p.setGameMode(GameMode.SURVIVAL);
p.sendMessage("§cBack to survival!");
}
}.runTaskLater(this, 100);
}
}
}

Reviews (0)

No reviews yet

Be the first to leave a review!

AMIEL Roblox

Seller

AMIEL Roblox

0

downloads

Versionv1.0.0
Platformminecraft
Typespigot
Minecraft VersionMC 1.21
CategoryMinecraft Plugins > Gameplay
Published on21/03/2026
Last update21/04/2026
Free