Skip to content

Commit 4b46da0

Browse files
committed
Stop unstable blocks from preventing sieges.
Instead of cancelling the siege altogether, we replace an unstable block with Stone, the same way that missing banners are treated mid-siege. Closes #1002.
1 parent 073c008 commit 4b46da0

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

src/main/java/com/gmail/goosius/siegewar/playeractions/PlaceBlock.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.bukkit.Tag;
3131
import org.bukkit.block.Banner;
3232
import org.bukkit.block.Block;
33+
import org.bukkit.block.BlockFace;
3334
import org.bukkit.entity.Player;
3435

3536
import java.util.List;
@@ -302,9 +303,6 @@ private static synchronized void evaluateStartNewSiegeAttempt(Player player,
302303
if (nearbyTown.isRuined())
303304
throw new TownyException(translator.of("msg_err_cannot_start_siege_at_ruined_town"));
304305

305-
if(SiegeWarBlockUtil.isSupportBlockUnstable(bannerBlock))
306-
throw new TownyException(translator.of("msg_err_siege_war_banner_support_block_not_stable"));
307-
308306
if (!SiegeWarSettings.doesTodayAllowASiegeToStart())
309307
throw new TownyException(translator.of("msg_err_cannot_start_sieges_today"));
310308

@@ -313,6 +311,9 @@ private static synchronized void evaluateStartNewSiegeAttempt(Player player,
313311
SiegeWarMoneyUtil.throwIfTownCannotAffordToStartSiege(nearbyTown);
314312
//Start Revolt siege
315313
StartRevoltSiege.processStartSiegeRequest(player, residentsTown, residentsNation, nearbyTownBlock, nearbyTown, bannerBlock);
314+
// Replace unstable block below banner.
315+
if(SiegeWarBlockUtil.isSupportBlockUnstable(bannerBlock))
316+
bannerBlock.getRelative(BlockFace.DOWN).setType(Material.STONE);
316317
//Immediately remove occupation
317318
TownOccupationController.removeTownOccupation(nearbyTown);
318319
} else {
@@ -328,6 +329,10 @@ private static synchronized void evaluateStartNewSiegeAttempt(Player player,
328329
if (SiegeWarSettings.doesThisNationHaveTooManyActiveSieges(residentsNation))
329330
throw new TownyException(translator.of("msg_err_siege_war_nation_has_too_many_active_siege_attacks"));
330331

332+
// Replace unstable block below banner.
333+
if(SiegeWarBlockUtil.isSupportBlockUnstable(bannerBlock))
334+
bannerBlock.getRelative(BlockFace.DOWN).setType(Material.STONE);
335+
331336
//Conquest siege
332337
StartConquestSiege.processStartSiegeRequest(player, residentsTown, residentsNation, nearbyTownBlock, nearbyTown, bannerBlock);
333338
}

0 commit comments

Comments
 (0)