mirror of
https://github.com/RonanPlugins/BetterRTP.git
synced 2025-08-18 01:25:45 +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.BetterRTP.BetterRTP;
|
||||||
import me.SuperRonanCraft.BetterRTPAddons.Addon;
|
import me.SuperRonanCraft.BetterRTPAddons.Addon;
|
||||||
import me.SuperRonanCraft.BetterRTPAddons.Files;
|
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
|
//Create portals for rtp'ing
|
||||||
public class AddonPortals implements Addon {
|
public class AddonPortals implements Addon {
|
||||||
|
|
||||||
public PortalsMessages msgs = new PortalsMessages();
|
public PortalsMessages msgs = new PortalsMessages();
|
||||||
private final PortalsCommand cmd = new PortalsCommand(this);
|
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() {
|
public boolean isEnabled() {
|
||||||
return getFile(Files.FILETYPE.PORTALS).getBoolean("Enabled");
|
return getFile(Files.FILETYPE.PORTALS).getBoolean("Enabled");
|
||||||
@ -23,7 +30,10 @@ public class AddonPortals implements Addon {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void unload() {
|
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.Location;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
public class PortalsCache {
|
public class PortalsCache {
|
||||||
|
|
||||||
Player p;
|
private final HashMap<Player, PortalsCreation> portalsBeingCreated = new HashMap<>();
|
||||||
Location loc_1, loc_2;
|
|
||||||
|
|
||||||
public PortalsCache(Player p) {
|
void unload() {
|
||||||
this.p = p;
|
portalsBeingCreated.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void setLoc_1(Location loc) {
|
void uncache(Player p) {
|
||||||
this.loc_1 = loc;
|
portalsBeingCreated.remove(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setLoc_2(Location loc) {
|
public void setPortal(Player p, Location loc, boolean loc2) {
|
||||||
this.loc_2 = loc;
|
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() {
|
public PortalsCreation getPortal(Player p) {
|
||||||
return this.loc_1;
|
return portalsBeingCreated.getOrDefault(p, null);
|
||||||
}
|
|
||||||
|
|
||||||
Location getLoc_2() {
|
|
||||||
return this.loc_2;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,9 +6,11 @@ import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable;
|
|||||||
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds.*;
|
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds.*;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class PortalsCommand implements RTPCommand, RTPCommandHelpable {
|
public class PortalsCommand implements RTPCommand, RTPCommandHelpable {
|
||||||
|
|
||||||
AddonPortals pl;
|
AddonPortals pl;
|
||||||
|
|
||||||
PortalsCommand(AddonPortals pl) {
|
PortalsCommand(AddonPortals pl) {
|
||||||
@ -21,18 +23,26 @@ public class PortalsCommand implements RTPCommand, RTPCommandHelpable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute(CommandSender sendi, String label, String[] args) {
|
public void execute(CommandSender sendi, String label, String[] args) {
|
||||||
|
if (args.length > 1)
|
||||||
for (subCmd subCmd : subCmd.values()) {
|
for (subCmd subCmd : subCmd.values()) {
|
||||||
if (args[1].equalsIgnoreCase(subCmd.name())) {
|
if (args[1].equalsIgnoreCase(subCmd.name())) {
|
||||||
subCmd.cmd.execute(sendi, label, args);
|
subCmd.cmd.execute(sendi, label, args, pl);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sendi.sendMessage("Invalid command!");
|
sendi.sendMessage("Invalid argument!");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> tabComplete(CommandSender sendi, String[] args) {
|
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
|
@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;
|
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.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
public class PortalsCommand_Create implements PortalsCommands {
|
public class PortalsCommand_Create implements PortalsCommands {
|
||||||
|
|
||||||
@Override
|
@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!");
|
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;
|
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.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
public class PortalsCommand_Loc1 implements PortalsCommands {
|
public class PortalsCommand_Loc1 implements PortalsCommands, LocationFinder {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute(CommandSender sendi, String label, String[] args) {
|
public void execute(CommandSender sendi, String label, String[] args, AddonPortals addonPortals) {
|
||||||
sendi.sendMessage("Portals Loc1 command!");
|
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;
|
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.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
|
@Override
|
||||||
public void execute(CommandSender sendi, String label, String[] args) {
|
public void execute(CommandSender sendi, String label, String[] args, AddonPortals addonPortals) {
|
||||||
sendi.sendMessage("Portals Loc2 command!");
|
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;
|
package me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds;
|
||||||
|
|
||||||
|
import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
public interface PortalsCommands {
|
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