mirror of
https://github.com/RonanPlugins/BetterRTP.git
synced 2026-04-15 04:16:01 +00:00
more events and addon fixes
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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() {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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"));
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
2
BetterRTPAddons/src/main/resources/flashback.yml
Normal file
2
BetterRTPAddons/src/main/resources/flashback.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
Enabled: false
|
||||
Time: 120 #In seconds
|
||||
Reference in New Issue
Block a user