Pumpkin/pumpkin/src/block/pumpkin_block.rs
2025-01-12 16:45:22 +01:00

67 lines
1.5 KiB
Rust

use crate::block::block_manager::BlockActionResult;
use crate::entity::player::Player;
use crate::server::Server;
use async_trait::async_trait;
use pumpkin_inventory::OpenContainer;
use pumpkin_util::math::position::BlockPos;
use pumpkin_world::block::block_registry::Block;
use pumpkin_world::item::item_registry::Item;
pub trait BlockMetadata {
const NAMESPACE: &'static str;
const ID: &'static str;
fn name(&self) -> String {
format!("{}:{}", Self::NAMESPACE, Self::ID)
}
}
#[async_trait]
pub trait PumpkinBlock: Send + Sync {
async fn on_use<'a>(
&self,
_block: &Block,
_player: &Player,
_location: BlockPos,
_server: &Server,
) {
}
async fn on_use_with_item<'a>(
&self,
_block: &Block,
_player: &Player,
_location: BlockPos,
_item: &Item,
_server: &Server,
) -> BlockActionResult {
BlockActionResult::Continue
}
async fn on_placed<'a>(
&self,
_block: &Block,
_player: &Player,
_location: BlockPos,
_server: &Server,
) {
}
async fn on_broken<'a>(
&self,
_block: &Block,
_player: &Player,
_location: BlockPos,
_server: &Server,
) {
}
async fn on_close<'a>(
&self,
_block: &Block,
_player: &Player,
_location: BlockPos,
_server: &Server,
_container: &mut OpenContainer,
) {
}
}