mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-14 16:04:40 +01:00
HACK: Return the avatar which holds the weapon when the weapon is referred to by ID
This commit is contained in:
@@ -41,14 +41,15 @@ import emu.grasscutter.server.event.player.PlayerTeleportEvent;
|
||||
import emu.grasscutter.server.packet.send.*;
|
||||
import emu.grasscutter.utils.objects.KahnsSort;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.val;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
import java.util.stream.Collectors;
|
||||
import javax.annotation.Nullable;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.val;
|
||||
|
||||
public final class Scene {
|
||||
@Getter private final World world;
|
||||
@@ -124,6 +125,7 @@ public final class Scene {
|
||||
players.stream().filter(p -> p.getTeamManager().getEntity().getId() == id).findAny();
|
||||
if (teamEntityPlayer.isPresent()) return teamEntityPlayer.get().getTeamManager().getEntity();
|
||||
|
||||
// Check for an avatar.
|
||||
var entity = this.entities.get(id);
|
||||
if (entity == null && (id >> 24) == EntityType.Avatar.getValue()) {
|
||||
for (var player : this.getPlayers()) {
|
||||
@@ -133,6 +135,15 @@ public final class Scene {
|
||||
}
|
||||
}
|
||||
|
||||
// Check for a weapon.
|
||||
if (entity == null && (id >> 24) == EntityIdType.WEAPON.getId()) {
|
||||
for (var player : this.getPlayers()) {
|
||||
for (var avatar : player.getTeamManager().getActiveTeam()) {
|
||||
if (avatar.getWeaponEntityId() == id) return avatar;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return entity;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user