▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Dcombat

Dcombat

A very good and open source combat manager plugin!

Оцените первым
18
0

🗡️ Dcombat — Complete Wiki

A powerful combat plugin for Paper and Folia servers. Combat tag players, punish loggers, control drops, restrict abilities, render visual borders, and integrate with your existing server stack — all from a single config file.


📋 Table of Contents

  • Requirements & Installation
  • Commands & Permissions
  • Configuration Reference
    • Settings
    • Pearl Settings
    • Trident Settings
    • Effect Settings
    • Death Settings
    • Drop Settings
    • Knockback Settings
    • Border Settings
    • Block Placement Settings
    • Crystal PvP Settings
    • Command Settings
    • Admin Settings
    • Region Settings
    • Combat Settings
    • Inventory Settings
    • Placeholder Settings
    • Messages Settings
    • Lifesteal Settings
  • PlaceholderAPI
  • Developer API
  • Plugin Integrations
  • License

📦 Requirements & Installation

Requirements

RequirementDetails
Java21 or newer
ServerPaper or Folia — API 1.19+
PacketEvents⚠️ Required — must be installed

Optional integrations (the plugin loads fine without these):

PluginPurpose
PlaceholderAPIEnables %dcombat_*% placeholders
WorldGuardRegion-based combat blocking
LandsClaim-based safe zone support
VaultEconomy integration hook
LifestealCoreHeart-stealing on combat kills

Installation

  1. Download Dcombat and drop the jar into your plugins/ folder.
  2. Install PacketEvents and any optional plugins you want.
  3. Start the server — plugins/Dcombat/config.yml and a wiki.txt reference will be generated automatically.
  4. Edit config.yml to your liking.
  5. Run /dcombat reload to apply changes without a restart.

⌨️ Commands & Permissions

All commands use the root label /combatlog (alias: /combat).

Admin Commands

CommandPermissionDescription
/combatlog reloaddcombat.reloadReload the configuration
/combatlog status <player>dcombat.statusCheck if a player is combat-tagged
/combatlog tag <player>dcombat.tagManually tag a player
/combatlog tag <player1> <player2>dcombat.tagMutually tag two players against each other
/combatlog untag <player>dcombat.untagRemove a player's combat tag
/combatlog untagalldcombat.untagallRemove all active combat tags
/combatlog statsdcombat.statsShow how many players are currently in combat

Tag-Out Commands

Tag-out grants a player temporary immunity from being combat-tagged.

CommandPermissionDescription
/tagout <duration>dcombat.tagoutGrant yourself tag-out immunity
/tagout <player> <duration>dcombat.tagoutGrant another player tag-out immunity
/tagout removedcombat.tagoutRemove your own tag-out immunity
/tagout remove <player>dcombat.tagoutRemove another player's tag-out immunity

Alias: /tagout can also be used as /tagimmunity

Bypass Permission

PermissionEffect
dcombat.bypass.adminPlayer can never be combat-tagged (requires excludeAdminsFromCombat: true in config)

⚙️ Configuration Reference

After making changes, run /combatlog reload. A wiki.txt quick-reference is also written to the plugin's data folder automatically.


1️⃣ Settings

settings:
  notifyAboutUpdates: true
  combatTimerDuration: 20s
  ignoredWorlds:
    - your_world
KeyTypeDefaultDescription
notifyAboutUpdatesbooleantrueNotify server operators when a new version is available
combatTimerDurationDuration20sHow long a player stays tagged after their last PvP interaction. Format: 15s, 1m, 1h
ignoredWorldslist[your_world]Worlds where combat tagging is completely disabled

2️⃣ Pearl Settings

pearl:
  pearlThrowDamageEnabled: true
  pearlThrowDisabledDuringCombat: true
  pearlCooldownEnabled: false
  pearlExtendsCombatTag: false
  pearlThrowDelay: 3s
KeyTypeDefaultDescription
pearlThrowDamageEnabledbooleantrueEnder pearl landing deals damage to the thrower
pearlThrowDisabledDuringCombatbooleantrueBlock pearl throws while in combat
pearlCooldownEnabledbooleanfalseEnable a cooldown between pearl throws
pearlExtendsCombatTagbooleanfalseThrowing a pearl during combat resets the timer
pearlThrowDelayDuration3sCooldown length between throws (when pearlCooldownEnabled: true)

3️⃣ Trident Settings

trident:
  tridentRiptideDisabledDuringCombat: false
  tridentRiptideExtendsCombatTag: false
  tridentRiptideDelay: 10s
KeyTypeDefaultDescription
tridentRiptideDisabledDuringCombatbooleanfalseBlock riptide while in combat
tridentRiptideExtendsCombatTagbooleanfalseUsing riptide during combat resets the timer
tridentRiptideDelayDuration10sCooldown between riptide uses

