HACK: Return the avatar which holds the weapon when the weapon is referred to by ID

This commit is contained in:
KingRainbow44
2023-05-30 13:56:06 -04:00
parent a2eba7b795
commit c6869aaaa2

View File

@@ -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;
}