How to set flying sign?

Hello all. I want set “flying sign”.
How can this be implemented?
Note: I now use barrier.

They way you might want to do this is to create the sign in the air and mark it somehow.

Then, when the sign tries to fall from a block update, check to see if it’s the marked sign, and if it is, cancel the block event.

That will stop it from falling as long as the block isn’t updated.

You can actually keep it marked and just cancel all block break events until a player physically punches it or something.

Happened. @gravityfox, normal variant?
Code:

public class EventFlySign {
    @Listener
    public void onFlySign(ChangeBlockEvent.Modify event) {  
        event.getTransactions().stream().forEach((trans) -> {
                if (trans.getOriginal().getState().getType().equals(BlockTypes.WALL_SIGN)) {
                    event.setCancelled(true);              
                }});
        
    }
}

Screen:

Does it mean it worked?

Yes. It works great.

You might want to use data to make it so normal signs will behave… well… normally…

Ok. I’ll do it later.

I removed this code. And everything just works.
After setBlock() the sign does not fall even without plug-ins.

Wait wat…?

This code does not affect the sign. And it works by default in the sponge.