Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
ziqian zhang
Grasscutter
Commits
94a6a79b
Commit
94a6a79b
authored
May 07, 2022
by
gentlespoon
Committed by
Melledy
May 07, 2022
Browse files
Fix null reference on stamina timer when paused player disconnects.
parent
c9e8d6ca
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/main/java/emu/grasscutter/game/managers/StaminaManager/StaminaManager.java
View file @
94a6a79b
...
@@ -29,19 +29,16 @@ public class StaminaManager {
...
@@ -29,19 +29,16 @@ public class StaminaManager {
private
Position
previousCoordinates
=
new
Position
(
0
,
0
,
0
);
private
Position
previousCoordinates
=
new
Position
(
0
,
0
,
0
);
private
MotionState
currentState
=
MotionState
.
MOTION_STANDBY
;
private
MotionState
currentState
=
MotionState
.
MOTION_STANDBY
;
private
MotionState
previousState
=
MotionState
.
MOTION_STANDBY
;
private
MotionState
previousState
=
MotionState
.
MOTION_STANDBY
;
private
Timer
sustainedStaminaHandlerTimer
;
private
final
Timer
sustainedStaminaHandlerTimer
=
new
Timer
();
private
final
SustainedStaminaHandler
handleSustainedStamina
=
new
SustainedStaminaHandler
();
private
boolean
timerRunning
=
false
;
private
GameSession
cachedSession
=
null
;
private
GameSession
cachedSession
=
null
;
private
GameEntity
cachedEntity
=
null
;
private
GameEntity
cachedEntity
=
null
;
private
int
staminaRecoverDelay
=
0
;
private
int
staminaRecoverDelay
=
0
;
private
boolean
isInSkillMove
=
false
;
private
boolean
isInSkillMove
=
false
;
public
boolean
getIsInSkillMove
()
{
public
boolean
getIsInSkillMove
()
{
return
isInSkillMove
;
return
isInSkillMove
;
}
}
public
void
setIsInSkillMove
(
boolean
b
)
{
public
void
setIsInSkillMove
(
boolean
b
)
{
isInSkillMove
=
b
;
isInSkillMove
=
b
;
}
}
...
@@ -139,24 +136,23 @@ public class StaminaManager {
...
@@ -139,24 +136,23 @@ public class StaminaManager {
entity
.
getWorld
().
broadcastPacket
(
new
PacketEntityFightPropUpdateNotify
(
entity
,
FightProperty
.
FIGHT_PROP_CUR_HP
));
entity
.
getWorld
().
broadcastPacket
(
new
PacketEntityFightPropUpdateNotify
(
entity
,
FightProperty
.
FIGHT_PROP_CUR_HP
));
entity
.
getWorld
().
broadcastPacket
(
new
PacketLifeStateChangeNotify
(
0
,
entity
,
LifeState
.
LIFE_DEAD
));
entity
.
getWorld
().
broadcastPacket
(
new
PacketLifeStateChangeNotify
(
0
,
entity
,
LifeState
.
LIFE_DEAD
));
player
.
getScene
().
removeEntity
(
entity
);
player
.
getScene
().
removeEntity
(
entity
);
((
EntityAvatar
)
entity
).
onDeath
(
dieType
,
0
);
((
EntityAvatar
)
entity
).
onDeath
(
dieType
,
0
);
}
}
public
void
startSustainedStaminaHandler
()
{
public
void
startSustainedStaminaHandler
()
{
if
(!
player
.
isPaused
())
{
if
(!
player
.
isPaused
()
&&
!
timerRunning
)
{
if
(
sustainedStaminaHandlerTimer
==
null
)
{
timerRunning
=
true
;
sustainedStaminaHandlerTimer
=
new
Timer
();
sustainedStaminaHandlerTimer
.
scheduleAtFixedRate
(
handleSustainedStamina
,
0
,
200
);
sustainedStaminaHandlerTimer
.
scheduleAtFixedRate
(
new
SustainedStaminaHandler
(),
0
,
200
);
// Grasscutter.getLogger().debug("[MovementManager] SustainedStaminaHandlerTimer started");
Grasscutter
.
getLogger
().
debug
(
"[MovementManager] SustainedStaminaHandlerTimer started"
);
}
}
}
}
}
public
void
stopSustainedStaminaHandler
()
{
public
void
stopSustainedStaminaHandler
()
{
Grasscutter
.
getLogger
().
debug
(
"[MovementManager] SustainedStaminaHandlerTimer stopped"
);
if
(
timerRunning
)
{
sustainedStaminaHandlerTimer
.
cancel
();
timerRunning
=
false
;
sustainedStaminaHandlerTimer
=
null
;
sustainedStaminaHandlerTimer
.
cancel
();
// Grasscutter.getLogger().debug("[MovementManager] SustainedStaminaHandlerTimer stopped");
}
}
}
// Handlers
// Handlers
...
...
src/main/java/emu/grasscutter/game/player/Player.java
View file @
94a6a79b
...
@@ -872,11 +872,11 @@ public class Player {
...
@@ -872,11 +872,11 @@ public class Player {
}
}
public
void
onPause
()
{
public
void
onPause
()
{
s
taminaManager
.
stopSustainedStaminaHandler
();
getS
taminaManager
()
.
stopSustainedStaminaHandler
();
}
}
public
void
onUnpause
()
{
public
void
onUnpause
()
{
s
taminaManager
.
startSustainedStaminaHandler
();
getS
taminaManager
()
.
startSustainedStaminaHandler
();
}
}
public
void
sendPacket
(
BasePacket
packet
)
{
public
void
sendPacket
(
BasePacket
packet
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment