mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-24 14:16:45 +01:00
Merge master
This commit is contained in:
commit
cbcddbf528
@ -56,6 +56,10 @@ Version 2.2.000
|
|||||||
New Power Level Command
|
New Power Level Command
|
||||||
This power level command gives you a view of all your current masteries, it also provides a summary of your power level.
|
This power level command gives you a view of all your current masteries, it also provides a summary of your power level.
|
||||||
|
|
||||||
|
Version 2.1.221
|
||||||
|
Fixed blast mining bonus drops not working (Thanks warriiorrrr)
|
||||||
|
Added fail safes to prevent bonus drops metadata from lingering on blocks
|
||||||
|
|
||||||
Version 2.1.220
|
Version 2.1.220
|
||||||
(API) Added TreeFellerBlockBreakEvent class which extends FakeBlockBreakEvent (see notes), this is sent out during Tree Feller processing to allow other plugins to differentiate between Tree Feller and other fake block break events
|
(API) Added TreeFellerBlockBreakEvent class which extends FakeBlockBreakEvent (see notes), this is sent out during Tree Feller processing to allow other plugins to differentiate between Tree Feller and other fake block break events
|
||||||
Config files update automatically again
|
Config files update automatically again
|
||||||
|
@ -140,7 +140,7 @@ public class BlockListener implements Listener {
|
|||||||
movedBlock = block.getRelative(direction);
|
movedBlock = block.getRelative(direction);
|
||||||
|
|
||||||
if(BlockUtils.isWithinWorldBounds(movedBlock)) {
|
if(BlockUtils.isWithinWorldBounds(movedBlock)) {
|
||||||
mcMMO.getPlaceStore().setTrue(movedBlock);
|
BlockUtils.setUnnaturalBlock(block);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -166,12 +166,13 @@ public class BlockListener implements Listener {
|
|||||||
|
|
||||||
//Spigot makes bad things happen in its API
|
//Spigot makes bad things happen in its API
|
||||||
if(BlockUtils.isWithinWorldBounds(movedBlock)) {
|
if(BlockUtils.isWithinWorldBounds(movedBlock)) {
|
||||||
mcMMO.getPlaceStore().setTrue(movedBlock);
|
BlockUtils.setUnnaturalBlock(movedBlock);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Block block : event.getBlocks()) {
|
for (Block block : event.getBlocks()) {
|
||||||
if(BlockUtils.isWithinWorldBounds(block)) {
|
if(BlockUtils.isWithinWorldBounds(block) && BlockUtils.isWithinWorldBounds(block.getRelative(direction))) {
|
||||||
mcMMO.getPlaceStore().setTrue(block.getRelative(direction));
|
Block relativeBlock = block.getRelative(direction);
|
||||||
|
BlockUtils.setUnnaturalBlock(relativeBlock);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -189,14 +190,13 @@ public class BlockListener implements Listener {
|
|||||||
if(WorldBlacklist.isWorldBlacklisted(event.getBlock().getWorld()))
|
if(WorldBlacklist.isWorldBlacklisted(event.getBlock().getWorld()))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
||||||
BlockState blockState = event.getNewState();
|
BlockState blockState = event.getNewState();
|
||||||
|
|
||||||
if(ExperienceConfig.getInstance().isSnowExploitPrevented() && BlockUtils.shouldBeWatched(blockState)) {
|
if(ExperienceConfig.getInstance().isSnowExploitPrevented() && BlockUtils.shouldBeWatched(blockState)) {
|
||||||
Block block = blockState.getBlock();
|
Block block = blockState.getBlock();
|
||||||
|
|
||||||
if(BlockUtils.isWithinWorldBounds(block)) {
|
if(BlockUtils.isWithinWorldBounds(block)) {
|
||||||
mcMMO.getPlaceStore().setTrue(block);
|
BlockUtils.setUnnaturalBlock(block);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -217,8 +217,9 @@ public class BlockListener implements Listener {
|
|||||||
BlockState newState = event.getNewState();
|
BlockState newState = event.getNewState();
|
||||||
|
|
||||||
if(newState.getType() != Material.OBSIDIAN && ExperienceConfig.getInstance().doesBlockGiveSkillXP(PrimarySkillType.MINING, newState.getBlockData())) {
|
if(newState.getType() != Material.OBSIDIAN && ExperienceConfig.getInstance().doesBlockGiveSkillXP(PrimarySkillType.MINING, newState.getBlockData())) {
|
||||||
if(BlockUtils.isWithinWorldBounds(newState.getBlock())) {
|
Block block = newState.getBlock();
|
||||||
mcMMO.getPlaceStore().setTrue(newState);
|
if(BlockUtils.isWithinWorldBounds(block)) {
|
||||||
|
BlockUtils.setUnnaturalBlock(block);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -245,7 +246,7 @@ public class BlockListener implements Listener {
|
|||||||
if(BlockUtils.isWithinWorldBounds(block)) {
|
if(BlockUtils.isWithinWorldBounds(block)) {
|
||||||
//NOTE: BlockMultiPlace has its own logic so don't handle anything that would overlap
|
//NOTE: BlockMultiPlace has its own logic so don't handle anything that would overlap
|
||||||
if (!(event instanceof BlockMultiPlaceEvent)) {
|
if (!(event instanceof BlockMultiPlaceEvent)) {
|
||||||
mcMMO.getPlaceStore().setTrue(blockState);
|
BlockUtils.setUnnaturalBlock(block);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -289,8 +290,8 @@ public class BlockListener implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Track unnatural blocks
|
//Track unnatural blocks
|
||||||
for(BlockState replacedStates : event.getReplacedBlockStates()) {
|
for(BlockState replacedState : event.getReplacedBlockStates()) {
|
||||||
mcMMO.getPlaceStore().setTrue(replacedStates);
|
BlockUtils.setUnnaturalBlock(replacedState.getBlock());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -220,7 +220,7 @@ public class EntityListener implements Listener {
|
|||||||
metaCleanupTask.runTaskTimer(pluginRef, 20, 20*60); //6000 ticks is 5 minutes
|
metaCleanupTask.runTaskTimer(pluginRef, 20, 20*60); //6000 ticks is 5 minutes
|
||||||
}
|
}
|
||||||
else if (isTracked) {
|
else if (isTracked) {
|
||||||
mcMMO.getPlaceStore().setTrue(block);
|
BlockUtils.setUnnaturalBlock(block);
|
||||||
entity.removeMetadata(MetadataConstants.METADATA_KEY_TRAVELING_BLOCK, pluginRef);
|
entity.removeMetadata(MetadataConstants.METADATA_KEY_TRAVELING_BLOCK, pluginRef);
|
||||||
}
|
}
|
||||||
} else if ((block.getType() == Material.REDSTONE_ORE || block.getType().getKey().getKey().equalsIgnoreCase("deepslate_redstone_ore"))) {
|
} else if ((block.getType() == Material.REDSTONE_ORE || block.getType().getKey().getKey().equalsIgnoreCase("deepslate_redstone_ore"))) {
|
||||||
|
@ -35,7 +35,7 @@ public class PistonTrackerTask extends BukkitRunnable {
|
|||||||
Block nextBlock = b.getRelative(direction);
|
Block nextBlock = b.getRelative(direction);
|
||||||
|
|
||||||
if (nextBlock.hasMetadata(MetadataConstants.METADATA_KEY_PISTON_TRACKING)) {
|
if (nextBlock.hasMetadata(MetadataConstants.METADATA_KEY_PISTON_TRACKING)) {
|
||||||
mcMMO.getPlaceStore().setTrue(nextBlock);
|
BlockUtils.setUnnaturalBlock(nextBlock);
|
||||||
nextBlock.removeMetadata(MetadataConstants.METADATA_KEY_PISTON_TRACKING, mcMMO.p);
|
nextBlock.removeMetadata(MetadataConstants.METADATA_KEY_PISTON_TRACKING, mcMMO.p);
|
||||||
}
|
}
|
||||||
else if (mcMMO.getPlaceStore().isTrue(nextBlock)) {
|
else if (mcMMO.getPlaceStore().isTrue(nextBlock)) {
|
||||||
|
@ -30,6 +30,6 @@ public class StickyPistonTrackerTask extends BukkitRunnable {
|
|||||||
|
|
||||||
// The sticky piston actually pulled the block so move the PlaceStore data
|
// The sticky piston actually pulled the block so move the PlaceStore data
|
||||||
mcMMO.getPlaceStore().setFalse(movedBlock.getRelative(direction));
|
mcMMO.getPlaceStore().setFalse(movedBlock.getRelative(direction));
|
||||||
mcMMO.getPlaceStore().setTrue(movedBlock);
|
BlockUtils.setUnnaturalBlock(movedBlock);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -303,7 +303,7 @@ public class MiningManager extends SkillManager {
|
|||||||
* @return the Blast Mining tier
|
* @return the Blast Mining tier
|
||||||
*/
|
*/
|
||||||
public int getDropMultiplier() {
|
public int getDropMultiplier() {
|
||||||
if (mcMMO.p.getAdvancedConfig().isBlastMiningBonusDropsEnabled()) {
|
if (!mcMMO.p.getAdvancedConfig().isBlastMiningBonusDropsEnabled()) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,6 +37,18 @@ public final class BlockUtils {
|
|||||||
blockState.setMetadata(MetadataConstants.METADATA_KEY_BONUS_DROPS, new BonusDropMeta(1, mcMMO.p));
|
blockState.setMetadata(MetadataConstants.METADATA_KEY_BONUS_DROPS, new BonusDropMeta(1, mcMMO.p));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set up the state for a block to be seen as unnatural and cleanup any unwanted metadata from the block
|
||||||
|
* @param block target block
|
||||||
|
*/
|
||||||
|
public static void setUnnaturalBlock(@NotNull Block block) {
|
||||||
|
mcMMO.getPlaceStore().setTrue(block);
|
||||||
|
|
||||||
|
// Failsafe against lingering metadata
|
||||||
|
if(block.hasMetadata(MetadataConstants.METADATA_KEY_BONUS_DROPS))
|
||||||
|
block.removeMetadata(MetadataConstants.METADATA_KEY_BONUS_DROPS, mcMMO.p);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cleans up some block metadata when a block breaks and the metadata is no longer needed
|
* Cleans up some block metadata when a block breaks and the metadata is no longer needed
|
||||||
* This also sets the blocks coords to false in our chunk store
|
* This also sets the blocks coords to false in our chunk store
|
||||||
|
Loading…
Reference in New Issue
Block a user