9
0
mirror of https://github.com/Auxilor/Reforges.git synced 2026-01-06 15:51:32 +00:00

Added immediate reforge and enabled extensions

This commit is contained in:
Auxilor
2021-08-16 03:39:08 +01:00
parent 4ded447c87
commit 284b546d8e
6 changed files with 127 additions and 1 deletions

View File

@@ -29,7 +29,7 @@ public class ReforgesPlugin extends EcoPlugin {
* Internal constructor called by bukkit on plugin load.
*/
public ReforgesPlugin() {
super(0, 12412, "&3");
super(0, 12412, "&3", true);
instance = this;
}

View File

@@ -10,6 +10,7 @@ import com.willfp.reforges.reforges.reforges.ReforgeDurable;
import com.willfp.reforges.reforges.reforges.ReforgeDynamic;
import com.willfp.reforges.reforges.reforges.ReforgeEvasive;
import com.willfp.reforges.reforges.reforges.ReforgeGravitated;
import com.willfp.reforges.reforges.reforges.ReforgeImmediate;
import com.willfp.reforges.reforges.reforges.ReforgeLight;
import com.willfp.reforges.reforges.reforges.ReforgeLucky;
import com.willfp.reforges.reforges.reforges.ReforgeNautical;
@@ -58,6 +59,7 @@ public class Reforges {
public static final Reforge VERSATILE = new ReforgeVersatile();
public static final Reforge AFFLUENT = new ReforgeAffluent();
public static final Reforge DURABLE = new ReforgeDurable();
public static final Reforge IMMEDIATE = new ReforgeImmediate();
/**
* Get all registered {@link Reforge}s.

View File

@@ -0,0 +1,57 @@
package com.willfp.reforges.reforges.reforges;
import com.willfp.eco.core.integrations.anticheat.AnticheatManager;
import com.willfp.eco.util.NumberUtils;
import com.willfp.reforges.reforges.Reforge;
import com.willfp.reforges.reforges.meta.ReforgeTarget;
import com.willfp.reforges.reforges.util.ReforgeUtils;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.event.EventHandler;
import org.bukkit.event.block.BlockDamageEvent;
import org.bukkit.event.player.PlayerItemDamageEvent;
import org.jetbrains.annotations.NotNull;
public class ReforgeImmediate extends Reforge {
public ReforgeImmediate() {
super("immediate");
}
@Override
public ReforgeTarget[] getTarget() {
return new ReforgeTarget[]{
ReforgeTarget.PICKAXE
};
}
@EventHandler(ignoreCancelled = true)
public void handle(@NotNull final BlockDamageEvent event) {
Reforge reforge = ReforgeUtils.getReforge(event.getItemInHand());
if (reforge == null || !reforge.equals(this)) {
return;
}
Block block = event.getBlock();
if (block.getDrops(event.getItemInHand()).isEmpty()) {
return;
}
if (block.getType().getHardness() > 100) {
return;
}
if (block.getType() == Material.BEDROCK) {
return;
}
AnticheatManager.exemptPlayer(event.getPlayer());
if (NumberUtils.randFloat(0, 100) < this.getConfig().getDouble("chance")) {
event.setInstaBreak(true);
}
AnticheatManager.unexemptPlayer(event.getPlayer());
}
}

View File

@@ -1,10 +1,12 @@
package com.willfp.reforges.reforges.util;
import org.bukkit.block.Block;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile;
import org.bukkit.entity.Trident;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityShootBowEvent;
@@ -15,6 +17,20 @@ import org.jetbrains.annotations.NotNull;
@SuppressWarnings("unused")
public interface Watcher {
/**
* Called when a player breaks a block.
*
* @param player The player.
* @param block The block that was broken.
* @param event The event that called this watcher.
*/
default void onBlockBreak(@NotNull final Player player,
@NotNull final Block block,
@NotNull final BlockBreakEvent event) {
// Empty default as enchantments only override required watchers.
}
/**
* Called when an entity shoots another entity with an arrow.
*

View File

@@ -7,6 +7,7 @@ import com.willfp.eco.core.integrations.antigrief.AntigriefManager;
import com.willfp.eco.core.integrations.mcmmo.McmmoManager;
import com.willfp.eco.util.ArrowUtils;
import com.willfp.reforges.reforges.Reforge;
import org.bukkit.block.Block;
import org.bukkit.entity.AbstractArrow;
import org.bukkit.entity.Arrow;
import org.bukkit.entity.EntityType;
@@ -16,6 +17,7 @@ import org.bukkit.entity.Projectile;
import org.bukkit.entity.Trident;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityShootBowEvent;
@@ -35,6 +37,39 @@ public class WatcherTriggers extends PluginDependent<EcoPlugin> implements Liste
super(plugin);
}
/**
* Called when a player breaks a block.
*
* @param event The event to listen for.
*/
@EventHandler(ignoreCancelled = true)
public void onBlockBreak(@NotNull final BlockBreakEvent event) {
if (McmmoManager.isFake(event)) {
return;
}
Player player = event.getPlayer();
Block block = event.getBlock();
if (!AntigriefManager.canBreakBlock(player, block)) {
return;
}
if (event.isCancelled()) {
return;
}
ItemStack itemStack = player.getInventory().getItemInMainHand();
Reforge reforge = ReforgeUtils.getReforge(itemStack);
if (reforge == null) {
return;
}
reforge.onBlockBreak(player, block, event);
}
/**
* Called when an entity shoots another entity with an arrow.
*

View File

@@ -0,0 +1,16 @@
#
# Immediate Reforge
#
name: "<gradient:#3CA55C>Immediate</gradient:#B5AC49>"
enabled: true
description: "&a5%&r chance to inst-amine blocks"
stone-config:
requires-stone: false
texture: ''
craftable: false
recipe: []
config:
chance: 5