Compare commits
8 Commits
03d01f9422
...
dev
| Author | SHA1 | Date | |
|---|---|---|---|
| b63cc95a81 | |||
| b56a3c8218 | |||
| 27fd92ff2c | |||
| 274ce9bb77 | |||
| 373cfa3b3a | |||
| 55972532a6 | |||
| e3117b1570 | |||
| a4254a94f4 |
+57
@@ -0,0 +1,57 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" output="target/classes" path="src/main/java">
|
||||
<attributes>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
<attribute name="optional" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
|
||||
<attributes>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
<attribute name="test" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
<attribute name="test" value="true"/>
|
||||
<attribute name="optional" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-21">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="src" path="target/generated-sources/annotations">
|
||||
<attributes>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
<attribute name="ignore_optional_problems" value="true"/>
|
||||
<attribute name="m2e-apt" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="src" output="target/test-classes" path="target/generated-test-sources/test-annotations">
|
||||
<attributes>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
<attribute name="ignore_optional_problems" value="true"/>
|
||||
<attribute name="m2e-apt" value="true"/>
|
||||
<attribute name="test" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="output" path="target/classes"/>
|
||||
</classpath>
|
||||
+22
-16
@@ -1,23 +1,29 @@
|
||||
name: Java CI with Maven
|
||||
|
||||
on: [push]
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- "main"
|
||||
pull_request:
|
||||
branches:
|
||||
- "*"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
java-version: '21'
|
||||
distribution: 'temurin'
|
||||
cache: maven
|
||||
- uses: stCarolas/setup-maven@v5
|
||||
- name: Build with Maven
|
||||
run: mvn -B package --file pom.xml
|
||||
- name: Release
|
||||
uses: akkuman/gitea-release-action@v1
|
||||
with:
|
||||
files: ./target/fantasysmp*.jar
|
||||
token: '${{secrets.RELEASE_TOKEN}}'
|
||||
- uses: actions/checkout@v4
|
||||
- name: Set up JDK 21
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
java-version: "21"
|
||||
distribution: "temurin"
|
||||
cache: maven
|
||||
- uses: stCarolas/setup-maven@v5
|
||||
- name: Build with Maven
|
||||
run: mvn -B package --file pom.xml
|
||||
- name: Release
|
||||
uses: akkuman/gitea-release-action@v1
|
||||
with:
|
||||
files: ./target/fantasysmp*.jar
|
||||
token: "${{secrets.RELEASE_TOKEN}}"
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>fantasysmp</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.m2e.core.maven2Builder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
||||
</natures>
|
||||
<filteredResources>
|
||||
<filter>
|
||||
<id>1756828330981</id>
|
||||
<name></name>
|
||||
<type>30</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.core.resources.regexFilterMatcher</id>
|
||||
<arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
</filteredResources>
|
||||
</projectDescription>
|
||||
@@ -0,0 +1,4 @@
|
||||
eclipse.preferences.version=1
|
||||
encoding//src/main/java=UTF-8
|
||||
encoding//src/main/resources=UTF-8
|
||||
encoding/<project>=UTF-8
|
||||
@@ -0,0 +1,2 @@
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.apt.aptEnabled=false
|
||||
@@ -0,0 +1,9 @@
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=21
|
||||
org.eclipse.jdt.core.compiler.compliance=21
|
||||
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
|
||||
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
|
||||
org.eclipse.jdt.core.compiler.processAnnotations=disabled
|
||||
org.eclipse.jdt.core.compiler.release=disabled
|
||||
org.eclipse.jdt.core.compiler.source=21
|
||||
@@ -0,0 +1,4 @@
|
||||
activeProfiles=
|
||||
eclipse.preferences.version=1
|
||||
resolveWorkspaceProjects=true
|
||||
version=1
|
||||
@@ -1,9 +1,6 @@
|
||||
package dev.zxq5.fantasysmp;
|
||||
|
||||
import dev.zxq5.fantasysmp.events.Chat;
|
||||
import dev.zxq5.fantasysmp.events.HereticWarner;
|
||||
import dev.zxq5.fantasysmp.events.StevenKillCheck;
|
||||
import dev.zxq5.fantasysmp.events.XrayDetector;
|
||||
import dev.zxq5.fantasysmp.events.*;
|
||||
import dev.zxq5.fantasysmp.groups.Commands;
|
||||
import dev.zxq5.fantasysmp.groups.Team;
|
||||
import dev.zxq5.fantasysmp.items.*;
|
||||
@@ -38,10 +35,13 @@ public final class Fantasysmp extends JavaPlugin {
|
||||
|
||||
getServer().getPluginManager().registerEvents(new Chat(), this);
|
||||
|
||||
getServer().getPluginManager().registerEvents(new StevenKillCheck(), this);
|
||||
HeresyChecker heresyChecker = new HeresyChecker();
|
||||
heresyChecker.scheduleHeresyChecker();
|
||||
getServer().getPluginManager().registerEvents(heresyChecker, this);
|
||||
|
||||
getServer().getPluginManager().registerEvents(new DeathMessageCustomiser(), this);
|
||||
|
||||
|
||||
HereticWarner hereticWarner = new HereticWarner();
|
||||
hereticWarner.checkHereticInventory();
|
||||
|
||||
XrayDetector xrayDetector = new XrayDetector();
|
||||
getServer().getPluginManager().registerEvents(xrayDetector, this);
|
||||
|
||||
@@ -4,17 +4,19 @@ import org.bukkit.ChatColor;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class Chat {
|
||||
public static String EVENTPREFIX = ChatColor.WHITE + "<" + ChatColor.AQUA + "Server" + ChatColor.WHITE + "> " + ChatColor.RESET;
|
||||
public static final String EVENT_PREFIX = ChatColor.WHITE + "<" + ChatColor.AQUA + "Server" + ChatColor.WHITE + "> " + ChatColor.RESET;
|
||||
|
||||
private Chat() {}
|
||||
|
||||
public static void success(Player player, String message) {
|
||||
player.sendMessage(EVENTPREFIX + ChatColor.GREEN + message);
|
||||
player.sendMessage(EVENT_PREFIX + ChatColor.GREEN + message);
|
||||
}
|
||||
|
||||
public static void error(Player player, String message) {
|
||||
player.sendMessage(EVENTPREFIX + ChatColor.RED + message);
|
||||
player.sendMessage(EVENT_PREFIX + ChatColor.RED + message);
|
||||
}
|
||||
|
||||
public static void info(Player player, String message) {
|
||||
player.sendMessage(EVENTPREFIX + message);
|
||||
player.sendMessage(EVENT_PREFIX + message);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
package dev.zxq5.fantasysmp.events;
|
||||
|
||||
import org.bukkit.damage.DamageType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class DeathMessageCustomiser implements Listener {
|
||||
private static final Random random = new Random();
|
||||
private static final String[] FALL_MESSAGES = new String[] {
|
||||
"%p Forgot to use chalk.",
|
||||
"%p Tried to free solo.",
|
||||
"%p Tried lead climbing.",
|
||||
"%p Discovered it was not in fact a jug.",
|
||||
"It was not a v1 in %p's gym.",
|
||||
"%p slipped on a sloper",
|
||||
"%p thought the ravine was a boulder problem",
|
||||
"%p's fingers were not cut out for crack climbing",
|
||||
"%p got a leg cramp",
|
||||
"%p forgot to check their harness",
|
||||
"%p didn't send the dyno",
|
||||
"%p tried to static a 4 block jump",
|
||||
"%p's climbing shoes didn't fit",
|
||||
"%p wasn't flexible enough"
|
||||
};
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerDeath(PlayerDeathEvent event) {
|
||||
int randomIndex = random.nextInt(FALL_MESSAGES.length);
|
||||
Player player = event.getEntity();
|
||||
|
||||
if (event.getDamageSource().getDamageType() == DamageType.FALL) {
|
||||
event.setDeathMessage(FALL_MESSAGES[randomIndex].replace("%p", player.getName()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,148 @@
|
||||
package dev.zxq5.fantasysmp.events;
|
||||
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.entity.Chicken;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Item;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.bukkit.event.entity.ProjectileHitEvent;
|
||||
import org.bukkit.event.player.PlayerItemConsumeEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.bukkit.Bukkit.*;
|
||||
|
||||
public class HeresyChecker implements Listener {
|
||||
private final HashMap<Player, Integer> heretics;
|
||||
private final HashMap<Player, Integer> formerHeretics;
|
||||
|
||||
public HeresyChecker() {
|
||||
this.heretics = new HashMap<>();
|
||||
this.formerHeretics = new HashMap<>();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
|
||||
if (event.getEntity() instanceof Chicken) {
|
||||
event.setCancelled(true);
|
||||
|
||||
if (event.getDamager() instanceof Player heretic) {
|
||||
executeHeretic(heretic);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onEntityDamage(EntityDamageEvent event) {
|
||||
if (event.getEntity() instanceof Chicken) {
|
||||
event.setCancelled(true);
|
||||
|
||||
if ( event.getDamageSource().getCausingEntity() instanceof Player heretic) {
|
||||
executeHeretic(heretic);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onProjectileHit(ProjectileHitEvent event) {
|
||||
if (event.getHitEntity() instanceof Chicken && event.getEntity().getShooter() instanceof Player heretic) {
|
||||
if (event.getEntity().getType() == EntityType.EGG) return;
|
||||
if (event.getEntity().getType() == EntityType.SNOWBALL) return;
|
||||
|
||||
event.setCancelled(true);
|
||||
executeHeretic(heretic);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onEntitySpawn(org.bukkit.event.entity.EntitySpawnEvent event) {
|
||||
if (event.getEntity() instanceof Chicken steven) {
|
||||
steven.setCustomName("Steven");
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerEatChicken(PlayerItemConsumeEvent event) {
|
||||
Material type = event.getItem().getType();
|
||||
|
||||
if (type == Material.COOKED_CHICKEN || type == Material.CHICKEN) {
|
||||
this.executeHeretic(event.getPlayer());
|
||||
}
|
||||
}
|
||||
|
||||
public void scheduleHeresyChecker() {
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(getPluginManager().getPlugin("fantasysmp"), this::checkHeretics, 0, 20);
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(getPluginManager().getPlugin("fantasysmp"), () -> {
|
||||
for (Player heretic : this.formerHeretics.keySet() ) {
|
||||
this.formerHeretics.put(heretic, this.formerHeretics.get(heretic) - 1);
|
||||
}
|
||||
}, 0, 200);
|
||||
}
|
||||
|
||||
public void checkHeretics() {
|
||||
for ( Player player : Bukkit.getServer().getOnlinePlayers() ) {
|
||||
if (player.getInventory().contains(Material.CHICKEN) || player.getInventory().contains(Material.COOKED_CHICKEN)) {
|
||||
if (!this.heretics.containsKey(player)) {
|
||||
this.heretics.put(player, this.formerHeretics.getOrDefault(player, 0));
|
||||
}
|
||||
} else if (this.heretics.containsKey(player)) {
|
||||
this.formerHeretics.put(player, this.heretics.get(player));
|
||||
this.heretics.remove(player);
|
||||
}
|
||||
}
|
||||
|
||||
for (Map.Entry<Player, Integer> entry : this.heretics.entrySet() ) {
|
||||
entry.setValue(entry.getValue() + 1);
|
||||
warnHeretic(entry.getKey());
|
||||
if ( entry.getValue() >= 5 ) {
|
||||
punishHeretic(entry.getKey());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void punishHeretic(Player heretic) {
|
||||
heretic.addPotionEffect(new PotionEffect(PotionEffectType.POISON, 20 * 2, 0));
|
||||
heretic.addPotionEffect(new PotionEffect(PotionEffectType.WITHER, 20 * 2, 0));
|
||||
heretic.addPotionEffect(new PotionEffect(PotionEffectType.SLOWNESS, 20 * 2, 3));
|
||||
heretic.addPotionEffect(new PotionEffect(PotionEffectType.MINING_FATIGUE, 20 * 2, 3));
|
||||
heretic.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 20 * 2, 3));
|
||||
heretic.addPotionEffect(new PotionEffect(PotionEffectType.DARKNESS, 20 * 2, 3));
|
||||
heretic.addPotionEffect(new PotionEffect(PotionEffectType.NAUSEA, 20 * 2, 3));
|
||||
heretic.addPotionEffect(new PotionEffect(PotionEffectType.HUNGER, 20 * 2, 3));
|
||||
heretic.addPotionEffect(new PotionEffect(PotionEffectType.WEAKNESS, 20 * 2, 3));
|
||||
heretic.addPotionEffect(new PotionEffect(PotionEffectType.INSTANT_DAMAGE, 20 * 2, 0));
|
||||
}
|
||||
|
||||
public void warnHeretic(Player heretic) {
|
||||
heretic.sendTitle(ChatColor.DARK_RED + "HOLDING CHICKEN IS HERESY!", ChatColor.YELLOW + "DROP IT IMMEDIATELY!", 5, 10, 5);
|
||||
}
|
||||
|
||||
public void executeHeretic(Player heretic) {
|
||||
Location coords = heretic.getLocation();
|
||||
World world = coords.getWorld();
|
||||
Plugin plugin = getPluginManager().getPlugin("fantasysmp");
|
||||
|
||||
heretic.sendTitle(ChatColor.DARK_RED + "HERESY!", ChatColor.YELLOW + "YOU SHALL PAY FOR YOUR CRIMES.", 5, 10, 5);
|
||||
Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 0);
|
||||
Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 1);
|
||||
Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 2);
|
||||
Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 3);
|
||||
Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 4);
|
||||
Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 5);
|
||||
Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 6);
|
||||
Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 7);
|
||||
Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 8);
|
||||
Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 9);
|
||||
Bukkit.getScheduler().runTaskLater(plugin, () -> heretic.setHealth(0), 10);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
package dev.zxq5.fantasysmp.events;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
import static org.bukkit.Bukkit.getPluginManager;
|
||||
|
||||
public class HereticWarner {
|
||||
int task;
|
||||
|
||||
public void checkHereticInventory() {
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(getPluginManager().getPlugin("fantasysmp"), () -> {
|
||||
for ( Player heretic : Bukkit.getServer().getOnlinePlayers() ) {
|
||||
if (heretic.getInventory().contains(Material.CHICKEN) || heretic.getInventory().contains(Material.COOKED_CHICKEN)) {
|
||||
warnHeretic(heretic);
|
||||
}
|
||||
}
|
||||
}, 0, 20);
|
||||
}
|
||||
|
||||
public void warnHeretic(Player heretic) {
|
||||
// apply poison to player
|
||||
heretic.sendMessage(ChatColor.DARK_RED + "HOLDING CHICKEN IS HERESY!");
|
||||
heretic.sendMessage(ChatColor.DARK_RED + "DROP IT IMMEDIATELY!");
|
||||
heretic.addPotionEffect(new PotionEffect(PotionEffectType.POISON, 20 * 2, 10));
|
||||
heretic.addPotionEffect(new PotionEffect(PotionEffectType.WITHER, 20 * 2, 10));
|
||||
heretic.addPotionEffect(new PotionEffect(PotionEffectType.SLOWNESS, 20 * 2, 3));
|
||||
heretic.addPotionEffect(new PotionEffect(PotionEffectType.MINING_FATIGUE, 20 * 2, 3));
|
||||
heretic.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 20 * 2, 3));
|
||||
heretic.addPotionEffect(new PotionEffect(PotionEffectType.DARKNESS, 20 * 2, 3));
|
||||
heretic.addPotionEffect(new PotionEffect(PotionEffectType.NAUSEA, 20 * 2, 3));
|
||||
heretic.addPotionEffect(new PotionEffect(PotionEffectType.HUNGER, 20 * 2, 3));
|
||||
heretic.addPotionEffect(new PotionEffect(PotionEffectType.WEAKNESS, 20 * 2, 3));
|
||||
heretic.addPotionEffect(new PotionEffect(PotionEffectType.INSTANT_DAMAGE, 20 * 2, 0));
|
||||
}
|
||||
}
|
||||
@@ -1,81 +0,0 @@
|
||||
package dev.zxq5.fantasysmp.events;
|
||||
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.entity.Chicken;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Wither;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.bukkit.event.entity.ProjectileHitEvent;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import static org.bukkit.Bukkit.*;
|
||||
|
||||
public class StevenKillCheck implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
|
||||
if (event.getEntity() instanceof Chicken) {
|
||||
event.setCancelled(true);
|
||||
|
||||
if (event.getDamager() instanceof Player player) {
|
||||
destroyHeretic(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onEntityDamage(EntityDamageEvent event) {
|
||||
if (event.getEntity() instanceof Chicken) {
|
||||
event.setCancelled(true);
|
||||
|
||||
if ( event.getDamageSource().getCausingEntity() instanceof Player player) {
|
||||
destroyHeretic(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onProjectileHit(ProjectileHitEvent event) {
|
||||
if (event.getHitEntity() instanceof Chicken && event.getEntity().getShooter() instanceof Player player) {
|
||||
if (event.getEntity().getType() == EntityType.EGG) return;
|
||||
if (event.getEntity().getType() == EntityType.SNOWBALL) return;
|
||||
|
||||
event.setCancelled(true);
|
||||
destroyHeretic(player);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onEntitySpawn(org.bukkit.event.entity.EntitySpawnEvent event) {
|
||||
if (event.getEntity() instanceof Chicken steven) {
|
||||
steven.setCustomName("Steven");
|
||||
}
|
||||
}
|
||||
|
||||
public void destroyHeretic(Player heretic) {
|
||||
Location coords = heretic.getLocation();
|
||||
World world = coords.getWorld();
|
||||
Plugin plugin = getPluginManager().getPlugin("fantasysmp");
|
||||
|
||||
broadcastMessage(ChatColor.DARK_RED + "HERESY!!!!");
|
||||
Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 0);
|
||||
Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 1);
|
||||
Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 2);
|
||||
Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 3);
|
||||
Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 4);
|
||||
Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 5);
|
||||
Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 6);
|
||||
Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 7);
|
||||
Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 8);
|
||||
Bukkit.getScheduler().runTaskLater(plugin, () -> world.strikeLightning(coords), 9);
|
||||
Bukkit.getScheduler().runTaskLater(plugin, () -> heretic.setHealth(0), 10);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
package dev.zxq5.fantasysmp.warps;
|
||||
|
||||
import dev.zxq5.fantasysmp.chatutils.Chat;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import static dev.zxq5.fantasysmp.chatutils.Chat.EVENTPREFIX;
|
||||
|
||||
/*
|
||||
* Commands:
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user