basic set every creeper to red test

This commit is contained in:
2025-09-04 21:55:31 -04:00
parent 2005cefc93
commit 3e72e7d152

View File

@@ -10,18 +10,13 @@ import org.bukkit.entity.Trident;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.event.entity.ExplosionPrimeEvent;
import org.bukkit.event.entity.ProjectileHitEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitRunnable;
import java.util.Random;
public final class Bigbooms extends JavaPlugin implements Listener {
private final Random random = new Random();
@Override
public void onEnable() {
Bukkit.getPluginManager().registerEvents(this, this);
@@ -33,45 +28,43 @@ public final class Bigbooms extends JavaPlugin implements Listener {
getLogger().info("BigBooms disabled!");
}
// Randomly assign some creepers as Red Creepers on spawn
// Make all creepers red on spawn
@EventHandler
public void onCreeperSpawn(CreatureSpawnEvent event) {
if (event.getEntity() instanceof Creeper creeper) {
// 1 in 20 chance
if (random.nextInt(20) == 0) {
// Mark as Red Creeper
creeper.setMetadata("RedCreeper", new FixedMetadataValue(this, true));
// Set red name
creeper.customName(Component.text("Red Creeper").color(NamedTextColor.RED));
creeper.setCustomNameVisible(true);
// Give a trident visually
ItemStack trident = new ItemStack(Material.TRIDENT);
creeper.getEquipment().setItemInMainHand(trident);
// Optional: powered
creeper.setPowered(true);
// Start trident-throwing task
startTridentTask(creeper);
}
makeRedCreeper(creeper);
}
}
// Increase explosion radius for Red Creepers
// Make tridents explode
@EventHandler
public void onExplosion(ExplosionPrimeEvent event) {
if (event.getEntity() instanceof Creeper creeper) {
if (creeper.hasMetadata("RedCreeper")) {
float newRadius = event.getRadius() * 10;
event.setRadius(newRadius);
getLogger().info("Red Creeper exploded with radius " + newRadius);
public void onTridentHit(ProjectileHitEvent event) {
if (event.getEntity() instanceof Trident trident) {
if (trident.hasMetadata("RedCreeperTrident")) {
trident.getWorld().createExplosion(trident.getLocation(), 5F, false, true);
trident.remove();
}
}
}
// Helper method to make a creeper red with a trident
private void makeRedCreeper(Creeper creeper) {
// Metadata so we know its a Red Creeper
creeper.setMetadata("RedCreeper", new FixedMetadataValue(this, true));
// Red name
creeper.customName(Component.text("Red Creeper").color(NamedTextColor.RED));
creeper.setCustomNameVisible(true);
// Give a trident
ItemStack trident = new ItemStack(Material.TRIDENT);
creeper.getEquipment().setItemInMainHand(trident);
// Start trident-throwing task
startTridentTask(creeper);
}
// Task to throw tridents at players
private void startTridentTask(Creeper creeper) {
new BukkitRunnable() {
@Override
@@ -99,17 +92,4 @@ public final class Bigbooms extends JavaPlugin implements Listener {
}
}.runTaskTimer(this, 0L, 40L); // every 2 seconds
}
// Make tridents explode
@EventHandler
public void onTridentHit(ProjectileHitEvent event) {
if (event.getEntity() instanceof Trident trident) {
if (trident.hasMetadata("RedCreeperTrident")) {
trident.getWorld().createExplosion(trident.getLocation(), 10F, false, true);
trident.remove();
}
}
}
}