teleport during event + extraEffects addon

- portals addon can force ignore delay and cooldowns
- Rtp commands were moved after a command was actually executed, fixing addons reload
This commit is contained in:
SuperRonanCraft
2020-11-19 17:30:43 -05:00
parent 212b000a35
commit 462b2fa6be
17 changed files with 352 additions and 22 deletions

View File

@@ -4,6 +4,7 @@ import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTPAddons.addons.flashback.AddonFlashback;
import me.SuperRonanCraft.BetterRTPAddons.addons.interfaces.AddonInterface;
import me.SuperRonanCraft.BetterRTPAddons.addons.logger.AddonLogger;
import me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.AddonMagicStick;
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals;
import java.util.ArrayList;
@@ -39,6 +40,7 @@ public class AddonsHandler {
FLASH_BACK(new AddonFlashback()),
PORTALS(new AddonPortals()),
//INTERFACES(new AddonInterface())
MAGICSTICK(new AddonMagicStick()),
;
Addon addon;

View File

@@ -0,0 +1,58 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.extraEffects;
import me.SuperRonanCraft.BetterRTPAddons.Addon;
import me.SuperRonanCraft.BetterRTPAddons.util.Files;
import org.bukkit.event.Listener;
import java.util.ArrayList;
import java.util.List;
public class AddonExtraEffects implements Addon {
private final String name = "ExtraEffects";
private final List<Effects> effects = new ArrayList<>(); //List of enabled effects
@Override
public boolean isEnabled() {
return getFile(Files.FILETYPE.CONFIG).getBoolean(name + ".Enabled");
}
@Override
public void load() {
this.effects.clear();
for (Effects effect : Effects.values())
if (effect.isEnabled()) {
effect.load();
this.effects.add(effect);
}
}
@Override
public void unload() {
for (Effects effect : this.effects)
effect.unload();
this.effects.clear();
}
enum Effects {
SKYHIGH(new ExtraEffectsEffect_Skyhigh());
private final ExtraEffectsEffect effect;
Effects(ExtraEffectsEffect effect) {
this.effect = effect;
}
boolean isEnabled() {
return effect.isEnabled();
}
void load() {
effect.load();
}
void unload() {
effect.unload();
}
}
}

View File

@@ -0,0 +1,11 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.extraEffects;
public interface ExtraEffectsEffect {
void load();
boolean isEnabled();
void unload();
}

View File

@@ -0,0 +1,36 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.extraEffects;
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportEvent;
import me.SuperRonanCraft.BetterRTPAddons.Main;
import me.SuperRonanCraft.BetterRTPAddons.util.Files;
import org.bukkit.event.EventHandler;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
//Teleport the player VERY high into the sky
public class ExtraEffectsEffect_Skyhigh implements ExtraEffectsEffect, Listener {
private int offset;
@Override
public void load() {
Files.FILETYPE file = Main.getInstance().getFiles().getType(Files.FILETYPE.CONFIG);
this.offset = file.getInt("ExtraEffects.YOffset.Offset");
Main.getInstance().getServer().getPluginManager().registerEvents(this, Main.getInstance());
}
@Override
public boolean isEnabled() {
return Main.getInstance().getFiles().getType(Files.FILETYPE.CONFIG).getBoolean("ExtraEffects.YOffset.Enabled");
}
@Override
public void unload() {
HandlerList.unregisterAll(this);
}
@EventHandler
void tpEvent(RTP_TeleportEvent e) {
e.changeLocation(e.getLocation().add(0, offset, 0));
}
}

View File

@@ -106,10 +106,10 @@ public class FlashbackDatabase extends Database {
);
UUID id = p.getUniqueId();
ps.setString(1, id.toString());
ps.setInt(2, timeGoal.intValue());
ps.setLong(2, timeGoal);
String serialLocation = LocSerialization.getStringFromLocation(oldLocation);
ps.setString(3, serialLocation);
ps.setInt(4, timeGoal.intValue());
ps.setLong(4, timeGoal);
ps.setString(5, serialLocation);
ps.executeUpdate();
} catch (SQLException ex) {

View File

@@ -0,0 +1,28 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.magicStick;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTPAddons.Addon;
import me.SuperRonanCraft.BetterRTPAddons.Main;
import me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.cmds.MagicStickCommand;
import me.SuperRonanCraft.BetterRTPAddons.util.Files;
public class AddonMagicStick implements Addon {
public MagicStickMessages msgs = new MagicStickMessages();
MagicStickCommand cmd = new MagicStickCommand(this);
@Override
public boolean isEnabled() {
return Main.getInstance().getFiles().getType(Files.FILETYPE.CONFIG).getBoolean("MagicStick.Enabled");
}
@Override
public void load() {
BetterRTP.getInstance().getCmd().registerCommand(cmd, false);
}
@Override
public void unload() {
}
}

View File

@@ -0,0 +1,17 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.magicStick;
import me.SuperRonanCraft.BetterRTPAddons.AddonsMessages;
import org.bukkit.command.CommandSender;
public class MagicStickMessages implements AddonsMessages {
private static final String preM = "MagicStick.";
public String getHelp() {
return getLang().getString("Help.MagicStick");
}
//Give
public void getGive(CommandSender sendi, String name) {
sms(sendi, getLang().getString(preM + "Give").replace("%name%", name));
}
}

View File

@@ -0,0 +1,67 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.cmds;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand;
import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable;
import me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.AddonMagicStick;
import org.bukkit.command.CommandSender;
import java.util.ArrayList;
import java.util.List;
public class MagicStickCommand implements RTPCommand, RTPCommandHelpable {
AddonMagicStick pl;
public MagicStickCommand(AddonMagicStick pl) {
this.pl = pl;
}
public String getName() {
return "magicstick";
}
@Override
public void execute(CommandSender sendi, String label, String[] args) {
if (args.length > 1)
for (subCmd subCmd : subCmd.values()) {
if (args[1].equalsIgnoreCase(subCmd.name())) {
subCmd.cmd.execute(sendi, label, args, pl);
return;
}
}
sendi.sendMessage("Invalid argument!");
}
@Override
public List<String> tabComplete(CommandSender sendi, String[] args) {
List<String> list = new ArrayList<>();
if (args.length == 2)
for (subCmd subCmd : subCmd.values()) {
if (subCmd.name().toLowerCase().startsWith(args[1].toLowerCase())) {
list.add(subCmd.name().toLowerCase());
}
}
return list;
}
@Override
public boolean permission(CommandSender sendi) {
return BetterRTP.getInstance().getPerms().checkPerm("betterrtp.addon.portals", sendi);
}
@Override
public String getHelp() {
return pl.msgs.getHelp();
}
private enum subCmd {
GIVE(new MagicStickCommand_Give());
MagicStickCommands cmd;
subCmd(MagicStickCommands cmd) {
this.cmd = cmd;
}
}
}

View File

@@ -0,0 +1,14 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.cmds;
import me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.AddonMagicStick;
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals;
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.region.PortalsRegionInfo;
import org.bukkit.command.CommandSender;
public class MagicStickCommand_Give implements MagicStickCommands {
@Override
public void execute(CommandSender sendi, String label, String[] args, AddonMagicStick addon) {
sendi.sendMessage("magicstick give command!");
}
}

View File

@@ -0,0 +1,10 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.cmds;
import me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.AddonMagicStick;
import org.bukkit.command.CommandSender;
public interface MagicStickCommands {
void execute(CommandSender sendi, String label, String[] args, AddonMagicStick addonPortals);
}

View File

@@ -24,7 +24,7 @@ public class AddonPortals implements Addon {
public void load() {
BetterRTP.getInstance().getCmd().registerCommand(cmd, false);
database.load(PortalsDatabase.Columns.values());
events.register();
events.load();
portalsCache.load();
}

View File

@@ -5,6 +5,7 @@ import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE;
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportPostEvent;
import me.SuperRonanCraft.BetterRTPAddons.Main;
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.region.PortalsRegionInfo;
import me.SuperRonanCraft.BetterRTPAddons.util.Files;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@@ -20,13 +21,16 @@ public class PortalsEvents implements Listener {
AddonPortals addonPortals;
private final HashMap<Player, PortalsRegionInfo> playerPortaling = new HashMap<>();
private boolean ignoreDelay, ignoreCooldown;
PortalsEvents(AddonPortals addonPortals) {
this.addonPortals = addonPortals;
}
public void register() {
public void load() {
Main.getInstance().getServer().getPluginManager().registerEvents(this, Main.getInstance());
ignoreDelay = Main.getInstance().getFiles().getType(Files.FILETYPE.CONFIG).getBoolean("Portals.IgnoreDelay");
ignoreCooldown = Main.getInstance().getFiles().getType(Files.FILETYPE.CONFIG).getBoolean("Portals.IgnoreCooldown");
}
public void unregiter() {
@@ -52,7 +56,7 @@ public class PortalsEvents implements Listener {
&& ploc.getBlockY() >= Math.min(loc1.getBlockY(), loc2.getBlockY())) {
playerPortaling.put(e.getPlayer(), portal);
BetterRTP.getInstance().getCmd().tp(e.getPlayer(), e.getPlayer(),
e.getPlayer().getWorld().getName(), null, RTP_TYPE.ADDON);
e.getPlayer().getWorld().getName(), null, RTP_TYPE.ADDON, ignoreCooldown, ignoreDelay);
return;
}
}

View File

@@ -1,5 +1,6 @@
Language-File: 'en.yml'
#Addon Flashback
##Addon Flashback
Flashback:
Enabled: true
Timer:
@@ -7,11 +8,37 @@ Flashback:
Warnings: #Warning messages to send to a player when X amount of time is left
- 5: "&eYou have 5 seconds left! Grab all your materials quick!"
- 1: "&eHang on!"
#Addon Logger
##Addon Logger
Logger:
Enabled: true
LogToConsole: true
Format: 'yyyy-MM-dd HH:mm:ss'
#Addon Portals
##Addon Portals
Portals:
Enabled: true
Enabled: true
IgnoreDelay: true
IgnoreCooldown: true
##Addon ExtraEffects
ExtraEffects:
Enabled: true
YOffset:
Enabled: true
Offset: 50
##Addon MagicStick
MagicStick:
Enabled: false
GiveFirstJoin:
Enabled: true
Amount: 1
Item:
Name: '&d&lMagic RTP Stick &8(Right-Click)'
Material: 'Stick'
Lore:
- ''
- '&7Right click this stick and unlock'
- '&7a brand new adventure!'
Take: true

View File

@@ -17,6 +17,8 @@ Portals:
Prefix: '&e&m-----&6&l BetterRTP &7&lAddons &8| Portals List &e&m-----'
Portal: ' &7- &6%name% &8| &7%location%'
None: '&7There are no portals! &8Create one with `/rtp portals create`'
MagicStick:
Give: '&7Magic Stick has been given to &a%player%'
Usage:
Portals:
@@ -24,4 +26,5 @@ Usage:
Help:
Portals: ' &7- &e/%command% portals <loc1, loc2, create> &7- Setup an rtp portal'
Portals: ' &7- &e/%command% portals <loc1, loc2, create> &7- Setup an rtp portal'
MagicStick: ' &7- &e/%command% magicstick give [player] &7- Give a magic stick to a player'