4️⃣ Effect Settings

effect:
  customEffectsEnabled: false
  customEffects:
    SPEED: 1
    RESISTANCE: 0
KeyTypeDefaultDescription
customEffectsEnabledbooleanfalseApply potion effects to players while they are in combat
customEffectsmapSPEED:1, RESISTANCE:0PotionEffectType → amplifier. Amplifier 0 = Level I, 1 = Level II, etc.

5️⃣ Death Settings

Controls visual effects triggered on player death.

death:
  lightning:
    afterEveryDeath: false
    inCombat: true
  firework:
    afterEveryDeath: false
    inCombat: false
    power: 2
    fireworkType: BALL
    primaryColor: "#a80022"
    fadeColor: "#0a0a0a"
    particlesEnabled: true
    mainParticle: CAMPFIRE_COSY_SMOKE
    mainParticleCount: 3
    secondaryParticle: SMALL_FLAME
    secondaryParticleCount: 3

⚡ Lightning

KeyTypeDefaultDescription
lightning.afterEveryDeathbooleanfalseStrike lightning on every player death
lightning.inCombatbooleantrueStrike lightning only on combat deaths

🎆 Firework

KeyTypeDefaultDescription
firework.afterEveryDeathbooleanfalseSpawn a firework on every player death
firework.inCombatbooleanfalseSpawn a firework only on combat deaths
firework.powerint2Firework flight power / duration
firework.fireworkTypeFireworkEffect.TypeBALLShape: BALL, BALL_LARGE, STAR, CREEPER, BURST
firework.primaryColorhex#a80022Primary explosion color
firework.fadeColorhex#0a0a0aFade-out color
firework.particlesEnabledbooleantrueEmit ambient particles alongside the firework
firework.mainParticleXParticleCAMPFIRE_COSY_SMOKEPrimary particle type
firework.mainParticleCountint3Primary particles per tick
firework.secondaryParticleXParticleSMALL_FLAMESecondary particle type
firework.secondaryParticleCountint3Secondary particles per tick

6️⃣ Drop Settings

Controls how a player's inventory is handled when they die during combat.

drop:
  dropEventPriority: NORMAL
  dropType: UNCHANGED
  dropItemPercent: 100
  playersHealthPercentClamp: 20
  affectExperience: false
KeyTypeDefaultDescription
dropEventPriorityEventPriorityNORMALBukkit priority for the drop handler
dropTypeenumUNCHANGEDDrop behavior mode (see table below)
dropItemPercentint100% of items the victim keeps when dropType: PERCENT. Lower = more items dropped
playersHealthPercentClampint20Minimum % of items always kept in PLAYERS_HEALTH mode — prevents full inventory loss
affectExperiencebooleanfalseApply the drop modifier to experience orbs as well

dropType options:

ValueBehavior
UNCHANGEDVanilla drop behavior — no changes
PERCENTA fixed % of items are dropped, set by dropItemPercent
PLAYERS_HEALTHDrop % scales with the victim's remaining health, clamped by playersHealthPercentClamp

7️⃣ Knockback Settings

knockback:
  multiplier: 1.0
  vertical: 0.2
  forceTeleport:
    delay: 1s
    unsafeGroundBlocks: []
    airBlocks: []
KeyTypeDefaultDescription
multiplierdouble1.0Global knockback strength multiplier
verticaldouble0.2Vertical knockback component
forceTeleport.delayDuration1sDelay before a safe-teleport check fires after knocking a player near an unsafe area
forceTeleport.unsafeGroundBlockslist of XMaterial[]Block types considered unsafe to land on
forceTeleport.airBlockslist of XMaterial[]Block types treated as air (also triggers safe-teleport)

8️⃣ Border Settings

A visual border rendered around the player while they are in combat.

border:
  distance: 6.5
  block:
    # block-based border animation options
  particle:
    # particle-based border animation options
KeyTypeDefaultDescription
distancedouble6.5Distance from the player where the border is rendered
blocksectionConfiguration for the block-based border animation
particlesectionConfiguration for the particle-based border animation

9️⃣ Block Placement Settings

blockPlacement:
  disableBlockPlacing: true
  blockPlacementMode: ABOVE
  blockPlacementModeDisplayName: "above"
  blockPlacementYCoordinate: 40
  restrictedBlockTypes: []
KeyTypeDefaultDescription
disableBlockPlacingbooleantruePrevent block placement while in combat
blockPlacementModeenumABOVEABOVE — cannot place above the Y limit. BELOW — cannot place below the Y limit
blockPlacementModeDisplayNamestringaboveDisplay name shown in messages for the current mode
blockPlacementYCoordinateint40The Y-level used as the boundary
restrictedBlockTypeslist of Material[]Specific materials that can never be placed during combat, regardless of Y level

