mirror of
https://github.com/RonanPlugins/BetterRTP.git
synced 2025-08-17 17:15:47 +00:00
Database Handler + Queue System blueprint
This commit is contained in:
parent
d8129df29b
commit
3fe5c25e7b
@ -3,8 +3,10 @@ package me.SuperRonanCraft.BetterRTP;
|
|||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import me.SuperRonanCraft.BetterRTP.player.PlayerInfo;
|
import me.SuperRonanCraft.BetterRTP.player.PlayerInfo;
|
||||||
import me.SuperRonanCraft.BetterRTP.player.commands.Commands;
|
import me.SuperRonanCraft.BetterRTP.player.commands.Commands;
|
||||||
import me.SuperRonanCraft.BetterRTP.player.events.Listener;
|
import me.SuperRonanCraft.BetterRTP.player.events.EventListener;
|
||||||
import me.SuperRonanCraft.BetterRTP.player.rtp.RTP;
|
import me.SuperRonanCraft.BetterRTP.player.rtp.RTP;
|
||||||
|
import me.SuperRonanCraft.BetterRTP.references.database.DatabaseHandler;
|
||||||
|
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.QueueHandler;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.Permissions;
|
import me.SuperRonanCraft.BetterRTP.references.Permissions;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.web.Updater;
|
import me.SuperRonanCraft.BetterRTP.references.web.Updater;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.depends.DepEconomy;
|
import me.SuperRonanCraft.BetterRTP.references.depends.DepEconomy;
|
||||||
@ -27,7 +29,7 @@ public class BetterRTP extends JavaPlugin {
|
|||||||
private final DepEconomy eco = new DepEconomy();
|
private final DepEconomy eco = new DepEconomy();
|
||||||
private final Commands cmd = new Commands(this);
|
private final Commands cmd = new Commands(this);
|
||||||
private final RTP rtp = new RTP();
|
private final RTP rtp = new RTP();
|
||||||
private final Listener listener = new Listener();
|
private final EventListener listener = new EventListener();
|
||||||
private static BetterRTP instance;
|
private static BetterRTP instance;
|
||||||
private final Files files = new Files();
|
private final Files files = new Files();
|
||||||
private final RTPInventories invs = new RTPInventories();
|
private final RTPInventories invs = new RTPInventories();
|
||||||
@ -35,6 +37,8 @@ public class BetterRTP extends JavaPlugin {
|
|||||||
@Getter private final PlayerDataManager playerDataManager = new PlayerDataManager();
|
@Getter private final PlayerDataManager playerDataManager = new PlayerDataManager();
|
||||||
private final Settings settings = new Settings();
|
private final Settings settings = new Settings();
|
||||||
@Getter private final CooldownHandler cooldowns = new CooldownHandler();
|
@Getter private final CooldownHandler cooldowns = new CooldownHandler();
|
||||||
|
private final QueueHandler queue = new QueueHandler();
|
||||||
|
@Getter private final DatabaseHandler databaseHandler = new DatabaseHandler();
|
||||||
|
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
instance = this;
|
instance = this;
|
||||||
@ -42,6 +46,7 @@ public class BetterRTP extends JavaPlugin {
|
|||||||
new Metrics(this);
|
new Metrics(this);
|
||||||
loadAll();
|
loadAll();
|
||||||
listener.registerEvents(this);
|
listener.registerEvents(this);
|
||||||
|
queue.registerEvents(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
@ -113,6 +118,7 @@ public class BetterRTP extends JavaPlugin {
|
|||||||
//(Re)Load all plugin systems/files/cache
|
//(Re)Load all plugin systems/files/cache
|
||||||
private void loadAll() {
|
private void loadAll() {
|
||||||
playerDataManager.clear();
|
playerDataManager.clear();
|
||||||
|
databaseHandler.load();
|
||||||
files.loadAll();
|
files.loadAll();
|
||||||
settings.load();
|
settings.load();
|
||||||
invs.load();
|
invs.load();
|
||||||
|
@ -2,6 +2,7 @@ package me.SuperRonanCraft.BetterRTP.player.events;
|
|||||||
|
|
||||||
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.block.SignChangeEvent;
|
import org.bukkit.event.block.SignChangeEvent;
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
import org.bukkit.event.player.PlayerInteractEvent;
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
@ -10,7 +11,7 @@ import org.bukkit.event.player.PlayerQuitEvent;
|
|||||||
import org.bukkit.event.player.PlayerTeleportEvent;
|
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||||
import org.bukkit.plugin.PluginManager;
|
import org.bukkit.plugin.PluginManager;
|
||||||
|
|
||||||
public class Listener implements org.bukkit.event.Listener {
|
public class EventListener implements Listener {
|
||||||
private final Join join = new Join();
|
private final Join join = new Join();
|
||||||
private final Leave leave = new Leave();
|
private final Leave leave = new Leave();
|
||||||
private final Interact interact = new Interact();
|
private final Interact interact = new Interact();
|
@ -1,31 +0,0 @@
|
|||||||
package me.SuperRonanCraft.BetterRTP.player.rtp.queue;
|
|
||||||
|
|
||||||
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
|
||||||
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_FindLocationEvent;
|
|
||||||
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.RTPWorld;
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.Listener;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class RTPQueue implements Listener { //Randomly queues up some randomly safe locations
|
|
||||||
|
|
||||||
HashMap<RTPWorld, List<Location>> queue = new HashMap<>();
|
|
||||||
|
|
||||||
public void load() {
|
|
||||||
Bukkit.getPluginManager().registerEvents(this, BetterRTP.getInstance());
|
|
||||||
//queue();
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void onRtpFindLoc(RTP_FindLocationEvent e) {
|
|
||||||
RTPWorld world = e.getWorld();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void queue(RTPWorld world) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,33 @@
|
|||||||
|
package me.SuperRonanCraft.BetterRTP.references.database;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
|
public class DatabaseHandler {
|
||||||
|
|
||||||
|
@Getter private final DatabasePlayers databasePlayers = new DatabasePlayers();
|
||||||
|
@Getter private final DatabaseCooldownsWorlds databaseCooldownsWorlds = new DatabaseCooldownsWorlds();
|
||||||
|
@Getter private final DatabaseQueue databaseQueue = new DatabaseQueue();
|
||||||
|
|
||||||
|
public void load() {
|
||||||
|
Bukkit.getScheduler().runTaskAsynchronously(BetterRTP.getInstance(), () -> {
|
||||||
|
databasePlayers.load();
|
||||||
|
databaseCooldownsWorlds.load();
|
||||||
|
databaseQueue.load();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public static DatabasePlayers getPlayers() {
|
||||||
|
return BetterRTP.getInstance().getDatabaseHandler().getDatabasePlayers();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static DatabaseCooldownsWorlds getWorldCooldowns() {
|
||||||
|
return BetterRTP.getInstance().getDatabaseHandler().getDatabaseCooldownsWorlds();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static DatabaseQueue getQueue() {
|
||||||
|
return BetterRTP.getInstance().getDatabaseHandler().getDatabaseQueue();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,102 @@
|
|||||||
|
package me.SuperRonanCraft.BetterRTP.references.database;
|
||||||
|
|
||||||
|
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
||||||
|
import me.SuperRonanCraft.BetterRTP.references.player.playerdata.PlayerData;
|
||||||
|
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.QueueData;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.World;
|
||||||
|
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
public class DatabaseQueue extends SQLite {
|
||||||
|
|
||||||
|
public DatabaseQueue() {
|
||||||
|
super(DATABASE_TYPE.PLAYERS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> getTables() {
|
||||||
|
List<String> list = new ArrayList<>();
|
||||||
|
list.add("Queue");
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum COLUMNS {
|
||||||
|
ID("id", "long PRIMARY KEY AUTOINCREMENT"),
|
||||||
|
//COOLDOWN DATA
|
||||||
|
X("x", "long"),
|
||||||
|
Y("y", "long"),
|
||||||
|
Z("z", "long"),
|
||||||
|
WORLD("world", "varchar(32)"),
|
||||||
|
GENERATED("generated", "long"),
|
||||||
|
//USES("uses", "integer"),
|
||||||
|
;
|
||||||
|
|
||||||
|
public final String name;
|
||||||
|
public final String type;
|
||||||
|
|
||||||
|
COLUMNS(String name, String type) {
|
||||||
|
this.name = name;
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<QueueData> getQueues() {
|
||||||
|
Connection conn = null;
|
||||||
|
PreparedStatement ps = null;
|
||||||
|
ResultSet rs = null;
|
||||||
|
List<QueueData> queueDataList = new ArrayList<>();
|
||||||
|
try {
|
||||||
|
conn = getSQLConnection();
|
||||||
|
ps = conn.prepareStatement("SELECT * FROM " + tables.get(0));
|
||||||
|
|
||||||
|
rs = ps.executeQuery();
|
||||||
|
while (rs.next()) {
|
||||||
|
long x = rs.getLong(COLUMNS.X.name);
|
||||||
|
long y = rs.getLong(COLUMNS.Y.name);
|
||||||
|
long z = rs.getLong(COLUMNS.Z.name);
|
||||||
|
String worldName = rs.getString(COLUMNS.WORLD.name);
|
||||||
|
long generated = rs.getLong(COLUMNS.GENERATED.name);
|
||||||
|
World world = Bukkit.getWorld(worldName);
|
||||||
|
if (world != null) {
|
||||||
|
QueueData data = new QueueData(new Location(world, x, y, z), generated);
|
||||||
|
queueDataList.add(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
BetterRTP.getInstance().getLogger().log(Level.SEVERE, Errors.sqlConnectionExecute(), ex);
|
||||||
|
} finally {
|
||||||
|
close(ps, rs, conn);
|
||||||
|
}
|
||||||
|
return queueDataList;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Set a queue to save
|
||||||
|
public void addQueue(QueueData data) {
|
||||||
|
String pre = "INSERT INTO ";
|
||||||
|
String sql = pre + tables.get(0) + " ("
|
||||||
|
+ COLUMNS.X.name + ", "
|
||||||
|
+ COLUMNS.Y.name + ", "
|
||||||
|
+ COLUMNS.Z.name + ", "
|
||||||
|
+ COLUMNS.WORLD.name + ", "
|
||||||
|
+ COLUMNS.GENERATED.name + " "
|
||||||
|
//+ COLUMNS.USES.name + " "
|
||||||
|
+ ") VALUES(?, ?, ?, ?, ?)";
|
||||||
|
List<Object> params = new ArrayList<Object>() {{
|
||||||
|
add(data.getLocation().getX());
|
||||||
|
add(data.getLocation().getY());
|
||||||
|
add(data.getLocation().getZ());
|
||||||
|
add(data.getLocation().getWorld().getName());
|
||||||
|
add(data.getGenerated());
|
||||||
|
//add(data.getUses());
|
||||||
|
}};
|
||||||
|
sqlUpdate(sql, params);
|
||||||
|
}
|
||||||
|
}
|
@ -4,7 +4,7 @@ import lombok.Getter;
|
|||||||
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.PermissionNode;
|
import me.SuperRonanCraft.BetterRTP.references.PermissionNode;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.database.DatabaseCooldownsWorlds;
|
import me.SuperRonanCraft.BetterRTP.references.database.DatabaseCooldownsWorlds;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.database.DatabasePlayers;
|
import me.SuperRonanCraft.BetterRTP.references.database.DatabaseHandler;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
|
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.player.HelperPlayer;
|
import me.SuperRonanCraft.BetterRTP.references.player.HelperPlayer;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.player.playerdata.PlayerData;
|
import me.SuperRonanCraft.BetterRTP.references.player.playerdata.PlayerData;
|
||||||
@ -25,8 +25,6 @@ public class CooldownHandler {
|
|||||||
@Getter private int cooldownTime; //Global Cooldown timer
|
@Getter private int cooldownTime; //Global Cooldown timer
|
||||||
private int lockedAfter; //Rtp's before being locked
|
private int lockedAfter; //Rtp's before being locked
|
||||||
private final List<Player> downloading = new ArrayList<>();
|
private final List<Player> downloading = new ArrayList<>();
|
||||||
private final DatabaseCooldownsWorlds cooldowns = new DatabaseCooldownsWorlds();
|
|
||||||
private final DatabasePlayers players = new DatabasePlayers();
|
|
||||||
//private final DatabaseCooldownsGlobal globalCooldown = new DatabaseCooldownsGlobal();
|
//private final DatabaseCooldownsGlobal globalCooldown = new DatabaseCooldownsGlobal();
|
||||||
|
|
||||||
public void load() {
|
public void load() {
|
||||||
@ -40,22 +38,17 @@ public class CooldownHandler {
|
|||||||
lockedAfter = config.getInt("Settings.Cooldown.LockAfter");
|
lockedAfter = config.getInt("Settings.Cooldown.LockAfter");
|
||||||
cooldownByWorld = config.getBoolean("Settings.Cooldown.PerWorld");
|
cooldownByWorld = config.getBoolean("Settings.Cooldown.PerWorld");
|
||||||
}
|
}
|
||||||
Bukkit.getScheduler().runTaskAsynchronously(BetterRTP.getInstance(), () -> {
|
queueDownload();
|
||||||
//globalCooldown.load();
|
|
||||||
players.load();
|
|
||||||
cooldowns.load();
|
|
||||||
checkLater();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkLater() {
|
private void queueDownload() {
|
||||||
Bukkit.getScheduler().runTaskLaterAsynchronously(BetterRTP.getInstance(), () -> {
|
Bukkit.getScheduler().runTaskLaterAsynchronously(BetterRTP.getInstance(), () -> {
|
||||||
if (cooldownByWorld && !cooldowns.isLoaded()) {
|
if (cooldownByWorld && !DatabaseHandler.getWorldCooldowns().isLoaded()) {
|
||||||
checkLater();
|
queueDownload();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!players.isLoaded()) {
|
if (!DatabaseHandler.getPlayers().isLoaded()) {
|
||||||
checkLater();
|
queueDownload();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//OldCooldownConverter.loadOldCooldowns();
|
//OldCooldownConverter.loadOldCooldowns();
|
||||||
@ -141,7 +134,7 @@ public class CooldownHandler {
|
|||||||
else
|
else
|
||||||
getDatabaseWorlds().removePlayer(data.getUuid(), data.getWorld());
|
getDatabaseWorlds().removePlayer(data.getUuid(), data.getWorld());
|
||||||
}
|
}
|
||||||
players.setData(getData(player));
|
DatabaseHandler.getPlayers().setData(getData(player));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -157,7 +150,7 @@ public class CooldownHandler {
|
|||||||
playerData.getCooldowns().put(world, cooldown);
|
playerData.getCooldowns().put(world, cooldown);
|
||||||
}
|
}
|
||||||
//Player Data
|
//Player Data
|
||||||
players.setupData(playerData);
|
DatabaseHandler.getPlayers().setupData(playerData);
|
||||||
downloading.remove(player);
|
downloading.remove(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -168,7 +161,7 @@ public class CooldownHandler {
|
|||||||
@Nullable
|
@Nullable
|
||||||
private DatabaseCooldownsWorlds getDatabaseWorlds() {
|
private DatabaseCooldownsWorlds getDatabaseWorlds() {
|
||||||
if (cooldownByWorld)
|
if (cooldownByWorld)
|
||||||
return cooldowns;
|
return DatabaseHandler.getWorldCooldowns();
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,16 @@
|
|||||||
|
package me.SuperRonanCraft.BetterRTP.references.rtpinfo;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
|
||||||
|
public class QueueData {
|
||||||
|
|
||||||
|
@Getter Location location;
|
||||||
|
@Getter long generated;
|
||||||
|
|
||||||
|
public QueueData(Location location, long generated) {
|
||||||
|
this.location = location;
|
||||||
|
this.generated = generated;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,64 @@
|
|||||||
|
package me.SuperRonanCraft.BetterRTP.references.rtpinfo;
|
||||||
|
|
||||||
|
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
||||||
|
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_FindLocationEvent;
|
||||||
|
import me.SuperRonanCraft.BetterRTP.references.database.DatabaseHandler;
|
||||||
|
import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.RTPWorld;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.plugin.PluginManager;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class QueueHandler implements Listener { //Randomly queues up some randomly safe locations
|
||||||
|
|
||||||
|
boolean loaded = false;
|
||||||
|
List<QueueData> queueList = new ArrayList<>();
|
||||||
|
private final int queueSize = 32;
|
||||||
|
|
||||||
|
public void registerEvents(BetterRTP pl) {
|
||||||
|
PluginManager pm = pl.getServer().getPluginManager();
|
||||||
|
pm.registerEvents(this, pl);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void load() {
|
||||||
|
loaded = false;
|
||||||
|
queueDownload();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void queueDownload() {
|
||||||
|
//LOAD FROM DATABASE
|
||||||
|
Bukkit.getScheduler().runTaskLaterAsynchronously(BetterRTP.getInstance(), () -> {
|
||||||
|
|
||||||
|
if (!DatabaseHandler.getQueue().isLoaded()) {
|
||||||
|
queueDownload();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//Download all queue cached from last session
|
||||||
|
queueList = DatabaseHandler.getQueue().getQueues();
|
||||||
|
loaded = true;
|
||||||
|
}, 10L);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onRtpFindLoc(RTP_FindLocationEvent e) {
|
||||||
|
//RTPWorld world = e.getWorld();
|
||||||
|
Location location = e.getLocation();
|
||||||
|
List<QueueData> deleteList = new ArrayList<>();
|
||||||
|
for (QueueData data : queueList) {
|
||||||
|
Location dataLoc = data.getLocation();
|
||||||
|
if (location.getBlockX() == dataLoc.getBlockX()
|
||||||
|
&& location.getBlockY() == dataLoc.getBlockY()
|
||||||
|
&& location.getBlockZ() == dataLoc.getBlockZ()
|
||||||
|
&& location.getWorld().getName().equals(dataLoc.getWorld().getName())) {
|
||||||
|
deleteList.add(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
deleteList.forEach(queueData -> queueList.remove(queueData));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -8,17 +8,19 @@ permissions:
|
|||||||
betterrtp.player: true
|
betterrtp.player: true
|
||||||
betterrtp.reload: true
|
betterrtp.reload: true
|
||||||
betterrtp.updater: true
|
betterrtp.updater: true
|
||||||
|
betterrtp.group.*: true
|
||||||
betterrtp.world:
|
betterrtp.world:
|
||||||
description: RTP into other worlds
|
description: Ability to use the world command
|
||||||
betterrtp.world.*:
|
betterrtp.world.*:
|
||||||
description: RTP in all enabled worlds
|
description: RTP in all enabled worlds
|
||||||
betterrtp.world.<world>:
|
betterrtp.world.<world>:
|
||||||
description: RTP in <world>
|
description: RTP in world named world
|
||||||
betterrtp.bypass.*:
|
betterrtp.bypass.*:
|
||||||
children:
|
children:
|
||||||
betterrtp.bypass.cooldown: true
|
betterrtp.bypass.cooldown: true
|
||||||
betterrtp.bypass.delay: true
|
betterrtp.bypass.delay: true
|
||||||
betterrtp.bypass.economy: true
|
betterrtp.bypass.economy: true
|
||||||
|
betterrtp.bypass.hunger: true
|
||||||
betterrtp.use:
|
betterrtp.use:
|
||||||
description: Use RTP command
|
description: Use RTP command
|
||||||
default: true
|
default: true
|
||||||
@ -41,6 +43,8 @@ permissions:
|
|||||||
description: Bypass delays
|
description: Bypass delays
|
||||||
betterrtp.bypass.economy:
|
betterrtp.bypass.economy:
|
||||||
description: Bypass economy
|
description: Bypass economy
|
||||||
|
betterrtp.bypass.hunger:
|
||||||
|
description: Bypass hunger
|
||||||
#Reload
|
#Reload
|
||||||
betterrtp.reload:
|
betterrtp.reload:
|
||||||
description: Reload the config
|
description: Reload the config
|
||||||
@ -50,4 +54,8 @@ permissions:
|
|||||||
default: op
|
default: op
|
||||||
betterrtp.test:
|
betterrtp.test:
|
||||||
description: While debugger enabled, be able to test particles, potion effects and sounds
|
description: While debugger enabled, be able to test particles, potion effects and sounds
|
||||||
|
default: op
|
||||||
|
#Permission Groups
|
||||||
|
betterrtp.group.*:
|
||||||
|
description: Allow access to all permission groups
|
||||||
default: op
|
default: op
|
Loading…
x
Reference in New Issue
Block a user