mirror of
https://github.com/2006-Scape/apollo.git
synced 2026-07-03 00:38:21 +00:00
Merge branch 'Tomm0017-magic_on_mob' into kotlin-experiments
Merge #426
This commit is contained in:
@@ -71,6 +71,12 @@
|
||||
<handler>org.apollo.game.message.handler.ItemVerificationHandler</handler>
|
||||
</chain>
|
||||
</message>
|
||||
<message>
|
||||
<type>org.apollo.game.message.impl.MagicOnMobMessage</type>
|
||||
<chain>
|
||||
<handler>org.apollo.game.message.handler.MagicOnMobVerificationHandler</handler>
|
||||
</chain>
|
||||
</message>
|
||||
<message>
|
||||
<type>org.apollo.game.message.impl.NpcActionMessage</type>
|
||||
<chain>
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
package org.apollo.game.message.handler;
|
||||
|
||||
import org.apollo.game.message.impl.MagicOnMobMessage;
|
||||
import org.apollo.game.model.World;
|
||||
import org.apollo.game.model.entity.EntityType;
|
||||
import org.apollo.game.model.entity.Mob;
|
||||
import org.apollo.game.model.entity.MobRepository;
|
||||
import org.apollo.game.model.entity.Player;
|
||||
|
||||
/**
|
||||
* A verification {@link MessageHandler} for the {@link MagicOnMobMessage}.
|
||||
*
|
||||
* @author Tom
|
||||
*/
|
||||
public final class MagicOnMobVerificationHandler extends MessageHandler<MagicOnMobMessage>{
|
||||
|
||||
/**
|
||||
* Creates the MessageListener.
|
||||
*
|
||||
* @param world The {@link World} the {@link MagicOnMobMessage} occurred in.
|
||||
*/
|
||||
public MagicOnMobVerificationHandler(World world) {
|
||||
super(world);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(Player player, MagicOnMobMessage message) {
|
||||
int index = message.getIndex();
|
||||
MobRepository<? extends Mob> repository;
|
||||
|
||||
if (message.getType() == EntityType.NPC) {
|
||||
repository = world.getNpcRepository();
|
||||
} else if (message.getType() == EntityType.PLAYER) {
|
||||
repository = world.getPlayerRepository();
|
||||
} else {
|
||||
throw new IllegalStateException("Invalid mob type for message: " + message.toString());
|
||||
}
|
||||
|
||||
if (index < 0 || index >= repository.capacity()) {
|
||||
message.terminate();
|
||||
return;
|
||||
}
|
||||
|
||||
Mob mob = repository.get(index);
|
||||
|
||||
if (mob == null || !player.getPosition().isWithinDistance(mob.getPosition(), player.getViewingDistance() + 1)) {
|
||||
// +1 in case it was decremented after the player clicked the action.
|
||||
message.terminate();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.apollo.game.message.impl;
|
||||
|
||||
import com.google.common.base.MoreObjects;
|
||||
import org.apollo.game.model.entity.EntityType;
|
||||
import org.apollo.net.message.Message;
|
||||
|
||||
@@ -65,4 +66,8 @@ public abstract class MagicOnMobMessage extends Message {
|
||||
return spellId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return MoreObjects.toStringHelper(this).add("type", getType()).add("index", getIndex()).add("spellId", getSpellId()).toString();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user