more events and addon fixes

This commit is contained in:
SuperRonanCraft 2020-11-12 00:30:40 -05:00
parent 08607beef4
commit be3c7cadb8
21 changed files with 358 additions and 51 deletions

View File

@ -0,0 +1,21 @@
package me.SuperRonanCraft.BetterRTPAddons;
import org.bukkit.Bukkit;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
public interface Addon extends Listener {
boolean isEnabled();
void load();
default void register() {
Bukkit.getPluginManager().registerEvents(this, Main.getInstance());
}
default void disable() {
HandlerList.unregisterAll(this);
}
}

View File

@ -0,0 +1,52 @@
package me.SuperRonanCraft.BetterRTPAddons;
import me.SuperRonanCraft.BetterRTPAddons.flashBack.AddonFlashback;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.logging.Level;
public class AddonsHandler {
List<Addons> addons = new ArrayList<>();
public void load() {
for (Addons addon : addons) {
addon.disable();
}
addons.clear();
for (Addons addon : Addons.values())
if (addon.isEnabled()) {
addon.load();
addons.add(addon);
} else {
Main.getInstance().getLogger().log(Level.INFO, "Addon was not loaded " + addon.name());
}
}
enum Addons {
FLASH_BACK(new AddonFlashback());
Addon addon;
Addons(Addon addon) {
this.addon = addon;
}
boolean isEnabled() {
return addon.isEnabled();
}
void load() {
Main.getInstance().getLogger().log(Level.INFO, "Addon loaded " + this.name());
addon.register();
addon.load();
}
void disable() {
addon.disable();
}
}
}

View File

@ -0,0 +1,25 @@
package me.SuperRonanCraft.BetterRTPAddons;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
import org.bukkit.command.CommandSender;
import java.util.List;
public interface AddonsMessages {
default void sms(CommandSender sendi, String msg) {
BetterRTP.getInstance().getText().sms(sendi, msg);
}
default void sms(CommandSender sendi, List<String> msg) {
BetterRTP.getInstance().getText().sms(sendi, msg);
}
default String color(String str) {
return BetterRTP.getInstance().getText().color(str);
}
default String colorPre(String str) {
return BetterRTP.getInstance().getText().colorPre(str);
}
}

View File

@ -1,20 +0,0 @@
package me.SuperRonanCraft.BetterRTPAddons;
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportEvent;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
public class Events implements Listener {
void load() {
Bukkit.getPluginManager().registerEvents(this, Main.getInstance());
}
@EventHandler
void onTeleport(RTP_TeleportEvent e) {
System.out.println("Player " + e.getPlayer().getName() + " was rtp'd!");
new PlayerFlashback(e.getPlayer(), e.getOldLocation(), 20L * 10);
}
}

View File

