Skip to content

Commit be260c0

Browse files
committed
Fix merge
1 parent eccee68 commit be260c0

File tree

6 files changed

+101
-52
lines changed

6 files changed

+101
-52
lines changed

Towny/src/main/java/com/palmergames/bukkit/towny/event/player/PlayerEntersIntoDistrictEvent.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import org.bukkit.Bukkit;
44
import org.bukkit.entity.Player;
5+
import org.bukkit.event.Cancellable;
56
import org.bukkit.event.Event;
67
import org.bukkit.event.HandlerList;
78
import org.bukkit.event.player.PlayerMoveEvent;
@@ -15,13 +16,13 @@
1516
/**
1617
* Thrown when a player crosses into Town border.
1718
*/
18-
public class PlayerEntersIntoDistrictEvent extends Event {
19+
public class PlayerEntersIntoDistrictEvent extends Event implements Cancellable {
1920
private static final HandlerList handlers = new HandlerList();
2021
private final District enteredDistrict;
21-
private final PlayerMoveEvent pme;
2222
private final WorldCoord from;
2323
private final WorldCoord to;
2424
private final Player player;
25+
private boolean cancelled;
2526

2627
@Override
2728
public HandlerList getHandlers() {
@@ -32,12 +33,11 @@ public static HandlerList getHandlerList() {
3233
return handlers;
3334
}
3435

35-
public PlayerEntersIntoDistrictEvent(Player player, WorldCoord to, WorldCoord from, District enteredDistrict, PlayerMoveEvent pme) {
36+
public PlayerEntersIntoDistrictEvent(Player player, WorldCoord to, WorldCoord from, District enteredDistrict) {
3637
super(!Bukkit.getServer().isPrimaryThread());
3738
this.enteredDistrict = enteredDistrict;
3839
this.player = player;
3940
this.from = from;
40-
this.pme = pme;
4141
this.to = to;
4242
}
4343

@@ -50,10 +50,6 @@ public Resident getResident() {
5050
return TownyAPI.getInstance().getResident(player);
5151
}
5252

53-
public PlayerMoveEvent getPlayerMoveEvent() {
54-
return pme;
55-
}
56-
5753
public District getEnteredDistrict() {
5854
return enteredDistrict;
5955
}
@@ -65,4 +61,14 @@ public WorldCoord getFrom() {
6561
public WorldCoord getTo() {
6662
return to;
6763
}
64+
65+
@Override
66+
public boolean isCancelled() {
67+
return cancelled;
68+
}
69+
70+
@Override
71+
public void setCancelled(boolean cancelled) {
72+
this.cancelled = cancelled;
73+
}
6874
}

Towny/src/main/java/com/palmergames/bukkit/towny/event/player/PlayerEntersIntoTownBorderEvent.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import org.bukkit.Bukkit;
44
import org.bukkit.entity.Player;
5+
import org.bukkit.event.Cancellable;
56
import org.bukkit.event.Event;
67
import org.bukkit.event.HandlerList;
78
import org.bukkit.event.player.PlayerMoveEvent;
@@ -15,13 +16,13 @@
1516
/**
1617
* Thrown when a player crosses into Town border.
1718
*/
18-
public class PlayerEntersIntoTownBorderEvent extends Event {
19+
public class PlayerEntersIntoTownBorderEvent extends Event implements Cancellable {
1920
private static final HandlerList handlers = new HandlerList();
2021
private final Town enteredTown;
21-
private final PlayerMoveEvent pme;
2222
private final WorldCoord from;
2323
private final WorldCoord to;
2424
private final Player player;
25+
private boolean cancelled;
2526

2627
@Override
2728
public HandlerList getHandlers() {
@@ -32,12 +33,11 @@ public static HandlerList getHandlerList() {
3233
return handlers;
3334
}
3435

35-
public PlayerEntersIntoTownBorderEvent(Player player, WorldCoord to, WorldCoord from, Town enteredTown, PlayerMoveEvent pme) {
36+
public PlayerEntersIntoTownBorderEvent(Player player, WorldCoord to, WorldCoord from, Town enteredTown) {
3637
super(!Bukkit.getServer().isPrimaryThread());
3738
this.enteredTown = enteredTown;
3839
this.player = player;
3940
this.from = from;
40-
this.pme = pme;
4141
this.to = to;
4242
}
4343

@@ -50,10 +50,6 @@ public Resident getResident() {
5050
return TownyAPI.getInstance().getResident(player);
5151
}
5252

53-
public PlayerMoveEvent getPlayerMoveEvent() {
54-
return pme;
55-
}
56-
5753
public Town getEnteredTown() {
5854
return enteredTown;
5955
}
@@ -65,4 +61,14 @@ public WorldCoord getFrom() {
6561
public WorldCoord getTo() {
6662
return to;
6763
}
64+
65+
@Override
66+
public boolean isCancelled() {
67+
return cancelled;
68+
}
69+
70+
@Override
71+
public void setCancelled(boolean cancelled) {
72+
this.cancelled = cancelled;
73+
}
6874
}

Towny/src/main/java/com/palmergames/bukkit/towny/event/player/PlayerExitsFromDistrictEvent.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,24 @@
22

33
import org.bukkit.Bukkit;
44
import org.bukkit.entity.Player;
5+
import org.bukkit.event.Cancellable;
56
import org.bukkit.event.Event;
67
import org.bukkit.event.HandlerList;
7-
import org.bukkit.event.player.PlayerMoveEvent;
88
import org.jetbrains.annotations.Nullable;
99

1010
import com.palmergames.bukkit.towny.TownyAPI;
1111
import com.palmergames.bukkit.towny.object.District;
1212
import com.palmergames.bukkit.towny.object.Resident;
1313
import com.palmergames.bukkit.towny.object.WorldCoord;
1414

15-
public class PlayerExitsFromDistrictEvent extends Event {
15+
public class PlayerExitsFromDistrictEvent extends Event implements Cancellable {
1616
private static final HandlerList handlers = new HandlerList();
1717

1818
private final District leftDistrict;
19-
private final PlayerMoveEvent pme;
2019
private final WorldCoord from;
2120
private final Player player;
2221
private final WorldCoord to;
22+
private boolean cancelled;
2323

2424
@Override
2525
public HandlerList getHandlers() {
@@ -30,12 +30,11 @@ public static HandlerList getHandlerList() {
3030
return handlers;
3131
}
3232

33-
public PlayerExitsFromDistrictEvent(Player player, WorldCoord to, WorldCoord from, District leftDistrict, PlayerMoveEvent pme) {
33+
public PlayerExitsFromDistrictEvent(Player player, WorldCoord to, WorldCoord from, District leftDistrict) {
3434
super(!Bukkit.getServer().isPrimaryThread());
3535
this.leftDistrict = leftDistrict;
3636
this.player = player;
3737
this.from = from;
38-
this.pme = pme;
3938
this.to = to;
4039
}
4140

@@ -48,10 +47,6 @@ public Resident getResident() {
4847
return TownyAPI.getInstance().getResident(player);
4948
}
5049

51-
public PlayerMoveEvent getPlayerMoveEvent() {
52-
return pme;
53-
}
54-
5550
public District getLeftDistrict() {
5651
return leftDistrict;
5752
}
@@ -63,4 +58,14 @@ public WorldCoord getFrom() {
6358
public WorldCoord getTo() {
6459
return to;
6560
}
61+
62+
@Override
63+
public boolean isCancelled() {
64+
return cancelled;
65+
}
66+
67+
@Override
68+
public void setCancelled(boolean cancelled) {
69+
this.cancelled = cancelled;
70+
}
6671
}

Towny/src/main/java/com/palmergames/bukkit/towny/event/player/PlayerExitsFromTownBorderEvent.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import org.bukkit.Bukkit;
44
import org.bukkit.entity.Player;
5+
import org.bukkit.event.Cancellable;
56
import org.bukkit.event.Event;
67
import org.bukkit.event.HandlerList;
78
import org.bukkit.event.player.PlayerMoveEvent;
@@ -12,14 +13,14 @@
1213
import com.palmergames.bukkit.towny.object.Town;
1314
import com.palmergames.bukkit.towny.object.WorldCoord;
1415

15-
public class PlayerExitsFromTownBorderEvent extends Event {
16+
public class PlayerExitsFromTownBorderEvent extends Event implements Cancellable {
1617
private static final HandlerList handlers = new HandlerList();
1718

1819
private final Town leftTown;
19-
private final PlayerMoveEvent pme;
2020
private final WorldCoord from;
2121
private final Player player;
2222
private final WorldCoord to;
23+
private boolean cancelled;
2324

2425
@Override
2526
public HandlerList getHandlers() {
@@ -30,12 +31,11 @@ public static HandlerList getHandlerList() {
3031
return handlers;
3132
}
3233

33-
public PlayerExitsFromTownBorderEvent(Player player, WorldCoord to, WorldCoord from, Town leftTown, PlayerMoveEvent pme) {
34+
public PlayerExitsFromTownBorderEvent(Player player, WorldCoord to, WorldCoord from, Town leftTown) {
3435
super(!Bukkit.getServer().isPrimaryThread());
3536
this.leftTown = leftTown;
3637
this.player = player;
3738
this.from = from;
38-
this.pme = pme;
3939
this.to = to;
4040
}
4141

@@ -48,10 +48,6 @@ public Resident getResident() {
4848
return TownyAPI.getInstance().getResident(player);
4949
}
5050

51-
public PlayerMoveEvent getPlayerMoveEvent() {
52-
return pme;
53-
}
54-
5551
public Town getLeftTown() {
5652
return leftTown;
5753
}
@@ -63,4 +59,14 @@ public WorldCoord getFrom() {
6359
public WorldCoord getTo() {
6460
return to;
6561
}
62+
63+
@Override
64+
public boolean isCancelled() {
65+
return cancelled;
66+
}
67+
68+
@Override
69+
public void setCancelled(boolean cancelled) {
70+
this.cancelled = cancelled;
71+
}
6672
}

Towny/src/main/java/com/palmergames/bukkit/towny/listeners/TownyPlayerListener.java

Lines changed: 43 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -986,7 +986,7 @@ private void onPlayerMoveChunk(Player player, WorldCoord from, WorldCoord to, Ca
986986
// Paper doesn't currently throw PlayerMoveEvents for passengers in vehicles who aren't the driver.
987987
// This workaround ensures that any passengers that are players will cause PlayerChangePlotEvents.
988988
if (player.isInsideVehicle())
989-
handleAnimalVehiclesWorkaround(player, player.getVehicle() , from, to, moveEvent);
989+
handleAnimalVehiclesWorkaround(player.getVehicle(), from, to, moveEvent);
990990

991991
PlayerChangePlotEvent event = new PlayerChangePlotEvent(player, from, to);
992992
BukkitTools.fireEvent(event);
@@ -1002,13 +1002,12 @@ private void onPlayerMoveChunk(Player player, WorldCoord from, WorldCoord to, Ca
10021002
* ridden they stop throwing EntityMoveEvents. The driver is the only one who
10031003
* will have a PlayerMoveEvent thrown which is why we're doing this here.
10041004
*
1005-
* @param player Player driving the Vehicle.
10061005
* @param vehicle Vehicle being driven.
10071006
* @param from WorldCoord the players are leaving.
10081007
* @param to WorldCoord the players are entering.
10091008
* @param moveEvent PlayerMoveEvent of the driving player.
10101009
*/
1011-
private void handleAnimalVehiclesWorkaround(Player player, @Nullable Entity vehicle, WorldCoord from, WorldCoord to, PlayerMoveEvent moveEvent) {
1010+
private void handleAnimalVehiclesWorkaround(@Nullable Entity vehicle, WorldCoord from, WorldCoord to, Cancellable moveEvent) {
10121011
if (!EntityLists.MULTISEAT_ANIMAL_MOUNTS.contains(vehicle))
10131012
return;
10141013

@@ -1020,8 +1019,11 @@ private void handleAnimalVehiclesWorkaround(Player player, @Nullable Entity vehi
10201019
passengers.remove(0);
10211020

10221021
for (Entity entity : passengers) {
1023-
if (entity instanceof Player rider)
1024-
BukkitTools.fireEvent(new PlayerChangePlotEvent(rider, from, to, moveEvent));
1022+
if (entity instanceof Player rider) {
1023+
PlayerChangePlotEvent event = new PlayerChangePlotEvent(rider, from, to);
1024+
BukkitTools.fireEvent(event);
1025+
if (event.isCancelled()) moveEvent.setCancelled(true);
1026+
}
10251027
}
10261028
}
10271029

@@ -1039,18 +1041,27 @@ public void onPlayerChangePlotEvent(PlayerChangePlotEvent event) {
10391041
return;
10401042
if (to.isWilderness()) {
10411043
// Gone from a Town into the wilderness.
1042-
BukkitTools.fireEvent(new PlayerExitsFromTownBorderEvent(event.getPlayer(), to, from, from.getTownOrNull(), event.getMoveEvent()));
1044+
PlayerExitsFromTownBorderEvent playerExitsFromTownBorderEvent = new PlayerExitsFromTownBorderEvent(event.getPlayer(), to, from, from.getTownOrNull());
1045+
BukkitTools.fireEvent(playerExitsFromTownBorderEvent);
1046+
if (playerExitsFromTownBorderEvent.isCancelled()) event.setCancelled(true);
10431047
} else if (from.isWilderness()) {
10441048
// Gone from wilderness into Town.
1045-
BukkitTools.fireEvent(new PlayerEntersIntoTownBorderEvent(event.getPlayer(), to, from, to.getTownOrNull(), event.getMoveEvent()));
1049+
PlayerEntersIntoTownBorderEvent playerEntersIntoTownBorderEvent = new PlayerEntersIntoTownBorderEvent(event.getPlayer(), to, from, to.getTownOrNull());
1050+
BukkitTools.fireEvent(playerEntersIntoTownBorderEvent);
1051+
if (playerEntersIntoTownBorderEvent.isCancelled()) event.setCancelled(true);
10461052
// Both to and from have towns.
10471053
} else if (to.getTownOrNull().equals(from.getTownOrNull())) {
10481054
// The towns are the same, no event will fire.
10491055
return;
10501056
} else {
10511057
// Player has left one Town and immediately entered a different one.
1052-
BukkitTools.fireEvent(new PlayerEntersIntoTownBorderEvent(event.getPlayer(), to, from, to.getTownOrNull(), event.getMoveEvent()));
1053-
BukkitTools.fireEvent(new PlayerExitsFromTownBorderEvent(event.getPlayer(), to, from, from.getTownOrNull(), event.getMoveEvent()));
1058+
PlayerEntersIntoTownBorderEvent e1 = new PlayerEntersIntoTownBorderEvent(event.getPlayer(), to, from, to.getTownOrNull());
1059+
BukkitTools.fireEvent(e1);
1060+
if (e1.isCancelled()) event.setCancelled(true);
1061+
1062+
PlayerExitsFromTownBorderEvent e2 = new PlayerExitsFromTownBorderEvent(event.getPlayer(), to, from, from.getTownOrNull());
1063+
BukkitTools.fireEvent(e2);
1064+
if (e2.isCancelled()) event.setCancelled(true);
10541065
}
10551066
}
10561067

@@ -1075,24 +1086,39 @@ public void onPlayerChangeDistricts(PlayerChangePlotEvent event) {
10751086

10761087
if (to.isWilderness() && fromHasDistrict) {
10771088
// Gone from a Town into the wilderness.
1078-
BukkitTools.fireEvent(new PlayerExitsFromDistrictEvent(event.getPlayer(), to, from, fromDistrict, event.getMoveEvent()));
1089+
PlayerExitsFromDistrictEvent e1 = new PlayerExitsFromDistrictEvent(event.getPlayer(), to, from, fromDistrict);
1090+
BukkitTools.fireEvent(e1);
1091+
if (e1.isCancelled()) event.setCancelled(true);
10791092

10801093
} else if (from.isWilderness() && toHasDistrict) {
10811094
// Gone from wilderness into Town.
1082-
BukkitTools.fireEvent(new PlayerEntersIntoDistrictEvent(event.getPlayer(), to, from, toDistrict, event.getMoveEvent()));
1095+
PlayerEntersIntoDistrictEvent e2 = new PlayerEntersIntoDistrictEvent(event.getPlayer(), to, from, toDistrict);
1096+
BukkitTools.fireEvent(e2);
1097+
if (e2.isCancelled()) event.setCancelled(true);
10831098

10841099
} else if (!to.isWilderness() && !from.isWilderness() && to.getTownOrNull().equals(from.getTownOrNull())
10851100
&& fromHasDistrict && toHasDistrict && !fromDistrict.equals(toDistrict)) {
10861101
// Moving in same town, between two different Districts.
1087-
BukkitTools.fireEvent(new PlayerExitsFromDistrictEvent(event.getPlayer(), to, from, fromDistrict, event.getMoveEvent()));
1088-
BukkitTools.fireEvent(new PlayerEntersIntoDistrictEvent(event.getPlayer(), to, from, toDistrict, event.getMoveEvent()));
1102+
PlayerExitsFromDistrictEvent e1 = new PlayerExitsFromDistrictEvent(event.getPlayer(), to, from, fromDistrict);
1103+
BukkitTools.fireEvent(e1);
1104+
if (e1.isCancelled()) event.setCancelled(true);
1105+
1106+
PlayerEntersIntoDistrictEvent e2 = new PlayerEntersIntoDistrictEvent(event.getPlayer(), to, from, toDistrict);
1107+
BukkitTools.fireEvent(e2);
1108+
if (e2.isCancelled()) event.setCancelled(true);
10891109

10901110
} else {
10911111
// Player has left one Town and immediately entered a different one, check if there were districts.
1092-
if (fromHasDistrict)
1093-
BukkitTools.fireEvent(new PlayerExitsFromDistrictEvent(event.getPlayer(), to, from, fromDistrict, event.getMoveEvent()));
1094-
if (toHasDistrict)
1095-
BukkitTools.fireEvent(new PlayerEntersIntoDistrictEvent(event.getPlayer(), to, from, toDistrict, event.getMoveEvent()));
1112+
if (fromHasDistrict) {
1113+
PlayerExitsFromDistrictEvent e1 = new PlayerExitsFromDistrictEvent(event.getPlayer(), to, from, fromDistrict);
1114+
BukkitTools.fireEvent(e1);
1115+
if (e1.isCancelled()) event.setCancelled(true);
1116+
}
1117+
if (toHasDistrict) {
1118+
PlayerEntersIntoDistrictEvent e2 = new PlayerEntersIntoDistrictEvent(event.getPlayer(), to, from, toDistrict);
1119+
BukkitTools.fireEvent(e2);
1120+
if (e2.isCancelled()) event.setCancelled(true);
1121+
}
10961122
}
10971123
}
10981124

Towny/src/main/java/com/palmergames/bukkit/towny/listeners/TownyVehicleListener.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ public void onVehicleEnterCheckingPlayerMovement(VehicleEnterEvent event) {
182182
if (vehicleCoord.equals(playerCoord))
183183
return;
184184

185-
BukkitTools.fireEvent(new PlayerChangePlotEvent(player, playerCoord, vehicleCoord, new PlayerMoveEvent(player, player.getLocation(), event.getVehicle().getLocation())));
185+
BukkitTools.fireEvent(new PlayerChangePlotEvent(player, playerCoord, vehicleCoord));
186186
}
187187
}
188188

@@ -221,7 +221,7 @@ public void onVehicleMovementWithPassenger(VehicleMoveEvent event) {
221221
// HappyGhasts can have more than one passenger & a driver will have a PlayerMoveEvent.
222222
for (Entity rider : passengers) {
223223
if (rider instanceof Player player)
224-
BukkitTools.fireEvent(new PlayerChangePlotEvent(player, fromCoord, toCoord, new PlayerMoveEvent(player, from, to)));
224+
BukkitTools.fireEvent(new PlayerChangePlotEvent(player, fromCoord, toCoord));
225225
}
226226
}
227227
}

0 commit comments

Comments
 (0)