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

Add new town creation pre event. #3606

Merged
merged 2 commits into from Dec 31, 2019
Merged
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
11 changes: 10 additions & 1 deletion src/com/palmergames/bukkit/towny/command/TownCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.palmergames.bukkit.towny.confirmations.ConfirmationHandler;
import com.palmergames.bukkit.towny.confirmations.ConfirmationType;
import com.palmergames.bukkit.towny.event.NewTownEvent;
import com.palmergames.bukkit.towny.event.PreNewTownEvent;
import com.palmergames.bukkit.towny.event.TownBlockSettingsChangedEvent;
import com.palmergames.bukkit.towny.event.TownInvitePlayerEvent;
import com.palmergames.bukkit.towny.event.TownPreClaimEvent;
Expand Down Expand Up @@ -223,7 +224,7 @@ private void parseTownCommand(final Player player, String[] split) {
throw new TownyException(TownySettings.getLangString("msg_specify_name"));
} else if (split.length >= 2) {
String[] newSplit = StringMgmt.remFirstArg(split);
String townName = String.join("_", newSplit);
String townName = String.join("_", newSplit);
newTown(player, townName, player.getName(), false);
}

Expand Down Expand Up @@ -2040,6 +2041,14 @@ public static int townBuyBonusTownBlocks(Town town, int inputN, Object player) t
public static void newTown(Player player, String name, String mayorName, boolean noCharge) {
TownyUniverse townyUniverse = TownyUniverse.getInstance();

PreNewTownEvent preEvent = new PreNewTownEvent(player, name);
Bukkit.getPluginManager().callEvent(preEvent);

if (preEvent.isCancelled()) {
TownyMessaging.sendErrorMsg(preEvent.getCancelMessage());
return;
}

try {
if (TownyAPI.getInstance().isWarTime())
throw new TownyException(TownySettings.getLangString("msg_war_cannot_do"));
Expand Down
54 changes: 54 additions & 0 deletions src/com/palmergames/bukkit/towny/event/PreNewTownEvent.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package com.palmergames.bukkit.towny.event;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;

public class PreNewTownEvent extends Event implements Cancellable {

private static final HandlerList handlers = new HandlerList();

private Player player;
private String townName;
private boolean isCancelled = false;
private String cancelMessage = "Sorry this event was cancelled";

public PreNewTownEvent(Player player, String townName) {
super(!Bukkit.getServer().isPrimaryThread());
this.player = player;
This conversation was marked as resolved.
Show resolved Hide resolved
this.townName = townName;
}

@Override
public boolean isCancelled() {
return isCancelled;
}

@Override
public void setCancelled(boolean cancelled) {
this.isCancelled = cancelled;
}

@Override
public HandlerList getHandlers() {
return handlers;
}

public Player getPlayer() {
return player;
}

public String getCancelMessage() {
return cancelMessage;
}

public void setCancelMessage(String cancelMessage) {
this.cancelMessage = cancelMessage;
}

public String getTownName() {
return townName;
}
}