Mob Spawners no longer drop from Blast Mining Fixes #5052

This commit is contained in:
nossr50
2024-07-27 15:07:47 -07:00
parent e886a16388
commit bda5424a4c
3 changed files with 28 additions and 1 deletions

View File

@ -37,6 +37,7 @@ import static com.gmail.nossr50.util.ItemUtils.isPickaxe;
public class MiningManager extends SkillManager {
public static final String BUDDING_AMETHYST = "budding_amethyst";
public static final Collection<Material> BLAST_MINING_BLACKLIST = List.of(Material.SPAWNER);
public MiningManager(@NotNull McMMOPlayer mcMMOPlayer) {
super(mcMMOPlayer, PrimarySkillType.MINING);
@ -225,13 +226,14 @@ public class MiningManager extends SkillManager {
? blockState.getBlock().getDrops(mmoPlayer.getPlayer().getInventory().getItemInMainHand())
: List.of(new ItemStack(blockState.getType()));
ItemUtils.spawnItems(getPlayer(), Misc.getBlockCenter(blockState),
oreDrops, ItemSpawnReason.BLAST_MINING_ORES);
oreDrops, BLAST_MINING_BLACKLIST, ItemSpawnReason.BLAST_MINING_ORES);
if (mcMMO.p.getAdvancedConfig().isBlastMiningBonusDropsEnabled()) {
for (int i = 1; i < dropMultiplier; i++) {
ItemUtils.spawnItems(getPlayer(),
Misc.getBlockCenter(blockState),
oreDrops,
BLAST_MINING_BLACKLIST,
ItemSpawnReason.BLAST_MINING_ORES_BONUS_DROP);
}
}

View File

@ -696,6 +696,29 @@ public final class ItemUtils {
}
}
/**
* Drop items at a given location.
*
* @param player player to drop the items for
* @param location The location to drop the items at
* @param itemStacks The items to drop
* @param blackList The items to skip
* @param itemSpawnReason the reason for the item drop
*/
public static void spawnItems(@Nullable Player player,
@NotNull Location location,
@NotNull Collection<ItemStack> itemStacks,
@NotNull Collection<Material> blackList,
@NotNull ItemSpawnReason itemSpawnReason) {
for (ItemStack is : itemStacks) {
// Skip blacklisted items
if(blackList.contains(is.getType())) {
continue;
}
spawnItem(player, location, is, itemSpawnReason);
}
}
/**
* Drop items at a given location.
*