diff --git a/Bigbooms/out/artifacts/Bigbooms_jar/Bigbooms.jar b/Bigbooms/out/artifacts/Bigbooms_jar/Bigbooms.jar index 39a63c7..fe59537 100644 Binary files a/Bigbooms/out/artifacts/Bigbooms_jar/Bigbooms.jar and b/Bigbooms/out/artifacts/Bigbooms_jar/Bigbooms.jar differ diff --git a/Bigbooms/src/main/java/com/thewrightserver/bigbooms/Bigbooms.java b/Bigbooms/src/main/java/com/thewrightserver/bigbooms/Bigbooms.java index be0cec4..31016b3 100644 --- a/Bigbooms/src/main/java/com/thewrightserver/bigbooms/Bigbooms.java +++ b/Bigbooms/src/main/java/com/thewrightserver/bigbooms/Bigbooms.java @@ -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 { } } } + + } \ No newline at end of file diff --git a/Bigbooms/src/main/resources/plugin.yml b/Bigbooms/src/main/resources/plugin.yml index d1dcd51..aa8a231 100644 --- a/Bigbooms/src/main/resources/plugin.yml +++ b/Bigbooms/src/main/resources/plugin.yml @@ -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 diff --git a/Bigbooms/target/classes/com/thewrightserver/bigbooms/Bigbooms$1.class b/Bigbooms/target/classes/com/thewrightserver/bigbooms/Bigbooms$1.class new file mode 100644 index 0000000..d08e5f4 Binary files /dev/null and b/Bigbooms/target/classes/com/thewrightserver/bigbooms/Bigbooms$1.class differ diff --git a/Bigbooms/target/classes/com/thewrightserver/bigbooms/Bigbooms.class b/Bigbooms/target/classes/com/thewrightserver/bigbooms/Bigbooms.class index 979b454..4a7ad5f 100644 Binary files a/Bigbooms/target/classes/com/thewrightserver/bigbooms/Bigbooms.class and b/Bigbooms/target/classes/com/thewrightserver/bigbooms/Bigbooms.class differ