Skip to content

Commit 8673835

Browse files
committed
Fix perm issue #120
1 parent 08df85f commit 8673835

File tree

2 files changed

+25
-8
lines changed

2 files changed

+25
-8
lines changed

src/main/java/world/bentobox/border/listeners/PlayerListener.java

+9-7
Original file line numberDiff line numberDiff line change
@@ -65,17 +65,19 @@ protected void processEvent(PlayerJoinEvent e) {
6565
// Just for sure, disable world Border
6666
user.getPlayer().setWorldBorder(null);
6767

68-
// Check player perms and return to defaults if players don't have them
69-
if (!e.getPlayer().hasPermission(addon.getPermissionPrefix() + IslandBorderCommand.BORDER_COMMAND_PERM)) {
70-
// Restore barrier on/off to default
71-
user.putMetaData(BorderShower.BORDER_STATE_META_DATA, new MetaDataValue(addon.getSettings().isShowByDefault()));
72-
73-
if (!e.getPlayer().hasPermission(addon.getPermissionPrefix() + BorderTypeCommand.BORDER_TYPE_COMMAND_PERM)) {
68+
// Get the game mode that this player is in
69+
addon.getPlugin().getIWM().getAddon(e.getPlayer().getWorld()).map(gma -> gma.getPermissionPrefix()).filter(
70+
permPrefix -> !e.getPlayer().hasPermission(permPrefix + IslandBorderCommand.BORDER_COMMAND_PERM))
71+
.ifPresent(permPrefix -> {
72+
// Restore barrier on/off to default
73+
user.putMetaData(BorderShower.BORDER_STATE_META_DATA,
74+
new MetaDataValue(addon.getSettings().isShowByDefault()));
75+
if (!e.getPlayer().hasPermission(permPrefix + BorderTypeCommand.BORDER_TYPE_COMMAND_PERM)) {
7476
// Restore default barrier type to player
7577
MetaDataValue metaDataValue = new MetaDataValue(addon.getSettings().getType().getId());
7678
user.putMetaData(PerPlayerBorderProxy.BORDER_BORDERTYPE_META_DATA, metaDataValue);
7779
}
78-
}
80+
});
7981

8082
// Show the border if required one tick after
8183
Bukkit.getScheduler().runTask(addon.getPlugin(), () -> addon.getIslands().getIslandAt(e.getPlayer().getLocation()).ifPresent(i ->

src/test/java/world/bentobox/border/listeners/PlayerListenerTest.java

+16-1
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,11 @@
4040
import org.powermock.modules.junit4.PowerMockRunner;
4141

4242
import world.bentobox.bentobox.BentoBox;
43+
import world.bentobox.bentobox.api.addons.GameModeAddon;
4344
import world.bentobox.bentobox.api.events.island.IslandProtectionRangeChangeEvent;
4445
import world.bentobox.bentobox.api.user.User;
4546
import world.bentobox.bentobox.database.objects.Island;
47+
import world.bentobox.bentobox.managers.IslandWorldManager;
4648
import world.bentobox.bentobox.managers.IslandsManager;
4749
import world.bentobox.bentobox.util.Util;
4850
import world.bentobox.border.Border;
@@ -82,6 +84,10 @@ public class PlayerListenerTest {
8284
private Island island;
8385
@Mock
8486
private Vehicle vehicle;
87+
@Mock
88+
private IslandWorldManager iwm;
89+
@Mock
90+
private GameModeAddon gma;
8591

8692

8793
/**
@@ -135,6 +141,15 @@ public void setUp() throws Exception {
135141
// Util
136142
PowerMockito.mockStatic(Util.class, Mockito.RETURNS_MOCKS);
137143

144+
// Plugin
145+
when(addon.getPlugin()).thenReturn(plugin);
146+
147+
// IWM
148+
when(gma.getPermissionPrefix()).thenReturn("bskyblock.");
149+
when(iwm.getAddon(world)).thenReturn(Optional.of(gma));
150+
when(plugin.getIWM()).thenReturn(iwm);
151+
152+
138153
pl = new PlayerListener(addon);
139154

140155
}
@@ -178,7 +193,7 @@ public void testOnPlayerQuit() {
178193
*/
179194
@Test
180195
public void testOnPlayerRespawn() {
181-
PlayerRespawnEvent event = new PlayerRespawnEvent(player, null, false, false);
196+
PlayerRespawnEvent event = new PlayerRespawnEvent(player, from, false, false, null);
182197
pl.onPlayerRespawn(event);
183198
PowerMockito.verifyStatic(Bukkit.class);
184199
Bukkit.getScheduler();

0 commit comments

Comments
 (0)