Skip to content

Commit 0689860

Browse files
committed
Add option to ignore pilots
1 parent fb12216 commit 0689860

5 files changed

Lines changed: 41 additions & 28 deletions

File tree

src/main/java/com/snowleopard1863/APTurrets/TurretsMain.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ public void onEnable() {
4242
Config.RaycastRadians = getConfig().getDouble("RaycastAngle", 5.0D) / 180.0 * Math.PI;
4343
Config.RaycastBreakElytra = getConfig().getBoolean("RaycastBreakElytra", false);
4444
Config.RaycastRange = getConfig().getInt("RaycastRange", 160);
45+
Config.IgnorePilots = getConfig().getBoolean("IgnorePilots", true);
4546

4647

4748
if (getServer().getPluginManager().getPlugin("Vault") != null) {
@@ -76,7 +77,6 @@ public void onEnable() {
7677

7778
getServer().getPluginManager().registerEvents(this, this);
7879
getServer().getPluginManager().registerEvents(new EntityDamageEntityListener(), this);
79-
getServer().getPluginManager().registerEvents(new EntityDamageListener(), this);
8080
getServer().getPluginManager().registerEvents(new PlayerDeathListener(), this);
8181
getServer().getPluginManager().registerEvents(new PlayerInteractEntityListener(), this);
8282
getServer().getPluginManager().registerEvents(new PlayerInteractListener(), this);

src/main/java/com/snowleopard1863/APTurrets/config/Config.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public class Config {
1919
public static double RaycastRadians = 2.0 / 180.0 * Math.PI;
2020
public static boolean RaycastBreakElytra = false;
2121
public static int RaycastRange = 160;
22+
public static boolean IgnorePilots = true;
2223

2324
public static ItemStack TurretAmmo = new ItemStack(Material.ARROW, 1);
2425
}

src/main/java/com/snowleopard1863/APTurrets/listener/EntityDamageEntityListener.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,18 @@
11
package com.snowleopard1863.APTurrets.listener;
22

3+
import com.snowleopard1863.APTurrets.TurretsMain;
34
import com.snowleopard1863.APTurrets.config.Config;
5+
6+
import net.countercraft.movecraft.craft.CraftManager;
7+
import net.countercraft.movecraft.craft.PlayerCraft;
8+
import net.countercraft.movecraft.util.MathUtils;
9+
410
import org.bukkit.entity.Arrow;
11+
import org.bukkit.entity.Player;
512
import org.bukkit.event.EventHandler;
613
import org.bukkit.event.Listener;
714
import org.bukkit.event.entity.EntityDamageByEntityEvent;
15+
import org.bukkit.util.Vector;
816

917
public class EntityDamageEntityListener implements Listener {
1018
@EventHandler
@@ -17,9 +25,38 @@ public void onEntityDamageByEntityEvent(EntityDamageByEntityEvent event) {
1725

1826
if (event.getEntity().hasMetadata("BeamingRespawn")) {
1927
event.setCancelled(true);
28+
event.getDamager().setVelocity(new Vector());
29+
event.getDamager().remove();
2030
return;
2131
}
2232

2333
event.setDamage(Config.Damage);
34+
35+
// If a player gets hit while on a turret, demount them from the turret.
36+
if (!(event.getEntity() instanceof Player)) {
37+
return;
38+
}
39+
40+
Player player = (Player) event.getEntity();
41+
if (TurretsMain.getInstance().getTurretManager().isOnTurret(player)) {
42+
TurretsMain.getInstance().getTurretManager().demount(player, player.getLocation());
43+
}
44+
45+
// If it's a player, stop them from gliding and/or sprinting
46+
player.setGliding(false);
47+
player.setSprinting(false);
48+
49+
if (!Config.IgnorePilots)
50+
return;
51+
52+
PlayerCraft craft = CraftManager.getInstance().getCraftByPlayer(player);
53+
if (craft == null)
54+
return;
55+
if (!MathUtils.locIsNearCraftFast(craft, MathUtils.bukkit2MovecraftLoc(player.getLocation())))
56+
return;
57+
58+
event.setCancelled(true);
59+
event.getDamager().setVelocity(new Vector());
60+
event.getDamager().remove();
2461
}
2562
}

src/main/java/com/snowleopard1863/APTurrets/listener/EntityDamageListener.java

Lines changed: 0 additions & 26 deletions
This file was deleted.

src/main/resources/config.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,5 @@ DelayBetweenShots: 0.2 # Delay between each shot
1212
DoRaycast: false # Do raycast instant shots for elytra fliers
1313
RaycastAngle: 5.0 # Angle for the raycast cone of aiming
1414
RaycastBreakElytra: false # Break elytra on raycast?
15-
RaycastRange: 160 # Raycast max range
15+
RaycastRange: 160 # Raycast max range
16+
IgnorePilots: true # Ignore pilots on their crafts

0 commit comments

Comments
 (0)