Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prevent Reinforcing In Combat #240

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions plugins/citadel-paper/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,6 @@ dependencies {

compileOnly(project(":plugins:civmodcore-paper"))
compileOnly(project(":plugins:namelayer-paper"))
compileOnly(project(":plugins:combattagplus-paper"))
compileOnly("com.gmail.filoghost.holographicdisplays:holographicdisplays-api:2.4.9")
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package vg.civcraft.mc.citadel;

import java.util.logging.Logger;

import net.minelink.ctplus.CombatTagPlus;
import org.bukkit.Bukkit;
import org.bukkit.event.HandlerList;
import org.bukkit.plugin.Plugin;
import vg.civcraft.mc.citadel.listener.ActivityListener;
import vg.civcraft.mc.citadel.activity.ActivityMap;
import vg.civcraft.mc.citadel.command.CitadelCommandManager;
Expand Down Expand Up @@ -41,6 +44,7 @@ public static Citadel getInstance() {
private AcidManager acidManager;
private ReinforcementTypeManager typeManager;
private HologramManager holoManager;
private CombatTagPlus combatTagPlus;
private CitadelSettingManager settingManager;
private CitadelDAO dao;
private ActivityMap activityMap;
Expand Down Expand Up @@ -79,10 +83,14 @@ public HologramManager getHologramManager() {
return holoManager;
}

public CombatTagPlus getCombatTagPlus() {
return combatTagPlus;
}

public ActivityMap getActivityMap() {
return activityMap;
}

CitadelDAO getDAO() {
return dao;
}
Expand Down Expand Up @@ -156,6 +164,11 @@ public void onEnable() {
else {
logger.info("HolographicDisplays is not loaded, no holograms available");
}});

Plugin combatTagPlusPlugin = Bukkit.getPluginManager().getPlugin("CombatTagPlus");
if(combatTagPlusPlugin != null) {
combatTagPlus = (CombatTagPlus) combatTagPlusPlugin;
}
commandManager = new CitadelCommandManager(this);
CitadelPermissionHandler.setup();
registerListeners();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ public class CitadelConfigManager extends ConfigParser {
private double redstoneRange;

private boolean hangersInheritReinforcements;
private boolean blockReinforcingInCombat;

private int activityMapResolution;
private int activityMapRadius;
Expand Down Expand Up @@ -103,6 +104,10 @@ public boolean doHangersInheritReinforcements() {
return hangersInheritReinforcements;
}

public boolean shouldBlockReinforcingInCombat() {
return blockReinforcingInCombat;
}

public Map<UUID, WorldBorderBuffers> getWorldBorderBuffers() {
return Collections.unmodifiableMap(this.buffers);
}
Expand Down Expand Up @@ -171,6 +176,7 @@ protected boolean parseInternal(ConfigurationSection config) {
parseReinforcementTypes(config.getConfigurationSection("reinforcements"));
parseAcidTypes(config.getConfigurationSection("acids"));
hangersInheritReinforcements = config.getBoolean("hangers_inherit_reinforcement", false);
blockReinforcingInCombat = config.getBoolean("block_reinforcing_in_combat", false);

activityMapRadius = config.getInt("activity-map-radius", 1);
activityMapResolution = config.getInt("activity-map-resolution", 512);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import net.md_5.bungee.api.chat.HoverEvent;
import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.api.chat.hover.content.Text;
import net.minelink.ctplus.CombatTagPlus;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.block.Block;
Expand Down Expand Up @@ -200,6 +202,15 @@ public static boolean attemptReinforcementCreation(Block block, ReinforcementTyp
block.getLocation());
return true;
}
if (Bukkit.getPluginManager().getPlugin("CombatTagPlus") != null &&
Citadel.getInstance().getCombatTagPlus().getTagManager().isTagged(player.getUniqueId()) &&
Citadel.getInstance().getConfigManager().shouldBlockReinforcingInCombat()) {
Citadel.getInstance().getStateManager().setState(player, null);
CitadelUtility.sendAndLog(player, ChatColor.RED,
"You cannot reinforce in combat ",
block.getLocation());
return true;
}
Reinforcement newRein = ReinforcementLogic.callReinforcementCreationEvent(player, block, type, group);
if (newRein == null) {
return true;
Expand Down
3 changes: 3 additions & 0 deletions plugins/citadel-paper/src/main/resources/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,9 @@ acidblock_material:
# Determines whether hanging entities (such as Item Frames) can be protected by their host block
hangers_inherit_reinforcement: false

# Determines whether or not reinforcing should be allowed in combat (requires CombatTagPlus to function)
block_reinforcing_in_combat: false

# reinforcement_damageMultiplier is m where BlockDamage = 2 ^ (n/m) where n is equal to the number of days the group has been inactive
reinforcement_damageMultiplier: 365
database:
Expand Down
1 change: 1 addition & 0 deletions plugins/citadel-paper/src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ depend:
- CivModCore
softdepend:
- HolographicDisplays
- CombatTagPlus
description: Citadel allows you to make blocks difficult to break. When a block is reinforced, it must be broken many times before it is destroyed.
api-version: 1.17
permissions:
Expand Down