From f21f5526802ec5769e3da02f47076f0cb1dbc06e Mon Sep 17 00:00:00 2001 From: ht06 Date: Wed, 2 Jul 2025 14:35:52 +0200 Subject: [PATCH] Placement for Glazed Terracottas (#974) * feat: add placement for glazed_terracottas * fmt --------- Co-authored-by: Alexander Medvedev --- pumpkin/src/block/blocks/glazed_terracotta.rs | 46 +++++++++++++++++++ pumpkin/src/block/blocks/mod.rs | 1 + pumpkin/src/block/mod.rs | 2 + 3 files changed, 49 insertions(+) create mode 100644 pumpkin/src/block/blocks/glazed_terracotta.rs diff --git a/pumpkin/src/block/blocks/glazed_terracotta.rs b/pumpkin/src/block/blocks/glazed_terracotta.rs new file mode 100644 index 000000000..a362bb211 --- /dev/null +++ b/pumpkin/src/block/blocks/glazed_terracotta.rs @@ -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) + } +} diff --git a/pumpkin/src/block/blocks/mod.rs b/pumpkin/src/block/blocks/mod.rs index ae2cd925e..952b3ff71 100644 --- a/pumpkin/src/block/blocks/mod.rs +++ b/pumpkin/src/block/blocks/mod.rs @@ -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; diff --git a/pumpkin/src/block/mod.rs b/pumpkin/src/block/mod.rs index 809787cef..bebed30ec 100644 --- a/pumpkin/src/block/mod.rs +++ b/pumpkin/src/block/mod.rs @@ -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 { manager.register(FlowerPotBlock); manager.register(FurnaceBlock); manager.register(GlassPaneBlock); + manager.register(GlazedTerracottaBlock); manager.register(GrindstoneBlock); manager.register(IronBarsBlock); manager.register(JukeboxBlock);