diff --git a/pom.xml b/pom.xml
index 74b6421..ecb570e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,11 +7,12 @@
me.SuperRonanCraft
BetterRTP
jar
- 3.2.4
+ 3.3.0
1.8
1.8
+ UTF-8
diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/RTPCommand.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/RTPCommand.java
index 1f46e45..d80b162 100644
--- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/RTPCommand.java
+++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/RTPCommand.java
@@ -1,5 +1,6 @@
package me.SuperRonanCraft.BetterRTP.player.commands;
+import me.SuperRonanCraft.BetterRTP.BetterRTP;
import org.bukkit.command.CommandSender;
import java.util.List;
diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdInfo.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdInfo.java
index 413a175..21a96fb 100644
--- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdInfo.java
+++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdInfo.java
@@ -129,17 +129,19 @@ public class CmdInfo implements RTPCommand, RTPCommandHelpable {
info.add("&7- &6Overriden&7: " + _false);
WorldPlayer _rtpworld = BetterRTP.getInstance().getRTP().getPlayerWorld(new RTPSetupInformation(w.getName(), sendi, null, personal));
WorldDefault worldDefault = BetterRTP.getInstance().getRTP().defaultWorld;
- info.add("&7- &6Setup Type&7: " + _rtpworld.setup_type.name() + getInfo(_rtpworld, worldDefault, "setup"));
+ info.add("&7- &eSetup Type&7: " + _rtpworld.setup_type.name() + getInfo(_rtpworld, worldDefault, "setup"));
info.add("&7- &6Use World Border&7: " + (_rtpworld.getUseWorldborder() ? _true : _false));
- info.add("&7- &6World Type&7: &f" + _rtpworld.getWorldtype().name());
+ info.add("&7- &eWorld Type&7: &f" + _rtpworld.getWorldtype().name());
info.add("&7- &6Center X&7: &f" + _rtpworld.getCenterX() + getInfo(_rtpworld, worldDefault, "centerx"));
- info.add("&7- &6Center Z&7: &f" + _rtpworld.getCenterZ() + getInfo(_rtpworld, worldDefault, "centerz"));
- info.add("&7- &6Max Radius&7: &f" + _rtpworld.getMaxRad() + getInfo(_rtpworld, worldDefault, "max"));
- info.add("&7- &6Min Radius&7: &f" + _rtpworld.getMinRad() + getInfo(_rtpworld, worldDefault, "min"));
+ info.add("&7- &eCenter Z&7: &f" + _rtpworld.getCenterZ() + getInfo(_rtpworld, worldDefault, "centerz"));
+ info.add("&7- &6Max Radius&7: &f" + _rtpworld.getMaxRadius() + getInfo(_rtpworld, worldDefault, "maxrad"));
+ info.add("&7- &eMin Radius&7: &f" + _rtpworld.getMinRadius() + getInfo(_rtpworld, worldDefault, "minrad"));
+ info.add("&7- &6Min Y&7: &f" + _rtpworld.getMinY());
+ info.add("&7- &eMax Y&7: &f" + _rtpworld.getMaxY());
info.add("&7- &6Price&7: &f" + _rtpworld.getPrice() + getInfo(_rtpworld, worldDefault, "price"));
- info.add("&7- &6Biomes&7: &f" + _rtpworld.getBiomes().toString());
+ info.add("&7- &eBiomes&7: &f" + _rtpworld.getBiomes().toString());
info.add("&7- &6Shape&7: &f" + _rtpworld.getShape().toString() + getInfo(_rtpworld, worldDefault, "shape"));
- info.add("&7- &6Permission Group&7: " + (_rtpworld.getConfig() != null ? "&e" + _rtpworld.getConfig().name : "&cN/A"));
+ info.add("&7- &ePermission Group&7: " + (_rtpworld.getConfig() != null ? "&e" + _rtpworld.getConfig().name : "&cN/A"));
}
}
return info;
@@ -152,10 +154,10 @@ public class CmdInfo implements RTPCommand, RTPCommandHelpable {
return worldPlayer.getUseWorldborder() || worldPlayer.getCenterX() == worldDefault.getCenterX() ? worldPlayer.getUseWorldborder() ? " &8(worldborder)" : " &8(default)" : "";
case "centerz":
return worldPlayer.getUseWorldborder() || worldPlayer.getCenterZ() == worldDefault.getCenterZ() ? worldPlayer.getUseWorldborder() ? " &8(worldborder)" : " &8(default)" : "";
- case "max":
- return worldPlayer.getUseWorldborder() || worldPlayer.getMaxRad() == worldDefault.getMaxRad() ? worldPlayer.getUseWorldborder() ? " &8(worldborder)" : " &8(default)" : "";
- case "min":
- return worldPlayer.getMinRad() == worldDefault.getMinRad() ? " &8(default)" : "";
+ case "maxrad":
+ return worldPlayer.getUseWorldborder() || worldPlayer.getMaxRadius() == worldDefault.getMaxRadius() ? worldPlayer.getUseWorldborder() ? " &8(worldborder)" : " &8(default)" : "";
+ case "minrad":
+ return worldPlayer.getMinRadius() == worldDefault.getMinRadius() ? " &8(default)" : "";
case "price":
return worldPlayer.getPrice() == worldDefault.getPrice() ? " &8(default)" : "";
case "shape":
diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdLocation.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdLocation.java
index aa86c44..0bf210a 100644
--- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdLocation.java
+++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdLocation.java
@@ -11,6 +11,7 @@ import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldLocations;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
+import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.HashMap;
@@ -27,7 +28,7 @@ public class CmdLocation implements RTPCommand, RTPCommandHelpable {
public void execute(CommandSender sendi, String label, String[] args) {
if (args.length == 2) {
if (sendi instanceof Player) {
- for (String location_name : getLocations(sendi).keySet()) {
+ for (String location_name : getLocations(sendi, null).keySet()) {
if (location_name.equalsIgnoreCase(args[1].toLowerCase())) {
Player p = (Player) sendi;
HelperRTP.tp(p, sendi, null, null, RTP_TYPE.COMMAND, false, false, (WorldLocations) getLocations().get(location_name));
@@ -40,7 +41,7 @@ public class CmdLocation implements RTPCommand, RTPCommandHelpable {
} else if (args.length == 3 && BetterRTP.getInstance().getPerms().getRtpOther(sendi)) {
Player p = Bukkit.getPlayer(args[2]);
if (p != null && p.isOnline()) {
- for (String location_name : getLocations(sendi).keySet()) {
+ for (String location_name : getLocations(sendi, null).keySet()) {
if (location_name.equalsIgnoreCase(args[1].toLowerCase())) {
HelperRTP.tp(p, sendi, null, null, RTP_TYPE.COMMAND, false, false, (WorldLocations) getLocations().get(location_name));
return;
@@ -58,7 +59,7 @@ public class CmdLocation implements RTPCommand, RTPCommandHelpable {
public List tabComplete(CommandSender sendi, String[] args) {
List list = new ArrayList<>();
if (args.length == 2) {
- for (String location_name : getLocations(sendi).keySet())
+ for (String location_name : getLocations(sendi, null).keySet())
if (location_name.toLowerCase().startsWith(args[1].toLowerCase()))
list.add(location_name);
} else if (args.length == 3 && BetterRTP.getInstance().getPerms().getRtpOther(sendi)) {
@@ -77,17 +78,22 @@ public class CmdLocation implements RTPCommand, RTPCommandHelpable {
BetterRTP.getInstance().getText().getUsageLocation(sendi, label);
}
- public static HashMap getLocations() {
+ private static HashMap getLocations() {
return BetterRTP.getInstance().getRTP().worldLocations;
}
//Get locations a player has access to
- public static HashMap getLocations(CommandSender sendi) {
- HashMap locations = new HashMap<>();
- for (Map.Entry location : getLocations().entrySet())
- if (BetterRTP.getInstance().getPerms().getLocation(sendi, location.getKey()))
- locations.put(location.getKey(), location.getValue());
- return locations;
+ public static HashMap getLocations(CommandSender sendi, @Nullable String world) {
+ if (BetterRTP.getInstance().getSettings().isLocationNeedPermission()) {
+ HashMap locations = new HashMap<>();
+ for (Map.Entry location : getLocations().entrySet())
+ if (BetterRTP.getInstance().getPerms().getLocation(sendi, location.getKey())) {
+ if (world == null || location.getValue().getWorld().getName().equals(world))
+ locations.put(location.getKey(), location.getValue());
+ }
+ return locations;
+ } else
+ return getLocations();
}
@Override
diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdTeleport.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdTeleport.java
index 5a81d52..dd308b6 100644
--- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdTeleport.java
+++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdTeleport.java
@@ -4,6 +4,7 @@ import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE;
import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP;
+import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldLocations;
import org.bukkit.World;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP.java
index dcef87f..02ef412 100644
--- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP.java
+++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP.java
@@ -4,6 +4,7 @@ import lombok.Getter;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_SettingUpEvent;
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
+import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP;
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.*;
import org.bukkit.Bukkit;
import org.bukkit.World;
@@ -58,21 +59,14 @@ public class RTP {
public WorldPlayer getPlayerWorld(RTPSetupInformation setup_info) {
WorldPlayer pWorld = new WorldPlayer(setup_info.getPlayer(), Bukkit.getWorld(setup_info.getWorld()));
- //Locations
- if (setup_info.getLocation() == null) {
- List locationsList = new ArrayList<>();
- for (Map.Entry location_set : worldLocations.entrySet()) {
- RTPWorld location = location_set.getValue();
- if (location.getWorld().getName().equals(setup_info.getWorld()))
- locationsList.add(location_set.getValue());
- }
- if (!locationsList.isEmpty()) {
- RTPWorld location = locationsList.size() > 1 ? locationsList.get((new Random()).nextInt(locationsList.size() - 1)) : locationsList.get(0);
-
- setup_info.setLocation((WorldLocations) location);
- }
+ //Random Location
+ if (setup_info.getLocation() == null && BetterRTP.getInstance().getSettings().isUseLocationIfAvailable()) {
+ setup_info.setLocation(HelperRTP.getRandomLocation(setup_info.getSender(), setup_info.getWorld()));
+ if (setup_info.getLocation() == null)
+ BetterRTP.getInstance().getLogger().warning("UseLocationIfAvailable is set to `true`, but no location was found for "
+ + setup_info.getSender().getName() + "! Using world defaults!");
}
-
+ //Location
if (setup_info.getLocation() != null) {
String setup_name = null;
for (Map.Entry location_set : worldLocations.entrySet()) {
@@ -85,7 +79,6 @@ public class RTP {
pWorld.setup(setup_name, setup_info.getLocation(), setup_info.getLocation().getBiomes(), setup_info.isPersonalized());
}
-
if (!pWorld.isSetup()) {
//Custom World
if (customWorlds.containsKey(setup_info.getWorld())) {
@@ -97,7 +90,7 @@ public class RTP {
pWorld.setup(null, defaultWorld, setup_info.getBiomes(), setup_info.isPersonalized());
}
//World type
- WORLD_TYPE world_type; //World rtp type
+ WORLD_TYPE world_type;
if (this.world_type.containsKey(setup_info.getWorld()))
world_type = this.world_type.get(setup_info.getWorld());
else {
diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPSetupInformation.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPSetupInformation.java
index 73cb9c3..527dd06 100644
--- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPSetupInformation.java
+++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPSetupInformation.java
@@ -1,36 +1,61 @@
package me.SuperRonanCraft.BetterRTP.player.rtp;
import lombok.Getter;
+import lombok.NonNull;
import lombok.Setter;
+import me.SuperRonanCraft.BetterRTP.BetterRTP;
+import me.SuperRonanCraft.BetterRTP.player.commands.types.CmdLocation;
+import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP;
+import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.RTPWorld;
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldLocations;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
+import org.jetbrains.annotations.Nullable;
+import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Random;
public class RTPSetupInformation {
//Will provide information to setup an RTP attempt
@Getter @Setter private String world;
- @Getter private final CommandSender sender;
- @Getter private final Player player;
+ @Getter @NonNull private final CommandSender sender;
+ @Getter @Nullable private final Player player;
@Getter private final boolean personalized;
@Getter private final boolean cooldown;
- @Getter @Setter private List biomes;
- @Getter @Setter private WorldLocations location;
+ @Getter @Setter @Nullable private List biomes;
+ @Getter @Setter @Nullable private WorldLocations location;
@Getter private final boolean delay;
- @Getter private final RTP_TYPE rtp_type;
+ @Getter @Nullable private final RTP_TYPE rtp_type;
- public RTPSetupInformation(String world, CommandSender sender, Player player, boolean personalized) {
+ public RTPSetupInformation(@Nullable String world,
+ @NonNull CommandSender sender,
+ @Nullable Player player,
+ boolean personalized) {
this(world, sender, player, personalized, null, false, null, null);
}
- public RTPSetupInformation(String world, CommandSender sender, Player player, boolean personalized, List biomes,
- boolean delay, RTP_TYPE rtp_type, WorldLocations location) {
+ public RTPSetupInformation(@Nullable String world,
+ @NonNull CommandSender sender,
+ @Nullable Player player,
+ boolean personalized,
+ @Nullable List biomes,
+ boolean delay,
+ @Nullable RTP_TYPE rtp_type,
+ @Nullable WorldLocations location) {
this(world, sender, player, personalized, biomes, delay, rtp_type, location, true);
}
- public RTPSetupInformation(String world, CommandSender sender, Player player, boolean personalized, List biomes,
- boolean delay, RTP_TYPE rtp_type, WorldLocations location, boolean cooldown) {
+ public RTPSetupInformation(@Nullable String world,
+ @NonNull CommandSender sender,
+ @Nullable Player player,
+ boolean personalized,
+ @Nullable List biomes,
+ boolean delay,
+ @Nullable RTP_TYPE rtp_type,
+ @Nullable WorldLocations location,
+ boolean cooldown) {
this.world = world;
this.sender = sender;
this.player = player;
diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPSounds.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPSounds.java
index 41edff1..f74242c 100644
--- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPSounds.java
+++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPSounds.java
@@ -42,7 +42,7 @@ public class RTPSounds {
}
void playSound(Location loc, Player p, String sound) {
- if (BetterRTP.getInstance().getSettings().protocolLibSounds) {
+ if (BetterRTP.getInstance().getSettings().isProtocolLibSounds()) {
try {
ProtocolManager pm = ProtocolLibrary.getProtocolManager();
WrapperPlayServerNamedSoundEffect packet = new WrapperPlayServerNamedSoundEffect(pm.createPacket(PacketType.Play.Server.NAMED_SOUND_EFFECT));
diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP.java
index 44fb816..92ba7d9 100644
--- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP.java
+++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP.java
@@ -6,11 +6,16 @@ import me.SuperRonanCraft.BetterRTP.player.rtp.RTPSetupInformation;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE;
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownData;
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownHandler;
+import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.RTPWorld;
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldLocations;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
+import org.jetbrains.annotations.Nullable;
+import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Random;
public class HelperRTP {
@@ -39,11 +44,6 @@ public class HelperRTP {
if (getPl().getSettings().isDelayEnabled() && getPl().getSettings().getDelayTime() > 0) //Delay enabled?
if (!getPl().getPerms().getBypassDelay(player)) //Can bypass?
delay = true;
- //player.sendMessage("Cooldown applies: " + cooldownApplies(sendi, player));
- if (getPl().getSettings().isUseLocationIfAvailable() && !CmdLocation.getLocations().isEmpty()) {
-
- }
-
RTPSetupInformation setup_info = new RTPSetupInformation(world, sendi, player, true,
biomes, delay, rtpType, locations, !ignoreCooldown && cooldownApplies(sendi, player)); //ignore cooldown or else
getPl().getRTP().start(setup_info);
@@ -107,4 +107,15 @@ public class HelperRTP {
private static BetterRTP getPl() {
return BetterRTP.getInstance();
}
+
+ @Nullable
+ public static WorldLocations getRandomLocation(CommandSender sender, String world) {
+ HashMap locations_permissible = CmdLocation.getLocations(sender, world);
+ if (!locations_permissible.isEmpty()) {
+ List valuesList = new ArrayList<>(locations_permissible.keySet());
+ String randomIndex = valuesList.get(new Random().nextInt(valuesList.size()));
+ return (WorldLocations) locations_permissible.get(randomIndex);
+ }
+ return null;
+ }
}
diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/RTPWorld.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/RTPWorld.java
index ea10bf9..e4760b8 100644
--- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/RTPWorld.java
+++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/RTPWorld.java
@@ -1,5 +1,6 @@
package me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds;
+import lombok.NonNull;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_SHAPE;
import org.bukkit.World;
@@ -13,15 +14,19 @@ public interface RTPWorld {
int getCenterZ();
- int getMaxRad();
+ int getMaxRadius();
- int getMinRad();
+ int getMinRadius();
int getPrice();
List getBiomes();
- World getWorld();
+ @NonNull World getWorld();
RTP_SHAPE getShape();
+
+ int getMinY();
+
+ int getMaxY();
}
diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/RTPWorld_Defaulted.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/RTPWorld_Defaulted.java
index a5ad285..58dabed 100644
--- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/RTPWorld_Defaulted.java
+++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/RTPWorld_Defaulted.java
@@ -13,9 +13,9 @@ public interface RTPWorld_Defaulted {
void setCenterZ(int value);
- void setMaxRad(int value);
+ void setMaxRadius(int value);
- void setMinRad(int value);
+ void setMinRadius(int value);
void setPrice(int value);
@@ -25,15 +25,21 @@ public interface RTPWorld_Defaulted {
void setShape(RTP_SHAPE value);
+ void setMinY(int value);
+
+ void setMaxY(int value);
+
default void setupDefaults() {
WorldDefault worldDefault = BetterRTP.getInstance().getRTP().defaultWorld;
- setMaxRad(worldDefault.getMaxRad());
- setMinRad(worldDefault.getMinRad());
+ setMaxRadius(worldDefault.getMaxRadius());
+ setMinRadius(worldDefault.getMinRadius());
setUseWorldBorder(worldDefault.getUseWorldborder());
setCenterX(worldDefault.getCenterX());
setCenterZ(worldDefault.getCenterZ());
setPrice(worldDefault.getPrice());
setBiomes(worldDefault.getBiomes());
setShape(worldDefault.getShape());
+ setMinY(worldDefault.getMinY());
+ setMaxY(worldDefault.getMaxY());
}
}
diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldCustom.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldCustom.java
index a79a55d..a2033ca 100644
--- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldCustom.java
+++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldCustom.java
@@ -5,6 +5,7 @@ import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
import org.bukkit.Bukkit;
import org.bukkit.World;
+import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
@@ -13,7 +14,7 @@ import java.util.Map;
public class WorldCustom implements RTPWorld, RTPWorld_Defaulted {
public String world;
private boolean useWorldborder;
- private int centerX, centerZ, maxBorderRad, minBorderRad, price;
+ private int centerX, centerZ, maxBorderRad, minBorderRad, price, miny, maxy;
private List biomes;
private RTP_SHAPE shape;
@@ -54,7 +55,7 @@ public class WorldCustom implements RTPWorld, RTPWorld_Defaulted {
if (maxBorderRad <= 0) {
BetterRTP.getInstance().getText().sms(Bukkit.getConsoleSender(),
"WARNING! Custom world '" + world + "' Maximum radius of '" + maxBorderRad + "' is not allowed! Set to default value!");
- maxBorderRad = BetterRTP.getInstance().getRTP().defaultWorld.getMaxRad();
+ maxBorderRad = BetterRTP.getInstance().getRTP().defaultWorld.getMaxRadius();
}
}
if (test.get("MinRadius") != null) {
@@ -63,9 +64,9 @@ public class WorldCustom implements RTPWorld, RTPWorld_Defaulted {
if (minBorderRad < 0 || minBorderRad >= maxBorderRad) {
BetterRTP.getInstance().getText().sms(Bukkit.getConsoleSender(),
"WARNING! Custom world '" + world + "' Minimum radius of '" + minBorderRad + "' is not allowed! Set to default value!");
- minBorderRad = BetterRTP.getInstance().getRTP().defaultWorld.getMinRad();
+ minBorderRad = BetterRTP.getInstance().getRTP().defaultWorld.getMinRadius();
if (minBorderRad >= maxBorderRad)
- maxBorderRad = BetterRTP.getInstance().getRTP().defaultWorld.getMaxRad();
+ maxBorderRad = BetterRTP.getInstance().getRTP().defaultWorld.getMaxRadius();
}
}
if (test.get("Biomes") != null) {
@@ -89,6 +90,14 @@ public class WorldCustom implements RTPWorld, RTPWorld_Defaulted {
}
}
}
+ if (test.get("MinY") != null) {
+ if (test.get("MinY").getClass() == Integer.class)
+ this.miny = Integer.parseInt((test.get("MinY")).toString());
+ }
+ if (test.get("MaxY") != null) {
+ if (test.get("MaxY").getClass() == Integer.class)
+ this.maxy = Integer.parseInt((test.get("MaxY")).toString());
+ }
}
}
//Booleans
@@ -100,13 +109,13 @@ public class WorldCustom implements RTPWorld, RTPWorld_Defaulted {
if (maxBorderRad <= 0) {
BetterRTP.getInstance().getText().sms(Bukkit.getConsoleSender(),
"WARNING! Custom world '" + world + "' Maximum radius of '" + maxBorderRad + "' is not allowed! Set to default value!");
- maxBorderRad = BetterRTP.getInstance().getRTP().defaultWorld.getMaxRad();
+ maxBorderRad = BetterRTP.getInstance().getRTP().defaultWorld.getMaxRadius();
}
//minBorderRad = config.getInt(pre + world + ".MinRadius");
if (minBorderRad <= 0 || minBorderRad >= maxBorderRad) {
BetterRTP.getInstance().getText().sms(Bukkit.getConsoleSender(),
"WARNING! Custom world '" + world + "' Minimum radius of '" + minBorderRad + "' is not allowed! Set to default value!");
- minBorderRad = BetterRTP.getInstance().getRTP().defaultWorld.getMinRad();
+ minBorderRad = BetterRTP.getInstance().getRTP().defaultWorld.getMinRadius();
}
/*if (BetterRTP.getInstance().getFiles().getType(FileBasics.FILETYPE.ECO).getBoolean("Economy.Enabled"))
if (BetterRTP.getInstance().getFiles().getType(FileBasics.FILETYPE.ECO).getBoolean("CustomWorlds.Enabled")) {
@@ -142,12 +151,12 @@ public class WorldCustom implements RTPWorld, RTPWorld_Defaulted {
}
@Override
- public int getMaxRad() {
+ public int getMaxRadius() {
return maxBorderRad;
}
@Override
- public int getMinRad() {
+ public int getMinRadius() {
return minBorderRad;
}
@@ -161,6 +170,7 @@ public class WorldCustom implements RTPWorld, RTPWorld_Defaulted {
return biomes;
}
+ @NotNull
@Override
public World getWorld() {
return Bukkit.getWorld(world);
@@ -171,6 +181,16 @@ public class WorldCustom implements RTPWorld, RTPWorld_Defaulted {
return shape;
}
+ @Override
+ public int getMinY() {
+ return miny;
+ }
+
+ @Override
+ public int getMaxY() {
+ return maxy;
+ }
+
//Setters
@Override
public void setUseWorldBorder(boolean value) {
@@ -188,12 +208,12 @@ public class WorldCustom implements RTPWorld, RTPWorld_Defaulted {
}
@Override
- public void setMaxRad(int value) {
+ public void setMaxRadius(int value) {
this.maxBorderRad = value;
}
@Override
- public void setMinRad(int value) {
+ public void setMinRadius(int value) {
this.minBorderRad = value;
}
@@ -216,4 +236,14 @@ public class WorldCustom implements RTPWorld, RTPWorld_Defaulted {
public void setShape(RTP_SHAPE value) {
this.shape = value;
}
+
+ @Override
+ public void setMinY(int value) {
+ this.miny = value;
+ }
+
+ @Override
+ public void setMaxY(int value) {
+ this.maxy = value;
+ }
}
diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldDefault.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldDefault.java
index b9e1ea7..95c4313 100644
--- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldDefault.java
+++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldDefault.java
@@ -6,6 +6,7 @@ import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
import org.bukkit.Bukkit;
import org.bukkit.World;
+import org.jetbrains.annotations.NotNull;
import java.util.HashMap;
import java.util.List;
@@ -13,7 +14,7 @@ import java.util.Map;
public class WorldDefault implements RTPWorld {
private boolean useWorldborder;
- private int CenterX, CenterZ, maxBorderRad, minBorderRad, price;
+ private int CenterX, CenterZ, maxBorderRad, minBorderRad, price, miny, maxy;
private List Biomes;
private final HashMap prices = new HashMap<>();
private RTP_SHAPE shape;
@@ -34,14 +35,12 @@ public class WorldDefault implements RTPWorld {
shape = RTP_SHAPE.SQUARE;
}
if (maxBorderRad <= 0) {
- BetterRTP.getInstance().getText().sms(Bukkit.getConsoleSender(),
- "WARNING! Default Maximum radius of '" + maxBorderRad + "' is not allowed! Set to '1000'");
+ BetterRTP.getInstance().getLogger().warning("WARNING! Default Maximum radius of '" + maxBorderRad + "' is not allowed! Value set to '1000'");
maxBorderRad = 1000;
}
minBorderRad = config.getInt(pre + ".MinRadius");
if (minBorderRad < 0 || minBorderRad >= maxBorderRad) {
- BetterRTP.getInstance().getText().sms(Bukkit.getConsoleSender(),
- "WARNING! Default Minimum radius of '" + minBorderRad + "' is not allowed! Set to '0'");
+ BetterRTP.getInstance().getLogger().warning("The Default MinRadius of '" + minBorderRad + "' is not allowed! Value set to '0'");
minBorderRad = 0;
}
prices.clear();
@@ -61,6 +60,16 @@ public class WorldDefault implements RTPWorld {
price = 0;
//Other
this.Biomes = config.getStringList(pre + ".Biomes");
+ this.miny = config.getInt(pre + ".MinY");
+ if (miny > 0) {
+ miny = 0;
+ BetterRTP.getInstance().getLogger().warning("Warning! Default MinY value is solely for 1.17+ support, and can only be negative!");
+ }
+ this.maxy = config.getInt(pre + ".MaxY");
+ if (maxy < 64) {
+ maxy = 320;
+ BetterRTP.getInstance().getLogger().warning("Warning! Default MaxY value is below water level (64)! Reset to default 320!");
+ }
}
@Override
@@ -79,12 +88,12 @@ public class WorldDefault implements RTPWorld {
}
@Override
- public int getMaxRad() {
+ public int getMaxRadius() {
return maxBorderRad;
}
@Override
- public int getMinRad() {
+ public int getMinRadius() {
return minBorderRad;
}
@@ -102,6 +111,7 @@ public class WorldDefault implements RTPWorld {
return Biomes;
}
+ @NotNull
@Override
public World getWorld() {
return null;
@@ -111,4 +121,14 @@ public class WorldDefault implements RTPWorld {
public RTP_SHAPE getShape() {
return shape;
}
+
+ @Override
+ public int getMinY() {
+ return miny;
+ }
+
+ @Override
+ public int getMaxY() {
+ return maxy;
+ }
}
diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldLocations.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldLocations.java
index a9a5e49..8af4326 100644
--- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldLocations.java
+++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldLocations.java
@@ -5,6 +5,7 @@ import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_SHAPE;
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
import org.bukkit.Bukkit;
import org.bukkit.World;
+import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
@@ -12,7 +13,7 @@ import java.util.Map;
public class WorldLocations implements RTPWorld, RTPWorld_Defaulted {
private boolean useWorldborder;
- private int centerX, centerZ, maxBorderRad, minBorderRad, price;
+ private int centerX, centerZ, maxRad, minRad, price, miny, maxy;
private List biomes;
private String world;
private RTP_SHAPE shape;
@@ -55,22 +56,22 @@ public class WorldLocations implements RTPWorld, RTPWorld_Defaulted {
}
if (test.get("MaxRadius") != null) {
if (test.get("MaxRadius").getClass() == Integer.class)
- maxBorderRad = Integer.parseInt((test.get("MaxRadius")).toString());
- if (maxBorderRad <= 0) {
+ maxRad = Integer.parseInt((test.get("MaxRadius")).toString());
+ if (maxRad <= 0) {
BetterRTP.getInstance().getText().sms(Bukkit.getConsoleSender(),
- "WARNING! Location '" + location_name + "' Maximum radius of '" + maxBorderRad + "' is not allowed! Set to default value!");
- maxBorderRad = BetterRTP.getInstance().getRTP().defaultWorld.getMaxRad();
+ "WARNING! Location '" + location_name + "' Maximum radius of '" + maxRad + "' is not allowed! Set to default value!");
+ maxRad = BetterRTP.getInstance().getRTP().defaultWorld.getMaxRadius();
}
}
if (test.get("MinRadius") != null) {
if (test.get("MinRadius").getClass() == Integer.class)
- minBorderRad = Integer.parseInt((test.get("MinRadius")).toString());
- if (minBorderRad < 0 || minBorderRad >= maxBorderRad) {
+ minRad = Integer.parseInt((test.get("MinRadius")).toString());
+ if (minRad < 0 || minRad >= maxRad) {
BetterRTP.getInstance().getText().sms(Bukkit.getConsoleSender(),
- "WARNING! Location '" + location_name + "' Minimum radius of '" + minBorderRad + "' is not allowed! Set to default value!");
- minBorderRad = BetterRTP.getInstance().getRTP().defaultWorld.getMinRad();
- if (minBorderRad >= maxBorderRad)
- maxBorderRad = BetterRTP.getInstance().getRTP().defaultWorld.getMaxRad();
+ "WARNING! Location '" + location_name + "' Minimum radius of '" + minRad + "' is not allowed! Set to default value!");
+ minRad = BetterRTP.getInstance().getRTP().defaultWorld.getMinRadius();
+ if (minRad >= maxRad)
+ maxRad = BetterRTP.getInstance().getRTP().defaultWorld.getMaxRadius();
}
}
if (test.get("Biomes") != null) {
@@ -103,6 +104,12 @@ public class WorldLocations implements RTPWorld, RTPWorld_Defaulted {
}
}
}
+ if (test.get("MinY") != null)
+ if (test.get("MinY").getClass() == Integer.class)
+ this.miny = Integer.parseInt(test.get("MinY").toString());
+ if (test.get("MaxY") != null)
+ if (test.get("MaxY").getClass() == Integer.class)
+ this.maxy = Integer.parseInt(test.get("MaxY").toString());
}
}
}
@@ -111,6 +118,7 @@ public class WorldLocations implements RTPWorld, RTPWorld_Defaulted {
return world != null;
}
+ @NotNull
@Override
public World getWorld() {
return Bukkit.getWorld(world);
@@ -132,13 +140,13 @@ public class WorldLocations implements RTPWorld, RTPWorld_Defaulted {
}
@Override
- public int getMaxRad() {
- return maxBorderRad;
+ public int getMaxRadius() {
+ return maxRad;
}
@Override
- public int getMinRad() {
- return minBorderRad;
+ public int getMinRadius() {
+ return minRad;
}
@Override
@@ -156,6 +164,16 @@ public class WorldLocations implements RTPWorld, RTPWorld_Defaulted {
return shape;
}
+ @Override
+ public int getMinY() {
+ return miny;
+ }
+
+ @Override
+ public int getMaxY() {
+ return maxy;
+ }
+
//Setters
@Override
@@ -174,13 +192,13 @@ public class WorldLocations implements RTPWorld, RTPWorld_Defaulted {
}
@Override
- public void setMaxRad(int value) {
- this.maxBorderRad = value;
+ public void setMaxRadius(int value) {
+ this.maxRad = value;
}
@Override
- public void setMinRad(int value) {
- this.minBorderRad = value;
+ public void setMinRadius(int value) {
+ this.minRad = value;
}
@Override
@@ -202,4 +220,14 @@ public class WorldLocations implements RTPWorld, RTPWorld_Defaulted {
public void setShape(RTP_SHAPE value) {
this.shape = value;
}
+
+ @Override
+ public void setMinY(int value) {
+ this.miny = value;
+ }
+
+ @Override
+ public void setMaxY(int value) {
+ this.maxy = value;
+ }
}
diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldPlayer.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldPlayer.java
index 10730fc..c3c236b 100644
--- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldPlayer.java
+++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WorldPlayer.java
@@ -1,14 +1,15 @@
package me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds;
+import lombok.Getter;
import me.SuperRonanCraft.BetterRTP.player.commands.RTP_SETUP_TYPE;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTPPermissionGroup;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_SHAPE;
import org.bukkit.Location;
-import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.WorldBorder;
import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
@@ -16,9 +17,9 @@ import java.util.Random;
public class WorldPlayer implements RTPWorld {
private boolean useWorldborder;
- private int CenterX, CenterZ, maxBorderRad, minBorderRad, price, min_y = 0;
+ private int CenterX, CenterZ, maxRad, minRad, price, min_y, max_y;
private List Biomes;
- private final Player p;
+ @Getter private final Player player;
private final World world;
private WORLD_TYPE world_type;
private RTPPermissionGroup.RTPPermConfiguration config = null;
@@ -26,17 +27,14 @@ public class WorldPlayer implements RTPWorld {
public RTP_SETUP_TYPE setup_type = RTP_SETUP_TYPE.DEFAULT;
public String setup_name;
//Economy
- public boolean eco_money_taken = false, setup = false;
+ public boolean eco_money_taken = false;
+ @Getter private boolean setup = false;
public WorldPlayer(Player p, World world) {
- this.p = p;
+ this.player = p;
this.world = world;
}
- public boolean isSetup() {
- return setup;
- }
-
public void setup(String setup_name, RTPWorld world, List biomes, boolean personal) {
if (world instanceof WorldLocations) {
setup_type = RTP_SETUP_TYPE.LOCATION;
@@ -46,8 +44,8 @@ public class WorldPlayer implements RTPWorld {
setUseWorldborder(world.getUseWorldborder());
setCenterX(world.getCenterX());
setCenterZ(world.getCenterZ());
- setMaxRad(world.getMaxRad());
- setMinRad(world.getMinRad());
+ setMaxRad(world.getMaxRadius());
+ setMinRad(world.getMinRadius());
setShape(world.getShape());
if (world instanceof WorldDefault)
setPrice(((WorldDefault) world).getPrice(getWorld().getName()));
@@ -62,27 +60,29 @@ public class WorldPlayer implements RTPWorld {
if (personal)
setupGroup(BetterRTP.getInstance().getRTP().permConfig);
//Make sure our borders will not cause an invalid integer
- if (getMaxRad() <= getMinRad()) {
- setMinRad(BetterRTP.getInstance().getRTP().defaultWorld.getMinRad());
- if (getMaxRad() <= getMinRad())
+ if (getMaxRadius() <= getMinRadius()) {
+ setMinRad(BetterRTP.getInstance().getRTP().defaultWorld.getMinRadius());
+ if (getMaxRadius() <= getMinRadius())
setMinRad(0);
}
//World border protection
if (getUseWorldborder()) {
WorldBorder border = getWorld().getWorldBorder();
int _borderRad = (int) border.getSize() / 2;
- if (getMaxRad() > _borderRad)
+ if (getMaxRadius() > _borderRad)
setMaxRad(_borderRad);
setCenterX(border.getCenter().getBlockX());
setCenterZ(border.getCenter().getBlockZ());
}
//MinY
+ setMinY(world.getMinY());
+ setMaxY(world.getMaxY());
//min_y = world.getWorld().getBlockAt(0, -1, 0).getType() != Material.AIR ?
setup = true;
}
private void setupGroup(RTPPermissionGroup permConfig) {
- RTPPermissionGroup.RTPPermConfiguration config = permConfig.getGroup(p);
+ RTPPermissionGroup.RTPPermConfiguration config = permConfig.getGroup(player);
if (config != null) {
for (RTPPermissionGroup.RTPPermConfigurationWorld world : config.worlds) {
if (getWorld().getName().equals(world.name)) {
@@ -105,24 +105,20 @@ public class WorldPlayer implements RTPWorld {
}
}
- public Player getPlayer() {
- return p;
- }
-
public boolean checkIsValid(Location loc) { //Will check if a previously given location is valid
if (loc.getWorld() != getWorld())
return false;
- int _xLMax = getCenterX() - getMaxRad(); //I|-||
- int _xLMin = getCenterX() - getMinRad(); //|I-||
- int _xRMax = getCenterX() + getMaxRad(); //||-|I
- int _xRMin = getCenterX() + getMinRad(); //||-I|
+ int _xLMax = getCenterX() - getMaxRadius(); //I|-||
+ int _xLMin = getCenterX() - getMinRadius(); //|I-||
+ int _xRMax = getCenterX() + getMaxRadius(); //||-|I
+ int _xRMin = getCenterX() + getMinRadius(); //||-I|
int _xLoc = loc.getBlockX();
if (_xLoc < _xLMax || (_xLoc > _xLMin && _xLoc < _xRMin) || _xLoc > _xRMax)
return false;
- int _zLMax = getCenterZ() - getMaxRad(); //I|-||
- int _zLMin = getCenterZ() - getMinRad(); //|I-||
- int _zRMax = getCenterZ() + getMaxRad(); //||-|I
- int _zRMin = getCenterZ() + getMinRad(); //||-I|
+ int _zLMax = getCenterZ() - getMaxRadius(); //I|-||
+ int _zLMin = getCenterZ() - getMinRadius(); //|I-||
+ int _zRMax = getCenterZ() + getMaxRadius(); //||-|I
+ int _zRMin = getCenterZ() + getMinRadius(); //||-I|
int _zLoc = loc.getBlockX();
return _zLoc >= _zLMax && (_zLoc <= _zLMin || _zLoc >= _zRMin) && _zLoc <= _zRMax;
}
@@ -131,9 +127,9 @@ public class WorldPlayer implements RTPWorld {
Location loc;
switch (shape) {
case CIRCLE:
- loc = generateRound(getMaxRad(), getMinRad()); break;
+ loc = generateRound(getMaxRadius(), getMinRadius()); break;
default:
- loc = generateSquare(getMaxRad(), getMinRad()); break;
+ loc = generateSquare(getMaxRadius(), getMinRadius()); break;
}
return loc;
}
@@ -182,6 +178,7 @@ public class WorldPlayer implements RTPWorld {
return new Location(getWorld(), x, 0, z);
}
+ @NotNull
@Override
public World getWorld() {
return world;
@@ -203,13 +200,13 @@ public class WorldPlayer implements RTPWorld {
}
@Override
- public int getMaxRad() {
- return maxBorderRad;
+ public int getMaxRadius() {
+ return maxRad;
}
@Override
- public int getMinRad() {
- return minBorderRad;
+ public int getMinRadius() {
+ return minRad;
}
@Override
@@ -241,11 +238,11 @@ public class WorldPlayer implements RTPWorld {
//Modifiable
private void setMaxRad(int max) {
- maxBorderRad = max;
+ maxRad = max;
}
private void setMinRad(int min) {
- minBorderRad = min;
+ minRad = min;
}
private void setPrice(int price) {
@@ -266,6 +263,14 @@ public class WorldPlayer implements RTPWorld {
this.shape = shape;
}
+ public void setMinY(int value) {
+ this.min_y = value;
+ }
+
+ public void setMaxY(int value) {
+ this.max_y = value;
+ }
+
public RTPPermissionGroup.RTPPermConfiguration getConfig() {
return this.config;
}
@@ -277,4 +282,9 @@ public class WorldPlayer implements RTPWorld {
public int getMinY() {
return min_y;
}
+
+ @Override
+ public int getMaxY() {
+ return max_y;
+ }
}
diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/references/settings/Settings.java b/src/main/java/me/SuperRonanCraft/BetterRTP/references/settings/Settings.java
index 502c874..91c7e03 100644
--- a/src/main/java/me/SuperRonanCraft/BetterRTP/references/settings/Settings.java
+++ b/src/main/java/me/SuperRonanCraft/BetterRTP/references/settings/Settings.java
@@ -19,6 +19,7 @@ public class Settings {
@Getter private boolean protocolLibSounds;
@Getter private boolean useLocationIfAvailable;
@Getter private boolean locationNeedPermission;
+ @Getter private boolean locationOnlyAllowInWorld;
public void load() { //Load Settings
FileBasics.FILETYPE config = FileBasics.FILETYPE.CONFIG;
@@ -33,6 +34,7 @@ public class Settings {
protocolLibSounds = FileBasics.FILETYPE.EFFECTS.getBoolean("Sounds.ProtocolLibSound");
useLocationIfAvailable = FileBasics.FILETYPE.LOCATIONS.getBoolean("UseLocationIfAvailable");
locationNeedPermission = FileBasics.FILETYPE.LOCATIONS.getBoolean("RequirePermission");
+ locationOnlyAllowInWorld = FileBasics.FILETYPE.LOCATIONS.getBoolean("OnlyAllowInWorld");
depends.load();
}
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index d80c494..2c65ef8 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -60,6 +60,8 @@ Default:
CenterX: 0
CenterZ: 0
Shape: 'square'
+ MaxY: 320
+ MinY: 0
## Blocks BetterRTP will NOT teleport onto. More Blocks at: https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html #
BlacklistedBlocks:
@@ -95,6 +97,8 @@ CustomWorlds:
CenterZ: 0
Price: 50
Shape: 'square'
+ MaxY: 320
+ MinY: 0
- other_custom_world:
MaxRadius: 10000
MinRadius: 150
@@ -133,6 +137,8 @@ PermissionGroup: #Player requires "betterrtp.group." to trigger thes
CenterX: 10
CenterZ: 10
Price: 10
+ MaxY: 320
+ MinY: 0
- vip2: # permission: betterrtp.group.vip2
- Build_World:
MaxRadius: 25000
diff --git a/src/main/resources/locations.yml b/src/main/resources/locations.yml
index 1500bd5..0c0ab2e 100644
--- a/src/main/resources/locations.yml
+++ b/src/main/resources/locations.yml
@@ -6,10 +6,13 @@
# CenterY: 150
# MaxRadius: 100
# MinRadius: 5
+# MinY: 0
+# MaxY: 320
Enabled: false #enable the locations feature
RequirePermission: false #Require players to have `betterrtp.location.`
UseLocationIfAvailable: false #Will choose a location upon `/rtp` if location(s) is available in the world
+#OnlyAllowInWorld: true #Only allow players to use locations that correspond to the world they are standing in
Locations:
- main_loc:
@@ -18,4 +21,6 @@ Locations:
CenterZ: 150
MaxRadius: 100 #optional
MinRadius: 5 #optional
- Shape: square #optional
\ No newline at end of file
+ Shape: square #optional
+ MinY: 0 #optional
+ MaxY: 320 #optional
\ No newline at end of file