Skip to content

Commit

Permalink
Merge pull request #401 from TownyAdvanced/feature/enhance_start_and_…
Browse files Browse the repository at this point in the history
…end_events

Enhance Start and End Siege Events
  • Loading branch information
Warriorrrr committed Oct 31, 2021
2 parents dd4a194 + 1fef904 commit 276638a
Show file tree
Hide file tree
Showing 7 changed files with 83 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -486,7 +486,7 @@ public static void startSiege(Block bannerBlock,
SiegeController.saveSiege(siege);

//Call event
Bukkit.getPluginManager().callEvent(new SiegeWarStartEvent(siege, townOfSiegeStarter, bannerBlock));
Bukkit.getPluginManager().callEvent(new SiegeWarStartEvent(siege, townOfSiegeStarter));
}

private static void sendGlobalSiegeStartMessage(Siege siege) {
Expand Down
49 changes: 45 additions & 4 deletions src/main/java/com/gmail/goosius/siegewar/events/SiegeEndEvent.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,20 @@ public class SiegeEndEvent extends Event {

private static final HandlerList handlers = new HandlerList();
private final Siege siege;
private final String siegeType;
private final String siegeWinner;
private final String attackerName;
private final String defenderName;
private final String besiegedTownName;

public SiegeEndEvent(Siege siege,
String besiegedTownName) {
public SiegeEndEvent(Siege siege) {
super(!Bukkit.getServer().isPrimaryThread());
this.siege = siege;
this.besiegedTownName = besiegedTownName;
this.siegeType = siege.getSiegeType().getName();
this.siegeWinner = siege.getSiegeWinner().name();
this.attackerName = siege.getAttackerName();
this.defenderName = siege.getDefenderName();
this.besiegedTownName = siege.getTown().getName();
}

@NotNull
Expand All @@ -41,11 +48,45 @@ public static HandlerList getHandlerList() {
return handlers;
}

/**
* @return Siege object
*/
public Siege getSiege() {
return siege;
}

public String getBesiegedTownName() {
/**
* @return the siegeType as a String
*/
public String getSiegeType() {
return siegeType;
}

/**
* @return the siegeWinner as a String
*/
public String getSiegeWinner() {
return siegeWinner;
}

/**
* @return the attackerName
*/
public String getAttackerName() {
return attackerName;
}

/**
* @return besiegedTownName;
*/
public String getBesiegedTownName() {
return besiegedTownName;
}

/**
* @return the defenderName
*/
public String getDefenderName() {
return defenderName;
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package com.gmail.goosius.siegewar.events;

import com.gmail.goosius.siegewar.enums.SiegeType;
import com.gmail.goosius.siegewar.objects.Siege;
import com.gmail.goosius.siegewar.TownOccupationController;
import com.palmergames.bukkit.towny.object.Nation;
import com.palmergames.bukkit.towny.object.Town;
import org.bukkit.block.Block;
import org.bukkit.event.Event;
Expand All @@ -10,14 +13,20 @@
public class SiegeWarStartEvent extends Event {

private static final HandlerList handlers = new HandlerList();
private final String siegeType;
private final Siege siege;
private final Town townOfSiegeStarter;
private final Nation nation;
private final Block flag;
private final Town targetTown;

public SiegeWarStartEvent(Siege siege, Town townOfSiegeStarter, Block flag) {
public SiegeWarStartEvent(Siege siege, Town townOfSiegeStarter) {
this.siege = siege;
this.siegeType = siege.getSiegeType().getName();
this.targetTown = siege.getTown();
this.townOfSiegeStarter = townOfSiegeStarter;
this.flag = flag;
this.nation = siege.getSiegeType().equals(SiegeType.REVOLT) ? TownOccupationController.getTownOccupier(targetTown) : (Nation)siege.getAttackingNationIfPossibleElseTown();
this.flag = siege.getFlagLocation().getBlock();
}

@NotNull
Expand All @@ -41,4 +50,16 @@ public Town getTownOfSiegeStarter() {
public Block getFlag() {
return flag;
}

public String getSiegeType() {
return siegeType;
}

public Nation getNation() {
return nation;
}

public Town getTargetTown() {
return targetTown;
}
}
9 changes: 9 additions & 0 deletions src/main/java/com/gmail/goosius/siegewar/objects/Siege.java
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ public class Siege {
private double warChestAmount;
private List<Resident> bannerControllingResidents; //Soldiers currently controlling the banner
private SiegeSide bannerControllingSide;
private SiegeSide siegeWinner; //For when a siege is over, holds the winning side.
private Map<Player, BannerControlSession> bannerControlSessions;
private int timedBattlePointsEarnedFromCurrentBannerControl;
private boolean attackerHasLowestPopulation;
Expand Down Expand Up @@ -488,6 +489,14 @@ public int getTotalBattleSessions() {
return result;
}

public SiegeSide getSiegeWinner() {
return siegeWinner;
}

public void setSiegeWinner(SiegeSide siegeWinner) {
this.siegeWinner = siegeWinner;
}

public String getAttackerName() {
return attackerName;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.gmail.goosius.siegewar.timeractions;

import com.gmail.goosius.siegewar.TownOccupationController;
import com.gmail.goosius.siegewar.enums.SiegeSide;
import com.gmail.goosius.siegewar.enums.SiegeStatus;
import com.gmail.goosius.siegewar.objects.Siege;
import com.gmail.goosius.siegewar.utils.SiegeWarMoneyUtil;
Expand All @@ -21,6 +22,7 @@ public class AttackerWin {
* @param siegeStatus the siege status
*/
public static void attackerWin(Siege siege, SiegeStatus siegeStatus) {
siege.setSiegeWinner(SiegeSide.ATTACKERS);
SiegeWarSiegeCompletionUtil.setCommonSiegeCompletionValues(siege, siegeStatus);
switch(siege.getSiegeType()) {
case CONQUEST:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.gmail.goosius.siegewar.timeractions;

import com.gmail.goosius.siegewar.TownOccupationController;
import com.gmail.goosius.siegewar.enums.SiegeSide;
import com.gmail.goosius.siegewar.enums.SiegeStatus;
import com.gmail.goosius.siegewar.objects.Siege;
import com.gmail.goosius.siegewar.utils.SiegeWarMoneyUtil;
Expand All @@ -21,6 +22,7 @@ public class DefenderWin
* @param siegeStatus the siege status
*/
public static void defenderWin(Siege siege, SiegeStatus siegeStatus) {
siege.setSiegeWinner(SiegeSide.DEFENDERS);
SiegeWarSiegeCompletionUtil.setCommonSiegeCompletionValues(siege, siegeStatus);
switch(siege.getSiegeType()) {
case CONQUEST:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ public static void setCommonSiegeCompletionValues(Siege siege,
SiegeController.saveSiege(siege);

//Fire SiegeEnded event
SiegeEndEvent siegeEndEvent = new SiegeEndEvent(siege, siege.getTown().getName());
Bukkit.getPluginManager().callEvent(siegeEndEvent);
Bukkit.getPluginManager().callEvent(new SiegeEndEvent(siege));
}
}

0 comments on commit 276638a

Please sign in to comment.