Skip to content

Commit eda905b

Browse files
committed
stop werewolf players to transform if there is no space for the new model
1 parent aeb0189 commit eda905b

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

src/main/java/de/teamlapen/werewolves/entities/player/werewolf/actions/WerewolfFormAction.java

+13-9
Original file line numberDiff line numberDiff line change
@@ -184,26 +184,30 @@ public int getDuration(IWerewolfPlayer werewolf) {
184184
}
185185

186186
@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))) {
189190
return false;
190191
}
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);
193194
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());
196197
} else {
197198
return true;
198199
}
199200
} 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()) {
201205
return true;
202206
} 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)) {
204208
return true;
205209
} else {
206-
return ((WerewolfPlayer) player).getSpecialAttributes().transformationTime < 0.7;
210+
return ((WerewolfPlayer) werewolf).getSpecialAttributes().transformationTime < 0.7;
207211
}
208212
}
209213
}

0 commit comments

Comments
 (0)