10
10
import org .bukkit .block .Block ;
11
11
import org .bukkit .event .EventHandler ;
12
12
import org .bukkit .event .Listener ;
13
- import org .bukkit .event .block .*;
13
+ import org .bukkit .event .block .BlockBreakEvent ;
14
+ import org .bukkit .event .block .BlockDamageEvent ;
15
+ import org .bukkit .inventory .ItemStack ;
14
16
import org .bukkit .potion .PotionEffect ;
15
17
import org .bukkit .potion .PotionEffectType ;
16
18
17
19
import static de .chafficplugins .mininglevels .listeners .events .NoXpBlockEvents .noXpBlocks ;
18
- import static de .chafficplugins .mininglevels .utils .ConfigStrings .*;
20
+ import static de .chafficplugins .mininglevels .utils .ConfigStrings .LEVEL_NEEDED ;
21
+ import static de .chafficplugins .mininglevels .utils .ConfigStrings .MINING_ITEMS ;
22
+ import static de .chafficplugins .mininglevels .utils .SenderUtils .sendDebug ;
19
23
20
24
public class MiningEvents implements Listener {
21
25
private static final MiningLevels plugin = MiningLevels .getPlugin (MiningLevels .class );
22
26
23
27
@ EventHandler
24
28
public void onBlockDamage (final BlockDamageEvent event ) {
25
29
final MiningBlock block = MiningBlock .getMiningBlock (event .getBlock ().getType ());
30
+ sendDebug (event .getPlayer (), "BlockDamageEvent: " + event .getBlock ().getType ().name ());
26
31
if (block != null ) {
27
32
final MiningPlayer miningPlayer = MiningPlayer .getMiningPlayer (event .getPlayer ().getUniqueId ());
28
33
if (miningPlayer != null ) {
29
- if (miningPlayer .getLevel ().getOrdinal () < block .getMinLevel ()) {
34
+ if (miningPlayer .getLevel ().getOrdinal () < block .getMinLevel ()) {
35
+ sendDebug (event .getPlayer (), "BlockDamageEvent: " + "Level too low." );
30
36
MiningLevel level = MiningLevel .get (block .getMinLevel ());
31
- if (level == null ) return ;
37
+ if (level == null ) return ;
32
38
miningPlayer .showMessage (LEVEL_NEEDED , ChatColor .RED , level .getName ());
33
39
event .setCancelled (true );
34
- } else if (isMiningItem (event .getItemInHand ().getType ())) {
35
- //check if the block was placed by a player
36
- if (plugin .getConfigBoolean (LEVEL_WITH_PLAYER_PLACED_BLOCKS ) || !noXpBlocks .contains (event .getBlock ())) {
37
- if (miningPlayer .getLevel ().getHasteLevel () > 0 ) {
38
- event .getPlayer ().addPotionEffect (new PotionEffect (PotionEffectType .FAST_DIGGING , 5 *20 , miningPlayer .getLevel ().getHasteLevel ()));
40
+ } else {
41
+ ItemStack itemInUse = event .getPlayer ().getInventory ().getItemInMainHand ();
42
+ if (isMiningItem (itemInUse .getType ())) {
43
+ if (miningPlayer .getLevel ().getHasteLevel () > 0 ) {
44
+ sendDebug (event .getPlayer (), "BlockDamageEvent: " + "Haste level: " + miningPlayer .getLevel ().getHasteLevel ());
45
+ event .getPlayer ().addPotionEffect (new PotionEffect (PotionEffectType .FAST_DIGGING , 5 * 20 , miningPlayer .getLevel ().getHasteLevel ()));
39
46
}
40
- if (MathUtils .randomDouble (0 ,100 ) < miningPlayer .getLevel ().getInstantBreakProbability ()) {
47
+ if (MathUtils .randomDouble (0 , 100 ) < miningPlayer .getLevel ().getInstantBreakProbability ()) {
48
+ sendDebug (event .getPlayer (), "BlockDamageEvent: " + "Instant break." );
41
49
event .setInstaBreak (true ); //Insta break
42
50
}
51
+ } else {
52
+ sendDebug (event .getPlayer (), "BlockDamageEvent: " + "The held item " + itemInUse .getType () + " is not a mining item." );
43
53
}
44
54
}
45
55
} else {
56
+ sendDebug (event .getPlayer (), "BlockDamageEvent: " + "Error: Player is not registered to the plugin!" );
46
57
event .setCancelled (true );
47
58
}
59
+ } else {
60
+ sendDebug (event .getPlayer (), "BlockDamageEvent: " + "Not a mining block." );
48
61
}
49
62
}
50
63
@@ -55,31 +68,45 @@ private boolean isMiningItem(final Material material) {
55
68
@ EventHandler
56
69
public void onBlockBreak (final BlockBreakEvent event ) {
57
70
final MiningBlock block = MiningBlock .getMiningBlock (event .getBlock ().getType ());
71
+ sendDebug (event .getPlayer (), "BlockBreakEvent: " + event .getBlock ().getType ().name ());
58
72
if (block != null ) {
59
73
final MiningPlayer miningPlayer = MiningPlayer .getMiningPlayer (event .getPlayer ().getUniqueId ());
60
74
if (miningPlayer != null ) {
61
75
if (miningPlayer .getLevel ().getOrdinal () < block .getMinLevel ()) {
76
+ sendDebug (event .getPlayer (), "BlockBreakEvent: " + "Level too low." );
62
77
event .setCancelled (true );
63
78
MiningLevel level = MiningLevel .get (block .getMinLevel ());
64
79
if (level == null ) return ;
65
80
miningPlayer .showMessage (LEVEL_NEEDED , ChatColor .RED , level .getName ());
66
81
} else {
67
82
//check if the block was placed by a player
68
- if (plugin .getConfigBoolean (LEVEL_WITH_PLAYER_PLACED_BLOCKS ) || !noXpBlocks .contains (event .getBlock ())) {
69
- miningPlayer .alterXp (block .getXp ());
70
- MiningLevel level = miningPlayer .getLevel ();
71
- if (event .getPlayer ().getItemInUse () != null && isMiningItem (event .getPlayer ().getItemInUse ().getType ()) && MathUtils .randomDouble (0 ,100 ) < level .getExtraOreProbability ()) {
72
- Block actualBlock = event .getBlock ();
73
- int amount = (int ) MathUtils .randomDouble (1 , level .getMaxExtraOre ());
74
- for (int i = 0 ; i < amount ; i ++) {
75
- event .getPlayer ().getWorld ().dropItemNaturally (actualBlock .getLocation (), actualBlock .getDrops ().iterator ().next ());
76
- }
83
+ if (noXpBlocks .contains (event .getBlock ())) {
84
+ sendDebug (event .getPlayer (), "BlockBreakEvent: " + "Config options disallow block to drop xp." );
85
+ return ;
86
+ }
87
+ miningPlayer .alterXp (block .getXp ());
88
+ MiningLevel level = miningPlayer .getLevel ();
89
+ ItemStack itemInUse = event .getPlayer ().getInventory ().getItemInMainHand ();
90
+ if (!isMiningItem (itemInUse .getType ())) {
91
+ sendDebug (event .getPlayer (), "BlockBreakEvent: " + "The held " + itemInUse .getType () + " item is not a mining item." );
92
+ return ;
93
+ }
94
+
95
+ if (MathUtils .randomDouble (0 , 100 ) < level .getExtraOreProbability ()) {
96
+ Block actualBlock = event .getBlock ();
97
+ int amount = (int ) MathUtils .randomDouble (1 , level .getMaxExtraOre ());
98
+ for (int i = 0 ; i < amount ; i ++) {
99
+ event .getPlayer ().getWorld ().dropItemNaturally (actualBlock .getLocation (), actualBlock .getDrops ().iterator ().next ());
77
100
}
101
+ sendDebug (event .getPlayer (), "BlockBreakEvent: " + "Dropped " + amount + " extra ores." );
78
102
}
79
103
}
80
104
} else {
105
+ sendDebug (event .getPlayer (), "BlockBreakEvent: " + "Error: Player is not registered to the plugin!" );
81
106
event .setCancelled (true );
82
107
}
108
+ } else {
109
+ sendDebug (event .getPlayer (), "BlockBreakEvent: " + "Not a mining block." );
83
110
}
84
111
}
85
112
}
0 commit comments