Skip to content

Commit

Permalink
Fix EntityEventHandler handleEntityDismountEvent
Browse files Browse the repository at this point in the history
  • Loading branch information
gecolay committed Jan 31, 2025
1 parent 2152d1d commit c9736e5
Show file tree
Hide file tree
Showing 6 changed files with 20 additions and 14 deletions.
5 changes: 2 additions & 3 deletions core/src/main/java/dev/geco/gsit/api/GSitAPI.java
Original file line number Diff line number Diff line change
Expand Up @@ -231,11 +231,10 @@ public static boolean sitOnPlayer(@NotNull Player player, @NotNull Player target
* @since 2.0.0
* @param player Player
* @param stopReason The reason why the player sit action is stopped
* @param removePassengers Should the player eject his passenger stack
* @return <code>true</code> or <code>false</code> if the action was cancelled by event
*/
public static boolean stopPlayerSit(@NotNull Player player, @NotNull GStopReason stopReason, boolean removePassengers) {
return getInstance().getPlayerSitService().stopPlayerSit(player, stopReason, removePassengers);
public static boolean stopPlayerSit(@NotNull Player player, @NotNull GStopReason stopReason) {
return getInstance().getPlayerSitService().stopPlayerSit(player, stopReason);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,10 @@ public void handleEntityDismountEvent(Cancellable event, Entity entity, Entity d
}, 2);

Entity bottom = gSitMain.getPassengerUtil().getBottomEntityVehicle(dismounted);

if(gSitMain.getConfigService().PS_BOTTOM_RETURN && player.isValid()) gSitMain.getEntityUtil().setEntityLocation(player, bottom.getLocation());

gSitMain.getPlayerSitService().stopPlayerSit(player, GStopReason.GET_UP, false, false);
Player nextPlayerVehicle = gSitMain.getPassengerUtil().getNextPlayerVehicle(dismounted);
if(nextPlayerVehicle != null) gSitMain.getPlayerSitService().stopPlayerSit(nextPlayerVehicle, GStopReason.GET_UP, true, false, false);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -32,20 +32,20 @@ public PlayerSitEventHandler(GSitMain gSitMain) {
public void playerToggleSneakEvent(PlayerToggleSneakEvent event) {
Player player = event.getPlayer();
if(!gSitMain.getConfigService().PS_SNEAK_EJECTS || !event.isSneaking() || player.isFlying() || player.getVehicle() != null || gSitMain.getPlayerSitService().getPreventDismountStackPlayers().contains(player) || player.getPassengers().isEmpty()) return;
gSitMain.getPlayerSitService().stopPlayerSit(player, GStopReason.KICKED, true);
gSitMain.getPlayerSitService().stopPlayerSit(player, GStopReason.KICKED);
}

@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void playerGameModeChangeEvent(PlayerGameModeChangeEvent event) { if(event.getNewGameMode() == GameMode.SPECTATOR) gSitMain.getPlayerSitService().stopPlayerSit(event.getPlayer(), GStopReason.GAMEMODE_CHANGE, true); }
public void playerGameModeChangeEvent(PlayerGameModeChangeEvent event) { if(event.getNewGameMode() == GameMode.SPECTATOR) gSitMain.getPlayerSitService().stopPlayerSit(event.getPlayer(), GStopReason.GAMEMODE_CHANGE); }

@EventHandler(priority = EventPriority.LOWEST)
public void playerDeathEvent(PlayerDeathEvent event) { if(event.getEntity().getVehicle() != null) gSitMain.getPlayerSitService().stopPlayerSit(event.getEntity(), GStopReason.DEATH, true); }
public void playerDeathEvent(PlayerDeathEvent event) { if(event.getEntity().getVehicle() != null) gSitMain.getPlayerSitService().stopPlayerSit(event.getEntity(), GStopReason.DEATH); }

@EventHandler(priority = EventPriority.LOWEST)
public void playerQuitEvent(PlayerQuitEvent event) { if(event.getPlayer().getVehicle() != null) gSitMain.getPlayerSitService().stopPlayerSit(event.getPlayer(), GStopReason.DISCONNECT, true); }
public void playerQuitEvent(PlayerQuitEvent event) { if(event.getPlayer().getVehicle() != null) gSitMain.getPlayerSitService().stopPlayerSit(event.getPlayer(), GStopReason.DISCONNECT); }

@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void playerTeleportEvent(PlayerTeleportEvent event) { gSitMain.getPlayerSitService().stopPlayerSit(event.getPlayer(), GStopReason.TELEPORT, true); }
public void playerTeleportEvent(PlayerTeleportEvent event) { gSitMain.getPlayerSitService().stopPlayerSit(event.getPlayer(), GStopReason.TELEPORT); }

@EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST)
public void entityDamageEvent(EntityDamageEvent event) { if(event.getCause() == EntityDamageEvent.DamageCause.FALL && event.getEntity() instanceof LivingEntity && event.getEntity().getVehicle() != null && event.getEntity().getVehicle().getScoreboardTags().contains(PlayerSitService.PLAYERSIT_ENTITY_TAG)) event.setCancelled(true); }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public boolean onCrossBoundary(LocalPlayer player, Location from, Location to, A
private void handlePlayerSitFlagChange(LocalPlayer localPlayer) {
if(currentPlayerSitFlagState != StateFlag.State.DENY) return;
Player player = BukkitAdapter.adapt(localPlayer);
gSitMain.getPlayerSitService().stopPlayerSit(player, GStopReason.REGION, true);
gSitMain.getPlayerSitService().stopPlayerSit(player, GStopReason.REGION);
}

private void handleCrawlFlagChange(LocalPlayer localPlayer) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,10 @@ public boolean sitOnPlayer(Player player, Player target) {

return true;
}
public boolean stopPlayerSit(Player player, GStopReason stopReason, boolean removePassengers) { return stopPlayerSit(player, stopReason, removePassengers, true); }

public boolean stopPlayerSit(Player player, GStopReason stopReason, boolean removePassengers, boolean callPreEvent) {
public boolean stopPlayerSit(Player player, GStopReason stopReason) { return stopPlayerSit(player, stopReason, true, true, true); }

public boolean stopPlayerSit(Player player, GStopReason stopReason, boolean removePassengers, boolean removeVehicle, boolean callPreEvent) {
if(player.getPassengers().isEmpty() && player.getVehicle() == null) return true;

if(callPreEvent) {
Expand All @@ -76,7 +77,7 @@ public boolean stopPlayerSit(Player player, GStopReason stopReason, boolean remo
}

if(removePassengers) removePassengers(player, player);
removeVehicles(player, player);
if(removeVehicle) removeVehicles(player, player);

Bukkit.getPluginManager().callEvent(new PlayerStopPlayerSitEvent(player, stopReason, removePassengers));

Expand Down
6 changes: 6 additions & 0 deletions core/src/main/java/dev/geco/gsit/util/PassengerUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,10 @@ public Entity getBottomEntityVehicle(Entity entity) {
return getBottomEntityVehicle(entity.getVehicle());
}

public Player getNextPlayerVehicle(Entity entity) {
if(entity instanceof Player player) return player;
if(entity == null || entity.getVehicle() == null) return null;
return getNextPlayerVehicle(entity.getVehicle());
}

}

0 comments on commit c9736e5

Please sign in to comment.