Breaking boats/minecarts is now handled by their respective flags
Fixes https://github.com/BentoBoxWorld/BentoBox/issues/1430 Improved description for MINECART and BOAT flags
This commit is contained in:
parent
35224ed664
commit
5e0e19a1be
|
@ -7,6 +7,7 @@ import org.bukkit.block.data.BlockData;
|
|||
import org.bukkit.entity.AbstractArrow;
|
||||
import org.bukkit.entity.ArmorStand;
|
||||
import org.bukkit.entity.EnderCrystal;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.ItemFrame;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Projectile;
|
||||
|
@ -107,7 +108,14 @@ public class BreakBlocksListener extends FlagListener {
|
|||
@EventHandler(priority = EventPriority.LOW, ignoreCancelled=true)
|
||||
public void onVehicleDamageEvent(VehicleDamageEvent e) {
|
||||
if (getIWM().inWorld(e.getVehicle().getLocation()) && e.getAttacker() instanceof Player) {
|
||||
checkIsland(e, (Player)e.getAttacker(), e.getVehicle().getLocation(), Flags.BREAK_BLOCKS);
|
||||
String vehicleType = e.getVehicle().getType().toString();
|
||||
if (e.getVehicle().getType().equals(EntityType.BOAT)) {
|
||||
checkIsland(e, (Player) e.getAttacker(), e.getVehicle().getLocation(), Flags.BOAT);
|
||||
} else if (vehicleType.contains("MINECART")) {
|
||||
checkIsland(e, (Player) e.getAttacker(), e.getVehicle().getLocation(), Flags.MINECART);
|
||||
} else {
|
||||
checkIsland(e, (Player) e.getAttacker(), e.getVehicle().getLocation(), Flags.BREAK_BLOCKS);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -708,7 +708,9 @@ protection:
|
|||
hint: "Bed use disabled"
|
||||
BOAT:
|
||||
name: "Boats"
|
||||
description: "Toggle boats interactions"
|
||||
description: |-
|
||||
Toggle placing, breaking and
|
||||
entering into boats.
|
||||
hint: "No boat interaction allowed"
|
||||
BREAK_BLOCKS:
|
||||
description: "Toggle breaking"
|
||||
|
@ -1021,7 +1023,9 @@ protection:
|
|||
hint: "Milking cows disabled"
|
||||
MINECART:
|
||||
name: "Minecarts"
|
||||
description: "Toggle minecart interactions"
|
||||
description: |-
|
||||
Toggle placing, breaking and
|
||||
entering into minecarts.
|
||||
hint: "Minecart interaction disabled"
|
||||
MONSTER_NATURAL_SPAWN:
|
||||
description: "Toggle natural monster spawning"
|
||||
|
|
|
@ -31,6 +31,7 @@ import org.bukkit.entity.Arrow;
|
|||
import org.bukkit.entity.Creeper;
|
||||
import org.bukkit.entity.EnderCrystal;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Hanging;
|
||||
import org.bukkit.entity.ItemFrame;
|
||||
import org.bukkit.entity.Player;
|
||||
|
@ -401,6 +402,7 @@ public class BreakBlocksListenerTest {
|
|||
public void testOnVehicleDamageEventAllowed() {
|
||||
Vehicle vehicle = mock(Vehicle.class);
|
||||
when(vehicle.getLocation()).thenReturn(location);
|
||||
when(vehicle.getType()).thenReturn(EntityType.MINECART);
|
||||
VehicleDamageEvent e = new VehicleDamageEvent(vehicle, player, 10);
|
||||
bbl.onVehicleDamageEvent(e);
|
||||
assertFalse(e.isCancelled());
|
||||
|
@ -410,10 +412,41 @@ public class BreakBlocksListenerTest {
|
|||
* Test method for {@link world.bentobox.bentobox.listeners.flags.protection.BreakBlocksListener#onVehicleDamageEvent(org.bukkit.event.vehicle.VehicleDamageEvent)}.
|
||||
*/
|
||||
@Test
|
||||
public void testOnVehicleDamageEventNotAllowed() {
|
||||
public void testOnVehicleDamageEventNotAllowedMinecart() {
|
||||
when(island.isAllowed(any(), any())).thenReturn(false);
|
||||
Vehicle vehicle = mock(Vehicle.class);
|
||||
when(vehicle.getLocation()).thenReturn(location);
|
||||
when(vehicle.getType()).thenReturn(EntityType.MINECART);
|
||||
VehicleDamageEvent e = new VehicleDamageEvent(vehicle, player, 10);
|
||||
bbl.onVehicleDamageEvent(e);
|
||||
assertTrue(e.isCancelled());
|
||||
verify(notifier).notify(any(), eq("protection.protected"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test method for {@link world.bentobox.bentobox.listeners.flags.protection.BreakBlocksListener#onVehicleDamageEvent(org.bukkit.event.vehicle.VehicleDamageEvent)}.
|
||||
*/
|
||||
@Test
|
||||
public void testOnVehicleDamageEventNotAllowedBoat() {
|
||||
when(island.isAllowed(any(), any())).thenReturn(false);
|
||||
Vehicle vehicle = mock(Vehicle.class);
|
||||
when(vehicle.getLocation()).thenReturn(location);
|
||||
when(vehicle.getType()).thenReturn(EntityType.BOAT);
|
||||
VehicleDamageEvent e = new VehicleDamageEvent(vehicle, player, 10);
|
||||
bbl.onVehicleDamageEvent(e);
|
||||
assertTrue(e.isCancelled());
|
||||
verify(notifier).notify(any(), eq("protection.protected"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test method for {@link world.bentobox.bentobox.listeners.flags.protection.BreakBlocksListener#onVehicleDamageEvent(org.bukkit.event.vehicle.VehicleDamageEvent)}.
|
||||
*/
|
||||
@Test
|
||||
public void testOnVehicleDamageEventNotAllowedElse() {
|
||||
when(island.isAllowed(any(), any())).thenReturn(false);
|
||||
Vehicle vehicle = mock(Vehicle.class);
|
||||
when(vehicle.getLocation()).thenReturn(location);
|
||||
when(vehicle.getType()).thenReturn(EntityType.TRIDENT);
|
||||
VehicleDamageEvent e = new VehicleDamageEvent(vehicle, player, 10);
|
||||
bbl.onVehicleDamageEvent(e);
|
||||
assertTrue(e.isCancelled());
|
||||
|
|
Loading…
Reference in New Issue