@ -0,0 +1,111 @@
package me.SuperRonanCraft.BetterRTPAddons;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.YamlConfiguration;
import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class Files {
List<FILETYPE> types = new ArrayList<>();
void load() {
types.clear();
for (FILETYPE type : FILETYPE.values()) {
type.load();
types.add(type);
}
}
public enum FILETYPE {
CONFIG("config"), EFFECTS("flashback");
private final String fileName;
private final YamlConfiguration config = new YamlConfiguration();
private final File file;
FILETYPE(String str) {
this.fileName = str + ".yml";
this.file = new File(Main.getInstance().getDataFolder(), fileName);
}
//PUBLIC
public String getString(String path) {
if (config.isString(path))
return config.getString(path);
return "SOMETHING WENT WRONG";
}
public boolean getBoolean(String path) {
return config.getBoolean(path);
}
public int getInt(String path) {
return config.getInt(path);
}
public List<String> getStringList(String path) {
if (config.isList(path))
return config.getStringList(path);
return new ArrayList<>();
}
public ConfigurationSection getConfigurationSection(String path) {
return config.getConfigurationSection(path);
}
public boolean isString(String path) {
return config.isString(path);
}
public boolean isList(String path) {
return config.isList(path);
}
public List<Map<?, ?>> getMapList(String path) {
return config.getMapList(path);
}
public YamlConfiguration getConfig() {
return config;
}
public File getFile() {
return file;
}
public void setValue(String path, Object value) {
config.set(path, value);
}
//PROCCESSING
private void load() {
if (!file.exists()) {
Main.getInstance().saveResource(fileName, false);
try {
config.load(file);
} catch (Exception e) {
e.printStackTrace();
}
} else {
try {
config.load(file);
final InputStream in = BetterRTP.getInstance().getResource(fileName);
if (in != null) {
config.setDefaults(YamlConfiguration.loadConfiguration(new InputStreamReader(in)));
config.options().copyDefaults(true);
in.close();
}
config.save(file);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}

View File

@ -5,7 +5,8 @@ import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin {
private static Main instance;
private final Events events = new Events();
private final AddonsHandler addonsHandler = new AddonsHandler();
private final Files files = new Files();
@Override
public void onEnable() {
@ -14,7 +15,8 @@ public class Main extends JavaPlugin {
}
void load() {
events.load();
files.load();
addonsHandler.load();
}
public static Main getInstance() {

View File

@ -0,0 +1,28 @@
package me.SuperRonanCraft.BetterRTPAddons.flashBack;
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportPostEvent;
import me.SuperRonanCraft.BetterRTPAddons.Addon;
import me.SuperRonanCraft.BetterRTPAddons.Files;
import org.bukkit.event.EventHandler;
public class AddonFlashback implements Addon {
private Long time;
public MessagesFlashback msgs = new MessagesFlashback();
public boolean isEnabled() {
return Files.FILETYPE.EFFECTS.getBoolean("Enabled");
}
@Override
public void load() {
Files.FILETYPE file = Files.FILETYPE.EFFECTS;
this.time = file.getConfig().getLong("Time");
}
@EventHandler
void onTeleport(RTP_TeleportPostEvent e) {
System.out.println("Player " + e.getPlayer().getName() + " was rtp'd!");
new PlayerFlashback(this, e.getPlayer(), e.getOldLocation(), 20L * time);
}
}

View File

@ -0,0 +1,17 @@
package me.SuperRonanCraft.BetterRTPAddons.flashBack;
import me.SuperRonanCraft.BetterRTPAddons.AddonsMessages;
import me.SuperRonanCraft.BetterRTPAddons.Files;
import org.bukkit.command.CommandSender;
public class MessagesFlashback implements AddonsMessages {
private static String preM = "Messages";
private Files.FILETYPE getLang() {
return Files.FILETYPE.EFFECTS;
}
public void getWarning(CommandSender sendi) {
sms(sendi, getLang().getString(preM + "Warning"));
}
}

View File

@ -1,16 +1,18 @@
package me.SuperRonanCraft.BetterRTPAddons;
package me.SuperRonanCraft.BetterRTPAddons.flashBack;
import io.papermc.lib.PaperLib;
import me.SuperRonanCraft.BetterRTPAddons.Main;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.entity.Player;
public class PlayerFlashback {
Player p;
Location oldLoc;
AddonFlashback plugin;
PlayerFlashback(Player p, Location oldLoc, Long delayInTicks) {
public PlayerFlashback(AddonFlashback plugin, Player p, Location oldLoc, Long delayInTicks) {
this.plugin = plugin;
this.p = p;
this.oldLoc = oldLoc;
Bukkit.getScheduler().runTaskLater(Main.getInstance(), getTimedFlash(), delayInTicks);
@ -18,8 +20,9 @@ public class PlayerFlashback {
private Runnable getTimedFlash() {
return () -> {
System.out.println("Player teleported back to old spot!");
plugin.msgs.getWarning(p);
PaperLib.teleportAsync(p, oldLoc);
};
}
}

View File

@ -0,0 +1,2 @@
Enabled: false
Time: 120 #In seconds

View File

@ -30,7 +30,6 @@ public class BetterRTP extends JavaPlugin {
private final RTPInventories invs = new RTPInventories();
private final PlayerInfo pInfo = new PlayerInfo();
private final Settings settings = new Settings();
private final RTPEventRegistry events = new RTPEventRegistry();
public void onEnable() {
instance = this;
@ -122,8 +121,4 @@ public class BetterRTP extends JavaPlugin {
if (getInstance().getSettings().debug)
getInstance().getLogger().info(str);
}
public RTPEventRegistry getEvents() {
return events;
}
}

View File

@ -1,9 +1,14 @@
package me.SuperRonanCraft.BetterRTP.player.commands;
import com.bekvon.bukkit.residence.commands.list;
import com.bekvon.bukkit.residence.containers.cmd;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTPCooldown;
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_CommandEvent;
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportPostEvent;
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
import org.bukkit.Bukkit;
import org.bukkit.block.Biome;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -34,12 +39,14 @@ public class Commands {
public void commandExecuted(CommandSender sendi, String label, String[] args) {
if (pl.getPerms().getUse(sendi)) {
if (args != null && args.length > 0) {
for (CommandTypes cmd : CommandTypes.values()) {
for (RTPCommandType cmd : RTPCommandType.values()) {
if (cmd.name().equalsIgnoreCase(args[0])) {
if (!cmd.isDebugOnly() || pl.getSettings().debug) { //Debug only?
if (cmd.getCmd().permission(sendi))
if (cmd.getCmd().permission(sendi)) {
cmd.getCmd().execute(sendi, label, args);
else
//Command Event
Bukkit.getServer().getPluginManager().callEvent(new RTP_CommandEvent(sendi, cmd));
} else
noPerm(sendi);
return;
}
@ -59,14 +66,14 @@ public class Commands {
public List<String> onTabComplete(CommandSender sendi, String[] args) {
List<String> list = new ArrayList<>();
if (args.length == 1) {
for (CommandTypes cmd : CommandTypes.values()) {
for (RTPCommandType cmd : RTPCommandType.values()) {
if (cmd.name().toLowerCase().startsWith(args[0].toLowerCase()))
if (!cmd.isDebugOnly() || pl.getSettings().debug) //Debug only?
if (cmd.getCmd().permission(sendi))
list.add(cmd.name().toLowerCase());
}
} else if (args.length > 1) {
for (CommandTypes cmd : CommandTypes.values()) {
for (RTPCommandType cmd : RTPCommandType.values()) {
if (cmd.name().equalsIgnoreCase(args[0]))
if (!cmd.isDebugOnly() || pl.getSettings().debug) //Debug only?
if (cmd.getCmd().permission(sendi)) {

View File

@ -2,7 +2,7 @@ package me.SuperRonanCraft.BetterRTP.player.commands;
import me.SuperRonanCraft.BetterRTP.player.commands.types.*;
public enum CommandTypes {
public enum RTPCommandType {
BIOME(new CmdBiome()),
EDIT(new CmdEdit()),
HELP(new CmdHelp()),
@ -17,11 +17,11 @@ public enum CommandTypes {
private final RTPCommand cmd;
private boolean debugOnly = false;
CommandTypes(RTPCommand cmd) {
RTPCommandType(RTPCommand cmd) {
this.cmd = cmd;
}
CommandTypes(RTPCommand cmd, boolean debugOnly) {
RTPCommandType(RTPCommand cmd, boolean debugOnly) {
this.cmd = cmd;
this.debugOnly = debugOnly;
}

View File

@ -1,6 +1,6 @@
package me.SuperRonanCraft.BetterRTP.player.commands.types;
import me.SuperRonanCraft.BetterRTP.player.commands.CommandTypes;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandType;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable;
import me.SuperRonanCraft.BetterRTP.references.file.Messages;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
@ -17,7 +17,7 @@ public class CmdHelp implements RTPCommand, RTPCommandHelpable {
List<String> list = new ArrayList<>();
list.add(txt.getHelpPrefix());
list.add(txt.getHelpMain());
for (CommandTypes cmd : CommandTypes.values())
for (RTPCommandType cmd : RTPCommandType.values())
if (!cmd.isDebugOnly() || BetterRTP.getInstance().getSettings().debug)
if (cmd.getCmd().permission(sendi))
if (cmd.getCmd() instanceof RTPCommandHelpable) {

View File

@ -1,7 +1,7 @@
package me.SuperRonanCraft.BetterRTP.player.commands.types;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.player.commands.CommandTypes;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandType;
import me.SuperRonanCraft.BetterRTP.player.commands.Commands;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable;
import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE;
@ -47,7 +47,7 @@ public class CmdPlayer implements RTPCommand, RTPCommandHelpable {
if (w.getName().startsWith(args[2]) && !BetterRTP.getInstance().getRTP().disabledWorlds().contains(w.getName()))
list.add(w.getName());
} else if (args.length > 3) {
if (CommandTypes.BIOME.getCmd().permission(sendi))
if (RTPCommandType.BIOME.getCmd().permission(sendi))
getCmd().addBiomes(list, args);
}
return list;

View File

@ -3,7 +3,7 @@ package me.SuperRonanCraft.BetterRTP.player.commands.types;
import me.SuperRonanCraft.BetterRTP.player.commands.Commands;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.player.commands.CommandTypes;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandType;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
import org.bukkit.Bukkit;
import org.bukkit.World;
@ -32,7 +32,7 @@ public class CmdWorld implements RTPCommand, RTPCommandHelpable {
list.add(_wName);
}
} else if (args.length >= 3) {
if (CommandTypes.BIOME.getCmd().permission(sendi))
if (RTPCommandType.BIOME.getCmd().permission(sendi))
getCmd().addBiomes(list, args);
}
return list;

View File

@ -1,6 +1,6 @@
package me.SuperRonanCraft.BetterRTP.player.events;
import me.SuperRonanCraft.BetterRTP.player.commands.CommandTypes;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandType;
import me.SuperRonanCraft.BetterRTP.references.file.FileBasics;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
import org.bukkit.block.Block;
@ -34,7 +34,7 @@ class Interact {
action(e.getPlayer(), null);
return;
} else
for (CommandTypes cmd : CommandTypes.values())
for (RTPCommandType cmd : RTPCommandType.values())
if (command.equalsIgnoreCase(cmd.name())) {
action(e.getPlayer(), cmd(sign.getLines()).split(" "));
return;

View File

@ -2,7 +2,7 @@ package me.SuperRonanCraft.BetterRTP.player.rtp;
import io.papermc.lib.PaperLib;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportEvent;
import me.SuperRonanCraft.BetterRTP.references.customEvents.*;
import org.bukkit.Chunk;
import org.bukkit.Location;
import org.bukkit.command.CommandSender;
@ -83,7 +83,7 @@ public class RTPTeleport {
eTitles.showTitle(RTPTitles.RTP_TITLE_TYPE.TELEPORT, p, loc, attempts, 0);
if (eTitles.sendMsg(RTPTitles.RTP_TITLE_TYPE.TELEPORT))
sendSuccessMsg(p, p.getName(), loc, price, true, attempts);
getPl().getServer().getPluginManager().callEvent(new RTP_TeleportEvent(p, loc, oldLoc));
getPl().getServer().getPluginManager().callEvent(new RTP_TeleportPostEvent(p, loc, oldLoc));
}
public void beforeTeleportInstant(CommandSender sendi, Player p) {
@ -91,6 +91,7 @@ public class RTPTeleport {
eTitles.showTitle(RTPTitles.RTP_TITLE_TYPE.NODELAY, p, p.getLocation(), 0, 0);
if (eTitles.sendMsg(RTPTitles.RTP_TITLE_TYPE.NODELAY))
getPl().getText().getSuccessTeleport(sendi);
getPl().getServer().getPluginManager().callEvent(new RTP_TeleportPreEvent(p));
}
public void beforeTeleportDelay(Player p, int delay) { //Only Delays should call this

View File

@ -0,0 +1,35 @@
package me.SuperRonanCraft.BetterRTP.references.customEvents;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandType;
import org.bukkit.command.CommandSender;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
public class RTP_CommandEvent extends Event {
CommandSender sendi;
RTPCommandType cmd;
private static final HandlerList handler = new HandlerList();
public RTP_CommandEvent(CommandSender sendi, RTPCommandType cmd) {
this.sendi = sendi;
this.cmd = cmd;
}
public CommandSender getSendi() {
return sendi;
}
public RTPCommandType getCmd() {
return cmd;
}
@Override
public HandlerList getHandlers() {
return handler;
}
public static HandlerList getHandlerList() {
return handler;
}
}

View File

@ -5,14 +5,14 @@ import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
public class RTP_TeleportEvent extends Event {
public class RTP_TeleportPostEvent extends Event {
Player p;
Location loc;
Location oldLoc;
private static final HandlerList handler = new HandlerList();
public RTP_TeleportEvent(Player p, Location loc, Location oldLoc) {
public RTP_TeleportPostEvent(Player p, Location loc, Location oldLoc) {
this.p = p;
this.loc = loc;
this.oldLoc = oldLoc;

View File

@ -0,0 +1,28 @@
package me.SuperRonanCraft.BetterRTP.references.customEvents;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
public class RTP_TeleportPreEvent extends Event {
Player p;
private static final HandlerList handler = new HandlerList();
public RTP_TeleportPreEvent(Player p) {
this.p = p;
}
public Player getPlayer() {
return p;
}
@Override
public HandlerList getHandlers() {
return handler;
}
public static HandlerList getHandlerList() {
return handler;
}
}