Skip to content

Commit 0b9cb1a

Browse files
committed
Allow dimensions to be permission restricted
1 parent 1128c38 commit 0b9cb1a

File tree

6 files changed

+32
-10
lines changed

6 files changed

+32
-10
lines changed

API/src/main/java/me/ifydev/dimensify/api/DimensifyConstants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ public class DimensifyConstants {
6464
public static final String PORTAL_NAME_ALREADY_USED = DIMENSIFY_PREFIX + "&c&lPortal name '<NAME>' already used!";
6565
public static final String CANNOT_DELETE_MAIN_WORLD = DIMENSIFY_PREFIX + "&c&lCannot delete the main world!";
6666
public static final String COULD_NOT_CONNECT_TO_DATABASE = DIMENSIFY_PREFIX + "&c&lCannot connect to the database!";
67+
public static final String CANNOT_ENTER_THIS_DIMENSION = DIMENSIFY_PREFIX + "&c&lYou don't have permission to enter this domain!";
6768

6869
// General success
6970
public static final String CREATING_WORLD = DIMENSIFY_PREFIX + "World '<WORLD>' is being created...";

DimensifySpigot/src/main/java/me/ifydev/dimensifyspigot/DimensifyMain.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import me.ifydev.dimensifyspigot.events.PlayerPortal;
3434
import me.ifydev.dimensifyspigot.portal.PortalRegistry;
3535
import me.ifydev.dimensifyspigot.util.Verifier;
36+
import me.ifydev.dimensifyspigot.world.DimensifyWorld;
3637
import me.ifydev.dimensifyspigot.world.WorldController;
3738
import org.bukkit.Bukkit;
3839
import org.bukkit.plugin.PluginManager;
@@ -84,8 +85,11 @@ public void onEnable() {
8485
portalRegistry = new PortalRegistry();
8586

8687
preloadWorlds = getConfig().getBoolean("preload_worlds", true);
88+
allowEntryByDefault = getConfig().getBoolean("default_dimension_restriction", true);
89+
permissionRestrictDimensions= getConfig().getBoolean("permission_restrict_dimensions", false);
8790

88-
// if (preloadWorlds) worldController.loadAllWorlds(allWorlds, this);
91+
if (preloadWorlds)
92+
getConfig().getStringList("world_preload").forEach(name -> worldController.loadWorld(new DimensifyWorld(name, this)));
8993

9094
registerListeners();
9195
registerCommands();

DimensifySpigot/src/main/java/me/ifydev/dimensifyspigot/commands/handlers/BasicHandler.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import me.ifydev.dimensifyspigot.util.ColorUtil;
1010
import me.ifydev.dimensifyspigot.util.MiscUtil;
1111
import me.ifydev.dimensifyspigot.world.DimensifyWorld;
12+
import me.ifydev.dimensifyspigot.world.WorldController;
1213
import net.md_5.bungee.api.ChatMessageType;
1314
import net.md_5.bungee.api.chat.TextComponent;
1415
import org.bukkit.Bukkit;
@@ -95,11 +96,7 @@ public static String goToDimension(Player player, String dimension) {
9596
// Make sure this dimension actually exists
9697
if (!plugin.getApi().getDatabaseHandler().map(db -> db.getDimension(dimension).isPresent()).orElse(false))
9798
return DimensifyConstants.INVALID_WORLD.replace("<WORLD>", dimension);
98-
World destination = plugin.getWorldController().getWorld(dimension);
99-
player.teleport(destination.getSpawnLocation());
100-
101-
// Send the really cool whoosh message
102-
player.spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(ColorUtil.makeReadable(DimensifyConstants.WHOOSH)));
99+
WorldController.enterDimension(player, dimension);
103100
return "";
104101
}
105102

DimensifySpigot/src/main/java/me/ifydev/dimensifyspigot/events/PlayerPortal.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import me.ifydev.dimensifyspigot.DimensifyMain;
55
import me.ifydev.dimensifyspigot.util.ColorUtil;
66
import me.ifydev.dimensifyspigot.world.DimensifyWorld;
7+
import me.ifydev.dimensifyspigot.world.WorldController;
78
import net.md_5.bungee.api.ChatMessageType;
89
import net.md_5.bungee.api.chat.TextComponent;
910
import org.bukkit.Bukkit;
@@ -36,10 +37,7 @@ public void onPlayerAboutToTeleportEvent(PlayerPortalEvent e) {
3637
// Load the world, since it's not here
3738
plugin.getWorldController().loadWorld(new DimensifyWorld(link, plugin));
3839
}
39-
40-
World world = Bukkit.getWorld(link);
41-
player.teleport(world.getSpawnLocation());
42-
player.spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(ColorUtil.makeReadable(DimensifyConstants.WHOOSH)));
40+
WorldController.enterDimension(player, link);
4341
});
4442
});
4543
}

DimensifySpigot/src/main/java/me/ifydev/dimensifyspigot/world/WorldController.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
package me.ifydev.dimensifyspigot.world;
22

3+
import me.ifydev.dimensify.api.DimensifyConstants;
34
import me.ifydev.dimensify.api.dimensions.Dimension;
45
import me.ifydev.dimensifyspigot.DimensifyMain;
6+
import me.ifydev.dimensifyspigot.util.ColorUtil;
7+
import net.md_5.bungee.api.ChatMessageType;
8+
import net.md_5.bungee.api.chat.TextComponent;
59
import org.apache.commons.io.FileUtils;
610
import org.bukkit.Bukkit;
711
import org.bukkit.World;
12+
import org.bukkit.entity.Player;
813

914
import java.io.File;
1015
import java.io.IOException;
@@ -65,4 +70,20 @@ public boolean deleteWorld(String dimensionName) {
6570
}
6671
return true;
6772
}
73+
74+
public static void enterDimension(Player player, String dimension) {
75+
DimensifyMain plugin = DimensifyMain.get();
76+
77+
if (plugin.isPermissionRestrictDimensions()) {
78+
boolean playerIsAllowedToEnterDimension = player.hasPermission("dimension." + dimension + ".allow") || plugin.isAllowEntryByDefault();
79+
if (!playerIsAllowedToEnterDimension) {
80+
player.sendMessage(ColorUtil.makeReadable(DimensifyConstants.CANNOT_ENTER_THIS_DIMENSION));
81+
return;
82+
}
83+
}
84+
85+
World world = plugin.getWorldController().getWorld(dimension);
86+
player.teleport(world.getSpawnLocation());
87+
player.spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(ColorUtil.makeReadable(DimensifyConstants.WHOOSH)));
88+
}
6889
}

DimensifySpigot/src/main/resources/config.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ connection:
1616
# Setting `permission_restrict_dimensions` to `true` will make all dimensions require permissions in
1717
# the following format: `dimension.<dimension_name>.allow` or `dimension.<dimension_name>.deny`.
1818
# If the permission is not present on the player, then we'll use the value from `default_dimension_restriction`.
19+
# Please note, permission restrictions do not take effect when a player is sent to the dimension.
1920
permission_restrict_dimensions: false
2021
# `true` allows entry by default, `false` denies entry by default.
2122
default_dimension_restriction: true

0 commit comments

Comments
 (0)