While handling an InteractBlockEvent
, I’d like to check if the interacted block (getTargetBlock
) has a tile entity (for example it could be a Chest
) without individually checking each block type (mod support).
How would I do this?
While handling an InteractBlockEvent
, I’d like to check if the interacted block (getTargetBlock
) has a tile entity (for example it could be a Chest
) without individually checking each block type (mod support).
How would I do this?
Something like this would work.
Optional<Location<World>> optLocation = event.getTargetBlock().getLocation();
if(optLocation.isPresent()){
Optional<TileEntity> optTileEntity = optLocation.get().getTileEntity();
if(optTileEntity.isPresent()){
TileEntity tileEntity = optTileEntity.get();
}
}
I’m not excluding InteractBlockEvent.Break
, how would I do it even when that event triggers?
Edit: There is no InteractBlockEvent.Break
, I’m using InteractBlockEvent.Secondary
, which is when it’s right clicked, right?
Whoops, I was thinking of a different event. You can ignore that…comment about Break.
Do you mean ChangeBlockEvent.Break
?
Yeah, head in the clouds today. The code I posted will still work for InteractBlockEvent though
ChangeBlockEvent.Break
is fired when a player break a block
InteractBlockEvent.Primary
is fired when a player left click a block
InteractBlockEvent.Secondary
is fired when a player right click a block
I hope this can help you