Skip to content

Commit d646a85

Browse files
authored
Stop unstable blocks from preventing sieges. (#1004)
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 ab3b41d commit d646a85

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)