Placement for Glazed Terracottas (#974)

* feat: add placement for glazed_terracottas

* fmt

---------

Co-authored-by: Alexander Medvedev <lilalexmed@proton.me>
This commit is contained in:
ht06
2025-07-02 14:35:52 +02:00
committed by GitHub
parent febe897510
commit f21f552680
3 changed files with 49 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
use crate::block::BlockIsReplacing;
use crate::block::pumpkin_block::{BlockMetadata, PumpkinBlock};
use crate::entity::player::Player;
use crate::server::Server;
use crate::world::World;
use async_trait::async_trait;
use pumpkin_data::block_properties::{BlockProperties, WallTorchLikeProperties};
use pumpkin_data::tag::{RegistryKey, get_tag_values};
use pumpkin_data::{Block, BlockDirection};
use pumpkin_protocol::java::server::play::SUseItemOn;
use pumpkin_util::math::position::BlockPos;
use pumpkin_world::BlockStateId;
pub struct GlazedTerracottaBlock;
impl BlockMetadata for GlazedTerracottaBlock {
fn namespace(&self) -> &'static str {
"minecraft"
}
fn ids(&self) -> &'static [&'static str] {
get_tag_values(RegistryKey::Block, "c:glazed_terracottas").unwrap()
}
}
#[async_trait]
impl PumpkinBlock for GlazedTerracottaBlock {
async fn on_place(
&self,
_server: &Server,
_world: &World,
player: &Player,
block: &Block,
_block_pos: &BlockPos,
_face: BlockDirection,
_replacing: BlockIsReplacing,
_use_item_on: &SUseItemOn,
) -> BlockStateId {
let mut prop = WallTorchLikeProperties::default(block);
prop.facing = player
.living_entity
.entity
.get_horizontal_facing()
.opposite();
prop.to_state_id(block)
}
}

View File

@@ -19,6 +19,7 @@ pub mod fire;
pub mod flower_pots;
pub mod furnace;
pub mod glass_panes;
pub mod glazed_terracotta;
pub mod grindstone;
pub mod iron_bars;
pub mod jukebox;

View File

@@ -76,6 +76,7 @@ use pumpkin_world::BlockStateId;
use crate::block::blocks::campfire::CampfireBlock;
use crate::block::blocks::flower_pots::FlowerPotBlock;
use crate::block::blocks::glazed_terracotta::GlazedTerracottaBlock;
use crate::block::blocks::plant::roots::RootsBlock;
use crate::block::blocks::skull_block::SkullBlock;
use crate::block::loot::LootContextParameters;
@@ -114,6 +115,7 @@ pub fn default_registry() -> Arc<BlockRegistry> {
manager.register(FlowerPotBlock);
manager.register(FurnaceBlock);
manager.register(GlassPaneBlock);
manager.register(GlazedTerracottaBlock);
manager.register(GrindstoneBlock);
manager.register(IronBarsBlock);
manager.register(JukeboxBlock);