idk if this will work

This commit is contained in:
2025-09-04 21:42:35 -04:00
parent dae6cb4009
commit 2005cefc93
5 changed files with 30 additions and 18 deletions

View File

@@ -2,23 +2,25 @@ package com.thewrightserver.bigbooms;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Creeper;
import org.bukkit.entity.Player;
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.Bukkit;
import org.bukkit.entity.Creeper;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.ExplosionPrimeEvent;
import org.bukkit.scheduler.BukkitRunnable;
import java.util.Random;
public final class Bigbooms extends JavaPlugin implements Listener {
private int creeperCounter = 0;
private final Random random = new Random();
@Override
public void onEnable() {
@@ -31,19 +33,17 @@ public final class Bigbooms extends JavaPlugin implements Listener {
getLogger().info("BigBooms disabled!");
}
// Randomly assign some creepers as Red Creepers on spawn
@EventHandler
public void onCreeperPrime(ExplosionPrimeEvent event) {
public void onCreeperSpawn(CreatureSpawnEvent event) {
if (event.getEntity() instanceof Creeper creeper) {
// 1 in 20 chance
if (random.nextInt(20) == 0) {
creeperCounter++;
// Every 20th Creeper becomes Red
if (creeperCounter % 20 == 0) {
// Mark it as Red Creeper
// Mark as Red Creeper
creeper.setMetadata("RedCreeper", new FixedMetadataValue(this, true));
// Set custom red name using Adventure Component
// Set red name
creeper.customName(Component.text("Red Creeper").color(NamedTextColor.RED));
creeper.setCustomNameVisible(true);
@@ -51,13 +51,20 @@ public final class Bigbooms extends JavaPlugin implements Listener {
ItemStack trident = new ItemStack(Material.TRIDENT);
creeper.getEquipment().setItemInMainHand(trident);
// Optional: make it powered for extra threat
// Optional: powered
creeper.setPowered(true);
// Start trident-throwing task
startTridentTask(creeper);
}
}
}
// Multiply explosion radius
// Increase explosion radius for Red Creepers
@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);
@@ -74,7 +81,6 @@ public final class Bigbooms extends JavaPlugin implements Listener {
return;
}
// Pick a random player
Player target = creeper.getWorld().getPlayers().stream().findAny().orElse(null);
if (target != null) {
Trident tridentProjectile = creeper.getWorld().spawn(
@@ -88,13 +94,13 @@ public final class Bigbooms extends JavaPlugin implements Listener {
.normalize()
.multiply(1.5)
);
// Tag the trident so we can explode it
tridentProjectile.setMetadata("RedCreeperTrident", new FixedMetadataValue(Bigbooms.this, true));
}
}
}.runTaskTimer(this, 0L, 40L); // every 2 seconds
}
// Make tridents explode
@EventHandler
public void onTridentHit(ProjectileHitEvent event) {
if (event.getEntity() instanceof Trident trident) {
@@ -104,4 +110,6 @@ public final class Bigbooms extends JavaPlugin implements Listener {
}
}
}
}

View File

@@ -2,3 +2,7 @@ name: Bigbooms
version: '1.0-SNAPSHOT'
main: com.thewrightserver.bigbooms.Bigbooms
api-version: '1.21'
commands:
spawnredcreeper:
description: Spawns a Red Creeper at your location
usage: /spawnredcreeper