💎 Crystal PvP Settings

crystalPvp:
  tagFromCrystals: true
  tagFromRespawnAnchor: true
KeyTypeDefaultDescription
tagFromCrystalsbooleantrueEnd crystal explosions tag the player who placed/triggered them
tagFromRespawnAnchorbooleantrueRespawn anchor explosions tag the responsible player

🚫 Command Settings

command:
  commandRestrictionMode: BLACKLIST
  restrictedCommands:
    - spawn
    - home
KeyTypeDefaultDescription
commandRestrictionModeenumBLACKLISTBLACKLIST — all commands allowed except listed. WHITELIST — only listed commands are allowed
restrictedCommandslist[]Commands to restrict. Do not include the leading /

🛡️ Admin Settings

admin:
  excludeAdminsFromCombat: false
  excludeCreativePlayersFromCombat: false
KeyTypeDefaultDescription
excludeAdminsFromCombatbooleanfalsePlayers with dcombat.bypass.admin are never tagged
excludeCreativePlayersFromCombatbooleanfalsePlayers in Creative mode are never tagged

🗺️ Region Settings

Requires WorldGuard to be installed.

region:
  blockedRegions:
    - your_region
  preventPvpInRegions: true
  restrictedRegionRadius: 10
KeyTypeDefaultDescription
blockedRegionslist[your_region]WorldGuard region names where combat tagging is disabled
preventPvpInRegionsbooleantruePrevent PvP from starting inside blocked regions
restrictedRegionRadiusint10Radius (in blocks) around blocked regions where combat is also prevented

⚔️ Combat Settings

combat:
  releaseAttackerOnVictimDeath: true
  disableElytraUsage: true
  disableElytraOnDamage: true
  disableFlying: true
  unequipElytraOnCombat: true
  disableFireworks: true
  enableDamageCauseLogging: false
  damageCauseRestrictionMode: WHITELIST
  loggedDamageCauses: []
  ignoredProjectileTypes:
    - ENDER_PEARL
    - EGG
  quitPunishmentEventPriority: NORMAL
  whitelistedKickReasons: []
KeyTypeDefaultDescription
releaseAttackerOnVictimDeathbooleantrueWhen the victim dies, the attacker is also untagged
disableElytraUsagebooleantruePrevent all elytra use while in combat
disableElytraOnDamagebooleantrueCancel elytra gliding when the player takes damage
disableFlyingbooleantrueDisable /fly mode while in combat
unequipElytraOnCombatbooleantrueForce-unequip the chestplate slot on combat entry
disableFireworksbooleantrueBlock firework rocket use during combat
enableDamageCauseLoggingbooleanfalseLog every damage cause to console (useful for debugging tagging triggers)
damageCauseRestrictionModeenumWHITELISTWHITELIST — only listed causes tag. BLACKLIST — all causes except listed tag
loggedDamageCauseslist of DamageCause[]Damage causes affected by the restriction mode
ignoredProjectileTypeslist of EntityTypeENDER_PEARL, EGGProjectiles that do not trigger a combat tag
quitPunishmentEventPriorityEventPriorityNORMALEvent priority for the logout-punishment handler
whitelistedKickReasonslist[]Server kick messages that will not be treated as a combat logout

🎒 Inventory Settings

inventory:
  inventoryAccessMode: ALLOW_ALL
  restrictedInventoryTypes:
    - CHEST
    - ENDER_CHEST
KeyTypeDefaultDescription
inventoryAccessModeenumALLOW_ALLALLOW_ALL — players can open anything. RESTRICT — certain containers are blocked
restrictedInventoryTypeslist of InventoryType[]Containers blocked in RESTRICT mode (e.g. CHEST, ENDER_CHEST, BARREL, SHULKER_BOX)

💬 Placeholder Settings

placeholders:
  isInCombatFormattedTrue: "In Combat"
  isInCombatFormattedFalse: "Not In Combat"
KeyTypeDefaultDescription
isInCombatFormattedTruestringIn CombatText returned by %dcombat_isInCombat_formatted% when the player is tagged
isInCombatFormattedFalsestringNot In CombatText returned by %dcombat_isInCombat_formatted% when the player is not tagged

📢 Messages Settings

All messages use MiniMessage formatting and can target chat, action bar, title, or play a sound.

Available placeholders:

PlaceholderDescription
{PLAYER}Target player's name
{TIME}Duration value
{PERMISSION}Missing permission node
{USAGE}Correct command usage
{Y}Y-level coordinate
{MODE}Block placement mode name
{COUNT}Number of players
{FIRST_PLAYER}First player in a dual-tag
{SECOND_PLAYER}Second player in a dual-tag

