mirror of
https://github.com/Pumpkin-MC/Pumpkin.git
synced 2026-08-30 20:14:23 +00:00
fix: grant fishy business only when fishing (#2817)
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user