Initial commit
This commit is contained in:
30
src/main/java/eu/mhsl/minecraft/BabyCreeper.java
Normal file
30
src/main/java/eu/mhsl/minecraft/BabyCreeper.java
Normal file
@@ -0,0 +1,30 @@
|
||||
package eu.mhsl.minecraft;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public final class BabyCreeper extends JavaPlugin {
|
||||
@NotNull
|
||||
public static final NamespacedKey babyCreeper = NamespacedKey.fromString("babycreeper");
|
||||
|
||||
public static ConfigurationSection config;
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
saveResource("config.yml", false);
|
||||
reloadConfig();
|
||||
config = getConfig().getConfigurationSection("babyCreepers");
|
||||
if(config == null) throw new IllegalStateException("Could not load config. Root element 'babyCreepers' is missing!");
|
||||
|
||||
if(!config.getBoolean("enabled", true)) return;
|
||||
Bukkit.getPluginManager().registerEvents(new BabyCreeperListener(), this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
Bukkit.getScheduler().cancelTasks(this);
|
||||
}
|
||||
}
|
||||
57
src/main/java/eu/mhsl/minecraft/BabyCreeperListener.java
Normal file
57
src/main/java/eu/mhsl/minecraft/BabyCreeperListener.java
Normal file
@@ -0,0 +1,57 @@
|
||||
package eu.mhsl.minecraft;
|
||||
|
||||
import org.bukkit.attribute.Attribute;
|
||||
import org.bukkit.attribute.AttributeInstance;
|
||||
import org.bukkit.entity.Creeper;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.WindCharge;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.CreatureSpawnEvent;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.event.entity.EntityExplodeEvent;
|
||||
import org.bukkit.persistence.PersistentDataType;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
|
||||
public class BabyCreeperListener implements Listener {
|
||||
@EventHandler
|
||||
public void onCreeperSpawn(CreatureSpawnEvent event) {
|
||||
if(!event.getEntity().getType().equals(EntityType.CREEPER)) return;
|
||||
// if(ThreadLocalRandom.current().nextDouble() > BabyCreeper.config.getDouble("spawnProbability", 0.1)) return;
|
||||
|
||||
Creeper creeper = (Creeper) event.getEntity();
|
||||
creeper.getPersistentDataContainer().set(BabyCreeper.babyCreeper, PersistentDataType.BOOLEAN, true);
|
||||
AttributeInstance scaleAttribute = Objects.requireNonNull(creeper.getAttribute(Attribute.SCALE), "Could not find scale attribute for Entity");
|
||||
AttributeInstance speedAttribute = Objects.requireNonNull(creeper.getAttribute(Attribute.MOVEMENT_SPEED), "Could not find speed attribute for Entity");
|
||||
scaleAttribute.setBaseValue(BabyCreeper.config.getDouble("size", 0.5));
|
||||
speedAttribute.setBaseValue(BabyCreeper.config.getDouble("speed", 0.5));
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onCreeperExplode(EntityExplodeEvent event) {
|
||||
if(!event.getEntity().getType().equals(EntityType.CREEPER)) return;
|
||||
Creeper creeper = (Creeper) event.getEntity();
|
||||
if(!creeper.getPersistentDataContainer().has(BabyCreeper.babyCreeper, PersistentDataType.BOOLEAN)) return;
|
||||
|
||||
event.setCancelled(true);
|
||||
creeper.getLocation().createExplosion(creeper, 2, false, false);
|
||||
|
||||
// // WindCharge windCharge = creeper.getLocation().getWorld().spawn(creeper.getLocation(), WindCharge.class);
|
||||
// windCharge.setVelocity(new Vector(0, -100, 0));
|
||||
// windCharge.setInvulnerable(true);
|
||||
// windCharge.setGravity(false);
|
||||
// windCharge.setInvisible(true);
|
||||
// windCharge.setVisibleByDefault(false);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onCreeperDamage(EntityDamageByEntityEvent event) {
|
||||
if(!event.getDamager().getType().equals(EntityType.CREEPER)) return;
|
||||
Creeper creeper = (Creeper) event.getDamager();
|
||||
if(!creeper.getPersistentDataContainer().has(BabyCreeper.babyCreeper, PersistentDataType.BOOLEAN)) return;
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
5
src/main/resources/config.yml
Normal file
5
src/main/resources/config.yml
Normal file
@@ -0,0 +1,5 @@
|
||||
babyCreepers:
|
||||
enabled: true
|
||||
spawnProbability: 0.1
|
||||
size: 0.5
|
||||
speed: 0.3
|
||||
7
src/main/resources/plugin.yml
Normal file
7
src/main/resources/plugin.yml
Normal file
@@ -0,0 +1,7 @@
|
||||
name: BabyCreeper
|
||||
version: '1.0-SNAPSHOT'
|
||||
main: eu.mhsl.minecraft.BabyCreeper
|
||||
api-version: '1.21'
|
||||
authors: [ MineTec ]
|
||||
description: Hides Serverlist-Ping information
|
||||
website: mhsl.eu
|
||||
Reference in New Issue
Block a user