[SPIGOT-4163] Inconsistent Behaviour Cancelling EntitydismountEvent Created: 27/Jul/18  Updated: 27/Jul/18  Resolved: 27/Jul/18

Status: Resolved
Project: Spigot
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Minor
Reporter: md_5 Assignee: Unassigned
Resolution: Duplicate Votes: 0
Labels: None

Attachments: Java Archive File TestPlugin.jar    
Issue Links:
Cloners
clones SPIGOT-4113 EntityDismountEvent implements Cancel... Resolved
Duplicate
duplicates SPIGOT-1588 Can't Cancel VehicleExitEvent Resolved
Version: -
Guidelines Read: Yes

 Description   

See other



 Comments   
Comment by BillyGalbreath [ 27/Jul/18 ]

Here is a test plugin with the known fix using reflection:

public class TestPlugin extends JavaPlugin implements Listener {
    @Override
    public void onEnable() {
        getServer().getPluginManager().registerEvents(this, this);
    }

    @EventHandler
    public void on(PlayerInteractAtEntityEvent event) {
        event.getRightClicked().addPassenger(event.getPlayer());
    }

    @EventHandler
    public void on(EntityDismountEvent event) {
        event.setCancelled(true);
        setVehicleBack(event.getEntity(), event.getDismounted());
    }

    private void setVehicleBack(Entity rider, Entity vehicle) {
        try {
            Field ax = net.minecraft.server.v1_13_R1.Entity.class.getDeclaredField("ax");
            ax.setAccessible(true);
            ax.set(((CraftEntity) rider).getHandle(), ((CraftEntity) vehicle).getHandle());
        } catch (NoSuchFieldException | IllegalAccessException e) {
            e.printStackTrace();
        }
    }
}

TestPlugin.jar

Comment by BillyGalbreath [ 27/Jul/18 ]

Related https://hub.spigotmc.org/jira/browse/SPIGOT-1588

Generated at Tue Apr 15 11:10:09 UTC 2025 using Jira 10.3.3#10030003-sha1:d220e3fefc8dfc6d47f522d3b9a20c1455e12b7b.