Parkour implementation safety save 2

This is just a safety save in case the code gets too broken to fix.
This commit is contained in:
2023-04-13 20:13:29 +02:00
parent 9a3f9841ab
commit 1acaebb3bc
77 changed files with 1168 additions and 847 deletions

View File

@ -0,0 +1,49 @@
package net.knarcraft.minigames.container;
import org.bukkit.configuration.serialization.ConfigurationSerializable;
/**
* A container that is serializable
*
* @param <K> <p>The type of the contained object</p>
*/
public abstract class SerializableContainer<K> implements ConfigurationSerializable {
private final K value;
/**
* Instantiates a new serializable container
*
* @param value <p>The value to contain</p>
*/
public SerializableContainer(K value) {
this.value = value;
}
/**
* Gets the raw, non-serializable object
*
* @return <p>The raw stored value</p>
*/
public K getRawValue() {
return value;
}
/**
* Gets a serializable container containing the given value
*
* @param value <p>The value to make serializable</p>
* @return <p>The serializable value</p>
*/
public abstract SerializableContainer<K> getSerializable(K value);
@Override
public boolean equals(Object object) {
if (object instanceof SerializableContainer<?>) {
return this.getRawValue().equals(((SerializableContainer<?>) object).getRawValue());
} else {
return false;
}
}
}

View File

@ -0,0 +1,52 @@
package net.knarcraft.minigames.container;
import org.bukkit.Material;
import org.jetbrains.annotations.NotNull;
import java.util.HashMap;
import java.util.Map;
/**
* A material container able to be serialized
*/
public class SerializableMaterial extends SerializableContainer<Material> {
/**
* Instantiates a new serializable material
*
* @param material <p>The material to contain</p>
*/
public SerializableMaterial(Material material) {
super(material);
}
@Override
public SerializableContainer<Material> getSerializable(Material value) {
return new SerializableMaterial(value);
}
@NotNull
@Override
public Map<String, Object> serialize() {
Map<String, Object> data = new HashMap<>();
data.put("name", getRawValue().name());
return data;
}
/**
* Deserializes a serialized material
*
* @param data <p>The serialized data</p>
* @return <p>The deserialized material</p>
*/
@SuppressWarnings("unused")
public static SerializableMaterial deserialize(Map<String, Object> data) {
Material material = Material.matchMaterial((String) data.get("name"));
if (material == null) {
return null;
} else {
return new SerializableMaterial(material);
}
}
}

View File

@ -0,0 +1,52 @@
package net.knarcraft.minigames.container;
import org.jetbrains.annotations.NotNull;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
/**
* A UUID container able to be serialized
*/
public class SerializableUUID extends SerializableContainer<UUID> {
/**
* Instantiates a new serializable uuid
*
* @param value <p>The uuid to contain</p>
*/
public SerializableUUID(UUID value) {
super(value);
}
@Override
public SerializableContainer<UUID> getSerializable(UUID value) {
return new SerializableUUID(value);
}
@NotNull
@Override
public Map<String, Object> serialize() {
Map<String, Object> data = new HashMap<>();
data.put("id", getRawValue().toString());
return data;
}
/**
* Deserializes a serialized UUID
*
* @param data <p>The serialized data</p>
* @return <p>The deserialized UUID</p>
*/
@SuppressWarnings("unused")
public static SerializableUUID deserialize(Map<String, Object> data) {
String id = (String) data.getOrDefault("id", null);
if (id != null) {
return new SerializableUUID(UUID.fromString(id));
} else {
return null;
}
}
}