Skip to content

Commit dc5e1f7

Browse files
Added an event for when a player's rank gets changed. (#11406)
* Added an event for when a player's rank gets changed. * Reverted whole file formatting and only formatted own changes * Added old rank and new rank to the event * Changed newRank to be nullable
1 parent 04fc6d0 commit dc5e1f7

File tree

2 files changed

+73
-0
lines changed

2 files changed

+73
-0
lines changed
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
package com.minecolonies.api.eventbus.events.colony;
2+
3+
import com.minecolonies.api.colony.IColony;
4+
import com.minecolonies.api.colony.permissions.ColonyPlayer;
5+
import com.minecolonies.api.colony.permissions.Rank;
6+
import org.jetbrains.annotations.NotNull;
7+
8+
/**
9+
* Colony player rank change event.
10+
*/
11+
public final class ColonyPlayerRankChangedModEvent extends AbstractColonyModEvent
12+
{
13+
/**
14+
* The colony player whose rank got modified.
15+
*/
16+
@NotNull
17+
private final ColonyPlayer player;
18+
19+
/**
20+
* The colony player's new rank.
21+
*/
22+
private final Rank newRank;
23+
24+
/**
25+
* The colony player's old rank.
26+
*/
27+
private final Rank oldRank;
28+
29+
/**
30+
* Constructs a colony player rank change event.
31+
*
32+
* @param colony the colony related to the event.
33+
* @param player the colony player related to the event.
34+
* @param newRank the colony player's new rank.
35+
* @param oldRank the colony player's old rank.
36+
*/
37+
public ColonyPlayerRankChangedModEvent(
38+
@NotNull final IColony colony, @NotNull final ColonyPlayer player, final Rank newRank, final Rank oldRank)
39+
{
40+
super(colony);
41+
this.player = player;
42+
this.newRank = newRank;
43+
this.oldRank = oldRank;
44+
}
45+
46+
/**
47+
* Gets the colony player related to the event.
48+
*/
49+
@NotNull
50+
public ColonyPlayer getPlayer()
51+
{
52+
return player;
53+
}
54+
55+
/**
56+
* Gets the colony player's new rank.
57+
*/
58+
public Rank getNewRank()
59+
{
60+
return newRank;
61+
}
62+
63+
/**
64+
* Gets the colony player's old rank.
65+
*/
66+
public Rank getOldRank()
67+
{
68+
return oldRank;
69+
}
70+
}

src/main/java/com/minecolonies/core/colony/permissions/Permissions.java

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

33
import com.minecolonies.api.IMinecoloniesAPI;
44
import com.minecolonies.api.colony.permissions.*;
5+
import com.minecolonies.api.eventbus.events.colony.ColonyPlayerRankChangedModEvent;
56
import com.minecolonies.api.network.PacketUtils;
67
import com.minecolonies.api.util.ColonyUtils;
78
import com.minecolonies.api.util.Log;
@@ -734,6 +735,7 @@ public boolean setPlayerRank(final UUID id, final Rank rank, final Level world)
734735

735736
if (player != null)
736737
{
738+
Rank oldRank = player.getRank();
737739
player.setRank(rank);
738740

739741
if (rank.isColonyManager())
@@ -746,6 +748,7 @@ public boolean setPlayerRank(final UUID id, final Rank rank, final Level world)
746748
}
747749

748750
markDirty();
751+
IMinecoloniesAPI.getInstance().getEventBus().post(new ColonyPlayerRankChangedModEvent(colony, player, rank, oldRank));
749752
}
750753
else
751754
{

0 commit comments

Comments
 (0)