Locations implementation, acts as custom world, just taking the first one viable for a world

This commit is contained in:
SuperRonanCraft 2021-03-22 15:13:29 -04:00
parent 2da1210578
commit f52adfddbf
20 changed files with 150 additions and 392 deletions

View File

@ -9,6 +9,7 @@ public enum RTPCommandType {
INFO(new CmdInfo()),
PLAYER(new CmdPlayer()),
RELOAD(new CmdReload()),
LOCATION(new CmdLocation()),
//SETTINGS(new CmdSettings(), true),
TEST(new CmdTest(), true),
VERSION(new CmdVersion()),

View File

@ -0,0 +1,11 @@
package me.SuperRonanCraft.BetterRTP.player.commands;
import org.bukkit.command.CommandSender;
import java.util.List;
public enum RTP_SETUP_TYPE {
DEFAULT,
CUSTOM_WORLD,
LOCATION
}

View File

@ -2,8 +2,10 @@ package me.SuperRonanCraft.BetterRTP.player.commands.types;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable;
import me.SuperRonanCraft.BetterRTP.player.commands.RTP_SETUP_TYPE;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTPParticles;
import me.SuperRonanCraft.BetterRTP.references.worlds.WorldDefault;
import me.SuperRonanCraft.BetterRTP.references.worlds.WorldLocations;
import me.SuperRonanCraft.BetterRTP.references.worlds.WorldPlayer;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
import me.SuperRonanCraft.BetterRTP.references.worlds.WORLD_TYPE;
@ -128,7 +130,7 @@ public class CmdInfo implements RTPCommand, RTPCommandHelpable {
info.add("&7- &6Overriden&7: " + _false);
WorldPlayer _rtpworld = BetterRTP.getInstance().getRTP().getPlayerWorld(sendi, w.getName(), null, personal);
WorldDefault worldDefault = BetterRTP.getInstance().getRTP().defaultWorld;
info.add("&7- &6Custom World&7: " + (BetterRTP.getInstance().getRTP().customWorlds.containsKey(w.getName()) ? _true : _false + " &8(using defaults)"));
info.add("&7- &6Setup Type&7: " + _rtpworld.setup_type.name() + (_rtpworld.setup_type == RTP_SETUP_TYPE.LOCATION ? "&7(" + _rtpworld.setup_name + ")" : ""));
info.add("&7- &6Use World Border&7: " + (_rtpworld.getUseWorldborder() ? _true : _false));
info.add("&7- &6Permission Group&7: " + (_rtpworld.getConfig() != null ? "&e" + _rtpworld.getConfig().name : "&cN/A"));
info.add("&7- &6Center X&7: &f" + _rtpworld.getCenterX() + getInfo(_rtpworld, worldDefault, "centerx"));

View File

@ -1,421 +1,68 @@
package me.SuperRonanCraft.BetterRTP.player.commands.types;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.player.commands.Commands;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable;
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
import me.SuperRonanCraft.BetterRTP.references.worlds.WORLD_TYPE;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandType;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE;
import me.SuperRonanCraft.BetterRTP.references.worlds.RTPWorld;
import me.SuperRonanCraft.BetterRTP.references.worlds.WorldLocations;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class CmdLocation implements RTPCommand, RTPCommandHelpable { //Edit a worlds properties
public class CmdLocation implements RTPCommand, RTPCommandHelpable {
public String getName() {
return "edit";
return "location";
}
@Override
//rtp location <location name>
public void execute(CommandSender sendi, String label, String[] args) {
if (args.length >= 4) {
for (RTP_CMD_LOCATION cmd : RTP_CMD_LOCATION.values())
if (cmd.name().toLowerCase().startsWith(args[1].toLowerCase())) {
switch (cmd) {
case WORLD:
if (args.length >= 5) {
for (World world : Bukkit.getWorlds()) {
if (world.getName().startsWith(args[2])) {
for (RTP_CMD_LOCATION_SUB sub_cmd : RTP_CMD_LOCATION_SUB.values())
if (sub_cmd.name().toLowerCase().startsWith(args[3].toLowerCase())) {
editWorld(sendi, sub_cmd, args[4], args[2]);
return;
}
usage(sendi, label, cmd);
return;
}
}
BetterRTP.getInstance().getText().getNotExist(sendi, args[2]);
return;
}
usage(sendi, label, cmd);
return;
case DEFAULT:
for (RTP_CMD_LOCATION_SUB sub_cmd : RTP_CMD_LOCATION_SUB.values())
if (sub_cmd.name().toLowerCase().startsWith(args[2].toLowerCase())) {
editDefault(sendi, sub_cmd, args[3]);
return;
}
usage(sendi, label, cmd);
return;
case WORLD_TYPE:
for (World world : Bukkit.getWorlds()) {
if (world.getName().startsWith(args[2])) {
editWorldtype(sendi, args[2], args[3]);
//usage(sendi, label, cmd);
return;
}
}
BetterRTP.getInstance().getText().getNotExist(sendi, args[2]);
return;
case OVERRIDE:
for (World world : Bukkit.getWorlds()) {
if (world.getName().startsWith(args[2])) {
editOverride(sendi, args[2], args[3]);
//usage(sendi, label, cmd);
return;
}
}
BetterRTP.getInstance().getText().getNotExist(sendi, args[2]);
return;
case BLACKLISTEDBLOCKS:
if (args[2].equalsIgnoreCase("add")) {
editBlacklisted(sendi, args[3], true);
} else if (args[2].equalsIgnoreCase("remove")) {
editBlacklisted(sendi, args[3], false);
} else
usage(sendi, label, cmd);
return;
}
}
} else if (args.length >= 2) {
for (RTP_CMD_LOCATION cmd : RTP_CMD_LOCATION.values())
if (cmd.name().toLowerCase().startsWith(args[1].toLowerCase())) {
usage(sendi, label, cmd);
if (args.length == 2) {
for (String location_name : getLocations().keySet()) {
if (location_name.equalsIgnoreCase(args[1].toLowerCase())) {
//LOCATION RTP CODE
//**********************************
//**********************************
return;
}
}
usage(sendi, label, null);
}
private void editWorld(CommandSender sendi, RTP_CMD_LOCATION_SUB cmd, String val, String world) {
Object value;
try {
value = cmd.getResult(val);
} catch (Exception e) {
e.printStackTrace();
BetterRTP.getInstance().getText().getEditError(sendi);
return;
}
FileBasics.FILETYPE file = FileBasics.FILETYPE.CONFIG;
YamlConfiguration config = file.getConfig();
List<Map<?, ?>> map = config.getMapList("CustomWorlds");
boolean found = false;
for (Map<?, ?> m : map) {
if (m.keySet().toArray()[0].equals(world)) {
found = true;
for (Object map2 : m.values()) {
Map<Object, Object> values = (Map<Object, Object>) map2;
values.put(cmd.get(), value);
BetterRTP.getInstance().getText().getEditSet(sendi, cmd.get(), val);
}
break;
}
}
if (!found) {
Map<Object, Object> map2 = new HashMap<>();
Map<Object, Object> values = new HashMap<>();
values.put(cmd.get(), value);
map2.put(world, values);
map.add(map2);
}
config.set("CustomWorlds", map);
try {
config.save(file.getFile());
BetterRTP.getInstance().getRTP().loadCustomWorlds();
} catch (IOException e) {
e.printStackTrace();
}
usage(sendi, label);
} else
usage(sendi, label);
}
private void editDefault(CommandSender sendi, RTP_CMD_LOCATION_SUB cmd, String val) {
Object value;
try {
value = cmd.getResult(val);
} catch (Exception e) {
e.printStackTrace();
BetterRTP.getInstance().getText().getEditError(sendi);
return;
}
FileBasics.FILETYPE file = FileBasics.FILETYPE.CONFIG;
YamlConfiguration config = file.getConfig();
config.set("Default." + cmd.get(), value);
try {
config.save(file.getFile());
BetterRTP.getInstance().getRTP().loadCustomWorlds();
BetterRTP.getInstance().getText().getEditSet(sendi, cmd.get(), val);
} catch (IOException e) {
e.printStackTrace();
}
}
private void editWorldtype(CommandSender sendi, String world, String val) {
//sendi.sendMessage("Editting worldtype for world " + world + " to " + val);
WORLD_TYPE type;
try {
type = WORLD_TYPE.valueOf(val.toUpperCase());
} catch (Exception e) {
//e.printStackTrace();
BetterRTP.getInstance().getText().getEditError(sendi);
return;
}
FileBasics.FILETYPE file = FileBasics.FILETYPE.CONFIG;
YamlConfiguration config = file.getConfig();
List<Map<?, ?>> world_map = config.getMapList("WorldType");
List<Map<?, ?>> removeList = new ArrayList<>();
for (Map<?, ?> m : world_map) {
for (Map.Entry<?, ?> entry : m.entrySet()) {
if (entry.getKey().equals(world))
removeList.add(m);
}
}
for (Map<?, ?> o : removeList)
world_map.remove(o);
Map<String, String> newIndex = new HashMap<>();
newIndex.put(world, type.name());
world_map.add(newIndex);
config.set("WorldType", world_map);
try {
config.save(file.getFile());
BetterRTP.getInstance().getRTP().load();
BetterRTP.getInstance().getText().getEditSet(sendi, RTP_CMD_LOCATION.WORLD_TYPE.name(), val);
} catch (IOException e) {
e.printStackTrace();
}
}
private void editOverride(CommandSender sendi, String world, String val) {
FileBasics.FILETYPE file = FileBasics.FILETYPE.CONFIG;
YamlConfiguration config = file.getConfig();
List<Map<?, ?>> world_map = config.getMapList("Overrides");
List<Map<?, ?>> removeList = new ArrayList<>();
for (Map<?, ?> m : world_map) {
for (Map.Entry<?, ?> entry : m.entrySet()) {
if (entry.getKey().equals(world))
removeList.add(m);
}
}
for (Map<?, ?> o : removeList)
world_map.remove(o);
if (!val.equals("REMOVE_OVERRIDE")) {
Map<String, String> newIndex = new HashMap<>();
newIndex.put(world, val);
world_map.add(newIndex);
} else {
val = "(removed override)";
}
config.set("Overrides", world_map);
try {
config.save(file.getFile());
BetterRTP.getInstance().getRTP().load();
BetterRTP.getInstance().getText().getEditSet(sendi, RTP_CMD_LOCATION.OVERRIDE.name(), val);
} catch (IOException e) {
e.printStackTrace();
}
}
private void editBlacklisted(CommandSender sendi, String block, boolean add) {
FileBasics.FILETYPE file = FileBasics.FILETYPE.CONFIG;
YamlConfiguration config = file.getConfig();
List<String> world_map = config.getStringList("BlacklistedBlocks");
List<String> removeList = new ArrayList<>();
for (String m : world_map) {
if (m.equals(block)) {
removeList.add(m);
}
}
for (String o : removeList)
world_map.remove(o);
if (add) {
world_map.add(block);
} else {
block = "(removed " + block + ")";
}
config.set("BlacklistedBlocks", world_map);
try {
config.save(file.getFile());
BetterRTP.getInstance().getRTP().load();
BetterRTP.getInstance().getText().getEditSet(sendi, RTP_CMD_LOCATION.BLACKLISTEDBLOCKS.name(), block);
} catch (IOException e) {
e.printStackTrace();
}
}
//rtp edit default <max/min/center/useworldborder> <value>
//rtp edit world [<world>] <max/min/center/useworldborder> <value>
//rtp edit worldtype <world> <value>
@Override
public List<String> tabComplete(CommandSender sendi, String[] args) {
List<String> list = new ArrayList<>();
if (args.length == 2) {
for (RTP_CMD_LOCATION cmd : RTP_CMD_LOCATION.values())
if (cmd.name().toLowerCase().startsWith(args[1].toLowerCase()))
list.add(cmd.name().toLowerCase());
} else if (args.length == 3) { //rtp edit <sub_cmd> <type>
for (RTP_CMD_LOCATION cmd : RTP_CMD_LOCATION.values())
if (cmd.name().equalsIgnoreCase(args[1])) {
switch (cmd) {
case WORLD_TYPE:
case OVERRIDE:
case WORLD: //List all worlds
for (World world : Bukkit.getWorlds())
if (world.getName().toLowerCase().startsWith(args[2].toLowerCase()))
list.add(world.getName());
break;
case DEFAULT:
list.addAll(tabCompleteSub(args, cmd));
break;
case BLACKLISTEDBLOCKS:
list.add("add");
list.add("remove");
break;
}
}
} else if (args.length == 4) {
for (RTP_CMD_LOCATION cmd : RTP_CMD_LOCATION.values())
if (cmd.name().equalsIgnoreCase(args[1]))
switch (cmd) {
case WORLD:
list.addAll(tabCompleteSub(args, cmd)); break;
case DEFAULT:
if (args[2].equalsIgnoreCase(RTP_CMD_LOCATION_SUB.CENTER_X.name()))
list.add(String.valueOf(((Player) sendi).getLocation().getBlockX()));
else if (args[2].equalsIgnoreCase(RTP_CMD_LOCATION_SUB.CENTER_Z.name()))
list.add(String.valueOf(((Player) sendi).getLocation().getBlockZ()));
break;
case WORLD_TYPE:
for (WORLD_TYPE _type : WORLD_TYPE.values())
list.add(_type.name());
break;
case OVERRIDE:
for (World world : Bukkit.getWorlds())
if (world.getName().toLowerCase().startsWith(args[2].toLowerCase()))
list.add(world.getName());
list.add("REMOVE_OVERRIDE");
break;
case BLACKLISTEDBLOCKS:
if (args[2].equalsIgnoreCase("add")) {
for (Material block : Material.values()) {
if (list.size() > 20)
break;
if (block.name().startsWith(args[3].toUpperCase()))
list.add(block.name());
}
} else if (args[2].equalsIgnoreCase("remove")) {
for (String block : BetterRTP.getInstance().getRTP().blockList) {
if (block.startsWith(args[3]))
list.add(block);
}
}
break;
}
} else if (args.length == 5) {
for (RTP_CMD_LOCATION cmd : RTP_CMD_LOCATION.values())
if (cmd.name().equalsIgnoreCase(args[1]))
if (cmd == RTP_CMD_LOCATION.WORLD) {
if (args[3].equalsIgnoreCase(RTP_CMD_LOCATION_SUB.CENTER_X.name()))
list.add(String.valueOf(((Player) sendi).getLocation().getBlockX()));
else if (args[3].equalsIgnoreCase(RTP_CMD_LOCATION_SUB.CENTER_Z.name()))
list.add(String.valueOf(((Player) sendi).getLocation().getBlockZ()));
}
for (String location_name : getLocations().keySet())
if (location_name.toLowerCase().startsWith(args[1].toLowerCase()))
list.add(location_name);
}
return list;
}
private List<String> tabCompleteSub(String[] args, RTP_CMD_LOCATION cmd) {
List<String> list = new ArrayList<>();
for (RTP_CMD_LOCATION_SUB sub_cmd : RTP_CMD_LOCATION_SUB.values()) {
if (sub_cmd.name().toLowerCase().startsWith(args[args.length - 1].toLowerCase()))
list.add(sub_cmd.name().toLowerCase());
}
return list;
}
@Override
public boolean permission(CommandSender sendi) {
return BetterRTP.getInstance().getPerms().getEdit(sendi);
return BetterRTP.getInstance().getPerms().getRtpOther(sendi);
}
private void usage(CommandSender sendi, String label, RTP_CMD_LOCATION type) {
if (type != null)
switch (type) {
case DEFAULT:
BetterRTP.getInstance().getText().getUsageEditDefault(sendi, label); break;
case WORLD:
BetterRTP.getInstance().getText().getUsageEditWorld(sendi, label); break;
case WORLD_TYPE:
BetterRTP.getInstance().getText().getUsageWorldtype(sendi, label); break;
case OVERRIDE:
BetterRTP.getInstance().getText().getUsageOverride(sendi, label); break;
case BLACKLISTEDBLOCKS:
BetterRTP.getInstance().getText().getUsageBlacklistedBlocks(sendi, label); break;
}
else
BetterRTP.getInstance().getText().getUsageEdit(sendi, label);
public void usage(CommandSender sendi, String label) {
BetterRTP.getInstance().getText().getUsageLocation(sendi, label);
}
private HashMap<String, RTPWorld> getLocations() {
return BetterRTP.getInstance().getRTP().worldLocations;
}
@Override
public String getHelp() {
return BetterRTP.getInstance().getText().getHelpEdit();
return BetterRTP.getInstance().getText().getHelpLocation();
}
enum RTP_CMD_LOCATION {
WORLD, DEFAULT, WORLD_TYPE, OVERRIDE, BLACKLISTEDBLOCKS
}
enum RTP_CMD_LOCATION_SUB {
CENTER_X("CenterX", "INT"),
CENTER_Z("CenterZ", "INT"),
MAX("MaxRadius", "INT"),
MIN("MinRadius", "INT"),
USEWORLDBORDER("UseWorldBorder", "BOL");
private final String type;
private final String str;
RTP_CMD_LOCATION_SUB(String str, String type) {
this.str = str;
this.type = type;
}
String get() {
return str;
}
Object getResult(String input) {
if (this.type.equalsIgnoreCase("INT"))
return Integer.parseInt(input);
else if (this.type.equalsIgnoreCase("BOL"))
return Boolean.valueOf(input);
else if (this.type.equalsIgnoreCase("WORLDTYPE")) //WILL CAUSE ERROR IF INCORRECT
return WORLD_TYPE.valueOf(input).name();
return null;
}
}
}
}

View File

@ -27,7 +27,7 @@ public class RTP {
int maxAttempts, delayTime;
boolean cancelOnMove, cancelOnDamage;
public HashMap<String, WORLD_TYPE> world_type = new HashMap<>();
private HashMap<String, WorldLocations> worldLocations = new HashMap<>();
public HashMap<String, RTPWorld> worldLocations = new HashMap<>();
public RTPTeleport getTeleport() {
return teleport;
@ -151,12 +151,25 @@ public class RTP {
public WorldPlayer getPlayerWorld(CommandSender sendi, String world_name, List<String> biomes, boolean personal) {
WorldPlayer pWorld = new WorldPlayer(sendi, Bukkit.getWorld(world_name));
// Set all methods
if (customWorlds.containsKey(world_name)) {
RTPWorld cWorld = customWorlds.get(pWorld.getWorld().getName());
pWorld.setup(cWorld, biomes, personal);
} else
pWorld.setup(defaultWorld, biomes, personal);
//Locations
for (Map.Entry<String, RTPWorld> location_set : worldLocations.entrySet()) {
RTPWorld location = location_set.getValue();
if (location.getWorld().getName().equals(world_name)) {
pWorld.setup(location_set.getKey(), location, location.getBiomes(), personal);
}
}
if (!pWorld.isSetup()) {
//Custom World
if (customWorlds.containsKey(world_name)) {
RTPWorld cWorld = customWorlds.get(pWorld.getWorld().getName());
pWorld.setup(null, cWorld, biomes, personal);
}
//Default World
else
pWorld.setup(null, defaultWorld, biomes, personal);
}
//World type
WORLD_TYPE world_type; //World rtp type
if (this.world_type.containsKey(world_name))
@ -211,6 +224,41 @@ public class RTP {
rtp(sendi, pWorld, delay, rtpType);
}
public void start(Player p, CommandSender sendi, String world_name, List<String> biomes, boolean delay, RTP_TYPE rtpType, String location_name) {
// Check overrides
if (world_name == null) {
world_name = p.getWorld().getName();
} else { // Check if nulled or world doesnt exist
World _world = Bukkit.getWorld(world_name);
if (_world == null) { //Check if world has spaces instead of underscores
_world = Bukkit.getWorld(world_name.replace("_", " "));
world_name = world_name.replace("_", "");
}
if (_world == null) {
getPl().getText().getNotExist(sendi, world_name);
return;
}
}
if (overriden.containsKey(world_name))
world_name = overriden.get(world_name);
// Not forced and has 'betterrtp.world.<world>'
if (sendi == p && !getPl().getPerms().getAWorld(sendi, world_name)) {
getPl().getText().getNoPermissionWorld(p, world_name);
return;
}
// Check disabled worlds
if (disabledWorlds.contains(world_name)) {
getPl().getText().getDisabledWorld(sendi, world_name);
return;
}
WorldPlayer pWorld = getPlayerWorld(p, world_name, biomes, true);
// Economy
if (!getPl().getEco().hasBalance(sendi, pWorld))
return;
//BetterRTP.getInstance().getpInfo().setRTPType(p, rtpType);
rtp(sendi, pWorld, delay, rtpType);
}
private void rtp(CommandSender sendi, WorldPlayer pWorld, boolean delay, RTP_TYPE type) {
//Cooldown
Player p = pWorld.getPlayer();

View File

@ -91,6 +91,10 @@ public class Permissions {
return checkPerm(pre + "edit", sendi);
}
public boolean getLocation(CommandSender sendi) {
return checkPerm(pre + "location", sendi);
}
public boolean getPermissionGroup(CommandSender sendi, String group) {
return checkPerm(pre + "group." + group, sendi);
}

View File

@ -198,6 +198,10 @@ public class Messages {
return getLang().getString(preH + "World");
}
public String getHelpLocation() { //rtp location
return getLang().getString(preH + "Location");
}
//Usage
public void getUsageRTPOther(CommandSender sendi, String cmd) {
sms(sendi, getLang().getString(preU + "Player").replaceAll("%command%", cmd));
@ -211,6 +215,10 @@ public class Messages {
sms(sendi, getLang().getString(preU + "Biome").replaceAll("%command%", cmd));
}
public void getUsageLocation(CommandSender sendi, String cmd) {
sms(sendi, getLang().getString(preU + "Location").replaceAll("%command%", cmd));
}
public void getUsageEdit(CommandSender sendi, String cmd) {
sms(sendi, getLang().getString(preU + "Edit.Base").replaceAll("%command%", cmd));
}

View File

@ -1,5 +1,6 @@
package me.SuperRonanCraft.BetterRTP.references.worlds;
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;
@ -22,15 +23,26 @@ public class WorldPlayer implements RTPWorld {
private WORLD_TYPE world_type;
private RTPPermissionGroup.RTPPermConfiguration config = null;
private RTP_SHAPE shape;
public RTP_SETUP_TYPE setup_type = RTP_SETUP_TYPE.DEFAULT;
public String setup_name;
//Economy
public boolean eco_money_taken = false;
public boolean eco_money_taken = false, setup = false;
public WorldPlayer(CommandSender p, World world) {
this.p = p;
this.world = world;
}
public void setup(RTPWorld world, List<String> biomes, boolean personal) {
public boolean isSetup() {
return setup;
}
public void setup(String setup_name, RTPWorld world, List<String> biomes, boolean personal) {
if (world instanceof WorldLocations) {
setup_type = RTP_SETUP_TYPE.LOCATION;
} else if (world instanceof WorldCustom)
setup_type = RTP_SETUP_TYPE.CUSTOM_WORLD;
this.setup_name = setup_name;
setUseWorldborder(world.getUseWorldborder());
setCenterX(world.getCenterX());
setCenterZ(world.getCenterZ());
@ -64,6 +76,7 @@ public class WorldPlayer implements RTPWorld {
setCenterX(border.getCenter().getBlockX());
setCenterZ(border.getCenter().getBlockZ());
}
setup = true;
}
private void setupGroup(RTPPermissionGroup permConfig) {

View File

@ -46,11 +46,13 @@ Help:
Test: ' &7- &e/%command% test &7- 测试传送后的插件效果。'
Version: ' &7- &e/%command% version &7- 显示目前使用的插件版本。'
World: ' &7- &e/%command% world <世界> [生物群系1, 生物群系2...] &7- 在其他世界随机传送。'
# Location: ' &7- &e/%command% location <location_name> &7- Rtp using a specific location'
Usage:
Player: '&c用法&7/%command% player <玩家> [世界] [生物群系1, 生物群系2]'
World: '&c用法&7/%command% world <世界> [生物群系1, 生物群系2...]'
Biome: '&c用法&7/%command% biome <生物群系1, 生物群系2...>'
# Location: '&cUsage&7: /%command% location <location_name>'
Edit:
Base: '&c用法&7/%command% edit <default/世界> [参数...]'
Default: '&c用法&7/%command% edit default <max/min/useworldborder/center> <值>'

View File

@ -46,11 +46,13 @@ Help:
# Test: ' &7- &e/%command% test &7- Test out plugin effects after a teleport without moving'
# Version: ' &7- &e/%command% version &7- View currently running version'
World: ' &7- &e/%command% world <世界> [生態域1, 生態域2...] &7- 在其他世界隨機傳送。'
# Location: ' &7- &e/%command% location <location_name> &7- Rtp using a specific location'
Usage:
Player: '&cUsage&7: /%command% player <玩家> [世界] [生態域1, 生態域2]'
World: '&cUsage&7: /%command% world <世界> [生態域1, 生態域2...]'
Biome: '&cUsage&7: /%command% biome <生態域1, 生態域2...>'
# Location: '&cUsage&7: /%command% location <location_name>'
# Edit:
# Base: '&cUsage&7: /%command% edit <default/world> [args...]'
# Default: '&cUsage&7: /%command% edit default <max/min/useworldborder/center> <value>'

View File

@ -46,11 +46,13 @@ Help:
Test: ' &7- &e/%command% test &7- Vyzkoušet efekty po teleportu bez pohybu'
Version: ' &7- &e/%command% version &7- Zobrazí verzi pluginu'
World: ' &7- &e/%command% world <svět> [biom1, biom2...] &7- Náhodně tě teleportuje do jiného světa'
# Location: ' &7- &e/%command% location <location_name> &7- Rtp using a specific location'
Usage:
Player: '&cPoužití&7: /%command% player <hráč> [svět] [biom1, biom2]'
World: '&cPoužití&7: /%command% world <svět> [biom1, biom2...]'
Biome: '&cPoužití&7: /%command% biome <biom1, biom2...>'
# Location: '&cUsage&7: /%command% location <location_name>'
Edit:
Base: '&cPoužití&7: /%command% edit <default/svět> [hodnoty...]'
Default: '&cPoužití&7: /%command% edit default <max/min/useworldborder/center> <hodnota>'

View File

@ -46,11 +46,13 @@ Help:
# Test: ' &7- &e/%command% test &7- Test out plugin effects after a teleport without moving'
# Version: ' &7- &e/%command% version &7- View currently running version'
World: ' &7- &e/%command% world <world> [biome1, biome2...] &7- Random teleport in een andere wereld'
# Location: ' &7- &e/%command% location <location_name> &7- Rtp using a specific location'
Usage:
Player: '&cUsage&7: /%command% player <player> [world] [biome1, biome2]'
World: '&cUsage&7: /%command% world <world> [biome1, biome2...]'
Biome: '&cUsage&7: /%command% biome <biome1, biome2...>'
# Location: '&cUsage&7: /%command% location <location_name>'
# Edit:
# Base: '&cUsage&7: /%command% edit <default/world> [args...]'
# Default: '&cUsage&7: /%command% edit default <max/min/useworldborder/center> <value>'

View File

@ -46,11 +46,13 @@ Help:
Test: ' &7- &e/%command% test &7- Test out plugin effects after a teleport without moving'
Version: ' &7- &e/%command% version &7- View currently running version'
World: ' &7- &e/%command% world <world> [biome1, biome2...] &7- Randomly teleport in another world'
Location: ' &7- &e/%command% location <location_name> &7- Rtp using a specific location'
Usage:
Player: '&cUsage&7: /%command% player <player> [world] [biome1, biome2]'
World: '&cUsage&7: /%command% world <world> [biome1, biome2...]'
Biome: '&cUsage&7: /%command% biome <biome1, biome2...>'
Location: '&cUsage&7: /%command% location <location_name>'
Edit:
Base: '&cUsage&7: /%command% edit <default/world> [args...]'
Default: '&cUsage&7: /%command% edit default <max/min/useworldborder/center> <value>'

View File

@ -46,11 +46,13 @@ Help:
Test: ' &7- &e/%command% test &7- Prueba los efectos posteriores a teletransportarse sin moverse del lugar'
Version: ' &7- &e/%command% version &7- Ver la versión actualmente'
World: ' &7- &e/%command% world <mundo> [bioma1, bioma2...] &7- Teletransportarse aleatoriamente en otro mundo'
# Location: ' &7- &e/%command% location <location_name> &7- Rtp using a specific location'
Usage:
Player: '&cUso&7&7: /%command% player <jugador> [mundo] [bioma1, bioma2]'
World: '&cUso&7&77: /%command% world <mundo> [bioma1, bioma2...]'
Biome: '&cUso&7: /%command% biome <bioma1, bioma2...>'
# Location: '&cUsage&7: /%command% location <location_name>'
Edit:
Base: '&cUso&7: /%command% edit <default/world> [args...]'
Default: '&cUso&7: /%command% edit default <max/min/useworldborder/center> <value>'

View File

@ -46,11 +46,13 @@ Help:
Test: ' &7- &e/%command% test &7- Teste les effets du plugin après une téléportation sans bouger'
Version: ' &7- &e/%command% version &7- Voir la version en cours d''exécution'
World: ' &7- &e/%command% world <monde> &7- Te téléporte aléatoirement dans un autre monde'
# Location: ' &7- &e/%command% location <location_name> &7- Rtp using a specific location'
Usage:
Player: '&cUtilisation&7: /%command% player <joeur> [monde]'
World: '&cUtilisation&7: /%command% world <monde>'
Biome: '&cUtilisation&7: /%command% biome <biome1, biome2...>'
# Location: '&cUsage&7: /%command% location <location_name>'
Edit:
Base: '&cUtilisation&7: /%command% edit <default/world> [args...]'
Default: '&cUtilisation&7: /%command% edit default <max/min/useworldborder/center> <value>'

View File

@ -46,11 +46,13 @@ Help:
# Test: ' &7- &e/%command% test &7- Test out plugin effects after a teleport without moving'
# Version: ' &7- &e/%command% version &7- View currently running version'
World: ' &7- &e/%command% world <world> &7- 他のワールドにランダムテレポート'
# Location: ' &7- &e/%command% location <location_name> &7- Rtp using a specific location'
Usage:
Player: '&c使い方&7: /%command% player <プレイヤー> [ワールド]'
World: '&c使い方&7: /%command% world <ワールド>'
Biome: '&cUsage&7: /%command% biome <biome1, biome2...>'
# Location: '&cUsage&7: /%command% location <location_name>'
# Edit:
# Base: '&cUsage&7: /%command% edit <default/world> [args...]'
# Default: '&cUsage&7: /%command% edit default <max/min/useworldborder/center> <value>'

View File

@ -46,11 +46,13 @@ Help:
Test: ' &7- &e/%command% test &7- Testuje efekty teleportacji bez ruszania się z miejsca'
Version: ' &7- &e/%command% version &7- Pokaż wersję pluginu'
World: ' &7- &e/%command% world <world> [biome1, biome2...] &7- Losowo teleportuj do innego świata'
# Location: ' &7- &e/%command% location <location_name> &7- Rtp using a specific location'
Usage:
Player: '&cUsage&7: /%command% player <player> [world] [biome1, biome2]'
World: '&cUsage&7: /%command% world <world> [biome1, biome2...]'
Biome: '&cUsage&7: /%command% biome <biome1, biome2...>'
# Location: '&cUsage&7: /%command% location <location_name>'
Edit:
Base: '&cUsage&7: /%command% edit <default/world> [args...]'
Default: '&cUsage&7: /%command% edit default <max/min/useworldborder/center> <value>'

View File

@ -45,11 +45,13 @@ Help:
Test: ' &7- &e/%command% test &7- Testezi efectele teleportarii fara a te misca'
Version: ' &7- &e/%command% version &7- Vezi versiunea curenta'
World: ' &7- &e/%command% world <world> [biome1, biome2...] &7- Te teleporteaza random in alta lume'
# Location: ' &7- &e/%command% location <location_name> &7- Rtp using a specific location'
Usage:
Player: '&cFolosire&7: /%command% player <nume> [world] [biome1, biome2]'
World: '&cFolosire&7: /%command% world <lume> [biome1, biome2...]'
Biome: '&cFolosire&7: /%command% biome <biome1, biome2...>'
# Location: '&cUsage&7: /%command% location <location_name>'
Edit:
Base: '&cFolosire&7: /%command% edit <default/world> [args...]'
Default: '&cFolosire&7: /%command% edit default <max/min/useworldborder/center> <value>'

View File

@ -46,11 +46,13 @@ Help:
Test: ' &7- &e/%command% test &7- протестировать эффект плагина после телелепортации'
Version: ' &7- &e/%command% version &7- отобразить текущую версию плагина'
World: ' &7- &e/%command% world <world> [biome1, biome2...] &7- телепортирует Вас в рандомное место в указанных биомах в указанный мир'
# Location: ' &7- &e/%command% location <location_name> &7- Rtp using a specific location'
Usage:
Player: '&cUsage&7: /%command% player <игрок> [мир] [биом1, биом2]'
World: '&cUsage&7: /%command% world <мир> [биом1, биом2...]'
Biome: '&cUsage&7: /%command% biome <биом1, биом2...>'
# Location: '&cUsage&7: /%command% location <location_name>'
Edit:
Base: '&cUsage&7: /%command% edit <default/world> [аргументы...]'
Default: '&cUsage&7: /%command% edit default <max/min/useworldborder/center> <value>'

View File

@ -49,6 +49,8 @@ permissions:
description: RTP another player
betterrtp.biome:
description: RTP to specific biomes
betterrtp.location:
description: RTP using a specific location
betterrtp.group.*:
description: Use a permission group to rtp with different restrictions
betterrtp.sign: