Compare commits

..

6 Commits

Author SHA1 Message Date
383de955c3 basic set every creeper to red test 2025-09-04 21:55:49 -04:00
3e72e7d152 basic set every creeper to red test 2025-09-04 21:55:31 -04:00
2005cefc93 idk if this will work 2025-09-04 21:42:35 -04:00
dae6cb4009 red creeper with trident 2025-09-04 21:27:07 -04:00
2a6baf4ea9 Merge remote-tracking branch 'origin/main' 2025-09-04 21:17:03 -04:00
cbeb621af5 red creeper 2025-09-04 21:16:54 -04:00
6 changed files with 78 additions and 14 deletions

View File

@@ -1,31 +1,95 @@
package com.thewrightserver.bigbooms;
import org.bukkit.plugin.java.JavaPlugin;
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.ExplosionPrimeEvent;
import org.bukkit.event.entity.CreatureSpawnEvent;
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;
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!");
}
// Make all creepers red on spawn
@EventHandler
public void onCreeperPrime(ExplosionPrimeEvent event) {
if (event.getEntity() instanceof Creeper) {
float newRadius = event.getRadius() * 10;
event.setRadius(newRadius);
getLogger().info("Creeper explosion radius set to " + newRadius);
public void onCreeperSpawn(CreatureSpawnEvent event) {
if (event.getEntity() instanceof Creeper creeper) {
makeRedCreeper(creeper);
}
}
// Make tridents explode
@EventHandler
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
public void run() {
if (!creeper.isValid() || creeper.isDead() || !creeper.hasMetadata("RedCreeper")) {
cancel();
return;
}
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)
);
tridentProjectile.setMetadata("RedCreeperTrident", new FixedMetadataValue(Bigbooms.this, true));
}
}
}.runTaskTimer(this, 0L, 40L); // every 2 seconds
}
}

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

View File

@@ -1,4 +0,0 @@
name: Bigbooms
version: '1.0-SNAPSHOT'
main: com.thewrightserver.bigbooms.Bigbooms
api-version: '1.21'