@@ -184,26 +184,30 @@ public int getDuration(IWerewolfPlayer werewolf) {
184
184
}
185
185
186
186
@ Override
187
- public boolean canBeUsedBy (IWerewolfPlayer player ) {
188
- if (player .getRepresentingPlayer () instanceof ServerPlayer && (!PermissionAPI .getPermission ((ServerPlayer ) player .getRepresentingPlayer (), Permissions .TRANSFORMATION ) || !PermissionAPI .getPermission ((ServerPlayer ) player .getRepresentingPlayer (), Permissions .FORM ))) {
187
+ public boolean canBeUsedBy (IWerewolfPlayer werewolf ) {
188
+ Player player = werewolf .getRepresentingPlayer ();
189
+ if (player instanceof ServerPlayer && (!PermissionAPI .getPermission ((ServerPlayer ) player , Permissions .TRANSFORMATION ) || !PermissionAPI .getPermission ((ServerPlayer ) player , Permissions .FORM ))) {
189
190
return false ;
190
191
}
191
- if (player .getRepresentingPlayer (). isPassenger () && !this .form .isHumanLike ()) return false ;
192
- boolean active = player .getActionHandler ().isActionActive (this );
192
+ if (player .isPassenger () && !this .form .isHumanLike ()) return false ;
193
+ boolean active = werewolf .getActionHandler ().isActionActive (this );
193
194
if (active ) {
194
- if (Helper .isFullMoon (player .getRepresentingPlayer (). getCommandSenderWorld ())) {
195
- return player .getSkillHandler ().isSkillEnabled (ModSkills .FREE_WILL .get ());
195
+ if (Helper .isFullMoon (player .getCommandSenderWorld ())) {
196
+ return werewolf .getSkillHandler ().isSkillEnabled (ModSkills .FREE_WILL .get ());
196
197
} else {
197
198
return true ;
198
199
}
199
200
} else {
200
- if (player .getForm ().isTransformed ()) {
201
+ if (this .form .getSize (player .getPose ()).map (dimensions -> dimensions .makeBoundingBox (player .position ())).filter (s -> player .level ().collidesWithSuffocatingBlock (player , s )).isPresent ()) {
202
+ return false ;
203
+ }
204
+ if (werewolf .getForm ().isTransformed ()) {
201
205
return true ;
202
206
} else {
203
- if (player .getRepresentingPlayer (). level ().getBiome (player .getRepresentingEntity ().blockPosition ()).is (ModBiomes .WEREWOLF_FOREST )) {
207
+ if (player .level ().getBiome (werewolf .getRepresentingEntity ().blockPosition ()).is (ModBiomes .WEREWOLF_FOREST )) {
204
208
return true ;
205
209
} else {
206
- return ((WerewolfPlayer ) player ).getSpecialAttributes ().transformationTime < 0.7 ;
210
+ return ((WerewolfPlayer ) werewolf ).getSpecialAttributes ().transformationTime < 0.7 ;
207
211
}
208
212
}
209
213
}
0 commit comments