diff --git a/Bigbooms/out/artifacts/Bigbooms_jar/Bigbooms.jar b/Bigbooms/out/artifacts/Bigbooms_jar/Bigbooms.jar index 1552e80..39a63c7 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 fd0aca3..be0cec4 100644 --- a/Bigbooms/src/main/java/com/thewrightserver/bigbooms/Bigbooms.java +++ b/Bigbooms/src/main/java/com/thewrightserver/bigbooms/Bigbooms.java @@ -1,12 +1,20 @@ package com.thewrightserver.bigbooms; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.entity.Trident; +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; public final class Bigbooms extends JavaPlugin implements Listener { @@ -15,12 +23,12 @@ public final class Bigbooms extends JavaPlugin implements Listener { @Override public void onEnable() { Bukkit.getPluginManager().registerEvents(this, this); - getLogger().info("BigBooms enabled! Creepers now explode 10x bigger."); + getLogger().info("BigBooms enabled!"); } @Override public void onDisable() { - getLogger().info("BigBooms disabled."); + getLogger().info("BigBooms disabled!"); } @EventHandler @@ -29,19 +37,71 @@ public final class Bigbooms extends JavaPlugin implements Listener { creeperCounter++; - // Every 20th creeper becomes Red + // Every 20th Creeper becomes Red if (creeperCounter % 20 == 0) { - // Set custom name using Adventure Components - creeper.customName(Component.text("Red Creeper")); - creeper.isCustomNameVisible(); + // Mark it as Red Creeper + creeper.setMetadata("RedCreeper", new FixedMetadataValue(this, true)); - // Multiply explosion + // Set custom red name using Adventure Component + 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: make it powered for extra threat + creeper.setPowered(true); + + // Start trident-throwing task + startTridentTask(creeper); + + // Multiply explosion radius float newRadius = event.getRadius() * 10; event.setRadius(newRadius); - getLogger().info("Red Creeper exploded with radius " + newRadius); } } } + + private void startTridentTask(Creeper creeper) { + new BukkitRunnable() { + @Override + public void run() { + if (!creeper.isValid() || creeper.isDead() || !creeper.hasMetadata("RedCreeper")) { + cancel(); + return; + } + + // Pick a random player + Player target = creeper.getWorld().getPlayers().stream().findAny().orElse(null); + if (target != null) { + Trident tridentProjectile = creeper.getWorld().spawn( + creeper.getLocation().add(0, 1, 0), + Trident.class + ); + tridentProjectile.setShooter(creeper); + tridentProjectile.setVelocity( + target.getLocation().toVector() + .subtract(creeper.getLocation().toVector()) + .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 + } + + @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(); + } + } + } } \ No newline at end of file diff --git a/Bigbooms/target/classes/com/thewrightserver/bigbooms/Bigbooms.class b/Bigbooms/target/classes/com/thewrightserver/bigbooms/Bigbooms.class index 04e7e21..979b454 100644 Binary files a/Bigbooms/target/classes/com/thewrightserver/bigbooms/Bigbooms.class and b/Bigbooms/target/classes/com/thewrightserver/bigbooms/Bigbooms.class differ