Message keys:

KeyWhen it's sent
onlyForPlayersA console used a player-only command
adminTagPlayerAdmin tags a single player
adminTagMultiplePlayersAdmin mutually tags two players
adminUntagPlayerAdmin untags a player
adminUntagAllAdmin untags everyone
adminPlayerNotInCombatTarget wasn't combat-tagged
playerInCombatStatus check — player is tagged
playerNotInCombatStatus check — player is not tagged
adminCannotTagSelfAdmin tried to include themselves in a dual-tag
adminTagOutSelfAdmin granted themselves tag-out immunity
adminTagOutAdmin granted a player tag-out immunity
playerTagOutSent to the player who received immunity
adminTagOutOffAdmin removed a player's tag-out immunity
playerTagOutOffSent to the player whose immunity was removed
adminTagOutCanceledTag command blocked because the target has immunity
combatStatsResponse to /combatlog stats

❤️ Lifesteal Settings

Requires LifestealCore to be installed.

lifesteal:
  enabled: false
  heartsToSteal: 1
  stealOnlyInCombat: true
  stealOnKill: true
  stealOnDeath: false
  eliminateOnZeroHearts: true
  notifyOnKill: true
KeyTypeDefaultDescription
enabledbooleanfalseMaster toggle for LifestealCore integration
heartsToStealint1Hearts transferred from victim to killer on death
stealOnlyInCombatbooleantrueOnly steal hearts when at least one party is combat-tagged
stealOnKillbooleantrueKiller gains hearts on kill
stealOnDeathbooleanfalseVictim loses hearts on death regardless of stealOnKill
eliminateOnZeroHeartsbooleantrueVictim is eliminated (banned by LifestealCore) when their hearts hit zero
notifyOnKillbooleantrueSend a chat notification when hearts are stolen

📊 PlaceholderAPI

Requires PlaceholderAPI to be installed. The identifier is dcombat.

PlaceholderReturns
%dcombat_isInCombat%true or false
%dcombat_isInCombat_formatted%Your configured isInCombatFormattedTrue / isInCombatFormattedFalse strings
%dcombat_remaining_seconds%Seconds left on the combat timer (empty when not tagged)
%dcombat_remaining_millis%Milliseconds left on the combat timer (empty when not tagged)
%dcombat_opponent%Name of the player who tagged this player (empty when not tagged)
%dcombat_opponent_health%Opponent's current health, to 2 decimal places (empty when not tagged)

🔧 Developer API

Dcombat exposes a DcombatApi interface for other plugins.

DcombatApi api = DcombatProvider.get();

FightManager           fightManager  = api.getFightManager();
RegionProvider         regions       = api.getRegionProvider();
PearlService           pearls        = api.getFightPearlService();
FightTagOutService     tagOut        = api.getFightTagOutService();
FightEffectService     effects       = api.getFightEffectService();
DropService            drops         = api.getDropService();
DropKeepInventoryService keepInv     = api.getDropKeepInventoryService();

Events

FightTagEvent — fired when a player is combat-tagged (cancellable)

@EventHandler
public void onTag(FightTagEvent event) {
    UUID player = event.getPlayer();
    CauseOfTag cause = event.getCause(); // PVP, COMMAND, etc.
    event.setCancelled(true); // prevent the tag
}

FightUntagEvent — fired when a player's combat tag is removed (cancellable)

@EventHandler
public void onUntag(FightUntagEvent event) {
    UUID player = event.getPlayer();
    CauseOfUnTag cause = event.getCause(); // DEATH, TIMER, COMMAND, etc.
}

BorderShowAsyncEvent / BorderHideAsyncEvent

Fired asynchronously when the visual combat border is shown or hidden for a player.


🔌 Plugin Integrations

PluginStatusWhat it enables
PacketEvents⚠️ RequiredPacket-level elytra blocking, flying control, border rendering
PlaceholderAPIOptional%dcombat_*% placeholder expansion
WorldGuardOptionalblockedRegions and restrictedRegionRadius functionality
LandsOptionalClaim boundaries used as combat-safe zones
VaultOptionalEconomy integration hook
LifestealCoreOptionalHeart-stealing on combat kills

📄 License

Copyright (c) 2026 Devamy. All rights reserved.

This project is proprietary source code. No permission is granted to copy, modify, distribute, sell, sublicense, or claim this code as someone else's work without prior written permission from the copyright holder.

Часто задаваемые вопросы

Совместимость

Minecraft: Java Edition

1.21.x

Платформы

Поддерживаемые окружения

Сервер

Ссылки

Детали

Лицензия:
Опубликован:1 месяц назад
Обновлён:1 месяц назад
Главная