mirror of
https://github.com/RonanPlugins/BetterRTP.git
synced 2025-08-17 17:15:47 +00:00
portal location/region creation
This commit is contained in:
parent
60607b11b3
commit
37c411b2b0
@ -3,13 +3,20 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.portals;
|
||||
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
||||
import me.SuperRonanCraft.BetterRTPAddons.Addon;
|
||||
import me.SuperRonanCraft.BetterRTPAddons.Files;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
//Create portals for rtp'ing
|
||||
public class AddonPortals implements Addon {
|
||||
|
||||
public PortalsMessages msgs = new PortalsMessages();
|
||||
private final PortalsCommand cmd = new PortalsCommand(this);
|
||||
private final PortalsDatabase database = new PortalsDatabase();;
|
||||
private final PortalsDatabase database = new PortalsDatabase();
|
||||
private final PortalsCache portalsCache = new PortalsCache();
|
||||
|
||||
public boolean isEnabled() {
|
||||
return getFile(Files.FILETYPE.PORTALS).getBoolean("Enabled");
|
||||
@ -23,7 +30,10 @@ public class AddonPortals implements Addon {
|
||||
|
||||
@Override
|
||||
public void unload() {
|
||||
|
||||
this.portalsCache.unload();
|
||||
}
|
||||
|
||||
public PortalsCache getPortals() {
|
||||
return portalsCache;
|
||||
}
|
||||
}
|
||||
|
@ -3,28 +3,31 @@ package me.SuperRonanCraft.BetterRTPAddons.addons.portals;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
public class PortalsCache {
|
||||
|
||||
Player p;
|
||||
Location loc_1, loc_2;
|
||||
private final HashMap<Player, PortalsCreation> portalsBeingCreated = new HashMap<>();
|
||||
|
||||
public PortalsCache(Player p) {
|
||||
this.p = p;
|
||||
void unload() {
|
||||
portalsBeingCreated.clear();
|
||||
}
|
||||
|
||||
void setLoc_1(Location loc) {
|
||||
this.loc_1 = loc;
|
||||
void uncache(Player p) {
|
||||
portalsBeingCreated.remove(p);
|
||||
}
|
||||
|
||||
void setLoc_2(Location loc) {
|
||||
this.loc_2 = loc;
|
||||
public void setPortal(Player p, Location loc, boolean loc2) {
|
||||
PortalsCreation portal;
|
||||
if (portalsBeingCreated.containsKey(p)) {
|
||||
portal = portalsBeingCreated.get(p);
|
||||
} else
|
||||
portal = new PortalsCreation(p);
|
||||
if (loc2) portal.loc_2 = loc;
|
||||
else portal.loc_1 = loc;
|
||||
}
|
||||
|
||||
Location getLoc_1() {
|
||||
return this.loc_1;
|
||||
}
|
||||
|
||||
Location getLoc_2() {
|
||||
return this.loc_2;
|
||||
public PortalsCreation getPortal(Player p) {
|
||||
return portalsBeingCreated.getOrDefault(p, null);
|
||||
}
|
||||
}
|
||||
|
@ -6,9 +6,11 @@ import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable;
|
||||
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds.*;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class PortalsCommand implements RTPCommand, RTPCommandHelpable {
|
||||
|
||||
AddonPortals pl;
|
||||
|
||||
PortalsCommand(AddonPortals pl) {
|
||||
@ -21,18 +23,26 @@ public class PortalsCommand implements RTPCommand, RTPCommandHelpable {
|
||||
|
||||
@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);
|
||||
subCmd.cmd.execute(sendi, label, args, pl);
|
||||
return;
|
||||
}
|
||||
}
|
||||
sendi.sendMessage("Invalid command!");
|
||||
sendi.sendMessage("Invalid argument!");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> tabComplete(CommandSender sendi, String[] args) {
|
||||
return null;
|
||||
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
|
||||
|
@ -0,0 +1,22 @@
|
||||
package me.SuperRonanCraft.BetterRTPAddons.addons.portals;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class PortalsCreation {
|
||||
|
||||
public Player p;
|
||||
protected Location loc_1, loc_2;
|
||||
|
||||
PortalsCreation(Player p) {
|
||||
this.p = p;
|
||||
}
|
||||
|
||||
public Location getLoc1() {
|
||||
return loc_1;
|
||||
}
|
||||
|
||||
public Location getLoc2() {
|
||||
return loc_2;
|
||||
}
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
package me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds;
|
||||
|
||||
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.BlockIterator;
|
||||
|
||||
public interface LocationFinder {
|
||||
|
||||
default Block getTargetBlock(Player player, int range) {
|
||||
BlockIterator iter = new BlockIterator(player, range);
|
||||
Block lastBlock = null;
|
||||
while (iter.hasNext()) {
|
||||
lastBlock = iter.next();
|
||||
if (lastBlock.getType() == Material.AIR) {
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return lastBlock;
|
||||
}
|
||||
|
||||
}
|
@ -1,11 +1,20 @@
|
||||
package me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds;
|
||||
|
||||
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals;
|
||||
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.PortalsCreation;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class PortalsCommand_Create implements PortalsCommands {
|
||||
|
||||
@Override
|
||||
public void execute(CommandSender sendi, String label, String[] args) {
|
||||
public void execute(CommandSender sendi, String label, String[] args, AddonPortals addonPortals) {
|
||||
sendi.sendMessage("Portals Create command!");
|
||||
PortalsCreation portal = addonPortals.getPortals().getPortal((Player) sendi);
|
||||
if (portal == null || portal.getLoc1() == null || portal.getLoc2() == null) {
|
||||
sendi.sendMessage("Invalid portal!");
|
||||
return;
|
||||
}
|
||||
sendi.sendMessage("Valid portal!");
|
||||
}
|
||||
}
|
||||
|
@ -1,11 +1,19 @@
|
||||
package me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds;
|
||||
|
||||
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class PortalsCommand_Loc1 implements PortalsCommands {
|
||||
public class PortalsCommand_Loc1 implements PortalsCommands, LocationFinder {
|
||||
|
||||
@Override
|
||||
public void execute(CommandSender sendi, String label, String[] args) {
|
||||
sendi.sendMessage("Portals Loc1 command!");
|
||||
public void execute(CommandSender sendi, String label, String[] args, AddonPortals addonPortals) {
|
||||
Player p = (Player) sendi;
|
||||
Location loc = getTargetBlock(p, 10).getLocation();
|
||||
addonPortals.getPortals().setPortal(p, loc, false);
|
||||
sendi.sendMessage("Location 1 set to this location " + loc.toString());
|
||||
p.sendBlockChange(loc, Material.GLOWSTONE, (byte) 0);
|
||||
}
|
||||
}
|
||||
|
@ -1,11 +1,20 @@
|
||||
package me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds;
|
||||
|
||||
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.BlockIterator;
|
||||
|
||||
public class PortalsCommand_Loc2 implements PortalsCommands {
|
||||
public class PortalsCommand_Loc2 implements PortalsCommands, LocationFinder {
|
||||
|
||||
@Override
|
||||
public void execute(CommandSender sendi, String label, String[] args) {
|
||||
sendi.sendMessage("Portals Loc2 command!");
|
||||
public void execute(CommandSender sendi, String label, String[] args, AddonPortals addonPortals) {
|
||||
Player p = (Player) sendi;
|
||||
Location loc = getTargetBlock(p, 10).getLocation();
|
||||
addonPortals.getPortals().setPortal(p, loc, true);
|
||||
sendi.sendMessage("Location 2 set to this location " + loc.toString());
|
||||
}
|
||||
}
|
||||
|
@ -1,9 +1,10 @@
|
||||
package me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds;
|
||||
|
||||
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
public interface PortalsCommands {
|
||||
|
||||
void execute(CommandSender sendi, String label, String[] args);
|
||||
void execute(CommandSender sendi, String label, String[] args, AddonPortals addonPortals);
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user