Addons + Commands on teleport event

This commit is contained in:
SuperRonanCraft 2021-01-20 17:39:08 -05:00
parent 993480df38
commit d7a3bf8e49
14 changed files with 152 additions and 9 deletions

View File

@ -1,6 +1,7 @@
package me.SuperRonanCraft.BetterRTPAddons;
import me.SuperRonanCraft.BetterRTP.BetterRTP;
import me.SuperRonanCraft.BetterRTPAddons.addons.commands.AddonCommands;
import me.SuperRonanCraft.BetterRTPAddons.addons.extraEffects.AddonExtraEffects;
import me.SuperRonanCraft.BetterRTPAddons.addons.flashback.AddonFlashback;
import me.SuperRonanCraft.BetterRTPAddons.addons.interfaces.AddonInterface;
@ -43,6 +44,7 @@ public class AddonsHandler {
//INTERFACES(new AddonInterface())
MAGICSTICK(new AddonMagicStick()), //Handy teleport want
EXTRAEFFECTS(new AddonExtraEffects()), //New cosmetica!
COMMANDS(new AddonCommands()), //Commands on rtp events
;
Addon addon;

View File

@ -0,0 +1,25 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.commands;
import me.SuperRonanCraft.BetterRTPAddons.Addon;
import me.SuperRonanCraft.BetterRTPAddons.util.Files;
public class AddonCommands implements Addon {
private final String name = "Commands";
private final CommandsLoader loader = new CommandsLoader();
@Override
public boolean isEnabled() {
return getFile(Files.FILETYPE.CONFIG).getBoolean(name + ".Enabled");
}
@Override
public void load() {
loader.load();
}
@Override
public void unload() {
}
}

View File

@ -0,0 +1,65 @@
package me.SuperRonanCraft.BetterRTPAddons.addons.commands;
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_CancelledEvent;
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportEvent;
import me.SuperRonanCraft.BetterRTPAddons.Main;
import me.SuperRonanCraft.BetterRTPAddons.util.Files;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import java.util.HashMap;
import java.util.List;
public class CommandsLoader implements Listener {
HashMap<Command_types, List<String>> commands = new HashMap<>();
void load() {
Files.FILETYPE file = getFile();
String name = "Commands";
commands.clear();
for (Command_types type : Command_types.values()) {
String path = name + "." + type.path;
if (file.getBoolean(path + ".Enabled")) {
List<String> cmds = file.getStringList(path + ".Commands");
commands.put(type, cmds);
}
}
Bukkit.getPluginManager().registerEvents(this, Main.getInstance());
}
private Files.FILETYPE getFile() {
return Main.getInstance().getFiles().getType(Files.FILETYPE.CONFIG);
}
//Events
public void eventTeleport(RTP_TeleportEvent event) {
if (!commands.containsKey(Command_types.TELEPORT)) return;
executeCommands(commands.get(Command_types.TELEPORT), event.getPlayer());
}
public void eventCancelled(RTP_CancelledEvent event) {
if (!commands.containsKey(Command_types.CANCELLED)) return;
executeCommands(commands.get(Command_types.CANCELLED), event.getPlayer());
}
private void executeCommands(List<String> cmds, Player p) {
for (String cmd : cmds) {
cmd = cmd.replaceAll("%player_name%", p.getName());
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), cmd);
}
}
}
enum Command_types {
TELEPORT("Teleport"),
CANCELLED("Cancelled");
String path;
Command_types(String path) {
this.path = path;
}
}

View File

@ -42,4 +42,16 @@ MagicStick:
- ''
- '&7Right click this stick and unlock'
- '&7a brand new adventure!'
Take: true
Take: true
Commands:
Enabled: false
Events:
Teleport:
Enabled: true
Commands:
- 'broadcast &cThe player %player_name% just teleported!'
Cancelled:
Enabled: false
Commands:
- 'broadcast &e%player_name% moved while trying to rtp, chump!'

View File

@ -7,7 +7,7 @@
<groupId>me.SuperRonanCraft</groupId>
<artifactId>BetterRTP</artifactId>
<packaging>jar</packaging>
<version>3.0.4-1</version>
<version>3.0.5</version>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
@ -231,5 +231,11 @@
<artifactId>particle</artifactId>
<version>1.5.1</version>
</dependency>
<dependency>
<groupId>me.SuperRonanCraft</groupId>
<artifactId>BetterRTP</artifactId>
<version>3.0.3-1</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,5 @@
package me.SuperRonanCraft.BetterRTP.references.customEvents;
public interface RTPEvent {
//Used purely to grab these classes during runtime without distinct class reference
}

View File

@ -0,0 +1,16 @@
package me.SuperRonanCraft.BetterRTP.references.customEvents;
public enum RTPEvents {
CANCELLED(RTP_CancelledEvent.class),
COMMAND(RTP_CommandEvent.class),
FINDLOCATION(RTP_FindLocationEvent.class),
TELEPORT(RTP_TeleportEvent.class),
TELEPORTPOST(RTP_TeleportPostEvent.class),
TELEPORTPRE(RTP_TeleportPreEvent.class);
public Class cl;
RTPEvents(Class cl) {
this.cl = cl;
}
}

View File

@ -4,7 +4,7 @@ import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
public class RTP_CancelledEvent extends Event {
public class RTP_CancelledEvent extends Event implements RTPEvent { //Called when a delayed rtp is cancelled cause player moved
Player p;
private static final HandlerList handler = new HandlerList();

View File

@ -6,7 +6,7 @@ import org.bukkit.command.CommandSender;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
public class RTP_CommandEvent extends Event {
public class RTP_CommandEvent extends Event implements RTPEvent {
CommandSender sendi;
RTPCommand cmd;

View File

@ -3,12 +3,15 @@ package me.SuperRonanCraft.BetterRTP.references.customEvents;
import me.SuperRonanCraft.BetterRTP.references.worlds.RTPWorld;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
public class RTP_FindLocationEvent {
public class RTP_FindLocationEvent extends Event implements RTPEvent {
Player p;
RTPWorld world;
Location loc = null;
private static final HandlerList handler = new HandlerList();
public RTP_FindLocationEvent(Player p, RTPWorld world) {
this.p = p;
@ -30,4 +33,13 @@ public class RTP_FindLocationEvent {
public Player getPlayer() {
return p;
}
@Override
public HandlerList getHandlers() {
return handler;
}
public static HandlerList getHandlerList() {
return handler;
}
}

View File

@ -6,7 +6,7 @@ import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
public class RTP_TeleportEvent extends Event {
public class RTP_TeleportEvent extends Event implements RTPEvent {
Player p;
Location loc;

View File

@ -6,7 +6,7 @@ import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
public class RTP_TeleportPostEvent extends Event {
public class RTP_TeleportPostEvent extends Event implements RTPEvent {
Player p;
Location loc;

View File

@ -4,7 +4,7 @@ import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
public class RTP_TeleportPreEvent extends Event {
public class RTP_TeleportPreEvent extends Event implements RTPEvent { //Called upon every rtp call, does not mean player will be teleported
Player p;
private static final HandlerList handler = new HandlerList();

View File

@ -1,5 +1,5 @@
main: me.SuperRonanCraft.BetterRTP.BetterRTP
version: '3.0.4-1'
version: '3.0.5'
name: BetterRTP
author: SuperRonanCraft
softdepend: