mirror of
https://github.com/BentoBoxWorld/BentoBox.git
synced 2024-11-27 21:27:44 +01:00
Enables dragon to be summoned using /summon command
https://github.com/BentoBoxWorld/BentoBox/issues/522
This commit is contained in:
parent
179a71b548
commit
75c9f6fb2c
@ -2,13 +2,11 @@ package world.bentobox.bentobox.listeners;
|
|||||||
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.World.Environment;
|
import org.bukkit.World.Environment;
|
||||||
import org.bukkit.entity.EntityType;
|
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.block.BlockBreakEvent;
|
import org.bukkit.event.block.BlockBreakEvent;
|
||||||
import org.bukkit.event.block.BlockPlaceEvent;
|
import org.bukkit.event.block.BlockPlaceEvent;
|
||||||
import org.bukkit.event.entity.CreatureSpawnEvent;
|
|
||||||
import org.bukkit.event.world.ChunkLoadEvent;
|
import org.bukkit.event.world.ChunkLoadEvent;
|
||||||
|
|
||||||
import world.bentobox.bentobox.BentoBox;
|
import world.bentobox.bentobox.BentoBox;
|
||||||
@ -23,24 +21,6 @@ public class BlockEndDragon implements Listener {
|
|||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* This handles end dragon spawning prevention. Does not kill dragon because that generates random portal placement
|
|
||||||
*
|
|
||||||
* @param e - event
|
|
||||||
* @return true if dragon can spawn, false if not
|
|
||||||
*/
|
|
||||||
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
|
||||||
public boolean onDragonSpawn(CreatureSpawnEvent e) {
|
|
||||||
if (!e.getEntityType().equals(EntityType.ENDER_DRAGON) || plugin.getIWM().isDragonSpawn(e.getEntity().getWorld())) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
e.getEntity().setHealth(0);
|
|
||||||
e.getEntity().remove();
|
|
||||||
e.setCancelled(true);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This listener moves the end exit island high up in the sky
|
* This listener moves the end exit island high up in the sky
|
||||||
* @param e - event
|
* @param e - event
|
||||||
|
@ -1,96 +0,0 @@
|
|||||||
package world.bentobox.bentobox.listeners;
|
|
||||||
|
|
||||||
import static org.junit.Assert.assertFalse;
|
|
||||||
import static org.junit.Assert.assertNotNull;
|
|
||||||
import static org.junit.Assert.assertTrue;
|
|
||||||
import static org.mockito.Mockito.mock;
|
|
||||||
import static org.mockito.Mockito.when;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.entity.EntityType;
|
|
||||||
import org.bukkit.entity.LivingEntity;
|
|
||||||
import org.bukkit.event.entity.CreatureSpawnEvent;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
import org.mockito.Mockito;
|
|
||||||
import org.powermock.core.classloader.annotations.PrepareForTest;
|
|
||||||
import org.powermock.modules.junit4.PowerMockRunner;
|
|
||||||
|
|
||||||
import world.bentobox.bentobox.BentoBox;
|
|
||||||
import world.bentobox.bentobox.api.user.User;
|
|
||||||
import world.bentobox.bentobox.managers.IslandWorldManager;
|
|
||||||
import world.bentobox.bentobox.util.Util;
|
|
||||||
|
|
||||||
@RunWith(PowerMockRunner.class)
|
|
||||||
@PrepareForTest({Bukkit.class, BentoBox.class, User.class, Util.class })
|
|
||||||
public class BlockEndDragonTest {
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testBlockEndDragon() {
|
|
||||||
BentoBox plugin = mock(BentoBox.class);
|
|
||||||
assertNotNull(new BlockEndDragon(plugin));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testOnDragonSpawnWrongEntityOkayToSpawn() {
|
|
||||||
LivingEntity le = mock(LivingEntity.class);
|
|
||||||
when(le.getType()).thenReturn(EntityType.AREA_EFFECT_CLOUD);
|
|
||||||
CreatureSpawnEvent event = new CreatureSpawnEvent(le, null);
|
|
||||||
BentoBox plugin = mock(BentoBox.class);
|
|
||||||
IslandWorldManager iwm = mock(IslandWorldManager.class);
|
|
||||||
when(plugin.getIWM()).thenReturn(iwm);
|
|
||||||
// allow dragon spawn
|
|
||||||
when(iwm.isDragonSpawn(Mockito.any())).thenReturn(true);
|
|
||||||
BlockEndDragon bed = new BlockEndDragon(plugin);
|
|
||||||
assertTrue(bed.onDragonSpawn(event));
|
|
||||||
assertFalse(event.isCancelled());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testOnDragonSpawnWrongEntityNoDragonSpawn() {
|
|
||||||
LivingEntity le = mock(LivingEntity.class);
|
|
||||||
when(le.getType()).thenReturn(EntityType.AREA_EFFECT_CLOUD);
|
|
||||||
CreatureSpawnEvent event = new CreatureSpawnEvent(le, null);
|
|
||||||
BentoBox plugin = mock(BentoBox.class);
|
|
||||||
IslandWorldManager iwm = mock(IslandWorldManager.class);
|
|
||||||
when(plugin.getIWM()).thenReturn(iwm);
|
|
||||||
// allow dragon spawn
|
|
||||||
when(iwm.isDragonSpawn(Mockito.any())).thenReturn(false);
|
|
||||||
BlockEndDragon bed = new BlockEndDragon(plugin);
|
|
||||||
assertTrue(bed.onDragonSpawn(event));
|
|
||||||
assertFalse(event.isCancelled());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testOnDragonSpawnRightEntityOkayToSpawn() {
|
|
||||||
LivingEntity le = mock(LivingEntity.class);
|
|
||||||
when(le.getType()).thenReturn(EntityType.ENDER_DRAGON);
|
|
||||||
CreatureSpawnEvent event = new CreatureSpawnEvent(le, null);
|
|
||||||
BentoBox plugin = mock(BentoBox.class);
|
|
||||||
IslandWorldManager iwm = mock(IslandWorldManager.class);
|
|
||||||
when(plugin.getIWM()).thenReturn(iwm);
|
|
||||||
// allow dragon spawn
|
|
||||||
when(iwm.isDragonSpawn(Mockito.any())).thenReturn(true);
|
|
||||||
BlockEndDragon bed = new BlockEndDragon(plugin);
|
|
||||||
assertTrue(bed.onDragonSpawn(event));
|
|
||||||
assertFalse(event.isCancelled());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testOnDragonSpawnRightEntityNotOkayToSpawn() {
|
|
||||||
LivingEntity le = mock(LivingEntity.class);
|
|
||||||
when(le.getType()).thenReturn(EntityType.ENDER_DRAGON);
|
|
||||||
CreatureSpawnEvent event = new CreatureSpawnEvent(le, null);
|
|
||||||
BentoBox plugin = mock(BentoBox.class);
|
|
||||||
IslandWorldManager iwm = mock(IslandWorldManager.class);
|
|
||||||
when(plugin.getIWM()).thenReturn(iwm);
|
|
||||||
// allow dragon spawn
|
|
||||||
when(iwm.isDragonSpawn(Mockito.any())).thenReturn(false);
|
|
||||||
BlockEndDragon bed = new BlockEndDragon(plugin);
|
|
||||||
assertFalse(bed.onDragonSpawn(event));
|
|
||||||
Mockito.verify(le).remove();
|
|
||||||
Mockito.verify(le).setHealth(0);
|
|
||||||
assertTrue(event.isCancelled());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user