|
@@ -35,6 +35,7 @@ import java.util.HashSet;
|
|
|
import java.util.List;
|
|
|
import java.util.Set;
|
|
|
import java.util.concurrent.ThreadLocalRandom;
|
|
|
+import java.util.function.Predicate;
|
|
|
|
|
|
//TODO: Seems to not be using the item drop event for bonus drops, may want to change that.. or may not be able to be changed?
|
|
|
public class WoodcuttingManager extends SkillManager {
|
|
@@ -316,19 +317,24 @@ public class WoodcuttingManager extends SkillManager {
|
|
|
xp += processTreeFellerXPGains(blockState, processedLogCount);
|
|
|
|
|
|
//Drop displaced block
|
|
|
- Misc.spawnItemsFromCollection(getPlayer(), Misc.getBlockCenter(blockState), block.getDrops(itemStack), ItemSpawnReason.TREE_FELLER_DISPLACED_BLOCK);
|
|
|
+ Misc.spawnItemsFromCollection(player, Misc.getBlockCenter(blockState), block.getDrops(itemStack), ItemSpawnReason.TREE_FELLER_DISPLACED_BLOCK);
|
|
|
|
|
|
//Bonus Drops / Harvest lumber checks
|
|
|
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) {
|
|
|
- Misc.spawnItemsFromCollection(getPlayer(),
|
|
|
+ if (ThreadLocalRandom.current().nextInt(100) > 75) {
|
|
|
+ Misc.spawnItemsFromCollection(player,
|
|
|
Misc.getBlockCenter(blockState),
|
|
|
block.getDrops(itemStack),
|
|
|
ItemSpawnReason.TREE_FELLER_DISPLACED_BLOCK);
|
|
|
}
|
|
|
+ // if KnockOnWood is unlocked, then drop any saplings from the remaining blocks
|
|
|
+ else if (RankUtils.hasUnlockedSubskill(player, SubSkillType.WOODCUTTING_KNOCK_ON_WOOD)) {
|
|
|
+ Predicate<String> isSapling = p -> p.contains("sapling") || p.contains("propagule");
|
|
|
+ Misc.conditionallySpawn(isSapling, player, 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)) {
|