Make reinforcement damage also deal tool damage

This commit is contained in:
okx-code
2024-11-24 23:52:08 +00:00
parent d42a577584
commit cb2220c7b1
4 changed files with 21 additions and 0 deletions

View File

@@ -57,6 +57,8 @@ public class CitadelConfigManager extends ConfigParser {
private long activityDefault;
private List<String> activityWorlds;
private int reinforcementBreaksPerToolDamage;
private Map<UUID, WorldBorderBuffers> buffers;
private ReinforcementMultiplier multiplier;
@@ -113,6 +115,10 @@ public class CitadelConfigManager extends ConfigParser {
return multiplier;
}
public int getReinforcementBreaksPerToolDamage() {
return reinforcementBreaksPerToolDamage;
}
private ReinforcementEffect getReinforcementEffect(ConfigurationSection config) {
if (config == null) {
return null;
@@ -185,6 +191,7 @@ public class CitadelConfigManager extends ConfigParser {
activityDefault = config.getLong("activity-default", System.currentTimeMillis());
activityWorlds = config.getStringList("activity-map-worlds");
multiplier = ReinforcementMultiplier.parse(config.getMapList("reinforcementBreakMultipliers"));
reinforcementBreaksPerToolDamage = config.getInt("reinforcementBreaksPerToolDamage");
parseWorldBorderBuffers(config.getConfigurationSection("world-border-buffers"));

View File

@@ -2,6 +2,7 @@ package vg.civcraft.mc.citadel.playerstate;
import java.util.HashMap;
import java.util.UUID;
import java.util.concurrent.ThreadLocalRandom;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
@@ -10,6 +11,7 @@ import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import vg.civcraft.mc.citadel.Citadel;
import vg.civcraft.mc.citadel.CitadelPermissionHandler;
import vg.civcraft.mc.citadel.CitadelUtility;
import vg.civcraft.mc.citadel.ReinforcementLogic;
@@ -79,6 +81,10 @@ public abstract class AbstractPlayerState {
if (dre.isCancelled()) {
return;
}
int reinforcementBreaksPerToolDamage = Citadel.getInstance().getConfigManager().getReinforcementBreaksPerToolDamage();
if (reinforcementBreaksPerToolDamage > 0 && ThreadLocalRandom.current().nextInt(reinforcementBreaksPerToolDamage) == 0) {
e.getPlayer().getInventory().getItemInMainHand().damage(1, e.getPlayer());
}
damage = dre.getDamageDone();
ReinforcementLogic.damageReinforcement(rein, damage, e.getPlayer());
if (rein.getHealth() <= 0) {

View File

@@ -269,3 +269,7 @@ world-border-buffers:
z: 0.5
reinforcementBreakMultipliers: []
# number of times a tool can break a reinforcement before it gets damaged by one durability
# set to 0 to disable
reinforcementBreaksPerToolDamage: 50