fix: grant fishy business only when fishing (#2817)

This commit is contained in:
xRookieFight
2026-08-10 10:25:00 +03:00
committed by GitHub
parent 734f79e469
commit 604d597709
2 changed files with 33 additions and 22 deletions

View File

@@ -8,6 +8,7 @@ pub enum AdvancementTrigger {
PlacedBlock { block_id: String },
ConsumeItem { item_id: String },
SleptInBed,
FishedItem { item_id: String },
EnterDimension { dimension: String },
PlayerKilled,
DeflectedDamage,
@@ -230,27 +231,6 @@ impl Player {
}
}
if !self
.has_advancement(Advancement::HUSBANDRY_FISHY_BUSINESS)
.await
{
let fishes = [
(&Item::COD, "cod"),
(&Item::SALMON, "salmon"),
(&Item::PUFFERFISH, "pufferfish"),
(&Item::TROPICAL_FISH, "tropical_fish"),
];
for (item, criterion) in fishes {
if self.has_item_in_inventory(item).await {
self.trigger_advancement_criterion(
Advancement::HUSBANDRY_FISHY_BUSINESS,
criterion,
)
.await;
}
}
}
if !self
.has_advancement(Advancement::HUSBANDRY_TACTICAL_FISHING)
.await
@@ -538,6 +518,29 @@ impl Player {
.await;
}
}
AdvancementTrigger::FishedItem { item_id } => {
if !self
.has_advancement(Advancement::HUSBANDRY_FISHY_BUSINESS)
.await
{
let fishes = [
("minecraft:cod", "cod"),
("minecraft:salmon", "salmon"),
("minecraft:pufferfish", "pufferfish"),
("minecraft:tropical_fish", "tropical_fish"),
];
for (fish, criterion) in fishes {
if item_id == fish {
self.trigger_advancement_criterion(
Advancement::HUSBANDRY_FISHY_BUSINESS,
criterion,
)
.await;
break;
}
}
}
}
AdvancementTrigger::PlacedBlock { block_id } => {
if !self
.has_advancement(Advancement::HUSBANDRY_PLANT_SEED)

View File

@@ -77,9 +77,17 @@ impl FishingBobberEntity {
.await;
// TODO: Use actual loot tables. For now, just give a raw cod.
let _item_stack = ItemStack::new(1, &Item::COD);
let item_stack = ItemStack::new(1, &Item::COD);
// player.inventory().add_item(item_stack).await; // Need public add_item
player
.trigger_advancement(
crate::entity::player::advancement::trigger::AdvancementTrigger::FishedItem {
item_id: format!("minecraft:{}", item_stack.item.registry_key),
},
)
.await;
world.play_sound(
Sound::EntityExperienceOrbPickup,
SoundCategory::Neutral,