mirror of
https://github.com/RonanPlugins/BetterRTP.git
synced 2025-08-18 09:35:50 +00:00
queue system implementation, still working on
This commit is contained in:
parent
253fa73100
commit
538bfa95ce
@ -179,34 +179,13 @@ public class RTP {
|
|||||||
getPl().getCmd().cooldowns.add(p.getUniqueId());
|
getPl().getCmd().cooldowns.add(p.getUniqueId());
|
||||||
getPl().getCmd().rtping.put(p.getUniqueId(), true); //Cache player so they cant run '/rtp' again while rtp'ing
|
getPl().getCmd().rtping.put(p.getUniqueId(), true); //Cache player so they cant run '/rtp' again while rtp'ing
|
||||||
//Setup player rtp methods
|
//Setup player rtp methods
|
||||||
RTPPlayer rtp = new RTPPlayer(p, this, pWorld, type);
|
RTPPlayer rtpPlayer = new RTPPlayer(p, this, pWorld, type);
|
||||||
// Delaying? Else, just go
|
// Delaying? Else, just go
|
||||||
if (getPl().getSettings().delayEnabled && delay) {
|
if (getPl().getSettings().delayEnabled && delay) {
|
||||||
new RTPDelay(sendi, rtp, delayTime, cancelOnMove, cancelOnDamage);
|
new RTPDelay(sendi, rtpPlayer, delayTime, cancelOnMove, cancelOnDamage);
|
||||||
} else {
|
} else {
|
||||||
teleport.beforeTeleportInstant(sendi, p);
|
teleport.beforeTeleportInstant(sendi, p);
|
||||||
rtp.randomlyTeleport(sendi);
|
rtpPlayer.randomlyTeleport(sendi);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static class Queue {
|
|
||||||
|
|
||||||
private int queueAmount;
|
|
||||||
private final List<Location> locationList = new ArrayList<>();
|
|
||||||
|
|
||||||
Location getQueue() {
|
|
||||||
Location loc = null;
|
|
||||||
if (!locationList.isEmpty())
|
|
||||||
loc = locationList.get(0);
|
|
||||||
return loc;
|
|
||||||
}
|
|
||||||
|
|
||||||
void removeFromQueue(Location loc) {
|
|
||||||
locationList.remove(loc);
|
|
||||||
}
|
|
||||||
|
|
||||||
void startQueue() {
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,5 +1,6 @@
|
|||||||
package me.SuperRonanCraft.BetterRTP.player.rtp;
|
package me.SuperRonanCraft.BetterRTP.player.rtp;
|
||||||
|
|
||||||
|
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_FindLocationEvent;
|
||||||
import me.SuperRonanCraft.BetterRTP.references.worlds.WorldPlayer;
|
import me.SuperRonanCraft.BetterRTP.references.worlds.WorldPlayer;
|
||||||
import io.papermc.lib.PaperLib;
|
import io.papermc.lib.PaperLib;
|
||||||
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
||||||
@ -35,7 +36,14 @@ public class RTPPlayer {
|
|||||||
if (pWorld.getAttempts() >= settings.maxAttempts) //Cancel out, too many tries
|
if (pWorld.getAttempts() >= settings.maxAttempts) //Cancel out, too many tries
|
||||||
metMax(sendi, p);
|
metMax(sendi, p);
|
||||||
else { //Try again to find a safe location
|
else { //Try again to find a safe location
|
||||||
Location loc = pWorld.generateRandomXZ(settings.defaultWorld); //randomLoc(pWorld);
|
//Find a queue'd location
|
||||||
|
RTP_FindLocationEvent event = new RTP_FindLocationEvent(p, pWorld); //Find a queue'd location
|
||||||
|
Location loc;
|
||||||
|
if (event.getLocation() != null && pWorld.checkIsValid(event.getLocation()))
|
||||||
|
loc = event.getLocation();
|
||||||
|
else
|
||||||
|
loc = pWorld.generateRandomXZ();
|
||||||
|
//Load chunk and find out if safe location
|
||||||
CompletableFuture<Chunk> chunk = PaperLib.getChunkAtAsync(pWorld.getWorld(), loc.getBlockX(), loc.getBlockZ());
|
CompletableFuture<Chunk> chunk = PaperLib.getChunkAtAsync(pWorld.getWorld(), loc.getBlockX(), loc.getBlockZ());
|
||||||
chunk.thenAccept(result -> {
|
chunk.thenAccept(result -> {
|
||||||
//BetterRTP.debug("Checking location for " + p.getName());
|
//BetterRTP.debug("Checking location for " + p.getName());
|
||||||
|
@ -0,0 +1,32 @@
|
|||||||
|
package me.SuperRonanCraft.BetterRTP.player.rtp.queue;
|
||||||
|
|
||||||
|
import me.SuperRonanCraft.BetterRTP.BetterRTP;
|
||||||
|
import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_FindLocationEvent;
|
||||||
|
import me.SuperRonanCraft.BetterRTP.references.worlds.RTPWorld;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class RTPQueue implements Listener { //Randomly queues up some randomly safe locations
|
||||||
|
|
||||||
|
HashMap<RTPWorld, List<Location>> queue = new HashMap<>();
|
||||||
|
|
||||||
|
public void load() {
|
||||||
|
Bukkit.getPluginManager().registerEvents(this, BetterRTP.getInstance());
|
||||||
|
//queue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onRtpFindLoc(RTP_FindLocationEvent e) {
|
||||||
|
RTPWorld world = e.getWorld();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void queue(RTPWorld world) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
package me.SuperRonanCraft.BetterRTP.references.customEvents;
|
||||||
|
|
||||||
|
import me.SuperRonanCraft.BetterRTP.references.worlds.RTPWorld;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class RTP_FindLocationEvent {
|
||||||
|
|
||||||
|
Player p;
|
||||||
|
RTPWorld world;
|
||||||
|
Location loc = null;
|
||||||
|
|
||||||
|
public RTP_FindLocationEvent(Player p, RTPWorld world) {
|
||||||
|
this.p = p;
|
||||||
|
this.world = world;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLocation(Location loc) {
|
||||||
|
this.loc = loc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Location getLocation() {
|
||||||
|
return loc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RTPWorld getWorld() {
|
||||||
|
return world;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Player getPlayer() {
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
}
|
@ -91,7 +91,27 @@ public class WorldPlayer implements RTPWorld {
|
|||||||
return (Player) p;
|
return (Player) p;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Location generateRandomXZ(WorldDefault defaultWorld) {
|
public boolean checkIsValid(Location loc) { //Will check if a previously given location is valid
|
||||||
|
if (loc.getWorld() != getWorld())
|
||||||
|
return false;
|
||||||
|
int _xLMax = getCenterX() - getMaxRad(); //I|-||
|
||||||
|
int _xLMin = getCenterX() - getMinRad(); //|I-||
|
||||||
|
int _xRMax = getCenterX() + getMaxRad(); //||-|I
|
||||||
|
int _xRMin = getCenterX() + getMinRad(); //||-I|
|
||||||
|
int _xLoc = loc.getBlockX();
|
||||||
|
if (_xLoc < _xLMax || (_xLoc > _xLMin && _xLoc < _xRMin) || _xLoc > _xRMax)
|
||||||
|
return false;
|
||||||
|
int _zLMax = getCenterZ() - getMaxRad(); //I|-||
|
||||||
|
int _zLMin = getCenterZ() - getMinRad(); //|I-||
|
||||||
|
int _zRMax = getCenterZ() + getMaxRad(); //||-|I
|
||||||
|
int _zRMin = getCenterZ() + getMinRad(); //||-I|
|
||||||
|
int _zLoc = loc.getBlockX();
|
||||||
|
if (_zLoc < _zLMax || (_zLoc > _zLMin && _zLoc < _zRMin) || _zLoc > _zRMax)
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Location generateRandomXZ() {
|
||||||
int borderRad = getMaxRad();
|
int borderRad = getMaxRad();
|
||||||
int minVal = getMinRad();
|
int minVal = getMinRad();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user