Grasscutters / Grasscutter

A server software reimplementation for a certain anime game.
https://grasscutter.io/
GNU Affero General Public License v3.0
16.2k stars 4.47k forks source link

[Bug] 获取数组元素时候,未检测数组是否为空,导致越界访问 #2468

Open lanfengc opened 8 months ago

lanfengc commented 8 months ago

在 src/main/java/emu/grasscutter/game/entity/EntityMonster.java 的第388行, 有这样一句代码: var towerManager = getScene().getPlayers().get(0).getTowerManager(); 当玩家在尘歌壶内下线时候,登陆游戏就会出错,导致无法登陆。

lanfengc commented 8 months ago

修改方法: 把第388行和第389行的代码: var towerManager = getScene().getPlayers().get(0).getTowerManager(); if (dungeonManager != null && dungeonManager.isTowerDungeon() && towerManager != null) {

改成: var players = getScene().getPlayers(); if (dungeonManager != null && dungeonManager.isTowerDungeon() && players != null && !players.isEmpty()) { var towerManager = players.get(0).getTowerManager();