mirror of
https://github.com/2006-Scape/apollo.git
synced 2026-07-05 00:38:14 +00:00
Fix issue #142
Add unit test for MobRepository#remove(null) Add explicit null check Remove empty line, change useless exception message
This commit is contained in:
@@ -309,13 +309,12 @@ public final class World {
|
|||||||
* @param npc The npc.
|
* @param npc The npc.
|
||||||
*/
|
*/
|
||||||
public void unregister(final Npc npc) {
|
public void unregister(final Npc npc) {
|
||||||
if (npcRepository.remove(npc)) {
|
Preconditions.checkNotNull(npc, "Npc may not be null.");
|
||||||
Region region = regions.fromPosition(npc.getPosition());
|
|
||||||
|
|
||||||
region.removeEntity(npc);
|
Region region = regions.fromPosition(npc.getPosition());
|
||||||
} else {
|
region.removeEntity(npc);
|
||||||
logger.warning("Could not find npc " + npc + " to unregister!");
|
|
||||||
}
|
npcRepository.remove(npc);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -324,15 +323,14 @@ public final class World {
|
|||||||
* @param player The player.
|
* @param player The player.
|
||||||
*/
|
*/
|
||||||
public void unregister(final Player player) {
|
public void unregister(final Player player) {
|
||||||
if (playerRepository.remove(player)) {
|
Preconditions.checkNotNull(player, "Player may not be null.");
|
||||||
players.remove(NameUtil.encodeBase37(player.getUsername()));
|
players.remove(NameUtil.encodeBase37(player.getUsername()));
|
||||||
logger.info("Unregistered player: " + player + " [count=" + playerRepository.size() + "]");
|
|
||||||
|
|
||||||
Region region = regions.fromPosition(player.getPosition());
|
Region region = regions.fromPosition(player.getPosition());
|
||||||
region.removeEntity(player);
|
region.removeEntity(player);
|
||||||
} else {
|
|
||||||
logger.warning("Could not find player " + player + " to unregister!");
|
playerRepository.remove(player);
|
||||||
}
|
logger.info("Unregistered player: " + player + " [count=" + playerRepository.size() + "]");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import org.apollo.game.model.area.update.GroupableEntity;
|
|||||||
import org.apollo.game.model.area.update.UpdateOperation;
|
import org.apollo.game.model.area.update.UpdateOperation;
|
||||||
import org.apollo.game.model.entity.Entity;
|
import org.apollo.game.model.entity.Entity;
|
||||||
import org.apollo.game.model.entity.EntityType;
|
import org.apollo.game.model.entity.EntityType;
|
||||||
|
import org.apollo.game.model.entity.Mob;
|
||||||
import org.apollo.game.model.entity.obj.DynamicGameObject;
|
import org.apollo.game.model.entity.obj.DynamicGameObject;
|
||||||
|
|
||||||
import com.google.common.base.MoreObjects;
|
import com.google.common.base.MoreObjects;
|
||||||
|
|||||||
@@ -175,30 +175,27 @@ public final class MobRepository<T extends Mob> implements Iterable<T> {
|
|||||||
* Removes a Mob from the repository.
|
* Removes a Mob from the repository.
|
||||||
*
|
*
|
||||||
* @param mob The Mob to remove.
|
* @param mob The Mob to remove.
|
||||||
* @return {@code true} if the Mob was removed, {@code false} if not.
|
|
||||||
*/
|
*/
|
||||||
public boolean remove(T mob) {
|
public void remove(T mob) {
|
||||||
Preconditions.checkNotNull(mob);
|
Preconditions.checkNotNull(mob, "Mob may not be null.");
|
||||||
return remove(mob.getIndex());
|
remove(mob.getIndex());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes a Mob from the repository by the specified index.
|
* Removes a Mob from the repository by the specified index.
|
||||||
*
|
*
|
||||||
* @param index The index of the Mob to remove.
|
* @param index The index of the Mob to remove.
|
||||||
* @return {@code true} if the Mob at the specified index was removed otherwise {@code false}.
|
|
||||||
*/
|
*/
|
||||||
public boolean remove(int index) {
|
private void remove(int index) {
|
||||||
Mob mob = get(index);
|
Mob mob = get(index);
|
||||||
|
|
||||||
if (mob.getIndex() != index) {
|
if (mob.getIndex() != index) {
|
||||||
return false;
|
throw new IllegalArgumentException("MobRepository index mismatch, cannot remove Mob.");
|
||||||
}
|
}
|
||||||
|
|
||||||
mobs[index - 1] = null;
|
mobs[index - 1] = null;
|
||||||
mob.setIndex(-1);
|
mob.setIndex(-1);
|
||||||
size--;
|
size--;
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -73,6 +73,15 @@ public final class MobRepositoryTest {
|
|||||||
assertEquals(0, players.size());
|
assertEquals(0, players.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests failing of {@link MobRepository#remove(Mob)}
|
||||||
|
*/
|
||||||
|
@Test(expected = NullPointerException.class)
|
||||||
|
public void testRemoveNull() {
|
||||||
|
MobRepository<Player> players = new MobRepository<>(CAPACITY);
|
||||||
|
players.remove(null);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ensures that a MobRepository maintains a fixed capacity.
|
* Ensures that a MobRepository maintains a fixed capacity.
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user