basic set every creeper to red test
This commit is contained in:
@@ -10,18 +10,13 @@ import org.bukkit.entity.Trident;
|
|||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.entity.CreatureSpawnEvent;
|
import org.bukkit.event.entity.CreatureSpawnEvent;
|
||||||
import org.bukkit.event.entity.ExplosionPrimeEvent;
|
|
||||||
import org.bukkit.event.entity.ProjectileHitEvent;
|
import org.bukkit.event.entity.ProjectileHitEvent;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.metadata.FixedMetadataValue;
|
import org.bukkit.metadata.FixedMetadataValue;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
|
||||||
import java.util.Random;
|
|
||||||
public final class Bigbooms extends JavaPlugin implements Listener {
|
public final class Bigbooms extends JavaPlugin implements Listener {
|
||||||
|
|
||||||
private final Random random = new Random();
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
Bukkit.getPluginManager().registerEvents(this, this);
|
Bukkit.getPluginManager().registerEvents(this, this);
|
||||||
@@ -33,45 +28,43 @@ public final class Bigbooms extends JavaPlugin implements Listener {
|
|||||||
getLogger().info("BigBooms disabled!");
|
getLogger().info("BigBooms disabled!");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Randomly assign some creepers as Red Creepers on spawn
|
// Make all creepers red on spawn
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onCreeperSpawn(CreatureSpawnEvent event) {
|
public void onCreeperSpawn(CreatureSpawnEvent event) {
|
||||||
if (event.getEntity() instanceof Creeper creeper) {
|
if (event.getEntity() instanceof Creeper creeper) {
|
||||||
// 1 in 20 chance
|
makeRedCreeper(creeper);
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Increase explosion radius for Red Creepers
|
// Make tridents explode
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onExplosion(ExplosionPrimeEvent event) {
|
public void onTridentHit(ProjectileHitEvent event) {
|
||||||
if (event.getEntity() instanceof Creeper creeper) {
|
if (event.getEntity() instanceof Trident trident) {
|
||||||
if (creeper.hasMetadata("RedCreeper")) {
|
if (trident.hasMetadata("RedCreeperTrident")) {
|
||||||
float newRadius = event.getRadius() * 10;
|
trident.getWorld().createExplosion(trident.getLocation(), 5F, false, true);
|
||||||
event.setRadius(newRadius);
|
trident.remove();
|
||||||
getLogger().info("Red Creeper exploded with radius " + newRadius);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Helper method to make a creeper red with a trident
|
||||||
|
private void makeRedCreeper(Creeper creeper) {
|
||||||
|
// Metadata so we know it’s 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) {
|
private void startTridentTask(Creeper creeper) {
|
||||||
new BukkitRunnable() {
|
new BukkitRunnable() {
|
||||||
@Override
|
@Override
|
||||||
@@ -99,17 +92,4 @@ public final class Bigbooms extends JavaPlugin implements Listener {
|
|||||||
}
|
}
|
||||||
}.runTaskTimer(this, 0L, 40L); // every 2 seconds
|
}.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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user