Skip to content

Commit 30d60e9

Browse files
committed
Added maxDungeons config option
1 parent 1b6ed74 commit 30d60e9

File tree

3 files changed

+53
-0
lines changed

3 files changed

+53
-0
lines changed

src/main/java/io/github/dre2n/dungeonsxl/config/MainConfig.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public class MainConfig extends BRConfig {
3939
private String tutorialDungeon = "tutorial";
4040
private String tutorialStartGroup = "default";
4141
private String tutorialEndGroup = "player";
42+
private int maxDungeons = 10;
4243

4344
/* Misc */
4445
private boolean sendFloorTitle = true;
@@ -98,6 +99,13 @@ public String getTutorialStartGroup() {
9899
return tutorialStartGroup;
99100
}
100101

102+
/**
103+
* @return the maxDungeons
104+
*/
105+
public int getMaxDungeons() {
106+
return maxDungeons;
107+
}
108+
101109
/**
102110
* @return if the floor title shall be sent
103111
*/
@@ -188,6 +196,10 @@ public void initialize() {
188196
config.set("tutorial.endgroup", tutorialEndGroup);
189197
}
190198

199+
if (!config.contains("maxDungeons")) {
200+
config.set("maxDungeons", maxDungeons);
201+
}
202+
191203
if (!config.contains("sendFloorTitle")) {
192204
config.set("sendFloorTitle", sendFloorTitle);
193205
}
@@ -251,6 +263,10 @@ public void load() {
251263
tutorialEndGroup = config.getString("tutorial.endgroup");
252264
}
253265

266+
if (config.contains("maxDungeons")) {
267+
maxDungeons = config.getInt("maxDungeons");
268+
}
269+
254270
if (config.contains("sendFloorTitle")) {
255271
sendFloorTitle = config.getBoolean("sendFloorTitle");
256272
}

src/main/java/io/github/dre2n/dungeonsxl/global/GameSign.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,11 @@ public static boolean playerInteract(Block block, Player player) {
506506
return true;
507507
}
508508

509+
if (plugin.getGameWorlds().size() >= plugin.getMainConfig().getMaxDungeons()) {
510+
MessageUtil.sendMessage(player, "&cEs gibt bereits zu viele laufende Dungeons!");
511+
return true;
512+
}
513+
509514
int sx1 = gameSign.startSign.getX(), sy1 = gameSign.startSign.getY(), sz1 = gameSign.startSign.getZ();
510515

511516
Block topBlock = block.getRelative(0, sy1 - y, 0);

src/main/java/io/github/dre2n/dungeonsxl/listener/PlayerListener.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import io.github.dre2n.commons.util.messageutil.MessageUtil;
2020
import io.github.dre2n.dungeonsxl.DungeonsXL;
2121
import io.github.dre2n.dungeonsxl.config.DMessages;
22+
import io.github.dre2n.dungeonsxl.config.MainConfig;
2223
import io.github.dre2n.dungeonsxl.config.WorldConfig;
2324
import io.github.dre2n.dungeonsxl.event.dgroup.DGroupCreateEvent;
2425
import io.github.dre2n.dungeonsxl.event.dplayer.DPlayerDeathEvent;
@@ -68,6 +69,7 @@
6869
import org.bukkit.event.player.PlayerQuitEvent;
6970
import org.bukkit.event.player.PlayerRespawnEvent;
7071
import org.bukkit.event.player.PlayerTeleportEvent;
72+
import org.bukkit.event.player.PlayerLoginEvent;
7173
import org.bukkit.inventory.ItemStack;
7274
import org.bukkit.inventory.meta.BookMeta;
7375

@@ -556,6 +558,36 @@ public void onJoin(PlayerJoinEvent event) {
556558
}
557559

558560
new DGamePlayer(player, dGroup.getGameWorld());
561+
return;
562+
}
563+
}
564+
565+
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
566+
public void onPlayerLogin(PlayerLoginEvent event) {
567+
Player player = event.getPlayer();
568+
569+
MainConfig config = plugin.getMainConfig();
570+
if (!config.isTutorialActivated()) {
571+
return;
572+
}
573+
if (DGamePlayer.getByPlayer(player) != null) {
574+
return;
575+
}
576+
if (plugin.getPermissionProvider() == null) {
577+
return;
578+
}
579+
if ((config.getTutorialDungeon() == null || config.getTutorialStartGroup() == null || config.getTutorialEndGroup() == null)) {
580+
return;
581+
}
582+
for (String group : plugin.getPermissionProvider().getPlayerGroups(player)) {
583+
if (!config.getTutorialStartGroup().equalsIgnoreCase(group)) {
584+
continue;
585+
}
586+
if (plugin.getGameWorlds().size() >= config.getMaxDungeons()) {
587+
event.setResult(PlayerLoginEvent.Result.KICK_FULL);
588+
event.setKickMessage("Es laufen bereits zu viele Tutorials, bitte warte eine Weile!");
589+
}
590+
return;
559591
}
560592
}
561593

0 commit comments

Comments
 (0)