Actually don't reduce sapling drop if KnockOnWood unlocked. (Prior fix didn't)

Signed-off-by: Momshroom <Momshroom@gmail.com>
This commit is contained in:
Momshroom 2024-05-21 13:46:48 -05:00
parent 5386817faf
commit e95b3c3a05
2 changed files with 20 additions and 2 deletions

View File

@ -322,13 +322,17 @@ public class WoodcuttingManager extends SkillManager {
processBonusDropCheck(blockState);
} else if (BlockUtils.isNonWoodPartOfTree(blockState)) {
// 75% of the time do not drop leaf blocks
if (blockState.getType().getKey().getKey().toLowerCase().contains("sapling")
|| ThreadLocalRandom.current().nextInt(100) > 75) {
if (ThreadLocalRandom.current().nextInt(100) > 75) {
Misc.spawnItemsFromCollection(getPlayer(),
Misc.getBlockCenter(blockState),
block.getDrops(itemStack),
ItemSpawnReason.TREE_FELLER_DISPLACED_BLOCK);
}
// drop saplings as occur in rest if Knock on Wood unlocked.
else if (RankUtils.hasUnlockedSubskill(player, SubSkillType.WOODCUTTING_KNOCK_ON_WOOD)) {
Misc.spawnItemIfSapling(getPlayer(), Misc.getBlockCenter(blockState),
block.getDrops(itemStack),ItemSpawnReason.TREE_FELLER_DISPLACED_BLOCK);;
}
//Drop displaced non-woodcutting XP blocks
if (RankUtils.hasUnlockedSubskill(player, SubSkillType.WOODCUTTING_KNOCK_ON_WOOD)) {

View File

@ -128,6 +128,20 @@ public final class Misc {
}
}
/**
* Drops the item from the item stack only if it is a sapling (or equivalent)
* Needed for TreeFeller
*/
public static void spawnItemIfSapling(@NotNull Player player, @NotNull Location location, @NotNull Collection < ItemStack > drops, @NotNull ItemSpawnReason itemSpawnReason) {
String dropString;
for (ItemStack drop : drops) {
dropString = drop.getType().getKey().getKey();
if (dropString.contains("sapling") || dropString.contains("propagule")) {
Misc.spawnItem(player, location, drop, itemSpawnReason);
}
}
}
/**
* Drop items at a given location.
*