Skip to content

Commit

Permalink
Merge pull request #17 from ChafficPlugins/14-release-1-2-4
Browse files Browse the repository at this point in the history
#14 release 1.2.4
  • Loading branch information
Chafficui committed May 2, 2022
2 parents 0db10f9 + 202a2af commit e19af94
Show file tree
Hide file tree
Showing 7 changed files with 67 additions and 20 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>de.chafficplugins</groupId>
<artifactId>MiningLevels</artifactId>
<version>1.2.3</version>
<version>1.2.4</version>
<packaging>jar</packaging>

<name>MiningLevels</name>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ private void loadConfig() {
getConfig().addDefault(LEVEL_WITH_GENERATED_BLOCKS, false);
getConfig().addDefault(LEVEL_PROGRESSION_MESSAGES, "actionBar");
getConfig().addDefault(DESTROY_MINING_BLOCKS_ON_EXPLODE, true);
getConfig().addDefault(ADMIN_DEBUG, false);
getConfig().addDefault(MINING_ITEMS, new String[]{
Material.DIAMOND_PICKAXE.name(),
Material.GOLDEN_PICKAXE.name(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,41 +10,54 @@
import org.bukkit.block.Block;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.*;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockDamageEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;

import static de.chafficplugins.mininglevels.listeners.events.NoXpBlockEvents.noXpBlocks;
import static de.chafficplugins.mininglevels.utils.ConfigStrings.*;
import static de.chafficplugins.mininglevels.utils.ConfigStrings.LEVEL_NEEDED;
import static de.chafficplugins.mininglevels.utils.ConfigStrings.MINING_ITEMS;
import static de.chafficplugins.mininglevels.utils.SenderUtils.sendDebug;

public class MiningEvents implements Listener {
private static final MiningLevels plugin = MiningLevels.getPlugin(MiningLevels.class);

@EventHandler
public void onBlockDamage(final BlockDamageEvent event) {
final MiningBlock block = MiningBlock.getMiningBlock(event.getBlock().getType());
sendDebug(event.getPlayer(), "BlockDamageEvent: " + event.getBlock().getType().name());
if(block != null) {
final MiningPlayer miningPlayer = MiningPlayer.getMiningPlayer(event.getPlayer().getUniqueId());
if(miningPlayer != null) {
if(miningPlayer.getLevel().getOrdinal() < block.getMinLevel()) {
if (miningPlayer.getLevel().getOrdinal() < block.getMinLevel()) {
sendDebug(event.getPlayer(), "BlockDamageEvent: " + "Level too low.");
MiningLevel level = MiningLevel.get(block.getMinLevel());
if(level == null) return;
if (level == null) return;
miningPlayer.showMessage(LEVEL_NEEDED, ChatColor.RED, level.getName());
event.setCancelled(true);
} else if(isMiningItem(event.getItemInHand().getType())) {
//check if the block was placed by a player
if(plugin.getConfigBoolean(LEVEL_WITH_PLAYER_PLACED_BLOCKS) || !noXpBlocks.contains(event.getBlock())) {
if(miningPlayer.getLevel().getHasteLevel() > 0) {
event.getPlayer().addPotionEffect(new PotionEffect(PotionEffectType.FAST_DIGGING, 5*20, miningPlayer.getLevel().getHasteLevel()));
} else {
ItemStack itemInUse = event.getPlayer().getInventory().getItemInMainHand();
if (isMiningItem(itemInUse.getType())) {
if (miningPlayer.getLevel().getHasteLevel() > 0) {
sendDebug(event.getPlayer(), "BlockDamageEvent: " + "Haste level: " + miningPlayer.getLevel().getHasteLevel());
event.getPlayer().addPotionEffect(new PotionEffect(PotionEffectType.FAST_DIGGING, 5 * 20, miningPlayer.getLevel().getHasteLevel()));
}
if(MathUtils.randomDouble(0,100) < miningPlayer.getLevel().getInstantBreakProbability()) {
if (MathUtils.randomDouble(0, 100) < miningPlayer.getLevel().getInstantBreakProbability()) {
sendDebug(event.getPlayer(), "BlockDamageEvent: " + "Instant break.");
event.setInstaBreak(true); //Insta break
}
} else {
sendDebug(event.getPlayer(), "BlockDamageEvent: " + "The held item " + itemInUse.getType() + " is not a mining item.");
}
}
} else {
sendDebug(event.getPlayer(), "BlockDamageEvent: " + "Error: Player is not registered to the plugin!");
event.setCancelled(true);
}
} else {
sendDebug(event.getPlayer(), "BlockDamageEvent: " + "Not a mining block.");
}
}

Expand All @@ -55,31 +68,45 @@ private boolean isMiningItem(final Material material) {
@EventHandler
public void onBlockBreak(final BlockBreakEvent event) {
final MiningBlock block = MiningBlock.getMiningBlock(event.getBlock().getType());
sendDebug(event.getPlayer(), "BlockBreakEvent: " + event.getBlock().getType().name());
if(block != null) {
final MiningPlayer miningPlayer = MiningPlayer.getMiningPlayer(event.getPlayer().getUniqueId());
if(miningPlayer != null) {
if(miningPlayer.getLevel().getOrdinal() < block.getMinLevel()) {
sendDebug(event.getPlayer(), "BlockBreakEvent: " + "Level too low.");
event.setCancelled(true);
MiningLevel level = MiningLevel.get(block.getMinLevel());
if(level == null) return;
miningPlayer.showMessage(LEVEL_NEEDED, ChatColor.RED, level.getName());
} else {
//check if the block was placed by a player
if(plugin.getConfigBoolean(LEVEL_WITH_PLAYER_PLACED_BLOCKS) || !noXpBlocks.contains(event.getBlock())) {
miningPlayer.alterXp(block.getXp());
MiningLevel level = miningPlayer.getLevel();
if(event.getPlayer().getItemInUse() != null && isMiningItem(event.getPlayer().getItemInUse().getType()) && MathUtils.randomDouble(0,100) < level.getExtraOreProbability()) {
Block actualBlock = event.getBlock();
int amount = (int) MathUtils.randomDouble(1, level.getMaxExtraOre());
for (int i = 0; i < amount; i++) {
event.getPlayer().getWorld().dropItemNaturally(actualBlock.getLocation(), actualBlock.getDrops().iterator().next());
}
if (noXpBlocks.contains(event.getBlock())) {
sendDebug(event.getPlayer(), "BlockBreakEvent: " + "Config options disallow block to drop xp.");
return;
}
miningPlayer.alterXp(block.getXp());
MiningLevel level = miningPlayer.getLevel();
ItemStack itemInUse = event.getPlayer().getInventory().getItemInMainHand();
if (!isMiningItem(itemInUse.getType())) {
sendDebug(event.getPlayer(), "BlockBreakEvent: " + "The held " + itemInUse.getType() + " item is not a mining item.");
return;
}

if (MathUtils.randomDouble(0, 100) < level.getExtraOreProbability()) {
Block actualBlock = event.getBlock();
int amount = (int) MathUtils.randomDouble(1, level.getMaxExtraOre());
for (int i = 0; i < amount; i++) {
event.getPlayer().getWorld().dropItemNaturally(actualBlock.getLocation(), actualBlock.getDrops().iterator().next());
}
sendDebug(event.getPlayer(), "BlockBreakEvent: " + "Dropped " + amount + " extra ores.");
}
}
} else {
sendDebug(event.getPlayer(), "BlockBreakEvent: " + "Error: Player is not registered to the plugin!");
event.setCancelled(true);
}
} else {
sendDebug(event.getPlayer(), "BlockBreakEvent: " + "Not a mining block.");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import java.util.ArrayList;

import static de.chafficplugins.mininglevels.utils.ConfigStrings.*;
import static de.chafficplugins.mininglevels.utils.SenderUtils.sendDebug;

public class NoXpBlockEvents implements Listener {
private static final MiningLevels plugin = MiningLevels.getPlugin(MiningLevels.class);
Expand All @@ -27,9 +28,11 @@ public class NoXpBlockEvents implements Listener {
@EventHandler
public void onBlockPlace(final BlockPlaceEvent event) {
if(!plugin.getConfigBoolean(LEVEL_WITH_PLAYER_PLACED_BLOCKS)) {
sendDebug(event.getPlayer(), "Block placed: " + event.getBlock().getType());
final MiningBlock block = MiningBlock.getMiningBlock(event.getBlock().getType());
if(block != null) {
noXpBlocks.add(event.getBlock());
sendDebug(event.getPlayer(), "Block placed: " + "Player placed block registered.");
}
}
}
Expand All @@ -48,12 +51,14 @@ public void onBlockGenerated(final BlockFormEvent event) {
public void onTNTFired(final PlayerInteractEvent event) {
Block block = event.getClickedBlock();
if(!plugin.getConfigBoolean(DESTROY_MINING_BLOCKS_ON_EXPLODE) && event.getAction().equals(Action.RIGHT_CLICK_BLOCK) && block != null) {
sendDebug(event.getPlayer(), "Block clicked: " + block.getType());
if(block.getType().equals(Material.TNT) || block.getType().equals(Material.TNT_MINECART)) {
OfflinePlayer player = event.getPlayer();
ItemStack item = event.getItem();

if(item != null && item.getType().equals(Material.FLINT_AND_STEEL)) {
playersWithTNT.add(new PlayerWithTNT(player, block));
sendDebug(event.getPlayer(), "Block clicked: " + "Player with TNT registered.");
}
}
}
Expand All @@ -66,6 +71,7 @@ public void onBlockExplode(final EntityExplodeEvent event) {
if(!plugin.getConfigBoolean(DESTROY_MINING_BLOCKS_ON_EXPLODE)) {
PlayerWithTNT playerWithTNT = getPlayerWithTNT(b);
if(playerWithTNT != null) {
sendDebug(playerWithTNT.player.getPlayer(), "Block exploded: " + b.getType());
ArrayList<Block> blocksToRemove = new ArrayList<>();
for(final Block block : event.blockList()) {
MiningBlock miningBlock = MiningBlock.getMiningBlock(block.getType());
Expand All @@ -75,6 +81,7 @@ public void onBlockExplode(final EntityExplodeEvent event) {
blocksToRemove.add(block);
}
}
sendDebug(playerWithTNT.player.getPlayer(), "Block exploded: " + "Higher level block destruction disabled.");
}
event.blockList().removeAll(blocksToRemove);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,15 @@

import java.io.IOException;

import static de.chafficplugins.mininglevels.utils.SenderUtils.sendDebug;

public class ServerEvents implements Listener {
@EventHandler
public void onJoin(PlayerJoinEvent event) throws IOException {
if(MiningPlayer.notExists(event.getPlayer().getUniqueId())) {
new MiningPlayer(event.getPlayer().getUniqueId(), 0, 0);
MiningPlayer.save();
sendDebug(event.getPlayer(), "PlayerJoinEvent: Player created.");
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ public class ConfigStrings {
public final static int BSTATS_ID = 14709;
public final static String CRUCIAL_API_VERSION = "2.1.5";
public final static String LOCALIZED_IDENTIFIER = "mininglevels";
public static final String PERMISSION_DEBUG = "mininglevels.debug";

public static String PREFIX = "§8[§6ML§8] §r";

Expand All @@ -29,6 +30,7 @@ public class ConfigStrings {
public final static String LEVEL_PROGRESSION_MESSAGES = "level_progression_messages";
public final static String DESTROY_MINING_BLOCKS_ON_EXPLODE = "destroy_mining_blocks_on_explode";
public final static String MINING_ITEMS = "mining_items";
public final static String ADMIN_DEBUG = "admin.debug";

//Messages
public final static String NO_PERMISSION = "no_permission";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package de.chafficplugins.mininglevels.utils;

import de.chafficplugins.mininglevels.MiningLevels;
import io.github.chafficui.CrucialAPI.Utils.localization.Localizer;
import net.md_5.bungee.api.ChatMessageType;
import net.md_5.bungee.api.chat.TextComponent;
Expand All @@ -11,6 +12,7 @@
import static de.chafficplugins.mininglevels.utils.ConfigStrings.PREFIX;

public class SenderUtils {
private static final MiningLevels plugin = MiningLevels.getPlugin(MiningLevels.class);

public static boolean hasOnePermissions(CommandSender sender, String... permissions) {
if(sender.isOp() || sender.hasPermission(ConfigStrings.PERMISSION_ADMIN)) {
Expand Down Expand Up @@ -39,4 +41,9 @@ public static void sendMessage(CommandSender sender, String key, ChatColor color
public static void sendActionBar(Player sender, String key, ChatColor color, String... values) {
sender.spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(color + Localizer.getLocalizedString(LOCALIZED_IDENTIFIER + "_" + key, values)));
}

public static void sendDebug(Player player, String message) {
if(hasOnePermissions(player, ConfigStrings.PERMISSION_DEBUG) && plugin.getConfigBoolean(ConfigStrings.ADMIN_DEBUG))
player.sendMessage(ChatColor.DARK_GRAY + "[" + ChatColor.DARK_RED + "DEBUG" + ChatColor.DARK_GRAY + "] " + ChatColor.GRAY + message);
}
}

0 comments on commit e19af94

Please sign in to comment.