mirror of
https://github.com/SunNetservers/MiniGames.git
synced 2025-09-17 11:27:55 +02:00
Parkour implementation safety save 3
This is just a safety save in case the code gets too broken to fix.
This commit is contained in:
@@ -1,33 +0,0 @@
|
||||
package net.knarcraft.minigames.arena;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* An interface describing all arenas
|
||||
*/
|
||||
public interface Arena {
|
||||
|
||||
/**
|
||||
* Gets the id of this arena
|
||||
*
|
||||
* @return <p>This arena's identifier</p>
|
||||
*/
|
||||
@NotNull UUID getArenaId();
|
||||
|
||||
/**
|
||||
* Gets the name of this arena
|
||||
*
|
||||
* @return <p>The name of this arena</p>
|
||||
*/
|
||||
@NotNull String getArenaName();
|
||||
|
||||
/**
|
||||
* Gets this arena's sanitized name
|
||||
*
|
||||
* @return <p>This arena's sanitized name</p>
|
||||
*/
|
||||
@NotNull String getArenaNameSanitized();
|
||||
|
||||
}
|
@@ -1,4 +1,8 @@
|
||||
package net.knarcraft.minigames.arena;
|
||||
|
||||
/**
|
||||
* An interface describing any arena game-mode
|
||||
*/
|
||||
public interface ArenaGameMode {
|
||||
|
||||
}
|
||||
|
@@ -1,7 +1,6 @@
|
||||
package net.knarcraft.minigames.arena.dropper;
|
||||
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.arena.Arena;
|
||||
import net.knarcraft.minigames.arena.ArenaGameMode;
|
||||
import net.knarcraft.minigames.arena.ArenaRecordsRegistry;
|
||||
import net.knarcraft.minigames.config.DropperConfiguration;
|
||||
@@ -20,7 +19,7 @@ import static net.knarcraft.minigames.util.InputValidationHelper.isInvalid;
|
||||
/**
|
||||
* A representation of one dropper arena
|
||||
*/
|
||||
public class DropperArena implements Arena {
|
||||
public class DropperArena {
|
||||
|
||||
/**
|
||||
* An unique and persistent identifier for this arena
|
||||
@@ -134,12 +133,20 @@ public class DropperArena implements Arena {
|
||||
return this.dropperArenaData;
|
||||
}
|
||||
|
||||
@Override
|
||||
/**
|
||||
* Gets the id of this arena
|
||||
*
|
||||
* @return <p>This arena's identifier</p>
|
||||
*/
|
||||
public @NotNull UUID getArenaId() {
|
||||
return this.arenaId;
|
||||
}
|
||||
|
||||
@Override
|
||||
/**
|
||||
* Gets the name of this arena
|
||||
*
|
||||
* @return <p>The name of this arena</p>
|
||||
*/
|
||||
public @NotNull String getArenaName() {
|
||||
return this.arenaName;
|
||||
}
|
||||
@@ -196,7 +203,11 @@ public class DropperArena implements Arena {
|
||||
return this.winBlockType;
|
||||
}
|
||||
|
||||
@Override
|
||||
/**
|
||||
* Gets this arena's sanitized name
|
||||
*
|
||||
* @return <p>This arena's sanitized name</p>
|
||||
*/
|
||||
public @NotNull String getArenaNameSanitized() {
|
||||
return StringSanitizer.sanitizeArenaName(this.getArenaName());
|
||||
}
|
||||
|
@@ -114,7 +114,7 @@ public class DropperArenaGroup extends ArenaGroup {
|
||||
String name = (String) data.get("groupName");
|
||||
List<SerializableUUID> serializableArenas = (List<SerializableUUID>) data.get("arenas");
|
||||
List<UUID> arenas = new ArrayList<>();
|
||||
|
||||
|
||||
SerializableConverter.getRawValue(new ArrayList<>(serializableArenas), arenas);
|
||||
return new DropperArenaGroup(id, name, arenas);
|
||||
}
|
||||
|
@@ -1,7 +1,7 @@
|
||||
package net.knarcraft.minigames.arena.dropper;
|
||||
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.util.ArenaStorageHelper;
|
||||
import net.knarcraft.minigames.util.DropperArenaStorageHelper;
|
||||
import net.knarcraft.minigames.util.StringSanitizer;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -163,7 +163,7 @@ public class DropperArenaHandler {
|
||||
this.arenas.remove(arenaId);
|
||||
this.arenaNameLookup.remove(arena.getArenaNameSanitized());
|
||||
this.arenaGroups.remove(arenaId);
|
||||
if (!ArenaStorageHelper.removeDropperArenaData(arenaId)) {
|
||||
if (!DropperArenaStorageHelper.removeDropperArenaData(arenaId)) {
|
||||
MiniGames.log(Level.WARNING, "Unable to remove dropper arena data file " + arenaId + ".yml. " +
|
||||
"You must remove it manually!");
|
||||
}
|
||||
@@ -177,7 +177,7 @@ public class DropperArenaHandler {
|
||||
*/
|
||||
public void saveData(UUID arenaId) {
|
||||
try {
|
||||
ArenaStorageHelper.saveDropperArenaData(this.arenas.get(arenaId).getData());
|
||||
DropperArenaStorageHelper.saveDropperArenaData(this.arenas.get(arenaId).getData());
|
||||
} catch (IOException e) {
|
||||
MiniGames.log(Level.SEVERE, "Unable to save arena data! Data loss can occur!");
|
||||
MiniGames.log(Level.SEVERE, e.getMessage());
|
||||
@@ -189,7 +189,7 @@ public class DropperArenaHandler {
|
||||
*/
|
||||
public void saveGroups() {
|
||||
try {
|
||||
ArenaStorageHelper.saveDropperArenaGroups(new HashSet<>(this.arenaGroups.values()));
|
||||
DropperArenaStorageHelper.saveDropperArenaGroups(new HashSet<>(this.arenaGroups.values()));
|
||||
} catch (IOException e) {
|
||||
MiniGames.log(Level.SEVERE, "Unable to save current arena groups! " +
|
||||
"Data loss can occur!");
|
||||
@@ -209,7 +209,7 @@ public class DropperArenaHandler {
|
||||
* Loads all dropper groups from disk
|
||||
*/
|
||||
private void loadGroups() {
|
||||
Set<DropperArenaGroup> arenaGroups = ArenaStorageHelper.loadDropperArenaGroups();
|
||||
Set<DropperArenaGroup> arenaGroups = DropperArenaStorageHelper.loadDropperArenaGroups();
|
||||
Map<UUID, DropperArenaGroup> arenaGroupMap = new HashMap<>();
|
||||
for (DropperArenaGroup arenaGroup : arenaGroups) {
|
||||
for (UUID arenaId : arenaGroup.getArenas()) {
|
||||
@@ -224,7 +224,7 @@ public class DropperArenaHandler {
|
||||
*/
|
||||
public void saveArenas() {
|
||||
try {
|
||||
ArenaStorageHelper.saveDropperArenas(this.arenas);
|
||||
DropperArenaStorageHelper.saveDropperArenas(this.arenas);
|
||||
} catch (IOException e) {
|
||||
MiniGames.log(Level.SEVERE, "Unable to save current arenas! " +
|
||||
"Data loss can occur!");
|
||||
@@ -236,7 +236,7 @@ public class DropperArenaHandler {
|
||||
* Loads all arenas from disk
|
||||
*/
|
||||
private void loadArenas() {
|
||||
this.arenas = ArenaStorageHelper.loadDropperArenas();
|
||||
this.arenas = DropperArenaStorageHelper.loadDropperArenas();
|
||||
|
||||
// Save a map from arena name to arena id for improved performance
|
||||
this.arenaNameLookup = new HashMap<>();
|
||||
|
@@ -3,6 +3,7 @@ package net.knarcraft.minigames.arena.parkour;
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.arena.ArenaGameMode;
|
||||
import net.knarcraft.minigames.arena.ArenaRecordsRegistry;
|
||||
import net.knarcraft.minigames.util.MaterialHelper;
|
||||
import net.knarcraft.minigames.util.StringSanitizer;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
@@ -55,6 +56,11 @@ public class ParkourArena {
|
||||
*/
|
||||
private @Nullable Location winLocation;
|
||||
|
||||
/**
|
||||
* The names of the block types constituting this arena's kill plane
|
||||
*/
|
||||
private @Nullable Set<String> killPlaneBlockNames;
|
||||
|
||||
/**
|
||||
* The block types constituting this arena's kill plane
|
||||
*/
|
||||
@@ -80,19 +86,23 @@ public class ParkourArena {
|
||||
* @param spawnLocation <p>The location players spawn in when entering the arena</p>
|
||||
* @param exitLocation <p>The location the players are teleported to when exiting the arena, or null</p>
|
||||
* @param winBlockType <p>The material of the block players have to hit to win this parkour arena</p>
|
||||
* @param winLocation <p>The location a player has to reach to win this arena</p>
|
||||
* @param parkourArenaData <p>The arena data keeping track of which players have done what in this arena</p>
|
||||
* @param arenaHandler <p>The arena handler used for saving any changes</p>
|
||||
*/
|
||||
public ParkourArena(@NotNull UUID arenaId, @NotNull String arenaName, @NotNull Location spawnLocation,
|
||||
@Nullable Location exitLocation, @NotNull Material winBlockType,
|
||||
@Nullable Set<Material> killPlaneBlocks, @NotNull List<Location> checkpoints,
|
||||
@Nullable Location exitLocation, @NotNull Material winBlockType, @Nullable Location winLocation,
|
||||
@Nullable Set<String> killPlaneBlockNames, @NotNull List<Location> checkpoints,
|
||||
@NotNull ParkourArenaData parkourArenaData, @NotNull ParkourArenaHandler arenaHandler) {
|
||||
this.arenaId = arenaId;
|
||||
this.arenaName = arenaName;
|
||||
this.spawnLocation = spawnLocation;
|
||||
this.exitLocation = exitLocation;
|
||||
this.winBlockType = winBlockType;
|
||||
this.killPlaneBlocks = killPlaneBlocks;
|
||||
this.winLocation = winLocation;
|
||||
this.killPlaneBlockNames = killPlaneBlockNames;
|
||||
this.killPlaneBlocks = this.killPlaneBlockNames == null ? null : MaterialHelper.loadMaterialList(
|
||||
new ArrayList<>(killPlaneBlockNames));
|
||||
this.checkpoints = checkpoints;
|
||||
this.parkourArenaData = parkourArenaData;
|
||||
this.parkourArenaHandler = arenaHandler;
|
||||
@@ -208,6 +218,15 @@ public class ParkourArena {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the names of the block types used for this parkour arena's kill plane
|
||||
*
|
||||
* @return <p>The names of the types of blocks that cause a loss</p>
|
||||
*/
|
||||
public @Nullable Set<String> getKillPlaneBlockNames() {
|
||||
return this.killPlaneBlockNames;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all checkpoint locations for this arena
|
||||
*
|
||||
@@ -309,7 +328,7 @@ public class ParkourArena {
|
||||
if (isInvalid(newLocation)) {
|
||||
return false;
|
||||
} else {
|
||||
this.exitLocation = newLocation.clone();
|
||||
this.winLocation = newLocation.clone();
|
||||
parkourArenaHandler.saveArenas();
|
||||
return true;
|
||||
}
|
||||
@@ -318,19 +337,10 @@ public class ParkourArena {
|
||||
/**
|
||||
* Sets the type of blocks constituting this arena's kill plane
|
||||
*
|
||||
* @param killPlaneBlocks <p>The blocks that will cause players to lose</p>
|
||||
* @return <p>True if successfully changed</p>
|
||||
* @param killPlaneBlockNames <p>The names of the blocks that will cause players to lose</p>
|
||||
*/
|
||||
public boolean setKillPlaneBlocks(@NotNull Set<Material> killPlaneBlocks) {
|
||||
for (Material material : killPlaneBlocks) {
|
||||
// Make sure no nulls have entered the set
|
||||
if (material == null) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
this.killPlaneBlocks = new HashSet<>(killPlaneBlocks);
|
||||
return true;
|
||||
public void setKillPlaneBlocks(@NotNull Set<String> killPlaneBlockNames) {
|
||||
this.killPlaneBlocks = MaterialHelper.loadMaterialList(new ArrayList<>(killPlaneBlockNames));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -1,7 +1,7 @@
|
||||
package net.knarcraft.minigames.arena.parkour;
|
||||
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.util.ArenaStorageHelper;
|
||||
import net.knarcraft.minigames.util.ParkourArenaStorageHelper;
|
||||
import net.knarcraft.minigames.util.StringSanitizer;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -163,7 +163,7 @@ public class ParkourArenaHandler {
|
||||
this.arenas.remove(arenaId);
|
||||
this.arenaNameLookup.remove(arena.getArenaNameSanitized());
|
||||
this.arenaGroups.remove(arenaId);
|
||||
if (!ArenaStorageHelper.removeParkourArenaData(arenaId)) {
|
||||
if (!ParkourArenaStorageHelper.removeParkourArenaData(arenaId)) {
|
||||
MiniGames.log(Level.WARNING, "Unable to remove parkour arena data file " + arenaId + ".yml. " +
|
||||
"You must remove it manually!");
|
||||
}
|
||||
@@ -177,7 +177,7 @@ public class ParkourArenaHandler {
|
||||
*/
|
||||
public void saveData(UUID arenaId) {
|
||||
try {
|
||||
ArenaStorageHelper.saveParkourArenaData(this.arenas.get(arenaId).getData());
|
||||
ParkourArenaStorageHelper.saveParkourArenaData(this.arenas.get(arenaId).getData());
|
||||
} catch (IOException e) {
|
||||
MiniGames.log(Level.SEVERE, "Unable to save arena data! Data loss can occur!");
|
||||
MiniGames.log(Level.SEVERE, e.getMessage());
|
||||
@@ -189,7 +189,7 @@ public class ParkourArenaHandler {
|
||||
*/
|
||||
public void saveGroups() {
|
||||
try {
|
||||
ArenaStorageHelper.saveParkourArenaGroups(new HashSet<>(this.arenaGroups.values()));
|
||||
ParkourArenaStorageHelper.saveParkourArenaGroups(new HashSet<>(this.arenaGroups.values()));
|
||||
} catch (IOException e) {
|
||||
MiniGames.log(Level.SEVERE, "Unable to save current arena groups! " +
|
||||
"Data loss can occur!");
|
||||
@@ -209,7 +209,7 @@ public class ParkourArenaHandler {
|
||||
* Loads all parkour groups from disk
|
||||
*/
|
||||
private void loadGroups() {
|
||||
Set<ParkourArenaGroup> arenaGroups = ArenaStorageHelper.loadParkourArenaGroups();
|
||||
Set<ParkourArenaGroup> arenaGroups = ParkourArenaStorageHelper.loadParkourArenaGroups();
|
||||
Map<UUID, ParkourArenaGroup> arenaGroupMap = new HashMap<>();
|
||||
for (ParkourArenaGroup arenaGroup : arenaGroups) {
|
||||
for (UUID arenaId : arenaGroup.getArenas()) {
|
||||
@@ -224,7 +224,7 @@ public class ParkourArenaHandler {
|
||||
*/
|
||||
public void saveArenas() {
|
||||
try {
|
||||
ArenaStorageHelper.saveParkourArenas(this.arenas);
|
||||
ParkourArenaStorageHelper.saveParkourArenas(this.arenas);
|
||||
} catch (IOException e) {
|
||||
MiniGames.log(Level.SEVERE, "Unable to save current arenas! " +
|
||||
"Data loss can occur!");
|
||||
@@ -236,7 +236,7 @@ public class ParkourArenaHandler {
|
||||
* Loads all arenas from disk
|
||||
*/
|
||||
private void loadArenas() {
|
||||
this.arenas = ArenaStorageHelper.loadParkourArenas();
|
||||
this.arenas = ParkourArenaStorageHelper.loadParkourArenas();
|
||||
|
||||
// Save a map from arena name to arena id for improved performance
|
||||
this.arenaNameLookup = new HashMap<>();
|
||||
|
Reference in New Issue
Block a user