1
2
Fork 0
mirror of https://github.com/mat-1/azalea.git synced 2025-08-02 14:26:04 +00:00

start updating to 24w09b

This commit is contained in:
mat 2025-03-02 06:34:41 +00:00
parent be10d5f94b
commit 2867f48b14
15 changed files with 1425 additions and 1105 deletions

42
Cargo.lock generated
View file

@ -208,7 +208,7 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
[[package]]
name = "azalea"
version = "0.11.0+mc25w03a"
version = "0.11.0+mc25w09b"
dependencies = [
"anyhow",
"azalea-auth",
@ -248,7 +248,7 @@ dependencies = [
[[package]]
name = "azalea-auth"
version = "0.11.0+mc25w03a"
version = "0.11.0+mc25w09b"
dependencies = [
"azalea-buf",
"azalea-crypto",
@ -268,7 +268,7 @@ dependencies = [
[[package]]
name = "azalea-block"
version = "0.11.0+mc25w03a"
version = "0.11.0+mc25w09b"
dependencies = [
"azalea-block-macros",
"azalea-buf",
@ -277,7 +277,7 @@ dependencies = [
[[package]]
name = "azalea-block-macros"
version = "0.11.0+mc25w03a"
version = "0.11.0+mc25w09b"
dependencies = [
"proc-macro2",
"quote",
@ -286,7 +286,7 @@ dependencies = [
[[package]]
name = "azalea-brigadier"
version = "0.11.0+mc25w03a"
version = "0.11.0+mc25w09b"
dependencies = [
"azalea-buf",
"azalea-chat",
@ -297,7 +297,7 @@ dependencies = [
[[package]]
name = "azalea-buf"
version = "0.11.0+mc25w03a"
version = "0.11.0+mc25w09b"
dependencies = [
"azalea-buf-macros",
"byteorder",
@ -310,7 +310,7 @@ dependencies = [
[[package]]
name = "azalea-buf-macros"
version = "0.11.0+mc25w03a"
version = "0.11.0+mc25w09b"
dependencies = [
"proc-macro2",
"quote",
@ -319,7 +319,7 @@ dependencies = [
[[package]]
name = "azalea-chat"
version = "0.11.0+mc25w03a"
version = "0.11.0+mc25w09b"
dependencies = [
"azalea-buf",
"azalea-language",
@ -332,7 +332,7 @@ dependencies = [
[[package]]
name = "azalea-client"
version = "0.11.0+mc25w03a"
version = "0.11.0+mc25w09b"
dependencies = [
"anyhow",
"azalea-auth",
@ -366,7 +366,7 @@ dependencies = [
[[package]]
name = "azalea-core"
version = "0.11.0+mc25w03a"
version = "0.11.0+mc25w09b"
dependencies = [
"azalea-buf",
"azalea-chat",
@ -381,7 +381,7 @@ dependencies = [
[[package]]
name = "azalea-crypto"
version = "0.11.0+mc25w03a"
version = "0.11.0+mc25w09b"
dependencies = [
"aes",
"azalea-buf",
@ -398,7 +398,7 @@ dependencies = [
[[package]]
name = "azalea-entity"
version = "0.11.0+mc25w03a"
version = "0.11.0+mc25w09b"
dependencies = [
"azalea-block",
"azalea-buf",
@ -421,7 +421,7 @@ dependencies = [
[[package]]
name = "azalea-inventory"
version = "0.11.0+mc25w03a"
version = "0.11.0+mc25w09b"
dependencies = [
"azalea-buf",
"azalea-chat",
@ -435,7 +435,7 @@ dependencies = [
[[package]]
name = "azalea-inventory-macros"
version = "0.11.0+mc25w03a"
version = "0.11.0+mc25w09b"
dependencies = [
"proc-macro2",
"quote",
@ -444,7 +444,7 @@ dependencies = [
[[package]]
name = "azalea-language"
version = "0.11.0+mc25w03a"
version = "0.11.0+mc25w09b"
dependencies = [
"serde",
"serde_json",
@ -452,7 +452,7 @@ dependencies = [
[[package]]
name = "azalea-physics"
version = "0.11.0+mc25w03a"
version = "0.11.0+mc25w09b"
dependencies = [
"azalea-block",
"azalea-core",
@ -470,7 +470,7 @@ dependencies = [
[[package]]
name = "azalea-protocol"
version = "0.11.0+mc25w03a"
version = "0.11.0+mc25w09b"
dependencies = [
"anyhow",
"async-recursion",
@ -505,7 +505,7 @@ dependencies = [
[[package]]
name = "azalea-protocol-macros"
version = "0.11.0+mc25w03a"
version = "0.11.0+mc25w09b"
dependencies = [
"proc-macro2",
"quote",
@ -514,7 +514,7 @@ dependencies = [
[[package]]
name = "azalea-registry"
version = "0.11.0+mc25w03a"
version = "0.11.0+mc25w09b"
dependencies = [
"azalea-buf",
"azalea-registry-macros",
@ -524,7 +524,7 @@ dependencies = [
[[package]]
name = "azalea-registry-macros"
version = "0.11.0+mc25w03a"
version = "0.11.0+mc25w09b"
dependencies = [
"quote",
"syn",
@ -532,7 +532,7 @@ dependencies = [
[[package]]
name = "azalea-world"
version = "0.11.0+mc25w03a"
version = "0.11.0+mc25w09b"
dependencies = [
"azalea-block",
"azalea-buf",

View file

@ -22,7 +22,7 @@ resolver = "2"
# --- Workspace Settings ---
[workspace.package]
version = "0.11.0+mc25w03a"
version = "0.11.0+mc25w09b"
edition = "2021"
license = "MIT"
repository = "https://github.com/azalea-rs/azalea"

View file

@ -11,7 +11,7 @@ A collection of Rust crates for making Minecraft bots, clients, and tools.
<!-- The line below is automatically read and updated by the migrate script, so don't change it manually. -->
_Currently supported Minecraft version: `25w03a`._
_Currently supported Minecraft version: `25w09b`._
> [!WARNING]
> Azalea is still unfinished, though most crates are in a useable state

View file

@ -1698,7 +1698,7 @@ make_block_states! {
_14,
_15,
},
"mode" => Mode {
"mode" => StructureMode {
Save,
Load,
Corner,
@ -1718,7 +1718,7 @@ make_block_states! {
NorthUp,
SouthUp,
},
"test_block_mode" => TestBlockMode {
"mode" => TestMode {
Start,
Log,
Fail,
@ -2378,6 +2378,9 @@ make_block_states! {
short_grass => BlockBehavior::new(), {},
fern => BlockBehavior::new(), {},
dead_bush => BlockBehavior::new(), {},
bush => BlockBehavior::new(), {},
short_dry_grass => BlockBehavior::new(), {},
tall_dry_grass => BlockBehavior::new(), {},
seagrass => BlockBehavior::new(), {},
tall_seagrass => BlockBehavior::new(), {
"half": Half::Lower,
@ -2776,6 +2779,7 @@ make_block_states! {
cactus => BlockBehavior::new().strength(0.4, 0.4), {
"age": CactusAge::_0,
},
cactus_flower => BlockBehavior::new(), {},
clay => BlockBehavior::new().strength(0.6, 0.6), {},
sugar_cane => BlockBehavior::new(), {
"age": SugarCaneAge::_0,
@ -4793,13 +4797,13 @@ make_block_states! {
"waterlogged": Waterlogged(false),
},
structure_block => BlockBehavior::new().requires_correct_tool_for_drops().strength(-1.0, 3600000.0), {
"mode": Mode::Load,
"mode": StructureMode::Load,
},
jigsaw => BlockBehavior::new().requires_correct_tool_for_drops().strength(-1.0, 3600000.0), {
"orientation": Orientation::NorthUp,
},
test_block => BlockBehavior::new(), {
"test_block_mode": TestBlockMode::Start,
"mode": TestMode::Start,
},
test_instance_block => BlockBehavior::new(), {},
composter => BlockBehavior::new().strength(0.6, 0.6), {
@ -5612,5 +5616,6 @@ make_block_states! {
closed_eyeblossom => BlockBehavior::new(), {},
potted_open_eyeblossom => BlockBehavior::new(), {},
potted_closed_eyeblossom => BlockBehavior::new(), {},
firefly_bush => BlockBehavior::new(), {},
}
}

View file

@ -82,7 +82,10 @@ pub enum EntityDataValue {
OptionalUnsignedInt(OptionalUnsignedInt),
Pose(Pose),
CatVariant(azalea_registry::CatVariant),
ChickenVariant(azalea_registry::ChickenVariant),
CowVariant(azalea_registry::CowVariant),
WolfVariant(azalea_registry::WolfVariant),
WolfSoundVariant(azalea_registry::WolfSoundVariant),
FrogVariant(azalea_registry::FrogVariant),
PigVariant(azalea_registry::PigVariant),
OptionalGlobalPos(Option<GlobalPos>),

View file

@ -1890,11 +1890,9 @@ impl Default for CherryChestBoatMetadataBundle {
}
#[derive(Component, Deref, DerefMut, Clone)]
pub struct DisplayBlock(pub i32);
pub struct CustomDisplayBlock(pub azalea_block::BlockState);
#[derive(Component, Deref, DerefMut, Clone)]
pub struct DisplayOffset(pub i32);
#[derive(Component, Deref, DerefMut, Clone)]
pub struct CustomDisplay(pub bool);
#[derive(Component)]
pub struct ChestMinecart;
impl ChestMinecart {
@ -1903,7 +1901,7 @@ impl ChestMinecart {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
0..=13 => AbstractMinecart::apply_metadata(entity, d)?,
0..=12 => AbstractMinecart::apply_metadata(entity, d)?,
_ => {}
}
Ok(())
@ -1944,14 +1942,15 @@ impl Default for ChestMinecartMetadataBundle {
hurtdir: Hurtdir(1),
damage: Damage(0.0),
},
display_block: DisplayBlock(Default::default()),
display_offset: DisplayOffset(6),
custom_display: CustomDisplay(false),
custom_display_block: CustomDisplayBlock(azalea_block::BlockState::AIR),
display_offset: DisplayOffset(Default::default()),
},
}
}
}
#[derive(Component, Deref, DerefMut, Clone)]
pub struct ChickenVariant(pub azalea_registry::PigVariant);
#[derive(Component)]
pub struct Chicken;
impl Chicken {
@ -1961,6 +1960,9 @@ impl Chicken {
) -> Result<(), UpdateMetadataError> {
match d.index {
0..=16 => AbstractAnimal::apply_metadata(entity, d)?,
17 => {
entity.insert(ChickenVariant(d.value.into_pig_variant()?));
}
_ => {}
}
Ok(())
@ -1971,6 +1973,7 @@ impl Chicken {
pub struct ChickenMetadataBundle {
_marker: Chicken,
parent: AbstractAnimalMetadataBundle,
chicken_variant: ChickenVariant,
}
impl Default for ChickenMetadataBundle {
fn default() -> Self {
@ -2020,6 +2023,7 @@ impl Default for ChickenMetadataBundle {
abstract_ageable_baby: AbstractAgeableBaby(false),
},
},
chicken_variant: ChickenVariant(Default::default()),
}
}
}
@ -2107,11 +2111,11 @@ impl CommandBlockMinecart {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
0..=13 => AbstractMinecart::apply_metadata(entity, d)?,
14 => {
0..=12 => AbstractMinecart::apply_metadata(entity, d)?,
13 => {
entity.insert(CommandName(d.value.into_string()?));
}
15 => {
14 => {
entity.insert(LastOutput(d.value.into_formatted_text()?));
}
_ => {}
@ -2156,9 +2160,8 @@ impl Default for CommandBlockMinecartMetadataBundle {
hurtdir: Hurtdir(1),
damage: Damage(0.0),
},
display_block: DisplayBlock(Default::default()),
display_offset: DisplayOffset(6),
custom_display: CustomDisplay(false),
custom_display_block: CustomDisplayBlock(azalea_block::BlockState::AIR),
display_offset: DisplayOffset(Default::default()),
},
command_name: CommandName("".to_string()),
last_output: LastOutput(Default::default()),
@ -2166,6 +2169,8 @@ impl Default for CommandBlockMinecartMetadataBundle {
}
}
#[derive(Component, Deref, DerefMut, Clone)]
pub struct CowVariant(pub azalea_registry::ChickenVariant);
#[derive(Component)]
pub struct Cow;
impl Cow {
@ -2175,6 +2180,9 @@ impl Cow {
) -> Result<(), UpdateMetadataError> {
match d.index {
0..=16 => AbstractAnimal::apply_metadata(entity, d)?,
17 => {
entity.insert(CowVariant(d.value.into_chicken_variant()?));
}
_ => {}
}
Ok(())
@ -2185,6 +2193,7 @@ impl Cow {
pub struct CowMetadataBundle {
_marker: Cow,
parent: AbstractAnimalMetadataBundle,
cow_variant: CowVariant,
}
impl Default for CowMetadataBundle {
fn default() -> Self {
@ -2234,6 +2243,7 @@ impl Default for CowMetadataBundle {
abstract_ageable_baby: AbstractAgeableBaby(false),
},
},
cow_variant: CowVariant(Default::default()),
}
}
}
@ -2245,7 +2255,7 @@ pub struct IsActive(pub bool);
#[derive(Component, Deref, DerefMut, Clone)]
pub struct IsTearingDown(pub bool);
#[derive(Component, Deref, DerefMut, Clone)]
pub struct CreakingHomePos(pub Option<BlockPos>);
pub struct HomePos(pub Option<BlockPos>);
#[derive(Component)]
pub struct Creaking;
impl Creaking {
@ -2265,7 +2275,7 @@ impl Creaking {
entity.insert(IsTearingDown(d.value.into_boolean()?));
}
19 => {
entity.insert(CreakingHomePos(d.value.into_optional_block_pos()?));
entity.insert(HomePos(d.value.into_optional_block_pos()?));
}
_ => {}
}
@ -2280,7 +2290,7 @@ pub struct CreakingMetadataBundle {
can_move: CanMove,
is_active: IsActive,
is_tearing_down: IsTearingDown,
creaking_home_pos: CreakingHomePos,
home_pos: HomePos,
}
impl Default for CreakingMetadataBundle {
fn default() -> Self {
@ -2329,7 +2339,7 @@ impl Default for CreakingMetadataBundle {
can_move: CanMove(true),
is_active: IsActive(false),
is_tearing_down: IsTearingDown(false),
creaking_home_pos: CreakingHomePos(None),
home_pos: HomePos(None),
}
}
}
@ -2537,8 +2547,6 @@ impl Default for DarkOakChestBoatMetadataBundle {
}
}
#[derive(Component, Deref, DerefMut, Clone)]
pub struct TreasurePos(pub BlockPos);
#[derive(Component, Deref, DerefMut, Clone)]
pub struct GotFish(pub bool);
#[derive(Component, Deref, DerefMut, Clone)]
@ -2553,12 +2561,9 @@ impl Dolphin {
match d.index {
0..=16 => AbstractAgeable::apply_metadata(entity, d)?,
17 => {
entity.insert(TreasurePos(d.value.into_block_pos()?));
}
18 => {
entity.insert(GotFish(d.value.into_boolean()?));
}
19 => {
18 => {
entity.insert(MoistnessLevel(d.value.into_int()?));
}
_ => {}
@ -2571,7 +2576,6 @@ impl Dolphin {
pub struct DolphinMetadataBundle {
_marker: Dolphin,
parent: AbstractAgeableMetadataBundle,
treasure_pos: TreasurePos,
got_fish: GotFish,
moistness_level: MoistnessLevel,
}
@ -2620,7 +2624,6 @@ impl Default for DolphinMetadataBundle {
},
abstract_ageable_baby: AbstractAgeableBaby(false),
},
treasure_pos: TreasurePos(BlockPos::new(0, 0, 0)),
got_fish: GotFish(false),
moistness_level: MoistnessLevel(2400),
}
@ -3931,7 +3934,7 @@ impl Default for FoxMetadataBundle {
abstract_ageable_baby: AbstractAgeableBaby(false),
},
},
fox_kind: FoxKind(0),
fox_kind: FoxKind(Default::default()),
fox_sitting: FoxSitting(false),
faceplanted: Faceplanted(false),
defending: Defending(false),
@ -3946,7 +3949,7 @@ impl Default for FoxMetadataBundle {
}
#[derive(Component, Deref, DerefMut, Clone)]
pub struct FrogVariant(pub azalea_registry::FrogVariant);
pub struct FrogVariant(pub azalea_registry::WolfSoundVariant);
#[derive(Component, Deref, DerefMut, Clone)]
pub struct TongueTarget(pub OptionalUnsignedInt);
#[derive(Component)]
@ -3959,7 +3962,7 @@ impl Frog {
match d.index {
0..=16 => AbstractAnimal::apply_metadata(entity, d)?,
17 => {
entity.insert(FrogVariant(d.value.into_frog_variant()?));
entity.insert(FrogVariant(d.value.into_wolf_sound_variant()?));
}
18 => {
entity.insert(TongueTarget(d.value.into_optional_unsigned_int()?));
@ -4025,7 +4028,7 @@ impl Default for FrogMetadataBundle {
abstract_ageable_baby: AbstractAgeableBaby(false),
},
},
frog_variant: FrogVariant(azalea_registry::FrogVariant::Temperate),
frog_variant: FrogVariant(Default::default()),
tongue_target: TongueTarget(OptionalUnsignedInt(None)),
}
}
@ -4041,8 +4044,8 @@ impl FurnaceMinecart {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
0..=13 => AbstractMinecart::apply_metadata(entity, d)?,
14 => {
0..=12 => AbstractMinecart::apply_metadata(entity, d)?,
13 => {
entity.insert(Fuel(d.value.into_boolean()?));
}
_ => {}
@ -4086,9 +4089,8 @@ impl Default for FurnaceMinecartMetadataBundle {
hurtdir: Hurtdir(1),
damage: Damage(0.0),
},
display_block: DisplayBlock(Default::default()),
display_offset: DisplayOffset(6),
custom_display: CustomDisplay(false),
custom_display_block: CustomDisplayBlock(azalea_block::BlockState::AIR),
display_offset: DisplayOffset(Default::default()),
},
fuel: Fuel(false),
}
@ -4623,7 +4625,7 @@ impl HopperMinecart {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
0..=13 => AbstractMinecart::apply_metadata(entity, d)?,
0..=12 => AbstractMinecart::apply_metadata(entity, d)?,
_ => {}
}
Ok(())
@ -4664,9 +4666,8 @@ impl Default for HopperMinecartMetadataBundle {
hurtdir: Hurtdir(1),
damage: Damage(0.0),
},
display_block: DisplayBlock(Default::default()),
display_offset: DisplayOffset(6),
custom_display: CustomDisplay(false),
custom_display_block: CustomDisplayBlock(azalea_block::BlockState::AIR),
display_offset: DisplayOffset(Default::default()),
},
}
}
@ -5454,6 +5455,57 @@ impl Default for LightningBoltMetadataBundle {
}
}
#[derive(Component)]
pub struct LingeringPotion;
impl LingeringPotion {
pub fn apply_metadata(
entity: &mut bevy_ecs::system::EntityCommands,
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
0..=8 => AbstractThrownItemProjectile::apply_metadata(entity, d)?,
_ => {}
}
Ok(())
}
}
#[derive(Bundle)]
pub struct LingeringPotionMetadataBundle {
_marker: LingeringPotion,
parent: AbstractThrownItemProjectileMetadataBundle,
}
impl Default for LingeringPotionMetadataBundle {
fn default() -> Self {
Self {
_marker: LingeringPotion,
parent: AbstractThrownItemProjectileMetadataBundle {
_marker: AbstractThrownItemProjectile,
parent: AbstractEntityMetadataBundle {
_marker: AbstractEntity,
on_fire: OnFire(false),
shift_key_down: ShiftKeyDown(false),
sprinting: Sprinting(false),
swimming: Swimming(false),
currently_glowing: CurrentlyGlowing(false),
invisible: Invisible(false),
fall_flying: FallFlying(false),
air_supply: AirSupply(Default::default()),
custom_name: CustomName(Default::default()),
custom_name_visible: CustomNameVisible(Default::default()),
silent: Silent(Default::default()),
no_gravity: NoGravity(Default::default()),
pose: Pose::default(),
ticks_frozen: TicksFrozen(Default::default()),
},
abstract_thrown_item_projectile_item_stack: AbstractThrownItemProjectileItemStack(
Default::default(),
),
},
}
}
}
#[derive(Component, Deref, DerefMut, Clone)]
pub struct Strength(pub i32);
#[derive(Component, Deref, DerefMut, Clone)]
@ -5833,7 +5885,7 @@ impl Minecart {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
0..=13 => AbstractMinecart::apply_metadata(entity, d)?,
0..=12 => AbstractMinecart::apply_metadata(entity, d)?,
_ => {}
}
Ok(())
@ -5874,9 +5926,8 @@ impl Default for MinecartMetadataBundle {
hurtdir: Hurtdir(1),
damage: Damage(0.0),
},
display_block: DisplayBlock(Default::default()),
display_offset: DisplayOffset(6),
custom_display: CustomDisplay(false),
custom_display_block: CustomDisplayBlock(azalea_block::BlockState::AIR),
display_offset: DisplayOffset(Default::default()),
},
}
}
@ -5892,7 +5943,7 @@ impl Mooshroom {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
0..=16 => Cow::apply_metadata(entity, d)?,
0..=16 => AbstractAnimal::apply_metadata(entity, d)?,
17 => {
entity.insert(MooshroomKind(d.value.into_int()?));
}
@ -5905,58 +5956,55 @@ impl Mooshroom {
#[derive(Bundle)]
pub struct MooshroomMetadataBundle {
_marker: Mooshroom,
parent: CowMetadataBundle,
parent: AbstractAnimalMetadataBundle,
mooshroom_kind: MooshroomKind,
}
impl Default for MooshroomMetadataBundle {
fn default() -> Self {
Self {
_marker: Mooshroom,
parent: CowMetadataBundle {
_marker: Cow,
parent: AbstractAnimalMetadataBundle {
_marker: AbstractAnimal,
parent: AbstractAgeableMetadataBundle {
_marker: AbstractAgeable,
parent: AbstractCreatureMetadataBundle {
_marker: AbstractCreature,
parent: AbstractInsentientMetadataBundle {
_marker: AbstractInsentient,
parent: AbstractLivingMetadataBundle {
_marker: AbstractLiving,
parent: AbstractEntityMetadataBundle {
_marker: AbstractEntity,
on_fire: OnFire(false),
shift_key_down: ShiftKeyDown(false),
sprinting: Sprinting(false),
swimming: Swimming(false),
currently_glowing: CurrentlyGlowing(false),
invisible: Invisible(false),
fall_flying: FallFlying(false),
air_supply: AirSupply(Default::default()),
custom_name: CustomName(Default::default()),
custom_name_visible: CustomNameVisible(Default::default()),
silent: Silent(Default::default()),
no_gravity: NoGravity(Default::default()),
pose: Pose::default(),
ticks_frozen: TicksFrozen(Default::default()),
},
auto_spin_attack: AutoSpinAttack(false),
abstract_living_using_item: AbstractLivingUsingItem(false),
health: Health(1.0),
effect_particles: EffectParticles(Default::default()),
effect_ambience: EffectAmbience(false),
arrow_count: ArrowCount(0),
stinger_count: StingerCount(0),
sleeping_pos: SleepingPos(None),
parent: AbstractAnimalMetadataBundle {
_marker: AbstractAnimal,
parent: AbstractAgeableMetadataBundle {
_marker: AbstractAgeable,
parent: AbstractCreatureMetadataBundle {
_marker: AbstractCreature,
parent: AbstractInsentientMetadataBundle {
_marker: AbstractInsentient,
parent: AbstractLivingMetadataBundle {
_marker: AbstractLiving,
parent: AbstractEntityMetadataBundle {
_marker: AbstractEntity,
on_fire: OnFire(false),
shift_key_down: ShiftKeyDown(false),
sprinting: Sprinting(false),
swimming: Swimming(false),
currently_glowing: CurrentlyGlowing(false),
invisible: Invisible(false),
fall_flying: FallFlying(false),
air_supply: AirSupply(Default::default()),
custom_name: CustomName(Default::default()),
custom_name_visible: CustomNameVisible(Default::default()),
silent: Silent(Default::default()),
no_gravity: NoGravity(Default::default()),
pose: Pose::default(),
ticks_frozen: TicksFrozen(Default::default()),
},
no_ai: NoAi(false),
left_handed: LeftHanded(false),
aggressive: Aggressive(false),
auto_spin_attack: AutoSpinAttack(false),
abstract_living_using_item: AbstractLivingUsingItem(false),
health: Health(1.0),
effect_particles: EffectParticles(Default::default()),
effect_ambience: EffectAmbience(false),
arrow_count: ArrowCount(0),
stinger_count: StingerCount(0),
sleeping_pos: SleepingPos(None),
},
no_ai: NoAi(false),
left_handed: LeftHanded(false),
aggressive: Aggressive(false),
},
abstract_ageable_baby: AbstractAgeableBaby(false),
},
abstract_ageable_baby: AbstractAgeableBaby(false),
},
},
mooshroom_kind: MooshroomKind(Default::default()),
@ -6670,7 +6718,7 @@ impl Default for ParrotMetadataBundle {
in_sitting_pose: InSittingPose(false),
owneruuid: Owneruuid(None),
},
parrot_variant: ParrotVariant(0),
parrot_variant: ParrotVariant(Default::default()),
}
}
}
@ -6747,7 +6795,7 @@ impl Default for PhantomMetadataBundle {
#[derive(Component, Deref, DerefMut, Clone)]
pub struct PigBoostTime(pub i32);
#[derive(Component, Deref, DerefMut, Clone)]
pub struct PigVariant(pub azalea_registry::PigVariant);
pub struct PigVariant(pub azalea_registry::FrogVariant);
#[derive(Component)]
pub struct Pig;
impl Pig {
@ -6761,7 +6809,7 @@ impl Pig {
entity.insert(PigBoostTime(d.value.into_int()?));
}
18 => {
entity.insert(PigVariant(d.value.into_pig_variant()?));
entity.insert(PigVariant(d.value.into_frog_variant()?));
}
_ => {}
}
@ -6825,7 +6873,7 @@ impl Default for PigMetadataBundle {
},
},
pig_boost_time: PigBoostTime(0),
pig_variant: PigVariant(Default::default()),
pig_variant: PigVariant(azalea_registry::FrogVariant::Temperate),
}
}
}
@ -7253,57 +7301,6 @@ impl Default for PolarBearMetadataBundle {
}
}
#[derive(Component)]
pub struct Potion;
impl Potion {
pub fn apply_metadata(
entity: &mut bevy_ecs::system::EntityCommands,
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
0..=8 => AbstractThrownItemProjectile::apply_metadata(entity, d)?,
_ => {}
}
Ok(())
}
}
#[derive(Bundle)]
pub struct PotionMetadataBundle {
_marker: Potion,
parent: AbstractThrownItemProjectileMetadataBundle,
}
impl Default for PotionMetadataBundle {
fn default() -> Self {
Self {
_marker: Potion,
parent: AbstractThrownItemProjectileMetadataBundle {
_marker: AbstractThrownItemProjectile,
parent: AbstractEntityMetadataBundle {
_marker: AbstractEntity,
on_fire: OnFire(false),
shift_key_down: ShiftKeyDown(false),
sprinting: Sprinting(false),
swimming: Swimming(false),
currently_glowing: CurrentlyGlowing(false),
invisible: Invisible(false),
fall_flying: FallFlying(false),
air_supply: AirSupply(Default::default()),
custom_name: CustomName(Default::default()),
custom_name_visible: CustomNameVisible(Default::default()),
silent: Silent(Default::default()),
no_gravity: NoGravity(Default::default()),
pose: Pose::default(),
ticks_frozen: TicksFrozen(Default::default()),
},
abstract_thrown_item_projectile_item_stack: AbstractThrownItemProjectileItemStack(
Default::default(),
),
},
}
}
}
#[derive(Component, Deref, DerefMut, Clone)]
pub struct PufferfishFromBucket(pub bool);
#[derive(Component, Deref, DerefMut, Clone)]
@ -8380,7 +8377,7 @@ impl SpawnerMinecart {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
0..=13 => AbstractMinecart::apply_metadata(entity, d)?,
0..=12 => AbstractMinecart::apply_metadata(entity, d)?,
_ => {}
}
Ok(())
@ -8421,9 +8418,8 @@ impl Default for SpawnerMinecartMetadataBundle {
hurtdir: Hurtdir(1),
damage: Damage(0.0),
},
display_block: DisplayBlock(Default::default()),
display_offset: DisplayOffset(6),
custom_display: CustomDisplay(false),
custom_display_block: CustomDisplayBlock(azalea_block::BlockState::AIR),
display_offset: DisplayOffset(Default::default()),
},
}
}
@ -8555,6 +8551,57 @@ impl Default for SpiderMetadataBundle {
}
}
#[derive(Component)]
pub struct SplashPotion;
impl SplashPotion {
pub fn apply_metadata(
entity: &mut bevy_ecs::system::EntityCommands,
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
0..=8 => AbstractThrownItemProjectile::apply_metadata(entity, d)?,
_ => {}
}
Ok(())
}
}
#[derive(Bundle)]
pub struct SplashPotionMetadataBundle {
_marker: SplashPotion,
parent: AbstractThrownItemProjectileMetadataBundle,
}
impl Default for SplashPotionMetadataBundle {
fn default() -> Self {
Self {
_marker: SplashPotion,
parent: AbstractThrownItemProjectileMetadataBundle {
_marker: AbstractThrownItemProjectile,
parent: AbstractEntityMetadataBundle {
_marker: AbstractEntity,
on_fire: OnFire(false),
shift_key_down: ShiftKeyDown(false),
sprinting: Sprinting(false),
swimming: Swimming(false),
currently_glowing: CurrentlyGlowing(false),
invisible: Invisible(false),
fall_flying: FallFlying(false),
air_supply: AirSupply(Default::default()),
custom_name: CustomName(Default::default()),
custom_name_visible: CustomNameVisible(Default::default()),
silent: Silent(Default::default()),
no_gravity: NoGravity(Default::default()),
pose: Pose::default(),
ticks_frozen: TicksFrozen(Default::default()),
},
abstract_thrown_item_projectile_item_stack: AbstractThrownItemProjectileItemStack(
Default::default(),
),
},
}
}
}
#[derive(Component)]
pub struct SpruceBoat;
impl SpruceBoat {
@ -9148,7 +9195,7 @@ impl TntMinecart {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
0..=13 => AbstractMinecart::apply_metadata(entity, d)?,
0..=12 => AbstractMinecart::apply_metadata(entity, d)?,
_ => {}
}
Ok(())
@ -9189,9 +9236,8 @@ impl Default for TntMinecartMetadataBundle {
hurtdir: Hurtdir(1),
damage: Damage(0.0),
},
display_block: DisplayBlock(Default::default()),
display_offset: DisplayOffset(6),
custom_display: CustomDisplay(false),
custom_display_block: CustomDisplayBlock(azalea_block::BlockState::AIR),
display_offset: DisplayOffset(Default::default()),
},
}
}
@ -9431,18 +9477,10 @@ impl Default for TropicalFishMetadataBundle {
}
}
#[derive(Component, Deref, DerefMut, Clone)]
pub struct TurtleHomePos(pub BlockPos);
#[derive(Component, Deref, DerefMut, Clone)]
pub struct HasEgg(pub bool);
#[derive(Component, Deref, DerefMut, Clone)]
pub struct LayingEgg(pub bool);
#[derive(Component, Deref, DerefMut, Clone)]
pub struct TravelPos(pub BlockPos);
#[derive(Component, Deref, DerefMut, Clone)]
pub struct GoingHome(pub bool);
#[derive(Component, Deref, DerefMut, Clone)]
pub struct Travelling(pub bool);
#[derive(Component)]
pub struct Turtle;
impl Turtle {
@ -9453,23 +9491,11 @@ impl Turtle {
match d.index {
0..=16 => AbstractAnimal::apply_metadata(entity, d)?,
17 => {
entity.insert(TurtleHomePos(d.value.into_block_pos()?));
}
18 => {
entity.insert(HasEgg(d.value.into_boolean()?));
}
19 => {
18 => {
entity.insert(LayingEgg(d.value.into_boolean()?));
}
20 => {
entity.insert(TravelPos(d.value.into_block_pos()?));
}
21 => {
entity.insert(GoingHome(d.value.into_boolean()?));
}
22 => {
entity.insert(Travelling(d.value.into_boolean()?));
}
_ => {}
}
Ok(())
@ -9480,12 +9506,8 @@ impl Turtle {
pub struct TurtleMetadataBundle {
_marker: Turtle,
parent: AbstractAnimalMetadataBundle,
turtle_home_pos: TurtleHomePos,
has_egg: HasEgg,
laying_egg: LayingEgg,
travel_pos: TravelPos,
going_home: GoingHome,
travelling: Travelling,
}
impl Default for TurtleMetadataBundle {
fn default() -> Self {
@ -9535,12 +9557,8 @@ impl Default for TurtleMetadataBundle {
abstract_ageable_baby: AbstractAgeableBaby(false),
},
},
turtle_home_pos: TurtleHomePos(BlockPos::new(0, 0, 0)),
has_egg: HasEgg(false),
laying_egg: LayingEgg(false),
travel_pos: TravelPos(BlockPos::new(0, 0, 0)),
going_home: GoingHome(false),
travelling: Travelling(false),
}
}
}
@ -10273,7 +10291,9 @@ pub struct WolfCollarColor(pub i32);
#[derive(Component, Deref, DerefMut, Clone)]
pub struct WolfRemainingAngerTime(pub i32);
#[derive(Component, Deref, DerefMut, Clone)]
pub struct WolfVariant(pub azalea_registry::WolfVariant);
pub struct WolfVariant(pub azalea_registry::CowVariant);
#[derive(Component, Deref, DerefMut, Clone)]
pub struct SoundVariant(pub azalea_registry::WolfVariant);
#[derive(Component)]
pub struct Wolf;
impl Wolf {
@ -10293,7 +10313,10 @@ impl Wolf {
entity.insert(WolfRemainingAngerTime(d.value.into_int()?));
}
22 => {
entity.insert(WolfVariant(d.value.into_wolf_variant()?));
entity.insert(WolfVariant(d.value.into_cow_variant()?));
}
23 => {
entity.insert(SoundVariant(d.value.into_wolf_variant()?));
}
_ => {}
}
@ -10309,6 +10332,7 @@ pub struct WolfMetadataBundle {
wolf_collar_color: WolfCollarColor,
wolf_remaining_anger_time: WolfRemainingAngerTime,
wolf_variant: WolfVariant,
sound_variant: SoundVariant,
}
impl Default for WolfMetadataBundle {
fn default() -> Self {
@ -10368,6 +10392,7 @@ impl Default for WolfMetadataBundle {
wolf_collar_color: WolfCollarColor(Default::default()),
wolf_remaining_anger_time: WolfRemainingAngerTime(0),
wolf_variant: WolfVariant(Default::default()),
sound_variant: SoundVariant(Default::default()),
}
}
}
@ -11735,14 +11760,11 @@ impl AbstractMinecart {
match d.index {
0..=10 => AbstractVehicle::apply_metadata(entity, d)?,
11 => {
entity.insert(DisplayBlock(d.value.into_int()?));
entity.insert(CustomDisplayBlock(d.value.into_optional_block_state()?));
}
12 => {
entity.insert(DisplayOffset(d.value.into_int()?));
}
13 => {
entity.insert(CustomDisplay(d.value.into_boolean()?));
}
_ => {}
}
Ok(())
@ -11753,9 +11775,8 @@ impl AbstractMinecart {
pub struct AbstractMinecartMetadataBundle {
_marker: AbstractMinecart,
parent: AbstractVehicleMetadataBundle,
display_block: DisplayBlock,
custom_display_block: CustomDisplayBlock,
display_offset: DisplayOffset,
custom_display: CustomDisplay,
}
impl Default for AbstractMinecartMetadataBundle {
fn default() -> Self {
@ -11784,9 +11805,8 @@ impl Default for AbstractMinecartMetadataBundle {
hurtdir: Hurtdir(1),
damage: Damage(0.0),
},
display_block: DisplayBlock(Default::default()),
display_offset: DisplayOffset(6),
custom_display: CustomDisplay(false),
custom_display_block: CustomDisplayBlock(azalea_block::BlockState::AIR),
display_offset: DisplayOffset(Default::default()),
}
}
}
@ -12739,6 +12759,11 @@ pub fn apply_metadata(
LightningBolt::apply_metadata(entity, d)?;
}
}
azalea_registry::EntityKind::LingeringPotion => {
for d in items {
LingeringPotion::apply_metadata(entity, d)?;
}
}
azalea_registry::EntityKind::Llama => {
for d in items {
Llama::apply_metadata(entity, d)?;
@ -12864,11 +12889,6 @@ pub fn apply_metadata(
PolarBear::apply_metadata(entity, d)?;
}
}
azalea_registry::EntityKind::Potion => {
for d in items {
Potion::apply_metadata(entity, d)?;
}
}
azalea_registry::EntityKind::Pufferfish => {
for d in items {
Pufferfish::apply_metadata(entity, d)?;
@ -12959,6 +12979,11 @@ pub fn apply_metadata(
Spider::apply_metadata(entity, d)?;
}
}
azalea_registry::EntityKind::SplashPotion => {
for d in items {
SplashPotion::apply_metadata(entity, d)?;
}
}
azalea_registry::EntityKind::SpruceBoat => {
for d in items {
SpruceBoat::apply_metadata(entity, d)?;
@ -13341,6 +13366,9 @@ pub fn apply_default_metadata(
azalea_registry::EntityKind::LightningBolt => {
entity.insert(LightningBoltMetadataBundle::default());
}
azalea_registry::EntityKind::LingeringPotion => {
entity.insert(LingeringPotionMetadataBundle::default());
}
azalea_registry::EntityKind::Llama => {
entity.insert(LlamaMetadataBundle::default());
}
@ -13416,9 +13444,6 @@ pub fn apply_default_metadata(
azalea_registry::EntityKind::PolarBear => {
entity.insert(PolarBearMetadataBundle::default());
}
azalea_registry::EntityKind::Potion => {
entity.insert(PotionMetadataBundle::default());
}
azalea_registry::EntityKind::Pufferfish => {
entity.insert(PufferfishMetadataBundle::default());
}
@ -13473,6 +13498,9 @@ pub fn apply_default_metadata(
azalea_registry::EntityKind::Spider => {
entity.insert(SpiderMetadataBundle::default());
}
azalea_registry::EntityKind::SplashPotion => {
entity.insert(SplashPotionMetadataBundle::default());
}
azalea_registry::EntityKind::SpruceBoat => {
entity.insert(SpruceBoatMetadataBundle::default());
}

View file

@ -70,10 +70,6 @@ pub fn from_kind(
DataComponentKind::CanBreak => Box::new(CanBreak::azalea_read(buf)?),
DataComponentKind::AttributeModifiers => Box::new(AttributeModifiers::azalea_read(buf)?),
DataComponentKind::CustomModelData => Box::new(CustomModelData::azalea_read(buf)?),
DataComponentKind::HideAdditionalTooltip => {
Box::new(HideAdditionalTooltip::azalea_read(buf)?)
}
DataComponentKind::HideTooltip => Box::new(HideTooltip::azalea_read(buf)?),
DataComponentKind::RepairCost => Box::new(RepairCost::azalea_read(buf)?),
DataComponentKind::CreativeSlotLock => Box::new(CreativeSlotLock::azalea_read(buf)?),
DataComponentKind::EnchantmentGlintOverride => {
@ -160,6 +156,18 @@ pub fn from_kind(
DataComponentKind::CatCollar => Box::new(CatCollar::azalea_read(buf)?),
DataComponentKind::SheepColor => Box::new(SheepColor::azalea_read(buf)?),
DataComponentKind::ShulkerColor => Box::new(ShulkerColor::azalea_read(buf)?),
DataComponentKind::TooltipDisplay => Box::new(TooltipDisplay::azalea_read(buf)?),
DataComponentKind::BlocksAttacks => Box::new(BlocksAttacks::azalea_read(buf)?),
DataComponentKind::ProvidesTrimMaterial => {
Box::new(ProvidesTrimMaterial::azalea_read(buf)?)
}
DataComponentKind::ProvidesBannerPatterns => {
Box::new(ProvidesBannerPatterns::azalea_read(buf)?)
}
DataComponentKind::BreakSound => Box::new(BreakSound::azalea_read(buf)?),
DataComponentKind::WolfSoundVariant => Box::new(WolfSoundVariant::azalea_read(buf)?),
DataComponentKind::CowVariant => Box::new(CowVariant::azalea_read(buf)?),
DataComponentKind::ChickenVariant => Box::new(ChickenVariant::azalea_read(buf)?),
})
}
@ -362,18 +370,6 @@ impl DataComponent for CustomModelData {
const KIND: DataComponentKind = DataComponentKind::CustomModelData;
}
#[derive(Clone, PartialEq, AzBuf)]
pub struct HideAdditionalTooltip;
impl DataComponent for HideAdditionalTooltip {
const KIND: DataComponentKind = DataComponentKind::HideAdditionalTooltip;
}
#[derive(Clone, PartialEq, AzBuf)]
pub struct HideTooltip;
impl DataComponent for HideTooltip {
const KIND: DataComponentKind = DataComponentKind::HideTooltip;
}
#[derive(Clone, PartialEq, AzBuf)]
pub struct RepairCost {
#[var]
@ -1147,3 +1143,67 @@ pub struct ShulkerColor {
impl DataComponent for ShulkerColor {
const KIND: DataComponentKind = DataComponentKind::ShulkerColor;
}
#[derive(Clone, PartialEq, AzBuf)]
pub struct TooltipDisplay {
pub todo: todo!(), // see DataComponents.java
}
impl DataComponent for TooltipDisplay {
const KIND: DataComponentKind = DataComponentKind::TooltipDisplay;
}
#[derive(Clone, PartialEq, AzBuf)]
pub struct BlocksAttacks {
pub todo: todo!(), // see DataComponents.java
}
impl DataComponent for BlocksAttacks {
const KIND: DataComponentKind = DataComponentKind::BlocksAttacks;
}
#[derive(Clone, PartialEq, AzBuf)]
pub struct ProvidesTrimMaterial {
pub todo: todo!(), // see DataComponents.java
}
impl DataComponent for ProvidesTrimMaterial {
const KIND: DataComponentKind = DataComponentKind::ProvidesTrimMaterial;
}
#[derive(Clone, PartialEq, AzBuf)]
pub struct ProvidesBannerPatterns {
pub todo: todo!(), // see DataComponents.java
}
impl DataComponent for ProvidesBannerPatterns {
const KIND: DataComponentKind = DataComponentKind::ProvidesBannerPatterns;
}
#[derive(Clone, PartialEq, AzBuf)]
pub struct BreakSound {
pub todo: todo!(), // see DataComponents.java
}
impl DataComponent for BreakSound {
const KIND: DataComponentKind = DataComponentKind::BreakSound;
}
#[derive(Clone, PartialEq, AzBuf)]
pub struct WolfSoundVariant {
pub todo: todo!(), // see DataComponents.java
}
impl DataComponent for WolfSoundVariant {
const KIND: DataComponentKind = DataComponentKind::WolfSoundVariant;
}
#[derive(Clone, PartialEq, AzBuf)]
pub struct CowVariant {
pub todo: todo!(), // see DataComponents.java
}
impl DataComponent for CowVariant {
const KIND: DataComponentKind = DataComponentKind::CowVariant;
}
#[derive(Clone, PartialEq, AzBuf)]
pub struct ChickenVariant {
pub todo: todo!(), // see DataComponents.java
}
impl DataComponent for ChickenVariant {
const KIND: DataComponentKind = DataComponentKind::ChickenVariant;
}

View file

@ -89,6 +89,8 @@
"advancements.adventure.two_birds_one_arrow.title": "Two Birds, One Arrow",
"advancements.adventure.under_lock_and_key.description": "Unlock a Vault with a Trial Key",
"advancements.adventure.under_lock_and_key.title": "Under Lock and Key",
"advancements.adventure.use_lodestone.description": "Use a Compass on a Lodestone",
"advancements.adventure.use_lodestone.title": "Country Lode, Take Me Home",
"advancements.adventure.very_very_frightening.description": "Strike a Villager with lightning",
"advancements.adventure.very_very_frightening.title": "Very Very Frightening",
"advancements.adventure.voluntary_exile.description": "Kill a raid captain.\nMaybe consider staying away from villages for the time being...",
@ -354,6 +356,7 @@
"argument.message.too_long": "Chat message was too long (%s > maximum %s characters)",
"argument.nbt.array.invalid": "Invalid array type '%s'",
"argument.nbt.array.mixed": "Can't insert %s into %s",
"argument.nbt.expected.compound": "Expected compound tag",
"argument.nbt.expected.key": "Expected key",
"argument.nbt.expected.value": "Expected value",
"argument.nbt.list.mixed": "Can't insert %s into list of %s",
@ -1388,7 +1391,9 @@
"block.minecraft.bubble_coral_fan": "Bubble Coral Fan",
"block.minecraft.bubble_coral_wall_fan": "Bubble Coral Wall Fan",
"block.minecraft.budding_amethyst": "Budding Amethyst",
"block.minecraft.bush": "Bush",
"block.minecraft.cactus": "Cactus",
"block.minecraft.cactus_flower": "Cactus Flower",
"block.minecraft.cake": "Cake",
"block.minecraft.calcite": "Calcite",
"block.minecraft.calibrated_sculk_sensor": "Calibrated Sculk Sensor",
@ -1619,6 +1624,7 @@
"block.minecraft.fire_coral_block": "Fire Coral Block",
"block.minecraft.fire_coral_fan": "Fire Coral Fan",
"block.minecraft.fire_coral_wall_fan": "Fire Coral Wall Fan",
"block.minecraft.firefly_bush": "Firefly Bush",
"block.minecraft.fletching_table": "Fletching Table",
"block.minecraft.flower_pot": "Flower Pot",
"block.minecraft.flowering_azalea": "Flowering Azalea",
@ -2099,6 +2105,7 @@
"block.minecraft.sea_pickle": "Sea Pickle",
"block.minecraft.seagrass": "Seagrass",
"block.minecraft.set_spawn": "Respawn point set",
"block.minecraft.short_dry_grass": "Short Dry Grass",
"block.minecraft.short_grass": "Short Grass",
"block.minecraft.shroomlight": "Shroomlight",
"block.minecraft.shulker_box": "Shulker Box",
@ -2195,6 +2202,7 @@
"block.minecraft.suspicious_gravel": "Suspicious Gravel",
"block.minecraft.suspicious_sand": "Suspicious Sand",
"block.minecraft.sweet_berry_bush": "Sweet Berry Bush",
"block.minecraft.tall_dry_grass": "Tall Dry Grass",
"block.minecraft.tall_grass": "Tall Grass",
"block.minecraft.tall_seagrass": "Tall Seagrass",
"block.minecraft.target": "Target",
@ -2855,25 +2863,30 @@
"commands.teleport.success.location.single": "Teleported %s to %s, %s, %s",
"commands.test.batch.starting": "Starting environment %s batch %s",
"commands.test.clear.error.no_tests": "Could not find any tests to clear",
"commands.test.clear.success": "Cleared %s structures",
"commands.test.clear.success": "Cleared %s structure(s)",
"commands.test.coordinates": "%s, %s, %s",
"commands.test.coordinates.copy": "Click to copy to clipboard",
"commands.test.create.success": "Created test setup for test %s",
"commands.test.error.no_test_containing_pos": "Can't find a test instance that contains %s, %s, %s",
"commands.test.error.no_test_instances": "Found no test instances",
"commands.test.error.non_existant_test": "Test %s could not be found",
"commands.test.error.structure_not_found": "Test structure %s could not be found",
"commands.test.error.test_instance_not_found": "Test instance block entity could not be found",
"commands.test.error.test_instance_not_found.position": "Test instance block entity could not be found for test at %s, %s, %s",
"commands.test.error.too_large": "The structure size must be less than %s blocks along each axis",
"commands.test.locate.done": "Finished locating, found %s structure(s)",
"commands.test.locate.found": "Found structure at: %s (distance: %s)",
"commands.test.locate.started": "Started locating test structures, this might take a while...",
"commands.test.no_tests": "No tests to run",
"commands.test.relative_position": "Position relative to %s: %s",
"commands.test.reset.error.no_tests": "Could not find any tests to reset",
"commands.test.reset.success": "Reset %s structure(s)",
"commands.test.run.no_tests": "No tests found",
"commands.test.run.running": "Running %s tests...",
"commands.test.summary": "Game Test complete! %s tests were run",
"commands.test.run.running": "Running %s test(s)...",
"commands.test.summary": "Game Test complete! %s test(s) were run",
"commands.test.summary.all_required_passed": "All required tests passed :)",
"commands.test.summary.failed": "%s required tests failed :(",
"commands.test.summary.optional_failed": "%s optional tests failed",
"commands.test.summary.failed": "%s required test(s) failed :(",
"commands.test.summary.optional_failed": "%s optional test(s) failed",
"commands.tick.query.percentiles": "Percentiles: P50: %sms P95: %sms P99: %sms, sample: %s",
"commands.tick.query.rate.running": "Target tick rate: %s per second.\nAverage time per tick: %sms (Target: %sms)",
"commands.tick.query.rate.sprinting": "Target tick rate: %s per second (ignored, reference only).\nAverage time per tick: %sms",
@ -3419,6 +3432,7 @@
"entity.minecraft.killer_bunny": "The Killer Bunny",
"entity.minecraft.leash_knot": "Leash Knot",
"entity.minecraft.lightning_bolt": "Lightning Bolt",
"entity.minecraft.lingering_potion": "Lingering Potion",
"entity.minecraft.llama": "Llama",
"entity.minecraft.llama_spit": "Llama Spit",
"entity.minecraft.magma_cube": "Magma Cube",
@ -3463,6 +3477,7 @@
"entity.minecraft.spawner_minecart": "Minecart with Monster Spawner",
"entity.minecraft.spectral_arrow": "Spectral Arrow",
"entity.minecraft.spider": "Spider",
"entity.minecraft.splash_potion": "Splash Potion",
"entity.minecraft.spruce_boat": "Spruce Boat",
"entity.minecraft.spruce_chest_boat": "Spruce Boat with Chest",
"entity.minecraft.squid": "Squid",
@ -3580,6 +3595,8 @@
"gameMode.hardcore": "Hardcore Mode",
"gameMode.spectator": "Spectator Mode",
"gameMode.survival": "Survival Mode",
"gamerule.allowFireTicksAwayFromPlayer": "Tick fire away from players",
"gamerule.allowFireTicksAwayFromPlayer.description": "Controls whether or not fire and lava should be able to tick further than 8 chunks away from any player",
"gamerule.announceAdvancements": "Announce advancements",
"gamerule.blockExplosionDropDecay": "In block interaction explosions, some blocks won't drop their loot",
"gamerule.blockExplosionDropDecay.description": "Some of the drops from blocks destroyed by explosions caused by block interactions are lost in the explosion.",
@ -3937,6 +3954,7 @@
"item.minecraft.blaze_spawn_egg": "Blaze Spawn Egg",
"item.minecraft.blue_bundle": "Blue Bundle",
"item.minecraft.blue_dye": "Blue Dye",
"item.minecraft.blue_egg": "Blue Egg",
"item.minecraft.bogged_spawn_egg": "Bogged Spawn Egg",
"item.minecraft.bolt_armor_trim_smithing_template": "Smithing Template",
"item.minecraft.bolt_armor_trim_smithing_template.new": "Bolt Armor Trim",
@ -3955,6 +3973,7 @@
"item.minecraft.brick": "Brick",
"item.minecraft.brown_bundle": "Brown Bundle",
"item.minecraft.brown_dye": "Brown Dye",
"item.minecraft.brown_egg": "Brown Egg",
"item.minecraft.brush": "Brush",
"item.minecraft.bucket": "Bucket",
"item.minecraft.bundle": "Bundle",
@ -4009,6 +4028,8 @@
"item.minecraft.creeper_spawn_egg": "Creeper Spawn Egg",
"item.minecraft.crossbow": "Crossbow",
"item.minecraft.crossbow.projectile": "Projectile:",
"item.minecraft.crossbow.projectile.multiple": "Projectile: %s x %s",
"item.minecraft.crossbow.projectile.single": "Projectile: %s",
"item.minecraft.cyan_bundle": "Cyan Bundle",
"item.minecraft.cyan_dye": "Cyan Dye",
"item.minecraft.danger_pottery_shard": "Danger Pottery Shard",
@ -4065,6 +4086,8 @@
"item.minecraft.fire_charge": "Fire Charge",
"item.minecraft.firework_rocket": "Firework Rocket",
"item.minecraft.firework_rocket.flight": "Flight Duration:",
"item.minecraft.firework_rocket.multiple_stars": "%s x %s",
"item.minecraft.firework_rocket.single_star": "%s",
"item.minecraft.firework_star": "Firework Star",
"item.minecraft.firework_star.black": "Black",
"item.minecraft.firework_star.blue": "Blue",
@ -4608,6 +4631,7 @@
"item.modifiers.legs": "When on Legs:",
"item.modifiers.mainhand": "When in Main Hand:",
"item.modifiers.offhand": "When in Off Hand:",
"item.modifiers.saddle": "When saddled:",
"item.nbt_tags": "NBT: %s tag(s)",
"item.op_block_warning.line1": "Warning:",
"item.op_block_warning.line2": "Use of this item might lead to command execution",
@ -4843,15 +4867,15 @@
"mco.backup.generate.world": "Generate world",
"mco.backup.info.title": "Changes From Last Backup",
"mco.backup.narration": "Backup from %s",
"mco.backup.nobackups": "This realm doesn't have any backups currently.",
"mco.backup.restoring": "Restoring your realm",
"mco.backup.nobackups": "This Realm doesn't have any backups currently.",
"mco.backup.restoring": "Restoring your Realm",
"mco.backup.unknown": "UNKNOWN",
"mco.brokenworld.download": "Download",
"mco.brokenworld.downloaded": "Downloaded",
"mco.brokenworld.message.line1": "Please reset or select another world.",
"mco.brokenworld.message.line2": "You can also choose to download the world to singleplayer.",
"mco.brokenworld.minigame.title": "This minigame is no longer supported",
"mco.brokenworld.nonowner.error": "Please wait for the realm owner to reset the world",
"mco.brokenworld.nonowner.error": "Please wait for the Realm owner to reset the world",
"mco.brokenworld.nonowner.title": "World is out of date",
"mco.brokenworld.play": "Play",
"mco.brokenworld.reset": "Reset",
@ -4890,12 +4914,12 @@
"mco.configure.world.buttons.settings": "Settings",
"mco.configure.world.buttons.subscription": "Subscription",
"mco.configure.world.buttons.switchminigame": "Switch Minigame",
"mco.configure.world.close.question.line1": "Your realm will become unavailable.",
"mco.configure.world.close.question.line1": "Your Realm will become unavailable.",
"mco.configure.world.close.question.line2": "Are you sure you want to continue?",
"mco.configure.world.closing": "Closing the realm...",
"mco.configure.world.closing": "Closing the Realm...",
"mco.configure.world.commandBlocks": "Command Blocks",
"mco.configure.world.delete.button": "Delete Realm",
"mco.configure.world.delete.question.line1": "Your realm will be permanently deleted",
"mco.configure.world.delete.question.line1": "Your Realm will be permanently deleted",
"mco.configure.world.delete.question.line2": "Are you sure you want to continue?",
"mco.configure.world.description": "Realm Description",
"mco.configure.world.edit.slot.name": "World Name",
@ -4910,20 +4934,20 @@
"mco.configure.world.invites.normal.tooltip": "Normal User",
"mco.configure.world.invites.ops.tooltip": "Operator",
"mco.configure.world.invites.remove.tooltip": "Remove",
"mco.configure.world.leave.question.line1": "If you leave this realm you won't see it unless you are invited again",
"mco.configure.world.leave.question.line1": "If you leave this Realm you won't see it unless you are invited again",
"mco.configure.world.leave.question.line2": "Are you sure you want to continue?",
"mco.configure.world.location": "Location",
"mco.configure.world.minigame": "Current: %s",
"mco.configure.world.name": "Realm Name",
"mco.configure.world.opening": "Opening the realm...",
"mco.configure.world.opening": "Opening the Realm...",
"mco.configure.world.players.error": "A player with the provided name does not exist",
"mco.configure.world.players.inviting": "Inviting player...",
"mco.configure.world.players.title": "Players",
"mco.configure.world.pvp": "PVP",
"mco.configure.world.reset.question.line1": "Your world will be regenerated and your current world will be lost",
"mco.configure.world.reset.question.line2": "Are you sure you want to continue?",
"mco.configure.world.resourcepack.question": "You need a custom resource pack to play on this realm\n\nDo you want to download it and play?",
"mco.configure.world.resourcepack.question.line1": "You need a custom resource pack to play on this realm",
"mco.configure.world.resourcepack.question": "You need a custom resource pack to play on this Realm\n\nDo you want to download it and play?",
"mco.configure.world.resourcepack.question.line1": "You need a custom resource pack to play on this Realm",
"mco.configure.world.resourcepack.question.line2": "Do you want to download it and play?",
"mco.configure.world.restore.download.question.line1": "The world will be downloaded and added to your single player worlds.",
"mco.configure.world.restore.download.question.line2": "Do you want to continue?",
@ -4932,7 +4956,7 @@
"mco.configure.world.settings.title": "Settings",
"mco.configure.world.slot": "World %s",
"mco.configure.world.slot.empty": "Empty",
"mco.configure.world.slot.switch.question.line1": "Your realm will be switched to another world",
"mco.configure.world.slot.switch.question.line1": "Your Realm will be switched to another world",
"mco.configure.world.slot.switch.question.line2": "Are you sure you want to continue?",
"mco.configure.world.slot.tooltip": "Switch to world",
"mco.configure.world.slot.tooltip.active": "Join",
@ -4968,20 +4992,20 @@
"mco.configure.world.uninvite.question": "Are you sure that you want to uninvite",
"mco.configure.worlds.title": "Worlds",
"mco.connect.authorizing": "Logging in...",
"mco.connect.connecting": "Connecting to the realm...",
"mco.connect.failed": "Failed to connect to the realm",
"mco.connect.connecting": "Connecting to the Realm...",
"mco.connect.failed": "Failed to connect to the Realm",
"mco.connect.success": "Done",
"mco.create.world": "Create",
"mco.create.world.error": "You must enter a name!",
"mco.create.world.failed": "Failed to create world!",
"mco.create.world.reset.title": "Creating world...",
"mco.create.world.skip": "Skip",
"mco.create.world.subtitle": "Optionally, select what world to put on your new realm",
"mco.create.world.wait": "Creating the realm...",
"mco.create.world.subtitle": "Optionally, select what world to put on your new Realm",
"mco.create.world.wait": "Creating the Realm...",
"mco.download.cancelled": "Download cancelled",
"mco.download.confirmation.line1": "The world you are going to download is larger than %s",
"mco.download.confirmation.line2": "You won't be able to upload this world to your realm again",
"mco.download.confirmation.oversized": "The world you are going to download is larger than %s\n\nYou won't be able to upload this world to your realm again",
"mco.download.confirmation.line2": "You won't be able to upload this world to your Realm again",
"mco.download.confirmation.oversized": "The world you are going to download is larger than %s\n\nYou won't be able to upload this world to your Realm again",
"mco.download.done": "Download done",
"mco.download.downloading": "Downloading",
"mco.download.extracting": "Extracting",
@ -5027,7 +5051,7 @@
"mco.minigame.world.info.line2": "You can later return to your original world without losing anything.",
"mco.minigame.world.noSelection": "Please make a selection",
"mco.minigame.world.restore": "Ending Minigame...",
"mco.minigame.world.restore.question.line1": "The minigame will end and your realm will be restored.",
"mco.minigame.world.restore.question.line1": "The minigame will end and your Realm will be restored.",
"mco.minigame.world.restore.question.line2": "Are you sure you want to continue?",
"mco.minigame.world.selected": "Selected Minigame:",
"mco.minigame.world.slot.screen.title": "Switching World...",
@ -5054,16 +5078,16 @@
"mco.reset.world.template": "World Templates",
"mco.reset.world.title": "Reset World",
"mco.reset.world.upload": "Upload world",
"mco.reset.world.warning": "This will replace the current world of your realm",
"mco.reset.world.warning": "This will replace the current world of your Realm",
"mco.selectServer.buy": "Buy a Realm!",
"mco.selectServer.close": "Close",
"mco.selectServer.closed": "Closed realm",
"mco.selectServer.closeserver": "Close realm",
"mco.selectServer.closed": "Closed Realm",
"mco.selectServer.closeserver": "Close Realm",
"mco.selectServer.configure": "Configure",
"mco.selectServer.configureRealm": "Configure realm",
"mco.selectServer.configureRealm": "Configure Realm",
"mco.selectServer.create": "Create Realm",
"mco.selectServer.create.subtitle": "Select what world to put on your new realm",
"mco.selectServer.expired": "Expired realm",
"mco.selectServer.create.subtitle": "Select what world to put on your new Realm",
"mco.selectServer.expired": "Expired Realm",
"mco.selectServer.expiredList": "Your subscription has expired",
"mco.selectServer.expiredRenew": "Renew",
"mco.selectServer.expiredSubscribe": "Subscribe",
@ -5079,13 +5103,13 @@
"mco.selectServer.minigameNotSupportedInVersion": "Can't play this minigame in %s",
"mco.selectServer.noRealms": "You don't seem to have a Realm. Add a Realm to play together with your friends.",
"mco.selectServer.note": "Note:",
"mco.selectServer.open": "Open realm",
"mco.selectServer.openserver": "Open realm",
"mco.selectServer.open": "Open Realm",
"mco.selectServer.openserver": "Open Realm",
"mco.selectServer.play": "Play",
"mco.selectServer.popup": "Realms is a safe, simple way to enjoy an online Minecraft world with up to ten friends at a time. It supports loads of minigames and plenty of custom worlds! Only the owner of the realm needs to pay.",
"mco.selectServer.purchase": "Add Realm",
"mco.selectServer.trial": "Get a Trial!",
"mco.selectServer.uninitialized": "Click to start your new realm!",
"mco.selectServer.uninitialized": "Click to start your new Realm!",
"mco.snapshot.createSnapshotPopup.text": "You are about to create a free Snapshot Realm that will be paired with your paid Realms subscription. This new Snapshot Realm will be accessible for as long as the paid subscription is active. Your paid Realm will not be affected.",
"mco.snapshot.createSnapshotPopup.title": "Create Snapshot Realm?",
"mco.snapshot.creating": "Creating Snapshot Realm...",
@ -5124,11 +5148,11 @@
"mco.time.minutesAgo": "%1$s minute(s) ago",
"mco.time.now": "right now",
"mco.time.secondsAgo": "%1$s second(s) ago",
"mco.trial.message.line1": "Want to get your own realm?",
"mco.trial.message.line1": "Want to get your own Realm?",
"mco.trial.message.line2": "Click here for more info!",
"mco.upload.button.name": "Upload",
"mco.upload.cancelled": "Upload cancelled",
"mco.upload.close.failure": "Could not close your realm, please try again later",
"mco.upload.close.failure": "Could not close your Realm, please try again later",
"mco.upload.done": "Upload done",
"mco.upload.entry.cheats": "%1$s, %2$s",
"mco.upload.entry.commands": "%1$s, %2$s",
@ -5894,6 +5918,22 @@
"sleep.skipping_night": "Sleeping through this night",
"slot.only_single_allowed": "Only single slots allowed, got '%s'",
"slot.unknown": "Unknown slot '%s'",
"snbt.parser.empty_key": "Key cannot be empty",
"snbt.parser.expected_binary_numeral": "Expected a binary number",
"snbt.parser.expected_decimal_numeral": "Expected a decimal number",
"snbt.parser.expected_float_type": "Expected a floating point number",
"snbt.parser.expected_hex_escape": "Expected a character literal of length %s",
"snbt.parser.expected_hex_numeral": "Expected a hexadecimal number",
"snbt.parser.expected_integer_type": "Expected an integer number",
"snbt.parser.expected_non_negative_number": "Expected a non-negative number",
"snbt.parser.expected_unquoted_string": "Expected a valid unquoted string",
"snbt.parser.invalid_array_element_type": "Invalid array element type",
"snbt.parser.invalid_character_name": "Invalid Unicode character name",
"snbt.parser.invalid_string_contents": "Invalid string contents",
"snbt.parser.invalid_unquoted_start": "Unquoted strings can't start with digits 0-9, + or -",
"snbt.parser.leading_zero_not_allowed": "Decimal numbers can't start with 0",
"snbt.parser.number_parse_failure": "Failed to parse number: %s",
"snbt.parser.undescore_not_allowed": "Underscore characters are not allowed at the start or end of a number",
"soundCategory.ambient": "Ambient/Environment",
"soundCategory.block": "Blocks",
"soundCategory.hostile": "Hostile Creatures",
@ -6018,10 +6058,10 @@
"structure_block.load_not_found": "Structure '%s' is not available",
"structure_block.load_prepare": "Structure '%s' position prepared",
"structure_block.load_success": "Structure loaded from '%s'",
"structure_block.mode_info.corner": "Corner Mode - Placement and Size Marker",
"structure_block.mode_info.data": "Data Mode - Game Logic Marker",
"structure_block.mode_info.load": "Load Mode - Load from File",
"structure_block.mode_info.save": "Save Mode - Write to File",
"structure_block.mode_info.corner": "Corner Mode - Placement and size marker",
"structure_block.mode_info.data": "Data Mode - Game logic marker",
"structure_block.mode_info.load": "Load Mode - Load from file",
"structure_block.mode_info.save": "Save Mode - Write to file",
"structure_block.mode.corner": "Corner",
"structure_block.mode.data": "Data",
"structure_block.mode.load": "Load",
@ -6098,6 +6138,7 @@
"subtitles.block.creaking_heart.hurt": "Creaking Heart grumbles",
"subtitles.block.creaking_heart.idle": "Eerie noise",
"subtitles.block.creaking_heart.spawn": "Creaking Heart awakens",
"subtitles.block.deadbush.idle": "Dry sounds",
"subtitles.block.decorated_pot.insert": "Decorated Pot fills",
"subtitles.block.decorated_pot.insert_fail": "Decorated Pot wobbles",
"subtitles.block.decorated_pot.shatter": "Decorated Pot shatters",
@ -6113,6 +6154,7 @@
"subtitles.block.fence_gate.toggle": "Fence Gate creaks",
"subtitles.block.fire.ambient": "Fire crackles",
"subtitles.block.fire.extinguish": "Fire extinguished",
"subtitles.block.firefly_bush.idle": "Fireflies buzz",
"subtitles.block.frogspawn.hatch": "Tadpole hatches",
"subtitles.block.furnace.fire_crackle": "Furnace crackles",
"subtitles.block.generic.break": "Block broken",
@ -6147,6 +6189,8 @@
"subtitles.block.respawn_anchor.charge": "Respawn Anchor is charged",
"subtitles.block.respawn_anchor.deplete": "Respawn Anchor depletes",
"subtitles.block.respawn_anchor.set_spawn": "Respawn Anchor sets spawn",
"subtitles.block.sand.idle": "Sandy sounds",
"subtitles.block.sand.wind": "Windy sounds",
"subtitles.block.sculk_catalyst.bloom": "Sculk Catalyst blooms",
"subtitles.block.sculk_sensor.clicking": "Sculk Sensor clicks",
"subtitles.block.sculk_sensor.clicking_stop": "Sculk Sensor stops clicking",
@ -6781,10 +6825,13 @@
"subtitles.entity.wither.shoot": "Wither attacks",
"subtitles.entity.wither.spawn": "Wither released",
"subtitles.entity.wolf.ambient": "Wolf pants",
"subtitles.entity.wolf.bark": "Wolf barks",
"subtitles.entity.wolf.death": "Wolf dies",
"subtitles.entity.wolf.growl": "Wolf growls",
"subtitles.entity.wolf.hurt": "Wolf hurts",
"subtitles.entity.wolf.pant": "Wolf pants",
"subtitles.entity.wolf.shake": "Wolf shakes",
"subtitles.entity.wolf.whine": "Wolf whines",
"subtitles.entity.zoglin.ambient": "Zoglin growls",
"subtitles.entity.zoglin.angry": "Zoglin growls angrily",
"subtitles.entity.zoglin.attack": "Zoglin attacks",
@ -6973,17 +7020,22 @@
"test_block.mode.log": "Log",
"test_block.mode.start": "Start",
"test_instance_block.entities": "Entities:",
"test_instance_block.error.no_test": "Unable to run test instance at %s, %s, %s since it has defined test",
"test_instance_block.error.no_test": "Unable to run test instance at %s, %s, %s since it has an undefined test",
"test_instance_block.error.no_test_structure": "Unable to run test instance at %s, %s, %s since it has no test structure",
"test_instance_block.error.unable_to_save": "Unable to save test structure template for test instance at %s, %s, %s",
"test_instance_block.invalid": "[invalid]",
"test_instance_block.reset_success": "Reset succeded for test: %s",
"test_instance_block.reset_success": "Reset succeeded for test: %s",
"test_instance_block.rotation": "Rotation:",
"test_instance_block.size": "Test Structure Size",
"test_instance_block.starting": "Starting test %s",
"test_instance_block.test_id": "Test Instance ID",
"test_instance.action.reset": "Reset and Load",
"test_instance.action.run": "Load and Run",
"test_instance.action.save": "Save Structure",
"test_instance.description.batch": "Batch: %s",
"test_instance.description.failed": "Failed: %s",
"test_instance.description.function": "Function: %s",
"test_instance.description.invalid_id": "Invalid test ID",
"test_instance.description.no_test": "No such test",
"test_instance.description.structure": "Structure: %s",
"test_instance.description.type": "Type: %s",
@ -7022,11 +7074,16 @@
"test.error.set_biome": "Failed to set biome for test",
"test.error.spawn_failure": "Failed to create entity %s",
"test.error.state_not_equal": "Incorrect state. Expected %s, was %s",
"test.error.structure.failure": "Failed to place test structure for %s",
"test.error.tick": "%s on tick %s",
"test.error.ticking_without_structure": "Ticking test before placing structure",
"test.error.timeout.no_result": "Didn't succeed or fail within %s ticks",
"test.error.timeout.no_sequences_finished": "No sequences finished within %s ticks",
"test.error.too_many_entities": "Expected only one %s to exist around %s, %s, %s but found %s",
"test.error.unexpected_block": "Did not expect block to be %s",
"test.error.unexpected_entity": "Did not expect %s to exist",
"test.error.unexpected_item": "Did not expect item of type %s",
"test.error.unknown": "Unknown internal error: %s",
"test.error.value_not_equal": "Expected %s to be %s, was %s",
"test.error.wrong_block_entity": "Wrong block entity type: %s",
"title.32bit.deprecation": "32-bit system detected: this may prevent you from playing in the future as a 64-bit system will be required!",

File diff suppressed because it is too large Load diff

View file

@ -11,8 +11,8 @@ use azalea_buf::{AzaleaReadVar, AzaleaWrite, AzaleaWriteVar, BufReadError};
use crate::read::ReadPacketError;
pub const PROTOCOL_VERSION: i32 = 1073742054;
pub const VERSION_NAME: &str = "25w03a";
pub const PROTOCOL_VERSION: i32 = 1073742061;
pub const VERSION_NAME: &str = "25w09b";
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum ConnectionProtocol {

View file

@ -448,6 +448,9 @@ enum Block {
ShortGrass => "minecraft:short_grass",
Fern => "minecraft:fern",
DeadBush => "minecraft:dead_bush",
Bush => "minecraft:bush",
ShortDryGrass => "minecraft:short_dry_grass",
TallDryGrass => "minecraft:tall_dry_grass",
Seagrass => "minecraft:seagrass",
TallSeagrass => "minecraft:tall_seagrass",
Piston => "minecraft:piston",
@ -579,6 +582,7 @@ enum Block {
Ice => "minecraft:ice",
SnowBlock => "minecraft:snow_block",
Cactus => "minecraft:cactus",
CactusFlower => "minecraft:cactus_flower",
Clay => "minecraft:clay",
SugarCane => "minecraft:sugar_cane",
Jukebox => "minecraft:jukebox",
@ -1414,6 +1418,7 @@ enum Block {
ClosedEyeblossom => "minecraft:closed_eyeblossom",
PottedOpenEyeblossom => "minecraft:potted_open_eyeblossom",
PottedClosedEyeblossom => "minecraft:potted_closed_eyeblossom",
FireflyBush => "minecraft:firefly_bush",
}
}
@ -1812,7 +1817,8 @@ enum EntityKind {
PiglinBrute => "minecraft:piglin_brute",
Pillager => "minecraft:pillager",
PolarBear => "minecraft:polar_bear",
Potion => "minecraft:potion",
SplashPotion => "minecraft:splash_potion",
LingeringPotion => "minecraft:lingering_potion",
Pufferfish => "minecraft:pufferfish",
Rabbit => "minecraft:rabbit",
Ravager => "minecraft:ravager",
@ -2198,9 +2204,13 @@ enum Item {
Cobweb => "minecraft:cobweb",
ShortGrass => "minecraft:short_grass",
Fern => "minecraft:fern",
Bush => "minecraft:bush",
Azalea => "minecraft:azalea",
FloweringAzalea => "minecraft:flowering_azalea",
DeadBush => "minecraft:dead_bush",
FireflyBush => "minecraft:firefly_bush",
ShortDryGrass => "minecraft:short_dry_grass",
TallDryGrass => "minecraft:tall_dry_grass",
Seagrass => "minecraft:seagrass",
SeaPickle => "minecraft:sea_pickle",
WhiteWool => "minecraft:white_wool",
@ -2319,6 +2329,7 @@ enum Item {
Ice => "minecraft:ice",
SnowBlock => "minecraft:snow_block",
Cactus => "minecraft:cactus",
CactusFlower => "minecraft:cactus_flower",
Clay => "minecraft:clay",
Jukebox => "minecraft:jukebox",
OakFence => "minecraft:oak_fence",
@ -2959,6 +2970,8 @@ enum Item {
Book => "minecraft:book",
SlimeBall => "minecraft:slime_ball",
Egg => "minecraft:egg",
BlueEgg => "minecraft:blue_egg",
BrownEgg => "minecraft:brown_egg",
Compass => "minecraft:compass",
RecoveryCompass => "minecraft:recovery_compass",
Bundle => "minecraft:bundle",
@ -3828,6 +3841,7 @@ enum ParticleKind {
RaidOmen => "minecraft:raid_omen",
TrialOmen => "minecraft:trial_omen",
BlockCrumble => "minecraft:block_crumble",
Firefly => "minecraft:firefly",
}
}
@ -4241,6 +4255,8 @@ enum SoundEvent {
ItemBundleInsert => "minecraft:item.bundle.insert",
ItemBundleInsertFail => "minecraft:item.bundle.insert_fail",
ItemBundleRemoveOne => "minecraft:item.bundle.remove_one",
BlockCactusFlowerBreak => "minecraft:block.cactus_flower.break",
BlockCactusFlowerPlace => "minecraft:block.cactus_flower.place",
BlockCakeAddCandle => "minecraft:block.cake.add_candle",
BlockCalciteBreak => "minecraft:block.calcite.break",
BlockCalciteStep => "minecraft:block.calcite.step",
@ -4420,6 +4436,7 @@ enum SoundEvent {
ItemCrossbowQuickCharge2 => "minecraft:item.crossbow.quick_charge_2",
ItemCrossbowQuickCharge3 => "minecraft:item.crossbow.quick_charge_3",
ItemCrossbowShoot => "minecraft:item.crossbow.shoot",
BlockDeadbushIdle => "minecraft:block.deadbush.idle",
BlockDecoratedPotBreak => "minecraft:block.decorated_pot.break",
BlockDecoratedPotFall => "minecraft:block.decorated_pot.fall",
BlockDecoratedPotHit => "minecraft:block.decorated_pot.hit",
@ -4545,6 +4562,7 @@ enum SoundEvent {
BlockFenceGateClose => "minecraft:block.fence_gate.close",
BlockFenceGateOpen => "minecraft:block.fence_gate.open",
ItemFirechargeUse => "minecraft:item.firecharge.use",
BlockFireflyBushIdle => "minecraft:block.firefly_bush.idle",
EntityFireworkRocketBlast => "minecraft:entity.firework_rocket.blast",
EntityFireworkRocketBlastFar => "minecraft:entity.firework_rocket.blast_far",
EntityFireworkRocketLargeBlast => "minecraft:entity.firework_rocket.large_blast",
@ -5240,6 +5258,8 @@ enum SoundEvent {
BlockSandHit => "minecraft:block.sand.hit",
BlockSandPlace => "minecraft:block.sand.place",
BlockSandStep => "minecraft:block.sand.step",
BlockSandIdle => "minecraft:block.sand.idle",
BlockSandWind => "minecraft:block.sand.wind",
BlockScaffoldingBreak => "minecraft:block.scaffolding.break",
BlockScaffoldingFall => "minecraft:block.scaffolding.fall",
BlockScaffoldingHit => "minecraft:block.scaffolding.hit",
@ -5616,15 +5636,50 @@ enum SoundEvent {
ItemWolfArmorCrack => "minecraft:item.wolf_armor.crack",
ItemWolfArmorDamage => "minecraft:item.wolf_armor.damage",
ItemWolfArmorRepair => "minecraft:item.wolf_armor.repair",
EntityWolfShake => "minecraft:entity.wolf.shake",
EntityWolfStep => "minecraft:entity.wolf.step",
EntityWolfAmbient => "minecraft:entity.wolf.ambient",
EntityWolfDeath => "minecraft:entity.wolf.death",
EntityWolfGrowl => "minecraft:entity.wolf.growl",
EntityWolfHowl => "minecraft:entity.wolf.howl",
EntityWolfHurt => "minecraft:entity.wolf.hurt",
EntityWolfPant => "minecraft:entity.wolf.pant",
EntityWolfShake => "minecraft:entity.wolf.shake",
EntityWolfStep => "minecraft:entity.wolf.step",
EntityWolfWhine => "minecraft:entity.wolf.whine",
EntityWolfPuglinAmbient => "minecraft:entity.wolf_puglin.ambient",
EntityWolfPuglinDeath => "minecraft:entity.wolf_puglin.death",
EntityWolfPuglinGrowl => "minecraft:entity.wolf_puglin.growl",
EntityWolfPuglinHurt => "minecraft:entity.wolf_puglin.hurt",
EntityWolfPuglinPant => "minecraft:entity.wolf_puglin.pant",
EntityWolfPuglinWhine => "minecraft:entity.wolf_puglin.whine",
EntityWolfSadAmbient => "minecraft:entity.wolf_sad.ambient",
EntityWolfSadDeath => "minecraft:entity.wolf_sad.death",
EntityWolfSadGrowl => "minecraft:entity.wolf_sad.growl",
EntityWolfSadHurt => "minecraft:entity.wolf_sad.hurt",
EntityWolfSadPant => "minecraft:entity.wolf_sad.pant",
EntityWolfSadWhine => "minecraft:entity.wolf_sad.whine",
EntityWolfAngryAmbient => "minecraft:entity.wolf_angry.ambient",
EntityWolfAngryDeath => "minecraft:entity.wolf_angry.death",
EntityWolfAngryGrowl => "minecraft:entity.wolf_angry.growl",
EntityWolfAngryHurt => "minecraft:entity.wolf_angry.hurt",
EntityWolfAngryPant => "minecraft:entity.wolf_angry.pant",
EntityWolfAngryWhine => "minecraft:entity.wolf_angry.whine",
EntityWolfGrumpyAmbient => "minecraft:entity.wolf_grumpy.ambient",
EntityWolfGrumpyDeath => "minecraft:entity.wolf_grumpy.death",
EntityWolfGrumpyGrowl => "minecraft:entity.wolf_grumpy.growl",
EntityWolfGrumpyHurt => "minecraft:entity.wolf_grumpy.hurt",
EntityWolfGrumpyPant => "minecraft:entity.wolf_grumpy.pant",
EntityWolfGrumpyWhine => "minecraft:entity.wolf_grumpy.whine",
EntityWolfBigAmbient => "minecraft:entity.wolf_big.ambient",
EntityWolfBigDeath => "minecraft:entity.wolf_big.death",
EntityWolfBigGrowl => "minecraft:entity.wolf_big.growl",
EntityWolfBigHurt => "minecraft:entity.wolf_big.hurt",
EntityWolfBigPant => "minecraft:entity.wolf_big.pant",
EntityWolfBigWhine => "minecraft:entity.wolf_big.whine",
EntityWolfCuteAmbient => "minecraft:entity.wolf_cute.ambient",
EntityWolfCuteDeath => "minecraft:entity.wolf_cute.death",
EntityWolfCuteGrowl => "minecraft:entity.wolf_cute.growl",
EntityWolfCuteHurt => "minecraft:entity.wolf_cute.hurt",
EntityWolfCutePant => "minecraft:entity.wolf_cute.pant",
EntityWolfCuteWhine => "minecraft:entity.wolf_cute.whine",
BlockWoodenDoorClose => "minecraft:block.wooden_door.close",
BlockWoodenDoorOpen => "minecraft:block.wooden_door.open",
BlockWoodenTrapdoorClose => "minecraft:block.wooden_trapdoor.close",
@ -5802,6 +5857,7 @@ registry! {
enum WorldgenFeature {
NoOp => "minecraft:no_op",
Tree => "minecraft:tree",
FallenTree => "minecraft:fallen_tree",
Flower => "minecraft:flower",
NoBonemealFlower => "minecraft:no_bonemeal_flower",
RandomPatch => "minecraft:random_patch",
@ -6065,6 +6121,7 @@ enum WorldgenTreeDecoratorKind {
AlterGround => "minecraft:alter_ground",
AttachedToLeaves => "minecraft:attached_to_leaves",
PlaceOnGround => "minecraft:place_on_ground",
AttachedToLogs => "minecraft:attached_to_logs",
}
}
@ -6199,8 +6256,10 @@ enum BlockKind {
Brushable => "minecraft:brushable",
BubbleColumn => "minecraft:bubble_column",
BuddingAmethyst => "minecraft:budding_amethyst",
Bush => "minecraft:bush",
Button => "minecraft:button",
Cactus => "minecraft:cactus",
CactusFlower => "minecraft:cactus_flower",
Cake => "minecraft:cake",
CalibratedSculkSensor => "minecraft:calibrated_sculk_sensor",
Campfire => "minecraft:campfire",
@ -6235,7 +6294,7 @@ enum BlockKind {
Crop => "minecraft:crop",
CryingObsidian => "minecraft:crying_obsidian",
DaylightDetector => "minecraft:daylight_detector",
DeadBush => "minecraft:dead_bush",
DryVegetation => "minecraft:dry_vegetation",
DecoratedPot => "minecraft:decorated_pot",
DetectorRail => "minecraft:detector_rail",
DirtPath => "minecraft:dirt_path",
@ -6257,6 +6316,7 @@ enum BlockKind {
Fence => "minecraft:fence",
FenceGate => "minecraft:fence_gate",
Fire => "minecraft:fire",
FireflyBush => "minecraft:firefly_bush",
FletchingTable => "minecraft:fletching_table",
Flower => "minecraft:flower",
FlowerPot => "minecraft:flower_pot",
@ -6290,7 +6350,6 @@ enum BlockKind {
LavaCauldron => "minecraft:lava_cauldron",
LayeredCauldron => "minecraft:layered_cauldron",
LeafLitter => "minecraft:leaf_litter",
Leaves => "minecraft:leaves",
Lectern => "minecraft:lectern",
Lever => "minecraft:lever",
Light => "minecraft:light",
@ -6340,6 +6399,7 @@ enum BlockKind {
Roots => "minecraft:roots",
RotatedPillar => "minecraft:rotated_pillar",
Sapling => "minecraft:sapling",
Sand => "minecraft:sand",
Scaffolding => "minecraft:scaffolding",
SculkCatalyst => "minecraft:sculk_catalyst",
Sculk => "minecraft:sculk",
@ -6348,6 +6408,7 @@ enum BlockKind {
SculkVein => "minecraft:sculk_vein",
Seagrass => "minecraft:seagrass",
SeaPickle => "minecraft:sea_pickle",
ShortDryGrass => "minecraft:short_dry_grass",
ShulkerBox => "minecraft:shulker_box",
Skull => "minecraft:skull",
Slab => "minecraft:slab",
@ -6374,13 +6435,16 @@ enum BlockKind {
StructureVoid => "minecraft:structure_void",
SugarCane => "minecraft:sugar_cane",
SweetBerryBush => "minecraft:sweet_berry_bush",
TallDryGrass => "minecraft:tall_dry_grass",
TallFlower => "minecraft:tall_flower",
TallGrass => "minecraft:tall_grass",
TallSeagrass => "minecraft:tall_seagrass",
Target => "minecraft:target",
Terracotta => "minecraft:terracotta",
Test => "minecraft:test",
TestInstance => "minecraft:test_instance",
TintedGlass => "minecraft:tinted_glass",
TintedParticleLeaves => "minecraft:tinted_particle_leaves",
Tnt => "minecraft:tnt",
TorchflowerCrop => "minecraft:torchflower_crop",
Torch => "minecraft:torch",
@ -6393,6 +6457,7 @@ enum BlockKind {
TurtleEgg => "minecraft:turtle_egg",
TwistingVinesPlant => "minecraft:twisting_vines_plant",
TwistingVines => "minecraft:twisting_vines",
UntintedParticleLeaves => "minecraft:untinted_particle_leaves",
Vault => "minecraft:vault",
Vine => "minecraft:vine",
WallBanner => "minecraft:wall_banner",
@ -6529,8 +6594,7 @@ enum DataComponentKind {
CanBreak => "minecraft:can_break",
AttributeModifiers => "minecraft:attribute_modifiers",
CustomModelData => "minecraft:custom_model_data",
HideAdditionalTooltip => "minecraft:hide_additional_tooltip",
HideTooltip => "minecraft:hide_tooltip",
TooltipDisplay => "minecraft:tooltip_display",
RepairCost => "minecraft:repair_cost",
CreativeSlotLock => "minecraft:creative_slot_lock",
EnchantmentGlintOverride => "minecraft:enchantment_glint_override",
@ -6548,6 +6612,7 @@ enum DataComponentKind {
Glider => "minecraft:glider",
TooltipStyle => "minecraft:tooltip_style",
DeathProtection => "minecraft:death_protection",
BlocksAttacks => "minecraft:blocks_attacks",
StoredEnchantments => "minecraft:stored_enchantments",
DyedColor => "minecraft:dyed_color",
MapColor => "minecraft:map_color",
@ -6567,8 +6632,10 @@ enum DataComponentKind {
BucketEntityData => "minecraft:bucket_entity_data",
BlockEntityData => "minecraft:block_entity_data",
Instrument => "minecraft:instrument",
ProvidesTrimMaterial => "minecraft:provides_trim_material",
OminousBottleAmplifier => "minecraft:ominous_bottle_amplifier",
JukeboxPlayable => "minecraft:jukebox_playable",
ProvidesBannerPatterns => "minecraft:provides_banner_patterns",
Recipes => "minecraft:recipes",
LodestoneTracker => "minecraft:lodestone_tracker",
FireworkExplosion => "minecraft:firework_explosion",
@ -6583,8 +6650,10 @@ enum DataComponentKind {
Bees => "minecraft:bees",
Lock => "minecraft:lock",
ContainerLoot => "minecraft:container_loot",
BreakSound => "minecraft:break_sound",
VillagerVariant => "minecraft:villager/variant",
WolfVariant => "minecraft:wolf/variant",
WolfSoundVariant => "minecraft:wolf/sound_variant",
WolfCollar => "minecraft:wolf/collar",
FoxVariant => "minecraft:fox/variant",
SalmonSize => "minecraft:salmon/size",
@ -6595,6 +6664,8 @@ enum DataComponentKind {
MooshroomVariant => "minecraft:mooshroom/variant",
RabbitVariant => "minecraft:rabbit/variant",
PigVariant => "minecraft:pig/variant",
CowVariant => "minecraft:cow/variant",
ChickenVariant => "minecraft:chicken/variant",
FrogVariant => "minecraft:frog/variant",
HorseVariant => "minecraft:horse/variant",
PaintingVariant => "minecraft:painting/variant",
@ -6875,7 +6946,7 @@ enum TestEnvironmentDefinitionKind {
AllOf => "minecraft:all_of",
GameRules => "minecraft:game_rules",
TimeOfDay => "minecraft:time_of_day",
Raining => "minecraft:raining",
Weather => "minecraft:weather",
Function => "minecraft:function",
}
}
@ -6892,3 +6963,30 @@ enum TestInstanceKind {
Function => "minecraft:function",
}
}
registry! {
enum DataComponentPredicateKind {
Damage => "minecraft:damage",
Enchantments => "minecraft:enchantments",
StoredEnchantments => "minecraft:stored_enchantments",
PotionContents => "minecraft:potion_contents",
CustomData => "minecraft:custom_data",
Container => "minecraft:container",
BundleContents => "minecraft:bundle_contents",
FireworkExplosion => "minecraft:firework_explosion",
Fireworks => "minecraft:fireworks",
WritableBookContent => "minecraft:writable_book_content",
WrittenBookContent => "minecraft:written_book_content",
AttributeModifiers => "minecraft:attribute_modifiers",
Trim => "minecraft:trim",
JukeboxPlayable => "minecraft:jukebox_playable",
}
}
registry! {
enum SpawnConditionKind {
Structure => "minecraft:structure",
MoonBrightness => "minecraft:moon_brightness",
Biome => "minecraft:biome",
}
}

View file

@ -363,6 +363,7 @@ pub static BEE_ATTRACTIVE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
Block::Wildflowers,
Block::ChorusFlower,
Block::SporeBlossom,
Block::CactusFlower,
])
});
pub static BEE_GROWABLES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
@ -450,6 +451,14 @@ pub static CAMEL_SAND_STEP_SOUND_BLOCKS: LazyLock<HashSet<Block>> = LazyLock::ne
Block::BlackConcretePowder,
])
});
pub static CAMELS_SPAWNABLE_ON: LazyLock<HashSet<Block>> = LazyLock::new(|| {
HashSet::from_iter(vec![
Block::Sand,
Block::RedSand,
Block::SuspiciousSand,
Block::SuspiciousSand,
])
});
pub static CAMPFIRES: LazyLock<HashSet<Block>> =
LazyLock::new(|| HashSet::from_iter(vec![Block::Campfire, Block::SoulCampfire]));
pub static CANDLE_CAKES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
@ -753,41 +762,6 @@ pub static DARK_OAK_LOGS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
Block::StrippedDarkOakWood,
])
});
pub static DEAD_BUSH_MAY_PLACE_ON: LazyLock<HashSet<Block>> = LazyLock::new(|| {
HashSet::from_iter(vec![
Block::Sand,
Block::RedSand,
Block::SuspiciousSand,
Block::SuspiciousSand,
Block::Terracotta,
Block::WhiteTerracotta,
Block::OrangeTerracotta,
Block::MagentaTerracotta,
Block::LightBlueTerracotta,
Block::YellowTerracotta,
Block::LimeTerracotta,
Block::PinkTerracotta,
Block::GrayTerracotta,
Block::LightGrayTerracotta,
Block::CyanTerracotta,
Block::PurpleTerracotta,
Block::BlueTerracotta,
Block::BrownTerracotta,
Block::GreenTerracotta,
Block::RedTerracotta,
Block::BlackTerracotta,
Block::Dirt,
Block::GrassBlock,
Block::Podzol,
Block::CoarseDirt,
Block::Mycelium,
Block::RootedDirt,
Block::MossBlock,
Block::PaleMossBlock,
Block::Mud,
Block::MuddyMangroveRoots,
])
});
pub static DEEPSLATE_ORE_REPLACEABLES: LazyLock<HashSet<Block>> =
LazyLock::new(|| HashSet::from_iter(vec![Block::Deepslate, Block::Tuff]));
pub static DIAMOND_ORES: LazyLock<HashSet<Block>> =
@ -852,6 +826,8 @@ pub static DRAGON_IMMUNE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
Block::IronBars,
Block::RespawnAnchor,
Block::ReinforcedDeepslate,
Block::TestBlock,
Block::TestInstanceBlock,
])
});
pub static DRAGON_TRANSPARENT: LazyLock<HashSet<Block>> =
@ -866,6 +842,50 @@ pub static DRIPSTONE_REPLACEABLE_BLOCKS: LazyLock<HashSet<Block>> = LazyLock::ne
Block::Deepslate,
])
});
pub static DRY_VEGETATION_MAY_PLACE_ON: LazyLock<HashSet<Block>> = LazyLock::new(|| {
HashSet::from_iter(vec![
Block::Farmland,
Block::Sand,
Block::RedSand,
Block::SuspiciousSand,
Block::SuspiciousSand,
Block::Terracotta,
Block::WhiteTerracotta,
Block::OrangeTerracotta,
Block::MagentaTerracotta,
Block::LightBlueTerracotta,
Block::YellowTerracotta,
Block::LimeTerracotta,
Block::PinkTerracotta,
Block::GrayTerracotta,
Block::LightGrayTerracotta,
Block::CyanTerracotta,
Block::PurpleTerracotta,
Block::BlueTerracotta,
Block::BrownTerracotta,
Block::GreenTerracotta,
Block::RedTerracotta,
Block::BlackTerracotta,
Block::Dirt,
Block::GrassBlock,
Block::Podzol,
Block::CoarseDirt,
Block::Mycelium,
Block::RootedDirt,
Block::MossBlock,
Block::PaleMossBlock,
Block::Mud,
Block::MuddyMangroveRoots,
])
});
pub static EDIBLE_FOR_SHEEP: LazyLock<HashSet<Block>> = LazyLock::new(|| {
HashSet::from_iter(vec![
Block::ShortGrass,
Block::ShortDryGrass,
Block::TallDryGrass,
Block::Fern,
])
});
pub static EMERALD_ORES: LazyLock<HashSet<Block>> =
LazyLock::new(|| HashSet::from_iter(vec![Block::EmeraldOre, Block::DeepslateEmeraldOre]));
pub static ENCHANTMENT_POWER_PROVIDER: LazyLock<HashSet<Block>> =
@ -878,6 +898,9 @@ pub static ENCHANTMENT_POWER_TRANSMITTER: LazyLock<HashSet<Block>> = LazyLock::n
Block::ShortGrass,
Block::Fern,
Block::DeadBush,
Block::Bush,
Block::ShortDryGrass,
Block::TallDryGrass,
Block::Seagrass,
Block::TallSeagrass,
Block::Fire,
@ -896,6 +919,7 @@ pub static ENCHANTMENT_POWER_TRANSMITTER: LazyLock<HashSet<Block>> = LazyLock::n
Block::WarpedRoots,
Block::NetherSprouts,
Block::CrimsonRoots,
Block::LeafLitter,
Block::HangingRoots,
])
});
@ -1064,6 +1088,7 @@ pub static FLOWERS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
Block::Wildflowers,
Block::ChorusFlower,
Block::SporeBlossom,
Block::CactusFlower,
Block::Dandelion,
Block::OpenEyeblossom,
Block::Poppy,
@ -2920,6 +2945,29 @@ pub static PLANKS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
Block::CherryPlanks,
])
});
pub static PLAYS_AMBIENT_DESERT_BLOCK_SOUNDS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
HashSet::from_iter(vec![
Block::Sand,
Block::RedSand,
Block::Terracotta,
Block::WhiteTerracotta,
Block::OrangeTerracotta,
Block::MagentaTerracotta,
Block::LightBlueTerracotta,
Block::YellowTerracotta,
Block::LimeTerracotta,
Block::PinkTerracotta,
Block::GrayTerracotta,
Block::LightGrayTerracotta,
Block::CyanTerracotta,
Block::PurpleTerracotta,
Block::BlueTerracotta,
Block::BrownTerracotta,
Block::GreenTerracotta,
Block::RedTerracotta,
Block::BlackTerracotta,
])
});
pub static POLAR_BEARS_SPAWNABLE_ON_ALTERNATE: LazyLock<HashSet<Block>> =
LazyLock::new(|| HashSet::from_iter(vec![Block::Ice]));
pub static PORTALS: LazyLock<HashSet<Block>> = LazyLock::new(|| {
@ -2983,6 +3031,9 @@ pub static REPLACEABLE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
Block::ShortGrass,
Block::Fern,
Block::DeadBush,
Block::Bush,
Block::ShortDryGrass,
Block::TallDryGrass,
Block::Seagrass,
Block::TallSeagrass,
Block::Fire,
@ -3001,6 +3052,7 @@ pub static REPLACEABLE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
Block::WarpedRoots,
Block::NetherSprouts,
Block::CrimsonRoots,
Block::LeafLitter,
Block::HangingRoots,
])
});
@ -3031,6 +3083,10 @@ pub static REPLACEABLE_BY_MUSHROOMS: LazyLock<HashSet<Block>> = LazyLock::new(||
Block::NetherSprouts,
Block::CrimsonRoots,
Block::LeafLitter,
Block::ShortDryGrass,
Block::TallDryGrass,
Block::Bush,
Block::FireflyBush,
Block::JungleLeaves,
Block::OakLeaves,
Block::SpruceLeaves,
@ -3079,10 +3135,14 @@ pub static REPLACEABLE_BY_TREES: LazyLock<HashSet<Block>> = LazyLock::new(|| {
Block::Water,
Block::Seagrass,
Block::TallSeagrass,
Block::Bush,
Block::FireflyBush,
Block::WarpedRoots,
Block::NetherSprouts,
Block::CrimsonRoots,
Block::LeafLitter,
Block::ShortDryGrass,
Block::TallDryGrass,
Block::JungleLeaves,
Block::OakLeaves,
Block::SpruceLeaves,
@ -3744,6 +3804,7 @@ pub static WALL_POST_OVERRIDE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
Block::SoulTorch,
Block::RedstoneTorch,
Block::Tripwire,
Block::CactusFlower,
Block::WhiteBanner,
Block::OrangeBanner,
Block::MagentaBanner,
@ -3889,6 +3950,8 @@ pub static WITHER_IMMUNE: LazyLock<HashSet<Block>> = LazyLock::new(|| {
Block::MovingPiston,
Block::Light,
Block::ReinforcedDeepslate,
Block::TestBlock,
Block::TestInstanceBlock,
])
});
pub static WITHER_SUMMON_BASE_BLOCKS: LazyLock<HashSet<Block>> =

View file

@ -111,6 +111,7 @@ pub static BEE_FOOD: LazyLock<HashSet<Item>> = LazyLock::new(|| {
Item::Wildflowers,
Item::ChorusFlower,
Item::SporeBlossom,
Item::CactusFlower,
])
});
pub static BIRCH_LOGS: LazyLock<HashSet<Item>> = LazyLock::new(|| {
@ -563,6 +564,8 @@ pub static DYEABLE: LazyLock<HashSet<Item>> = LazyLock::new(|| {
Item::WolfArmor,
])
});
pub static EGGS: LazyLock<HashSet<Item>> =
LazyLock::new(|| HashSet::from_iter(vec![Item::Egg, Item::BlueEgg, Item::BrownEgg]));
pub static EMERALD_ORES: LazyLock<HashSet<Item>> =
LazyLock::new(|| HashSet::from_iter(vec![Item::EmeraldOre, Item::DeepslateEmeraldOre]));
pub static ENCHANTABLE_ARMOR: LazyLock<HashSet<Item>> = LazyLock::new(|| {

View file

@ -31,8 +31,7 @@ def generate_blocks(blocks_report: dict, pixlyzer_block_datas: dict, ordered_blo
for property_id in list(block_data_report.get('properties', {}).keys()):
property_variants = block_data_report['properties'][property_id]
property_struct_name = get_property_struct_name(
block_id, property_id, property_variants)
property_struct_name = get_property_struct_name(block_id, property_id, property_variants)
if property_struct_name in properties:
if not properties[property_struct_name] == property_variants:
@ -181,6 +180,10 @@ def get_property_struct_name(block_id: str, property_id: str, property_variants:
return 'TrialSpawnerState'
if property_variants == ['inactive', 'active', 'unlocking', 'ejecting']:
return 'VaultState'
if property_variants == ['start', 'log', 'fail', 'accept']:
return 'TestMode'
if property_variants == ['save', 'load', 'corner', 'data']:
return 'StructureMode'
if 'harp' in property_variants and 'didgeridoo' in property_variants:
return 'Sound'
if is_list_of_string_integers(property_variants):

View file

@ -96,8 +96,7 @@ def run_python_command_and_download_deps(command):
break
missing_lib = regex_match.group(1)
print('Missing required lib:', missing_lib)
os.system(
f'{determine_python_command()} -m pip install {missing_lib}')
subprocess.run(f'venv/bin/pip install {missing_lib}', cwd=os.path.dirname(os.path.dirname(__file__)))
print('ok')
@ -108,7 +107,7 @@ def get_burger_data_for_version(version_id: str):
print('\033[92mRunning Burger...\033[m')
run_python_command_and_download_deps(
f'cd {get_dir_location("__cache__/Burger")} && {determine_python_command()} munch.py {get_dir_location("__cache__")}/client-{version_id}.jar --output {get_dir_location("__cache__")}/burger-{version_id}.json'
f'cd {get_dir_location("__cache__/Burger")} && venv/bin/python munch.py {get_dir_location("__cache__")}/client-{version_id}.jar --output {get_dir_location("__cache__")}/burger-{version_id}.json'
)
with open(get_dir_location(f'__cache__/burger-{version_id}.json'), 'r') as f:
return json.load(f)