idk if this will work
This commit is contained in:
Binary file not shown.
@@ -2,23 +2,25 @@ package com.thewrightserver.bigbooms;
|
|||||||
|
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.kyori.adventure.text.format.NamedTextColor;
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.entity.Creeper;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.Trident;
|
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.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.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 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 int creeperCounter = 0;
|
private final Random random = new Random();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
@@ -31,19 +33,17 @@ 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
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onCreeperPrime(ExplosionPrimeEvent event) {
|
public void onCreeperSpawn(CreatureSpawnEvent event) {
|
||||||
if (event.getEntity() instanceof Creeper creeper) {
|
if (event.getEntity() instanceof Creeper creeper) {
|
||||||
|
// 1 in 20 chance
|
||||||
|
if (random.nextInt(20) == 0) {
|
||||||
|
|
||||||
creeperCounter++;
|
// Mark as Red Creeper
|
||||||
|
|
||||||
// Every 20th Creeper becomes Red
|
|
||||||
if (creeperCounter % 20 == 0) {
|
|
||||||
|
|
||||||
// Mark it as Red Creeper
|
|
||||||
creeper.setMetadata("RedCreeper", new FixedMetadataValue(this, true));
|
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.customName(Component.text("Red Creeper").color(NamedTextColor.RED));
|
||||||
creeper.setCustomNameVisible(true);
|
creeper.setCustomNameVisible(true);
|
||||||
|
|
||||||
@@ -51,13 +51,20 @@ public final class Bigbooms extends JavaPlugin implements Listener {
|
|||||||
ItemStack trident = new ItemStack(Material.TRIDENT);
|
ItemStack trident = new ItemStack(Material.TRIDENT);
|
||||||
creeper.getEquipment().setItemInMainHand(trident);
|
creeper.getEquipment().setItemInMainHand(trident);
|
||||||
|
|
||||||
// Optional: make it powered for extra threat
|
// Optional: powered
|
||||||
creeper.setPowered(true);
|
creeper.setPowered(true);
|
||||||
|
|
||||||
// Start trident-throwing task
|
// Start trident-throwing task
|
||||||
startTridentTask(creeper);
|
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;
|
float newRadius = event.getRadius() * 10;
|
||||||
event.setRadius(newRadius);
|
event.setRadius(newRadius);
|
||||||
getLogger().info("Red Creeper exploded with radius " + newRadius);
|
getLogger().info("Red Creeper exploded with radius " + newRadius);
|
||||||
@@ -74,7 +81,6 @@ public final class Bigbooms extends JavaPlugin implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pick a random player
|
|
||||||
Player target = creeper.getWorld().getPlayers().stream().findAny().orElse(null);
|
Player target = creeper.getWorld().getPlayers().stream().findAny().orElse(null);
|
||||||
if (target != null) {
|
if (target != null) {
|
||||||
Trident tridentProjectile = creeper.getWorld().spawn(
|
Trident tridentProjectile = creeper.getWorld().spawn(
|
||||||
@@ -88,13 +94,13 @@ public final class Bigbooms extends JavaPlugin implements Listener {
|
|||||||
.normalize()
|
.normalize()
|
||||||
.multiply(1.5)
|
.multiply(1.5)
|
||||||
);
|
);
|
||||||
// Tag the trident so we can explode it
|
|
||||||
tridentProjectile.setMetadata("RedCreeperTrident", new FixedMetadataValue(Bigbooms.this, true));
|
tridentProjectile.setMetadata("RedCreeperTrident", new FixedMetadataValue(Bigbooms.this, true));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}.runTaskTimer(this, 0L, 40L); // every 2 seconds
|
}.runTaskTimer(this, 0L, 40L); // every 2 seconds
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Make tridents explode
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onTridentHit(ProjectileHitEvent event) {
|
public void onTridentHit(ProjectileHitEvent event) {
|
||||||
if (event.getEntity() instanceof Trident trident) {
|
if (event.getEntity() instanceof Trident trident) {
|
||||||
@@ -104,4 +110,6 @@ public final class Bigbooms extends JavaPlugin implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -2,3 +2,7 @@ name: Bigbooms
|
|||||||
version: '1.0-SNAPSHOT'
|
version: '1.0-SNAPSHOT'
|
||||||
main: com.thewrightserver.bigbooms.Bigbooms
|
main: com.thewrightserver.bigbooms.Bigbooms
|
||||||
api-version: '1.21'
|
api-version: '1.21'
|
||||||
|
commands:
|
||||||
|
spawnredcreeper:
|
||||||
|
description: Spawns a Red Creeper at your location
|
||||||
|
usage: /spawnredcreeper
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user