2222import com .palmergames .bukkit .towny .TownyAPI ;
2323import com .palmergames .bukkit .towny .event .PlotClearEvent ;
2424import com .palmergames .bukkit .towny .event .TownRemoveResidentEvent ;
25+ import com .palmergames .bukkit .towny .event .actions .TownyDestroyEvent ;
2526import com .palmergames .bukkit .towny .exceptions .NotRegisteredException ;
2627import com .palmergames .bukkit .towny .object .Town ;
2728import com .palmergames .bukkit .towny .object .TownBlock ;
@@ -61,6 +62,7 @@ public class TownyIntegration extends QSIntegratedPlugin implements Listener {
6162 private boolean deleteShopOnPlotClear ;
6263 private boolean isNewVersion ;
6364 private boolean whiteList ;
65+ private boolean deleteShopOnPlotDestroy ;
6466
6567
6668 public TownyIntegration (QuickShop plugin ) {
@@ -82,6 +84,7 @@ private void init() {
8284 ignoreDisabledWorlds = plugin .getConfig ().getBoolean ("integration.towny.ignore-disabled-worlds" );
8385 deleteShopOnLeave = plugin .getConfig ().getBoolean ("integration.towny.delete-shop-on-resident-leave" );
8486 deleteShopOnPlotClear = plugin .getConfig ().getBoolean ("integration.towny.delete-shop-on-plot-clear" );
87+ deleteShopOnPlotDestroy = plugin .getConfig ().getBoolean ("integration.towny.delete-shop-on-plot-destroy" );
8588 whiteList = plugin .getConfig ().getBoolean ("integration.towny.whitelist-mode" );
8689 }
8790
@@ -134,7 +137,7 @@ public void deleteShops(UUID owner, Town town) {
134137 }
135138
136139 public void purgeShops (TownBlock townBlock ) {
137- if (! deleteShopOnPlotClear ) {
140+ if (townBlock == null ) {
138141 return ;
139142 }
140143 String worldName ;
@@ -177,6 +180,21 @@ public void onPlayerLeave(TownRemoveResidentEvent event) {
177180
178181 @ EventHandler
179182 public void onPlotClear (PlotClearEvent event ) {
183+ if (!deleteShopOnPlotClear ) {
184+ return ;
185+ }
186+ if (Bukkit .isPrimaryThread ()) {
187+ purgeShops (event .getTownBlock ());
188+ } else {
189+ Util .mainThreadRun (() -> purgeShops (event .getTownBlock ()));
190+ }
191+ }
192+
193+ @ EventHandler
194+ public void onPlotDestroy (TownyDestroyEvent event ) {
195+ if (!deleteShopOnPlotDestroy ) {
196+ return ;
197+ }
180198 if (Bukkit .isPrimaryThread ()) {
181199 purgeShops (event .getTownBlock ());
182200 } else {
0 commit comments